188 协议详解
188协议的全称为CJ-T188-2004《户用计量仪表数据传输技术条件》,是针对水表、燃气表、热量表和其他集中采集的一个国家行业标准协议。具体内如如下。
本协议采用主-从结构的半双工通讯方式。字节格式为每字节含8位二进制码,传输时加上一个起始位(0)、一个偶校验位(E)和一个停止位(1),共11位。其字节传输序列如图4.1 。D0是字节的最低位,D7是字节的最高位。先传低位,后传高位。
0 | D0 | D1 | D2 | D3 | D4 | D5 | D6 | D7 | E | 1 |
帧格式应符合下表的规定。
帧格式:
名 称 | 代 码 |
帧起始符 | 68H |
仪表类型 | T |
地址域 | A0 |
A1 | |
A2 | |
A3 | |
A4 | |
A5 | |
A6 | |
控制码 | C |
数据长度域 | L |
数据域 | DATA |
校验码 | CS |
结束符 | 16H |
地址域(A0~A6)由七个字节组成,每个字节为2位BCD码格式。地址长度为14位十进制数,低地址在前,高地址在后。其中A5、A6为厂商代码。
当地址为AA AA AA AA AA AA AA时为广播地址。广播地址只能应用于点对点的通讯中。
仪表类型
10 H--19 H:水表
10 H 冷水水表
11 H 生活热水水表
12 H 直饮水水表
13 H 中水水表
20 H-29 H热量表
20 H 热量表(计热量)
21 H 热量表(计冷量)
30 H一39 H:燃气表
30 H 燃气表
40 H-49 H:其他仪表
40 H 如:电度表
控制码的格式
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
D7 :
0 — 由主站发出的控制帧;1— 由 从 站 发 出 的应答帧。
D6 :
0 — 通讯正常;1— 通 讯 异 常 。
D5 - DO :0 00000:保留;
000 00 1 :读 数 据 ;
000 10 0 :写 数 据 ;
001 00 1: 读 密 钥 版本 号 ;
000 01 1 :读 地 址 (表 号 ) ;
01 01 01 :写 地 址 ( 表 号 );
010 11 0 :写 机 电 同 步 数 (置 表 底 数 );
lx xx xx :厂 商 自 定 义 。
说明:
数据长度(L)为数据域的字节数,用十六进制表示。读数据时L小于或等于64 H,写数据时L小于或等于32 H,L等于零表示无数据域。
数据域(DATA)包括数据标识、序列号和数据,其结构随控制码的功能改变。
校验码(CS)为一个字节,从帧起始符开始到校验码之前的所有各字节进行二进制算术累加,不计超过FFH的溢出值。
传输要求
1 前导字节:在发送帧信息之前,应先发送2-4个字节FEH,
2 传输次序:所有多字节数据域均先传送低位字节,后传送高位字节。
3 传输响应:每次通讯先由主站发出命令帧,被选择的从站根据命令帧的要求做出响应。
读操作
主站发送的序号SER。
主站请求帧:
控制码:CTR_0
数据长度:L = 03H
数据标识:DI0 , DI1
序列号:SER
帧格式:
68H | T | A0 | … | A6 | CTR_0 | 03H | DI0 | DI1 | SER | CS | 16H |
从站正常应答帧:
控制码:CTR_1
数据域长度:L = 03H + m(数据长度)
数据标识:DI0 , DI1
序列号:SER
帧格式:
68H | T | A0 | … | A6 | CTR_1 | L | DI0 | DI1 | SER | N1 | … | Nm | CS | 16H |
从站异常不应答。
读数据时ST0、ST1保留使用,状态不解析
主站请求读编码格式应符合下表的规定:
功 能 | 控制码CTR_0 | 正常应答控制码CTR_1 | 备 注 |
读数据 | 01H | 81H |
主站请求读数据的报文格式及从站正常应答报文格式应符合下表的规定:
序号 | 数据报文 名称 | 数据标识 (DI0 DI1) | 长度 | 从站应答报文 | 备 注 |
1 | 读计量数据 | 901FH | 16H | 数据标识DI,序号SER ,当前累计流量,结算日累积流量,实时时间,状态ST |
数据表达格式应符合下表的规定:
序 号 | 数据格式 | 单位代号(1字节) | 数据长度(字节) | 备注 |
流 量 | ××××.×××× | 有 | 5 | BCD码 |
当前累积流量 | ××××××.×× | 有 | 5 | BCD码 |
结算日累积流量(用00填充) | ××××××.×× | 有 | 5 | BCD码 |
实时时间 (用00填充) | YYYY-MM-DD hh:mm:ss | 无 | 7 | BCD码 |
序列号SER | HH | 无 | 1 | HEX |
数据标识DI | ×××× | 无 | 2 | HEX |
5.2 阀门控制
主站请求帧:
控制码:CTR_0=0x04;开阀Ctr=0x55 、 关阀Ctr=0x99
数据长度:L = 04H
数据标识:DI0=0x17 , DI1=0xA0
序列号:SER
68 | 10 | A0 | A1 | A2 | A3 | A4 | A5 | A6 | A7 | 04 | 04 | 17 | A0 | SER | Ctr | CS | 16 |
返回帧:
控制码:CTR_0=0x84;
数据长度:L = 05H
数据标识:DI0=0x17 , DI1=0xA0
序列号:SER
68 | 10 | A0 | A1 | A2 | A3 | A4 | A5 | A6 | A7 | 84 | 05 | 17 | A0 | SER | sta1 | sta2 | CS | 16 |
开关阀门状态解析:
功 能 | 状态1 (sta1) | 状态2 (sta2) | 备 注 |
关阀成功 | 0x01 | 0x00 | |
开阀成功 | 0x00 | 0x00 |
举例:
读数命令
水表(没有厂商代码)
表号:161014104
发送:FE FE FE FE 68 10 04 41 01 61 01 00 00 01 03 90 1F 00 D3 16
接收:FE FE FE 68 10 04 41 01 61 01 00 00 81 16 90 1F 00 60 00 00 00 2C 60 00 00 00 2C 00 00 00 00 00 00 00 00 00 7E 16
远传水表(有厂商代码:78,33)
表号:2016080454
发送:FE FE FE FE 68 10 54 04 08 16 20 33 78 01 03 90 1F 00 6C 16
接收:FE FE FE FE 68 10 54 04 08 16 20 33 78 81 16 90 1F 00 00 01 00 00 2C 00 00 00 00 2C 00 00 00 00 00 00 00 00 00 58 16
控制命令(关阀)
发送:FE FE FE FE 68 10 54 04 08 16 20 33 78 04 04 17 A0 0A 99 1B 16
接收:FE FE FE FE 68 10 54 04 08 16 20 33 78 84 06 17 A0 0A 99 01 00 9E 16
控制命令(开阀)
发送:FE FE FE FE 68 10 54 04 08 16 20 33 78 04 04 17 A0 0A 55 D7 16
接收:FE FE FE FE 68 10 54 04 08 16 20 33 78 84 06 17 A0 0A 55 00 00 59 16