<?xml version="1.0" encoding="utf-8"?>
<feed xml:lang="en" xmlns="http://www.w3.org/2005/Atom"><title>Recent posts to Reliable delayed FOR loop</title><link href="https://forge.codesys.com/forge/talk/Engineering/thread/c3c32a8fa1/" rel="alternate"/><link href="https://forge.codesys.com/forge/talk/Engineering/thread/c3c32a8fa1/feed.atom" rel="self"/><id>https://forge.codesys.com/forge/talk/Engineering/thread/c3c32a8fa1/</id><updated>2020-02-27T13:58:46.222000Z</updated><subtitle>Recent posts to Reliable delayed FOR loop</subtitle><entry><title>Reliable delayed FOR loop</title><link href="https://forge.codesys.com/forge/talk/Engineering/thread/c3c32a8fa1/?limit=25#dbfc" rel="alternate"/><published>2020-02-27T13:58:46.222000Z</published><updated>2020-02-27T13:58:46.222000Z</updated><author><name>t.lundahl</name><uri>https://forge.codesys.com/u/t-lundahl/</uri></author><id>https://forge.codesys.comf845b76d194451cd4c8e60e2954a23362c8999cf</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;You have a timer as long as your scantime?&lt;/p&gt;
&lt;p&gt;Try 'xDelay := xDelay + 1;'&lt;/p&gt;
&lt;p&gt;If xDelay is '2' then it has made one more scan rotation.&lt;/p&gt;
&lt;p&gt;Check out GETSYSTEMTIME, usaully there is a systemtimer in u-seconds on the system.&lt;/p&gt;
&lt;p&gt;/Torbjörn&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>Reliable delayed FOR loop</title><link href="https://forge.codesys.com/forge/talk/Engineering/thread/c3c32a8fa1/?limit=25#e3ff" rel="alternate"/><published>2020-02-27T13:58:45.892000Z</published><updated>2020-02-27T13:58:45.892000Z</updated><author><name>alex87</name><uri>https://forge.codesys.com/u/alex87/</uri></author><id>https://forge.codesys.com9b6d4c83a9991a79308cd0216fc14d58c3508830</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Hello!&lt;/p&gt;
&lt;p&gt;Can anyone share me/us the code for reliable delayed for loop. I'm trying with TON delayed CASE loop, but it is really painfull and not reliable. In my example I'm parametrizig CAN device over SDO protocol, with expedited SDO transfer. So i have eg. index 16#5000 and 20-25 subindexes. Every sub index have to be delayed and sent because of the SDO request-response protocol. My code snipet:&lt;/p&gt;
&lt;p&gt;ton_sdo_param(IN:= xTonStepEnable , PT:=T#3MS , Q=&amp;gt;xDelayStep , ET=&amp;gt; );&lt;/p&gt;
&lt;p&gt;CASE int1 OF &lt;br/&gt;
             19:    xTonStepEnable:=TRUE;&lt;br/&gt;
            IF xDelayStep THEN&lt;br/&gt;
            int1:=20;&lt;br/&gt;
            END_IF&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;    &lt;span class="mi"&gt;20&lt;/span&gt;:   &lt;span class="nv"&gt;xTonStepEnable&lt;/span&gt;:&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;FALSE&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
        &lt;span class="nv"&gt;windex&lt;/span&gt;:&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;16&lt;/span&gt;&lt;span class="sc"&gt;#5000&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
        &lt;span class="nv"&gt;bySubIndex&lt;/span&gt;:&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;bySubIndex&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="c1"&gt;;               &lt;/span&gt;
        &lt;span class="nv"&gt;xSDOEnable&lt;/span&gt;:&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;TRUE&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
        &lt;span class="k"&gt;IF&lt;/span&gt; &lt;span class="nv"&gt;bySubIndex&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt; &lt;span class="nv"&gt;AND&lt;/span&gt; &lt;span class="nv"&gt;xSDOError1&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;FALSE&lt;/span&gt; &lt;span class="k"&gt;THEN&lt;/span&gt;
            &lt;span class="nv"&gt;int1&lt;/span&gt;:&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;27&lt;/span&gt;&lt;span class="c1"&gt;;               &lt;/span&gt;
        &lt;span class="k"&gt;ELSE&lt;/span&gt; &lt;span class="nv"&gt;int1&lt;/span&gt;:&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;21&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
        &lt;span class="nv"&gt;END_IF&lt;/span&gt;

    &lt;span class="mi"&gt;21&lt;/span&gt;: &lt;span class="k"&gt;IF&lt;/span&gt; &lt;span class="nv"&gt;xSDOError1&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;FALSE&lt;/span&gt; &lt;span class="k"&gt;THEN&lt;/span&gt;
            &lt;span class="nv"&gt;int1&lt;/span&gt;:&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;19&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
        &lt;span class="k"&gt;ELSE&lt;/span&gt; &lt;span class="nv"&gt;int1&lt;/span&gt;:&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;22&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
        &lt;span class="nv"&gt;END_IF&lt;/span&gt;

    &lt;span class="mi"&gt;22&lt;/span&gt;: &lt;span class="nv"&gt;xSDOEnable&lt;/span&gt;:&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;TRUE&lt;/span&gt;&lt;span class="c1"&gt;;       &lt;/span&gt;
        &lt;span class="nv"&gt;xErrorCounter&lt;/span&gt;:&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;xErrorCounter&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
        &lt;span class="k"&gt;IF&lt;/span&gt; &lt;span class="nv"&gt;xErrorCounter&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt; &lt;span class="k"&gt;THEN&lt;/span&gt;
            &lt;span class="nv"&gt;int1&lt;/span&gt;:&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;199&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
            &lt;span class="k"&gt;ELSE&lt;/span&gt; &lt;span class="nv"&gt;int1&lt;/span&gt;:&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;24&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
        &lt;span class="nv"&gt;END_IF&lt;/span&gt;

    &lt;span class="mi"&gt;24&lt;/span&gt;:    &lt;span class="k"&gt;IF&lt;/span&gt;   &lt;span class="nv"&gt;xSDOEnable&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;FALSE&lt;/span&gt; &lt;span class="k"&gt;THEN&lt;/span&gt;
        &lt;span class="nv"&gt;int1&lt;/span&gt;:&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;22&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
        &lt;span class="nv"&gt;END_IF&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;END_CASE&lt;/p&gt;
&lt;p&gt;My task for this is 3ms. And I'll be happy to solve this with delayed FOR loop solution, based on buscyle time.&lt;/p&gt;
&lt;p&gt;Any ideas?&lt;/p&gt;
&lt;p&gt;regards,&lt;br/&gt;
Alex&lt;/p&gt;&lt;/div&gt;</summary></entry></feed>