現場總線CAN 在監控系統網絡中通信協議設計
控制網絡中產生的控制命令一般是猝發式的,對于控制系統而言必須確保控制命令被及時并且成功的發送,控制網絡報文標識符定義如下表所示:
CAN 總線中非破壞性總線仲裁技術,是從協議幀標識符的最高位開始,即BIT.28 逐位比較下去,當出現參加仲裁的雙方在某一位第一次出現顯隱性不同時,為顯性位的那個協議幀贏得仲裁。根據CAN 總線的這一特性,即標識符值越小發送優先級越高,根據系統總線流程以及控制網絡中各網絡節點優先級的高低從小到大設置各個模塊的網絡節點號,如表3 所示:
當控制網絡數據發送頻繁時,可能導致部分控制命令幀由于標識符優先級的原因而丟失SJA1000 控制器的仲裁,雖然SJA1000 具有丟失仲裁后的自動重新發送該報文的功能,但該控制命令幀仍然存在發送失敗的可能性,最終導致控制功能的失效。CAN 協議幀優先晉升方案能夠大大降低上述情況發生的可能性,為實現控制命令幀發送時在丟失仲裁后重發的優先級晉升,則必須禁止MAC 子層的自動重發功能,由應用層來實現報文的重發。該系統采用Philips 公司的SJA1000 作為CAN 網絡控制器,可以通過在報文發送時設置其命令寄存器的第0、1 位禁止其自動重發功能,改為單次發送。
起動發送報文之后,MCU 須判斷該網絡節點是否已經成功發送了一條報文或者報文發送失敗:首先,當SJA1000 中斷寄存器出現了仲裁丟失中斷或者發送中斷,表明該節點已經處理完了一條報文,但是仍然不知道是否發送成功。如果成功,中斷寄存器就沒有仲裁丟失中斷,但是會產生發送中斷,因為發送成功后發送緩沖區會釋放。如果發送不成功,一定是與較高優先級的協議幀競爭的結果,所以會有仲裁丟失中斷。但是改為單次發送后,發送失敗以后也會釋放緩沖區,因此將同時產生仲裁丟失中斷以及發送中斷。在得到節點已經處理完一條報文后,只要用以上的規則進行判斷就能知道上一條報文是否發送成功,也就是用來判斷是否需要晉升節點所發送信息幀的優先級并重發該幀。
控制網絡的標識符劃分為三個部分,其中標識符的第 21 至28 位用于協議幀優先晉升,這部分標識僅表示協議幀的優先級,它由調度機制分配給協議幀的優先級的變化而變化,設Pi=(2n-1)-kt,Pi 項為當前控制命令協議幀的優先級,(2n-1)代表其優先級隊列的初始值,即為隊尾;n 為優先級隊列的二進制數,BIT28:21 共有8 位數,所以這一項數值為0FFH。kt表示優先級晉升項,t 為首次發送以來協議幀丟失仲裁的次數,k 為晉升權重,k 取值越大協議幀優先晉升速度就越快(該系統中取k=1)。由此可見,當某協議幀第一次發送時,Pi=0FFH,當它在發送時與其他協議幀碰撞并失去仲裁時,退出發送并且置Pi=0FEH 重新發送,因為此時其優先級高于其他協議幀,在整個網絡中如果沒有其他和它具有相同優先級的協議幀同時發送時,即使與其他第一次發送的協議幀碰撞,也會贏得仲裁,所以增大了該幀發送成功的概率。下圖為報文優先級晉升控制流程:
圖 2 報文優先級晉升控制流程
除此之外,系統具有控制參數在線修改的功能(如修改系統參數)。參數修改命令由上位機發出修改幀,能量管理控制器接收后進行操作執行。當進行在線控制參數修改時,能量管理控制器將發出廣播消息通知控制網絡所有節點禁止所有控制動作的輸出,以防止意外情況的發生。
在進行參數的下載修改過程中,為避免修改幀發送失敗或丟失,從而導致系統參數混亂,甚至導致系統癱瘓的情況發生,使用幀標識符的第11、12 位表征修改幀的結構類型:單幀、非結束多幀和結束多幀。當待修改的參數數量較少,單個協議幀能夠包含所有修改信息時,能量管理控制器接收到來自上位機的修改幀,并判斷該修改幀為單幀標識后,則立即進行參數存儲空間的修改;若待修改的參數較多,單個協議幀無法包括所有待修改數據時,上位機首先發出部分修改幀使用非結束多幀標識,發送至最后一個修改幀時,標記為結束多幀。功率管理模塊只有在將全部待修改的參數接收完畢(即收到結束多幀標識)之后,才開始對相應參數存儲空間進行數據修改的操作。完成操作之后,能量管理控制器再將相應存儲空間修改完畢的數據發送反饋至上位機,進行握手確認。采用以上系統參數修改機制同時結合協議幀優先晉升方案,大幅提升了電站重要參數修改的可靠性。
4 結束語
船舶電站監控系統網絡通信的實現,節省了大量的現場線纜,整個系統便于調試。網絡數據傳輸過程中使用的協議幀優先級晉升算法機制等處理方案以及雙冗余的網絡硬件結構,提高了現場總線網絡的可靠性和穩定性。同時,此網絡適應力及擴展力強,可根據不同船舶電站系統的結構差異靈活配置系統的設備,并且隨時能加入新的站點及第三方設備。
評論