APP下载

基于ARM的海洋站水文气象自动观测系统设计

2012-01-10冯林强成方林

海洋技术学报 2012年2期
关键词:水文气象潮汐串口

叶 颖,冯林强,成方林,李 博

(国家海洋技术中心,天津 300112)

基于ARM的海洋站水文气象自动观测系统设计

叶 颖,冯林强,成方林,李 博

(国家海洋技术中心,天津 300112)

针对国内现有的基于单片机或PC/104的数据采集系统的不足,介绍了一种基于ARM(Advanced RISC Machines)平台和单片机平台的数据采集系统。它结合了国外先进的数据采集技术,具有功耗低、体积小、性能高,软、硬件扩充灵活的特点,其通用性、模块化和可扩展性能满足浮标、船用气象仪等海洋水文气象仪器设备研发的需求。

ARM;数据采集;嵌入式

海洋站水文气象自动观测系统的主要功能是按《GB/T 14914-2006海滨观测规范》的要求长期、连续、自动地观测表层海水温度、表层海水盐度、潮汐、波高、波周期、波向、风速、风向、气温、相对湿度、气压、降水量和能见度等水文气象要素,适用于海岸、海岛海洋站和海上油气平台等,是海洋环境监测网的一个重要组成部分。为适应海洋预报、防灾减灾、经济建设、国防建设和科学研究的需求,海洋站水文气象自动观测系统观测的要素将逐步增加,功能将更加复杂[1]。

目前,国内该系统大多数采用单片机平台或PC/104平台来开发。采用单片机开发,虽然具有价格便宜、功耗低等优点,但其处理速度、存储容量及软件硬件扩展方面受到一定的限制,无法满足系统功能日益复杂的需求;采用PC/104为开发平台,虽然软件硬件容易扩充,但功耗高、体积大、应用范围有限。

ARM是32位的RISC微处理器,它有很高的运算速度和处理能力,具有体积小、功耗低、成本低、可靠性高等优势,并且支持Linux操作系统。目前已经普遍应用于工业控制、通信系统和消费类电子产品中。

本文的主要目的是设计一种软硬件扩充方便灵活、低功耗、高性能的基于ARM的海洋站水文气象数据采集平台。按照《海滨观测规范》的要求,对风速、风向、气温、相对湿度、气压、降水、能见度、水位、水温、盐度等要素进行采集、质量控制、计算处理、数据存储和通讯传输,缩短系统的开发周期,提高系统的可靠性和系统集成的灵活性。

1 系统硬件设计

1.1 开发平台

系统硬件采用UC-7408。UC-7408是MOXA公司专为嵌入式应用而设计的智能通信服务器,采用高性能、低成本、低功耗的32位RISC微处理器作为中央处理器,具备8个RS-232/422/485串口、双10/100 Mbps以太网端口、1个PCMCIA、1个USB接口及用于数据存储扩充的CF卡接口,此外还配置了8个DI/DO通道,可用来处理I/O端口发生的事件[2]。

1.2 模拟信号和频率量信号采集

使用单片机实现对多路模拟信号、频率信号和数字I/O信号的采集,将采集的信号通过串口传输给UC-7408,采集单元电路结构如图1所示。

图1 数据采集单元电路设计原理图

1.3 数据存储器

由于海洋站水文气象自动观测系统采集的要素多,需要数据存储量大,采集系统选用大容量的CF卡存储数据。上位机可以发送命令向采集系统补要观测数据,保证系统业务化运行。

2 系统软件设计

2.1 软件开发平台

在Linux操作系统下使用C语言开发系统软件。Linux是一个多用户、多任务的操作系统,具有开源性、支持多任务、多用户、运行稳定可靠等优点。C语言具有代码可读性好、可移植性好、运行效率高、升级维护方便等诸多优点,适合用于数据采集系统软件的开发。

2.2 软件总体设计

按照模块化设计方法进行应用软件的设计。主要模块有初始化模块、数据采集模块、数据处理模块、数据显示模块、数据存储模块、数据通信模块、参数设置模块和命令解析处理模块。

