关于Modbus RTU库保持寄存器的地址

S7-200的modbus RTU库里holdstart所指的地址,是主机读取从机保持寄存器的起始地址,如果主机要给从机发请求强置寄存器(M0dbus功能16),那从机把接收到的信息放在哪个起始地址中呢?

问题补充:
恩,谢谢LaoHuai。

 我的程序是这样的:通讯程序采用的是ModbusRTU库,从机Holdstart设置为VB100,如果主机发送的请求报文中功能码为16,那么主机发送给从机的数据是否也放在VB100,若不是,放在哪?
 如果主机发送的请求报文功能码为5或者15,是否直接强制QB的位值,若不是,是怎样的?

 我是初学者,希望能得到大家的帮助,不胜感激, jugong,嘿嘿!

最佳答案

1、从机把接收到的信息放在哪个起始地址中呢?
  答:
  因为从站支持某种协议,所以它肯定要接受这种协议报文,至于接收后放到哪个寄存器里,恐怕只有设备生产商的设计人员知道。我们做工程应用的人只需要知道从站设备是否支持所选协议即可;关于从站是怎么处理接收报文,我们不需要知道。

  但从站接收到报文后,大概的流程是这样的:
  按照协议的规定,检测有无报文发送过来——>有的话——>判断是否符合本机支持的报文(比方说报文的头、校验数据是否符合协议)——>符合的话——>检查报文是否是发给本站的(只要看从站号)——>若是发给本站的——>那么检查发送过的指令(是读命令、写命令、读什么、写什么、怎么写)——>检查出具体的报文指令后——>检查这些指令要操作(读或写)哪些寄存器——>操作寄存器——>或从站做一个符合协议的报文反馈给主站。

  2、主机发送给从机的数据是否也放在VB100,若不是,放在哪?
  答:
  不一定。你不需要知道从站把你主站发送过来的报文信息放在哪里,但必须知道主站是怎么发送的。

  3、如果主机发送的请求报文功能码为5或者15,是否直接强制QB的位值,若不是,是怎样的?
  答:
  05 是写单个线圈;15是写多个线圈。
  可以直接强制QB,但是有个前提条件:程序里没有对这个线圈进行写操作(置位或复位)。

提问者对于答案的评价:
谢谢!非常感谢!

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2021年7月4日 下午10:42
下一篇 2021年7月4日 下午10:42

相关推荐

发表回复

登录后才能评论