真空热试验测控仪器驱动器通用化设计
2010-06-08孙兴华裴一飞
孙兴华,裴一飞
(北京卫星环境工程研究所,北京 100094)
0 引言
真空热试验是航天器研制过程中必不可缺的试验项目,它利用空间模拟器模拟航天器在轨运行时所处的真空、冷黑及太阳辐照环境,验证并考验航天器各项设计是否满足要求。其中,外热流的模拟和温度数据的获取是真空热试验的两项关键技术,二者的实现都离不开各种测控仪器,主要包括各种型号的数字万用表和程控电源等。由于不同型号的测控仪器的通讯接口和总线方式不同,使得它们的驱动方式也大不相同,造成了测控应用软件版本复杂、通用性和继承性较差等问题。
本文尝试针对真空热试验测控系统中所使用的几种测控仪器,建立通用的仪器模型,并设计驱动函数库,以简化各类仪器的驱动方式,有利于测控系统应用软件的通用化设计。
1 真空热试验测控仪器介绍
目前,航天器真空热试验测控系统所使用的仪器主要分为程控电源和数字万用表两大类。程控电源主要用于温度控制和外热流模拟;包括安捷伦公司的N5750、Sorensen公司的DLM150-4以及惠普公司的6655A和6644A等型号;数字万用表主要用于温度和热流等参数的直接与间接测量,包括Mobrey公司的 3595EA和 3595EH、惠普公司的E1411B和吉时利公司的K2750等型号(见表1)。
表1 真空热试验测控仪器Table 1 Measurement & control instruments for vacuum thermal tests
在上述测控仪器中,除了 Mobrey公司的3595EA和3595EH数字万用表需要专门的接口卡与控制计算机相连,通过一种特殊的 S-NET网络进行数据交换外,其他测控仪器都可以直接或经过E5810(GPIB/LAN)网关与控制计算机相连,通过以太网进行数据交换。
实现测控仪器的统一驱动,首先需要建立一个通用的仪器模型,下面介绍的是基于 VISA(Virtual Instrument Software Architecture,虚拟仪器软件结构)和 SCPI(Standard Commands for Programmable Instruments,程控仪器标准指令)标准的通用仪器模型。
2 测控仪器的通用模型
真空热试验测控系统中应用的仪器虽然来自不同的厂家,并且从功能和通讯方式上存在差异,但是它们都支持SCPI标准命令格式和VISA仪器驱动标准。
2.1 SCPI命令规范
SCPI是架构在 IEEE 488.2上的仪器控制语言,它提供了一套明确定义的代码、格式、协议和公用命令,加强了不同厂家仪器互连使用的兼容性。它的命令字符串不仅可以通过各种仪器接口(例如LAN、GPIB、USB等)发送,而且可以使用各种编程语言把SCPI命令传送给仪器,这就有利于程序的编制和移植[1],给仪器驱动通用化设计提供了极大的方便。程序开发人员只要根据需求找到要完成功能的指令,通过读写操作就可以实现对各类程控仪器的程序控制。例如指令“MEAS:VOLT?”表示测量程控电源的实际输出,无论对于何种程控电源或者用户使用何种编程语言,只要把该字符串写入仪器就可以实现实际输出电压的测量功能。
2.2 基于VISA的仪器驱动器
仪器驱动器是指使用标准化的I/O函数与一台或几台仪器设备进行通信的一套或一组程序,主要用于对仪器的程控操作,如设置参数和工作方式、读/写数据、触发及读回仪器工作状态等。它相当于一个位于用户和仪器之间的解析器,把用户能够理解的高层函数翻译成仪器能够识别的底层命令[2]。对一台仪器的操作,用户只需通过初始化、配置和获取数据等高层命令就可以实现对仪器的控制,节省了从底层命令来写仪器驱动的时间,从而使得整个开发过程更加方便快捷。
VISA是由著名的泰克、惠普、美国国家仪器等35家仪器仪表公司为确保不同厂商、不同接口标准的仪器能相互兼容,彼此之间可以进行通讯和数据交换,并且能够给用户提供方便易用的驱动程序而研制出的一种仪器驱动标准。图 1为基于VISA的仪器设备的通用驱动流程。
利用VISA标准接口函数开发的仪器驱动器继承了VISA标准的特点,其控制功能适用于各种类型的仪器而与接口类型无关,无论是LAN、GPIB或USB接口,只需正确设置仪器的VISA地址,就可以实现对仪器的各种操作。表2给出了不同通讯接口的VISA地址格式。
图 1 基于VISA的仪器驱动流程Fig.1 Instrument driving flow based on VISA
表2 不同通讯接口仪器的VISA地址Table 2 VISA address for different communication interface of different instruments
2.3 基于SCPI和VISA的通用仪器模型
基于SCPI和VISA标准,可以用统一的方式来描述各种各样的测控仪器,而与仪器的硬件组成、面板控制等无关,构造通用模型如图2所示。
图2 通用仪器模型示意图Fig.2 Universal model for instruments
由图2可以看出,任何一种测控仪器都可以被看作是一个可以用VISA地址进行直接访问、用标准SCPI指令进行控制的执行器。要实现对该执行器的控制,就必须设计一个通用的驱动器,用于把指令正确地下达到仪器中。
3 仪器驱动器通用化设计
实现多种测控仪器的通用化驱动就要建立一个统一的驱动函数库。根据应用范围和实现功能,驱动函数可分为通用功能函数和特定功能函数。通用功能函数适用于所有仪器,主要用于建立或中止驱动程序与仪器的通信联系、仪器设备的状态配置和各类信息查询等;特定功能函数主要包括测量类的功能函数和电源类的功能函数,用于实现测控仪器的特有功能。本文利用Visual Basic语言编写了相关的驱动函数,并用动态链接库技术将其进行统一封装,可供调用进行二次开发。图3为测控仪器通用驱动器结构。
图3 测控仪器通用驱动器Fig.3 Universal drivers for measurement & control instruments
3.1 仪器驱动函数的定义
实现测控仪器程序控制是为建立控制计算机与仪器的连接并不断完成二者之间读写操作的过程,仪器驱动函数就是要完成以上功能。下面以具体的通用功能函数和特定功能函数为例,介绍驱动函数的实现过程。
3.1.1 通用功能函数
1)仪器初始化函数
主要用于VISA资源检查和测控仪器通讯状态检查,该函数返回字符串来表征检查和测试结果,详细代码及注释如下:
2)仪器通用读写函数
主要用于与测控仪器的指令发送和数据交换,并分别返回一个布尔数,表示读写操作是否成功完成,代码如下:
3.1.2 特定功能函数
特定功能函数主要是针对不同测控仪器在真空热试验过程中实现某种特定功能(如数字万用表进行电压、电阻测量,程控电源进行回路电阻测量等)的函数。特定功能函数库的建立为测控软件的开发提供了很大便利。例如在某些试验中对测量周期或者对程控电源的输出有特殊要求,都可以编写相应的特定功能函数,将其添加到驱动函数库中以供调用。
3.2 仪器驱动函数的封装
动态链接库(即DLL)是Windows操作系统提供的共享可执行代码数据的基本手段,是一种过程库,可以被多个程序共享调用,大大节省了对系统资源的占用[3]。使用Visual Basic将前面所编写的通用功能函数和特定功能函数统一封装生成一个名为“InstrumentDriver.dll”的动态链接库文件,这样用户只需载入这个函数库并声明函数,就可以实现对测控仪器程序控制。另外,这是一个开放的函数库,随着以后测控仪器种类的增加以及对各种功能的进一步需求,可以不断加入新的函数。
3.3 仪器驱动函数的调用
为验证前面所建立的函数库可以实现对真空热试验测控流程中应用的各类仪器的驱动,利用Excel VBA引用“InstrumentDriver.dll”动态链接库中的相关函数实现程控电源和数字万用表测量电阻的功能,如图4所示为调用结果。可以看出,只要正确设置各类仪器的VISA地址,不论仪器的种类、厂家和型号,通过调用该函数库的相关函数都可以实现对仪器的驱动;并且通过编写特定功能函数,用户可以轻松调用,有利于测控软件的二次开发。
图4 驱动函数调用结果Fig.4 Calling result of the drivers function
4 结束语
本文针对目前真空热试验测控系统应用的各种测控仪器,建立了通用的仪器模型,基于VISA和SCPI标准编写了通用驱动函数,并以动态链接库的形式进行封装,用户只需要进行简单的函数调用就可以实现不同厂家、不同型号测控仪器的各类功能,简化了仪器驱动的配置过程,缩减了测控应用软件开发的工作量。
(References)
[1]王学伟, 相艳, 陈小容.数据采集模块 SCPI解释器的研究与实现[J].电测与仪表, 2008, 45(1): 31
[2]李扬, 赵葛霄, 汪仁煌.基于VISA标准的仪器驱动器设计[J].工业仪表与自动化装置, 2001, 6: 59
[3]伊翠香, 孙玲玲, 张富强.动态链接库 DLL编程的相关应用技术与探讨[J].试验技术与试验机, 2008, 48(1): 56