汽車網路生長中的神經系統

 

 


  電子系統的入侵,根本改變並正在改變著各行各業,從天上飛的到水里遊的。電子系統之於汽車亦如是,除了四個輪子,一切改變皆有可能。

  汽車網路生長中的神經系統  
  給汽車測智商
  傳統的汽車無非是一輛聽話或是不太聽話的機器,談不上智力。所以新手上路,開車“點頭哈腰”,乘客前仰後合也比較正常。高大的SUV快速過彎時明顯的側傾遵循的是物理規律,在離心力和重力的合力下,甚至會出現一側輪子離地的驚險場面。

  這些對採用電子系統和主動懸掛的新車而言,都不再是問題。當啟動車輛,新手過猛的踩下油門,換能器偵測到車速、油門變化,通過網路將訊息傳遞到懸掛系統的電控單元(ECU),ECU根據一定的數學模型計算,然後發出改變前後懸掛系統阻尼係數的指示元,車身的姿態就會得到有效控制,啟動“哈腰”和剎車“點頭”的現象就能得到有效遏制。

  防側傾功能與此類似,所不同的祇是防側傾需要增加轉向角度訊息。車速、轉向角度訊息通過ECU計算,ECU發出指示元改變車身一側懸掛系統的阻尼係數,防止車身傾斜過大。

  這些功能並非是對概念車描繪,在目前的中高級車中並不鮮見。例如已在中國上市的雪鐵龍C5就採用了電子液壓懸掛系統。該懸掛系統可以根據不同情況將底盤高度進行四級調整,當時速超過110公里時,底盤最小離地間隙有7CM,大約相當於跑車的底盤高度,當低速通過顛簸路面時,底盤可以升到與越野車接近的高度——最小離地間隙20CM。還有目前已經普遍在中檔車中使用的自動巡航技術,例如沙特、馬自達6都裝備有自動巡航裝置。
  從這幾個簡單例子中可以看出,目前汽車功能的革新已經超過了某一功能單元革新的範疇,通常都需要整車各個子系統協調配合。如果把整車看作是一個有機體的話,分佈於汽車各個部分的換能器就如同有機體的感覺器官,而各種電磁、液壓的執行機構就好比是有機體的肌肉。這些感覺器官和作為執行機構的肌肉是各種功能的基礎,但是決定整車智慧水準的卻是將這些系統連線在一起的神經網路。有沒有這個網路和這個網路的水準,實際上決定了所有這些功能單元協調一致的水準,也就決定了整個有機體的智慧水準。
  對汽車而言,這個神經網路就是汽車網路。
    汽車網路的發展
  汽車網路的發展動力,主要來源於汽車電子的越來越多的使用。有研究証明,在目前的汽車創新中,70%來源於電子系統的革新。前兩年國產汽車還把ABS作為一項汽車檔次標準標記在醒目的位置,現在這樣的新技術層出不窮,比如牽引力控制(TCS)、電子制動力分配(EBD)、電子行駛穩定系統(ESP)、剎車輔助(BA)等等。另一組資料可能更有說服力,1977年全球汽車的電子系統平均每輛是110美金,到了2001年這個數位是1800美金,2003年超過了2000美金。這裡面還不考慮電子系統功能增強價格降低的因素。即便是國內,今年平均每輛車電子系統的成本也會超過1000美金。
  但是電子系統的使用也帶來了新的問題,越來越多的電子系統必然會需要越來越多的連線,例如最簡單的四門電動門窗和中控,如果採用點對點連線,就需要大把的線索,增加成本是一個方面,更重要的是給布線帶來了巨大的困難,同時還增加了很多安全隱患。有調查証明汽車自燃,有很大的比例就是因為線束老化或是磨損,電路打火引起火災。

  因此通過點對點連線的方式在上世紀90年代中就走到了盡頭,越來越多的電子裝置使用越來越多的連線基本上撞到了工程技術上的南牆

  1998年摩托羅拉公司的一個報告顯示,用匯流排網路技術代替寶馬車的四門控制系統的點對點連線後,因此減少的連線就有15公斤之多。匯流排網路相對點對點連線的優越性由此可見一斑。

  匯流排技術頗類似於神經系統中的神經纖維,神經元和神經中樞之間的訊息傳遞並不是嚴格的點對點的關係,而是若干神經元共用一條條神經進行訊息傳遞。若干的換能器、執行機構和ECU公用一個公共的資料通道——匯流排,在匯流排控制器的管理下共享傳輸通道,而不是每通信的換能器、執行機構和ECU之間通過點對點連成複雜的網狀階組

  目前汽車上普遍採用的汽車網路有:局部互聯協定LIN(Local Interconnect Portocol)、控制欄位網CAN(Cortroller area network或稱現場控制匯流排)。正在發展中的汽車網路技術還有高速容錯網路協定FlexRay,用於汽車多媒體和導航的MOST,以及與電腦網路相容的藍牙、無線區域網路等無線網路技術。
  主要網路技術
  美國汽車工程師協會(SAE)將汽車網路根據速率劃分為A、B、C三個等級:A類面向換能器/執行器控制的低速網路,速率通常有1Kbps-10Kbps,主要套用於電動門窗、座椅調節、燈光照明等控制;B類面向獨立模組間資料共享的中速網路,速率一般為10Kbps-100Kbps,主要套用於電子車輛訊息中心、故障診斷、儀表顯示、安全氣囊等系統;C類面向高速、即時閉環控制的多路傳輸網,最高位元速率可達1Mbps,主要用於懸架控制、牽引控制、先進發動機控制、ABS等系統。

  對A類網路,目前普遍採用的是LIN。
  LIN(Local Interconnect Porto-col):LIN是一種低成本的串行通訊網路協定,採用單主控制器/多個從裝置的樣式,在主從裝置之間只需要一根12V的訊號線。最高傳輸速率可達20Kbps,典型的LIN網路的節點數可以達到12個。以門窗控製為例,在車門上有門鎖、車窗玻璃開關、車窗降電機、作業按鈕等,只需要一個LIN網路就可以輕鬆搞定。而通過CAN通訊閘,LIN網路還可以和汽車其它系統進行訊息置換,實作更豐富的功能。例如中控、安全等。LIN的主從式階組不會因為一個從裝置的故障而破壞整個網路,例如小偷不可能破壞電動後視鏡而破壞整個防盜系統。目前LIN已經成為國際標準,被多數整車廠商和配件廠商所接受。
  CAN(Cortroller area network):CAN是目前使用最廣泛的一種汽車網路,從10萬元以下的國產賽到過百萬的奔馳都不同程度的使用了CAN。有統計顯示,2000年全球CAN節點的銷售超過了1億個節點。CAN匯流排是一種多主方式的串行通訊匯流排,最高速率可以達到1Mbps,有很高的抗干擾能力。連線於各個ECU之間的CAN匯流排實際上是由CAN控制器、收發器和一對雙絞線構成。CAN匯流排控制器可以撿出各種錯誤並可以讓出錯的單元結束匯流排,另外CAN匯流排還有優先等級控制可以滿足即時通訊。在一輛汽車通常有兩條或三條獨立的CAN匯流排,速度低於125Kbps的CAN匯流排通常用於非關鍵即時的“舒適系統”,例如天窗、座椅、門窗、冷氣機和前後燈。一般而言這些系統會先就近連成一個LIN網路,然後通過通訊閘與CAN匯流排相連。低速CAN匯流排有自動休眠功能,匯流排可以讓沒有作業的節點進入節電樣式,在需要的時候再由匯流排喚醒。高速匯流排的速度可以達到500Kbps甚至1Mbps,主要用於關鍵即時系統,例如引擎管理、防抱死系統、巡航系統、底盤系統等。高速CAN和低速CAN通過通訊連線在一起構成整個汽車網路,通常這些通訊設在儀表盤。
  X BY WIRE是未來汽車的發展方向,簡單得說就是線控作業。該技術來源於飛機製造,基本思想就是用電子控制系統代替機械控制系統,減輕重量提高可靠性。其中X是指油門、制動、方向等作業,例如電子油門、電子制動、電子方向控制等等。由整個設計思想涉及動力、制動、方向控制等關鍵功能,對汽車網路也就提出了不同要求。目前存在相互競爭的幾種網路技術,比如時間觸發網路協定TTP(Time-triggered protocol)和高速容錯網路FlexRay
  其中FlexRay得到眾多實力廠商例如寶馬、大眾一般的支援,最近包括豐田、日產、本田等一些亞洲汽車廠商也加入了FlexRay標準組織,使之有可能成為事實標準。FlexRay設計主要滿足兩方面的要求:首先是可靠性要求。因此FlexRay採用冗餘備份的辦法,分別由兩條匯流排和兩個網路控制單元構成一個完整網路,每ECU分別和兩條匯流排相連,正常情況下可以利用雙通道進行資料傳遞,當其中一個網路發生故障時也可以由另一個備份網路承擔通訊任務。其次FlexRay還必須滿足速率要求,發動機、制動和方向等控制有很強的即時特性,必須有很高的資料傳輸速率才能滿足。FlexRay採用時分多路存取技術(TDMA),將匯流排劃分成很多時隙,各裝置按照優先等級占用不同的時隙實作對匯流排的復用。同時FlexRay支援星型連線和匯流排連線,對高速裝置可以採用點對點方式與FlexRay匯流排控制器連線,構稱星型階組;對低速網路可以採用類似CAN匯流排的方式連線。
  對汽車越來越多的多媒體等訊息裝置,目前採用的網路技術還有MOST、整合資料轉送匯流排、1394、藍牙等技術。這些網路技術要求更高的資料轉送速率。過從汽車網路設計的整體思路來看,目前高速訊息網路和對安全可靠性要求更高的LIN、CAN甚至FlexRay網路的完全融合還需要更長的時間。
   在2002年,一般的汽車已經展示了完全線控的新型概念車,隨著動力系統的發展,汽車電子在汽車工業中的套用,真的就像宣傳所說,除了四個輪子一切改變皆有可能。

 

 

 

 

 

 