(1)初始化模块

为应用软件的运行做准备,主要是对系统硬件进行自检,读取设置参数和暂存的数据,初始化硬件接口,设置数据缓冲区等。

(2)数据采集模块

通过串口进行数据采集,分析传感器或单片机采集模块的数据传输格式,获取相应的测量数据,根据传感器定标参数计算工程量。

(3)数据处理模块

由于海洋站现场的环境比较恶劣,干扰源较多,为了减少对采样数据的干扰,提高数据的准确性,需要对采样数据进行数字滤波,剔除其中的奇异项。计算及处理的数据有:气温、相对湿度、本站气压、能见度、表层海水温度、表层海水盐度每分钟的平均值、日界内的最大值和最小值;每分钟的降水量、20时至08时降水总量、08时至20时降水总量和1 d内降水总量;风速和风向每分钟的平均值、日界内的最大风速及对应风向和出现的时间、极大值及对应的风向及出现的时间、出现大于17 m/s的大风起止时间段;每分钟潮位的平均值,日界内高潮潮高及对应的潮时,低潮潮高对应的潮时;分析波浪数据,计算波浪特征值数据;分析海流数据,计算海流特征值数据。

(4)数据显示模块

按相关规范和标准的要求显示所观测到的数据,采用分页的方式显示测量数据,便于用户安装、调试和维护。

(5)数据存储模块

首先将采集数据存入临时数据文件,每个要素1个月生成1个数据文件。跨日界时,将每个要素1 d内处理生成的数据作为一条记录存入相应的数据文件,并初始化相应的临时文件。当系统重新启动时,初始化模块将自动读取临时数据文件。

(6)通信管理模块

根据具体应用,选择 RS-232/RS-442/RS-485、GSM、CDMA/GPRS、VHF、因特网、北斗卫星或Inmarsat-C等通信方式与上位机通信。通信管理模块根据通信方式,调用相应的通信模块与上位机通信。

(7)参数设置模块

对站位信息、传感器信息、接口、通信、时间和数据存储等信息进行设置。站位信息有站代码、站位经纬度、海拔高度等;传感器信息有传感器是否开启、传感器类型、传感器参数等;通信设置主要内容有通信类型、通信端口、通信协议等;存储设置包括存储数据的类型和存储时间等。

(8)命令解析处理模块

上位机通过向数据采集系统发送命令,得到系统观测数据、运行状态后,对系统配置参数进行设置。数据采集系统接收到上位机发送的命令后,对命令进行解析。如果是数据命令,组织相应的观测数据、运行状态数据或配置参数向上位机发送;如果是配置命令,则对数据采集系统的配置参数进行修改。采用命令交互形式,能够对数据采集系统进行远程监控、维护和管理,便于用户使用。

数据采集系统软件流程如图2所示。

图2 数据采集系统软件流程图

2.3 主要模块实现

2.3.1 数据采集模块

数据采集和数据通信部分主要通过串口来实现,因此开发串口驱动程序是软件实现的一个基本且重要的任务。主要设计内容有串口驱动程序,串口接受和发送管理模块。

(1)串口驱动程序

为了有效管理和使用串口,开发了串口驱动程序,实现对串口的读写操作。

串口设置主要驱动函数:

(2)串口接收和发送管理模块

每个串口分别建立一个接收缓冲区和发送缓冲区,将采集到的数据放入对应的接收缓冲区中,将要发送的数据放入对应的发送缓冲区中。缓冲区为环形结构,提高了串口接收和发送的效率。

①串口接收管理[3]

数据采集系统需要对多个串口进行接收数据的操作。若采用阻塞模式,每个串口的读取操作都需要一个独立的线程在工作,这将加大系统的开销。若采用无阻塞模式,轮询频率低容易丢失数据,轮询频率高则会浪费大量CPU时间。信号驱动方式在一个进程中仅支持一个SIGIO信号,常用于接收紧急数据。数据采集系统为多串口采集,不希望任何一个流被阻塞。针对上述的问题,I/O多路转接技术是一种比较好的解决方案。

