Page 1 of 1

ET10 FERROR 9016

Posted: Tue May 19, 2020 1:48 am
by oursomatic

For safety raison i try to implement Ferror.plc but the example you give on the wiki seem to be not ET10 compatible

I have follow your instruction listed below but it is not working because on my machine the 9016...17..18 variable give an G53 encoder position.

i guess the FERROR value existe somewhere, or maybe something like ( actual position - commanded position )

thank you for the help.


(+16) Registers represent Motor PID Following Error (a difference between commanded and sensed position). Writing to this registers does not affect anything. A Following Error of Selected PID will be returned when reading these registers.
Reading these registers from the controller Hardware PLC will return actual value of the Following Error.
Following Error values in the software are updated about every 128ms. This delay should be counted when using the registers in the Software PLC.

9016 - Motor channel #0 PID Following Error
9017 - Motor channel #1 PID Following Error
9018 - Motor channel #2 PID Following Error
9019 - Motor channel #3 PID Following Error
9020 - Motor channel #4 PID Following Error
9021 - Motor channel #5 PID Following Error
9022 - Motor channel #6 PID Following Error
9023 - Motor channel #7 PID Following Error

Re: ET10 FERROR 9016

Posted: Wed May 20, 2020 1:23 pm
by oursomatic
The machine has try to self-murder itself this morning :twisted:

First time was Z axis during a "manual" surface plate mesure.
She Z jump up and downs at full speed F16000mm with rebond like a crazy PID oscillation. :oops

And second time 1 hours later was at the end of a job with the last movement G53 G0 X0 Y0

Instead of reaching x0y0 at the same time, the the machine did strange movement like this one on the picture.
I try to press Stop with no result than i press Estop to kill it. :cry:


Re: ET10 FERROR 9016

Posted: Wed May 20, 2020 5:52 pm
by oursomatic
i think to know what i did wrong.
In the motion tab, my setting for G0 override was max 175%
When i run into the jump fault, my feed override value was set to 175% so the X servo already at max speed was late from the motion planner, i guess .

But the controller should know the AXIS speed value and not try to go faster ?

Screenshot at 2020-05-20 18-08-58.png
Screenshot at 2020-05-20 20-38-58.png
Screenshot at 2020-05-20 20-39-34.png

Re: ET10 FERROR 9016

Posted: Wed May 20, 2020 9:09 pm
by mycnc
Overspeed implementation in myCNC is similar to CPU overclocking. Motion acceleration is increased together with motion speed when you set high Overspeed. Toolpath planner does not have access to "Overspeed" value. Significant increase in Overspeed value from 100% may cause issues, especially for analogue servo control.
Overspeed should be limited to 100% if you need to be sure the machine does not exceed "Max Speed".

Rapid speed (G0-positioning) is usually much higher than a feed rate (G1-G2-G3).
If set "G0 overspeed" to 100%, a "Feedrate (G1-G2-G3) Overspeed" can be set higher 100% without a risk of exceeding "Max Speed" limits.

Re: ET10 FERROR 9016

Posted: Wed May 20, 2020 9:15 pm
by mycnc
Regarding 9016... registers.
We worked with new ET15 controller support and accidentally 9016 registers content were broken in the software.
The bug was just fixed and an updated version will be available in a few hours.

Re: ET10 FERROR 9016

Posted: Wed May 20, 2020 9:38 pm
by oursomatic
You should ad it to the documentation wiki.
As a new customer/ user i am missing knowledge about "motion " setting parameter and because the documentation / description was not suffisent for me to understand the affect of parameter i had to do test /try /error.
This mistake i did with over speed G0 at 175% could be fatal on a 6 tonnes CNC router like mine and i am happy to have it solved.
So thank you for your explication.

To follow the initial subject is it possible to trigger the "FERROR.plc" wiht this kind of unwanted movement ?

Re: ET10 FERROR 9016

Posted: Wed May 20, 2020 10:23 pm
by mycnc
A very basic "theoretical" template would be like this.

Code: Select all




    a0=gvarget(9016); if (a0<0){ a0=0-a0;};
    a1=gvarget(9017); if (a1<0){ a1=0-a1;};
    a2=gvarget(9018); if (a2<0){ a2=0-a2;};
    a3=gvarget(9019); if (a3<0){ a3=0-a3;};
    a4=gvarget(9020); if (a4<0){ a4=0-a4;};
    a5=gvarget(9021); if (a5<0){ a5=0-a5;};
    if (a0>MAX_FERROR)  {ferror=1;};
    if (a1>MAX_FERROR)  {ferror=1;};
    if (a2>MAX_FERROR)  {ferror=1;};
    if (a3>MAX_FERROR)  {ferror=1;};
    if (a4>MAX_FERROR)  {ferror=1;};
    if (a5>MAX_FERROR)  {ferror=1;};

    if (ferror!=0) //turn off ALL the servos
       gvarset(60001,1);  //Servo OFF



We will try to test it tomorrow and modify if needed.