While an axis is in motion, the EMC sends commands for current position. We call this commanded position. It is where the axis is supposed to be. Whenever a drive receives a velocity command it takes a bit for it to get up to that velocity and move to the commanded position. The difference between commanded and actual is following error. Commanded and actual position ought to be the same for an ideal machine. Inertia and such get in the way and add to following error.
EMC checks to see whether the commanded position is within range of the actual position. If this error is out of range, you get an error message something like:
Joint 0 following error.
When this error pops up you can be pretty certain that there are problems with the way you ini file is set.
The EMC ini file uses two variables, FERROR and MIN_FERROR to define acceptable following error for each axis. Think of MIN_FERROR as the following error allowed at very low velocity and FERROR as the distance allowed during rapid moves.
The graph shown below approximates what the following error trip line looks like when FERROR is set to 1 and MIN_FERROR is set to 0.01. MAX_Velocity for this graph has been set to 500. I did not set any units here and that is deliberate. My first reason is that the meaning of trip line will follow the units used for velocity, which follows the units that are defined for the axis in the ini. If that unit is inches, then the velocity is in inches per second and the trip line is related to that unit. The second reason I didn't assign units to the graph is that I am not completely certain what the units of Ferror and Min_Ferror.
You should think of any following error to the left of the diagonal line as acceptable for that velocity . If you look at 250 units velocity (the green lines) any following error less than half way between FERROR and MIN_FERROR is acceptable and will not trip out axis motion. If you increase the velocity to 400 and draw a similar pair of lines there, it will include all acceptable following errors at that velocity.
In my thinking, I simply assume that the ferror numbers are a percent of the unit value defined in the ini file. In the case of this graph and the numbers I assigned to generate it, I'd assume one percent of 500 for the permitted following error during a rapid move. If the unit defined for this axis is mm, then following error at rapid could be as much as 5 mm. If inches, then these would permit as much as five inches. (We should get one of the code gurus to give us an interpretation of the actual computation done for this)
Correction: The units of Ferror and Min_Ferror are the same as the units of length used for that axis. So if your axis is in inches, and your Ferror is 1, that means an error of 1 inch will cause it to trip. Likewise, if Min_Ferror is 0.01, then an error of 0.01 inches will trip it at low speed.
I hear someone asking, "Do you consider 5 inches off from commanded to be acceptable. Hey even the enhanced GPS that's being used to guide field tractors is more accurate than that." The whole point of the following error trip as set up in the EMC is to constrain following error and cause the machine to fail if it's error is greater than some known value. By using both FERROR and MIN_FERROR the integrator is able to define values that are acceptable for their machine. I know that I'd want my own machines to be closer than 5 inches at most any speed.
The concept of a following error is funny when talking about stepper motors. Since they are an open loop system, there is no position feedback to let you know if you actually are out of range.
following errors usually have 2 causes on steppers
1. too little ferror or min_ferror
2. the RT pulsing can't keep up with the speed needed
2.a. BASE_PERIOD set incorrectly or (requested step rate is not possible at this BASE_PERIOD)
2.b. max velocity too high
2.c. max acceleration too high