<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Aptos;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        font-size:12.0pt;
        font-family:"Aptos",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
p.m230236869915270543msolistparagraph, li.m230236869915270543msolistparagraph, div.m230236869915270543msolistparagraph
        {mso-style-name:m_230236869915270543msolistparagraph;
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:12.0pt;
        font-family:"Aptos",sans-serif;}
span.EmailStyle20
        {mso-style-type:personal-reply;
        font-family:"Aptos",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;
        mso-ligatures:none;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
        {page:WordSection1;}
/* List Definitions */
@list l0
        {mso-list-id:26756860;
        mso-list-template-ids:-661366112;}
@list l0:level2
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:72.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
ol
        {margin-bottom:0cm;}
ul
        {margin-bottom:0cm;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-NZ" link="blue" vlink="purple" style="word-wrap:break-word">
<div class="WordSection1">
<p class="MsoNormal"><span style="mso-fareast-language:EN-US">The problem with mixing CoE and EoE support in the same device in Etherlab is that the current code assumes that it will receive mailbox responses in sequence (i.e. if it posts a CoE request the
 only possible thing it can read from the mailbox is the matching CoE response).  This assumption is reasonably valid as long as only one mailbox protocol is in use at a time, but as soon as multiple protocols are supported that goes out the window, because
 slaves are allowed to interleave responses from separate protocols, especially when the slave supports unsolicited responses.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="mso-fareast-language:EN-US">This was fixed in my
<a href="https://sourceforge.net/u/uecasm/etherlab-patches/ci/default/tree/#readme">
unofficial patchset</a> (also available in a <a href="https://github.com/ribalda/ethercat">
few other places</a>) by properly multiplexing the mailboxes (among other things), but unfortunately this is currently only available for 1.5.x and while some patches have been merged to 1.6, these aren’t among them.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<span style="FONT-FAMILY: Gotham, Calibri, 'sans-serif'; COLOR: #231f20"><strong>Gavin Lambert<br></strong>
 <br>
Software Engineer<br>
<br>

</span><br>
 <br><img style="HEIGHT: 45px; WIDTH: 192px" src="cid:TOMRA_CMYK_final_size_times_two_cd761a01-1d1f-446e-9316-8012271820b6.png" width="192" height="45" border="0">
 <br>

 <a href="https://www.facebook.com/TOMRA.Food/" target="_blank"><img alt="tomra facebook" src="cid:TF-FB-icon_b77c57e4-4990-4f9d-b3a2-8e6ab45df7f2.jpg" height="30"></a> <a href="https://www.linkedin.com/company/tomra-food/" target="_blank"><img alt="tomra linkedin" src="cid:TF-LinkedIn-icon_d54c4829-dcb9-450c-9187-34b26e85ebaa.jpg" height="30"></a> <a href="https://twitter.com/TOMRAFood" target="_blank"><img alt="tomra twitter" src="cid:icons-social-media-twitter_small_2_4bae5ad2-4add-4314-a352-5b317f784956.jpg" height="30"></a> <a href="https://www.youtube.com/playlist?list=PLDD3B1A7BAE919EC6" target="_blank"><img alt="tomra youtube" src="cid:TF-Youtube-icon_8b2c830c-70d9-48da-a4db-db9191d346ba.jpg" height="30"></a> <a href="https://www.instagram.com/tomrafood/" target="_blank"><img alt="tomra instragram" src="cid:TOMRAinstagram_45b30c55-490a-4f32-8fd3-998c152e3494.jpg" height="30"></a><br>
<span style="FONT-SIZE: 75%; FONT-FAMILY: Calibri, Candara, Segoe, Optima, Arial, sans-serif; COLOR: #6e8186"> <b>TOMRA Food (ANZ) Limited</b> 
| 4 Henderson Place | PO Box 13 516 | Onehunga 1061 | New Zealand </span><br>
<p style="FONT-SIZE: 10pt; MARGIN-BOTTOM: 5pt; FONT-FAMILY: Arial; MARGIN-TOP: 0px"></p>
<span style="FONT-SIZE: 75%; FONT-FAMILY: Calibri, Candara, Segoe, Optima, Arial, sans-serif; COLOR: #6e8186"> Phone: +64 96 34 00 88 | <a href="https://www.tomra.com/food">https://www.tomra.com/food</a></span><br>
<span style="FONT-SIZE: 60%; FONT-FAMILY: Gotham, Calibri, 'sans-serif'; COLOR: #6e8186">The information contained in this communication and any attachment is confidential and may be legally privileged. It should only be read by the person(s) to whom it is addressed. If you have received this communication in error, please notify the sender and delete the communication. </span><br>
<span style="FONT-SIZE: 60%; FONT-FAMILY: Gotham, Calibri, 'sans-serif'; WIDTH: 75%; COLOR: #6e8186">
</span><div style="border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm 4.0pt">
<div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm 0cm 0cm">
<p class="MsoNormal"><b><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif">From:</span></b><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif"> Kevin Wormington<br>
<b>Sent:</b> Tuesday, 4 March 2025 10:42 am<br>
<b>To:</b> Mike Walker <mwalker@breault.com><br>
<b>Cc:</b> etherlab-users@etherlab.org<br>
<b>Subject:</b> Re: [Etherlab-users] Ethercat Master and AKD2G Flexible PDOs<o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<div>
<p class="MsoNormal">Hi Mike, <o:p></o:p></p>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">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.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">But anyway, the same fix might work for you if you don't need EoE support.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Kevin<o:p></o:p></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<div>
<p class="MsoNormal">On Mon, Mar 3, 2025 at 12:53<span style="font-family:"Arial",sans-serif"> </span>PM Mike Walker <<a href="mailto:mwalker@breault.com">mwalker@breault.com</a>> wrote:<o:p></o:p></p>
</div>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0cm 0cm 0cm 6.0pt;margin-left:4.8pt;margin-right:0cm">
<div>
<div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span lang="EN-US">All,<o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span lang="EN-US">                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.<o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span lang="EN-US"> <o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span lang="EN-US">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.<o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span lang="EN-US"> <o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span lang="EN-US">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??).<o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span lang="EN-US"> <o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span lang="EN-US">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.<o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span lang="EN-US"> <o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span lang="EN-US">The CStruct is as follows:<o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span lang="EN-US"> <o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span lang="EN-US">ec_pdo_entry_info_t akd2g_pdo_entries_current[] = {<o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span lang="EN-US">    /* RxPdo 0x1600 */<o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span lang="EN-US">    { 0x5003, 0x05, 32 }, /* current  */<o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span lang="EN-US">    { 0x6040, 0x00, 16 }, /* DS402 command word */<o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span lang="EN-US">};<o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span lang="EN-US"> <o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span lang="EN-US">ec_pdo_entry_info_t akd2g_pdo_entries_received[] = {<o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span lang="EN-US">    /* TxPDO 0x1a00 */<o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span lang="EN-US">    { 0x6063, 0x00, 32 }, /* position */<o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span lang="EN-US">    { 0x6041, 0x00, 16 }, /* DS402 Status Word*/<o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span lang="EN-US"> <o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span lang="EN-US">    /* TxPDO 0x1a01 */<o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span lang="EN-US">    { 0x606c, 0x00, 32 }, /* actual velocity, in milli rpm */<o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span lang="EN-US">    { 0x500A, 0x01, 32 }, /* actual current */<o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span lang="EN-US">    { 0x60E4, 0x01, 32 }, /* Feedback 1 Position */<o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span lang="EN-US">};<o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span lang="EN-US"> <o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span lang="EN-US">ec_pdo_info_t akd2g_pdos_current[] = {<o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span lang="EN-US">    { 0x1600, 2, akd2g_pdo_entries_current + 0 },<o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span lang="EN-US">    { 0x1a00, 2, akd2g_pdo_entries_received + 0 },<o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span lang="EN-US">    { 0x1a01, 3, akd2g_pdo_entries_received + 2 },<o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span lang="EN-US">};<o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span lang="EN-US"> <o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span lang="EN-US">ec_sync_info_t akd2g_syncs_current[] = {<o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span lang="EN-US">    { 0, EC_DIR_OUTPUT, 0, NULL, EC_WD_DISABLE },<o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span lang="EN-US">    { 1, EC_DIR_INPUT, 0, NULL, EC_WD_DISABLE },<o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span lang="EN-US">    { 2, EC_DIR_OUTPUT, 1, akd2g_pdos_current + 0, EC_WD_DISABLE },<o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span lang="EN-US">    { 3, EC_DIR_INPUT, 2, akd2g_pdos_current + 1, EC_WD_DISABLE },<o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span lang="EN-US">    { 0xFF }<o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span lang="EN-US">};<o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span lang="EN-US"> <o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span lang="EN-US">Still working to get a Wireshark dump (on a headless system), so working through this to see if it tells me anything.<o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span lang="EN-US"> <o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span lang="EN-US">Questions:
<o:p></o:p></span></p>
<ol start="1" type="1">
<li class="m230236869915270543msolistparagraph" style="mso-list:l0 level1 lfo1"><span lang="EN-US">Has anybody experienced similar issues and how they where able to resolve this?<o:p></o:p></span></li><li class="m230236869915270543msolistparagraph" style="mso-list:l0 level1 lfo1"><span lang="EN-US">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?<o:p></o:p></span></li><li class="m230236869915270543msolistparagraph" style="mso-list:l0 level1 lfo1"><span lang="EN-US">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?<o:p></o:p></span></li><li class="m230236869915270543msolistparagraph" style="mso-list:l0 level1 lfo1"><span lang="EN-US">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:<o:p></o:p></span></li></ol>
<ol start="4" type="1">
<ol start="1" type="a">
<li class="m230236869915270543msolistparagraph" style="mso-list:l0 level2 lfo1"><span lang="EN-US">Ecrt_release_master(mMaster)<o:p></o:p></span></li><li class="m230236869915270543msolistparagraph" style="mso-list:l0 level2 lfo1"><span lang="EN-US">Run a script that will restart ethercat (ie. /usr/local/etc/init.d/ethercat restart)<o:p></o:p></span></li><li class="m230236869915270543msolistparagraph" style="mso-list:l0 level2 lfo1"><span lang="EN-US">But when I attempt to get the master (ecrt_master_activate(mMaster)), domain (ie. ecrt_domain_data(mDomain)) all is good<o:p></o:p></span></li><li class="m230236869915270543msolistparagraph" style="mso-list:l0 level2 lfo1"><span lang="EN-US">BUT FAILS on ecrt_domain_reg_pdo_entry_list(mDomain, domain_regs)<o:p></o:p></span></li><li class="m230236869915270543msolistparagraph" style="mso-list:l0 level2 lfo1"><span lang="EN-US">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?<o:p></o:p></span></li></ol>
</ol>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span lang="EN-US"> <o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span lang="EN-US"> <o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span lang="EN-US">Thanks in advance for anything you can provide,<o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span lang="EN-US">Mike W<o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span lang="EN-US"> <o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal">-- <br>
Etherlab-users mailing list<br>
<a href="mailto:Etherlab-users@etherlab.org" target="_blank">Etherlab-users@etherlab.org</a><br>
<a href="https://lists.etherlab.org/mailman/listinfo/etherlab-users" target="_blank">https://lists.etherlab.org/mailman/listinfo/etherlab-users</a><o:p></o:p></p>
</div>
</blockquote>
</div>
</div>
</div>
</div>
</body>
</html>