最新的毛片基地免费,国产国语一级毛片,免费国产成人高清在线电影,中天堂国产日韩欧美,中国国产aa一级毛片,国产va欧美va在线观看,成人不卡在线

控制器局域網(wǎng)絡(luò)的同步方法

文檔序號:7985119閱讀:264來源:國知局
控制器局域網(wǎng)絡(luò)的同步方法
【專利摘要】本發(fā)明提供了一種控制器局域網(wǎng)絡(luò)的同步方法,包括:每個節(jié)點的數(shù)據(jù)幀的封裝:在每個節(jié)點的網(wǎng)絡(luò)控制器從控制器局域網(wǎng)絡(luò)接收到數(shù)據(jù)時,將設(shè)置在節(jié)點的網(wǎng)絡(luò)控制器上的時鐘部件的第一當前時鐘值與所述數(shù)據(jù)封裝為數(shù)據(jù)幀;主控設(shè)備和網(wǎng)絡(luò)控制器之間的時間協(xié)調(diào):基于主控設(shè)備的主控時鐘的時鐘值或者時鐘部件的第二當前時鐘值,協(xié)調(diào)主控時鐘與時鐘部件的時鐘;主節(jié)點與從節(jié)點之間的時間的同步:基于同步觸發(fā)消息,將主節(jié)點的網(wǎng)絡(luò)控制器的時鐘部件的第三當前時鐘值廣播至從節(jié)點的網(wǎng)絡(luò)控制器,從節(jié)點網(wǎng)絡(luò)控制器根據(jù)接收的第三當前時鐘值更新自身時鐘部件的時鐘。本發(fā)明能夠確定消息數(shù)據(jù)到達的精確時間,有利于消除時間偏差,提高控制器局域網(wǎng)絡(luò)的同步精度。
【專利說明】控制器局域網(wǎng)絡(luò)的同步方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種控制器局域網(wǎng)絡(luò)的同步方法,尤其涉及一種用于高精度時鐘同步的控制器局域網(wǎng)絡(luò)的同步方法。
【背景技術(shù)】
[0002]同步基于CANopen協(xié)議的控制器局域網(wǎng)絡(luò)(CAN)中的時鐘,有一個基礎(chǔ)要求是主節(jié)點能夠取得CANopen消息到達主節(jié)點的精確時間?,F(xiàn)有技術(shù)的實現(xiàn)方式中,為了滿足上層應用層獲取CANopen消息數(shù)據(jù)到達的時間,CAN驅(qū)動層對每個收到的數(shù)據(jù)都會打上時間戳,距離CAN數(shù)據(jù)到達最近的時間點是CAN數(shù)據(jù)接收中斷函數(shù)中所確定的時間點。
[0003]如圖1所示,目前主流廠商生產(chǎn)的CAN卡11在從CAN網(wǎng)絡(luò)10接收到CAN幀100之后,將其傳輸至個人計算機(PC) 12,PC 12采取的方法是在驅(qū)動層121的中斷函數(shù)中獲取PC時鐘值,即高精度計時器寄存器123的時鐘值,并將其作為CAN幀100的時間戳124,之后交由應用層122處理。由于此時的PC時鐘值與數(shù)據(jù)真正的到達時間之間存在偏差,即CAN卡11接收CAN幀100的時間到中斷響應中獲取PC時鐘值之間的時間,并且這個偏差存在抖動。
[0004]由于Iinux等操作系統(tǒng)的內(nèi)核是可搶占的,同時驅(qū)動層121在內(nèi)核中獲取PC時鐘時,受系統(tǒng)負載、調(diào)度以及外部事件等等影響,相鄰兩個數(shù)據(jù)到達產(chǎn)生的偏差是不一樣的,因此,CANopen協(xié)議如果利用這種存在偏差和抖動的時間去同步網(wǎng)絡(luò)中的各個設(shè)備,效果肯定是不理想的。

【發(fā)明內(nèi)容】

