求指教224xp与电表MODBUS_RTU通讯问题

各位高手好,现有CPU224XP做主站,目标是通过modbusRTU连接DDSU666电表(正泰单相电子式电能表)。
硬件连接:plc0端(3+8-)用485连接电表通讯端(7+8-)。(连接没有问题)
电表已经设置为modbusRTU通讯协议 参数(9600,N,8,2) 标号53 ,电表读取地址是4000H(16进制) 数据类型:flont
经计算,4000H=16384
本人小白第一次编写mod程序,监测到的数值都是0。。
我的问题是 怎么实现通讯读到4000H的数据 我的程序是不是有点简单了
                     表要读的地址16384和plc保持寄存器地址40001应该怎么关联 
                     数据是不是还要转换 
望路过的高手能够帮助解答 不要说的太复杂 指个方向也可以  不胜感激
图附电表说明书(通讯地址)

问题补充:
非常感谢各位工程师的回答,根据大家的建议,把电表的停止位改成1之后,通讯问题应该是解决了。来回测试几次,用416385读出了数值。现在的问题:电表的数值是0.4左右(会变动但是不明显),监控的数值VB1000和VB1002能够读到数据 如图所示,vb1000始终是62(这个数应该没用),vb1002的数值也不准确(不会随着电表上的数变动,每次上电数值也不一样,相差很多),不知是不是还是地址的问题,感觉很迷茫,再次求解答 ,感谢!

图片说明:

求指教224xp与电表MODBUS_RTU通讯问题    求指教224xp与电表MODBUS_RTU通讯问题    求指教224xp与电表MODBUS_RTU通讯问题    求指教224xp与电表MODBUS_RTU通讯问题    求指教224xp与电表MODBUS_RTU通讯问题   

最佳答案

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,数据格式选择浮点数。如果值不正确,可以考虑高低字交换后,再监视这个浮点数。

提问者对于答案的评价:
与电表通讯上了 数据还读的不对

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2021年7月5日 下午1:46
下一篇 2021年7月5日

相关推荐

发表回复

登录后才能评论