白小軍,楊 軍
(西安工業(yè)大學 計算機科學與工程學院,陜西 西安 710032)
為了保證廣播電視節(jié)目的穩(wěn)定播出,需要對電視發(fā)射機的運行狀態(tài)進行監(jiān)測和控制[1]。目前,網(wǎng)絡化的遠程監(jiān)控已成為控制技術發(fā)展的一個主流方向,已有很多文獻介紹基于Web的發(fā)射臺遠程控制方案[2-5]。但有一個實際困難是:很多電視發(fā)射臺都建立在山頂,難以接入Inter?net,而人工現(xiàn)場監(jiān)控又費時費力,難以做到全天候監(jiān)控。這樣就要求有一種不依賴于Internet的便捷監(jiān)控手段。
短消息服務(Short Messaging Service,SMS)作為移動網(wǎng)絡的一項基本業(yè)務,以其實現(xiàn)簡單、成本低廉、可靠性高等優(yōu)勢,在各行各業(yè)得到了廣泛的應用[6-7]。目前,工業(yè)領域中的很多數(shù)據(jù)采集及遠程維護系統(tǒng)都用到了短消息服務。
將短消息服務引入發(fā)射臺遠程集中監(jiān)控系統(tǒng),可以將發(fā)射機的運行狀態(tài)以短信的形式發(fā)送給管理人員,也可以接收管理人員發(fā)來的短信命令以控制發(fā)射機執(zhí)行指定的動作,從而實現(xiàn)完整的控制與反饋,真正做到“無人值守,24小時監(jiān)控”。
傳統(tǒng)的控制設備一般都通過串口(RS-232和RS-485)與上位機通信,數(shù)據(jù)傳輸距離很短,難以實現(xiàn)遠程控制。借助近些年出現(xiàn)的設備服務器技術,可以方便地將串口設備接入網(wǎng)絡,從而為網(wǎng)絡化監(jiān)控創(chuàng)造了條件。
現(xiàn)代的電視發(fā)射機多配有控制器,可以采集各部件的運行參數(shù)并控制其動作。控制器一般都預留串口,并內(nèi)置了應用層通信協(xié)議。上位機只要按協(xié)議格式向串口發(fā)送特定的消息,控制器就可以識別并執(zhí)行相應的動作。借助一臺設備服務器,就可以將一臺發(fā)射機接入網(wǎng)絡。
短信收發(fā)設備又稱GSM Model(短信貓),也設計有串口與上位機通信,可以使用AT指令來控制短信收發(fā)。同理,借助設備服務器,也可以將短信收發(fā)設備接入網(wǎng)絡,從而與控制設備并網(wǎng),如圖1所示。從圖1中可以看出,一組控制設備最終通過短信收發(fā)設備接入了GSM網(wǎng)絡,為短信集中監(jiān)控創(chuàng)造了條件。
圖1 電視發(fā)射臺短信控制系統(tǒng)總體結構
設備服務器一般有兩種工作模式:一是透明傳輸模式,即串口數(shù)據(jù)不作任何處理打包成網(wǎng)絡數(shù)據(jù)(一般使用TCP或UDP包),而網(wǎng)絡數(shù)據(jù)也在解包后不作任何處理發(fā)往串口;二是網(wǎng)關模式,即在設備服務器上編程,實現(xiàn)定制的處理功能。顯然,第二種模式提供了更大的靈活性,可以滿足本系統(tǒng)的設計要求。
本系統(tǒng)選擇美國Lantronix公司的UDS1100設備服務器,設備代理及短信服務器軟件都運行在該平臺上。該平臺內(nèi)置有精簡的多任務操作系統(tǒng),使用時間片輪轉的方式進行并發(fā)處理;支持RS-232及RS-485接口,也支持TCP/IP協(xié)議棧中的常用協(xié)議;在此基礎上,提供了應用程序開發(fā)工具包,即一系列C語言的API,可以編程訪問串口和網(wǎng)絡接口。本系統(tǒng)中的串口通信采用RS-232協(xié)議,網(wǎng)絡消息收發(fā)則采用UDP協(xié)議。
設備服務器上的軟件結構如圖2所示。上層的應用軟件主要分為3個模塊:串口通信模塊、網(wǎng)絡通信模塊和主控模塊。前兩個模塊封裝了串口和網(wǎng)絡通信數(shù)據(jù)收發(fā)的常用函數(shù),以方便主控程序調用;主控程序作為系統(tǒng)的主進程,實現(xiàn)核心處理功能。
圖2 設備服務器上的軟件體系結構
從總體上看,本系統(tǒng)采用了“管理者—代理”的體系結構??拷l(fā)射機的設備服務器充當代理的角色,它要維護發(fā)射機的運行狀態(tài)數(shù)據(jù)以便管理者查詢,當管理者發(fā)來控制命令時,它還要控制發(fā)射機執(zhí)行指定的動作。而靠近短信收發(fā)器的設備服務器則充當了管理者的角色,管理所有的代理,并為手機用戶提供服務。
設備代理是系統(tǒng)設計的關鍵,其主要功能體現(xiàn)在4個方面:1)定期采集并維護設備的運行狀態(tài)數(shù)據(jù);2)處理管理者發(fā)來的查詢請求,返回請求數(shù)據(jù);3)處理管理者發(fā)來的命令請求,控制設備執(zhí)行指定的動作;4)當設備的關鍵信息項發(fā)生變化時,主動通知管理者。
針對電視發(fā)射機的管理要求,需要定制管理信息結構,以維護設備的運行數(shù)據(jù),所以定義了如下的數(shù)據(jù)結構:
在串口一側,為采集設備數(shù)據(jù)或控制設備動作,需要通過串口向控制器發(fā)送特定的消息,并接收反饋,所以設計如下的串口通信組件:
在網(wǎng)絡一側,要接收管理者發(fā)送的查詢或命令請求,并將設備狀態(tài)或告警信息發(fā)送給管理者,所以設計了如下的UDP通信組件:
主控程序的運行流程如圖3所示。在系統(tǒng)初始化完成后,就進入一個永真循環(huán),保證程序一直運行而不退出。循環(huán)內(nèi)部有兩個代碼塊,分別負責串口通信異常和正常兩種情況下的數(shù)據(jù)處理。代理首先通過串口向發(fā)射機發(fā)送查詢配置信息的命令,若正常返回結果,則說明設備連接正常;否則,進入異常處理流程,向短信服務器發(fā)送設備離線消息(短信服務器會將該消息通過GSM Mod?el發(fā)送到管理員手機上),并繼續(xù)測試串口,直到通信正常。在正確獲取發(fā)射機配置信息的前提下,程序將進入正常處理的循環(huán),按順序執(zhí)行兩項處理:一是通過串口采集設備的運行數(shù)據(jù),更新內(nèi)存中維護的數(shù)據(jù)集,若發(fā)現(xiàn)設備的運行狀態(tài)發(fā)生變化,則發(fā)送告警消息;二是檢測有沒有收到新的短信命令,若有,則處理該命令(對于查詢指令,直接向短信服務器發(fā)送狀態(tài)數(shù)據(jù)包;而對于控制指令,則通過串口向設備發(fā)送控制消息)。
短信服務器的主要功能體現(xiàn)在3個方面:1)后臺維護。集中管理所有設備信息,維護其代理地址、管理員手機號及操作密碼等;2)命令處理。接收管理手機發(fā)送的短信命令,轉化成UDP消息發(fā)往指定的代理;3)消息處理。接收代理發(fā)送的告警消息和狀態(tài)消息,轉化為短信發(fā)送到指定的手機上。
圖3 設備代理上的主控程序流程
為同時監(jiān)控多臺發(fā)射機,需要為每臺設備指定一個設備號、設備名稱和代理地址;為實現(xiàn)系統(tǒng)的訪問控制,需要設置一組管理手機號碼,并為每個號碼分別設置查詢密碼和操作密碼。顯然,這些信息需要長期存儲,所以保存在UDS1100內(nèi)置的Flash存儲器中,當短信服務器啟動時,自動將這些信息讀入內(nèi)存以便主控進程訪問。為方便維護這些管理信息,可以在UDS1100上進行CGI編程,提供Web接口進行操作[4-5]。
短信服務器上的主控程序流程如圖4所示。系統(tǒng)初始化完成后就進入主控循環(huán),不斷處理來自設備代理的UDP消息以及來自GSM Model的短消息。當檢測到UDP消息到來時,根據(jù)該代理的IP地址檢索其連接的發(fā)射機名稱及管理員手機號,并根據(jù)消息體構造短信內(nèi)容,通過GSM Model發(fā)送短信到該手機。當檢測到短信命令到來時,首先要從消息體中獲取手機號及操作密碼進行驗證,以確保操作的合法性;然后再解析短信內(nèi)容得到目標主機的代碼及控制命令;最后根據(jù)主機代碼查到該代理的IP地址,并向其發(fā)送UDP消息。
圖4 短信服務器上的主控程序流程
該模塊設計的一個難點是解決串口爭用問題:在網(wǎng)絡一側,一個短信服務器可以連接多個設備代理,但在串口上,它只能連接一個短信收發(fā)器,這就存在爭用串口的可能;另外,Model發(fā)送一條短信的時延很長,通常都在10 s以上,這就意味著,當短時間內(nèi)有多條UDP消息到來時,串口將來不及處理,很容易造成消息丟失。使用消息隊列可以有效解決該問題。消息隊列是一塊內(nèi)存緩沖區(qū),用以對UDP消息進行排隊處理。該隊列設有兩個指針,分別指向隊頭和隊尾;當一個UDP消息到來時,自動被壓入隊尾;而在主控程序中,每輪循環(huán)都要檢測隊列頭指針,若有新消息,并且串口狀態(tài)為就緒,則處理該消息,否則跳過該步驟,等待下一輪循環(huán)處理。
從圖1可以看出,本系統(tǒng)中有發(fā)射機、作為發(fā)射機代理的設備服務器、作為短信代理的設備服務器、短信收發(fā)設備及用戶手機等多種部件,各部件之間密切配合,需要制定一系列的通信規(guī)約。
1)設備服務器和發(fā)射機之間的串口通信規(guī)約
發(fā)射機的控制器和設備服務器之間使用RS-232通信,其消息結構如表1。
表1 發(fā)射機控制器與設備服務器之間的串口通信消息結構
表1中STX和ETX分別代表起始位和結束位;KEY表示消息類別,例如0x80代表上位機發(fā)往下位機的控制命令,0x81代表下位機向上位機返回的數(shù)據(jù)等;LENGTH表示消息正文的長度;MESSAGE為消息正文內(nèi)容,包含控制命令以及反饋數(shù)據(jù)等;BCC為校驗碼,用于驗證消息的完整性。
在消息正文中,又定義了一系列的控制命令,例如TXC:CFG命令用于獲取發(fā)射機的配置信息,TXC:QRY命令用于獲取發(fā)射機的運行狀態(tài)信息,TXC:CNTTX0代表關機命令,TXC:CNTTX1代表開機命令。
2)短信服務器和短信收發(fā)器之間的串口通信規(guī)約
GSM Model通過串口連接到短信服務器,標準的Model都可以使用AT指令來進行控制。由于AT指令涉及到通信的細節(jié)和交互過程,編程不夠方便,所以本系統(tǒng)選用的GSM Model又對AT指令做了一層封裝,使用約定好的文本消息結構收發(fā)短信。
發(fā)送短信的串口消息格式為“%SSMS”+“字符編碼方式”+“手機號”+“短信內(nèi)容”。
其中:%SSMS為消息起始標記;字符編碼方式為一個數(shù)字字符,0代表本短信內(nèi)容采用UTF編碼,1代表采用ASCII編碼;手機號為目標手機的號碼。
例如,短信服務器向串口發(fā)送消息“%SSMS0,18999999999,TX01串口通信中斷”,表示向手機號為18999999999的用戶發(fā)送“TX01串口通信中斷”的短信。
短信服務器接收的串口消息格式為“$SMS”+“手機號碼”+“字符編碼方式”+“內(nèi)容長度”+“短信內(nèi)容”。
例 如 ,收 到“ $SMS+8618999999999,ASC,14,TX01#ON#123456”串口消息,表示號碼為18999999999的手機發(fā)來一條短信,要求控制代號TX01的發(fā)射機執(zhí)行開機指令,在短信內(nèi)容中還附有該用戶的操作密碼,為“123456”。
3)設備代理和短信服務器之間的UDP通信規(guī)約
設備代理和短信服務器之間使用UDP Socket通信。
從設備代理到短信服務器要發(fā)送3種消息,分別是設備運行狀態(tài)信息、設備告警信息、串口通信狀態(tài)信息。這里使用3個字母代表消息類別,一串數(shù)字字符代表消息內(nèi)容。例如COM0代表串口通信中斷、COM1代表串口通信恢復;又如ALM0100102代表一條設備告警信息,ALM后面的每位數(shù)字分別代表發(fā)射機一個關鍵部件的告警狀態(tài),0表示正常,1表示告警,2表示重大告警。設備代理將消息代碼傳遞給短信服務器,后者再將代碼轉換為文字內(nèi)容發(fā)送給管理手機。
短信服務器發(fā)給設備代理的消息主要有兩種,一是查詢命令,二是控制命令,都使用簡寫的命令字表示。例如QRY表示查詢設備當前工作參數(shù),ON表示開機,OFF表示關機等。
4)用戶手機到短信收發(fā)器之間的短信格式規(guī)約
管理人員可以通過手機發(fā)送短信命令,格式為“Pass?word1”+“#”+發(fā)射機編碼+“#”+命令字+“#”+“Password2”。
其中Password1為GSM Model的驗證口令;Password2為用戶的操作口令;發(fā)射機編碼代表了不同的發(fā)射機;命令字代表本次要執(zhí)行的命令。GSM Model收到短信后,首先驗證Password1是否合法,若驗證通過,則將后面的內(nèi)容打包后通過串口發(fā)送給短信服務器,否則丟棄該短信。在短信中使用“#”分隔命令參數(shù),以便于短信服務器切分各參數(shù)。例如,發(fā)送短信“123456#TX01#QRY#654321”表示向TX01發(fā)射機發(fā)送一條查詢指令,短信貓的驗證口令為“123456”,該手機用戶的操作口令為“654321”。
本文將短消息服務引入遠程監(jiān)控領域,徹底解決了偏遠環(huán)境中的數(shù)據(jù)采集和遠程控制問題;在對時延要求不太嚴格的應用背景下,提出了一種非常廉價的遠程監(jiān)控方案。實際運行結果表明:在GSM信號能夠覆蓋到的范圍,該系統(tǒng)都能夠穩(wěn)定、高效的運行。
[1]吳升恒.廣播電視發(fā)射中心綜合監(jiān)控與管理系統(tǒng)的設計與實現(xiàn)[D].廈門:廈門大學軟件學院,2009.
[2]劉行兵,牟占生,孫斌.電視發(fā)射臺遠程監(jiān)控系統(tǒng)的實現(xiàn)[J].電視技術,2008,32(11):70-71.
[3]周春來,趙成安,孫芳.基于嵌入式Web的發(fā)射機遠程監(jiān)控系統(tǒng)[J].控制工程,2008(5):605-609.
[4]白小軍,羅鈞旻.基于WEB的發(fā)射機遠程控制系統(tǒng)設計[J].通信技術,2008(9):59-61.
[5]蘇振濤,羅鈞旻,白小軍.基于設備服務器的電視發(fā)射機遠程監(jiān)控系統(tǒng)[J].計算機測量與控制,2009,17(10):1883-1886.
[6]葛永明,程文鋒,饒琨.基于SMS通用型遠程無線監(jiān)控系統(tǒng)的實現(xiàn)[J].計算機測量與控制,2009,17(5):869-871.
[7]于立娟,于海業(yè),張志平.基于 GSM的遠程環(huán)境監(jiān)控系統(tǒng)[J].儀表技術與傳感器,2007(3):69-70.