《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 通信與網(wǎng)絡(luò) > 設(shè)計應(yīng)用 > 基于CAN總線的單主時鐘同步方法研究
基于CAN總線的單主時鐘同步方法研究
2016年微型機(jī)與應(yīng)用第24期
季霆
(南通大學(xué) 電氣工程學(xué)院,江蘇 南通226000)
摘要: 高精度和高可靠的時鐘同步方法是CAN總線能夠安全運(yùn)行的關(guān)鍵,在分析主從、協(xié)商同步特點(diǎn)的基礎(chǔ)上,提出了一種基于CAN總線的單主時鐘協(xié)商同步方法,該方法僅需要一個時鐘同步主節(jié)點(diǎn)即可實(shí)現(xiàn)總線的可靠運(yùn)轉(zhuǎn),當(dāng)從節(jié)點(diǎn)失效時利用CAN總線的時鐘特性及時對即時偏差進(jìn)行估計,使總線各節(jié)點(diǎn)依然能夠正常工作,并引入時鐘方差的概念更新主時鐘同步優(yōu)先級列表選擇新的主節(jié)點(diǎn)。最后利用CANoe軟件對該方法進(jìn)行仿真,并利用51單片機(jī)、SJA1000T以及TJA1050構(gòu)建硬件實(shí)驗(yàn)平臺,結(jié)果表明該時鐘同步機(jī)制能夠防止單節(jié)點(diǎn)失效,可靠性高,具有更高的同步精度。
Abstract:
Key words :

  季霆

  (南通大學(xué) 電氣工程學(xué)院,江蘇 南通226000)

       摘要:高精度和高可靠的時鐘同步方法是CAN總線能夠安全運(yùn)行的關(guān)鍵,在分析主從、協(xié)商同步特點(diǎn)的基礎(chǔ)上,提出了一種基于CAN總線的單主時鐘協(xié)商同步方法,該方法僅需要一個時鐘同步主節(jié)點(diǎn)即可實(shí)現(xiàn)總線的可靠運(yùn)轉(zhuǎn),當(dāng)從節(jié)點(diǎn)失效時利用CAN總線的時鐘特性及時對即時偏差進(jìn)行估計,使總線各節(jié)點(diǎn)依然能夠正常工作,并引入時鐘方差的概念更新主時鐘同步優(yōu)先級列表選擇新的主節(jié)點(diǎn)。最后利用CANoe軟件對該方法進(jìn)行仿真,并利用51單片機(jī)、SJA1000T以及TJA1050構(gòu)建硬件實(shí)驗(yàn)平臺,結(jié)果表明該時鐘同步機(jī)制能夠防止單節(jié)點(diǎn)失效,可靠性高,具有更高的同步精度。

  關(guān)鍵詞:時鐘同步;即時偏差;主時鐘選擇;時鐘方差

  中圖分類號:U469文獻(xiàn)標(biāo)識碼:ADOI: 10.19358/j.issn.1674-7720.2016.24.018

  引用格式:季霆. 基于CAN總線的單主時鐘同步方法研究[J].微型機(jī)與應(yīng)用,2016,35(24):61-65,69.

