隨著汽車智能化發展,整車通信矩陣越來越復雜,即:不同電控單元之間需要交互的信息越來越多,這些信息通過報文(Message)傳輸。
Message中攜帶的信號(Signal)最終要傳遞給軟件的上層模塊,參與算法處理,之后再將處理后的信息形成Signal發送出去。
Autosar通信棧,簡化示意如下:
不管車輛通信變得如何復雜,均需要確保車輛運行的安全性,而車輛是否能按照預期狀態工作,離不開控制器對Signal的及時響應,所以,及時的獲取Signal狀態尤為重要。
為了滿足此需求,在Autosar的架構中,對于發送端(Sender)和接收端(Receiver)設計了不同的信號狀態處理策略。其中,超時機制(Timeout)與信號更新機制(UB,Update bit)最為典型。
提示:由于Signal Group UB與Signal UB實現類似,本文側重Signal UB的討論。
1、UB概念
UB:表示發送端(Sender)所發送信號(Signal)/信號組(Signal Groups)數據是否有更新,如果發送端發送的Signal/Signal Groups有更新,由COM層自動置位對應的UB(=1),反之,復位UB(=0)。
為什么需要用UB位表示Signal/Signal Groups的數據有沒有更新呢?假設如下場景,報文Message_A包含信號Signal_A、Signal_B等,Message_A的發送周期為10ms,而Signal_A的更新周期為30ms,示意如下:
面對如上的場景,接收端(Receiver)應當檢測Sender是否更新過Signal_A的值,以便于Receiver更好的進行算法處理。因此,為了表示Signal/Signal Groups數據是否有更新,設計了UB,UB需要消耗Message中的資源。舉例:設計Signal_A_UB信號用于表示Signal_A數據是否更新過。
由于UB需要消耗Message資源,因此,可以根據工程場景,對重要信號進行UB配置,對非重要信號,不配置UB,即:UB是一個選配項。同時,UB本身也是一個Signal。在如上的表述中,Sender和Receiver如何理解呢?
(一)同一網段Signal傳輸
如果Sender、Receiver在同一個局域網內,兩者之間的信號傳輸如下所示:
(二)跨網段Signal傳輸
如果Sender、Receiver在不同局域網內,兩者之間的信號傳輸如下所示:
2、UB在發送端的處理
如果為某個信號配置UB時,需要思考兩個問題:
1、何時置位發送端的UB位?
2、何時復位發送端的UB位?
(一)何時置位發送端的UB位?
當上層軟件模塊(Upper Layer)需要發送Signal時,會通過RTE(Run-Time Environment)調用COM層的發送接口Com_SendSignal()/Com_SendSignaGroup()更新Signal或者Signal Group值,與此同時,COM模塊自動將Signal/Signal Group對應的UB置位,示意如下:
(二)何時復位發送端的UB位?
在Autosar的架構設計中,何時復位發送端的UB信號,有三種模式供開發者選擇:Transmit、Confirmation、TriggerTransmit。而這三種模式的選擇,通過參數ComTxIPduClearUpdateBit配置。如何理解這三種模式呢?
1、Transmit模式復位UB
配置參數ComTxIPduClearUpdateBit = Transmit,當COM模塊請求PduR模塊發送接口PduR_ComTransmit()發送數據,當該接口返回E_OK時,COM模塊復位UB,具體流程如下:
2、Confirmation模式復位UB
配置參數ComTxIPduClearUpdateBit = Confirmation,當Message成功發送到總線以后,從驅動層通過Callback層層向上通知,直到COM模塊收到Message成功發送到總線的確認信息,COM模塊復位UB,具體流程如下:
3、TriggerTransmit模式復位UB
此種模式在工程中,不多見,本文不做過多討論。
3、UB在接收端的處理
Receiver成功從總線接收到目標Message以后,驅動層通過Callback層層向上通知,直到COM模塊收到Message,PduR模塊通Com_RxIndication()接口將數據通知COM某塊,示意如下:
其中,接收到的UB信息在Com_RxIndication()接口中進行處理,具體的處理如下所示:
接收處理解讀:
1、當Message信息層層向上傳遞到COM模塊時,Com_RxIndication()處理UB相關操作,如果在Receiver中配置了I-PDU Callout,則程序進行Callout處理,Callout主要進行用戶自定義處理。
如果Receiver中未配置I-PDU Callout,則進行后續處理;
2、進行UB檢查,如果UB = 0,COM丟棄UB對應的信號。如果UB = 1,程序進行后續的字節序轉化(針對跨字節信號),Signal路由等操作。
提示:Autosar架構中,COM層處理Signal級別路由,PduR處理PDU(可以看作幀)的路由。
(一)Receiver何時復位UB
Receiver處理收到的UB,需要與reception deadline monitor邏輯配合處理,即:如果信號deadline超時,則對應信號的UB位需要復位(=0)。reception deadlinemonitor屬于選配項,如果信號沒有配置reception deadlinemonitor,則接收端接收到的UB信號值會一直保持上次的接收值。
4、UB對應的工程問題
UB看起來似乎不難,但是,當其成為通信棧的一部分時,可能會因系統工程的復雜性,而引發各種各樣的問題。
審核編輯:劉清
-
處理器
+關注
關注
68文章
19286瀏覽量
229842 -
控制器
+關注
關注
112文章
16361瀏覽量
178053 -
接收機
+關注
關注
8文章
1181瀏覽量
53475 -
AUTOSAR
+關注
關注
10文章
362瀏覽量
21585 -
PDU
+關注
關注
0文章
94瀏覽量
16981
原文標題:Autosar通信棧基礎:如何理解和使用Update bit
文章出處:【微信號:談思實驗室,微信公眾號:談思實驗室】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論