基于嵌入式系统继保装置CPU硬件测试的设计实现

2012-06-23 09:50任华锋高传发孙振华
电气技术 2012年9期
关键词:测试程序总线继电保护

任华锋 高传发 孙振华

(许继电气股份有限公司,河南 许昌 461000)

近年来,随着微电子技术,计算机技术的飞速发展,微机继电保护装置在硬件和软件两大方面仍在不断的创新和发展。在硬件方面,从8位单CPU结构的微机保护到16位/32位多CPU结构的应用,只用了不到5年时间。目前,已经有继电保护生产厂家在智能电网的集中式保护中成功应用了多核CPU的继电保护装置。由于智能电网的发展迅速,要求继电保护装置能够快速响应智能电网发展过程中产生的各种技术需求。为了缩短响应时间,现有的继电保护装置研发大都采用软硬件平台并行,协同设计的方式,在设计开发过程中,两者互相支持,互相提供开发的平台。为了保证软件运行的最优性能和可靠性,必须对CPU硬件平台的各种组成模块如:嵌入式处理器,外围接口模块(AD采样/开入开出回路等),输入输出回路(人机接口),通信中间件等进行详尽的独立测试和综合测试。

本文针对继电保护装置研发中软件平台和硬件平台的设计特点,提出了一种在和软件设计公用的嵌入式操作系统和集成开发环境下,对正在研制过程中的继保装置 CPU硬件进行模块自检测试和系统综合测试的实现方法。

1 继电保护装置CPU硬件测试概述

从硬件方面来说,平台化的开发方式要求CPU的硬件电路尽量做到“模块化”和“拼图化”。针对采用同一款处理器的 CPU硬件平台模块电路和外围扩展电路的典型性和通用性,我们可以使用软件平台的集成开发环境来编制一系列工作在嵌入式操作系统上面向CPU硬件的测试程序。通过硬件测试程序对 CPU硬件平台下多个功能模块进行检测来发现和验证硬件的设计缺陷。 该程序的主要设计思路是利用嵌入式操作系统的实时性和多任务方式,将硬件平台下的各模块的测试代码封装到不同的任务中,通过串口或以太网接收测试指令并输出测试信息到定制的测试界面上。本文是在笔者从事许继集团基于 PowerPC 系列处理器的继电保护装置硬件研发工作中使用该测试方法的介绍和总结。

图1 PowerPc系列处理器产品的CPU硬件结构示意图

2 继电保护装置CPU硬件测试程序的设计

2.1 CPU硬件测试程序的的总体设计

考虑到继电保护装置的特殊性和测控实时性的要求,在CPU硬件测试过程中,用嵌入式实时操作系统上运行的测试代码对硬件进行仿真测试,来验证硬件的设计参数和性能是否能满足继电保护装置应用软件的运行。本文的硬件测试程序设计方案是在嵌入式实时系统NucleusPLUS和PowerPC系列处理器基础上开展的。

NucleusPLUS是为实时嵌入式应用而设计的一个抢先式多任务操作系统内核,其95%的代码是用ANSIC写成的,并且使用了软件组件的方法, 采用了先进的微内核(Micro-kernel)技术,因而在优先级安排,任务调度,任务切换等各个方面都有相当大的优势,在继电保护装置的应用软件上得到到了广泛的使用。在NucleusPLUS上可以非常方便的用代码实现CPU硬件各模块的自检和集成测试。我们把 CPU硬件所属的各个模块测试代码根据硬件测试的需要封装到NucleusPLUS不同的任务中,利用测试界面程序通过串口或网口发送指令,由测试代码执行对相关硬件模块的测试,并将测试结果返回到测试界面上。

图2 NucleusPLUS下CPU硬件测试程序结构流程图

2.2 CPU硬件主要模块的测试方法和实现

1)存储空间FLASH的测试

对于继电保护装置来说,用作存储的 Flash中主要存放操作系统和用户应用程序的镜像文件、引导配置文件、整定值、各类动作报告等,具有掉电数据不丢失的特性。Flash读写数据的正确性和效率,直接影响继电保护装置的可靠性和稳定性。

Flash的测试方法有两种,一种是非破坏性的基本测试,主要是checksum测试;另一种是破坏性的扩展测试,包括读写测试和地址/数据总线测试。在NucleusPLUS下,利用已经写好的Flash驱动封装一个Flash测试程序,先擦除Flash一段指定容量空间,写入指定容量大小的数据,再读取指定容量大小的数据进行比较。重复多次完成后,将测试结果输出到测试界面上。

2)DDR内存模块的测试

