秦園春 李建軍
(作者單位:安徽廣播電視臺淮北發射臺)
基于IP網絡的廣播電視發射機監控系統研究與實踐
秦園春 李建軍
(作者單位:安徽廣播電視臺淮北發射臺)
本文通過對第三方發射機遠程監控系統的分析,詳細介紹當前基于IP Client/Server結構的廣播電視發射機遠控系統的實現機理,給出了具體發射機的通信數據及數據結構。針對其通信數據及其結構的特點,設計了可用于廣播電視發射機遠控系統故障查處的分析測試軟件。結合具體故障查處實例介紹了該分析測試軟件的使用方法。
發射機通信數據;Client/Server結構;發射機測試器;虛擬發射機
安徽廣播電視臺淮北發射臺現采用HX發射機遠程監控平臺的遠程監控系統,將本臺各發射機以IP通信方式連接到控制室,來實現對發射機的遠程監控。目前,主要實現對發射機入射功率和反射功率的監測以及對各發射機的開、關機控制。該監控平臺在一定程度上實現了對各發射機的遠程監控,但也存在一些問題,如無法連接或連接異常、誤報警、不能有效開關機等情況。出現這些情況有可能是發射機端通信接口或者是接口轉換器件問題,也有可能是IP連接線路或者是交換機問題,還可能是監控端計算機問題或監控平臺軟件問題,如何確定問題所在,成為解決和處理問題的關鍵。針對上述情況,對HX發射機監控系統進行了深入研究并開發設計了專門的分析測試軟件。通過該軟件,可以對各發射機進行基于IP的單獨手動監控及對各發射機系統進行模擬,所有通信數據全部顯示出來,以便研究和分析。為解決和處理問題提供準確依據。
現在本臺被監控的發射設備有8臺電視發射機和12臺調頻廣播發射機,大部分是吉兆公司的GME產品。另外,也有個別其他發射機廠家的產品。目前,由于國內廣播電視系統尚未制定廣播電視發射機通信接口協議的統一規范,所以各發射機通信接口及通信協議也存在很大差異。吉兆GME機器都是通過RS485轉RS232,再由串口服務器向上提供IP通信服務,其他機器有的可以直接向上提供IP通信、有的則通過專門的采集系統向上提供IP通信服務。
根據上述情況,可以確定發射機遠程監控系統是一個基于TCP/IP的Client/ Server結構的通信系統。就可以用int connect (int sockfd,struct sockaddr * serv_ addr,int addrlen)和int listen(int sockfd,int backlog)函數分別與發射機和監控計算機構成連接,截獲其相關通信數據。
吉兆GME各發射機:
讀取機器數據指令0x01,0x27,0x00,0x00,0x26。
開機指令 0x01,0x3c,0x00,0x00,0x3d。
關機指令 0x01,0x3e,0x00,0x00,0x3f。
讀取成功都返回一個如下結構的數據。
Struct MachineData
{1 byte 0x01;
1 byte Year;
1 byte Month;
1 byte Day
1 byte Hour;
1 byte Minute;
1 byte Second;
2 byte Fwd
2 byte Refl
.
.
.
};
其中,GME1114、GME1114E、GME1014J及GME1F33B的Sizeof(MachineData)為1026;GME113D、GME 1153C的Sizeof(MachineData)為258;GME1053F的Sizeof(MachineData)為514。數據的第1個字節為0x01、第2~7個字節分別為發射機當時的年,月,日,時,分,秒的BCD碼。GME1114、GME1114E、GME1014J 10 kW電視發射機(淮北二套、安徽衛視 主備、淮北一套)、GME113D 1 kW電視發射機(中央七套)、GME1053F 5 kW電視發射機(安徽影視主)、GME 1153C 5 kW電視發射機(淮北教育)的第8~9兩個字節為發射機的入射功率、10~11兩個字節為發射機的電壓駐波比; GME1F33B 3 kW調頻發射機的第633~634兩個字節為發射機的入射功率、635~636兩個字節為發射機的反射功率。其他型號發射機限于篇幅就不再列出。
該測試軟件整體為Client/Server結構的通信系統,不依賴任何數據庫。分開設計為2個部分:發射機測試器部分和虛擬發射機部分。其中,發射機測試器可以提供對各發射機的單獨地手動開關機和數據讀取操作;虛擬發射機部分可以向上位系統(HX發射機遠程監控平臺等所有可以監控發射機的系統統稱為上位系統,包括本發射機測試器)提供可以人為修改的模擬發射機的有關數據。用Visual C++分別編譯成兩個可以獨立運行的文件,便于測試使用。
限于篇幅,這里只給出主要程序結構圖和描述性程序代碼。
2.1發射機測試器部分
發射機測試器主要程序結構見圖1。

