modbus返回数据解析

茜茜爱我 2013-01-19 04:24:36
modbus 串口通信 发01 03 00 0A 00 06 E5 CA
收01 03 0C 28 F6 41 AC 9B 3D 42 1C 8E 3B 40 C1 C1 1C
第一个双字数据:28 F6 41 AC,
第二个双字数据:9B 3D 42 1C,
第三个双字数据:8E 3B 40 C1,
解析出来的数据
第一个字,41 AC为高位字,28 F6为低位字,按IEC单精度浮点数处理后,得到21.52;
第二个字,42 1C为高位字,9B 3D为低位字,按IEC单精度浮点数处理后,得到39.1516;

第三个字,E1 C1为高位字,8E 3B为低位字,按IEC单精度浮点数处理后,得到-4.463088*10^20;

28 F6 41 AC怎么VB解析出21.52 项目只需解析数据?VB怎么写解析过程,不需要CRC校验走modbus协议,最终不是串口传输.
...全文
1848 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
vb_188 2015-01-21
  • 打赏
  • 举报
回复
用scale的话暂时还满足不了需求,也没时间去具体细化。现在也是简单的用gigasoft功能
worldy 2013-01-19
  • 打赏
  • 举报
回复
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)


funtion getit(a() as byte) as single
dim b as single
copymemory b,a(0),4
getit=b
end function

a中的字节为数据由低到高的顺序,modbus返回的数据,如果为访问单元16位,由两个单元获取回来的数据的顺序会和正常的不一样,要注意调整

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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