完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
本帖最后由 lvxisi 于 2016-3-25 17:50 编辑
最近做labview与硬件设备间的485通信,利用到了modbus通信协议,在CRC校验以及4个字节转换成浮点值上遇到了不少问题。这几天里,查找了不少资料,终于总结出来了一直比较简单的方式,可以轻松完成数据帧的CRC校验,将收到的多个字节转换成浮点类型。和大家分享一下。 LabVIEW DSC 工具包内置了对modbus总线的支持,自动CRC校验,可以很方便的实现Modbus通信,支持串口和TCP两种传输方式。如1图所示。 图1 Modbus Master 选板 如果是简单的Modbus通信,没有必要使用DSC工具。NI公司提供了简易的Modbus库,用于一般的Modbus通信。 主站发送命令:
利用labview编程如图2所示 图2 Modbus 读取寄存器 将计算机的两个串口相连接(可以使用虚拟串口测试)。软件运行之后,利用串口助手可以接收到发出的数据,如图3所示。可见,Labview自动添加了CRC校验,无需自己编写校验程序。 图3 串口助手接收信息 在接受到数据后,迅速回复信息,如图4所示。在前面板中显示收到的数据,与发送的数据相对应,如图5所示。 图4 利用串口助手回复信息 labview接收数据:
图5 labview收到的数据 浮点格式: MODBUS 用4个字节传输32位浮点数,其结构如下:
S-尾数的符号;1=负数,0 = 正数; E-指数;与十进制数127的差值表示。 M-尾数;低23位,小数部分。 当E不全”0”时,且不全”1时浮点数与十进制数转换公式: 浮点数为: C1 B0 80 00 1100 0001 1011 0000 1111 1000 0000 0000 S = 1 E = 10000011 M = 011 0000 1111 1000 0000 0000 = - 22.0625 Labview提供了简单的工具,不需要也可以将4个字节转换成32位浮点形式。将获得的数组直接强制转换,就可以了。注意转换的类型为single。如图6所示。 图6 四个字节转换为浮点类型 得到的值与之前计算的结果完全相同。如图7所示。 图7 转换后的结果 |
||||||||
相关推荐
27 个讨论
|
||||||||
|
这个功能码在哪里体现呢?
|
|
|
|
|
|
|
|
|
能不能把VI发上来,学习一下
|
|
|
|
|
|
|
|
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-11 11:22 , Processed in 0.634109 second(s), Total 51, Slave 42 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
15879