- Configuring LinuxCNC
- Advanced Configuration
- EtherCAT
- Technical questions about CIA402 and homecomp.comp on A6
Technical questions about CIA402 and homecomp.comp on A6
- andrax
-
Topic Author
- Offline
- Elite Member
-
- Posts: 188
- Thank you received: 42
I have some technical questions about CIA402 and homecomp.comp
First of all, which version of homecomp.comp is currently recommended for the A6?
Since I don't understand the source code of homecomp.comp and CIA402, I would like to know how the basic servo homing process works.
Are all servos put into homing mode and checked to see if they are ready before the sequence starts?
I'm trying to understand how the process works, as I keep getting sporadic errors during homing, even though everything else is running smoothly.
Please Log in or Create an account to join the conversation.
- rodw
-
- Away
- Platinum Member
-
- Posts: 11703
- Thank you received: 3955
Please Log in or Create an account to join the conversation.
- andrax
-
Topic Author
- Offline
- Elite Member
-
- Posts: 188
- Thank you received: 42
I think you misunderstood me.
I am using the component and trying to understand how the process works from a control technology perspective.
Are the servos initialized and their status checked first, and then the homing process started, or is the homing process started without checking?
What happens if a servo is not ready?
What happens if a servo does not start the homing process or starts it with a long delay (watchdog)?
How is monitoring performed if a coupled axis on a gantry does not start moving during homing?
Since Linuxcnc has no control over this type of homing, these error cases should be monitored, otherwise the machine could be damaged.
In my opinion, the homing process should be initialized first.
Then check whether all servos are in the correct operating mode.
Then start the homing process.
During the homing movement, monitor whether the axes are synchronized (gantry).
Please Log in or Create an account to join the conversation.
- NWE
-
- Offline
- Premium Member
-
- Posts: 146
- Thank you received: 36
If one isn't ready, or simply fails to move, we would prevent both from moving.
What if CIA402 component had some pin, maybe an io pin to monitor, and any drive connected to it could set it, causing them all to halt?
net gantry-halt-interlock <=> J1.cia402.halt
net gantry-halt-interlock <=> J2.cia402.halt
If a drive is commanded to move, try clearing the pin just once. If a drive is faulted and sees this pin got cleared, set it again.
Or maybe a better way, (or additionally?) monitor both joint positions, if the difference exceeds some value, stop both?
Just throwing the idea out there. Maybe I'm just making noise.
Please Log in or Create an account to join the conversation.
- Hakan
- Offline
- Platinum Member
-
- Posts: 1193
- Thank you received: 422
Attachments:
Please Log in or Create an account to join the conversation.
- andrax
-
Topic Author
- Offline
- Elite Member
-
- Posts: 188
- Thank you received: 42
In PLC-controlled systems, there is a watchdog for each servo controller. This is triggered if the servo does not respond within a specified time. The same is done with pneumatic cylinders. Here, a timer is started in parallel with the cylinder stroke. If the timer is faster than the cylinder in its end position, there is an error.
The same could be done for homing.
Isn't there a control bit in register 6041h that is set when the servo starts homing? For example, bit 4 or bit 9. I don't know, you would have to visualize the bits.
If you find such a bit, you could combine it with a watchdog.
Please Log in or Create an account to join the conversation.
- Marcos DC
-
- Offline
- Junior Member
-
- Posts: 30
- Thank you received: 11
- switch to homing mode and confirm via mode display,
- issue the start command,
- verify that something actually changes within a timeout (state, target reached, position, etc.),
- wait for a generic completion condition (e.g. target reached / mode change / no fault),
- and always have timeouts and fault paths.
homecompPlease Log in or Create an account to join the conversation.
- Marcos DC
-
- Offline
- Junior Member
-
- Posts: 30
- Thank you received: 11
hal-cia402linuxcnc-cia402homecomphal-cia402linuxcnc-cia402pos_cmdpos_fbhomecomppos_cmdpos_fb- LinuxCNC explicitly steps out of the position-control role during internal homing,
- the process is supervised by a small, defensive state machine with timeouts and error paths,
- and then LinuxCNC is cleanly re-attached to the position loop once the drive reports homing done.
Please Log in or Create an account to join the conversation.
- andrax
-
Topic Author
- Offline
- Elite Member
-
- Posts: 188
- Thank you received: 42
is that it explicitly acknowledges this: during CiA-402 internal homing, the drive is not under LinuxCNC’s trajectory control. The component tries to temporarily decouple LinuxCNC from the position loop (by keepingpos_cmd
in sync withpos_fb
) while the drive is homing, and then re-synchronize afterwards.
Ah, that would explain the strange behavior where the servos jump after homing, leading to error E87.1.
Please Log in or Create an account to join the conversation.
- Marcos DC
-
- Offline
- Junior Member
-
- Posts: 30
- Thank you received: 11
On a side note (and not to derail the thread): I might eventually pick up a used EtherCAT drive/motor myself to learn and test this in practice. I saw your configuration in another post and got curious—what made you choose EtherCAT for your setup specifically? From the outside it looks powerful but also relatively costly and a bit of work to get everything “dialed in”, so I’d be interested in your reasoning.
Please Log in or Create an account to join the conversation.
- Configuring LinuxCNC
- Advanced Configuration
- EtherCAT
- Technical questions about CIA402 and homecomp.comp on A6