0引言

  控制器局域網(wǎng)(Controller Area Network,CAN)是目前應(yīng)用最廣泛的總線之一,其具有實(shí)時性好、抗干擾能力強(qiáng)、可靠性高的優(yōu)點(diǎn),因此受到越來越多用戶的青睞。目前國內(nèi)外對CAN總線進(jìn)行了大量的研究,希望提高總線系統(tǒng)運(yùn)行的精度和安全,本文以時鐘同步算法為研究對象,對CAN總線進(jìn)行研究。

  國內(nèi)外諸多文獻(xiàn)對該領(lǐng)域進(jìn)行了研究,文獻(xiàn)[1]提出了基于主從配置的CAN總線時鐘同步算法,只需要發(fā)送一條同步消息即可保證網(wǎng)絡(luò)中所有節(jié)點(diǎn)的同步,節(jié)省了網(wǎng)絡(luò)資源,但是主節(jié)點(diǎn)一旦失效就無法實(shí)現(xiàn)時鐘同步。文獻(xiàn)[2]在協(xié)商時鐘同步方法[34]的基礎(chǔ)上提出了一種基于軟件的“前期協(xié)商”時鐘同步方法,該算法引入了同步主節(jié)點(diǎn)優(yōu)先級表的概念,在主節(jié)點(diǎn)失效時根據(jù)同步主節(jié)點(diǎn)優(yōu)先級表選擇新的主時鐘節(jié)點(diǎn),既實(shí)現(xiàn)了節(jié)點(diǎn)容錯錯,也減少了網(wǎng)絡(luò)同步開銷,然而該方法中同步主節(jié)點(diǎn)優(yōu)先級表一旦建立無法改變,降低了時鐘選擇的實(shí)時性,并且對網(wǎng)絡(luò)延時考慮較少,也降低了同步精度。文獻(xiàn)[5]在分析主從、協(xié)商等同步算法的基礎(chǔ)上,提出了基于最小“相對即時偏差”的主從協(xié)商選擇方法(以下簡稱為“相對偏差選擇方法”),該方法可以在主時鐘節(jié)點(diǎn)失效時協(xié)商選擇出新的主時鐘節(jié)點(diǎn),并且給出了網(wǎng)絡(luò)延時的測算方法,獲得了更高的時鐘精度,但是該方法并沒有考慮各個節(jié)點(diǎn)之間由于距離、溫度等原因而造成的網(wǎng)絡(luò)延時誤差。

  本文在上述時鐘同步方法的基礎(chǔ)上,對CAN總線時鐘同步過程進(jìn)行研究,提出了一種基于CAN總線的單主時鐘協(xié)商同步選擇方法,該方法對即時偏差與網(wǎng)絡(luò)延時測算方法進(jìn)行了改進(jìn),可以提高CAN系統(tǒng)同步精度,減少網(wǎng)絡(luò)負(fù)載率。

