登录
首页 PLC论坛 西门子SIEMENS
回帖 发帖
正文

主题:关于西门子MODBUS通迅时用浮点型数据时产寄存器高低位问题

点击:11850 回复:8

   大家都知道西门子PLC寄存器以字节为单位,最高位为VB0。大多数的设备的寄存器0为最低字节。MODBUS通迅是经字为单位的,西门子PLC和其它设备传送以字为单位的数据时都统一以MODBUS寄存器(比如40001)转换,所以数据没有改变。
   但传送浮点型数据时就要注意了:其它设备的高位数据传送到MODBUS寄存器40002、低位数据传送到MODBUS寄存器40001;而西门子(以VB0为起始寄存地址)读取时是把40001做为高位数据(VW0)、40002做为低位数据的(VW2);读出来的数据(VD0)就会有错。把VW0传送到VW12、VW2传送到VW10再读VD10时数据就正常了。
   语言组织能加有限,只是觉得对大家有点帮助。是做工程时读流量时发现的。
15-01-20 18:54
感谢分享项目经验
15-01-20 22:50
细节的问题不注意问题找起来就麻烦。
15-01-21 08:45
西门子PLC数据是摩托罗拉格式,三菱PLC等大多设备数据是英特尔格式,字和双字排序不同,字节一样。
15-01-21 10:59
就是两种不同字节顺序造成的。
以byte地址为例组成字来说:
摩托罗拉格式是低地址放在字中就是处于高字节的位置,英特尔格式是高地址就是放在字中就是处于高字节的位置。
最后修改:2016/3/30 14:28:12
16-03-30 14:25
不错,确实存在高地位转换问题
16-04-08 13:34
可以先用串口调试助手读取PLC的数据看看,哪种高低字节顺序可以正常显示
16-04-09 16:05
modbus主站读取PLC从站,好像不可以读取32位双字吧,请指导哦。我的QQ 1197614222
17-02-22 15:38
协议只是数据传输,就算你要传 string类型的也是一样的,除了1就是0,其他的都是后期处理
17-02-23 12:47

工控新闻

更多新闻资讯