EtherCAT DC (學習筆記)


1. EtherCAT 同步模式

EtherCAT從站芯片周期性地依次執行計算數據拷貝任務,其工作周期從數微秒到數毫秒不等。通過分布時鍾的參數可以精確設置每個EtherCAT從站刷新輸出讀取輸入的時間,以確保主站接收的來自不同從站的輸入信號值是在同一時刻獲取的,而主站發送給不同從站的輸出信號,也能在同一時刻觸發所連接的輸出電路。

在這里插入圖片描述

Ethercat的根本目的就是主站驅動多個從站同步動作。在周期性的通訊中,要達到這個目標,一個通訊周期中的四個時間點最為關鍵:

  • 1、從站接收到數據包的時間點(主站數據 ←→ 從站DPRAM) SM2

誤差1:因為EtherCAT的總線通訊是串行的,所以多個從站接收到數據包的時刻肯定是不一樣的。

誤差2:另外因為主站自己的偏差,它每次發包的時間間距也是帶偏差的,但是這種偏差對所有從站來說都是一樣的。

因為以上兩種偏差的存在,想單純的靠提高實時性來達到理想狀態的實時性是不可能完成的。這種只能達到us精度的同步。

要實現ns精度的同步,必須依靠DC分布時鍾。大家依賴DC協議把自己的本地時鍾對齊。對接收數據的時刻可以容忍us級的誤差,但是output和input大家在約定的本地時間點同時動作,這樣就實現了ns級的同步。

  • 2、從站output的時間點(從站DPRAM → 從站實際硬件)

從站從EtherCAT數據包中獲取到的數據會先放到DPRAM中暫存,多個從站在約定的DC時間點,同時輸出才能做到真同步。

  • 3、從站intput的時間點(從站實際硬件 → 從站DPRAM)

在下個通訊周期來臨之前,從站需要准備好DPRAM中的數據。多個從站在約定的DC時間點,同時采集數據到DPRAM才能做到真同步。

每個從站都同步到主站,意味着不同從站之間也實現了相互的同步。

  • 4、不同從站的output/input硬件性能偏差

通過DC同步以后,多個從站發起output/input的時間點可以做到ns級的同步,但是由於從站硬件性能的不同,實際上的硬件輸出時刻還是有偏差。

為了補償這部分的偏差,EtherCAT針對每個從站設計了補償參數。

shift time(0x1C32/33:03)、
Calc and copy time(0x1C32/33:06)、
Delay time(0x1C32/33:09)。

關於從站應用相對主站循環的時間關系,EtherCAT定義了3種主要的同步模式(synchronization modes):

  • 1、Free Run (非同步): 從站的過程數據處理,由內部事件觸發,與主站循環無關。

  • 2、SM-Synchronous: 從站的過程數據處理,由接收到攜帶過程數據的周期性數據幀時所產生的硬件中斷觸發.

  • 3、DC-Synchronous: 從站的過程數據處理,由基於分布時鍾和系統時間的硬件中斷觸發。.

支持DC功能的從站,其同步模式在 TwinCAT 中的“DC” 頁面進行配置 (每個從站的同步模式互相獨立):

在這里插入圖片描述
帶有分布時鍾的EtherCAT從站可以設置其工作模式:

Free Run,EtherCAT從站並不與EtherCAT主站同步。從站各自觸發輸入或輸出,與參考時鍾無關。 

synchronize with SM event,EtherCAT從站檢測到數據幀經過時觸發讀取輸入或者刷新輸出的動作。如果數據幀中有本站的Output數據即觸發SM2事件,如果數據幀中只Input數據就觸發SM3事件。 

synchronize with SYNC event,EtherCAT從站根據本地DC時鍾的同步脈沖SYNC0或者SYNC1來確定讀取輸入或者刷新輸出的時間。

1.1 Free Run 模式

從站的過程數據處理,由內部事件觸發:

不用定義周期性數據幀與從站本地應用程序之間的時間關系

各個“Free Run” 模式的從站之間,其時間偏移量不固定