1CAN時鐘同步基本問題描述

  1.1CAN時鐘同步

  CAN總線時鐘同步可分為應(yīng)用層時鐘同步和物理層時鐘同步,其中物理層同步又分為硬同步和重同步,只有物理層同步準(zhǔn)確無誤,應(yīng)用層時鐘同步才能被正確執(zhí)行[58]。本文主要對應(yīng)用層時鐘同步進(jìn)行研究,通過對從節(jié)點(diǎn)相對于主節(jié)點(diǎn)的即時偏差進(jìn)行測量計算,從而對本地時鐘進(jìn)行調(diào)節(jié),以獲得更加精確的時間信息。

  1.2時鐘同步基本問題描述

  在CAN總線上,每個節(jié)點(diǎn)時鐘均由其內(nèi)部時鐘振蕩器驅(qū)動,每個振蕩器都產(chǎn)生一定頻率的脈沖,同時每個節(jié)點(diǎn)內(nèi)部都包含一個軟件計數(shù)器對脈沖進(jìn)行計數(shù)。若節(jié)點(diǎn)k時鐘振蕩器的頻率為fk(t),那么該節(jié)點(diǎn)計數(shù)器的值稱為節(jié)點(diǎn)k的本地時鐘Tk(t)。本地時鐘Tk(t)可由式(1)計算[9],其中t0為節(jié)點(diǎn)k初始時刻的實(shí)際時刻,Tk(t0)為節(jié)點(diǎn)k在初始時刻的本地時鐘。

  Tk(t)=∫tt0fk(t)dt+Tk(t0)(1)

  若令節(jié)點(diǎn)k在第m個時鐘同步周期的實(shí)際起始時刻為tm0,實(shí)際結(jié)束時刻為tmf,則在一個同步周期T(T=tmf-tm0)內(nèi),由于時間較短,振蕩器保持穩(wěn)定不發(fā)生劇烈頻偏,為了方便討論,假設(shè)節(jié)點(diǎn)k在該時鐘同步周期內(nèi)的時鐘振蕩頻率為一定值fmk,那么由式(1)可得節(jié)點(diǎn)k在第m個時鐘周期內(nèi)的本地時間為:

  Tmk(t)=fmk[t-tm0]+Tmk(t0)

 ?。╰m0<t≤tmf)(2)

  在一個CAN總線系統(tǒng)中,由于各節(jié)點(diǎn)的時鐘振蕩器受到內(nèi)部或者外部環(huán)境的影響,產(chǎn)生的脈沖頻率并不相同,導(dǎo)致節(jié)點(diǎn)時鐘產(chǎn)生漂移,時鐘漂移的程度通常用漂移率ρ來描述,即1臺時鐘每1 s偏離標(biāo)準(zhǔn)時間的微秒數(shù)。那么在一個時鐘同步周期T內(nèi),由于時鐘漂移而產(chǎn)生的主節(jié)點(diǎn)與從節(jié)點(diǎn)之間的時鐘差值稱之為時鐘偏差,記某一從節(jié)點(diǎn)k相對于主節(jié)點(diǎn)i的即時偏差[10] Tmoffset(t)=Tmi(t)-Tmk(t)(tm0<t≤tmf),將式(2)帶入該式可得:

  Tmoffset(t)=[fmi-fmk][t-tm0]+Tmi(t0)-Tmk(t0)(tm0<t≤tmf)(3)

  在時鐘同步過程中,漂移往往是一個連續(xù)的過程,所以從節(jié)點(diǎn)k第m次時鐘同步的時間漂移率ρmk=Tmoffset/T。

  為了保證CAN系統(tǒng)的時鐘精度,總線上各從節(jié)點(diǎn)每隔一個時鐘同步周期需要根據(jù)本節(jié)點(diǎn)與主節(jié)點(diǎn)之間的時間偏差對本地時鐘以及時鐘頻率進(jìn)行調(diào)整。假設(shè)節(jié)點(diǎn)k在第m-1個時鐘同步周期結(jié)束時刻tm-1f開始測量計算該時刻的即時偏差,第m個時鐘同步周期開始時刻tm0完成測量計算并對本地時鐘以及時鐘頻率進(jìn)行調(diào)整,調(diào)整的值分別為ΔTmk=Tm-1offset(tf)=Tmi(tf)-Tmk(tf)和Δfmk=ρm-1k=Tm-1offset(tf)/T。

  由于tm0-tm-1f的值相對于時鐘同步周期T來說很小,可以近似看作為0,因此本地時鐘和時鐘頻率有如下關(guān)系:

  Tmi(t0)=Tm-1i(tf)

  Tmk(t0)=Tm-1k(tf)-ΔTmk

  fmk=fm-1k-Δfmk+ρm-1k

  fmi=fm-1i+ρm-1i(4)

  其中ρm-1i和ρm-1k分別是主節(jié)點(diǎn)i和從節(jié)點(diǎn)k在第m-1個時鐘同步周期內(nèi)產(chǎn)生的漂移率。將式(4)帶入式(3)可得:

  Tmoffset(t)=[ρm-1i-ρm-1k][t-tm0](tm0<t≤tmf)(5)

  假設(shè)主節(jié)點(diǎn)i和從節(jié)點(diǎn)k處于相同環(huán)境下,那么在同一時間段內(nèi)(一個時間同步周期)ρm-1i-ρm-1k可以看作為一個定值ρm-1,那么帶入式(5)可得:

  Tmoffset(t)=ρm-1[t-tm0](tm0<t≤tmf)(6)

  圖1給出主從節(jié)點(diǎn)本地時鐘之間的關(guān)系,實(shí)線為主節(jié)點(diǎn)本地時鐘與實(shí)際時間之間的關(guān)系,虛線為從節(jié)點(diǎn)本地時鐘與實(shí)際時間之間的關(guān)系。

 

001.jpg

2基于CAN總線的單主節(jié)點(diǎn)協(xié)商同步算法

  2.1即時偏差計算

  為了測量計算第m個時鐘同步周期的即時偏差Tmoffset,引入以下兩個特殊報文:Sync報文和Resp報文,Sync報文用于同步從節(jié)點(diǎn)和主節(jié)點(diǎn)周期性發(fā)送,Resp報文為Sync報文的響應(yīng)報文,Resp報文內(nèi)包含Sync報文到達(dá)從節(jié)點(diǎn)到達(dá)時間等信息[11]。

