目前,大多数测量仪器已趋向数字化、智能化,采用微机或单片机控制。相对而言,单片机控制系统偏向于底层控制,实现的功能较简单,输出界面简单、单调,不便于人机之间的友好交互。而对于内部控制复杂,要求实现多种功能,且需要拥有友好的图形用户界面的智能仪器,采用微机控制则是必然的选择。为确保仪器的可靠同时做到体积小巧,当前迅速发展的嵌入式系统技术提供了可能。
“嵌入式系统”(embedded system)一般指有计算机功能但又不被称为计算机的设备或器材,主要由嵌入式处理器、相关支撑硬件、嵌入式操作系统及应用软件系统等组成。嵌入式操作系统内核小、效率高,具有大量的应用程序接口(API),开发应用程序相对简单。显然,在嵌入式操作系统的基础上,开发功能复杂且有实时性能要求的智能仪器,是最合理的选择。在众多的嵌入式操作系统中,Microsoft推出的WindowsCE.NET是目前最具应用前景的嵌入式系统之一[1]。
1 系统结构组成
1.1 硬件系统
在工业控制系统中,工控PC机以其生产的规模化、标准化和配备丰富的应用软件等特点而得到广泛的应用,然而随着控制对象(如便携式智能仪器系统)的多样化,体积庞大、功耗过高的台式工控就不适合使用。PC 104模块作为一种嵌入式计算机产品,提供的是一个非常紧凑的与标准台式PC或PC/AT结构完全兼容的层叠栈接模块。不仅尺寸小(标准尺寸为9.02cm×9.58cm),而且功耗低(每个模块为1W~2W)、功能全(包含台式PC机的全部功能)[2]。因而能够广泛用于各种智能家电、便携式智能仪表、医疗器械等电气产品。PC 104产品通常有CPU模板、数字I/O板、模拟量采集板、网络模板等功能模块。通过它们的组合就构成了仪器的微机控制核心。
在光栅分光光度计的开发中,笔者采用了艾讯公司的SBC84500型CPU板(233M主频、64M内存、64M的CF卡)和AX10410A型的高速数据采集板(用于信号采集和控制信号的输出)。它们都是PC 104模块,可以层叠起来、嵌入到仪器内部。整个系统的硬件结构如图1所示:功能选择和参数通过键盘和触摸屏输入,CPU给采集板发送指令,为驱动光路系统的开关继电器、步进电机提供控制信号,并由光电耦合器读入电机的零位信号;光路系统中通过样品的出射光线由光电倍增管接收,并完成光电转换,经调理电路处理,由数据采集板送入CPU,软件处理后显示结果或打印输出。

1.2 软件系统
工业领域中,DOS系统虽然可靠,但界面难以改观,通用的桌面系统则过于庞大且可靠性、实时性差。Windows CE.NET是一个组件化、模块化的实时多任务操作系统,支持多种处理器(包括ARM、MIPS、SHx、X86家族系列)。它具有一个简洁、高效的完全抢占式多任务操作核心,支持强大的通信和图形显示功能,能适应广泛的系统需求。典型的CE系统结构如图2所示[3]。

