APP下载

海洋要素多设备数据采集系统的设计

2011-03-21高振斌

河北工业大学学报 2011年2期
关键词:视图数据包观测

高振斌,毛 健

(河北工业大学 信息工程学院,天津 300401)

随着定量遥感技术的发展,人们对遥感数据的准确度提出了更高的要求,除了不断改进和研制新型遥感器外,还需要对遥感器的测量结果进行精确定标,也就是用现场观测仪器采集的数据校准遥感器或评价遥感数据[1].作为实现海洋监测的有效手段之一的海洋遥感技术同样面临定标检验的问题,充足的校验数据对海洋监测的发展具有重大意义.目前,国际海洋环境监测正在向着高集成度、综合性、持续性、多平台、立体化、网络化和智能化方向发展,如NOAA综合海洋观测系统(IOOS)[2].而我国在海洋监测信息数据处理和分析方面相对比较落后,发展比较缓慢,其中一个制约因素就是缺乏区域和局地尺度的连续监测[3],缺少现场海洋数据.现有的一些数据采集系统[4]或是观测设备种类单一,不能提供多样化的数据,或者针对性不强[5],不能满足海洋遥感定标检验这一特殊应用.基于这种情况,本文设计了一种多设备的数据采集系统,将多种观测仪器集成到同一平台,统一管理,实现长时间的连续监测,完成多种海洋要素的实时采集,可以为海洋遥感定标检验提供全面可靠的实验数据.

1 系统组成

图1 系统组成框图Fig.1 System block diagram

本系统安装于海洋石油平台上,为了便于维护,整个系统采用模块化设计,共分为现场采集单元、现场控制及数据处理单元、远程监控及通信单元、电源管理单元4个部分,如图1所示.

1.1 现场采集单元

现场采集单元主要包括科研用观测仪器,如微波散射计、微波辐射计、水上光谱仪、太阳光度计、CCD相机等,除此还有GPS、自动气象站等辅助设备.其能够按照控制指令转换工作状态并及时向现场监控单元反馈信息,协同完成现场海洋数据的采集任务.

1.2 现场控制及数据处理单元

这部分主要由两台计算机组成,其中一台负责控制,通过接口电路,完成本地单元和现场采集单元之间的通信,根据预先设置的观测方案或按照远程监控单元的指令对系统进行观测控制,接收采集的数据并存储、显示;另一台负责数据的进一步处理,将数据备份和负责向远端传输采集的数据.

1.3 远程监控及通信单元

这个单元负责数据的管理及观测指令的控制.远程监控计算机通过通信网络对平台观测活动进行监控,接收平台传回的数据.用户根据权限对数据中心进行操作,获得所需数据信息.

1.4 电源管理单元

主要负责对整个系统的电源供给.采用市电为主,UPS电源为辅的方式.工作时采用市电供电,遇到断电情况自动切换到UPS电源供电模式,以维持系统的短时间运行,完成数据的存储、系统的正常退出等工作.

2 主要功能实现及关键技术

本系统软件基于Windows操作系统编程实现,采用VisualC++语言使用MFC进行设计,完成人机交互和数据的传输、存储、查询等功能.

2.1 软件界面

由于本系统涉及多个观测仪器,因此选择单文档多视图结构,利用多视图把系统中与各个仪器对应的功能模块表现出来.

2.1.1 主窗口切分

将主窗口设计成3部分,分别对应视图SysView、ViewN(N=1、2、…)和StateView.通过在CMainFrame类中增加虚函数OnCreateClient,利用其中CMySplitterWnd类型的两个对象m_wndSplitter和m_wndSplitter2实现主窗口切分,主要代码如下:

2.1.2 多视图之间的切换

人机交互操作主要是在 CViewN(N=1、2、…)中完成,当前显示的总是用户正在操作的某一个界面.在SysView中添加一个树形控件,通过鼠标点击控件的不同节点来发送对应的消息,完成视图之间的切换.切换过程如图2所示.

相关代码如下:

图2 视图切换过程Fig.2 View sw itching process

2.2 现场通信

鉴于观测设备都带有RS232/485接口,系统采用串行通信完成本地控制计算机与现场观测仪器之间的数据传输.在Windows环境下实现串行通信常见有3种编程方法:应用MSComm控件、利用API函数编程和使用CSerialPort类.本系统选用第1种方法,以RS485总线将各观测仪器连成网络,通过统一通信协议进行控制.CCD相机接口特殊,本文不作讨论.

