中心議題:
- 汽車診斷簡介
- AUTOSARCAN診斷實現(xiàn)
AUTOSAR是由全球汽車OEM和供應(yīng)商共同推出的一種汽車電子嵌入式軟體分層架構(gòu)。該分層架構(gòu)由微控制器抽象層、ECU抽象層、服務(wù)層、執(zhí)行時環(huán)境(RTE)和應(yīng)用層組成,前叁層被統(tǒng)稱為基礎(chǔ)軟體(BSW)。
AUTOSAR各層軟體的通訊透過叁類介面實現(xiàn),分別是標(biāo)準(zhǔn)介面、AUTOSAR介面和標(biāo)準(zhǔn)AUTOSAR介面。其中,標(biāo)準(zhǔn)介面用于BSW各個模組之間的通訊,已用C語言定義,如voidAdc_Init(constAdc_ConfigType*ConfigPtr)。AUTOSAR介面用于軟體構(gòu)件(SW-C)之間的通訊或者軟體構(gòu)件和ECU韌體(IO硬體抽象、復(fù)雜設(shè)備驅(qū)動)之間的通訊,這類介面命名以‘Rte_’為前綴。標(biāo)準(zhǔn)AUTOSAR介面用于軟體構(gòu)件存取AUTOSAR服務(wù)。依賴這種分層架構(gòu)和介面定義,AUTOSR顯著提高了汽車電子嵌入式軟體的再使用性──層級越高者,再使用性越強。值得注意的是:
*微控制器抽象層層級最低,隨微控制器的更換而更換;
*RTE雖然層級僅低于應(yīng)用層,但由于它負(fù)責(zé)著應(yīng)用層和BSW之間的橋樑作用,和硬體的耦合性最高,不具有再使用性;
*應(yīng)用層(除感測器、執(zhí)行器相關(guān)的軟體構(gòu)件外)完全獨立于硬體,具有絕對的再使用性。
圖1AUTOSAR分層架構(gòu)
汽車診斷簡介
目前,整車廠和供應(yīng)商採用在線診斷與離線診斷相結(jié)合的診斷方法。在線診斷透過ECU內(nèi)部軟硬體實現(xiàn)自診斷。在汽車執(zhí)行過程中,自診斷系統(tǒng)即時監(jiān)控電子控制系統(tǒng)各組成部份的工作狀態(tài),因而檢測電子控制系統(tǒng)中的故障。自診斷系統(tǒng)一方面將檢測出的故障透過一定的方式(比如警報指示燈)向駕駛員發(fā)出警告,另一方面將故障程式碼及相關(guān)數(shù)據(jù)存入ECU記憶體。離線診斷透過外部診斷設(shè)備讀取相應(yīng)的診斷資訊,實現(xiàn)診斷作業(yè)。實現(xiàn)離線診斷的關(guān)鍵在于如何實現(xiàn)診斷設(shè)備和ECU之間的通訊機制和診斷服務(wù),即診斷協(xié)議。
目前,診斷協(xié)議標(biāo)準(zhǔn)主要分為ISO和SAE兩種體系。美國使用SAE標(biāo)準(zhǔn)體系,包括中國在內(nèi)的多數(shù)國家使用ISO標(biāo)準(zhǔn)體系。在乘用車領(lǐng)域,OEM正從自定義診斷協(xié)議逐漸轉(zhuǎn)向ISO標(biāo)準(zhǔn)。在商用車領(lǐng)域,OEM沿用SAE診斷,歐洲OEM在此基礎(chǔ)上增加了ISO診斷。表1列出了部份ISO和SAE標(biāo)準(zhǔn)對照。
AUTOSARCAN診斷實現(xiàn)
1)診斷服務(wù)
目前,AUTOSARV3.1診斷部份支援9個OBD服務(wù)(如表2所示),14個UDS服務(wù)(如表3所示)。
依據(jù)表2和表3可知,AUTOSAR不支援OBD中的0x05服務(wù)(請求氧感測器監(jiān)測結(jié)果),塬因在于基于CAN線的0x05服務(wù)在0x06中實現(xiàn)。不支援UDS中的0x28(通訊控制)、0x34(程式下載)、0x35(程式上傳)、0x36(數(shù)據(jù)傳輸)和0x37(請求傳輸煺出)服務(wù),且0x10服務(wù)不支援編程會話和擴展會話這兩種子功能。這些服務(wù)主要用于ECU重新編程,因此AUTOSAR不支援Bootloader。
圖2AUTOSARCAN診斷相關(guān)模組[page]
雖然AUTOSAR目前不支援上述服務(wù),但并未限制開發(fā)者對其進行擴展。
2)軟體架構(gòu)
AUTOAR架構(gòu)中和診斷相關(guān)的模組如圖2所示。
FIM模組的作用是根據(jù)DEM(DiagnosticEventManager)報告的事件狀態(tài)使能或禁止軟體構(gòu)件內(nèi)部的功能實體。PDURouter(協(xié)議數(shù)據(jù)單元路由器)模組僅負(fù)責(zé)轉(zhuǎn)發(fā)DCM(DiagnosticCommunicationManager)和CANTP(CANTransportLayer)之間的I_PDU(交互層協(xié)議數(shù)據(jù)單元),不會對數(shù)據(jù)進行任何修改。CANInterface模組、CANDriver模組和CANTransceiver模組負(fù)責(zé)L_PDU(數(shù)據(jù)鏈路層協(xié)議數(shù)據(jù)單元)的傳輸。
DEM、DCM和CANTP是AUTOSAR架構(gòu)中和診斷相關(guān)的核心模組。
3)DCM
DCM模組遵循ISO14229-1、ISO15031-5、ISO15765-4和SAEJ1979標(biāo)準(zhǔn),能直接處理0x10、0x27和0x3E服務(wù)。收到AUTOSAR支援的OBD服務(wù)或其他UDS服務(wù)時,靠叫DEM、軟體構(gòu)件或者其他BSW模組提供的介面進行響應(yīng)。
AUTOSAR建議用叁個功能模組組成DCM,分別是DSL(DiagnosticSessionLayer)、DSD(DiagnosticServiceDispatcher)和DSP(DiagnosticServiceProcessing)。其中DSL負(fù)責(zé)處理PDURouter傳來的診斷請求,管理會話層和應(yīng)用層定時參數(shù),處理會話狀態(tài)的切換等。DSD負(fù)責(zé)將DSL傳來的診斷請求轉(zhuǎn)發(fā)給DSP,同時將DSP傳來的診斷響應(yīng)報文傳給DSL。DSP負(fù)責(zé)分析接收到的診斷請求報文,檢查其報文格式以及其請求的子功能。只有在診斷請求報文的服務(wù)標(biāo)識符、子功能、報文格式等條件都滿足的情況下,DSP才會處理收到的請求報文,并將處理結(jié)果整理成診斷響應(yīng)報文發(fā)給PDURouter。
4)DEM
DCM模組遵循的標(biāo)準(zhǔn)與DCM相同,負(fù)責(zé)直接處理與DTC相關(guān)的服務(wù),如UDS中的0x19服務(wù)(響應(yīng)報文由DCM發(fā)送出去)。當(dāng)軟體構(gòu)件中的MonitorFunction檢測到故障或BSW模組檢測到故障時,將通知DEM模組處理和儲存‘診斷事件’(由EventID進行標(biāo)識)。如果故障確診,唿叫NVRAMManager(非揮發(fā)性記憶體管理器)提供的介面將其存取到非揮發(fā)性記憶體中,同時通知應(yīng)用層進行故障指示。DEM的狀態(tài)圖如圖3所示:
圖3DEM狀態(tài)圖
5)CANTP模組
遵循ISO15765-2標(biāo)準(zhǔn)。負(fù)責(zé)診斷報文的尋址、拆包與打包,以及網(wǎng)路層定時參數(shù)的管理。所以,該模組向下傳輸?shù)氖荖_PDU(網(wǎng)路層協(xié)議數(shù)據(jù)單元)。
第一、由于嚴(yán)格分層,除了CANDriver和CANTransceiver模組要依賴于硬體,AUTOSAR與診斷相關(guān)的模組幾乎完全獨立于硬體。按照此架構(gòu)開發(fā)完成的診斷程式碼能夠擺脫硬體的束縛,具有最大程度的再使用性。
第二、AUTOSAR目前不支援SAEJ1939。
第叁、暫時不能直接將AUTOSAR軟體架構(gòu)用于Bootloder程式的開發(fā)。
綜上所述,AUTOSAR標(biāo)準(zhǔn)仍舊處于發(fā)展和完善階段,但隨著目前汽車ECU軟體開發(fā)矛盾的加劇,開發(fā)難度不斷增大,開發(fā)週期卻不斷縮短,AUTOSAR將成為必然趨勢。