Open d-loret opened 1 year ago
Wireshark log: debug_safeop_to_op_error.pcapng.txt
Use the search function on this forum. "is:issue platinum" The slave has some peculiar hardware from TI that need special care. You need to block LRW and use overlapped mode.
Thanks for your reply.
Do I need both or one or the other? If I only set blockLRW
to 1, OR if I only replace ecx_config_map_group
and ecx_send_processdata
with ecx_config_overlap_map_group
and ecx_send_overlap_processdata
, respectively, the drive does get into OPERATIONAL. However if I block LRW AND use the overlap functions, it still gets stuck in SAFEOP.
If we were using the legacy mapping (i.e. non-overlap functions) for any device up to now, should we create a separate group for the Platinum drives? Or do most devices out there support overlapping too? I ask this in case we need the overlap functions (and not setting blockLRW
).
As a side note, once in OPERATIONAL, I cannot enable the servo, but I need to debug that more.
@ArthurKetels, is the use of blockLRW
and ecx_config_overlap_map_group
/ecx_send_overlap_processdata
mutually exclusive? Is it expected that when trying to use both, OPERATIONAL cannot be reached? It can only be reached when using only one.
Also, what is the difference between setting blockLRW
to 1 vs using the overlap functions?
Even though the EtherCAT state machine can now transition to operational, the drive is not responding to commands in the RxPDO, so I feel I am missing something.
I think you can use either. block LRW OR overlapped mode
For info on the root casue, 3.6.3 Fix of PINDSW-141 Errata by the SOEM Master and IgH Master https://www.ti.com/lit/an/spracj7/spracj7.pdf?ts=1670570597811&ref_url=https%253A%252F%252Fwww.google.com%252F
I am not sure where the issue lies, but our Elmo Platinum motor controller cannot transition to Operational through SOEM's
ecx_writestate
. It gets stuck in SAFEOP, Error.The transition is attempted after the PDO mapping is configured. As far as I can see, the PDO mapping is configured successfully. One way I confirmed this is with slaveinfo (output at the end of this post).
At a high level, to induce the transition to OPERATIONAL we call the functions below in a loop for up to 4 times. The actual code for this can be found here. This works for other drives, like the Gold line, but it is not working for the Platinum.
ecx_send_processdata
ecx_receive_processdata
slavelist[0].state
in the ecx context is set toEC_STATE_OPERATIONAL
ecx_writestate
Confirm state withecx_statecheck
While executing this loop, instead of transitioning from SAFEOP to OPERATIONAL, the EtherCAT state machine errors out: the EtherCAT error LED in the drive starts blinking and in Wireshark I see AL Status: SAFEOP, Error in Broadcast messages.
I can share the Wireshark log. I am not very familiar with Wireshark so it is difficult for me to make sense out of the log, but I can distinguish the SDOs exchanged when configuring the PDO mapping, and I also noticed the Broadcast messages mentioned above.
Slaveinfo output: