波浪是海洋监测中的重要监测参数。SZF型波浪浮标通过GSM通信将监测的海浪参数上传到岸站接收系统,通过上位机软件进行数据的存储、显示、二次处理来进行预定海域的海浪参数监测。本文正是基于Microsoft Visual C++强大的可视化编程环境来开发接收系统,完成友好的人机交互操作界面。
1 SZF型波浪浮标简介
SZF型波浪浮标是国家863计划海洋监测技术成果标准化定型产品,自定型以来已在我国海洋台站、海洋工程、海洋调查等领域应用。
SZF型波浪浮标采用重力加速度原理进行波浪测量,当波浪浮标随波面变化作升沉运动时,安装在浮标内的垂直加速度计输出一个反映波面升沉运动加速度的变化信号,对该信号做二次积分处理后,即可得到对应于波面升沉运动高度变化的电压信号,将该信号做模/数转换和计算处理后可以得到波高的各种特征值及其对应的波周期。利用波高倾斜一体化传感器、方位传感器除可以测得波高的各种特征值和对应的波周期外,还可以测得浮标随波面纵倾、横倾和浮标方位的三组参数,通过计算处理,得到波浪的传播方向。浮标测得的波浪各特征值,由浮标上的通信机实现测量数据的发送传递,并对测量数据进行存贮。
原本的数据接收处理机外型为一台式机箱,尺寸不大于400 mm×400 mm×160 mm,重量不大于15 kg.起着接收、处理浮标发送数据的作用。其中安装了数据处理和控制板、数据接收机、接收天线、微型打印机和数据存储器。另外具备与计算机通信的RS 232接口,可将数据实时传送给计算机。由于体积小重量轻携带方便,可以适合野外等场合作业。但在岸站接收数据的情况下,需要配备一台PC机以进行上传数据给上一级数据中心。在此基础上,使用PC机来进行数据接收,就可以实现数据接收和上传两种功能,节省了不必要的开支。
2 GSM通信接口设计
GSM是全球性标准的蜂窝无线电通信系统,具有防盗拷能力佳、网络容量大、手机号码资源丰富、稳定性强不易受干扰、信息灵敏等特点。适合作为近海海域通信系统媒介。
SZF型波浪浮标通过GSM模块来进行数据通信。数据以短信形式发送至短信中心,短信中心再转发给岸站接收模块。由于网络原因,网络中心短信可能出现延发现象,接收模块可能同时接收到多包数据,数据包中数据信息包含浮标处理器时钟的发送时间,这样接收包中解析数据不会造成数据的混乱。
本文采用的GSM模块接口为五芯TTL电平,上位机接口为RS 232接口,在模块和上位机之间使用电平转换线连接以适应上位机的接口电平。接口设计如图1,图2所示。电源使用10 V直流电源。
3接收系统设计
SZF型波浪浮标通过发射模块发送数据包,上位机通过接收模块接收数据包,再通过串口连接到PC机上,在PC机上进行数据的二次处理。上位机接收软件使用可视化开发环境VC++进行开发。数据处理流程如图3所示。
3.1数据接收
由于是通过串口与PC机进行通信,所以在程序设计时选用了Windows下的MSComm控件来进行串口数据接收处理。MSComm控件通过串口传输和接收数据,为应用程序提供串行通信功能,MSComm控件在串口编程时非常方便,本文使用其事件驱动方法,接收串口数据。为事件添加驱动函数程序如下:
ON_EVENT(CSZFRevSysDlg,IDC_MSCOMM1,1,CSZFRevSysDlg::OnCommMscomml,VTS_NONE)
对串口进行初始化设置程序如下:
m_mscom.put_RThreshold(1);
m_mscom.put_InputMode(1);
其中特别注意的是:第一条设置表示串口接收到一个字符就触发处理函数,第二条设置表示设置输入方式为二进制,这样才能对COle Sa leArray变量进行操作,否则COleSafeArray默认为test格式,不方便后面对数据进行解析。
由于本系统Windows开发环境为Vista,所以为了保证在其他Windows环境下也可以运行程序,需要为MSComm添加注册,注册过程如图4所示。
3.2实时显示
系统根据浮标不同工作方式(定时测量方式,连续测量方式和检测工作方式),以不同方式启动/关闭串口。
浮标一般工作在定时测量状态,串口是接收整点前6 min打开,准备接收数据,接收到数据包后,根据通信协议对数据包进行解析,再分别显示在界面相应位置,如图5所示,可供监测人员实时的检测数据。接收整点后10 min关闭串口,进入休眠状态,如果关闭串口时有数据接收中,延时10 s再关闭串口。
此外,显示界面还提供了加密门限值和安全距离设置操作。加密门限值以“十分之一大波波高”特征值作为比较参数,当标准测量测得的十分之一大波波高大于加密门限值时,自动转为加密状态;安全距离设置可以选择5种报警距离,一旦浮标相邻2次测量时间内,浮标移动距离超过设置距离,超位报警灯会显示红色以示报警。
3.3数据存储
数据接收后存储选择Windows的access数据库,access数据库是一种桌面数据库,适合中小型数据量的处理,在处理中小量数据时效率很高,而且简洁方便。考虑到SZF型波浪浮标作为一种小型海洋监测仪器,数据量比较小,所以选用access数据库能更好更快的存储/查询数据。
本文采用ADO方式方式访问access数据库,ADO使用存取数据源的COM组件,它提供了编程语言和统一数据访问方式OLEDB的一个中间层。允许开发人员直接编写访问数据的代码,降低了开发难度。
为了使用COM组件,必须在CWinAPP::InitInstance()函数中初始化COM库:
CWinApp::InitInstance()
{
…
AfxOleInit();
…
}
然后需要引入ADO类型库,需要在stdafx.h文件中加入:
# import“c:\program files\common files\system\ado\msado15.dll”
no_namespace rename(“EOF”,“adoEOF”)
这样就可以连接数据源了,再对access数据库使用SQL语言操作来进行存储数据。
3.4数据查询
本系统提供月查询,在实时显示界面点击“数据查询”,会出现数据查询对话框,可选择一个月份进行数据查询,包含所有的检测数据,界面如图6所示。
4结语
本系统经过实践测试证明,MSComm控件能良好的接收模块发送的串行口数据,通信信号良好,存储数据完整。使用VC++编写的上位机接收界面友好,方便监测人员实时观测数据和查询历史数据。通过一段时间的运行使用,很好的达到浮标岸站接收系统要求,并预留了上传通信接口,以后可以方便的扩展数据向高一级数据中心传输的功能,提高了系统的使用寿命。