劉 靜,黨宏社,劉星亮,楊小青
(陜西科技大學電氣與信息工程學院,陜西 西安 710021)
責任編輯:任健男
當前,新興的移動數字電視廣播作為模擬信號廣播電視的延伸,大有替代傳統無線廣播的趨勢。數字電視發射機控制器是實現發射機智能化的核心。而發射機控制系統的通信網絡,為整個控制器提供控制和信息通道,是發射機控制器的重要部分。在分布式系統中,分機常采用多機通信方式,由于RS-485通信接口的傳輸距離遠,連線少,所以被認為是一種很好的通信模式[1-2]。
整個發射機控制系統采用DCS(Distributed Control System)設計結構。這種分布式控制系統不僅可靠性高,靈活性好,也易于維護,當某一局部出現故障時,并不影響整個系統的正常運行。因此具有管理、操作集中,而危險不集中的優點。發射機控制系統整體框圖如圖1所示。該控制系統由主控板、電源控制板、其他控制板、功放控制板、功放檢測板(6塊)以及上位機等部分組成。主控單元通過通信接口RS-485分別與電源控制單元、功放控制單元、其他控制單元連接,功放控制單元通過通信接口RS-485與功放檢測板連接。該系統所有通信均采用主從方式,每一次通信先由主機發起,從機響應,各從機之間不能直接通信,必須經過主機中轉。本文主要以主控板和下面3個分機之間的通信為例,詳細描述多機通信在數字電視發射機控制器中的應用。

圖1 系統整體框圖
由于工作環境的惡劣以及實時性的要求,控制系統采用多單片機協作的方式,控制芯片也采用小型化、穩定性高、實時性好的單片機。主控芯片W77E516,內含64 kbyte的可重復編程的Flash ROM,具有1 kbyte的片內數據存儲器,在相同頻率下,根據不同指令類型,其運行速度是標準8051的1.5~3倍,由于采用全靜態CMOS設計,功耗也比標準8051低。分系統采用較為常用的AT89S52和W77E58。
發送和接收驅動器均選用MAXim公司的MAX485。MAX485為半雙工通信方式,結構和引腳都非常簡單,易于應用。
為了提高抗干擾能力,需要選取匹配電阻,其阻值一般約等于傳輸電纜的特性阻抗[3]。匹配電阻一般在RS-485網絡中取120 Ω。
在通信協議的設計上將握手協議與差錯控制相結合,采用先“緊”后“松”的協議設計思想[4],即在通信開始傳輸最關鍵的地址幀和命令幀時充分考慮到傳輸丟失和傳輸誤碼的影響,雖然降低了通信效率,但提高了可靠性,即犧牲時間換取可靠性。而在之后的數據傳輸階段,則認為是在保證了無傳輸丟失和無傳輸誤碼的條件下通信,因此數據的發送接收和校驗程序設計得較為簡便,即犧牲可靠性換取時間。筆者將兩者有機結合,設計出了一種簡單可靠的多機應答式通信協議。
系統共分3個從機,分配的地址分別為01H,02H,03H。通信過程分為3個部分:地址的溝通,即主機向從機發送地址,被選中的從機要回復本機地址給主機;命令的溝通,即在主機接收到正確的從機地址后發送命令給被選中的從機,該從機回復相同的命令給主機;有效數據的傳送,即在主機接收到從機回復的正確命令后,發送設置量給從機,或要求從機上傳數據。在這3個部分中,若任何部分溝通出現問題,則退出此次通信。系統通信的波特率采用9600 band,通信數據長度可根據實際需要來定,具體的數據幀格式如圖2所示。

圖2 數據幀格式
有效數據均以ASCII碼形式發送,對數據的校驗采用異或方式。通信過程的3個部分中,地址的溝通流程如圖3所示(其中M用于記錄重發的次數),命令的溝通與地址溝通相似,區別僅在于在發送地址幀時TB8=1,而發送命令幀時TB8=0。對于有效數據的傳送部分,也采取限時等待、限次重發等措施,確保數據傳送的可靠性。

圖3 數據幀格式
主機和從機流程分別如圖4、圖5所示。其中0xFF表示校驗不正確,接收的數據有誤;0xEE表示校驗正確,接收數據準確。由于主機采用中斷方式接收數據,重發次數可由從機加以控制,因此主機無須再考慮。

圖4 數據幀格式

圖5 數據幀格式
為解決數據傳輸過程中可能會出現數據丟失或數據傳輸出錯的情況,分別采用以下方式來解決:
1)數據丟失時,系統采用超時處理方法,即發送方如果在一定的時間內得不到響應則重發前一幀數據或命令。
2)數據傳輸出錯時,在幀結構中增加校驗字節,跟隨數據一起發送出去,而接收方首先要對傳來的數據進行校驗,如果正確,則接收下來,否則丟棄本次數據。
由于外界干擾,在實際數據或命令傳輸過程中,可能會出現數據/命令幀丟失或出錯的情況,這樣有時會導致雙方都處于等待對方數據/命令幀的狀態,即進入死鎖狀態[5]。為消除死鎖現象,采取以下方法來解決:
1)限時等待的方法。即對等待時間加以限制,不是無休止地等待下去。在等待時間內,如果接收到對方回應則程序不再等待,繼續往下執行;但若超出等待時間,程序作相應處理,不再繼續等待,因此克服了死鎖現象。
2)限次重發的方法。限次重發,顧名思義,限制重發的次數。如果接收方在一定的時間內沒有接收到對方的回應,則將上一幀數據/命令重新再發一次,然后再次進入等待對方回應的狀態,若此情況連續持續3次,還是沒有接收到對方的回應,則認為通信線路或對方發生故障,退出此次通信。
由于主機和從機速度不匹配,主機CPU執行指令速度比較快,而從機相對較慢,在通信頻繁時,從機會反應不過來。因此采用兩種方法來解決,一是加入必要的延時程序,二是和同一從機通信的時間間隔拉長,例如用一變量專門累計主程序循環的次數,從0開始一直累加到5,當這個變量為5時才和某一確定的從機進行通信,然后此變量又歸0,相當于主機的程序循環5次才和從機通信1次。
文中所述的基于RS-485的主從式多機通信模式在數字電視發射機控制系統中進行了應用,經過實驗室測試及現場調試表明,該控制器穩定、可靠、抗干擾能力強,滿足發射機控制系統要求。
[1]楊斌,韓震宇.廣播發射機微控制器的系統設計與實現[J].中國測試技術,2005,31(2):36 -38.
[2]蘇學花,楊壽保.基于RS-485的分布式監控系統的設計[J].計算機應用,2001,21(8):70 -73.
[3]金勇,潘永才.一種基于RS-485總線的工控系統的設計與實現[J].現代電子技術,2006(12):134-136.
[4]寇強,黨宏社.一種串口多機應答式通信協議的設計與實現[J].電視技術,2008,32(1):59 -61.
[5]趙亮,侯國銳.單片機C語言編程與實例[M].北京:人民郵電出版社,2003.