西门子PLC诊断(PROFINET或PROFIBUS)

2019年1月10日14:49:14 发表评论 211 阅读

分布式 I/O 的诊断事件

说明

对于 PROFIBUS IO 系统,除非硬件兼容性设置为允许可接受替换模块,并且有一个或多个模块丢失或者不是已组态模块的可接受替换模块,否则 CPU在下载或循环上电后将转到 RUN 模式。

如下表所示,CPU 支持对分布式 I/O 系统中的组件组态的诊断。 只要发生下面提到的错误,诊断缓冲区就会生成一个日志条目。

表格 9- 114 PROFINET 和 PROFIBUS 诊断事件的处理

错误类型 成为站的诊断信息? 在诊断缓冲区中生成条 目? CPU 的操作模式
诊断错误 保持 RUN 模式
机架或站故障 保持 RUN 模式
I/O 访问错误 1 保持 RUN 模式
外围设备访问错误 2 保持 RUN 模式
插/拔事件 保持 RUN 模式

1 I/O 访问错误示例原因: 已移除的一个模块。

2 外围设备访问错误示例原因: 非周期性地与没有通信的子模块进行通信。

可对每个站使用 GET_DIAG 指令来获取相应的诊断信息。 用户借此可通过编程来处理设备错误,并根据需要将CPU切换为STOP模式。 采用此方法时,您需要指定从哪个硬件设备读取状态信息。

GET_DIAG 指令使用站的“L 地址”(LADDR) 来获取整个站点的健康状况。 此 L 地址可在“网络组态”(Network Configuration) 视图中找到,或者也可选择整个站机架(整个灰色区域)并在站的“属性”(Properties) 选项卡中获取。 对于各模块的 LADDR,既可在该模块的属性中查看(在设备组态中),也可在 CPU 的默认变量表中查看。

LED(获取 LED 状态)指令

表格 9- 115 LED指令

表格 9- 117 RET_VAL 的状态