002.jpg

  即時偏差Tmoffset測算過程如圖2所示。主節(jié)點(diǎn)i按照定義的時間間隔T周期性地廣播Sync報文,在第m個周期起始時刻t0(節(jié)點(diǎn)i的本地時鐘為Tmi(t0))向總線上從節(jié)點(diǎn)發(fā)送Sync報文;t1時刻總線上從節(jié)點(diǎn)k接收到Sync報文并記下接收到Sync報文的時間(節(jié)點(diǎn)k的本地時鐘為Tmk(t1))。因此,由式(2)可得:

  Tmi(t0)=Tm-1i+Tm-1i(t0)=Tfm-1i+Tm-1i(t0)

  Tmk(t0)=Tm-1k+Tm-1k(t0)=T(fm-1k+Δfm-1k+ηmk)+ΔTm-1k+Tm-1k(t0)(7)

  其中Tm-1i和Tm-1k分別是主節(jié)點(diǎn)i和從節(jié)點(diǎn)k在第(m-1)個時鐘同步周期內(nèi)的本地時間間隔,假設(shè)總線上同一個消息的網(wǎng)絡(luò)傳輸延時是相等的,可得Tm-1k(t1)=Tm-1k(t0)+Tdelay,Tmk(t1)=Tmk(t0)+Tdelay,那么帶入(7)式中可得:

  Tmk(t1)=Tm-1k+Tm-1k(t1)(8)

  由式(7)和(8)可得Tm-1i和Tm-1k的表示式:Tm-1i=Tmi(t0)-Tm-1i(t0),Tm-1k=Tmk(t1)-Tm-1k(t1)。此時,從節(jié)點(diǎn)k可以計算出第m個時鐘同步周期開始時刻即(m-1)個時鐘同步周期結(jié)束時刻的即時偏差:

  Tmoffset(t0)=Tmi(t0)-Tmk(t0)

  =Tm-1i(t0)-Tm-1k(t0)+(Tm-1i-Tm-1k)

  =Tm-1offset(t0)+[Tmi(t0)-Tm-1i(t0)-Tmk(t1)+Tm-1k(t1)](9)

  由于在(m-1)個時鐘同步周期開始時刻,從節(jié)點(diǎn)k已經(jīng)根據(jù)前一時鐘同步周期所測量計算的即時偏差對本地時鐘進(jìn)行調(diào)整,因此式(9)中的Tm-1offset(t0)≈0,即時偏差如式(10)所示:

  Tmoffset(t0)=Tmi(t0)-Tm-1i(t0)-Tmk(t1)+Tm-1k(t1)(10)

  其中Tm-1i(t0),Tm-1k(t1)的值已經(jīng)在上一個時鐘同步周期保存在從節(jié)點(diǎn)k中,新值測量計算完成,自動保存。從節(jié)點(diǎn)完成即時偏差的測量和計算后,即對本地時鐘以及時鐘頻率進(jìn)行調(diào)整,調(diào)整值分別為ΔTmk和Δfmk。

  ΔTmk=Tmi(t0)-Tm-1i(t0)-Tmk(t1)+Tm-1k(t1)

  Δfmk=ΔTmk/Tm-1k=Tmi(t0)-Tm-1i(t0)-Tmk(t1)+Tm-1k(t1)

  =[Tmi(t0)-Tm-1i(t0)-Tmk(t1)+Tm-1k(t1)]/[Tmk(t1)-Tm-1k(t1)](11)

  當(dāng)從節(jié)點(diǎn)k完成時鐘同步,t2時刻(節(jié)點(diǎn)k的本地時鐘為Tmk(t2)),從節(jié)點(diǎn)k將向主節(jié)點(diǎn)i發(fā)送Resp報文,Resp報文中包含Tmoffset(t0),Tmi(t0),Tmk(t1)的值。

  2.2主時鐘失效選擇

  為了保證總線安全可靠地運(yùn)行,避免主時鐘節(jié)點(diǎn)失效而造成系統(tǒng)癱瘓,網(wǎng)絡(luò)中往往需要多個主節(jié)點(diǎn)。若總線網(wǎng)絡(luò)中僅有一個主節(jié)點(diǎn),那么就需要引入一種選擇機(jī)制來確保系統(tǒng)能夠在主節(jié)點(diǎn)失效后快速確立新的主節(jié)點(diǎn)。文獻(xiàn)[2]中通過在主時鐘同步優(yōu)先級列表中預(yù)先設(shè)置優(yōu)先級的方法來達(dá)到選擇新主節(jié)點(diǎn)的目的,但是該優(yōu)先級表一旦確立將無法改變,導(dǎo)致選擇新的主節(jié)點(diǎn)之后精度變低。本文在原主時鐘同步優(yōu)先級列表的基礎(chǔ)上提出一種基于實(shí)時優(yōu)先級的主時鐘同步優(yōu)先級列表。

  為了能夠?qū)崟r評價各個節(jié)點(diǎn)的優(yōu)先級,引入時鐘方差的概念[1213]:

  AVOJCD)I]1F1EN$UG)~EW@W.png

  每個時鐘同步周期從節(jié)點(diǎn)都能通過式(12)計算出時鐘方差σ2,并在網(wǎng)絡(luò)中廣播,每個節(jié)點(diǎn)對σ2值進(jìn)行排序,更新主時鐘同步優(yōu)先級列表。σ2值越小說明該節(jié)點(diǎn)越穩(wěn)定,則在主時鐘同步優(yōu)先級列表中的優(yōu)先級越高。

  在通信過程中,若總線發(fā)生如下情況之一則認(rèn)為主節(jié)點(diǎn)發(fā)生故障:(1)兩節(jié)點(diǎn)成功接收消息的時刻差值Δ>ΔΓtight(ΔΓtight是CAN總線緊密性極限);(2)同步周期內(nèi),從節(jié)點(diǎn)在規(guī)定時間內(nèi)未收到同步消息或者即時偏差超過正常范圍(|Tmoffset|>(1+ρmk)ΔΓtight),則系統(tǒng)判定主節(jié)點(diǎn)發(fā)生故障,錯誤計數(shù)器+1,此時從節(jié)點(diǎn)k就要對即時時鐘偏差做出估計,該周期時鐘偏差的估計值Tmoffset(t)如下式所示。

  KOKRP)BQL6[@S6~IGWTECBJ.png

  如果該節(jié)點(diǎn)故障次數(shù)達(dá)到設(shè)定值n,則從節(jié)點(diǎn)k認(rèn)為該主節(jié)點(diǎn)i失效,向總線各節(jié)點(diǎn)發(fā)出更換主節(jié)點(diǎn)的請求。其他節(jié)點(diǎn)接收請求,檢查錯誤計數(shù)器并做出反饋,若錯誤計數(shù)器達(dá)到n/2,則同意,否則反對。當(dāng)同意更換主節(jié)點(diǎn)數(shù)超過50%時,系統(tǒng)掃描主時鐘同步優(yōu)先級列表,選擇優(yōu)先級最高的節(jié)點(diǎn)成為主節(jié)點(diǎn),并向總線上所有節(jié)點(diǎn)發(fā)送確認(rèn)消息。

  2.3基于CAN總線的單主節(jié)點(diǎn)協(xié)商同步算法

  本文建立了一種基于CAN總線的單主時鐘協(xié)商同步算法,如圖3所示。

004.jpg

  具體步驟如下:

  (1)初始化設(shè)置,設(shè)置CAN控制寄存器,錯誤計數(shù)器M置0,更新時鐘同步優(yōu)先級列表,選擇初始優(yōu)先級最高的節(jié)點(diǎn)i作為主時鐘節(jié)點(diǎn)。

 ?。?)主時鐘節(jié)點(diǎn)i按照定義的時間間隔T周期性地廣播Sync報文,記錄該時刻的本地時鐘,第m個時鐘同步周期的時刻記為Tmi(t0);成功接收到該Sync報文的從節(jié)點(diǎn)k記錄接收時刻的本地時鐘,記為Tmk(t1)。

  (3)計算Tmoffset(t0),各從節(jié)點(diǎn)根據(jù)式(10)計算出本節(jié)點(diǎn)與主節(jié)點(diǎn)之間的即時偏差Tmoffset(t0),若|Tmoffset|≤(1+ρmk)ΔΓtight,則根據(jù)式(11)計算從節(jié)點(diǎn)本地時鐘以及頻率的調(diào)整值ΔTmk和Δfmk,令本地時鐘Tmk(t)=Tmk(t)+ΔTmk,fmk=fmk+Δfmk+η,否則錯誤計數(shù)器M=M+1,根據(jù)式(13)計算出從節(jié)點(diǎn)在該時鐘周期內(nèi)的時鐘偏差估計值Tmoffset(t),從而得出調(diào)整值的估計值ΔTmk、Δfmk ,并對節(jié)點(diǎn)時鐘進(jìn)行調(diào)整。圖3基于CAN總線的單主時鐘同步算法(4)各從節(jié)點(diǎn)完成時鐘同步測量計算過程后,保存各值并向總線上其他節(jié)點(diǎn)發(fā)送Resp報文,該報文包括Tmoffset(t0)、Tmi(t0)、Tmk(t1)的值,各節(jié)點(diǎn)接收到Resp報文后根據(jù)式(12)計算時鐘方差σ2,并更新時鐘同步優(yōu)先級列表。

 ?。?)在規(guī)定時間內(nèi)沒有收到報文的節(jié)點(diǎn),錯誤計數(shù)器M=M+1,同時本地時鐘Tmk(t)=Tmk(t)+ΔTmk,fmk=fmk+Δfmk+η。

  (6)若某節(jié)點(diǎn)錯誤計數(shù)M≥n,向總線發(fā)送更換主節(jié)點(diǎn)請求。

  (7)各節(jié)點(diǎn)接收到更換請求,檢查各自錯誤計數(shù)器,若達(dá)到n/2,則同意更換,否則不同意。

  (8)若同意更換主節(jié)點(diǎn)數(shù)超過50%,則系統(tǒng)掃描主時鐘同步優(yōu)先級列表,選擇優(yōu)先級最高的節(jié)點(diǎn)成為主節(jié)點(diǎn),并向總線上所有節(jié)點(diǎn)發(fā)送確認(rèn)消息,否則不同意。

  (9)同步周期結(jié)束,各從節(jié)點(diǎn)計數(shù)器清零,返回步驟(2)。