適用於處理信號變化緩慢的 I/O 設備 (比如溫度信號 …)

在這里插入圖片描述
在這里插入圖片描述

1.2 SM-Synchronous 模式

從站的過程數據處理,在接收到周期性數據幀時觸發.

同步不准的第1個原因: 所有從站接收的周期性數據幀具有同樣的抖動(Jitter),該抖動值受發送此幀的主站影響。

同步不准的第2個原因: 即使沒有抖動(Jitter),受實際硬件傳播延時的影響,最末端的從站接受數據幀的時間必然晚於第一個從站的接收到該數據幀時間。

適用於PLC控制的 定位動作。

在這里插入圖片描述

因為是受接收數據包事件驅動的,由於兩個原因誤差的存在,多個從站接接收到數據包的時刻肯定是不同步的。這種輸出時間誤差是us級的,可以用在一些慢速設備上面,例如一些PLC控制的設備。

在這里插入圖片描述

1.3 DC-Synchronous 模式

從站過程數據的處理,由從站中基於DC系統時間產生的硬件同步事件(SYNC Event)觸發。

基於分布時鍾的系統時間(DC System Time), 在每個DC從站的內部產生硬件同步事件。

每個從站中的觸發事件不受主站抖動和傳播延時的影響。

適用於 NC任務控制的伺服驅動,以及超采樣的IO模塊

在這里插入圖片描述

DC模式可以容忍主機數據更新到從機DPRAM的時間點不一致,但是從機把數據從DPRAM更新到實際硬件的數據能做到高精度的一致。多路電機的同步控制,需要這種高精度的同步。

在這里插入圖片描述

1.3.1 Time Shift

在主站和從站應用程序的循環起始點之間總是需要若干偏移時間 shift, 以使所有從站都能在它的循環程序開始之前接收到數據:

在這里插入圖片描述

在 DC-synchronous模式,在主站和從站應用程序的循環起始點之間總是需要若干偏移時間 shift, 以使所有從站都能在它的循環程序開始之前接收到數據:

在這里插入圖片描述

  • 主站配置

通過主站的 SYNC Shift Time 設置所有DC同步模式的從站的時間偏移. 可以分別設置兩個不同的 SYNC Shift Time 參數:

在這里插入圖片描述

TwinCAT 自動把 SYNC Shift Time for Outputs 的默認值設置為通訊周期(communication cycle time)的30%,而 SYNC Shift Time for Inputs 的值與 TwinCAT 版本有關):
在這里插入圖片描述

這個默認值是一個很好的平衡,在絕大部分實際的應用項目中可以確保實現正確的時間同步。

只有非常有挑戰性的應用項目(任務周期極短,從站數量極多),或者EtherCAT網絡啟動后發生了同步錯誤,才需要更精確地評估並調整 SYNC Shift Time 的默認值。

  • CurTaskTime

在TwinCAT中,SYNC Shift Time 的參考點稱為 CurTaskTime, 對應於周期性數據幀第1次到達參考時鍾設備 (網絡中第1個 DC從站)的時間。

在這里插入圖片描述

注意:應該是TwinCAT包裝出了Input SYNC0Output SYNC0兩種配置。對EtherCAT協議來說應該就一個SYNC0信號,Output Valid = SYNC0 + 從站Output Shift TimeIntput Latch = SYNC0 + 從站Intput Shift Time

1.4 DC-Synchronous 模式細調

以Output為例,在上一節的DC模式中通過設置主站的SYNC Shift Time for Outputs參數設置了所有從站SYNC0事件的同步。SYNC0事件定義了CurTaskTime到從站開始執行Output動作的時間。

但是由於從站硬件間的差異,大家同時開始執行輸出動作,但是到實際輸出電信號到執行機構上的時間是不一樣的。為了消除這個差異,需要調試從站內部時序(internal timings)。讓多個從站的Outputs ValidInput Latch事件保持高度一致。

每個 DC-Synchronous 的從站給本地事件(Local Event)定義內部時序(internal timings)。本地時序的參考點就是同部事件(SYNC event), 通過SYNC Shift Time 依次設定。

