摘 要:為解決深海動(dòng)力監(jiān)測(cè)中數(shù)據(jù)管理及接口匹配問(wèn)題,采用嵌入式Linux平臺(tái),對(duì)深海儀器進(jìn)行必要的管理和維護(hù),接收儀器的實(shí)時(shí)數(shù)據(jù),經(jīng)驗(yàn)證數(shù)據(jù)后通過(guò)系統(tǒng)網(wǎng)絡(luò)接口將數(shù)據(jù)按協(xié)議發(fā)送到岸上基站。這里主要介紹系統(tǒng)硬件的搭建及軟件的設(shè)計(jì)。經(jīng)實(shí)驗(yàn)驗(yàn)證,該系統(tǒng)可以穩(wěn)定地為岸上基站提供深海動(dòng)力環(huán)境的實(shí)時(shí)數(shù)據(jù)。此外提出系統(tǒng)還待完善的幾個(gè)問(wèn)題。
關(guān)鍵詞:ARM;嵌入式Linux平臺(tái);深海監(jiān)測(cè);多線程
中圖分類號(hào):TP368.1文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1004-373X(2010)02-041-03
Implementation of Data Management Module in Ocean Dynamic Environmental Monitoring System
SONG Zhongqiang,LI Xin
(College of Information Science and Engineering,Ocean University of China,Qingdao,266100,China)
Abstract:To resolve the deep_sea monitoring data management and interface matching problem,this system uses the embedded Linux platform,carries on the essential management and the maintenance to instruments,and receives instruments′ real_time data.After confirming the data through the network is transmitted to the ashore base station according to the protocol.The structures of the system hardware and software design are introduced.The system can provide real_time data for base station from the large number of experiments.System needs to consummate issues are raised.
Keywords:ARM;embedded Linux;deep_sea monitoring;multi_thread
深海動(dòng)力環(huán)境監(jiān)測(cè)技術(shù)是一種能對(duì)海底表面或近海底進(jìn)行定點(diǎn)、連續(xù)、多要素同步測(cè)量的水下監(jiān)測(cè)技術(shù),因?yàn)榫哂虚L(zhǎng)期、原位、實(shí)時(shí)的觀測(cè)能力,使其在深海探測(cè)中起到越來(lái)越重要的作用[1]。由于深海動(dòng)力監(jiān)測(cè)需要多種數(shù)據(jù)的測(cè)量,海洋儀器的數(shù)據(jù)格式通常又不盡相同,這就加大了岸上基站接收數(shù)據(jù)和處理數(shù)據(jù)的難度。而數(shù)據(jù)管理系統(tǒng)在深海動(dòng)力環(huán)境監(jiān)測(cè)中負(fù)責(zé)實(shí)時(shí)與海洋儀器通信,將從海洋儀器得到的數(shù)據(jù)進(jìn)行融合,再通過(guò)統(tǒng)一的數(shù)據(jù)接口發(fā)送到岸上基站,以提高岸上基站的工作效率。
1 整體組成
監(jiān)測(cè)系統(tǒng)的整體組成如圖1所示。由岸上基站、海底網(wǎng)絡(luò)、海底接駁盒、各個(gè)監(jiān)測(cè)系統(tǒng)組成[2]。動(dòng)力監(jiān)測(cè)系統(tǒng)包括數(shù)據(jù)管理系統(tǒng)和三臺(tái)儀器。數(shù)據(jù)管理系統(tǒng)采用低功耗ARM嵌入式系統(tǒng)。儀器1選用RDI公司駿馬系列哨兵型自容式ADCP,具有測(cè)量精度高,測(cè)量量程大,低功耗等特性[3];儀器2選用 Nortek公司的三維點(diǎn)式流速儀,最高采樣率高達(dá)64 Hz,其特有的硬件平臺(tái)令數(shù)據(jù)噪音更低,波動(dòng)更小,適用于實(shí)時(shí)監(jiān)測(cè)和自容式應(yīng)用;儀器3選用SeaBird公司的SBE 19plusV2型CTD,隨著海洋世紀(jì)的到來(lái),CTD 測(cè)量技術(shù)越來(lái)越受到世界各國(guó)的普遍重視[4],除了測(cè)量溫度、鹽度、深度以外,CTD還外掛了兩個(gè)傳感器,用來(lái)測(cè)量濁度和溶解氧。
圖1 整體組成圖
2 數(shù)據(jù)管理系統(tǒng)組成
2.1 硬件搭建
由于系統(tǒng)與儀器的通信使用串口RS 232協(xié)議;系統(tǒng)與岸上基站通信使用TCP/IP協(xié)議,同時(shí)系統(tǒng)還要對(duì)儀器進(jìn)行必要的管理、維護(hù),所以基于上述要求,系統(tǒng)的CPU采用三星公司的S3C2440。S3C2440是基于ARM920T內(nèi)核的16/32位RISC 嵌入式微處理器[5],內(nèi)部集成了3通道UART,8路10位ADC,SD卡接口、網(wǎng)絡(luò)接口等。系統(tǒng)的內(nèi)存為64 MB;2 MB的NORFLASH用來(lái)存放引導(dǎo)程序U_Boot;64 MB的NANDFLASH用來(lái)存放操作系統(tǒng)、根文件系統(tǒng)、應(yīng)用程序等;10/100 Mb/s的自適應(yīng)DM9000網(wǎng)絡(luò)芯片;1 GB的SD卡用來(lái)存儲(chǔ)暫時(shí)性數(shù)據(jù)以及一些必要的系統(tǒng)文件。一個(gè)電流互感器,用來(lái)將36~60 V的系統(tǒng)電壓線性轉(zhuǎn)換為1~3 V,以便CPU的A/D電路可以識(shí)別。
2.2 軟件設(shè)計(jì)
由于系統(tǒng)工作在深海海底,一旦投放系統(tǒng)則維護(hù)費(fèi)用高,維護(hù)周期長(zhǎng),從而對(duì)應(yīng)用程序提出了較高的要求,如:程序必須靈活;程序穩(wěn)定,出現(xiàn)錯(cuò)誤可以在一定程度上自恢復(fù);可以提供岸上基站與儀器之間透明的連接,使岸上基站可以全面、靈活地控制儀器;具備一定的應(yīng)急能力。
2.2.1 整體設(shè)計(jì)
平臺(tái)的操作系統(tǒng)為L(zhǎng)inux 2.4.20。Linux作為開(kāi)源軟件,具有開(kāi)發(fā)周期相對(duì)較短,內(nèi)核精簡(jiǎn),功能強(qiáng)大,運(yùn)行穩(wěn)定,系統(tǒng)健壯,效率高等特點(diǎn),已成為嵌入式開(kāi)發(fā)的主流操作系統(tǒng)[6]。應(yīng)用程序運(yùn)行在Linux操作系統(tǒng)之上,使得應(yīng)用程序的穩(wěn)定性大大提高[7]。應(yīng)用程序使用嵌入式C編寫(xiě)。應(yīng)用程序采用多線程來(lái)實(shí)現(xiàn)實(shí)時(shí)、靈活、可控、自恢復(fù)等特點(diǎn)。共有4個(gè)線程。主線程負(fù)責(zé)與岸上基站的通信,解釋岸上基站的命令,并翻譯成儀器可識(shí)別的命令,同時(shí)還負(fù)責(zé)監(jiān)視供電電壓。串口接收線程負(fù)責(zé)三路串口對(duì)應(yīng)三臺(tái)儀器,實(shí)時(shí)地接收儀器的數(shù)據(jù)。網(wǎng)絡(luò)發(fā)送線程根據(jù)預(yù)定的通信協(xié)議,實(shí)時(shí)地將數(shù)據(jù)發(fā)到岸上基站。保護(hù)線程負(fù)責(zé)監(jiān)視程序的運(yùn)行情況,捕捉必要的錯(cuò)誤,當(dāng)發(fā)現(xiàn)致命錯(cuò)誤時(shí),關(guān)閉程序,重新建立程序運(yùn)行環(huán)境。
2.2.2 應(yīng)急操作
當(dāng)供電電壓低于正常電壓時(shí),系統(tǒng)會(huì)切斷供電電壓,同時(shí)儀器切換到自供電模式,使用自身的電池供電??紤]到電池容量的局限性,系統(tǒng)自動(dòng)切換儀器的工作模式,降低儀器的采樣頻率。完成上述操作后,系統(tǒng)便關(guān)閉沒(méi)有必要的外設(shè),以節(jié)省電能。同樣,當(dāng)恢復(fù)供電時(shí),系統(tǒng)會(huì)恢復(fù)原來(lái)的工作模式。部分流程如圖2所示。
2.2.3 程序的可控性
為了方便操作,每個(gè)儀器制定了三種快捷操作模式,并把每種模式要發(fā)給儀器的命令做成配置文件存在SD卡中。當(dāng)程序收到岸上基站的采集命令時(shí),會(huì)在SD卡上搜索相應(yīng)的配置文件,然后根據(jù)配置文件向儀器發(fā)送命令,同時(shí)為岸上基站提供配置文件,更新命令,還可以根據(jù)需要更新配置文件。
圖2 電壓檢測(cè)流程圖
2.2.4 程序的自恢復(fù)
為使程序在出現(xiàn)異常后能自動(dòng)繼續(xù)上次的操作,在SD卡中建立了一個(gè)目錄,用于專門存貯工作步驟的文件。當(dāng)程序啟動(dòng)時(shí)會(huì)首先搜索這種文件,由于程序正常退出時(shí)會(huì)刪除此類文件,所以如果找到這種文件說(shuō)明程序非正常結(jié)束,讀入文件繼續(xù)上次的工作。程序通過(guò)兩個(gè)方面來(lái)保證程序的穩(wěn)定性。
(1) 當(dāng)操作系統(tǒng)啟動(dòng)后,會(huì)首先執(zhí)行初始化腳本程序,這個(gè)初始化腳本是可以編輯的,它可以滿足不同的用戶[2]。系統(tǒng)添加的腳本如下:
mount /dev/mmc/disc0/part1 /mnt/sdcard/
ifconfig eth0 up
ifconfig eth0 192.168.1.44
./myprogram
reboot
操作系統(tǒng)在完成必要的操作后,首先掛載SD卡,然后啟動(dòng)網(wǎng)絡(luò)。并且設(shè)置IP地址,為應(yīng)用程序創(chuàng)建好網(wǎng)絡(luò)和存儲(chǔ)環(huán)境,緊接著運(yùn)行應(yīng)用程序。正常情況下,命令reboot是得不到執(zhí)行的,因?yàn)閼?yīng)用程序是不會(huì)結(jié)束的,但是當(dāng)操作系統(tǒng)捕獲到異常時(shí)[8],如某個(gè)數(shù)被零除時(shí),操作系統(tǒng)會(huì)自動(dòng)終止應(yīng)用程序的運(yùn)行,即發(fā)生了錯(cuò)誤,系統(tǒng)記錄錯(cuò)誤發(fā)生的時(shí)間及類型,然后執(zhí)行reboot,重新運(yùn)行程序。
(2) 保護(hù)線程會(huì)時(shí)刻監(jiān)視幾個(gè)關(guān)鍵參數(shù),當(dāng)參數(shù)超出正常范圍后,保護(hù)線程主動(dòng)重啟系統(tǒng),重新建立執(zhí)行環(huán)境。在正常情況下,主線程會(huì)每隔一段時(shí)間向保護(hù)線程發(fā)送一個(gè)信號(hào),表示主線程運(yùn)行良好,當(dāng)長(zhǎng)時(shí)間收不到這個(gè)信號(hào)時(shí),保護(hù)線程會(huì)認(rèn)為程序已經(jīng)進(jìn)入未知狀態(tài),馬上重啟系統(tǒng),重新運(yùn)行程序。
2.2.5 提供岸上基站與單個(gè)儀器透明的連接
某些儀器需要現(xiàn)場(chǎng)操作或者需要微調(diào)時(shí),程序可以為岸上基站提供一個(gè)與特定儀器的連接,使岸上基站可以靈活控制儀器。如ADCP需要一個(gè)鹽度值來(lái)計(jì)算此鹽度下海水中的聲速,由于測(cè)試點(diǎn)不同,有可能鹽度也不相同,所以可以使用程序提供的連接對(duì)儀器進(jìn)行微調(diào)。
2.2.6 與岸上基站的通信協(xié)議
為保證數(shù)據(jù)的實(shí)時(shí)性,程序?qū)崟r(shí)地打包收到的數(shù)據(jù),然后將其發(fā)送到岸上的基站。考慮到通信量不大,并保證通信質(zhì)量,高層之間的協(xié)議采用肯定確認(rèn)的重傳模式[9],即系統(tǒng)收到儀器的數(shù)據(jù)發(fā)一個(gè)包之后就等待岸上基站的應(yīng)答,如果在約定好的時(shí)間內(nèi)沒(méi)有應(yīng)答就認(rèn)為通信超時(shí),等到下一次通信,首先發(fā)送上次未發(fā)送成功的數(shù)據(jù),其幀格式如圖3所示。
圖3 幀格式
其中,子網(wǎng)ID和節(jié)點(diǎn)ID由岸上基站統(tǒng)一分配;儀器ID表明此幀數(shù)據(jù)來(lái)自哪臺(tái)儀器;記錄數(shù)是說(shuō)明此幀共有多少條記錄;幀計(jì)數(shù)由三個(gè)字節(jié)組成,表明此幀序號(hào)。岸上基站規(guī)定每天的幀序號(hào)按順序遞增,并且每天的第一幀的序號(hào)為1;N字節(jié)數(shù)據(jù)是特定儀器采集的數(shù)據(jù);校驗(yàn)和為前面N+8個(gè)字節(jié)的累加和,并對(duì)256取模。
3 結(jié) 語(yǔ)
該系統(tǒng)在試驗(yàn)室進(jìn)行了大量的實(shí)驗(yàn)。實(shí)驗(yàn)表明,該程序可以穩(wěn)定地為岸上基站提供實(shí)時(shí)數(shù)據(jù),程序結(jié)構(gòu)靈活,修改方便。通過(guò)總結(jié)設(shè)計(jì)和實(shí)驗(yàn),根據(jù)深海工作的特定要求,系統(tǒng)還可以從以下幾點(diǎn)進(jìn)行改進(jìn):
(1) 系統(tǒng)自恢復(fù)能力有限,程序只能捕捉幾種特定的錯(cuò)誤;
(2) 增加電源管理模塊,以減低系統(tǒng)功耗。
參考文獻(xiàn)
[1]曹志敏.現(xiàn)代海底熱液活動(dòng)異常條件探測(cè)關(guān)鍵技術(shù)研究[J].高技術(shù)通訊,2006,16(5):545_550.
[2]宋坤.海洋動(dòng)力環(huán)境實(shí)時(shí)立體監(jiān)控平臺(tái)設(shè)計(jì)[J].海洋技術(shù),2006,25(3):36_40.
[3]馮建軍.ADCP 原理及數(shù)據(jù)處理方法[J].港工技術(shù),2007,44(3):53_55.
[4]田雨.船體固定式CTD及數(shù)據(jù)采集技術(shù)研究[J].海洋技術(shù),2006,25(3):27_30.
[5]博創(chuàng)科技.嵌入式系統(tǒng)實(shí)驗(yàn)指導(dǎo)書(shū)[M].北京:博創(chuàng)科技出版社,2006.
[6]鮑慶.Linux 2.4內(nèi)核下塊設(shè)備驅(qū)動(dòng)程序的接口分析[J].信息工程大學(xué)學(xué)報(bào),2003(2):29_32.
[7]師娟娟.基于ARM9的嵌入式Linux移植[J].武漢理工大學(xué)學(xué)報(bào),2008,30(2):205_208.
[8]\\魯比足.Linux設(shè)備驅(qū)動(dòng)程序[M].3版.魏永明,譯.北京:中國(guó)電力出版社,2006.
[9]龐志勇.紅外無(wú)線MODEM的研制[J].計(jì)算機(jī)工程,2003,29(16):52_53.
[10]陳莉君.Linux操作系統(tǒng)原理與應(yīng)用[M].北京:清華大學(xué)出版社,2006.