- 易迪拓培训,专注于微波、射频、天线设计工程师的培养
基于LabWindows的系留气球地面测控系统研制
摘 要: 针对上海世博会车载系留气球监测系统的应用要求,设计了基于LabWindows的地面测控系统,该系统具有多串口数据采集、数据库存储数据、用SQL语句访问数据库等特点,利用POS和GPS数据实现地面目标定位。
关键词: 测控;数据库;SQL;目标定位;LabWindows
在浮空器领域,地面测控系统的性能和可靠性对于浮空器载荷的工作性能尤为重要。在上海世博会车载系留气球监测系统任务系统中,地面测控系统面向的对象是浮空平台上装载的光电载荷及其配套设备,主要包括可见光高清摄像机、红外相机和高光谱相机、POS(位置与姿态测量)系统及球上测控系统等,图1所示是车载系留气球监测系统任务应用系统的组成框图。
车载系留气球监测系统任务系统地面测控系统软件的目标是保证球上光电平台上各个载荷与球下控制设备的正常工作,对球上载荷的状态数据进行采集、接收、显示与存储,控制球上各个载荷的状态。对球上载荷的某些参数具有报警功能,保证控制命令和参数返回具有很好的实时性,同时测控系统还要对世博园地面目标进行定位。
1 系统功能
车载系留气球监测系统任务系统地面测控系统软件具体功能如下:
(1)数据采集功能。对可见光摄像机、POS系统、红外和高光谱相机、供配电等单元的工作数据与状态数据进行实时采集。
(2)坐标解算功能。解算出气球位置变化引起的可见光监测系统吊舱的姿态变化。
(3)球下目标位置解算功能。利用球载POS系统获得的光电平台姿态和位置以及可见光监测吊舱获得的转角信息解算球下目标点的位置坐标。
(4)遥控功能。对可见光摄像机、POS系统、红外和高光谱相机、供配电单元等进行指令控制,包括通断电、可见光摄像机视轴指向控制、摄像机变焦、任务应用各分系统的通断电及保护等。
(5)数据显示与存储功能。对球载设备的所有遥测数据在球下测控系统操控台上均能实时显示,重要数据存储到硬盘上以供分析。
2 系统设计
2.1 设计工具的选择
在应用程序开发软件中,VC和VB等工具开发周期普遍较长、难度也比较高。美国NI公司推出的NI LabWindows/CVI是一类久经验证的ANSI C集成开发环境,为用户提供了用于创建测试和控制应用的全套编程工具[1]。NI LabWindows/CVI兼有ANSI C的耐用性、复用性和特定的工程性能,适用于仪器控制、数据采集、分析和用户界面开发。NI的数据库连接工具包(Database Connectivity Toolkit)具有完整的SQL功能,与本地或远程数据库可直接交互式操作,高级而易用的功能适用于常见的数据库操作,利用其丰富的按钮和图形等用户界面库函数,可大大缩短软件的开发周期,满足软件开发的实际需要。
根据地面测控系统上述功能要求,采用模块化设计方法把系统分为四个功能模块:串口采集模块、数据分析处理(包括定位)模块、数据显示模块和数据管理模块。采用单线程定时器技术满足各个载荷不同数据采集频率的要求;根据POS提供的数据和可见光监测球舱(稳定转台)输出的的遥测数据,通过空间坐标变换计算球下目标位置;根据遥测下行数据流量大(传输速率6.2 Gb/s)、运行时间长(182天)的特点,采用SQL Tookit工具包应用Access数据库存储数据。系统物理模块框图如图2所示,以下详细介绍其中几个重要的物理模块的设计。
2.2 遥测数据接收模块
LabWindows/CVI编程语言提供了丰富的串口函数,可以很容易实现串口通信功能。利用丰富的RS-232库函数可以方便地实现对载荷的数据/命令收发功能,这些函数包括:OpenCom函数打开串口、OpenComConfig函数设置串口并用设置串口的返回值来判定串口的状态、ComWrtByte函数对串口发送字节、ComReadByte函数由串口接收字节、CloseCom函数关闭串口等[2]。图3所示为串口初始化流程图。
以下为串口初始化程序示例:
//打开并设置串号,波特率为9600,没有校验,8位数据位,1位停止位,最大输入和输出队列长度都为512
OpenComConfig(ComPort,””,9600,0,8,1,512,512);
FlushlnQ(ComPo~); //清空接收队列
FlushOutQ(ComPo~); //清空发送队列
//装载串回调函数
Installc0mcallback(ComPo,eventMask,3,eventChar,ComCallback,0);
CloseCom(ComPo); //关闭串13
2.3 遥控指令发送模块
在车载系留气球监测系统任务应用系统测控分系统中,要求实时监测各载荷的工作状态。根据要求本系统具有不同的数据/控制命令发送频率,最小周期是20 ms,最大周期是1 s。考虑到本系统不要求精确定时,可以采用Timer定时器。
定时器的建立、删除和设置可通过调用New Timer函数、Discard Timer函数和Set TimerAttribute函数来实现。定时响应函数的声明为:
Int CVICALLBACK MyTimerCallback(int reserved,int theTimerId,int event,void *callbackData,int eventData1,int eventData2);
测试系统软件启动之后,建立一个定时器;然后设置定时器的定时时间和响应函数;在软件退出时,删除定时器;在定时响应函数中,调用串口函数和面板响应函数读取串口数据来实现实时状态监测的功能,并定时发送控制指令。
2.4 地面目标位置定位模块
世博会车载系留气球监测系统任务应用系统主要是监控世博会园区,对地面目标进行定位,所有图像数据、定位数据和遥测数据通过地面光缆传送至世博总控中心,为世博园安全提供有力的保障。
POS定位与姿态测量系统及可见光转台均固定于浮空器光电平台安装基面上,当可见光球舱瞄准地面静态目标后,可输出视轴相对可见光转台自身的方位角和俯仰角,利用可见光转台与POS系统(方位和姿态角)的相对位置数据(事先标定),同时采集POS系统输出的定位数据和光电平台的姿态数据,通过一系列的坐标转换后,可获得视轴在以地面差分基站为原点建立的参考坐标系中的直线方程,进而可以得到目标点的定位数据。定位示意图如图4所示。
2.5 数据存储模块
地面操作人员需要对载荷参数、设备状态和设备操作等信息进行实时存储,如果用文本文件、excel等格式存储数据,考虑到本系统数据量大和运行时间长等特点,存储文件将会很大,这对后续文件运行、查询等操作将产生影响,本系统通过创建数据库使数据存储、数据查询等操作变得简单方便。
2.5.1 数据库建立
首先需要新建数据库,将获取的数据写入数据库,本文采用微软公司的Access软件。Access存储方式单一,管理对象包括表、查询、窗体、报表、页、宏和模块, 数据存放在后缀(.mdb)的数据库文件中,便于用户的操作和管理[3]。系统访问数据库时,首先必须用ODBC管理器注册一个数据源,管理器根据数据源提供的数据库位置、数据库类型及ODBC驱动程序等信息,建立ODBC与具体数据库的联系。步骤如下:
(1)打开控制面版→管理工具→数据源odbc;
(2)点击系统dsn,添加并选择Microsoft Access driver(*.mdb),在“数据源名称”中输入定义的名字;
(3)安装Office里面的Accees,安装好以后打开Access,新建一个数据库,命名为***.mdb;
(4)使用设计器创建新的表,一个数据库MDB文件里面可以建立多个表。双击“使用设计器创建表”即可;
(5)填写字段名字,选择字段类型,一条记录可以有很多字段,字段大小即表示是这个字段最多可容纳的字符数。
该模块部分代码如下:
int hdbc; //定义数据库连接句柄
int hstmt; //定义SQL连接句柄
hdbc=DBConnect(”DSN=TestData”); //连接数据源
hstmt=DBActivateSQL(hdbc,”SELECT FROM发通道测试数据表”); //显式激活一个SQL语句,并通过字段索引的方法绑定各个字段到特定类型的变量
DBDeactivateSQL(hstmt); //解除SQL检索语言
DBDiseo~ect(hdbc); //断开与数据库的连接
2.5.2 数据库写入
建好数据库之后,收到串口发来的数据,经分析后,需要将新的数据写入数据库。写入数据库的信息包括载荷状态、报警信息、控制命令等,它们对应不同的表或字段。ODBC本身提供了对SQL语言的支持,所以用户可以直接将SQL语句送给ODBC,首先利用DBCreateRecord函数创建一个新的记录,将测试结果直接赋给新记录的各字段的变量,然后调用DBPutRecord函数保存新的记录[4]。
hstmt=DBActivateSQL(hdbc,string);激活SQL语句。
DBPutRecord(hstmt);刷新数据库。
2.5.3 数据库查询
系统在测试联调时,经常需要对设备运行状态中的数据进行比对分析,即对数据库已有信息进行分类检索。Access提供对SQL语句的支持,SQL是使用关系模型的数据库应用语言,可以用SELECT语句对信息进行检索。
LabWindows/CVI工具包中,用途广泛的SQL命令为[5]:
(1)CREATE TABLE;
(2)SELECT;
(3)INSERT;
(4)UPDATA;
(5)DELETE。
使用SELECT语句可以执行对数据库的下列操作:
(1)取回表中的记录;
(2)更新表中的记录;
(3)新建或删除表中的记录。
hdbc=DBConnect(“UserID=sa;PWD=123;DSN=xx”);//指明连接SQL Server服务器的口令,DSN为连接到数据源的路径
i(f hdbc≤0){ShowErro(r);goto Error;}
MessagePopup(“Successful connect to the server”,“OK”);//判断是否连接成功
hstmt=DBActivateSQL(hdbc,“SELECT * FROM表名WHERE查询条件”);
i(f hstmt≤0){ShowErro(r);gotoError;}
//根据条件对表进行激活并查询
//根据定义的缓存变量类型,对要进行查询的项目分别进行缓存分配。
本文利用LabWindows丰富的函数VI、直观的控件、可嵌入C程序等特点,完成了上海世博会车载系留气球地面测控系统的设计,该系统可完成数据采集存储、载荷控制、目标定位等功能,系统已经过联调、地面考机、升空试验、稳定运行所有阶段性试验,试验表明本测控系统具有功能齐全、稳定可靠、操作简便、人机交互友好等特点。
参考文献
[1] 应秉斌,贺世正.基于LabVIEW的微速差双转子动平衡测试系统的开发[J].流体机械,2006,34(7):39-42.
[2] 史君成,张淑伟,律淑珍.LabWindows虚拟仪器设计[M].北京:国防工业出版社,2007.
[3] 刘方鑫,罗昌隆,等.数据库原理与技术[M].北京:电子工业出版社,2002.
[4] 张桐,陈国顺,王正林.精通LabVIEW程序设计[M].北京:电子工业出版社,2008.
[5] 白凤山,潘长勇,杨知行.用动态链接库技术LabWindows/CVI与高速数据采集卡的通讯[J].电测与仪表,2000(8):54-56.