[Etherlab-users] Ethercat Master and AKD2G Flexible PDOs

Kevin Wormington kworm83 at gmail.com
Mon Mar 3 22:42:16 CET 2025


Hi Mike,

I have seen a similar issue with LinuxCNC with Ethercat 1.6.x if the slave
device supports EoE.  The fix was to rebuild the Etherlab master without
EoE support.  I posted a few times but didn't ever really get a good answer
as to why this happens and/or if the EoE support even works on a Linux
RT_PREEMPT kernel.

But anyway, the same fix might work for you if you don't need EoE support.

Kevin

On Mon, Mar 3, 2025 at 12:53 PM Mike Walker <mwalker at breault.com> wrote:

> All,
>
>                 Trying to track down an issue with setting up “Flexible
> PDOs” on the Kollmorgan AKD2Gs.   I have tried various methods to get these
> to be configured reliably, but nothing yet.
>
>
>
> The baseline code calls
> ecrt_domain_reg_pdo_entry_list(mDomain,domain1_regs), and that works around
> 90% of the time.   However, it fails ~10% of the time.    This problem
> makes life “fun” when you have 6 motor controllers with each one randomly
> not configuring properly.
>
>
>
> In looking at the logs on the master with dmesg, we get a timeout on
> waiting for SDO responses.  Also, looking at the SDO logs inside the AKD2G
> (but still working that angle), it also appears that either SDOs are not
> being received from the master (or the AKD2G is ignoring them??).
>
>
>
> I have even written scripts that does the SDOs setup by hand (ie
> ethercat -p0 --type uint8 download 0x1C12 0 0), and I also get random
> results of getting the configuration setup correctly.
>
>
>
> The CStruct is as follows:
>
>
>
> ec_pdo_entry_info_t akd2g_pdo_entries_current[] = {
>
>     /* RxPdo 0x1600 */
>
>     { 0x5003, 0x05, 32 }, /* current  */
>
>     { 0x6040, 0x00, 16 }, /* DS402 command word */
>
> };
>
>
>
> ec_pdo_entry_info_t akd2g_pdo_entries_received[] = {
>
>     /* TxPDO 0x1a00 */
>
>     { 0x6063, 0x00, 32 }, /* position */
>
>     { 0x6041, 0x00, 16 }, /* DS402 Status Word*/
>
>
>
>     /* TxPDO 0x1a01 */
>
>     { 0x606c, 0x00, 32 }, /* actual velocity, in milli rpm */
>
>     { 0x500A, 0x01, 32 }, /* actual current */
>
>     { 0x60E4, 0x01, 32 }, /* Feedback 1 Position */
>
> };
>
>
>
> ec_pdo_info_t akd2g_pdos_current[] = {
>
>     { 0x1600, 2, akd2g_pdo_entries_current + 0 },
>
>     { 0x1a00, 2, akd2g_pdo_entries_received + 0 },
>
>     { 0x1a01, 3, akd2g_pdo_entries_received + 2 },
>
> };
>
>
>
> ec_sync_info_t akd2g_syncs_current[] = {
>
>     { 0, EC_DIR_OUTPUT, 0, NULL, EC_WD_DISABLE },
>
>     { 1, EC_DIR_INPUT, 0, NULL, EC_WD_DISABLE },
>
>     { 2, EC_DIR_OUTPUT, 1, akd2g_pdos_current + 0, EC_WD_DISABLE },
>
>     { 3, EC_DIR_INPUT, 2, akd2g_pdos_current + 1, EC_WD_DISABLE },
>
>     { 0xFF }
>
> };
>
>
>
> Still working to get a Wireshark dump (on a headless system), so working
> through this to see if it tells me anything.
>
>
>
> Questions:
>
>    1. Has anybody experienced similar issues and how they where able to
>    resolve this?
>    2. I have tried things that where mentioned in other posts like
>    increasing EC_WAIT_SDO_DICT from 3 to 30 seconds.   Any other settings I
>    should be looking at?
>    3. I am currently using version 1.5.x.   I looked at the release notes
>    for 1.6 and didn’t see anything that looked obvious.   Anything in the
>    update that may help?
>    4. It seems (as a stop gap) that if I attempt to configure all 6 motor
>    controllers, eventually it will work.   The method right now is to:
>       1. Ecrt_release_master(mMaster)
>       2. Run a script that will restart ethercat (ie.
>       /usr/local/etc/init.d/ethercat restart)
>       3. But when I attempt to get the master
>       (ecrt_master_activate(mMaster)), domain (ie. ecrt_domain_data(mDomain)) all
>       is good
>       4. BUT FAILS on ecrt_domain_reg_pdo_entry_list(mDomain, domain_regs)
>       5. Anybody have some actual or sudo code that would allow for me to
>       try again…either fall all motor controllers or the specific motor
>       controller that didn’t setup the PDOs correctly?
>
>
>
>
>
> Thanks in advance for anything you can provide,
>
> Mike W
>
>
> --
> Etherlab-users mailing list
> Etherlab-users at etherlab.org
> https://lists.etherlab.org/mailman/listinfo/etherlab-users
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.etherlab.org/pipermail/etherlab-users/attachments/20250303/b6b28db4/attachment-0001.htm>


More information about the Etherlab-users mailing list