王若玨 陳蘇婷
(南京信息工程大學江蘇省氣象探測與信息處理重點實驗室 江蘇 南京 210044)
?
基于嵌入式Linux的衛(wèi)星氣象控制與管理系統(tǒng)設計
王若玨陳蘇婷
(南京信息工程大學江蘇省氣象探測與信息處理重點實驗室江蘇 南京 210044)
摘要針對目前氣象控制及管理平臺的特點,設計基于嵌入式Linux平臺的氣象控制與管理系統(tǒng)。該系統(tǒng)依托北斗衛(wèi)星通信實現(xiàn)了對各區(qū)域中各功能模塊的控制操作,并采用基于Linux平臺下的Qt圖形用戶界面開發(fā)工具設計一套操作界面,實現(xiàn)了對多個區(qū)域氣象數(shù)據(jù)的實時采集、顯示、存儲等處理。通過LZW算法和固定位長算法混合編碼實現(xiàn)自動氣象站數(shù)據(jù)的無損壓縮,進一步提高了對自動氣象站遠程管理能力和氣象中心的便攜性、靈活性,為建立移動氣象中心提供一種思路。
關鍵詞嵌入式系統(tǒng)北斗衛(wèi)星LZW算法固定位長算法移動氣象中心
0引言
我國是受自然災害較為嚴重的國家,為提高氣象服務的質量,全國大量布設自動氣象站和原地面氣象觀測站共同組成氣象觀測網。但我國幅員遼闊,沙漠、山區(qū)、海島等偏遠地區(qū)電力、通信等基礎設施較為薄弱。特別有些地區(qū)有線、無線通信網絡還沒有實現(xiàn)覆蓋,氣象數(shù)據(jù)傳輸問題成為布設自動氣象站決定因素。隨著我國自主研發(fā)的北斗衛(wèi)星導航系統(tǒng)的發(fā)展,北斗衛(wèi)星系統(tǒng)的短報文通信在氣象數(shù)據(jù)傳輸領域的應用越來越廣泛。它能充分利用衛(wèi)星通信覆蓋無盲點、全天候實時通信、數(shù)據(jù)傳輸成本低、可靠性和安全性高的優(yōu)點[1]。然而,大多數(shù)的氣象控制與管理系統(tǒng)都基于PC平臺,體積龐大,不易攜帶,工作效率低。
針對上述問題,設計基于嵌入式Linux平臺的氣象控制與管理系統(tǒng)。旨在運用單個嵌入式終端遠程控制并管理多個區(qū)域的自動氣象站,解決整個控制管理系統(tǒng)便攜化、小型化的問題,提供一種新型移動氣象中心控制、管理系統(tǒng)構建的新模式。
1系統(tǒng)設計方案
1.1系統(tǒng)設計
基于嵌入式Linux平臺氣象控制與管理系統(tǒng)由嵌入式模塊、衛(wèi)星通信模塊和數(shù)據(jù)壓縮模塊組成。系統(tǒng)框圖如圖1所示。嵌入式模塊通過RS232串口與北斗用戶機0相連,實現(xiàn)指令發(fā)送、數(shù)據(jù)接收、處理和管理功能;北斗用戶機0與各區(qū)域所放置的北斗用戶機N(N為自然數(shù))通過北斗衛(wèi)星通信,保證了氣象中心與自動氣象站所布區(qū)域的遠程通信;數(shù)據(jù)壓縮模塊通過雙RS232串口分別與各區(qū)域北斗用戶機和區(qū)域自動氣象站相連,實現(xiàn)氣象數(shù)據(jù)的采集與壓縮。系統(tǒng)利用各用戶機的ID號不同,可實現(xiàn)一個嵌入式終端對全國多個已布自動氣象站所在的多個區(qū)域進行控制和氣象數(shù)據(jù)管理等功能。
圖1 系統(tǒng)框圖
1.2數(shù)據(jù)壓縮算法模型
考慮到北斗短報文通信頻度為1分鐘,其電文內容單次最大字節(jié)為78.5字節(jié)[2],而自動氣象站1次采集數(shù)據(jù)量為180字節(jié)左右,故接收一條完整的數(shù)據(jù)的最小周期為3分鐘。為提高系統(tǒng)傳輸效率,系統(tǒng)需在各區(qū)域放置數(shù)據(jù)壓縮模塊,以提高氣象數(shù)據(jù)的傳輸效率。
本文以一種無人值守氣象站為例,自動氣象站數(shù)據(jù)格式為:通信開始標志+命令+數(shù)據(jù)信息開始標記+數(shù)據(jù)內容+通信結束標志。例如:自動氣象站于2014年9月9日采集的數(shù)據(jù)如下:NUISTUB 2014-09-09 13:02 258 0 201 0 258 0 13:02 313 0 217 0 13:01 0 0 244 244 13:01 234 13:01 87 87 13:02 221 9970 9974 13:01 9969 13:02 3131 79 3131 13:02 164 4 164 13:01 277 147(注:數(shù)據(jù)之間以空格作為分隔符,且數(shù)據(jù)擴大10倍)。自動氣象站數(shù)據(jù)內容特點如下:數(shù)據(jù)結構“空格+小時:”和“空格+數(shù)字”(如:“ 09:”和“ 0”等)多次重復出現(xiàn);數(shù)據(jù)中的數(shù)字較多,數(shù)字ASCII碼值從0X30至0X39,高4位字節(jié)固定為0011。根據(jù)自動氣象站數(shù)據(jù)的特點,考慮采用對連續(xù)重復出現(xiàn)字符串壓縮率好的LZW算法和壓縮率高的固定位長算法進行混合編碼,從而對自動氣象站數(shù)據(jù)進行無損壓縮處理。
2系統(tǒng)模塊設計
2.1衛(wèi)星通信模塊
本系統(tǒng)利用北斗衛(wèi)星配合北斗用戶機進行遠程數(shù)據(jù)和指令傳輸,保證氣象中心和各區(qū)域間進行數(shù)據(jù)、指令通信。衛(wèi)星通信模塊傳輸流程如圖2所示。
圖2 衛(wèi)星通信模塊傳輸流程圖
衛(wèi)星通信通信模塊工作步驟為:(1) 北斗用戶機0接收來自嵌入式模塊的指令請求,指令遵循衛(wèi)星通信協(xié)議,其格式為:北斗指令+信息類別+ID號+電文長度+電文內容+校驗和,北斗用戶機0通過用戶ID號與不同區(qū)域的北斗用戶機N通信;(2) 北斗用戶機N接收到協(xié)議指令后轉發(fā)給數(shù)據(jù)壓縮模塊,經數(shù)據(jù)壓縮模塊處理后,得到壓縮數(shù)據(jù),最終通過北斗衛(wèi)星和用戶機0返還給嵌入式終端。
2.2數(shù)據(jù)壓縮模塊
數(shù)據(jù)壓縮模塊作為整個系統(tǒng)的“橋梁”,不僅與嵌入式模塊進行數(shù)據(jù)、指令的交換,并且將來自于北斗用戶機N的協(xié)議指令進行解析,獲得自動氣象站的數(shù)據(jù),并實現(xiàn)氣象數(shù)據(jù)的無損壓縮。
2.2.1壓縮算法實現(xiàn)
圖3 壓縮算法流程圖
混合壓縮算法充分利用了對連續(xù)重復出現(xiàn)字符壓縮率好的LZW算法和壓縮率高的固定位長算法[3]。首先,先建立相應的字符串表:固定字符串“空格+時間:”用0X3A表示(需要特別說明的是,采樣時間不用此表示,便于在混合算法解碼過程中,數(shù)據(jù)能夠完全還原);固定字符“空格+0”用0X3B表示;依次類推,用0X3F表示“空格+4”,這樣得到一個新的字符串,各字符相應字節(jié)高4位也固定為0011與數(shù)字ASCII碼高4位一致。接著,采用固定位長算法對新字符串的低4位進行編碼,那么原來的字符串長度縮短了一半,數(shù)據(jù)量也相應減小一半,從而使壓縮效率大大提高。壓縮算法流程如圖3所示。
2.2.2硬件實現(xiàn)
由于自動氣象站所布區(qū)域偏遠,為降低數(shù)據(jù)壓縮模塊功耗,延長數(shù)據(jù)壓縮模塊的工作壽命,數(shù)據(jù)壓縮模塊選用低功耗的MSP430作為主控芯片,以方便后期工作人員對設備進行維護管理。數(shù)據(jù)壓縮模塊結構如圖4所示。
圖4 數(shù)據(jù)壓縮模塊結構框圖
圖5 數(shù)據(jù)壓縮模塊軟件流程
模塊工作過程如下:(1) 北斗用戶機N將接收到的協(xié)議指令通過串口通信模塊1傳送至控制指令提取模塊,得到控制指令,控制指令只針對自動氣象站有效;(2) 控制指令通過串口通信模塊0發(fā)送至自動氣象站,自動氣象站接收到控制指令后,將原始數(shù)據(jù)返還給數(shù)據(jù)接收單元;(3) 原始數(shù)據(jù)經過數(shù)據(jù)壓縮處理后,按照衛(wèi)星通信協(xié)議重新打包后送至數(shù)據(jù)發(fā)送單元;(4) 壓縮數(shù)據(jù)經過數(shù)據(jù)發(fā)送單元返還至北斗用戶機N。數(shù)據(jù)壓縮模塊軟件流程如圖5所示。
2.3嵌入式模塊
嵌入式模塊作為本系統(tǒng)的核心,選擇了一款高性能基于Cortex A8架構的SMART210嵌入式核心板[4]。通過配置編譯完成Linux操作系統(tǒng)軟件平臺搭建,Linux操作系統(tǒng)選擇Fedora14,使用目前嵌入式Linux的主流GUI系統(tǒng)QT作為開發(fā)工具[5]。在Linux環(huán)境中安裝交叉編譯器,用來完成QT庫和應用程序的編譯。模塊主屏幕采用7寸的LCD電容屏,處理器內部集成的LCD控制器信號線經過驅動電路后即可連接到LCD模塊[6]。
嵌入式模塊由用戶圖形界面、數(shù)據(jù)處理和系統(tǒng)控制管理三個功能模塊組成。用戶圖形界面為系統(tǒng)提供了便于操作和管理的用戶界面,增加了系統(tǒng)的人機交互性;數(shù)據(jù)處理模塊實現(xiàn)了對壓縮數(shù)據(jù)的解析;系統(tǒng)控制管理一方面實現(xiàn)了對遠程設備的控制,另一方面完成數(shù)據(jù)顯示和管理的功能。嵌入式模塊流程如圖6所示。
圖6 嵌入式模塊流程圖
2.3.1圖形化界面GUI設計
在本設計中,為界面顯示的對象定義了一個抽象類(paint)。界面的曲線圖形的繪制采用QT的二維圖形引擎的基礎類QPainter開發(fā)。QPainter具有豐富的圖形圖像繪制功能函數(shù),利用這些函數(shù)實現(xiàn)各種類型的氣象數(shù)據(jù)曲線的繪制[7],并完成了自定義窗體部件類(QWidget)和子窗口類(QLabel、QSlider等)布局。利用信號與槽函數(shù)機制完成了一整套用戶操作系統(tǒng)界面的設計,從而保證了個界面間快速的連接跳轉,方便工作人員對終端設備的操作。
paint類的定義如下:
class paint : public paint_ui
{
Q_OBJECT
public:
paint( QWidget * parent = 0, const char * name = 0, WFlags
fl = WType_TopLevel );
virtual ~paint();
private:
void initialization();
//初始化函數(shù)
int openSerialPort();
//串口通信函數(shù)
void map_Read();
//繪制曲線函數(shù)
void Valu_Read();
//讀取數(shù)值函數(shù)
protected:
virtual void paintEvent(QPaintEvent *);
private slots:
void historical_data();
//歷史數(shù)據(jù)槽函數(shù)
……
}
2.3.2數(shù)據(jù)處理功能實現(xiàn)
數(shù)據(jù)處理模塊由數(shù)據(jù)識別單元、數(shù)據(jù)預處理單元、數(shù)據(jù)解析單元組成。該模塊負責處理從北斗用戶機接收到的壓縮數(shù)據(jù),并將根據(jù)壓縮算法將數(shù)據(jù)解析還原為原始氣象數(shù)據(jù)。
數(shù)據(jù)處理模塊中各子單元功能實現(xiàn):
(1) 數(shù)據(jù)識別單元:判斷接收數(shù)據(jù)的正確性。根據(jù)北斗通信協(xié)議判斷接收數(shù)據(jù)的信息類型、ID號等信息是否正確。
(2) 數(shù)據(jù)預處理單元:當判斷接收到的正確的數(shù)據(jù)后,利用QString.remove(const QString &str)函數(shù)對數(shù)據(jù)進行預處理;接著,根據(jù)北斗用戶機的通信協(xié)議,提取出相應ID編號和壓縮數(shù)據(jù)。
(3) 數(shù)據(jù)解析單元:根據(jù)數(shù)據(jù)壓縮模塊的算法,提取采樣時間信息,利用QString.replace(const QString &str,const QString &str)函數(shù)分別將壓縮編碼過程中各字符還原成原始數(shù)據(jù)。其中各數(shù)據(jù)之間用“/”區(qū)分,如:風速和降雨兩個數(shù)據(jù)之間用“/”隔開;接著,利用QString.split(const QString &str)函數(shù),可將各個氣象數(shù)據(jù)分別提取出來,數(shù)據(jù)解析部分代碼如下:
QString hourt =″/″+strHex.mid(44,2)+″:″;
//提取時間信息
QString dataori = data.mid(46);
//提取壓縮后的氣象數(shù)據(jù)
dataori.replace(QString(″a″), QString(hourt));
//數(shù)據(jù)解析
dataori.replace(QString(″b″), QString(″/0″));
dataori.replace(QString(″c″), QString(″/1″));
dataori.replace(QString(″d″), QString(″/2″));
dataori.replace(QString(″e″), QString(″/3″));
dataori.replace(QString(″f″), QString(″/4″));
QStringList datalist = dataori.split(″/″);
根據(jù)自動氣象站的協(xié)議可知,數(shù)據(jù)擴大了10倍,因此需要將各數(shù)據(jù)進行還原。各數(shù)據(jù)通過判斷字符位數(shù)可以進行相應的操作,例如:若數(shù)據(jù)長度為1位,則使用QString append ( const QString &str)在字符前端插入字符串“0.”;若數(shù)據(jù)長度超過1位,則使用QString insert ( int position, const QString &str )在字符末位前插入小數(shù)點;最后將數(shù)據(jù)放入對應datalist。數(shù)據(jù)還原以風速為例,其代碼如下:
int windatalen=datalist[4].length();
//獲得風速的數(shù)據(jù)長度
switch(windatalen)
//判斷風速的數(shù)據(jù)長度
{
//若數(shù)據(jù)長度為1位,則插入“0.”
case 1: datalist[4] =datalist[4].append(″0.″);break;
case 2:datalist[4] =datalist[4].insert(1, ′.′); break;
case 3:datalist[4] =datalist[4].insert(2, ′.′); break;
case 4:datalist[4] =datalist[4].insert(3, ′.′); break;
default: break;
//將風速存入列表datalist[4]中
}
2.3.3控制管理功能實現(xiàn)
系統(tǒng)控制管理功能分為遠程控制和系統(tǒng)管理,完成指令請求發(fā)送、數(shù)據(jù)管理與系統(tǒng)調試功能。遠程控制通過不同指令對自動氣象站實現(xiàn)控制,例如:通過UB 獲得當前常規(guī)要素瞬時數(shù)據(jù)。另一方面,在系統(tǒng)安裝調試時,配置嵌入式模塊的測試參數(shù),例如:串口波特率、指令發(fā)送頻度、指令發(fā)送模式、區(qū)域選擇等。由此,實現(xiàn)對遠程自動氣象站的控制。
系統(tǒng)管理功能實現(xiàn)對采集數(shù)據(jù)的顯示、存儲和歷史氣象數(shù)據(jù)的讀取、繪圖。為實現(xiàn)此功能,需要配合使用QSQLite完成數(shù)據(jù)庫管理操作[8]。在歷史實時數(shù)據(jù)查詢界面中,選擇需要查詢的時間區(qū)間、區(qū)域、氣象數(shù)據(jù)類型后,在paint類中定義的Valu_Read()成員函數(shù)會從數(shù)據(jù)庫中提取響應時間、區(qū)域、氣象數(shù)據(jù)類型的值,并利用二維繪圖QPaint類來繪制曲線,實現(xiàn)選擇的氣象數(shù)據(jù)在對應時間區(qū)間的曲線的繪制。
3功能展示與性能測試
將各個模塊按系統(tǒng)框圖組合連接,進行系統(tǒng)測試,系統(tǒng)運行良好,各模塊間設定參數(shù)與反饋參數(shù)匹配度較好。系統(tǒng)設置界面如圖7所示,工作人員可以在界面上進行參數(shù)配置和數(shù)據(jù)指令發(fā)送。濕度曲線圖如圖8所示,圖中橫坐標表示查詢的時間,其單位為:小時;縱坐標表示相應氣象數(shù)據(jù)的數(shù)值及其單位。工作人員通過操作界面選擇需要查詢的時間、區(qū)域和氣象數(shù)據(jù)類型并通過曲線直觀的反映天氣情況。
圖7 系統(tǒng)設置對話框界面
圖8 歷史數(shù)據(jù)查詢界面
4結語
本文以Linux平臺為基礎設計了氣象控制與管理系統(tǒng),系統(tǒng)依托北斗衛(wèi)星通信,大大減少了構建通信設備的高花費。利用MSP430低功耗的優(yōu)勢結合LZW算法和固定位長算法混合編碼,提高了自動氣象站的傳輸、監(jiān)測和管理效率。利用嵌入式系統(tǒng),實現(xiàn)了對多個區(qū)域自動氣象站的遠程控制和氣象數(shù)據(jù)管理功能,形成了對地面控制和顯示系統(tǒng)的良好補充。為建立移動氣象中心提供了一種新思路,以便應用于偏遠地區(qū)的氣象監(jiān)測領域。
參考文獻
[1] 宋博宇,黃建華,王曉芳.“北斗系統(tǒng)”在人防信息化系統(tǒng)的應用[J].微型機與應用,2012,31(24):4-6.
[2] 張勇,陳蘇婷,張燕.基于北斗衛(wèi)星的自動氣象站數(shù)據(jù)傳輸管理系統(tǒng)[J].電子技術應用,2013,40(5):21-23.
[3] 周貴宇,馬憲民,李衛(wèi)斌.改進的混合壓縮算法在GPS數(shù)據(jù)壓縮中的應用[J].計算機應用與軟件,2013,30(12):167-169.
[4] 張穎,易金花,張曉玉,等.基于嵌入式Linux的上肢康復機器人用戶系統(tǒng)研究[J].電子技術應用,2014,40(5):14-17.
[5] 陳鯤,陳云秋,劉信新.基于Qt/Embedded的嵌入式Linux應用程序的設計[J].計算機與數(shù)字工程,2009,37(1):156-161.
[6] 王潤明,趙祥模,惠飛,等.基于嵌入式Linux與QT的汽車虛擬儀表設計[J].現(xiàn)代電子技術,2012,35(6):2-4.
[7] 邱鐵,周玉,張民壘.Linux環(huán)境下Qt4圖形界面與MySQL編程[M].北京:機械工業(yè)出版社,2012.
[8] 劉治國,陳新華.基于Linux和Qt的智能家居系統(tǒng)的設計與實現(xiàn)[J].電子技術應用,2012,38(4):23-26.
DESIGNING EMBEDDED LINUX PLATFORM-BASED SATELLITE METEOROLOGICAL CONTROL AND MANAGEMENT SYSTEM
Wang RuojueChen Suting
(JiangsuKeyLaboratoryofMeteorologicalObservationandInformationProcessing,NanjingUniversityofInformationScienceandTechnology,Nanjing210044,Jiangsu,China)
AbstractAiming at the characteristics of current meteorological control and management platform, we designed an embedded Linux platform-based meteorological control and management system. Relying on the Plough satellite communication, the system realises the control and operation on each functional module in every area, we also used the Linux platform-based Qt graphical user interface development tools to design a set of operation interfaces which implemented the processing of real-time collection, display and storage on meteorological data in multiple areas. In it, the system efficiently realises the lossless compression of automatic meteorological station data through the mixed code using LZW coding algorithm and fixed bit length packing coding algorithm. In this way we further improved the portability and flexibility of the remote management capability on automatic meteorological stations, and this provided a new thought for the construction of mobile meteorological centres.
KeywordsEmbedded systemThe Plough satelliteLZW coding algorithmFix bit length packing code algorithmMobile meteorological centre
收稿日期:2014-11-13。江蘇省研究生培養(yǎng)創(chuàng)新工程項目(SJLX_0384)。王若玨,碩士生,主研領域:嵌入式系統(tǒng)設計。陳蘇婷,副教授。
中圖分類號TP311
文獻標識碼A
DOI:10.3969/j.issn.1000-386x.2016.05.055