S7-1500 CPU 使用”Modbus_Master”, “Modbus_Slave” 和 “Modbus_Comm_Load”指 令的注意事项

n

描述
当使用"Modbus_Master", "Modbus_Slave" 和"Modbus_Comm_Load" 指令时,本条目的内容有助于调试和故障诊断。 "Modbus_Master"注意事项
以下注释是 STEP 7 文件的一个补充说明。n

  • STATUS 16#818B: "DATA_PTR" 参数指向的是“优化的” DB 块 (与该指令在线帮助相反,STATUS 没有16#818C 的状态输出)。n
  • 如果参数 "MB_ADDR" 给定不正确,即使 “REQ” 输入信号状态为"false",程序块依然会报错。n
  • 如果参数"DATA_PTR" 指向的地址区太小(例如,1个字节),则输出参数如下:
    DONE = true, ERROR = true, STATUS = 0n
  • 如果请求写或者读的区域(参数"DATA_ADDR" 和"DATA_LEN")比允许操作的工作区大,消息请求仍然会被发送到Modbus从站。

"Modbus_Slave"注意事项
本注意事项是STEP 7 文件的一个补充说明。n

  • STATUS 16#818C: "MB_HOLD_REG" 参数指向的地址区太小(例如,1个字节)(STATUS值 16#8187并不会被做为错误指示而输出,这和文档中的描述不一致)。n
  • 如果读或写任务超出了参数 ”MB_HOLD_REG" 定义的数据范围或超出了输入和输出区,则来自于公共静态变量的计数值 "Exception_Count"参数不会增加。

"Modbus_Comm_Load"注意事项
为了使用"Modbus_Master"和"Modbus_Slave"指令,必须使用"Modbus_Comm_Load"指令来对CM PtP 模块进行初始化。n

当插拔CM PtP模板或者模板断电导致通讯中断后,必须在"Modbus_Master"或者"Modbus_Slave"指令执行前再次调用"Modbus_Comm_Load"指令。为了保证用户程序无故障运行,必须对用户程序做如下更改。n

  1. 在程序中添加组织块 OB83 ("插拔模板")用来响应通信模块的插拔中断。

    S7-1500 CPU 使用"Modbus_Master", "Modbus_Slave" 和 "Modbus_Comm_Load"指 令的注意事项
    图. 01

    当S7 站点出现插拔中断时,该块总是会被执行,并且触发该OB 的模块参数也会被传递。

  2. 打开OB83 ("插拔模板").
    在用户程序中比较 "LADDR" 参数和CM PtP模块的硬件标识符。
    如果OB83 由执行 “Modbus RTU" 的CM PtP模 块触发,则必须执行重新初始化模块的指令"Modbus_Comm_Load"。
  3. 为了执行重新初始化的可以设一个标志位信号,例如用一个信号(此处"DB1".Call_Modbus_Comm_Load)来进行评估。

    S7-1500 CPU 使用"Modbus_Master", "Modbus_Slave" 和 "Modbus_Comm_Load"指 令的注意事项
    图. 02

    只要该标志位被设置为"TRUE",则 "Modbus_Comm_Load" 指令必须重新调用以初始化模块。

  4. 如果希望 "Modbus_Master" 或"Modbus_Slave" CM PtP模 块在出现插拔时发送一个确认信号,则该等待状态必须终止。在这种情况下,必须将Modbus从站背景DB 的“static”变量下的"SEND_PTP. y_state"赋值为"0"。
  5. 只要初始化执行正确,标志位会被再次复位。
    在入口ID 68202723 的示例程序中,该评估位同样在OB 83中被检查。
  6. 为了防止ET 200SP 接口模块出现故障,需要在程序中添加OB86 ("机架或站点故障中断") 。

    S7-1500 CPU 使用"Modbus_Master", "Modbus_Slave" 和 "Modbus_Comm_Load"指 令的注意事项
    图. 03

    该块会在分布式IO 站出现故障时被调用(例如:掉电)。

  7. 打开OB86 ("机架故障中断").
    在用户程序中比较 "LADDR" 参数和接口模块的硬件标识符。
    如果OB 86由ET 200SP 掉站触发执行,则必须再次执行"Modbus_Comm_Load"指令用来初始化模块。
  8. 可设置标志位来触发重新初始化,例如(此处:"DB1".Call_Modbus_Comm_Load),可用来在程序中查询,一旦标志 位被置为“True”位,则必须再次调用"Modbus_Comm_Load"来重新初始化模块。
  9. 如果希望 "Modbus_Master" 或"Modbus_Slave" 模块在分布式 IO (IM 接口模块) 模块出现机架故障中断时发送一个确认信号,则该等待状态必须终止。在这种情况下,必须将 Modbus从站背景 DB 的“Static”变量下的"SEND_PTP. y_state"赋值为"0"。
  10. 一旦初始化执行成功,标志位会再次复位。
    在入口 ID 68202723 的示例程序中,该评估位同样在OB 83中被检查。

附加信息
关于 CM PtP 模块如何使用 Modbus RTU 程序块以及例程下载请参见入口 ID 68202723.

附加关键词
Modbus_Master, Modbus RTU, Modbus_Slave, Modbus_Comm_Load

原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc324941.html

(1)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2020年11月5日 下午12:03
下一篇 2021年4月12日 上午12:00

相关推荐

发表回复

登录后才能评论