控制器局域網(wǎng)絡(luò)的同步方法
【專利摘要】本發(fā)明提供了一種控制器局域網(wǎng)絡(luò)的同步方法,包括:每個(gè)節(jié)點(diǎn)的數(shù)據(jù)幀的封裝:在每個(gè)節(jié)點(diǎn)的網(wǎng)絡(luò)控制器從控制器局域網(wǎng)絡(luò)接收到數(shù)據(jù)時(shí),將設(shè)置在節(jié)點(diǎn)的網(wǎng)絡(luò)控制器上的時(shí)鐘部件的第一當(dāng)前時(shí)鐘值與所述數(shù)據(jù)封裝為數(shù)據(jù)幀;主控設(shè)備和網(wǎng)絡(luò)控制器之間的時(shí)間協(xié)調(diào):基于主控設(shè)備的主控時(shí)鐘的時(shí)鐘值或者時(shí)鐘部件的第二當(dāng)前時(shí)鐘值,協(xié)調(diào)主控時(shí)鐘與時(shí)鐘部件的時(shí)鐘;主節(jié)點(diǎn)與從節(jié)點(diǎn)之間的時(shí)間的同步:基于同步觸發(fā)消息,將主節(jié)點(diǎn)的網(wǎng)絡(luò)控制器的時(shí)鐘部件的第三當(dāng)前時(shí)鐘值廣播至從節(jié)點(diǎn)的網(wǎng)絡(luò)控制器,從節(jié)點(diǎn)網(wǎng)絡(luò)控制器根據(jù)接收的第三當(dāng)前時(shí)鐘值更新自身時(shí)鐘部件的時(shí)鐘。本發(fā)明能夠確定消息數(shù)據(jù)到達(dá)的精確時(shí)間,有利于消除時(shí)間偏差,提高控制器局域網(wǎng)絡(luò)的同步精度。
【專利說明】控制器局域網(wǎng)絡(luò)的同步方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種控制器局域網(wǎng)絡(luò)的同步方法,尤其涉及一種用于高精度時(shí)鐘同步的控制器局域網(wǎng)絡(luò)的同步方法。
【背景技術(shù)】
[0002]同步基于CANopen協(xié)議的控制器局域網(wǎng)絡(luò)(CAN)中的時(shí)鐘,有一個(gè)基礎(chǔ)要求是主節(jié)點(diǎn)能夠取得CANopen消息到達(dá)主節(jié)點(diǎn)的精確時(shí)間?,F(xiàn)有技術(shù)的實(shí)現(xiàn)方式中,為了滿足上層應(yīng)用層獲取CANopen消息數(shù)據(jù)到達(dá)的時(shí)間,CAN驅(qū)動(dòng)層對(duì)每個(gè)收到的數(shù)據(jù)都會(huì)打上時(shí)間戳,距離CAN數(shù)據(jù)到達(dá)最近的時(shí)間點(diǎn)是CAN數(shù)據(jù)接收中斷函數(shù)中所確定的時(shí)間點(diǎn)。
[0003]如圖1所示,目前主流廠商生產(chǎn)的CAN卡11在從CAN網(wǎng)絡(luò)10接收到CAN幀100之后,將其傳輸至個(gè)人計(jì)算機(jī)(PC) 12,PC 12采取的方法是在驅(qū)動(dòng)層121的中斷函數(shù)中獲取PC時(shí)鐘值,即高精度計(jì)時(shí)器寄存器123的時(shí)鐘值,并將其作為CAN幀100的時(shí)間戳124,之后交由應(yīng)用層122處理。由于此時(shí)的PC時(shí)鐘值與數(shù)據(jù)真正的到達(dá)時(shí)間之間存在偏差,即CAN卡11接收CAN幀100的時(shí)間到中斷響應(yīng)中獲取PC時(shí)鐘值之間的時(shí)間,并且這個(gè)偏差存在抖動(dòng)。
[0004]由于Iinux等操作系統(tǒng)的內(nèi)核是可搶占的,同時(shí)驅(qū)動(dòng)層121在內(nèi)核中獲取PC時(shí)鐘時(shí),受系統(tǒng)負(fù)載、調(diào)度以及外部事件等等影響,相鄰兩個(gè)數(shù)據(jù)到達(dá)產(chǎn)生的偏差是不一樣的,因此,CANopen協(xié)議如果利用這種存在偏差和抖動(dòng)的時(shí)間去同步網(wǎng)絡(luò)中的各個(gè)設(shè)備,效果肯定是不理想的。
【發(fā)明內(nèi)容】
[0005]本發(fā)明要解決的技術(shù)問題是提供一種控制器局域網(wǎng)絡(luò)的同步方法,能夠確定消息數(shù)據(jù)到達(dá)的精確時(shí)間,有利于消除時(shí)間偏差、提高同步精度。
[0006]為解決上述技術(shù)問題,本發(fā)明提供了一種控制器局域網(wǎng)絡(luò)的同步方法,所述控制器局域網(wǎng)絡(luò)包括主節(jié)點(diǎn)和從節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)包括主控設(shè)備和與其耦合的網(wǎng)絡(luò)控制器,所述方法包括:
[0007]每個(gè)節(jié)點(diǎn)的數(shù)據(jù)幀的封裝:在每個(gè)節(jié)點(diǎn)的網(wǎng)絡(luò)控制器從控制器局域網(wǎng)絡(luò)接收到數(shù)據(jù)時(shí),將設(shè)置在所述節(jié)點(diǎn)的網(wǎng)絡(luò)控制器上的時(shí)鐘部件的第一當(dāng)前時(shí)鐘值與所述數(shù)據(jù)封裝為數(shù)據(jù)幀;
[0008]所述主控設(shè)備和網(wǎng)絡(luò)控制器之間的時(shí)間協(xié)調(diào):基于所述主控設(shè)備的主控時(shí)鐘的時(shí)鐘值或者所述網(wǎng)絡(luò)控制器的時(shí)鐘部件的第二當(dāng)前時(shí)鐘值,協(xié)調(diào)所述主控設(shè)備的主控時(shí)鐘與所述網(wǎng)絡(luò)控制器的時(shí)鐘部件的時(shí)鐘;
[0009]所述主節(jié)點(diǎn)與所述從節(jié)點(diǎn)之間的時(shí)間的同步:基于同步觸發(fā)消息,以所述主節(jié)點(diǎn)的網(wǎng)絡(luò)控制器的時(shí)鐘部件的第三當(dāng)前時(shí)鐘值為基準(zhǔn),將主節(jié)點(diǎn)的網(wǎng)絡(luò)控制器的時(shí)鐘部件的第三當(dāng)前時(shí)鐘值廣播至從節(jié)點(diǎn)的網(wǎng)絡(luò)控制器,從節(jié)點(diǎn)網(wǎng)絡(luò)控制器根據(jù)所接收的第三當(dāng)前時(shí)鐘值更新自身的時(shí)鐘部件的時(shí)鐘。[0010]可選地,所述主節(jié)點(diǎn)與所述從節(jié)點(diǎn)之間的時(shí)間的同步包括:
[0011]步驟a,基于所述同步觸發(fā)消息,分別記錄所述控制器局域網(wǎng)絡(luò)內(nèi)主節(jié)點(diǎn)的網(wǎng)絡(luò)控制器的時(shí)鐘部件的第三當(dāng)前時(shí)鐘值以及從節(jié)點(diǎn)的網(wǎng)絡(luò)控制器的時(shí)鐘部件的第四當(dāng)前時(shí)鐘值,分別記為主節(jié)點(diǎn)同步時(shí)鐘值tm_sync和從節(jié)點(diǎn)同步時(shí)鐘值ts_sync ;
[0012]步驟b,將所述主節(jié)點(diǎn)同步時(shí)鐘值tm_sync廣播至從節(jié)點(diǎn);
[0013]步驟c,所述從節(jié)點(diǎn)根據(jù)所述從節(jié)點(diǎn)同步時(shí)鐘值ts_sync以及接收到的主節(jié)點(diǎn)同步時(shí)鐘值tm_sync更新自身的時(shí)鐘部件的時(shí)鐘。
[0014]可選地,所述步驟c包括:
[0015]步驟cl,所述從節(jié)點(diǎn)收到所述主節(jié)點(diǎn)同步時(shí)鐘值tm_sync后,采用如下公式重設(shè)自身的時(shí)鐘部件的時(shí)鐘 ts:ts=ts_sync+ Δ tm_ts/n+ Δ ts,其中,Δ tm_ts=tm_sync_ts_sync, Δ ts=ts_recv_ts_sync, ts_recv為所述從節(jié)點(diǎn)收到所述主節(jié)點(diǎn)同步時(shí)鐘值tm_sync時(shí)從節(jié)點(diǎn)的時(shí)鐘部件的第五當(dāng)前時(shí)鐘值,η為大于I的正整數(shù);
[0016]步驟c2,重復(fù)所述步驟a、b、cl多次。
[0017]可選地,基于所述同步觸發(fā)消息,分別記錄所述控制器局域網(wǎng)絡(luò)內(nèi)主節(jié)點(diǎn)的網(wǎng)絡(luò)控制器的第三當(dāng)前時(shí)鐘值以及從節(jié)點(diǎn)的網(wǎng)絡(luò)控制器的時(shí)鐘部件的第四當(dāng)前時(shí)鐘值包括:
[0018]在所述主節(jié)點(diǎn)和從節(jié)點(diǎn)的網(wǎng)絡(luò)控制器從控制器局域網(wǎng)絡(luò)接收到所述同步觸發(fā)消息時(shí),將所述主節(jié)點(diǎn)和從節(jié)點(diǎn)自身的時(shí)鐘部件的第三當(dāng)前時(shí)鐘值和第四當(dāng)前時(shí)鐘值分別與所述同步觸發(fā)消息封裝為數(shù)據(jù)幀;
[0019]將所述數(shù)據(jù)幀通過通信接口傳輸至所述主節(jié)點(diǎn)和從節(jié)點(diǎn)各自的主控設(shè)備。
[0020]可選地,所述主控設(shè)備和網(wǎng)絡(luò)控制器之間的時(shí)間協(xié)調(diào)包括:
[0021]各節(jié)點(diǎn)的主控設(shè)備定時(shí)從該節(jié)點(diǎn)自身的時(shí)鐘部件讀取所述時(shí)鐘部件的第二當(dāng)前時(shí)鐘值;
[0022]各節(jié)點(diǎn)以讀取的時(shí)鐘部件的第二當(dāng)前時(shí)鐘值更新自身主控設(shè)備的主控時(shí)鐘。
[0023]可選地,所述主控設(shè)備采用如下方式從所述時(shí)鐘部件讀取所述第二當(dāng)前時(shí)鐘值:所述時(shí)鐘部件定時(shí)向所述主控設(shè)備上報(bào)所述第二當(dāng)前時(shí)鐘值。
[0024]可選地,所述主控設(shè)備和網(wǎng)絡(luò)控制器之間的時(shí)間協(xié)調(diào)包括:
[0025]將各節(jié)點(diǎn)的主控設(shè)備的主控時(shí)鐘的時(shí)鐘值定時(shí)寫入至自身的時(shí)鐘部件中以對(duì)其進(jìn)行更新。
[0026]可選地,所述主控設(shè)備為具有主機(jī)總線的計(jì)算機(jī),所述主控設(shè)備采用如下方式將所述主控時(shí)鐘的時(shí)鐘值寫入至所述時(shí)鐘部件:
[0027]關(guān)中斷;
[0028]讀取所述主控時(shí)鐘的時(shí)鐘值;
[0029]鎖定所述主控設(shè)備的主機(jī)總線;
[0030]將所述主控時(shí)鐘的時(shí)鐘值經(jīng)由所述主機(jī)總線寫入至所述時(shí)鐘部件中;
[0031]解除對(duì)所述主機(jī)總線的鎖定;
[0032]開中斷。
[0033]可選地,所述同步觸發(fā)消息由所述控制器局域網(wǎng)絡(luò)中的任一節(jié)點(diǎn)發(fā)出。
[0034]可選地,所述方法還包括:在每個(gè)節(jié)點(diǎn)的數(shù)據(jù)幀的封裝之后,將所述數(shù)據(jù)幀通過通信接口傳輸至所述主控設(shè)備。[0035]與現(xiàn)有技術(shù)相比,本發(fā)明具有以下優(yōu)點(diǎn):
[0036]本發(fā)明實(shí)施例的控制器局域網(wǎng)絡(luò)的同步方法中,在控制器局域網(wǎng)絡(luò)內(nèi)各節(jié)點(diǎn)的網(wǎng)絡(luò)控制器處設(shè)置獨(dú)立的時(shí)鐘部件,之后基于同步觸發(fā)消息,記錄主節(jié)點(diǎn)的時(shí)鐘部件的第三當(dāng)前時(shí)鐘值以及從節(jié)點(diǎn)的時(shí)鐘部件的第四當(dāng)前時(shí)鐘值,分別記為為主節(jié)點(diǎn)同步時(shí)鐘值tm_sync和從節(jié)點(diǎn)同步時(shí)鐘值ts_sync,并將主節(jié)點(diǎn)同步時(shí)鐘值tm_sync廣播至各從節(jié)點(diǎn),從節(jié)點(diǎn)根據(jù)先前記錄的從節(jié)點(diǎn)同步時(shí)鐘值ts_sync以及接收到的主節(jié)點(diǎn)同步時(shí)鐘值tm_sync更新自身的工作時(shí)鐘。由于在網(wǎng)絡(luò)控制器上設(shè)置了獨(dú)立的時(shí)鐘部件,因而可以將同步觸發(fā)消息到達(dá)各節(jié)點(diǎn)的精確時(shí)間記錄下來,避免了操作系統(tǒng)對(duì)中斷響應(yīng)的不確定性和不穩(wěn)定性,使得各節(jié)點(diǎn)之間的同步更精確。
[0037]進(jìn)一步地,本發(fā)明實(shí)施例的控制器局域網(wǎng)絡(luò)的同步方法還包括節(jié)點(diǎn)的數(shù)據(jù)幀的封裝,當(dāng)網(wǎng)絡(luò)控制器從控制器局域網(wǎng)絡(luò)接收到數(shù)據(jù)時(shí),將接收到的數(shù)據(jù)與時(shí)鐘部件的第一當(dāng)前時(shí)鐘值封裝為數(shù)據(jù)幀,并經(jīng)由通信接口傳輸至主控設(shè)備,由于數(shù)據(jù)幀中包含有數(shù)據(jù)到達(dá)時(shí)的準(zhǔn)確時(shí)間,因而主控設(shè)備中的中斷響應(yīng)無需進(jìn)行時(shí)間戳的添加動(dòng)作,主控設(shè)備的負(fù)載以及外部事件并不會(huì)對(duì)記錄的數(shù)據(jù)到達(dá)時(shí)間造成影響。
[0038]此外,本發(fā)明實(shí)施例中,控制器局域網(wǎng)絡(luò)節(jié)點(diǎn)的主控設(shè)備與網(wǎng)絡(luò)控制器的時(shí)鐘部件的時(shí)鐘可以協(xié)調(diào),可以以時(shí)鐘部件為基準(zhǔn),也可以以主控設(shè)備的主控時(shí)鐘為基準(zhǔn),使得整個(gè)節(jié)點(diǎn)是基于同一個(gè)時(shí)鐘工作的。
【專利附圖】
【附圖說明】
[0039]圖1示出了現(xiàn)有技術(shù)中CAN幀的時(shí)間戳獲取過程;
[0040]圖2示出了本發(fā)明實(shí)施例的控制器局域網(wǎng)絡(luò)的同步方法中主節(jié)點(diǎn)與從節(jié)點(diǎn)之間的同步的流程示意圖;
[0041]圖3示出了本發(fā)明實(shí)施例的控制器局域網(wǎng)絡(luò)中各節(jié)點(diǎn)的結(jié)構(gòu)框圖;
[0042]圖4示出了本發(fā)明實(shí)施例中在接收到同步觸發(fā)消息后時(shí)間戳的獲取過程;
[0043]圖5示出了本發(fā)明實(shí)施例的控制器局域網(wǎng)絡(luò)中主節(jié)點(diǎn)和從節(jié)點(diǎn)的同步過程。
【具體實(shí)施方式】
[0044]下面結(jié)合具體實(shí)施例和附圖對(duì)本發(fā)明作進(jìn)一步說明,但不應(yīng)以此限制本發(fā)明的保護(hù)范圍。
[0045]控制器局域網(wǎng)絡(luò)包括主節(jié)點(diǎn)和從節(jié)點(diǎn),其中每個(gè)節(jié)點(diǎn)包括主控設(shè)備以及與其耦合的網(wǎng)絡(luò)控制器,本實(shí)施例的控制器局域網(wǎng)絡(luò)的同步方法包括節(jié)點(diǎn)的數(shù)據(jù)幀的封裝、主控設(shè)備和網(wǎng)絡(luò)控制器之間的時(shí)間協(xié)調(diào)以及主節(jié)點(diǎn)和從節(jié)點(diǎn)之間的時(shí)間的同步。其中,每個(gè)節(jié)點(diǎn)的數(shù)據(jù)幀的封裝包括:在每個(gè)節(jié)點(diǎn)的網(wǎng)絡(luò)控制器從控制器局域網(wǎng)絡(luò)接收到數(shù)據(jù)時(shí),將設(shè)置在所述節(jié)點(diǎn)的網(wǎng)絡(luò)控制器上的時(shí)鐘部件的第一當(dāng)前時(shí)鐘值與所述數(shù)據(jù)封裝為數(shù)據(jù)幀;主控設(shè)備和網(wǎng)絡(luò)控制器之間的時(shí)間協(xié)調(diào)包括:基于所述主控設(shè)備的主控時(shí)鐘的時(shí)鐘值或者所述網(wǎng)絡(luò)控制器的時(shí)鐘部件的第二當(dāng)前時(shí)鐘值,協(xié)調(diào)所述主控設(shè)備的主控時(shí)鐘與所述網(wǎng)絡(luò)控制器的時(shí)鐘部件的時(shí)鐘;主節(jié)點(diǎn)和從節(jié)點(diǎn)之間的時(shí)間的同步包括:基于同步觸發(fā)消息,以所述主節(jié)點(diǎn)的網(wǎng)絡(luò)控制器的時(shí)鐘部件的第三當(dāng)前時(shí)鐘值為基準(zhǔn),將主節(jié)點(diǎn)的網(wǎng)絡(luò)控制器的時(shí)鐘部件的第三當(dāng)前時(shí)鐘值廣播至從節(jié)點(diǎn)的網(wǎng)絡(luò)控制器,從節(jié)點(diǎn)網(wǎng)絡(luò)控制器根據(jù)所接收的第三當(dāng)前時(shí)鐘值更新自身的時(shí)鐘部件的時(shí)鐘。
[0046]圖2示出了本實(shí)施例中主節(jié)點(diǎn)與從節(jié)點(diǎn)之間的時(shí)間的同步的流程示意圖,包括:
[0047]控制器局域網(wǎng)絡(luò)步驟a,基于所述同步觸發(fā)消息,分別記錄所述控制器局域網(wǎng)絡(luò)內(nèi)主節(jié)點(diǎn)的網(wǎng)絡(luò)控制器的第三當(dāng)前時(shí)鐘值以及從節(jié)點(diǎn)的網(wǎng)絡(luò)控制器的時(shí)鐘部件的時(shí)鐘部件的第四當(dāng)前時(shí)鐘值,分別記為主節(jié)點(diǎn)同步時(shí)鐘值tm_sync和從節(jié)點(diǎn)同步時(shí)鐘值ts_sync ;
[0048]步驟b,將所述主節(jié)點(diǎn)同步時(shí)鐘值tm_sync廣播至從節(jié)點(diǎn);
[0049]步驟c,所述從節(jié)點(diǎn)根據(jù)所述從節(jié)點(diǎn)同步時(shí)鐘值ts_sync以及接收到的主節(jié)點(diǎn)同步時(shí)鐘值tm_sync更新自身的時(shí)鐘部件的時(shí)鐘。
[0050]圖3示出了本實(shí)施例的控制器局域網(wǎng)絡(luò)內(nèi)各節(jié)點(diǎn)的結(jié)構(gòu)框圖,主要包括網(wǎng)絡(luò)控制器22、時(shí)鐘部件21、記錄模塊23、通信接口 24以及主控設(shè)備25。
[0051]時(shí)鐘部件21設(shè)置在網(wǎng)絡(luò)控制器22上,例如可以設(shè)置在網(wǎng)絡(luò)控制器22的外部或者集成在其內(nèi)部,具體可以采用各種專用的高精度計(jì)時(shí)器或者可編程器件來實(shí)現(xiàn)。作為一個(gè)非限制性的例子,本實(shí)施例中,時(shí)鐘部件21采用網(wǎng)絡(luò)控制器22外部的現(xiàn)場可編程門陣列(FPGA)來實(shí)現(xiàn)。時(shí)鐘部件21是獨(dú)立的高精度時(shí)鐘,在節(jié)點(diǎn)啟動(dòng)時(shí)自動(dòng)運(yùn)行,能夠?yàn)楣?jié)點(diǎn)提供獨(dú)立的高精度基準(zhǔn)時(shí)鐘。
[0052]記錄模塊23在網(wǎng)絡(luò)控制器22從控制器局域網(wǎng)絡(luò)接收到網(wǎng)絡(luò)數(shù)據(jù)時(shí),能夠記錄時(shí)鐘部件21的當(dāng)前的時(shí)鐘值。例如在網(wǎng)絡(luò)控制器22接收到同步觸發(fā)消息時(shí),將時(shí)鐘部件21的第一當(dāng)前時(shí)鐘值與接收到的同步觸發(fā)消息封裝在一起,形成數(shù)據(jù)幀。當(dāng)然,根據(jù)具體實(shí)施例的不同,在網(wǎng)絡(luò)控制器22接收到同步觸發(fā)消息時(shí),也可以將時(shí)鐘部件21的第一當(dāng)前時(shí)鐘值記錄為與該同步觸發(fā)消息相關(guān)聯(lián)的數(shù)據(jù),但二者并不封裝在一起。
[0053]本實(shí)施例中,記錄模塊23可以采用控制器局域網(wǎng)絡(luò)控制器22外部的FPGA來實(shí)現(xiàn),優(yōu)選地,可以采用同一 FPGA器件來實(shí)現(xiàn)時(shí)鐘部件21和記錄模塊23。
[0054]封裝形成的數(shù)據(jù)幀通過通信接口 24傳輸至主控設(shè)備25。通信接口 24可以是各種串行、并行的數(shù)據(jù)傳輸接口,本實(shí)施例中采用的是PCIe接口,PCIe接口的雙單工連接能夠提供更高的傳輸速率和質(zhì)量,第三代PCIe能夠達(dá)到每通道lGB/s的傳輸速率,采用高速高寬帶接口來實(shí)現(xiàn)通信接口 24,能夠?qū)崿F(xiàn)控制器局域網(wǎng)絡(luò)數(shù)據(jù)的傳輸實(shí)時(shí)性。主控設(shè)備25可以是和控制器局域網(wǎng)絡(luò)控制器22配合使用的各種計(jì)算機(jī)設(shè)備等,本實(shí)施例中主控設(shè)備25例如可以是個(gè)人計(jì)算機(jī)(PC)。
[0055]作為一個(gè)非限制性的例子,圖4示出了一具體實(shí)施例中CAN幀的時(shí)間戳獲取過程,CAN卡31中的CAN控制器(未示出)從CAN網(wǎng)絡(luò)30中接收CAN幀300,在主節(jié)點(diǎn)與從節(jié)點(diǎn)的同步過程中,該CAN幀可以是上述同步觸發(fā)消息。在接收到CAN幀300時(shí),從CAN卡31中的32位高精度計(jì)時(shí)器311 (即時(shí)鐘部件)中獲取第一當(dāng)前時(shí)鐘值,并將其作為硬件時(shí)間戳312與CAN幀300封裝在一起。封裝后的CAN幀300和硬件時(shí)間戳312傳輸至主控設(shè)備32,經(jīng)由驅(qū)動(dòng)層321后直接傳輸至上層的應(yīng)用層322,驅(qū)動(dòng)層321并不需要進(jìn)行時(shí)間戳的添加動(dòng)作。由于硬件時(shí)間戳312的封裝過程是在CAN卡31中通過獨(dú)立的時(shí)鐘部件(即32位高精度計(jì)時(shí)器311)以及記錄模塊來自動(dòng)完成的,驅(qū)動(dòng)層321不再負(fù)責(zé)添加時(shí)間戳,與主控設(shè)備32的系統(tǒng)運(yùn)行相獨(dú)立,從而避免了 PC等主控設(shè)備32中系統(tǒng)負(fù)載、調(diào)度等造成的影響,最大程度地減小了干擾,使得抖動(dòng)和延遲最小化。
[0056]參考圖5,采用上述記錄機(jī)制,網(wǎng)絡(luò)中的各個(gè)節(jié)點(diǎn)(包括主節(jié)點(diǎn)以及一個(gè)或多個(gè)從節(jié)點(diǎn))基于同一同步觸發(fā)消息sync,分別記錄該同步觸發(fā)消息到達(dá)時(shí)主節(jié)點(diǎn)的網(wǎng)絡(luò)控制器的時(shí)鐘部件的第三當(dāng)前時(shí)鐘值以及從節(jié)點(diǎn)的網(wǎng)絡(luò)控制器的時(shí)鐘部件的第四當(dāng)前時(shí)鐘值,分別記為主節(jié)點(diǎn)同步時(shí)鐘值tm_sync和從節(jié)點(diǎn)同步時(shí)鐘值ts_sync,即完成圖1中的步驟a。其中,該同步觸發(fā)消息sync可以是網(wǎng)絡(luò)中任何一個(gè)節(jié)點(diǎn)發(fā)出的。
[0057]結(jié)合圖1和圖5,執(zhí)行步驟b,主節(jié)點(diǎn)將記錄的主節(jié)點(diǎn)同步時(shí)鐘值tm_sync廣播至從節(jié)點(diǎn);之后執(zhí)行步驟c,從節(jié)點(diǎn)根據(jù)從節(jié)點(diǎn)同步時(shí)鐘值ts_sync以及接收到的主節(jié)點(diǎn)同步時(shí)鐘值tm_sync更新自身的時(shí)鐘部件的時(shí)鐘ts。
[0058]優(yōu)選地,本實(shí)施例中步驟c包括如下步驟,步驟cl:從節(jié)點(diǎn)收到主節(jié)點(diǎn)同步時(shí)鐘值tm_sync后,采用如下公式重設(shè)自身的時(shí)鐘部件的時(shí)鐘ts:ts=ts_sync+Δ tm_ts/n+Δ ts,其中,Δ tm_ts=tm_sync - ts_sync, Δ ts=ts_recv - ts_sync, ts_recv 為從節(jié)點(diǎn)收至丨J主節(jié)點(diǎn)同步時(shí)鐘值tm_sync時(shí)從節(jié)點(diǎn)的時(shí)鐘部件的第五當(dāng)前時(shí)鐘值,η為大于I的正整數(shù),例如可以選取10 ;步驟c2:重復(fù)上述步驟b、c、dl多次,使得從節(jié)點(diǎn)的時(shí)鐘部件的時(shí)鐘ts逐步趨近于主節(jié)點(diǎn)的時(shí)鐘部件的時(shí)鐘tm。
[0059]仍然參考圖3,本實(shí)施例中,在每一節(jié)點(diǎn)內(nèi)的網(wǎng)絡(luò)控制器22上設(shè)置有時(shí)鐘部件21,其時(shí)鐘值與主控設(shè)備25的主控時(shí)鐘的時(shí)鐘值相獨(dú)立,為了實(shí)現(xiàn)更好的網(wǎng)絡(luò)同步效果,主控設(shè)備25和網(wǎng)絡(luò)控制器22之間的時(shí)間需要進(jìn)行協(xié)調(diào),協(xié)調(diào)過程可以基于主控設(shè)備25的主控時(shí)鐘的時(shí)鐘值或者網(wǎng)絡(luò)控制器22的時(shí)鐘部件的第二當(dāng)前時(shí)鐘值。
[0060]根據(jù)具體實(shí)施例的不同,可以以時(shí)鐘部件21為基準(zhǔn)進(jìn)行時(shí)鐘的協(xié)調(diào),具體包括:主控設(shè)備25定時(shí)從時(shí)鐘部件21讀取時(shí)鐘部件21的第二當(dāng)前時(shí)鐘值;采用時(shí)鐘部件21的第二當(dāng)前時(shí)鐘值更新主控設(shè)備25自身主控設(shè)備25的主控時(shí)鐘(例如PC時(shí)鐘)。其中,該節(jié)點(diǎn)內(nèi)可以包括專用的時(shí)鐘接口,以供主控設(shè)備25通過該時(shí)鐘接口讀取時(shí)鐘部件21的當(dāng)前時(shí)鐘值。
[0061]時(shí)鐘部件21的當(dāng)前時(shí)鐘值的獲取方式至少有以下兩種:
[0062]初始化時(shí)將時(shí)鐘部件21映射到主控部件25的內(nèi)存中,并在驅(qū)動(dòng)中提供一個(gè)IO操作來實(shí)現(xiàn)對(duì)時(shí)鐘部件21的讀寫,為了防止獲取時(shí)鐘的及時(shí)性和準(zhǔn)確性受到影響,可以采取比較設(shè)置的方法,即獲取主控時(shí)鐘一獲取時(shí)鐘部件21的第二當(dāng)前時(shí)鐘值一獲取主控時(shí)鐘,如果前后兩次獲取的主控時(shí)鐘比較接近,則認(rèn)為此次獲取的時(shí)鐘部件21的第二當(dāng)前時(shí)鐘值有效。獲取時(shí)鐘部件21的第二當(dāng)前時(shí)鐘值可以包括以下兩個(gè)數(shù)據(jù)傳輸過程:一是讀時(shí)鐘請求數(shù)據(jù)到達(dá)通信接口 24的過程;二是時(shí)鐘數(shù)據(jù)從通信接口 24到達(dá)請求者的過程,兩個(gè)動(dòng)作過程都會(huì)受到系統(tǒng)的影響,而且這種方式如果失敗則需要多次嘗試;
[0063]對(duì)時(shí)鐘部件21進(jìn)行配置,根據(jù)預(yù)設(shè)的頻率定時(shí)上報(bào)一特定格式的數(shù)據(jù)包或者直接封裝成CAN幀的格式,其中包含有時(shí)鐘部件21的第二當(dāng)前時(shí)鐘值,主控設(shè)備25在接收到該數(shù)據(jù)后,即獲取了時(shí)鐘部件21的第二當(dāng)前時(shí)鐘值。由于此方式只有一次數(shù)據(jù)傳輸過程,因而可以減少時(shí)鐘獲取過程中受影響的概率,是一種優(yōu)選的方式。
[0064]根據(jù)具體實(shí)施例的不同,還可以以主控設(shè)備25自身的主控時(shí)鐘為基準(zhǔn)進(jìn)行時(shí)鐘的協(xié)調(diào),具體包括:將主控設(shè)備25的主控時(shí)鐘的時(shí)鐘值定時(shí)寫入至自身的時(shí)鐘部件21中,以對(duì)時(shí)鐘部件21進(jìn)行更新。
[0065]以主控設(shè)備25為個(gè)人計(jì)算機(jī)為例,對(duì)時(shí)鐘部件21的寫入過程不能有太大的延遲,否則會(huì)導(dǎo)致整個(gè)系統(tǒng)同步時(shí)間錯(cuò)亂。寫入過程受到多種因素影響,例如終端、多核CPU以及總線上的突發(fā)數(shù)據(jù)等都會(huì)造成寫入操作的延遲?,F(xiàn)代主流處理器包括Intel傳統(tǒng)的前端總線(FSB)、QPI總線和AMD的HT總線,一般存在兩層總線:主機(jī)(host)總線和PCI總線或者其他IO總線。Host總線連接多個(gè)CPU和內(nèi)存(或者內(nèi)存控制器集成于處理器內(nèi)部)、host/PCI橋(北橋),PCI總線連接host/PCI橋和PCI主從設(shè)備及PCI/ISA橋即通常的南橋。無論哪種方式PCI設(shè)備要將自己的寄存器映射到內(nèi)存中,需要通過北橋訪問host總線,然后到達(dá)內(nèi)存。內(nèi)存的映射和訪問由bridge + DMA完成,而且在多處理器中,CPU也是共享總線的。IA32體系CPU的#lock引腳連接到北橋芯片的#lock引腳,當(dāng)帶lock前綴的指令執(zhí)行時(shí),北橋芯片會(huì)拉起#lock電平,從而鎖住總線,直到該指令執(zhí)行完畢再放開。這就避免了在對(duì)時(shí)鐘同步的過程中,總線上出現(xiàn)大量的數(shù)據(jù)交互或者總線被另外CPU占據(jù)造成的延遲。所以對(duì)時(shí)鐘進(jìn)行同步時(shí)可以通過鎖總線避免總線被占用而造成的影響。
[0066]具體地,將主控時(shí)鐘的當(dāng)前值寫入至?xí)r鐘部件21的處理過程可以包括:關(guān)中斷;讀取主控時(shí)鐘的時(shí)鐘值;鎖定主控設(shè)備25的host總線;將主控時(shí)鐘的當(dāng)前值通過host總線、通信接口 24寫入到時(shí)鐘部件21中對(duì)其進(jìn)行更新;解除對(duì)host總線的鎖定;打開中斷。
[0067]將主控時(shí)鐘定時(shí)寫入至?xí)r鐘部件21中可以改善同步效果,例如可以在驅(qū)動(dòng)加載時(shí)啟動(dòng)定時(shí)器,并在定時(shí)器處理函數(shù)中進(jìn)行上述動(dòng)作,定時(shí)地以主控時(shí)鐘為基準(zhǔn)來更新時(shí)鐘部件。但是由于上述過程涉及鎖定主機(jī)總線以及關(guān)中斷,因而為了避免對(duì)系統(tǒng)改造成影響,其頻率一般不宜太高。
[0068]本實(shí)施例的控制器局域網(wǎng)絡(luò)的同步方法包括節(jié)點(diǎn)的數(shù)據(jù)幀的封裝,在網(wǎng)絡(luò)控制器從控制器局域網(wǎng)絡(luò)接收到數(shù)據(jù)時(shí),將該數(shù)據(jù)與節(jié)點(diǎn)設(shè)置在網(wǎng)絡(luò)控制器上的時(shí)鐘部件的第一當(dāng)前時(shí)鐘值封裝為數(shù)據(jù)幀;之后,可以將該數(shù)據(jù)幀通過通信接口傳輸至主控設(shè)備。
[0069]由于數(shù)據(jù)幀中的第一當(dāng)前時(shí)鐘值是從網(wǎng)絡(luò)接收到數(shù)據(jù)時(shí)獲取并封裝的,因而其準(zhǔn)確度非常高,另外主控設(shè)備也不需要在中斷函數(shù)中添加時(shí)間戳,避免了當(dāng)前系統(tǒng)負(fù)載以及外部時(shí)間影響所導(dǎo)致的時(shí)間戳偏差的問題。關(guān)于該數(shù)據(jù)接收方法的更多詳細(xì)信息還可以參考上述控制器局域網(wǎng)絡(luò)的同步方法中的相關(guān)描述。
[0070]需要說明的是,本領(lǐng)域的技術(shù)人員可以知道,以上描述中的第一當(dāng)前時(shí)鐘值至第五當(dāng)前時(shí)鐘值在數(shù)值上可以是相同的,也可以是不同的。
[0071]本發(fā)明雖然以較佳實(shí)施例公開如上,但其并不是用來限定本發(fā)明,任何本領(lǐng)域技術(shù)人員在不脫離本發(fā)明的精神和范圍內(nèi),都可以做出可能的變動(dòng)和修改,因此本發(fā)明的保護(hù)范圍應(yīng)當(dāng)以本發(fā)明權(quán)利要求所界定的范圍為準(zhǔn)。
【權(quán)利要求】
1.一種控制器局域網(wǎng)絡(luò)的同步方法,所述控制器局域網(wǎng)絡(luò)包括主節(jié)點(diǎn)和從節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)包括主控設(shè)備和與其耦合的網(wǎng)絡(luò)控制器,其特征在于,包括: 每個(gè)節(jié)點(diǎn)的數(shù)據(jù)幀的封裝:在每個(gè)節(jié)點(diǎn)的網(wǎng)絡(luò)控制器從控制器局域網(wǎng)絡(luò)接收到數(shù)據(jù)時(shí),將設(shè)置在所述節(jié)點(diǎn)的網(wǎng)絡(luò)控制器上的時(shí)鐘部件的第一當(dāng)前時(shí)鐘值與所述數(shù)據(jù)封裝為數(shù)據(jù)幀; 所述主控設(shè)備和網(wǎng)絡(luò)控制器之間的時(shí)間協(xié)調(diào):基于所述主控設(shè)備的主控時(shí)鐘的時(shí)鐘值或者所述網(wǎng)絡(luò)控制器的時(shí)鐘部件的第二當(dāng)前時(shí)鐘值,協(xié)調(diào)所述主控設(shè)備的主控時(shí)鐘與所述網(wǎng)絡(luò)控制器的時(shí)鐘部件的時(shí)鐘; 所述主節(jié)點(diǎn)與所述從節(jié)點(diǎn)之間的時(shí)間的同步:基于同步觸發(fā)消息,以所述主節(jié)點(diǎn)的網(wǎng)絡(luò)控制器的時(shí)鐘部件的第三當(dāng)前時(shí)鐘值為基準(zhǔn),將主節(jié)點(diǎn)的網(wǎng)絡(luò)控制器的時(shí)鐘部件的第三當(dāng)前時(shí)鐘值廣播至從節(jié)點(diǎn)的網(wǎng)絡(luò)控制器,從節(jié)點(diǎn)網(wǎng)絡(luò)控制器根據(jù)所接收的第三當(dāng)前時(shí)鐘值更新自身的時(shí)鐘部件的時(shí)鐘。
2.根據(jù)權(quán)利要求1所述的控制器局域網(wǎng)絡(luò)的同步方法,其特征在于,所述主節(jié)點(diǎn)與所述從節(jié)點(diǎn)之間的時(shí)間的同步包括: 步驟a,基于所述同步觸發(fā)消息,分別記錄所述控制器局域網(wǎng)絡(luò)內(nèi)主節(jié)點(diǎn)的網(wǎng)絡(luò)控制器的時(shí)鐘部件的第三當(dāng)前時(shí)鐘值以及從節(jié)點(diǎn)的網(wǎng)絡(luò)控制器的時(shí)鐘部件的第四當(dāng)前時(shí)鐘值,分別記為主節(jié)點(diǎn)同步時(shí)鐘值tm_sync和從節(jié)點(diǎn)同步時(shí)鐘值ts_sync ; 步驟b,將所述主節(jié)點(diǎn)同步時(shí)鐘值tm_sync廣播至從節(jié)點(diǎn); 步驟c,所述從節(jié)點(diǎn)根據(jù)所述從節(jié)點(diǎn)同步時(shí)鐘值ts_sync以及接收到的主節(jié)點(diǎn)同步時(shí)鐘值tm_sync更新自身的時(shí)鐘部件的時(shí)鐘。
3.根據(jù)權(quán)利要求2所述`的控制器局域網(wǎng)絡(luò)的同步方法,其特征在于,所述步驟c包括: 步驟cl,所述從節(jié)點(diǎn)收到所述主節(jié)點(diǎn)同步時(shí)鐘值tm_sync后,采用如下公式重設(shè)自身的時(shí)鐘部件的時(shí)鐘 ts:ts=ts_sync+Δ tm_ts/n+Δ ts,其中,Δ tm-ts=tm_sync_ts_sync,Δ ts=ts_recv-ts_sync, ts_recv為所述從節(jié)點(diǎn)收到所述主節(jié)點(diǎn)同步時(shí)鐘值tm_sync時(shí)從節(jié)點(diǎn)的時(shí)鐘部件的第五當(dāng)前時(shí)鐘值,η為大于I的正整數(shù); 步驟c2,重復(fù)所述步驟a、b、cl多次。
4.根據(jù)權(quán)利要求2所述的控制器局域網(wǎng)絡(luò)的同步方法,其特征在于,基于所述同步觸發(fā)消息,分別記錄所述控制器局域網(wǎng)絡(luò)內(nèi)主節(jié)點(diǎn)的網(wǎng)絡(luò)控制器的第三當(dāng)前時(shí)鐘值以及從節(jié)點(diǎn)的網(wǎng)絡(luò)控制器的時(shí)鐘部件的第四當(dāng)前時(shí)鐘值包括: 在所述主節(jié)點(diǎn)和從節(jié)點(diǎn)的網(wǎng)絡(luò)控制器從控制器局域網(wǎng)絡(luò)接收到所述同步觸發(fā)消息時(shí),將所述主節(jié)點(diǎn)和從節(jié)點(diǎn)自身的時(shí)鐘部件的第三當(dāng)前時(shí)鐘值和第四當(dāng)前時(shí)鐘值分別與所述同步觸發(fā)消息封裝為數(shù)據(jù)幀; 將所述數(shù)據(jù)幀通過通信接口傳輸至所述主節(jié)點(diǎn)和從節(jié)點(diǎn)各自的主控設(shè)備。
5.根據(jù)權(quán)利要求1或2所述的控制器局域網(wǎng)絡(luò)的同步方法,其特征在于,所述主控設(shè)備和網(wǎng)絡(luò)控制器之間的時(shí)間協(xié)調(diào)包括: 各節(jié)點(diǎn)的主控設(shè)備定時(shí)從該節(jié)點(diǎn)自身的時(shí)鐘部件讀取所述時(shí)鐘部件的第二當(dāng)前時(shí)鐘值; 各節(jié)點(diǎn)以讀取的時(shí)鐘部件的第二當(dāng)前時(shí)鐘值更新自身主控設(shè)備的主控時(shí)鐘。
6.根據(jù)權(quán)利要求5所述的控制器局域網(wǎng)絡(luò)的同步方法,其特征在于,所述主控設(shè)備采用如下方式從所述時(shí)鐘部件讀取所述第二當(dāng)前時(shí)鐘值:所述時(shí)鐘部件定時(shí)向所述主控設(shè)備上報(bào)所述第二當(dāng)前時(shí)鐘值。
7.根據(jù)權(quán)利要求1或2所述的控制器局域網(wǎng)絡(luò)的同步方法,其特征在于,所述主控設(shè)備和網(wǎng)絡(luò)控制器之間的時(shí)間協(xié)調(diào)包括: 將各節(jié)點(diǎn)的主控設(shè)備的主控時(shí)鐘的時(shí)鐘值定時(shí)寫入至自身的時(shí)鐘部件中以對(duì)其進(jìn)行更新。
8.根據(jù)權(quán)利要求7所述的控制器局域網(wǎng)絡(luò)的同步方法,其特征在于,所述主控設(shè)備為具有主機(jī)總線的計(jì)算機(jī),所述主控設(shè)備采用如下方式將所述主控時(shí)鐘的時(shí)鐘值寫入至所述時(shí)鐘部件: 關(guān)中斷; 讀取所述主控時(shí)鐘的時(shí)鐘值; 鎖定所述主控設(shè)備的主機(jī)總線; 將所述主控時(shí)鐘的時(shí)鐘值經(jīng)由所述主機(jī)總線寫入至所述時(shí)鐘部件中; 解除對(duì)所述主機(jī)總線的鎖定; 開中斷。
9.根據(jù)權(quán)利要求 1至8中任一項(xiàng)所述的控制器局域網(wǎng)絡(luò)的同步方法,其特征在于,所述同步觸發(fā)消息由所述控制器局域網(wǎng)絡(luò)中的任一節(jié)點(diǎn)發(fā)出。
10.根據(jù)權(quán)利要求1所述的控制器局域網(wǎng)絡(luò)的同步方法,其特征在于,還包括: 在每個(gè)節(jié)點(diǎn)的數(shù)據(jù)幀的封裝之后,將所述數(shù)據(jù)幀通過通信接口傳輸至所述主控設(shè)備。
【文檔編號(hào)】H04L7/00GK103795519SQ201210431049
【公開日】2014年5月14日 申請日期:2012年11月1日 優(yōu)先權(quán)日:2012年11月1日
【發(fā)明者】曾群, 趙大鵬 申請人:上海聯(lián)影醫(yī)療科技有限公司