白 曦,王 俊
(中國航空工業集團公司西安航空計算技術研究所,西安 710068)
供電數據采集器與智能接觸器采用半雙工UART接口[1],通過異步串行通信接收和發送信息。供電數據采集器與智能接觸器間有2路RS485總線,每路總線采集4個只能接觸器狀態。RS485總線組網方式如圖1所示。

圖1 RS-485總線組網方式
穩定可靠的通信不僅依賴硬件環境,也依賴于通信協議。主節點供電數據采集器與從節點智能接觸器之間的通信協議如圖2所示。

圖2 數據楨結構
(1)數據幀頭:用于標識數據幀的開始,數據幀頭字由2個字節組成,主節點發送數據幀頭1的值為0xAA,數據幀頭2的值為0x55,主節點接收數據幀頭1的值為0xEB,數據幀頭2的值為0x90。
(2)數據幀ID號:RS485總線上的通信為廣播方式,所以每個智能接觸器應該有獨立地址,判斷該數據幀是否應該接收。
(3)命令/數據:數據幀中實際數據,為了保證數據通信可靠性,所有數據以0~9的ASCII碼發送,智能接觸器收到后再處理。
(4)校驗和:用于數據幀的校驗,它是除本身外的塊中所有字節之和以256為模的二進制補碼。
2.2.1 主從通信時序控制
供電數據采集器與智能接觸器的接口采用半雙工UART接口,通過異步串行通信接收和發送信息。RS485總線為半雙工通信方式,同一時刻只能有一個節點處于發送狀態,否則會引起總線沖突[2]。供電數據采集器與智能接觸器之間的通信采用定時啟動方式,供電數據采集器為主設備,智能接觸器為從設備,通信啟動方式采用定時啟動方式,主控站按約定周期向從控站發送數據命令,以啟動一次數據傳送的通信,直到該次通信所應傳送的數據傳送完畢,然后主控站才結束這次傳送過程,下一個通信周期又重復這個傳送過程。供電數據采集器每50ms輪詢一個智能接觸器,4個智能接觸器共需要200ms完成一次通信。一次通信包括從主設備發送數據到主設備接收數據完成,通信周期采用定時器實現,定時器周期t為10ms,通信周期T為50ms,一次通信傳輸過程包括以下4個階段:一是在通信周期T到來時,調度供電數據采集器發送任務組織發送數據;二是在每個定時器周期t到來時,主設備檢測發送數據并啟動物理傳輸;三是智能接觸器在每個定時器周期t到來時進行數據查詢接收,解析,并組織回復數據;四是供電數據采集器在接收任務周期T到來時進行數據接收、解析。
2.2.2 通信狀態機
為了解決線上主從設備收發沖突問題,設計了通信狀態機,保證一次通信周期內的發送接收在同一狀態下進行,直到本次通信結束或另一狀態觸發條件滿足,通信進入另一狀態。針對本項目通信特點,設計了握手狀態、空閑狀態、數據傳輸狀態、錯誤恢復狀態、錯誤處理狀態5個狀態。各狀態間的轉換見圖3所示。

圖3 通信狀態機
上電后,供電數據采集器進入握手狀態,向智能接觸器發送握手命令并等待智能接觸器的回復確認,若握手失敗,則一直處于握手狀態,直到握手成功。
握手成功后,如果有數據則轉入數據傳輸狀態,在此狀態下,供電數據采集器和智能接觸器之間可傳輸檢測命令和檢測結果;若無數據傳輸,則進入空閑狀態,直到有數據發送后才轉入數據傳輸狀態。
數據傳輸狀態下若發生傳輸錯誤,通信進入錯誤恢復狀態,如果在規定的恢復次數內數據傳輸正確,則通信轉回數據傳輸狀態,如果恢復失敗,則通信轉入錯誤處理狀態,進行通信狀態錯誤處理。
2.2.3 通信異常處理通信異常處理分為2種情況:
(1)握手失敗:供電數據采集器向智能接觸器發送握手命令后,若接收不到智能接觸器回復,則供電數據采集器一直發送握手命令,直到握手成功。
(2)通信異常:在外部通信鏈路受到干擾時,出現數據丟失、數據不對等問題,供電數據采集器對接收數據進行有效性判斷后,若接收錯誤,則采用重發機制,并設置從發次數上限N,在重發計數小于N時,若接收正確,則通信鏈路恢復正常,若連續N次都接收錯誤,則記錄通信鏈路故障。
本文設計的RS485總線通信方法,采用主-從通信方式,確定供電數據采集器為主設備,智能接觸器為從設備,并通過在主設備上設置通信狀態機,確定了主設備實時通信狀態,對數據狀態進行校驗,只處理當前狀態下的數據,使發送和接收均在同一狀態下進行,從而有效避免數據交互過程中的收發錯誤和收發沖突問題,提高了供電數據采集器與智能接觸器間通信的可靠性。經試驗室聯試驗證,該方法有效可行,能大幅度提高設備間的通信效率。