I use XMC4800 microcontroller as Ethercat slave. The slave has software based on Dave Ethercat APP with Beckhoff slave stack code v5.12. Slave operates in SM/Sync0 mode and controlled by IgH EtherCAT Master for Linux. All works successfully, but slave's clock syncronization to the master clock (drift compensation) after start takes very long time (up to 1 min). The slave used as Reference clock.
I analized Ethercat traffic by tcpdump and disclosed that slave's clock is sincronized not monotonous. Below graph of mean difference time from slave's register 0x092C (in nanoseconds) dependent on time master (in seconds).
Also I write own simple test of syncronization clock of slave that sends FPWR datagrams to register 0x0910 by raw-socket in Linux. As result, I get same graph.
Why slave's clock sincronization looks as "ripples"?
This issue occurs every time when the program is started for several tens of seconds. The less period between Ethercat datagrams the less amplitude of "rows" and the faster process goes to the stationary.