基于Submerge Frame方法的CAN-以太網(wǎng)網(wǎng)關(guān)
以太網(wǎng)憑借其成本低、開放性強(qiáng)以及具有廣泛的開發(fā)、應(yīng)用軟硬件支持等明顯優(yōu)勢(shì),已經(jīng)成為目前應(yīng)用最為廣泛的局域網(wǎng)絡(luò)技術(shù)之一,而can總線也以星火燎原之勢(shì)成為應(yīng)用最普遍的現(xiàn)場(chǎng)總線之一[1]。由于can總線的傳輸速率受到傳輸距離的限制,在應(yīng)用中往往以can總線作為現(xiàn)場(chǎng)控制局部網(wǎng)絡(luò),連接現(xiàn)場(chǎng)監(jiān)控設(shè)備和高級(jí)智能設(shè)備,而將以太網(wǎng)作為企業(yè)信息傳輸主干網(wǎng),連接各個(gè)現(xiàn)場(chǎng)控制局部網(wǎng)絡(luò),傳統(tǒng)的can-以太網(wǎng)網(wǎng)關(guān)往往無法適應(yīng)較大規(guī)模和重網(wǎng)絡(luò)負(fù)荷環(huán)境,本文對(duì)在不改變操作系統(tǒng)、網(wǎng)絡(luò)協(xié)議且不增加硬件成本的基礎(chǔ)上實(shí)現(xiàn)高效的can總線的以太網(wǎng)接入問題的研究具有一定參考價(jià)值。
1 嵌入式can-以太網(wǎng)網(wǎng)關(guān)
網(wǎng)關(guān)是一種網(wǎng)絡(luò)互聯(lián)設(shè)備,一般分為協(xié)議網(wǎng)關(guān),安全網(wǎng)關(guān)和應(yīng)用網(wǎng)關(guān),對(duì)于嵌入式can-以太網(wǎng)網(wǎng)關(guān),由于can總線連接的嵌入式節(jié)點(diǎn)和智能儀表等與pc機(jī)和服務(wù)器相比功能較弱,嵌入式節(jié)點(diǎn)不直接支持tcp/ic等網(wǎng)絡(luò)協(xié)議,而由網(wǎng)關(guān)進(jìn)行網(wǎng)絡(luò)協(xié)議的轉(zhuǎn)換,所以嵌入式can-以太網(wǎng)網(wǎng)關(guān)主要作為協(xié)議網(wǎng)關(guān)。
1.1 嵌入式can-以太網(wǎng)網(wǎng)關(guān)性能要求
對(duì)can網(wǎng)關(guān)的具體性能要求是與應(yīng)用類型相關(guān)的,不同應(yīng)用的側(cè)重點(diǎn)及其指標(biāo)也不一樣,一般來說,對(duì)can網(wǎng)關(guān)都有以下要求:
1)實(shí)時(shí)性。網(wǎng)關(guān)的響應(yīng)要快,不能影響系統(tǒng)的實(shí)時(shí)性。
2)可靠性。網(wǎng)關(guān)須具有高可靠性,能滿足工控系統(tǒng)要求,這包括兩方面內(nèi)容:一方面,網(wǎng)關(guān)要能夠穩(wěn)定運(yùn)行;另一方面,在自身出現(xiàn)故障時(shí)不影響所在的網(wǎng)絡(luò)。
3)開放性。由于can協(xié)議本身并沒有對(duì)應(yīng)用層作出規(guī)定,在應(yīng)用中存在各種互不兼容的應(yīng)用層協(xié)議,因此網(wǎng)關(guān)需要解決用層協(xié)議的兼容性問題。
4)通用性。網(wǎng)關(guān)要能直接應(yīng)用于can總線的以太網(wǎng)接入,而無須進(jìn)行復(fù)雜的二次開發(fā)。
5)高效性。網(wǎng)關(guān)要高效實(shí)現(xiàn)網(wǎng)絡(luò)的無縫互聯(lián),而不能構(gòu)成系統(tǒng)的瓶頸。
1.2 can-以太網(wǎng)網(wǎng)關(guān)結(jié)構(gòu)
以太網(wǎng)作為企業(yè)信息傳輸主干網(wǎng)接入internet,can總線作為現(xiàn)場(chǎng)控制網(wǎng)絡(luò)實(shí)現(xiàn)服務(wù)器與嵌入式控制器之間的信息傳輸,網(wǎng)關(guān)實(shí)現(xiàn)二者之間的無縫轉(zhuǎn)換,圖1為一種can-以太網(wǎng)網(wǎng)關(guān)的結(jié)構(gòu)框圖。
本方案以philips公司的基于arm7tdmi內(nèi)核的芯片lpc2294為cpu構(gòu)建網(wǎng)關(guān),lpc2249支持實(shí)時(shí)仿真和跟蹤,帶有256kb高速flash存儲(chǔ)器,采用lqfp144封裝,功耗極低,并帶有32位定時(shí)器,8路10位adc,pwm通道,9個(gè)外部中斷以及112個(gè)gpio口(不使用外部存儲(chǔ)器時(shí));特別是它帶有4路獨(dú)立的can控制器,使得它非常適合于構(gòu)建can網(wǎng)關(guān),由于lpc2294支持內(nèi)部總線,因此cpu與以太網(wǎng)控制芯片rtl8019之間的硬件連接以及驅(qū)動(dòng)程序的編寫都比較簡(jiǎn)單,但相對(duì)于使用帶有內(nèi)置以太網(wǎng)控制器的arm芯片的網(wǎng)關(guān)方案,其抗干擾能力相對(duì)較弱,在硬件布線時(shí)須充分考慮抗電磁干擾問題。
2 以太網(wǎng)幀與can幀分析
在網(wǎng)關(guān)效率的研究中,對(duì)以太網(wǎng)和can總線,特別是對(duì)其幀結(jié)構(gòu)的深入理解是必需的。
2.1 以太網(wǎng)網(wǎng)絡(luò)
以太網(wǎng)是一個(gè)局部區(qū)域多計(jì)算機(jī)通信系統(tǒng),是符合ieee802.3、iso/iec8802-3或ieee802.12iso/iec8802-12標(biāo)準(zhǔn)的,采用沖突檢測(cè)的載波監(jiān)聽多點(diǎn)接入(csma/cd)機(jī)制的計(jì)算機(jī)局域網(wǎng)[2]。
以太網(wǎng)幀是以太網(wǎng)網(wǎng)絡(luò)通信信號(hào)的基本單元,是對(duì)其進(jìn)行網(wǎng)絡(luò)性能分析的基礎(chǔ)。以太網(wǎng)發(fā)展時(shí)間較長,衍生出的相應(yīng)規(guī)范較多,如10mbps-10baset ethernet(802.3)、100mbps-fast ethernet(802.3u)、1000mbps-gigabit ethernet(802.3z))和10 gigabit ethernet(ieee 802.3ae)等,一般將以太網(wǎng)幀分為數(shù)據(jù)幀和管理幀。其中數(shù)據(jù)幀又分為以太網(wǎng)基本幀和vlan采用的擴(kuò)展幀等。以太網(wǎng)基本幀和vlan采用的一種擴(kuò)展幀結(jié)構(gòu)如圖2所示。
圖2中:
◇幀前導(dǎo)。0、1交錯(cuò)的56位圖形。
◇幀起始符(sof)。占8位,表示一幀的開始。
◇目的地址與源地址。各占8字節(jié),表示目的和源的mac地址。
◇幀長度/幀類型(l/t)。2字節(jié),mac幀內(nèi)不包括任何填充的數(shù)據(jù)字段長度或類型。
◇數(shù)據(jù)。占用的字節(jié)數(shù)a由數(shù)據(jù)量決定,須滿足a≤1500字節(jié)。
◇填充。占用字節(jié)數(shù)b根據(jù)需要而定,須滿足a+b≥46字節(jié)。
◇幀校驗(yàn)區(qū)(fcs)。占4字節(jié),用于幀的差錯(cuò)校驗(yàn)。
需要注意的是,對(duì)于基本幀,mac客戶數(shù)據(jù)區(qū)數(shù)據(jù)最低不能少于46節(jié),最高不能多于1500字節(jié),網(wǎng)絡(luò)mac幀的尺寸不能小于64字節(jié),最大不能超過1518字節(jié)。這里不包括幀前導(dǎo)和幀起始符兩個(gè)區(qū)域,共計(jì)18字節(jié)。
2.2 can總線
can是一種采用多主工作方式、非破壞仲裁技術(shù)和接收濾波工作方法的數(shù)據(jù)通信協(xié)議,按照iso有關(guān)標(biāo)準(zhǔn),can的拓?fù)浣Y(jié)構(gòu)為總線式,因此也稱為can總線[3]。
can協(xié)議中每幀的數(shù)據(jù)量都不超過8字節(jié),以短幀多發(fā)的方式實(shí)現(xiàn)數(shù)據(jù)的高實(shí)時(shí)性,糾錯(cuò)能力非常強(qiáng),傳輸數(shù)據(jù)的準(zhǔn)確性高,真正的高速網(wǎng)絡(luò),傳輸速率可以達(dá)到1mbit/s。它的通信介質(zhì)可以是雙絞線、同軸電纜或光導(dǎo)纖維[4]。
can2.0b中存在兩種不同的幀結(jié)構(gòu),其區(qū)別在于標(biāo)識(shí)符場(chǎng)的長度。具有11位標(biāo)識(shí)符場(chǎng)的稱為“標(biāo)準(zhǔn)幀”,具有29位標(biāo)識(shí)符場(chǎng)的稱為“擴(kuò)展幀”[5]。can2.0b協(xié)議規(guī)定的兩種幀結(jié)構(gòu)如圖3所示。
圖3中:
◇sof幀起始,由一個(gè)顯性位構(gòu)成,占1位寬度;
◇替代遠(yuǎn)程請(qǐng)求srr(substitute remote request),占1位寬度;
◇遠(yuǎn)程發(fā)送請(qǐng)求rtr(remote transmission request),占1位寬度;
◇ide(identifier extension),占1位寬度;
◇數(shù)據(jù)長度碼dlc,表示數(shù)據(jù)場(chǎng)的長度,占4位;
◇r1、r0為保留位,各占1位寬度;
◇幀結(jié)束,為7個(gè)隱性位。
從上述分析中可以看出,can協(xié)議為了提高實(shí)時(shí)性采用了短幀結(jié)構(gòu),而以太網(wǎng)幀相對(duì)要長得多,can協(xié)議采用載波偵聽多路存取/消息優(yōu)先仲裁(csma/amp)機(jī)制解決沖突,而以太網(wǎng)幀采用csma/cd機(jī)制,這兩點(diǎn)構(gòu)成了can與以太網(wǎng)之間的主要差異,也是傳統(tǒng)can-ethernet網(wǎng)關(guān)效率底下的主要原因。
3 submerge frame方法研究
3.1 submerge frame方法介紹
為了討論方便,我們稱為以太網(wǎng)發(fā)往can總線的數(shù)據(jù)幀為“下行的”,而can總線發(fā)往以太網(wǎng)的幀為“上行的”。
submerge frame方法是一種基于隧道技術(shù)的處理方法,它包括上行和下行兩部分,對(duì)于下行數(shù)據(jù),以太網(wǎng)中的服務(wù)器將即將傳輸?shù)腸an幀中的前k個(gè)作為傳輸?shù)臄?shù)據(jù)一起打包送入以太網(wǎng)中;嵌入式網(wǎng)關(guān)根據(jù)規(guī)定對(duì)以太網(wǎng)幀解包,將恢復(fù)的can幀按照優(yōu)先級(jí)依次傳輸。對(duì)于上行數(shù)據(jù),嵌入式網(wǎng)關(guān)將收到的幀按照優(yōu)先級(jí)排隊(duì),然后將前k個(gè)can幀作為傳輸數(shù)據(jù)打包送入以太網(wǎng)中,基于submerge frame方法的以太網(wǎng)幀結(jié)構(gòu)圖4所示,其中1#-k#為k個(gè)完整的can幀。
submerge frame方法的實(shí)現(xiàn)過程很簡(jiǎn)單,它基于優(yōu)先級(jí)對(duì)等待服務(wù)的需can幀進(jìn)行排隊(duì) ,當(dāng)可以使用媒體時(shí),將隊(duì)列中的前k個(gè)幀合并作為上層數(shù)據(jù)打包送入以太網(wǎng)。從幀格式可以看出,將can幀打包以太網(wǎng)幀和can幀數(shù)據(jù)恢復(fù)都非常簡(jiǎn)單。
submerge frame方法并不主動(dòng)等待k個(gè)幀的到來,它總是盡可能地將can幀送出,以縮短信息傳輸延時(shí)。
3.2 submerge frame方法效率研究
submerge frame方法效率包括下行數(shù)據(jù)效率和上行數(shù)據(jù)效率兩部分。
下行數(shù)據(jù)效率的關(guān)鍵在于以太網(wǎng)的傳輸?shù)却龝r(shí)間長短,以太網(wǎng)采用1-堅(jiān)持csma/cd動(dòng)態(tài)信道分配方式。當(dāng)網(wǎng)絡(luò)上的任何一個(gè)節(jié)點(diǎn)需要傳遞數(shù)據(jù)時(shí),它首先偵聽信道,看其他站點(diǎn)是否有數(shù)據(jù)傳送,如果信道忙,則它就繼續(xù)等待,直到信道空閑再進(jìn)行發(fā)送嘗試,為了方便計(jì)算,可以假設(shè)在穩(wěn)定的重負(fù)載情況下每幀數(shù)據(jù)平均發(fā)送時(shí)間為p,則信道效率η滿足[6]:
式中,:2τ為每個(gè)競(jìng)爭(zhēng)時(shí)槽的時(shí)間長度;a為在某個(gè)時(shí)間槽內(nèi)一個(gè)工作站獲得傳輸媒體的概率。
設(shè)以太網(wǎng)各節(jié)點(diǎn)發(fā)送數(shù)據(jù)幀的平均幀長為f,網(wǎng)絡(luò)帶寬為b,則上式可以變?yōu)椋?/p>
從式(2)中可以看出,信道效率η由決定,在具體應(yīng)用環(huán)境中以太網(wǎng)中工作站的數(shù)目一般是固定的,因此,τ、a、b都是定值。此時(shí),網(wǎng)絡(luò)的效率幀長f決定,f越大,局域網(wǎng)的效率越高。
從上述分析中已經(jīng)得知,can的幀長為:60-124位(擴(kuò)展幀),40-104位(標(biāo)準(zhǔn)幀)。若簡(jiǎn)單采用隧道技術(shù),需將其補(bǔ)足46位,在最差情況下,有信息只占信息總量的10%;即使在最好情況下,有效信息也只占信息總量的33.6%,而此時(shí),由于幀長f=64字節(jié),η僅為幀長1518字節(jié)時(shí)的,可得,在一個(gè)有20個(gè)節(jié)點(diǎn)的100m赫茲交換以太網(wǎng)中,з約為50%。
在實(shí)際應(yīng)用中,由于網(wǎng)絡(luò)負(fù)載隨具體情況變化較大,實(shí)際應(yīng)用中submerge frame方法處理下行數(shù)據(jù)的效率也隨之變化??傮w來說,網(wǎng)絡(luò)負(fù)載越重,傳輸?shù)却龝r(shí)間就越長,submerge frame方法的效率也就越高。
上行數(shù)據(jù)的討論集中在網(wǎng)關(guān)對(duì)接收到的can幀的處理上,設(shè)can總線上由7個(gè)發(fā)送節(jié)點(diǎn),不妨設(shè)這些節(jié)點(diǎn)所發(fā)送的信息幀的標(biāo)識(shí)符為1,…,n。其中:1#節(jié)點(diǎn)所發(fā)送的信息幀具有最小標(biāo)識(shí)符,從而具有最高優(yōu)先級(jí),n#節(jié)點(diǎn)具有最低優(yōu)先級(jí)。由于can到主發(fā)送機(jī)制,所以i節(jié)點(diǎn)發(fā)送信息幀是參數(shù)為λi的poisson過程[7]。就網(wǎng)關(guān)內(nèi)部而言,排隊(duì)過程是非搶占的。若一次對(duì)k個(gè)幀進(jìn)行打包,整個(gè)傳輸過程就形成了一個(gè)具有n個(gè)優(yōu)先級(jí)的m/g/k隊(duì)列。
這樣,信息幀i的排隊(duì)時(shí)間分為4部分:1)先于i到達(dá)且優(yōu)先級(jí)高于i的、還未獲得服務(wù)的信息幀的服務(wù)時(shí)間;2)后于i到達(dá)、優(yōu)先級(jí)高于i的信息幀的服務(wù)時(shí)間;3)正在接受服務(wù)的信息幀的剩余傳送時(shí)間;4)以太網(wǎng)阻塞延時(shí)。這樣,即可得到信息幀i的平均等待時(shí)間:
式中:λi為信息幀i的到達(dá)率,i=1,…,n;μi為信息幀i的服務(wù)率,i=1,…,n;ρi為信息幀i的使用率,ρi=(i=1,…,n)即服務(wù)強(qiáng)度;wi為信息幀i的等待時(shí)間,i=1,…,n;xi為在總線上的傳送信息幀i的時(shí)間,即占用服務(wù)臺(tái)的時(shí)間。
采用常規(guī)can時(shí)的最大排隊(duì)時(shí)間可由非搶占式任務(wù)的調(diào)度理論獲得,這里不再贅述。
從式(3)中可以看出submerge frame方法在處理上行數(shù)據(jù)時(shí)可以明顯提高傳輸效率;
◇整個(gè)系統(tǒng)的平均服務(wù)時(shí)間由;
◇服務(wù)強(qiáng)度變?yōu)樵瓉淼?/k,系統(tǒng)穩(wěn)定的概率更高;
◇縮短了后續(xù)幀的等待時(shí)間、以太網(wǎng)的阻塞時(shí)間以及高優(yōu)先級(jí)can幀的傳輸延時(shí)。
3.3 submerge frame 方法中的關(guān)鍵問題
submerge frame方法實(shí)現(xiàn)簡(jiǎn)單,其效率在于隊(duì)列k的選擇,對(duì)于下行數(shù)據(jù),k值可以相對(duì)固定。下行數(shù)據(jù)一般由服務(wù)器根據(jù)控制條件發(fā)出,因?yàn)榭梢詫?duì)發(fā)出的can幀的數(shù)目和目的網(wǎng)絡(luò)進(jìn)行充分優(yōu)化,k值就可以通過對(duì)應(yīng)用的分析得出,對(duì)于上行數(shù)據(jù),k值的大小與can網(wǎng)絡(luò)節(jié)點(diǎn)數(shù)量,以太網(wǎng)網(wǎng)絡(luò)規(guī)模、負(fù)載以及控制域的條件密切相關(guān),也就是說,can總線網(wǎng)絡(luò)規(guī)模越大,以太網(wǎng)負(fù)載越重,控制域上報(bào)信息和突發(fā)事件頻度越高,k值也就越大,一般而言,以太網(wǎng)網(wǎng)絡(luò)實(shí)際可用帶寬要比can帶寬大,所以在輕載情況下k值一般不會(huì)太大,當(dāng)發(fā)生網(wǎng)絡(luò)阻塞時(shí),k值會(huì)急劇上升,在一定規(guī)模的網(wǎng)絡(luò)中,k值可以得出一個(gè)統(tǒng)計(jì)學(xué)量,在此不做討論。
由于submerge frame 方法中k值和服務(wù)等待時(shí)間緊密相連,這就形成了網(wǎng)絡(luò)效率和服務(wù)時(shí)間之間的矛盾。k值越大,網(wǎng)絡(luò)效率提高就越多,但也就意味著服務(wù)等待時(shí)間越長,實(shí)時(shí)性相對(duì)較差,k值越小,服務(wù)時(shí)間越短,同時(shí)伴隨著網(wǎng)絡(luò)效率的下降,在極限情況下就退化成了m/g/1隊(duì)列,submerge frame方法的效率降至最低。
4 結(jié)論
submerge frame方法是一種被動(dòng)的狀態(tài),即在網(wǎng)絡(luò)服務(wù)時(shí)間長時(shí)將等待服務(wù)隊(duì)列中的前k個(gè)幀合并,使平均服務(wù)時(shí)間從,從而提高了服務(wù)強(qiáng)度,增強(qiáng)了系統(tǒng)穩(wěn)定性,由于網(wǎng)絡(luò)實(shí)時(shí)性更為重要,submerge
frame方法并不主動(dòng)等待若干個(gè)幀的到來。在實(shí)際應(yīng)用中,網(wǎng)絡(luò)周期流量構(gòu)成網(wǎng)絡(luò)負(fù)載的主要部分之一,而這種周期流量的周期往往是可以控制的?;趕ubmerge
frame方法的can-以太網(wǎng)網(wǎng)關(guān)已經(jīng)在安徽省“十五”二期科技攻關(guān)項(xiàng)目——井下安全生產(chǎn)數(shù)字化平臺(tái)中得到應(yīng)用。在應(yīng)用中通過對(duì)周期流量產(chǎn)生時(shí)間的充分優(yōu)化,網(wǎng)關(guān)在重網(wǎng)絡(luò)負(fù)載環(huán)境中運(yùn)行穩(wěn)定,安全達(dá)到了預(yù)期目標(biāo)。
評(píng)論