- {{item.name}}
PROFINET 通信诊断——指令
- 0
- 55
S7-1200 G2 CPU可使用 DeviceStates 和 ModuleStates 指令对分布式 IO 设备的站状态和子模块进行诊断。当S7-1200 G2 CPU做为智能设备与其它控制器通信,可使用 ModuleStates 指令诊断智能设备的通信状态。
本部分使用 CPU 1212C V1.0 和 ET200SP 的 PN 通信为例进行说明。
硬件:
① S7-1200 G2 CPU V1.0 或更高版本 (文档中使用V1.0版本S7-1212C DC/DC/RLY)
② PC (带以太网卡),TP电缆(以太网电缆)
③ 分布式IO(文档中使用两个 ET200SP 站点,分别为 IM 155-6 PN HF V4.2和 IM 155-6 PN HS V4.0)
软件:
TIA Portal STEP7 V20 或更高版本(文档中使用V21)
1.1使用 TIA Portal 创建项目
1. 使用 TIA Portal 创建一个新项目,正确配置,下载后,进入网络视图,所有站点状态正常。如图 1 所示。

图1. 网络视图
2. 通过设备视图查看 ET200SP 从站的设备编号,如图2所示。
图2. 查看PROFINET 设备编号
1.2 使用 DeviceStates 指令对分布式 IO 子站进行诊断
创建全局数据块,用于存储状态数据。在全局数据块中创建数据类型为 Array of BOOL 数组,共计1024个元素,如图 3 所示。
图 3 创建全局数据块
1. 编程
在 OB1 中调用 DeviceStates 指令,双击 LADDR 引脚,选择需要诊断的 IO 系统,如图 4 所示。
图 4 调用 DeviceStates 指令
本例中选择PN IO系统硬件标识符,并将 MODE 设置为2,STATE 填写上述定义的全局数据块数组。如图 5 所示。

