PROFINET IO 设备读取模块的状态信息

描述

“ModuleStates”指令可用来读取 PROFINET IO 设备或 PROFIBUS DP 从站的模块状态信息。

输出的布尔值指示所选状态适用于的模块。例如,可以读取 PROFINET IO 设备中当前禁用的模块。

此信息的显示还依赖于要读取的状态信息是否适用于至少一个模块。

可在循环 OB 以及中断 OB(例如,OB82 - 诊断中断)中调用此指令。

LADDR Input HW_DEVICE 站的硬件标识符
MODE Input UINT 选择要读取的模块状态信息
RET_VAL Return INT 指令的状态
STATE InOut VARIANT 模块状态缓冲区

参数 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。

示例:

在以下示例中,查询 PROFINET IO 设备的模块是否存在。该 IO 系统中包含两个 S7-1500 系列的 CPU。“PLC_14”CPU 将包含程序,其中包括“ModuleStates”指令。“PLC_13”CPU 将组态为一个 IO 设备。

在“PLC_14”CPU 中:在全局数据块中创建三个变量和一个“mySTATE”结构(数据类型为 Array of BOOL),用于存储数据。

硬件

在“PLC_14”CPU 中:在循环 OB 中调用该指令。互连该指令的参数,如下所示:

硬件

在“PLC_13”CPU 中:使用 CPU 属性将此 CPU“PLC_13”设为 IO 设备。

硬件

IO 系统显示在网络视图中。

硬件

在“PLC_14”CPU 中:模块位于 IO 设备的插槽 1 中。

硬件

在“PLC_14”CPU 中:通过参数 LADDR(“myLADDR”)使“ModuleStates”指令了解 IO 设备的硬件标识符。根据参数 MODE(“myMODE”)的值“4”,在 IO 设备中搜索模块。

在参数 STATE(“mySTATE”)中,输出模块备是否存在(基于参数 MODE )的值。位 0 作为组值,指示模块存在。位 2 指示插槽 1 中存在模块。

输出参数 RET_VAL(“returnValue”)用于指示处理无错误。 

硬件

示例

在一个 IO 设备中包含 4 个模块,分别位于插槽 1 到 4 中。其中,插槽 2 中的模块故障。

对于 MODE = 2(故障/无故障)的 IO 设备,执行“ModuleStates”指令。

在 STATE 参数中设置了下列位:

位 0 = 1:至少有一个模块发生了故障。

位 1 = 0:插槽编号 0(由 IO 设备使用)

位 2 = 0:插槽编号 1 中的模块未发生故障。

位 3 = 1:插槽编号 2 中的模块发生了故障。

位 4 = 0:插槽编号 3 中的模块未发生故障。

位 5 = 0:插槽编号 4 中的模块未发生故障。

位 6 = 0:不相关

位 7 = 0:不相关

 

  
      审核编辑:彭静
打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分