有两种方式在 CPU 的用户程序中读取 MRP 环网状态。
1.使用系统功能块 SFB52“RDREC” 从冗余管理者中读取数据记录 8050(MrpInstanceDataReal)。
2.使用诊断 OB OB82
用系统功能块 SFB52“RDREC” 读出数据记录 8050
在 CPU 的用户程序中调用系统函数块 SFB52“RDREC” 读取冗余管理者的 MRP 环网数据记录 8050 并确定 MRP 环网的状态。
一个用 SCALANCE X208 作为冗余管理者的例子。
图1 显示了系统的调用功能块 SFB52“RDREC”。
图1
本例中最读取的最大数据记录长度是200字节
图2
PROFINET产品的逻辑地址存储在一个DWORD数据类型的变量中
图3
图4显示了调用系统功能块 SFB52 "RDREC".
图4
系统功能块 SFB52“RDREC” 的输入参数。
输入参数 | 数据类型 | 描述 |
---|---|---|
REQ | BOOL | REQ = 1: 传送数据记录。 |
ID | DWORD |
PROFINET IO组件的逻辑地址 注意 |
INDEX | INT | 数据记录号 |
RECORD | ANY | 读取数据记录的目标区域。 |
表1
系统功能块 SFB52“RDREC” 的输出参数。
输出参数 | 数据记录 | 描述 |
---|---|---|
VALID | BOOL | 新数据记录已被接收且有效。 |
BUSY | BOOL | BUSY = 1: 读操作尚未结束。 |
ERROR | BOOL | ERROR = 1: 发生读错误。 |
STATUS | DWORD | 块状态和错误信息 |
LEN | INT | 所获取数据记录信息的长度 |
表2
确定 SCALANCEX208(冗余管理者)的 诊断地址,在硬件配置标记 SCALANCE X208。SCALANCE X208 的诊断地址在槽 0 的 “诊断地址”列中。在本例中,SFB52 “RDREC” 的输入参数 ID 指定为诊断地址 2042(十进制)=0x7FA(十六进制)。
图5
读取数据记录目标区域的结构
表3 显示了读取数据记录目标区域的结构指定的记录 SFB52 “RDREC” 指令的输入参数。
Byte | Array[0..199] of Byte |
---|---|
Byte 0 and 1 | 块类型 |
Byte 2 and 3 | 块长度 |
Byte 4 | 块版本的高字节 |
Byte 5 | 块版本的低字节 |
Byte 6 to 199 |
数据:
|
表3
读取数据记录的 MRP_RingState字节显示了 MRP 环网的当前状态。
-
字节 MRP_RingState = 1:环网关闭,换句话说,冗余管理者是未激活的,只有一个环网端口将转发环网消息。
-
字节 MRP_RingState = 0:环网打开,换句话说,冗余管理者是激活的,两个环网端口转发环网消息。
注意
MRP_RingState字节的地址是变化的,例如 MRP domain的名称长度在每个 MRP环中是不同的。本例中,MRP domain的名称长度是11个字节。MRP_RingState字节总是数据记录的最后一个字节。系统功能块 SFB52 "RDREC"的LEN输出参数制定了读出的数据记录的长度。本例中数据记录的长度是68个字节。这意味着 MRP 环网的当前状态 (MRP_RingState)存储在第68个字节。
诊断 OB OB82
如果冗余管理者是 PROFINET IO 网络的一个节点,也可以在 CPU 的用户程序中使用诊断 OB OB82 读取MRP环网的状态。对于这个需要使能冗余管理者的诊断报警。
在 SCALANCE X208(冗余管理者)中使能诊断报警需要进入硬件配置和打开 SCALANCE X208PROFINET 接口的属性。在 “介质冗余” 选项卡中启用 “诊断报警”功能。
图6
CPU 启用函数 “OB 82 / IOFaultTask - 通讯中断时调用”。对于这个需要进入硬件配置和打开的 CPU PROFINET 的属性界面。在 “PROFINET” 选项卡启用函数 “OB 82 / IOFaultTask - 通讯中断时调用”。
图7
现在 OB82 当环网打开(进入的事件)和当环网关闭(离开的事件)时被调用。
在 STEP 7 V5.xOB82 中使用 “OB82_MDL_ADDR”参数可以读取设备报告错误的基本逻辑地址。“OB82_EV_CLASS”参数报告是否是一个离开事件(B # 16 # 38)或者进入事件(B # 16 # 39)。
原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc321908.html