1 前言
DL/T 698.42集中器下行通信协议(Concentrator Downward Communication Protocol)标准规定了电能量信息采集与管理系统中低压集中器与电能表或采集器间数据传输的帧格式、数 据编码及传输规则。相关的企业标准有国家电网公司的Q/GDW376.2集中器本地通信模块接口协议。
本文将以DL/T 698.42-2008通信协议为基础,介绍如何使用格西烽火通信测试软件进行编写测试项目,进行测试集中器本地通信模块。
2 通信协议
2.1 术语
多功能电能表 multi-function watt-hour meter
由测量单元和数据处理单元等组成,除计量有功/无功电能量外,还具有分时、测量需量等两种以上功能,并能显示、存储和输出数据的电能表。
2.2 通信接口
通信参数采用8位数据位,1位停止位,1位偶校验位。
支持串行接口,标准速率为600bps,1200bps,2400bps,4800bps,9600bps,19200bps。
2.3 数据链路层
DL/T 698.42-2008协议为主-从结构的半双工通信方式。集中器为主动站,电能表或采集终端为从动站。每个电能表或采集终端均有各自的地址编码。通信链路的建立与解除均由集中器发出的信息帧来控制。每帧由帧起始符、从动站地址域、控制码、附加信息域、数据域长度、数据域、帧信息校验码及帧结束符8 个域组成。每个域由若干字节组成。
2.3.1 帧格式
帧是传送信息的基本单元。帧格式如下图所示。
2.3.2 控制码
控制码格式如下。
2.3.3 校验码
从帧起始符开始到校验码之前的所有各字节的CRC16校验,CRC16生成多项式为X16+X15+X2+1,采用标准CRC16-MODBUS计算方法,CRC16校验结果为BIN码、两个字节,校验码的低字节先传送、高字节后传送。
2.3.4 传输方式
前导字节:在主站发送帧信息之前,先发送4个前导字节FEH,以唤醒接收方。
传输次序:所有数据项均先传送低位字节,后传送高位字节,发送方按字节进行加33H处理,接收方按字节进行减33H处理。数据传输的举例:电能量值为123456.78kWh,其传输次序如图。
2.4 应用层
DL/T 698.42-2008协议应用层定义了读数据、重读数据、写数据、广播校时、写设备地址、更改通信速率、修改密码、最大需量清零等命令。
下面为读数据为例说明,详细的定义请参考DL/T 698.42-2008协议。
主动站请求帧
功能:请求读数据
控制码:C=01H 无附加信息域数据帧,C=21H 有附加信息域数据帧
数据域长度:L=02H
无附加信息域帧格式:
从动站正常应答
功能:从动站正常应答
控制码:C=81H,无附加信息域数据帧,C=A1H,有附加信息域数据帧
数据域长度:L=02H+m(数据长度)
无附加信息域帧格式:
从动站异常应答帧
功能:从动站收到非法的数据请求或无此数据
控制码:C=C1H 无附加信息域数据帧,C=E1H 有附加信息域数据帧
数据域长度:L=01H
无附加信息域帧格式:
3 测试项目编制
3.1 基本协议编制
3.1.1 协议项分类
利用格西烽火软件的协议激励的功能,把DL/T 698.42-2008通信规约按照树形结构分类组织,使得管理上更加有条理,查找也更加方便。
首先,根据DL/T 698.42-2008通信协议附录A的数据标识编码表进行协议分类,建立读电能量数据、读最大需量数据、读最大需量发生时间数据、读变量数据、读参变量数据、写参变量数据、读负荷纪录数据以及控制命令等8个基本协议集。
然后,根据基本协议集中的协议的数量多少,继续细分子协议集,例如读电能量数据基本协议集包含的协议太多,可以进一步分为读当前电能量数据,读上1个月电能量数据等数个子协议集,以达到有效管理的目的。
3.1.2 协议项编制
根据协议帧格式,为了方便控制和显示,把协议项的数据固定拆分为帧起始符、地址、帧起始符、控制码、数据长度、数据标识、校验码及帧结束符8个部分,动态增减的部分是数据域,可以根据具体命令进行进一步拆分。
下面以“读当前正向有功总电能”命令为例说明协议项编制方法。
主站请求帧
从站正常应答帧
从站异常应答帧
3.1.3 公共协议库
通过对基本协议项的编写、测试和验证,建立一个由基本协议项组成的公共协议库。
3.2 测试用例编制
测试用例(Test Case)是为某个特殊目标而编制的一组测试输入、执行条件以及预期结果,以便测试某个程序路径或核实是否满足某个特定需求。通信协议测试属于黑盒测试,可以采用黑盒测试常用的等价类划分法、边界值分析法、错误推测法、因果图法等基本方法来设计测试用例。
测试方案设计完成后,格西烽火软件能够利用编制完成的公共协议库,采用搭积木的方式,通过复制和粘贴命令即可非常快捷的创建测试用例。测试用例的组织方式通常是根据测试方案的设计层次采用树形结构分类组织。
4 测试方法
4.1 测试系统构成
4.2 单项测试与整体测试
格西烽火软件支持单项测试和整体测试,一次测试一个测试项或者整个测试集。执行的方法是选中需要测试的测试项或者测试集,然后执行激励命令即可。
下面以执行“读当前正向有功总电能”测试项为例说明。
协议数据解析界面
协议激励报告界面
4.3 单次测试与循环测试
格西烽火软件支持单次测试和循环测试,能很好满足各种调试测试和性能测试的需求。执行的方法是选中需要测试的测试项或者测试集,然后执行激励或循环激励命令即可。
4.4 故障注入测试
格西烽火软件支持直接激励和协议激励同时运行,能很好满足各种异常测试和故障注入测试的需求。实现的方法是打开一个直接激励项目,作为故障信息发生器运行,然后再执行协议激励测试,即可测试在有非法信息注入被测电能表的时候,正常的协议命令是否能够正确执行。
4.5 脚本控制测试
格西烽火软件支持协议脚本,能够使用C#、VB、Jscript三种语言控制测试流程,设置和管理通信参数和协议帧数据,调用插件扩展测试功能。
例如,DL/T645-2007协议的“更改通信速率”命令,在命令执行完毕后,电能表的通信速率更改了,如果要不间断连续测试,必须使用协议脚本在OnRespond方法中更改通信接口的波特率。
协议脚本能够调用基于Microsoft .NET Framework的托管代码组件扩展测试功能,使用插件非常方便,只要把编译好的组件拷贝到Plugins目录中,就可以直接在脚本的函数中调用插件所提供的公共服务。
例如,使用例子插件ParallelPort,包含Geshe.Utils命名空间,即可直接使用ParallelPort.Read方法。