摘 要:介紹了依照時間觸發(fā)" title="時間觸發(fā)">時間觸發(fā)現(xiàn)場總線的標(biāo)準(zhǔn),研制應(yīng)用于道路車輛的TTCAN網(wǎng)絡(luò)節(jié)點通信卡,實現(xiàn)時間觸發(fā)通信功能的開發(fā)過程。
關(guān)鍵詞:道路車輛?? 總線? TTCAN? 時間觸發(fā)
?
??? CAN總線是一種有效支持分布式控制的串行通信網(wǎng)絡(luò),具有突出的可靠性、實時性" title="實時性">實時性和靈活性等優(yōu)點,在汽車、機械、機器人、數(shù)控機床及醫(yī)療器械等領(lǐng)域得到廣泛應(yīng)用[1]。但由于CAN網(wǎng)絡(luò)沒有統(tǒng)一的全局時鐘,因此常采用事件觸發(fā)的方式組織報文發(fā)送,這種方法在實際應(yīng)用中存在一些弊端:
? ?(1)由于沒有全局同步時鐘,而是依靠各MCU進(jìn)行獨立的軟件延時,因此相鄰兩次數(shù)據(jù)發(fā)送的時間間隔不可能嚴(yán)格按照預(yù)定時序進(jìn)行,必然會出現(xiàn)一定超前或滯后。當(dāng)這種超前、滯后較嚴(yán)重時,就會引起總線時序的混亂。
?? ?(2)當(dāng)CAN網(wǎng)絡(luò)總線負(fù)載較高時,發(fā)送失敗的報文在其嘗試重發(fā)的過程中會嚴(yán)重影響網(wǎng)絡(luò)的運行穩(wěn)定,造成其他報文發(fā)送的延遲。
?? ?(3)由于沒有全局同步時鐘,網(wǎng)絡(luò)上各MCU的軟件計時會出現(xiàn)離散。尤其在周期時間較長時,節(jié)點間的時間離散會影響原定報文的發(fā)送時序。
要解決這些問題,提高系統(tǒng)的實時性、穩(wěn)定性,就必須引入全局統(tǒng)一的同步時鐘,并采用嚴(yán)格守時的時間觸發(fā)、硬件定時的TTCAN網(wǎng)絡(luò)傳輸系統(tǒng)。
1 TTCAN簡介[2]
TTCAN(時間觸發(fā)現(xiàn)場總線)是為了適應(yīng)第一代電控駕駛系統(tǒng)的需要而開發(fā)的。通信網(wǎng)絡(luò)中純粹的時間觸發(fā)操作由系統(tǒng)中統(tǒng)一的同步時間決定。信息的傳遞依賴于一個預(yù)先定義好的時間進(jìn)度表。
其主要特征是總線訪問受控于稱為“基本周期”的時間循環(huán)?;局芷诒环指畛纱_定數(shù)量的時間窗,類型包括:參考報文、獨占窗、仲裁窗和空閑窗?;局芷诘臉?gòu)成如圖1所示。
?
在一個基本周期內(nèi),“獨占”、“仲裁”和“自由”三種時間窗的個數(shù)以及排放位置可以自由定義。其功能如下:
?? ?(1)參考報文:由時間主控單元發(fā)送,用于控制基本周期的計時,并標(biāo)志著一個基本周期的開始。一個基本周期僅包含一個參考報文。
??? (2)獨占窗:用于報文的傳送,要求有足夠長的時間來保證傳送的完成。每個獨占窗為一個特定的CAN報文而保留,此時其他報文不會競爭總線。這是TTCAN最主要的特點,也是優(yōu)點。在排外窗中,如果一個報文發(fā)送失敗,則不允許重新發(fā)送,這與標(biāo)準(zhǔn)CAN協(xié)議不同。
(3)仲裁窗:當(dāng)總線空閑時,仲裁窗對所有報文都開放,并根據(jù)報文優(yōu)先級進(jìn)行仲裁。因此可以專門設(shè)計給對實時性要求很高的節(jié)點,為事件觸發(fā)留出一定的數(shù)據(jù)傳輸時間。
(4)空閑窗:是為將來系統(tǒng)的擴展而保留的時間段。因此,將來可以向系統(tǒng)加入更多的節(jié)點。
總體來看,TTCAN比目前的CAN有著時序準(zhǔn)確、帶寬利用率高、實時性好等明顯的優(yōu)點,對于道路車輛數(shù)控系統(tǒng)來說,可以提高其穩(wěn)定性、實時性和安全性。另外,因采用TTCAN而節(jié)省下來的總線負(fù)載,可以留給將來更多節(jié)點的加入,使其成為一輛全數(shù)字化的新型車輛。
2 TTCAN通信卡硬件設(shè)計[3-4]
作為完整的系統(tǒng),TTCAN通信卡要具有以下功能:
??? (1)連接CAN總線,以TTCAN標(biāo)準(zhǔn)收發(fā)CAN報文,實現(xiàn)時間觸發(fā)通信;
??? (2)通過雙口" title="雙口">雙口RAM與其他設(shè)備進(jìn)行數(shù)據(jù)交換;
??? (3)有較強的抗干擾能力。
??? 根據(jù)以上功能模塊的要求,選擇硬件設(shè)計所需的主要部件有:
??? (1)MCU:選用ATMEL公司 T89C51CC01單片機;自帶CAN控制器,集成度高,編程簡單,且支持TTCAN功能;
??? (2)雙口RAM:要求至少1KB容量,快速讀寫,有忙仲裁機制,故選擇了IDT7130;
??? (3)CAN收發(fā)器:選Philips公司的成熟產(chǎn)品 PCA82C250。
??? 為了避免外界對通信板卡的干擾,使CAN總線通信板工作更加可靠,將CAN收發(fā)器與MCU之間的信號和電源進(jìn)行隔離。另外,為了對CAN總線上的高頻噪聲進(jìn)行濾波處理,還要增加抗高頻噪聲EMC電路。通信卡各主要功能之間的關(guān)系如圖2所示。
?
3 TTCAN通信軟件" title="通信軟件">通信軟件設(shè)計
?為實現(xiàn)基于雙口RAM的TTCAN通信板卡的功能,其通信軟件應(yīng)該具有雙口RAM操作、TTCAN 通信及一些輔助功能。每項功能再細(xì)分,通信軟件主要功能框架如圖3所示。
?
??? TTCAN通信部分主要包括CAN報文收發(fā)、時間同步和定時、錯誤處理三大功能。其中,CAN報文的收發(fā)是將CAN總線傳來的報文有選擇地接收并存儲下來,并將已打包好的報文發(fā)送出去。而TTCAN的時間同步和定時發(fā)送操作則是此項設(shè)計的主要內(nèi)容,也是TTCAN通信卡的關(guān)鍵技術(shù),它的優(yōu)劣直接影響到整個TTCAN網(wǎng)絡(luò)系統(tǒng)的實時性和穩(wěn)定性。
3.1 TTCAN時序設(shè)計[5-6]
筆者針對本課題組負(fù)責(zé)的燃料電池城市客車的整車網(wǎng)絡(luò)進(jìn)行了TTCAN改造。將整車控制器" title="整車控制器">整車控制器發(fā)來的第一幀報文VCC#1看作是TTCAN基本周期的參考報文。這一幀的起始時刻(SOF)就是基本周期的起始時刻。在成功接收整車控制器發(fā)來的兩幀報文后,TTCAN節(jié)點要將報文數(shù)據(jù)解包并存入雙口RAM的指定地址,供其他設(shè)備讀取;之后各節(jié)點依次向總線發(fā)報文。目前網(wǎng)絡(luò)內(nèi)除整車控制器外,還有6個節(jié)點,共12個報文要發(fā)送。
由此可以得出整個TTCAN網(wǎng)絡(luò)的時序:基本周期開始后,先是3毫秒的時間窗用于各節(jié)點接收整車控制器數(shù)據(jù)并存進(jìn)雙口RAM,然后是14個連續(xù)的“排外”時間窗,每個窗的長度為0.5毫秒,用于發(fā)送各個報文。報文只能在指定的“獨占窗”內(nèi)發(fā)送,即使發(fā)生錯誤也不能重發(fā),這樣才能保證不會影響后續(xù)報文的發(fā)送。最后留出3毫秒的時間,給最后一個節(jié)點讀雙口RAM以及其他外圍操作。整個TTCAN網(wǎng)絡(luò)的工作時序安排如圖4所示。
??? 因此,時序控制程序的任務(wù)就是使報文能精確地在基本周期內(nèi)的對應(yīng)時刻開始發(fā)送,其中與時間觸發(fā)操作密切相關(guān)的關(guān)鍵技術(shù)如下:
??? (1) 俘獲VCC#1的幀起始時刻
T89C51CC01有一個可編程的16位計時器(CANTIMH和CANTIML),它在CAN控制器啟動后就自動運行。另有一個寄存器(CANTTCH和CANTTCL),在TTCAN模式中,它可以根據(jù)設(shè)定,自動俘獲CAN總線上每一個報文的起始(SOF)時刻或是結(jié)束(EOF)時刻??梢杂眠@套硬件機構(gòu)俘獲VCC#1的起始時刻(圖4中的時刻點0),作為基本周期的開始時刻值。
??? (2) 計算各報文延時長度,精確延時
如圖4所示,為保證第n個報文的發(fā)送時刻在基本周期內(nèi)的時刻值為T=3+0.5×(n-1)毫秒,可以利用MCU的計時器Timer1來實現(xiàn)整個延時功能。先延時基本時間3毫秒,然后循環(huán)判斷是否輪到發(fā)送(即n=1?),如果未到,則n=n-1并讓Timer1再延時0.5毫秒;如果到了則啟動報文發(fā)送,然后停止Timer1工作。對于某些要發(fā)送多個報文的節(jié)點,例如蓄電池節(jié)點要發(fā)送6個報文,它還要繼續(xù)讓Timer1再延時0.5毫秒,然后發(fā)送下一個報文,一直到發(fā)送完所有報文為止。整個延時發(fā)送過程如圖5所示。
?
?
?
3.2 TTCAN通信軟件特性
??? 將上述的雙口RAM讀寫、延時、報文發(fā)送這三個主要操作與系統(tǒng)初始化、狀態(tài)顯示、容錯處理等附屬功能結(jié)合起來,就構(gòu)成了完整的TTCAN通信軟件系統(tǒng)。TTCAN通信軟件相對于原有CAN通信軟件具有優(yōu)良的特性:
?? (1)報文發(fā)送間隔更緊密,縮短了報文發(fā)送周期;
?? (2)對實時性要求高的報文可在一個基本周期內(nèi)發(fā)送3次,其平均周期約為4毫秒,能滿足實時性的要求;
?? (3)報文發(fā)送時序準(zhǔn)確,出錯概率低,減輕整車控制器的容錯運算負(fù)擔(dān);
?? (4)雙口RAM兩端的讀寫也由同一時序控制,可免去繁瑣的雙口RAM判忙機制。
4 TTCAN網(wǎng)絡(luò)多節(jié)點聯(lián)調(diào)測試
實驗室內(nèi)構(gòu)建出由5個節(jié)點組成的TTCAN網(wǎng)絡(luò),并制定出理想的報文發(fā)送時序,如圖6所示。TTCAN網(wǎng)絡(luò)多節(jié)點聯(lián)調(diào)測試的主要任務(wù)是檢驗各節(jié)點能否與整車控制器實現(xiàn)同步,并按照既定時序發(fā)送報文。
?
4.1 時序準(zhǔn)確性測試
??? 為了測試5節(jié)點TTCAN網(wǎng)絡(luò)的時序準(zhǔn)確性,測量CAN物理總線的差分電壓信號,記錄下波形圖,顯示了TTCAN基本周期中最重要的延時量。
??? (1)圖7顯示了連續(xù)的兩個基本周期。測量兩個基本周期開始時刻的時間間隔為13.04毫秒,符合既定時序13毫秒的要求。
??? (2)圖8是圖7中后4個節(jié)點發(fā)送報文部分的放大圖。
?
?
??? 可見相鄰兩幀報文之間的間隔都基本為0.5毫秒,而且誤差都很小。各節(jié)點嚴(yán)格按照既定時序圖發(fā)送報文,說明已經(jīng)成功實現(xiàn)了TTCAN功能。
4.2 測試數(shù)據(jù)統(tǒng)計
????利用NI公司的高性能CAN卡,對TTCAN網(wǎng)絡(luò)進(jìn)行持續(xù)測量,記錄連續(xù)400個周期的數(shù)據(jù),并將多組數(shù)據(jù)進(jìn)行統(tǒng)計分析,結(jié)果如表1所示。
??? 由統(tǒng)計結(jié)果可見所有測量的關(guān)鍵時間量都基本等于理想值,且最大絕對誤差只有0.034毫秒,最大相對誤差也只有0.97%,不會影響時序的穩(wěn)定性,說明TTCAN節(jié)點的時間控制算法是成功的。
??? 在整個TTCAN板卡軟、硬件系統(tǒng)的開發(fā)過程中,都是圍繞著求快、求準(zhǔn)和保障穩(wěn)定的思想來設(shè)計的。硬件設(shè)計上采用更高的MCU及CAN控制器處理速度;對信號部分使用光耦隔離,減小了外界對板卡內(nèi)數(shù)字電路的干擾;在電路板布置上將數(shù)字電路與模擬電路分開,并且對兩部分電源進(jìn)行了電源隔離,避免了兩部分電路間的相互干擾。軟件設(shè)計上則以TTCAN協(xié)議為基礎(chǔ),將TTCAN的報文收發(fā)與讀寫雙口RAM的操作有機結(jié)合起來,統(tǒng)一編制在一個有序而且緊密的時間序列中,實現(xiàn)了TTCAN網(wǎng)絡(luò)的時間觸發(fā)通信功能。
??? 本文構(gòu)建的5節(jié)點TTCAN網(wǎng)絡(luò)在測試中體現(xiàn)了完美的時序準(zhǔn)確性、快速性及系統(tǒng)穩(wěn)定性,由此說明新開發(fā)的TTCAN通信板卡是成功的。
參考文獻(xiàn)
[1] ?BOSCH. CAN Specification Version 2.0. BOSCH.1991-09.
[2] ?ISO11898-4. Road vehicles-Controller Area Network?(CAN) Part4:Time triggered communication.International ?Standard Organization,2001-6.
[3] ?鄔寬明.CAN總線原理和應(yīng)用系統(tǒng)設(shè)計.北京航空航天大學(xué)出版社,1996.
[4] ?陽憲惠.現(xiàn)場總線技術(shù)及其應(yīng)用.北京:清華大學(xué)出版社,1999.
[5] ?SAE J1939. Recommended practice for a serial control?and communications vehicle network. Society of Auto-
?motive Engineers,1994.
[6] ?Armel Corporation. T89C51CC01 Enhanced8-bit microcontroller with CAN controller and Flash memory.2003.








