<?xml version="1.0" encoding="utf-8"?>
<feed xml:lang="en" xmlns="http://www.w3.org/2005/Atom"><title>Recent posts to AS: Aktion mit P Qualifier nur einmal ausführen</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/8339412db7/" rel="alternate"/><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/8339412db7/feed.atom" rel="self"/><id>https://forge.codesys.com/forge/talk/Deutsch/thread/8339412db7/</id><updated>2020-02-28T05:00:58.698000Z</updated><subtitle>Recent posts to AS: Aktion mit P Qualifier nur einmal ausführen</subtitle><entry><title>AS: Aktion mit P Qualifier nur einmal ausführen</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/8339412db7/?limit=25#6809" rel="alternate"/><published>2020-02-28T05:00:58.698000Z</published><updated>2020-02-28T05:00:58.698000Z</updated><author><name>Michael Hulsch</name><uri>https://forge.codesys.com/u/michael-hulsch/</uri></author><id>https://forge.codesys.com7538809a80ab3943480b8040c2a7436eb2d89b3c</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;pischky hat geschrieben:&lt;/strong&gt;&lt;br/&gt;
Also ist &lt;code&gt;SetReset._x&lt;/code&gt; gleichbedeutend mit &lt;code&gt;SetReset.AC.Q&lt;/code&gt; ?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Nein, nicht ganz! Der ActionControl selbst weis nichts von der Nachbearbeitung. Der regelt nur ob oder ob nicht bearbeitet wird, in dem der Action.Q im ersten Aktionsscann auf den &amp;lt;aktionsname&amp;gt;.x kopiert wird und im zweiten Scann auf den &amp;lt;aktionsname&amp;gt;._x.&amp;lt;/aktionsname&amp;gt;&amp;lt;/aktionsname&amp;gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;pischky hat geschrieben:&lt;/strong&gt;&lt;br/&gt;
Und der ActionControl-FB ist der SFCActionControl aus Iecsfc.lib ?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Ja.&lt;/p&gt;
&lt;p&gt;Gruß&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>AS: Aktion mit P Qualifier nur einmal ausführen</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/8339412db7/?limit=25#90fc" rel="alternate"/><published>2020-02-28T05:00:52.671000Z</published><updated>2020-02-28T05:00:52.671000Z</updated><author><name>pischky</name><uri>https://forge.codesys.com/u/pischky/</uri></author><id>https://forge.codesys.com13d6223eca8137ed5c62dbe55bcb3c533ceb2c6b</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Also ist ```&lt;/p&gt;
&lt;p&gt;SetReset._x&lt;/p&gt;
&lt;p&gt;&lt;code&gt;gleichbedeutend mit&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;SetReset.AC.Q&lt;/p&gt;
&lt;p&gt;``` ?&lt;/p&gt;
&lt;p&gt;Und der ActionControl-FB ist der SFCActionControl aus Iecsfc.lib ?&lt;/p&gt;
&lt;p&gt;Sehr interessant...&lt;/p&gt;
&lt;p&gt;Gruß&lt;/p&gt;
&lt;p&gt;Martin&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>AS: Aktion mit P Qualifier nur einmal ausführen</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/8339412db7/?limit=25#3091" rel="alternate"/><published>2020-02-28T05:00:50.498000Z</published><updated>2020-02-28T05:00:50.498000Z</updated><author><name>Michael Hulsch</name><uri>https://forge.codesys.com/u/michael-hulsch/</uri></author><id>https://forge.codesys.com4ba17fe4ea3ed720b732c17e8b1459cbcb0e90e5</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;pischky hat geschrieben:&lt;/strong&gt;&lt;br/&gt;
Mit "Action-Q" ist der Aktionsmerker (Q-Ausgang) gemeint. Oder?&lt;br/&gt;
Gruß&lt;br/&gt;
Martin&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Richtig. Den gibt es sogar auch bei CoDeSys, so wie es den ActionControl-FB gibt, aber hat definitiv nicht die gleiche Wirkung, da dem ActionControl-Baustein der "A"-Ausgang fehlt.&lt;/p&gt;
&lt;p&gt;Die Aktionen im SFC werden zwei mal pro Zyklus "gescannt", d.h. die Aktionen, bzw. der ActionControl der Aktionen im Bausteintree werden in alphabetischer Reihenfolge zwei mal bearbeitet. Im ersten Durchlauf werden die Aktionen bearbeitet die sich in der Nachbearbeitung befinden (&amp;lt;aktionsname&amp;gt;.X ist TRUE) und im zweiten Durchlauf die aktiven (&amp;lt;aktionsname&amp;gt;._X ist TRUE). Innerhalb der Aktion ist der &amp;lt;aktionsname&amp;gt;._X nur in der Nachbearbeitungsphase für einen Zyklus FALSE.&amp;lt;/aktionsname&amp;gt;&amp;lt;/aktionsname&amp;gt;&amp;lt;/aktionsname&amp;gt;&lt;/p&gt;
&lt;p&gt;Die sichtbare Aktionsreihenfolge am Schritt hat also absolut nichts mit der wirklichen Reihenfolge zu tun, wenn sie nicht zufällig in der Reihenfolge ist wie im Baum! Und man sollte beachten das eine Aktion auch nur einmal pro SPS-Zyklus bearbeitet wird, auch wenn sie an mehreren parallelen Schritten gleichzeitig hängt - das Licht wird ja auch nicht heller, wenn man es an zwei Schaltern gleichzeitig anschaltet  &lt;/p&gt;
&lt;p&gt;Gruß&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>AS: Aktion mit P Qualifier nur einmal ausführen</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/8339412db7/?limit=25#6c15" rel="alternate"/><published>2020-02-28T05:00:48.344000Z</published><updated>2020-02-28T05:00:48.344000Z</updated><author><name>pischky</name><uri>https://forge.codesys.com/u/pischky/</uri></author><id>https://forge.codesys.comfdf266e2fdf94ef90a6fc9a839f57586c77e9365</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Michael Hulsch hat geschrieben:&lt;/strong&gt;&lt;br/&gt;
Die IEC würde den Action-Q nehmen, den es aber so bei 3S nicht gibt. Die Funktion des Action-Q übernimmt hier der &amp;lt;aktionsname&amp;gt;._x. Man sollte dieses Flag NICHT beschreiben - darin sehe ich die Einschränkung!&amp;lt;/aktionsname&amp;gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Hallo, &lt;/p&gt;
&lt;p&gt;Danke für die genaue Erläuterung. &lt;/p&gt;
&lt;p&gt;Ich habe das jetzt in einer Applikation mit &amp;lt;aktionsname&amp;gt;._x am laufen. Kein Problem soweit.&amp;lt;/aktionsname&amp;gt;&lt;/p&gt;
&lt;p&gt;Mit "Action-Q" ist der Aktionsmerker (Q-Ausgang) gemeint. Oder?&lt;/p&gt;
&lt;p&gt;Gruß&lt;/p&gt;
&lt;p&gt;Martin&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>AS: Aktion mit P Qualifier nur einmal ausführen</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/8339412db7/?limit=25#0863" rel="alternate"/><published>2020-02-28T05:00:42.448000Z</published><updated>2020-02-28T05:00:42.448000Z</updated><author><name>Michael Hulsch</name><uri>https://forge.codesys.com/u/michael-hulsch/</uri></author><id>https://forge.codesys.com461da32815b0321b30464b96554cdfae7fee2a8e</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;pischky hat geschrieben:&lt;/strong&gt;&lt;br/&gt;
2.) Ich habe beim Debuggen gesehen das SetReset._x = FALSE ist beim zweiten Durchlauf. Also sollte auch&lt;br/&gt;
&lt;span&gt;[code]&lt;/span&gt;IF SetReset._x THEN&lt;br/&gt;
    ;; (&lt;em&gt;dieses hier soll nur einmal durchlaufen werden&lt;/em&gt;)&lt;br/&gt;
END_IF;&lt;br/&gt;
funktionieren. Laut Handbuch ist aber SetReset._x bei IEC-Aktionen nur für "interne Zwecke".&lt;br/&gt;
Was ist den die bessere Lösung?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Die IEC würde den Action-Q nehmen, den es aber so bei 3S nicht gibt. Die Funktion des Action-Q übernimmt hier der &amp;lt;aktionsname&amp;gt;._x. Man sollte dieses Flag NICHT beschreiben - darin sehe ich die Einschränkung!&amp;lt;/aktionsname&amp;gt;&lt;/p&gt;
&lt;p&gt;Man kann dieses Flag lesend nutzen um eben genau so etwas zu erreichen, nämlich festzustellen ob eine Aktion regulär bearbeitet wird, oder sich in der Nachbearbeitungsphase befindet.&lt;/p&gt;
&lt;p&gt;Das Gute an der IEC-SFC ist ja gerade die Nachbearbeitung der Aktionen! Es gibt einem unabhängig von der Transitionslogik die Möglichkeit des "Aufräumens". Wenn man z.B. einen Funktionsblock beschaltet, kann man einfach den &amp;lt;aktion&amp;gt;._X auf den Start-Eingang geben. Wird die Aktion aktiv, ist der &amp;lt;action&amp;gt;._X TRUE, und wenn die Aktion deaktivert wird, z.B. durch das Weiterschalten des Schrittes, wird für einen Bearbeitungszyklus der Baustein mit "FALSE" auch deaktiviert und ist bereit für den nächsten Aufruf.&amp;lt;/action&amp;gt;&amp;lt;/aktion&amp;gt;&lt;/p&gt;
&lt;p&gt;Gruß&lt;/p&gt;
&lt;p&gt;Michael&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>AS: Aktion mit P Qualifier nur einmal ausführen</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/8339412db7/?limit=25#75f8" rel="alternate"/><published>2020-02-28T05:00:40.244000Z</published><updated>2020-02-28T05:00:40.244000Z</updated><author><name>Anonymous</name><uri>https://forge.codesys.com/u/*anonymous/</uri></author><id>https://forge.codesys.com1d8067446fdee0c3c07fdae5f00f30d423bf94e1</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;&lt;em&gt;Originally created by:&lt;/em&gt; jl&lt;/p&gt;
&lt;p&gt;Hallo!&lt;/p&gt;
&lt;p&gt;Ich löse das immer mit einer boolschen Variablen die ich beim Aufrufen sofort auf TRUE setze. &lt;/p&gt;
&lt;p&gt;Beispiel:&lt;/p&gt;
&lt;p&gt;&lt;span style="color: blue;"&gt;IF NOT &lt;/span&gt;macheAktion &lt;span style="color: blue;"&gt;THEN&lt;/span&gt;&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;  &lt;span class="n"&gt;macheAktion&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;TRUE&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

  &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;Anweisungen&lt;/span&gt; &lt;span class="n"&gt;die&lt;/span&gt; &lt;span class="n"&gt;Ausgef&lt;/span&gt;&lt;span class="err"&gt;ü&lt;/span&gt;&lt;span class="n"&gt;hrt&lt;/span&gt; &lt;span class="n"&gt;werden&lt;/span&gt; &lt;span class="n"&gt;sollen&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;&lt;span style="color: blue;"&gt;END_IF&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Wenn die Anweisungen nochmal ausgeführt werden sollen, einfach Variable wieder auf FALSE setzen&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>AS: Aktion mit P Qualifier nur einmal ausführen</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/8339412db7/?limit=25#2ce9" rel="alternate"/><published>2020-02-28T05:00:34.418000Z</published><updated>2020-02-28T05:00:34.418000Z</updated><author><name>pischky</name><uri>https://forge.codesys.com/u/pischky/</uri></author><id>https://forge.codesys.comec2528d11192904f48dfdfeb8b761d3c8dbca9c4</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Ich stelle beim Testen gerade fest: Lösung 1 funktioniert nur beim ersten Durchlauf nach dem Starten. "setResetTrg" wird ja nicht in jedem Zyklus berechnet &lt;/p&gt;
&lt;p&gt;Gibt es keine elegante Lösung?&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>AS: Aktion mit P Qualifier nur einmal ausführen</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/8339412db7/?limit=25#fd2c" rel="alternate"/><published>2020-02-28T05:00:32.328000Z</published><updated>2020-02-28T05:00:32.328000Z</updated><author><name>pischky</name><uri>https://forge.codesys.com/u/pischky/</uri></author><id>https://forge.codesys.com848853a6c18d3809a917f32f2d88cc9517a27b66</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Hallo,&lt;/p&gt;
&lt;p&gt;erst mal Danke für die Hilfe bei den anderen (blöden) Fragen.&lt;/p&gt;
&lt;p&gt;Hier ist noch eine:&lt;/p&gt;
&lt;p&gt;Ich Programmiere eine Ablaufsteuerung mit IEC-Schritten und habe eine Aktion mit dem Qualifier "P" (Pulse). Diese wird ja nach Doku auch bei Deaktivierung noch einmal (also insgesamt zweimal) ausgeführt (-&amp;gt; 2.2.3 im Handbuch CoDeSys 2.3). Ich will aber sicherstellen das mein Programm-Stück nur einmal durchlaufen wird. Zwei Möglichkeiten:&lt;/p&gt;
&lt;p&gt;1.) Ich definiere ein "setResetTrg : R_TRIG" und schreibe in der Aktion (Name der Aktion ist "SetReset"):&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nv"&gt;setResetTrg&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt; &lt;span class="nv"&gt;CLK&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;SetReset&lt;/span&gt;.&lt;span class="nv"&gt;x&lt;/span&gt; &lt;span class="ss"&gt;)&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;setResetTrg&lt;/span&gt;.&lt;span class="nv"&gt;Q&lt;/span&gt; &lt;span class="k"&gt;THEN&lt;/span&gt;
   &lt;span class="c1"&gt;;; (*dieses hier soll nur einmal durchlaufen werden*)&lt;/span&gt;
&lt;span class="nv"&gt;END_IF&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;2.) Ich habe beim Debuggen gesehen das SetReset._x = FALSE ist beim zweiten Durchlauf. Also sollte auch&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="k"&gt;IF&lt;/span&gt; &lt;span class="nv"&gt;SetReset&lt;/span&gt;.&lt;span class="nv"&gt;_x&lt;/span&gt; &lt;span class="k"&gt;THEN&lt;/span&gt;
   &lt;span class="c1"&gt;;; (*dieses hier soll nur einmal durchlaufen werden*)&lt;/span&gt;
&lt;span class="nv"&gt;END_IF&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;funktionieren. Laut Handbuch ist aber SetReset._x bei IEC-Aktionen nur für "interne Zwecke".&lt;/p&gt;
&lt;p&gt;Was ist den die bessere Lösung?&lt;/p&gt;
&lt;p&gt;Gruß&lt;/p&gt;
&lt;p&gt;Martin&lt;/p&gt;&lt;/div&gt;</summary></entry></feed>