I/O多路转接技术是先构造一张有关描述符的列表,然后调用一个函数,仅当有一个或多个描述符已经准备好进行I/O时才返回,否则一直处于阻塞状态。在返回时,该函数告知进程哪些描述符已经准备好可以进行I/O。

每次循环时,都采用select函数查询是否有描述符准备好,有则进行处理,无则处于阻塞状态,直到有数据准备好为止。在处于阻塞的时间里面,可以让CPU处理其他事务,避免了轮询方式所占用的大量CPU时间。

串口接收管理流程图如图3所示。

②串口发送管理

发送管理模块查询缓冲区中的内容,采用分包的形式发送缓冲区中的内容,使每个缓冲区都有相同的机会发送数据。

部分程序如下所示:

图3 串口接收管理流程图

2.3.2 数据处理模块

(1)数据报文解析

将数据采集到缓冲区后,需要对环形缓冲区中的数据进行解析并保存在生成的文件中。

以XQY1-1气压传感器为例介绍气压传感器的数据解析,其它数据解析类似。XQY1-1气压传感器观测本站气压,传感器通过RS232端口输出,每s输出一组观测数据,输出数据格式为:$BP,XXXX.X<cr><lf>。如:$BP,1012.4<cr><lf>。

如果观测数据完整,在解析数据时首先找出整条报文数据的开始字符和结束字符,并按照数据长度截取观测数据的实际测量值,最后将解析出的观测数值放入临时缓冲区等待保存。

(2)数据处理[4]

对于解析后的数据,根据《海滨观测规范》中对观测数据的要求,需要对数据进行计算、处理。

高低潮及对应潮时的挑选比较复杂。《海滨观测规范》中对高(低)潮挑选的基本要求是:幅度超过10 cm且时间超过2 h者应作为一个高(低)潮来挑选。因此,首先确定高(低)潮可能出现的区间,其次计算这些区间可能出现高(低)潮高及对应的潮时,最后再确定真正的高(低)潮高及对应的潮时。

①确定高(低)潮可能出现的区间

如果把潮汐随时间的变化看成一条连续变化的曲线,这样高潮只能出现在此曲线的峰(在某一区间内的最大值),低潮只能出现在此曲线的谷(在某一区间内的最小值)。因此,确定高(低)潮可能出现的区间,即成了求潮汐变化曲线的峰和谷。

假设共有连续3 d的每分钟的潮汐数据,共4 320个数据。在观测日界到来时,先用9999做为本日内每分钟的潮汐值。每计算出一个潮汐值,用测量的潮汐值代替9999。

假设step为向前滑动的步长,值为60;value为判断潮汐升降时的阈值;i计算升降数值的个数,其范围是1≤i≤4320/step-1。

Xi*step和X(i+1)*step这两个数中,只要其中有一个为9999,则不能判断在区间[i*step,(i+1)*step]内潮汐的升降趋势,把计算结果设为0。如果Xi-Xi+offset<-value,表示潮汐处于下降趋势,把计算结果设为-1。如果Xi-Xi+offset>value,表示潮汐处于上升趋势,把计算结果设为1。这样计算后得到一个含71个表示潮汐升降趋势数据的数组,则可以判断出各峰(谷)所在的区间,当数组中的数值由负数变为正数时,有一个谷出现,反之肯定有一个峰出现,当数值为零时忽略不计。

确定每个波峰(谷)内出现可能的高(低)潮潮高和对应潮时

假设y=f(x)是[a,b]区间内潮汐随时间变化的函数。根据连续函数的性质,[a,b]区间上的连续函数y=f(x)至少存在一个区间[a1,b1](其中[a,b]包含[a1,b1]),使得函数f(x)在[a1,b1]上达到最大值。同理,在[a,b]区间上至少存在一个[a2,b2],使得函数f(x)在[a2,b2]上达到最小值。因此,只要找出[a,b]内函数的最大值即可确定高潮的潮高,关键是确定高潮所对应的潮时。设高潮为maxab,根据此值在[a,b]内找所有的最大值区间[ai,bi],其中 i≥1。

