Hi Graeme,

Thanks for your analysis that I fully agree with. 

Regarding your proposition to set two last parameters to zero:

ecrt_slave_config_dc(sc, 0x0700, 500000, 250000, 0, 0);

This would fix the start time calculation but I can not put sync1->cycle_time 
to zero because this value (1000 in my case) must be sent to register 0x9A4 
(Time between SYNC0 and SYNC1 pulses) for the slave to work correctly. 

So my only solution was to continue passing the value:
ecrt_slave_config_dc(sc, 0x0700, 500000, 250000, 1000, 0);
and modify the code of the master to no longe take it into account in the start 
time calculation. 

A better solution would be to use:
ecrt_slave_config_dc(sc, 0x0700, 500000, 250000, 500000, 1000);
and modify the master to send sync1->shift_time to register 0x9A4. 

The consequences of the current wrong start time can be hidden in most cases, 
just having the SYNC0/SYNC1 events not shifted as expected from the PDO. In my 
case, this caused problems sometimes on only one of my nine slaves, randomly 
depending of the CPU load/jitter.

In your case, did you have experimented problems ?

It was very helpful to monitor the time calculation values in the debug log 
(debug level 1), especially the ´remainder' that should be almost the same for 
all slaves but was not. 

For me, this is really a bug and should be fixed in the master. Should I 
propose a patch for this ?

Best regards

Philippe 

> On May 18, 2018, at 3:02 AM, Graeme Foot <graeme.f...@touchcut.com> wrote:
> 
> ecrt_slave_config_dc(sc, 0x0700, 500000, 250000, 0, 0);
_______________________________________________
etherlab-users mailing list
etherlab-users@etherlab.org
http://lists.etherlab.org/mailman/listinfo/etherlab-users

Reply via email to