1 前言
IEC60870-5-102电力系统电能累计量传输通信协议规定了电能量计量终端与电网各级电能量计量系统主站的电能量、遥测量等有关数据的传输规约。相关的国家标准有DL/T 719-2000通信协议。
本文将以DL/T 719-2000通信协议为基础,介绍如何使用格西烽火通信测试软件进行编写测试项目,进行测试符合DL/T 719-2000电力系统电能累计量传输通信协议的设备。
2 通信协议
2.1 术语
电能量integrated total;电能计数器读数counter reading
对1个功率量按时间进行累计。
电能量数据终端设备integrated total data terminal equipment
此设备刷新在潮流传输点所交换的电能量并将此信息传输到远方。
电能量数据保护的校核signature
电能量的全部字节及其相应的标识域的模256算术和。
控制方向control direction
从控制站(主站)到被控站(子站)的传输方向。
监视方向monitoring direction
从被控站(子站)到控制站(主站)的传输方向。
2.2 通信接口
支持串口,异步传输方式,11位,其中启动位为二进制0,数据位8位,1个偶校验位,1个停止位。标准速率为2400bps,4800bps,9600bps,19200bps,38400bps,57600bps;
支持以太网口,基于TCP/IP传输。
2.3 数据链路层
DL/T 719-2000协议为主-从结构的半双工通信方式。启动仅限于某一个固定点( 启动站或主站 ), 而电能累计量数据终端设备位于计数站,此站始终为从动站。通信链路的建立与解除均由主站发出的信息帧来控制。
2.3.1 帧格式
帧是传送信息的基本单元。允许采用固定帧长和可变帧长,允许单个控制字符帧。
帧格式如下图所示。
单字符
定长帧
变长帧
说明:
1)单字符用于子站向主站传输的确认(肯定或否定);
2)控制域是用来区别不同的帧和数据传输方向的单字节,详见标准;
3)地址域是链路地址(一般是RTU编号),2字节,低字节在前,高字节在后;
4)帧校验是用户数据区的各字节的算术和对256的模;
5)变长帧中的L为用户数据区的长度,2个L相等;
6)变长帧中的ASDU为应用服务数据单元,详见标准。
2.3.2 控制域
控制域包含了传输方向、传输状态以及链路功能类型等信息,1字节,各个位定义如下:
主站侧
FCB位:主站确认子站已收到命令帧并发送下一帧命令帧的时候,要将FCB位取反,表示是一帧新的命令帧;否则,保持FCB位不变,表示要求子站重发上一帧数据。
FCV位: FCV位取0,表示不需要考虑FCB为是否取反,此时FCB位应该取0;反之,FCV位取1,表示FCB位取反有效,子站通过FCB位的状态判断下一步做什么,重发或者是继续。
功能码:表示链路功能命令,即子站从链路层判断需要执行什么操作。功能码0x00,0x09,0x0A,0x0B用于定长帧;功能码0x03用于变长帧,下发召唤数据命令。
I级用户数据:历史数据;
II级用户数据:最近一次采集的电能数据;如果在下一次采集电能数据之前再次召唤II级用户数据,子站应该返回“没有所召唤的数据”,即,II级用户数据上传之后就不再是II级用户数据了。
子站侧
ACD位:ACD位取1表示子站有I级用户数据等待上传,主站接收数据完成之后应该发送召唤I级用户数据命令;反之,ACD位取0表示子站待传数据已全部上传完成。
DFC位:DFC位是数据流控制位,取0表示子站可接收数据,取1表示子站缓冲区已满,无法接收数据。
功能码0x00,0x01,0x09,0x0B用于定长帧;功能码0x08用于变长帧,上传数据。
2.3.3 传输方式
传输次序:所有数据项均先传送低位字节,后传送高位字节。
2.4 应用层
标准规定每一个链路规约数据单元(LPDU)只有一个应用服务数据单元(ASDU)。应用服务数据单元由数据单元标识符和一个或多个信息体所组成。数据单元标识符在所有应用服务数据单元中常有相同的结构,一个应用服务数据单元中的信息体常有相同的结构和类型,它们由类型标识域所定义。
ASDU结构如下图所示。
ASDU类型标识1字节,在主站侧表示的是主站召唤的数据类型,例如子站系统时间、子站单点信息、子站电能数据,等等;在子站侧表示的是子站上传的信息元素的类型。以下为部分ASDU类型标识的定义。
主站侧
子站侧
3 测试项目编制
3.1 基本协议编制
3.1.1 协议项分类
利用格西烽火软件的协议激励的功能,把DL/T 719-2000通信规约按照树形结构分类组织,使得管理上更加有条理,查找也更加方便。
首先,根据DL/T 719-2000通信协议的控制功能码,建立命令模版协议集,作为基本规约模版使用,建立复位通信单元、下发数据、召唤链路状态、召唤1级用户数据、召唤1级用户数据(带公共时标)、召唤2级用户数据。
然后,根据ASDU类型标识编码表进行协议分类,建立基本命令集。一条命令由数条子命令构成,命令的执行是一个数个回合的交互过程,例如“复位链路单元”命令。
按照树形结构分类组织的规约项目结构如图所示。
3.1.2 协议项编制
根据协议帧格式,为了方便控制和显示,把协议项的数据按照功能进行拆分。
例子1:命令模版的“复位通信单元”命令编制方法。
复位通信单元-主站请求帧
复位通信单元-从站应答帧
例子2:命令模版的“召唤1级用户数据”命令编制方法。
召唤1级用户数据-主站请求帧
召唤1级用户数据-从站有数据应答帧
召唤1级用户数据-从站没有数据应答帧
基本命令集的命令是由子命令构成的,子命令从命令模版中引用并作修改。
例子3:基本命令的“复位链路单元”命令编制方法。
首先,创建一个协议集,命名为“复位链路单元”;
其次,通过复制和粘贴功能,从命令模版中把“召唤链路状态”和“复位通信单元”命令复制到协议集“复位链路单元”中;
最后,在每一个子命令的“地址域”中填入目标设备地址即可。
3.1.3 公共协议库
通过对基本协议项的编写、测试和验证,建立一个由基本协议项组成的公共协议库。
3.2 测试用例编制
测试用例(Test Case)是为某个特殊目标而编制的一组测试输入、执行条件以及预期结果,以便测试某个程序路径或核实是否满足某个特定需求。通信协议测试属于黑盒测试,可以采用黑盒测试常用的等价类划分法、边界值分析法、错误推测法、因果图法等基本方法来设计测试用例。
测试方案设计完成后,格西烽火软件能够利用编制完成的公共协议库,采用搭积木的方式,通过复制和粘贴命令即可非常快捷的创建测试用例。测试用例的组织方式通常是根据测试方案的设计层次采用树形结构分类组织。
4 测试方法
4.1 测试系统构成
4.2 单项测试与整体测试
格西烽火软件支持单项测试和整体测试,一次测试一个测试项或者整个测试集。执行的方法是选中需要测试的测试项或者测试集,然后执行激励命令即可。
下面以执行“103读电能累计量数据终端设备的当前系统时间”测试项为例说明。
协议数据解析界面
协议激励报告界面
4.3 单次测试与循环测试
格西烽火软件支持单次测试和循环测试,能很好满足各种调试测试和性能测试的需求。执行的方法是选中需要测试的测试项或者测试集,然后执行激励或循环激励命令即可。
4.4 故障注入测试
格西烽火软件支持直接激励和协议激励同时运行,能很好满足各种异常测试和故障注入测试的需求。实现的方法是打开一个直接激励项目,作为故障信息发生器运行,然后再执行协议激励测试,即可测试在有非法信息注入被测电能表的时候,正常的协议命令是否能够正确执行。
4.5 脚本控制测试
格西烽火软件支持协议脚本,能够使用C#、VB、Jscript三种语言控制测试流程,设置和管理通信参数和协议帧数据,调用插件扩展测试功能。
协议脚本能够调用基于Microsoft .NET Framework的托管代码组件扩展测试功能,使用插件非常方便,只要把编译好的组件拷贝到Plugins目录中,就可以直接在脚本的函数中调用插件所提供的公共服务。
例如,使用例子插件ParallelPort,包含Geshe.Utils命名空间,即可直接使用ParallelPort.Read方法。