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