2.2.1 通信协议

本系统采用主从式网络结构,通信协议中数据包的构成如表1所示.采用ASCII编码方式,通过包头和包尾表示数据的起止;为每个设备分配一个唯一的通信地址,通过不同的设备标识寻址通信;命令参数是功能码;数据段表示数据的具体内容,其结构见表2.

表1 数据包结构Tab.1 Data packet structure

根据实际定义功能码,功能码告之被访问的从设备要执行何种功能,数据段包含了要执行功能的任何附加信息.当从设备回应时,它使用功能码来指示是正常回应还是异议回应.对正常回应,从设备仅回应相应的功能代码.对异议回应,从设备对功能码最高要位置1.例如:发往从设备的数据包要求读寄存器数据,将产生如下功能代码:00000011(十六进制03H).对正常回应,从设备仅回应同样的功能代码03.对异议回应,它返回:10000011(十六进制83H).这样,同CRC校验一起保证通信的可靠性.

2.2.2 对数据包的处理

对数据包的处理一般过程是边接收边处理[6],对接收的每一个字符进行判断,在程序中每当串口缓冲区有一个或一个以上字符时就触发串口通信事件,该事件驱动串口通信事件处理函数,对接收的数据处理,判断是否为包头,再判断是否为包尾,若是包尾,就对数据进行校验,校验正确则将数据拆包,按照规则读出数据信息.在程序的主线程中完成数据接收,在CSysView类中完成通信事件处理函数OnComm,对串口数据包的处理流程如图3所示.

表2 数据段结构Tab.2 Data segment structure

2.3 数据存储

本系统的主要目的就是获取海洋数据,因此数据存储也是很重要的内容.需要存储的数据包括两个方面,一是观测数据,一是系统工作日志.考虑到以文件的形式保存数据更便于使用,设计了文件结合数据库的存储方案.各观测数据以文件的形式单独存储,按年、月设2级存储目录,以“设备名+日期”的命名文件,每个仪器每工作一次存储2个文件,一个头文件.cfg和一个数据文件.dat.本地数据处理计算机共享采集到的数据并生成一个前两个文件的压缩包,以便于网络传输时节约带宽.在MFC编程中,CFile类提供了对文件的支持,应用CFile类可以很好的实现观测数据的存储.可利用CArchive重载的“<<”操作符将数据串行化到对应的文件中,非常方便.

系统的工作日志也需要存储,如仪器开关机时间、值班人员基本信息、系统的运行模式、数据文件的索引、系统故障信息,这样便于整个系统的维护、管理,表3举例列出了几个需要存储的信息.

利用ADO访问ACCESS数据库方式构建数据中心[7].ADO实际上是一种基于COM的自动化接口技术,并以OLEDB为基础,在使用时,首先需要导入ADO库,然后建立和维护与数据库的连接,对数据库的操作主要是应用_Connection、_Command和_RecordsetPtr这三个智能指针完成,与此相关联的3个对象如下:1)Connection对象:用来建立与维护与数据库的连接.2)Command对象:用来在数据库中执行命令,如执行SQL语句.3)RecordsetPtr对象:用来更新数据库,如插入新纪录.

图3 数据包处理流程图Fig.3 Packet processing flow chart

2.4 数据显示和查询

表3 系统工作日志Tab.3 Directory of system log

由于数据接收存储和显示是在不同的视图里,所以需要在不同视图之间的进行数据传递,本文使用全局变量达到这一目的,这样不同视图在访问同一变量时非常方便.UpdateA llViews函数会通知视图刷新,在CView1、CView2、…各自的OnUpdate函数中完成数据的更新显示.OnDraw函数一般是用来响应画图的,但是考虑到数据曲线的绘制比较费时,可另开一个线程用来绘制数据曲线.

以文件的形式存储数据,非常便于检索.通过数据库表中的文件索引字段查找到文件位置,利用CArchive重载的“>>”操作符直接将数据从对应的文件中读取出来,通过查询界面显示.

2.5 定时采集

