<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">
<div class="">Hi,</div>
<div class=""><br class="">
</div>
<div class="">I have been working with the EL6021 card for some time now with no issues regarding communications for RS485 using the default PDO/SDO parameters that come stock with the firmware version 04 (thanks to the communities help). Beckhoff has recently
 started rolling out newer firmware for the EL6021 that has a different default PDO mapping for all of the data bytes / status registers in which the PDO mappings are different per firmware version (they are stored in 0x1C12 and 0x1C13). I am using the fixed
 structures from the cstruct output using the ethercat user space tool.</div>
<div class=""><br class="">
</div>
<div class="">To fix this, I was able to use the ethercat userspace tool with the upload / download commands to set 0x1C12/0x1C13 to the desired PDO bank (0x1604/0x1A04), but it seems these parameters are in volatile memory, which gets reset on power cycle.
 Here are the commands I am using with the ethercat tool binary to get the registers correct before running my application in realtime:</div>
<div class=""><br class="">
</div>
<div class="">
<div class="">./ethercat download -p 7 -t uint8 0x1C12 0x00 0x00</div>
<div class="">./ethercat download -p 7 -t uint16 0x1C12 0x01 0x1604</div>
<div class="">./ethercat download -p 7 -t uint8 0x1C12 0x00 0x01</div>
<div class="">./ethercat download -p 7 -t uint8 0x1C13 0x00 0x00</div>
<div class="">./ethercat download -p 7 -t uint16 0x1C13 0x01 0x1A04</div>
<div class="">./ethercat download -p 7 -t uint8 0x1C13 0x00 0x01</div>
</div>
<div class=""><br class="">
</div>
<div class="">This has to be done before I run my users pace application for the pdo mapping / sync managers to be correct. I tried to use some of the the user space library functions from my application with ecrt_slave_config_sdoX() but the registers do not
 change which causes a failure during domain registration.</div>
<div class=""><br class="">
</div>
<div class="">The startup routine I am using does the following:</div>
<div class="">1. Complete non real-time SDO transactions</div>
<div class="">2. Get slave configurations</div>
<div class="">3. Configure sync managers</div>
<div class="">4. Create domain and Register domain pros</div>
<div class="">5. Activate master</div>
<div class="">…</div>
<div class=""><br class="">
</div>
<div class="">Here is what I have for the EL6021 device in step 1:</div>
<div class="">
<div style="margin: 0px; font-size: 9px;" class=""><span class="Apple-tab-span" style="white-space:pre"></span></div>
</div>
<div class="">
<div style="margin: 0px; font-size: 9px;" class=""><span class="Apple-tab-span" style="white-space:pre"></span><span style="color: #931a68" class=""><b class="">if</b></span> ((error =
<span style="color: #793d93" class=""><b class="">ecrt_slave_config_sdo8</b></span>(config(), 0x1C12, 0x00, 0x00)))</div>
<div style="margin: 0px; font-size: 9px; color: rgb(147, 26, 104);" class=""><span style="color: #000000" class=""><span class="Apple-tab-span" style="white-space:pre"></span></span><b class="">return</b><span style="color: #000000" class="">
</span><b class="">false</b><span style="color: #000000" class="">;</span></div>
<div style="margin: 0px; font-size: 9px;" class=""><span class="Apple-tab-span" style="white-space:pre"></span><span style="color: #931a68" class=""><b class="">if</b></span> ((error =
<span style="color: #793d93" class=""><b class="">ecrt_slave_config_sdo16</b></span>(config(), 0x1C12, 0x01, 0x1604)))</div>
<div style="margin: 0px; font-size: 9px; color: rgb(147, 26, 104);" class=""><span style="color: #000000" class=""><span class="Apple-tab-span" style="white-space:pre"></span></span><b class="">return</b><span style="color: #000000" class="">
</span><b class="">false</b><span style="color: #000000" class="">;</span></div>
<div style="margin: 0px; font-size: 9px;" class=""><span class="Apple-tab-span" style="white-space:pre"></span><span style="color: #931a68" class=""><b class="">if</b></span> ((error =
<span style="color: #793d93" class=""><b class="">ecrt_slave_config_sdo8</b></span>(config(), 0x1C12, 0x00, 0x01)))</div>
<div style="margin: 0px; font-size: 9px; color: rgb(147, 26, 104);" class=""><span style="color: #000000" class=""><span class="Apple-tab-span" style="white-space:pre"></span></span><b class="">return</b><span style="color: #000000" class="">
</span><b class="">false</b><span style="color: #000000" class="">;</span></div>
<div style="margin: 0px; font-size: 9px;" class=""><span class="Apple-tab-span" style="white-space:pre"></span><span style="color: #931a68" class=""><b class="">if</b></span> ((error =
<span style="color: #793d93" class=""><b class="">ecrt_slave_config_sdo8</b></span>(config(), 0x1C13, 0x00, 0x00)))</div>
<div style="margin: 0px; font-size: 9px; color: rgb(147, 26, 104);" class=""><span style="color: #000000" class=""><span class="Apple-tab-span" style="white-space:pre"></span></span><b class="">return</b><span style="color: #000000" class="">
</span><b class="">false</b><span style="color: #000000" class="">;</span></div>
<div style="margin: 0px; font-size: 9px;" class=""><span class="Apple-tab-span" style="white-space:pre"></span><span style="color: #931a68" class=""><b class="">if</b></span> ((error =
<span style="color: #793d93" class=""><b class="">ecrt_slave_config_sdo16</b></span>(config(), 0x1C13, 0x01, 0x1A04)))</div>
<div style="margin: 0px; font-size: 9px; color: rgb(147, 26, 104);" class=""><span style="color: #000000" class=""><span class="Apple-tab-span" style="white-space:pre"></span></span><b class="">return</b><span style="color: #000000" class="">
</span><b class="">false</b><span style="color: #000000" class="">;</span></div>
<div style="margin: 0px; font-size: 9px;" class=""><span class="Apple-tab-span" style="white-space:pre"></span><span style="color: #931a68" class=""><b class="">if</b></span> ((error =
<span style="color: #793d93" class=""><b class="">ecrt_slave_config_sdo8</b></span>(config(), 0x1C13, 0x00, 0x01)))</div>
<div style="margin: 0px; font-size: 9px; color: rgb(147, 26, 104);" class=""><span style="color: #000000" class=""><span class="Apple-tab-span" style="white-space:pre"></span></span><b class="">return</b><span style="color: #000000" class="">
</span><b class="">false</b><span style="color: #000000" class="">;</span></div>
</div>
<div class=""><br class="">
</div>
<div class="">Do the SDO’s only get written when the master is activated when using ecrt_slave_config_sdoX? </div>
<div class=""><br class="">
</div>
<div class="">Is there some other process that could be done other than calling into the ethercat tool using system() or using a pipe with popen() that would set these registers if the ecrt_slave_config_sdox isn’t working?</div>
<div class=""><br class="">
</div>
<div apple-content-edited="true" class="">
<div style="color: rgb(0, 0, 0); letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">
<div class="">Derrill Vezina</div>
<div class="">Electrical Engineer</div>
<div class="">Caron Engineering Inc.</div>
<div class="">Office: 207-646-6071 ext. 360</div>
<div class="">Cell: 207-251-9072</div>
</div>
</div>
<br class="">
</body>
</html>