图 5 填写相应的引脚
DeviceStates 指令引脚说明如表1所示。
| 参数 LADDR | 使用 LADDR 参数通过硬件标识符选择 PROFINET IO 或 DP 主站系统。 硬件标识符位于: • PROFINET IO 或 DP 主站系统属性的网络视图中。 • 或数据类型为 HW_IOSYSTEM 的所列系统常量的 PLC 变量表中。 |
| 参数 MODE | 使用 MODE 参数可读取状态信息。 可读取整个 PROFINET IO 或 DP 主站系统的下列一条状态信息: • 1: IO 设备/DP 从站已组态 • 2: IO 设备/DP 从站故障 • 3: IO 设备/DP 从站已禁用 • 4: IO 设备/DP 从站存在 • 5: 出现问题的 IO 设备/DP 从站。 |
| 参数 STATE | 通过 STATE 参数,输出由 MODE 参数选择的 IO 设备/DP 从站的状态。 如果使用 MODE 选择的状态适用于 IO 设备/DP 从站,则在 STATE 参数中将下列位设置为“1”: • 位 0 = 1: 组显示。 至少有一个 IO 设备/DP 从站的第 n 位设置为“1”。 • 位 n = 1:通过 MODE 选择的状态将应用到 IO 设备/DP 从站。 • 对于 PROFINET IO 系统,第 n 位对应于相应 IO 设备的设备编号(请参见设备视图和网络视图中的 PROFINET 接口属性)。 • 对于 PROFINET DP 系统,第 n 位对应于 DP 从站的 PROFIBUS 地址(请参见设备视图和网络视图中的 DP 从站属性)。 使用“BOOL”或“Array of BOOL”作为数据类型: • 要仅输出状态信息的组显示位,可在 STATE 参数中使用 BOOL 数据类型。 • 要输出所有 IO 设备/DP 从站的状态信息,请使用下列长度的 Array of BOOL: • 对于 PROFINET IO 系统:1024 位 • 对于 DP 主站系统:128 位 |
表 1 DeviceStates 指令引脚说明
2.功能测试
(1)将程序下载到 PLC 中。
监控全局数据块 devicestate。如图 6 所示。
图 6 IO 系统正常
(2)当 iodevice2 故障时(掉电或网线拔除导致丢站),states[2]=1。如图 7 所示。
图7 iodevice2故障
(3)当 iodevice1和 iodevice2 故障时(掉电或网线拔除导致丢站),states[1]=1 和 states[2]=1。如图 8 所示。
图 8 iodevice1和 iodevice2 故障
1.3 使用 ModuleStates 指令对分布式 IO 子模块进行诊断
创建全局数据块,用于存储状态数据。在全局数据块中创建数据类型为 Array of BOOL 数组,共计128个元素。 如图 9 所示。
图 9 创建全局数据块
1. 编程
(1)在 OB1 中调用 ModuleStates 指令,双击 LADDR 引脚,选择需要诊断的分布式 IO 站。如图 10 所示。
图 10 调用 ModuleStates 指令
(2)本例中选择PN IO设备硬件标识符,并将 MODE 设置为2,STATE 填写上述定义的全局数据块数组。如图 11 所示。
图 11 填写相应的引脚
ModuleStates 指令引脚说明如表2所示。
| 参数 LADDR | 使用 LADDR 参数通过站硬件标识符选择 IO 设备或 DP 从站。 硬件标识符位于: • IO 设备站或 DP 从站属性的网络视图中。 • 或数据类型为 HW_DEVICE(对于 IO 设备)或 HW_DPSLAVE(对于 DP 从站)的所列系统常量的 PLC 变量表中。 |
| 参数 MODE | 使用 MODE 参数可读取状态信息。 可读取模块的下列一条状态信息: • 1: 模块已组态 • 2: 模块故障 • 3: 模块禁用 • 4: 模块存在 • 5: 模块中存在故障。 |
| 参数 STATE | STATE 参数输出使用 MODE 参数选择的模块状态。 如果使用 MODE 选择的状态适用于某个模块,那么下列位将设置为“1”: • 位 0 = 1: 组显示。 至少一个模块的第 n 位设置为“1”。 • 位 n = 1:使用 MODE 选择的状态将应用到插槽 n-1(例如:位 3 对应插槽 2)中的模块。 使用“BOOL”或“Array of BOOL”作为数据类型: • 要仅输出状态信息的组显示位,可在 STATE 参数中使用 BOOL 数据类型。 • 要输出所有模块的状态信息,请使用长度为 128 位的 Array of BOOL。 |
2.功能测试
(1)将程序下载到 PLC 中。 监控全局数据块 modulestate。如图 12 所示。

图 12 分布式 IO 站所有子模块正常
当 IO device_2 站插槽编号1的子模块故障时(损坏或被拔除),state[2]=1。如图 13 所示。
图 13 插槽编号1子模块故障
1.4 S7-1200 G2 CPU做为智能设备进行与 IO 控制器的通信诊断功能
1.测试环境
本部分使用CPU 1212C (智能设备)和CPU 1516F-3PN/DP(IO 控制器)PN 通信为例,讲解如何在智能设备中调用 ModuleStates 指令,读取智能设备的连接状态。
硬件:
CPU 1212C DC/DC/RLY,V1.0,一台
CPU 1516F-3PN/DP,V4.0,一台
软件:
TIA Portal V21
2. 组态配置
(1)CPU 1212C 作为智能设备连接到IO 控制器CPU 1516F-3PN/DP,如图14所示。

图 14 组态概览
(2)设置传输区,本示例中,CPU 1212C 配置了两个传输区,如图 15 所示。

图 15 智能设备设置
3.编程
在1212C的OB1中调用ModuleStates 指令,其中指令的MODE管脚填写2,管脚说明参考表2; LADDR 管脚使用的硬件标识符,查找硬件标识符方法如图 16 所示。
图 16 硬件标识符
4.功能测试
当智能设备与 IO 控制器网络断开以后,从智能设备的接收状态 DB 中读取到状态位 0 以及状态位 2 均为"TRUE",说明与 IO 控制器的通信中断。此外,也可以通过1212C的诊断缓冲区看到具体报错信息,如图 17 所示。
图 17 读取到的状态
- 评论
-
分享
扫码分享
- 收藏 收藏
- 点赞 点赞
- 纠错 纠错



西门子官方商城


{{item.nickName}}