本發(fā)明涉及一種基于工業(yè)環(huán)網(wǎng)的時(shí)間同步系統(tǒng)及其工作方法,屬于通信網(wǎng)絡(luò)技術(shù)領(lǐng)域。
背景技術(shù):
隨著信息化與工業(yè)化的深度融合,網(wǎng)絡(luò)技術(shù)滲透到了工業(yè)產(chǎn)業(yè)鏈的各個(gè)環(huán)節(jié),借助互聯(lián)網(wǎng),工業(yè)設(shè)備也能夠完成高效可靠的遠(yuǎn)程控制,并實(shí)現(xiàn)預(yù)測(cè)性維護(hù)、信息安全、能源監(jiān)控以及高級(jí)診斷等原先無(wú)法大范圍采用的技術(shù),使工業(yè)設(shè)備管理正式進(jìn)入網(wǎng)絡(luò)時(shí)代。
當(dāng)前工業(yè)生產(chǎn)過(guò)程中會(huì)存在大量通過(guò)網(wǎng)絡(luò)連接在一起的分布式終端設(shè)備,這些設(shè)備類(lèi)型多變、功能復(fù)雜,它們經(jīng)由網(wǎng)絡(luò)管理系統(tǒng)統(tǒng)一指揮,協(xié)同完成工作,因此要求設(shè)備間具有較為一致的時(shí)間基準(zhǔn),確保誤差能夠限定在可控的范圍內(nèi),這對(duì)網(wǎng)絡(luò)的時(shí)間同步能力提出了巨大的挑戰(zhàn)。
現(xiàn)有互聯(lián)系統(tǒng)雖存在多種時(shí)間同步算法,但多用于因特網(wǎng)等廣域網(wǎng)絡(luò),實(shí)現(xiàn)過(guò)程復(fù)雜,需要專(zhuān)用的定時(shí)設(shè)備,應(yīng)用成本較高;工業(yè)網(wǎng)絡(luò)的同步方案則多基于線形結(jié)構(gòu)或總線結(jié)構(gòu),當(dāng)設(shè)備需要采用環(huán)形連接時(shí)將存在兼容性問(wèn)題,因此都不是環(huán)網(wǎng)條件下的理想應(yīng)用方案。
技術(shù)實(shí)現(xiàn)要素:
針對(duì)現(xiàn)有技術(shù)的不足,本發(fā)明提供了一種基于工業(yè)環(huán)網(wǎng)的時(shí)間同步系統(tǒng);
本發(fā)明還提供了上述時(shí)間同步系統(tǒng)的工作方法;
網(wǎng)絡(luò)中的管理控制設(shè)備可以按照本發(fā)明所述方法實(shí)時(shí)計(jì)算、發(fā)布網(wǎng)絡(luò)傳輸延時(shí)信息及參考時(shí)間信息,聯(lián)入網(wǎng)絡(luò)的各個(gè)受控設(shè)備據(jù)此動(dòng)態(tài)修正本地時(shí)間,從而確保各設(shè)備間的同步性能。
本發(fā)明的技術(shù)方案為:
一種基于工業(yè)環(huán)網(wǎng)的時(shí)間同步系統(tǒng),包括若干臺(tái)工作站,還包括:
數(shù)據(jù)傳輸網(wǎng)絡(luò)模塊,用于為若干臺(tái)所述工作站提供網(wǎng)絡(luò)連接,并設(shè)定若干臺(tái)工作站中的任一臺(tái)工作站為網(wǎng)絡(luò)管理控制設(shè)備,即主工作站,其它剩余工作站為從工作站,還用于搭建主環(huán)路、備環(huán)路,主環(huán)路從主工作站開(kāi)始,按照順時(shí)針?lè)较蛞来芜B接各個(gè)從工作站并最終環(huán)形連接返回到所述主工作站,備環(huán)路從主工作站開(kāi)始,按照逆時(shí)針?lè)较蛞来芜B接各個(gè)從工作站并最終環(huán)形連接返回到所述主工作站;和
若干個(gè)時(shí)間計(jì)數(shù)模塊,分別設(shè)置在每個(gè)工作站中。
根據(jù)本發(fā)明優(yōu)選的,主工作站通過(guò)主環(huán)路發(fā)送時(shí)間戳獲取命令,并記錄下發(fā)送命令時(shí)的主工作站本地時(shí)間;從工作站在收到時(shí)間戳獲取命令后,以從工作站時(shí)間計(jì)數(shù)模塊為參考在指定位置打入時(shí)間戳并通過(guò)主環(huán)路發(fā)送至下一從工作站,該命令遍歷所有從工作站后返回主工作站,
主工作站則立刻通過(guò)備環(huán)路再次發(fā)送時(shí)間戳獲取命令,該命令經(jīng)歷與先前同樣的過(guò)程后再次回到主工作站,主工作站根據(jù)本地時(shí)間計(jì)數(shù)模塊及命令中的各時(shí)間戳計(jì)算出主工作站數(shù)據(jù)沿主環(huán)路發(fā)送到每一個(gè)從工作站的路徑延時(shí),
并將該路徑延時(shí)及主工作站的當(dāng)前時(shí)間信息沿主環(huán)路發(fā)送至每一從工作站,從工作站獲取信息后更新本地時(shí)間計(jì)數(shù)模塊,完成時(shí)間同步;
主工作站周期性或非周期性的重復(fù)上述過(guò)程實(shí)時(shí)修正計(jì)時(shí)誤差。
根據(jù)本發(fā)明優(yōu)選的,所述時(shí)間計(jì)數(shù)模塊為時(shí)間計(jì)數(shù)器。
上述時(shí)間同步系統(tǒng)的工作方法,主工作站周期性或非周期性的重復(fù)步驟(1)至步驟(4)實(shí)時(shí)修正計(jì)時(shí)誤差,步驟(1)至步驟(4)包括:
(1)主工作站沿主環(huán)路發(fā)送時(shí)間戳獲取命令,并記錄下發(fā)送命令時(shí)的主工作站本地時(shí)間;從工作站在收到時(shí)間戳獲取命令后,以從工作站時(shí)間計(jì)數(shù)模塊為參考在指定位置打入時(shí)間戳并通過(guò)主環(huán)路發(fā)送至下一從工作站,該命令遍歷所有從工作站后返回主工作站;
(2)主工作站則立刻沿備環(huán)路再次發(fā)送時(shí)間戳獲取命令,從工作站在收到時(shí)間戳獲取命令后,以從工作站時(shí)間計(jì)數(shù)模塊為參考在指定位置打入時(shí)間戳并通過(guò)備環(huán)路發(fā)送至下一從工作站,該命令遍歷所有從工作站后返回主工作站;
(3)主工作站根據(jù)本地時(shí)間計(jì)數(shù)模塊及命令中的各時(shí)間戳,計(jì)算出主工作站數(shù)據(jù)沿主環(huán)路發(fā)送到每一個(gè)從工作站的路徑延時(shí);
(4)主工作站將步驟(3)計(jì)算出的路徑延時(shí)及主工作站的當(dāng)前時(shí)間信息沿主環(huán)路發(fā)送至每一從工作站,從工作站獲取后更新本地時(shí)間計(jì)數(shù)模塊,完成時(shí)間同步;
根據(jù)本發(fā)明優(yōu)選的,所述步驟(1),包括:
a、時(shí)間同步系統(tǒng)上電啟動(dòng)后,所有工作站的時(shí)間計(jì)數(shù)模塊在本地晶振的驅(qū)動(dòng)下,按照相同的計(jì)數(shù)方式進(jìn)行計(jì)時(shí);
b、待所有工作站開(kāi)始工作后,主工作站沿主環(huán)路發(fā)送時(shí)間戳獲取命令,同時(shí)記錄下本地時(shí)間計(jì)數(shù)模塊的當(dāng)前數(shù)值tm1,所述時(shí)間戳獲取命令包括多個(gè)從工作站地址字段以及與各個(gè)從工作站地址字段對(duì)應(yīng)的主環(huán)路時(shí)間戳字段、備環(huán)路時(shí)間戳字段;
c、從工作站通過(guò)主環(huán)路獲取該時(shí)間戳獲取命令后,查找該時(shí)間戳獲取命令中所有的從工作站地址字段,并與本工作站匹配,如果與本工作站地址一致時(shí),則在該從工作站地址字段對(duì)應(yīng)的主環(huán)路時(shí)間戳字段中寫(xiě)入本工作站時(shí)間計(jì)數(shù)模塊的當(dāng)前數(shù)值,并通過(guò)主環(huán)路將時(shí)間戳獲取命令轉(zhuǎn)發(fā)至下一從工作站,重新執(zhí)行步驟c直至遍歷所有從工作站返回主工作站,否則,直接通過(guò)主環(huán)路將時(shí)間戳獲取命令轉(zhuǎn)發(fā)至下一從工作站,重新執(zhí)行步驟c直至遍歷所有從工作站返回主工作站。
根據(jù)本發(fā)明優(yōu)選的,所述步驟(2),包括:
d、主工作站沿備環(huán)路發(fā)送時(shí)間戳獲取命令;
e、從工作站通過(guò)備環(huán)路獲取該時(shí)間戳獲取命令后,查找該時(shí)間戳獲取命令中所有的從工作站地址字段,并與本工作站匹配,如果與本工作站地址一致時(shí),則在該從工作站地址字段對(duì)應(yīng)的備環(huán)路時(shí)間戳字段中寫(xiě)入本工作站時(shí)間計(jì)數(shù)模塊的當(dāng)前數(shù)值,并通過(guò)備環(huán)路將時(shí)間戳獲取命令轉(zhuǎn)發(fā)至下一從工作站,重新執(zhí)行步驟e直至遍歷所有從工作站返回主工作站,否則,直接通過(guò)備環(huán)路將時(shí)間戳獲取命令轉(zhuǎn)發(fā)至下一從工作站,重新執(zhí)行步驟e直至遍歷所有從工作站返回主工作站;
f、主工作站記錄下本工作站時(shí)間計(jì)數(shù)模塊的當(dāng)前數(shù)值tm2。一次完整的時(shí)間戳獲取過(guò)程就此完成。
根據(jù)本發(fā)明優(yōu)選的,所述步驟(3),通過(guò)步驟g、步驟h計(jì)算得到主工作站與每一個(gè)從工作站間的路徑延時(shí),包括:
g、主工作站計(jì)算出通過(guò)主環(huán)路發(fā)送時(shí)間戳獲取命令到最終由備環(huán)路收到該命令的時(shí)間差:tdm=tm2-tm1;
h、計(jì)算主工作站與某一從工作站的路徑延時(shí),主工作站在時(shí)間戳獲取命令中查找到該從工作站地址對(duì)應(yīng)的主環(huán)路時(shí)間戳字段的值ts1,及該從工作站地址對(duì)應(yīng)的備環(huán)路時(shí)間戳字段的值ts2,計(jì)算出差值:tds=ts2-ts1,則主工作站與該從工作站間的路徑延時(shí)d=(tdm-tds)/2。
根據(jù)本發(fā)明優(yōu)選的,所述步驟(4),包括:
i、主工作站通過(guò)主環(huán)路發(fā)送延時(shí)通知命令,將該延時(shí)通知命令通知各個(gè)從工作站,所述延時(shí)通知命令包括多個(gè)從工作站地址字段以及與各個(gè)從工作站地址字段對(duì)應(yīng)的路徑延時(shí);
j、從工作站獲取延時(shí)通知命令后,查找該延時(shí)通知命令中所有的從工作站地址字段,并與本工作站地址匹配,如果與本工作站地址一致時(shí),則獲取該從工作站地址字段對(duì)應(yīng)的路徑延時(shí),并通過(guò)主環(huán)路將該延時(shí)通知命令轉(zhuǎn)發(fā)至下一從工作站,重新執(zhí)行步驟j直至遍歷所有從工作站返回主工作站,否則,直接通過(guò)主環(huán)路將延時(shí)通知命令轉(zhuǎn)發(fā)至下一從工作站,重新執(zhí)行步驟j直至遍歷所有從工作站返回主工作站;
k、主工作站完成延時(shí)通知后,通過(guò)主環(huán)路發(fā)送參考時(shí)間通知命令至各個(gè)從工作站,所述參考時(shí)間通知命令包括參考時(shí)間,參考時(shí)間為主工作站在發(fā)送參考時(shí)間通知命令時(shí)本地時(shí)間計(jì)數(shù)模塊的當(dāng)前值trm,從工作站接收該命令后,獲取參考時(shí)間,并將命令沿主環(huán)路轉(zhuǎn)發(fā)至下一工作站,最終該命令回到主工作站;
l、從工作站獲路徑延時(shí)d及參考時(shí)間trm后,計(jì)算出新的時(shí)間計(jì)數(shù)模塊數(shù)值trl=trm+d,并使用該值更新本地時(shí)間計(jì)數(shù)模塊,此時(shí)本地時(shí)間計(jì)數(shù)模塊的值即與主站時(shí)間計(jì)數(shù)器的值一致;當(dāng)所有從工作站均完成此步驟后,完成時(shí)間同步。
本發(fā)明的有益效果為:
本發(fā)明實(shí)時(shí)計(jì)算和發(fā)布網(wǎng)絡(luò)傳輸延時(shí)信息及參考時(shí)間信息,聯(lián)入網(wǎng)絡(luò)的各個(gè)受控設(shè)備據(jù)此動(dòng)態(tài)修正本地時(shí)間,從而確保各設(shè)備間更精確的同步性能。本發(fā)明高效可靠、低成本的使設(shè)備間的時(shí)間誤差維持在可控范圍內(nèi),滿(mǎn)足工業(yè)產(chǎn)品加工精度的要求。
附圖說(shuō)明
圖1為基于工業(yè)環(huán)網(wǎng)的時(shí)間同步系統(tǒng)結(jié)構(gòu)框圖;
圖2為時(shí)間戳獲取命令傳輸路徑圖;
圖3為路徑延時(shí)計(jì)算過(guò)程示意圖。
具體實(shí)施方式
下面結(jié)合說(shuō)明書(shū)附圖和實(shí)施例對(duì)本發(fā)明作進(jìn)一步限定,但不限于此。
實(shí)施例1
一種基于工業(yè)環(huán)網(wǎng)的時(shí)間同步系統(tǒng),包括若干臺(tái)工作站,還包括:
數(shù)據(jù)傳輸網(wǎng)絡(luò)模塊,用于為若干臺(tái)所述工作站提供網(wǎng)絡(luò)連接,并設(shè)定若干臺(tái)工作站中的任一臺(tái)工作站為網(wǎng)絡(luò)管理控制設(shè)備,即主工作站,其它剩余工作站為從工作站,還用于搭建主環(huán)路、備環(huán)路,主環(huán)路從主工作站開(kāi)始,按照順時(shí)針?lè)较蛞来芜B接各個(gè)從工作站并最終環(huán)形連接返回到所述主工作站,備環(huán)路從主工作站開(kāi)始,按照逆時(shí)針?lè)较蛞来芜B接各個(gè)從工作站并最終環(huán)形連接返回到所述主工作站;和
若干個(gè)時(shí)間計(jì)數(shù)模塊,分別設(shè)置在每個(gè)工作站中。如圖1所示。
時(shí)間計(jì)數(shù)模塊為時(shí)間計(jì)數(shù)器,所有工作站應(yīng)采用頻率較為一致的晶振作為時(shí)間計(jì)數(shù)器的計(jì)時(shí)參考及數(shù)據(jù)收發(fā)參考,各站間晶振頻率偏差小于1000ppm。
主工作站通過(guò)主環(huán)路發(fā)送時(shí)間戳獲取命令,并記錄下發(fā)送命令時(shí)的主工作站本地時(shí)間;從工作站在收到時(shí)間戳獲取命令后,以從工作站時(shí)間計(jì)數(shù)模塊為參考在指定位置打入時(shí)間戳并通過(guò)主環(huán)路發(fā)送至下一從工作站,該命令遍歷所有從工作站后返回主工作站,主工作站則立刻通過(guò)備環(huán)路再次發(fā)送時(shí)間戳獲取命令,該命令經(jīng)歷與先前同樣的過(guò)程后再次回到主工作站,主工作站根據(jù)本地時(shí)間計(jì)數(shù)模塊及命令中的各時(shí)間戳計(jì)算出主工作站數(shù)據(jù)沿主環(huán)路發(fā)送到每一個(gè)從工作站的路徑延時(shí),并將該路徑延時(shí)及主工作站的當(dāng)前時(shí)間信息沿主環(huán)路發(fā)送至每一從工作站,從工作站獲取信息后更新本地時(shí)間計(jì)數(shù)模塊,完成時(shí)間同步;主工作站周期性或非周期性的重復(fù)上述過(guò)程實(shí)時(shí)修正計(jì)時(shí)誤差。
實(shí)施例2
實(shí)施例1所述的一種基于工業(yè)環(huán)網(wǎng)的時(shí)間同步系統(tǒng)的工作方法,主工作站周期性或非周期性的重復(fù)步驟(1)至步驟(4)實(shí)時(shí)修正計(jì)時(shí)誤差,步驟(1)至步驟(4)包括:
(1)主工作站沿主環(huán)路發(fā)送時(shí)間戳獲取命令,并記錄下發(fā)送命令時(shí)的主工作站本地時(shí)間;從工作站在收到時(shí)間戳獲取命令后,以從工作站時(shí)間計(jì)數(shù)模塊為參考在指定位置打入時(shí)間戳并通過(guò)主環(huán)路發(fā)送至下一從工作站,該命令遍歷所有從工作站后返回主工作站;
(2)主工作站則立刻沿備環(huán)路再次發(fā)送時(shí)間戳獲取命令,從工作站在收到時(shí)間戳獲取命令后,以從工作站時(shí)間計(jì)數(shù)模塊為參考在指定位置打入時(shí)間戳并通過(guò)備環(huán)路發(fā)送至下一從工作站,該命令遍歷所有從工作站后返回主工作站;如圖2所示;
(3)主工作站根據(jù)本地時(shí)間計(jì)數(shù)模塊及命令中的各時(shí)間戳,計(jì)算出主工作站數(shù)據(jù)沿主環(huán)路發(fā)送到每一個(gè)從工作站的路徑延時(shí);
(4)主工作站將步驟(3)計(jì)算出的路徑延時(shí)及主工作站的當(dāng)前時(shí)間信息沿主環(huán)路發(fā)送至每一從工作站,從工作站獲取后更新本地時(shí)間計(jì)數(shù)模塊,完成時(shí)間同步;
步驟(1),包括:
a、時(shí)間同步系統(tǒng)上電啟動(dòng)后,所有工作站的時(shí)間計(jì)數(shù)模塊在本地晶振的驅(qū)動(dòng)下,按照相同的計(jì)數(shù)方式進(jìn)行計(jì)時(shí);
b、待所有工作站開(kāi)始工作后,主工作站沿主環(huán)路發(fā)送時(shí)間戳獲取命令,同時(shí)記錄下本地時(shí)間計(jì)數(shù)模塊的當(dāng)前數(shù)值tm1,所述時(shí)間戳獲取命令包括多個(gè)從工作站地址字段以及與各個(gè)從工作站地址字段對(duì)應(yīng)的主環(huán)路時(shí)間戳字段、備環(huán)路時(shí)間戳字段;
c、從工作站通過(guò)主環(huán)路獲取該時(shí)間戳獲取命令后,查找該時(shí)間戳獲取命令中所有的從工作站地址字段,并與本工作站匹配,如果與本工作站地址一致時(shí),則在該從工作站地址字段對(duì)應(yīng)的主環(huán)路時(shí)間戳字段中寫(xiě)入本工作站時(shí)間計(jì)數(shù)模塊的當(dāng)前數(shù)值,并通過(guò)主環(huán)路將時(shí)間戳獲取命令轉(zhuǎn)發(fā)至下一從工作站,重新執(zhí)行步驟c直至遍歷所有從工作站返回主工作站,否則,直接通過(guò)主環(huán)路將時(shí)間戳獲取命令轉(zhuǎn)發(fā)至下一從工作站,重新執(zhí)行步驟c直至遍歷所有從工作站返回主工作站。
步驟(2),包括:
d、主工作站沿備環(huán)路發(fā)送時(shí)間戳獲取命令;
e、從工作站通過(guò)備環(huán)路獲取該時(shí)間戳獲取命令后,查找該時(shí)間戳獲取命令中所有的從工作站地址字段,并與本工作站匹配,如果與本工作站地址一致時(shí),則在該從工作站地址字段對(duì)應(yīng)的備環(huán)路時(shí)間戳字段中寫(xiě)入本工作站時(shí)間計(jì)數(shù)模塊的當(dāng)前數(shù)值,并通過(guò)備環(huán)路將時(shí)間戳獲取命令轉(zhuǎn)發(fā)至下一從工作站,重新執(zhí)行步驟e直至遍歷所有從工作站返回主工作站,否則,直接通過(guò)備環(huán)路將時(shí)間戳獲取命令轉(zhuǎn)發(fā)至下一從工作站,重新執(zhí)行步驟e直至遍歷所有從工作站返回主工作站;
f、主工作站記錄下本工作站時(shí)間計(jì)數(shù)模塊的當(dāng)前數(shù)值tm2。一次完整的時(shí)間戳獲取過(guò)程就此完成。
步驟(3),通過(guò)步驟g、步驟h計(jì)算得到主工作站與每一個(gè)從工作站間的路徑延時(shí),包括:
g、主工作站計(jì)算出通過(guò)主環(huán)路發(fā)送時(shí)間戳獲取命令到最終由備環(huán)路收到該命令的時(shí)間差:tdm=tm2-tm1;
h、計(jì)算主工作站與某一從工作站的路徑延時(shí),主工作站在時(shí)間戳獲取命令中查找到該從工作站地址對(duì)應(yīng)的主環(huán)路時(shí)間戳字段的值ts1,及該從工作站地址對(duì)應(yīng)的備環(huán)路時(shí)間戳字段的值ts2,計(jì)算出差值:tds=ts2-ts1,則主工作站與該從工作站間的路徑延時(shí)d=(tdm-tds)/2,如圖3所示。
步驟(4),包括:
i、主工作站通過(guò)主環(huán)路發(fā)送延時(shí)通知命令,將該延時(shí)通知命令通知各個(gè)從工作站,所述延時(shí)通知命令包括多個(gè)從工作站地址字段以及與各個(gè)從工作站地址字段對(duì)應(yīng)的路徑延時(shí);
j、從工作站獲取延時(shí)通知命令后,查找該延時(shí)通知命令中所有的從工作站地址字段,并與本工作站地址匹配,如果與本工作站地址一致時(shí),則獲取該從工作站地址字段對(duì)應(yīng)的路徑延時(shí),并通過(guò)主環(huán)路將該延時(shí)通知命令轉(zhuǎn)發(fā)至下一從工作站,重新執(zhí)行步驟j直至遍歷所有從工作站返回主工作站,否則,直接通過(guò)主環(huán)路將延時(shí)通知命令轉(zhuǎn)發(fā)至下一從工作站,重新執(zhí)行步驟j直至遍歷所有從工作站返回主工作站;
k、主工作站完成延時(shí)通知后,通過(guò)主環(huán)路發(fā)送參考時(shí)間通知命令至各個(gè)從工作站,所述參考時(shí)間通知命令包括參考時(shí)間,參考時(shí)間為主工作站在發(fā)送參考時(shí)間通知命令時(shí)本地時(shí)間計(jì)數(shù)模塊的當(dāng)前值trm,從工作站接收該命令后,獲取參考時(shí)間,并將命令沿主環(huán)路轉(zhuǎn)發(fā)至下一工作站,最終該命令回到主工作站;
l、從工作站獲路徑延時(shí)d及參考時(shí)間trm后,計(jì)算出新的時(shí)間計(jì)數(shù)模塊數(shù)值trl=trm+d,并使用該值更新本地時(shí)間計(jì)數(shù)模塊,此時(shí)本地時(shí)間計(jì)數(shù)模塊的值即與主站時(shí)間計(jì)數(shù)器的值一致;當(dāng)所有從工作站均完成此步驟后,完成時(shí)間同步。