RET_VAL (W#16#...) 说明
0 到 9 LED 状态 0 LED 不存在
1
2 颜色 1 常亮
3 颜色 2 常亮
4 颜色 1 以 2 Hz 的频率闪烁
5 颜色 2 以 2 Hz 的频率闪烁
6 颜色 1 和 2 以 2 Hz 的频率交替闪烁
7 颜色 1 点亮 (Tx/Rx)
8 颜色 2 点亮 (Tx/Rx)
9 LED 状态不可用
8091 由 LADDR 标识的设备不存在
8092 由 LADDR 标识的设备不支持 LED
8093 LED 标识符未定义
80Bx 由 LADDR 标识的 CPU 不支持 LED 指令

DeviceStates 指令

可以使用 DeviceStates 指令返回连接到指定的分布式 I/O 主站的所有分布式 I/O从站设备的状态。

表格 9- 118 DeviceStates 指令

表格 9- 119 参数的数据类型

1 对于 PROFIBUS-DP,状态信息的长度为 128 位。 对于 PROFINET I/O,长度为 1024 位。指令执行后,STATE 参数将以位列表形式包含各个 I/O 设备的错误状态(针对分配的LADDR 和 MODE)。

表格 9- 120 条件代码

RET_VAL  (W#16#...) 说明
0 无错误
8091 LADDR 不存在。
8092 LADDR 未寻址 I/O 系统。
8093 为 STATE 参数分配的数据类型无效: 有效数据类型为(Bool、Byte、Word 或

Dword)或者(Bool、Byte、Word 或 Dword)的数组

80Bx CPU 不支持在此 LADDR 中使用 DeviceStates 指令。
8452 完整的状态数据对于分配的 STATE 参数来说过大。 STATE

缓冲区包含部分结果。

DeviceStates 组态示例

PROFIBUS 示例

PROFIBUS 示例的构成如下:

  • 16个 PROFIBUS 设备,名称为“DPSlave_10”至“DPSlave_25”
  • 这16个 PROFIBUS 设备分别使用 PROFIBUS 地址 10 至 25。
  • 每个从站设备都使用多个I/O模块组态。
  • 显示返回的STATE参数信息的前四个字节。
MODE 示例 1 示例 2 示例 3
正常运行没有错误 PROFIBUS PROFIBUS
从站设备 从站设备
DPSlave_12 DPSlave_12
有一个模块拔出 断开连接
1:

设备组态处于激活状态

0x01FC_FF03 0x01FC_FF03 0x01FC_FF03
2: 设备故障 0x0000_0000 0x0110_0000 0x0110_0000
3: 设备已禁用 0x0000_0000 0x0000_0000 0x0000_0000
4: 设备存在 0x01FC_FF03 0x01FC_FF03 0x01EC_FF03
5: 设备中存在问题 0x0000_0000 0x0110_0000 0x0110_0000

以下四个表格显示了当前分析的四个字节数据的二进制明细:

表格 9- 121 示例 1: 无错误: 对于 MODE 1(设备组态处于激活状态),返回 0x01FC_FF03。

字节和对应的值 位序列和对应的值 注意
字节 1 0x01 位 7 0000-0001 位 0 0 位为真;数据可用。
字节 2 0xFC 位 15 1111-1100 位 8  
字节 3 0xFF 位 23 1111-1111 位 16  
字节 4 0x03 位 31 0000-0011 位 24

使用地址 10(位 10)至 25(位 25)组态设备。 不使用地址 1 至 9 组态设备。MODE 4(设备存在)数据与 MODE 1(设备组态处于激活状态)匹配,因此组态的设备与现有设备相匹配。

表格 9- 122 示例 2: 已从 PROFIBUS 从站设备“DPSlave_12”拔出一个模块。 对于 MODE 2(设备故障),返回 0x0110_0000。

字节和对应的值 位序列和对应的值 注意
字节 1 0x01 位 7 0000-0001 位 0 0 位为真;数据可用。
字节 2 0x10 位 15 0001-0000 位 8  
字节 3 0x00 位 23 0000-0000 位 16  
字节 4 0x00 位 31 0000-0000 位 24

设备 12(位 12)已标记为故障。MODE 5(设备中存在问题)返回的信息与 MODE 2(设备故障)一样。

表格 9- 123 示例 2(续): 已从 PROFIBUS 从站设备“DPSlave_12”拔出一个模块。 对于MODE 4(设备存在),返回 0x01FC_FF03。

字节和对应的值 位序列和对应的值 注意
字节 1 0x01 位 7 0000-0001 位 0 0 位为真;数据可用。
字节 2 0xFC 位 15 1111-1100 位 8  
字节 3 0xFF 位 23 1111-1111 位 16  
字节 4 0x03 位 31 0000-0011 位 24

即使设备 12(位 12)存在如以上 MODE 2 中所示的错误,但该设备在网络中仍可以正常运行,导致 MODE 4(设备存在)将该设备显示为“现有设备”。

表格 9- 124 示例 3: PROFIBUS 从站设备“DPSlave_12”与 PROFIBUS 网络断开连接(电缆断开或断电)。 “DPSlave_12”仍检测为故障设备以及设备出错。 不同点是,“DPSlave_12”不再检测为存在的设备。 对于 MODE 4(设备存在),返回 0x01EC_FF03。

字节和对应的值 位序列和对应的值 注意
字节 1 0x01 位 7 0000-0001 位 0 0 位为真;数据可用。
字节 2 0xEC 位 15 1110-1100 位 8  
字节 3 0xFF 位 23 1111-1111 位 16  
字节 4 0x03 位 31 0000-0011 位 24

设备 12(位 12)已标记为不存在。 除此之外,设备10至25仍报告为存在。

PROFINET 示例

PROFINET 示例的构成如下:

  • 16个PROFINET 从站设备,名称为“et200s_1”至“et200s_16”
  • 这16个 PROFINET 设备分别使用 PROFINET 设备号 1 至 16。
  • 每个从站设备都使用多个I/O模块组态。
  • 显示返回的STATE参数信息的前四个字节。
MODE 示例 1 示例 2 示例 3
正常运行没有错误 PROFINET 从站 PROFINET 从站
et200s_1 et200s_1
模块已拔出 已断开连接
1:

设备组态处于激活状态

0xFFFF_0100 0xFFFF_0100 0xFFFF_0100
2 - 设备故障 0x0000_0000 0x0300_0000 0x0300_0000
3 - 设备已禁用 0x0000_0000 0x0000_0000 0x0000_0000
4 - 设备存在 0xFFFF_0100 0xFFFF_0100 0xFDFF_0100
5 - 设备中存在问题 0x0000_0000 0x0300_0000 0x0300_0000

以下四个表格显示了当前分析的四个字节数据的二进制明细:

表格 9- 125 示例 1: 无错误: 对于 MODE 1(设备组态处于激活状态),返回 0xFFFF_0100。

字节和对应的值 位序列和对应的值 注意
字节 1 0xFF 位 7 1111-1111 位 0 0 位为真;数据可用。
字节 2 0xFF 位 15 1111-1111 位 8  
字节 3 0x01 位 23 0000-0001 位 16  
字节 4 0x00 位 31 0000-0000 位 24

使用地址 1(位 1)至 16(位 16)组态设备。 不使用地址 1 至 9 组态设备。MODE 4(设备存在)数据与 MODE 1(设备组态处于激活状态)匹配,因此组态的设备与现有设备相匹配。

表格 9- 126 示例 2: 已从 PROFINET 从站设备“et200s_1”拔出一个模块。 对于 MODE 2(设备故障),返回 0x0300_0000。

字节和对应的值 位序列和对应的值 注意
字节 1 0x03 位 7 0000-0011 位 0 0 位为真;数据可用。
字节 2 0x00 位 15 0000-0000 位 8  
字节 3 0x00 位 23 0000-0000 位 16  
字节 4 0x00 位 31 0000-0000 位 24

设备 1(位 1)已标记为故障。 因为设备仍然存在,MODE 4(设备存在)显示的数据与正常工作状态的一样。MODE 5(设备中存在问题)返回的信息与 MODE 2(设备故障)一样。

表格 9- 127 示例 2(续): 已从 PROFIBUS 从站设备“et200s_1”拔出一个模块。 对于MODE 4(设备存在),返回 0xFFFF_0100。

字节和对应的值 位序列和对应的值 注意
字节 1 0xFF 位 7 1111-1111 位 0 0 位为真;数据可用。
字节 2 0xFF 位 15 1111-1111 位 8  
字节 3 0x01 位 23 0000-0001 位 16  
字节 4 0x00 位 31 0000-0000 位 24

即使设备 1(位 1)存在如以上 MODE 2 中所示的错误,但该设备在网络中仍可以正常运行,导致 MODE 4(设备存在)将该设备显示为“现有设备”。

表格 9- 128 示例 3: PROFINET 从站设备“et200s_1”与 PROFINET 网络断开连接(电缆断开或断电)。 对于 MODE 4(设备存在),返回 0xFDFF_0100。

字节和对应的值 位序列和对应的值 注意
字节 1 0xFD 位 7 1111-1101 位 0 0 位为真;数据可用。
字节 2 0xFF 位 15 1111-1111 位 8  
字节 3 0x01 位 23 0000-0001 位 16  
字节 4 0x00 位 31 0000-0000 位 24

设备 1(位 1)不存在。 设备 2(位 2)至 16(位 16)存在。

ModuleStates 指令

可以使用 ModuleStates 指令返回 PROFIBUS 或 PROFINET 站中所有模块的状态。

表格 9- 129 ModuleStates 指令

参数和类型 数据类型 说明
RET_VAL OUT Int 状态(条件代码)
STATE1 InOut Variant 接收每个模块的错误状态的缓冲区:用于 STATE 参数的数据类型可以是任何位类型(Bool、Byte、Word 或 DWord),也可以是位类型的数组。

· 返回的 STATE 数据的第一个字节的 0 位是摘要位。该位设置为 TRUE 时,表示其它数据可用。

· STATE 参数返回的数据展现了位位置与模块位置之间一对一的 关系。此插槽寻址对于 PROFIBUS 和 PROFINET 为 TRUE。例如,对于具有前端模块、电源模块和一对 I/O 模块的 ET 200SP,第一个字节的位 1 对应于前端模块,位 2 对应于电源模块,位 3 和 4 分别对应于两个 I/O 模块。

1 最多可分配 128 位。所需位数取决于 I/O 模块的使用情况。

表格 9- 131 条件代码

 

RET_VAL ( W#16#...) 说明
0 无错误
8091 由 LADDR 标识的模块不存在。
8092 由 LADDR 标识的模块未寻址 I/O 设备。
8093 STATE 参数的数据类型无效:有效数据类型为(Bool、Byte、Word 或

Dword)或者(Bool、Byte、Word 或 Dword)的数组。

80Bx 该 CPU 不支持在此 LADDR 中使用 ModuleStates 指令。
8452 完整的状态数据对于分配的 STATE 参数来说过大。STATE 缓冲区包含部分结果。

DeviceStates 组态示例

 PROFIBUS 示例

PROFIBUS 示例的构成如下:

  • 16个 PROFIBUS 设备,名称为“DPSlave_10”至“DPSlave_25”
  • 这16个 PROFIBUS 设备分别使用 PROFIBUS 地址 10 至 25。
  • 每个从站设备都使用多个I/O模块组态。
  • 该示例使用PROFIBUS 从站“DPSlave_12”的 LADDR参数,该从站含有一个前端模块、一个电源模块和两个 I/O 模块。
  • 显示返回的STATE参数信息的前四个字节。
MODE 示例 1 示例 2 示例 3
正常运行没有错误 PROFIBUS PROFIBUS
从站设备 从站设备
DPSlave_12 DPSlave_12
模块已拔出 断开连接
1:

模块组态处于激活状态

0x1F00_0000 0x1F00_0000 0x1F00_0000
2: 模块有故障 0x0000_0000 0x0900_0000 0x1F00_0000
3: 模块已禁用 0x0000_0000 0x0000_0000 0x0000_0000
4: 模块存在 0x1F00_0000 0x1700_0000 0x0000_0000
5: 模块中存在问题 0x0000_0000 0x0900_0000 0x1F00_0000

四个字节数据的二进制明细:

表格 9- 132 示例 1: 无错误: 对于 MODE 1(模块组态处于激活状态),返回 0x1F00_0000。

字节和对应的值 位序列和对应的值 注意
字节 1 0x1F 位 7 0001-1111 位 0 0 位为真;数据可用。
字节 2 0x00 位 15 0000-0000 位 8  
字节 3 0x00 位 23 0000-0000 位 16  
字节 4 0x00 位 31 0000-0000 位 24

插槽 1(位 1)至 4(位 4)含有模块。 插槽 5(位 5)及以上的插槽都不含模块。 MODE 4(模块存在)数据与 MODE 1(模块组态处于激活状态)匹配,因此组态的模块与现有模块相匹配。

表格 9- 133 示例 2: 已从 PROFIBUS 从站设备“DPSlave_12”拔出一个模块。 对于 MODE 2(模块故障),返回 0x0900_0000。

字节和对应的值 位序列和对应的值 注意
字节 1 0x09 位 7 0000-1001 位 0 0 位为真;数据可用。
字节 2 0x00 位 15 0000-0000 位 8  
字节 3 0x00 位 23 0000-0000 位 16  
字节 4 0x00 位 31 0000-0000 位 24

只有模块 3(位 3)已标记为故障。 所有其它模块都可正常工作。

表格 9- 134 示例 2(续): 已从 PROFIBUS 从站设备“DPSlave_12”拔出一个模块。 对于MODE 4(模块存在),返回 0x1700_0000。

字节和对应的值 位序列和对应的值 注意
字节 1 0x17 位 7 0001-0111 位 0 0 位为真;数据可用。
字节 2 0x00 位 15 0000-0000 位 8  
字节 3 0x00 位 23 0000-0000 位 16  
字节 4 0x00 位 31 0000-0000 位 24

模块 3(位 3)显示为不存在。 模块 1、2 和 4(位 1、2 和 4)显示为存在。

表格 9- 135 示例 3: PROFIBUS 从站设备“DPSlave_12”与 PROFIBUS 网络断开连接(电缆断开或断电)。 对于 MODE 2(模块故障),返回 0x1F00_0000。

字节和对应的值 位序列和对应的值 注意
字节 1 0x1F 位 7 0001-1111 位 0 0 位为真;数据可用。
字节 2 0x00 位 15 0000-0000 位 8  
字节 3 0x00 位 23 0000-0000 位 16  
字节 4 0x00 位 31 0000-0000 位 24

因为设备不存在,插槽 1 至 4(位 1 至 4)中的模块全部标记为故障。 MODE 5(模块中存在问题)显示的信息与 MODE 2(模块故障)一样。

PROFINET 示例

PROFINET 示例的构成如下:

  • 16个PROFINET 从站设备,名称为“et200s_1”至“et200s_16”
  • 这16个 PROFINET 设备分别使用 PROFINET 设备号 1 至 16。
  • 每个从站设备都使用多个I/O模块组态。
  • 该示例使用PROFINET从站“et200s_1”,该从站含有一个前端模块、一个电源模块和

18 个 I/O 模块。显示返回的STATE参数信息的前四个字节。

MODE 示例 1 示例 2 示例 3
正常运行没有错误 PROFINET PROFINET
et200s_1 et200s_1
从站模块已拔出 从站已断开连接
1:

模块组态处于激活状态

0xFFFF_1F00 0xFFFF_1F00 0xFFFF_1F00
2: 模块有故障 0x0000_0000 0x0180_0000 0xFFFF_1F00
3: 模块已禁用 0x0000_0000 0x0000_0000 0x0000_0000
4: 模块存在 0xFFFF_1F00 0xFF7F_1F00 0x0000_0000
5: 模块中存在问题 0x0000_0000 0x0180_0000 0xFFFF_1F00

以下四个表格显示了当前分析的四个字节数据的二进制明细:

表格 9- 136 示例 1: 无错误: 对于 MODE 1(模块组态处于激活状态),返回 0xFFFF_1F00。

字节和对应的值 位序列和对应的值 注意
字节 1 0xFF 位 7 1111-1111 位 0 0 位为真;数据可用。
字节 2 0xFF 位 15 1111-1111 位 8  
字节 3 0x1F 位 23 0001-1111 位 16  
字节 4 0x00 位 31 0000-0000 位 24

插槽 1(位 1)至 20(位 20)含有模块。 插槽 21(位 21)及以上的插槽都不含模块。 MODE 4(模块存在)数据与 MODE 1(模块组态处于激活状态)匹配,因此组态的模块与现有模块相匹配。

表格 9- 137 示例 2: 已从 PROFINET 从站设备“et200s_1”拔出一个模块。 对于 MODE 2(模块故障),返回 0x0180_0000。

字节和对应的值 位序列和对应的值 注意
字节 1 0x01 位 7 0000-0001 位 0 0 位为真;数据可用。
字节 2 0x80 位 15 1000-0000 位 8  
字节 3 0x00 位 23 0000-0000 位 16  
字节 4 0x00 位 31 0000-0000 位 24

只有模块 15(位 15)已标记为故障。 所有其它模块都可正常工作。

表格 9- 138 示例 2(续): 已从 PROFIBUS 从站设备“et200s_1”拔出一个模块。 对于MODE 4(模块存在),返回 0xFF7F_1F00。

字节和对应的值 位序列和对应的值 注意
字节 1 0xFF 位 7 1111-1111 位 0 0 位为真;数据可用。
字节 2 0x7F 位 15 0111-1111 位 8  
字节 3 0x1F 位 23 0001-1111 位 16  
字节 4 0x00 位 31 0000-0000 位 24

模块 15(位 15)显示为不存在。 模块 1 至 14(位 1 至 14)和 16 至 20(位 16 至20)显示为存在。

表格 9- 139 示例 3: PROFINET 从站设备“et200s_1”与 PROFINET 网络断开连接(电缆断开或断电)。 对于 MODE 2(模块故障),返回 0xFFFF_1F00。

字节和对应的值 位序列和对应的值 注意
字节 1 0xFF 位 7 1111-1111 位 0 0 位为真;数据可用。
字节 2 0xFF 位 15 1111-1111 位 8  
字节 3 0x1F 位 23 0001-1111 位 16  
字节 4 0x00 位 31 0000-0000 位 24

因为设备不存在,插槽 1 至 20(位 1 至 20)中的模块全部标记为故障。 MODE 5(模块中存在问题)显示的信息与 MODE 2(模块故障)一样。

GET_DIAG(读取诊断信息)指令

说明

可以使用“GET_DIAG”指令读出硬件设备的诊断信息。 硬件设备通过 LADDR参数进行选择。 使用 MODE 参数选择要读出的诊断信息。

表格 9- 140 GET_DIAG 指令

参数

 下表列出了“GET_DIAG”指令的参数:

表格 9- 141 参数的数据类型

参数和类型 数据类型 说明
MODE IN UInt 使用 MODE 参数选择要输出的诊断数据。
LADDR IN HW_ANY

(Word)

设备的硬件 ID
RET_VAL OUT Int 指令的状态
CNT_DIAG OUT UInt 输出诊断详细信息的数量
DIAG InOut Variant 指向用于存储所选模式的诊断信息的数据区。
DETAILS InOut Variant 指向用于存储与所选模式一致的诊断详细信息的数据区。

MODE 参数

根据 MODE 参数的值,在 DIAG、CNT_DIAG 和 DETAILS输出参数中输出不同的诊断数据。

表格 9- 142 MODE 参数

DIS 结构

 在 MODE 参数 =1 的情况下,诊断信息的输出与 DIS 结构一致。 下表列出了各个参数值的含义:

表格 9- 143 诊断信息源 (DIS) 的结构

 

weinxin
plc入门知识问答
每一个PLC工程师都应该关注的微信公众账号,只需输入您的问题,就会有答案

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: