电力用户用电信息采集系统通信协议报文解析示例
本文解析实例和见附录参考 均来自 《国家电网公司企业标准 Q / GDW 1376.1 — 2012 电力用户用电信息采集系统通信协议 第1部分:主站与采集终端通信协议》
参考文献链接 (Q / GDW 376.1—2009电力用户用电信息采集系统通信协议报文解析示例)[https://blog.csdn.net/wuyu92877/article/details/78715876]
字节格式
帧的基本单元为 8 位字节。链路层 传输顺序为 低位在前,高位在后;低字节在前,高字节在后
英文名词含义:
- BIN 码 : BIN 就是二进制编码。比如 十进制 数的 11, 用 BIN码 表示就是 1011;
- 二进制 1011 转十进制后 数值就是 11
- BCD 码(别称 8421码):BCD 码就是用 四位二进制数 表示 一位十进制数 的编码,比如 **十进制数 11 **用 BCD码 表示就是 00010001;
- 二进制 00010001 转十六进制后 数值就是 11
帧格式
帧格式定义结构
起始字符(68H) | ↑ 固定长度的报文头 ↓ | |
长度 L | ||
长度 L | ||
起始字符(68H) | ||
控制域 C | 控制域 | 用户数据区 |
地址域 A | 地址域 | |
链路用户数据 | 链路用户数据 (应用层) | |
校验和 CS | 帧校验和 | |
结束字符(16H) |
传输规则
- 线路空闲状态为二进制 1
- 帧的字符之间无线路空闲间隔;两帧之间的线路空闲间隔最少需 33 位
- 如按 e) 检出了差错,两帧之间的线路空闲间隔最少需 33 位
- 帧校验和(CS)是用户数据区的八位位组的算术和,不考虑进位位
- 接收方校验
- 对于每个字符:校验起动位、停止位、偶校验位
- 对于每帧
- 检验帧的固定报文头中的开头和结束所规定的字符以及协议.标识位
- 识别 2 个长度 L
- 每帧接收的字符数为用户数据长度 L1+8
- 帧校验和
- 结束字符
- 校验出一个差错时,校验按 c)的线路空闲间隔
- 若这些校验有一个失败,舍弃此帧;若无差错,则此帧数据有效
链路层
长度L
长度 L 包括 协议.标识 和 用户数据长度 ,由2字节组成,如下表格所示:
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
D15 | D14 | D13 | D12 | D11 | D10 | D9 | D8 |
协议标识由图2中D0~D1两位编码表示,定义如下:
- D0=0、D1=0:为禁用;
- D0=1、D1=0:为《Q/GDW 130—2005电力负荷管理系统数据传输规约》使用;
- D0=0、D1=1:为本协议使用;
- D0=1、D1=1,为保留。
- 用户数据长度L1:由D2~D15组成,采用BIN编码,是控制域、地址域、链路用户数据(应用层)的字节总数
- 采用专用无线数传信道,长度L1不大于255;
- 采用网络传输,长度L1不大于16383。
控制域C
控制域C表示报文传输方向和所提供的传输服务类型的信息,定义如下表格所示:
D7 | D6 | D5 | D4 | D3~D0 | |
上行方向 | 传输方向位 DIR | 启动标志位 PRM | 帧计数位 FCB | 帧计数有效位 FCV | 功能码 |
下行方向 | 要求访问位 ACD | 保留 |
应用层
应用层格式
应用层(链路用户数据)格式定义 如下表所示
应用层功能码AFN |
---|
帧序列域SEQ |
数据单元标识1 |
数据单元1 |
…… |
数据单元标识n |
数据单元n |
附加信息域AUX |
应用层功能码
应用层功能码AFN由 一字节 组成,采用二进制编码表示,具体定义如下表所示
应用功能码 AFN | 应用功能定义 |
---|---|
00H | 确认∕否认 |
01H | 复位 |
02H | 链路接口检测 |
03H | 中继站命令 |
04H | 设置参数 |
05H | 控制命令 |
06H | 身份认证及密钥协商 |
07H | 备用 |
08H | 请求被级联终端主动上报 |
09H | 请求终端配置 |
0AH | 查询参数 |
0BH | 请求任务数据 |
0CH | 请求 1 类数据(实时数据) |
0DH | 请求 2 类数据(历史数据) |
0EH | 请求 3 类数据(事件数据) |
0FH | 文件传输 |
10H | 数据转发 |
11H~FFH | 备用 |
报文解析示例
登录帧(终端 -> 主站)
该帧为集中器发送给主站的登录注册帧
帧报文格式
68H |
L |
L |
68H |
C |
A |
AFN=03H |
SEQ |
数据单元标识(DA=0) |
数据单元 |
CS |
16H |
链路接口检测报文格式
登录帧解析
-
登录帧:68 32 00 32 00 68 C9 03 44 04 00 00 02 71 00 00 01 00 88 16
68 起始字符(68H) 32 00 长度 L 数据长度 2 字节,数据类型排列顺序为 低位在前 高位在后,正序数值为 0x0032 ,转换为二进制为 0b0000000000110010
D1~D0 为协议类型。其 0b10 代表为 1376.1 协议使用标志
D15~D2 为长度,为报文的用户数据区长度,对应的二进制值为 0b1100,转换为十进制为12,即原始报文的红色部分32 00 长度 L 内容解释同上,使用 2 个长度表示长度确认比对 68 起始字符(68H) C9 控制域 C 控制域C,二进制数值为 0b11001001 ,对应 D7~D0位 D7
D6
D5
D4
D3~D0
上行方向
传输方向位 DIR
启动标志位 PRM
要求访问位 ACD
保留
功能码
1
1
0
0
1001
D7:传输方向位DIR,D7 位的数值为1,代表此帧报文是由终端发出的 上行报文
D6:启动标志位PRM,D6 位的数值为1,代表此帧报文来自启动站
D5:要求访问位,D5 位的数值为0,ACD=1表示终端有重要事件等待访问,则附加信息域中带有事件计数器EC(EC见本部分4.3.4.6.3);ACD=0表示终端无事件数据等待访问
D4:保留
D3~D0:功能码,对应值为9,当 启动标志位PRM=1 时,代表该帧报文的帧类型为请求/响应帧,服务功能为链路测试,及使用于 AFN=02 的应用层功能码
功能码定义(PRM=1)功能码
帧 类 型
服务功能
0
—
备用
1
发送∕确认
复位命令
2~3
—
备用
4
发送∕无回答
用户数据
5~8
—
备用
9
请求∕响应帧
链路测试
10
请求∕响应帧
请求1级数据
11
请求∕响应帧
请求2级数据
12~15
—
备用
03 44 04 00 00 地址域 地址域分为三部分,03 44 | 04 00 | 00
地址域由 行政区划码A1、终端地址A2、主站地址和组地址标志A3 组成,格式见如下表所示地址域
数据格式
字节数
对应数值
行政区划码A1
BCD
2
03 44
终端地址A2
BIN
2
04 00
主站地址和组地址标志A3
BIN
1
00
第一部分为 行政区划码A1 ,行政区划码按GB 2260—91的规定执行,数据格式为 两字节BCD码 : 03 44,字节顺序为低位在前高位在后,实际数值应为 4403
第二部分为 终端地址A2 ,终端地址A2选址范围为1~65535。A2=0000H 为无效地址,A2=FFFFH 且A3 的 D0 位为“1”时表示系统广播地址,数据格式为 两字节BIN码 : 04 00,字节顺序为低位在前高位在后,实际数值应为 0004
第三部分为 主站地址和组地址标志A3,A3 的 D0 位为终端组地址标志,D0=0 表示终端地址 A2 为单地址;D0=1 表示终端地址 A2 为组地址;A3 的 D1~D7 组成 0~127 个主站地址 MSA。主站启动的发送帧的 MSA 应为非零值,其终端响应帧的 MSA 应与主站发送帧的 MSA 相同。终端启动发送帧的 MSA 应为零,其主站响应帧的 MSA 也应为零。数据格式为 一字节BIN码 : 00,A3 的 D0 位为终端组地址标志,D0=0 表示终端地址 A2 为单地址, D7~D1 为主站地址 MSA,另外该帧是由终端发起的上行报文,终端启动发送帧的 MSA 应为 0,其主站的响应帧也应为 0,这是硬性规定,如果不是 0,则一定是错误的02 应用层功能码 AFN 应用层功能码由 一字节组成,采用二进制编码表示,对应数值为 02H ,代表应用功能为链路接口检测 71 帧序列域 SEQ 帧序列域长度为 1 字节,0x71 转换为二进制为 0b01110001,对应相关标志如下表所示 D7
D6
D5
D4
D3~D0
TpV
FIR
FIN
CON
PSEQ ∕ RSEQ
0
1
1
1
0001
TpV: 帧时间标签有效位,TpV=0,表示在附加信息域中无时间标签Tp;TpV=1,表示在附加信息域中带有时间标签 Tp
首帧标志 FIR: 值为 “1”,报文的第一帧
末帧标志 FIN: 值为 “1”,报文的最后一帧
FIR、FIN 组合状态所表示的含义见下表FIR
FIN
应用说明
0
0
多帧:中间帧
0
1
多帧:结束帧
1
0
多帧:第1帧,有后续帧。
1
1
单帧
请求确认标志位 CON: 在所收到的报文中,CON 为值 “1”,表示需要对该帧报文进行确认;值为“0”,表示不需要对该帧报文进行确认
启动帧序号 PSEQ: 取自 1字节 的 启动帧计数器 PFC 的低 4 位计数值 0~15。
启动帧计数器 PFC:,每一对 启动站 和 从动站之间均有 1 个独立的、由 1 字节构成的计数范围为 0~255 的 启动帧帧序号计数器PFC,用于记录当前启动帧的序号。启动站每发送 1 帧报文,该计数器加1,从 0~255 循环加1递增;重发帧则不加 1。目前该值为 0b0001
响应帧序号 RSEQ:响应帧序号 RSEQ 以启动报文中的 PSEQ 作为第一个响应帧序号,后续响应帧序号在 RSEQ 的基础上循环加 1 递增,数值范围为 0~15
帧序号改变规则
1. 启动站发送报文后,当一个期待的响应在超时规定的时间内没有被收到,如果允许启动站 重发,则该重发的启动帧序号 PSEQ 不变。重发次数可设置,最多 3 次;重发次数为 0, 则不允许重发
2. 当 TpV=0 时,如果从动站连续收到两个具有相同启动帧序号 PSEQ 的启动报文,通常意味 着报文的响应未被对方站收到。在这种情况下,则重发响应(不必重新处理该报文)
3. 当 TpV=0 时,如果启动站连续收到两个具有相同响应帧序号 RSEQ 的响应帧,则不处理第 二个响应
4. 终端能同时处理多个请求00 00 信息点DA 信息点DA 由 信息点单元DA1 和 信息点组DA2 两个字节构成。DA2 采用二进制编码方式表示信息点组,低位在前高位在后,DA1 对位表示某一信息点组的1~8个信息点,以此共同构成信息点标识pn(n=1~2040),当DA1和DA2全为“0”时,表示终端信息点,用 p0 表示;运算规则为 (DA2-1)*8+DA1 对应位的值就是信息点标识 pn ,格式如下表所示 信息点组DA2
信息点元DA1
D7~D0
D7
D6
D5
D4
D3
D2
D1
D0
1
p8
p7
p6
p5
p4
p3
p2
p1
2
p16
p15
p14
p13
p12
p11
p10
p9
3
p24
p23
p22
p21
p20
p19
p18
p17
…
…
…
…
…
…
…
…
…
255
P2040
P2039
P2038
P2037
P2036
P2035
P2034
P2033
01 00 信息类DT 信息类DT 由信息类元DT1 和 信息类组DT2 两个字节 构成。DT2 采用二进制编码方式表示信息类组,DT1对位表示某一信息类组的1~8种信息类型,以此共同构成信息类标识Fn(n=1~248),运算规则为 DT2*8+DT1 对应位的值(8421码) 就是信息类标识Fn,格式如下表所示 信息类组DT2
信息类元DT1
D7~D0
D7
D6
D5
D4
D3
D2
D1
D0
0
F8
F7
F6
F5
F4
F3
F2
F1
1
F16
F15
F14
F13
F12
F11
F10
F9
2
F24
F23
F22
F21
F20
F19
F18
F17
…
…
…
…
…
…
…
…
…
30
F248
F247
F246
F245
F244
F243
F242
F241
…
未定义
88 帧校验和(CS) 帧校验和(CS)是用户数据区的8位位组的算术和,不考虑进位位 16 结束字符(16H) 帧结束符
确认帧(主站 -> 终端)
帧报文格式
68H |
L |
L |
68H |
C |
A |
AFN=00H |
SEQ |
数据单元标识 |
数据单元 |
EC(见《Q/GDW 1376.1—2012 电力用户用电信息采集系统通信协议》 部分4.3.4.6.3) |
Tp(见《Q/GDW 1376.1—2012 电力用户用电信息采集系统通信协议》 部分4.3.4.6.4) |
CS |
16H |
确认/否认报文格式
确认帧解析
-
确认帧:68 32 00 32 00 68 0B 03 44 04 00 00 00 61 00 00 01 00 B8 16
68 起始字符(68H) 32 00 长度 L 数据长度 2 字节,数据类型排列顺序为 低位在前 高位在后,正序数值为 0x0032 ,转换为二进制为 0b0000000000110010
D1~D0 为协议类型。其 0b10 代表为 1376.1 协议使用标志
D15~D2 为长度,为报文的用户数据区长度,对应的二进制值为 0b1100,转换为十进制为12,即原始报文的红色部分32 00 长度 L 内容解释同上,使用 2 个长度表示长度确认比对 68 起始字符(68H) 0B 控制域 C 控制域C,二进制数值为0b00001011,对应d7~d0位
D7:传输方向位 DIR,D7 位的数值为 0,代表此帧报文是由主站发出的下行报文D7
D6
D5
D4
D3~D0
下行方向
传输方向位 DIR
启动标志位 PRM
帧计数位 FCB
帧计数有效位 FCV
功能码
0
0
0
0
1011
D6:启动标志位 PRM,D6 位的数值为 0,代表此帧报文来自从动站
D5:帧计数位 FCB,D5 位的数值为 0,由于帧计数有效位的值为 0,帧计数位无效
D4:帧计数有效位 FCV,D4 位的数值为 0,代表帧计数位 FCB 位无效
D3~D0:功能码,对应值为 11,当启动标志位 PRM=0 时,代表该帧报文的帧类型为请求/响应帧 。服务功能为链路测试,及使用于 AFN=02 的应用层功能码
功能码定义(PRM=0)功能码
帧类型
服务功能
0
确认
认可
1~7
—
备用
8
响应帧
用户数据
9
响应帧
否认:无所召唤的数据
10
—
备用
11
响应帧
链路状态
12~15
—
备用
03 44 04 00 00 地址域 地址域分为三部分,03 44 | 04 00 | 00
地址域由 行政区划码A1、终端地址A2、主站地址和组地址标志A3 组成,格式见如下表所示地址域
数据格式
字节数
对应数值
行政区划码A1
BCD
2
03 44
终端地址A2
BIN
2
04 00
主站地址和组地址标志A3
BIN
1
00
第一部分为 行政区划码A1 ,行政区划码按GB 2260—91的规定执行,数据格式为 两字节BCD码 : 03 44,字节顺序为低位在前高位在后,实际数值应为 4403
第二部分为 终端地址A2 ,终端地址A2选址范围为1~65535。A2=0000H 为无效地址,A2=FFFFH 且A3 的 D0 位为“1”时表示系统广播地址,数据格式为 两字节BIN码 : 04 00,字节顺序为低位在前高位在后,实际数值应为 0004
第三部分为 主站地址和组地址标志A3,A3 的 D0 位为终端组地址标志,D0=0 表示终端地址 A2 为单地址;D0=1 表示终端地址 A2 为组地址;A3 的 D1~D7 组成 0~127 个主站地址 MSA。主站启动的发送帧的 MSA 应为非零值,其终端响应帧的 MSA 应与主站发送帧的 MSA 相同。终端启动发送帧的 MSA 应为零,其主站响应帧的 MSA 也应为零。数据格式为 一字节BIN码 : 00,A3 的 D0 位为终端组地址标志,D0=0 表示终端地址 A2 为单地址, D7~D1 为主站地址 MSA,另外该帧是由终端发起的上行报文,终端启动发送帧的 MSA 应为 0,其主站的响应帧也应为 0,这是硬性规定,如果不是 0,则一定是错误的00 应用层功能码 AFN 应用层功能码由一字节组成,采用二进制编码表示,对应数值为 00H,确认∕否认报文 是对接收报文中需要被确认(CON=1)的回答,以及终端对所请求的数据不具备响应条件的否认回答。该报文为单帧报文,帧序列域的标志位 FIR=1,FIN=1,CON=0 61 帧序列域SEQ 帧序列域长度为 1字节,0x61转换为二进制为 0b01100001,相关标志对应如下表所示
TpV:帧时间标签有效位,TpV=0,表示在附加信息域中无时间标签Tp;TpV=1,表示在附加信息域中带有时间标签TpD7
D6
D5
D4
D3~D0
TpV
FIR
FIN
CON
PSEQ/RSEQ
0
1
1
0
0001
首帧标志 FIR: 值为 “1”,报文的第一帧
末帧标志 FIN: 值为 “1”,报文的最后一帧
FIR、FIN 组合状态所表示的含义见下表FIR
FIN
应用说明
0
0
多帧:中间帧
0
1
多帧:结束帧
1
0
多帧:第1帧,有后续帧。
1
1
单帧
请求确认标志位 CON: 在所收到的报文中,CON 值为 “1”,表示需要对该帧报文进行确认;值为 “0”,表示不需要对该帧报文进行确认
启动帧序号 PSEQ: 取自 1字节 的 启动帧计数器 PFC 的低 4 位计数值 0~15。
启动帧计数器 PFC:,每一对 启动站 和 从动站之间均有 1 个独立的、由 1 字节构成的计数范围为 0~255 的 启动帧帧序号计数器PFC,用于记录当前启动帧的序号。启动站每发送 1 帧报文,该计数器加1,从 0~255 循环加1递增;重发帧则不加 1。目前该值为 0b0001
响应帧序号 RSEQ:响应帧序号 RSEQ 以启动报文中的 PSEQ 作为第一个响应帧序号,后续响应帧序号在 RSEQ 的基础上循环加 1 递增,数值范围为 0~15
帧序号改变规则
1. 启动站发送报文后,当一个期待的响应在超时规定的时间内没有被收到,如果允许启动站 重发,则该重发的启动帧序号 PSEQ 不变。重发次数可设置,最多 3 次;重发次数为 0, 则不允许重发
2. 当 TpV=0 时,如果从动站连续收到两个具有相同启动帧序号 PSEQ 的启动报文,通常意味 着报文的响应未被对方站收到。在这种情况下,则重发响应(不必重新处理该报文)
3. 当 TpV=0 时,如果启动站连续收到两个具有相同响应帧序号 RSEQ 的响应帧,则不处理第 二个响应
4. 终端能同时处理多个请求00 00 数据单元标识中的 pn 信息点DA由信息点元DA1和信息点组DA2两个字节构成。当DA1和DA2全为“0”时,表示终端信息点,用p0表示; 01 00 数据单元标识中的 Fn 信息类DT 由信息类元 DT1 和信息类组 DT2 两个字节构成。转换成正序之后为 0x0001,表示 F1 — 全部确认,该确认没有数据体 B8 帧校验和 帧校验和,红色醒目确认帧 十六进制数值 相加 取后两位值 16 帧结束符
心跳帧(终端 -> 主站)
心跳数据格式
数据内容 | 数据格式 | 字 节 数 |
---|---|---|
终端时钟 | 见附录A.1 | 6 |
帧报文格式
68H |
L |
L |
68H |
C |
A |
AFN=03H |
SEQ |
数据单元标识(DA=0) |
数据单元 |
CS |
16H |
链路接口检测报文格式
心跳帧解析
-
心跳帧: 68 32 00 32 00 68 C9 03 44 04 00 00 02 72 00 00 04 00 8C 16
68 帧起始符 32 00 长度L 32 00 长度L 68 帧起始符 C9 控制域C 03 44 04 00 00 地址域A 02 应用层功能码 AFN=02 72 帧序列域SEQ 00 00 04 00 数据单元标识 pn=0,Fn=3 8C 帧校验和CS是用户数据区的8位位组的算术和,不考虑进位位 16 帧结束符 -
确认帧:68 32 00 32 00 68 0B 03 44 04 00 00 00 62 00 00 01 00 B9 16
68 帧起始符 32 00 长度L 32 00 长度L 68 帧起始符 0B 控制域C 03 44 04 00 00 地址域A 00 应用层功能码 AFN=00 62 帧序列域SEQ 00 00 01 00 数据单元标识 pn=0,Fn=1 B9 帧校验和CS是用户数据区的8位位组的算术和,不考虑进位位 16 帧结束符
知识点
Fn 和 pn定义
Fn | 名 称 及 说 明 | pn |
---|---|---|
F1 | 登 录 | p0 |
F2 | 退出登录 | p0 |
F3 | 心 跳 | p0 |
F4~F248 | 备 用 |