国网DLT698.45协议——采集系统、数据交换(三)
国网DLT698.45协议——采集系统、数据交换(三)
分层结构
-
物理层
规定了通信单元或其他终端设备与多功能电表的通信接口,接口的物理与电气特性。常见的物理层传输方式有对于RS485、红外、载波通信等通信信道。 -
数据链路层
将数据包装成可传输的帧格式。
1、根据通信配置参数完成端口的初始化配置,通信状态初始化为准备接收状态,初始化相关计数器及缓冲区指针。
2、链路层及控制子模块负责通信数据的收发控制,各类超时问题的处理。无通信数据接收时,定时初始化通信端口。
3、完成协议帧的解析及应答。 -
应用层
包含交互的数据报文,是唯一包含服务组件的协议层,应用层协议数据单元(APDU)通过数据链路层将数据包装成可传输的帧格式。应用层数据单元(APDU)由各种数据类型(结构体)组成。
1、根据协议查找结果,对协议数据对象列表中的数据进行读写操作,同时作相应的数据格式转换处理。
2、对于显示模块输出显示信息数据及显示格式。
3、应用层参数合法性检查模块主要是为了检验参数是否符合规则。
应用层详解
应用层服务对象是构成客户机和服务器应用层的主要组件。使用数据链路层提供的服务向应用进程提供服务。
应用层服务:预连接服务(C/S均适用);客户机应用层服务(C适用);服务器应用层服务(S适用);安全传输服务(C/S均适用)。
应用层服务对象:
(1)预连接 ———— 满足最低的采集要求 eg:登录、心跳
(2)应用连接 ———— 访问服务器接口类对象
(3)数据交换 ———— C/S
(1)预连接 (Link.request/response/indication/confirm)
对于本地通信信道 如:RS485、红外等。当物理连接建立时,默认预连接的通道即存在,不需要
额外的建立以及预连接管理。
——————————————————————————————————————————————————————————————————————
适用于交换网络传输信道 如:以太网/GPRS;
需通过登录确认身份;
需心跳来维持链路活动状态;
本地信道 如:RS232/红外 不需要该服务;
利用协议数据单元携带的四个时间标签,利用服务器对终端设备进行精确对时。
(2)应用连接(CONNECT.request/response/indication/confirm)———— 建立
(RELEASE.request/response/indication/confirm/notification) ———— 断开
其中 notification 由服务器应用进程调用,通知客户机应用进程连接因超时而失效,将被
断开,此服务不需要客户机做任何响应。
(3)数据交换:
数据交换是通过逻辑名引用来访问接口对象的属性或方法。
请求/响应类型:读取(GET)、设置(SET)、操作(ACTION)、代理(PROXY)
通知/确认类型:上报(REPORT)
建立应用连接
客户机引用进程通过CONNECT.Request APDU(基于预连接的底层连接)发送请求到服务器应用层;再由其CONNECT.indication到服务器应用进程;接着由其CONNECT.Response(同理,构建APDU)并通过现有的预连接发送至远方客户机应用层;再由其CONNECT.confirm返回至客户机应用进程完成连接。
交互过程
服务器 <———————————————————————————— 客户机
(终端) ————————————————————————————> (主站)
CONNECT—Response CONNECT-Request
建立应用链路的请求(Request)始终由客户机发起。
终端通过建立对应连接服务的响应(Response)来应答。
功能设计
电能表(终端同理)通信地址采用12位BCD码,不足高位补0至12位。
电能表支持广播校时:
(1)支持广播地址的广播校时;
(2)支持实际地址点对点的广播校时,电能表应答以确认广播校时是否成功。
筛选
理论上所有array类型的对象,均属于记录型对象(可能包含多行多列、多行一列、多列一行,详细可以查阅国网698协议系列的文章(二)),均支持筛选。
记录型对象属性:
筛选通过GetRequestRecord服务进行;其中筛选条件:定义为RSD,由十种筛选表达式构成。
筛选表达式——针对记录的某一列(支持筛选的列,必须具有名称即OAD)。
-
远程升级
升级方式:分帧方式、分块方式、FTP方式
分块方式:需切换终端IP/主站提供透明通道。
分块升级:
-
透传任务
两种实现方式:(1)代理服务:实时一问一答方式;
(2)采集监控任务:终端对透明方案任务执行的结果进行存储,终端等待被访问获取。
采集任务与采集方案的关系
- 电能表广播校时
广播校时
两种方式:(1)广播地址;(2)实际地址
对象4000 属性2 授时模式:
(1)主站授时 —— 终端仅能接收主站
(2)终端精准校时 —— 除主站外,还支持利用预连接服务自动校时
(3)北斗/GPS —— 除主站外,还支持北斗/GPS自动校时
广播地址:
服务器地址 SA = C0AAH
电能表无需应答
实际地址:
SA 地址为电能表实际地址
根据时钟采集任务的原始数据 “采集启动时间” “电表时间” “采集成功时间”
计算终端和电表的时间误差,选取误差在阈值范围内的表地址集合,查询路由模块的路由
延时,修正校时时间,发送广播校时指令。
- 主动上报
事件上报:服务器操作事件接口类中事件对象的有效标识,上报标识。置成有效且上报,产生事件可上报至主站
数据上报:通过采集监控类中的任务配置来实现上报。
上报:(1)处理事件采集方案;
(2)普通任务采集方案;
(3)透明方案;
(4)实时监控采集方案的数据。
- 负荷管理
功率控制和电量控制所采用的功率数值和电量数值都是基于总加组的。
所以首先对总加组对象相关属性进行配置。
其中总加组对象涉及脉冲计量对象的配置和脉冲输入设备对象的使用。 - ESAM安全认证
13版终端抄读面向对象协议电表采用明文+MAC抄读,终端不验证电表应答上来的MAC。
MAC的计算方式:明文+随机数进行MD5计算,结果再用ESAM进行加密处理得到MAC值。
ESAM即嵌入式安全控制模块。
安全传输:对应用层协议数据单元中的客户机APDU、服务器APDU进行加密/签名后再传输。
如:请求为明文+随机数RN(Get-Request),应答为明文+MAC (抄读数据)。
安全设计:
1、明文+随机数抄读模块;
2、应用连接模块;
3、密文+MAC方式传输模块。
对象标识符OI
由两字节组成。编码16进制表示,未定义对象标识编码皆保留。
信息交互流程
当终端/电能表执行主动上报时,如果启用安全模式参数,则需使用SECURITY-Request服务 ,主站使用 SECURITY-Response进行响应 ;否 则 ,使 用纯明文上报 ,即使用REPORT-Notification服务进行上报。
- 终端、电能表抄读获取MAC流程
- 终端/电能表主动上报流程
- 终端/电能表验证MAC流程
- 终端解密流程
- 终端/电能表加密流程
- 终端抄读电能表
终端抄读电能表采用明文+MAC的方式抄读,抄读步骤如下:
(1)终端将抄读命令和终端随机数下发给电能表;
(2) 终端根据安全模式参数判断命令中的待读取的0I对应的安全模式是否明文+MAC可读,若非明文+MAC可读,返 回否认 APDU;
(3)电能表获得抄读数据和随机数,将抄读数据和随机数组织命令发送给电能表安全芯片;
(4)电能表安全芯片返回响应的明文和 MAC数据 ,并将该数据组织 APDU发送给终端;
(5)终端根据电能表 ESAM序列号、随机数、明文数据和 MAC数据发送到终端安全芯片进行校验。
终端抄读电能表流程如下图:
报文编解码
主站 ————————————————————————————————————————>电能表(报文)
主站 ——————————————> 采集终端 ————————————————>电能表
通过编解码程序将报文转化为json。进行可视化显示
报文结构分开 一部分 一部分的处理。
(数据域减0x33,起始符和结束符匹配,校验码计算)
根据控制域定义解析报文相关属性。
对象标识(OI)解析报文数据域。
每部分的解析根据预先定义号的JSON结构赋值到对应的字段上。
以上就是目前本人所掌握的国网698协议的相关部分内容,若有机会之后也会继续分享做这方面协议的心得和体会,但是目前就告一段落了,希望大家可以一起交流学习。