仪器社区

VB用Modbus RTU协议和仪表通讯的问题

牵手那天1 2018-11-13
我现在手上有一块温控仪表,采用的是Modbus RTU的协议,然后我用的是Visual Basic 6.0来做开发,现在有个疑问。对仪表上有一个参数的读和写现在怎么调试都不对,同样的代码对于其他参数的读和写都没有这样的问题。仪表的地址设置是2,这个参数的地址是1450(H... 我现在手上有一块温控仪表,采用的是Modbus RTU的协议,然后我用的是Visual Basic 6.0来做开发,现在有个疑问。对仪表上有一个参数的读和写现在怎么调试都不对,同样的代码对于其他参数的读和写都没有这样的问题。仪表的地址设置是2,这个参数的地址是1450(Hex),读功能码用3写功能码用6 现在的问题是为什么我读这个参数Z大只能读取显示到6553.5,即仪表上这个参数显示只要大于6553.5,用我的软件代码读取参数的结果就都是32768,仪表显示小于6553.5我的软件上都可以正常的显示 发送帧命令 02 03 14 50 00 01 81D8(CRC16) 接收帧命令02 03 02 8000 9D84(只要仪表该参数大于6553.5返回的数据就都是8000转成十进制就是32768) 第二个问题还是同一个参数的写入问题,从我的软件上修改这个参数Z大不能超过3276.7这个数值,小于3276.7的任意数可以正常修改,比如我现在想把这个参数从我的软件上修改成4000,我从通讯手册上看因为这个参数带一位小数点而小数点不传输,要把它修改成4000实际要发送数据是40000(Hex9C40),发现接收数据好像都不对, 发送帧命令 02 06 14 50 9C 40 E4E8 接收帧命令 02 86 03 F2 61(接收到的数据总是不对的) 按正常来讲写数据功能码接收帧和发送帧应该是一样的返回也应该是 02 06 14 50 9C 40 E4E8 吧? 本人有有从网络上下载过几个Modbus RTU的测试软件,用这些软件测试以上说的这个参数的读和写结果和我编写的软件是一样的?请问下到底是什么原因呢?
评论
全部评论
您可能感兴趣的社区主题
加载中...
发布 评论