Proper value for FERROR ? (EtherCAT Servo)
- tar_san
- Offline
- Senior Member
-
Less
More
- Posts: 49
- Thank you received: 2
19 Apr 2026 10:06 #345726
by tar_san
Proper value for FERROR ? (EtherCAT Servo) was created by tar_san
I want to trigger an error if the difference between the actual servo position and the commanded position exceeds a certain threshold (e.g., 5mm) due to external forces. However, unless I set the in the .ini file JOINT section to something very large (like 50 or 500), a 'Following Error' occurs immediately.
= INI FILE =[JOINT_0]
MIN_FERROR = 500
FERROR = 50
I want to set these values to be able to check following error within 5mm (5.0mm)
I have already tuned the SERVO gains appropriately and confirmed that the actual physical deviation is nowhere near 50mm. The servo's electronic gear is configured so that 1 unit equals 1/1000mm, and I am converting the values to integers before writing them to EtherCAT.
= HAL FILE =
setp cia402.0.pos-scale 1000
I know threre are 1ms time difference in EtherCAT and latency for servo position, but I think these settings are not proper.
Which part of LCNC settings should I check or modify to resolve this problem?
FERROR,MIN_FERROR= INI FILE =[JOINT_0]
MIN_FERROR = 500
FERROR = 50
I want to set these values to be able to check following error within 5mm (5.0mm)
I have already tuned the SERVO gains appropriately and confirmed that the actual physical deviation is nowhere near 50mm. The servo's electronic gear is configured so that 1 unit equals 1/1000mm, and I am converting the values to integers before writing them to EtherCAT.
= HAL FILE =
setp cia402.0.pos-scale 1000
I know threre are 1ms time difference in EtherCAT and latency for servo position, but I think these settings are not proper.
Which part of LCNC settings should I check or modify to resolve this problem?
Please Log in or Create an account to join the conversation.
- andypugh
-
- Offline
- Moderator
-
Less
More
- Posts: 19852
- Thank you received: 4634
19 Apr 2026 15:42 #345739
by andypugh
Replied by andypugh on topic Proper value for FERROR ? (EtherCAT Servo)
f-error calculations compare joint.N.motor-pos-cmd and joint.N.motor-pos-fb.
Maybe you are not scaling the -fb value before passing it back to LinuxCNC (or, possibly, the scaling is taking place in the wrong slot in the servo thread)
Maybe you are not scaling the -fb value before passing it back to LinuxCNC (or, possibly, the scaling is taking place in the wrong slot in the servo thread)
The following user(s) said Thank You: grandixximo, tar_san
Please Log in or Create an account to join the conversation.
- Hakan
- Offline
- Platinum Member
-
Less
More
- Posts: 1317
- Thank you received: 453
20 Apr 2026 06:43 #345752
by Hakan
Replied by Hakan on topic Proper value for FERROR ? (EtherCAT Servo)
Most likely your servo drive doesn't report 0 position at the start.
Look at the pin joint.N.motor-pos-fb to verify that.
I am not aware of any good way to fix this more than to manually set the encoder
value to zero, via some device specific sdos. I'm doing that.
It should be described in the manual in that case.
Look at the pin joint.N.motor-pos-fb to verify that.
I am not aware of any good way to fix this more than to manually set the encoder
value to zero, via some device specific sdos. I'm doing that.
It should be described in the manual in that case.
The following user(s) said Thank You: tar_san
Please Log in or Create an account to join the conversation.
Time to create page: 0.062 seconds