GEN_DIAG:生成诊断信息 (S7-1500) 说明 “GEN_DIAG”指令用于为 TIA Portal诊断中所使用的其它制造商的硬件组件生成诊断信息。在 使用该指令前,必须先安装制造商提供的 GSD(GSDL/GSDML) 文件。该指令将生成所有诊断事件(包括用于维护的诊断事件)。 • 使用 LADDR 参数选择要生成诊断事件的硬件组件。 • 使用 MODE参数指定事件为离去事件或为到达事件。 • 使用 DiagEvent 参数定义 DiagnosticDetail 结构的诊断事件。在DiagEvent 参数中定义变 量时,将在该块的本地接口中自动创建结构。还将提供诊断信息。并进行诊断信息的传送和报警输出。故障安全特定的错误消息无效 如果在 DiagEvent参数处定义故障安全特定的诊断信息,则该指令将检查此信息并输出错 误代码 80A1。 参数 下表列出了“GEN_DIAG”指令的参数:参数 声明 数据类型 存储区 说明 LADDR Input HW_ANY I、Q、M、D、L 或 常量 硬件组件的标识号 MODEInput UINT I、Q、M、D、L 或 常量 选择到达/离去信息: • 1:指定的诊断事件为到达件事件 •2:指定的诊断事件为离去事件 • 3:所有诊断事件都是离去事件。不会发生硬件组件故障(绿色诊断符 号)。MODE = 3时,不评估 DiagEvent 参数。 DiagEvent InOut DiagnosticDet ail L、D指定诊断事件(请参见“DiagEvent 参 数”)。 RET_VAL Return INT I、Q、M、D、L指令状态/错误消息(请参见“RET_VAL 参 数”)有关有效数据类型的更多信息,请参见“有效数据类型概述。GET_DIAG:读取诊断信息 (S7-1200, S7-1500) 说明指令“GET_DIAG”用于读取硬件组件的诊断信息。硬件组件将通过 LADDR 参数进行选择。通 过 MODE参数,选择要读取的诊断信息。MODE=0 时,S7-1200 CPU 将忽略参数 LADDR。 参数下表列出了“GET_DIAG”指令的参数: 参数 声明 数据类型 存储区 说明 MODE Input UINT I、Q、M、D、L或常 量 通过 MODE 参数,选择要输出的诊断 数据。 LADDR Input HW_ANY (UINT) I、Q、M、L 或常量硬件组件的的硬件 ID RET_VAL Return INT I、Q、M、D、L 指令的状态 CNT_DIAG Output UINTI、Q、M、D、L 预留(始终为“0”)。 DIAG InOut VARIANT I、Q、M、D、L 诊断信息与所选模式一致,请参见下表 DETAIL InOut VARIANT I、Q、M、D、L 参数被隐藏。不要使用此参数!有关有效数据类型的更多信息,请参见“有效数据类型概述。
DIS 结构 参数 MODE =1 时,以 DIS 结构输出诊断信息。此时,在变量声明中输入系统数据类型“DIS” 作为数据类型。 说明 确定OperatingState 确定标准 CPU 的操作状态时,需要选择 LADDR = 52(CPUExecUnit 的硬件标识符)。确定标准 CPU 的操作状态时,需要选择 LADDR = 65147(Local1~HCPUredCtrl 的硬件标识 符)或LADDR = 65347(Local2~HCPUredCtrl 的硬件标识)。 确定 R/H 系统的系统状态时,需要选择 LADDR= 34(Local1~RHSystem 的硬件标识符)。在以下示例中,读取 CPU 的诊断信息。在全局数据块中创建四个变量和一个“myDIAG”结构(数据类型为 DIS),用于存储数据。通过参数LADDR(“myLADDR”)使“GET_DIAG”指令了解 CPU 的硬件标识符。根据参数 MODE(“diagMODE”)的值“1”,以下几点适用: • 指令将读取(CPU 的)所寻址硬件对象的状态。 • 在参数DIAG(“myDIAG”)中,诊断信息将在结构(DIS 数据类型)中输出。要了解诊断信息,必须将十六进制值转换为二进制代码。通过参数DIAG(“myDIAG”),指 示以下信息: • MaintenanceState:根据值“0”,CPU 无需维护。 •ComponentStateDetail:根据十六进制值“0000_8000”,位 15 已激活。 •OwnState:根据值“0”,无故障发生。 • IOState:根据十六进制值“0001”,无需维护。 •OperatingState:输出“0”。 输出参数 RET_VAL(“returnValue”)用于指示处理无错误。通过输出参数CNT_DIAG (“CountDiagDetails”),指示参数 DETAIL 的“0”诊断详情已输出。注:例如,可以从ComponentStateDetail 变量单独读取位 3(通道诊断“是/否”)。 •寻址该位,如下所示:ComponentStateDetail.%X3 程序代码 有关上述示例的更多信息和程序代码,请参见“指令的示例库(页 713)”。 示例 - IO 设备的诊断 在以下示例中,将读取 IO 设备的诊断信息。诊断时,可使用 IO设备的设备视图和指令 GET_DIAG。 设备视图中的诊断 一个 IO 设备模块出错。系统将更改并显示该设备状态,如下所示。在设备视图中,该模块与 IO 设备的头模块将显示一组状态。即,显示这两个模块的错误。脉冲 (S7-1200) CTRL_PWM:脉宽调制 (S7-1200) 说明 在软件中通过指令“CTRL_PWM”指令,可启用和禁用 CPU 脉冲输出。 • 在输入 PWM中,输入要通过该指令控制的脉冲发生器的硬件 ID。 • 置位该指令 ENABLE 输入中的此位时,启用脉冲输出。 – 如果ENABLE 的值为 TRUE,则脉冲发生器将生成一个设备组态中所定义属性的脉冲。 – 复位 ENABLE 输入中的这一位或 CPU切换为 STOP 模式时,将禁止脉冲输出且不再生 成脉冲。 由于在执行指令“CTRL_PWM”时 S7-1200将激活脉冲发生器,S7-1200 中 BUSY 的值始 终为 FALSE。 仅当使能输入 EN的信号状态为“1”且指令的执行过程中无任何错误时,才置位使能输出 ENO。 说明 对 PWM 和 PTO 使用强制表 PWM 和PTO 使用的数字量输入和输出无法强制。无论是强制表还是监控表,都不会影响由 设备组态分配的数字量输入和输出。 说明 PTO/PWM输出的过程映像 在过程映像中,请勿使用 PTO/PWM 输出(如,用于用户程序中的访问、在线功能或在 HMI中)。过程映像的更新速率比信号变化的速率要低得多。过程映像中的显示无法真实 反映信号流的实际情况。 要求为确保该指令正确执行,需要在硬件配置中激活所指定的脉冲发生器。在设备视图 (device view) 中,打开模块的属性(properties)。转至“脉冲发生器 (PTO/ PWM)”(Pulse generators (PTO/PWM)),打开指定的PTO/PWM 并激活“常规”(General) 下的 功能“激活该脉冲发生器”(Activate this pulsegenerator)。 转至“分配参数”(Assigning parameters) 并设置脉冲选项 (Pulse options)。说明 在设备组态中,将单独分配脉冲输出参数,而不使用“CTRL_PWM”指令。任何会对 CPU 产生影响的参数更改都必须在CPU 处于 STOP 模式下时进行。但更改脉冲持续时间除外。 通过用户程序更改脉冲的持续时间通过用户程序可更改对话框“脉冲选项”(Pulse options) 中所设置的脉冲持续时间。 并将“初始脉冲持续时间”(Initialpulse duration) 的设定值写入脉冲发生器的输出字节中。其 起始地址和结束地址将显示在“I/O地址”(I/O-addresses) 下的脉冲发生器属性中。 要更改脉冲的持续时间,需要将相应值写入设备组态中所指定的输出字地址中。示例: • 将“初始脉冲持续时间”(Initial pulse duration) 设置为值 500(十进制)。PTO/PWM 的起始地址为“1000”,结束地址为“1001”。 • 在这两个输出字节中,将写入二进制值“0000000111110100”(十进制值500)。 – 起始地址 (AB1000):0000_0001(二进制) – 结束地址 (AB1001):1111_0100(二进制)请注意,脉冲的持续时间通常取决于脉冲持续时间格式(Pulse duration format) 的参数设置(百分之几、千分之几...)。 通过用户程序更改循环时间。 在相应脉冲发生器的“脉冲方式”(Pulse options)中,选择“允许在运行时更改循环时 间”(Permit change to cycle time in runtime)复选框。选择该复选框时,前 2 个字节为脉冲 的持续时间,输出字节 3 到 6 为循环时间。在脉冲发生器的运行过程中,可在所分配的输出存储器的结尾处更改该双字的值。这将导致 PWM 信号的循环时间发生变更。示例:选择该复选框后,CPU 将为 PWM1 分配 6 个输出字节,并选择 AB1008 到 AB1013。 将程序加载到 CPU中并启动脉冲发生器后,则可通过写入 AW1008 更改脉冲持续时间,通 过写入 AD1010 更改循环时间。