[0005]本發(fā)明要解決的技術(shù)問題是提供一種控制器局域網(wǎng)絡(luò)的同步方法,能夠確定消息數(shù)據(jù)到達的精確時間,有利于消除時間偏差、提高同步精度。
[0006]為解決上述技術(shù)問題,本發(fā)明提供了一種控制器局域網(wǎng)絡(luò)的同步方法,所述控制器局域網(wǎng)絡(luò)包括主節(jié)點和從節(jié)點,每個節(jié)點包括主控設(shè)備和與其耦合的網(wǎng)絡(luò)控制器,所述方法包括:
[0007]每個節(jié)點的數(shù)據(jù)幀的封裝:在每個節(jié)點的網(wǎng)絡(luò)控制器從控制器局域網(wǎng)絡(luò)接收到數(shù)據(jù)時,將設(shè)置在所述節(jié)點的網(wǎng)絡(luò)控制器上的時鐘部件的第一當前時鐘值與所述數(shù)據(jù)封裝為數(shù)據(jù)幀;
[0008]所述主控設(shè)備和網(wǎng)絡(luò)控制器之間的時間協(xié)調(diào):基于所述主控設(shè)備的主控時鐘的時鐘值或者所述網(wǎng)絡(luò)控制器的時鐘部件的第二當前時鐘值,協(xié)調(diào)所述主控設(shè)備的主控時鐘與所述網(wǎng)絡(luò)控制器的時鐘部件的時鐘;
[0009]所述主節(jié)點與所述從節(jié)點之間的時間的同步:基于同步觸發(fā)消息,以所述主節(jié)點的網(wǎng)絡(luò)控制器的時鐘部件的第三當前時鐘值為基準,將主節(jié)點的網(wǎng)絡(luò)控制器的時鐘部件的第三當前時鐘值廣播至從節(jié)點的網(wǎng)絡(luò)控制器,從節(jié)點網(wǎng)絡(luò)控制器根據(jù)所接收的第三當前時鐘值更新自身的時鐘部件的時鐘。[0010]可選地,所述主節(jié)點與所述從節(jié)點之間的時間的同步包括:
[0011]步驟a,基于所述同步觸發(fā)消息,分別記錄所述控制器局域網(wǎng)絡(luò)內(nèi)主節(jié)點的網(wǎng)絡(luò)控制器的時鐘部件的第三當前時鐘值以及從節(jié)點的網(wǎng)絡(luò)控制器的時鐘部件的第四當前時鐘值,分別記為主節(jié)點同步時鐘值tm_sync和從節(jié)點同步時鐘值ts_sync ;
[0012]步驟b,將所述主節(jié)點同步時鐘值tm_sync廣播至從節(jié)點;
[0013]步驟c,所述從節(jié)點根據(jù)所述從節(jié)點同步時鐘值ts_sync以及接收到的主節(jié)點同步時鐘值tm_sync更新自身的時鐘部件的時鐘。
[0014]可選地,所述步驟c包括:
[0015]步驟cl,所述從節(jié)點收到所述主節(jié)點同步時鐘值tm_sync后,采用如下公式重設(shè)自身的時鐘部件的時鐘 ts:ts=ts_sync+ Δ tm_ts/n+ Δ ts,其中,Δ tm_ts=tm_sync_ts_sync, Δ ts=ts_recv_ts_sync, ts_recv為所述從節(jié)點收到所述主節(jié)點同步時鐘值tm_sync時從節(jié)點的時鐘部件的第五當前時鐘值,η為大于I的正整數(shù);
[0016]步驟c2,重復所述步驟a、b、cl多次。
[0017]可選地,基于所述同步觸發(fā)消息,分別記錄所述控制器局域網(wǎng)絡(luò)內(nèi)主節(jié)點的網(wǎng)絡(luò)控制器的第三當前時鐘值以及從節(jié)點的網(wǎng)絡(luò)控制器的時鐘部件的第四當前時鐘值包括:
[0018]在所述主節(jié)點和從節(jié)點的網(wǎng)絡(luò)控制器從控制器局域網(wǎng)絡(luò)接收到所述同步觸發(fā)消息時,將所述主節(jié)點和從節(jié)點自身的時鐘部件的第三當前時鐘值和第四當前時鐘值分別與所述同步觸發(fā)消息封裝為數(shù)據(jù)幀;
[0019]將所述數(shù)據(jù)幀通過通信接口傳輸至所述主節(jié)點和從節(jié)點各自的主控設(shè)備。
[0020]可選地,所述主控設(shè)備和網(wǎng)絡(luò)控制器之間的時間協(xié)調(diào)包括:
[0021]各節(jié)點的主控設(shè)備定時從該節(jié)點自身的時鐘部件讀取所述時鐘部件的第二當前時鐘值;
[0022]各節(jié)點以讀取的時鐘部件的第二當前時鐘值更新自身主控設(shè)備的主控時鐘。
[0023]可選地,所述主控設(shè)備采用如下方式從所述時鐘部件讀取所述第二當前時鐘值:所述時鐘部件定時向所述主控設(shè)備上報所述第二當前時鐘值。
[0024]可選地,所述主控設(shè)備和網(wǎng)絡(luò)控制器之間的時間協(xié)調(diào)包括:
[0025]將各節(jié)點的主控設(shè)備的主控時鐘的時鐘值定時寫入至自身的時鐘部件中以對其進行更新。
[0026]可選地,所述主控設(shè)備為具有主機總線的計算機,所述主控設(shè)備采用如下方式將所述主控時鐘的時鐘值寫入至所述時鐘部件:
[0027]關(guān)中斷;
[0028]讀取所述主控時鐘的時鐘值;
[0029]鎖定所述主控設(shè)備的主機總線;
[0030]將所述主控時鐘的時鐘值經(jīng)由所述主機總線寫入至所述時鐘部件中;
[0031]解除對所述主機總線的鎖定;
[0032]開中斷。
[0033]可選地,所述同步觸發(fā)消息由所述控制器局域網(wǎng)絡(luò)中的任一節(jié)點發(fā)出。
[0034]可選地,所述方法還包括:在每個節(jié)點的數(shù)據(jù)幀的封裝之后,將所述數(shù)據(jù)幀通過通信接口傳輸至所述主控設(shè)備。[0035]與現(xiàn)有技術(shù)相比,本發(fā)明具有以下優(yōu)點:
[0036]本發(fā)明實施例的控制器局域網(wǎng)絡(luò)的同步方法中,在控制器局域網(wǎng)絡(luò)內(nèi)各節(jié)點的網(wǎng)絡(luò)控制器處設(shè)置獨立的時鐘部件,之后基于同步觸發(fā)消息,記錄主節(jié)點的時鐘部件的第三當前時鐘值以及從節(jié)點的時鐘部件的第四當前時鐘值,分別記為為主節(jié)點同步時鐘值tm_sync和從節(jié)點同步時鐘值ts_sync,并將主節(jié)點同步時鐘值tm_sync廣播至各從節(jié)點,從節(jié)點根據(jù)先前記錄的從節(jié)點同步時鐘值ts_sync以及接收到的主節(jié)點同步時鐘值tm_sync更新自身的工作時鐘。由于在網(wǎng)絡(luò)控制器上設(shè)置了獨立的時鐘部件,因而可以將同步觸發(fā)消息到達各節(jié)點的精確時間記錄下來,避免了操作系統(tǒng)對中斷響應的不確定性和不穩(wěn)定性,使得各節(jié)點之間的同步更精確。
[0037]進一步地,本發(fā)明實施例的控制器局域網(wǎng)絡(luò)的同步方法還包括節(jié)點的數(shù)據(jù)幀的封裝,當網(wǎng)絡(luò)控制器從控制器局域網(wǎng)絡(luò)接收到數(shù)據(jù)時,將接收到的數(shù)據(jù)與時鐘部件的第一當前時鐘值封裝為數(shù)據(jù)幀,并經(jīng)由通信接口傳輸至主控設(shè)備,由于數(shù)據(jù)幀中包含有數(shù)據(jù)到達時的準確時間,因而主控設(shè)備中的中斷響應無需進行時間戳的添加動作,主控設(shè)備的負載以及外部事件并不會對記錄的數(shù)據(jù)到達時間造成影響。
[0038]此外,本發(fā)明實施例中,控制器局域網(wǎng)絡(luò)節(jié)點的主控設(shè)備與網(wǎng)絡(luò)控制器的時鐘部件的時鐘可以協(xié)調(diào),可以以時鐘部件為基準,也可以以主控設(shè)備的主控時鐘為基準,使得整個節(jié)點是基于同一個時鐘工作的。
【專利附圖】

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