專利名稱:一種支持虛連接的基于can總線和以太網(wǎng)實(shí)時(shí)嵌入式網(wǎng)關(guān)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種網(wǎng)關(guān),特別是一種支持虛連接的基于CAN總線和以太網(wǎng)實(shí)時(shí)嵌入式網(wǎng)關(guān),屬于工業(yè)控制領(lǐng)域。
背景技術(shù):
以太網(wǎng)(Ethernet)從其誕生至今30年的時(shí)間里,以其簡易,高速,易擴(kuò)展等優(yōu)良特性成為了局域網(wǎng)(LAN)的主導(dǎo)技術(shù)。隨著應(yīng)用和需求的更新,以太網(wǎng)的適用領(lǐng)域也不斷擴(kuò)大。特別的,以太網(wǎng)在工業(yè)領(lǐng)域的應(yīng)用早在IEEE對(duì)以太網(wǎng)進(jìn)行標(biāo)準(zhǔn)化的階段就已經(jīng)被一些經(jīng)銷商(如西門子公司)提出,而今已成為當(dāng)前研究關(guān)注的焦點(diǎn)。相對(duì)于傳統(tǒng)工業(yè)領(lǐng)域中占主導(dǎo)地位的傳輸技術(shù)一現(xiàn)場總線(Field Bus)而言,以太網(wǎng)具備帶寬高,拓展容易,組網(wǎng)靈活等優(yōu)勢,但同樣存在非可靠,非實(shí)時(shí),流量不規(guī)整等與工業(yè)應(yīng)用需求相違背的劣勢。雖然以太網(wǎng)代替現(xiàn)場總線是不可避免的趨勢,但就當(dāng)前環(huán)境而言,以太網(wǎng)完全代替現(xiàn)場總線的方案尚未成熟。而如何將以太網(wǎng)的優(yōu)勢特性引入工業(yè)領(lǐng)域,特別是工業(yè)測量領(lǐng)域,同時(shí)又保證其高實(shí)時(shí)高可靠的傳輸是需要解決的主要問題。CAN總線,作為主流的現(xiàn)場總線之一,具備多主傳輸,高實(shí)時(shí)高可靠,數(shù)據(jù)編址和裝配便捷等諸多特性。其應(yīng)用范圍包括飛行器航電系統(tǒng)通信,汽車電子設(shè)備通信和工業(yè)測量等相關(guān)領(lǐng)域。將以太網(wǎng)引入工業(yè)領(lǐng)域需解決高可靠高實(shí)時(shí)等系列問題,而CAN總線恰恰具備相應(yīng)特性,加之工業(yè)測量領(lǐng)域用到的測量交換設(shè)備多為嵌入式設(shè)備,故以太網(wǎng)與CAN總線“雙網(wǎng)結(jié)合”的嵌入式通信網(wǎng)絡(luò)架構(gòu)逐漸成為工業(yè)以太網(wǎng)實(shí)時(shí)傳輸?shù)闹髁鹘鉀Q方案。由于當(dāng)前CAN-Ethernet架構(gòu)僅僅將CAN總線和以太網(wǎng)的自身特性相融合,并沒有從傳輸機(jī)制上保證高實(shí)時(shí)高可靠的網(wǎng)絡(luò)傳輸,因此仍然面臨實(shí)時(shí)性、穩(wěn)定性不佳等諸多問題,典型的例子是大流量數(shù)據(jù)造成的實(shí)時(shí)性降低甚至丟幀??梢?,CAN-Ethernet網(wǎng)關(guān)的性能仍具備大幅度提升的空間。
發(fā)明內(nèi)容
本發(fā)明的技術(shù)解決問題針對(duì)當(dāng)前CAN-Ethernet架構(gòu)存在的問題,提供一種支持虛連接的基于CAN總線和以太網(wǎng)實(shí)時(shí)嵌入式網(wǎng)關(guān),實(shí)現(xiàn)集群式的支持虛連接的實(shí)時(shí)嵌入式網(wǎng)關(guān),以解決較大規(guī)模數(shù)據(jù)的實(shí)時(shí)可靠傳輸問題;并在此基礎(chǔ)上加入優(yōu)先級(jí)調(diào)度等系統(tǒng)優(yōu)化功能。本發(fā)明的技術(shù)解決方案一種支持虛連接的基于CAN總線和以太網(wǎng)實(shí)時(shí)嵌入式網(wǎng)關(guān),其特征在于所述網(wǎng)關(guān)由多塊具備CAN總線物理接口和以太網(wǎng)物理接口的嵌入式開發(fā)板組成硬件平臺(tái);各塊開發(fā)板均接入網(wǎng)關(guān)本地意義的CAN總線網(wǎng)絡(luò),并通過CAN總線進(jìn)行數(shù)據(jù)交互,各開發(fā)板同時(shí)以以太網(wǎng)接口的形式連接另一個(gè)網(wǎng)關(guān)或者工控領(lǐng)域的現(xiàn)場設(shè)施;每塊開發(fā)板均具有支撐模塊和虛連接模塊,具備獨(dú)立的計(jì)算單元和存儲(chǔ)單元,并通過本地CAN 網(wǎng)絡(luò)構(gòu)成虛連接集群系統(tǒng),以協(xié)作的形式共同完成幀格式轉(zhuǎn)換,數(shù)據(jù)解析封裝,虛連接收發(fā)各項(xiàng)功能;其中
支撐模塊包含嵌入式實(shí)時(shí)操作系統(tǒng)μ c-OS II、TCP/IP協(xié)議棧LWIP、CAN總線驅(qū)動(dòng)程序和以太網(wǎng)驅(qū)動(dòng)程序,μ c-OS II為各個(gè)軟件模塊提供必要的編程接口;LWIP提供對(duì)以太網(wǎng)IP數(shù)據(jù)包的支持。CAN總線驅(qū)動(dòng)程序和以太網(wǎng)驅(qū)動(dòng)程序則負(fù)責(zé)配置CAN模塊和以太網(wǎng)模塊,以便接收實(shí)際的比特流。虛連接模塊由虛連接協(xié)議子模塊和虛連接狀態(tài)偵測子模塊組成;虛連接協(xié)議子模塊完成數(shù)據(jù)包的虛連接轉(zhuǎn)發(fā)工作,它包括虛連接表初始化程序, 虛連接CAN協(xié)議接口程序、虛連接LWIP接口程序及虛連接轉(zhuǎn)發(fā)程序;虛連接表初始化程序根據(jù)全網(wǎng)絡(luò)或局部網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu),在內(nèi)存建立虛連接表,虛連接表的表項(xiàng)結(jié)構(gòu)為七元組, 包括入IP地址,入端口號(hào),入標(biāo)簽號(hào),出IP地址,出端口號(hào),出標(biāo)簽號(hào)和重映射號(hào);虛連接 CAN協(xié)議接口程序負(fù)責(zé)建立虛連接與CAN協(xié)議之間的數(shù)據(jù)通道,虛連接LWIP接口程序負(fù)責(zé)建立虛連接與LWIP之間的數(shù)據(jù)通道,使得虛連接協(xié)議可訪問此兩者的數(shù)據(jù)包;虛連接轉(zhuǎn)發(fā)程序接收來自虛連接LWIP接口程序和虛連接CAN協(xié)議接口程序已完成解析的數(shù)據(jù)包,然后根據(jù)虛連接表對(duì)數(shù)據(jù)包執(zhí)行丟棄或者轉(zhuǎn)發(fā)操作,且轉(zhuǎn)發(fā)時(shí)按數(shù)據(jù)包實(shí)時(shí)性的高低對(duì)其進(jìn)行先后發(fā)送,以確保網(wǎng)絡(luò)資源的最優(yōu)利用;虛連接狀態(tài)偵測模塊包含狀態(tài)更新程序和虛連接狀態(tài)偵測線程;狀態(tài)更新程序用于定期更新網(wǎng)關(guān)內(nèi)其他開發(fā)板的鏈路狀態(tài)信息,對(duì)虛連接表進(jìn)行維護(hù);虛連接狀態(tài)偵測線程負(fù)責(zé)定時(shí)檢查其他開發(fā)板的鏈路狀態(tài)信息以及定時(shí)發(fā)送自身的鏈路狀態(tài)信息,以便及時(shí)發(fā)現(xiàn)失效鏈路,并采取補(bǔ)救措施進(jìn)行鏈路重映射;工作過程輸入數(shù)據(jù)流可來自以太網(wǎng)數(shù)據(jù)或CAN總線,輸入數(shù)據(jù)流經(jīng)過硬件平臺(tái)的CAN總線物理接口或以太網(wǎng)物理接口進(jìn)入支撐模塊,由CAN總線驅(qū)動(dòng)程序或以太網(wǎng)驅(qū)動(dòng)程序驅(qū)動(dòng)進(jìn)入虛連接模塊的虛連接LWIP接口程序或虛連接CAN協(xié)議接口程序,虛連接LWIP 接口程序包含LWIP輸入接口程序和LWIP輸出接口程序。LffIP輸入接口程序接收來自以太網(wǎng)的IPV4數(shù)據(jù)包,并對(duì)此數(shù)據(jù)包的虛連接頭部進(jìn)行解析,之后將數(shù)據(jù)字段和虛連接頭部交付虛連接轉(zhuǎn)發(fā)程序進(jìn)行處理。LWIP輸出接口程序?qū)⑻撨B接轉(zhuǎn)發(fā)程序處理完畢的數(shù)據(jù)包進(jìn)行虛連接頭部封裝,完成后將其在以太網(wǎng)進(jìn)行發(fā)送。 虛連接CAN協(xié)議接口程序包含CAN接收程序和CAN發(fā)送程序。CAN接收程序?qū)AN 接收郵箱收到的數(shù)據(jù)包搬運(yùn)到內(nèi)存緩存中,并對(duì)數(shù)據(jù)包進(jìn)行虛連接頭部解析,之后將數(shù)據(jù)字段和虛連接頭部交付虛連接轉(zhuǎn)發(fā)程序進(jìn)行處理。CAN發(fā)送程序?qū)⑻撨B接轉(zhuǎn)發(fā)程序處理完畢的數(shù)據(jù)包進(jìn)行虛連接頭部封裝,完成后將其在CAN總線進(jìn)行發(fā)送。
虛連接轉(zhuǎn)發(fā)程序接收來自虛連接LWIP接口程序或虛連接CAN協(xié)議接口程序已完成解析的數(shù)據(jù)包,然后根據(jù)虛連接表對(duì)數(shù)據(jù)包執(zhí)行丟棄或者轉(zhuǎn)發(fā)操作,且轉(zhuǎn)發(fā)時(shí)按數(shù)據(jù)包實(shí)時(shí)性的高低對(duì)其進(jìn)行先后發(fā)送,發(fā)送時(shí)若為CAN總線數(shù)據(jù)則經(jīng)虛連接CAN協(xié)議接口程序封裝發(fā)送,若為以太網(wǎng)數(shù)據(jù)則通過虛連接LWIP接口程序封裝發(fā)送。從數(shù)據(jù)流向看,CAN總線輸入數(shù)據(jù)流進(jìn)入虛連接模塊后,輸出數(shù)據(jù)流可為CAN輸出數(shù)據(jù)流或者以太網(wǎng)輸出數(shù)據(jù)流; 而以太網(wǎng)輸入數(shù)據(jù)流進(jìn)入虛連接模塊后,輸出數(shù)據(jù)流應(yīng)為CAN輸出數(shù)據(jù)流;在數(shù)據(jù)轉(zhuǎn)發(fā)過程中,狀態(tài)更新程序每隔一定時(shí)間接收網(wǎng)關(guān)中其它開發(fā)板發(fā)來的鏈路狀態(tài)信息,更新鏈路狀態(tài)信息,對(duì)虛連接表進(jìn)行維護(hù);虛連接狀態(tài)偵測線程在虛連接表的工作完成后,負(fù)責(zé)定時(shí)檢查其他開發(fā)板的鏈路狀態(tài)信息以及定時(shí)發(fā)送自身的鏈路狀態(tài)信息,以便及使發(fā)現(xiàn)失效鏈路,并進(jìn)行鏈路重映射。
5
本發(fā)明與現(xiàn)有技術(shù)相比具有的有益效果在于(1)當(dāng)前CAN總線和以太網(wǎng)間的網(wǎng)關(guān)系統(tǒng)實(shí)現(xiàn)了雙網(wǎng)通信,在一定程度上融合了 CAN和Khernet的優(yōu)勢特性,但僅憑CAN總線自身特性來提高以太網(wǎng)實(shí)時(shí)性,或僅憑以太網(wǎng)高吞吐量來提高CAN總線帶寬會(huì)使得系統(tǒng)性能的提升空間受到制約,典型的問題包括突發(fā)大流量導(dǎo)致緩存溢出、丟幀;無法提供對(duì)不同優(yōu)先級(jí)數(shù)據(jù)和實(shí)時(shí)應(yīng)用的支持;網(wǎng)絡(luò)負(fù)載不均衡等;本發(fā)明創(chuàng)造性的將虛連接(所述虛連接是指通信雙方的電路在用戶看來是由獨(dú)立節(jié)點(diǎn)臨時(shí)且動(dòng)態(tài)連接的虛電路)引入網(wǎng)關(guān)上,保障了數(shù)據(jù)的高實(shí)時(shí)高可靠傳輸,解決了目前網(wǎng)關(guān)實(shí)時(shí)性可靠性無法提高的瓶頸問題。(2)本發(fā)明利用CAN總線數(shù)據(jù)編址和多主模式的優(yōu)勢特性,可在虛連接鏈路失效時(shí)進(jìn)行迅速重構(gòu)。網(wǎng)關(guān)憑借多塊具備獨(dú)立計(jì)算能力和存儲(chǔ)空間的開發(fā)板組成支持虛連接的集群系統(tǒng),集群系統(tǒng)內(nèi)各塊開發(fā)板共同協(xié)作完成數(shù)據(jù)包的虛連接交換,不僅提高了數(shù)據(jù)緩存能力,而且大大減小了數(shù)據(jù)轉(zhuǎn)發(fā)時(shí)延。(3)本發(fā)明網(wǎng)關(guān)加入了轉(zhuǎn)發(fā)調(diào)度功能,可對(duì)不同實(shí)時(shí)性要求的數(shù)據(jù)區(qū)別處理,實(shí)現(xiàn)了網(wǎng)絡(luò)資源的優(yōu)化利用。并且,由于網(wǎng)關(guān)內(nèi)部結(jié)構(gòu)可變,故支持更加靈活的網(wǎng)絡(luò)配置??傊?,使用本發(fā)明所提出的實(shí)時(shí)嵌入式網(wǎng)關(guān),可在多種工業(yè)環(huán)境,特別是數(shù)據(jù)采集傳輸相關(guān)的工控領(lǐng)域?qū)崿F(xiàn)較大規(guī)模數(shù)據(jù)的實(shí)時(shí)可靠傳輸;同時(shí)具備流量整形和動(dòng)態(tài)優(yōu)先級(jí)調(diào)度能力;同時(shí)整合了 CAN總線和以太網(wǎng)的優(yōu)勢特性,具備配置靈活,適應(yīng)性高,擴(kuò)展性好, 能耗小等諸多優(yōu)點(diǎn),適用于較大規(guī)模的數(shù)據(jù)采集傳輸系統(tǒng)。
圖1為本發(fā)明的網(wǎng)關(guān)內(nèi)單塊開發(fā)板上的軟硬件系統(tǒng)模塊圖;圖2為本發(fā)明的網(wǎng)關(guān)內(nèi)單塊開發(fā)板上的數(shù)據(jù)流圖;圖3為本發(fā)明多個(gè)網(wǎng)關(guān)間的虛連接轉(zhuǎn)發(fā)示意圖;圖4為本發(fā)明網(wǎng)關(guān)虛連接集群示意圖;圖5為本發(fā)明的CAN驅(qū)動(dòng)流程圖;圖6為本發(fā)明的以太網(wǎng)驅(qū)動(dòng)流程圖;圖7為本發(fā)明的接收CAN總線數(shù)據(jù)的中斷處理流程圖;圖8為本發(fā)明的網(wǎng)關(guān)的虛連接協(xié)議模塊處理流程圖;圖9為本發(fā)明的網(wǎng)關(guān)的虛連接狀態(tài)偵測線程工作流程圖。
具體實(shí)施例方式如圖1所示,本發(fā)明支持虛連接的基于CAN總線和以太網(wǎng)實(shí)時(shí)嵌入式網(wǎng)關(guān),包括: 硬件平臺(tái)、基于網(wǎng)關(guān)硬件平臺(tái)的支撐模塊與虛連接模塊,其中網(wǎng)關(guān)的硬件平臺(tái)采用若干塊同時(shí)具備CAN總線物理接口和以太網(wǎng)物理接口的開發(fā)板構(gòu)成;網(wǎng)關(guān)的各塊開發(fā)板均接入網(wǎng)關(guān)本地意義的CAN總線網(wǎng)絡(luò),并通過CAN總線進(jìn)行數(shù)據(jù)交互。各開發(fā)板同時(shí)以以太網(wǎng)接口的形式連接另一個(gè)網(wǎng)關(guān)或者工控領(lǐng)域的現(xiàn)場設(shè)施,如工控機(jī),交換機(jī),處理終端機(jī)等。每塊開發(fā)板均具備獨(dú)立的計(jì)算單元和存儲(chǔ)單元,并通過本地CAN網(wǎng)絡(luò)構(gòu)成虛連接集群系統(tǒng),以協(xié)作的形式共同完成CAN/以太網(wǎng)數(shù)據(jù)格式轉(zhuǎn)換,數(shù)據(jù)包的解析和封裝,虛連接轉(zhuǎn)發(fā)等各項(xiàng)功能。
基于網(wǎng)關(guān)硬件平臺(tái)的支撐模塊網(wǎng)關(guān)的支撐模塊主要包含開源的嵌入式實(shí)時(shí)操作系統(tǒng)μ C-OS II,TCP/IP協(xié)議棧LWIP,以及多個(gè)驅(qū)動(dòng)程序。驅(qū)動(dòng)程序主要包含CAN總線驅(qū)動(dòng),以太網(wǎng)驅(qū)動(dòng)以及指示燈驅(qū)動(dòng)。各驅(qū)動(dòng)完成相應(yīng)的模數(shù)轉(zhuǎn)換功能,并為虛連接模塊提供必要的支撐功能。網(wǎng)關(guān)的虛連接模塊虛連接模塊由虛連接協(xié)議子模塊和虛連接狀態(tài)偵測子模塊組成。其中虛連接協(xié)議模塊完成數(shù)據(jù)包的虛連接轉(zhuǎn)發(fā)工作,而虛連接狀態(tài)偵測模塊負(fù)責(zé)定時(shí)檢查網(wǎng)關(guān)內(nèi)其他開發(fā)板的虛連接狀態(tài)和定時(shí)發(fā)送自身的鏈路狀態(tài)信息,并在鏈路失效的情況下執(zhí)行相應(yīng)的補(bǔ)救措施。網(wǎng)關(guān)硬件平臺(tái)組建實(shí)現(xiàn)步驟如下將若干塊同時(shí)具備CAN模塊和以太網(wǎng)模塊的開發(fā)板重疊,用銅線將各塊開發(fā)板的 CAN模塊連接起來;開發(fā)板的RJ-45接口和另一個(gè)網(wǎng)關(guān)某塊開發(fā)板的RJ-45接口或者現(xiàn)場設(shè)施(工控機(jī),交換機(jī),終端機(jī))的RJ-45接口用雙絞線連接起來。各塊開發(fā)板均以USB接口的形式進(jìn)行供電?;诰W(wǎng)關(guān)硬件平臺(tái)的支撐模塊具體實(shí)現(xiàn)步驟如下(1)對(duì)網(wǎng)關(guān)內(nèi)各塊開發(fā)板移植μ c-OS II操作系統(tǒng)和LWIP協(xié)議棧,按照其官方所給的移植范例進(jìn)行移植,詳細(xì)步驟參閱數(shù)據(jù)手冊(cè)。(2)編寫開發(fā)板的CAN總線驅(qū)動(dòng)程序首先使能CAN模塊的時(shí)鐘信號(hào),并設(shè)置其為普通模式,然后使能中斷功能并在CAN總線成功喚醒后進(jìn)行CAN郵箱的初始化工作本發(fā)明將4個(gè)編號(hào)連續(xù)的CAN郵箱鏈接起來,共同作為物理接收緩存區(qū)。4個(gè)郵箱都被初始化為相同的CAN信息ID,此ID與一般虛連接協(xié)議中的“端口”具備同樣的作用;本發(fā)明將1個(gè)郵箱作為物理發(fā)送緩存區(qū),此郵箱ID的含義為目標(biāo)CAN模塊的信息ID ;本發(fā)明將1個(gè)郵箱作為鏈路狀態(tài)信息接收郵箱,以便更新網(wǎng)關(guān)內(nèi)各塊開發(fā)板的工作狀態(tài)。完成上述郵箱的初始化后,將開啟此6個(gè)郵箱的事件中斷。該驅(qū)動(dòng)主要完成接收和發(fā)送CAN總線物理信號(hào)的功能。(3)編寫開發(fā)板的以太網(wǎng)驅(qū)動(dòng)程序首先使能以太網(wǎng)模塊的時(shí)鐘信號(hào),并按順序完成模式設(shè)置,自協(xié)商,MAC地址設(shè)置等相應(yīng)操作。然后將以太網(wǎng)物理接受緩沖映射到內(nèi)存中。最后在高級(jí)中斷控制器中注冊(cè)以太網(wǎng)模塊驅(qū)動(dòng)的中斷程序,并開啟接受和發(fā)送中斷。(4)編寫開發(fā)板的指示燈驅(qū)動(dòng)程序首先使能指示燈管腳控制器的時(shí)鐘,然后通過對(duì)相應(yīng)管腳的寫1或?qū)?操作來實(shí)現(xiàn)控制器對(duì)指示燈亮滅的控制。網(wǎng)關(guān)的虛連接模塊具體實(shí)現(xiàn)步驟如下(1)虛連接協(xié)議子模塊虛連接協(xié)議模塊包括虛連接表及虛連接表初始化程序, 虛連接CAN協(xié)議接口程序、虛連接LWIP接口程序及虛連接轉(zhuǎn)發(fā)程序。虛連接表初始化程序根據(jù)全網(wǎng)絡(luò)或局部網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu),在內(nèi)存建立虛連接表,其表項(xiàng)為七元組(入IP地址,入端口號(hào),入標(biāo)簽號(hào),出IP地址,出端口號(hào),出標(biāo)簽號(hào),重映射號(hào))。虛連接LWIP接口程序接收來自以太網(wǎng)的IPV4數(shù)據(jù)包,并對(duì)此數(shù)據(jù)包的虛連接頭部進(jìn)行解析,之后將數(shù)據(jù)字段和虛連接頭部交付虛連接轉(zhuǎn)發(fā)程序進(jìn)行處理。同時(shí),虛連接LWIP接口程序負(fù)責(zé)將虛連接轉(zhuǎn)發(fā)程序處理完畢的數(shù)據(jù)包進(jìn)行虛連接頭部封裝,完成后將其在以太網(wǎng)進(jìn)行發(fā)送。虛連接CAN協(xié)議接口程序?qū)AN接收郵箱收到的數(shù)據(jù)包搬運(yùn)到內(nèi)存緩存中,并對(duì)數(shù)據(jù)包進(jìn)行虛連接頭部解析,之后將數(shù)據(jù)字段和虛連接頭部交付虛連接轉(zhuǎn)發(fā)程序進(jìn)行處理。同時(shí),虛連接CAN協(xié)議接口程序負(fù)責(zé)將虛連接轉(zhuǎn)發(fā)程序處理完畢的數(shù)據(jù)包進(jìn)行虛連接頭部封裝,完成后將其在CAN總線進(jìn)行發(fā)送。虛連接轉(zhuǎn)發(fā)程序根據(jù)虛連接表對(duì)數(shù)據(jù)包執(zhí)行丟棄或者轉(zhuǎn)發(fā)操作,且轉(zhuǎn)發(fā)時(shí)按數(shù)據(jù)包實(shí)時(shí)性的高低對(duì)其進(jìn)行先后發(fā)送,以確保網(wǎng)絡(luò)資源的最優(yōu)利用。(2)虛連接狀態(tài)偵測子模塊包含狀態(tài)更新程序和虛連接狀態(tài)偵測線程。狀態(tài)更新程序用于定期更新網(wǎng)關(guān)內(nèi)其他開發(fā)板的鏈路狀態(tài)信息;虛連接狀態(tài)偵測線程負(fù)責(zé)定時(shí)檢查其他開發(fā)板的鏈路狀態(tài)信息以及定時(shí)發(fā)送自身的鏈路狀態(tài)信息,以便即使發(fā)現(xiàn)失效鏈路,并進(jìn)行鏈路重映射。如圖1、2所示,本發(fā)明的工作過程(1)對(duì)網(wǎng)關(guān)的各塊開發(fā)板通過USB接口進(jìn)行供電,同時(shí)按照實(shí)際的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)連接各塊開發(fā)板和相應(yīng)的網(wǎng)絡(luò)設(shè)備;并完成網(wǎng)關(guān)內(nèi)各塊開發(fā)板上虛連接表的初始化工作。(2)啟動(dòng)虛連接狀態(tài)偵測線程和狀態(tài)信息更新程序開始對(duì)虛連接進(jìn)行維護(hù)。然后分三類情況進(jìn)行工作①網(wǎng)關(guān)內(nèi)某塊開發(fā)板的CAN總線驅(qū)動(dòng)程序收到來自CAN物理接口的比特流數(shù)據(jù)接收信號(hào),并通知CAN輸入接口程序完成實(shí)際的數(shù)據(jù)接收。完成后轉(zhuǎn)入步驟 (3)。②網(wǎng)關(guān)內(nèi)某塊開發(fā)板的以太網(wǎng)驅(qū)動(dòng)程序完成來自以太網(wǎng)物理接口的以太網(wǎng)數(shù)據(jù)幀的接收,并由LWIP協(xié)議完成IP協(xié)議的解析后,通知LWIP輸入接口程序進(jìn)行處理并轉(zhuǎn)入步驟 (6)。③虛連接狀態(tài)偵測線程發(fā)現(xiàn)某條虛連接已失效,轉(zhuǎn)入步驟(9)。(3) CAN輸入接口程序完成CAN數(shù)據(jù)包的虛連接頭部解析工作,并將頭部信息和數(shù)據(jù)字段交付虛連接轉(zhuǎn)發(fā)程序進(jìn)行處理。(4)虛連接轉(zhuǎn)發(fā)轉(zhuǎn)發(fā)程序通過查詢虛連接表,對(duì)不滿足轉(zhuǎn)發(fā)條件的數(shù)據(jù)包執(zhí)行丟棄;并對(duì)滿足轉(zhuǎn)發(fā)條件(兩項(xiàng)入口信息匹配)的數(shù)據(jù)包進(jìn)行轉(zhuǎn)發(fā)。轉(zhuǎn)發(fā)時(shí),首先判斷此虛連接是否被重映射,是則將重映射表的表項(xiàng)值作為虛連接轉(zhuǎn)發(fā)出口信息;否則沿用虛連接表的表項(xiàng)值作為轉(zhuǎn)發(fā)出口信息。然后將數(shù)據(jù)字段首字節(jié)作為優(yōu)先級(jí)信息,并判斷出口信息中的出端口號(hào),以決定將數(shù)據(jù)包放入CAN優(yōu)先級(jí)隊(duì)列或者以太網(wǎng)優(yōu)先級(jí)隊(duì)列進(jìn)行發(fā)送。(5)將出口信息傳入對(duì)應(yīng)的LWIP輸出接口程序或者CAN輸出接口程序,在完成數(shù)據(jù)包的虛連接頭部封裝后進(jìn)行實(shí)際發(fā)送。至此,數(shù)據(jù)包處理完成,返回步驟O)。(6) LWIP輸入接口程序完成IP數(shù)據(jù)包的虛連接頭部解析工作,并將頭部信息和數(shù)據(jù)字段交付虛連接轉(zhuǎn)發(fā)程序進(jìn)行處理。(7)虛連接轉(zhuǎn)發(fā)轉(zhuǎn)發(fā)程序通過查詢虛連接表,對(duì)不滿足轉(zhuǎn)發(fā)條件的數(shù)據(jù)包執(zhí)行丟棄;并對(duì)滿足轉(zhuǎn)發(fā)條件(三項(xiàng)入口信息匹配)的數(shù)據(jù)包進(jìn)行轉(zhuǎn)發(fā)。轉(zhuǎn)發(fā)時(shí),首先判斷此虛連接是否被重映射,是則將重映射表的表項(xiàng)值作為虛連接轉(zhuǎn)發(fā)出口信息;否則沿用虛連接表的表項(xiàng)值作為轉(zhuǎn)發(fā)出口信息。然后將數(shù)據(jù)字段首字節(jié)作為優(yōu)先級(jí)信息,將數(shù)據(jù)包放入CAN 優(yōu)先級(jí)隊(duì)列進(jìn)行發(fā)送。(8)將出口信息傳入CAN輸出接口程序,在完成數(shù)據(jù)包的虛連接頭部封裝后進(jìn)行實(shí)際發(fā)送。至此,數(shù)據(jù)包處理完成,返回步驟(2)。(9)虛連接狀態(tài)偵測線程查找與此失效鏈接目的IP地址相同的正常工作的鏈接 (替代鏈接)。若無法找到,則將此失效鏈接對(duì)應(yīng)的數(shù)據(jù)包暫存,并通告數(shù)據(jù)源端停止發(fā)送。 若成功找到替代鏈接,則在重映射表項(xiàng)中新建一個(gè)表項(xiàng),將替代鏈接的出口信息寫入其中, 并將新建的表項(xiàng)號(hào)寫入失效鏈接在虛連接表中的re_map域。至此,已完成失效鏈接的重映射操作,返回步驟O)。
采用多個(gè)本發(fā)明的網(wǎng)關(guān)可建立虛連接交換網(wǎng),其典型的虛連接轉(zhuǎn)發(fā)示意圖(未涉及重映射表)如圖3所示左側(cè)為4個(gè)帶以太網(wǎng)接口的現(xiàn)場設(shè)施(采集模塊),分別與網(wǎng)關(guān) 1的第1至第4塊開發(fā)板的RJ-45接口相連;而網(wǎng)關(guān)1的第6塊開發(fā)板與網(wǎng)關(guān)2的第5塊開發(fā)板相連,網(wǎng)關(guān)2的第6塊開發(fā)板與網(wǎng)關(guān)3的第5塊開發(fā)板相連,網(wǎng)關(guān)3的第6塊開發(fā)板與中央處理PC機(jī)相連。數(shù)據(jù)包從采集模塊1到中央處理PC機(jī)的虛連接轉(zhuǎn)發(fā)經(jīng)過了圖中 ①②③④四個(gè)階段,每個(gè)階段的虛連接頭部改變是根據(jù)網(wǎng)關(guān)的虛連接表項(xiàng)所決定。初始時(shí)刻,數(shù)據(jù)包目的IP地址為IPa (即網(wǎng)關(guān)1的1號(hào)開發(fā)板的IP地址),端口號(hào)為A,標(biāo)簽值為 b。網(wǎng)關(guān)1的1號(hào)開發(fā)板收到此數(shù)據(jù)包后查詢虛連接表1 (匹配表項(xiàng)1),得知應(yīng)將此數(shù)據(jù)包轉(zhuǎn)發(fā)給6號(hào)開發(fā)板(CAN接收地址為B),且應(yīng)將標(biāo)簽值修改為c ;6號(hào)開發(fā)板收到此數(shù)據(jù)包后查表1 (匹配表項(xiàng)2),得知應(yīng)將其轉(zhuǎn)發(fā)給目的IP地址為IPd的以太網(wǎng)接口,即網(wǎng)關(guān)2的5 號(hào)開發(fā)板且應(yīng)將標(biāo)簽值修改為d。至此,數(shù)據(jù)包被修改為圖3中①所示。接下來數(shù)據(jù)包繼續(xù)在網(wǎng)關(guān)2和網(wǎng)關(guān)3間傳遞,直至由網(wǎng)關(guān)3發(fā)給最終目的終端處理PC機(jī)(IP地址為IPz)。網(wǎng)關(guān)的硬件平臺(tái)搭建的具體實(shí)施如下本發(fā)明網(wǎng)關(guān)由若干塊(按照實(shí)際的網(wǎng)絡(luò)配置,理論上可擴(kuò)充至211塊)同時(shí)具備 CAN模塊和以太網(wǎng)模塊的開發(fā)板組合構(gòu)成支持虛連接服務(wù)的集群系統(tǒng),如圖4所示。各塊開發(fā)板間由本地意義的CAN總線相連;開發(fā)板的RJ-45接口可連接帶以太網(wǎng)接口的現(xiàn)場設(shè)施 (如采集設(shè)備,交換機(jī),終端PC等)或者另一個(gè)網(wǎng)關(guān)(參見圖3中的網(wǎng)關(guān)互聯(lián))。網(wǎng)關(guān)的各塊開發(fā)板采用USB接口供電,輸入電壓范圍通常情況下為3. 3V 5V?;诰W(wǎng)關(guān)硬件平臺(tái)的支撐模塊的具體實(shí)施如下(1)對(duì)網(wǎng)關(guān)內(nèi)各塊開發(fā)板移植μ c-OS II操作系統(tǒng)按照其官方所給的移植范例對(duì)與處理器相關(guān)的三個(gè)源文件0S_CPU_C. C,0S_CPU_A. S和0S_CPU. H三個(gè)文件進(jìn)行修改即可。在μ c-OS II上移植LWIP協(xié)議棧按照其官方給出的SyS_arCh. txt文件,實(shí)現(xiàn)操作系統(tǒng)模擬層初始化函數(shù),信號(hào)量相關(guān)函數(shù)(建立,釋放,發(fā)送,等待),郵箱相關(guān)函數(shù)(建立,釋放,投遞消息,阻塞等待,超時(shí)),以及協(xié)議多線程函數(shù)等必要函數(shù)體。為LWIP提供同步互斥信號(hào)量,消息郵箱隊(duì)列等相關(guān)支持。并編寫LWIP與以太網(wǎng)驅(qū)動(dòng)之間的相應(yīng)接口。(2)編寫開發(fā)板的CAN總線驅(qū)動(dòng)程序CAN總線驅(qū)動(dòng)程序按執(zhí)行順序分為如下5部分①開發(fā)板的CAN總線物理接口初始化參閱開發(fā)板的官方文檔,結(jié)合開發(fā)板硬件連接圖,將CAN總線物理接口需要用到的管腳的使用權(quán)交付給CAN控制器,并使能CAN總線時(shí)鐘,然后對(duì)CAN控制器的模式選擇管腳進(jìn)行寫操作,使得CAN收發(fā)器進(jìn)入正常傳輸模式 (Transceiver Normal Mode)0②在開發(fā)板的高級(jí)中斷控制器(開發(fā)板術(shù)語)中注冊(cè)CAN總線物理接口的中斷信號(hào)首先進(jìn)入操作系統(tǒng)臨界區(qū),通過寫中斷控制器的相應(yīng)寄存器完成CAN收發(fā)中斷的注冊(cè)工作,并使能CAN收發(fā)中斷。然后退出操作系統(tǒng)臨界區(qū)。③設(shè)置CAN總線波特率參閱數(shù)據(jù)手冊(cè)中CAN波特率的計(jì)算方法,在CAN控制器的波特率相關(guān)寄存器寫入計(jì)算值,使得CAN總線物理接口達(dá)到其最大的IMbps的帶寬。④等待CAN總線喚醒首先使能CAN喚醒信號(hào)的中斷,然后對(duì)CAN模式寄存器寫入 CAN使能信號(hào),并等待CAN總線喚醒。⑤初始化CAN接收郵箱和發(fā)送郵箱將4個(gè)連續(xù)的CAN消息郵箱(0 3號(hào)郵箱)
9中的前3個(gè)郵箱的模式設(shè)置為只接收模式,并將第4個(gè)郵箱模式設(shè)置為接收并覆蓋模式。這樣的設(shè)置方式將此4個(gè)郵箱鏈接了起來,共同作為物理接收緩存區(qū)。4個(gè)郵箱都被初始化為相同的CAN信息ID,此ID即為數(shù)據(jù)接收郵箱地址。從網(wǎng)關(guān)整體角度考慮,接收郵箱的ID 與一般虛連接協(xié)議中的“端口”具備同樣的作用,。將1個(gè)郵箱G號(hào)郵箱)模式設(shè)置為只發(fā)送模式,并將其作為物理發(fā)送緩存區(qū),此郵箱ID的含義為目標(biāo)CAN設(shè)備的信息ID。將1 個(gè)郵箱(5號(hào)郵箱)模式設(shè)置為只接收模式;將1個(gè)郵箱(6號(hào)郵箱)模式設(shè)置為只發(fā)送模式,然后將5號(hào)和6號(hào)郵箱的ID均設(shè)為0x00000001。完成上述郵箱的初始化后,再開啟郵箱的傳輸功能。至此CAN模塊底層驅(qū)動(dòng)完成,驅(qū)動(dòng)執(zhí)行流程圖參見圖5。此處的CAN控制器和CAN郵箱是CAN總線技術(shù)的術(shù)語。(3)編寫開發(fā)板的以太網(wǎng)驅(qū)動(dòng)程序以太網(wǎng)驅(qū)動(dòng)按執(zhí)行順序分為如下5部分①復(fù)位開發(fā)板的以太網(wǎng)物理層芯片首先通過寫相應(yīng)寄存器,使得物理層芯片在復(fù)位后立即進(jìn)入需要的MII模式(以太網(wǎng)術(shù)語)。并等待芯片復(fù)位的實(shí)際完成。②設(shè)置以太網(wǎng)物理接口參數(shù)參閱數(shù)據(jù)手冊(cè),將物理層芯片MII模式下需求的管腳使用權(quán)交付以太網(wǎng)模塊。然后對(duì)模塊的網(wǎng)絡(luò)配置寄存器寫入正確的時(shí)鐘分頻數(shù)。③以太網(wǎng)物理層自協(xié)商讀取狀態(tài)寄存器的值,等待鏈接完成信號(hào)電平拉高,然后等待自協(xié)商信號(hào)電平拉高。獲取自協(xié)商結(jié)果,并對(duì)網(wǎng)絡(luò)配置寄存器進(jìn)行鏈路速度和單雙工方式的設(shè)置。對(duì)物理芯片寄存器讀寫前后應(yīng)開啟和關(guān)閉物理層讀寫功能。④初始化接收和發(fā)送緩沖區(qū)參考數(shù)據(jù)手冊(cè),首先建立接收和發(fā)送緩沖區(qū)。最后按照數(shù)據(jù)手冊(cè)使能以以太網(wǎng)物理接口的時(shí)鐘,并清除接收狀態(tài)寄存器和設(shè)置MAC地址。⑤設(shè)置以太網(wǎng)物理接口收發(fā)中斷首先使能接收結(jié)束和發(fā)送結(jié)束的中斷。并在高級(jí)中斷控制器中注冊(cè)以太網(wǎng)模塊的驅(qū)動(dòng)。最后對(duì)網(wǎng)絡(luò)配置寄存器寫發(fā)送和接收位。至此以太網(wǎng)模塊底層驅(qū)動(dòng)完成,驅(qū)動(dòng)執(zhí)行流程圖參見圖6。(4)編寫開發(fā)板的指示燈驅(qū)動(dòng)首先用使能與指示燈相連接的管腳控制器的時(shí)鐘,然后使能控制器對(duì)相應(yīng)管腳的控制,并通過對(duì)管腳的寫0和寫1操作實(shí)現(xiàn)對(duì)指示燈的亮滅控制。網(wǎng)關(guān)的虛連接模塊具體實(shí)施如下1.虛連接協(xié)議子模塊(1)虛連接表初始化程序虛連接表項(xiàng)結(jié)構(gòu)為(A,B, C,D,E,F(xiàn),G)七元組,其中A 為入IP地址,4字節(jié);B為入端口號(hào)(CAN信息ID),4字節(jié);C為入標(biāo)簽號(hào),1字節(jié);D為出IP 地址,4字節(jié);E為出端口號(hào)(CAN信息ID),4字節(jié);F為出標(biāo)簽號(hào),1字節(jié)。G為重映射號(hào),占 1字節(jié)。可以有多個(gè)表項(xiàng)。聲明名為VTItem的結(jié)構(gòu)體,并包含上述七個(gè)變量域(令其名為in_ip_addr,in_ can_id, in_label, out_ip_addr, out_can_id, out_label, re_map);再聲明名為 VTable 的結(jié)構(gòu)體,包含整形變量域VTLen以及VTItem類型的數(shù)組域iVTItem。令iVT為虛連接表(VTable類型)。本發(fā)明采取PVC的虛連接模式,即靜態(tài)配置全網(wǎng)的全部虛連接。虛連接表初始化程序應(yīng)根據(jù)實(shí)際網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)將與本網(wǎng)關(guān)關(guān)聯(lián)的虛連接表項(xiàng)iVTItem存入iVT中,且所有表項(xiàng)的re_map域都賦值為0。具體的iVTItem值需進(jìn)行人工配置。(2)虛連接LWIP接口程序包含LWIP輸入接口程序和LWIP輸出接口程序。其中
I. LWIP輸入接口程序令程序名為VirtuallnputIP。由于網(wǎng)關(guān)支持虛連接且兼容普通IPV4數(shù)據(jù)包,現(xiàn)對(duì)LWIP協(xié)議的傳輸層做如下改動(dòng)由于TCP需要預(yù)先建立連接,故本發(fā)明約定以太網(wǎng)數(shù)據(jù)包的傳輸層包頭為UDP頭,現(xiàn)將LWIP中傳輸層中的UDP協(xié)議轉(zhuǎn)發(fā)程序修改為VirtuaUnputlP。TCP和ICMP等上層協(xié)議不做修改。VirtuallnputIP在LWIP的IP輸入函數(shù)中被調(diào)用,其傳入?yún)?shù)為協(xié)議棧緩沖數(shù)據(jù)包ρ和ip_hdr類型(IP數(shù)據(jù)包頭部類型)的變量iphdr (在IP輸入函數(shù)中已求得)。 建立udp_hdr類型(UDP頭部類型)的變量udphdr ;再建立字符型變量inlabel,整型變量 inport和paylen。程序的具體處理流程為首先,抹去ρ的IP包頭;并將ρ的前8個(gè)字節(jié)存入udpjieader (UDP頭部);再抹去ρ的UDP頭部,以取得僅含虛連接頭部的數(shù)據(jù)載荷。然后,讀取此載荷的前4個(gè)字節(jié)值, 并將結(jié)果存入inport ;再讀取第5個(gè)字節(jié)值,將結(jié)果存入inlabel。最后,取udphdr中的長度信息,并減去13后將結(jié)果賦值給paylen。此時(shí)的paylen是不包含任何頭部的數(shù)據(jù)凈荷。完成上述步驟后,VirtuaUnputIP將獲取的 p,inport, inlabel, paylen 以及 iphdr交付虛連接轉(zhuǎn)發(fā)程序進(jìn)行處理。II. LWIP 輸出接口程序令程序名為 VirtualOutputIP。VirtualOutputIP 在虛連接轉(zhuǎn)發(fā)程序?qū)φ_的虛連接數(shù)據(jù)包進(jìn)行轉(zhuǎn)發(fā)時(shí)被調(diào)用,且傳入?yún)?shù)為P,整型變量 outport,字符型變量outlabel,以及目的IP地址和數(shù)據(jù)包長度paylen。VitualOutputIP 首先將outport和outlabel增補(bǔ)到ρ的頭部,即完成虛連接頭部的封裝;然后調(diào)用udp_ sendO函數(shù),將此數(shù)據(jù)包發(fā)送到目的IP地址。(3)虛連接CAN協(xié)議接口程序包含CAN接收程序和CAN發(fā)送程序。其中I. CAN接收程序此程序?yàn)橹袛嗵幚沓绦?,由第O 3號(hào)CAN郵箱接收完畢信號(hào)而觸發(fā),主要完成將CAN接收郵箱收到的數(shù)據(jù)搬運(yùn)到內(nèi)存緩存(設(shè)為CANMsgBuf)的工作。建立無符號(hào)整型變量status用于保存中斷寄存器狀態(tài),判斷status的值可分別處理來自不同中斷源的中斷請(qǐng)求。CAN總線接收數(shù)據(jù)包的中斷處理過程分如下步驟進(jìn)行,參見圖7所示①判斷第O號(hào)郵箱是否成功的接收到了數(shù)據(jù),即其在狀態(tài)寄存器中相應(yīng)位的值, 若值為假則表明未接收到數(shù)據(jù),無操作。若為真,則用獲取第O號(hào)郵箱的數(shù)據(jù)寄存器值,并約定此值為接收數(shù)據(jù)包的長度(占4字節(jié))。接下來將檢測內(nèi)存中是否有空閑的接收緩沖區(qū),有空閑則轉(zhuǎn)向步驟②,否則直接放棄剩下數(shù)據(jù)的接收。②判斷數(shù)據(jù)包長度是否小于等于8,否轉(zhuǎn)向步驟③,是則連同長度信息和剩下的不大于4字節(jié)的數(shù)據(jù)信息一并寫入接收緩沖區(qū),并通知CAN接收線程進(jìn)行處理。③判斷1號(hào)郵箱對(duì)應(yīng)狀態(tài)寄存器值的真假,若其值為假則表明接收錯(cuò)誤,無操作。 若值為真則判斷數(shù)據(jù)包長度是否小于等于16,否轉(zhuǎn)向步驟④,是則將長度信息和剩下的不大于12字節(jié)的數(shù)據(jù)信息一并寫入接收緩沖區(qū),并通知CAN接收線程進(jìn)行處理。④判斷2號(hào)郵箱對(duì)應(yīng)狀態(tài)寄存器值的真假,若其值為假則表明接收錯(cuò)誤,無操作。 若值為真則判斷數(shù)據(jù)包長度是否小于等于對(duì),否轉(zhuǎn)向步驟⑤,是則將長度信息和剩下的不大于20字節(jié)的數(shù)據(jù)信息一并寫入接收緩沖區(qū),并通知CAN接收線程進(jìn)行處理。⑤判斷3號(hào)郵箱對(duì)應(yīng)狀態(tài)寄存器值的真假,若其值為假則表明接收錯(cuò)誤,無操作。 若值為真則將含4字節(jié)長度信息在內(nèi)的M字節(jié)的數(shù)據(jù)寫入接收緩沖區(qū),并使用第3號(hào)郵箱繼續(xù)接收剩余數(shù)據(jù),直至數(shù)據(jù)完全接收并寫入接收緩沖區(qū)為止。完成上述步驟后,CAN接收程序?qū)?duì)CANMsgBuf進(jìn)行虛連接頭部解析,跳過長度字段G字節(jié)),將CANMsgBuf的第5到第8個(gè)字節(jié)讀出并存入整型變量inport中;再將第9 個(gè)字節(jié)讀出并存入inlabel中,然后將inport和inlabel以及去除虛連接頭部的數(shù)據(jù)包地址傳入虛連接轉(zhuǎn)發(fā)程序進(jìn)行處理。II. CAN發(fā)送程序此程序在CAN驅(qū)動(dòng)完成后即啟動(dòng),并一直等待來自虛連接轉(zhuǎn)發(fā)程序發(fā)送請(qǐng)求的信號(hào)量。CAN發(fā)送程序傳入?yún)?shù)為字符型變量outlabel和整型變量 OUtport0被喚醒后,CAN發(fā)送程序?qū)utport值(即目的CAN地址)寫入CAN發(fā)送郵箱的發(fā)送地址(即第4號(hào)郵箱的模式寄存器目標(biāo)地址字段),并將自身的CAN地址寫入待發(fā)送數(shù)據(jù)的第5到第8個(gè)字節(jié),然后將outlabel值寫入待發(fā)送數(shù)據(jù)的第9個(gè)字節(jié)。完成上述封裝后,將數(shù)據(jù)放到CAN總線進(jìn)行發(fā)送。(4)虛連接轉(zhuǎn)發(fā)程序此程序的接收來自LWIP或CAN的已完成解析的數(shù)據(jù)包。且此程序含兩個(gè)優(yōu)先級(jí)隊(duì)列以太網(wǎng)待發(fā)送隊(duì)列和CAN待發(fā)送隊(duì)列。建立字符型變量prior 用以保存數(shù)據(jù)包的優(yōu)先級(jí),然后分兩類情況進(jìn)行處理I.若數(shù)據(jù)包為LWIP數(shù)據(jù)包,則查詢iVT表,判斷是否有表項(xiàng)同時(shí)滿足以下3個(gè)條件①該表項(xiàng)值的in_ip_addr字段與所傳入的iphdr的src字段相等;②該表項(xiàng)值的in_ label字段與所傳入的inlabel值相等;③該表項(xiàng)值的in_port字段與所傳入的inport值相等。若未能找到符合上述條件的表項(xiàng),則將傳入的P進(jìn)行內(nèi)存釋放,并返回。若成功找到匹配表項(xiàng),則讀取P的首字節(jié),將結(jié)果賦值給prior。然后分析此表項(xiàng)的re_map值,若re_ map值為O (無重映射)則應(yīng)將此表項(xiàng)的out_port值和0ut_label值傳遞給CAN發(fā)送程序, 并按prior值的大小將數(shù)據(jù)包插入有序的CAN待發(fā)送隊(duì)列;若re_map值大于O (發(fā)生重映射),則應(yīng)將重映射表FT的第re_map個(gè)元素的out_port和0ut_label值傳遞給CAN發(fā)送程序,其他操作與無重映射的情況相同。II.若數(shù)據(jù)包為CAN數(shù)據(jù)包,則查詢iVT表,判斷是否有表項(xiàng)同時(shí)滿足以下2個(gè)條件①該表項(xiàng)值的in_label字段與所傳入的inlabel值相等;②該表項(xiàng)值的in_port字段與所傳入的inport值相等。若未能找到符合上述條件的表項(xiàng),則將此數(shù)據(jù)包的內(nèi)存進(jìn)行釋放,并返回。若成功找到匹配表項(xiàng),則讀取數(shù)據(jù)包的首字節(jié),存入prior中。然后與情況I 類似,查詢此匹配表項(xiàng)的re_map值,若為O則采用此表項(xiàng)的out_port和out_label值作為出端口和出標(biāo)簽;若非O則應(yīng)采用FT表第re_map個(gè)表項(xiàng)的值。接著,分析out_port值,若其值大于0x10000000則判斷出口為以太網(wǎng),并按照prior值的大小將其插入以太網(wǎng)待發(fā)送隊(duì)列;若其值小于等于0x10000000則判斷出口為CAN總線,并按照prior值的大小順序?qū)?shù)據(jù)包其插入CAN待發(fā)送隊(duì)列。按照排序算法將數(shù)據(jù)包插入隊(duì)列后,虛連接轉(zhuǎn)發(fā)程序?qū)凑贞?duì)列的先后順序調(diào)用 LffIP輸出接口程序或CAN發(fā)送程序進(jìn)行實(shí)際發(fā)送。虛連接協(xié)議子模塊的工作流程圖詳見圖8所示。2.虛連接狀態(tài)偵測子模塊由狀態(tài)信息更新程序和虛連接狀態(tài)偵測線程組成。首先,聲明整型結(jié)構(gòu)體Linl^tate,其中包含整型變量域CAN_ID和整型變量域Curjtate。 CAN_ID用于保存開發(fā)板數(shù)據(jù)接收郵箱ID然后在內(nèi)存中建立LinkMate類型的結(jié)構(gòu)體數(shù)組 iLS,并將網(wǎng)關(guān)內(nèi)部各塊開發(fā)板的數(shù)據(jù)接收郵箱ID和鏈路狀態(tài)信息(初始化為0,正常)寫入iLS中元素的CAN_ID域和CurJtate域。(1)狀態(tài)信息更新程序此程序?yàn)橹袛嗵幚沓绦颍傻?號(hào)CAN郵箱接收完畢信號(hào)而觸發(fā),主要完成定期更新來自網(wǎng)關(guān)內(nèi)其他開發(fā)板的狀態(tài)信息的功能。狀態(tài)信息更新程序被觸發(fā)后,將5號(hào)郵箱中接收到的信息賦值給iLS中對(duì)應(yīng)的元素。(2)虛連接狀態(tài)偵測線程在虛連接表的配置工作完成后被啟動(dòng),并定期檢測各條虛連接的狀態(tài)信息并發(fā)送自身(本開發(fā)板)的鏈路狀態(tài)信息?,F(xiàn)解釋鏈路狀態(tài)信息的含義①鏈路狀態(tài)信息值為0 當(dāng)前虛連接工作正常,可順利完成表項(xiàng)要求的虛連接數(shù)據(jù)包的轉(zhuǎn)發(fā),且未承擔(dān)額外連接的數(shù)據(jù)轉(zhuǎn)發(fā)任務(wù)。②鏈路狀態(tài)信息值為-1 當(dāng)前虛連接失效。無法完成表項(xiàng)要求的虛連接數(shù)據(jù)包轉(zhuǎn)發(fā)工作。失效原因包括物理線路斷線,電源供電不足,信號(hào)干擾等等。③鏈路狀態(tài)信息值為1 當(dāng)前虛連接工作負(fù)荷。即該條虛連接承擔(dān)了本連接以外的額外的數(shù)據(jù)包轉(zhuǎn)發(fā)工作。虛連接狀態(tài)偵測線程每隔200ms將從6號(hào)郵箱往0x00000001地址發(fā)送本開發(fā)板的數(shù)據(jù)接收ID和鏈路狀態(tài)信息值。同時(shí),虛連接狀態(tài)偵測線程每隔500ms將讀取iLS中的ID號(hào)與相應(yīng)鏈路狀態(tài)信息以便對(duì)失效或者負(fù)荷過重的虛連接進(jìn)行重映射,具體的實(shí)施過程做如下說明本發(fā)明提出的以CAN信息ID(含統(tǒng)一編址的以太網(wǎng)設(shè)備ID)為出入端口的虛連接技術(shù),充分利用了 CAN總線數(shù)據(jù)編址的優(yōu)良特性。由于數(shù)據(jù)包的目的地址由自身頭部信息決定,在實(shí)際的網(wǎng)絡(luò)傳輸中,若虛連接狀態(tài)偵測線程檢測到某條虛連接失效,可將其傳輸任務(wù)映射到另一條可工作的鏈路(鏈路信息狀態(tài)值為0或1),而非簡易的丟棄該虛連接的數(shù)據(jù)包。記錄映射信息的表稱之為重映射表,記為FT。FT的一個(gè)表項(xiàng)結(jié)構(gòu)為三元組,包含映射后的出IP地址,出標(biāo)簽和出端口值,其中映射后出IP地址為4字節(jié),出端口號(hào),即CAN信息ID為4字節(jié);出標(biāo)簽號(hào)為1字節(jié)。虛連接狀態(tài)偵測線程的具體工作過程如圖9所示,虛連接狀態(tài)偵測線程首先分析失效連接的目的IP地址,查詢虛連接表找出與此失效連接目的IP地址相同且正常工作的連接(鏈路狀態(tài)信息為0),并將失效連接的轉(zhuǎn)發(fā)工作交付該正常連接完成。具體過程為 首先,在FT中新增一個(gè)表項(xiàng)a(設(shè)a在FT中的表項(xiàng)號(hào)為b),將此正常鏈接的出IP地址,出標(biāo)簽和出端口值寫入a中;然后將b寫入失效鏈接在iVT表中的re_map域。最后,記錄錯(cuò)誤報(bào)告;若無法找到目的IP地址相同的另外連接,或者存在目的IP地址相同的鏈接但此鏈接已經(jīng)被重映射,則將數(shù)據(jù)包緩存,并通告數(shù)據(jù)包來源暫停發(fā)送。以上詳細(xì)敘述了本發(fā)明的實(shí)現(xiàn)過程,未詳細(xì)描述部分屬于本領(lǐng)域公知技術(shù)。
權(quán)利要求
1. 一種支持虛連接的基于CAN總線和以太網(wǎng)實(shí)時(shí)嵌入式網(wǎng)關(guān),其特征在于所述網(wǎng)關(guān)由多塊具備CAN總線物理接口和以太網(wǎng)物理接口的嵌入式開發(fā)板組成硬件平臺(tái);各塊開發(fā)板均接入網(wǎng)關(guān)本地意義的CAN總線網(wǎng)絡(luò),并通過CAN總線進(jìn)行數(shù)據(jù)交互,各開發(fā)板同時(shí)以以太網(wǎng)接口的形式連接另一個(gè)網(wǎng)關(guān)或者工控領(lǐng)域的現(xiàn)場設(shè)施;每塊開發(fā)板均具有支撐模塊和虛連接模塊,并通過本地CAN網(wǎng)絡(luò)構(gòu)成虛連接集群系統(tǒng),以協(xié)作的形式共同完成幀格式轉(zhuǎn)換,數(shù)據(jù)解析封裝,虛連接收發(fā)各項(xiàng)功能;其中支撐模塊包含嵌入式實(shí)時(shí)操作系統(tǒng)μ c-OS II、TCP/IP協(xié)議棧LWIP、CAN總線驅(qū)動(dòng)程序和以太網(wǎng)驅(qū)動(dòng)程序;嵌入式實(shí)時(shí)操作系統(tǒng)μ c-OS II為網(wǎng)關(guān)中所有的軟件模塊提供編程接口 ;LWIP提供對(duì)以太網(wǎng)IP數(shù)據(jù)包的支持;CAN總線驅(qū)動(dòng)程序和以太網(wǎng)驅(qū)動(dòng)程序則負(fù)責(zé)配置CAN模塊和以太網(wǎng)模塊,以便接收實(shí)際的比特流數(shù)據(jù);虛連接模塊由虛連接協(xié)議子模塊和虛連接狀態(tài)偵測子模塊組成;虛連接協(xié)議子模塊完成數(shù)據(jù)包的虛連接轉(zhuǎn)發(fā)工作,它包括虛連接表初始化程序,虛連接CAN協(xié)議接口程序、虛連接LWIP接口程序及虛連接轉(zhuǎn)發(fā)程序;虛連接表初始化程序根據(jù)全網(wǎng)絡(luò)或局部網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu),在內(nèi)存建立虛連接表,虛連接表的表項(xiàng)結(jié)構(gòu)為七元組,包括入IP地址,入端口號(hào),入標(biāo)簽號(hào),出IP地址,出端口號(hào),出標(biāo)簽號(hào)和重映射號(hào);虛連接CAN協(xié)議接口程序負(fù)責(zé)建立虛連接與CAN協(xié)議之間的數(shù)據(jù)通道,虛連接LWIP接口程序負(fù)責(zé)建立虛連接與LWIP之間的數(shù)據(jù)通道,使得虛連接協(xié)議可訪問此兩者的數(shù)據(jù)包;虛連接轉(zhuǎn)發(fā)程序接收來自虛連接LWIP接口程序和虛連接CAN協(xié)議接口程序已完成解析的數(shù)據(jù)包,然后根據(jù)虛連接表對(duì)數(shù)據(jù)包執(zhí)行丟棄或者轉(zhuǎn)發(fā)操作,且轉(zhuǎn)發(fā)時(shí)按數(shù)據(jù)包實(shí)時(shí)性的高低對(duì)其進(jìn)行先后發(fā)送,以確保網(wǎng)絡(luò)資源的最優(yōu)利用;虛連接狀態(tài)偵測模塊包含狀態(tài)更新程序和虛連接狀態(tài)偵測線程;狀態(tài)更新程序用于定期更新網(wǎng)關(guān)內(nèi)其他開發(fā)板的鏈路狀態(tài)信息,對(duì)虛擬表進(jìn)行維護(hù);虛連接狀態(tài)偵測線程負(fù)責(zé)定時(shí)檢查其他開發(fā)板的鏈路狀態(tài)信息以及定時(shí)發(fā)送自身的鏈路狀態(tài)信息,以便及時(shí)發(fā)現(xiàn)失效鏈路,并進(jìn)行鏈路重映射;工作時(shí)輸入數(shù)據(jù)流可來自以太網(wǎng)數(shù)據(jù)或CAN總線,輸入數(shù)據(jù)流經(jīng)過硬件平臺(tái)的CAN 總線物理接口或以太網(wǎng)物理接口進(jìn)入支撐模塊,由CAN總線驅(qū)動(dòng)程序或以太網(wǎng)驅(qū)動(dòng)程序驅(qū)動(dòng)進(jìn)入虛連接模塊的虛連接LWIP接口程序或虛連接CAN協(xié)議接口程序;虛連接LWIP接口程序包含LWIP輸入接口程序和LWIP輸出接口程序,LWIP輸入接口程序接收來自以太網(wǎng)的 IPV4數(shù)據(jù)包,并對(duì)此數(shù)據(jù)包的虛連接頭部進(jìn)行解析,之后將數(shù)據(jù)字段和虛連接頭部交付虛連接轉(zhuǎn)發(fā)程序進(jìn)行處理;LWIP輸出接口程序?qū)⑻撨B接轉(zhuǎn)發(fā)程序處理完畢的數(shù)據(jù)包進(jìn)行虛連接頭部封裝,完成后將其在以太網(wǎng)進(jìn)行發(fā)送;虛連接CAN協(xié)議接口程序包含CAN接收程序和CAN發(fā)送程序,CAN接收程序?qū)AN接收郵箱收到的數(shù)據(jù)包搬運(yùn)到內(nèi)存緩存中,并對(duì)數(shù)據(jù)包進(jìn)行虛連接頭部解析,之后將數(shù)據(jù)字段和虛連接頭部交付虛連接轉(zhuǎn)發(fā)程序進(jìn)行處理;CAN發(fā)送程序?qū)⑻撨B接轉(zhuǎn)發(fā)程序處理完畢的數(shù)據(jù)包進(jìn)行虛連接頭部封裝,完成后將其在CAN總線進(jìn)行發(fā)送;虛連接轉(zhuǎn)發(fā)程序接收來自虛連接LWIP接口程序或虛連接CAN協(xié)議接口程序已完成解析的數(shù)據(jù)包,然后根據(jù)虛連接表對(duì)數(shù)據(jù)包執(zhí)行丟棄或者轉(zhuǎn)發(fā)操作,且轉(zhuǎn)發(fā)時(shí)按數(shù)據(jù)包實(shí)時(shí)性的高低對(duì)其進(jìn)行先后發(fā)送,發(fā)送時(shí)若為CAN總線數(shù)據(jù)則經(jīng)虛連接CAN協(xié)議接口程序封裝發(fā)送,若為以太網(wǎng)數(shù)據(jù)則通過虛連接LWIP接口程序封裝發(fā)送;從數(shù)據(jù)流向看,CAN總線輸入數(shù)據(jù)流進(jìn)入虛連接模塊后,輸出數(shù)據(jù)流可為CAN輸出數(shù)據(jù)流或者以太網(wǎng)輸出數(shù)據(jù)流;而以太網(wǎng)輸入數(shù)據(jù)流進(jìn)入虛連接模塊后,輸出數(shù)據(jù)流應(yīng)為CAN輸出數(shù)據(jù)流;在數(shù)據(jù)轉(zhuǎn)發(fā)過程中, 狀態(tài)更新程序每隔一定時(shí)間接收網(wǎng)關(guān)中其它開發(fā)板發(fā)來的鏈路狀態(tài)信息,更新鏈路狀態(tài)信息,對(duì)虛連接表進(jìn)行維護(hù);虛連接狀態(tài)偵測線程在虛連接表的工作完成后,負(fù)責(zé)定時(shí)檢查其他開發(fā)板的鏈路狀態(tài)信息以及定時(shí)發(fā)送自身的鏈路狀態(tài)信息,以便及使發(fā)現(xiàn)失效鏈路,并進(jìn)行鏈路重映射。
2.根據(jù)權(quán)利要求1所述的支持虛連接的基于CAN總線和以太網(wǎng)實(shí)時(shí)嵌入式網(wǎng)關(guān),其特征在于所述硬件平臺(tái)的具體實(shí)現(xiàn)方式為將若干塊同時(shí)具備CAN總線物理接口和以太網(wǎng)物理接口的開發(fā)板重疊,用銅線將各塊開發(fā)板的CAN總線物理接口接起來;開發(fā)板的RJ-45 接口和另一個(gè)網(wǎng)關(guān)某塊開發(fā)板的RJ-45接口或者現(xiàn)場設(shè)施,包括工控機(jī),交換機(jī),終端機(jī)的 RJ-45接口用雙絞線連接起來;各塊開發(fā)板均以USB接口的形式進(jìn)行供電。
3.根據(jù)權(quán)利要求1所述的支持虛連接的基于CAN總線和以太網(wǎng)實(shí)時(shí)嵌入式網(wǎng)關(guān),其特征在于所述虛連接表項(xiàng)結(jié)構(gòu)為七元組。包含入IP地址為4字節(jié);入端口號(hào),即CAN信息 ID為4字節(jié);入標(biāo)簽號(hào)為1字節(jié);出IP地址為4字節(jié);出端口號(hào),即CAN信息ID為4字節(jié); 出標(biāo)簽號(hào)為1字節(jié);重映射號(hào)為1字節(jié)。
4.根據(jù)權(quán)利要求1所述的支持虛連接的基于CAN總線和以太網(wǎng)實(shí)時(shí)嵌入式網(wǎng)關(guān),其特征在于所述虛連接狀態(tài)偵測線程工作過程,包括鏈路重映射的過程為(1)虛連接狀態(tài)偵測線程檢查網(wǎng)關(guān)內(nèi)各開發(fā)板的鏈路狀態(tài)信息;(2)然后判斷各開發(fā)板鏈路狀態(tài)信息關(guān)聯(lián)的某條虛連接是否失效,若失效則轉(zhuǎn)入步驟 (3)否則無操作,等待一定時(shí)延后轉(zhuǎn)入步驟(1);(3)尋找與失效虛連接目的IP地址相同的且正常工作另一條虛連接,即替代鏈接,若存在所述的虛連接則轉(zhuǎn)入步驟(4),否則將此失效鏈接對(duì)應(yīng)的數(shù)據(jù)包暫存,并通告數(shù)據(jù)源端停止發(fā)送;(4)在重映射表中新建一個(gè)表項(xiàng),記表項(xiàng)號(hào)為b,將步驟C3)中替代鏈接的出標(biāo)簽,出端口,出IP地址寫入此表項(xiàng)中,并將表項(xiàng)號(hào)b賦值給失效鏈接在虛連接表中表項(xiàng)的重映射號(hào)。
5.根據(jù)權(quán)利要求1所述的支持虛連接的基于CAN總線和以太網(wǎng)實(shí)時(shí)嵌入式網(wǎng)關(guān),其特征在于所述虛連接轉(zhuǎn)發(fā)程序如何結(jié)合虛連接表判斷丟棄或轉(zhuǎn)發(fā)的過程(1)虛連接轉(zhuǎn)發(fā)程序接收來自LWIP輸入接口程序或CAN輸入接口程序的虛連接頭部信息,查詢虛連接表,尋找與此頭部信息匹配的虛連接表項(xiàng);若能找到這樣的表項(xiàng)則轉(zhuǎn)入步驟 O),否則將數(shù)據(jù)包直接丟棄,此數(shù)據(jù)包處理完畢;(2)記此表項(xiàng)的重映射號(hào)為a(a^ 0)?,F(xiàn)判斷a的值是否為0,若為0則將此表項(xiàng)的出端口,出標(biāo)簽,出IP地址信息做為虛連接轉(zhuǎn)發(fā)的出口信息;若不為0,則將重映射表的第 a個(gè)表項(xiàng)的出端口,出標(biāo)簽,出IP地址信息作為虛連接轉(zhuǎn)發(fā)的出口信息;然后讀取數(shù)據(jù)字段的首字節(jié)作為優(yōu)先級(jí)信息,并將數(shù)據(jù)包插入優(yōu)先級(jí)隊(duì)列;(3)將步驟(2)中獲取的虛連接轉(zhuǎn)發(fā)出口信息交付LWIP輸出接口程序或CAN輸入接口程序,完成數(shù)據(jù)的實(shí)際發(fā)送。
6.根據(jù)權(quán)利要求1所述的支持虛連接的基于CAN總線和以太網(wǎng)實(shí)時(shí)嵌入式網(wǎng)關(guān),其特征在于所述重映射表中的一個(gè)表項(xiàng)結(jié)構(gòu)為三元組,包含映射后出IP地址為4字節(jié);出端口號(hào),即CAN信息ID為4字節(jié);出標(biāo)簽號(hào)為1字節(jié)。
全文摘要
一種支持虛連接的基于CAN總線和以太網(wǎng)實(shí)時(shí)嵌入式網(wǎng)關(guān),包括網(wǎng)關(guān)的硬件、支撐模塊與虛連接模塊,采用了多塊同時(shí)具有CAN總線接口和以太網(wǎng)接口的嵌入式開發(fā)板;開發(fā)板間以CAN總線相連,構(gòu)成支持虛連接服務(wù)的集群系統(tǒng)。網(wǎng)關(guān)的支撐模塊由驅(qū)動(dòng)程序,μc-OS II操作系統(tǒng)和LWIP協(xié)議棧組成。虛連接模塊則包含虛連接協(xié)議子模塊和虛連接狀態(tài)偵測子模塊,負(fù)責(zé)完成實(shí)際的虛連接轉(zhuǎn)發(fā)和維護(hù)工作。本發(fā)明具有配置靈活,適應(yīng)性高,擴(kuò)展性好,能耗小等諸多優(yōu)點(diǎn),適用于較大規(guī)模的數(shù)據(jù)采集傳輸系統(tǒng)。
文檔編號(hào)H04L12/66GK102158435SQ20111009211
公開日2011年8月17日 申請(qǐng)日期2011年4月13日 優(yōu)先權(quán)日2011年4月13日
發(fā)明者張聚甫, 李曉光, 諸彤宇, 鐘鎮(zhèn)撼 申請(qǐng)人:北京航空航天大學(xué)