用於汽車網路的LIN協定分析

 

 

 

 

 

 

 

 

LIN協定適用於汽車內進行低成本、短距離、低速網路通信,其用途是傳輸開關設定狀態以及對開關變化回應。本文詳細分析了LIN匯流排協定的特性、訊息協定的組成、檢錯機制等,並介紹如何基於PICmicro器件來實作LIN匯流排從節點。

LIN協定是由歐洲車輛製造商協會開發用來進行低成本、短距離、低速網路通信,其用途是傳輸開關設定狀態以及對開關變化回應,因此通信事件是在百毫秒以上時間內發生,而不像引擎管理等其它速度快得多的汽車套用。此協定支援在單根線上進行雙向通信,使用由RC振盪器驅動的低成本微控制器,這樣可以省去晶振或陶瓷振盪器的成本。另外,此協定實際上是以時間和軟體上的代價換取硬體上成本的節約。LIN協定的每一條訊息都包含自動鮑率步進的資料,最高可以支援鮑率為20k,同時低功耗睡眠樣式可以關斷匯流排,以避免產生不必要的功耗。匯流排可以由任意一個節點提供電源。

LIN匯流排特性12 ALT="圖1:典型的LIN協定組態。">

LIN匯流排融合了I2C和RS232的特性:像I2C匯流排那樣,LIN匯流排通過一個電阻上拉到高電平,而每一個節點又都可以通過集電極開路磁碟機將匯流排拉低;像RS232那樣通過起始位和停止位識別出每一個位元,每一位在時脈上異步傳輸

