上太仪表LOGO
 
在线咨询:

一、通信参数:
RS485兼容串行接口,半双工异步方式,
波特率:1200---38400bps (默认9600)
数据位:8
校  验:N
停止位:1

二、数据帧格式
内存地址为双字节,如0000H为第一个菜单,0002H为第二个菜单。
 

设备地址

功能代码

内存地址

数据长度

数据

CRC

01H

03H读菜单

0000H~0068H菜单

0074H~008CH

运行数据

02D0~055C

历史数据

0002H

XXXX

04H读当前测量值

00H~18H

10H写菜单

00H~74H

04XXXX

12H写入EEPOM

00A0H

0002H

00A1H

13H操作成功

14H操作失败

20H输出4mA

21H输出20mA

30H开1#输出

31H关1#输出

32H开2#输出

33H关2#输出

34H开3#输出

35H关3#输出

36H开4#输出

37H关4#输出

55H还原输出状态

60H重起设备

65H恢复出厂设置

三、数据格式
IEEE754标准单精度浮点数由1位符号位+8位阶码+23位尾数组成,用四位十六进制数表示。如124.75用十六进制表示为42 F9 80 00。计算方法是:
 124.75换算成二进制:1111100.11
 用科学计数法表示为:1.11110011*2^6
 阶码6+127=133,并用0表示正,1表示负。因此124.75的二进制数为:
0 10000101 11110011000000000000000B=42F98000H

为方便测试,可下载浮点数转换软件:
IEEE754单精度浮点数转十进制,


单精度浮点数与十进制数在线转换


四、CRC循环冗余校验
循环冗余校验CRC区为2字节,含一个16位二进制数据。由发送设备计算CRC值,并把计算值附在信息中,接收设备在接收信息时,重新计算CRC值,并把计算值与接收的在CRC区中实际值进行比较,若两者不相同,则产生一个错误。
CRC开始时先把寄存器的16位全部置成“1”,然后把相邻2个8位字节的数据放入当前寄存器中,只有每个字符的8位数据用作产生CRC,起始位,停止位和奇偶校验位不加到CRC中。
产生CRC期间,每8位数据与寄存器中值进行异或运算,其结果向右移一位(向LSB方向),并用“0”填入MSB,检测LSB,若LSB为“1”则与预置的固定值异或,若LSB为“0”则不作异或运算。
重复上述处过程,直至移位8次,完成第8次移位后,下一个8位数据,与该寄存器的当前值异或,在所有信息处理完后,寄存器中的最终值为CRC值。 产生CRC的过程:
1、把16位CRC寄存器置成FFFFH.
2、第一个8位数据与CRC寄存器低8位进行异或运算,把结果放入CRC寄存器。
3、CRC寄存器向右移一位,MSB填零,检查LSB.
4、(若LSB为0):重复3,再右移一位。
(若LSB为1):CRC寄存器与Aool H 进行异或运算
5、重复3和4直至完成8次移位,完成8位字节的处理。
6、重复2至5步,处理下一个8位数据,直至全部字节处理完毕。
7、CRC寄存器的最终值为CRC值。
8、把CRC值放入信息时,高8位和低8位应分开放置。
发送信息中的16 位CRC值时,先送低8位,后送高8位。
 

五、组态软件设置
 串口→COM1,波特率:9600,数据位:8,停止位:1,奇偶校验:无,协议RS485→通用协议→标准Modbus设备→配置:通信协议帧格式:RTU模式,Slave地址:1,通信超时:1000毫秒,SWAP寄存器方式:SWAP3 2143→完成
 选择Input_register寄存器读取测量值,单元长度:2;数据类型:实型。
 选择Holding_register寄存器读取或写入参数,单元长度:2;数据类型:实型。
 

六、STM明渠流量计MODBUS 用03号命令读运行数据举例
读第1路模拟输入 01 03 00 7f 00 02 f5 d3
读第2路模拟输入 01 03 00 81 00 02 94 23
读第1路数字输入 01 03 00 83 00 02 35 e3
读第2路数字输入 01 03 00 85 00 02 d5 e2
读数学运算结果 01 03 00 87 00 02 74 22
读流速运算值 01 03 00 89 00 02 15 e1
读每小时流量 01 03 00 8b 00 02 b4 21
读流量累积值 01 03 00 8d 00 02 54 20
读备用电池电压  01 03 00 95 00 02 d4 27