labview modbus通讯范例,两路从机设备,一路从机进行继电器控制,一路从机进行电压电流采集。 通过三种方式实现:串口(crc校验)、网口(tcp)和modbus库。 源码已经过硬件测试。 注: 软件源码是2018版,内有dsc安装包下载链接,下载后可直接使用Modbus库,也不需要额外安装visa安装包了。
直接上干货!最近在工控项目里折腾LabVIEW和Modbus的实战经验,整了个三合一方案。两种从机设备(继电器控制+数据采集)通过串口、网口、Modbus库都能玩得转,源码实测可用。
先看串口方案(带CRC校验)
!串口配置界面
关键代码片段:
VISA配置:9600波特率/8数据位/无校验/1停止位 报文构建:01 05 00 00 FF 00 CRC校验这里的CRC校验是灵魂,直接决定通讯成败。用LabVIEW自带的CRC计算VI,注意高低字节顺序。实测发现某些国产设备要求逆向CRC,这时候得把计算结果的前后字节对调。
TCP通讯更省事
网络通讯的优势在于免接线,配置参数时注意:
TCP Open:192.168.1.100:502 发送帧:[00 00 00 00 00 06 01 03 00 00 00 02]重点在TCP头部的6字节前缀(事务标识符+协议标识+长度),这个很多人容易漏掉。实测响应速度比串口快3倍以上,特别是在需要高频采集电压电流时优势明显。
labview modbus通讯范例,两路从机设备,一路从机进行继电器控制,一路从机进行电压电流采集。 通过三种方式实现:串口(crc校验)、网口(tcp)和modbus库。 源码已经过硬件测试。 注: 软件源码是2018版,内有dsc安装包下载链接,下载后可直接使用Modbus库,也不需要额外安装visa安装包了。
Modbus库偷懒大法
安装DSC工具包后直接调用现成函数:
!Modbus库函数
MB Serial Master Init搞定串口配置,MB TCP Master Init处理网络连接。写线圈用MB Write Single Coil,读寄存器用MB Read Holding Registers。实测发现线圈地址要从0开始算,而寄存器地址从40001开始对应地址0,这个偏移量坑了不少新手。
双从机配合技巧
继电器控制从机(地址01)和采集从机(地址02)要分开处理时序:
顺序执行:先写继电器状态,延迟50ms再启动采集 轮询机制:用定时循环结构确保200ms采集周期实测发现同时操作两个从机时,必须加时间间隔。有次没加延迟导致设备死机,后来用事件结构做了指令队列才解决。
源码里已经打包了DSC安装包(2018版专用),不用再折腾VISA驱动。特别注意项目属性里的依赖项设置,不然移植到其他电脑会报错。有次在现场调试时发现CRC校验失败,结果是串口线质量太差,换条带屏蔽的线立马解决。