对于系统设计者而言,需要自行开发的是应用程序和直接与硬件有关的部分,包括硬件系统本身、硬件抽象层和设备驱动程序。其中,硬件抽象层是指建立在硬件设备与系统内核之间的一层代码,主要任务是为内核管理具体硬件设备的时钟、中断和实施电源管理提供支持。设备驱动则是负责支持操作系统对目标硬件的访问。具体的实施过程就是,根据需求选定好硬件系统,然后进行操作系统的定制(包括BSP选择、功能配置、驱动程序开发等),最后是应用程序的开发。
2 操作系统定制
在CE.NET所提供的开发工具中,Platform Builder(简称PB)是用于定制OS的唯一工具。它被安装在主机上。这里,主机(也称开发机)指的是安装有Windows 2000 Professional或Win-dows XP Professional的通用PC机,与之相对的是由硬件系统组成的目标机。应用PB可以建构各种设备类型的软件平台[4]。从某种意义上说,平台就是一个裁减好的CE操作系统,所有的用户应用程序都建立在它之上。构建平台的步骤为:
(1)选择BSP(Board Support PACkage)。CE系统中板级支持包BSP属于硬件抽象层,它由一些软件代码构成,用于支持原始设备制造商适应层和标准开发板的设备驱动。CE.NET提供3种现有的BSP:CEPC, Emulator, National Geode。CEPC适用于配置与普通PC机类似的目标机。Emulator用于仿真测试,它建立起的平台是运行在开发机上的仿真画面、使用的是主机的资源。National Geode适用于“国半”(National Semiconductor)芯片组的开发板。
(2)功能配置。包括两部分,一是在向导中选择,为平台进行初始化配置;然后依据需要,对已有的平台组件进行增减,并完成调试。初始化配置时,可以选择蜂窝电话、掌上电脑、机顶盒、工业控制设备等类型,并配置网络和通信功能。
(3)驱动程序的添加或开发。有的设备驱动是CE提供的驱动组件中所不包含的,必须自行开发并加入到平台中;否则,硬件将无法正常运行。如果有第三方提供的CE驱动,则只需将其拷贝到平台的Release或Debug目录下,并修改平台的.BIB文件和.REG文件。
笔者建立的平台是基于x86处理器、National Geode类BSP的。功能配置选取了具有人机界面的工业控制设备,包含Standard SDK for Windows CE.NET,具备局域网功能。此外,添加了PCL打印机驱动组件、储存设备组件等。并且,对没有现成CE驱动的PC 104数据采集板进行了驱动开发。其中用到的关键性API有:MmMapIoSpace( )———将I/O口的物理地址映射为虚拟地址,从而实现对采集板端口的访问;WRITE_PORT_Uchar( )———写端口;READ_PORT_Uchar( )———读端口[5]。
3 应用程序开发
平台定制完成后,目标系统拥有了最基本的软件系统———CE操作系统,并包含部分通用程序(如IE浏览、Web写字板)。对于仪器设备而言,开发专用的应用程序则成为关键所在。开发应用程序通常有几种方式,一种是用PB开发,在平台内直接包含应用程序工程;另一种是Embedded Visual C++(简称EVC) &SDK(Software Development Kit)。SDK指的是在操作系统定制好之后,由PB导出的专用于这一平台的软件开发套件。此外,还可以用Visual Stu-dio.NET(简称VS.NET)来开发。但是,它所基于的平台中必须包含.NET Compact Framework组件。
3.1 系统的框架设计
智能化的光栅分光光度计是融入光、机、电一体化技术的一种高精度仪器。基本工作方法是:用选定波长的光照射被测物质,测定它的吸光度,再根据吸光度计算被测组分的含量[6]。在本文介绍的分光光度计中,是通过滤色片组和全息闪耀光栅获得“选定波长”的单色光,透过待测样品后由光电倍增管接收。软件系统依据仪器的内在原理和应用场景进行设计,主要分为底层控制和人机交互两层。整体框架如图3所示。

仪器启动后,自动进入应用系统的欢迎画面,经过短时间等待、载入自检系统,各检测项目均无异常时进入系统主界面,若出错则给出错误提示和报告。在主界面中可以进入功能测试和系统检定模块,功能测试主要包括光度测量、光谱扫描、定量测量,系统检定包括波长准确度与重复性、基线平直度、光源能量等检定项。
3.2 底层控制设计
电机作为光源反光镜、光栅机构等运动部件的驱动源,其控制模块的设计至关重要。
电机控制类的主要属性设计
Byte OutData, InData:控制电机转动的输出字和读取零位状态的输入字;
Bool Dir:电机转动方向的标志量;
int iSpeed:转速档位变量。
主要接口设计和功能如图4。用户操作(如功能选择、参数设置)通过程序的数据转换模块转换为操作数据(如电机转动方向、步数、速度),提供给各个电机控制对象,然后由电机对象中的控制接口(如ResetMotor(),MoveForward())发送指令到电机,亦可由电机获取其状态信息(通过GetState())。