3實(shí)驗(yàn)驗(yàn)證

  為了驗(yàn)證上述算法,在Vector CANoe仿真軟件上對其進(jìn)行試驗(yàn)驗(yàn)證。首先建立7個ECU節(jié)點(diǎn)所組成的CAN網(wǎng)絡(luò),如圖4所示。網(wǎng)絡(luò)初始化時將選擇出主節(jié)點(diǎn)(本次仿真選擇VCU為初始主節(jié)點(diǎn))。建立節(jié)點(diǎn)消息數(shù)據(jù)庫,每個節(jié)點(diǎn)都包含_Sync_Message消息和_Resp_Message消息,其中_Sync_Message為主節(jié)點(diǎn)向各從節(jié)點(diǎn)發(fā)送同步消息,各從節(jié)點(diǎn)收到_Sync_Message消息后,向主節(jié)點(diǎn)發(fā)送_Resp_Message消息,_Message消息為各節(jié)點(diǎn)之間信息傳輸?shù)钠胀ㄏⅰ?/p>

005.jpg

  利用CAPL編寫程序,設(shè)置主節(jié)點(diǎn)發(fā)送同步消息的周期為200 ms,程序如下。

  variables

  {

  message VCU_Sync_Message mVCU_Sync_Message;

  mstimer timer_VCU;

  }

  on timer timer_VCU

  {

  setTimer(timer_VCU,200);

  output(mVCU_Sync_Message)

  }

  配置完成后進(jìn)行仿真,仿真結(jié)果如圖5所示。

  由于在仿真過程中各節(jié)點(diǎn)都在理論情況下運(yùn)行,為了使仿真能夠反映真實(shí)的系統(tǒng)情況,在仿真過程中加入適當(dāng)?shù)母蓴_。選擇優(yōu)先級最高的節(jié)點(diǎn)VCU作為初始主時鐘節(jié)點(diǎn),其余節(jié)點(diǎn)為從節(jié)點(diǎn)。當(dāng)主時鐘節(jié)點(diǎn)VCU發(fā)生故障時,各節(jié)點(diǎn)掃描主時鐘同步優(yōu)先級列表,選擇優(yōu)先級最高的節(jié)點(diǎn)EMS作為新的主時鐘節(jié)點(diǎn)。仿真結(jié)果表明本文所提算法可以防止主從時鐘同步的單點(diǎn)失效,增強(qiáng)了系統(tǒng)的可靠性。圖5仿真過程Trace窗口

  圖6CAN通信模塊接線圖為了能夠真實(shí)反映本文所提出的同步算法的可靠性以及精度,構(gòu)建一個具有真實(shí)節(jié)點(diǎn)的實(shí)驗(yàn)平臺,并利用CANoe軟件對整個系統(tǒng)進(jìn)行功能分析和測試。其中每一個節(jié)點(diǎn)均由微控制器(51單片機(jī))、CAN控制器(SJA1000T)以及CAN收發(fā)器(TJA1050)所構(gòu)成,CAN通信模塊連接圖如圖6所示。

