AUTOSAR診斷功能實現、數據流的方向,以及PDU\SDU


  AUTOSAR是由全球汽車OEM和供貨商共同推出的一種汽車電子嵌入式軟件分層架構。該分層架構由微控制器抽象層、ECU抽象層、服務層、執行時環境(RTE)和應用層組成,前三層被統稱為基礎軟件(BSW)。

  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診斷相關模塊。

  雖然AUTOSAR目前不支持上述服務,但並未限制開發者對其進行擴展。

  2) 軟件架構

  AUTOAR架構中和診斷相關的模塊如圖2所示。

  FIM模塊的作用是根據DEM(Diagnostic Event Manager)報告的事件狀態使能或禁止軟件構件內部的功能實體。PDU Router(協議數據單元路由器)模塊僅負責轉發DCM(Diagnostic Communication Manager)和CAN TP(CAN Transport Layer)之間的I_PDU(交互層協議數據元),不會對數據進行任何修改CAN Interface模塊、CAN Driver模塊和CAN Transceiver模塊負責L_PDU(數據鏈路層協議數據單元)的傳輸。

  DEM、DCM和CAN TP是AUTOSAR架構中和診斷相關的核心模塊。

  3) DCM

  DCM模塊遵循ISO 14229-1、ISO 15031-5、ISO 15765-4和SAE J1979標准,能直接處理0x10、0x27和0x3E服務。收到AUTOSAR支持的OBD服務或其他UDS服務時,靠叫DEM、軟件構件或者其他BSW模塊提供的接口進行響應。

  AUTOSAR建議用三個功能模塊組成DCM,分別是DSL(Diagnostic Session Layer)DSD(Diagnostic Service Dispatcher)DSP(Diagnostic Service Processing)其中DSL負責處理PDU Router傳來的診斷請求,管理會話層和應用層定時參數,處理會話狀態的切換等DSD負責將DSL傳來的診斷請求轉發給DSP,同時將DSP傳來的診斷響應報文傳給DSL。DSP負責分析接收到的診斷請求報文,檢查其報文格式以及其請求的子功能只有在診斷請求報文的服務標識符、子功能、報文格式等條件都滿足的情況下,DSP才會處理收到的請求報文,並將處理結果整理成診斷響應報文發給PDU Router。

  4) DEM

  DEM模塊遵循的標准與DCM相同,負責直接處理與DTC相關的服務,如UDS中的0x19服務(響應報文由DCM發送出去)。當軟件構件中的Monitor Function檢測到故障或BSW模塊檢測到故障時,將通知DEM模塊處理和儲存“診斷事件”(由Event ID進行標識)。如果故障確診,呼叫NVRAM Manager(非易失性內存管理器)提供的接口將其存取到非易失性內存中,同時通知應用層進行故障指示。DEM的狀態圖如圖3所示:

圖3:DEM狀態圖。

  5) CAN TP模塊

  遵循ISO 15765-2標准。負責診斷報文的尋址、拆包與打包,以及網絡層定時參數的管理。所以,該模塊向下傳輸的是N_PDU(網絡層協議數據單元)。

  本文小結

  第一、由於嚴格分層,除了CAN Driver和CAN Transceiver模塊要依賴於硬件,AUTOSAR與診斷相關的模塊幾乎完全獨立於硬件。按照此架構開發完成的診斷程序碼能夠擺脫硬件的束縛,具有最大程度的可重用性。

  第二、AUTOSAR目前不支持SAE J1939。

  第三、暫時不能直接將AUTOSAR軟件架構用於Bootloder程序的開發。

  綜上所述,AUTOSAR標准仍舊處於發展和完善階段,但隨着目前汽車ECU軟件開發矛盾的加劇,開發難度不斷增大,開發周期卻不斷縮短,AUTOSAR將成為必然趨勢。

 

AUTOSAR在CAN上的處理與我們傳統的使用還是有比較大的差異,過去我們寫CAN的代碼,也就是寫了CAN基本的Tx和Rx驅動,收到原始8個bytes的數據后,進行什么處理或者在哪一層處理都由自己隨意來定,有的甚至8bytes數直接在APP層用建模進行解析處理,這種情況也不少見,也沒有不對。而AUTOSAR出於解耦,隔離及統一接口的因素考慮,將CAN做了多個層次的處理,不再只是一個底層驅動+應用層(或增加一個中間層)。

 

下面是AUTOSAR常見的介紹:

紅框部分是和通訊相關的內容,包含LIN,CAN,Eth等,我們重點介紹CAN。和汽車領域中大家熟知的和CAN相關最重要的三部分就是診斷,標定及COM。

我們結合兩張圖中來看AUTOSAR中的分層和數據走向:

 

 

第一張圖中可以看出根據不同的層次,CAN在不同的層次的數據包分為了

* 數據鏈路層:L-PDU

* 網絡層(通常用的是TP層):N-PDU

* 交互層:I-PDU

可以看到CAN Driver和CAN Interface部分COM,XCP,UDS仍然是共用的,再往上就有不同的分支:

* UDS需要通過TP層,再進入PDUR進行分配進入DCM

* XCP相對獨立直接由CAN interface進入后獨立處理,不經過PDUR

* COM則從CAN Interface進入PDUR然后分配至COM

是否已經被各種PDU弄蒙圈了,下面是PDU和PDUR的官方解釋,一起來理解一下:

PDU是“協議數據單元”的縮寫。PDU包含SDU和PCI。在傳輸端,PDU從上層傳遞到下層,下層將PDU解釋為SDU。

1.提供不同抽象通信控制器與上層之間的pdu路由

2.路由器的規模是特定於ECU的(如果只有一個通信控制器存在,則沒有大小)

3.實時提供TP路由。在緩沖完整的TP數據之前,會啟動TP數據的傳輸

簡單的說,PDU中包含地址信息(當前層和目標層的地址信息)和數據信息,PDUR通過地址信息分配到不同的目標地。下圖是PDU的組成,可以加深理解

PDU包含PCI和SDU,PCI包含源地址和目標地址信息,SDU是數據信息。

在我們關注的CAN傳輸中最關鍵的信息I-PDU,I-PDU並不是某一層單獨所有的信息,也不是CAN單獨所有的內容,可以在前一個圖中看出I-PDU是進出PDUR的信息。而I-PDU是包含地址信息和數據信息的。

最后拿大家最關注的COM來說明各層的數據走向,以收取報文來舉例:由CAN Driver收取報文生成L-PDU,而后進入CAN Interface進行抽象隔離處理,生成I-PDU,進入PDUR進行分配,根據地址信息(PCI)將進入COM模塊的I-PDU傳入COM,COM對I-PDU的數據信息SDU進行解析,生成signals,signals通過RTE傳輸給APP層,發送則正好相反


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM