EtherCAT总线通信Freerun、SM、DC三种同步模式分析
EtherCAT總線三種同步模式分析
一、 分布式時鐘作用
使所有EtherCAT設備使用相同的系統(tǒng)時間,從而控制各設備任務的同步執(zhí)行。
二、 名詞解析
1、 現(xiàn)場總線高速數(shù)據(jù)傳遞:即主站周期的向從站發(fā)送輸出信息并周期地讀取從站的輸入信息
2、 Output Valid:輸出有效,指的是主站輸出有效,表示的是從站將數(shù)據(jù)幀中對應數(shù)據(jù)從同步管理器通道上下載下來的一個過程。
3、 Input Latch:輸入鎖存,鎖存信號(LATCH0/1)用于給外部信號打上時間戳(time stamp) (在DC模式下主站對時的過程中,一般指的是從站鎖存主站數(shù)據(jù)幀到達的時間戳,然后將該時間戳數(shù)據(jù)寫入到同步管理器通道上,讓主站取走方便主站進行從站之間時間偏移補償和漂移補償)。
4、 (Output)Shift Time:指的是主站發(fā)送數(shù)據(jù)幀的起始時間到與從站Sync0 Event事件信號觸發(fā)之間的時間間隔。
5、 (Input)Shift Time:只對輸入模塊有效,表示輸入有效信號,指的是Sync0 Event事件信號后的一個固定延時時間或者Sync1 Event事件信號,用于設置Input Latch觸發(fā)信號。
6、 SM Event:EtherCAT總線通信的機制就是Frame數(shù)據(jù)幀到達從站后會觸發(fā)SM Event事件信號
7、 Sync0 Event:同步事件信號是由我們在主站TwinCAT上自定義的一個時間同步觸發(fā)事件信號,SYNC0 是最常用的同步信號,由DC產(chǎn)生,固定周期觸發(fā)
8、 Sync1 Event:指的是Input Latch輸入鎖存的一個事件觸發(fā)信號,SYNC1信號不獨立存在,通常是在SYNC0觸發(fā)之后,延時一段時間觸發(fā),SYNC1觸發(fā)周期可以是SYNC0的整數(shù)倍
三、 EtherCAT網(wǎng)絡中各個站點之間時鐘計數(shù)不一致的兩個原因
1、時鐘偏移:各個站點啟動的順序不同,初始化流程也不同,因此各個從站本地時鐘開始計數(shù)的時間本身就是不一致的,這種偏差被稱為時鐘的偏移
2、時鐘漂移:受不同溫度、壽命與物理特性的影響,各個時鐘的晶振源的頻率并不完全一樣,因此隨著運行時間的增加,原本一致的時鐘也會逐漸產(chǎn)生偏差,這種偏差被稱為漂移
四、 時鐘偏移和時鐘漂移分別的解決思路
1、針對時鐘偏移->偏移補償(初始化)
1. 記錄主站時間并廣播一個鎖存各從站時鐘的報文。(DC下是記錄第一個從站的時間) 2. 依次讀取各從站被鎖存的時間,計算鎖存的從站時間與記錄的主站的差。(計算其他從站與第一個從站的時間差) 3. 將這各個從站的時鐘差值附加到從站的本地時鐘上。2、針對時鐘漂移->漂移補償(定期)
五、 分布式時鐘的三種同步模式
1 Free Run模式
1、每個從站的定時周期都不一樣
2、每個定時周期到的時候,每個從站去執(zhí)行自己的程序,<比如檢查通道上有沒有合適的新的輸入數(shù)據(jù),有的話就令其輸出有效(Output valid)或者檢查有沒有需要輸入的數(shù)據(jù),將其放到對應的同步管理器通道上(input prepare)讓主站取走>
3、對于Free Run 模式而言,好比每個人都有自己的手表,但是如果沒有一起對時的話。手表的本身的時間是不一樣的(可能表和表之間存在時間差,一個8點一個10點),那么在這種情況下,公司如果要求9點上班,那么每個人到公司的時間都是自己手表上的9點,但是不是統(tǒng)一的9點,他們到達公司的時間是不一樣,所以Free Run模式?jīng)]有任何的同步性可言
2 SM同步機制(Sync Manager同步管理器)
1、一般而言,如果EtherCAT總線通訊時的同步模式不是DC模式,那么就是SM同步模式了,
2、SM(Sync Manager同步管理器)指的是同步管理器的同步,它的觸發(fā)方式是通過SM Event,也就是我們的數(shù)據(jù)幀在到達對應的從站的時候,會觸發(fā)一個叫做同步管理器事件的信號(即SM Event),當從站接受到這個信號的時候,會進入到對應的中斷服務例程(即中斷保存當期任務,去執(zhí)行插入的中斷例程,這里指線程中斷處理相關數(shù)據(jù),這也是SM Event和 Free Run的不同之處),即SM是通過中斷服務例程來處理對應的數(shù)據(jù)。
3、從站檢測到SM Event事件信號的時候會進入到中斷服務例程去處理相應的數(shù)據(jù)(比如把輸出數(shù)據(jù)有效,然后把輸入數(shù)據(jù)放到同步管理器的通道上讓主站取走)
4、由于SM同步模式是根據(jù)數(shù)據(jù)幀到達特定從站的時候來觸發(fā)SM Event事件信號來進行同步,那么對于一個特地給的幀來說,它到達每一個從站的時間必然是不同的,當系統(tǒng)很龐大的時候,每個從站接收到數(shù)據(jù)幀的時間就會相差很大,越在后邊的從站接收到數(shù)據(jù)幀的時間就越晚,它的同步效果就越差。
5、手表舉例:10個人10個表,10個人開始對表,從0開始計時,當上一個人完成了對表計時之后,才通知到下一個人進行對表計時,依次傳遞,那么到最后的第10個人它開始計時的時間是最晚的。完成對時之后,如果公司要求是10點上班,每個人按照自己手表上的10點到達,那么第10個人一定是最晚的。
3 簡單DC同步機制(Sync0 Event)
1、Sync0 Event和SM Event事件信號是類似的,他們都是一個中斷事件信號,對于一個從站而言,如果中斷信號觸發(fā)了而且中斷屏蔽寄存器沒有屏蔽掉該中斷信號,那么從站就會進入到中斷服務例程
2、中斷服務例程就是說從站從主循環(huán)中跳出,暫停并保留主程序狀態(tài),然后執(zhí)行中斷服務例程這一部分內(nèi)容,比如說周期性數(shù)據(jù)的輸出<周期性數(shù)據(jù)的實時性比較強,那么中斷信號可以滿足這種比較強的實時性需求,不會因為其他信號來耽誤它的操作,其它的中斷信號會進入等待狀態(tài)直到前一個中斷信號被恢復,即進入到恢復現(xiàn)場階段>
3、不同于SM Event的地方是Sync0 Event是根據(jù)我們自己設定的延時時間觸發(fā)而不是幀到達時候才觸發(fā)
4、注意,雖然簡單DC同步機制中沒有用到SM Event事件信號,但是它依舊是存在的,因為只要當Frame幀到達從站的時候就會觸發(fā)SM Event事件信號,這里只是不用到該信號來進行觸發(fā)而已,(但是應該明白不管是哪一種同步機制,SM Event都是存在的,當從站接受到數(shù)據(jù)幀的時候都會產(chǎn)生SM Event事件信號)
4 簡單DC同步機制的時序分析
1、除了Sync0 Event信號之外,還可以看到有一些其他的信號,包括Output Valid和Input latch信號,像這些信號都是TwinCAT主站在初期設置的時候可以設置的內(nèi)容,Output Valid表輸出有效,實際上是主站在Sync0 Event事件信號觸發(fā)后的基礎上作了一定的時間偏移
2、偏移時間(Output Delay Time)是可以在TwinCAT上看到并且可以手動調(diào)整的
3、Input Latch的偏移時間也是在TwinCAT上可以調(diào)整的,所以說以上兩部分內(nèi)容都是可以靈活設置的
4、手表舉例:10個人10快手表,它們的時間在和參考時間對時之后,每個人的時間都是和參考時間同步,他們的時間是一樣的,公司要求9點上班,那么他們按照各自的時間準時達到也是一致的。
5 DC同步機制優(yōu)化
1、優(yōu)化的DC模式同時使用了SM Event事件信號和Sync0 Event事件信號,而簡單DC同步機制只是使用Sync0 Event這一種事件信號進行同步,《同樣應該明確的是,無論使用哪一種同步模式,只要當數(shù)據(jù)幀F(xiàn)rame到達從站的時候都會觸發(fā)對應的SM Event事件信號》
2、==在這種優(yōu)化的DC模式中,當對應的SM Event事件信號觸發(fā)后,從站會進入到中斷服務例程進行數(shù)據(jù)的處理《把數(shù)據(jù)幀F(xiàn)rame中對應的所需數(shù)據(jù)進行計算,然后復制到管理器通道對應的用戶區(qū)域,等待Sync0 Event同步信號觸發(fā)之后讓從站取走,然后SM Event中斷完成,恢復現(xiàn)場》,==然后等待Sync0 Event信號的觸發(fā)到來,也就是同步信號的觸發(fā),可以看到由于之前SM Event中斷中已經(jīng)完成了前期數(shù)據(jù)的處理,當Sync0 Event同步信號觸發(fā)時,程序進入到中斷服務例程,就只需要很短的一段Output Delay Time,馬上就進入到Output Valid(輸出有效)狀態(tài)。
3、這種優(yōu)化版的DC同步機制相對于之前的簡單DC模式,優(yōu)點就是Output Delay Time輸出延時沒有那么長了,主要是因為第二種優(yōu)化的DC模式利用SM Event事件信號的觸發(fā)完成了前期從數(shù)據(jù)幀中對應從站數(shù)據(jù)的計算和復制到管理器通道上,所以當Sync0 Event同步信號觸發(fā)后,只需要從管理器通道取走已經(jīng)計算并復制好了的數(shù)據(jù),進入到輸出有效Output Valid的延時時間自然就比較短了,而第一種簡單的DC模式只是使用到了Sync0 Event同步信號,所以當Sync0 Event觸發(fā)后,需要在Output Delay Time時間內(nèi)完成數(shù)據(jù)的復制和計算,所以簡單DC模式下的Output Delay Time延時時間就會比較長。
6 DC同步丟幀
1、問題描述:在使用DC模式的時候會出現(xiàn)一種同步丟幀的情況,就是說數(shù)據(jù)幀在到達尾端從站之前,所有從站的Sync0 Event同步事件信號就已經(jīng)觸發(fā)了,也就是說數(shù)據(jù)幀傳輸?shù)奶?#xff0c;可能還來不及到達尾端從站,但是它的同步事件信號已經(jīng)觸發(fā)了,而此時從站卻從管理器通道上獲取不到數(shù)據(jù)幀中對應的數(shù)據(jù),從站就會判斷數(shù)據(jù)幀丟失了,這就是同步丟幀的問題。
這種問題一般在考前的從站中發(fā)生較少,當一個系統(tǒng)較大時,尾端的從站接收到數(shù)據(jù)幀的時間也比較晚,因為存在物理傳輸時間,所以越后面的從站接收到的數(shù)據(jù)幀時間就越晚,==(雖然Sync0 Event事件信號在完成DC對時之后是同步觸發(fā)的,但是數(shù)據(jù)幀的傳遞時間是依次遞增的),==如果我們剛開始留出的偏移時間(shift time)不夠大的話就有可能在尾端從站發(fā)生同步丟幀的情況
2、解決方案:把第一個從站和主站之間的偏移時間調(diào)大,可以在TwinCAT中對Shift Time進行調(diào)整。(由于Sync0 Event是同步觸發(fā)的,只需要設置好第一個從站和主站之間的Shift time,后面的從站和主站的Shift Time也都是這個值)。
7 優(yōu)化DC模式的時序分析
1、當數(shù)據(jù)幀F(xiàn)rame依次到達每一個從站的時候,EtherCAT的機制會觸發(fā)SM Event事件信號,(數(shù)據(jù)幀依次發(fā)送到各個從站的時間是一個慢慢變長的延時時間,這是硬件上必然發(fā)生無法改善的事情)。
2、然后從站會把數(shù)據(jù)幀上從站需要的數(shù)據(jù)進行計算并復制到同步管理器通道上,然后會進行中斷事件恢復,
3、主程序等待一個DC Sync Signal同步事件中斷信號(也就是Sync0 Event),這個Sync0 Event同步事件信號是所以從站同時觸發(fā)的,就像規(guī)定的9點上班一樣<這里的前提是主站已經(jīng)通過發(fā)送幀對各個從站完成了對表計時步驟,各個從站的時間是同步一致的>。
4、當Sync0 Event事件信號同步觸發(fā)時候,由于之前已經(jīng)完成了數(shù)據(jù)的計算和復制,那么此時的輸出抖動會非常小,約為15ns,(輸出抖動jitter和主站有關,在SM Event事件之前由主站觸發(fā)),同時同步性能也會非常好(Output Delay time會很短,Output Valid輸出有效很快觸發(fā))。
5、在Output Valid輸出有效觸發(fā)之后,從站會等待一個Input Latch信號,它可以是Sync1 Event事件信號,也可以是Sync0 Event事件信號觸發(fā)后一段固定的延時時間,這取決于我們在TwinCAT上的設置情況。
六、 總結(jié)
總體的DC分布式時鐘模式匯總?cè)缦铝鞒趟?#xff1a;
總結(jié)
以上是生活随笔為你收集整理的EtherCAT总线通信Freerun、SM、DC三种同步模式分析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。