摘要:介紹了光纖單CAN網(wǎng)絡(luò)的工作特點及其不足。為提高光纖CAN網(wǎng)絡(luò)的生存性,設(shè)計了光纖CAN總線自愈環(huán)網(wǎng)。采用塑料地(POF)為傳輸介質(zhì),用波長為650nm的紅光光電收發(fā)器件實現(xiàn)光/電轉(zhuǎn)換。分析了CAN網(wǎng)絡(luò)數(shù)據(jù)幀的結(jié)構(gòu)特點,給出了基于CPLD的自愈接口電路的實現(xiàn)方法。通過組建車載光纖CAN總線自愈環(huán)網(wǎng),證明該網(wǎng)絡(luò)不但具有自愈功能,還能消除光纖CAN環(huán)形網(wǎng)絡(luò)中的阻塞現(xiàn)象。
關(guān)鍵詞:CAN 自愈環(huán) CPLD 接口電路 塑料光纖
CAN總線是德國Bosch公司于20世紀(jì)80年代初為解決汽車中眾多數(shù)據(jù)交換而開發(fā)的一種串行數(shù)據(jù)通信協(xié)議。由于其具有卓越的特性,CAN總線成為目前公認(rèn)的幾種最有前途的現(xiàn)場總線之一。CAN總線的傳輸介質(zhì)可以是雙絞線、光纖和同軸電纜。目前雙絞線CAN總線已得到了廣泛應(yīng)用,各項技術(shù)已經(jīng)成熟。雙絞線CAN網(wǎng)絡(luò)在技術(shù)在容易實現(xiàn)、造價低廉,且對環(huán)境電磁輻射有一定抑制能力。但是當(dāng)工作環(huán)境特別復(fù)雜時,其抗干擾能力并不十分令人滿意。如在電動汽車現(xiàn)場,情況較為復(fù)雜,車載電氣系統(tǒng)會產(chǎn)生強(qiáng)電磁干擾,將導(dǎo)致雙絞線CAN網(wǎng)絡(luò)不能正常工作。與雙絞線和同軸電纜相比,光纖的優(yōu)越性能--強(qiáng)大的抗EMI能力引起人們的關(guān)注。為進(jìn)一步提高CAN網(wǎng)絡(luò)的性能,應(yīng)采用光纖作傳輸介質(zhì)。由于車載局域網(wǎng)傳送距離短,同時為了降低車載光纖CAN網(wǎng)絡(luò)的成本,可選用塑料光纖(POF)作為傳輸介質(zhì)。塑料光纖在高速短距離通信傳輸中成本低、易連接、可繞性好、重量輕,故組網(wǎng)成本低。德國寶馬公司在2002年3月上市的最高級新款轎車"BMW7系列''中采用于50m POF構(gòu)筑車內(nèi)局域網(wǎng)。
光纖CAN網(wǎng)作為一種工業(yè)底層控制局域網(wǎng),其拓?fù)浣Y(jié)構(gòu)與常用局域網(wǎng)一樣,基本拓?fù)浣Y(jié)構(gòu)有總線形、環(huán)形和暈形。在光纖單環(huán)CAN網(wǎng)絡(luò)中,由于器件的延時將導(dǎo)致環(huán)路信號自激,使環(huán)形CAN網(wǎng)絡(luò)堵塞(或稱為鎖死)。為遵守CAN總線控制器在鏈路層的協(xié)議,應(yīng)設(shè)計一種光纖CAN單環(huán)網(wǎng)專用邏輯控制單元LCU。該單元的功能是:對CAN總線數(shù)據(jù)實現(xiàn)收發(fā)控制,即主節(jié)點對接收到的數(shù)據(jù)不轉(zhuǎn)發(fā),當(dāng)數(shù)據(jù)沿光纖環(huán)回到原發(fā)送節(jié)點時,立即被剔除;從節(jié)點對接收數(shù)據(jù)實現(xiàn)轉(zhuǎn)發(fā)。同時還可消除環(huán)形光纖CAN總線網(wǎng)絡(luò)的自激現(xiàn)象,保證環(huán)網(wǎng)不被堵塞。
Q光纖單環(huán)網(wǎng)絡(luò)中,節(jié)點或鏈路的故障可能造成網(wǎng)絡(luò)的癱瘓。為了提高光纖環(huán)網(wǎng)的生存性,應(yīng)構(gòu)成具有自愈功能的光纖雙環(huán)自愈網(wǎng)。
1 光纖自愈環(huán)CAN網(wǎng)總體設(shè)計
1.1 光纖自愈環(huán)結(jié)構(gòu)
光纖自愈環(huán)CAN網(wǎng)絡(luò)如圖1所示。該網(wǎng)絡(luò)有兩條光纖環(huán)路--順時針環(huán)和逆時針環(huán),各節(jié)點CAN控制器SJAl000通過接口電路與雙環(huán)光纖網(wǎng)相連,接口電路由Altera公司出產(chǎn)的復(fù)雜可編程邏輯器件(CPLD)EPM7128S、兩個光發(fā)送器LEDR和LEDL、兩個光接收器PINR和PINL組成。
1.2 接口電路的功能
光纖自愈環(huán)CAN網(wǎng)接口電路的功能是:(1)當(dāng)光纖雙環(huán)通信正常時(如圖2(a)所示),各節(jié)點右端光發(fā)送器 LEDR傳送左端光接收器PINL的數(shù)據(jù),信號順時針傳送;同理LEDL傳送PINR的數(shù)據(jù),信號逆時針傳送,即發(fā)送器選擇對側(cè)數(shù)據(jù)轉(zhuǎn)發(fā)。(2)當(dāng)單根光纖故障時(如圖2(b)所示),下游C節(jié)點接口電路實現(xiàn)環(huán)回,由于左側(cè)光接收器PINL無信號,右端光發(fā)送器LEDR選擇同側(cè)光接收器PINR數(shù)據(jù)轉(zhuǎn)發(fā)。(3)當(dāng)任意節(jié)點間兩根光纖故障時(如圖2(c)所以),如BC節(jié)點間光纖被切斷時,則B、C兩個節(jié)點與光纖切斷點相連執(zhí)行環(huán)回功能。此時,從A到C的信號AC則先經(jīng)順時針環(huán)到B,再經(jīng)逆時針環(huán)過A、D后到達(dá)C。而信號CA則仍經(jīng)順時針環(huán)傳輸。這種自愈功能保證在故障情況下仍能維持環(huán)的連續(xù)性。故障排除后,倒換開關(guān)自動返回原來位置。(4)實現(xiàn)節(jié)點CAN控制器數(shù)據(jù)選擇接收。其原則為:對于各節(jié)點接收的順、逆時針數(shù)據(jù),選擇PINL、PINR中先到達(dá)的數(shù)據(jù)接收。(5)實現(xiàn)節(jié)點數(shù)據(jù)選擇發(fā)送。其原則為:當(dāng)總線空閑時,選擇本節(jié)點CAN控制器發(fā)送端TX發(fā)送數(shù)據(jù),可消除環(huán)形光纖CAN總線網(wǎng)絡(luò)的自激現(xiàn)象,保證環(huán)網(wǎng)不被堵塞;當(dāng)本節(jié)點CAN控制器為接收節(jié)點時,選擇對側(cè)數(shù)據(jù)發(fā)送;當(dāng)本節(jié)點CAN控制器為接收節(jié)點時,且對側(cè)光纖通道故障,則選擇同側(cè)數(shù)據(jù)發(fā)送。(6)判別各通道幀起始和幀結(jié)束,鑒別總線是否空閑,網(wǎng)絡(luò)是否故障。如判斷到左測光接收器PINL有數(shù)據(jù)幀正在傳送時,產(chǎn)生左側(cè)發(fā)送數(shù)據(jù)標(biāo)志flag_l和網(wǎng)絡(luò)通信狀態(tài)標(biāo)志sync_l。
2 接口電路設(shè)計
光纖CAN自愈網(wǎng)的自愈功能及收發(fā)控制功能由可編程邏輯器件(ALTERA EPM7128SLC84一15)實現(xiàn),編程采用VHDL語言。下面進(jìn)行具體介紹。
2.1 輸入輸出口設(shè)置
圖3為接口電路CPLD的I/O口示意圖。其中,輸入輸出pin_l、led_l、1ed_r、pin_r分別與光/電轉(zhuǎn)換模塊PINL、LEDL、LEDR、PINR相連:txd、rxd分別與CAN痙制器的數(shù)據(jù)發(fā)送端TX、接收端RX相連;flag_txd=1代表本節(jié)點CAN控制器TX0正在發(fā)送數(shù)據(jù)幀;flag_l=1代表左側(cè)通道正在發(fā)送數(shù)據(jù)幀;flag__r=1代表右側(cè)通道正在發(fā)送單據(jù)幀。sync_l為左側(cè)網(wǎng)絡(luò)通信狀態(tài)標(biāo)志,sync_r為右側(cè)網(wǎng)絡(luò)通信狀態(tài)標(biāo)志。當(dāng)左通道正常時,輸出sync_1="l",驅(qū)動網(wǎng)絡(luò)狀態(tài)發(fā)光二極管D_sl亮;當(dāng)右通道正常時,輸出sync_r="1",驅(qū)動網(wǎng)絡(luò)狀態(tài)發(fā)光二極管D_sr亮;若網(wǎng)絡(luò)狀態(tài)發(fā)光二極管D_sr或D_sl滅,表示網(wǎng)絡(luò)對應(yīng)光纖通道出了故障。當(dāng)本節(jié)點CAN控制器選擇左通道數(shù)據(jù)接收時,輸出端rx_l/r為高電平;當(dāng)本節(jié)點CAN控制器選擇右通道數(shù)據(jù)接收時,輸出端rx_l/r為低電平。輸入端reset為復(fù)位端,低電平有效;clk0為時鐘輸入端,輸入時鐘的頻率為20MHz。
2.2 CPLD功能結(jié)構(gòu)
CPLD為控制環(huán)網(wǎng)自愈接口單元,控制電路由分頻器、中心狀態(tài)機(jī)、發(fā)送數(shù)據(jù)選擇器、接收數(shù)據(jù)選擇器組成,如圖4所示。
2.3 分頻器
通訊接口CPLD時鐘頻率為20MHz。在光纖CAN自愈環(huán)網(wǎng)中,各節(jié)點CAN控制器SJAl000和CPLD接口采用獨立的工作時鐘。為使?fàn)顟B(tài)機(jī)產(chǎn)生的flag的信號與CAN控制器數(shù)據(jù)傳送同步,以保證兩個數(shù)據(jù)選擇器的切換和數(shù)據(jù)傳送同步,應(yīng)正確選擇狀態(tài)機(jī)的時鐘。本文中CAN網(wǎng)數(shù)據(jù)傳送波特率是125kbit/s,狀態(tài).機(jī)時鐘rxclk的速率設(shè)計為數(shù)據(jù)傳送波特率的8倍,即1Mbit/s,保證在一個CAN數(shù)據(jù)位周期中可對數(shù)據(jù)讀取多次,提高抗干擾能力。所以分頻器的功能為產(chǎn)生1MHz的時鐘頻率。
2.4 中心狀態(tài)機(jī)
依據(jù)CAN 2.0B協(xié)議,CAN網(wǎng)絡(luò)數(shù)據(jù)幀由7個不同的位場組成,即幀起始、仲裁場、控制場、數(shù)據(jù)場、CRC場、應(yīng)答場、幀結(jié)束。數(shù)據(jù)場長度可為0~8個字節(jié)。幀起始位是一個顯性位低電?quot;0";幀結(jié)束是由7個隱性位"1"組成的序列;在數(shù)據(jù)幀傳送中,使用位添充技術(shù)編碼,保證數(shù)據(jù)幀位流中不會出現(xiàn)5個連續(xù)的"1''或''0"。
中心控制狀態(tài)機(jī)是本設(shè)計的核心單元。中心狀態(tài)機(jī)的功能是:(1),檢測CAN數(shù)據(jù)幀的幀起始和幀結(jié)束,產(chǎn)生相應(yīng)的發(fā)送數(shù)據(jù)標(biāo)志信號flag_txd、flag_r和flag_l。(2)產(chǎn)生網(wǎng)絡(luò)通信狀態(tài)標(biāo)志sync_r和sync_l。中心狀態(tài)機(jī)由:三個狀態(tài)機(jī)組成:本節(jié)點CAN控制器狀態(tài)機(jī)、左通道狀態(tài)機(jī)和右通道狀態(tài)機(jī)。它們分別判別各通道(TX、PIN_L和PIN_R)是否有數(shù)據(jù)傳送。下面對各處狀態(tài)機(jī)的解釋均以本節(jié)點CAN控制器狀態(tài)機(jī)為例。
各狀態(tài)機(jī)設(shè)置了61個狀態(tài), 即idle、S1、S2、S3…S60。當(dāng)總線空閑時,狀態(tài)機(jī)處于空閑態(tài)idle,此時rxclk上沿到來,檢測到txd=0時,狀態(tài)機(jī)轉(zhuǎn)向S1,同時發(fā)送數(shù)據(jù)標(biāo)志置位信號flag_txd="1";第二上沿時,狀態(tài)機(jī)無條件轉(zhuǎn)向S2;第三上沿時,狀態(tài)機(jī)無條件轉(zhuǎn)向S3;第四上沿時,狀態(tài)機(jī)無條件轉(zhuǎn)向S4;第五上沿到來時,此時是數(shù)據(jù)位的中央位置,數(shù)據(jù)穩(wěn)定,對數(shù)據(jù)再次讀取,若txd="0"的條件仍成立,表示幀起始到來,狀態(tài)機(jī)轉(zhuǎn)向S5;否則flag_txd="0",同時狀態(tài)機(jī)轉(zhuǎn)向空閑態(tài)idle,等待幀起始的到來。
當(dāng)狀態(tài)機(jī)處于S5時,此后rxclk(1MHz)每過一個時鐘周期,狀態(tài)機(jī)狀態(tài)前進(jìn)一步(S6、S7、S8、S9、S10、S11、S12、……、S58、S59、S60);每過8個時鐘周期,對CAN總線上的數(shù)據(jù)位進(jìn)行一次檢測(S12、S20、S28、S36、S44、S52、S60),保證每次檢測在數(shù)據(jù)位(位周期)中央。當(dāng)連續(xù)7次txd="1"時,檢測到"1"表示"幀結(jié)束''到來,發(fā)送數(shù)據(jù)標(biāo)志復(fù)位flag_txd="0",等待下一次幀起始的到來;否則狀態(tài)機(jī)返回狀態(tài)S5,等待幀結(jié)束的到來。
網(wǎng)絡(luò)通信狀態(tài)sync_r、sync _l是進(jìn)行環(huán)網(wǎng)自愈的重要依據(jù)。如上所述,當(dāng)左右通道發(fā)送數(shù)據(jù)狀態(tài)標(biāo)志flag="1''時,各通道網(wǎng)絡(luò)通信狀態(tài)sync="1",網(wǎng)絡(luò)狀態(tài)發(fā)光二極管D_sr、D_sl亮;當(dāng)幀結(jié)束到來時,flag="0",啟動網(wǎng)絡(luò)通信狀態(tài)計數(shù)群count,其時鐘為rxclk=1MHz,當(dāng)計數(shù)器為30000時(30ms),sync="0",網(wǎng)絡(luò)狀態(tài)發(fā)光二極管D_sr、D_sl滅。這表示某數(shù)據(jù)幀傳輸后,如果再也檢測不到其它數(shù)據(jù)幀起始,則網(wǎng)絡(luò)出了故障。如果在30ms內(nèi)能檢測到數(shù)據(jù)幀起始(flag置位),網(wǎng)絡(luò)通信狀態(tài)標(biāo)志sync持續(xù)為"1"。 計數(shù)器達(dá)到滿值的時間應(yīng)為估算的幀間最短時間間隔。
2.5 數(shù)據(jù)選擇器
發(fā)送數(shù)據(jù)選擇器和接收數(shù)據(jù)選擇器的功能是實現(xiàn)鏈路搭建(即通道選擇)。為保證網(wǎng)絡(luò)正常工作,CAN網(wǎng)絡(luò)延時應(yīng)小于一個數(shù)據(jù)寬度(位周期)。為使鏈路搭建時間盡可能短,使用最高時鐘頻率(20MHz)控制兩個數(shù)據(jù)選擇器。
在發(fā)送數(shù)據(jù)選擇器中,CPLD檢測三路通道數(shù)據(jù)txd、pin_l、pin_r。各通道數(shù)據(jù)具有不同的優(yōu)先級。優(yōu)先級的設(shè)置為:當(dāng)本節(jié)點發(fā)送數(shù)據(jù)(txd="0"或flag_txd="1'')時,左右通道發(fā)送CAN控制鞣⑺投薚X的數(shù)據(jù),即led_r=txd,led_l=txd。若本節(jié)點不發(fā)送數(shù)據(jù),則依據(jù)sync_r和sync_l選擇發(fā)送數(shù)據(jù),當(dāng)左右通道均正常時,選擇對側(cè)數(shù)據(jù)發(fā)送,led_r=pin_l,led_l=pin_r。如果某通道故障,接收不到對側(cè)數(shù)據(jù),則選擇本側(cè)數(shù)據(jù)發(fā)送,led_l=pin_l,led_r=pin_r。據(jù)此,不僅實現(xiàn)了網(wǎng)絡(luò)自愈,也消除了環(huán)網(wǎng)阻塞問題。
在接收數(shù)據(jù)選擇器中,設(shè)定左通道為首選接收通道;當(dāng)左通道數(shù)據(jù)未到時(flag_l="0'')或左通道故障時,不需人為干預(yù),自動選擇右通道接收。據(jù)此實現(xiàn)了接收優(yōu)化(選擇優(yōu)先到達(dá)通道數(shù)據(jù)接收)以及光纖CAN總線雙環(huán)網(wǎng)的自愈功能。
在電動車內(nèi)組建光纖CAN自愈環(huán)網(wǎng),采用塑料光纖作為傳輸介質(zhì),塑料光纖在可見光區(qū)有低損耗窗口,選用工作波長為650nm(紅光)的光/電轉(zhuǎn)換模塊--Agilent公司生產(chǎn)的光發(fā)送器HFBR-1528和光接收器HFBR--2528。各節(jié)點CAN控卸器選用SJAl000或帶CAN控制器的TMS320LF2407 DSP芯片,組成4個節(jié)點車載光纖CAN自愈環(huán)網(wǎng)。CAN網(wǎng)絡(luò)的數(shù)據(jù)傳送速率設(shè)置為125kbit/s,當(dāng)設(shè)置某條通道故障時,網(wǎng)絡(luò)能實現(xiàn)圖2(b)所不的自愈功能;當(dāng)設(shè)置任意節(jié)點之間的兩根光纖故障時,網(wǎng)絡(luò)能實現(xiàn)圖2(c)所示的自愈功能。當(dāng)CAN節(jié)點故障時,接口電路仍能保證雙環(huán)網(wǎng)正常工作;但當(dāng)接口電路故障時,將導(dǎo)致本節(jié)點脫離總線,其它節(jié)點實現(xiàn)網(wǎng)絡(luò)自愈,構(gòu)成單環(huán)網(wǎng)。通過示波器觀測波形,發(fā)送節(jié)點通過總線競爭發(fā)送數(shù)據(jù);接收節(jié)點能向總線上發(fā)送應(yīng)答信號;節(jié)點數(shù)據(jù)通過4節(jié)點光纖CAN自愈環(huán)返回原節(jié)點的時間小于100ns。經(jīng)測試,通道故障網(wǎng)絡(luò)自愈時間為301ms。