当i=1时,表示最大值只在一个闭区间内出现。假设在闭区间内出现的最高值的个数为n(n≥1)。如果n为奇数,则(n+1)/2点数据对应的时间为高(低)潮对应的潮时;如果n为偶数,则n/2点数据对应的时间为高(低)潮对应的潮时。

当i>2时,表示最高(低)值在多个闭区间内出现,此时先计算出最高(低)值持续时间最长闭区间数个数。设此值为m(m≥1),若m为奇数,取(m+1)/2为高(低)潮出现的闭区间;若m为偶数,取m/2为高(低)潮出现的闭区间。确定好这个闭区间,计算潮时的方法和i=1时相同。

2.3.3 命令解析处理模块

数据采集系统与数据接收处理机之间的命令见表1。数据采集系统接收到命令后,对命令进行分析,然后组织相应数据向上位机传输。传输的数据由数据包和一个结束包组成。传输的数据分为实时数据、整日数据和原始数据3类。

表1 命令类型

3 总结

通过将PWD20能见度仪、XZY3数据采集器、SCA11-3型水位计、声学测波仪探头分别与4个串口连接,Console Port作为通信端口与PC连接。在PC机上运行超级终端,对设计的海洋水文气象自动观测系统进行了测试,结果表明该系统达到了设计要求。

本文以通用性、模块化和可扩展性为目标,硬件平台采用了ARM处理器与单片机处理器相结合的方式,在Linux操作系统下使用C语言开发应用软件,建立了一个功耗低、体积小、性能高,软件和硬件扩充方便灵活的嵌入式数据采集系统。该系统能满足海洋站、船舶、浮标等海洋水文、气象、水质监测设备研发的需求。

[1]侍茂崇,高郭平,鲍献文.海洋调查方法[M].青岛:青岛海洋大学出版社,2007:1-22.

[2]Moxa.UC-7408_Users_Manual_v6(6 th)[M],2009.

[3] 李萌.Linux操作系统多串口编程技术[J].火控雷达技术,2008,37(3):1-4.

[4]中国国家标准化管理委员会.GB/T14914-2006.海滨观测规范[S].北京:中国标准出版社,2006.

Research on High Accuracy Frequency Estimating and the Frequency Stability of Line Spectrums Radiated by Ships

LIU Bao-liang1,XU Quan-jun2,DENG Yu-fen1,SUN Fang1
(1.Navel Institute Hydrographic Surveying and Charting,Tianjin 300061,China;2.Meteorological and Hydrological Bureau of General Staff Headquaters,Beijing 100081,China)

As the progress of underwater acoustic technology,very low frequency signal analysis attracts more and more interests.The stability analysis of very low frequency is quite important to line spectrum detection.Traditional adaptive frequency estimator cannot reach the qualification under low signal to noise ratio circumstance.To enhance the ability of line spectrum detection and increase the accuracy of frequency estimating,the adaptive frequency estimator was combined with an adaptive line enhancer with coherent adder.The simulation confirms its well performance of frequency estimating under low signal to noise ratio.Sea trial data analysis indicates that the very low frequency line spectrums radiated by ships are quite stable and the frequency instability is within±0.01 Hz.

frequency estimating of line spectrum;coherent adder adaptive;very low frequency

P715,TP274+.2

B

1003-2029(2012)02-0040-05

2011-11-16

叶颖(1987-),女,硕士研究生,研究方向为海洋观测。

猜你喜欢

水文气象潮汐串口
潮汐与战争(上)
浅谈AB PLC串口跟RFID传感器的通讯应用
绝美海滩
长江水文气象服务发展历程
浅析抛止荡锚来防止船舶碰触码头
潮汐式灌溉控制系统的设计及应用
干法纸的潮汐
三峡大坝建成前后下游水文气象序列的变异分析
数字电源内部数据传输的串口通信方法实现
USB接口的多串口数据并行接收方法探索