plc是西门子暖通专用pol,通过modbus tcp 与触摸屏通讯在显示浮点数没有任何问题,同一个寄存器在通过modbus rtu 通讯协议,通过宏电的dtu模块,通过gprs发给上位机,上位机用的是亚控kingscada,浮点数出现不一致的问题。例如,寄存器中为10000.0,上位机就是9960.0。通过串口工具在本地读这个寄存器,然后通过转换浮点数的小软件,确实是9960.0。数越大越明显。各位,这是为什么呢?有没有别的办法。愁死我了!
问题补充:
2个字节显示的浮点数。现在本地我用modscan工具监视,通过modbustcp到触摸屏和通过modbusrtu到宏电的数据是一致的,只是亚控kingscada解析后出现不一致问题。已经打算用整数传送这个数了。看看大家还有别的建议吗?
最佳答案
似乎是数据精度问题。
你的浮点数用的是2个字节表示?还是4个字节表示的?
如果是4个字节表示,只要不再次进行数据计算,应该不会出太大的问题;
2个字节表示,即使是显示用,就有明显的差别。
提问者对于答案的评价:
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc224172.html