<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于K線/CAN總線的KWP2000協(xié)議分析及其協(xié)議棧的開

          基于K線/CAN總線的KWP2000協(xié)議分析及其協(xié)議棧的開

          作者: 時間:2016-09-12 來源:網(wǎng)絡(luò) 收藏

          單幀(Single Frame,SF) - 數(shù)據(jù)域及PCI可在一個CAN數(shù)據(jù)幀中容納時,服務(wù)報文以單幀CAN報文進(jìn)行發(fā)送。

          第一幀(First Frame,F(xiàn)F) - 數(shù)據(jù)域及PCI不能在一個CAN數(shù)據(jù)幀中容納時,服務(wù)報文以多幀CAN報文進(jìn)行發(fā)送,其中第一幀(FF)除傳送數(shù)據(jù)外,還包含了多包數(shù)據(jù)的長度信息。

          連續(xù)幀(Consecutive Frame,CF) - 多包數(shù)據(jù)中除第一幀外的連續(xù)數(shù)據(jù)幀,除傳送數(shù)據(jù)外,還包含了多包數(shù)據(jù)的包序號。

          流控制幀(Flow Control,F(xiàn)C) - 用于多包數(shù)據(jù)傳輸過程中的流控制,不包含數(shù)據(jù),只包含流控制狀態(tài)、數(shù)據(jù)塊大小和最小間隔時間等流控制信息。

          表5 15765協(xié)議網(wǎng)絡(luò)層四種PDU對應(yīng)的PCI格式[7]

          1) 單幀數(shù)據(jù)中數(shù)據(jù)域的字節(jié)長度,PCI的長度不包括在內(nèi)。

          2) 多包數(shù)據(jù)的數(shù)據(jù)域字節(jié)總長度。

          3) 多包數(shù)據(jù)的數(shù)據(jù)包編號。

          4) 流控制狀態(tài)信息。

          5) 數(shù)據(jù)塊大小。

          6) 多包數(shù)據(jù)傳輸?shù)淖钚r間間隔。

          多包數(shù)據(jù)的傳輸流程如圖4所示。發(fā)送節(jié)點首先發(fā)送“第一幀”,告知接收節(jié)點將要發(fā)送的數(shù)據(jù)的總長度;接收節(jié)點分配好資源、準(zhǔn)備接收數(shù)據(jù),然后以一幀“流控制幀”告知發(fā)送節(jié)點一次可以發(fā)送的數(shù)據(jù)包數(shù)目和時間間隔;發(fā)送節(jié)點接下來就根據(jù)接收節(jié)點的接收能力將編好序號的數(shù)據(jù)包依次發(fā)送過去。

          圖4 多包數(shù)據(jù)傳輸流程圖

          在數(shù)據(jù)傳送過程中,一個網(wǎng)絡(luò)層PDU被編排成一個CAN數(shù)據(jù)幀,它們之間的對應(yīng)關(guān)系由尋址模式(Addressing mode)決定?;贗SO 15765協(xié)議規(guī)定了四種尋址模式:正常尋址模式(Normal)、正常固定尋址模式(Normal fixed)、擴(kuò)展尋址模式(Extended)和用于遠(yuǎn)程診斷的混合尋址模式(Mixed)。其中,正常固定尋址模式必須采用CAN擴(kuò)展幀,并且SAE J1939為該尋址模式下的診斷服務(wù)保留了兩個專用參數(shù)組編號(PGN):其中PF=218(PF的具體定義請參考SAE J1939數(shù)據(jù)鏈路層協(xié)議)的參數(shù)組用于物理尋址(phy),PF=219的參數(shù)組用于功能尋址(fcn)。正常固定尋址模式的PDU與CAN數(shù)據(jù)幀之間的對應(yīng)關(guān)系如表6所示。

          表6 正常固定尋址模式下N_PDU與CAN數(shù)據(jù)幀之間的對應(yīng)關(guān)系[7]

          混合尋址模式與正常固定尋址模式類似,唯一的區(qū)別是CAN數(shù)據(jù)域的第一個字節(jié)用于填充遠(yuǎn)程地址(RA),N_PCI和診斷服務(wù)數(shù)據(jù)的填充位置向后移動一個字節(jié)?;旌蠈ぶ纺J接糜诳缭骄W(wǎng)段進(jìn)行遠(yuǎn)程診斷,遠(yuǎn)程診斷的機(jī)制如圖5所示。圖中CAN1和CAN2兩個不同的子網(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é)議的簡單比較

          從前面基于K線和基于協(xié)議可以看出,兩種協(xié)議在物理層、數(shù)據(jù)鏈路層及網(wǎng)絡(luò)層(15765)上存在以下主要差別,這也是K線被取而代之的主要原因所在:

          K線通訊速率較低,最大波特率僅為10400bps;通訊速率較高,最大波特率可達(dá)1Mbps。

          K線采用單端信號傳輸,抗干擾能力較弱,可靠性較差;CAN總線采用差分信號傳輸,抗干擾能力強(qiáng),信號傳輸?shù)目煽啃愿摺?p>K線診斷在啟動應(yīng)用層診斷服務(wù)之前必須對ECU進(jìn)行初始化建立連接,并且初始化過程比較復(fù)雜;而基于CAN總線的診斷設(shè)備不需要對ECU進(jìn)行初始化即可進(jìn)行診斷服務(wù)。

          K線診斷應(yīng)用程序開發(fā)者必須親自管理數(shù)據(jù)傳輸過程中的字節(jié)間定時,并處理底層通訊錯誤;CAN數(shù)據(jù)幀以整幀報文的形式進(jìn)行發(fā)送,應(yīng)用程序開發(fā)者不必管理字節(jié)間定時,并且CAN總線物理層和數(shù)據(jù)鏈路層具備完善的錯誤檢測和錯誤恢復(fù)機(jī)制,應(yīng)用程序不必監(jiān)視和處理底層通訊錯誤。

          K線網(wǎng)絡(luò)結(jié)構(gòu)單一,網(wǎng)絡(luò)管理功能很弱;而利用CAN總線可構(gòu)建復(fù)雜的網(wǎng)絡(luò)結(jié)構(gòu),可跨越網(wǎng)段進(jìn)行遠(yuǎn)程診斷。

          K線網(wǎng)絡(luò)采用破壞性的仲裁機(jī)制,當(dāng)診斷設(shè)備采用功能尋址與多個ECU進(jìn)行通訊時,為避免總線沖突,ECU開發(fā)者必須采取措施保證多個ECU順序訪問總線;而CAN網(wǎng)絡(luò)采用非破壞性的仲裁機(jī)制,并且仲裁過程由數(shù)據(jù)鏈路層完成,當(dāng)診斷設(shè)備采用功能尋址與多個ECU進(jìn)行通訊時,ECU開發(fā)者不必考慮總線訪問沖突問題。

          K線服務(wù)報文最大字節(jié)長度僅為255,無法滿足更長報文的傳輸要求,并且在長報文的傳輸過程中用戶必須自己采取措施進(jìn)行連接管理,可靠性和兼容性較差;而 CAN總線診斷服務(wù)報文最大字節(jié)長度可達(dá)4096(12位),對于長報文的傳輸,網(wǎng)絡(luò)層協(xié)議還具備標(biāo)準(zhǔn)化和規(guī)范化的同步控制、順序控制、流控制和錯誤恢復(fù)等功能,具備很高的可靠性、兼容性。

          5 協(xié)議棧的開發(fā)及測試

          從前面的協(xié)議分析可以看出,無論是基于K線還是CAN總線的KWP2000協(xié)議,都是邏輯非常復(fù)雜的系統(tǒng),并且具有嚴(yán)格的定時和錯誤處理規(guī)范。如果采用純手工的方式來進(jìn)行KWP2000協(xié)議棧的開發(fā),不僅要耗費大量的時間和人力,其通用性、完備性、可靠性和可維護(hù)性都很難保證。而 MATLAB/Simulink/StateFlow不僅具備方便快捷的上層實時仿真環(huán)境,還集成了高效的嵌入式代碼自動生成工具,為協(xié)議棧的開發(fā)和維護(hù)提供了強(qiáng)大的支持平臺。此外,由德國Vector公司的CANoe軟件和相關(guān)硬件板卡組成的應(yīng)用開發(fā)平臺,可用于汽車網(wǎng)絡(luò)(CAN,Lin等)的上層協(xié)議開發(fā)和系統(tǒng)測試,該平臺同時支持基于K線和CAN總線的KWP2000診斷協(xié)議,可作為ECU和診斷設(shè)備的測試標(biāo)準(zhǔn)。

          圖6是協(xié)議源碼開發(fā)過程示意圖。首先在MATLAB/Simulink/StateFlow中遵照協(xié)議標(biāo)準(zhǔn)進(jìn)行KWP2000協(xié)議棧開發(fā),在仿真調(diào)試環(huán)境下實現(xiàn)通訊邏輯、定時控制和錯誤處理,待系統(tǒng)完善后利用StateFlow嵌入式代碼生成工具自動生成協(xié)議棧C代碼,并與目標(biāo)系統(tǒng)的底層驅(qū)動進(jìn)行集成,然后植入目標(biāo)系統(tǒng)形成應(yīng)用程序,最后再利用CANoe作為標(biāo)準(zhǔn)進(jìn)行系統(tǒng)集成測試。



          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();