内存的作用是存放继电保护装置运行时的程序和重要数据。DDR内存的硬件电路设计正确与否,将决定CPU是否能正常工作。由于内存和处理器之间的连线过多,在整个CPU硬件设计中也是出错率比较高的地方。因此,内存测试代码编写要考虑的尽量全面,代码主要完成以下3类测试:

(1)数据总线测试: 将 0001循环左移并写入内存,然后读出并比较测试。

(2)内存区测试: 对内存所有存储单元进行读写测试(读写5555H和AAAAH测试)。

(3)地址总线测试:对内存所有存储单元进行地址累加测试。从 RAM 的基地址起,在每一个存储单元(按照总线宽度)中写入不同的值(递增值),地址递增,直至所有的存储单元都保存不同的内容,然后读出并进行检验。

内存测试也要进行多次重复测试,测试时间跟CPU使用内存的大小有关,在验证硬件设计时可随机选择内存页面进行测试。

3)处理器模块的测试

处理器测试主要是对处理器进行定时器测试、寄存器测试、中断测试和片内设备的测试。PowerPC处理器是一款运算处理功能强大且片内设备集成度高的 RISC架构的处理器,其常规测试过程非常繁琐。由于使用的 NucleusPLUS嵌入式操作系统对PowerPC系列处理器兼容性非常好,特别是FreeScale公司提供集成开发环境codeworrior,使处理器的硬件测试基本都是在可视化的环境下进行。处理器部分的测试代码只需对集成在片内的串口,网口,IIC,GPIO等使用到的设备进行测试。

(1)串口RS232/485由于传输速率慢,距离短,抗干扰性差,在智能电网继电保护装置中已经不再作为主要的数据通信接口使用,仅作为装置的调试口或打印机接口保留。其测试相对简单,在NucleusPLUS创建串口中断服务子程序,验证串口收发数据的正确。

(2)以太网技术在智能电网的继电保护中充当了一个重要的角色,推动了继电保护装置的保护网络化发展。以太网数据通信已经成为继电保护装置内部和外部的主要通信连接方式。为了验证处理器内部网口的硬件设计,我们的网口测试代码主要在链路层通过中断方式完成的。在测试程序中调用网口驱动中的原始发送函数,在定时器中定时发送固定帧长和报文数的原始链路报文,在接收方统计报文的吞吐量,延迟包,丢帧率。输出到测试界面。

图3 NucleusPLUS以太网测试中断服务程序流程图

(3)IIC总线是一种高效、实用、可靠的双向二线制串行数据传输结构总线,该总线使各电路分割成各种功能的模块,并进行软件化设计,各个功能模块电路内都有集成一个 IIC总线接口电路,因此都可以挂接在总线上,很好的解决了众多功能IC与CPU之间的输入输出接口,使其连接方式变得十分简洁。IIC硬件测试只需按标准的IIC协议去操读取或写入相应 IIC器件的数据,如 CPU的温度和RTC时钟。

(4)GPIO模块是处理器常见的功能模块,主要通过寄存器设置其 I/O管脚的功能定义,通过寄存器赋值来决定输出的开关状态。在继电保护装置中主要用于驱动运行灯和告警灯,可监视其他硬件模块比较重要的信号并产生中断。测试比较简单,可与其相关联的硬件模块配合测试。

4)大容量SD卡的测试

由于继电保护装置集成的功能越来越多,数据流量越来越大,大容量的数据存储器件应用成为必然趋势。SD卡有高记忆容量、快速数据传输率、极大的移动灵活性以及很好的安全性,目前在继电保护装置中主要用来保存电网故障时的波形数据,供继保人员分析故障原因。其测试与FLASH的测试类似,对指定空间的存储块进行读写操作,比较读写数据是否一致,验证SD卡接口硬件电路的设计。

5)FPGA扩展部分硬件功能模块的测试简介

FPGA作为可编程逻辑器件,通过编程的方式(如HDL)将通用芯片配置成用户需要的硬件数字电路,FPGA和软件系统具有相似的结构和开发方式,HDL与软件都是人脑思维逻辑的产物,具有相似的语法和失效机理。介于本文关注的内容,对FPGA内部测试就不详细介绍,主要针对FPGA配置完成后,由PowerPC处理器通过测试代码对模拟量采集模块,开入开出模块等扩展部分硬件的测试进行阐述。

PowerPC与FPGA采用 将FPGA作为PowerPC局部总线(Local Bus)上的外部存储,挂接在某个BANK上,用地址总线,数据总线和控制总线的方式通信。实际的测试过程中,我们只需根据 FPGA程序设计者提供的FPGA地址序列,使用不同的地址访问和操作多个不同功能的扩展模块,对PowerPC来说完全感觉不到 FPGA的存在。通过FPGA的硬件拓展,可以将更多的硬件模块通过总线方式接入处理器,只需要考虑总线的负载能力。

