找答案的高端用户(找答案钻石及双钻级别的用户)将尽可能从此问题下的所有回
答中,为您推荐最佳答案。届时您可以根据推荐数采纳答案。
如果自提问时间起7天内您仍无法选出最佳答案,您可以选择“无满意答案”关闭此问题。
手机扫码追踪该问题,
觉得实用,立即去分享!
点击复制链接
1、电表不能设置为modbusRTU通讯协议 参数(9600,N,8,2),因为S7-200 CN 的 MODBUS RTU 库指令只支持 1 位停止位;
可改为(9600,N,8,1);
2、要读的地址16384和plc保持寄存器地址4000H应该怎么关联?
4000H是仪表中的保持寄存器地址、十六进制、是一个FLOAT型、占用二个字的存储空间,那么4000H转换成十进制则为 16384,则 MBUS_MSG 的 ADDR 脚写 416384+1=416385,并且 COUNT 管脚写 2。
你的程序在线后,MBUS_MSG 指令的 状态字节 MB3 不为0,说明通讯有问题,查资料,是通讯超时,很大可能是上面两条引起的,与你初始化时 MBUS——CTRL 的TIMEOUT 关系不大。
注意一点有些仪表地址是不是存在正偏移或负偏移的情况。所谓正负偏移是指要读取的地址 416385 加 1 或减 1,你可以在程序中测试。
3、一般在做仪表通讯时,先用 MODSCAN32 软件来做测试,这个软件可以看到地址的正负偏差,以便在程序中使用。
4、仪表通讯说明的附图中最下面那段话是“以下寄存器不支持DDSU666”,你手上的表是DDSU666,那么 什么型号,MBUS_MSG 的 COUNT 管脚只能写 2。
以上都做到了,程序应可以读到数据,先按上面的做。
5、关于MODBUS RTU通讯的资料可以参考
http://www.ad.siemens.com.cn/service/article/S7-200/S7-200modbus/Default.aspx
补充:
在状态表中监视 VD1000,数据格式选择浮点数。如果值不正确,可以考虑高低字交换后,再监视这个浮点数。
Modbus保持地址通常在40001到49999的范围内。该范围对大多数应用程序来说足够了,但是某些数据映射到保持寄存器的Modbus从站所具有的地址超过9999。这些设备不适合常规的Modbus寻址方案。
Modbus主设备指令支持通过可选的寻址方法对大于9999的保持寄存器进行寻址。MBUS_MSG指令允许参数"地址"具有附加范围以支持保持寄存器地址的扩充范围。
400001至465536用于保持寄存器
例如:要访问保持寄存器16768,MBUS_MSG的"地址"参数应该设置为416768。
扩充寻址允许访问Modbus协议支持的65536个可能地址的全部范围。该扩充寻址仅支持保持寄存器。
首次回答问题,获得
双倍西币积分!
立即成为技术知识分享的一员!
找答案微信小程序
提问
搜索
欢迎您访问支持中心!
丰富的视频,全方位的文档,大量的网友交流精华……
为了更好的完善这些内容,我们诚邀您在浏览结束后,花20秒左右的时间,完成一个用户在线调查!
感谢您的支持!