环境试验设备自动化测试软件的兼容性设计难点与实现方法
2020-09-18张鹏顾继承王小龙何萌
张鹏,顾继承,王小龙,何萌
(航空工业北京长城计量测试技术研究所,北京100095)
0 引言
温湿度环境试验设备广泛应用于汽车、电子、生物医药等行业中。为保证环境试验数据稳定、可靠、可溯源,需要对环境试验设备定期开展计量校准工作。伴随着中国社会经济的快速发展,环境试验设备的校准服务工作业务量迅速增加,出现了各式各样的环境试验设备自动化校准软件,但是这些软件普遍存在扩展性差、测量参数单一、覆盖规程有限等问题。针对这些软件的不足,本文设计了一款环境试验设备自动化测试软件。该软件具有良好的兼容性,支持多规程覆盖、多参数校准功能,能够有效满足计量人员的使用需求。
1 软件框架设计与难点分析
如图1所示,本文研制的环境试验设备自动化测试软件包含五个功能模块:①客户管理模块主要用于管理送检客户的信息、被测环境试验设备的信息和试验环境相关信息;②标准器管理模块主要用来管理巡检仪、传感器等标准器的信息和其不确定度信息以及传感器的修正值;③规程管理模块主要用来管理使用规程的名字、发布时间、所属部门等信息以及规程的测试参数;④采集模块用来管理硬件设备驱动程序和采集数据;⑤试验操作模块是确定试验信息、选定规程、选定标准器,利用标准参照规程要求的流程对被测设备进行测量的模块,并将结果按照原始记录或证书模板进行打印。
通过这五个模块可以实现环境试验设备的自动化测试,但是由于环境实验设备校准检测使用的规程及参数较多,如表1所示,设计过程中会遇到多规程多参数兼容性问题,如果为了保证程序的兼容性而将不同规程的运行以及不同参数的测量过程完全独立设计,会导致开发效率低、使用者的学习难度大、校准检测时使用效率低,再加上客户信息、被测设备信息、传感器信息以及测量结果查询功能均是共同使用的,如果完全独立设计会造成资源的浪费,且明显增加了程序运行的复杂性。因此环境试验设备自动化测试软件设计中最大的难点就是实现多规程多参数的兼容性程序架构。
图1 软件结构
2 程序设计难点的解决方法
为了解决多规程多参数兼容性的程序设计难题,本文将五个功能模块的调用关系调整为三层:信息层、规程算法层、硬件采集层,如图2所示;然后通过一个“测试序号”参数将这三个层次之间解耦独立之后进行动态调用。
图2 软件框架
信息层是通过人机交互完成客户、被测设备、试验条件、选用规程、选用标准器等信息输入功能的集合;规程算法层是按照不同的规程规范要求的算法计算完成校准检测任务功能的集合;硬件采集层是驱动采集模块中硬件采集数据功能的集合。
调整调用关系最主要的手段是将规程算法层中的规程设计为独立的调用单元,可用解耦规程单元与外部输入参数依赖的方法,形成模块独立的代码[14-15]。
环境试验设备自动化测试软件的基本业务流程如图3所示。程序开始运行后,通过客户管理模块和标准器管理模块输入客户信息、被检设备信息、测试环境信息、所选标准器和传感器信息;然后按照选定项目进入试验模块,按规程要求的步骤开展校准测试并计算结果,最后生成原始记录或证书。
梳理业务流程之后,可以发现试验模块按照规程要求开展校准检测功能时,需要用到客户管理模块、标准器管理模块获得的信息。如果按照常规方法进行程序设计,即在内存中开辟变量空间存储信息内容,然后信息内容通过内存在模块间传递,会导致模块之间的依赖性非常强,属于强耦合关系,任何代码的变动都将导致程序的连锁修改,无法满足多规程多参数独立流程、独立界面、独立硬件的设计要求。
为了解除模块间的耦合,在设计过程中调整了模块之间的数据传递逻辑,将原本通过内存直接向试验模块传递客户数据、标准器数据、传感器数据的耦合方法,调整为不利用内存空间的间接传递的非耦合方法:即在客户管理模块和标准器管理模块中,将客户信息、标准器信息、传感器信息等需要传递的数据存储在数据库中,试验模块使用以上信息时到数据库查询即可。这种设计方案虽然增加了数据库编程的代码量,但可有效实现试验模块与其他模块的解耦。
表1 规程规范与对应的参数
图3 基本业务流程
同理,在试验模块内部驱动硬件时,认为不同规程、不同校准测试参数使用不同的硬件。如果硬件的驱动设置和采集的数据全部由变量经内存传递,试验模块与硬件调用之间同样面临着强耦合的问题,当更换硬件时会面临程序上的巨大修改。因此,调整硬件采集时的数据存储逻辑,采用将驱动配置和采集数据存储在数据库中的非耦合方式,将硬件功能程序从试验模块中解耦出来,最终使程序变成三层结构。
通过解耦设计后的试验模块代码流程如图4所示。
图4 解耦设计后试验模块的代码流程图
在解耦的同时,还须要配合利用动态调用技术。动态调用是对应程序的静态调用而言的,静态调用是程序在编译时直接将静态调用的函数与数据一同编译链接至可执行文件中,当可执行文件运行时,所有静态调用的函数全部加载至内存,这种方式简单方便。而采取动态调用的函数在编译时不链接至可执行文件内部,而是随着程序运行的过程根据指令动态加载到内存中[16]。动态调用最大的好处是动态函数与EXE执行文件独立,只要函数输入输出接口不变(即名称、参数、返回值类型和调用约定不变),更换动态调用函数不会对EXE可执行文件造成任何影响,极大地提高了程序的可维护性和可扩展性[17]。
实现动态调用的技术难度比较大,比如编译器的实现机制、动态调用路径、调试环境等,而且不同软件平台动态调用的实现机制不同,解决方法也不同。本文不分析动态调用的实现细节,主要分析利用了动态调用技术的软件结构。
环境试验设备自动化测试软件将动态调用技术应用于试验模块中,将需求中提到的每一本规程规范设计为一个独立的可动态调用的试验模块,然后将这些试验模块集合命名为规程库,由调度模块动态加载,软件结构如图5所示。
图5 动态调用软件框架
以JJF 1270-2010《温度、湿度、振动综合环境试验系统校准规范》和JJF 1101-2019《环境试验设备温度、湿度校准规范》动态调用为例,分析软件结构的运行流程。
首先,启动运行,进入信息层获取相关信息,然后进入规程算法层调用JJF 1270-2010试验模块。
JJF 1270-2010中规定了温度偏差、温度波动度、温度均匀度、温度指示仪表示值误差、温度变化速率、相对湿度偏差、相对湿度指示仪表示值误差、风速、最低露点温度(正在开发中)、噪声校准项目。
选择JJF 1270-2010规程,由调度模块加载校准参数选取函数,如图6所示。
图6 JJF 1270-2010校准项目选择界面
依据选择的校准项目进入校准测试界面,如图7所示,开展具体的校准测试。
在规程算法层调用JJF 1101-2019则进入1101对应的试验模块。
JJF 1101-2019中规定了温度偏差、温度波动度、温度均匀度、湿度偏差、湿度波动度、湿度均匀度校准项目,此时调度模块1101的参数选取函数动态加载进入界面,如图8所示;校准测试界面如图9所示。
在同样的“温湿度”校准项目中,由于JJF 1101-2019与JJF 1270-2010要求不同,各自的校准界面与算法也各不相同,如图10所示。
综上,软件运行的流程图如图11所示:启动可执行文件,首先进入信息层的相应模块,获取客户、环境、标准器等相关信息。然后进入规程算法层,由调度模块加载按规程内容编写的试验模块,即通过指令实现试验模块代码的动态加载与释放。调度机制采用独占方式,即选中的试验模块根据指令加载至内存后,在没有被命令退出之前,其他内容无法加载。试验模块测量数据时调用硬件,进入硬件采集层执行驱动代码进行数据测量,最终完成校准测试。
利用解耦和动态调用技术对所需的环境试验设备相关测试规程进行编码,得到所有满足要求的试验模块。这些试验模块接收到调度模块所发送的指令后,有目标地动态加载进入主程序流程中运行,有效解决了多规程多参数兼容设计的软件难题。
图7 JJF 1270-2010校准测试界面
图8 JJF 1101-2019校准项目选择界面
图9 JJF 1101-2019校准测试界面
图10 温湿度采集计算界面
图11 规程库动态调用流程示意图
3 总结
设计了具有良好兼容性、综合性、可操作性,支持多规程覆盖、多参数校准功能的环境试验设备自动化测试软件,该软件包含客户管理、标准器管理、规程管理、采集、试验操作五个功能模块,并且通过解耦与动态调用技术将五个模块依赖关系转化为三个层次:信息层、规程算法层、硬件采集层。信息层通过人机交互获取信息;规程算法层用来动态调用规程要求,开展校准检测;硬件采集层驱动硬件采集数据。该软件以规程为最小单元,可动态组合、动态替换,成功解决了环境试验设备自动化测试软件的兼容性设计难题,避免了市场上现有环境试验设备软件功能不全面、规程单一、操作复杂的问题,能够有效满足计量人员的使用需求,具有技术推广价值。