<div dir="ltr">Thank you for your response, Gavin. I'm pretty sure that the device supports complete access. It is stated in the documentation, that either I can use complete access or "consistency nesting" for configuration purposes. I derived the object layout directly from the Twincat SDO-Startup tab for that particular device.<div>Essentially I'm doing this right now:<br><div><div><br></div><div>* Extract the SDO-Startup information from TwinCAT. Specifically for the EL6751 one has to upload 0xF800 first and then 0x800 with appropriate values. According to the online documentation, EL6751 should then start the CAN-Controller (Which it does not :D). I extracted the following information:</div><div><br></div><div>    - Complete Access on 0xF800 (with 0-Index): </div><div>       11 00 7F 02 80 00 A0 86 01 00 00 00 00 00 00 1E 64 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 </div><div>       00 00 00 00 00 00 00 00 00 00 00 00 00 00 </div><div>    - Complete Access on 0x8000 (with 0-Index)</div><div>       2E 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 </div><div>       00 00 01 00 64 00 03 00 00 00 D0 07 05 00 0A 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 </div><div>       00 00 00 00 00 00 00 00 00 00 00 00</div><div>    - For 1C12 and 1C13 there are also startup SDOs. I use the values provided there to configure pdo-mapping via      </div><div>      ecrt_slave_config_pdos. TwinCAT provides:</div><div>      </div><div>              01 00 00 16                             for 1C12. Therefore one entry, selecting mapping object 0x1600</div><div>              03 00 82 1A 83 1A 84 1A        for 1C13. Therefore three entries, selecting mapping objects 0x1A84, 0x1A83, </div><div>                                                              0x1A82</div><div>      </div><div><br></div><div>* I use the extracted values to create uint8_t buffer, which are holding these information:</div><div>      uint8_t el6751_f800 [] = { 0x11, 0x00, 0x7F, ..., 0x00};</div><div>      uint8_t el6761_8000[] = { 0x2E, 0x00, 0x01, ..., 0x00};</div><div><br></div><div>* I register the pdos via ecrt_slave_config_pdos and use only the mapping-objects, which where provided in the twincat startup sequence (the entries in 0x1C12 and 0x1C13):</div><div><br></div><div>       ec_pdo_info_t rx_pdos[] = {<br></div><div><div>           { 0x1600, 0, NULL },</div><div>       };</div><div><br></div><div>       ec_pdo_info_t tx_pdos[] = {</div><div>          { 0x1A82, 0, NULL },</div><div>          { 0x1A83, 0, NULL },</div><div>          { 0x1A84, 0, NULL }</div><div>       };</div></div><div><br></div><div>       ec_sync_info_t syncs[] = {</div><div>           { 0, EC_DIR_OUTPUT, 0, NULL},</div><div>           { 1, EC_DIR_INPUT, 0, NULL},</div><div>           { 2, EC_DIR_OUTPUT, 1, rx_pdos},</div><div>           { 3, EC_DIR_INPUT, 3, tx_pdos},</div><div>           {0xff}</div><div>        }</div><div><br></div><div>        ecrt_slave_config_pdos(slave, EC_END, syncs);</div><div><br></div><div>   I provided NULL arguments in the mapping-configuration, because I'm currently not sure, which objects are selected. I don't have access to the machine with the master right now. I hope that's okay.</div><div><br></div><div>* I use ecrt_slave_config_complete_sdo with the buffers explained above. Roughly like this:</div><div><br></div><div>     ecrt_slave_config_complete_sdo(slave, 0xF800, el6751_f800,  sdo_f800_size);</div><div>     ecrt_slave_config_complete_sdo(slave, 0x8000, el6751_8000, sdo_8000_size); </div><div>      </div><div>  I am sure that the sizes given ecrt_slave_config_complete_sdo are correct.</div><div><br></div><div><br></div><div>Is there something conceptually wrong with this? </div><div><br></div><div>@Gavin: You stated, that in case of  downloading the complete sdo object including subindex 0, one has to provide two bytes for that. When I got involved with ethercat and the master the first time, I included just one byte for subindex 0, because all of the documentations I read were stating, that subindex 0 is of uint8. It nearly drove me crazy, because the slave always responded with something like "Error writing sdo xxxx: Value written is too low/high". It was another post on this mailing list, where I saw that actually two bytes have to be provided. I read the official EtherCAT-Spec and didn't found something referring to this. So where can I find this circumstance documented? ;D</div><div><br></div><div><br><div class="gmail_extra"><br><div class="gmail_quote">2016-01-19 23:51 GMT+01:00 Gavin Lambert <span dir="ltr"><<a href="mailto:gavinl@compacsort.com" target="_blank">gavinl@compacsort.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div lang="EN-NZ" link="blue" vlink="purple"><div><p class="MsoNormal"><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)">It’s hard to say without seeing what specific commands you’re trying to run.<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)"><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)">ecrt_master_sdo_download* is intended for one-off synchronous transfers before starting the realtime loop, eg. for cases where you’re trying to interrogate the device or otherwise do out-of-band exchanges.  (You can also use it on a separate thread after starting the realtime loop, but this can add latency due to lock contention, so it may not be a good idea if your period is short.)<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)"><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)">ecrt_slave_config_sdo* is intended for configuration required during the PREOP->SAFEOP transition.  You should always use these for such configuration (everything except the PDO Assign registers 0x1C1x, as those are automatically set from the PDO mappings you’ve made).  In particular if the device goes offline then these will automatically be re-sent when it reappears, while the above won’t.<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)"><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)">“Complete” SDOs are the most efficient way of downloading an entire object to the device, but they come with some caveats:<u></u><u></u></span></p><p><u></u><span style="font-size:11pt;font-family:Symbol;color:rgb(31,73,125)"><span>·<span style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7pt;line-height:normal;font-family:'Times New Roman'">         </span></span></span><u></u><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)">Not all devices support them (although most do) – you may need to check the device manual or the output of “ethercat slaves –v”<u></u><u></u></span></p><p><u></u><span style="font-size:11pt;font-family:Symbol;color:rgb(31,73,125)"><span>·<span style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7pt;line-height:normal;font-family:'Times New Roman'">         </span></span></span><u></u><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)">Some objects might be too large to fit in the mailbox – while there are some segmenting protocols to deal with this, not all slaves support those.  (Fortunately it’s rare for config objects to be large.)<u></u><u></u></span></p><p><u></u><span style="font-size:11pt;font-family:Symbol;color:rgb(31,73,125)"><span>·<span style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7pt;line-height:normal;font-family:'Times New Roman'">         </span></span></span><u></u><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)">You have to know the internal byte-for-byte layout of the object, including padding bytes in some cases.  This is usually similar to the layout of the subindexes but occasionally there can be surprises.  Again, check the manual.  If you have access to something that can do SDO complete uploads, then try uploading the object first to see its current layout.  (Etherlab stable 1.5.2 doesn’t support this but I’ve previously posted some patches to add the feature.)<u></u><u></u></span></p><p><u></u><span style="font-size:11pt;font-family:Symbol;color:rgb(31,73,125)"><span>·<span style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7pt;line-height:normal;font-family:'Times New Roman'">         </span></span></span><u></u><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)">TwinCAT supports downloads both starting from subindex 0 (which requires including the number of subindexes as a two-byte field) or from subindex 1 (which omits this and only includes the “real” data of the object).  Etherlab only supports downloads starting from subindex 0.<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)"><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)">If complete access isn’t suitable for some reason, then you can fall back on downloading the subindexes individually.<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)"><u></u> <u></u></span></p><div style="border-style:none none none solid;border-left-color:blue;border-left-width:1.5pt;padding:0cm 0cm 0cm 4pt"><div><div style="border-style:solid none none;border-top-color:rgb(225,225,225);border-top-width:1pt;padding:3pt 0cm 0cm"><p class="MsoNormal"><b><span lang="EN-US" style="font-size:11pt;font-family:Calibri,sans-serif">From:</span></b><span lang="EN-US" style="font-size:11pt;font-family:Calibri,sans-serif"> etherlab-users [mailto:<a href="mailto:etherlab-users-bounces@etherlab.org" target="_blank">etherlab-users-bounces@etherlab.org</a>] <b>On Behalf Of </b>Matze Thias<br><b>Sent:</b> Wednesday, 20 January 2016 04:06<br><b>To:</b> <a href="mailto:etherlab-users@etherlab.org" target="_blank">etherlab-users@etherlab.org</a><br><b>Subject:</b> [etherlab-users] EL6751 SDO-Configuration<u></u><u></u></span></p></div></div><div><div><p class="MsoNormal"><u></u> <u></u></p><div><div><div><p class="MsoNormal" style="margin-bottom:12pt">Hello,<u></u><u></u></p></div><p class="MsoNormal" style="margin-bottom:12pt">I am trying to configure the EL6751 at the moment, so that I am able to send raw CAN messages over ethercat(<a href="http://infosys.beckhoff.com/content/1033/el6751/html/el6751_layer2_statemachine.htm?id=10857" target="_blank">http://infosys.beckhoff.com/content/1033/el6751/html/el6751_layer2_statemachine.htm?id=10857</a>).<br>I took the configuration, which is done in terms of sdo-startup-downloads, from one of the twincat dialogs. Which method for sdo configuration is the right to choose?<u></u><u></u></p></div><div><p class="MsoNormal" style="margin-bottom:12pt">If I use ecrt_master_sdo_download_complete for the different SDO-Objects to upload, nothing happens. When using ecrt_slave_config_complete_sdo the device error-led starts blinking(indicating, that some configuration is in progress) but at the same time I get this:<br><br>Jan 19 15:50:06 e-node8 kernel: [611927.053364] EtherCAT ERROR 0-1: Failed to set SAFEOP state, slave refused state change (PREOP + ERROR).<br>Jan 19 15:50:06 e-node8 kernel: [611927.059801] EtherCAT ERROR 0-1: Unknown AL status code 0xF101.<u></u><u></u></p></div><div><p class="MsoNormal" style="margin-bottom:12pt">Can anyone explain the error and has a solution for this? Maybe someone has experience in getting the el6751 configured and work-ready for this scenario and can share his insights :) ?<u></u><u></u></p></div><div><p class="MsoNormal" style="margin-bottom:12pt">Greetings,<u></u><u></u></p></div><div><p class="MsoNormal">Matze Thias<u></u><u></u></p></div><div><p class="MsoNormal"><u></u> <u></u></p></div></div></div></div></div></div></div></blockquote></div><br></div></div></div></div></div>