编制这些通过FPGA的拓展的硬件模块测试代码时,可以原样利用芯片厂商提供的驱动代码库,在操作芯片寄存器时,对寄存器的地址进行物理偏移即可。由NucleusPLUS封装好的测试任务通过总线对相应的扩展芯片如以太网PHY、LCD控制器、AD模块,继电器动作回路等进行测试并获得测试结果。

图4 FPGA测试数据流程图

3 继电保护装置CPU硬件测试界面的设计

3.1 测试界面功能介绍

测试界面是整个 CPU硬件测试环境中的关键环节,它通过串口或网络和目标 CPU进行信息交互,控制目标CPU上的硬件测试程序向各个硬件模块发送测试指令,接收CPU上送的各种硬件模块测试信息,根据测试信息完成硬件模块的测试结果判断并输出测试报告。

测试界面主要运行在 Windows操作系统的 PC上,可以利用Windows上的丰富的可视化资源编辑工具如delphi,VC++等开发环境进行代码实现。 在测试界面设计中,主要实现如下一些功能:测试系统的主界面、硬件测试模块的选择、硬件测试模块的测试指令下传、测试界面及测试结果的显示等。

3.2 测试界面设计

测试界面采用面向对象的设计思想,按照分布式的设计特点,将界面分为主控界面,通信处理模块,硬件模块测试界面,测试信息解析模块。

1)主控界面主要是完成测试参数配置及各个硬件模块测试界面的调用。利用 VC开发环境中的控件和菜单关联功能,可以非常快捷的设计出界面友好,使用方便的主控界面。

2)通信处理模块主要在后台运行,初始化 PC机的串口或网口后和目标 CPU按照设置好的通信参数进行通信,提供相应的数据收发函数,供硬件模块测试界面使用。

3)硬件测试模块界面根据硬件模块的区别设计成不同的分界面,通过向目标CPU发送指令,启动CPU板NucleusPLUS嵌入式操作系统上的相应模块测试任务,测试完成后将测试信息发送到测试界面。

4)测试信息解析模块根据目标 CPU上送的测试信息进行分类和解析处理后,显示在主控界面上。由于 CPU上的硬件测试程序上送的都是反馈测试结果的字符串信息,我们利用 VC自带的丰富的字符串处理函数对测试信息进行解析和转换,翻译成直观的中文信息和测试结果,同时还可以用第三方控件将测试信息保存成 Word文档供测试人员浏览和编写测试文档。

4 结论

继电保护装置硬件开发过程中,确保硬件产品的开发质量是保证继电保护装置运行可靠性和动作正确性的关键。而在以往的研发中,硬件设计可能只考虑到了单个硬件模块的工作特性,实际上将各种硬件模块集成在一起之后仍有可能不正常工作。主要原因是,模块相互调用时接口会引入许多新问题。例如,数据经过接口可能丢失;一个模块对另一模块可能造成不应有的影响;模块之间的硬件连接不正确也可能造成通信不畅;误差不断积累达到不可接受的程度等等。所以需要通过综合测试来发现各种错误。本文介绍的基于嵌入式操作系统的硬件测试程序和友好的测试界面,通过测试软件一段一段地扩展,测试的范围一步一步地增大,来逐步查找定位硬件设计缺陷的增量式集成测试方法,为继电保护装置硬件综合测试提供了很好的解决方案。

[1]王齐.Linux PowerPC详解:核心篇[M].北京:机械工业出版社,2007.

[2]刘淼.嵌入式系统接口设计与 Linux驱动程序开发[M].北京:北京航空航天大学出版社,2006:328-349.

[3]徐宇柘.Nucleus实时操作系统在继电保护系统中的实时性研究[J].电脑知识与技术,2007(13).

[4]黄艳敏.浅谈电子产品的硬件测试技术[J].单片机与嵌入式系统应用, 2010(2).

猜你喜欢
测试程序总线继电保护
电气控制系统中继电保护器的整定方法
基于PCI Express总线的xHC与FPGA的直接通信
机载飞控1553B总线转以太网总线设计
基于Castle型机械手的三温量产测试平台实现
电力系统及其自动化和继电保护的关系研究
手机APP交互界面人因适合性测试程序的设计与实现
电力系统继电保护二次回路的维护与检修
关于配电网自动化继电保护的几点探讨
电气自动化控制设备可靠性测试探讨
CAN总线并发通信时下位机应用软件设计