白小軍,楊 軍,喻 鈞
(西安工業大學 計算機科學與工程學院,陜西 西安 710032)
隨著廣播電視事業的發展,廣播電臺對電視發射機的監控要求越來越高,從原有的本機自動化提高到臺內的自動化監控,進而發展到遠距離的發射臺自動化監控。另一方面,網絡技術的迅猛發展也引發了控制領域深刻的技術變革,網絡化的遠程控制以及基于Web的遠程控制已成為技術發展的主流方向。開發基于Web的集中監控系統,可以有效提高管理效率,節約人力,真正實現“有人值班、無人值守”的管理目標[1-3]。
遠程監控系統要解決的首要問題是管理主機和控制設備間的通信問題,即設備的運行狀態如何傳遞給管理主機,管理者的控制命令如何發送給被控設備。傳統的控制設備一般都通過串口(RS-232和RS-485)與上位機通信,這種方式通信距離很短,難以進行遠程控制;借助新興的設備服務器技術,可以方便地將串口設備接入網絡,實現串口協議與網絡協議之間的轉換,從而為串口設備的網絡化控制創造了條件。
在文獻[4]中,描述了如何通過CGI方式,在設備服務器上編程實現基于Web的設備監控;在文獻[5]中,描述了如何通過XML與XSL技術將監控系統的頁面展示邏輯轉移到客戶端,有效減輕設備服務器的負荷。兩篇文獻都存在一個局限,即都是針對單臺設備的監控,無法實現整個發射臺甚至多個發射臺的集中監控。
在控制系統中引入設備服務器后,可將一臺控制設備當作一個網絡設備來使用,設備服務器充當了被管設備代理的角色;這樣,控制系統管理的問題就可以轉化為網絡管理的問題來解決。而在網絡管理領域已有了一系列成熟的協議,SNMP(簡單網絡管理協議)成為不錯的選擇。
SNMP是網絡管理領域中的一項標準協議,用于實現路由器等網絡設備的信息采集和管理。SNMP采用“管理者—代理”的工作模式,如圖1所示。管理者負責發出管理操作的指令,并接收來自代理的響應或事件通告。代理位于被管設備一側,充當管理者和設備之間的中介,把來自管理者的命令或信息請求轉換為本設備特有的指令以執行,然后返回設備的信息;另外,代理也可以將設備系統中發生的事件主動通知給管理者。

圖1 SNMP的管理模型[5]
SNMP協議中的三大要素是管理信息結構(SMI)、管理信息庫(MIB)和SNMP通信協議。SMI定義了SNMP框架中可用的管理信息的類型和語法,為描述被管對象以及如何交換管理信息奠定了基礎;MIB以層次化的方式組織設備的管理信息,樹中的每一個節點都代表著設備的某項運行狀態數據,都有其唯一的標識號(OID),管理站就是通過OID來指定要訪問的數據項;SNMP通信協議定義了管理者和代理之間通信的消息類型和消息格式,常用的5種消息類型是GetRequest,GetNextRequest,Get?Response,SetRequest,Trap[6-8]。
將SNMP引入設備監控領域,可以在設備服務器上編程實現SNMP代理的功能,管理者通過Get原語可以采集設備的運行數據,通過Set原語可以控制設備執行指定的動作,當設備發生重大告警時,代理可以通過Trap原語及時上報給管理者。這樣,監控系統中的數據采集、命令控制等功能都得以實現。
基于SNMP協議的發射臺集中監控系統總體結構如圖2所示。

