秦虹
摘要 對上海氣象信息與技術(shù)支持中心而言,原先的氣象信息數(shù)據(jù)監(jiān)控系統(tǒng)由于操作復(fù)雜而需要改進。新的監(jiān)控系統(tǒng)開發(fā)使用delphi6.0語言和多線程技術(shù),對自動站數(shù)據(jù)、雷達和衛(wèi)星數(shù)據(jù)、MICAPS壓縮數(shù)據(jù)和MICAPS解壓數(shù)據(jù)這四類氣象實時數(shù)據(jù)進行監(jiān)控,以一體化的方式展現(xiàn)所有重要的監(jiān)控信息,提高了工作效率。
關(guān)鍵詞 監(jiān)控系統(tǒng);氣象實時數(shù)據(jù);delphi6.0語言;多線程編程
中圖分類號 S161 文獻標識碼 A 文章編號 0517-6611(2014)27-09434-03
Design & Development of RealTime Meteorological Data Monitoring Program
QIN Hong
(Shanghai Meteorological Information and Technology Center, Shanghai 200030)
Abstract For the Shanghai Meteorological Information and Technology Center, the original meteorological data monitoring system should be improved for its complex operation. The new monitoring system using delphi6.0 language and multi thread technology, the automatic station data, radar and satellite data, MICAPS compression data and MICAPS unpack data were monitored, all the important information was presented in an integration way, so as to improve the working efficiency.
Key words Monitoring system; Meteorological realtime data; Delphi6.0 language; Multi thread programming
近年來隨著氣象業(yè)務(wù)發(fā)展,各類觀測數(shù)據(jù)、預(yù)報預(yù)測及氣象服務(wù)產(chǎn)品數(shù)據(jù)大量增加,氣象信息的傳輸時效要求也越來越高。由中國氣象局研發(fā)的新一代國內(nèi)氣象通信系統(tǒng),是繼9210通信系統(tǒng)后國內(nèi)氣象通信系統(tǒng)的重要升級。對上海氣象信息與技術(shù)支持中心而言,原先的氣象數(shù)據(jù)傳輸與監(jiān)控系統(tǒng)也需要相應(yīng)的升級改造。對于信息網(wǎng)絡(luò)監(jiān)控崗位工作,能實時監(jiān)控各類氣象數(shù)據(jù)是最根本的要求。以往的監(jiān)控需要逐個打開相應(yīng)設(shè)備查看,不但操作繁瑣,且不能及時發(fā)現(xiàn)錯誤氣象信息,從而延誤維護時間。所以新的監(jiān)控系統(tǒng)需做到信息量大、監(jiān)控面廣、界面不雜亂、有聲音及顏色告警,各種監(jiān)控信息對于值班工作人員應(yīng)能一目了然,以一體化方式展現(xiàn),節(jié)約查詢時間和查詢步驟,從而提高監(jiān)控效率。為達到以上要求,筆者在此對氣象實時數(shù)據(jù)監(jiān)控程序的設(shè)計和開發(fā)進行了詳細的介紹,該程序開發(fā)使用delphi6.0語言和多線程技術(shù),目前對自動氣象站數(shù)據(jù)、雷達和衛(wèi)星數(shù)據(jù)、MICAPS壓縮數(shù)據(jù)和MICAPS解壓數(shù)據(jù)這四類數(shù)據(jù)進行監(jiān)控[1],滿足了氣象實時數(shù)據(jù)的監(jiān)控。
1 需求分析和總體設(shè)計
1.1 需求
目前對于上海氣象信息與技術(shù)支持中心的信息網(wǎng)絡(luò)值班工作而言,及時掌握各類氣象信息的數(shù)據(jù)是否按時上行國家局和下行各用戶單位非常重要,需要有一款既能快速查詢和瀏覽各類氣象要素上下行時間數(shù)據(jù)又能及時提供相應(yīng)警報的軟件,縮短工作人員對故障的判斷和響應(yīng)的時間,提高工作效率。
1.2 軟件的預(yù)期功能
1.2.1 監(jiān)控的氣象信息。目前主要是對于自動站數(shù)據(jù)接收時間信息、多普勒及風廓線雷達上行時間信息、新一代傳輸系統(tǒng)中的DVBS接收時間信息和對上述接收到的信息進行解碼后氣象產(chǎn)品的時間信息。所監(jiān)控的氣象信息均采用多線程編程,將信息分成四大類后以表格形式并行呈現(xiàn),且將錯誤信息置頂。如此設(shè)計能將所有必需監(jiān)控的信息顯示在同一塊屏上,正確與錯誤信息一目了然,縮短工作人員的故障判斷時間。所有表格能根據(jù)主窗口的縮放而自動改變大小,方便工作人員查看。由于采用模塊化設(shè)計,因此如果今后需要增加或減少監(jiān)控項目,對主程序的改動非常小,甚至某些監(jiān)控僅需改變配置文件即可而無需涉及編程。
1.2.2 時鐘顯示功能設(shè)計。因為氣象信息對時效的要求非常高,而該程序的設(shè)計主要依賴運行該程序計算機的時鐘,如果該計算機時鐘與實際時間差別較大的話,容易形成誤判誤報,此點必須重點關(guān)注。因此盡管時鐘功能的實現(xiàn)非常簡單,卻是最重要且必不可少的。
1.2.3 聲音和顏色告警功能。告警功能非常重要,由于目前上海氣象信息與技術(shù)支持中心的信息網(wǎng)絡(luò)值班工作為7×24 h單人值班制度,同一時間內(nèi)需要進行數(shù)據(jù)監(jiān)控、視頻會商管理和數(shù)據(jù)傳輸故障處理,所管理的計算機及其配套設(shè)備覆蓋多個樓面和機房,還必須兼顧軟件開發(fā)任務(wù)和工作崗位對外介紹任務(wù),如果監(jiān)控軟件無警告功能就形同虛設(shè)。因此該程序設(shè)定聲音和顏色2種告警功能同時運作。顏色以醒目的鮮紅色標出故障信息,且置頂表格顯示以方便工作人員觀察。聲音告警用mp3音樂,用以區(qū)別其他的監(jiān)控告警程序,選曲可根據(jù)值班工作人員要求隨時進行更換。
1.2.4 日常定時工作提示。定時工作提示模塊主要由一個Access數(shù)據(jù)庫來支撐,分為汛期與非汛期兩張表。之前提及由于目前上海氣象信息與技術(shù)支持中心的信息網(wǎng)絡(luò)值班工作為7×24 h單人值班制度,管理范圍廣,因此容易在繁忙時忘記某一時刻的定時工作。而此提示模塊,可以有效地解決這一問題。
1.3 數(shù)據(jù)控制及各功能模塊流程
1.3.1 主程序與各功能子模塊流程。主程序運行后,各功能子模塊以多線程方式并行運行。提高運行速度的同時,也不會因為某一個功能模塊卡死而導(dǎo)致其他功能模塊不能運行。具體的流程圖如圖1所示。
1.3.2 各功能子模塊數(shù)據(jù)流程。
各氣象數(shù)據(jù)監(jiān)控子模塊數(shù)據(jù)流程都基本相同。首先逐條讀入配置文件,之后進行格式判斷,數(shù)據(jù)格式正確后,再從相應(yīng)的數(shù)據(jù)存放文件或數(shù)據(jù)庫中讀取監(jiān)控信息,如果符合監(jiān)控條件則正常顯示,如果不正確則觸發(fā)告警程模塊,直到配置文件尾,等待下次監(jiān)控時間再次重復(fù)(圖2)。
1.4 軟件的設(shè)計原則
1.4.1 功能簡單實用。
最大限度滿足實際工作要求,充分考慮用戶狀況、環(huán)節(jié)管理中數(shù)據(jù)處理的便利性和可行性,把滿足用戶需求作為第一要素。
1.4.2 使用安全可靠。
確保各功能模塊級數(shù)據(jù)資源運行可靠,將軟件運行的故障率降至最低限度。經(jīng)常會出錯的軟件一定會被使用人員扔進垃圾桶。
1.4.3 信息時間一致。
由于所監(jiān)控的氣象信息有非常高的時效性,監(jiān)控時間與被監(jiān)控數(shù)據(jù)的生成時間必須精確,否則肯定會造成信息誤判而達不到預(yù)期目的。
1.4.4 顯示內(nèi)容完整。
顯現(xiàn)的被監(jiān)控數(shù)據(jù)信息要完整,能讓工作人員在第一時間獲取足夠的監(jiān)控信息,快速對故障點進行處理。
1.4.5 界面簡潔清晰。 各功能模塊界面應(yīng)簡便、規(guī)范,對用戶友好。避免復(fù)雜操作與顯示信息的混亂而導(dǎo)致降低使用該軟件的界面障礙。
1.4.6 警告標志突出。
告警處理必須謹慎,模糊的告警非但不能起到警示作用,還會降低監(jiān)控工作效率。該軟件采用醒目紅色背景標志出錯誤氣象信息,同時使用區(qū)別于其他告警軟件的聲音告警。雙重告警機制能保證任何人經(jīng)過都能知曉有警報,可及時通知專業(yè)工作人員。
2 軟件開發(fā)工具簡介
2.1 Delphi簡介
Delphi是著名的Borland(現(xiàn)在已和Inprise合并)公司開發(fā)的可視化軟件開發(fā)工具?!罢嬲某绦騿T用C語言,聰明的程序員用Delphi”,這句話是對Delphi最經(jīng)典、最實在的描述。Delphi被稱為第四代編程語言,它具有簡單、高效、功能強大的特點。與VC相比,Delphi更簡單、更易于掌握,而在功能上卻絲毫不遜色;與VB相比,Delphi則功能更強大、更實用??梢哉fDelphi同時兼?zhèn)淞薞C功能強大和VB簡單易學(xué)的特點,它一直是程序員至愛的編程工具。
Delphi具有基于窗體和面向?qū)ο蟮姆椒?、高速的編譯器、強大的數(shù)據(jù)庫支持,與Windows編程緊密結(jié)合,強大而成熟的組件技術(shù)。但最重要的還是Object Pascal語言,它才是一切的根本。 Object Pascal語言是在Pascal語言的基礎(chǔ)上發(fā)展起來的,簡單易學(xué)。
Delphi提供了各種開發(fā)工具,包括集成環(huán)境、圖像編輯(Image Editor)以及各種開發(fā)數(shù)據(jù)庫的應(yīng)用程序,如DesktopDataBase Expert等。除此之外,還允許用戶掛接其他的應(yīng)用程序開發(fā)工具,如Borland公司的資源編輯器(Resourse Workshop)。
2.2 Access數(shù)據(jù)庫
Microsoft Office Access是微軟把數(shù)據(jù)庫引擎的圖形用戶界面和軟件開發(fā)工具結(jié)合在一起的一個數(shù)據(jù)庫管理系統(tǒng)。軟件開發(fā)人員和數(shù)據(jù)架構(gòu)師可以使用Microsoft Access開發(fā)應(yīng)用軟件,“高級用戶”可以使用它來構(gòu)建軟件應(yīng)用程序。與其他辦公應(yīng)用程序一樣,Access支持Visual Basic宏語言,它是一個面向?qū)ο蟮木幊陶Z言,可以引用各種對象,包括DAO(數(shù)據(jù)訪問對象)、ActiveX數(shù)據(jù)對象以及許多其他的ActiveX組件??梢晫ο笥糜陲@示表和報表,它們的方法和屬性是在VBA編程環(huán)境下,VBA代碼模塊可以聲明和調(diào)用Windows操作系統(tǒng)函數(shù)。
Access有強大的數(shù)據(jù)處理、統(tǒng)計分析能力,利用Access的查詢功能,可以方便地進行各類匯總、平均等統(tǒng)計;并可靈活設(shè)置統(tǒng)計的條件,如在統(tǒng)計分析上萬條記錄、十幾萬條記錄及以上的數(shù)據(jù)時速度快且操作方便,這一點是Excel無法與之相比的。Access用來開發(fā)軟件,如生產(chǎn)管理、銷售管理、庫存管理等各類企業(yè)管理軟件,其最大的優(yōu)點是易學(xué),非計算機專業(yè)的人員也能學(xué)會。低成本地滿足了那些從事企業(yè)管理工作的人員的管理需要,通過軟件來規(guī)范同事、下屬的行為,推行其管理思想。
3 程序內(nèi)容實現(xiàn)
3.1 主程序界面設(shè)計
主程序界面如設(shè)計原則中所提,要求界面清晰且顯示內(nèi)容完整。所以主界面中僅顯示當前時間、監(jiān)控的氣象信息、下個時次的定時工作任務(wù)、聲音告警控制按鈕,且將四大類氣象信息分4張表分別顯示,同時將警告信息置頂顯示,使工作人員對于各種監(jiān)控信息一目了然(圖3)。
3.2 Access數(shù)據(jù)庫具體設(shè)計
該程序中Access數(shù)據(jù)庫主要為每日定時工作提醒模塊而設(shè)計,由于每年汛期與非汛期2個時間段的定時工作有不同,故此分為2個表以區(qū)分。具體字段定義為監(jiān)控時間、監(jiān)控內(nèi)容、監(jiān)控計算機地址、監(jiān)控數(shù)據(jù)目錄,其中將監(jiān)控時間定義為數(shù)字型,為了方便比對與排序查尋,其余字段全部定義為字符型。
3.3 編程使用的主要技術(shù)
3.3.1 FindFirst函數(shù)和FindNext函數(shù)。
可以遍歷一個本地路徑下的所有文件,包括目錄文件的卷文件,文件名過濾條件在path中指定,但查找結(jié)果中默認不會顯示隱藏文件、系統(tǒng)文件、卷文件和目錄文件,如果想在結(jié)果中包含這些屬性的文件,就需要在Attr中給予明確的指明[2]。此函數(shù)原型為:
Function FindFirst(const Path:Sting;Attr:Integer;Var F:TSearchRec):Integer;
3.3.2 數(shù)據(jù)庫語言SQL。
SQL是Structured Query Language(結(jié)構(gòu)化查詢語言)的縮寫。SQL是專為數(shù)據(jù)庫而建立的操作命令集,是一種功能齊全的數(shù)據(jù)庫語言。SQL功能強大、使用方便,已經(jīng)成為了數(shù)據(jù)庫操作的基礎(chǔ),且現(xiàn)在幾乎所有的數(shù)據(jù)庫均支持SQL。該程序中主要用到的是其中的select語句及其嵌套用法,其原型為:
Select 字段名 from 表名 where 條件
3.3.3 多線程技術(shù)。
隨著分布式系統(tǒng)的興起,并發(fā)多任務(wù)技術(shù)變得越來越重要。在現(xiàn)有基于多線程的操作系統(tǒng)上開發(fā)并發(fā)多任務(wù)程序已經(jīng)成為程序設(shè)計的熱點。根據(jù)需要在應(yīng)用程序中創(chuàng)建線程,多個線程可以并發(fā)地運行在同一個進程中,操作系統(tǒng)的多任務(wù)特性使得線程之間能獨立運行,但彼此共享存儲空間。盡管多線程能提高CPU利用率,但也不能太多,同時,在多個線程操作同一個內(nèi)存地址時需處理好它們之間的同步關(guān)系[3]。
3.4 告警功能說明
該程序采用顏色及聲音雙重告警,對所有四大類氣象數(shù)據(jù)監(jiān)控均采用視覺差異較大的紅色為底色,便于引起人員高度注意。由于MICAPS氣象數(shù)據(jù)大類中并非所有子數(shù)據(jù)每天都全部按時收到,且間隔時間也沒有規(guī)律,只要保證有90%以上數(shù)據(jù)正確接收并解碼就能正常工作,因此聲音告警僅應(yīng)用自動站與雷達衛(wèi)星兩大類中。
3.5 軟件的測試與維護
為保證軟件的可靠運行,需要針對各種情況進行測試。首先對各個功能模塊進行分別測試,包括對正確數(shù)據(jù)讀取測試、錯誤數(shù)據(jù)讀取測試、容錯性測試,然后將所有功能模塊聯(lián)合在一起作總體調(diào)試,最后在工作平臺進行實際運行測試。
在實際測試的同時,該程序也已進入運行維護階段,改正在特定使用條件下會暴露的潛在程序錯誤或設(shè)計缺陷,在軟件使用過程中數(shù)據(jù)環(huán)境發(fā)生變化或處理環(huán)境發(fā)生變化時進行及時修改。若有工作人員提出改進意見時,及時對軟件做出修正。
目前經(jīng)過連續(xù)2個月試運行未出現(xiàn)重大故障,證明該程序運行的穩(wěn)定性與可靠性達到設(shè)計要求。
人員的基本責任之一。在信息傳輸技術(shù)與手段發(fā)生變化時,在最短時間內(nèi)做出相應(yīng)監(jiān)控手段的調(diào)整以確保對氣象信息的有效監(jiān)控。
該程序?qū)λ拇箢悓崟r氣象數(shù)據(jù)的監(jiān)控融于一體,并伴有每日定時任務(wù)提醒,各界面清晰簡潔,采用多線程技術(shù)以提高各監(jiān)控模塊運行速度,從而使值班人員能方便并迅速地通過該程序進行監(jiān)控,迅速判斷故障并采取相應(yīng)措施,提高了工作效率。同時,模塊化的程序設(shè)計也使今后對于整個程序的修改工作變得方便。
參考文獻
[1] 吳玲,侯俊.中國氣象局衛(wèi)星數(shù)據(jù)廣播系統(tǒng)CMACast簡介[J].沙漠與綠洲氣象,2011(Z1):26.
[2] 張曜,張青,李彬.delphi函數(shù)使用手冊[K].北京:冶金工業(yè)出版社,2002.
[3] 張世明.delphi程序設(shè)計基礎(chǔ)[M].北京:電子工業(yè)出版社,2010.