黃宏智,王明輝,譚晗凌
(廣東省氣象探測數(shù)據(jù)中心,廣州 510080)
魚塘氣象觀測是對自然狀態(tài)下魚塘生態(tài)系統(tǒng)中的氣象要素、氣候變化以及理化環(huán)境等信息進(jìn)行綜合監(jiān)測,是開展魚塘生態(tài)環(huán)境研究的主要數(shù)據(jù)來源。其中,魚塘綜合氣象條件通過影響水中有機物質(zhì)的物理化學(xué)反應(yīng)進(jìn)程,直接控制水生生物的生長、發(fā)育、生活狀態(tài)、數(shù)量消長和分布等[1],進(jìn)而對魚類從繁殖、飼養(yǎng)、并塘越冬到起捕、病害發(fā)生等全過程產(chǎn)生關(guān)鍵作用。傳統(tǒng)的魚塘氣象觀測主要是定點定時觀測若干層不同深度的水溫數(shù)據(jù),數(shù)據(jù)種類單一、頻度低,其技術(shù)體制、報文時效、觀測內(nèi)容以及組網(wǎng)能力等已不能滿足現(xiàn)代魚塘氣象觀測業(yè)務(wù)和服務(wù)的需求[2]。
為了切實提升魚塘氣象的觀測能力,廣東省氣象探測數(shù)據(jù)中心自主研制了一款新型的魚塘自動觀測氣象站,其配套研發(fā)的數(shù)據(jù)處理軟件能實時采集不同層次水溫、氣溫、濕度、長波輻射和短波輻射等氣象觀測要素數(shù)據(jù)及統(tǒng)計極值,并按照一定的數(shù)據(jù)格式形成報文上傳至省局接收中心服務(wù)器。文章著重介紹了魚塘自動觀測氣象站數(shù)據(jù)處理軟件的模塊結(jié)構(gòu)、要素數(shù)據(jù)采集和采集器運行參數(shù)遠(yuǎn)程設(shè)置等。
魚塘自動觀測氣象站各探測要素數(shù)據(jù)的獲取是上位機軟件通過發(fā)送下載分鐘常規(guī)觀測數(shù)據(jù)(DMGD)至主采集器進(jìn)行交互予以實現(xiàn)的,并將返回的數(shù)據(jù)以固定的數(shù)據(jù)格式存儲在本地業(yè)務(wù)計算機中。該軟件的設(shè)計核心是如何高效、可靠地與魚塘自動觀測氣象站主采集器之間進(jìn)行命令和數(shù)據(jù)交互,為觀測業(yè)務(wù)人員提供精確、高頻度的魚塘環(huán)境綜合氣象信息。
在每分鐘的01秒時,魚塘自動觀測氣象站數(shù)據(jù)處理軟件通過計算機配備的串口下行下載分鐘數(shù)據(jù)命令,一直處于監(jiān)聽狀態(tài)的魚塘自動觀測氣象站主采集器在偵聽到命令碼后,首先對該命令進(jìn)行合法性檢測,若為有效命令,則返回一定數(shù)據(jù)格式的數(shù)據(jù)流;若為非法命令則反饋“BAD COMMAND”錯誤代碼。魚塘自動觀測氣象站數(shù)據(jù)處理軟件接收到報文后,分析、提取以及顯示返回數(shù)據(jù)報文的各要素數(shù)據(jù),并追加寫入本地計算機日文件中。
根據(jù)魚塘環(huán)境的觀測數(shù)據(jù)處理及工作參數(shù)配置需求,將軟件功能規(guī)劃為軟件初始化、參數(shù)設(shè)置、數(shù)據(jù)顯示及統(tǒng)計和數(shù)據(jù)管理4個模塊。軟件設(shè)計基于數(shù)據(jù)處理時效性的要求[3],采用多線程并發(fā)技術(shù)提高數(shù)據(jù)的采集及解析效率。4個模塊功能如下:
1)軟件初始化:軟件啟動后檢測Config、Data、RunningLog等參數(shù)配置、數(shù)據(jù)存放、運行日志文件夾是否生成,若未生成則創(chuàng)建運行日志文件夾;配置默認(rèn)工作串口1的通信屬性(9600,8,N,1),同時激活串口1的DataReceived事件委托等;
2)參數(shù)設(shè)置模塊:包括通信參數(shù)和運行參數(shù)兩部分。通信參數(shù)主要指串口工作參數(shù)的設(shè)置,包括串口端口號、波特率、校驗位、數(shù)據(jù)位和停止位等;運行參數(shù)則由站號、上下短波靈敏度以及上下長波靈敏度5部分組成;
3)數(shù)據(jù)顯示及統(tǒng)計模塊:串口偵測到采集器反饋的報文數(shù)據(jù)流,啟動數(shù)據(jù)解析模塊,提取氣溫、濕度、5層水溫和輻射等觀測數(shù)據(jù),并統(tǒng)計上述要素的日極值以及極值出現(xiàn)的時間;
4)數(shù)據(jù)管理模塊:根據(jù)所選的查詢?nèi)掌?,以顯示全要素的方式回查有效期為1個月的整點觀測數(shù)據(jù),并提供導(dǎo)出Excel表格功能。
魚塘自動觀測氣象站數(shù)據(jù)處理軟件基于Microsoft Visual C#2010開發(fā)平臺,采用多線程并發(fā)處理技術(shù)和串口通信技術(shù)實現(xiàn)魚塘氣象觀測報文的獲取、要素數(shù)據(jù)提取顯示以及數(shù)據(jù)落地存儲等,為用戶提供直觀的魚塘氣象墑情和設(shè)備工作狀態(tài)。
魚塘自動觀測氣象站數(shù)據(jù)處理軟件作為終端微機的上位機軟件,在每分鐘的01秒發(fā)送終端操作命令,實現(xiàn)對主采集器各種參數(shù)的傳遞和設(shè)置,以及從主采集器讀取各種數(shù)據(jù)和下載文件等。主采集器正常運行時,其串口通信模塊處于在線偵聽狀態(tài)[4],一旦接收緩沖區(qū)監(jiān)測有新數(shù)據(jù)到來,即刻啟動命令甄別機制,判斷是否為主采集器識別的命令集中的子命令,并執(zhí)行相應(yīng)的響應(yīng)動作。魚塘自動觀測氣象站主采集器識別的命令如表1所示。
表1 魚塘自動觀測氣象站主采集器識別命令
上位機軟件每分鐘利用終端微機的串口發(fā)送“下載分鐘常規(guī)觀測數(shù)據(jù)(DMGD)”命令至主采集器,主采集器響應(yīng)命令后,返回當(dāng)前分鐘內(nèi)涵蓋觀測時間、站號、工作電壓、配置要素觀測數(shù)據(jù)及統(tǒng)計值的報文,若當(dāng)前所有的配置要素數(shù)據(jù)缺測,則返回“F”。同理,上位機軟件獲取整點數(shù)據(jù)是通過下行“下載小時常規(guī)觀測數(shù)據(jù)(DHGD)”予以實現(xiàn)。
關(guān)鍵代碼說明:
①Myport.PortName="COM1";
Myport.BaudRate=9600;
Myport.DataBits=8;
Myport.Parity=Parity.None;
Myport.StopBits=StopBits.One;
設(shè)置缺省的串口通信口序號為COM1,通信工作屬性如下:波特率、數(shù)據(jù)位、奇偶校驗位、停止位分別為9600、8、無、1。
②Myport.Open();
if(Myport.IsOpen)
{
DateTime stationtime=DateTime.Now;
string currenttime=Convert.ToString(stationtime);
string datecommand="DATETIME ";
datecommand += currenttime;
datecommand += " ";
SendCommand(datecommand);
}
打開軟件配置的通信串口,若打開成功,則讀取上位機軟件所在計算機的時間,同時發(fā)送設(shè)置主采集器時間命令,確保主采集器與計算機時間的一致性。
主采集器在每分鐘的01秒接收到“DMGD”命令后,按照特定的數(shù)據(jù)格式將各個要素觀測數(shù)據(jù)進(jìn)行組合,并以ASCII流的形式返回。上位機軟件的串口接收線程偵聽到有數(shù)據(jù)到達(dá),循環(huán)讀取串口接收緩沖區(qū)的數(shù)據(jù),直至讀到的內(nèi)容為空。讀取緩沖區(qū)內(nèi)容完畢,對報文進(jìn)行完整性核查,以接收內(nèi)容的最后兩個字符是否為“ ”作為核查依據(jù),若接收內(nèi)容的最后兩個字符是“ ”,則作為有效報文進(jìn)入要素分析提取功能模塊,否則作為無效報文進(jìn)行丟棄。
在要素數(shù)據(jù)提取過程中,首先根據(jù)報文設(shè)定的索引位置提取出觀測時間、站號和工作電壓等運行信息;然后依次根據(jù)氣溫、濕度、水溫和輻射等各要素標(biāo)識出現(xiàn)的順序讀取數(shù)據(jù)塊,并提取出當(dāng)前觀測值、日極值及極值出現(xiàn)時間。上述各個要素的數(shù)據(jù)提取流程相似,下面以氣溫為例進(jìn)行說明:截取氣溫標(biāo)識符(T0)后面的數(shù)據(jù)塊后,首先讀取要素質(zhì)控碼,若為00,則表示該要素數(shù)據(jù)正常,將質(zhì)控碼后面的數(shù)據(jù)進(jìn)行字符串轉(zhuǎn)十進(jìn)制數(shù)處理后除以10即可得出當(dāng)前的觀測數(shù)據(jù),并用類似方式提取出統(tǒng)計極值;若質(zhì)控碼為01或02,表示該觀測數(shù)據(jù)異?;蛟O(shè)備發(fā)生故障,則將觀測數(shù)據(jù)設(shè)置為“/”。要素數(shù)據(jù)提取的工作流程圖如圖1所示。
圖1 要素數(shù)據(jù)提取工作流程
為了提高主采集器的維護(hù)效率,上位機軟件配置了運行參數(shù)遠(yuǎn)程設(shè)置的功能模塊。在上位機軟件與主采集器建立串口通信的基礎(chǔ)上,當(dāng)上位機軟件重啟或者人為干預(yù)時,上位機軟件會下行設(shè)置站號、運行時間、上下短波輻射靈敏度和上下長波輻射靈敏度等參數(shù)命令,主采集器響應(yīng)后自動對運行參數(shù)進(jìn)行更新,并以新參數(shù)帶入要素數(shù)值計算。
隨著氣象現(xiàn)代化的深入推進(jìn)以及氣象服務(wù)領(lǐng)域的不斷拓寬,魚塘氣象觀測將在養(yǎng)殖業(yè)發(fā)展的事業(yè)中發(fā)揮越來越重要的作用。因此,如何高效穩(wěn)定地采集魚塘環(huán)境的氣象要素數(shù)據(jù)成為廣大農(nóng)業(yè)氣象工作者的一項重要課題。
魚塘自動觀測氣象站數(shù)據(jù)處理軟件在廣東省農(nóng)氣站順利部署運行,實現(xiàn)實時獲取氣溫、濕度、5層水溫、4類輻射等魚塘環(huán)境綜合數(shù)據(jù),并在本地服務(wù)器構(gòu)建基礎(chǔ)數(shù)據(jù)集,為農(nóng)業(yè)氣象觀測及科研提供了科學(xué)的數(shù)據(jù)支撐。同時,農(nóng)業(yè)氣象工作者通過對大量的基礎(chǔ)數(shù)據(jù)進(jìn)行分析及產(chǎn)品加工,生成了魚塘養(yǎng)殖戶容易理解的氣象服務(wù)產(chǎn)品[5],為科學(xué)施養(yǎng)提供了精細(xì)化地指引??深A(yù)期的是,隨著農(nóng)業(yè)氣象服務(wù)需求的日益增強,建設(shè)魚塘觀測的站點也會越來越多,如何組網(wǎng)運行及監(jiān)控將成為下一階段的重點研究工作。