本發(fā)明屬于CAN通信
技術(shù)領(lǐng)域:
,具體涉及一種商用車CAN通信中的長報文傳輸方法。
背景技術(shù):
:目前FAW商用車CAN長報文傳輸協(xié)議都遵循SAEJ1939-21標(biāo)準(zhǔn)的要求,該標(biāo)準(zhǔn)對于一般商用車CAN長報文傳輸給出了解決方案,但是該傳輸機(jī)制是將被傳輸數(shù)據(jù)拆分為若干小的數(shù)據(jù)包,然后使用單一的數(shù)據(jù)幀對其逐一傳送,被傳數(shù)據(jù)最大為1785個報文字節(jié)。如果數(shù)據(jù)過大(如:電話本數(shù)據(jù),車輛顯示信息和駕駛員操作記錄等),則無法通過此傳輸協(xié)議實現(xiàn)完整的數(shù)據(jù)傳輸。隨著商用車整車傳輸數(shù)據(jù)的類型不斷的增加,越來越多的大數(shù)據(jù)需要通過CAN通信來傳輸,這就需要規(guī)定一種用來解決超長商用車CAN報文的傳輸方法。技術(shù)實現(xiàn)要素:本發(fā)明要解決的技術(shù)問題是提供一種能夠滿足超長商用車CAN報文傳輸,并且傳輸能力高的商用車CAN通信傳輸方法。為了解決上述的問題,本發(fā)明的商用車CAN通信傳輸方法包括下述步驟:一、首先對待發(fā)送數(shù)據(jù)分段,開始傳輸數(shù)據(jù)后,發(fā)送節(jié)點發(fā)送首幀報文,接收節(jié)點收到首幀報文后反饋流控報文;二、發(fā)送節(jié)點等待接收節(jié)點反饋的流控報文,收到流控報文后判斷接收節(jié)點的數(shù)據(jù)接收能力(即確定數(shù)據(jù)塊大小);及流控狀態(tài),流控狀態(tài)若為繼續(xù)發(fā)送,則發(fā)送節(jié)點繼續(xù)發(fā)送連續(xù)幀數(shù)據(jù),若為等待則發(fā)送節(jié)點暫停發(fā)送連續(xù)幀數(shù)據(jù)并等待下一幀流控報文,若為溢出則轉(zhuǎn)步驟八;其中連續(xù)幀數(shù)據(jù)分段傳輸,每段數(shù)據(jù)包含多塊數(shù)據(jù);三、判斷連續(xù)幀當(dāng)前塊數(shù)據(jù)是否發(fā)送完,是則轉(zhuǎn)步驟四,否則發(fā)送節(jié)點繼續(xù)發(fā)送連續(xù)幀直至當(dāng)前數(shù)據(jù)塊發(fā)送完畢,轉(zhuǎn)步驟四;四、發(fā)送節(jié)點判斷當(dāng)前分段數(shù)據(jù)是否發(fā)送完畢,是則轉(zhuǎn)步驟五,否則發(fā)送節(jié)點暫停發(fā)送連續(xù)幀數(shù)據(jù)返回步驟二;五、發(fā)送節(jié)點判斷接收節(jié)點反饋的響應(yīng)報文;若響應(yīng)狀態(tài)為肯定響應(yīng),則轉(zhuǎn)步驟六;若響應(yīng)狀態(tài)為否定響應(yīng)則發(fā)送節(jié)點重新發(fā)送當(dāng)前分段數(shù)據(jù)且其他接收節(jié)點丟棄該分段數(shù)據(jù),轉(zhuǎn)步驟七;六、判斷全部數(shù)據(jù)是否發(fā)送完畢,是則轉(zhuǎn)步驟八,否則返回步驟二;七、判斷否定響應(yīng)接收次數(shù)是否達(dá)到3次,是則發(fā)送節(jié)點停止發(fā)送數(shù)據(jù),轉(zhuǎn)步驟八;否則返回步驟二;八、發(fā)送節(jié)點停止發(fā)送數(shù)據(jù)。所述發(fā)送節(jié)點和接收節(jié)點傳輸報文的傳輸?shù)刂啡缦拢喊l(fā)送節(jié)點的傳輸報文PGN為0xED00,接收節(jié)點的流控報文PGN為0xEE00、響應(yīng)報文PGN為0xEF00;報文傳輸優(yōu)先級選定為7。發(fā)送節(jié)點和接收節(jié)點數(shù)據(jù)格式如表1:表1其中的網(wǎng)絡(luò)層協(xié)議控制信息定義如表2:表2當(dāng)數(shù)據(jù)沒有填滿字節(jié)時,填充位的填充內(nèi)容為0x1。字節(jié)序采用小端模式,即低字節(jié)在前高字節(jié)在后,高位在前低位在后。通信模式為半雙工模式??勺冮L度的報文ID命名為子服務(wù)功能ID,子服務(wù)功能ID位于分段數(shù)據(jù)中數(shù)據(jù)域的前四個字節(jié)。分段數(shù)據(jù)用12位表示首幀數(shù)據(jù)長度,每個分段數(shù)據(jù)中用一個標(biāo)號標(biāo)示該段數(shù)據(jù)的段號,且該標(biāo)號占用分段數(shù)據(jù)的第二個字節(jié);標(biāo)號為1的數(shù)據(jù)收據(jù)子服務(wù)數(shù)據(jù)的首段數(shù)據(jù),其它以此類推;標(biāo)號為0的分段數(shù)據(jù)位于子服務(wù)數(shù)據(jù)的最后一個段;若子服務(wù)數(shù)據(jù)只有一個段,其標(biāo)號設(shè)置為0。本發(fā)明涉及CAN通信
技術(shù)領(lǐng)域:
,具體涉及到商用車CAN通信中的長報文傳輸協(xié)議。商用車CAN長報文傳輸協(xié)議主要是用來解決超長商用車CAN報文的傳輸,傳輸協(xié)議的技術(shù)內(nèi)容包括:1)傳輸報文的傳輸?shù)刂罚?)傳輸協(xié)議控制信息;3)傳輸協(xié)議網(wǎng)絡(luò)層時間參數(shù);4)傳輸協(xié)議的字節(jié)序;5)傳輸協(xié)議的分段報文數(shù)據(jù);6)傳輸協(xié)議的響應(yīng)報文。該項技術(shù)在不增加車輛單件成本的前提下,利用商用車長報文傳輸協(xié)議較為完整的解決了CAN網(wǎng)絡(luò)傳輸大數(shù)據(jù)的傳輸問題。該長報文傳輸協(xié)議可以用于解決對傳輸時間要求不高(如:電話本數(shù)據(jù),車輛顯示信息和駕駛員操作記錄等)且由于成本原因無法應(yīng)用新型總線技術(shù)(如MOST、Ethernet等)的數(shù)據(jù)傳輸問題,是對SAEJ1939-21標(biāo)準(zhǔn)的重要升級和補充,經(jīng)過實車驗證,該商用車CAN長報文傳輸協(xié)議實用效果顯著。本發(fā)明解決了商用車CAN長報文傳輸?shù)膯栴},傳輸報文長度可達(dá)1044225個字節(jié),相比SAEJ1939-21,傳輸能力提高了585倍。相比SAEJ1939-21傳輸協(xié)議,本傳輸協(xié)議只需要兩個節(jié)點做流量控制,其他節(jié)點只需要接收數(shù)據(jù),減少了程序設(shè)計復(fù)雜性,節(jié)約了開發(fā)成本。附圖說明下面結(jié)合附圖和具體實施方式對本發(fā)明作進(jìn)一步詳細(xì)說明。圖1:多包通信結(jié)構(gòu)示意圖。圖2:多包數(shù)據(jù)傳輸流程圖。圖3:本發(fā)明的商用車CAN通信傳輸方法流程圖。具體實施方案如圖1所示,本發(fā)明中涉及到數(shù)據(jù)發(fā)送節(jié)點和數(shù)據(jù)接收節(jié)點,數(shù)據(jù)發(fā)送節(jié)點通過PGN:0xED00發(fā)送數(shù)據(jù);接收節(jié)點通過PGN:0xEE00進(jìn)行流控,反饋流控報文,并通過PGN:0xEF00進(jìn)行響應(yīng),發(fā)送響應(yīng)報文。如圖2所示,開始傳輸數(shù)據(jù)后,發(fā)送節(jié)點發(fā)送首幀報文,接收節(jié)點反饋繼續(xù)發(fā)送的流控報文,發(fā)送節(jié)點收到流控報文后持續(xù)發(fā)送連續(xù)幀直至該當(dāng)前數(shù)據(jù)塊發(fā)送完,再等待接收節(jié)點反饋繼續(xù)發(fā)送的流控報文;直至將當(dāng)前段全部數(shù)據(jù)傳輸完畢,進(jìn)行下一段數(shù)據(jù)的傳輸。如圖3所示,長報文中連續(xù)幀數(shù)據(jù)分段傳輸,每段數(shù)據(jù)包含多塊數(shù)據(jù);傳輸?shù)倪壿嬋缦拢喊l(fā)送節(jié)點先發(fā)送首幀報文,接收節(jié)點收到后反饋流控報文。塊數(shù)據(jù)傳輸:如果流控狀態(tài)為0x0:繼續(xù)發(fā)送,則發(fā)送節(jié)點繼續(xù)發(fā)送連續(xù)幀數(shù)據(jù);如果流控狀態(tài)為0x1:等待,則發(fā)送節(jié)點暫停發(fā)送數(shù)據(jù)并等待下一幀流控報文;如果流控狀態(tài)為0x2:溢出,則發(fā)送節(jié)點停止發(fā)送數(shù)據(jù)。發(fā)送節(jié)點根據(jù)流控報文中的塊大小發(fā)送連續(xù)幀數(shù)據(jù),達(dá)到最大塊數(shù)后判斷該分段數(shù)據(jù)是否發(fā)送完。分段數(shù)據(jù)傳輸:如果該分段數(shù)據(jù)未發(fā)送完,則發(fā)送節(jié)點暫停發(fā)送數(shù)據(jù)并等待下一幀流控報文;如果該分段數(shù)據(jù)發(fā)送完成,則發(fā)送節(jié)點判斷接收節(jié)點反饋的響應(yīng)報文,如果響應(yīng)狀態(tài)是0x0:肯定響應(yīng),則繼續(xù)判斷全部數(shù)據(jù)是否發(fā)送完,如果響應(yīng)狀態(tài)是0x1:否定響應(yīng),則發(fā)送節(jié)點重新發(fā)送連續(xù)幀分段數(shù)據(jù)且其他接收節(jié)點丟棄該分段數(shù)據(jù),發(fā)送節(jié)點最多重發(fā)3次,如果重發(fā)3次仍收到否定響應(yīng),則發(fā)送節(jié)點停止發(fā)送連續(xù)幀數(shù)據(jù)。全部數(shù)據(jù)傳輸:當(dāng)發(fā)送節(jié)點接收到接收節(jié)點反饋的響應(yīng)報文的響應(yīng)狀態(tài)是0x0:肯定響應(yīng)后,發(fā)送節(jié)點判斷全部數(shù)據(jù)是否發(fā)送完成,如果未發(fā)送完成,則發(fā)送節(jié)點暫停發(fā)送數(shù)據(jù)并等待下一幀流控報文;如果發(fā)送完成,則發(fā)送節(jié)點停止發(fā)送數(shù)據(jù)。本發(fā)明傳輸協(xié)議的技術(shù)內(nèi)容包括:1)傳輸報文的傳輸?shù)刂罚鹤裱璊1939的規(guī)定,使用29位CAN擴(kuò)展幀標(biāo)識符,分別規(guī)定發(fā)送節(jié)點的傳輸報文PGN為0xED00,接收節(jié)點的流控報文PGN為0xEE00、響應(yīng)報文PGN為0xEF00。因為使用該傳輸協(xié)議傳輸?shù)臄?shù)據(jù)均不屬于非控制信息,故報文傳輸優(yōu)先級選定為7。2)傳輸協(xié)議信息說明:網(wǎng)絡(luò)層協(xié)議數(shù)據(jù)單元到CAN報文的映射關(guān)系見表1。協(xié)議控制信息定義見表2。表1網(wǎng)絡(luò)層參數(shù)到CAN報文的映射表2網(wǎng)絡(luò)層協(xié)議控制信息定義3)傳輸協(xié)議網(wǎng)絡(luò)層時間參數(shù);網(wǎng)絡(luò)層時間參數(shù)定義見表3。表3網(wǎng)絡(luò)層時間參數(shù)定義時間參數(shù)最小時間最大時間N_As/N_ArNULL25msN_BsNULL75msN_CrNULL150ms4)填充位:填充內(nèi)容為0x1。5)首幀中的數(shù)據(jù)字節(jié):首幀的后六個字節(jié)用于數(shù)據(jù)傳輸,并且這六個字節(jié)傳輸多包報文的前六個字節(jié),從第七個字節(jié)開始使用CF(連續(xù)幀)進(jìn)行傳輸。6)字節(jié)序:字節(jié)序采用小端模式:低字節(jié)在前高字節(jié)在后,高位在前低位在后。7)半雙工:綜合考慮開發(fā)成本和開發(fā)難度,選擇半雙工的通信模式。半雙工意味著兩個節(jié)點之間點對點的通信在同一時間只能單向通信。例如,當(dāng)節(jié)點A接收多包報文,它不能再發(fā)送多包報文,反之亦然。8)分段數(shù)據(jù)定義:分段數(shù)據(jù)定義如表4所示。表4分段數(shù)據(jù)定義可變數(shù)據(jù)長度的報文ID命名為子服務(wù)功能ID,子服務(wù)功能ID位于分段報文(即分段數(shù)據(jù))數(shù)據(jù)域的前四個字節(jié)。分段報文用12位表示首幀數(shù)據(jù)長度,最大值為4095.由于子服務(wù)的數(shù)據(jù)非常大,有時其數(shù)據(jù)長度可能大于4095,需要將其分成幾段進(jìn)行發(fā)送。每個數(shù)據(jù)的段有一個標(biāo)號進(jìn)行標(biāo)示,且該標(biāo)號占用數(shù)據(jù)段的第二個字節(jié)。標(biāo)號為1的數(shù)據(jù)收據(jù)子服務(wù)數(shù)據(jù)的首段數(shù)據(jù),其它以此類推。標(biāo)號為0段位子服務(wù)數(shù)據(jù)最后一個段。若子服務(wù)數(shù)據(jù)只有一個段,其標(biāo)號設(shè)置為0。子服務(wù)數(shù)據(jù)從分段數(shù)據(jù)的第六個字節(jié)開始發(fā)送。舉例:定義報文ID為0x18FF01EE,報文長度為5000字節(jié),則該報文需要分成兩段報文進(jìn)行傳輸:第一段報文數(shù)據(jù)定義:0xEE,0x01,0xFF,0x18,0x01,字節(jié)1……字節(jié)4090;第二段報文數(shù)據(jù)定義:0xEE,0x01,0xFF,0x18,0x02,字節(jié)4091……字節(jié)5000。9)響應(yīng)報文定義:響應(yīng)報文標(biāo)識定義如表5所示。表5響應(yīng)報文標(biāo)識定義CANPGN描述0xEF00接收節(jié)點發(fā)送的響應(yīng)報文響應(yīng)報文的數(shù)據(jù)長度為5個字節(jié)。響應(yīng)報文的數(shù)據(jù)內(nèi)容定義如表6所示。表6響應(yīng)報文數(shù)據(jù)內(nèi)容定義10)響應(yīng)機(jī)制:報文接收節(jié)點在成功地接收到已定義的分段報文后會發(fā)送一條肯定響應(yīng)報文,如果在接收已定義的分段報文過程中出現(xiàn)了某些故障則發(fā)送一個否定響應(yīng)報文。報文的發(fā)送節(jié)點和接收節(jié)點都應(yīng)接收來自其他節(jié)點的響應(yīng)報文,如果接收到一個否定響應(yīng)報文,發(fā)送節(jié)點和所有的接收節(jié)點都應(yīng)該中止該連接,同時全部接收節(jié)點應(yīng)忽略本次連接所接收到的分段報文內(nèi)容,發(fā)送節(jié)點將重新發(fā)送此段報文且最多重發(fā)3次。報文接收節(jié)點忽略未定義的分段報文。當(dāng)前第1頁1 2 3