<html><head></head><body><div style="color:#000; background-color:#fff; font-family:HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, Sans-Serif;font-size:14px"><div id="yiv7999484190"><div id="yui_3_16_0_1_1456837771168_20076"><div style="color:#000;background-color:#fff;font-family:HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, Sans-Serif;font-size:14px;" id="yui_3_16_0_1_1456837771168_20075"><div id="yiv7999484190yui_3_16_0_1_1456837771168_18558"><span>Thanks.</span></div><div id="yiv7999484190yui_3_16_0_1_1456837771168_18558"><span><br clear="none"></span></div><div id="yiv7999484190yui_3_16_0_1_1456837771168_18558"><span id="yiv7999484190yui_3_16_0_1_1456837771168_18559">It seems the however that the EL7031 stepper motor module does not work in DC mode even tho the AssignActivate word is listed in the device description xml file as 0x300. </span></div> <div class="yiv7999484190qtdSeparateBR" id="yui_3_16_0_1_1456837771168_20074"><br clear="none"><br clear="none"></div><div class="yiv7999484190yqt8800349877" id="yiv7999484190yqt05387"></div></div></div></div><div class=".yiv7999484190yahoo_quoted"> <div style="font-family:HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, Sans-Serif;font-size:14px;"> <div style="font-family:HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, Sans-Serif;font-size:16px;"> <div dir="ltr"><font size="2" face="Arial"> On Tuesday, 1 March 2016, 17:04:39, Richard Hacker <ha@igh.de> wrote:<br clear="none"></font></div>  <br clear="none"><br clear="none"> <div class="yiv7999484190y_msg_container">DC is quite an intricate aspect of EtherCAT.<br clear="none"><br clear="none">In DC enabled slaves, there are two clocks that generate events. You <br clear="none">specify the time at which these clocks run as well as the time when the <br clear="none">clocks start off for the first time. What the slave controller does at <br clear="none">these events is implementation detail and must be documented by the <br clear="none">manufacturer of the slave.<br clear="none"><br clear="none">There is documentation available at<br clear="none"><a rel="nofollow" shape="rect" target="_blank" href="http://download.beckhoff.com/download/document/io/ethercat-terminals/ethercatsystem_en.chm">http://download.beckhoff.com/download/document/io/ethercat-terminals/ethercatsystem_en.chm</a><br clear="none">Check out Distributed Clocks -> Slave synchronization -> DC Modes.<br clear="none"><br clear="none">In the master, it is configured using<br clear="none">void ecrt_slave_config_dc(<br clear="none">     ec_slave_config_t *sc, /**< Slave configuration.*/<br clear="none">     uint16_t assign_activate, /**< AssignActivate word.*/<br clear="none">     uint32_t sync0_cycle, /**< SYNC0 cycle time [ns].*/<br clear="none">     int32_t sync0_shift, /**< SYNC0 shift time [ns].*/<br clear="none">     uint32_t sync1_cycle, /**< SYNC1 cycle time [ns].*/<br clear="none">     int32_t sync1_shift /**< SYNC1 shift time [ns].*/<br clear="none">         );<br clear="none"><br clear="none">You will be stetting sync0_cycle to your cycle time in nanoseconds and <br clear="none">play around with sync0_shift somewhere half of your cycle time. The <br clear="none">other values will be zero in your case (in fact, sync1_shift is not even <br clear="none">used in the master!)<br clear="none"><br clear="none">To check whether your slave is synchronizing, run:<br clear="none"><br clear="none">watch -n0 "ethercat reg_read -pX -tsm32 0x92c"<br clear="none"><br clear="none">where X is the position of your slave. This value should be quite low, <br clear="none">in the order of a few hundred. This is a correction value in nanoseconds <br clear="none">of the slave's clock.<br clear="none"><br clear="none">On 01.03.2016 12:44, Paul Mulligan wrote:<br clear="none">> Hi,<br clear="none">><br clear="none">> I'm still unsure as to what values are given for the last four<br clear="none">> parameters of this function. I believe the sync1_cycle and sync1_shift<br clear="none">> can be ignored but how is the sync0_shift value determined? I believe<br clear="none">> the frame should reach all the slaves before this time but also the new<br clear="none">> frame should not be received before this time. In the examples given, a<br clear="none">> scan time of 1ms is used but the sync0_shift value is 4.4 ms. How can<br clear="none">> this be correct?<br clear="none">><br clear="none">> ecrt_slave_config_dc(modules[index].sc, 0x0300, scanTime, ??, ??, ??, ??);<br clear="none">><br clear="none">><br clear="none">> On Monday, 29 February 2016, 15:57:30, Richard Hacker <<a rel="nofollow" shape="rect" ymailto="mailto:ha@igh.de" target="_blank" href="mailto:ha@igh.de">ha@igh.de</a>> wrote:<br clear="none">><br clear="none">><br clear="none">> I only configure DC on the slaves that are actually required to be<br clear="none">> synchronized.<br clear="none">><br clear="none">> Otherwise it seems correct what you are doing...<br clear="none">><br clear="none">> Am 2016-02-29 um 14:45 schrieb Paul Mulligan:<br clear="none">>  > Hi,<br clear="none">>  ><br clear="none">>  > Just a question or two about distributed clocks.<br clear="none">>  ><br clear="none">>  > I have a system with an EL1008 digital input module, EL3001 analogue<br clear="none">>  > input module, two EL7031 stepper motor driver modules and two EL2008<br clear="none">>  > digital output modules in that order. I am using the EK1100 bus coupler<br clear="none">>  > terminal as the first module.<br clear="none">>  ><br clear="none">>  > Do I need to call ecrt_slave_config_dc() for all of these modules before<br clear="none">>  > activating the master, or just the first module on the bus? My<br clear="none">>  > understanding from reading about distributed clocks is that the first<br clear="none">>  > module on the bus with DC capability should be used as the reference<br clear="none">> clock.<br clear="none">>  ><br clear="none">>  >  From looking at the example "dc_user" supplied in the master download,<br clear="none">>  > it calls ecrt_slave_config_dc() only for the IDS_COUNTER module.<br clear="none">>  ><br clear="none">>  > In the cyclic_task(), the functions ecrt_master_application_time(),<br clear="none">>  > ecrt_master_sync_reference_clock(), ecrt_master_sync_slave_clocks() are<br clear="none">>  > then called in that order. I notice ecrt_master_reference_clock_time()<br clear="none">>  > is not used at all here.<br clear="none">>  ><br clear="none">>  > Is this all that is required to control the distributed clocks ? Thank<br clear="none">>  > you in advance.<br clear="none">>  ><br clear="none">>  ><br clear="none">>  > _______________________________________________<br clear="none">>  > etherlab-users mailing list<br clear="none">>  > <a rel="nofollow" shape="rect" ymailto="mailto:etherlab-users@etherlab.org" target="_blank" href="mailto:etherlab-users@etherlab.org">etherlab-users@etherlab.org</a> <mailto:<a rel="nofollow" shape="rect" ymailto="mailto:etherlab-users@etherlab.org" target="_blank" href="mailto:etherlab-users@etherlab.org">etherlab-users@etherlab.org</a>><div class="yiv7999484190yqt9136069556" id="yiv7999484190yqtfd29695"><br clear="none">>  > <a rel="nofollow" shape="rect" target="_blank" href="http://lists.etherlab.org/mailman/listinfo/etherlab-users">http://lists.etherlab.org/mailman/listinfo/etherlab-users</a><br clear="none">>  ><br clear="none">><br clear="none">><br clear="none"></div><br clear="none"><br clear="none"></div>  </div> </div>  </div></div></body></html>