• {{item.name}}
SIMATIC S7-1500系列 {{item.name}}
{{item2.name}}
更多
常问问题

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

star star star star star
5.0 分
  • 通信(通讯)
  • 故障
  • 条目
  • 诊断
文档编号:107248379| 文档类型:常问问题| 发布时间:2023年10月13日
  • 0
  • 395
  • 1279
当S7-1500使用"Modbus_Master", "Modbus_Slave" 和"Modbus_Comm_Load" 指令时,本条目的内容有助于调试和故障诊断。

当使用'Modbus_Master', 'Modbus_Slave' 和'Modbus_Comm_Load' 指令时,本条目的内容有助于调试和故障诊断。


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

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

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

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

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

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

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


    图. 01

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


    图. 02

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


    图. 03

    该块会在分布式IO 站出现故障时被调用(例如:掉电)。
  7. 打开OB86 ("机架故障中断").
    在用户程序中比较 "LADDR" 参数和接口模块的硬件标识符。
    如果OB 86由ET 200SP 掉站触发执行,则必须再次执行"Modbus_Comm_Load"指令用来初始化模块。
  8. 可设置标志位来触发重新初始化,例如(此处:"DB1".Call_Modbus_Comm_Load),可用来在程序中查询,一旦标志 位被置为“True”位,则必须再次调用"Modbus_Comm_Load"来重新初始化模块。

  9. 当分布式IO(IM 模块)接口模块断电时,"Modbus_Master" 或 "Modbus_Slave"希望发送一个确认信号,而这个等待状态必须被终止。在这种情况下,必须将"Modbus_Master" 或 "Modbus_Slave"的背景DB中的静态参数“MB_state”赋值为0,如果是从站,同时需要将Modbus_Slave的背景DB的静态参数"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


您可以前往全球资源库查看此文档:https://support.industry.siemens.com/cs/cn/zh/view/107248379

  • 评论
更多
  • 分享

    扫码分享

提示
您即将前往“全球技术资源库”。
“全球技术资源库”的用户名与本地支持中心(下载中心、技术论坛、找答案、1847工业学习平台)的用户名不通用。如果需要在全球技术资源库下载文档,您需要重新登录或注册。
确定

扫码进入移动端

信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。