在這里插入圖片描述

需要特別說明的是,在從站內部循環里面最重要的兩個的本地事件:

Output Valid(輸出生效):從站設置現場物理輸出信號的時刻,輸出數據接收自主站上一個通訊周期發來的數據幀。
Input Latch(輸入鎖存):從站采集現場物理輸入信號的時刻,輸入數據將在下一個通訊周期的數據發送到主站。 

在這里插入圖片描述

1.4.1 0x1C32/33 對象字

從站通過通過標准的CoE對象0x1C32和 0x1C33描述內部時序。其中0x1C32描述Output,0x1C33描述Input。
請注意0x1C32/33是一個CoE對象,而不是一個寄存器,每個對象包含0x20個寄存器:

在這里插入圖片描述

EtherCAT從站的參數保存在E2PROM中,而供外部訪問的參數則封裝成CanOpen對象字的形式。通過參數0x1C32 和 0x1C33的不同組合,可以確定分布時鍾的工作模式,組合方式如下:
在這里插入圖片描述

從站能支持的同步模式定義在0x1C32/33:04的子索引Synchronization Types supported 中:
在這里插入圖片描述

1.4.2 最小循環時間 (0x1C32/33:05)

每個從站為了完成所有內部任務需要的最小循環時間,包括過程數據的交換, 郵箱通訊, 狀態機處理, 應用相關的功能等等, 最小循環時間取決於多個因素,比如應用的復雜程度以及要交換的過程數據量:
在這里插入圖片描述

對於鏈接到 DC-Synchronous 從站的任務,應該確保 主站通訊周期(Communication Cycle Time )≥ (從站最小循環時間)Minimum Cycle Time,否則從站應用就可能跟不上主站通訊的節拍。

如果為了確保主站通訊周期大於所有從站的最小循環周期,不得不嚴重限制某些DC及非DC從站的通訊周期,以至於需要快速響應的任務不能執行,建議使用周期不同的多個任務,並把每個從站鏈接到適當周期的任務。

1.4.3 輸入/輸出偏移時間 (Output/Input Shift Time ) (0x1C32/33:03)

從站可以選擇支持硬件刷新( Output Valid and/or Input Latch )的軟件偏移時間(Shift Time)。如果這個SubIndex可寫,主站/用戶就可以在從站周期的范圍內對硬件刷新事件(Output Valid and/or Input Latch)的觸發時間進行微調。
在這里插入圖片描述

從站通過以下界面處配置Output Shift Time/Input Shift Time

每個DC-Synchronous模式的從站都配置為使用主站的SYNC Shift Time 作為輸出偏移或者輸入偏移, 從來不會同時用作輸出偏移和輸入偏移。在ESI文件中有標明 SYNC Shift Time 是用作輸入還是輸出偏移,並顯示在TwinCAT的從站設置頁面。

如果在slave Advanced Settings 中使用默認設置的 “Based on Input Reference”標記,主站在對從站進行初始化時就會使用 SYNC Shift Time 作為輸入的同步偏移時間 …

否則就使用SYNC Shift Time 作為輸出的同步偏移時間

在這里插入圖片描述

從站“Advanced Settings”中 “Shift Time ”的顯示值是從站同步脈沖相對於主站“Advanced Settings”中的SYNC Shift Time For Output 的偏移量。
如果把參考點的差異考慮在內,絕對偏移量與主站中的 Advanced Settings設置是一致 (但是,如果從站置了自定義的偏移量):

在這里插入圖片描述

與主站設置中的全局性的 SYNC Shift Time 參數不同,大部分從站 Advanced Settings 中的DC分布時鍾參數是從它們的ESI(EtherCAT Slave Information)文件提取的:這些參數由從站的生產廠家決定,保證實現正確的操作,用戶切勿修改。(ENI: EtherCAT Network Information)

在這里插入圖片描述

1.4.4 Synchronoµs with SYNC event模式(帶Shift參數)

有了上一節可配置的Output Shift Time/Input Shift Time,可以在DC模式上進一步對本從站的硬件刷新事件(Output Valid and/or Input Latch)的觸發時間進行微調。

