專利名稱:一種應(yīng)用于大量數(shù)據(jù)基于連接的can總線的通信協(xié)議的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)領(lǐng)域的嵌入式實(shí)時(shí)系統(tǒng),更具體的說,是涉及一種應(yīng)用于大量數(shù)據(jù)基于連接的CAN總線的的通信協(xié)議。
背景技術(shù):
實(shí)時(shí)系統(tǒng)是指如果邏輯和時(shí)序出現(xiàn)偏差會(huì)引起嚴(yán)重后果的系統(tǒng),廣泛應(yīng)用于工廠生產(chǎn)過程控制、汽車業(yè)、辦公自動(dòng)化、計(jì)算機(jī)外設(shè)、通信設(shè)備、機(jī)器人、航空航天和民用消費(fèi)等領(lǐng)域。實(shí)時(shí)系統(tǒng)中的通信系統(tǒng)是指是經(jīng)過網(wǎng)絡(luò)層、鏈路層、物理層等的電子控制單元之間的通信。對(duì)于應(yīng)用在汽車領(lǐng)域的嵌入式實(shí)時(shí)系統(tǒng),電子控制單元(ECU)之間的通信是非常必須和重要的,通信系統(tǒng)的速度和可靠性直接影響著汽車的性能和駕駛安全。
CAN(Controller Area Network)屬于現(xiàn)場(chǎng)總線的范疇,它是一種有效支持分布式控制或?qū)崟r(shí)控制的串行通信網(wǎng)絡(luò)。較之目前其他分布式控制系統(tǒng)而言,基于CAN總線的分布式控制系統(tǒng)在以下方面具有明顯的優(yōu)越性首先,CAN控制器工作于多主方式,網(wǎng)絡(luò)中的各節(jié)點(diǎn)都可根據(jù)總線訪問優(yōu)先權(quán)競(jìng)爭(zhēng)地向總線發(fā)送數(shù)據(jù),CAN總線構(gòu)成的網(wǎng)絡(luò)各節(jié)點(diǎn)之間的數(shù)據(jù)通信實(shí)時(shí)性強(qiáng),并且容易構(gòu)成冗余結(jié)構(gòu),提高系統(tǒng)的可靠性和系統(tǒng)的靈活性。而利用RS-485只能構(gòu)成主從式結(jié)構(gòu)系統(tǒng),通信方式也只能以主站輪詢的方式進(jìn)行,系統(tǒng)的實(shí)時(shí)性、可靠性較差;其次,CAN具有的完善的通信協(xié)議可由CAN控制器芯片及其接口芯片來實(shí)現(xiàn),從而大大降低系統(tǒng)開發(fā)難度,縮短了開發(fā)周期,這些是只僅僅有電氣協(xié)議的RS-485所無法比擬的。另外,與其它現(xiàn)場(chǎng)總線比較而言,CAN總線是具有通信速率高、容易實(shí)現(xiàn)、且性價(jià)比高等諸多特點(diǎn)的一種已形成國(guó)際標(biāo)準(zhǔn)的現(xiàn)場(chǎng)總線。這些也是目前CAN總線應(yīng)用于眾多領(lǐng)域,具有強(qiáng)勁的市場(chǎng)競(jìng)爭(zhēng)力的重要原因。
CAN協(xié)議規(guī)定數(shù)據(jù)域大小為8個(gè)字節(jié),因此CAN協(xié)議支持不大于8字節(jié)的數(shù)據(jù)傳輸,而對(duì)于大于8字節(jié)的數(shù)據(jù),不能直接發(fā)送,存在了一定的弊端。
發(fā)明內(nèi)容
本發(fā)明的主要目的在于克服現(xiàn)有技術(shù)中的不足,提供了一種應(yīng)用于大量數(shù)據(jù)基于連接的CAN總線的通信協(xié)議。
為了解決上述技術(shù)問題,本發(fā)明是通過以下技術(shù)方案實(shí)現(xiàn)的。
一種應(yīng)用于大量數(shù)據(jù)基于連接的CAN總線的通信協(xié)議,所述的通信協(xié)議基于CAN總線通信協(xié)議,對(duì)于數(shù)據(jù)大于8字節(jié)的消息,通過把消息拆分成若干小的用序列號(hào)標(biāo)志的單獨(dú)數(shù)據(jù)包,然后傳輸?shù)浇邮斩?,在接收端把接收到的若干小的?shù)據(jù)包重新組裝成一個(gè)消息而完成消息的傳送。
作為一種改進(jìn),所述的單獨(dú)數(shù)據(jù)包的序列號(hào)從1到255標(biāo)志,序列號(hào)從1開始分配,并且連續(xù)地分配下去直到最后一個(gè)單獨(dú)數(shù)據(jù)包,而單獨(dú)數(shù)據(jù)包也應(yīng)該從第一個(gè)單獨(dú)數(shù)據(jù)包開始順序發(fā)送。
作為一種改進(jìn),除最后一個(gè)單獨(dú)數(shù)據(jù)包外,每個(gè)單獨(dú)數(shù)據(jù)包必須包含一個(gè)序列號(hào)和7個(gè)字節(jié)數(shù)據(jù);最后一個(gè)單獨(dú)數(shù)據(jù)包包含如下內(nèi)容一個(gè)序列號(hào),至少一個(gè)字節(jié)的數(shù)據(jù),以及被標(biāo)記的無用的數(shù)據(jù)。
作為一種改進(jìn),所述的通信協(xié)議包括一對(duì)一連接管理、廣播連接管理和數(shù)據(jù)傳輸管理。
作為一種改進(jìn),所述的一對(duì)一連接管理包括發(fā)送建立連接請(qǐng)求、接收建立連接請(qǐng)求、發(fā)送應(yīng)答連接請(qǐng)求、接收應(yīng)答連接請(qǐng)求、發(fā)送連接結(jié)束請(qǐng)求、接收連接結(jié)束請(qǐng)求、發(fā)送中止連接請(qǐng)求和接收中止連接請(qǐng)求。
作為一種改進(jìn),所述的一對(duì)一連接管理的實(shí)現(xiàn)過程如下一對(duì)一連接管理包括連接的初始化和連接的結(jié)束,連接的初始化是從發(fā)送端發(fā)送建立連接請(qǐng)求消息開始;建立連接請(qǐng)求消息包含發(fā)送端要發(fā)送的消息的字節(jié)數(shù)、它將被拆分成的單獨(dú)數(shù)據(jù)包的個(gè)數(shù)、響應(yīng)一個(gè)應(yīng)答連接請(qǐng)求消息最多可以發(fā)送的數(shù)據(jù)包個(gè)數(shù)以及該消息的標(biāo)識(shí)符;接收端選擇接受或者拒絕請(qǐng)求;若接受請(qǐng)求,接收端發(fā)送一個(gè)應(yīng)答連接請(qǐng)求消息,應(yīng)答連接請(qǐng)求消息包含接收端將要接受的數(shù)據(jù)包的個(gè)數(shù)以及它所期待的第一個(gè)數(shù)據(jù)包的序列號(hào);當(dāng)發(fā)送端接收到一個(gè)從接收端發(fā)送的相應(yīng)的應(yīng)答連接請(qǐng)求消息之后,就認(rèn)為連接已經(jīng)建立;對(duì)于接收端而言,當(dāng)它成功的發(fā)送出應(yīng)答連接請(qǐng)求消息之后,就認(rèn)為連接已經(jīng)建立;
若接收端查看了請(qǐng)求發(fā)送消息,并且決定不建立連接,接收端就需要發(fā)送一個(gè)連接中止消息,這使得發(fā)送端不需要等待一個(gè)超時(shí),就可以在第一時(shí)間放棄這個(gè)連接企圖,去請(qǐng)求其他連接;當(dāng)接收端收到了全部期待的數(shù)據(jù),它需要發(fā)送一個(gè)連接結(jié)束請(qǐng)求消息,來表明接收端已經(jīng)成功接收到全部的應(yīng)用數(shù)據(jù),發(fā)送端收到連接結(jié)束請(qǐng)求消息后,即認(rèn)為數(shù)據(jù)傳輸已經(jīng)成功結(jié)束,本次連接過程結(jié)束。
作為一種改進(jìn),所述的廣播連接管理包括發(fā)送廣播請(qǐng)求和發(fā)送應(yīng)用數(shù)據(jù);網(wǎng)絡(luò)中的其他節(jié)點(diǎn)收到廣播請(qǐng)求之后,無需應(yīng)答,發(fā)送端隨即開始向接收端發(fā)送應(yīng)用數(shù)據(jù),數(shù)據(jù)發(fā)送完畢之后也無需發(fā)送連接結(jié)束請(qǐng)求,數(shù)據(jù)發(fā)送過程中,發(fā)生錯(cuò)誤也無需發(fā)送連接中止請(qǐng)求。
作為一種改進(jìn),所述的數(shù)據(jù)傳輸管理包括發(fā)送應(yīng)用數(shù)據(jù)和接收應(yīng)用數(shù)據(jù)。
作為一種改進(jìn),所述的數(shù)據(jù)傳輸管理實(shí)現(xiàn)過程如下發(fā)送端企圖發(fā)送大于8字節(jié)的數(shù)據(jù)給接收端,首先需要發(fā)送一個(gè)建立連接請(qǐng)求,接收端在接收到建立連接請(qǐng)求之后,如果決定接收這個(gè)請(qǐng)求,則發(fā)送應(yīng)答連接請(qǐng)求,當(dāng)發(fā)送端接收到應(yīng)答連接請(qǐng)求之后,表示該連接已經(jīng)建立,發(fā)送端可以開始發(fā)送應(yīng)用數(shù)據(jù),接收端開始接收應(yīng)用數(shù)據(jù),當(dāng)接收端收到全部的應(yīng)用數(shù)據(jù)之后,發(fā)送連接結(jié)束請(qǐng)求,當(dāng)發(fā)送端接收到連接結(jié)束請(qǐng)求之后,表示該連接已經(jīng)結(jié)束,發(fā)送端和接收端準(zhǔn)備進(jìn)入下一個(gè)連接的過程;在整個(gè)連接過程之中,如果發(fā)生錯(cuò)誤,發(fā)送端和接收端都可以發(fā)送中止連接請(qǐng)求,對(duì)方節(jié)點(diǎn)接收到中止連接請(qǐng)求之后,表示該連接已經(jīng)被中止。
作為一種改進(jìn),所述的數(shù)據(jù)傳輸管理在一對(duì)一連接管理中,若接收端希望一個(gè)已經(jīng)建立的連接立即停止發(fā)送數(shù)據(jù),它需要發(fā)送一個(gè)應(yīng)答連接請(qǐng)求消息,并且將允許發(fā)送的包個(gè)數(shù)設(shè)為0;若連接需要暫時(shí)停止發(fā)送數(shù)據(jù)幾秒鐘,接收端必須以0.5秒的周期重復(fù)這樣的應(yīng)答連接請(qǐng)求消息,避免使發(fā)送端認(rèn)為連接已經(jīng)中止,應(yīng)答連接消息的其余的位被設(shè)為1。
與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果是本發(fā)明主要解決了對(duì)于長(zhǎng)度大于8字節(jié)的大量數(shù)據(jù)傳輸?shù)膶?shí)現(xiàn),對(duì)其數(shù)據(jù)傳輸過程中的數(shù)據(jù)的差分和打包以及連接管理作了詳細(xì)的規(guī)定,克服了原有CAN通信協(xié)議的不足。利用本發(fā)明所述的數(shù)據(jù)傳輸方式,可以擴(kuò)大CAN總線通訊協(xié)議的使用范圍,數(shù)據(jù)傳輸亦更加方便靈活。
圖1是本發(fā)明的系統(tǒng)結(jié)構(gòu)圖。
圖2是本發(fā)明發(fā)送建立連接請(qǐng)求的流程圖。
圖3是本發(fā)明接收建立連接請(qǐng)求的流程圖。
圖4是本發(fā)明發(fā)送應(yīng)答連接請(qǐng)求的流程圖。
圖5是本發(fā)明接收應(yīng)答連接請(qǐng)求的流程圖。
圖6是本發(fā)明發(fā)送連接結(jié)束請(qǐng)求的流程圖。
圖7是本發(fā)明接收連接結(jié)束請(qǐng)求的流程圖。
圖8是本發(fā)明發(fā)送中止連接請(qǐng)求的流程圖。
圖9是本發(fā)明接收中止連接請(qǐng)求的流程圖。
圖10是本發(fā)明發(fā)送廣播請(qǐng)求的流程圖。
圖11是本發(fā)明接收廣播請(qǐng)求的流程圖。
圖12是本發(fā)明的一個(gè)應(yīng)用實(shí)例圖。
具體實(shí)施例方式
結(jié)合附圖,下面通過具體實(shí)施例對(duì)本發(fā)明進(jìn)行詳細(xì)說明。
一個(gè)大消息就是一個(gè)CAN的數(shù)據(jù)幀裝不下的消息,數(shù)據(jù)大于8字節(jié)的消息無法裝入一個(gè)單獨(dú)的CAN的數(shù)據(jù)幀。因此它們必須被拆分成若干小的數(shù)據(jù)包,然后再分別傳輸這些數(shù)據(jù)包。在接收端,這些數(shù)據(jù)包必須被接收下來,然后再重新組裝成一個(gè)完整的消息。
一種應(yīng)用于大量數(shù)據(jù)基于連接的CAN總線的通信協(xié)議,所述的通信協(xié)議基于CAN總線通信協(xié)議,對(duì)于數(shù)據(jù)大于8字節(jié)的消息,通過把消息拆分成若干小的用序列號(hào)標(biāo)志的單獨(dú)數(shù)據(jù)包,然后傳輸?shù)浇邮斩?,在接收端把接收到的若干小的?shù)據(jù)包重新組裝成一個(gè)消息而完成消息的傳送,所述的通信協(xié)議包括一對(duì)一連接管理、廣播連接管理和數(shù)據(jù)傳輸管理;所述的單獨(dú)數(shù)據(jù)包的序列號(hào)從1到255標(biāo)志,序列號(hào)從1開始分配,并且連續(xù)地分配下去直到最后一個(gè)單獨(dú)數(shù)據(jù)包,而單獨(dú)數(shù)據(jù)包也應(yīng)該從第一個(gè)單獨(dú)數(shù)據(jù)包開始順序發(fā)送。除最后一個(gè)單獨(dú)數(shù)據(jù)包外,每個(gè)單獨(dú)數(shù)據(jù)包必須包含一個(gè)序列號(hào)和7個(gè)字節(jié)數(shù)據(jù);最后一個(gè)單獨(dú)數(shù)據(jù)包包含如下內(nèi)容一個(gè)序列號(hào),至少一個(gè)字節(jié)的數(shù)據(jù),以及其他無用的被標(biāo)記為FF16的數(shù)據(jù)。
(1)一對(duì)一連接管理一對(duì)一連接管理包括連接的初始化和連接的結(jié)束。一個(gè)連接的初始化是從發(fā)送端發(fā)送建立連接請(qǐng)求(Request to send,RTS)消息開始的,建立連接請(qǐng)求消息包含了消息的字節(jié)數(shù),它將被拆分成的數(shù)據(jù)包的個(gè)數(shù),對(duì)應(yīng)一個(gè)應(yīng)答連接請(qǐng)求消息CTS可以發(fā)送的數(shù)據(jù)包的個(gè)數(shù),以及該消息的標(biāo)識(shí)符。
收到一個(gè)請(qǐng)求發(fā)送消息的時(shí)候,接收端可以選擇接受請(qǐng)求或者拒絕它。如果決定接受它,發(fā)送端可以發(fā)送一個(gè)應(yīng)答連接請(qǐng)求消息(Clear to send,CTS)。應(yīng)答連接請(qǐng)求消息包含了它將要接受的數(shù)據(jù)包的個(gè)數(shù),以及它所期待的第一個(gè)數(shù)據(jù)包的序列號(hào)。接收端必須確定它有足夠的資源來處理這些數(shù)據(jù)包。對(duì)一個(gè)剛剛開啟的數(shù)據(jù)連接來說,它所期待的第一個(gè)數(shù)據(jù)包應(yīng)該是“1”。如果決定拒絕它,接收端發(fā)送一個(gè)連接中止(Connection Abort)消息。連接請(qǐng)求被拒絕的原因有可能是資源不足,內(nèi)存不足等等。
對(duì)于發(fā)送端而言,當(dāng)它接收到一個(gè)從接收端發(fā)送的相應(yīng)的應(yīng)答連接請(qǐng)求消息(CTS)之后,就認(rèn)為連接已經(jīng)建立了;對(duì)于接收端而言,當(dāng)它成功的發(fā)送出應(yīng)答連接請(qǐng)求消息(CTS)之后,就認(rèn)為連接已經(jīng)建立了。這些定義用來決定何時(shí)必須發(fā)送一個(gè)連接中止消息來關(guān)閉一個(gè)連接。
如果一個(gè)接收端查看了RTS(Request To Send,請(qǐng)求發(fā)送)消息,并且決定不建立一個(gè)連接,他就需要發(fā)送一個(gè)連接中止消息。這使得發(fā)送端不需要等待超時(shí),在第一時(shí)間放棄這個(gè)連接企圖,去請(qǐng)求其他的連接。
當(dāng)接收端收到了全部期待的數(shù)據(jù),它需要發(fā)送一個(gè)EndofMsgACK(連接結(jié)束請(qǐng)求),來表明接收端已經(jīng)成功接收到全部的應(yīng)用數(shù)據(jù),發(fā)送端收到EndofMsgACK消息后,即認(rèn)為數(shù)據(jù)傳輸已經(jīng)成功結(jié)束,本次連接過程結(jié)束。
在通常情況下,數(shù)據(jù)傳送都會(huì)按照附圖12的數(shù)據(jù)流模式來進(jìn)行。發(fā)送端發(fā)送TP.CM_RTS消息表明有一個(gè)23個(gè)字節(jié)的消息被拆裝成4個(gè)數(shù)據(jù)包將被發(fā)送。在傳送中數(shù)據(jù)包成員的PGN值統(tǒng)一標(biāo)識(shí)為65259。
接收端通過TP.CM_CTS消息回復(fù),表示它已經(jīng)準(zhǔn)備好處理從編號(hào)1開始的兩個(gè)數(shù)據(jù)包。發(fā)送端通過網(wǎng)絡(luò)用TP.DT消息發(fā)送前兩個(gè)數(shù)據(jù)包。然后,接收端發(fā)出一條TP.CM_CTS消息,表示它想保持連接但不能馬上再接收任何數(shù)據(jù)包。在最長(zhǎng)延遲500毫秒后,它必須再發(fā)一條TP.CM_CTS消息來保持連接。在這個(gè)實(shí)施例中,接收端再發(fā)送了一條TP.CM_CTS消息,表示它可以接收從編號(hào)3開始的兩個(gè)數(shù)據(jù)包。
一旦3號(hào)和4號(hào)數(shù)據(jù)包被傳送完畢,接收端發(fā)送了一條EndofMsgACK消息,表示所有的數(shù)據(jù)包都接收到了,現(xiàn)在關(guān)閉連接。需要注意,4號(hào)數(shù)據(jù)包包含2字節(jié)的有效數(shù)據(jù),分別是第22個(gè)字節(jié)和第23個(gè)字節(jié),數(shù)據(jù)包的余下無效數(shù)據(jù)字節(jié)都被設(shè)為255(FF16)進(jìn)行傳送,所以消息的長(zhǎng)度是8個(gè)字節(jié)。
至此完成一個(gè)完整的一對(duì)一的數(shù)據(jù)傳輸過程。
(2)數(shù)據(jù)傳輸管理數(shù)據(jù)傳輸從連接發(fā)送端接受到應(yīng)答連接請(qǐng)求開始。每一個(gè)數(shù)據(jù)包的CAN標(biāo)示符包含了數(shù)據(jù)傳輸?shù)膮?shù)組號(hào)。數(shù)據(jù)域的第一個(gè)字節(jié)是該包的序列號(hào)。
當(dāng)發(fā)送端企圖發(fā)送大于8字節(jié)的數(shù)據(jù)給接收端,首先需要發(fā)送一個(gè)建立連接請(qǐng)求,接收端在接收到建立連接請(qǐng)求之后,如果決定接收這個(gè)請(qǐng)求,則發(fā)送應(yīng)答連接請(qǐng)求,當(dāng)發(fā)送端接收到應(yīng)答連接請(qǐng)求之后,表示該連接已經(jīng)建立,發(fā)送端可以開始發(fā)送應(yīng)用數(shù)據(jù),接收端開始接收應(yīng)用數(shù)據(jù),當(dāng)接收端收到全部的應(yīng)用數(shù)據(jù)之后,發(fā)送連接結(jié)束請(qǐng)求,當(dāng)發(fā)送端接收到連接結(jié)束請(qǐng)求之后,表示該連接已經(jīng)結(jié)束,發(fā)送端和接收端準(zhǔn)備進(jìn)入下一個(gè)連接的過程;在整個(gè)連接過程之中,如果發(fā)生錯(cuò)誤,發(fā)送端和接收端都可以發(fā)送中止連接請(qǐng)求,對(duì)方節(jié)點(diǎn)接收到中止連接請(qǐng)求之后,表示該連接已經(jīng)被中止。
在一對(duì)一連接管理中,接收端來負(fù)責(zé)節(jié)點(diǎn)之間的流量控制。如果它希望一個(gè)已經(jīng)建立的連接立即停止發(fā)送數(shù)據(jù),它需要發(fā)送一個(gè)應(yīng)答連接請(qǐng)求消息CTS,并且將允許發(fā)送的包個(gè)數(shù)設(shè)為0。如果連接需要暫時(shí)停止發(fā)送數(shù)據(jù)幾秒鐘,接收端必須以0.5秒的周期重復(fù)這樣的應(yīng)答連接請(qǐng)求消息,以免使發(fā)送端認(rèn)為連接已經(jīng)中止。應(yīng)答連接消息的其余的位被設(shè)為1(表示這些位是無關(guān)位)。
在一對(duì)一的連接管理中,某一個(gè)節(jié)點(diǎn)的故障可能導(dǎo)致連接的關(guān)閉。例如,在仍然期待更多的數(shù)據(jù)包的情況下,等待的時(shí)間超過T1;當(dāng)允許發(fā)送消息(CTS)發(fā)送以后經(jīng)過了T2時(shí)間還沒有接收到數(shù)據(jù)包(發(fā)送端故障);當(dāng)最后一個(gè)數(shù)據(jù)包發(fā)送之后經(jīng)過T3時(shí)間之后還沒有收到允許發(fā)送或者確認(rèn)連接消息(接收端故障)等等。
本具體實(shí)施例中,如附圖12所示,幾個(gè)重要的時(shí)間間隔的典型值可以被設(shè)為Tr=200ms;Th=500ms;T1=750ms;T2=1250ms;T3=1250ms;T4=1050ms;(3)廣播連接管理如果一個(gè)發(fā)送端企圖發(fā)送大于8字節(jié)的數(shù)據(jù)到網(wǎng)絡(luò)上的每一個(gè)地址,首先需要發(fā)送一個(gè)廣播請(qǐng)求。廣播請(qǐng)求消息包含要發(fā)送數(shù)據(jù)的字節(jié)長(zhǎng)度、需要分幾次發(fā)送以及發(fā)送數(shù)據(jù)的參數(shù)組號(hào)等信息。網(wǎng)絡(luò)中的其他節(jié)點(diǎn)收到廣播請(qǐng)求之后,無需應(yīng)答,發(fā)送端隨即開始向接收端發(fā)送應(yīng)用數(shù)據(jù),數(shù)據(jù)發(fā)送完畢之后也無需發(fā)送連接結(jié)束請(qǐng)求。數(shù)據(jù)發(fā)送過程中,發(fā)生錯(cuò)誤也無需發(fā)送連接中止請(qǐng)求。
廣播多包數(shù)據(jù)的數(shù)據(jù)包的到達(dá)時(shí)間應(yīng)該在50~200ms之間。而對(duì)于發(fā)送到某一個(gè)特定地址的多包消息,發(fā)送端會(huì)在數(shù)據(jù)包之間維持一個(gè)最大200ms的延時(shí)(如果CTS允許一次發(fā)多于一個(gè)包的話)。接收端必須明白所有來自同一個(gè)消息的數(shù)據(jù)包都有同樣的標(biāo)識(shí)符。
對(duì)于多包消息,每個(gè)數(shù)據(jù)包被順序地接收到后,會(huì)按照序列號(hào)的順序重新組裝起來,組成一個(gè)完整的字節(jié)序列,傳遞給應(yīng)用層。
最后,還需要注意的是,以上列舉的僅是本發(fā)明的一個(gè)具體實(shí)施例。顯然,本發(fā)明不限于以上實(shí)施例,還可以有許多變形。本領(lǐng)域的普通技術(shù)人員能從本發(fā)明公開的內(nèi)容直接導(dǎo)出或聯(lián)想到的所有變形,均應(yīng)認(rèn)為是本發(fā)明的保護(hù)范圍。
權(quán)利要求
1.一種應(yīng)用于大量數(shù)據(jù)基于連接的CAN總線的通信協(xié)議,其特征在于,所述的通信協(xié)議基于CAN總線通信協(xié)議,對(duì)于數(shù)據(jù)大于8字節(jié)的消息,通過把消息拆分成若干小的用序列號(hào)標(biāo)志的單獨(dú)數(shù)據(jù)包,然后傳輸?shù)浇邮斩?,在接收端把接收到的若干小的?shù)據(jù)包重新組裝成一個(gè)消息而完成消息的傳送。
2.根據(jù)權(quán)利要求1所述的一種應(yīng)用于大量數(shù)據(jù)基于連接的CAN總線的通信協(xié)議,其特征在于,所述的單獨(dú)數(shù)據(jù)包的序列號(hào)從1到255標(biāo)志,序列號(hào)從1開始分配,并且連續(xù)地分配下去直到最后一個(gè)單獨(dú)數(shù)據(jù)包,而單獨(dú)數(shù)據(jù)包也應(yīng)該從第一個(gè)單獨(dú)數(shù)據(jù)包開始順序發(fā)送。
3.根據(jù)權(quán)利要求2所述的一種應(yīng)用于大量數(shù)據(jù)基于連接的CAN總線的通信協(xié)議,其特征在于,除最后一個(gè)單獨(dú)數(shù)據(jù)包外,每個(gè)單獨(dú)數(shù)據(jù)包必須包含一個(gè)序列號(hào)和7個(gè)字節(jié)數(shù)據(jù);最后一個(gè)單獨(dú)數(shù)據(jù)包包含如下內(nèi)容一個(gè)序列號(hào),至少一個(gè)字節(jié)的數(shù)據(jù),以及被標(biāo)記的無用的數(shù)據(jù)。
4.根據(jù)權(quán)利要求1所述的一種應(yīng)用于大量數(shù)據(jù)基于連接的CAN總線的通信協(xié)議,其特征在于,所述的通信協(xié)議包括一對(duì)一連接管理、廣播連接管理和數(shù)據(jù)傳輸管理。
5.根據(jù)權(quán)利要求4所述的一種應(yīng)用于大量數(shù)據(jù)基于連接的CAN總線的通信協(xié)議,其特征在于,所述的一對(duì)一連接管理包括發(fā)送建立連接請(qǐng)求、接收建立連接請(qǐng)求、發(fā)送應(yīng)答連接請(qǐng)求、接收應(yīng)答連接請(qǐng)求、發(fā)送連接結(jié)束請(qǐng)求、接收連接結(jié)束請(qǐng)求、發(fā)送中止連接請(qǐng)求和接收中止連接請(qǐng)求。
6.根據(jù)權(quán)利要求5所述的一種應(yīng)用于大量數(shù)據(jù)基于連接的CAN總線的通信協(xié)議,其特征在于,所述的一對(duì)一連接管理的實(shí)現(xiàn)過程如下一對(duì)一連接管理包括連接的初始化和連接的結(jié)束,連接的初始化是從發(fā)送端發(fā)送建立連接請(qǐng)求消息開始;建立連接請(qǐng)求消息包含發(fā)送端要發(fā)送的消息的字節(jié)數(shù)、它將被拆分成的單獨(dú)數(shù)據(jù)包的個(gè)數(shù)、響應(yīng)一個(gè)應(yīng)答連接請(qǐng)求消息最多可以發(fā)送的數(shù)據(jù)包個(gè)數(shù)以及該消息的標(biāo)識(shí)符;接收端選擇接受或者拒絕請(qǐng)求;若接受請(qǐng)求,接收端發(fā)送一個(gè)應(yīng)答連接請(qǐng)求消息,應(yīng)答連接請(qǐng)求消息包含接收端將要接受的數(shù)據(jù)包的個(gè)數(shù)以及它所期待的第一個(gè)數(shù)據(jù)包的序列號(hào);當(dāng)發(fā)送端接收到一個(gè)從接收端發(fā)送的相應(yīng)的應(yīng)答連接請(qǐng)求消息之后,就認(rèn)為連接已經(jīng)建立;對(duì)于接收端而言,當(dāng)它成功的發(fā)送出應(yīng)答連接請(qǐng)求消息之后,就認(rèn)為連接已經(jīng)建立;若接收端查看了請(qǐng)求發(fā)送消息,并且決定不建立連接,接收端就需要發(fā)送一個(gè)連接中止消息,這使得發(fā)送端不需要等待一個(gè)超時(shí),就可以在第一時(shí)間放棄這個(gè)連接企圖,去請(qǐng)求其他連接;當(dāng)接收端收到了全部期待的數(shù)據(jù),它需要發(fā)送一個(gè)連接結(jié)束請(qǐng)求消息,來表明接收端已經(jīng)成功接收到全部的應(yīng)用數(shù)據(jù),發(fā)送端收到連接結(jié)束請(qǐng)求消息后,即認(rèn)為數(shù)據(jù)傳輸已經(jīng)成功結(jié)束,本次連接過程結(jié)束。
7.根據(jù)權(quán)利要求4所述的一種應(yīng)用于大量數(shù)據(jù)基于連接的CAN總線的通信協(xié)議,其特征在于,所述的廣播連接管理包括發(fā)送廣播請(qǐng)求和發(fā)送應(yīng)用數(shù)據(jù);網(wǎng)絡(luò)中的其他節(jié)點(diǎn)收到廣播請(qǐng)求之后,無需應(yīng)答,發(fā)送端隨即開始向接收端發(fā)送應(yīng)用數(shù)據(jù),數(shù)據(jù)發(fā)送完畢之后也無需發(fā)送連接結(jié)束請(qǐng)求,數(shù)據(jù)發(fā)送過程中,發(fā)生錯(cuò)誤也無需發(fā)送連接中止請(qǐng)求。
8.根據(jù)權(quán)利要求4所述的一種應(yīng)用于大量數(shù)據(jù)基于連接的CAN總線的通信協(xié)議,其特征在于,所述的數(shù)據(jù)傳輸管理包括發(fā)送應(yīng)用數(shù)據(jù)和接收應(yīng)用數(shù)據(jù)。
9.根據(jù)權(quán)利要求8所述的一種應(yīng)用于大量數(shù)據(jù)基于連接的CAN總線的通信協(xié)議,其特征在于,所述的數(shù)據(jù)傳輸管理實(shí)現(xiàn)過程如下發(fā)送端企圖發(fā)送大于8字節(jié)的數(shù)據(jù)給接收端,首先需要發(fā)送一個(gè)建立連接請(qǐng)求,接收端在接收到建立連接請(qǐng)求之后,如果決定接收這個(gè)請(qǐng)求,則發(fā)送應(yīng)答連接請(qǐng)求,當(dāng)發(fā)送端接收到應(yīng)答連接請(qǐng)求之后,表示該連接已經(jīng)建立,發(fā)送端可以開始發(fā)送應(yīng)用數(shù)據(jù),接收端開始接收應(yīng)用數(shù)據(jù),當(dāng)接收端收到全部的應(yīng)用數(shù)據(jù)之后,發(fā)送連接結(jié)束請(qǐng)求,當(dāng)發(fā)送端接收到連接結(jié)束請(qǐng)求之后,表示該連接已經(jīng)結(jié)束,發(fā)送端和接收端準(zhǔn)備進(jìn)入下一個(gè)連接的過程;在整個(gè)連接過程之中,如果發(fā)生錯(cuò)誤,發(fā)送端和接收端都可以發(fā)送中止連接請(qǐng)求,對(duì)方節(jié)點(diǎn)接收到中止連接請(qǐng)求之后,表示該連接已經(jīng)被中止。
10.根據(jù)權(quán)利要求8所述的一種應(yīng)用于大量數(shù)據(jù)基于連接的CAN總線的通信協(xié)議,其特征在于,所述的數(shù)據(jù)傳輸管理在一對(duì)一連接管理中,若接收端希望一個(gè)已經(jīng)建立的連接立即停止發(fā)送數(shù)據(jù),它需要發(fā)送一個(gè)應(yīng)答連接請(qǐng)求消息,并且將允許發(fā)送的包個(gè)數(shù)設(shè)為0;若連接需要暫時(shí)停止發(fā)送數(shù)據(jù)幾秒鐘,接收端必須以0.5秒的周期重復(fù)這樣的應(yīng)答連接請(qǐng)求消息,避免使發(fā)送端認(rèn)為連接已經(jīng)中止,應(yīng)答連接消息的其余的位被設(shè)為1。
全文摘要
本發(fā)明涉及一種通信協(xié)議的建模系統(tǒng),旨在提供一種基于模型的面向J1939網(wǎng)絡(luò)的可視化的建模系統(tǒng)。該系統(tǒng)包括步驟如下(1)可視化建模提取J1939網(wǎng)絡(luò)系統(tǒng)的共同特征和接口,以圖形視圖的表示方式對(duì)這些J1939網(wǎng)絡(luò)系統(tǒng)核心特征進(jìn)行建模;(2)離線仿真模擬離線仿真模擬功能包括網(wǎng)絡(luò)初始化地址分配、消息對(duì)象的發(fā)送以及控制器應(yīng)用對(duì)消息的響應(yīng)動(dòng)作的模擬;(3)自動(dòng)代碼生成自動(dòng)代碼生成用于生成配置文件和應(yīng)用程序文件的代碼,完成基于模型的面向J1939網(wǎng)絡(luò)的建模系統(tǒng)的建模。采用本發(fā)明提供的建模系統(tǒng),優(yōu)點(diǎn)如下模型具有通用性、模型具有完整性、模型具有離線仿真模擬功能且節(jié)省了模型的開發(fā)時(shí)間。
文檔編號(hào)H04L12/56GK101014050SQ20071006716
公開日2007年8月8日 申請(qǐng)日期2007年2月2日 優(yōu)先權(quán)日2007年2月2日
發(fā)明者吳朝暉, 郁利吉, 李紅, 周海娟, 高志剛, 趙民德 申請(qǐng)人:浙江大學(xué)