采集的数据主要是海洋要素,或者说是气象数据,这些数据变化连续,在极短的时间内不会骤变,即使丢掉个别数据也不会对结果造成重要影响,因此本文选择使用最常用的Windows定时器来设置采集周期,在CSysView中添加WM_TIMER消息.为每个需要定时采集的设备分配一个定时器,在回调函数OnTimer中根据定时器ID分别发送采集命令.

2.6 网络传输

网络通信负责两个工作,一是远程监控单元向现场发送控制指令;二是远程监控单元接收现场传回的观测数据文件.实现第一个内容的方法是远程发送自定义简单协议,现场解析,根据协议具体内容完成远程监控.传输文件的思路是读取文件到buffer中,发送buffer中的数据流,接收方将接收的数据流再重新存储成文件.传回的观测数据相对控制指令数据量是比较大的,应选用合适的通信网络.首选海底光缆,通过石油系统内部网络,实现简单,传输速度快,安全可靠,而且成本比较低.也可选择无线传输,借助INMARSAT海事卫星通信,这种通信方式费用相对比较高.我国自主研发的北斗系统也逐渐被应用到实际工作中[8].考虑到对数据使用的时效性要求不高,所以人工携带移动存储设备将现场数据拷贝到远程数据中心可作为一种辅助的手段,这种方法尤其是针对CCD相机采集的图像数据.

网络部分可以采用socket编程,CSocket类派生于CAsyncSocket,可配合CSocketFile和CArchive完成数据的发送和接收.远程计算机发出请求,待平台应答后数据开始传递,系统能够自动从上一次数据传递的节点继续传递,也可人为选择所需的数据传递.如果传递成功则标记此信息已传输.通信的可靠性由底层的TCP/IP协议进行保障.

3 实验室模拟调试

在软件调试的过程中,以3m in为采样周期,按照前面的自定义通信协议对4个温度传感器进行定时采集实验,收到的数据包内容如下:##01,03,ST=26,CN=2011,MN=120100LDGDZ001,CP=&& Temp-Rtd=18.40,&&,EEC9,.将其中有用的温度数据提取出来进行显示和存储,如图4、表4所示.

通过表4可以看到,Windows定时器能够完成采集工作,且数据接收正常,未出现丢帧现象,系统工作稳定.

图4 软件运行界面Fig.4 Software interface

4 结束语

本文给出了海洋要素数据采集系统的设计方案,针对主要功能,详细地说明了实现方法,编写了系统应用软件.设计的自定义串行通信协议将各观测设备集中控制,基于文件和ADO技术的存储方案符合系统实际需要.本系统依托海洋石油平台,保证了试验场环境的真实性,整体设计能够满足海洋遥感定标检验平台对多设备集成的要求,能够为定标检验提供可靠的科研数据.

表4 数据文件列表Tab.4 Data list

[1]陈清莲,唐军武,王项南.海洋光学遥感器的辐射定标与数据真实性检验综述 [J].海洋技术,1998,17(3):13-26.

[2]NOAA integrated ocean observing system(IOOS)program[R].The united states national oceanic and atmospheric adm inistration.2007.

[3]靳熙芳,王硕.海洋环境数据智能化监控的现状与关键技术 [J].海洋预报,2009,26(2):95-102.

[4]杨跃忠,孙兆华,曹文熙,等.海洋光学浮标的设计及应用试验 [J].光谱学与光谱分析,2009,29(2):565-569.

[5]姜静波,李思忍,龚德俊,等.海洋要素多通道实时采集系统的设计 [J].测控自动化,2009,25(4):91-92.

[6]龚建伟,熊光明.Visual C++/Turbo C串口通信编程实践 [M].北京:电子工业出版社,2004.10.

[7]李立刚,赵彩云,秦明慧,等.海洋观测数据管理系统的设计与实现 [J].海洋预报,2010,27(2):53-57.

[8]彭伟,徐俊臣,杜玉杰,等.基于北斗系统的海洋环境监测数据传输系统设计 [J].海洋技术,2009,28(3):13-15.

猜你喜欢

视图数据包观测
观测到恒星死亡瞬间
SmartSniff
5.3 视图与投影
视图
Y—20重型运输机多视图
SA2型76毫米车载高炮多视图
天测与测地VLBI 测地站周围地形观测遮掩的讨论
可观测宇宙
高分辨率对地观测系统
基于Libpcap的网络数据包捕获器的设计与实现