從站時鍾觸發的Sync0事件決定了各種任務的開始時間,Sync0后立即運算和復制內存,但並不驅動硬件,而是延遲一段時間再驅動硬件。

  • 對於輸出信號,延時的時間就是在Sync0之后延時Output Shift Time(0x1C32:03)減去硬件狀態切換需要的時間Delay Time(0x1C32:09),觸發輸出(Start Driving Outputs)動作。

Shift Time取值應該大於硬件輸出轉換速度最慢的那個從站的值,每個從站在自己的Delay Time的補償下,通過不同時刻來啟動Start Driving Outputs,達到從站間Outputs Valid動作一致。

  • 對於輸入信號,則是在Sync0之后延時Input Shift Time(0x1C33:03)減去硬件狀態獲取需要的時間Delay Time(0x1C33:09),再觸發狀態獲取(Start Latch)動作。

Shift Time取值應該大於硬件輸入轉換速度最慢的那個從站的值,每個從站在自己的Delay Time的補償下,通過不同時刻來啟動Start Latch,達到從站間Input Latch動作一致。

如圖所示:
在這里插入圖片描述

需要注意的是:這張圖里描述的ouputCalc + Copy Time的位置有些不合理,正確的做法應該是上上節圖中的畫法,在SM2信號以后。

與不帶Shift參數的Synchronoµs with SYNC event模式相比,這種方式可以通過調整Shift Time來補償由於硬件型號不同導致的 1C32:09(Hardware Delay Time)的差異,實現目標DC從站的最終輸出電路刷新的時間嚴格一致。當然設置的1C32:03(Shift Time)必須大於硬件所需的 1C32:09(Hardware Delay Time)之和。同樣道理,輸入延時時間的設置,也必須考慮到硬件所需要的輸入轉換時間。

1.4.5 Sync1信號配置

有的EtherCAT從站帶兩個分布時鍾,可以觸發兩個事件:Sync0和Sync1。

Sync1用來繼續保持與其它DC從站同步,Sync0用於從站的內部采樣。

有的EtherCAT從站帶兩個分布時鍾,可以觸發兩個事件Sync0和Sync1。設置細分倍數n,Sync0的周期就是Sync1的周期平均細分成n等份的值。Sync0的時鍾就稱為子時鍾,在一個Sync1周期內,重復n次觸發輸出和輸入動作,這就叫Over Sampling。 每一次動作的原則與Synchronoµs with SYNC event模式(帶Shift參數)相同。

如圖所示:
在這里插入圖片描述

應用實例:有一些從站(e.g. 大部分伺服驅動器),兩個同步信號(SYCN0 和 SYNC1)都啟用了,其中SYNC1與通訊周期同步,而SYNC0以更高的頻率用於觸發內部電流環。
在這里插入圖片描述

1.5 I/O at Task End 及 I/O at Task Begin

CurTaskTime 通常是所有DC時間的參考點。

TwinCAT主站調整軟件任務 (PLC, NC, …) 的開始時間,以保持 CurTaskTime 為恆定的時間間隔 (該間隔對應於軟件配置的任務周期):
在這里插入圖片描述

對於執行時間波動較大的任務,連接到“I/O at Task End” 操作, 要維持 CurTaskTime 穩定可能會非常困難甚至是不可能的,可能會導致EtherCAT網絡報告同步錯誤。可能的解決方案是:

增加 SYNC Shift Time 的值
把 “I/O at Task End” 改成 “I/O at Task Begin” 

TwinCAT 主站發送 EtherCAT 數據幀的時間與任務循環的時間可以有兩種關系:I/O at Task End 及 I/O at Task Begin。
在這里插入圖片描述

在 TwinCAT 3 中, PLC 任務和 C++ Modules 都不提供 “I/O at Task Begin”的標記。此時可以使用屬性 TcCallAfterOutputUpdate 實現同樣的功能。

1.6 獨立的輸入刷新

