基于PC/104的实时姿态数据采集系统的设计
扫描二维码
随时随地手机看文章
1 引言
数据采集是信息处理的重要环节。在野外试验系统中,试验平台的姿态及运动状态信息测量对试验结果具有较大影响,因此,对试验平台的姿态信息进行实时采集具有现实意义。而且, 特别是对于导弹导引雷达等设备, 由于要求对现场信息实现实时测量和控制, 并且应用环境复杂,因而对数据采集系统的精度、便携性、可靠性与实时性具有较强要求。PC/104是嵌入式PC的机械电气标准[2],它的制定为嵌入式应用提供了标准的系统平台,它继承了IBM-PC的开放式总线结构的优点,为工程师提供了标准的、高可靠的、功能强大的、使用方便的系统组件。本文详细论述了基于PC/104平台的姿态数据、GPS定位信息采集系统的设计方案。
2 系统硬件设计
2.1 系统组成及功能
采集系统在硬件上主要由地面固定站和便携式流动站组成。固定站包括:嵌入式控制计算机、多种姿态传感器、固态硬盘和数传系统;流动站包括:便携式手持机和数传电台等组成。系统组成如图1所示。[1]
图1 系统组成框图
地面固定站主要完成实时记录地面GPS接收机的定位及姿态信息;记录便携式流动站的GPS定位信息并进行实时显示[3][9];对地面设备进行参数装订和系统设置,实时监控地面设备的工作状态,实时显示地面站和流动站的相对空间位置和姿态数据并送给试验设备;实时记录试验数据,试验结束后进行数据处理分析;打印试验数据、图形、曲线及分析结果。其组成为:(1)GPS接收机;(2)无线传输设备;(3)电源模块;(4)控制计算机(地面固定站控制计算机);(5)试验设备;(6)平台姿态传感器等。
流动站主要完成实时记录并显示本站的GPS定位信息[1]、姿态信息,将所得到的数据通过无线数传电台传输给地面固定站进行处理。其组成为:(1)GPS接收机;(2)姿态传感器;(3)无线传输设备;(4)电源及天线系统;(5)控制计算机(流动站手持机)等。
本系统主要用于精确测量试验设备载体和流动站的定位及姿态信息,通过无线数传设备进行通信,同时提供速度信息,导航信息,用以输出给试验设备。固定站和流动站无线传输采用半双工模式,速率为9600bps。
2.2固定站控制计算机设计
固定站系统组件中控制计算机是核心,经过分析,其外部数据输入/输出接口有:GPS数据串行RS232输出1路,平台姿态传感器串行输出1路,无线传输设备串行输出1路,试验设备USB接口输出1路。
在设计过程中按照便携式、模块化的思想,嵌入式计算机模块采用DiamondSystems公司的ATHENA模块,该模块有CPU子模块和数据获取子模块两部分组成,可以支持DOS、Linux、Windows 98/NT/XP/2000、Windows CE.Net、VxWork等操作系统,CPU子模块包括128位图形加速卡,128M板载内存,支持UDMA33硬盘、最大可以安装512M电子盘,4个全功能RS-232,2个UART,2个异步口,4个USB 1.1接口。模块尺寸4.175英寸×4.475英寸。完全能够满足设计要求,且具有端口备份。
2.3 其他部件的配置
除控制计算机外,其他部件包括:固定站GPS接收机、平台姿态传感器、无线传输设备和流动站手持机。
1、GPS接收机:固定站接收机选用NovAtel公司高性能双天线GPS接收机 BeelineTM 。该卡工作在L1频率,采用双GPS天线,通过原始观测量来获取基线的方位和俯仰角度,同时能得到主天线的三维位置和速度信息。数据率最高可达5Hz。流动站接收机选用Garmin25 LP GPS模块。
2、平台姿态传感器:在地面固定站和流动站的姿态传感器选用Crossbow公司出品的CXILT02E数字倾角传感器。该产品可提供360度范围的滚动角和180度范围的俯仰角。电源输入9~30VDC,采用RS232输出。
3、无线传输设备:采用Pacific Crest公司的PDL数传电台。该电台在低功率工作时,最大仅2W,传输波特率为4800~38400bps。
4、手持机:选用济南浪潮超越公司的巧金刚Ⅱ型加固手持式计算机,该机RISC CPU主频可达400MHz, 超高分辨率显示, 内置GPS模块,实现全球定位, 可提供应用软件开发系统,方便用户进行二次开发,支持Windows CE操作系统。
3 系统软件设计
在进行软件设计时,固定站系统软件设计采用了Borland公司的C++ Builder 6.0进行二次开发而成[5]。在设计过程中,利用交互编程技术使窗口、事件和消息等Windows操作系统的工作方式与底层硬件驱动程序相融合,使软件完全按事件驱动的模式来执行,并在软件中加强了容错能力设计,在最大限度上避免了操作人员人为或非正常因素造成的错误。
由于设计时采用手持机作为流动站的主控计算机,操作系统为Windows CE,因此,流动站软件设计采用EVC(Embedded Visual C++)作为开发工具。Windows CE是紧凑的、高效的和可升级的操作系统,被广泛应用在各种嵌入式产品中。EVC是Microsoft公司退出的开发WinCE应用程序的成熟、强大的工具,它和Visual C++开发工具具有一定的相似之处。
3.1 系统软件组成
整个软件系统包括固定站操控软件和流动站操控软件。如图2所示。
图2软件模块组成图
流动站操控软件主要完成通过串行接口接收手持机内部GPS接收机数据、外部姿态传感器数据,并将数据进行处理、存储、显示、打包下行发送等功能。总的来说在结构上主要分为:端口初始化模块;数据接收模块;数据处理模块;数据输出模块。在数据打包下行过程中,软件将接收的姿态传感器数据和GPS接收机数据自定义格式进行打包,一起输出给无线数传设备。
固定站操控软件完成Beeline接收机数据、平台姿态传感器数据和流动站通过数传设备输入的数据接收工作,经过处理后,将有效的姿态数据通过USB接口输出给试验设备使用。在结构上由以下功能模块组成:
· 初始化模块。
该模块在软件启动时,完成程序初始化,对各个端口的设置,包括串行口协议设定,USB接口初始化等。另外还要对固定站的Beeline GPS 接收机进行初始化设置,以使之按照要求输出有效数据。
· 数据接收模块。
数据接收模块包括固定站GPS数据接收子程序、流动站打包数据接收子程序和固定站平台姿态数据接收子程序。
· 数据处理模块
数据转换模块完成数据包的解包过程,并且根据流动站与固定站定位信息计算两者间距离及流动站以固定站为原点在空间直角坐标系中的方位角和俯仰角。
· 数据输出模块
数据输出主要用来将有效的姿态数据通过USB接口输出给受试设备。
3.2 软件设计难点分析
从图1中不难看出,无论是固定站还是流动站,对串口进行操作都是一个不可或缺的方面。固定站有3个串口操作,流动站需要3个串口操作。因此,设计过程中,统一采用YbCommDevice串口控件实现。通信参数可直接在属性中设定,在程序运行过程中也可通过输入界面进行多次更改。它支持任意格式的数据包收发,支持多种数据包协议,操作简单、实用,是一个较为实用的C++ Builder串口控件[4]。在实现时,按照协议统一的原则,设定串口数据格式为9600bps,1个起始位,8个数据位,1个停止位,无奇偶校验。
在软件的设计开发过程中发现包括GPS数据、传感器数据等各种数据包均有固定格式,因此, 数据包的格式分析是重要一环。
1.GPS输出格式分析[6]:两型GPS接收机的定位信息格式为NMEA-0183格式。这一格式是较常用的一种数据通信标准,它是在0180和0182的基础上增加了GPS接收机输出内容而完成的。此格式直观、易处理的优点使得几乎所有的接收机及OEM板都采用了这一格式。典型输出的语句如下所示:
$ AABBB,ddd ……………………ddd,*hh<CR><LF>
其各字段定义如下:
$:起始语句头;
AA:对话设备识别符;
BBB:语句名;
,:域分隔符;
ddd…ddd:发送的数据内容;
*:校验和符号;
hh:校验和;
<CR><LF>:终止符(回车、换行)。
2.倾角传感器输出格式分析[8]:倾角传感器数据包为6字节的定长数据包,数据格式如表1所示。数据头字节和最后的校验和字节用于通信同步,实际格式为ASCII码。具体定义如下:
表1:倾角传感器数据包格式
3.USB接口操作:在对USB进行操作的时候,必须要利用WinDDK将设备驱动程序进行编译,主要步骤为:得到设备的厂家标识和产品标识,利用驱动程序的GUID值获取设备的文件名, 用 CreateFile 函数打开设备,接着利用设备文件名和驱动程序里面的 Pipe 名打开 Pipe, 访问这个 Pipe 对应的 USB 端点,利用CreateFile 得到的设备句柄,从而通过 DeviceIoControl 函数实现设备规定的动作。需要注意的是厂家标识、产品标识和GUID值在驱动程序的“*.inf”文件里面就可找到,如果没有,则需要联系设备生产厂家了;Pipe 名和DeviceIoControl函数的参数需要参考驱动程序资料才能找到。
相关代码如下:
HANDLE hPipe = OpenDevPipe("Pipe1"); //驱动程序里面的 Pipe 名, 对应访问某个端点的 I/O,需要与驱动一致
if(hPipe != INVALID_HANDLE_VALUE) //打开 Pipe 成功
{
WriteFile(hPipe, Buffer, BytesToWrite, &nBytesWritten, NULL); //把 Buffer 里面的字节写入 hPipe
CloseHandle(hPipe);
}
//使用 DeviceIoControl 访问 USB 设备
HANDLE hDevice = OpenDevice();
if(hDevice != INVALID_HANDLE_VALUE) //打开设备成功
{
if(DeviceIoControl(hDevice, IOCTL_READ_xxxx, &IOBlock, sizeof(IOBLOCK), &c, 1, &nBytes, NULL))
{ //操作成功,
}
CloseHandle(hDevice);
}
4 结束语
在系统设计中,以PC/104嵌入式计算机模块为核心,构建了由GPS接收机、无线数传设备、倾角传感器等设备组成的实时姿态数据采集系统,试验表明,系统能够实时、稳定、连续地提供固定站和流动站的姿态信息、定位信息以及两者的相对位置信息,从而能更好地掌握试验设备载体的运动状态,为得到精确的试验结论提供保障。
本文主要创新点在于以PC/104嵌入式计算机模块为核心,构建由GPS接收机、无线数传设备、倾角传感器等设备组成的实时姿态数据采集系统,分析了软件设计的难点及实现方法。在工程实践上具有实际意义。
参考文献:
[1] 王惠南.GPS导航原理与应用[M].科学出版社,2003.8
[2] 彭树生. 3mm接收机的PC104数据采集与控制电路设计[M].微计算机信息(测控仪表自动化),2003.NO.11 P.36-38
[3] 刘基余.GPS卫星导航定位原理与方法[M].科学出版社,2003.8
[4] 范逸之等.C++ Builder与RS-232串行通信控制[M].清华大学出版社,2002.6
[5] 陈灿煌.C++ Builder 6彻底研究[M].中国铁道出版社,2003.1
[6] Beeline GPS Receiver User’s Mannual[S].Novatel Company.
[7] Garmin25 LP GPS Receiver User’s Mannual[S].Novatel Company.
[8] CXTILT02E_02EC User’s Mannual[S].CrossBow Technology,INC
[9] Jeffrey S, Yoaz B et al. Micro GPS: On-Orbit demonstration of a new approach to GPS for space applications[J]. Navigation, ION, 2000, 47(2)