我有一个温控表,用485通讯,设置值地址是0100,那么我在编程的时候,读取这个地址的值程序里地址是多少,计算公式是什么,如图,我这个程序问题出在哪里呢
问题补充:
现在发送的代码是正确的,我怎样才知道返回的数据存在哪里了,这个地址是VB100吗,为什么,返回来的数据应该是VD数据才对啊
图片说明:
最佳答案
你MBUS_MSG指令中DataPtr管脚地址正确输入是&VB100才对,EN 管脚不能用SM0.0特殊继电器,EN 管脚可以用First管脚的地址。地址计算看下图。参考下面通讯。
S7-200 SMART Modbus RTU通信:
http://www.ad.siemens.com.cn/productportal/prods/s7-200-smart-portal/200smarttop/smartsms/020.html
Modbus RTU 主站:
http://www.ad.siemens.com.cn/productportal/prods/s7-200-smart-portal/200smarttop/communication/serial_port/modbus/Master/Master.htm
补充问题回答:
这里只能填写&VB100,&VB100这是一个指针地址,实际上&VB100对应地址是VW100,如果你要读取从站数据格式32位数据格式你就要在Count 管脚哪里填写2,这时候&VB100存储的数据地址是2个字地址,也就是VW100和VW102这两个地址。你在通过查看VD100里面数据就知道读取数据和从站数据是否一致,如果不一致有可能是数据存储格式不一致造成,你通过上升沿脉冲去将VD100里面数据进行循环移16个位来得到符合西门子PLC数据存储的格式。你可以详细去看西门子SMART200 plc编程手册中的modbus rtu章节。
图片说明:
提问者对于答案的评价:
谢谢
原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc345075.html