TwinCAT 主站提供一特別的選項,為輸入信號發送一個獨立的數據幀來收集輸入信號。如果選中了 “Separate input update” 選項,EtherCAT主站就會配置一個獨立的數據幀來讀取輸入過程數據 (這個選項可用於減少 input-output 響應時間):
在這里插入圖片描述
需要設置這個獨立的讀取Input數據包的發送時間。Pre ticks 參數是 TwinCAT Base Time 的整數倍,它代表 發送輸入數據幀的時間 相比於軟件任務開始時間 的提前量。
在這里插入圖片描述

1.7 “SYNC Shift for Outputs” 的估算

當需要對 “SYNC Shift for Outputs” 進行優化時,可以通過以下分量的代數累加估算其最小時間

分量1、從站內部電路引起的硬件延時 ( 從參考時鍾 Reference Clock 開始):

1 µs * MII 端口的從站數量 + 0.3 µs * EBUS 接口的從站數量

分量2、電纜引起的硬件延時(從參考時鍾 Reference Clock 開始):

5.3 ns/m * 網絡中的銅纜長度 [單位 m]

分量3、主站的Jitter 最大值 (正偏差):
在這里插入圖片描述

分量4、最高優先級的軟件任務的執行時間的波動幅值 jitter (僅當設置為 “I/O at Task End”).
在這里插入圖片描述

分量5、多任務配置時, Σ 各個任務的執行時間求和,連接到DC同步從站的第2個到最后一個任務的執行時間求和。 (第1個任務的循環周期也應當包含在總和中,除非第1個任務配置為 “I/O at Task Begin”)
在這里插入圖片描述

分量6、一定的公差余量…

1.8 “SYNC Shift for Inputs” 的估算

必要時,可以通過以下分量的代數累加估算“SYNC Shift for Inputs” 的最小時間:

分量1、主站通訊的最大 jitter (負偏差):
在這里插入圖片描述
分量2、對於工作在 “Based on Input Reference” 模式下的那些從站,它們的 minimum cycle times (0x1C33:05) 的最大值

分量3、Pre ticks 對應的時間 (僅當激活了 “Separate input update” 模式).

分量4、最高優先級的軟件任務的執行時間的波動幅值 jitter (僅當設置為 “I/O at Task End”).
在這里插入圖片描述

分量5、一定公差余量…

1.9 時序示例

  • 時序示例 1

本例 基於以下設置:

任務設置為 “I/O at Task End”
讀取數據和寫入數據到 同一個Input and Output 從站

在這里插入圖片描述

  • 時序示例 2

本例 基於以下設置:

任務設置為 “I/O at Task End” 以及 “Separate Input Update”
讀取數據和寫入數據到 同一個Input and Output 從站

在這里插入圖片描述

  • 時序示例 3

本例 基於以下設置:

任務設置為 “I/O at Task Begin”
讀取數據和寫入數據到 同一個Input and Output 從站

在這里插入圖片描述

  • 時序示例 4

本例 基於以下設置:

任務配置為 “I/O at Task End”
從 Input 從站讀取數據,寫入數據到 Output從站

在這里插入圖片描述

  • 時序示例 5

本例 基於以下設置:

任務配置為 “I/O at Task End” 以及 “Separate Input Update”
從 Input 從站讀取數據,寫入數據到 Output從站

在這里插入圖片描述

2. EtherCAT DC

在這里插入圖片描述

Distributed Clocks 分布時鍾模式可以實現EtherCAT網絡上所有本地時鍾的同步包括主站和所有DC從站最大偏差 ≤ 100 ns。

  • System Time: 系統時間,即所有DC同步設備共同使用的時間
從2000年1月1日零點開始。
單位是 ns 
長度 64-bit (足可表達超過500年的時間)
低 32-bits 可以表達 4.2 秒 (通常可滿足時鍾同步和時間戮應用)
  • Reference Clock: 參考時鍾,即決定系統時間 System Time 的從站設備, 默認為EtherCAT網絡中首個配置為DC同步模式的從站 (此設置不可更改):
