基于IR46智能电能表软件分离测试方法研究
2016-12-12珍谢永明曾仕途许
王 珍谢永明曾仕途许 凯
(华立科技股份有限公司,浙江 杭州 310023)
基于IR46智能电能表软件分离测试方法研究
王珍1谢永明1曾仕途2许凯2
(华立科技股份有限公司,浙江 杭州 310023)
电能表涉及法定计量和金额结算,属于国家法制管理的计量器具。其软件的层次性、可靠性和合法性,日益受到各国的高度重视。IR46是对各国电能表法制计量的统一建议。国家标委会已明确要将IR46纳入国标。软件分离是IR46建议中的重点及难点。本文分析了电能表嵌入式软件的现状并针对IR46的建议,采用软件故障注入技术,探讨了合理实施电能表嵌入式软件分离测试的方法。
嵌入式软件;智能电能表;IR46;软件分离;故障注入
OIML TC12于2014年发布新版IR46,OIML建议能够反应适应立法的不断变化和保护消费者利益的需求。国家标委会已明确要将IR46纳入国标。国网和南网以后也将在国标基础上建立企标。我国是电能表的生产大国,IR46新文件的要求将对我国电能表的计量、生产和使用产生巨大影响。
1. 智能电能表嵌入式软件现状
随着国家智能电网的快速发展,智能电能表快速推广应用,市场对智能电能表产品质量和智能化程度要求越来越高。
智能电能表较传统电能表增加了许多新功能,这些功能的集成不仅增加了电能表软件的复杂性,而且对电能表软件的系统平台提出了更高的要求。目前,电能表型式评价中采用的实验方法和评价标准基本满足了检测电能表硬件的需求,相较而言对电能表软件评价较少。智能电能表嵌入式软件现状是,计量和其他功能一体化设计,导致其他部分软硬件的设计更改难免影响到计量性能。而其他功能的损坏或失效可能导致计量部分损坏或失效。电能表是法定计量器具,为了保证计量的合法性,任何更计量相关的更改都需要通过质量监督局的测试和认定。
2. IR46中智能电能软件型式评价简介
2.1计量性能的保护
在计量软件评价项目中,IR46要求对智能电能表对计量性能予以保护。IR46的计量性能保护部分包括软件标识、防误操作、防欺诈、参数保护、电子设备和组件分离、软件分离、数据存储和通信传输参数保护、自动存储、传输延时和传输中断、时间戳、维护和重新配置11个方面内容。
通过文档说明或测试验证来对这11个方面的内容进行形式评价。IR46计量性能保护要求功能部分可从计量基表分离出来,可进行升级。同时要求功能部分的升级不影响计量性能,升级过程中计量部分应正常工作,升级中断或失败时可恢复到原有版本,功能的升级可追溯。
2.2IR46中软件部分的分离
所有执行法制相关功能或包含法制相关数据域的软件模块(程序、子程序、对象等)构成仪表的法制相关软件部分,这些都将含有其标识。如果执行法制相关功能的软件模块无标识,则整个软件视为法制相关。如果法制相关软件部分与其他软件部分交互,应定义软件接口。所有交互只能通过这个接口进行。法制相关软件部分、接口应在文档中明确说明文档中明确说明组成软件接口的数据域,包括从法制相关部分输出到接口数据域的代码,以及由从接口输入到法制相关部分的代码必须明确定义并在文档中说明。声明的软件接口不得被绕过而直接读写。在软件法制相关部分,所有启动功能或数据交换的每个指令应有明确任务。通过软件接口交互的指令应声明并在文档中说明。只有文档中声明的指令才允许通过软件接口激活。
3. 基于IR46软件分离实现方案规划
3.1IR46软件分离实现分析
IR46要求电能表中的法制计量部分不允许受仪表其他功能的影响,同时电能表远程升级无论成功与否都不能影响电能表正常计量。因此如何界定计量部分组件成为目前首要任务。智能电能表旨在通过考虑时间和存储结果的功率积分连续地测量电能,因此电能计量及RTC时钟部分就属于法制计量组件。目前电能表都已有成熟通信协议,基表只需设计统一的带保护的外置通信模块接口,保证当更新模块或采用更先进通信技术模块时不需变动或更换基表。因此通信协议栈及相关组件可不属于法制计量相关部分。
考虑到企业生产检定、局方验收及现场运行需要等情况,且标准中明确要求软件标识应和软件本身紧密关联,应在起动或操作时在显示器上显示出来或者通过指令展示出来,因此建议法制计量及相关组件提供相应的显示属于法制计量组件,如有/无功电能、最大需量及时间的循显。基于现场故障分析需求与法制计量相关的事件记录(如修改时钟、总电能清零、软件升级追溯等)属于计量部分。
3.2IR46软件分离平台规划
电能表软件平台设计为满足需求应采用积木式、模块化的开发设计模式,而模块化是整个表计系统软件的一个关键属性,也是实现软件分离的基本。根据IR46软件分离要求,如将计量部分以及计量相关组件设计为最小“系统”基表,则电能表软件可分为3个区:计量相关基表软件、功能软件、功能软件备份。为保降低软件复杂性,同时提高软件可靠性,软件设计应采用航空业嵌入式软件可靠性技术,对计量基表系统平台软件进行保护,使得功能软件的BUG导致的功能程序混乱或失效不影响计量基表系统平台。
4.基于IR46软件分离测试方案探讨
4.1IR46软件分离测试方法
智能电能表程序是典型的嵌入式程序,由于嵌入式系统的自身特点,如实时性、内存不丰富、I/O通道少等,目前没有专门应用于电能表IR46软件分离要求的检测方法与通用的检测平台。因此需要对软件进行深入测试寻找其他办法来进一步测试。如基于错误的测试,软件故障注入测试,探索性测试等非正常测试。为满足IR46对软件分离要求运用故障注入技术搭建故障注入与分析平台,通过对该平台注入软件故障,验证计量基表独立性及容错能力。
软件故障注入方法完全通过软件的方法来实现故障注入测试,通过在编译时或运行时动态修改执行程序,在程序执行过程中改变处理器的正常状态,不需要任何硬件设施就可以实现软件故障的模拟。
由于功能软件可通过通信口升级,所以可通过人为在功能软件注入故障,将带有故障功能程序升级到表内,进行IR46软件分离测试,验证计量软件独立性及容错性。注入故障包括:外设越权访问、内存越界访问、内存泄漏、修改堆栈、PC跑飞等。
4.2IR46软件分离测试方案
4.2.1功能程序越权访问外设
(a)电能表设计中,选用SPI接口或UART接口专用计量芯片,来完成基本的能量累积、电压测量、电流测量、功率测量、频率测量。通过在功能程序中编写SPI或UART驱动,并通过该驱动改写计量芯片数据,将故障程序通过通信口升级到电能表,来验证该越权外设访问是否干扰到计量程序。
(b)电能表设计中,选用IIC接口的EEPROM、DATAFLASH、铁电等存储芯片来存储校表数据和累计电量数据。选用IIC接口实时时钟芯片实现日历功能。可通过在功能程序中编写IIC驱动,并通过该驱动改写任意外部存储芯片数据和实时时钟芯片数据,将故障程序通过通信口升级到电能表,来验证该越权外设访问是否干扰到计量程序和实时时钟。
(c)电能表设计中,通过采集计量芯片脉冲或累计能量产生电能脉冲,并通过MCU IO口将能量脉冲发出供准确度校验。可通过在功能程序中编写随意控制MCU IO脉冲口。将故障程序通过通信口升级到电能表,来验证该越权外设访问是否干扰到计量准确度。
4.2.2功能程序内存越界访问
在功能程序中通过任意绝对地址访问来修改任意内存数据,将故障程序通过通信口升级到电能表,来验证该内存越界是否干扰到计量准确度、电流计量、测量数据和实时时钟数据。
4.2.3功能程序内存泄漏
电能表通常使用C语言进行设计,可通过malloc()函数任意申请堆内存,不使用配套的free()进行堆内存释放。将故障程序通过通讯口升级到电能表,来验证该内存泄漏是否干扰到计量准确度、电流计量、测量数据和实时时钟数据,或造成复位或死机。
4.2.4恶意修改堆栈和PC跑飞
电能表通常使用C语言进行设计,程序中SP指针可见,通过恶意修改SP指针。或当程序调用子程序时,会将调用后的下一条指令PC压入堆栈,程序返回时从堆栈中的PC恢复,继续调用前的下一条指令执行。可在子程序中通过当前SP指针找到压如堆栈的PC值,任意修改该堆栈位置。将故障程序通过通讯口升级到电能表,来验证该内存泄漏是否干扰到计量准确度、电流计量、测量数据和实时时钟数据,或造成复位或死机。
结语
本文在分析了IR46软件分离方案基础上,讨论外设越权访问、内存越界访问、内存泄漏、修改堆栈、PC跑飞的软件故障注入检测方法,是IR46中有关计量法制部分软件分离相关要求的一种合理技术检测手段,也是IR46电能表软件评价有效补充。
[1]朱文忠. OIML IR46电能表国际建议修订中的新动向[J].计量技术,2011(12):14-17.
[2]吴瀛. OIML IR46电能表型式评价中软件型评的要求与方法[J].计量技术,2013(12):33-36.
[3] OIML IR46, Active Electrical Energy Meters.
[4]朱文忠.智能电能表的概念、标准化和检测方法初探[J].电测与仪表,2011(6):48-53.
[5]徐晴.基于EEPROM数据读写的智能电能表白盒测试方法[J].电测与仪表,2014(3):1-5.
[6]黄海林.龙芯1号处理器的故障注入方法与软错误敏感性分析[J].计算机研究与发展,2006,43(10):1820-1827.
[7]张鹏.嵌入式软件内存泄露检测方法研究[J].计算机工程与应用,2013,49(14):56-59.
TP17
A