1 前言
Q/GDW 376.1主站与采集终端通信协议(Master Station Communication With Data Acquire terminal Communication Protocol)规定了电力用户用电信息采集系统主站和采集终端之间进行数据传输的帧格式、数据编码及传输规则。相关的国家标准有DL/T 698.41主站与电能信息采集终端通信协议。
本文将以Q/GDW376.1-2012协议为基础,介绍如何使用格西烽火通信测试软件进行编写测试项目,进行调试和测试采集终端。
2 通信协议
2.1 术语
终端地址terminaladdress
系统中终端设备的地址编码,简称终端地址。
主站地址masterstationaddress
主站中具有通信需求的对象(如工作站、应用功能模块等)的编码。
测量点measuredpoint
指可以测量出唯一的一组电气量值的测量装置与终端的顺序电气连接点,当物理上相同的一个电气连接点被多个装置所测量,或者被一个装置所测量但通过多种方式被传递到终端时,按照多个测量点计,每个测量点具有唯一的逻辑定位编码,是该装置在终端的参数配置、数据应用的唯一对象标识。
信息点informationpoint
表示参数或数据的对象信息,如测量点、总加组、控制轮次、直流模拟量分路等。
信息类informationtype
表示参数或数据的分类信息,一个信息类可以是一种参数或数据,也可以是一组参数或数据的集合。
2.2 通信接口
1)TCP和UDP的传输接口:该类接口的登录链接和心跳检测采用链路测试服务,链路测试周期可设定。
2)串行通信传输接口:字节传输按异步方式进行,它包含8个数据位、1个起始位“0”、1个偶校验位P和1个停止位“1”。
3)红外通信传输接口:采用红外通信方式实现当地数据传输时,字节格式与串行通信传输格式相同,在发送数据时,在有效数据帧前加1~4个FEH作为前导码。
2.3 数据链路层
Q/GDW 376.1-2012协议支持非平衡传输和平衡传输规则。本方案主要描述非平衡传输方式。
2.3.1 帧格式
帧是传送信息的基本单元,采用GB/T18657.1—2002的6.2.4 FT1.2异步式传输帧格式。
帧格式如下图所示。
长度L定义
D0=0、D1=1,用户数据长度L1由D2~D15组成,采用BIN编码,是控制域、地址域、链路用户数据(应用层)的字节总数。
控制域C定义
DIR=0,表示此帧报文是由主站发出的下行报文; DIR=1,表示此帧报文是由终端发出的上行报文。
PRM=1,表示此帧报文来自启动站;PRM=0,表示此帧报文来自从动站。
FCV=1,表示FCB位有效,启动站向同一从动站传输新的发送/确认或请求/响应传输服务时,将FCB取相反值;FCV=0,表示FCB位无效。
ACD=1表示终端有重要事件等待访问,则附加信息域中带有事件计数器EC;ACD=0表示终端无事件数据等待访问。
地址域A定义
2.3.2 传输方式
传输次序:所有数据项均先传送低位字节,后传送高位字节。
传输服务类别:
2.4 应用层
Q/GDW376.1-2012应用层(链路用户数据)格式定义
应用层功能码AFN的定义
其他数据项的定义详见Q/GDW376.1-2012协议。
3 测试项目编制
3.1 基本协议编制
3.1.1 协议项分类
利用格西烽火软件的协议激励的功能,把Q/GDW376.1-2012通信规约按照树形结构分类组织,使得管理上更加有条理,查找也更加方便。
首先,根据Q/GDW376.1-2012通信协议应用层功能码的定义进行协议分类,建立AFN01至AFN10等15个基本协议集。
然后,在基本协议集中添加具体的协议。
3.1.2 协议项编制
根据协议帧格式,为了方便控制和显示,把协议项的数据固定拆分为帧起始符、长度、控制域、地址域、应用功能码、帧序列域、数据单元标识、校验码及帧结束符9个部分,动态增减的部分是数据单元域,可以根据具体命令进行进一步拆分。
例子1:“AFN0D-F1正向有/无功电能示值、一/四象限无功电能示值”命令编制方法。
主站下行请求帧
终端上行应答帧
例子2:“AFN02-F3心跳”命令(主站为从动的命令)编制方法。
终端上行请求帧
主站下行确认应答帧
3.1.3 公共协议库
通过对基本协议项的编写、测试和验证,建立一个由基本协议项组成的公共协议库。
3.2 测试用例编制
测试用例(Test Case)是为某个特殊目标而编制的一组测试输入、执行条件以及预期结果,以便测试某个程序路径或核实是否满足某个特定需求。通信协议测试属于黑盒测试,可以采用黑盒测试常用的等价类划分法、边界值分析法、错误推测法、因果图法等基本方法来设计测试用例。
测试方案设计完成后,格西烽火软件能够利用编制完成的公共协议库,采用搭积木的方式,通过复制和粘贴命令即可非常快捷的创建测试用例。测试用例的组织方式通常是根据测试方案的设计层次采用树形结构分类组织。
4 测试方法
4.1 测试系统构成
4.2 单项测试与整体测试
格西烽火软件支持单项测试和整体测试,一次测试一个测试项或者整个测试集。执行的方法是选中需要测试的测试项或者测试集,然后执行激励命令即可。
下面以执行“AFN09-F1终端版本信息”测试项为例说明。
协议数据解析界面
协议激励报告界面
4.3 单次测试与循环测试
格西烽火软件支持单次测试和循环测试,能很好满足各种调试测试和性能测试的需求。执行的方法是选中需要测试的测试项或者测试集,然后执行激励或循环激励命令即可。
4.4 故障注入测试
格西烽火软件支持直接激励和协议激励同时运行,能很好满足各种异常测试和故障注入测试的需求。实现的方法是打开一个直接激励项目,作为故障信息发生器运行,然后再执行协议激励测试,即可测试在有非法信息注入被测电能表的时候,正常的协议命令是否能够正确执行。
4.5 脚本控制测试
格西烽火软件支持协议脚本,能够使用C#、VB、Jscript三种语言控制测试流程,设置和管理通信参数和协议帧数据,调用插件扩展测试功能。
协议脚本能够调用基于Microsoft .NET Framework的托管代码组件扩展测试功能,使用插件非常方便,只要把编译好的组件拷贝到Plugins目录中,就可以直接在脚本的函数中调用插件所提供的公共服务。
例如,“AFN09-F1终端版本信息”命令的请求帧“时间标签-启动帧时标”的时间取系统时间。
4.6 从站模拟测试
格西烽火软件支持从动设备(即被动等待请求、发送响应的设备)的激励仿真。
下面以 “AFN02-F3心跳”命令为例说明。协议项的编制方法参考3.1节,测试方法是选中被测命令,执行循环激励命令,等待本地通信模块发起命令,接收到命令后,软件自动解析和根据测试用例的需求响应。