“從站”,這是為了獲得完全基於硬件的高精度的參考時鍾,
“首個”, 這是為了在一個通訊周期內向所有其它DC同步模式的網絡設備(包括主站和所有DC從站)發布系統時間 System Time
  • 因此,把EtherCAT網絡中的 DC-Synchronous 設備歸為兩類:
Reference Clock: 首個 DC-Synchronous 從站
Slave Clocks: 所有其它 DC-Synchronous 從站+ (默認) 主站

在這里插入圖片描述

  • Potential Reference Clock 潛在的參考時鍾?

Reference Clock 參考時鍾不是必須要求用網絡中的正正第1個DC從站,但建議也不要離主站太遠。
考慮到在有的情況下參考時鍾的時間基准有可能出現偏差 (e.g. 由於多個DC同步的從站報告了同步錯誤),建議啟用網絡拓朴中離主站最近的DC從站作為參考時鍾。

2.1 同步的過程

本地時鍾的硬件同步分為兩個環節: 2 phases:

1.Initial synchronization(初始同步): 主站對齊所有的DC從站時鍾到最大容許誤差以內。   (典型誤差 < 100 ns).

2.Drift compensation(漂移補償): 連續保持本地時鍾與參考時鍾同步,以抵消時鍾漂移的影響 。(時鍾漂移來自不同的晶振頻率、熱效應或者老化程度上的細微差別)

在這里插入圖片描述

1.1 Initial Synchronization (Step 1): 初始同步階段的第1步,主站發送一個廣播的寫命令到地址0x0900,強制所有從站鎖存其每個端口的本地時間,然后從返回的數據幀中讀取所有獲取到的時間戮。
在這里插入圖片描述

1.2 Initial Synchronization (Step 2):初始同步階段的第2步,基於這些收集回來的時間戮,the 主站計算每個DC同步的從站的偏移和延時,並把這些值寫入DC從站各自的專用內存地址。 (從站會在本地時間控制器中使用這些參數)

Offset:偏移,從站本地時間“0”和絕對系統時間(TwinCAT從TC Time中提取的)的差值。
Delay:延時,參考時鍾和從站之間的傳播時間。

在這里插入圖片描述

需要特別注意:在step1、step2計算offsetdelay的時候,因為ethercat閉環傳輸的特點,主站包到從站的路徑從站包到主站的路徑長度是不一樣的。和通用的IEEE1588協議不一樣,需要注意ethercat的計算方法。

1.3 Initial Synchronization (Step 3):初始同步階段的第3步,為了讓參考時鍾Reference Clock 和所有DC從站時鍾都共享系統時間System Time,主站發送許多個ARMW 命令到從站的內存地址 0x0910,觸發每個從站的本地時間控制器微調本地時鍾,以盡量縮小和系統時鍾的差值, (把 偏移Offeset 和 延時Delay 計算在內)
在這里插入圖片描述

經過step1、step2以后,所有的slave clockreference clock已經保持一致。但是reference clock本身可能會產生漂移,為了保持同步,step3讓所有的slave clockreference clock同步漂移。

1.4 Initial Synchronization (Step 4):初始同步階段的第3步, 主站讀取每個從站的內存地址0x092C,以檢查所有分布時鍾與系統時鍾的差值都在最大容許誤差以內 (e.g. < 100 ns) :
在這里插入圖片描述

如果沒有達到要求的同步精度,則重復第3步和第4步。

2.Drift Compensation : 漂移補償,為了使各個從站的本地時鍾在運行過程中保持對齊,主站在周期性數據幀中增加一個 ARMW(對時)命令,和初始同步階段發送的ARMW命令一樣:
在這里插入圖片描述

每次接受到ARMW(對時)命令,從站就會調整它的本地時鍾的速度,所以這個命令應當以足夠高的頻率發送,才能保證良好的漂移補償。由於ARMW命令是和周期性數據幀一起發送的,所以它的發送頻率取決於任務周期。鏈接到所有DC同步從站的一個或者多個任務中,最高優先級的那個任務周期,不應當超過2-4ms。

2.2 同步監視

