<div dir="ltr">Activating the master resolved this issue. ecrt_master_activate takes care of state transitions from PREOP to OP.<div>Best, </div><div>Mohsen<br><div><br></div></div></div><br><div class="gmail_quote"><div dir="ltr">On Fri, Sep 28, 2018 at 3:56 PM Mohsen Alizadeh Noghani <<a href="mailto:m.alizad3h@gmail.com">m.alizad3h@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Having read EtherCAT and EtherLab documentation a bit more, <div><br><div>1- I should set the first bit of the sync manager's status register to 1.  </div><div>According to EtherCAT's Register Documentation, for sync manager 2 for instance, I have to set the first bit of byte at 0x081B to 1.</div><div><br><div>2-  I don't think using ecrt_slave_config_sync_manager will help me, since it only sets the direction of sync manager (as pointed out by comments in ecrt.h).</div><div><br></div><div>Now, my question is, how can I modify a specific bit in a slave's address space?</div><div><br></div><div>Best, </div><div>Mohsen<br><div><br></div></div></div></div></div><br><div class="gmail_quote"><div dir="ltr">On Thu, Sep 27, 2018 at 3:19 AM Gavin Lambert <<a href="mailto:gavin.lambert@tomra.com" target="_blank">gavin.lambert@tomra.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">





<div lang="EN-NZ" link="#0563C1" vlink="#954F72">
<div class="m_-7694050068537913502m_-7081432104688577419WordSection1">
<p class="MsoNormal"><span>EC_WD_ENABLE enables the SM watchdog; it’s a separate thing from enabling the SM itself.  In general you should only activate it on one SM per slave – usually the output SM if the slave has outputs
 or the input SM otherwise.  If you don’t need the slave to drop from OP to SAFEOP when it loses communication with the master then you can leave the watchdog entirely disabled – though using the watchdog is usually recommended for output slaves for safety
 reasons.<u></u><u></u></span></p>
<p class="MsoNormal"><span><u></u> <u></u></span></p>
<p class="MsoNormal"><span>Using </span>erct_slave_config_sync_manager by itself is fairly pointless.  You need to specify the PDOs contained in the SM and then also actually use at least one PDO from each SM in your domain
 mapping.  Typically you use ecrt_slave_config_pdos to do the former and ecrt_domain_reg_pdo_entry_list for the latter.  See the example code.<span><u></u><u></u></span></p>
<p class="MsoNormal"><span><u></u> <u></u></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">From:</span></b><span lang="EN-US"> Mohsen Alizadeh Noghani<br>
<b>Sent:</b> Wednesday, 26 September 2018 22:32<br>
<b>To:</b> <a href="mailto:etherlab-users@etherlab.org" target="_blank">etherlab-users@etherlab.org</a><br>
<b>Subject:</b> [etherlab-users] Error flag after requesting SAFEOP<u></u><u></u></span></p>
</div>
</div>
<p class="MsoNormal"><u></u> <u></u></p>
<div>
<p class="MsoNormal">Hello everyone.<u></u><u></u></p>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">When I request SAFEOP state for my slave (Mecapion L7N) using shell command<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">$ ethercat state --position 0 SAFEOP<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">the slave's flag changes from + to E, and the state stays at PREOP.<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal"><b>Additional Info:</b><u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">In a previous project, I used SOEM library and had to deal with the same issue, which was fixed by manually enabling sync managers 2 & 3.<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">ec_slave[1].SM[2].SMflags |= 0x00010000;<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">ec_slave[2].SM[3].SMflags |= 0x00010000;<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">I tried to do the same by the adding following lines in my a simple code<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">ret1 = erct_slave_config_sync_manager(sc, 2, EC_DIR_INPUT, EC_WD_ENABLE)<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">ret2 =  <span style="font-size:12.0pt;background:white">erct_slave_config_sync_manager(sc, 3, EC_DIR_OUTPUT, EC_WD_ENABLE)</span>
<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">Both function calls are successful (ret1=ret2=0) but the slave won't reach SAFEOP.<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
</div>
</div>
</div>
</div>

</blockquote></div>
</blockquote></div>