Description
I've been working on commissioning some elmo gold drives far a control application using fastcat, and have encountered some issues using egd_prof_pos commands. Currently, it seems the prof_pos handling state machine in jsd_egd.c does not reset bits 4 and 5 of the control word after handling a new move command. Based on my testing, it seems like these bits act as edge-triggered inputs, and thus need to be reset to 0 before a new command can be processed.
The effect is that I'm only able to execute a single prof_pos command before having to restart my ethercat master. Even resetting the drive doesn't seem to let me execute another prof_pos command.
However, it's also possible that I'm not using the egd interface, and some other piece of code I've overlooked should be handling these resets...
Also of note, I think the logic to reset the relative move bit is also faulty:
state->rxpdo_prof.controlword |= (cmd.prof_pos.relative << 6);
. Seems like this only has the ability to set the relative bit to True, but would never be able to set it back to False if prof_pos.relative was False.
This line and the above bug make think that either this egd positioning code was never tested on a real drive, I've missed a more recent release that fixes these, or I'm doing something terribly wrong...