在EtherCAT主站的Advanced Settings 中的Distribut Clock選項里勾選 “Sync Window Monitoring” 標記后,激活配置。如果網絡中DC從站的本地時鍾的最大偏差超過了配置的閥值,主站的周期性變量DevState的 Bit 12 就會變成 1.
在這里插入圖片描述

2.3 SYNC 和 LATCH 信號

本地時鍾同步到系統時間后,每個DC同步的從站就可以同步處理“數字事件” digital events:

SYNC signals: 同步信號,這是供EthrCAT芯片使用的數字輸出信號,只在指定的系統時間觸發。 (前面已經介紹了把同步信號作為硬件中斷, 用於同步 DC同步 模式下的從站應用)

LATCH signals: 鎖存信號,這是供EtherCAT芯片使用的數字輸入信號,用於鎖存該信號觸發瞬間的系統時間值 ( 該值可以通過周期性數據或者非周期性訪問發送給主站)

在這里插入圖片描述

2.4

3. IEEE1588

3.1 IEEE1588 (PTP) 協議簡介

IEEE1588 協議,又稱 PTP (precise time protocol,精確時間協議),可以達到亞微秒級別時間同步精度,於 2002 年發布 version 1,2008 年發布 version 2。

IEEE1588 協議的同步原理,所提出的 Delay Request-Response Mechanism(延時響應機制)如圖所示。
在這里插入圖片描述

  • 圖中所描述的 PTP 報文為以下幾種:
(1)sync 同步報文
(2)Follow_up 跟隨報文
(3)Delay_req 延遲請求報文
(4)Delay_resp 延遲請求響應報文
  • 延遲響應同步機制的報文收發流程:
1. 主時鍾周期性的發出 sync 報文,並記錄下 sync 報文離開主時鍾的精確發送時間 t1;
(此處 sync 報文是周期性發出,可以攜帶或者不攜帶發送時間信息,因為就算攜帶也只能是預估發送時間戳 originTimeStamp)

2. 主時鍾將精確發送時間 t1 封裝到 Follow_up 報文中,發送給從時鍾;
(由於sync 報文不可能攜帶精確的報文離開時間,所以我們在之后的 Follow_up 報文中,將 sync 報文精確的發送時間戳  t1 封裝起來,發給從時鍾)

3. 從時鍾記錄 sync 報文到達從時鍾的精確時到達時間 t2;

4. 從時鍾發出 delay_req 報文並且記錄下精確發送時間 t3;

5. 主時鍾記錄下 delay_req 報文到達主時鍾的精確到達時間 t4;

6. 主時鍾發出攜帶精確時間戳信息 t4 的 delay_resp 報文給從時鍾;

這樣 從時鍾處 就得到了 t1,t2,t3,t4 四個精確報文收發時間。

  • 時鍾偏差 & 網絡延時

offset : 時鍾間偏差(主從時鍾之間存在時間偏差,偏離值就是 offset,圖1 中主從時鍾之間虛線連接時刻,就是兩時鍾時間一致點)

delay : 網絡延時(報文在網絡中傳輸帶來的延時)

從時鍾可以通過 t1,t2,t3,t4 四個精確時間戳信息,得到主從時鍾偏差 offset 和傳輸延時 delay:

在這里插入圖片描述

從時鍾得到 offset 和 delay 之后就可以通過修正本地時鍾進行時間同步。

  • PTP報文分類

IEEE1588 把所涉及到的報文分為 事件報文通用報文,分類依據是:是否在收發報文時需要記錄精確時間戳,根據上文中所描述的幾種報文,可以進行如下分類:

事件報文 < 收發時候需要記錄精確時間戳 > :sync 報文,delay_req 報文

通用報文 < 收發時候不需要記錄精確時間戳 > :follow_up 報文,delay_resp 報文

Note:

1. 因為需要高同步精度,選取的時間都是精確時間戳
2. sync 同步報文是周期性從主時鍾向從時鍾以廣播的形式發出
3. 時鍾偏差延時的計算在從時鍾中進行,所以需要把 t1,t2,t3,t4 四個時間戳信息都發往從時鍾,所以需要  follow_up 報文和  delay_resp 報文的存在

