李春艷,陳敬軒
(1.中國(guó)北方車(chē)輛研究所, 北京 100072;2.北京理工大學(xué)機(jī)械與車(chē)輛學(xué)院, 北京 100081)
CAN通訊中的一種動(dòng)態(tài)自同步方法設(shè)計(jì)
李春艷1,陳敬軒2
(1.中國(guó)北方車(chē)輛研究所, 北京 100072;2.北京理工大學(xué)機(jī)械與車(chē)輛學(xué)院, 北京 100081)
摘 要:解決CAN通訊在網(wǎng)絡(luò)負(fù)載大的時(shí)較為突出的因?yàn)闊o(wú)序發(fā)送和異步通訊導(dǎo)致的信號(hào)實(shí)時(shí)采集難以實(shí)現(xiàn)的問(wèn)題提出了一種同步采集方法,通過(guò)在CPU內(nèi)存中建立幀ID隊(duì)列的方式,讓每個(gè)幀都能找到對(duì)應(yīng)的發(fā)送時(shí)刻,實(shí)現(xiàn)同步采集的功能。該方法已經(jīng)在一個(gè)實(shí)際的數(shù)據(jù)采集系統(tǒng)中得到檢驗(yàn)并取得良好效果。
關(guān)鍵詞:CAN通訊;ID隊(duì)列;步采集
本文引用格式:李春艷,陳敬軒.CAN通訊中的一種動(dòng)態(tài)自同步方法設(shè)計(jì)[J].新型工業(yè)化,2015,5(4):55-60
CAN總線作為最初就專(zhuān)門(mén)為車(chē)輛通訊設(shè)計(jì)的現(xiàn)場(chǎng)總線,在車(chē)間通訊和車(chē)聯(lián)網(wǎng)領(lǐng)域有著不可或缺的作用[1-2]。但是,在車(chē)輛電子控制領(lǐng)域,如何保證收發(fā)端數(shù)據(jù)的同步,即接收端可以正確接收和解析發(fā)送端的數(shù)據(jù),對(duì)保證行車(chē)安全,提高車(chē)輛的操縱穩(wěn)定性和燃油經(jīng)濟(jì)性有著舉足輕重的地位。采用異步串行通信協(xié)議的CAN總線協(xié)議,盡管具有布線簡(jiǎn)單,實(shí)現(xiàn)容易等獨(dú)特優(yōu)勢(shì),也不可避免的面臨如何保證各個(gè)CPU通訊的同步一致的問(wèn)題?,F(xiàn)有的CAN控制器采用的硬同步和再同步機(jī)制在節(jié)點(diǎn)數(shù)量少,網(wǎng)絡(luò)負(fù)載輕的傳輸環(huán)境中有著較為良好的效果。但是,在節(jié)點(diǎn)數(shù)量變化的工程現(xiàn)場(chǎng)尤其是節(jié)點(diǎn)數(shù)目較多的車(chē)輛電子控制系統(tǒng)中,由于各節(jié)點(diǎn)受振蕩器容差的影響不盡相同,重同步機(jī)制中的各個(gè)節(jié)點(diǎn)的相位調(diào)整段長(zhǎng)度和同步跳轉(zhuǎn)寬度難以計(jì)算,各個(gè)節(jié)點(diǎn)的同步效果并不理想[3]。
同時(shí),當(dāng)節(jié)點(diǎn)數(shù)目較少時(shí),CAN總線的仲裁機(jī)制能夠較好的保障通訊的可靠性和實(shí)時(shí)性,但是在節(jié)點(diǎn)數(shù)目較多時(shí),因?yàn)闆_突導(dǎo)致的丟幀現(xiàn)象頻發(fā),低優(yōu)先級(jí)節(jié)點(diǎn)往往因?yàn)閿?shù)次競(jìng)爭(zhēng)總線使用權(quán)失敗而無(wú)法正常工作,通訊的可靠性無(wú)法得到保障[4]。現(xiàn)有的動(dòng)態(tài)優(yōu)先級(jí)算法[5]和負(fù)載均散方法[6]依舊難以避免幀碰撞,TTCAN等對(duì)CAN協(xié)議的改進(jìn)也因?yàn)楹虲AN協(xié)議不兼容的問(wèn)題難以進(jìn)行實(shí)際應(yīng)用[7]。
除此之外,在實(shí)際工程系統(tǒng)比如車(chē)輛控制系統(tǒng)中,為保證控制信息的有效性和可靠性,核心控制系統(tǒng)需要盡可能的采集到同一時(shí)刻的各個(gè)物理信息,比如節(jié)氣門(mén)開(kāi)度和油溫信息等以便處理。這一要求在傳統(tǒng)的CAN總線通信中很難滿(mǎn)足。
為此,本文提出了一種基于幀ID隊(duì)列的動(dòng)態(tài)自同步CAN通訊方法,參與通訊的每個(gè)CPU都在內(nèi)存中建立一個(gè)幀ID隊(duì)列,再把本CPU要發(fā)送的幀在這個(gè)幀隊(duì)列中重新定位,只有當(dāng)本CPU的幀ID時(shí)間到,才發(fā)送數(shù)據(jù),這樣就可以避免發(fā)生幀沖突,從而大大提高CAN通訊成功率,確保實(shí)時(shí)信息采集的可靠性和實(shí)時(shí)性,使得每個(gè)CPU都可以預(yù)測(cè)自己的信息發(fā)送時(shí)刻,實(shí)現(xiàn)準(zhǔn)同步功能。該方法已經(jīng)在一個(gè)實(shí)際的數(shù)據(jù)采集系統(tǒng)中得到檢驗(yàn),并取得了良好效果。
1.1傳統(tǒng)CAN通信的信息采集誤差
在CAN總線通信現(xiàn)場(chǎng),各個(gè)節(jié)點(diǎn)往往在實(shí)時(shí)的采集信息然后在需要的時(shí)刻發(fā)送其當(dāng)前采集到的數(shù)據(jù)。但是,因?yàn)镃AN總線通信的特點(diǎn),同一時(shí)刻只允許有一個(gè)幀傳輸,因而要想某一節(jié)點(diǎn)想要收到完全相同時(shí)刻的其余任意節(jié)點(diǎn)數(shù)據(jù)是不可能實(shí)現(xiàn)的,只能盡可能縮短并且控制二者的時(shí)間間隔。
假設(shè)系統(tǒng)中某一節(jié)點(diǎn)A需要接收同一時(shí)刻ti節(jié)點(diǎn)B、C采集到的數(shù)據(jù)。對(duì)單一節(jié)點(diǎn)而言,該節(jié)點(diǎn)不可能持續(xù)不斷的發(fā)送數(shù)據(jù),占用內(nèi)存。因而在工程現(xiàn)場(chǎng),往往會(huì)為節(jié)點(diǎn)設(shè)定一個(gè)發(fā)送周期,該節(jié)點(diǎn)每隔該周期發(fā)送一次數(shù)據(jù)。根據(jù)節(jié)點(diǎn)采集數(shù)據(jù)的重要性,各個(gè)節(jié)點(diǎn)的發(fā)送周期不盡相同。為了實(shí)現(xiàn)采集的同步,設(shè)置B的發(fā)送間隔為10ms,C的發(fā)送間隔為11ms,如此一來(lái),在理想情況下,節(jié)點(diǎn)A就能接收到B、C之間間隔為1ms的信息,準(zhǔn)同步采集能夠?qū)崿F(xiàn)。
但是,在一般情況下,由于CAN總線的廣播特性,各個(gè)節(jié)點(diǎn)都有權(quán)利征用總線傳輸信息,總線沖突較為嚴(yán)重。假設(shè)某一時(shí)刻節(jié)點(diǎn)B發(fā)送的信息和一優(yōu)先級(jí)較高的信息發(fā)生沖突,此時(shí)節(jié)點(diǎn)B因?yàn)橹俨檬⊥V拱l(fā)送該幀信息而等到下一個(gè)發(fā)送周期再發(fā)送信息。如此一來(lái),該時(shí)刻節(jié)點(diǎn)A采集到的B、C數(shù)據(jù)就相差了10ms。當(dāng)節(jié)點(diǎn)數(shù)目眾多時(shí),幀碰撞嚴(yán)重,由于仲裁失敗導(dǎo)致的采集時(shí)刻差難以計(jì)算和控制,同步采集無(wú)法實(shí)現(xiàn)。
1.2傳統(tǒng)CAN同步方式的缺陷
當(dāng)CAN系統(tǒng)中節(jié)點(diǎn)數(shù)目較少時(shí),因?yàn)閹鲎草^少,由于仲裁的其他因素引起的幀延時(shí)較小也較為固定,此時(shí),硬同步和重同步方式能較好的實(shí)現(xiàn)收發(fā)節(jié)點(diǎn)間信號(hào)的準(zhǔn)同步,逐位仲裁造成的丟幀不多。但當(dāng)網(wǎng)絡(luò)中節(jié)點(diǎn)數(shù)目較多,網(wǎng)絡(luò)負(fù)載較重時(shí),幀碰撞嚴(yán)重,傳輸延時(shí)難以確定,通訊的可靠性和實(shí)時(shí)性難以保障[8]。同時(shí),實(shí)際工程中位定時(shí)的參數(shù)受振蕩器容差和最大總線長(zhǎng)度的影響很難確定。參考文獻(xiàn)[9]中詳細(xì)介紹了重同步中各參數(shù)及延遲時(shí)間的計(jì)算和CAN控制器的配置,本文不再贅述。
此外,當(dāng)幀碰撞劇烈時(shí),如前文所述的因?yàn)橐蛑俨脤?dǎo)致的信息采集不同步問(wèn)題變得格外嚴(yán)重,信息的同步采集幾乎無(wú)法實(shí)現(xiàn)。
2.1方法的提出
為了實(shí)現(xiàn)準(zhǔn)同步的信息發(fā)送和采集功能,我們希望能夠給各個(gè)CPU定義一個(gè)有順序的發(fā)送隊(duì)列,每個(gè)CPU都按照這個(gè)發(fā)送隊(duì)列有序的發(fā)送消息。每當(dāng)隊(duì)列中的前一節(jié)點(diǎn)發(fā)送完信息之后,后一節(jié)點(diǎn)立刻發(fā)送信息。這樣一來(lái),相鄰兩節(jié)點(diǎn)間的時(shí)間延時(shí)僅僅只是每幀數(shù)據(jù)發(fā)送所需要的時(shí)間,這一時(shí)間和節(jié)點(diǎn)的發(fā)送周期相比一般微乎其微,在硬同步機(jī)制的幫助下,系統(tǒng)通信的同步性能得到更好的保障。
本文引入一種基于幀ID隊(duì)列的同步采集方法,通過(guò)軟件,在各個(gè)CPU中按照所發(fā)送的數(shù)據(jù)幀的優(yōu)先級(jí)(即幀ID的大?。┻M(jìn)行排序,形成一個(gè)優(yōu)先級(jí)由高到低的隊(duì)列。系統(tǒng)工作時(shí),各個(gè)CPU都接收總線上初始幀數(shù)據(jù)(通過(guò)驗(yàn)收濾波器實(shí)現(xiàn)),動(dòng)態(tài)調(diào)整隊(duì)列,當(dāng)CPU需要發(fā)送某幀信息時(shí),先在軟件中判斷隊(duì)列中的初始幀是否已經(jīng)接收。如果是,則立刻發(fā)送本幀數(shù)據(jù)。如此一來(lái),各自CPU的幀ID都可以找到自己發(fā)送數(shù)據(jù)的時(shí)刻,只要全部的節(jié)點(diǎn)都嚴(yán)格按照這個(gè)方式通訊,就可以保證同一時(shí)刻只有一個(gè)CPU向總線發(fā)送數(shù)據(jù),不會(huì)發(fā)生幀碰撞,大大減少幀沖突,提高CAN通訊的數(shù)據(jù)量和通信的同步性。同時(shí),也使得數(shù)據(jù)采集的時(shí)間間隔變得可控,同步采集得以實(shí)現(xiàn)。
2.2方法的內(nèi)容
2.2.1初始幀ID隊(duì)列和幀發(fā)送的時(shí)刻
上電啟動(dòng)后,各個(gè)CPU都有一個(gè)缺省的幀隊(duì)列,該隊(duì)列是進(jìn)行系統(tǒng)設(shè)計(jì)時(shí)已經(jīng)規(guī)劃好的隊(duì)列,作為起始發(fā)送數(shù)據(jù)順序隊(duì)列。
系統(tǒng)工作時(shí),每當(dāng)總線上有幀成功發(fā)送完畢,CPU就通過(guò)接收中斷進(jìn)入程序,提取該幀的幀ID并和隊(duì)列中原有的幀ID一同進(jìn)行比較排列,優(yōu)先級(jí)高的(幀ID數(shù)值小的)排在隊(duì)列的前面,優(yōu)先級(jí)低的(幀ID數(shù)值大的)排在隊(duì)伍的后面。同時(shí),每個(gè)CPU都把自己要發(fā)送的本幀數(shù)據(jù)的幀ID根據(jù)相同的方法插入這個(gè)隊(duì)列中,形成一個(gè)完整的幀ID隊(duì)列。
可以看出,各個(gè)CPU中的幀ID隊(duì)列是不斷動(dòng)態(tài)變化的,而且每個(gè)CPU中的幀ID隊(duì)列不一定完全一致。
2.2.2幀發(fā)送的方法
CPU在完成對(duì)系統(tǒng)CAN的初始化之后,每當(dāng)某個(gè)CPU得知其隊(duì)列中上一幀已經(jīng)成功發(fā)送時(shí),就立刻通過(guò)接收中斷進(jìn)入軟件,判斷當(dāng)前系統(tǒng)時(shí)刻距離上一次本CPU發(fā)送信息的時(shí)間間隔是否大于本CPU預(yù)設(shè)的發(fā)送周期,如果是,則立刻發(fā)送本幀數(shù)據(jù),如果不是,就等待時(shí)間間隔達(dá)到CPU預(yù)設(shè)的發(fā)送周期后立刻發(fā)送本幀數(shù)據(jù)。
2.3方法的一個(gè)實(shí)例
為了更好地說(shuō)明本方法的工作原理,現(xiàn)舉一個(gè)具體例子闡述采用動(dòng)態(tài)自同步方法傳輸數(shù)據(jù)的CPU工作情況。假設(shè)某系統(tǒng)中有A~E五個(gè)CPU節(jié)點(diǎn)。為敘述方便,假設(shè)每個(gè)節(jié)點(diǎn)有且僅有一個(gè)幀ID(即每個(gè)節(jié)點(diǎn)只發(fā)送一種數(shù)據(jù)幀),其幀ID由小到大依次為:A、B、C、D、E。系統(tǒng)中每個(gè)節(jié)點(diǎn)的發(fā)送周期相同,均設(shè)為10-2秒。每個(gè)CPU中定時(shí)器的時(shí)間間隔均設(shè)為10-4秒。CAN總線以其所能達(dá)到的最大通訊速率即1Mbps工作。
圖1 第一個(gè)發(fā)送周期的通訊情況
上電啟動(dòng)前,各個(gè)CPU內(nèi)部事先約定了一個(gè)發(fā)送隊(duì)列。按照其優(yōu)先級(jí)由高到低排列為:A、B、C、D、E。該隊(duì)列儲(chǔ)存在CPU的內(nèi)存中。圖1展示了第一個(gè)發(fā)送周期:0~10-2秒,各個(gè)節(jié)點(diǎn)發(fā)送信息的情況。橫軸的總長(zhǎng)度是一個(gè)發(fā)送周期即10-2秒。相鄰兩點(diǎn)間的時(shí)間間隔的意義是隊(duì)列中的前一節(jié)點(diǎn)發(fā)送信息的時(shí)間(t1)到隊(duì)列中的后一節(jié)點(diǎn)得知前一節(jié)點(diǎn)已經(jīng)發(fā)送完畢(這一功能在CPU的其他硬件中實(shí)現(xiàn))的時(shí)間(t2),這二者的時(shí)間間隔(δt=t2-t1)就是圖中相鄰兩點(diǎn)橫坐標(biāo)的間隔。因?yàn)楸緦?shí)例中假設(shè)CAN總線的通訊速率是1Mbps,因而在正常情況下,10-4秒足夠使得每幀數(shù)據(jù)傳輸完畢,因此這里設(shè)置10-4秒為后續(xù)節(jié)點(diǎn)等待的時(shí)間間隔。時(shí)刻1,A節(jié)點(diǎn)作為事先約定的初始節(jié)點(diǎn)首先發(fā)送信息。因?yàn)槊總€(gè)節(jié)點(diǎn)都接收總線上的數(shù)據(jù),因而當(dāng)節(jié)點(diǎn)A傳送完畢后,每個(gè)節(jié)點(diǎn)都知道節(jié)點(diǎn)A的數(shù)據(jù)已經(jīng)發(fā)送。一旦節(jié)點(diǎn)B發(fā)現(xiàn)節(jié)點(diǎn)A已經(jīng)完成了數(shù)據(jù)的傳輸,那么節(jié)點(diǎn)B立刻通過(guò)接收中斷標(biāo)志進(jìn)入圖中所示時(shí)刻2,而后節(jié)點(diǎn)B判斷這一時(shí)刻距離上一次本節(jié)點(diǎn)(節(jié)點(diǎn)B)發(fā)送數(shù)據(jù)的時(shí)間間隔是否已經(jīng)大于發(fā)送周期(10-2秒),如果是,節(jié)點(diǎn)B立刻發(fā)送信息。如果不是,就等待到該時(shí)間間隔達(dá)到預(yù)設(shè)周期時(shí)立刻發(fā)送本幀數(shù)據(jù)。同理,節(jié)點(diǎn)C在收到節(jié)點(diǎn)B發(fā)送的幀后,通過(guò)接收中斷進(jìn)入和B相同的發(fā)送判斷程序,如果這一時(shí)刻距離上一次本節(jié)點(diǎn)(節(jié)點(diǎn)C)發(fā)送數(shù)據(jù)的時(shí)間間隔大于發(fā)送周期(10-2秒)就立刻發(fā)送數(shù)據(jù)。同理,在后續(xù)時(shí)刻,每個(gè)CPU有條不紊的按次序發(fā)送自己的信息,完全避免了幀的碰撞,很好的保障了通信的可靠性和實(shí)時(shí)性。同時(shí)每個(gè)CPU都能知道自己發(fā)送的時(shí)刻,各個(gè)節(jié)點(diǎn)發(fā)送與接收信息之間的時(shí)間差僅僅是接收完數(shù)據(jù)的時(shí)間間隔,很好的實(shí)現(xiàn)了準(zhǔn)同步功能。
同時(shí),從圖中我們可以很清楚的看到,在現(xiàn)有的五個(gè)節(jié)點(diǎn)的系統(tǒng)中,正常情況下,該五個(gè)節(jié)點(diǎn)的數(shù)據(jù)全部發(fā)送完成的時(shí)間遠(yuǎn)遠(yuǎn)小于10-2秒,因而留有較多的空閑時(shí)間,完全能夠滿(mǎn)足新的節(jié)點(diǎn)增加的要求,而不會(huì)造成幀的碰撞沖突。
此外,在本系統(tǒng)中,節(jié)點(diǎn)A作為系統(tǒng)設(shè)計(jì)中擁有最高優(yōu)先級(jí)的節(jié)點(diǎn),起到了基準(zhǔn)的作用。節(jié)點(diǎn)A不管其他節(jié)點(diǎn)的發(fā)送狀況如何,每到其設(shè)定的發(fā)送周期時(shí)刻(本實(shí)例中為10-2秒)就立刻發(fā)送數(shù)據(jù),其他節(jié)點(diǎn)以A為基準(zhǔn)能夠校準(zhǔn)自己的發(fā)送時(shí)刻,也就是說(shuō)由于傳輸延時(shí)和接收處理信息造成的誤差不會(huì)累加,通信的同步性得到更好的保障。
2.4方法的誤差分析
如前文所述,本方法設(shè)定了一個(gè)通訊中的初始節(jié)點(diǎn)作為基準(zhǔn),所有節(jié)點(diǎn)的信息發(fā)送都以前一個(gè)節(jié)點(diǎn)的信息到來(lái)作為發(fā)送信息的依據(jù)。在一次發(fā)送周期中,所有節(jié)點(diǎn)的發(fā)送是有序的,由于只需嚴(yán)格遵守本方法的發(fā)送規(guī)則就可以避免幀的碰撞丟失,若相鄰兩個(gè)節(jié)點(diǎn)為一對(duì)收發(fā)節(jié)點(diǎn),在一次發(fā)送周期中的信息延時(shí)僅僅只是信號(hào)從前一節(jié)點(diǎn)傳輸?shù)胶笠还?jié)點(diǎn)的時(shí)間間隔以及CPU中斷處理的延時(shí),一般情況下這一延時(shí)對(duì)于一個(gè)發(fā)送周期的時(shí)間長(zhǎng)度而言完全可以忽略不計(jì),通信的同步性和實(shí)時(shí)性較傳統(tǒng)方法有極大的提高。
對(duì)于信息采集而言,仍舊以3.3所述系統(tǒng)為例,如果節(jié)點(diǎn)D需要接收同一時(shí)刻的B、C的信息,那么其收到的信息中B、C兩節(jié)點(diǎn)的物理量的時(shí)間間隔僅僅為約10-4秒,而在傳統(tǒng)的通信方法中,即使兩節(jié)點(diǎn)中僅有一個(gè)僅因?yàn)橐淮螏鲎睬抑俨檬?dǎo)致漏發(fā)一幀而造成的時(shí)間間隔為一個(gè)發(fā)送周期(10-2秒)的采集誤差。因而,采用這一通信方法能夠很好地保證信號(hào)采集的同步性。
本方法的一個(gè)主要缺點(diǎn)是要求CPU無(wú)論是否需要起始節(jié)點(diǎn)的數(shù)據(jù)都要接收起始的CAN信息,增加了CPU的負(fù)擔(dān)。同時(shí),要求每次發(fā)送的起始報(bào)文都通過(guò)接收中斷方法進(jìn)入CPU,增加了開(kāi)支。但是,由于CAN通訊天生的缺陷:為了仲裁機(jī)制能夠正確執(zhí)行,在共享介質(zhì)上的傳輸延時(shí)和位時(shí)間相比可以忽略不計(jì)是很必要的[10],這一缺陷很大程度上限制了CAN傳輸?shù)耐ㄓ嵥俾?。一般?lái)說(shuō),CAN的最大傳輸速率在傳輸距離為40m時(shí)僅有1Mbit/s;另一方面,隨著微電子技術(shù)的發(fā)展,普通CPU的字長(zhǎng)已經(jīng)基本達(dá)到了64位,CPU主頻也基本在2吉赫茲以上。因而對(duì)一般的網(wǎng)絡(luò)傳輸,尤其是在車(chē)輛實(shí)時(shí)網(wǎng)絡(luò)領(lǐng)域,CPU的處理能力完全能勝任這一任務(wù),對(duì)幀ID進(jìn)行實(shí)時(shí)排列所花費(fèi)的時(shí)間對(duì)傳輸實(shí)時(shí)性和傳輸同步性的影響可以忽略。
圖2所示是8通道壓力信號(hào)采集卡TGWH3028的原理圖,圖3是TGWH3028的實(shí)物圖,該采集卡可以同時(shí)8通道的壓力信號(hào)。如圖3所示,U1是32位ARM芯片STM32F103,該芯片價(jià)格低廉,性能優(yōu)異,具有豐富的IO口和內(nèi)置CAN控制器,實(shí)現(xiàn)對(duì)8路24位的采集芯片HX711的控制功能,實(shí)現(xiàn)采集功能,并且將采集的信息通過(guò)CAN傳送到上位機(jī),上位機(jī)再將該信息傳送到PC,從而實(shí)現(xiàn)信號(hào)采集功能。圖3所示的JP1實(shí)現(xiàn)CAN站點(diǎn)號(hào)設(shè)置功能,總線上可以有16個(gè)CPU同時(shí)工作,便于系統(tǒng)的功能擴(kuò)充。
圖2 8通道壓力采集和CAN通信原理圖
圖3 實(shí)物照片
多個(gè)采集卡在同一個(gè)CAN網(wǎng)絡(luò)通信問(wèn)題是本采集重點(diǎn)研究?jī)?nèi)容,不同的TGWH3028通過(guò)JP1就可以設(shè)置不同的CAN站點(diǎn)號(hào),CPU根據(jù)JP的狀態(tài)自動(dòng)設(shè)置不同的CAN幀ID,采用幀ID隊(duì)列方式進(jìn)行CAN通訊,實(shí)現(xiàn)實(shí)時(shí)壓力采集功能。
圖4中通道6和通道7是試驗(yàn)臺(tái)壓力信號(hào),可以看出,采集的壓力信號(hào)光滑、連續(xù),表明通訊過(guò)程中沒(méi)有數(shù)據(jù)丟失,保證了信號(hào)的連續(xù)性和實(shí)時(shí)性,也驗(yàn)證了本方法的有效性。
圖4 信號(hào)采集波形
本文介紹了一種基于幀ID隊(duì)列的同步CAN采集方法,實(shí)現(xiàn)準(zhǔn)同步的信號(hào)采集結(jié)果。該方法的目的是通過(guò)建立準(zhǔn)同步原則,讓各個(gè)CPU按照一個(gè)統(tǒng)一的順序發(fā)送,從而減少?zèng)_突發(fā)生的可能性,避免各個(gè)CPU無(wú)序發(fā)送的局面,避免了幀的碰撞,大大提高了通訊的有效數(shù)據(jù)流量和網(wǎng)絡(luò)數(shù)據(jù)的實(shí)時(shí)性,同時(shí)為各個(gè)CPU的信息發(fā)送規(guī)定對(duì)應(yīng)的幀ID序列,減少了各個(gè)CPU因?yàn)橹俨脹_突而漏發(fā)數(shù)據(jù)幀的情形,很好的保障了信息采集的同時(shí)性。
隨著工業(yè)科技的發(fā)展,工程系統(tǒng)日益復(fù)雜,CAN通訊在車(chē)輛電控、工業(yè)現(xiàn)場(chǎng)等場(chǎng)合的應(yīng)用將越發(fā)普遍。CAN通訊和采集的實(shí)時(shí)性和同步性對(duì)車(chē)輛的安全性非常重要,采用本方法對(duì)提高車(chē)輛的安全性有很好的作用,且不必變更現(xiàn)有CAN系統(tǒng)的硬件,因此應(yīng)用前景十分廣泛。
參考文獻(xiàn):
[1]Supriya Kelkar, Rajkamal.“Control area network based quotient remainder compression-algorithm for automotive applications,” in proc.of IECON 2012, 38th Annual Conference of the IEEE Industrial Electronics Society, Montreal, Canada, 2012: 3030-3036,.
[2]Supriya Kelkar, Raj Kamal, “Comparison and analysis of quotient remainder compression algorithms for automotives,” in proc.of INDICON 2012, IEEE International Conference, Kochi, India, 2012: 802-807.
[3]李芳, 劉魯源, 呂偉杰.CAN總線位定時(shí)和同步機(jī)制的分析[J].電子產(chǎn)品世界, 2005(05): 106-110.LI Fang, LIU Luyuan, LV Weijie.The Analysis of Bit Timing and Synchronization Mechanism of CAN Bus[J].electronic engineering & product world, 2005(05): 106-110.
[4]鄧婕.CAN總線通信原理分析[J].電子設(shè)計(jì)工程, 2012(07): 104-107.DENG Jie.Analysing communication mechanism of CAN bus[J].Electronic Design Engineering, 2012(07): 104-107.
[5]A.Farahani, G.Latif Shabgahi.A Novel Method for Softening some of the Drowbaks of CAN, Proc.of the Int.corif.Signal Processing Systems, Singapor, 2009: 771-775.
[6]丁旭陽(yáng).一種汽車(chē)電子控制器通信網(wǎng)絡(luò)總線負(fù)載的均散化方法: 中國(guó)專(zhuān)利, 201010528846.4[P].2011-02-16.
[7]Wang Huan,Wang Lifang,Shan Rongming, Researches on fault diagnosis of time master in TTCAN on hybrid, World Electric Vehicle Journal, 2011, 4(1): 243-248.
[8]G.Buja, R.Pimentel, and A.Zuccollo, Overcoming Babbling idiot Failures in CAN Networks: A Simple and Effective Bus Gurdian Solution for the FlexCAN Arbitration, IEEE Trans on Industrial Informations, 2007, 3(3).
[9]張健.CAN總線中位定時(shí)的設(shè)定方法[J].河北師范大學(xué)學(xué)報(bào), 2002, 26(4): 355-358.ZHANG Jian.The Method of the CAN Bit Timming[J].journal of hebei normal university (natural science edition), 2002, 26(4): 355-358.
[10]G.Cena, A.Valenzano.Fastcan: a High-Performance Enhanced CAN-Like Network, IEEE Trans on Industrial Electronics, 2000, 47(4).
A Design of a Dynamic Synchronized Method in CAN
LI Chunyan1, CHEN Jingxuan2
(1.China North Vehicle Research Institute, Beijing 100072, China; 2.School of Mechanical and Vehicular Engineering, Beijing Institute of Technology, Beijing 100081, China)
Abstract:In order to sovle the problems of tough relization of synchronized acquisition of information under the circumstance of multiple nodes, a dynamic autonomous synchronization method is proposed, which bulids a dynamic queue of IDs of frames to tell the time slot when the data to be sent and then realizes the synchronization of acquisition.The method has been tested in an information collection system and achieved great results.
Key words:CAN communication; frame identity queue; dynamic autonomous synchronization
DOI:10.3969/j.issn.2095-6649.2015.04.08
作者簡(jiǎn)介:李春艷(1967-),男,中國(guó)北方車(chē)輛研究所研究員,主要研究方向:車(chē)輛電子;陳敬軒(1992-),男, 北京理工大學(xué)機(jī)械與車(chē)輛學(xué)院交通工程碩士,主要研究方向:交通信息采集與信號(hào)處理。
Citation: LI Chunyan, CHEN Jingxuan.A Design of a Dynamic Synchronized Method in CAN [J].The Journal of New Industrialization, 2015, 5(4): 55?60.