006.jpg

007.jpg

  選取文獻(xiàn)[2]中的前期協(xié)商同步方法以及文獻(xiàn)[5]中的相對偏差選擇方法與本文所述方法在上述實(shí)驗(yàn)平臺上進(jìn)行比較,圖7為上述時鐘同步方法在波特率為500 kb/s時利用CANoe軟件測量的同步偏差的絕對值,橫坐標(biāo)為同步周期(ms),縱坐標(biāo)為同步偏差(μs)。從圖中可以看出,本文時鐘同步方法的同步偏差略小于相對偏差選擇方法,而前期協(xié)商同步方法的同步偏差都要大于其他兩種方法,但是相對偏差選擇方法在同步過程中同步消息并沒有考慮傳輸過程中的消息延時,因此本文時鐘同步方法的精度更好。

4結(jié)論

  本文在分析主從同步、協(xié)商同步等方法存在問題及CAN網(wǎng)絡(luò)時鐘同步特點(diǎn)基礎(chǔ)上,對CAN總線時鐘同步基本問題進(jìn)行了描述,并提出了一種基于CAN總線的單主時鐘協(xié)商同步算法。該算法可在主、從節(jié)點(diǎn)出現(xiàn)失效時利用CAN總線的時鐘特性及時地對即時偏差進(jìn)行估計,使總線各節(jié)點(diǎn)依然能夠正常工作,并利用主時鐘同步優(yōu)先級列表選擇新的主節(jié)點(diǎn)。實(shí)驗(yàn)結(jié)果表明:新的時鐘同步機(jī)制能夠防止單點(diǎn)失效,可靠性高,具有更高的同步精度,并且適用更為廣泛,為CAN系統(tǒng)精確時鐘同步提供更好的解決方法。