圖1 發射機測試器程序結構
為方便使用,將本臺現有的被監控的發射機的IP地址和使用的端口也設計到發射機測試器軟件中,由COMBOBOX控件供用戶選擇,見圖2。

圖2 COMBOBOX控件顯示界面
由于從發射機返回的數據并不是標準的ASCII碼,直接顯示將是一堆亂碼,所以需要進行十六進制的轉換,以方便對數據的觀察和分析。



其中:szBufferRecv為接收發射機數據緩沖區,szBuffer為轉換后帶特定格式的數據緩沖區,recvsize為接收數據的長度。

圖3 虛擬發射機程序結構

圖4 虛擬發射機Scroll Bar控件顯示界面
除了對所有的返回數據以十六進制形式顯示之外,還把入射功率、駐波比和反射功率單獨解析出來以大家熟悉的十進制形式顯示。從前文分析知道,發射機返回的數據結構存在很大差異,特別是反射指標,有的發射機是以反射功率形式返回的、有的則是以駐波比形式返回的。對于以駐波比形式返回的數據,需要用如下公式,將駐波比換算成反射功率。
Pr/Po = [(VSWR-1)/(VSWR+1)]^2
Po:入射功率 、Pr:反射射功率、VSWR:駐波比
用sprintf(szBuffer,"%.2f",P);
SetDlgItemText(hDlg,EDIT_ID,szBuffer aa);
實現帶2位小數的十進制形式顯示。其中,EDIT_ID為顯示功率(入或反)的編輯框的ID。
2.2虛擬發射機部分
虛擬發射機部分主要程序結構見圖3。
主要功能就是接受上位系統的相關指令,做出狀態顯示,并將符合該發射機數據結構規范的數據發送給上位系統。用它可以代替真實發射機對上位系統進行測試,如越限報警測試,就不需要將真實發射機的有關指標開到報警的程度。對于上位系統來說,它就是一臺入射功率、反射功率等參數可以任意調整的發射機。由兩個滾動條控件Horizontal Scroll Bar和Vertical Scroll Bar分別提供對入射功率和駐波比的調節,反射功率由Pr/Po = [(VSWR-1)/(VSWR+1)]^2計算得出,并顯示出來。如圖4所示。
創建數據是虛擬發射機設計的主要內容,要把每臺發射機的特征數據、入射功率、反射功率等參數組織成一個完整的數據塊,它必須嚴格遵守對應發射機的數據結構規范,否則,上位系統將無法識別。需要強調的是,發射機的數據結構規范是發射機固有的,HX監控平臺要遵守這個規范、任何上位系統都必須遵守這個規范。
特征數據是發射機生產廠家定義的,在監控系統分析一節中,已經通過發射機與HX監控平臺的通信截獲到,也即是Struct MachineData中,前面若干位的數據,其中除吉兆發射機以外的各發射機都已取得了具體數據。吉兆發射機特征數據為0x01及后面年、月、日、時、分、秒的BCD碼。這里使用GetSystemTime(&tm)獲得計算機的系統時間,并轉換為BCD碼,來為其創建特征數據。
void int2bcd(int tmdata)
{char temp[2];
wsprintf(buff,"%02d",tmdata);
temp[0]=(buff[0]-0x30)<<4;
temp[1]=buff[1]-0x30;
buff[0]=temp[0]|temp[1];
buff[1]=0;
}
void int2bcd(int tmdata)為兩位整數轉BCD碼的子程序。
最后用memcpy(MachineData+n,&P,sizeP)將入射功率、駐波比或反射功率填入相應位置(n為偏移值)。

圖5 對比圖