1給出了典型的LIN協定組態。當任意一個節點將匯流排拉低時,匯流排處於低電平,識別著匯流排進入占用狀態;而當所有節點都使匯流排浮空時匯流排處於電池的電壓(9-18V),則意味著匯流排處於非占用狀態(Recessive state);在空閒狀態下浮空的匯流排通過電阻被上拉到高電平。

匯流排工作在9到18伏的電壓下,但所有連線到匯流排上的器件必須能承受40V的電壓。一般情況下,微控制器通過線路磁碟機或接收器與匯流排隔離。匯流排在每一個節點上被端接到Vbat,主節點通過一個1kΩ的電阻端接而從節點則通過一個20kΩ到47kΩ的電阻端接。匯流排最大長度為40米。

匯流排上傳輸的每一個位元都是與起始位和停止位一起組成幀。起始位的狀態與空閒狀態相反(即為0),而停止位則與空閒狀態同為1。在每位元中,首先傳輸的是最低位元。

訊息協定

主節點控制匯流排的方式是輪各個從節點並與匯流排上其餘部分共享從節點的資料。從節點僅在接到主節點的指令時才進行資料傳輸,這樣就可以進行雙向傳輸並且無需進一步的仲裁。訊息傳輸是以主節點發出一次同步插斷開始,緊接著是訊息的同步欄位和訊息欄位。通過在每條訊息的起始處轉送的同步欄位還設定了整個匯流排的時脈,每從節點用該位元來調整其鮑率

同步插斷使匯流排進入占用狀態,該狀態保持時間為13位資料的傳輸時間,緊接著是一個停止位(非占用狀態),這告知從節點即將有訊息傳輸。主節點與從節點的時脈漂移最大允許在15%,因此從節點接收的同步插斷可能祇有11位或長達15位資料位的傳輸時間。

每一條訊息的第二個位元是標示位元,用來告知匯流排在該位元後面傳輸的是什麼資料和哪一個節點應該接聽,以及接聽的長度(標示欄位如圖2所示)。一條指令僅會有一個從節點對其進行回應,從節點僅在主節點的指示下才傳送資料。資料要出現在匯流排上,每一個節點都可以接收到。因此,無須主節點專門控制從節點之間的通信。12 ALT="圖2:標示欄位組成。 ">

設計中採用廉價的RC振盪器,從節點必須在每一次傳輸時偵測主節點的鮑率並調整其自身目前的鮑率。因此,每一次通信都由一個由交替的“0”和“1”組成的同步位元開始。識別欄位緊跟在同步欄位的後面,它告知匯流排後面傳輸的內容是什麼。識別欄位又分為個子欄位,最低4位(0-3位)是定址匯流排上的器件,中間兩位(4-5位)是後面傳輸的訊息的長度,最高兩位(6-7)用作奇偶檢查位。

