本發(fā)明涉及一種在CAN總線上傳輸IP報文的方法,利用CAN總線網(wǎng)絡(luò)構(gòu)建IP局域網(wǎng)的方法,屬于網(wǎng)絡(luò)與數(shù)據(jù)通訊技術(shù)領(lǐng)域。
背景技術(shù):
CAN總線介紹:
傳統(tǒng)上CAN(Controller Area Network,ISO 11898)網(wǎng)絡(luò)是一種用于局域性實時控制的網(wǎng)絡(luò),在交通工具、智能建筑和工業(yè)現(xiàn)場有較多應(yīng)用,特別在汽車領(lǐng)域目前是行業(yè)標(biāo)準(zhǔn)之一。CAN總線使用一對雙絞線連接多個節(jié)點,任意節(jié)點之間均可進行通訊。
CAN總線上的數(shù)據(jù)幀(CAN Frame)主要包含這些信息:報文ID(Message ID)、數(shù)據(jù)長度字段(DLC,Data Length Code)、數(shù)據(jù)域(Data),其中數(shù)據(jù)域為0到8個字節(jié)。當(dāng)總線空閑時,任意節(jié)點均可發(fā)送數(shù)據(jù)幀,當(dāng)兩個或多個節(jié)點同時發(fā)送數(shù)據(jù)幀時,通過總線上的競爭機制,報文ID最小的數(shù)據(jù)幀優(yōu)先發(fā)送,其余的數(shù)據(jù)幀延遲到總線再次空閑時進行發(fā)送。
在CAN網(wǎng)絡(luò)中不存在節(jié)點“地址”的概念。每個節(jié)點將自身的數(shù)據(jù)發(fā)送到總線上??偩€上的任意節(jié)點均能夠接收到總線上的全部數(shù)據(jù)幀。根據(jù)本節(jié)點的功能需求,每個節(jié)點對這些數(shù)據(jù)幀進行過濾,僅對自身關(guān)心的數(shù)據(jù)幀進行處理。
在CAN網(wǎng)絡(luò)上不同節(jié)點之間的競爭機制,依賴于不同數(shù)據(jù)幀報文ID的差異。因此一個設(shè)計良好的CAN網(wǎng)絡(luò)上,任意兩個節(jié)點不應(yīng)發(fā)出相同報文ID的數(shù)據(jù)幀。CAN網(wǎng)絡(luò)上的報文ID分為11位(標(biāo)準(zhǔn)格式,Standard Format)和29位(擴展格式,Extended Format)兩種格式。在同一個網(wǎng)絡(luò)中,可以同時使用這兩種格式的CAN數(shù)據(jù)幀。
IP局域網(wǎng):
IP(Internet Protocol)局域網(wǎng)(LAN,Local Area Network)是互聯(lián)網(wǎng)的最小網(wǎng)絡(luò)。一般意義上,在一個IP局域網(wǎng)中,所有主機處于相同的網(wǎng)段,互相之間能夠直接進行通訊,而不需要路由器進行轉(zhuǎn)發(fā)。IP局域網(wǎng)的類型有很多種,目前最常見的 是以太網(wǎng)(Ethernet)。由以太網(wǎng)構(gòu)成的IP局域網(wǎng)中,各主機(host)通過以太網(wǎng)線鏈接到中央的交換機(switch)或集線器(hub)。
在IP網(wǎng)絡(luò)中每一個主機的每一個接口必須擁有至少一個IP地址(IP Address)。IP報文中包含有報文的源地址和目的地址,源地址是數(shù)據(jù)的發(fā)送方,目的地址是數(shù)據(jù)的接收方。當(dāng)一個主機需要向另一個主機發(fā)送數(shù)據(jù)時,它必須知曉目的主機的IP地址,也就是IP報文的目的地址。通常IP報文的目的地址是由發(fā)送數(shù)據(jù)的應(yīng)用層程序指定的。
如果IP數(shù)據(jù)的發(fā)送方和接收方不在同一個局域網(wǎng)內(nèi),中間應(yīng)該有一個或多個路由器負責(zé)進行報文的轉(zhuǎn)發(fā)。路由器是一類特殊的主機,有兩個或更多的接口,可在不同接口之間轉(zhuǎn)發(fā)IP報文。每個路由器上存在一個路由表,根據(jù)報文的目的地址,在路由表中查找這個報文的發(fā)送接口和下一跳主機的IP地址。
主機的以太網(wǎng)接口還必須擁有自己的物理地址(MAC Address,Media Access Control)。當(dāng)IP報文經(jīng)過以太網(wǎng)傳輸時,通過ARP(Address Resolution Protocol)協(xié)議查找出IP報文下一跳的IP地址所對應(yīng)主機的物理地址。在發(fā)送數(shù)據(jù)時,目的物理地址會附帶在報文之前。報文以定向(使用交換機)或廣播(使用集線器)的方式發(fā)送出去,接收方只接收目的物理地址與自身物理地址匹配的報文,其他報文被丟棄。
以太網(wǎng)的數(shù)據(jù)幀中還包含報文發(fā)送方的物理地址,稱為源物理地址。報文的目的物理地址和源物理地址同時參與網(wǎng)絡(luò)競爭,由于每臺主機的物理地址都不相同,因此即使多臺主機同時發(fā)送目的物理地址相同的報文,網(wǎng)絡(luò)競爭機制也能夠順利達成。
隨著現(xiàn)代汽車技術(shù)、電子技術(shù)和網(wǎng)絡(luò)技術(shù)的發(fā)展,汽車上已經(jīng)出現(xiàn)了能夠通過無線通訊鏈接到互聯(lián)網(wǎng)的裝置,如果能夠?qū)⑵嚿系钠渌刂破饕策B接到互聯(lián)網(wǎng),將會極大的拓展整車的智能化和網(wǎng)絡(luò)化水平。
但是一般的(商業(yè)或消費級)以太網(wǎng)和工業(yè)以太網(wǎng)均無法滿足整車使用條件下的環(huán)境和可靠性要求,而滿足汽車相關(guān)法規(guī)和標(biāo)準(zhǔn)的以太網(wǎng)成本仍居高不下,在汽車行業(yè)內(nèi)的應(yīng)用經(jīng)驗極為欠缺,導(dǎo)致車載以太網(wǎng)只能應(yīng)用在少數(shù)高端豪華的轎車上。
技術(shù)實現(xiàn)要素:
本發(fā)明提供一種在CAN總線上傳輸IP報文的方法及利用CAN總線網(wǎng)絡(luò)構(gòu)建 的IP局域網(wǎng),其利用車上現(xiàn)有的CAN總線網(wǎng)絡(luò)來構(gòu)成一個IP局域網(wǎng),在維持硬件成本不變的前提下,給CAN網(wǎng)絡(luò)節(jié)點提供互聯(lián)網(wǎng)連接的能力。
本發(fā)明內(nèi)容涉及IP報文的傳輸。本發(fā)明解決了在現(xiàn)有CAN網(wǎng)絡(luò)上傳輸IP報文的問題,賦予車內(nèi)CAN網(wǎng)絡(luò)節(jié)點訪問互聯(lián)網(wǎng)的能力。
本發(fā)明的技術(shù)方案為:
一種在CAN總線上傳輸IP報文的方法,基于ISO 15765-2的協(xié)議在CAN總線上傳輸IP報文,采用如下方法:
a)為實現(xiàn)利用CAN總線網(wǎng)絡(luò)進行IP通訊,為參與通訊的各方分配至少一個物理地址;
b)各主機使用ISO 15765-2所定義的方法來傳輸IP報文,通訊時所使用的CAN數(shù)據(jù)幀報文ID由局域網(wǎng)描述字加上通訊雙方的物理地址組成;
c)每個參與通訊的節(jié)點建立一個從目標(biāo)IP地址到物理地址的轉(zhuǎn)換表。
進一步地,為每一個需要加入IP局域網(wǎng)的CAN總線節(jié)點分配物理地址的方法為:
a)物理地址是一串固定長度的二進制編碼;
b)物理地址長度小于所使用的CAN數(shù)據(jù)幀報文ID長度的一半,即如果使用標(biāo)準(zhǔn)格式CAN數(shù)據(jù)幀來傳輸IP報文,物理地址長度最長為5;如果是使用擴展格式CAN數(shù)據(jù)幀來傳輸IP報文,物理地址長度最長為14;
c)物理地址長度最小為2;
d)每個節(jié)點可選擇的物理地址取值范圍為十進制的0至2n-2,n為物理地址長度;
e)十進制的2n-1,n為物理地址長度,也就是二進制的全1,不應(yīng)分配給任意節(jié)點,這個數(shù)值保留用于未來的其他用途;
f)當(dāng)一組CAN節(jié)點被分配至同一IP局域網(wǎng)時,它們的物理地址長度應(yīng)相同,任意兩個節(jié)點之間的物理地址取值均應(yīng)不同;
g)每一個CAN節(jié)點可以擁有多個物理地址,這些物理地址可用于加入一個IP局域網(wǎng)或多個IP局域網(wǎng),加入同一個IP局域網(wǎng)的多個物理地址長度相同,且取值不同。
進一步地,所述的物理地址長度符合:如果使用標(biāo)準(zhǔn)格式CAN數(shù)據(jù)幀,即使用報文ID長度為11位的CAN數(shù)據(jù)幀,來傳輸IP報文,則物理地址長度最長為5; 如果是使用擴展格式CAN數(shù)據(jù)幀,即報文ID長度為29位的CAN數(shù)據(jù)幀,來傳輸IP報文,物理地址長度最長為14。
進一步地,利用ISO 15765-2所規(guī)定之協(xié)議,在CAN總線上傳輸IP報文:
a)在IP協(xié)議棧中增加一個鏈路層接口,當(dāng)IP層通過此接口收發(fā)IP報文時,IP報文通過ISO 15765-2所規(guī)定的協(xié)議在CAN總線上傳輸;
b)當(dāng)通過ISO 15765-2所規(guī)定的協(xié)議在CAN總線上傳輸IP報文時,所使用的CAN數(shù)據(jù)幀ID由局域網(wǎng)描述字和收發(fā)雙方的物理地址組成;
進一步地,為每一個加入IP局域網(wǎng)的CAN節(jié)點建立一個從目標(biāo)IP地址到物理地址的轉(zhuǎn)換表,該轉(zhuǎn)換表中包含了所有IP局域網(wǎng)中其他節(jié)點的IP地址與物理地址的對應(yīng)關(guān)系。
進一步地,報文接收過程為:某個節(jié)點接收到一個CAN數(shù)據(jù)幀后,應(yīng)首先判斷報文ID中的局域網(wǎng)描述字是否與自身所處的局域網(wǎng)相同,并且目的物理地址是否等于自身的物理地址;如果局域網(wǎng)描述字和目的物理地址均與本節(jié)點相符,應(yīng)將該CAN數(shù)據(jù)幀視為承載IP報文的TP協(xié)議報文并送入TP協(xié)議處理,經(jīng)過TP協(xié)議接收到所有后續(xù)幀之后,TP協(xié)議將組裝好的IP報文通過IP層的收到IP報文接口上送到IP層。
一種利用CAN總線網(wǎng)絡(luò)構(gòu)建的IP局域網(wǎng),各主機使用ISO 15765-2所定義的方法來傳輸IP報文,采用以下傳輸方法:
S1:為參與通訊的各方分配至少一個物理地址;每個參與通訊的節(jié)點建立一個從目標(biāo)IP地址到物理地址的轉(zhuǎn)換表;
S2:通訊時所使用的CAN數(shù)據(jù)幀報文ID由局域網(wǎng)描述字加上數(shù)據(jù)傳輸?shù)哪康牡匚锢淼刂芬约皵?shù)據(jù)傳輸?shù)脑次锢淼刂方M成。
進一步地,為每一個需要加入IP局域網(wǎng)的CAN總線節(jié)點分配物理地址的方法為:
a)物理地址是一串固定長度的二進制編碼;
b)物理地址長度小于所使用的CAN數(shù)據(jù)幀報文ID長度的一半,即如果使用標(biāo)準(zhǔn)格式CAN數(shù)據(jù)幀來傳輸IP報文,物理地址長度最長為5;如果是使用擴展格式CAN數(shù)據(jù)幀來傳輸IP報文,物理地址長度最長為14;
c)物理地址長度最小為2;
d)每個節(jié)點可選擇的物理地址取值范圍為十進制的0至2n-2,n為物理地址長 度;
e)十進制的2n-1,n為物理地址長度,也就是二進制的全1,不應(yīng)分配給任意節(jié)點,這個數(shù)值保留用于未來的其他用途;
f)當(dāng)一組CAN節(jié)點被分配至同一IP局域網(wǎng)時,它們的物理地址長度應(yīng)相同,任意兩個節(jié)點之間的物理地址取值均應(yīng)不同;
g)每一個CAN節(jié)點可以擁有多個物理地址,這些物理地址可用于加入一個IP局域網(wǎng)或多個IP局域網(wǎng),加入同一個IP局域網(wǎng)的多個物理地址長度相同,且取值不同。
進一步地,報文接收過程為:某個節(jié)點接收到一個CAN數(shù)據(jù)幀后,應(yīng)首先判斷報文ID中的局域網(wǎng)描述字是否與自身所處的局域網(wǎng)相同,并且目的物理地址是否等于自身的物理地址;如果局域網(wǎng)描述字和目的物理地址均與本節(jié)點相符,應(yīng)將該CAN數(shù)據(jù)幀視為承載IP報文的TP協(xié)議報文并送入TP協(xié)議處理,經(jīng)過TP協(xié)議接收到所有后續(xù)幀之后,TP協(xié)議將組裝好的IP報文通過IP層的收到IP報文接口上送到IP層。
進一步地,利用ISO 15765-2所規(guī)定之協(xié)議,在CAN總線上傳輸IP報文:
a)在IP協(xié)議棧中增加一個鏈路層接口,當(dāng)IP層通過此接口收發(fā)IP報文時,IP報文通過ISO 15765-2所規(guī)定的協(xié)議在CAN總線上傳輸;
b)當(dāng)通過ISO 15765-2所規(guī)定的協(xié)議在CAN總線上傳輸IP報文時,所使用的CAN數(shù)據(jù)幀ID由局域網(wǎng)描述字和收發(fā)雙方的物理地址組成。
建議當(dāng)局域網(wǎng)中的節(jié)點數(shù)量超過2時,各節(jié)點對ISO 15765-2的實現(xiàn)應(yīng)能夠支持同一時間的多路會話,以便于同時與多個目標(biāo)通訊。
附圖說明
圖1是ISO 15765-2所定義的用多個CAN數(shù)據(jù)幀傳輸一個大數(shù)據(jù)分組的方法;
圖2是本發(fā)明應(yīng)用ISO 15765-2所定義的協(xié)議傳輸IP報文時確定標(biāo)準(zhǔn)格式CAN數(shù)據(jù)幀報文ID的示意圖;
圖3是本發(fā)明應(yīng)用ISO 15765-2所定義的協(xié)議傳輸IP報文時確定擴展格式CAN數(shù)據(jù)幀報文ID的示意圖;
圖4是本發(fā)明所描述的內(nèi)容在IP協(xié)議棧中的位置;
圖5是本發(fā)明的利用CAN總線網(wǎng)絡(luò)構(gòu)建的IP局域網(wǎng)的步驟圖。
具體實施方式
現(xiàn)結(jié)合附圖及具體實施例對本發(fā)明作進一步地說明:
地址分配:
當(dāng)一個CAN總線上的節(jié)點加入到IP局域網(wǎng)時,除了其自身必須擁有一個IP地址外,還必須給它分配一個物理地址。
一個物理地址是一串二進制編碼,其長度小于CAN數(shù)據(jù)幀報文ID長度的一半。當(dāng)使用標(biāo)準(zhǔn)格式(11位報文ID)CAN數(shù)據(jù)幀傳輸IP報文時,物理地址最長為5位;當(dāng)使用擴展格式(29位報文ID)CAN數(shù)據(jù)幀傳輸IP報文時,物理地址最長為14位。無論使用何種CAN數(shù)據(jù)幀格式,物理地址的最小長度為2位。當(dāng)一個節(jié)點的物理地址長度為n位時,可使用0到2n-2(10進制,n為物理地址長度)作為它的物理地址。2n-1(2進制的全1,n為物理地址長度)作為一個特殊的物理地址,不應(yīng)當(dāng)分配給任意一個節(jié)點。
在一個CAN網(wǎng)絡(luò)中,可以組成多個IP局域網(wǎng)。在同一個IP局域網(wǎng)中,必須使用相同格式的CAN數(shù)據(jù)幀來傳輸IP報文。即,要么所有節(jié)點都使用標(biāo)準(zhǔn)格式CAN數(shù)據(jù)幀,要么所有節(jié)點都使用擴展格式CAN數(shù)據(jù)幀。此外同一個IP局域網(wǎng)中的所有節(jié)點必須使用相同長度的物理地址,同一個IP局域網(wǎng)中的任意兩個節(jié)點物理地址均不相同。
TP協(xié)議與CAN數(shù)據(jù)幀的報文ID定義:
ISO 15765-2定義了一種使用多個CAN數(shù)據(jù)幀來傳輸一個較大數(shù)據(jù)分組的方法,簡稱為TP協(xié)議。用這個方法可將最大4095字節(jié)的數(shù)據(jù)從一個CAN節(jié)點傳輸?shù)搅硪粋€節(jié)點。TP協(xié)議的通訊過程大致如圖1所示,更詳細的內(nèi)容請參考該標(biāo)準(zhǔn)的原始文件。
TP協(xié)議所定義的傳輸方式必須為通訊的雙方定義一對CAN數(shù)據(jù)幀的報文ID,即報文ID為x的CAN數(shù)據(jù)幀和報文ID為y的CAN數(shù)據(jù)幀。通訊雙方中的一方發(fā)送報文ID為x的CAN數(shù)據(jù)幀并接收報文ID為y的CAN數(shù)據(jù)幀,另一方發(fā)送報文ID為y的CAN數(shù)據(jù)幀并接收報文ID為x的CAN數(shù)據(jù)幀。
前文所述,每個CAN節(jié)點都已經(jīng)擁有了一個物理地址,當(dāng)應(yīng)用TP協(xié)議來傳輸IP報文時,通訊雙方使用局域網(wǎng)描述字和物理地址來組成CAN數(shù)據(jù)幀的報文ID:
TP協(xié)議發(fā)送的CAN數(shù)據(jù)幀報文ID=局域網(wǎng)描述字+目的物理地址+源物理地址
如圖2所示,假設(shè)節(jié)點A的物理地址為m,節(jié)點B的物理地址為n。那么節(jié)點A和節(jié)點B通訊時的報文ID定義為:
A發(fā)往B的CAN數(shù)據(jù)幀報文ID:x=局域網(wǎng)描述字+n+m
B發(fā)往A的CAN數(shù)據(jù)幀報文ID:y=局域網(wǎng)描述字+m+n
局域網(wǎng)描述字由具體的實現(xiàn)者定義,用于將傳輸IP報文的CAN數(shù)據(jù)幀與其他CAN數(shù)據(jù)幀區(qū)分開,并標(biāo)明所屬的IP局域網(wǎng)。在同一個IP局域網(wǎng)中的節(jié)點使用相同的局域網(wǎng)描述字。在同一個CAN網(wǎng)絡(luò)中可以定義多個局域網(wǎng)描述字,這樣可在單一CAN網(wǎng)絡(luò)中建立多個IP局域網(wǎng)。同樣的,一個CAN網(wǎng)絡(luò)節(jié)點可使用多個不同局域網(wǎng)描述字來加入多個不同的IP局域網(wǎng),此時該CAN網(wǎng)絡(luò)節(jié)點應(yīng)視為具有多個IP接口。
報文發(fā)送過程:
如圖3,本發(fā)明所描述的方法為IP協(xié)議棧增加了一種新的鏈路層協(xié)議。該鏈路層實際上是用TP協(xié)議來將IP報文拆分成多個CAN數(shù)據(jù)幀,這些CAN數(shù)據(jù)幀的報文ID按照前文描述的方式設(shè)定。這種新的鏈路層在IP協(xié)議棧中表現(xiàn)為一個鏈路層接口。
IP層在發(fā)送IP報文時,根據(jù)報文中的目的地址在路由表中查找該報文的發(fā)送接口和下一跳IP地址。當(dāng)發(fā)送接口為本發(fā)明所定義的接口時,按照前文所定義的規(guī)則設(shè)定CAN數(shù)據(jù)幀的報文ID。此處應(yīng)建立一個地址轉(zhuǎn)換表,用于將下一跳IP地址轉(zhuǎn)換為其對應(yīng)的目的物理地址,并以此作為將要發(fā)送的CAN數(shù)據(jù)幀的目的物理地址,而本節(jié)點的物理地址作為源物理地址,再加上預(yù)定義的局域網(wǎng)描述字,就可組成完整的CAN數(shù)據(jù)幀ID。之后可通過更底層的CAN驅(qū)動程序?qū)?shù)據(jù)幀發(fā)送出去。
這里描述的“地址轉(zhuǎn)換表”指的是建立一種從IP地址到物理地址的對應(yīng)關(guān)系,在實現(xiàn)時可能不是以“表格”的形式,而是以其他數(shù)據(jù)結(jié)構(gòu)或過程調(diào)用的形式存在。這個地址轉(zhuǎn)換表在設(shè)計上應(yīng)保證能夠盡快的用IP地址找到對應(yīng)的物理地址。
在某些IP協(xié)議棧的實現(xiàn)中,要求鏈路層必須將發(fā)送狀態(tài)上報。在這種情況下,應(yīng)當(dāng)將發(fā)送成功或發(fā)送失敗的信息上報給IP層。判斷發(fā)送成功或失敗的方法在ISO15765-2中有定義。
如果在TP層正在發(fā)送一幀IP報文期間,IP層再次發(fā)送另一幀IP報文,分為兩種情況:
a.如果新的報文和當(dāng)前正在發(fā)送報文的下一跳相同(也就是目的物理地址相 同),此時可以有兩種選擇:將新的報文直接丟棄(并上報發(fā)送失敗,如果需要),或者將新的報文在隊列中緩存,等當(dāng)前報文發(fā)送成功后再發(fā)送新報文;
b.如果新的報文和當(dāng)前正在發(fā)送報文的下一跳不同,此時可以有三種選擇:1.將新的報文直接丟棄(并上報發(fā)送失敗,如果需要);2.將新的報文在隊列中緩存,等當(dāng)前報文發(fā)送成功后再發(fā)送新報文;3.可直接啟動一個新的TP會話來發(fā)送新的IP報文,在這種情況下,TP協(xié)議必須支持同一時刻的多路會話。
報文接收過程:
某個節(jié)點接收到一個CAN數(shù)據(jù)幀后,應(yīng)首先判斷報文ID中的局域網(wǎng)描述字是否與自身所處的局域網(wǎng)相同,并且目的物理地址是否等于自身的物理地址。如果局域網(wǎng)描述字和目的物理地址均與本節(jié)點相符,應(yīng)將該CAN數(shù)據(jù)幀視為承載IP報文的TP協(xié)議報文。并送入TP協(xié)議處理。經(jīng)過TP協(xié)議接收到所有后續(xù)幀(ConsecutiveFrame,見ISO15765-2)之后,TP協(xié)議將組裝好的IP報文通過IP層的“收到IP報文”接口上送到IP層。
TP協(xié)議的實現(xiàn)應(yīng)當(dāng)允許雙工通訊,即可以分別同時發(fā)送和接收不同的IP報文。
由上述報文的發(fā)送和接收過程可知,在一個CAN網(wǎng)絡(luò)中,如果有超過2個節(jié)點需要組成IP局域網(wǎng),那么用于承載IP報文的TP協(xié)議應(yīng)當(dāng)支持同一時刻的多路會話功能,即可以同時與多個通訊目標(biāo)進行通訊。有關(guān)TP協(xié)議支持同一時刻的多路會話的內(nèi)容在ISO 15765-2中有詳細定義。
最后應(yīng)當(dāng)說明的是:以上實施例僅用以說明本案的技術(shù)方案而非對其限制;盡管參照較佳實施例對本案進行了詳細的說明,所屬領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:依然可以對本案的具體實施方式進行修改或者對部分技術(shù)特征進行等同替換;而不脫離本案技術(shù)方案的精神,其均應(yīng)涵蓋在本案請求保護的技術(shù)方案范圍當(dāng)中。