谭辉,李晶,奚秀娟,陈晗鸣,李文海
(1.电磁兼容性国家级重点实验室,湖北武汉430064;2.中国舰船研究设计中心,湖北武汉430064;3.武汉大学计算机学院,湖北武汉 430064)
电磁兼容是指设备、分系统、系统在共同的电磁环境中能一起执行各自功能的共存状态,既不会因环境电磁干扰而受损或产生不可接受的性能降级,也不会给环境或其他设备带来不可接受的电磁干扰。随着电子、电气设备密集程度的急剧增加,设备间电磁干扰问题日益严重,因而军用或民用电磁兼容标准测试显得越来越重要。
采用手动控制方式进行电磁兼容测试存在着明显的缺陷:测试时间长、投入人力多、测试效率低。近年来,随着计算机硬件工艺、软件技术、智能仪表、接口技术的发展,使得电磁兼容自动测试成为可能。电磁兼容自动测试实现了测试过程自动化、测试功能模块化,可以对多台测试仪表同时实施远程指令操控,节约了人力资源、缩短了测试时间、提高了测试效率。
电磁兼容测试软件是实现电磁兼容自动测试的关键因素,开发该软件有面向过程和面向对象2种编程思路。面向过程首先分析出解决问题所需的步骤,然后编写函数将这些步骤逐步实现,使用时依次调用函数即可;面向对象将构成问题的事务分解成各个对象,建立对象的目的不是为了完成某一个步骤,而是描述它在解决问题过程中的行为或发挥的作用。面向过程和面向对象的主要区别在于前者是以步骤来划分问题,而后者则是以功能来划分问题。采用面向对象的编程思路在开发和维护软件上具有更大的优势,由于对象之间彼此相对独立,很方便进行任务分解和采用并行开发方式,软件升级和维护时也只需对所涉及的对象进行修改即可。本文将探讨如何采用面向对象的编程思路来设计电磁兼容测试软件,首先进行软件的功能需求分析,然后根据分析结果构建对象,并讨论与对象相关的数据、操作和输入输出接口。
电磁兼容测试软件需要实现以下3方面功能:
1)设置测试参数和测试流程。大多数电磁兼容测试项目根据测试参数和测试仪表的要求划分测试频段,在测试频段内顺次发送控制指令、形成测试流程,测试参数通过对话框进行设置。
2)远程仪表操控。控制测试仪表是实现自动测试的基础,测试软件直接使用仪表的VISA指令,不另外开发底层仪表驱动程序。按照实现功能,对仪表VISA指令进行成块而不是逐条指令的封装,方便应用程序调用。
3)测试数据处理。测试数据处理主要包括2个方面:绘制测试数据轨迹以及与轨迹相关的曲线缩放、标识数据点和坐标变换等操作;生成测试报告,根据测试报告模板将测试数据和信息填充到模板的对应位置。
测试参数和测试流程都与选取的测试项目有关,为每一个测试项目建立测试模板对象,将划分测试区间、设置测试参数和测试流程等功能封装到测试模板对象之中;除此之外,测试模板对象中还包括与测试项目相关的限值线数据。仪表控制是实现电磁兼容自动测试的关键环节,该功能封装在仪表对象之中,仪表对象是惟一与硬件设施有交互的对象。测试过程中除了仪表之外,还会使用到电缆线、衰减器、传感器、天线等器件,这些器件与仪表不同,不需要进行远程操控,但它们会改变测试信号的电平、相位以及存在形式,需要获取它们的传输系数修正测试结果,将该功能封装在器件对象之中。测试数据处理包括绘制测试数据轨迹和生成测试报告。这2个方面功能中又包含许多子功能,如对测试轨迹的缩放、标记测试点,测试报告中的文字、表格和图片插入操作等,将这2个方面的功能分别封装在绘图对象和报告对象之中。
根据电磁兼容测试软件的功能需求分析结果,将软件分解成测试模板对象、仪表对象、器件对象、绘图对象和报告对象。下面重点讨论各对象的实现功能、关联数据以及输入输出接口,从而形成电磁兼容测试软件的框架。
测试模板对象是电磁兼容测试软件的核心模块,封装了3个方面的功能和信息:
1)封装测试项目基本信息
测试项目基本信息主要包括名称、电平单位和限值线信息。
2)设定测试频段和测试流程
大部分电磁兼容测试项目按照频段进行测试,根据硬件配置和测试参数的差异,测试频段被划分成若干子区间。GJB152A中规定了根据不同测试带宽划分测试频段子区间的方法,如表1所示。电磁兼容测试有2种工作模式:接收机模式和频谱仪模式,其中接收机模式对应的测试带宽为中频带宽,频谱仪模式则是分辨率带宽。除了测试带宽之外,硬件配置是划分子区间的另一重要依据。例如30 MHz~1 GHz的测试频段内,测试带宽的精度要求都是100 kHz,但是缺少在整个频段内工作的天线,因此需要根据配置的测试天线划分子区间。
测试过程通常是按照子区间顺序执行的,软件提供了自定义测试流程的功能,用户可以根据需求在相邻子区间之间插入消息对话框进行人工操作或远程指令控制仪表。例如执行完某个子区间后需要人工更换天线,则插入消息对话框,等待更换天线之后再点击确定按钮继续下一个区间的测试操作。又如执行完某个子区间后,需要调整天线的高度和指向,则用户可以插入远程指令控制天线塔架。
3)配置测试仪表和仪表参数
软件提供人机接口,允许用户配置测试仪表,包括信号源、功率放大器和接收机/频谱仪等。仪表参数(如仪表地址、检波方式、内置放大、射频衰减、参考电平、耦合方式、通道选择等)通过对话框进行设置。
测试模板对象将测试项目基本信息、测试频段子区间信息、测试流程信息、测试仪表信息、仪表参数信息等保存在xml文件中,便于用户查询。通常一个测试项目对应一个xml文件,运行该测试项目只需加载对应的xml文件即可。
仪表对象封装远程操控仪表的特征参数和VISA指令,并为应用程序提供调用接口。1台仪表的VISA指令通常有几十条甚至上百条,逐条封装效率低下。在进行指令封装时,按照仪表的实现功能,对指令施行成块封装,这样使得接口函数功能明确,方便应用程序调用。远程操控仪表按照实现功能可以分成信号源、功率放大器、接收机、频谱仪等多种类型,各类型的仪表又包括多种具体型号,例如接收机/频谱仪有Agilent公司的E4447A和RS公司的ESU26、ESU40等。按照这种仪表分类的拓扑关系,对仪表控制指令进行分层次封装,如图1所示。首先将所有仪表的通用属性(如仪表地址、仪表名称等)和通用操作(如查询仪表基本信息和仪表复位操作等)封装到作为基对象的仪表对象之中。信号源对象、功率放大器对象、接收机/频谱仪对象都是仪表对象的派生对象,但它们还不是具体的仪表型号对象。同类型的仪表之中,不同生产厂商的仪表或者同一生产厂商不同时期的仪表在指令形式上通常存在着较大的差异。为了给同类型的仪表提供统一的功能接口,我们为每个实现功能建立虚函数,并在具体的仪表型号对象中重载,这样就兼容了不同仪表型号的指令差异,方便应用程序进行功能调用。具体的仪表型号对象分别是信号源对象、功率放大器对象、接收机/频谱仪对象的派生对象,所有的功能操作都在仪表型号对象中实际执行。仪表型号对象进行指令封装后生成动态链接库的驱动文件,存放在软件的安装文件夹之中,软件启动时自动搜索仪表型号对象的驱动文件,并识别仪表类型和名称。当更新或升级仪表型号对象的驱动文件时,无需修改应用程序的软件代码,这样极大地增强了软件的可维护性。
图1 仪表对象的顶层拓扑结构Fig.1Topology of instrument object
电磁兼容测试通常需要使用电缆线、衰减器、天线、传感器等器件,器件与远程操控仪表不同,不需要进行指令控制。不过器件会对测试结果产生影响,电缆线和衰减器会对射频信号产生幅度衰减;天线和传感器将改变信号形式,如电流探头将电流信号转变为电压信号,天线则可以在电流/电压信号和电磁场信号之间进行转换。传输系数是标识器件的特征参量,每1个修正频点对应1个以dB为单位的传输系数值。
器件对象涉及的主要操作为传输系数的频点插值操作。传输系数对应的频点通常与测试频点不重合,因此获取测试频点处的传输系数需要进行插值操作。假设测试频率为f,传输系数修正文件只给出了频率f1和f2处的系数A1和A2,且f1<f<f2,则频率f处的传输系数A为:
测试数据处理的主要功能是绘制测试轨迹和生成测试报告,这2个方面的功能分别封装在绘图对象和报告对象之中。绘图对象的输入量为测试数据;输出量为测试轨迹图;涉及的功能包括坐标系变换、测试轨迹的局部放大、标记数据点、存成位图文件、新建/删除数据轨迹等。报告对象的输入量包括测试数据、数据轨迹图,测试环境、人员以及EUT信息;输出量为测试报告;涉及的功能包括调用测试报告模板,插入文字、表格和图片等。测试报告采用Word文档格式,文档编程采用Microsoft Office 2003的COM组件实现。
本文讨论了如何采用面向对象的编程思路设计电磁兼容测试软件。首先对软件进行功能需求分析;然后根据分析结果进行功能分解,构建了测试模板对象、仪表对象、器件对象、绘图对象和报告对象等5个对象;最后讨论了与各个对象相关的数据、操作和输入输出接口,形成了电磁兼容测试软件的基本框架。采用面向对象的编程思路在开发和维护软件上具有更大的优势,由于对象之间彼此相对独立,很方便进行任务分解和采用并行开发方式,极大地提高了开发和维护效率。
[1]汤仕平,吕云熙.电磁兼容自动测试软件开发平台及其应用[J].安全与电磁兼容,2005,(4):58-61.
[2]郑新新,钱柳宇.电磁兼容自动测试系统设计[J].电子测试,2008,(6):31-34.
[3]GJB151A-97,军用设备和分系统电磁发射和敏感度要求[S].
[4]GJB152A-97,军用设备和分系统电磁发射和敏感度测量[S].
[5]王宇,苏东林,角淑媛,戴飞.基于虚拟仪器技术的电磁兼容自动测试系统[J].电子测量技术,2006,(29):102-103.