參考文獻(xiàn)

 ?。?] MACII D,FONTANELLI D,PETRI D.A master-slave synchronization model for enhanced servo clock design[J].Brescia:ISPCS 2009 International IEEE Symposium on Precision Clock Synchronization for Measurement,Control and Communication,2009:1 6.

 ?。?] 張利,李縣軍,王躍飛.汽車CAN網(wǎng)絡(luò)時鐘同步方法研究[J].電子測量與儀器學(xué)報,2011,25(2):147 152.

 ?。?] GADERER G,LOSCHMIDT P,SAUTER T,et al.Improving fault tolerance in highprecision clock synchronization[J].IEEE Transactions on Industrial Informatics,2010,6(2):206 215.

 ?。?] TOVAR E,VASQUE F.Non preemptive scheduling of messages on SMTV tokenpassing network[R].RealTime Systems,2000.

 ?。?] 王躍飛,楊錦,張利,等.汽車CAN系統(tǒng)精確時鐘同步機(jī)制研究[J].電子測量與儀器學(xué)報,2014,28(1):22 28.

  [6] 王瑞曉,賀占莊.CAN總線位定時和同步機(jī)制的設(shè)計與實(shí)現(xiàn)[J].計算機(jī)技術(shù)與發(fā)展,2010,20(4):235 238.


此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。