季 霆
(南通大學 電氣工程學院,江蘇 南通226000)
基于CAN總線的單主時鐘同步方法研究*
季 霆
(南通大學 電氣工程學院,江蘇 南通226000)
高精度和高可靠的時鐘同步方法是CAN總線能夠安全運行的關(guān)鍵,在分析主從、協(xié)商同步特點的基礎(chǔ)上,提出了一種基于CAN總線的單主時鐘協(xié)商同步方法,該方法僅需要一個時鐘同步主節(jié)點即可實現(xiàn)總線的可靠運轉(zhuǎn),當從節(jié)點失效時利用CAN總線的時鐘特性及時對即時偏差進行估計,使總線各節(jié)點依然能夠正常工作,并引入時鐘方差的概念更新主時鐘同步優(yōu)先級列表選擇新的主節(jié)點。最后利用CANoe軟件對該方法進行仿真,并利用51單片機、SJA1000T以及TJA1050構(gòu)建硬件實驗平臺,結(jié)果表明該時鐘同步機制能夠防止單節(jié)點失效,可靠性高,具有更高的同步精度。
時鐘同步;即時偏差;主時鐘選擇;時鐘方差
控制器局域網(wǎng)(Controller Area Network,CAN)是目前應(yīng)用最廣泛的總線之一,其具有實時性好、抗干擾能力強、可靠性高的優(yōu)點,因此受到越來越多用戶的青睞。目前國內(nèi)外對CAN總線進行了大量的研究,希望提高總線系統(tǒng)運行的精度和安全,本文以時鐘同步算法為研究對象,對CAN總線進行研究。
國內(nèi)外諸多文獻對該領(lǐng)域進行了研究,文獻[1]提出了基于主從配置的CAN總線時鐘同步算法,只需要發(fā)送一條同步消息即可保證網(wǎng)絡(luò)中所有節(jié)點的同步,節(jié)省了網(wǎng)絡(luò)資源,但是主節(jié)點一旦失效就無法實現(xiàn)時鐘同步。文獻[2]在協(xié)商時鐘同步方法[3-4]的基礎(chǔ)上提出了一種基于軟件的“前期協(xié)商”時鐘同步方法,該算法引入了同步主節(jié)點優(yōu)先級表的概念,在主節(jié)點失效時根據(jù)同步主節(jié)點優(yōu)先級表選擇新的主時鐘節(jié)點,既實現(xiàn)了節(jié)點容錯錯,也減少了網(wǎng)絡(luò)同步開銷,然而該方法中同步主節(jié)點優(yōu)先級表一旦建立無法改變,降低了時鐘選擇的實時性,并且對網(wǎng)絡(luò)延時考慮較少,也降低了同步精度。文獻[5]在分析主從、協(xié)商等同步算法的基礎(chǔ)上,提出了基于最小“相對即時偏差”的主從協(xié)商選擇方法(以下簡稱為“相對偏差選擇方法”),該方法可以在主時鐘節(jié)點失效時協(xié)商選擇出新的主時鐘節(jié)點,并且給出了網(wǎng)絡(luò)延時的測算方法,獲得了更高的時鐘精度,但是該方法并沒有考慮各個節(jié)點之間由于距離、溫度等原因而造成的網(wǎng)絡(luò)延時誤差。
本文在上述時鐘同步方法的基礎(chǔ)上,對CAN總線時鐘同步過程進行研究,提出了一種基于CAN總線的單主時鐘協(xié)商同步選擇方法,該方法對即時偏差與網(wǎng)絡(luò)延時測算方法進行了改進,可以提高CAN系統(tǒng)同步精度,減少網(wǎng)絡(luò)負載率。
1.1 CAN時鐘同步
CAN總線時鐘同步可分為應(yīng)用層時鐘同步和物理層時鐘同步,其中物理層同步又分為硬同步和重同步,只有物理層同步準確無誤,應(yīng)用層時鐘同步才能被正確執(zhí)行[5-8]。本文主要對應(yīng)用層時鐘同步進行研究,通過對從節(jié)點相對于主節(jié)點的即時偏差進行測量計算,從而對本地時鐘進行調(diào)節(jié),以獲得更加精確的時間信息。
1.2 時鐘同步基本問題描述
在CAN總線上,每個節(jié)點時鐘均由其內(nèi)部時鐘振蕩器驅(qū)動,每個振蕩器都產(chǎn)生一定頻率的脈沖,同時每個節(jié)點內(nèi)部都包含一個軟件計數(shù)器對脈沖進行計數(shù)。若節(jié)點k時鐘振蕩器的頻率為fk(t),那么該節(jié)點計數(shù)器的值稱為節(jié)點k的本地時鐘Tk(t)。本地時鐘Tk(t)可由式(1)計算[9],其中t0為節(jié)點k初始時刻的實際時刻,Tk(t0)為節(jié)點k在初始時刻的本地時鐘。
(1)
(2)
(3)
(4)
(5)
(6)
圖1給出主從節(jié)點本地時鐘之間的關(guān)系,實線為主節(jié)點本地時鐘與實際時間之間的關(guān)系,虛線為從節(jié)點本地時鐘與實際時間之間的關(guān)系。
圖1 主從節(jié)點本地時鐘關(guān)系
2.1 即時偏差計算
圖2 即時偏差測量
(7)
(8)
(9)
(10)
(11)
2.2 主時鐘失效選擇
為了保證總線安全可靠地運行,避免主時鐘節(jié)點失效而造成系統(tǒng)癱瘓,網(wǎng)絡(luò)中往往需要多個主節(jié)點。若總線網(wǎng)絡(luò)中僅有一個主節(jié)點,那么就需要引入一種選擇機制來確保系統(tǒng)能夠在主節(jié)點失效后快速確立新的主節(jié)點。文獻[2]中通過在主時鐘同步優(yōu)先級列表中預(yù)先設(shè)置優(yōu)先級的方法來達到選擇新主節(jié)點的目的,但是該優(yōu)先級表一旦確立將無法改變,導(dǎo)致選擇新的主節(jié)點之后精度變低。本文在原主時鐘同步優(yōu)先級列表的基礎(chǔ)上提出一種基于實時優(yōu)先級的主時鐘同步優(yōu)先級列表。
為了能夠?qū)崟r評價各個節(jié)點的優(yōu)先級,引入時鐘方差的概念[12-13]:
(12)
每個時鐘同步周期從節(jié)點都能通過式(12)計算出時鐘方差σ2,并在網(wǎng)絡(luò)中廣播,每個節(jié)點對σ2值進行排序,更新主時鐘同步優(yōu)先級列表。σ2值越小說明該節(jié)點越穩(wěn)定,則在主時鐘同步優(yōu)先級列表中的優(yōu)先級越高。
(13)
如果該節(jié)點故障次數(shù)達到設(shè)定值n,則從節(jié)點k認為該主節(jié)點i失效,向總線各節(jié)點發(fā)出更換主節(jié)點的請求。其他節(jié)點接收請求,檢查錯誤計數(shù)器并做出反饋,若錯誤計數(shù)器達到n/2,則同意,否則反對。當同意更換主節(jié)點數(shù)超過50%時,系統(tǒng)掃描主時鐘同步優(yōu)先級列表,選擇優(yōu)先級最高的節(jié)點成為主節(jié)點,并向總線上所有節(jié)點發(fā)送確認消息。
2.3 基于CAN總線的單主節(jié)點協(xié)商同步算法
本文建立了一種基于CAN總線的單主時鐘協(xié)商同步算法,如圖3所示。
具體步驟如下:
(1)初始化設(shè)置,設(shè)置CAN控制寄存器,錯誤計數(shù)器M置0,更新時鐘同步優(yōu)先級列表,選擇初始優(yōu)先級最高的節(jié)點i作為主時鐘節(jié)點。
圖3 基于CAN總線的單主時鐘同步算法
(6)若某節(jié)點錯誤計數(shù)M≥n,向總線發(fā)送更換主節(jié)點請求。
(7)各節(jié)點接收到更換請求,檢查各自錯誤計數(shù)器,若達到n/2,則同意更換,否則不同意。
(8)若同意更換主節(jié)點數(shù)超過50%,則系統(tǒng)掃描主時鐘同步優(yōu)先級列表,選擇優(yōu)先級最高的節(jié)點成為主節(jié)點,并向總線上所有節(jié)點發(fā)送確認消息,否則不同意。
(9)同步周期結(jié)束,各從節(jié)點計數(shù)器清零,返回步驟(2)。
為了驗證上述算法,在Vector CANoe仿真軟件上對其進行試驗驗證。首先建立7個ECU節(jié)點所組成的CAN網(wǎng)絡(luò),如圖4所示。網(wǎng)絡(luò)初始化時將選擇出主節(jié)點(本次仿真選擇VCU為初始主節(jié)點)。建立節(jié)點消息數(shù)據(jù)庫,每個節(jié)點都包含_Sync_Message消息和_Resp_Message消息,其中_Sync_Message為主節(jié)點向各從節(jié)點發(fā)送同步消息,各從節(jié)點收到_Sync_Message消息后,向主節(jié)點發(fā)送_Resp_Message消息,_Message消息為各節(jié)點之間信息傳輸?shù)钠胀ㄏⅰ?/p>
圖4 CAN網(wǎng)絡(luò)配置圖
利用CAPL編寫程序,設(shè)置主節(jié)點發(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)
}
配置完成后進行仿真,仿真結(jié)果如圖5所示。
由于在仿真過程中各節(jié)點都在理論情況下運行,為了使仿真能夠反映真實的系統(tǒng)情況,在仿真過程中加入適當?shù)母蓴_。選擇優(yōu)先級最高的節(jié)點VCU作為初始主時鐘節(jié)點,其余節(jié)點為從節(jié)點。當主時鐘節(jié)點VCU發(fā)生故障時,各節(jié)點掃描主時鐘同步優(yōu)先級列表,選擇優(yōu)先級最高的節(jié)點EMS作為新的主時鐘節(jié)點。仿真結(jié)果表明本文所提算法可以防止主從時鐘同步的單點失效,增強了系統(tǒng)的可靠性。
圖5 仿真過程Trace窗口
圖6 CAN通信模塊接線圖
為了能夠真實反映本文所提出的同步算法的可靠性以及精度,構(gòu)建一個具有真實節(jié)點的實驗平臺,并利用CANoe軟件對整個系統(tǒng)進行功能分析和測試。其中每一個節(jié)點均由微控制器(51單片機)、CAN控制器(SJA1000T)以及CAN收發(fā)器(TJA1050)所構(gòu)成,CAN通信模塊連接圖如圖6所示。
圖7 幾種同步方法的同步偏差
選取文獻[2]中的前期協(xié)商同步方法以及文獻[5]中的相對偏差選擇方法與本文所述方法在上述實驗平臺上進行比較,圖7為上述時鐘同步方法在波特率為500 kb/s時利用CANoe軟件測量的同步偏差的絕對值,橫坐標為同步周期(ms),縱坐標為同步偏差(μs)。從圖中可以看出,本文時鐘同步方法的同步偏差略小于相對偏差選擇方法,而前期協(xié)商同步方法的同步偏差都要大于其他兩種方法,但是相對偏差選擇方法在同步過程中同步消息并沒有考慮傳輸過程中的消息延時,因此本文時鐘同步方法的精度更好。
本文在分析主從同步、協(xié)商同步等方法存在問題及CAN網(wǎng)絡(luò)時鐘同步特點基礎(chǔ)上,對CAN總線時鐘同步基本問題進行了描述,并提出了一種基于CAN總線的單主時鐘協(xié)商同步算法。該算法可在主、從節(jié)點出現(xiàn)失效時利用CAN總線的時鐘特性及時地對即時偏差進行估計,使總線各節(jié)點依然能夠正常工作,并利用主時鐘同步優(yōu)先級列表選擇新的主節(jié)點。實驗結(jié)果表明:新的時鐘同步機制能夠防止單點失效,可靠性高,具有更高的同步精度,并且適用更為廣泛,為CAN系統(tǒng)精確時鐘同步提供更好的解決方法。
[1] 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.
[2] 張利,李縣軍,王躍飛.汽車CAN網(wǎng)絡(luò)時鐘同步方法研究[J].電子測量與儀器學報,2011,25(2):147-152.
[3] 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.
[4] TOVAR E,VASQUE F.Non pre-emptive scheduling of messages on SMTV token-passing network[R].Real-Time Systems,2000.
[5] 王躍飛,楊錦,張利,等.汽車CAN系統(tǒng)精確時鐘同步機制研究[J].電子測量與儀器學報,2014,28(1):22-28.
[6] 王瑞曉,賀占莊.CAN總線位定時和同步機制的設(shè)計與實現(xiàn)[J].計算機技術(shù)與發(fā)展,2010,20(4):235-238.
[7] 陳守兵,楊建武.基于CAN總線的電源智能檢測系統(tǒng)的開發(fā)[J].電子測量與技術(shù),2011,34(5):94-97.
[8] 王剛,黃飛,喬純捷.分布式網(wǎng)絡(luò)時鐘同步研究[J].儀器儀表學報,2008,29(11):2399-2403.
[9] 劉順佳,曾益,胡波.傳感器網(wǎng)絡(luò)時鐘同步中基于多父節(jié)點的卡爾曼濾波算法[J].計量學報,2009,30(4):363-368.
[10] 任豐原,董思穎,何滔,等.基于鎖相環(huán)的時間同步機制與算法[J].軟件學報,2007,18(2):372-380.
[11] 魏豐,孫文杰.IEEE-1588協(xié)議時鐘同步報文的精確時間標記方法研究[J].儀器儀表學報,2009,30(1):162-169.
[12] 庾智蘭,李智.精確時鐘同步協(xié)議最佳時鐘算法[J].電力自動化設(shè)備,2009,29(11):74-77.
[13] IEEE Instrumentation and Measurement Society.IEEE standard for a precision clock synchronization protocol for networked measurement and control systems[S].New York,USA:IEEE,2002.
Research of single master clock synchronization mechanism based on CAN bus
Ji Ting
(School of Electrical Engineering,Nantong University,Nantong 226000,China)
High precision and high reliability clock synchronization mechanism is the key to the safe operation of CAN bus. This paper aims at characteristic of master-slave clock synchronization and consultation selection clock synchronization, and proposes a single master clock synchronization mechanism based on CAN bus . This mechanism only needs one master synchronization node to achieve the reliable operation of the CAN bus. Estimating the value of instant deviation using clock characteristics of CAN bus can make each node of the bus work properly when slave clock node is invalid.And in order to select a new master synchronization node, the concept of clock variance is introduced to update master clock synchronization priority table. Finally it makes a simulation using CANoe and builds a hardware experimental platform using MCS-51, SJA1000T and TJA1050. The results show that the mechanism can prevent single node failure and be more reliable.
clock synchronization;instant deviation;master clock selection;clock variance
南通大學教學改革課題(2015C01)
U469
A
10.19358/j.issn.1674- 7720.2016.24.018
季霆. 基于CAN總線的單主時鐘同步方法研究[J].微型機與應(yīng)用,2016,35(24):61-65,69.
2016-08-30)
季霆(1987-),男,碩士研究生,助理實驗師,主要研究方向:汽車電子和電氣控制。