(廣西廣播電視技術中心)
當前廣西廣播電視技術中心管轄的無線發射臺站數量已達800多個,各臺站內使用的設備品牌、種類繁多,大部分通訊協議均使用TCP/UDP協議下的自定義數據結構,且各種設備均不相同。所有設備的運行數據目前統一由遠程監控系統進行接收保存,而遠程監控系統的數據采集均是通過網絡傳輸,考慮到網絡連接必然存在各種不可預知的風險,網絡傳輸萬一斷開,臺站設備運行數據便無法實時收集,不利于運維工作的開展,進而可能影響安全播出。
由此考慮開發一套部署于臺站的數據存儲工具,實時采集接收各臺站設備關鍵數據,以便于在任何需要的時候,進行設備數據調取查閱,同時為臺站運維工作提供便利。
工具軟件基本設計要求:
工具軟件可運行在現有臺站服務器上;兼容當前大部分臺站設備;可靈活動態配置臺站、設備、命令結構信息;可以主動發送命令;可長期保存接收的數據,亦可作為臨時調測工具使用。
1.基本流程
數據存儲工具接收、解析數據基本流程如圖1。
2.兼容性設計
從開發難度、可維護性、通用性上綜合衡量,并結合目前大部分服務器操作系統為Windows的特點,調試工具開發采用C#編程語言,底層框架為兼容Windows所有系統版本的.NET Framework 3.5框架。

圖1 基本流程
通過對各設備的通訊方式進行研究,發現大部分均采用TCP/UDP方式進行通訊;因此在接收處理數據報文時,首先是將報文數據直接以十六進制方式保存到數據庫,然后再根據報文來源設備的類型,對報文進行解析。接收數據和解析數據的工作互不干擾,這樣既可以很好的保證數據接收的穩定性,也保證了數據的完整性。
3.配置設計
工具需要兼容所有的臺站和設備,為了使用靈活,設計了設備信息表、設備類型表、類型結構表等配置信息表,并使之關聯起來:
設備信息表用于記錄各個設備的地址、端口、設備類型等字段信息,其中設備類型字段關聯設備類型表;
設備類型表用于標記該設備的類型,如電源復位器、六路協調器、發射機等;
結構類型表以設備類型表為基礎,保存了各個設備類型對應的報文結構,包含了該報文需要解析的信息,如順序、類型、長度等。
通過多個信息表數據,很好的滿足了存儲工具對兼容設備多樣性的要求。
4. 數據庫設計
根據工具數據庫既可以長期保存接收的數據,也可以當作臨時調測工具使用的要求,對應兩種情況,分別采用SQL Server和Access數據庫。
當工具需要在臺站長期運行時,采用SQL Server數據庫,它的高性能可以很好的保證數據的存儲,而且SQL Server具備非常良好的易用性,便于后期維護。
當需要把工具作為臨時調試工具時,采用Access文件數據庫,它兼容Windows環境,具有小巧便捷免安裝的特點,便于在各種維護情況下使用。
在對臺站設備數據進行接收、解析時,隨著時間的積累,數據量會非常大;所以在保存數據時,采用月表(每個月一張數據表)的方式進行保存,這樣可以很好的保證工具運行的穩定和高效。
1.通用通訊協議
在分析設備類型時,發現使用通用通信協議的設備的主動報文是動態配置的,如果運維人員根據需要調整了主動報文的結構,會導致工具就無法解析數據報文;于是根據通用通訊協議主動報文自帶結構參數的特性進行特別處理,在初始化通用通訊協議的結構類型表時,將所有參數全部錄入;在接收來自于支持通用通訊協議設備的數據報文時,工具自動解析數據報文所包含的參數,并和結構類型表的參數自動匹配、建表;由此實現解決工具因為設備主動報文結構的調整導致數據無法接收的情況。
2.主動發送命令
數據存儲工具除了接收設備主動報文,還增加了主動發送命令的功能;在初始化設備信息時,通過添加主動命令及定時間隔;工具將根據配置,定時發送特定命令到目標設備;通過此功能,工具可以獲取除主動報文外的數據信息。
3.數據解析處理
臺站工具在需要長期運行,當數據量積累到一定數量時,必定會造成工具運行緩慢,甚至導致工具無法工作。于是在開發設計時進行了相應的優化,解析成功的源數據不再保留、一定時間內的特定類型數據如果重復則不接收。
4.數據庫操作

圖2 類型結構參數

圖3 數據展示
在對數據庫進行讀寫操作時,需盡量避免交叉使用,特別是在對源數據表讀寫上,接收數據時保存和解析數據時讀寫操作容易造成數據鎖;為此在接收到數據報文時,數據報文首先保存到隊列中,下一步再進行入庫操作,而解析數據時,首先將一小段數據保存至另一個臨時表,這樣可以有效降低對源數據表讀寫操作的頻率。
5.容錯能力
臺站環境復雜,設備廠家、類型、協議多種多樣,工具軟件功能的復雜性等,工具軟件的穩定性非常重要,即對工具容錯能力提出很大要求;在開發時,每一個重點操作均需對可能出現的異常進行處理,如解析數據時數據類型之間的轉換、保存入庫時類型的轉換、不同數據庫類型間的差異化等。
6.多線程處理
工具在處理數據接收、保存、解析、查詢時,多線程技術的使用尤為關鍵,尤其體現在界面操作的用戶體驗上;在使用多線程時,巧妙的使用線程委托技術,實現線程與界面進行交互,可以非常有效的提升使用效果。
1.參數配置
在參數設置界面,每個參數的新增錄入,工具均會提供默認值或參考值,并且伴有相應的提示信息,確保參數正常;在結構參數錄入時,尤其需要注意參數的先后順序。
2.數據接收
設備發出數據報文,工具接收到數據報文后,根據配置的設備地址及端口等判斷是否來源于目標設備,是則保存,否則丟棄該數據報文;保存時判斷該報文類型是否為自帶結構參數的類型,是則自動解析出參數,然后根據參數創建數據表。
3.數據解析
從數據庫分批獲取保存的源數據信息,工具根據源數據信息記錄的參數信息,判斷報文結構并解析數據,解析成功則保存到分表,源數據信息刪除;解析時需區分該報文類型是否為自帶參數類型,根據數據報文長度進行截取轉換為可視數據后存入分表。
4.結果查詢
在運維人員進行數據查詢分析時,解析后的報文數據通過表格形式展現,列表上方提供了檢索功能;左邊區域以結構類型為基礎,顯示設備結構類型樹。
當選中某個設備類型時,右邊區域動態初始化,表格顯示、檢索區域在初始化時,通過讀取后臺對應結構類型信息進行對應顯示,這樣方便后期運維查詢和數據篩選。
臺站數據存儲工具,可以很好的對臺站設備的數據進行保存處理,很好的為臺站的運維工作提供了便利,并且作為遠程監控系統的一個很好的補充,為單位安全播出工作的開展也提供了有力的支撐。