上一篇博客配置好了树莓派端的串口通信,这次在加入涡轮流量计之前也先用PC端模拟树莓派测试一下该仪表是否能正常工作。
一、测试流量计通信
流量计说明书如下:
并且在设备上电时以(9600,8n1格式)自动发送四个字节:
返码格式:站地址(1字节)+波特率(2字节)+格式(1字节)
8n1格式指8个数据位,无校验,1个停止位,8e1与8o1分别对应偶校验和奇校验。
将流量计与USB转485转换器及24V电源正确接线,打开PC端串口,开启电源,观察接收窗口信息(注意接收区和发送区均调成十六进制显示):
接收到返码为“01 25 80 00”,其意义为:设备地址1,波特率9600,格式8n1
依据说明书的样例,在PC端发送以下命令:
这一命令用于查询瞬时流量值,依据上篇学过的modbus-RTU协议,可以对该命令作如下解析:
发送:
01 03 00 00 00 02 C4 0B
01-设备地址为1
03-代表查询功能
00 00-查询的寄存器起始地址,由此得知储存瞬时流量值这一数据的寄存器起始地址为0
00 02-查询的寄存器数量,由此得知瞬时流量这一数据由2个寄存器储存
C4 0B-CRC校验码
接收:
01 03 04 00 00 00 00 FA 33
01-设备地址为1
03-查询功能
04-表示后面有4个字节的数据,因为查询了2个寄存器,所以返回2*2个字节数据
00 00 00 00-查询所得的数据
FA 33-CRC校验码
确认了流量计通讯正常后,将树莓派与流量计正确接线,在通讯实验前我事先利用CRC校验算法算好了所有将要用到的命令的校验位值,依据说明书记录的各项数据类型可以推算该数据占用的寄存器个数,例如32位无符号占用4字节,即2个寄存器,因此查询时需要从起始地址往后查两个寄存器的数据,各个数据的起始地址在说明书中均已给出。
二、流量计实验前准备工作
所有拟用到的完整命令如下:
01 03 00 00 00 02 C4 0B //查询瞬时流量值(L/H)
01 03 00 02 00 02 65 CB //查询累计流量(L)
01 03 00 08 00 02 45 C9 //查询累计脉冲数
01 03 17 71 00 02 91 A4 //查询仪器系数
01 06 00 06 00 01 A8 0B //累计流量清零
01 06 00 07 00 01 F9 CB //累计脉冲数清零
解释一下脉冲数和仪器系数,流量计工作时,内部的水流会推动里面的涡轮叶片转动,每当叶片经过磁铁时会产生感应信号,再经过放大器之类的将脉冲送到计数器里,而仪器系数就是表明多少个脉冲来表示一升水的流量,比如仪器系数1000就表示1000个脉冲1升水。
首先查询一下仪器系数(左边发送,右边接收):