因实验需求,本人拟采用MEMS振动传感器长时间检测设备振动信号的特征值,但是本人使用的传感器配套上位机不能满足我们实际的需求,所以需要设计一款适合的上位机进行数据采集。
本人使用的传感器使用Modbus-RTU协议,通过485总线与主机相连,那么什么是Modbus-RTU协议呢?
一、 Modbus-RTU协议
Modbus协议是一种常用的总线协议,用于主从机之间的通信,Modbus-RTU协议的帧格式如下:
帧格式=地址+功能码+数据+校验
- 地址:占用一个字节,即两位十六进制,0x00-0xFF,其中0x01-0xF7可用。常用的是单个传感器即从机1地址为0x01,如果多个从机则依次排列。
- 功能码:占用一个字节,不同功能码对应不同功能:我们需要的是读写保持寄存器,常用03H和06H,分别为读或者写。
- 数据:按照传感器的数据手册进行编辑。我们的传感器此处对应4个字节,起始两个字节为采集寄存器的起始地址,后两个字节为采集几个寄存器,我们需要采集XYZ轴的特征数据,按照数据手册此处应该是00000014,如果采集原始振动信号则00350003
- 校验:即CRC校验,作用是保证数据的正确性。该部分需将前面编辑好后,利用CRC校验生成工具进行生成。如16进制(CRC16)(MODBUS RTU通讯)校验码在线计算器 (23bei.com)
完整的发送数据帧为: 0103 0000 0014 45C5
二、LABVIEW上位机设计
1、VISA
VISA即虚拟软件架构,通过VISA可以实现用户与仪器总线连接与通信。
(1)配置串口:
鼠标右键-仪器IO-串口-VISA配置串口:按照如下图配置串口。
在前面板显示如下:
传感器连接的COM口通过设备管理器的COM口查看,一般是叫CH340。
(2)VISA写入:
鼠标右键-仪器IO-串口-VISA写入,该模块向从机写入上述数据帧。设置一个循环,每个多长时间进行一次采样。
(3)VISA读取:
鼠标右键-仪器IO-串口-VISA读取,该模块从从机读取数据。此处需要注意两个问题:
1>字节数,最好使用下图中模式,亲测自己输入字节数接收数据会乱。
2>终止符,一般默认终止符为0x0A,如果你数据中有这个数据存在就会终止,数据就会乱掉,因此在这里我们设置的是不需要终止符。
(4)数据截取:
因为接收的数据只有一部分是需要的,所以需要截取该部分。
鼠标右键-字符串-截取字符串,两个输入分别是起始字节和截取几个字节,注意这里的起始字节是从0开始的。
(5)字符串转数值类型:
因为采到的数据是十六进制字符串,还需要将其转换成十进制数值,此处选择字符串至字节数组转换模块,也可以使用强制类型转换。
(6)波形可视化:
在前面板右键,选择波形图表。
(7)采集数据EXCEL存储:
后面板右键,文件IO,写入测量文件。如果有多个数据可以将输入信号合并。