圖6 淮北教育電視發射機數據
本分析測試軟件,需要依托計算機運行。在用于對發射機進行測試時(使用發射機測試器)要將測試用計算機的IP設置在與被測發射機相同網段、在用作虛擬發射機時要將測試用計算機的IP設置為對應發射機的IP。
下面通過幾個故障查處實例來說明該分析測試軟件的使用方法。
3.1安徽綜藝電視發射機無法實現遠程開關機
自HX發射機遠程監控平臺投入使用以來,就不能對安徽綜藝電視發射機實現遠程開關機。由于監控系統可以正常顯示發射機的功率參數,因此可以排除網絡連通性問題和硬件接口問題。
拔下連接到發射機的網線,插在測試用筆記本電腦上,并將其IP設置為安徽綜藝電視發射機的IP。運行虛擬發射機軟件,將發射機選擇為“DS安徽綜藝192.168.1.205:1024”,按下界面上的“開始”按鈕,可以看到從HX監控系統不斷發來讀數據指令“0x55,0xaa,0x00,0x07,0 x06,0x00,0x00,0x00,0x00,0x01,0x00”。調節界面上的“Fwd調節”滾動條和“VSWR調節”滾動條,HX監控系統監控界面上的安徽綜藝的入射功率和反射功率也作相應變化。執行“關機”操作,同時觀察虛擬發射機,沒有出現任何變化的數據。同樣方法,對安徽衛視測試,則可以收到對應的關機指令。如圖5所示。再將入射功率和反射功率調成零,執行“開機”操作測試,一樣是收不到開機指令。對安徽衛視測試就可以收的到。由此可以得出如下結論:HX監控系統對安徽廣播電視臺淮北發射臺安徽綜藝發射機的遠程開關、機只是做了個界面而已,實質上沒有發出任何指令,不可能實現遠程開、關機。
處理方法(思路):要求HX公司在監控軟件中加上該發射機的開、關機功能;聯系廠家,獲取到該機的開、關機指令,設計一專門線程注入到HX監控軟件中實現遠程開、關機。
3.2淮北教育電視發射機連接異常
HX監控系統服務器的“淮北教育電視”中出現“已連接”很快又斷開的現象,導致不斷報警。出現報警說明讀到了功率信息,再由于斷開后失去功率信息而造成的。基本上可以排除網絡連通性問題和硬件接口問題。
按上面實例的方法設置好相應的IP,選擇并連上虛擬發射機,一切正常。將測試用筆記本電腦的IP設置為192.168.1.100并連接到淮北教育電視發射機上,運行發射機測試器軟件,將發射機選擇為“DS淮北教育 192.168.1.207:4001”,按下界面上的“連接”按鈕,可以正常連接。按下界面上的“讀取數據”按鈕,讀取到該發射機的完整數據,如圖6。這樣就可以徹底排除網絡連通性問題和硬件接口問題了,問題應該出在發射機的數據結構上。觀察01后面數據,對應為67年2月13日13時39分15秒,是發射機的時間信息,對HX監控系統來說是特征數據。該發射機是2000年以后生產的,年份就應該是2067年。這顯然是一個錯誤的數據。
處理方法:把發射機的TIME調整為當前正常日期和時間,連接HX監控系統,一切正常。
結論:HX監控系統對吉兆發射機的時間信息有判斷,超出它認定的范圍就認為是錯誤的特征數據。所以出現讀取數據(包括功率信息,報警原因))發現不是有效的特征數據,斷開再連接,如此反復的現象。
3.3淮北經濟調頻發射機無法連接
淮北經濟調頻發射機和HX監控系統無法連接。按實例1.1的方法設置好相應的IP,連上虛擬發射機,一切正常,說明問題出在發射機或硬件接口上。按實例1.2的方法連上發射機測試器,可以正常連接,但讀不到數據,由于該發射機是吉兆機器,采用的是串口服務器向上提供IP通信的,可以構成正常的IP連接,說明串口服務器是正常的。那么問題只有RS485-RS232轉換器和發射機本身了。
處理方法:更換RS485-RS232轉換器,可以讀取發射機完整數據。連接HX監控系統,一切正常。
結論:接口硬件RS485-RS232轉換器損壞。
該分析測試軟件完全可以在不影響發射機正常播出的情況下對監控系統進行測試,為監控系統的故障查處提供數據層面的依據。由于在設計當中對發射機的IP及其端口的選擇最終歸類于發射機的類型,所以,對于所有相同類型的發射機,改變一下相對應的IP及其端口也同樣可以適用。
[1]張之超, 等. Windows程序設計[M].北京:人民郵電出版社,1999.
[2]蔣東興,林鄂華.Windows Socket網絡程序設計指南[M].北京:清華大學出版社,1995.
[3]此書編寫組.新編Windows API參考大全[M].北京:電子工業出版社,2000.
[4]李建軍.internet遠程監控軟件設計[J].微計算機信息,2003(3).
秦園春(1970-),男,工程師,從事廣播電視技術及監控軟件設計工作。