除了睡眠指令,LIN協定並沒有定義每一條訊息的內容。其它指令是由具體套用來定義的。

檢錯機制

下面描述的錯誤必須被偵測出,並且在每節點內進行計數。

位錯誤-傳輸節點必須將它認為應該傳輸的資料位與匯流排上實際出現的資料位進行比較。由匯流排需要回應時間,控制器必須在偵測資料位之前等待足夠長的時間。假設最小的電壓翻轉速率為1V/μs,而匯流排最高電壓為18V,則傳送器必須等待18μs才能偵測匯流排上的資料位是否正確。

校驗和錯誤-每一條訊息的內容都是由校驗和位元進行保護。

奇偶校驗錯-指令位元的6個資料位由兩個奇偶檢查位進行保護,需要重新進行計算這些位並比較。如果錯誤出現,應當忽略目前指令並且記錄下錯誤。LIN協定中沒有直接的錯誤報告機制,但每一個從節點應當追蹤其自身的錯誤,主節點可以要求從節點將錯誤狀態作為正常訊息協定的一部分來傳輸。

LIN匯流排與CAN匯流排

LIN協定並不直接與CAN匯流排相容,但人們期望兩者進行相互作業。CAN匯流排可能用在整個汽車內來實作通信,而LIN匯流排僅用在汽車的局部電路內,如車門。為了連線兩種匯流排,需要採用CAN-LIN協定接口節點,該節點從LIN匯流排節點收集訊息然後轉送到CAN匯流排上。

低功耗睡眠樣式

主節點通過傳送識別碼0x80指示所有節點進入睡眠樣式,睡眠指令後面跟隨的資料位元的內容沒有定義。收到睡眠指令的從節點應當對本身進行設定,以便當匯流排發生改變時能喚醒,並關閉自身的電壓以使電流消耗最低。當處於睡眠樣式時匯流排將處於高電平並且不消耗電流。

任意一個節點都可以通過傳送喚醒訊號來喚醒匯流排。當收到喚醒訊號後,一般情況下所有的節點應當活化並等待主節點開始匯流排輪

硬體範例12 ALT="圖3:採用LIN協定的範例硬體。">

3給出了有兩個按鈕和三個LED組成的硬體範例。每按動十下按鈕1 LED1改變一次狀態。同樣,每按動十下按鈕2,LED2改變一次狀態。作為識別為ID1的回應,按鈕的按動次數被轉送到匯流排上。作為識別為ID4的回應,按鈕的按動次數的重新整理被轉送到匯流排上。

軟體作業

LIN協定常式工作在由RB0觸發的插斷下以實作匯流排的睡眠/喚醒。在觸發插斷時,常式對低電平資料位的長度進行計數,然後讀同步位元並確定資料位時間,最後再將其與最初的資料位時間進行比較,以確定最初的低電平時間是否大於10個資料位的時間,大於10為同步插斷,小於10為喚醒訊號。如果是喚醒訊號,常式結束並繼續等待同步插斷;如果是同步插斷,常式就讀取指令位元,檢查奇偶位並檢查動作表(action table)來確定接下來的動作。動作表定義了匯流排上資料的來源或目的地。

為了初始化LIN協定的從節點控制代碼(Slavehandler),使用者必須呼叫InitLinSlave常式,這個常式初始化RB0插斷引腳和TMR0寄存器。TMR0寄存器用來測量資料位的長度並產生鮑率。初始化完成之後,使用者可以執行自己的常式。一旦偵測到RB0引腳上的下降沿,使用者常式就將被插斷。當偵測到下降沿時,常式就跳前往插斷伺服程式。必須禁止除了TMR0和RB0插斷之外所有的插斷源,以便對同步欄位進行精確測量。計算出鮑率之後,插斷伺服程式就結束執行。

在下一次RB0插斷發生時,LIN協定Slavehandler自動進入接收樣式,以接收識別欄位或資料位元。如果偵測到識別欄位的起始位,就對識別欄位進行接收和解碼。然後,根據收到的識別執行相應的代碼,例如存儲資料或點亮LED。匯流排上一個傳輸完成之後,標誌FCOMPLETE被置位。這個標誌指示所有的資料都已正確接收完畢並可以進行後續的處理。此標誌由使用者韌體清除。

LIN協定從節點控制代碼Slavehandler最高可以工作在20K的鮑率下,需要420字的常式存儲空間以及23位元的資料存儲空間。

其低成本,LIN協定具有在汽車套用中廣泛採用的潛力。可以使用內建的RC振盪器並且執行在4MHz的時脈頻率下的諸如Microchip的各種器件的微處理器,使得設計師們能以最低的可能成本設計套用系統。