AUTOSAR CAN診斷實現研究
AUTOSAR各層軟體的通訊透過三類介面實現,分別是標準介面、AUTOSAR介面和標準AUTOSAR介面。其中,標準介面用於BSW各個模組之間的通訊,已用C語言定義,如void Adc_Init(const Adc_ConfigType* ConfigPtr)。AUTOSAR介面用於軟體構件(SW-C)之間的通訊或者軟體構件和ECU韌體(IO硬體抽象、複雜設備驅動)之間的通訊,這類介面命名以‘Rte_’為前綴。標準AUTOSAR介面用於軟體構件存取AUTOSAR服務。依賴這種分層架構和介面定義,AUTOSR顯著提高了汽車電子嵌入式軟體的再使用性──層級越高者,再使用性越強。值得注意的是:
* 微控制器抽象層層級最低,隨微控制器的更換而更換;
* RTE雖然層級僅低於應用層,但由於它負責著應用層和BSW之間的橋樑作用,和硬體的耦合性最高,不具有再使用性;
* 應用層(除感測器、執行器相關的軟體構件外)完全獨立於硬體,具有絕對的再使用性。
圖1 AUTOSAR分層架構
*
汽車診斷簡介
目前,整車廠和供應商採用在線診斷與離線診斷相結合的診斷方法。在線診斷透過ECU內部軟硬體實現自診斷。在汽車執行過程中,自診斷系統即時監控電子控制系統各組成部份的工作狀態,因而檢測電子控制系統中的故障。自診斷系統一方面將檢測出的故障透過一定的方式(比如警報指示燈)向駕駛員發出警告,另一方面將故障程式碼及相關數據存入ECU記憶體。離線診斷透過外部診斷設備讀取相應的診斷資訊,實現診斷作業。實現離線診斷的關鍵在於如何實現診斷設備和ECU之間的通訊機制和診斷服務,即診斷協議。
目前,診斷協議標準主要分為ISO和SAE兩種體系。美國使用SAE標準體系,包括中國在內的多數國家使用ISO標準體系。在乘用車領域,OEM正從自定義診斷協議逐漸轉向ISO標準。在商用車領域,OEM沿用SAE診斷,歐洲OEM在此基礎上增加了ISO診斷。表1列出了部份ISO和SAE標準對照。
AUTOSAR CAN診斷實現
1) 診斷服務
目前,AUTOSAR V3.1診斷部份支援9個OBD服務(如表2所示),14個UDS服務(如表3所示)。
依據表2和表3可知,AUTOSAR不支援OBD中的0x05服務(請求氧感測器監測結果),原因在於基於CAN線的0x05服務在0x06中實現。不支援UDS中的0x28(通訊控制)、0x34(程式下載)、0x35(程式上傳)、0x36(數據傳輸)和0x37(請求傳輸退出)服務,且0x10服務不支援編程會話和擴展會話這兩種子功能。這些服務主要用於ECU重新編程,因此AUTOSAR不支援Bootloader。
圖2 AUTOSAR CAN診斷相關模組
社區今日頭條 |
---|