I see I explain me bad.
I started working with linuxcnc-ethercat installation in May .... in June I started my motors and let them go on the test bench, without gearboxes or mechanical loads, at the end of August. So hundreds of hours of system testing. No anomaly detected. Now that I have the motors installed on the machine I see the same thing so it goes without saying that everything works as you say and I made sure my cpu and my ethernet port held everything up.
Normal usage: These is all ok.
What happens: every now and then, when I turn on the machine or when I re-turn on linuxcnc after closing linuxcnc but not the machine, only on these occasions and never during work .... the drives do not go to OP. Yes, sure for initial communication anomalies ... in fact sometimes drive 0 does not go to OP, sometimes 1, sometimes none. The elxxx modules always work correctly (apart from the episode with el5151 which, however, we said to be my cause, I took it used and did not know it was better to reset). What should I do in these cases:
I turn off the power of the drives and turn them off (I remove the connectors from the drives).
This way when I power up the drives they go into INIT. When I start linuxcnc the drives go to SAFEOP then PREOP and when I press the enable button they finally go to OP so everything works fine.
Now I think this depends on communication problems (grounding ?, spike? ... the pc is powered in 24Vdc with filtered power supply .... I don't think so .... bad filters in the drives? Maybe .... rather it will be due to excessive delay of the ethercat line at power up due to a non-optimal hardware ....).
in any case I was wondering if it was possible to avoid disconnecting the power from the drives and performing the same procedure via software, then putting the drives first in INIT (so they are forced to start a new connection and reset the buffers) and then re-initialize the ignition of linuxcnc ..... if there is a way to always put the drives in INIT before starting linuxcnc it is fine. Can I use a script or a C ++ program to do this I ask.
Very thanks for all.
bkt