<?xml version="1.0" encoding="utf-8"?>
<feed xml:lang="en" xmlns="http://www.w3.org/2005/Atom"><title>Recent posts to Funktionsblock mehrfach innerhalb einer Schleife verwendbar?</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/afc30b0771/" rel="alternate"/><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/afc30b0771/feed.atom" rel="self"/><id>https://forge.codesys.com/forge/talk/Deutsch/thread/afc30b0771/</id><updated>2020-02-28T11:14:48.337000Z</updated><subtitle>Recent posts to Funktionsblock mehrfach innerhalb einer Schleife verwendbar?</subtitle><entry><title>Funktionsblock mehrfach innerhalb einer Schleife verwendbar?</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/afc30b0771/?limit=25#1c90" rel="alternate"/><published>2020-02-28T11:14:48.337000Z</published><updated>2020-02-28T11:14:48.337000Z</updated><author><name>Chräshe</name><uri>https://forge.codesys.com/u/chraeshe/</uri></author><id>https://forge.codesys.com0b939ee73d85bae62bc6c19359adcca65eb83170</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Hallo mwatermann,&lt;/p&gt;
&lt;p&gt;hab ich das richtig verstanden, es sollen bei 128 Bit die Flanken ausgewertet werden?&lt;/p&gt;
&lt;p&gt;Da kann ich zur Entlastung der Steuerung und Übersicht des Programms nur eine Wortverarbeitung empfehlen! &lt;/p&gt;
&lt;p&gt;So wie die Flanken eines Bits ausgewertet werden, kann z.B. auch ein Doppelwort auf Änderung abgefragt werden. &lt;/p&gt;
&lt;p&gt;Mit 4 Doppelworten Eingansseitig kann dies gelöst werden.&lt;/p&gt;
&lt;p&gt;Gruß&lt;/p&gt;
&lt;p&gt;Chräshe&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>Funktionsblock mehrfach innerhalb einer Schleife verwendbar?</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/afc30b0771/?limit=25#bf8c" rel="alternate"/><published>2020-02-28T11:14:45.671000Z</published><updated>2020-02-28T11:14:45.671000Z</updated><author><name>mwatermann</name><uri>https://forge.codesys.com/u/mwatermann/</uri></author><id>https://forge.codesys.coma4e94ecd9107effed2022e155e8e554d78b8d746</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;guten morgen und vielen dank.&lt;/p&gt;
&lt;p&gt;das hat die sache recht gut geklärt; es war nicht bekannt, dass man FB's auch als array instanzieren kann.&lt;/p&gt;
&lt;p&gt;somit lässt es sich recht einfach anlegen und dann auch in der for-schleife ausführen.&lt;/p&gt;
&lt;p&gt;merkwürdig war nur, dass bei den tests, die erste schleife mit dem R_TRIG block funktioniert hat und die F_TRIG danach nicht... aber das war vermutlich ein fehler beim testen...&lt;/p&gt;
&lt;p&gt;danke euch noch mal!&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>Funktionsblock mehrfach innerhalb einer Schleife verwendbar?</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/afc30b0771/?limit=25#b0a2" rel="alternate"/><published>2020-02-28T11:14:38.566000Z</published><updated>2020-02-28T11:14:38.566000Z</updated><author><name>Rolf-Geisler</name><uri>https://forge.codesys.com/u/rolf-geisler/</uri></author><id>https://forge.codesys.comcdac7bc1f790af8083d771b1db99f10c202b26a1</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Hallo,&lt;/p&gt;
&lt;p&gt;will das Problem am Beispiel von R_TRIG noch mal in Ruhe auseinandernehmen.&lt;/p&gt;
&lt;p&gt;In der Ursprungskonstruktion rufst Du eine Einzelinstanz von R_TRIG oder F_TRIG 128 mal nacheinander auf. Dem Eingang CLK übergibst Du ein Bit aus einem Array. &lt;/p&gt;
&lt;p&gt;Mögliche Fälle:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Bit&lt;span&gt;[i]&lt;/span&gt; ist dauerhaft FALSE und Bit&lt;span&gt;[i+1]&lt;/span&gt; dauerhaft TRUE: der Baustein gibt beim Schleifenwert i+1 &lt;span style="color: underline;"&gt;TRUE&lt;/span&gt; aus, weil Deine R_TRIG-Einzelinstanz eine Flanke gefunden hat. Intern steht nämlich das Vergleichsflag noch auf dem Zustand von Bit&lt;span&gt;[i]&lt;/span&gt;, der beim vorigen Schleifendurchlauf übergeben wurde.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Bit&lt;span&gt;[i]&lt;/span&gt; ist dauerhaft TRUE und Bit&lt;span&gt;[i+1]&lt;/span&gt; wird gerade TRUE: der Baustein gibt beim Schleifenwert i+1 &lt;span style="color: underline;"&gt;NICHTS&lt;/span&gt; aus, denn das interne Vergleichsflag steht auf dem Zustand von Bit&lt;span&gt;[i]&lt;/span&gt;, und das hat den gleichen Wert wie das soeben nach TRUE gewechselte Bit&lt;span&gt;[i+1]&lt;/span&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Beide Lösungsvorschläge von Jochen Schohaus vermeiden das Problem, weil für jedes Bit aus dem Array ein eigener Referenzwert existiert (entweder als separate Bausteininstanz in den Arrays r_trig_array und f_trig_array oder als separater Flankenmerker im Array TasteTrig.&lt;/p&gt;
&lt;p&gt;Rolf&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>Funktionsblock mehrfach innerhalb einer Schleife verwendbar?</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/afc30b0771/?limit=25#46f9" rel="alternate"/><published>2020-02-28T11:14:35.993000Z</published><updated>2020-02-28T11:14:35.993000Z</updated><author><name>J Schohaus</name><uri>https://forge.codesys.com/u/j-schohaus/</uri></author><id>https://forge.codesys.com2d47afe2129ccc2e9286e998c4dab2c47ba98924</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Hallo&lt;/p&gt;
&lt;p&gt;Dein Vorhaben kann nur scheitern da zur identifizierung der Flanke eine Variable existieren muss wo der alte zustand enthalten ist.&lt;/p&gt;
&lt;p&gt;Auch deine R_Trig wird nicht richtig funktionieren, er wird solange TRUE&lt;/p&gt;
&lt;p&gt;an deiner Variable ist auch TRUE am Ausgang haben (bei aufruf des index).&lt;/p&gt;
&lt;p&gt;Zur Lösung :&lt;/p&gt;
&lt;p&gt;Leg die Instanzen von R_Trig und F_Trig als ARRAY an.&lt;/p&gt;
&lt;p&gt;z.B.&lt;/p&gt;
&lt;p&gt;r_trig_array : ARRAY &lt;span&gt;[0..128]&lt;/span&gt; OF R_TRIG ;&lt;/p&gt;
&lt;p&gt;f_trig_array : ARRAY &lt;span&gt;[0..128]&lt;/span&gt; OF R_TRIG ;&lt;/p&gt;
&lt;p&gt;dann läst sich in der Schleife deine Instanz einfach durch dein index Aufrufen&lt;/p&gt;
&lt;p&gt;z.B.&lt;/p&gt;
&lt;p&gt;For schleife := 1 to 128 do&lt;/p&gt;
&lt;p&gt;r_trig_array&lt;span&gt;[schleife]&lt;/span&gt; (CLK:= Taste&lt;span&gt;[schleife]&lt;/span&gt; , Q=&amp;gt; qTrig&lt;span&gt;[schleife]&lt;/span&gt; );&lt;/p&gt;
&lt;p&gt;end_for&lt;/p&gt;
&lt;p&gt;Flanken lassen sich allerdings auch einfacher auswerten&lt;/p&gt;
&lt;p&gt;z.B.&lt;/p&gt;
&lt;p&gt;Taste : Array&lt;span&gt;[0..128]&lt;/span&gt; OF BOOL ;&lt;/p&gt;
&lt;p&gt;TasteTrig : Array&lt;span&gt;[0..128]&lt;/span&gt; OF BOOL ;&lt;/p&gt;
&lt;p&gt;FOR schleife:= 1 to 128 do&lt;/p&gt;
&lt;p&gt;IF Taste&lt;span&gt;[schleife]&lt;/span&gt; AND NOT TasteTrig&lt;span&gt;[schleife]&lt;/span&gt; THEN&lt;/p&gt;
&lt;p&gt;(&lt;em&gt; Trigger auf Positive &lt;/em&gt;)&lt;/p&gt;
&lt;p&gt;END_IF&lt;/p&gt;
&lt;p&gt;IF NOT Taste&lt;span&gt;[schleife]&lt;/span&gt; AND TasteTrig&lt;span&gt;[schleife]&lt;/span&gt; THEN&lt;/p&gt;
&lt;p&gt;(&lt;em&gt; Trigger auf Negative &lt;/em&gt;)&lt;/p&gt;
&lt;p&gt;END_IF&lt;/p&gt;
&lt;p&gt;Taste&lt;span&gt;[schleife]&lt;/span&gt; := Tastetrig&lt;span&gt;[schleife]&lt;/span&gt; ;&lt;/p&gt;
&lt;p&gt;end_for&lt;/p&gt;
&lt;p&gt;Gruß Jochen Schohaus&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>Funktionsblock mehrfach innerhalb einer Schleife verwendbar?</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/afc30b0771/?limit=25#135f" rel="alternate"/><published>2020-02-28T11:14:33.398000Z</published><updated>2020-02-28T11:14:33.398000Z</updated><author><name>mwatermann</name><uri>https://forge.codesys.com/u/mwatermann/</uri></author><id>https://forge.codesys.com1dd3c50266e92f9cc3e37403c8b2d588ebdcdb86</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;guten morgen,&lt;/p&gt;
&lt;p&gt;danke erst mal für die antwort.&lt;/p&gt;
&lt;p&gt;dazu:&lt;/p&gt;
&lt;p&gt;einfacher wird es dadurch eigentlich nicht; man müsste jeweils 128 FB's instanzieren und auch einzeln aufrufen.&lt;/p&gt;
&lt;p&gt;mit der FOR schleife geht es folgendermaßen: die zählvariable der FOR schleife gibt quasi 128 verschiedene tasten vor &lt;span&gt;[ucKey]&lt;/span&gt;, die dann innerhalb der FOR schleifen durch &lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;R_TRIG auf eine steigende und &lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;mit F_TRIG auf eine fallende flanke geprüft werden.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;bei R_TRIG funktioniert alles einwandfrei! nur bei F_TRIG klappt es nicht.&lt;/p&gt;
&lt;p&gt;wir vermuten einen bug in der F_TRIG funktion, aber leider kann man die ja nicht einsehen. kann dies sein? oder haben wir noch etwas übersehen?&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>Funktionsblock mehrfach innerhalb einer Schleife verwendbar?</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/afc30b0771/?limit=25#0396" rel="alternate"/><published>2020-02-28T11:14:26.443000Z</published><updated>2020-02-28T11:14:26.443000Z</updated><author><name>Rolf-Geisler</name><uri>https://forge.codesys.com/u/rolf-geisler/</uri></author><id>https://forge.codesys.com4ffcb7c953ca3fd2ad7cc0e5f2f342230e17b937</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Auch hallo,&lt;/p&gt;
&lt;p&gt;man darf, aber macht das überhaupt Sinn? Bei jedem Aufruf wird (bei R_TRIG und F_TRIG) das Triggersignal mit dem internen Abbild aus dem letzten Aufruf verglichen und dementsprechend der Ausgang gesetzt oder nicht.&lt;/p&gt;
&lt;p&gt;Die Konstruktion macht also nur dann Sinn, wenn sich das Triggersignal innerhalb der Schleife &lt;strong&gt;ZWISCHEN DEN BEIDEN AUFRUFEN&lt;/strong&gt; ändern kann. Tut es das auch?&lt;/p&gt;
&lt;p&gt;Besser wäre es aber aus meiner Sicht, für jeden Aufruf eine separate Instanz des FB zu verwenden. Ist leichter zu debuggen und dürfte auch später leichter zu pflegen sein ...&lt;/p&gt;
&lt;p&gt;Rolf&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>Funktionsblock mehrfach innerhalb einer Schleife verwendbar?</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/afc30b0771/?limit=25#5628" rel="alternate"/><published>2020-02-28T11:14:23.743000Z</published><updated>2020-02-28T11:14:23.743000Z</updated><author><name>mwatermann</name><uri>https://forge.codesys.com/u/mwatermann/</uri></author><id>https://forge.codesys.com8bd05347f22aa6b65f3dff2161a6dd4450cee65e</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;hallo,&lt;/p&gt;
&lt;p&gt;kurze knackige frage:&lt;/p&gt;
&lt;p&gt;darf ich ein und den selben, einfach initialisierten Funktionsblock (nicht Funktion) in einer FOR Schleife mehrfach hintereinander aufrufen?&lt;/p&gt;
&lt;p&gt;Haben das Phänomen, dass es bei es bei R_TRIG in einer for Schleife von 0-127 funktioniert und direkt danach bei F_TRIG, ebenfalls von 0-127 nicht mehr klappt (bei die gleiche zähl variable).&lt;/p&gt;&lt;/div&gt;</summary></entry></feed>