3.2 IEEE1588 verision 2 報文介紹

  • PTP 報文

PTP verision 2 報文是由 報頭 / header,主體 / body 和 報尾 / suffix 組成,報尾長度可能為 0 ;

PTP verision 2 報文在 verision 1 的 五種報文(sync 同步報文、follow_up 跟隨報文、delay_req 延遲請求報文、delay_resp 延遲響應報文 和 management 管理報文)的基礎上,

增加了點延遲機制( peer-delay mechanism )中的 三種報文( Pdelay_req 報文、Pdelay_resp 報文 和 Pdelay_resp_Follow_up 報文 ),signaling 信號報文,announce 聲明報文 這五種新報文;

根據報文收發過程中,是否需要記錄精確時間戳 分為 事件報文 / 通用報文。

  • PTP 報頭結構

在這里插入圖片描述

介紹 PTP 報文報頭中一些域:

(1)messageType,【報文類型】( 0.5 個 octet = 4 bits),不同的值代表不同的PTP報文

(2)versionPTP,【PTP版本】,(0.5 個 octet = 4bits ),PTP version1的話此處值為1,PTP version 2 的話此處值為 2
“The value of the versionPTP field shall be the value of the portDS.versionNumber member of the data set of the originating node."

(3)domainNumber,【PTP域序列號】,(1 個 octet = 8 bits ),對於普通時鍾和邊界時鍾,此處值為數據集中 defaultDS domainNumber 這個變量
"For ordinary or boundary clocks, the value of domainNumber shall be the value of the defaultDS.domainNumber member of the data set of the originating ordinary or boundary clock."

(4)flagField,【標志域】,( 2 個 octets = 16 bits ),典型的如二步標志域(twoStepFlag)為 1 表示是二步模式,即同步報文之后有跟隨報文     

(5)correctionField,【修正域】,( 8 個 octets = 64 bits ),傳送透明時鍾的駐留時間、點對點透明時鍾的鏈路延時以及非對稱補償
"The correctionField is the value of the correction measured in nanoseconds and multiplied by 216. For example, 2.5 ns is represented as 000000000002800016"

(6)sourcePortIdentity,【源端口號】,( 10 個 octets = 80 bits ),發送端口的相關屬性     
“The value of the sourcePortIdentity field shall be the value of the portDS.portIdentity member of the dataset of the port that originated this message.”

(7)sequenceID,【序列號】,( 2 個 octets = 16 bits ),為了區分多條發送端口相同的同一類型的報文 

(8)controlField,【控制域】,( 1 個 octet = 8 bits ),此處的值由報文類型域的值決定,即根據報文類型不同取值不同

(9)logMessageInterval,【對數報文時間間隔】,( 1 個 octet = 8 bits ),包括發送聲明報文的對數時間間隔,發送同步報文的對數時間間隔,發送延遲請求響應報文的對數時間間隔,它們的值是以2為底取的對數
  • PTP報文介紹

主要介紹 sync 同步報文、delay_req 延遲請求報文、follow_up 跟隨報文 和 delay_resp 延遲響應報文 四種報文的報文主體 body 部分。

主要介紹 sync 同步報文、delay_req 延遲請求報文、follow_up 跟隨報文 和 delay_resp 延遲響應報文 四種報文的報文主體 body 部分。

1.sync 同步報文 & delay_req 延遲請求報文

兩種報文具有相同的報文主體,originTimeStamp 時間戳都是由歷元,秒數和納秒數構成的 80bits 時間戳信息
在這里插入圖片描述

2.follow_up 跟隨報文
在這里插入圖片描述

3.delay_resp 延遲響應報文
在這里插入圖片描述

參考文檔

  1. EtherCAT分布時鍾技術及其工業應用

  2. 1_EtherCAT Functional Principle_cn.ppt

  3. 2_EtherCAT Diagnostics - cn.ppt

  4. 3_EtherCAT Synchronization -cn.ppt


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM