一、UDS診斷協(xié)議概述
?UDS(unified Diagnostic Service, 統(tǒng)一診斷服務(wù))是一個(gè)在整個(gè)汽車(chē)系統(tǒng)上經(jīng)常使用的設(shè)備維護(hù)協(xié)議。其主要遵循: ISO-15765、ISO-14229,其ISO-15765協(xié)議是適用于網(wǎng)絡(luò)層的協(xié)議,主要規(guī)范了“傳輸協(xié)議和網(wǎng)絡(luò)層服務(wù)”, ISO-14229協(xié)議對(duì)應(yīng)用層、會(huì)話層做出了定義。
二、網(wǎng)絡(luò)層協(xié)議
協(xié)議功能
? ? ? ?UDS網(wǎng)絡(luò)層主要目的把數(shù)據(jù)轉(zhuǎn)換成能適應(yīng)CAN總線規(guī)范的單一數(shù)據(jù)幀,從而進(jìn)行傳輸。如果將要傳輸?shù)膱?bào)文長(zhǎng)度超過(guò)了CAN數(shù)據(jù)幀的長(zhǎng)度,則需要將報(bào)文信息進(jìn)行拆分后傳輸,每次至多可以傳輸4095個(gè)字節(jié)長(zhǎng)度的報(bào)文。
網(wǎng)絡(luò)層協(xié)議數(shù)據(jù)單元(N_PDU)
? ? ? ? 網(wǎng)絡(luò)層協(xié)議數(shù)據(jù)單元(N_PDU,Network_Protocol Data Unit)包含N_AI,N_PCI,N_Data。即地址信息,協(xié)議控制信息和數(shù)據(jù)。
? ? ?地址信息主要由三種尋址方式:隱含源地址、目標(biāo)地址、尋址方式信息
? ? ? 協(xié)議控制信息主要用于標(biāo)識(shí)N_PDU類(lèi)型:?jiǎn)螏?,第一幀、連續(xù)幀,流控幀。
協(xié)議控制信息(N_PCI)
N_PCL字節(jié)概要:
?N_PCL type值的定義:
1、單幀(SF)
一幀can報(bào)文就可以處理完uds服務(wù)。can報(bào)文首字節(jié)為N_PCI字節(jié),單幀字節(jié)預(yù)覽如下圖所示:
單幀字節(jié)中相關(guān)值說(shuō)明:
? ? ?舉例說(shuō)明:?jiǎn)螏瑐鬏? 03 49 53 44 00 00 00 00
? ? ?單幀can報(bào)文首字節(jié)高4bit為0表示首幀,首字節(jié)低4bit表示單幀數(shù)據(jù)長(zhǎng)度,即N_Data的有效字節(jié)數(shù)。通過(guò)上面報(bào)文我們可以看到N_Data有效字節(jié)數(shù)為3,有效字節(jié)數(shù)不足8字節(jié),可填充任意數(shù),這里填充00。在接收方接收到該can報(bào)文后,解析can報(bào)文首字節(jié)03便可知該報(bào)文為單幀且只有3個(gè)有效字節(jié)數(shù),后續(xù)全為補(bǔ)充的無(wú)效字節(jié)數(shù)。
2、首幀(FF)
? ? ? ? 如果發(fā)送方發(fā)送N_Data數(shù)據(jù)過(guò)長(zhǎng)時(shí),則需要拆分成多幀報(bào)文,被拆分后的報(bào)文需要通過(guò)多個(gè)N_PDU來(lái)發(fā)送,而接收方接收到多個(gè)N_PDU信息后進(jìn)行重組。發(fā)送方發(fā)送多幀時(shí),需要先發(fā)送首幀來(lái)告知接收方有多少字節(jié)數(shù)要發(fā)送到接收方。首幀字節(jié)預(yù)覽如下圖所示:
?首幀字節(jié)中相關(guān)值說(shuō)明:
??舉例說(shuō)明:首幀傳輸? 10?18?00 00 00 00 00 00
? ? ? can報(bào)文首字節(jié)高4bit為1表示首幀。首字節(jié)低4bit和byte2組合12bit表示發(fā)送方發(fā)送的數(shù)據(jù)長(zhǎng)度,即N_Data的有效字節(jié)數(shù)。在圖中可以看到N_Data有效字節(jié)數(shù)為0x018,即24個(gè)有效字節(jié)數(shù)。因此如圖所示,在接收方接收到該can報(bào)文后,解析can報(bào)文前兩個(gè)字節(jié)0x10 0x18便可知該報(bào)文為第一幀且有24個(gè)有效字節(jié)數(shù),后續(xù)全為補(bǔ)充的無(wú)效字節(jié)數(shù)。
3、連續(xù)幀(SN)
??????? 發(fā)送方發(fā)送首幀F(xiàn)F,然后接收到接收方的流控幀F(xiàn)C后,若條件允許可繼續(xù)發(fā)送信息,則需根據(jù)連續(xù)幀CF的控制信息格式來(lái)發(fā)送信息。連續(xù)幀是發(fā)送方為了發(fā)送大量數(shù)據(jù)字節(jié)而采用的方法,發(fā)送模塊將發(fā)送的數(shù)據(jù)進(jìn)行拆分,通過(guò)多幀傳送的方式傳遞出去。
連續(xù)幀字節(jié)總覽圖:
?
SN表示 Sequence Number,用來(lái)指示連續(xù)幀的序號(hào)是多少,使用這個(gè)機(jī)制的目的就是為了讓發(fā)送方按順序發(fā)送CF,并且接收方在接收CF的時(shí)候,能根據(jù) SN 來(lái)判斷數(shù)據(jù)幀是否按照正確順序來(lái)接收,從而做出相應(yīng)的判斷。
SN一共有4位表示,所以其可以表達(dá)的范圍是 0x0 - 0xf;
相應(yīng)的,對(duì)于 SN 標(biāo)準(zhǔn)是有一條約束的:
(1)、SN應(yīng)該從0開(kāi)始計(jì)數(shù),首幀的序列號(hào)應(yīng)該為0,首幀雖然沒(méi)有明確表示出序列號(hào),但是應(yīng)該將首幀當(dāng)作0號(hào)序列對(duì)待;
(2)、 連續(xù)幀的第一幀的序列號(hào)應(yīng)該為1;
(3)、當(dāng)拆分傳輸時(shí),SN 序列號(hào)加一遞增;
(4)、SN的值不應(yīng)受任何流控制幀的影響;
(5)、 SN的值循環(huán)增加。
舉例說(shuō)明:連續(xù)幀傳輸? 23 00 00 00 00 00 00
??????? can報(bào)文首字節(jié)byte1高4bit為2時(shí)表示該幀為連續(xù)幀CF。byte1低4bit 為連續(xù)幀的順序號(hào)SN。對(duì)于所有的拆分信息,SN開(kāi)始于0。第一幀應(yīng)當(dāng)分配值為0。雖然第一幀 N_PCI沒(méi)有明確表示出序列號(hào),但是應(yīng)該將首幀當(dāng)作0號(hào)序列對(duì)待,第一個(gè)流控幀F(xiàn)C后的連續(xù)幀SN設(shè)置為1,同一拆分信息上,每一個(gè)新增的連續(xù)幀順序號(hào)SN增1,連續(xù)幀順序號(hào)SN的值不受流控幀的影響,當(dāng)連續(xù)幀順序號(hào)SN值為0x0F時(shí),下一個(gè)連續(xù)幀中將順序號(hào)SN重置為0。
4、流控幀(FC)
????? UDS多幀通訊時(shí):1、發(fā)送方發(fā)送首幀F(xiàn)F給接收方。2、接收方接收到首幀,解析首幀。3、接受方根據(jù)自身?xiàng)l件判斷后(如:接收數(shù)據(jù)緩存大小,接收數(shù)據(jù)快慢能力,當(dāng)前是否可以接收數(shù)據(jù)等),回復(fù)一幀流控幀F(xiàn)C給發(fā)送方。4、發(fā)送方根據(jù)接收到接收方的流控幀F(xiàn)C來(lái)決定后續(xù)的操作。
流控幀字節(jié)總覽圖:
?流控幀F(xiàn)S值定義:
?流控幀BS值定義:
?流控幀間隔時(shí)間STmin值定義:
?舉例說(shuō)明: 30 02 14 00 00 00 00 00
??????? can報(bào)文首字節(jié)byte1高4bit為3時(shí)表示該幀為流控幀F(xiàn)C。byte1低4bit為流狀態(tài)FS(0表示繼續(xù)發(fā)送、1表示等待、2表示溢出即第一幀中的FF_DL信息的長(zhǎng)度超過(guò)接受實(shí)體緩沖區(qū)的大小),byte2為塊大小(允許一次可連續(xù)發(fā)送連續(xù)幀CF的次數(shù)),byte3為發(fā)送方發(fā)送連續(xù)幀CF與連續(xù)幀CF間的最小間隔時(shí)間。
網(wǎng)絡(luò)層定時(shí)
網(wǎng)絡(luò)層定義了N_Ar、N_As、N_Br、N_Bs、N_Cr、N_Cs六個(gè)時(shí)間參數(shù)
由六個(gè)參數(shù)得出幾種超時(shí)有:
N_As超時(shí):發(fā)送方?jīng)]有及時(shí)發(fā)送N_PDU。
N_Ar超時(shí):接收方?jīng)]有及時(shí)發(fā)送N_PDU。
N_Bs超時(shí):發(fā)送方?jīng)]有接收到流控幀。
N_Cr超時(shí):接收方?jīng)]有收到連續(xù)幀。
N_Br超時(shí):接收方?jīng)]有發(fā)出流控幀。
N_Cs:即STmin,發(fā)送兩個(gè)連續(xù)幀需要等待的最短時(shí)間,N_Cr最大1000ms。
三、應(yīng)用層協(xié)議
應(yīng)用層主要由:A_SDU、A_PDU、A_PCI、A_PUD構(gòu)成
A_SDU—應(yīng)用層服務(wù)數(shù)據(jù)單元
Application Layer Service Data Unit
SA, TA, TA_type ?[,RA] ? [,parameter1,…]
A_PDU —應(yīng)用層協(xié)議數(shù)據(jù)單元
Application Layer Protocol Data Unit
SA, TA, TA_type ?[,RA], A_Data A_Data=A_PCI+[parameter1,…]
?
A_PCI —應(yīng)用層協(xié)議控制信息
Application Layer Protocol Control Information
A_PUD = A_PCI + A_SDU
應(yīng)用層協(xié)議控制信息有兩周不同格式
A_PCI(SI):SI—Service ID(Request服務(wù)和Result=positive的Response)
類(lèi)型:1字節(jié)無(wú)符號(hào)整數(shù)
范圍:00~FF
A_PCI(NR_SI,SI):NR_SI—Negative Service ID
類(lèi)型:1字節(jié)無(wú)符號(hào)整數(shù)
范圍:7F
?請(qǐng)求服務(wù)主要有兩種:
1、不帶子功能請(qǐng)求服務(wù):SID+具體數(shù)據(jù)內(nèi)容
2、帶子功能請(qǐng)求服務(wù):SID+子功能+具體數(shù)據(jù)內(nèi)容
具體相應(yīng)也分為兩種:
1、肯定相應(yīng):
不帶子功能:SID+40+具體的數(shù)據(jù)
帶子功能:SID+40+子功能+具體數(shù)據(jù)文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-756060.html
2、否定相應(yīng):7F+請(qǐng)求報(bào)文里的SID+一個(gè)字節(jié)的NRC文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-756060.html
到了這里,關(guān)于UDS診斷協(xié)議——網(wǎng)絡(luò)層協(xié)議的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!