刚学习Modbus RTU通信,有几个小小的疑问,请大神们给我确认一下。
我使用的地址如下:
M0.0~M19.7;I0.0~I13.7;Q0.0~Q16.7;AIW64~AIW78;VD1000~VD1056;VW1500~VW1524(当然I和Q不全的,就大概这么表示下)。
根据表格对应关系,我需要给主站设计人员一份MODBUS地址的IO清单(主站不是我做)。
那我的I0.0=10001;Q0.0=00001;AIW64=30033;VD1000=40000+(1000/2+1)=40501;
那么问题来了,我M寄存器的地址该怎么对应呢?
需要我自己内部转换吗?如果需要转换,该怎么操作?
图片说明:
最佳答案
将M区寄存器的值转换传送到相应的V存储区,(比如将MB0传送给VB1100...MB19传送给VB1119)V存储区要传送的数据最好是连续的,让主站写几条MBUS-MSG指令,接收从站IB区、QB区、V区的字节传送数据,最关键的就是搞清数据在主从站的传送区对应关系;
另外数据交互区与程序中使用存储区以及库存储区不能有任何重叠.
参考资料:https://www.ad.siemens.com.cn/productportal/prods/s7-200-smart-portal/200smarttop/smartsms/020.html
提问者对于答案的评价:
那我一直用到M19.0的话,是不是要赋值20次?
最佳答案作者回复:
如果M区从M0.0到M19.0是连续的话,可以考虑采用成块传送字节传送指令,BLKMOV_B指令,定义传送起始字节MB0,定义传送数量N,传输数据到VB1100开始的V区寄存器,然后作为V区寄存器读取到主站中。
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc280968.html