基于K線/CAN總線的KWP2000協(xié)議分析及協(xié)議棧的開發(fā)測(cè)試
圖3 基于CAN總線的KWP2000診斷服務(wù)流程圖
從上面的服務(wù)流程可以看出,基于CAN總線的KWP2000協(xié)議支持多包數(shù)據(jù)傳輸,并且多包數(shù)據(jù)的管理和組織是在網(wǎng)絡(luò)層完成的,應(yīng)用層不必關(guān)心數(shù)據(jù)的打包和解包過程。為實(shí)現(xiàn)這一功能,網(wǎng)絡(luò)層定義了四種PDU(以PCI類型進(jìn)行區(qū)分,如表5所示):
單幀(Single Frame,SF) - 數(shù)據(jù)域及PCI可在一個(gè)CAN數(shù)據(jù)幀中容納時(shí),服務(wù)報(bào)文以單幀CAN報(bào)文進(jìn)行發(fā)送。
第一幀(First Frame,F(xiàn)F) -數(shù)據(jù)域及PCI不能在一個(gè)CAN數(shù)據(jù)幀中容納時(shí),服務(wù)報(bào)文以多幀CAN報(bào)文進(jìn)行發(fā)送,其中第一幀(FF)除傳送數(shù)據(jù)外,還包含了多包數(shù)據(jù)的長(zhǎng)度信息。
連續(xù)幀(Consecutive Frame,CF) - 多包數(shù)據(jù)中除第一幀外的連續(xù)數(shù)據(jù)幀,除傳送數(shù)據(jù)外,還包含了多包數(shù)據(jù)的包序號(hào)。
流控制幀(Flow Control,F(xiàn)C) -用于多包數(shù)據(jù)傳輸過程中的流控制,不包含數(shù)據(jù),只包含流控制狀態(tài)、數(shù)據(jù)塊大小和最小間隔時(shí)間等流控制信息。
表5 15765協(xié)議網(wǎng)絡(luò)層四種PDU對(duì)應(yīng)的PCI格式[7]
1) 單幀數(shù)據(jù)中數(shù)據(jù)域的字節(jié)長(zhǎng)度,PCI的長(zhǎng)度不包括在內(nèi)。
2) 多包數(shù)據(jù)的數(shù)據(jù)域字節(jié)總長(zhǎng)度。
3) 多包數(shù)據(jù)的數(shù)據(jù)包編號(hào)。
4) 流控制狀態(tài)信息。
5) 數(shù)據(jù)塊大小。
6) 多包數(shù)據(jù)傳輸?shù)淖钚r(shí)間間隔。
多包數(shù)據(jù)的傳輸流程如圖4所示。發(fā)送節(jié)點(diǎn)首先發(fā)送“第一幀”,告知接收節(jié)點(diǎn)將要發(fā)送的數(shù)據(jù)的總長(zhǎng)度;接收節(jié)點(diǎn)分配好資源、準(zhǔn)備接收數(shù)據(jù),然后以一幀“流控制幀”告知發(fā)送節(jié)點(diǎn)一次可以發(fā)送的數(shù)據(jù)包數(shù)目和時(shí)間間隔;發(fā)送節(jié)點(diǎn)接下來就根據(jù)接收節(jié)點(diǎn)的接收能力將編好序號(hào)的數(shù)據(jù)包依次發(fā)送過去。
圖4 多包數(shù)據(jù)傳輸流程圖
在數(shù)據(jù)傳送過程中,一個(gè)網(wǎng)絡(luò)層PDU被編排成一個(gè)CAN數(shù)據(jù)幀,它們之間的對(duì)應(yīng)關(guān)系由尋址模式(Addressing mode)決定?;贗SO 15765協(xié)議規(guī)定了四種尋址模式:正常尋址模式(Normal)、正常固定尋址模式(Normal fixed)、擴(kuò)展尋址模式(Extended)和用于遠(yuǎn)程診斷的混合尋址模式(Mixed)。其中,正常固定尋址模式必須采用CAN擴(kuò)展幀,并且SAE J1939為該尋址模式下的KWP2000診斷服務(wù)保留了兩個(gè)專用參數(shù)組編號(hào)(PGN):其中PF=218(PF的具體定義請(qǐng)參考SAE J1939數(shù)據(jù)鏈路層協(xié)議)的參數(shù)組用于物理尋址(phy),PF=219的參數(shù)組用于功能尋址(fcn)。正常固定尋址模式的PDU與CAN數(shù)據(jù)幀之間的對(duì)應(yīng)關(guān)系如表6所示。
表6 正常固定尋址模式下N_PDU與CAN數(shù)據(jù)幀之間的對(duì)應(yīng)關(guān)系[7]
混合尋址模式與正常固定尋址模式類似,唯一的區(qū)別是CAN數(shù)據(jù)域的第一個(gè)字節(jié)用于填充遠(yuǎn)程地址(RA),N_PCI和診斷服務(wù)數(shù)據(jù)的填充位置向后移動(dòng)一個(gè)字節(jié)。混合尋址模式用于跨越網(wǎng)段進(jìn)行遠(yuǎn)程診斷,遠(yuǎn)程診斷的機(jī)制如圖5所示。圖中CAN1和CAN2兩個(gè)不同的子網(wǎng)通過網(wǎng)橋相連,網(wǎng)橋在子網(wǎng)1中的源地址為200,在子網(wǎng)2中的源地址為10,位于子網(wǎng)1中的診斷設(shè)備(源地址為241)可通過網(wǎng)橋?qū)ψ泳W(wǎng)2中的ECU(源地址為62)進(jìn)行診斷。
圖5 跨越網(wǎng)段的遠(yuǎn)程診斷
4 兩種協(xié)議的簡(jiǎn)單比較
從前面基于K線和基于CAN總線的KWP2000協(xié)議可以看出,兩種協(xié)議在物理層、數(shù)據(jù)鏈路層及網(wǎng)絡(luò)層(15765)上存在以下主要差別,這也是K線被CAN總線取而代之的主要原因所在:
K線通訊速率較低,最大波特率僅為10400bps;CAN總線通訊速率較高,最大波特率可達(dá)1Mbps。
K線采用單端信號(hào)傳輸,抗干擾能力較弱,可靠性較差;CAN總線采用差分信號(hào)傳輸,抗干擾能力強(qiáng),信號(hào)傳輸?shù)目煽啃愿摺?BR>
K線診斷在啟動(dòng)應(yīng)用層診斷服務(wù)之前必須對(duì)ECU進(jìn)行初始化建立連接,并且初始化過程比較復(fù)雜;而基于CAN總線的診斷設(shè)備不需要對(duì)ECU進(jìn)行初始化即可進(jìn)行診斷服務(wù)。
K線診斷應(yīng)用程序開發(fā)者必須親自管理數(shù)據(jù)傳輸過程中的字節(jié)間定時(shí),并處理底層通訊錯(cuò)誤;CAN數(shù)據(jù)幀以整幀報(bào)文的形式進(jìn)行發(fā)送,應(yīng)用程序開發(fā)者不必管理字節(jié)間定時(shí),并且CAN總線物理層和數(shù)據(jù)鏈路層具備完善的錯(cuò)誤檢測(cè)和錯(cuò)誤恢復(fù)機(jī)制,應(yīng)用程序不必監(jiān)視和處理底層通訊錯(cuò)誤。
評(píng)論