VB和Modbus RTU通讯方面的问题

chj510 2015-01-07 04:50:17
本人是新手,现在手上有一块仪表采用的是Modbus RTU协议通讯的
现在遇到几个问题
第一个问题:仪表上一个有一个参数显示值是-5我想VB中显示该值
示意帧命令比如发 02 03 00 01 00 01 CRC
接收数据 02 03 FF FC 00 01 CRC
通讯上来帧数据返回值是FFFC,转换成十进制是65532,其他正数参数转换都正常
现在就是这个负数的参数都无法正常显示

第二个问题:
从VB上去修改仪表上的一个参数,其中有一个参数,比如仪表上显示9999.9(最大值)
可是通讯上来的却只有3276.7,写入时也是一样我想把这个参数写成比如3277
可是写入后最大只能把这个参数改到3276
(因为这个参数有个小数点,小数点不传送,所以我比想改成3277我要在程序里做*10处理后再发送)
可是3277*10后等于32770,正好卡在整形数最大值32767这个地方不知道是为什么?
就是这个参数写入最大只能写和读到3276.0为止

另外
哪个大神能否给我一个完整的用VB编写的用MODBUS RTU协议和仪表通讯的样例代码啊
最好是有完整的读取和修改参数的样例代码给我做下参考
...全文
2801 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
齐达内 2015-09-11
  • 打赏
  • 举报
回复
这得看你的仪表的说明书,上边应该有说明。具体第几位值是传回的数据,发送什么命令是更改仪表参数。仪表说明里面有。
diaryfly 2015-08-26
  • 打赏
  • 举报
回复
你要看看你的仪表的手册或者MODBUS-RTU协议。这里有个进位的问题。也就是说一个整型16位不够的话要到相邻的位上去借一位,也就是2个整型才能正确表达你想要的数。 发 02 03 00 01 00 01 CRC 0001是你要的地址吗? 接收数据 02 03 FF FC 00 01 CRC 0001地址显示 FF FC?那你看看地址0000或者地址0002是不是也有相应改变,你要一起读出来再在vb程序里面做相应处理改过来才是。 第二个问题原理也同上。16位不够了,就扩展成32位了?你自己处理看看。
minglikm 2015-08-23
  • 打赏
  • 举报
回复
我手上有VB和基恩士PLC、信捷PLC通讯用标准MODBUS-RTU协议,要不?
chj510 2015-01-08
  • 打赏
  • 举报
回复
网上也搜了挺多了 没有合适我这个仪表通讯的类似的代码可以做参考啊
msdtx 2015-01-08
  • 打赏
  • 举报
回复
工业标准的东西,用别人的库好了。

863

社区成员

发帖
与我相关
我的任务
社区描述
VB COM/DCOM/COM+
c++ 技术论坛(原bbs)
社区管理员
  • COM/DCOM/COM+社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