<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;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman",serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:#0563C1;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#954F72;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri",sans-serif;
        mso-fareast-language:EN-US;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
        {page:WordSection1;}
--></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="#0563C1" vlink="#954F72"><div class=WordSection1><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D;mso-fareast-language:EN-US'>Registering 0x6000:11 doesn’t work because the actual value is at 0x6000:0x11.  (Note hex vs. decimal.)<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D;mso-fareast-language:EN-US'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D;mso-fareast-language:EN-US'>Registering 0x6000:2 doesn’t work because the value is not at bit 0, so you have to pass a non-NULL pointer as the final parameter to receive the bit offset of the value, which you must then pass into EC_READ_BIT or similar bit-aware code.<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D;mso-fareast-language:EN-US'><o:p> </o:p></span></p><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'> etherlab-users [mailto:etherlab-users-bounces@etherlab.org] <b>On Behalf Of </b>William Rifenburgh<br><b>Sent:</b> Friday, 11 September 2015 18:30<br><b>To:</b> etherlab-users@etherlab.org<br><b>Subject:</b> [etherlab-users] Failed to register PDO entry: No such file or directory<o:p></o:p></span></p></div></div><p class=MsoNormal><o:p> </o:p></p><div><p class=MsoNormal>Hello Etherlab experts,<o:p></o:p></p><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>I can't register a PDO entry at index 6000:11 that the 'ethercat cstruct' command tells me should be possible for a Beckhoff EL3356-0010:<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><div><p class=MsoNormal>/* Master 0, Slave 2, "EL3356-0010"<o:p></o:p></p></div><div><p class=MsoNormal> * Vendor ID:       0x00000002<o:p></o:p></p></div><div><p class=MsoNormal> * Product code:    0x0d1c3052<o:p></o:p></p></div><div><p class=MsoNormal> * Revision number: 0x0013000a<o:p></o:p></p></div><div><p class=MsoNormal> */<o:p></o:p></p></div></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><div><p class=MsoNormal>static ec_pdo_entry_info_t EL3356_pdo_entries[] = {<o:p></o:p></p></div><div><p class=MsoNormal>    {0x7000, 0x01, 1}, /* Start calibration */<o:p></o:p></p></div><div><p class=MsoNormal>    {0x7000, 0x02, 1}, /* Disable calibration */<o:p></o:p></p></div><div><p class=MsoNormal>    {0x7000, 0x03, 1}, /* Input freeze */<o:p></o:p></p></div><div><p class=MsoNormal>    {0x7000, 0x04, 1}, /* Sample mode */<o:p></o:p></p></div><div><p class=MsoNormal>    {0x7000, 0x05, 1}, /* Tare */<o:p></o:p></p></div><div><p class=MsoNormal>    {0x0000, 0x00, 11}, /* Gap */<o:p></o:p></p></div><div><p class=MsoNormal>    {0x0000, 0x00, 1}, /* Gap */<o:p></o:p></p></div><div><p class=MsoNormal>    {0x6000, 0x02, 1}, /* Overrange */<o:p></o:p></p></div><div><p class=MsoNormal>    {0x0000, 0x00, 1}, /* Gap */<o:p></o:p></p></div><div><p class=MsoNormal>    {0x6000, 0x04, 1}, /* Data invalid */<o:p></o:p></p></div><div><p class=MsoNormal>    {0x0000, 0x00, 2}, /* Gap */<o:p></o:p></p></div><div><p class=MsoNormal>    {0x6000, 0x07, 1}, /* Error */<o:p></o:p></p></div><div><p class=MsoNormal>    {0x6000, 0x08, 1}, /* Calibration in progress */<o:p></o:p></p></div><div><p class=MsoNormal>    {0x6000, 0x09, 1}, /* Steady state */<o:p></o:p></p></div><div><p class=MsoNormal>    {0x0000, 0x00, 4}, /* Gap */<o:p></o:p></p></div><div><p class=MsoNormal>    {0x1c32, 0x20, 1}, /* Sync error */<o:p></o:p></p></div><div><p class=MsoNormal>    {0x0000, 0x00, 1}, /* Gap */<o:p></o:p></p></div><div><p class=MsoNormal>    {0x1800, 0x09, 1},<o:p></o:p></p></div><div><p class=MsoNormal>    {0x6000, 0x11, 32}, /* Value */<o:p></o:p></p></div><div><p class=MsoNormal>};<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>static ec_pdo_info_t EL3356_pdos[] = {<o:p></o:p></p></div><div><p class=MsoNormal>    {0x1600, 6, EL3356_pdo_entries + 0}, /* RMB RxPDO-Map Control */<o:p></o:p></p></div><div><p class=MsoNormal>    {0x1a00, 12, EL3356_pdo_entries + 6}, /* RMB TxPDO-Map Status */<o:p></o:p></p></div><div><p class=MsoNormal>    {0x1a01, 1, EL3356_pdo_entries + 18}, /* RMB TxPDO-Map Value (INT32) */<o:p></o:p></p></div><div><p class=MsoNormal>};<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>static ec_sync_info_t EL3356_syncs[] = {<o:p></o:p></p></div><div><p class=MsoNormal>    {0, EC_DIR_OUTPUT, 0, NULL, EC_WD_DISABLE},<o:p></o:p></p></div><div><p class=MsoNormal>    {1, EC_DIR_INPUT, 0, NULL, EC_WD_DISABLE},<o:p></o:p></p></div><div><p class=MsoNormal>    {2, EC_DIR_OUTPUT, 1, EL3356_pdos + 0, EC_WD_DISABLE},<o:p></o:p></p></div><div><p class=MsoNormal>    {3, EC_DIR_INPUT, 2, EL3356_pdos + 1, EC_WD_DISABLE},<o:p></o:p></p></div><div><p class=MsoNormal>    {0xff}<o:p></o:p></p></div><div><p class=MsoNormal>};<o:p></o:p></p></div></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>I use the following code to try to register it:<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><div><p class=MsoNormal> if (!(el3356_ana_in_sc = ecrt_master_slave_config(master, EL3356Pos, Beckhoff_EL3356))) {<o:p></o:p></p></div><div><p class=MsoNormal>        fprintf(stderr, "Failed to get slave configuration.\n");<o:p></o:p></p></div><div><p class=MsoNormal>        return -1;<o:p></o:p></p></div><div><p class=MsoNormal>    }<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>    printf("Attempting to register the pain-in-the-ass PDO entry\n");<o:p></o:p></p></div><div><p class=MsoNormal>    off_el3356_value = ecrt_slave_config_reg_pdo_entry(el3356_ana_in_sc,<o:p></o:p></p></div><div><p class=MsoNormal>            0x6000, 11, domain1, NULL);<o:p></o:p></p></div><div><p class=MsoNormal>    if (off_el3356_value < 0)<o:p></o:p></p></div><div><p class=MsoNormal>          fprintf(stderr, "Failed to register PDO entry 0x6000 0x11.");<o:p></o:p></p></div><div><p class=MsoNormal>        return -1;<o:p></o:p></p></div></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>and I get: <o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>Failed to register PDO entry: No such file or directory<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>When I try 0x6000:02 I get: <o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>PDO entry 0x6000:02 does not byte-align in config 0:2.<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>I have triple checked to make sure all fields in my code snippet are correct. How is it still failing to register? Could my SII be corrupted?<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>I have attached full code to this email.<o:p></o:p></p></div><div><p class=MsoNormal>I have also attached the SII.bin and xml output from using etherlab sii_read and xml commands<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>Thanks for the help!<o:p></o:p></p></div><div><p class=MsoNormal>-Will<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div></div></div></div></body></html>