通信协议
1、通信接口RS485或RS232,波特率范围1200-9600。
2、仪表接线端为A, B和COM。
3、说明书表2中寄存器编号为寄存器地址。
4、通信信息组成:地址码-功能码-数据段-CRC校验码,一条消息连续发送和接收,字符间隔不能大于一个字符,否则认为一条新消息开始或老消息结束。信息体由十六进制数组成。.
5、数据定义:累积量为4字节十六进制定点数,瞬时量(包括温度压力等)为4字节浮点数。.
6、通信命令:
功能码03-用来读取显示数据
发送 01 ;地址 回应 01 ;地址
03 ;功能码 03 ;功能码
00 ;寄存器地址高 04 ;字节个数
01 ;寄存器地址低(显示地址) 80 ;数据1
00 ;寄存器个数高 04 ;数据2
04 ;寄存器个数低 80 ;数据3
CRCH ;CRC校验码高 80 ;数据4
CRCL ;CRC校验码低 CRCH ;CRC校验码高
CRCL ;CRC校验码低
说明:地址=仪表号,寄存器地址=显示项目编号
回应字节个数=(发送)寄存器个数低(1-63)
功能码04-用来读取数设定数据和码设定数据,
寄存器个数=1-3读码设定;=4-63读数设定。
读取数设定数据
发送 01 ;地址 回应 01 ;地址
04 ;功能码 04 ;功能码
00 ;寄存器地址高 04 ;字节个数
01 ;寄存器地址低(数设定地址) 80 ;数据1
00 ;寄存器个数高 04 ;数据2
04 ;寄存器个数低 80 ;数据3
CRCH ;CRC校验码高 80 ;数据4
CRCL ;CRC校验码低 CRCH ;CRC校验码高
CRCL ;CRC校验码低
说明:地址=仪表号,寄存器地址=数设定地址编号
回应字节个数=(发送)寄存器个数低(4-63)
读取码设定数据
发送 01 ;地址 回应 01 ;地址
04 ;功能码 04 ;功能码
00 ;寄存器地址高 02 ;字节个数
01 ;寄存器地址低(码设定地址) 03 ;数据1码内容
00 ;寄存器个数高 04 ;数据2 码内容
01 ;寄存器个数低 CRCH ;CRC校验码高
CRCH ;CRC校验码高 CRCL ;CRC校验码低
CRCL ;CRC校验码低
说明:地址=仪表号,寄存器地址=码设定地址编号
回应字节个数=(发送)寄存器个数低(1-3)X2
功能码06-用来进行码设定
发送 01 ;地址 回应 01 ;地址
06 ;功能码 06 ;功能码
00 ;寄存器地址高 00 ;寄存器地址高
01 ;寄存器地址低(码设定地址)01 ;寄存器地址低
00 ;数据高 00 ;数据高
04 ;数据低 04 ;数据低
CRCH ;CRC校验码高 CRCH ;CRC校验码高
CRCL ;CRC校验码低 CRCL ;CRC校验码低
功能码10H-用来数设定(如:100=86H,00H,00H,48H)
发送 01 ;地址 回应 01 ;地址
10H ;功能码 10H ;功能码
00 ;寄存器地址高 00 ;寄存器地址高
01 ;寄存器地址低(数设定地址) 01 ;寄存器地址低
00 ;寄存器个数高 00 ;寄存器个数高
04 ;寄存器个数低 04 ;寄存器个数低
04 ;数据个数 CRCH ;CRC校验码高
86h ;数据1 CRCL ;CRC校验码低
00 ;数据2
00 ;数据3
48H ;数据4
CRCH ;CRC校验码高
CRCL ;CRC校验码低
功能码07-用来读取日报表,报表数据为长整型,顺序为质量热量
发送 01 ;地址 回应 01 ;地址
07 ;功能码 07 ;功能码
xxy; 起始年(BCD码) xxf ;长度= xxc*5
xxm ; 起始月(BCD码) xx1 ; 数据1
xxd ; 起始日(BCD码) …. ; 数据
xxc ;报表长度(1-16) xxn ;数据n
CRCH ;CRC校验码高 CRCH ;CRC校验码高
CRCL ;CRC校验码低 CRCL ;CRC校验码低
功能码08-用来读取月报表,报表数据为长整型,顺序为质量热量
发送 01 ;地址 回应 01 ;地址
08 ;功能码 08 ;功能码
xxy; 起始年(BCD码) xxf ;长度= xxc*5
xxm ; 起始月(BCD码) xx1 ; 数据1
xxd ; 空 …. ; 数据
xxc ;报表长度(1-16) xxn ;数据n
CRCH ;CRC校验码高 CRCH ;CRC校验码高
CRCL ;CRC校验码低 CRCL ;CRC校验码低
7、CRC校验码计算
01 ;地址 N1 CRC=0FFFFH为初值
10 ;功能码 N2 CRCL与N1异或运算
00 ;寄存器地址高N3 CRC右移1位,若移出位为1
01 ;寄存器地址低N4 则CRC=CRC和A001H异或,
00 ;寄存器个数高N5 若移出位为0则CRC=CRC
04 ;寄存器个数低N6 右移8次完成N1计算
04 ;数据个数 N7 …
80 ;数据1 N8 CRCL与N11异或运算
04 ;数据2 N9 CRC右移1位,若移出位为1
80 ;数据3 N10 则CRC=CRC和A001H异或,
80 ;数据4 N11 若移出位为0则CRC=CRC
CRCH ;CRC校验码高 右移8次完成N11计算
CRCL ;CRC校验码低 最后得到CRC校验值
8、sb2100系列仪表浮点数据格式
长度为4字节, 采用IEEE标准方式,其中尾数高位始终为1,位的分布如下:1位符号位,8位指数位,24位尾数,符号位是最高位,尾数为低位23位,按字节排序如下:
地址 0 1 2 3
内容 MMMMMMMM MMMMMMMM EMMMMMMM SEEEEEEEE
其中 S:符号位,0=整数,1=负数.
E:指数(在二个字节中),偏移码为127.
M:23位尾数,最高位为1,有效位为24位.
例如:100=0x00,0x00,0xc8,0x42
0=0x00,0x00,0x00,0x00
-100=0x00,0x00,0xc8,0xc2
9、通信举例
仪表地址设为01,通信波特率=4800,n,8,1(仪表码地址08=01,09=05)。
例1:读取仪表瞬时流量F,F=100. (4字节浮点数)
上位机发送:0x01,0x03,0x00,0x12,0x00,0x02,0x64,0xe
仪表回传:0x01,0x03,0x04,0x00,0x00,0xc8,0x42,0x2d,0xc2
例2:读取仪表累积流量S,S=12345.(4字节定点数)
上位机发送:0x01,0x03,0x00,0x14,0x00,0x02,0x84,0xf
仪表回传:0x01,0x03,0x04,0x39,0x30,0x00,0x00,0xf6,0xa0
例3: 读取仪表所有显示数据,包括瞬时,频率,差压, 压力,温度,密度,热量,累积流量,累积热量等12项48个字节
上位机发送:0x01,0x03,0x00,0x01,0x00,0x30,0x1e,0x14
仪表回传: 0x01,0x03,0x30,
0x69,0x00,0xc8,0x42, (瞬时=100.0008)
0x86,0x00,0x00,0x00,(频率=0)
0x00,0x00,0xc8,0x44,(差压=1600)
0x9e,0x99,0x99,0x3f,(压力=1.20)
0x7d,0x1f,0x39,0x43,(温度=185.123)
0x00,0x00,0x80,0x3f,(密度=1.0)
0x00,0x00,0x00,0x00,(热量=0.0)
0x00,0x00,0x00,0x00,(保留)
0x00,0x00,0x00,0x00,(保留)
0x00,0x00,0x00,0x00,(保留)
0x60,0x30,0x00,0x00,(累积=12384)
0x0a,0x00,0x00,0x00,(累积热=10)
0xf5(校验码高),0xb9(校验码低)
例4: 读取仪表实时时间05-12-08-21-21-08,时间格式为6字节BCD码
上位机发送:0x01,0x04,0x00,0x29,0x00,0x03,0xc3,0x61
仪表回传:0x01,0x04,0x06,
0x08(秒),
0x21(分),
0x21(时),
0x08(日),
0x12(月),
0x05(年),
0x81(校验码高),0x9a(校验码低)
//显示寄存器定义
//水表累积区
寄存器地址 变量名称 数据类型
1 1#水表累积量 unsigned long int
2 2#水表累积量 unsigned long int
。。。。。。
32 32#水表累积量 unsigned long int
//电表累积区
寄存器地址 变量名称 数据类型
33 1#电表累积量 unsigned long int
34 2#电表累积量 unsigned long int
。。。。。。
64 32#电表累积量 unsigned long int
//水表状态区,0-正常,1-失败
寄存器地址 变量名称 数据类型
65 1#水表通信状态 unsigned char
66 2#水表通信状态 unsigned char
。。。。。。
96 32#水表通信状态 unsigned char
//电表状态区0-正常,1-失败
寄存器地址 变量名称 数据类型
97 1#电表通信状态 unsigned char
98 1#电表通信状态 unsigned char
.。。。。。。
128 32电表通信状态 unsigned char
//水表累积数小数定义0-无,1-1位,2-2位
寄存器地址 变量名称 数据类型
129 1#水表累积数小数 unsigned char
130 2#水表累积数小数 unsigned char
。。。。。。
160 32#水表累积数小数 unsigned char
//电表累积数小数定义0-无,1-1位,2-2位
寄存器地址 变量名称 数据类型
161 1#电表累积数小数 unsigned char
162 2#电表累积数小数 unsigned char
。。。。。。
192 32#电表累积数小数 unsigned char