3.3 系统自检模块设计
系统自检模块包括各部件工作状态的检测和各项缺省设置的初始化。部件检查包括样品池定位、光栅机构定位、滤色片组定位、狭缝定位、光源反光镜定位、钨灯和氘灯检测。其中,定位检查都是通过机构中的光电耦合器检测机构零点位置来实现。钨灯和氘灯的检测在于启动开关继电器,通过光电倍增管是否接收到一定的光强输入来确定。
在系统自检的输出界面上,列出各检查项目,并显示结果。一旦出错,给出警报(显示“错误”并发出错误提示声)和可能的原因提示;若无误,给出“正常”标识。每项检测通过后,载入系统缺省设置,如:钨氘灯的开关状态、换灯波长设置、狭缝档位设置、样品池设置等。最后启动全波段扫描,进行100%基线自动校正。
3.4 功能测试模块设计
功能测试是用户最为常用的模块,也是仪器的应用价值所在。其设计准则为在实现准确、及时、完善的测量的同时,尽量达到友好的人机交互。界面设计除普通系统具备的菜单工具栏、输出窗口外,还包括向用户提供状态信息和操作提示的状态栏和步骤提示栏。在用户从菜单或工具栏选择了测试类别后,就可依据状态栏和步骤提示栏的指导完成相应的测试。在进行测试时,模块首先通过设置对话框接受用户操作,依据设置发送消息到系统,执行相应的控制接口;然后提示用户操作,进入基线校正(执行校正接口);在用户选择应用后,系统开始执行测试接口,并通过输入接口获取初始数据;最后通过数据处理接口和显示接口输出。下面以光度测量的参数设置和测试为例,说明测试模块的设计。

a.参数类主要属性设计:
int Slit,DataMode,SampleNum, SampleNo:狭缝档位、数据模式、样品池使用数目、样品池号;
Bool Dlight, Wlight:氘灯、钨灯的开关状态;
Bool SampleRst:样品池复位标志;
long ExWave:换灯波长;
int WaveNum:测量波长的数目;
long WaveStar, WaveInterl:起始波长、波长间隔;
设置阶段的控制接口设计见图5。一旦用户更改了缺省设置,就有消息发送到相应接口,并最终通过底层控制接口控制硬件。
b.测试接口设计:当用户完成参数设置和基线校正后,进入光度测量测试,其接口流程如图6。

4 结束语
Windows CE.NET作为一种嵌入式操作系统,既具有实时性、内存小等特性,又具有Win-dows系统的许多共性,通过调用Win32 API能够很好地实现智能仪器应用程序的开发。可以预言,随着开发环境的不断完善,以及相关硬件厂商更多的支持(提供相关的CE驱动),采用Windows CE.NET开发各种智能设备系统,将会以更短的周期获得高性能的回报。
参考文献:
[1]金华标,常勇.基于Windows CE.NET的嵌入式系统软件开发的研究[J].武汉理工大学学报(交通科学与工程版),2003,27(2):187-190.
[2]易碧晶. PC 104嵌入式计算机在仪器中应用前景分析[J].石油仪器,1999,13(2):9-12.
[3]彭飞,柳重堪,张其善.嵌入式系统的开发利器———Windows CE操作系统[J].电子技术应用,2000,(9):28-30.
[4] Wilson J Y, Have walaA. Building Powerful PlatformswithWindows CE [M]. UNIted States: [s.n.], 2001.
[5] Boling D. Microsoft Windows CE程序设计[M].北京:北京大学出版社,2000.
[6]黄涛,张文美,艾明泽,等.分光光度计使用与维修[M].北京:中国计量出版社,2001.
作者简介:李海燕(1977-),女,湖南永州人,北京机械工业学院机械工程系硕士研究生,主要从事智能仪器软件系统方面研究。




