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