教學(xué):汽車(chē)嵌入式開(kāi)發(fā)中的ECU網(wǎng)關(guān)節(jié)點(diǎn)開(kāi)發(fā)
2022-08-31
來(lái)源:開(kāi)心果 Need Car
汽車(chē)嵌入式開(kāi)發(fā)中,開(kāi)發(fā)ECU網(wǎng)關(guān)節(jié)點(diǎn)(GW:Gateway)時(shí),難度會(huì)提升不少,這些難度中就包含對(duì)時(shí)間參數(shù)的解讀問(wèn)題。本文著重給大家聊一下P2Client、▲P2 = ▲P2Request + ▲P2Response、N_As時(shí)間參數(shù)。
1 背景介紹
假設(shè):Tester發(fā)送功能尋址指令Request01給GW::VCU,因?yàn)閂CU的GW屬性,VCU需要將Request01轉(zhuǎn)發(fā),即由Flexray總線(xiàn)路由到Can總線(xiàn),進(jìn)而將Request01發(fā)送給Ecu::Xx,Request01路由示意如如下所示:
注意:診斷路由,需要通過(guò)Xx_Tp層。
VCU既然是GW,相對(duì)于ECU::Xx,就是一個(gè)Tester。
如果對(duì)各層的PDU類(lèi)型不清楚,可以參考前文Autosar通信棧:I-PDU、N-PDU、L-PDU,要掰扯清楚。
2 P2Client、▲P2、N_As時(shí)間參數(shù)分析
1、P2Client
P2Client的時(shí)間定義如下所示:
怎么理解呢?上位機(jī)(Tester)發(fā)送一個(gè)診斷指令以后,會(huì)等待Server(可以理解為某個(gè)ECU的節(jié)點(diǎn))響應(yīng)該診斷請(qǐng)求,如果在指定的時(shí)間內(nèi)(P2Client_max/P2Client*_max)沒(méi)有響應(yīng),Tester認(rèn)為超時(shí),并停止刷寫(xiě)流程,即:刷寫(xiě)失敗。
P2Client的時(shí)間范圍是多少呢?如下所示:
P2Client時(shí)間范圍的表達(dá)式:P2Client_max>P2Client>P2Server_max + ▲P2max 。P2Client_max是一個(gè)性能參數(shù),由OEM設(shè)定。
這里假設(shè):P2Server_max = 50ms,單向路由時(shí)間10ms,P2Client_max = 150ms,則70ms < P2Client < 150ms。為什么最小時(shí)間是70ms,不是60ms?稍后解釋。
2、▲P2
▲P2的時(shí)間定義如下所示:
怎么理解這個(gè)時(shí)間參數(shù)呢?診斷指令的發(fā)送依賴(lài)于ECU各個(gè)模塊的處理,在診斷指令被ECU接收到發(fā)送到總線(xiàn)需要一定的時(shí)間,同時(shí)由于總線(xiàn)仲裁等原因,也會(huì)導(dǎo)致診斷指令發(fā)送的延阻,這些因素所造成的時(shí)間消耗就是▲P2。
我們討論路由時(shí)間,要分兩種情況分析:
發(fā)送路由:
對(duì)應(yīng)第一小節(jié)圖中的Fr->Can路由,即▲P2request = t1 - t0
響應(yīng)路由:
對(duì)應(yīng)第一小節(jié)圖中的Can->Fr路由,即▲P2response = t3 - t2
所以,需要約束一般會(huì)規(guī)定
單向路由時(shí)間
GWTIme_max,比如:GWTIme_max= 10ms。所以:▲P2 = P2Server_max + ▲P2request + ▲P2response = P2Server_max + 2*GWTIme_max = 50 + 2*10 = 70ms。這里的GWTIme_max = ▲P2request = ▲P2response。雖然▲P2request和▲P2response會(huì)有所不同,但實(shí)際工程項(xiàng)目中,一般設(shè)置▲P2request = ▲P2response,即:給一個(gè)單向路由的最大時(shí)間參數(shù)GWTime_max,GWTime_max需求如下所示:
3、N_As
以Can總線(xiàn)為例,N_As的時(shí)間定義如下所示:
意思就是:發(fā)送端(Tester)的Xx_Tp層,從發(fā)送到驅(qū)動(dòng)層應(yīng)答的最大時(shí)間。該時(shí)間只是約束Xx_Tp層的計(jì)時(shí)行為,和▲P2 時(shí)間無(wú)關(guān)。因此,開(kāi)發(fā)必須要先符合▲P2 時(shí)間。
3 多路診斷路由
我們將問(wèn)題進(jìn)一步拓展,如果GW節(jié)點(diǎn)將診斷指令路由到多個(gè)節(jié)點(diǎn),如下圖中的ECU::Xx01和ECU::Xx02。這里提一個(gè)問(wèn)題:如果Can02不可用(比如:VCU Can02對(duì)應(yīng)的Transceiver損壞或者未有連接),Can01上的刷寫(xiě)是否應(yīng)該繼續(xù)?
我們先看一下Autosar的答案,如下所示:
答案很明確:如果TPs間的路由,有一路Fail(調(diào)用發(fā)送接口返回值為E_NOT_OK),不應(yīng)影響其他TPs間的路由。如果OEM約束了你的開(kāi)發(fā):要符合Autosar規(guī)范。那么PduR的路由功能應(yīng)滿(mǎn)足上述規(guī)范。
更多信息可以來(lái)這里獲取==>>電子技術(shù)應(yīng)用-AET<<