朱 銳,王項(xiàng)南,石建軍,田 川
(國(guó)家海洋技術(shù)中心,天津 300112)
南極長(zhǎng)城灣海域海洋環(huán)境監(jiān)測(cè)系統(tǒng)上位機(jī)軟件設(shè)計(jì)
朱 銳,王項(xiàng)南,石建軍,田 川
(國(guó)家海洋技術(shù)中心,天津 300112)
在十一五“863”項(xiàng)目“極地近岸海洋環(huán)境監(jiān)測(cè)系統(tǒng)”支持下,進(jìn)行南極長(zhǎng)城灣海域海洋環(huán)境實(shí)時(shí)監(jiān)測(cè)系統(tǒng)的研制。為實(shí)現(xiàn)數(shù)據(jù)的實(shí)時(shí)傳輸進(jìn)行軟件設(shè)計(jì),重點(diǎn)進(jìn)行了上位機(jī)軟件設(shè)計(jì)。根據(jù)整套監(jiān)測(cè)系統(tǒng)的功能需要提出了上位機(jī)軟件的主要功能和工作方式。上位機(jī)軟件采用VB6.0作為開發(fā)工具,采用“問答”式對(duì)下位機(jī)進(jìn)行控制,通過引用MSComm、Jmail、MSChart等控件或組件,采用功能模塊化的設(shè)計(jì)方式,實(shí)現(xiàn)了上位機(jī)軟件發(fā)送控制指令,接收、顯示、保存采樣數(shù)據(jù),自動(dòng)發(fā)郵件以及數(shù)據(jù)回放功能。
南極長(zhǎng)城站;環(huán)境監(jiān)測(cè);“問答”式控制;自動(dòng)發(fā)郵件;數(shù)據(jù)回放
南、北兩極自發(fā)現(xiàn)以來,因其遼闊的地域、豐富的資源、理想的科研場(chǎng)所和對(duì)全球變化的獨(dú)特的影響,成為各國(guó)政府和學(xué)術(shù)界都關(guān)注的焦點(diǎn)。南極和北極是地球氣候系統(tǒng)的重要單元,包含了大氣、海洋、陸地、冰雪和生物等多圈層相互作用的全部過程。通過這些相互作用,地球高緯度地區(qū)不斷驅(qū)動(dòng)著全球變化,同時(shí)也深受全球變化的影響。極地還擁有過去地球系統(tǒng)演變的獨(dú)特信息,有助于認(rèn)識(shí)地球系統(tǒng)及其與人類活動(dòng)的相互作用。就海洋環(huán)境而言,進(jìn)行極地海洋環(huán)境的監(jiān)測(cè)與研究,對(duì)于揭示極地海洋環(huán)境的快速變化及其對(duì)地球變化的響應(yīng)與反饋?zhàn)饔镁哂兄匾饬x。但是由于受極地極端的氣候條件的限制,目前對(duì)極地海洋環(huán)境的調(diào)查活動(dòng)主要集中在夏季,這大大制約了對(duì)相關(guān)過程的深入研究。為了能夠深入了解極地海洋的物理和生物學(xué)過程,分析生態(tài)系統(tǒng)與環(huán)境快速變化之間的相關(guān)性,建立一套長(zhǎng)期、連續(xù)的監(jiān)測(cè)系統(tǒng)非常必要。
極地近岸海洋環(huán)境監(jiān)測(cè)系統(tǒng)是十一五“863”計(jì)劃目標(biāo)導(dǎo)向類項(xiàng)目。課題由中國(guó)極地中心牽頭,國(guó)家海洋技術(shù)中心和中國(guó)海洋大學(xué)參加。旨在以我國(guó)南極長(zhǎng)城站近海作為試驗(yàn)區(qū),研制一套適用于極區(qū)站基的海洋動(dòng)力和生態(tài)環(huán)境自動(dòng)監(jiān)測(cè)系統(tǒng),并在南極長(zhǎng)城站近岸海域布放并長(zhǎng)期運(yùn)行。
根據(jù)監(jiān)測(cè)海洋動(dòng)力和生態(tài)環(huán)境的目標(biāo),本項(xiàng)目擬對(duì)溫度、鹽度、深度、pH、PAR、ORP、葉綠素和海流 8個(gè)參數(shù)進(jìn)行長(zhǎng)期監(jiān)測(cè)。系統(tǒng)的主要功能是測(cè)量各個(gè)待測(cè)參數(shù),保存測(cè)量數(shù)據(jù),并把數(shù)據(jù)傳回內(nèi)陸以供科研人員研究。
為了保證系統(tǒng)長(zhǎng)期穩(wěn)定工作,系統(tǒng)采用岸站有纜供電方式,系統(tǒng)的測(cè)量工作由水下測(cè)量系統(tǒng)根據(jù)岸站上位機(jī)的指令啟動(dòng)測(cè)量并收集上傳來完成。為了保證數(shù)據(jù)傳輸?shù)目煽啃?,同時(shí)考慮到系統(tǒng)采集的數(shù)據(jù)需要長(zhǎng)距離傳輸?shù)奶攸c(diǎn),確定采用RS485總線。根據(jù)測(cè)量要求及現(xiàn)場(chǎng)條件,水下測(cè)量平臺(tái)采用剖面測(cè)量與坐底式測(cè)量相結(jié)合的測(cè)量模式。剖面測(cè)量主要由固定在承重纜上的各層組傳感器對(duì)生態(tài)要素進(jìn)行測(cè)量。坐底式測(cè)量部分主要是由固定在坐底平臺(tái)上的ADCP對(duì)海流要素進(jìn)行測(cè)量。系統(tǒng)的示意圖如圖1所示:
圖1 系統(tǒng)示意圖
水下測(cè)量系統(tǒng)由剖面測(cè)量和坐底測(cè)量?jī)刹糠纸M成。剖面測(cè)量部分主要由第一層剖面測(cè)量單元、第二層剖面測(cè)量單元、第三層剖面測(cè)量單元(即plus-37)組成,其中第一層剖面測(cè)量單元、第二層剖面測(cè)量單元固定在傳輸電纜上,對(duì)溫度、鹽度、深度、葉綠素、PAR、ORP和pH 7個(gè)參數(shù)進(jìn)行測(cè)量,第三層剖面測(cè)量單元固定在坐底平臺(tái)上,對(duì)溫度、鹽度、深度3個(gè)參數(shù)進(jìn)行測(cè)量。測(cè)量海流的ADCP固定在坐底平臺(tái)上。水下測(cè)量系統(tǒng)的總體結(jié)構(gòu)如圖2所示。
圖2 系統(tǒng)總體結(jié)構(gòu)圖
系統(tǒng)的工作方式是:上位機(jī)自動(dòng)定時(shí)向水下采集系統(tǒng)發(fā)送采樣指令,水下采集系統(tǒng)接收到采樣指令后分時(shí)對(duì)各層傳感器單元進(jìn)行數(shù)據(jù)采集,然后把采集到的各傳感器數(shù)據(jù)打包發(fā)送回上位機(jī),上位機(jī)接收并處理數(shù)據(jù)。水下測(cè)量系統(tǒng)供電采用岸上有纜供電方式,出于安全考慮,水下觀測(cè)系統(tǒng)采用低壓直流方式供電。在水下測(cè)量系統(tǒng)的水上接入部分加入AC-DC電源模塊,以獲得穩(wěn)定的電源供應(yīng)。系統(tǒng)的數(shù)據(jù)傳輸和供電過程如圖3。
系統(tǒng)的軟件分為上位機(jī)軟件和下位機(jī)軟件。上位機(jī)軟件的主要功能是通過串口向下位機(jī)發(fā)送采樣指令,并接收下位機(jī)的采樣數(shù)據(jù)同時(shí)負(fù)責(zé)對(duì)采樣數(shù)據(jù)進(jìn)行保存、自動(dòng)發(fā)送數(shù)據(jù)和數(shù)據(jù)回放。下位機(jī)軟件的主要功能是接收到采樣指令后,分時(shí)對(duì)各層傳感器組進(jìn)行數(shù)據(jù)采集,把采集到的各傳感器組的數(shù)據(jù)打包后發(fā)送至上位機(jī)。在數(shù)據(jù)采集過程中,上位機(jī)和下位機(jī)軟件的流程如圖4所示。本文主要討論上位機(jī)軟件的設(shè)計(jì),選擇Microsoft VisualBasic 6.0作為軟件開發(fā)平臺(tái)。
上位機(jī)軟件具備三項(xiàng)主要功能:控制指令的發(fā)送及數(shù)據(jù)接收功能,定時(shí)向下位機(jī)發(fā)送采集指令并接收下位機(jī)的采樣數(shù)據(jù),同時(shí)將采樣數(shù)據(jù)保存起來;郵件自動(dòng)發(fā)送功能,定時(shí)把當(dāng)日數(shù)據(jù)文件以附件形式發(fā)送至指定郵箱;數(shù)據(jù)回放功能,繪制各參數(shù)按時(shí)間序列的曲線。前兩個(gè)功能為定時(shí)自動(dòng)執(zhí)行,數(shù)據(jù)回放功能為手動(dòng)執(zhí)行。
圖3 系統(tǒng)的數(shù)據(jù)傳輸及供電過程
上位機(jī)自動(dòng)定時(shí)(每隔10 min)通過串口向下位機(jī)發(fā)送控制指令,下位機(jī)接收控制指令并依次采集各個(gè)傳感器數(shù)據(jù),數(shù)據(jù)打包后由串口發(fā)送至上位機(jī),上位機(jī)接收數(shù)據(jù)包,在上位機(jī)軟件界面上顯示各傳感器測(cè)量數(shù)據(jù),并把數(shù)據(jù)按固定格式分別儲(chǔ)存到指定路徑下的兩個(gè)文本文件。一個(gè)僅保存當(dāng)日的采集數(shù)據(jù);另一個(gè)保存所有采集到的數(shù)據(jù),每次的采樣數(shù)據(jù)都追加保存到此文件。上位機(jī)在南極長(zhǎng)城站互聯(lián)網(wǎng)非高峰使用時(shí)段的一個(gè)設(shè)定時(shí)間點(diǎn)自動(dòng)把保存當(dāng)日數(shù)據(jù)的文件以附件的形式發(fā)送到指定電子郵箱。此外,上位機(jī)軟件還可以根據(jù)用戶需求生成各測(cè)量參數(shù)的時(shí)間曲線。
極地岸站上位機(jī)通過“問答式”對(duì)下位機(jī)進(jìn)行控制,上位機(jī)向下位發(fā)送采樣指令,下位機(jī)接受到采樣指令以后對(duì)各組傳感器單位進(jìn)行分時(shí)采樣,然后把各組采樣數(shù)據(jù)打包發(fā)送回上位機(jī),上位機(jī)收到采樣數(shù)據(jù)包后分離出各組傳感器數(shù)據(jù)并按照規(guī)定好的格式進(jìn)行儲(chǔ)存,同時(shí)在上位機(jī)軟件界面上顯示最近一次的采樣數(shù)據(jù)。上位機(jī)軟件界面如圖5所示。
上位機(jī)通過串口與下位機(jī)之間進(jìn)行控制指令及監(jiān)測(cè)數(shù)據(jù)的傳輸。MSComm控件是Microsoft公司為簡(jiǎn)化Windows下串行通信編程提供的ActiveX控件,它為應(yīng)用程序提供了通過串口收發(fā)數(shù)據(jù)的簡(jiǎn)便方法。在程序設(shè)計(jì)過程中,可以通過引用或設(shè)置MSComm控件的屬性、事件和方法,實(shí)現(xiàn)上位機(jī)與下位機(jī)的串口通信。上位機(jī)控制指令的發(fā)送及監(jiān)測(cè)數(shù)據(jù)接收流程如圖6所示。
圖4 上位機(jī)和下位機(jī)軟件流程((a)為上位機(jī),(b)為下位機(jī))
圖5 上位機(jī)軟件顯示界面
上位機(jī)開始工作后,自動(dòng)判斷是否到達(dá)設(shè)定的10 min間隔時(shí)間點(diǎn),到達(dá)時(shí)間點(diǎn)后向下位機(jī)發(fā)送采樣指令,并準(zhǔn)備接收數(shù)據(jù)。當(dāng)MSComm控件檢測(cè)到串口產(chǎn)生接收事件comEvReceive時(shí),表明下位機(jī)已開始傳輸采樣數(shù)據(jù)包至上位機(jī),接收完成后,上位機(jī)界面(圖5)顯示各傳感器測(cè)量數(shù)據(jù)。采樣數(shù)據(jù)同時(shí)被保存為文本文件,如圖7所示。上位機(jī)在下一個(gè)采樣時(shí)間點(diǎn)重復(fù)發(fā)送控制指令并準(zhǔn)備接收和保存數(shù)據(jù)。
郵件自動(dòng)發(fā)送功能的實(shí)現(xiàn)使得國(guó)內(nèi)的科研人員能夠及時(shí)方便地獲取南極長(zhǎng)城灣海域的生態(tài)環(huán)境及動(dòng)力要素的監(jiān)測(cè)數(shù)據(jù)。為了及時(shí)獲取數(shù)據(jù)并且方便數(shù)據(jù)的處理,郵件的發(fā)送周期定為1 d。每天所采集到的144組采樣數(shù)據(jù)保存于上位機(jī)指定的子目錄中,并以當(dāng)天日期命名文本文件。到達(dá)設(shè)定的郵件發(fā)送時(shí)時(shí),上位機(jī)以前一天的數(shù)據(jù)文件所在路徑作為郵件附件的路徑,把前一天的數(shù)據(jù)文件以附件形式發(fā)送到指定的電子郵件地址。電子郵件的主題格式為:
圖6 控制及數(shù)據(jù)接收功能流程
圖7 采樣數(shù)據(jù)在文本文件中的保存形式
“YYYY-MM-DD HH:MM:SS”
“YYYY-MM-DD HH:MM:SS”既是郵件主題也是郵件的發(fā)送時(shí)間,如接收到主題為“2010-3-31 1:05:00”的郵件則表示此郵件是2010年3月31日1:05:00發(fā)送過來的監(jiān)測(cè)數(shù)據(jù)。而郵件附件里所附文件為2010年3月30日的全天的監(jiān)測(cè)數(shù)據(jù)。這種郵件主題命名方式便于研究人員查收目標(biāo)日期的數(shù)據(jù)。
上位機(jī)工作時(shí),上位機(jī)軟件監(jiān)測(cè)上位機(jī)系統(tǒng)時(shí)間是否到達(dá)預(yù)定郵件發(fā)送時(shí)間,到達(dá)后即把指定路徑下的數(shù)據(jù)文件通過郵件附件發(fā)送到郵箱,從而實(shí)現(xiàn)無人值守情況下的數(shù)據(jù)文件自動(dòng)發(fā)送功能。自動(dòng)發(fā)郵件流程如圖8所示。
圖8 自動(dòng)發(fā)郵件功能設(shè)計(jì)流程
發(fā)送郵件功能通過調(diào)用Jmail組件實(shí)現(xiàn)。JMail郵件組件是Dimac公司開發(fā)的第三方郵件操作組件,用來完成郵件的發(fā)送、接收、加密和集群傳輸?shù)裙ぷ?。它是一種服務(wù)器端的郵件發(fā)送組件,與個(gè)人使用的客戶端郵件軟件不同,它僅在服務(wù)器端工作。與其類似的組件還有 CDONTS,NewMail,Persits,MailSender,IISmail等等,他們的區(qū)別在于 Jmail只需要注冊(cè)一個(gè)dll組件即可被調(diào)用,而其他則需要在iis上設(shè)置發(fā)布smtp服務(wù)器。
VB調(diào)用Jmail發(fā)送郵件的主要代碼如下:
數(shù)據(jù)回放功能主要是對(duì)已采樣到的數(shù)據(jù)繪制隨時(shí)間變化曲線圖。采樣數(shù)據(jù)以數(shù)字的形式保存在文本文件中,在查看某傳感器測(cè)量值的變化趨勢(shì)時(shí)非常不直觀。數(shù)據(jù)回放功能把各個(gè)傳感器組中的單個(gè)傳感器測(cè)量值單獨(dú)繪制隨時(shí)間變化曲線,便于查看其隨時(shí)間變化趨勢(shì)。數(shù)據(jù)回放具體功能設(shè)計(jì)思路如下:
在已保存的數(shù)據(jù)文件中選擇待回放的文件,上位機(jī)軟件讀入文件中所有的采樣數(shù)據(jù),自動(dòng)繪制出各個(gè)傳感器組下的單個(gè)傳感器的數(shù)據(jù)的時(shí)域曲線。選擇單日數(shù)據(jù)文件進(jìn)行數(shù)據(jù)回放時(shí),繪制當(dāng)日數(shù)據(jù)曲線;選擇總的數(shù)據(jù)文件進(jìn)行數(shù)據(jù)回放時(shí),可以查看各個(gè)選定時(shí)間段內(nèi)的數(shù)據(jù)曲線。數(shù)據(jù)回放流程如圖9所示。
圖9 數(shù)據(jù)回放流程
使用微軟為開發(fā)者提供的MSChart控件繪制數(shù)據(jù)曲線圖。 添加 MSChart對(duì)象以后,通過 ChartType,Title,F(xiàn)ootnote,Plot等屬性對(duì)圖表類型和外觀顯示等信息進(jìn)行設(shè)置。采樣數(shù)據(jù)是按照?qǐng)D7中的格式進(jìn)行保存的,要繪制出各傳感器單獨(dú)的測(cè)量參數(shù)曲線,重點(diǎn)是把各個(gè)傳感器數(shù)據(jù)從各次采樣的總的數(shù)據(jù)中提取出來形成一個(gè)按采樣時(shí)間排列的數(shù)組,再把數(shù)組賦值給MSChart對(duì)象的ChartData屬性繪制出對(duì)應(yīng)傳感器數(shù)據(jù)的曲線圖。圖6所示過程即把各個(gè)傳感器數(shù)據(jù)從總的數(shù)據(jù)中提取出來存入多維數(shù)組的元素中去。
圖10 提取傳感器數(shù)據(jù)流程
圖11 SBE16-2自2010年1月15-21日各測(cè)量數(shù)據(jù)曲線
本文根據(jù)極地海洋近岸環(huán)境監(jiān)測(cè)系統(tǒng)的功能需求,為上位機(jī)設(shè)計(jì)了一套可視化的控制軟件。采用“問答式”的控制方式實(shí)現(xiàn)對(duì)下位機(jī)的控制及數(shù)據(jù)采集。通過對(duì)Jmail組件的研究和應(yīng)用,附件路徑按保存采集數(shù)據(jù)的文件名自動(dòng)變化,實(shí)現(xiàn)了極地近岸海洋環(huán)境監(jiān)測(cè)數(shù)據(jù)的自動(dòng)發(fā)送。此外,上位機(jī)軟件還實(shí)現(xiàn)了監(jiān)測(cè)數(shù)據(jù)的可選擇性回放功能。經(jīng)過了室內(nèi)調(diào)試實(shí)驗(yàn)、青島海試調(diào)試和南極現(xiàn)場(chǎng)調(diào)試,上位機(jī)目前在南極長(zhǎng)城站穩(wěn)定工作,采集到的數(shù)據(jù)完整,數(shù)據(jù)文件按時(shí)自動(dòng)發(fā)送,數(shù)據(jù)回放正常,為極地海洋環(huán)境監(jiān)測(cè)數(shù)據(jù)的長(zhǎng)期實(shí)時(shí)獲取打下良好的基礎(chǔ)。
圖12 SBE37自2010年1月15日-21日各測(cè)量數(shù)據(jù)曲線
圖13 ADCP自2010年1月15-21日第1層海流速度輻值和方向曲線
[1] 許永和.Visual Basic接口設(shè)計(jì)與工程實(shí)踐[M].北京:人民郵電出版社,2007.
[2] 林卓然.VB語言程序設(shè)計(jì)[M].北京:電子工業(yè)出版社,2009.
[3] 李長(zhǎng)林.Visual Basic串口通信技術(shù)與典型實(shí)例[M].北京:清華大學(xué)出版社,2006.
[4] 李旭東.VB環(huán)境下MSChart控件的應(yīng)用與研究[J].內(nèi)江科技,2008,9:146-147.
[5] 馬玉春,宋翰濤.串行通信協(xié)議的研究及應(yīng)用[J].計(jì)算機(jī)應(yīng)用研究,2004,4:228-232.
[6] 曲探宙.中國(guó)極地考察的現(xiàn)狀與未來發(fā)展[J].海洋開發(fā)與管理,2006,5:40-43.
[7] 郭忠文,尚傳進(jìn),管恩花.面向服務(wù)構(gòu)架的海洋數(shù)據(jù)集成系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用研究,2006,2:157-160.
[8] 康偉,鄭正奇.Windows下實(shí)時(shí)數(shù)據(jù)采集的實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用研究,2001,3:105-106.
[9] 黃土松,楊修群.極地海冰變化對(duì)氣候的影響[J].氣象科學(xué),1995,15(4):45-56.
_data為VB開發(fā)環(huán)境中定義的字符串變量,用于把待回放的數(shù)據(jù)文件中的所有數(shù)據(jù)以字符的形式保存于內(nèi)存中。data_array(lastrow×1)為由lastrow個(gè)元素組成的一維數(shù)組,lastrow為待回放數(shù)據(jù)文件中所存數(shù)據(jù)的采樣次數(shù),data_array(lastrow×1)的每一個(gè)元素保存著下位機(jī)一次采樣的數(shù)據(jù)。data_SBE37(lastrow×4)為保存著SBE37采樣數(shù)據(jù)的二維數(shù)組,1~4列分別對(duì)應(yīng)著采樣時(shí)間、溫度、鹽度、深度,每行代表著單次采樣數(shù)據(jù)。SBE16傳感器組比SBE37傳感器組多4個(gè)測(cè)量量,分別是pH,ORP,葉綠素和PAR,所以data_SBE16-1(lastrow×8)和 data_SBE16-2(lastrow×8)比 SBE37(lastrow×4)多 4 列,。data_adcp(lastrow×19×5)為三維數(shù)組第一維代表單次的采樣數(shù)據(jù),第二維代表每次采樣數(shù)據(jù)中包含的19層海流數(shù)據(jù),第三維主要儲(chǔ)存每層海流數(shù)據(jù)在不同方向上的分量,其中1~5列分別對(duì)應(yīng)著采樣時(shí)間、東向速度、北向速度、豎向速度和校正值。對(duì)于data_SBE37(lastrow×4),data_SBE16-1(lastrow×8)和 data_SBE16-2(lastrow×8)而言,把存儲(chǔ)采樣時(shí)間的第一列和存儲(chǔ)相應(yīng)傳感器數(shù)據(jù)的某列組成的二維數(shù)組賦值給MSChart的ChartData屬性,即繪制出該傳感器數(shù)據(jù)的曲線圖。ADCP所測(cè)海流數(shù)據(jù)的曲線圖的繪制與前三個(gè)CTD有所不同,需要分別繪制不同層次的海流輻值和方向圖,單層海流輻值和方向角由水平面上東向和北向兩個(gè)方向上的速度分量進(jìn)行輻值和相角的運(yùn)算求得。把相應(yīng)的輻值和相角值與對(duì)應(yīng)的采樣時(shí)間組成的二維數(shù)組分別賦值給兩個(gè)MSChart對(duì)象的ChartData屬性,即能繪制出某層次的海流輻值和方向曲線。圖11~13分別是SBE16-2、SEB37和ADCP自2010年1月15-21日各測(cè)量數(shù)據(jù)回放的曲線圖。
Antarctic Great Wall Bay Marine Environment Monitoring System PC Software Design
ZHU Rui,WANG Xiang-nan,SHI Jian-jun,TIAN Chuan
(National Ocean Technology Center,Tianjin 300112,China)
Supported by the Eleventh Five-year “863” project,Antarctic coastal marine environment monitoring system located in the Great Wall Bay was developed.Main work was the upper software design for real-time transmission of data.PC software uses VB6.0 as a development tool and a “Q”type of control is used to control the lower system.Using MSComm,Jmail,MSChart and other controls or components,the software design features a modular design and realizes the host computer sending the control orders,receiving,displaying,saving the sampling data,auto-sending email and data playback.
Great Wall Station;environmental monitoring;“Q” type of control;automatic email;data playback
P71
B
1003-2029(2010)04-0023-08
2010-05-15
國(guó)家高技術(shù)研究發(fā)展計(jì)劃(863)資助項(xiàng)目(2007AA092121)