監控系統中的主要部件有:
1)被管設備。發射機控制器作為實際的被管設備,實現發射機內部各部件的運行控制。它通過串口與設備服務器通信,接收SNMP代理發送的控制命令,執行該命令,并返回設備的運行狀態數據。
2)設備代理。設備服務器作為被管設備的代理。一方面通過串口與被管設備相連,采集設備的運行數據,并向設備發送控制命令;另一方面通過網口與集中監控服務器相連,實現SNMP的Get,Set,Trap等原語操作。在代理中,需要針對控制設備特有的管理信息項定制MIB,維護設備的狀態信息。
3)集中監控服務器。作為集中監控系統的服務端,該服務器具有數據采集、客戶響應以及設備控制三項核心職能:一是采用輪詢的方式從代理處采集設備的運行狀態數據,保存到數據庫中,供前臺程序使用;二是接收客戶端發送的查詢指令,動態構造設備的運行狀態顯示界面;三是接收客戶端發送的控制命令,轉換成SNMP Set指令發送給代理,控制設備執行指定的動作。
4)管理客戶端。監控人員使用客戶端連接到監控服務器,查詢設備狀態,并向設備發送控制命令。
5)手機客戶端。在用戶不方便上網的情況下,可以通過手機短信的方式,查詢設備的運行狀態,或向設備發送控制命令。
6)GSM調制器。作為手機短信收發設備,可以將設備的運行狀態信息發送給手機客戶端(例如當設備發生重大告警或故障時向管理手機發送告警短信),也可以接收手機客戶端發送過來的查詢或控制短信,并交給監控服務器做進一步的處理。
設備服務器作為被管設備的代理,在系統中起著至關重要的作用。在管理者一側,它要維護設備特有的MIB信息,并實現SNMP的Get,Set及Trap等原語操作;在設備一側,它要通過串口與設備通信,實現數據采集與命令控制。
本系統選擇美國Lantronix公司生產的UDS1100設備服務器,它提供了簡單、廉價的串口設備聯網方案,內置精簡的多任務操作系統,支持ARP,IP,TCP,UDP等常用的網絡通信協議,可以透明地實現串口數據與網絡數據之間的協議轉換;同時,它還提供了CGI,SNMP等編程接口,可以方便地擴展功能。這里將使用其SNMP API,開發電視發射機設備的SNMP代理。
設備代理軟件的總體結構如圖3所示。

1)數據采集進程:設備代理上運行的主進程,控制系統以指定的時間間隔不斷向控制器發送查詢消息(調用命令處理組件的功能),獲取設備的運行狀態信息,并將這些信息保存到MIB中供SNMP組件訪問。
2)SNMP組件:實現SNMP協議的各項原語操作。處理網管應用程序發來的Get和Set指令,返回設備的運行狀態(訪問MIB變量獲得),或通過命令處理組件向設備發送控制命令;當設備有重大告警時,也通過該組件向管理者發送Trap。
3)命令處理組件:處理SNMP組件發出的Set指令,以及數據采集進程發出的Get指令;調用串口通信組件的功能,向設備控制器發送查詢或控制命令,并接收設備的運行狀態數據以更新MIB。
4)串口通信組件:封裝了串口消息的構造和收發操作,使得命令處理組件可以很方便地通過串口向控制器發送消息,獲取設備運行參數或控制設備動作。
代理系統設計時要注意兩個方向的接口:在被控設備一側,要明確控制器支持的消息接口,即串口命令及響應的數據包格式,針對每一條串口命令設計相應的命令處理組件,實現被控設備的數據采集以及命令控制;在網絡管理一側,要明確管理信息結構,合理設計私有MIB,并針對MIB變量設計SNMP組件,實現Get,Set及Trap等原語操作。
為方便串口消息的收發,串口通信組件中設計了兩個核心的函數:
1)根據要發送的控制命令構造串口消息包,并保存到發送緩沖區,即:

2)發送串口消息并接收響應,即:

根據用戶的監控要求,本系統需實現發射機配置信息、運行狀態信息及PA運行數據、日志數據等基本信息查詢功能,同時還要實現開/關機、重啟、激勵器切換等常用的控制功能。為此,設計如下的命令處理組件:

被控設備的管理信息維護在MIB中,這里需要針對發射機的運行狀態和控制要求定制MIB,如圖4所示。

其監控數據分類保存到txQry(運行狀態信息)、txCfg(配置信息)、txSet(控制命令)、fpaTable(功放運行狀態信息,表格結構)、txLogs(日志信息)幾個節點下。通過SNMP Get或GetNext操作可獲取MIB中保存的信息數據;若要控制設備執行某項動作,則通過SNMP Set原語,設置txSet節點下的某個變量的值,這樣SNMP組件將自動調用命令處理組件的相關函數,完成指定的控制操作。
遠程監控服務器的總體結構如圖5所示。該系統具有3個核心進程,即數據采集進程、集中監控進程和短信監控進程。

1)數據采集進程。該進程隨系統的啟動而啟動,并一直在后臺運行,按一定的時間間隔定期采集各設備的運行數據并保存到數據庫中備用。
2)集中監控進程。該進程在前臺運行,接收并處理用戶的請求。若是查詢請求,則從數據庫中檢索設備的運行狀態信息反饋給用戶;若是命令請求,則轉化為SET指令發送給設備代理。由于采用了基于Web的監控方案,該進程演變為Web服務器進程。
3)短信監控進程。該進程一直在后臺運行,監聽本機的串行端口(連接GSM調制器);當收到管理員發送的短信命令時,解析并執行該命令,將結果反饋給管理手機;當數據采集進程發現重大告警信息,或設備代理發來Trap消息時,該進程還要自動構造告警短信,并通過短信操作組件發送給管理手機。
服務器系統設計的難點在于數據采集部分,它要周期性地輪詢所有代理以采集設備的運行數據;根據實時性要求,輪詢間隔不應超過10 s。考慮到系統中監控的設備數量眾多,每臺設備的數據采集都會產生一定的延遲,若按順序逐個采集,時延就會累積起來,根本不能滿足實時性的要求。為解決這一問題,必須采用多線程采集。
數據采集模塊的運作過程如圖6所示。它由一個定時器(圖中的Timer組件)觸發運行,每當定時事件到來時,自動檢索采集組件(Qry_Task)的實例并調用其execu?teTask()方法啟動數據采集;在executeTask()方法中,首先要獲得所有設備的列表(調用QryDAO的getTXList()方法),然后針對每個設備分別啟動采集線程;Poll_Thread為線程類,它調用SNMP組件的功能以訪問代理,并將采集到的數據保存到數據庫中。

Web應用的用戶界面一般在服務器端動態生成,然后將產生的HTML代碼傳遞給客戶端,由瀏覽器展示給用戶。將這種工作模式應用到集中監控系統中存在兩個問題:首先,監控界面的生成邏輯比較復雜,要根據設備的配置信息及運行狀態動態構造并不斷刷新,大大增加了服務器的處理負荷;其次,傳統的Web界面一般都采用模板的方式構造,界面形式相對固定,而監控系統中往往同時并存多種不同型號的設備,其監測參數有所區別,進而監控界面也會有所區別,模板的方式很難適應。這樣,如何動態構造監控界面就成為一項具有挑戰性的工作。
使用XML與XSLT相結合的技術可以較好的解決這一難題。XML作為描述數據的語言,擴展性極強,允許用戶自定義標記,從而可以簡潔、自然地組織數據。XSLT可以對XML進行轉換,改變其輸出方式,一種常用的轉換方法是將XML轉換為HTML以便在瀏覽器中展示,這樣可以將數據的表示與數據本身相分離,提供更大的處理靈活性。基于這樣的思路,可以將監控數據與監控界面的生成邏輯分離開來,在服務器端獲取監控數據,然后交給客戶端構造用戶界面。
Web監控界面的生成過程如圖7所示。在服務器端,Web組件將設備的配置參數及實時運行數據包裝到一個XML文檔中,然后根據設備的型號選擇一個合適的XSLT文檔,作為樣式表附加給XML。這兩個文檔會隨響應一起發送給客戶端,由瀏覽器中的XML處理程序進行轉換,生成最終的HTML展示給用戶。

這樣處理的好處顯而易見:首先,充分發揮了分布式計算的優勢,有效降低了服務器的負荷;其次,將數據的表示與數據本身相分離會提供更好的擴展性,例如,若以后想引入WAP客戶端,那么,Web組件中生成監控數據的代碼將不用作任何改動,只需針對WAP界面設計新的XSL即可。
在控制系統中引入設備服務器,可以方便地將串口的控制設備接入網絡;若在設備服務器上編程實現代理的功能,則可以使用網絡管理領域的技術和方法來實現設備監控。本文針對某電視設備有限公司電視發射機遠程集中監控系統的實際需求,將SNMP協議引入設備監控領域,設計了基于Web的發射臺遠程集中監控系統。本系統已在國內外很多家電視臺中投入使用,穩定運行,驗證了方案的有效性。
[1]吳升恒.廣播電視發射中心綜合監控與管理系統的設計與實現[D].廈門:廈門大學軟件學院,2009.
[2]劉行兵,牟占生,孫斌.電視發射臺遠程監控系統的實現[J].電視技術,2008,32(11):70-71.
[3]周春來,趙成安,孫芳.基于嵌入式Web的發射機遠程監控系統[J].控制工程,2008(9):605-609.
[4]白小軍,羅鈞旻.基于WEB的發射機遠程控制系統設計[J].通信技術,2008(9):59-61.
[5]蘇振濤,羅鈞旻,白小軍.基于設備服務器的電視發射機遠程監控系統[J].計算機測量與控制,2009(10):1883-1886.
[6]岑賢道,安常青.網絡管理協議及應用開發[M].北京:清華大學出版社,1999.
[7]CASE J,FEDOR M,SCHOFFSTALL M,et al.IETF RFC1157,A simple network management protocol(SNMP)[S].1990.
[8]王曉東,楊學海.SNMP在C/S模式遠程監控管理系統設計中的應用[J].電訊技術,2010(1):87-91.