<?xml version="1.0" encoding="utf-8"?>
<feed xml:lang="en" xmlns="http://www.w3.org/2005/Atom"><title>Recent posts to Funktionsbaustein und Instanzen  -  erledigt</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/c5aed68d5a/" rel="alternate"/><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/c5aed68d5a/feed.atom" rel="self"/><id>https://forge.codesys.com/forge/talk/Deutsch/thread/c5aed68d5a/</id><updated>2020-02-28T05:37:19.580000Z</updated><subtitle>Recent posts to Funktionsbaustein und Instanzen  -  erledigt</subtitle><entry><title>Funktionsbaustein und Instanzen  -  erledigt</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/c5aed68d5a/?limit=25#e04a" rel="alternate"/><published>2020-02-28T05:37:19.580000Z</published><updated>2020-02-28T05:37:19.580000Z</updated><author><name>grauerwolf</name><uri>https://forge.codesys.com/u/grauerwolf/</uri></author><id>https://forge.codesys.coma54602a279df4ac4d8547e22b190eb260daa52b7</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="n"&gt;ist&lt;/span&gt; &lt;span class="n"&gt;erledigt&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;siehe&lt;/span&gt; &lt;span class="n"&gt;am&lt;/span&gt; &lt;span class="n"&gt;Ende&lt;/span&gt; &lt;span class="n"&gt;des&lt;/span&gt; &lt;span class="n"&gt;Beitrages&lt;/span&gt;&lt;span class="p"&gt;...&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Hallo zusammen,&lt;br/&gt;
ich sitze schon stundenlang am gleichen Thema - da scheine ich eine Blockade zu haben. Ich will einen Funktionsbaustein schreiben, der x-mal mit verschiedenen Parametern aufgerufen wird - eigentlich ganz normal. Ein boolscher Eingang wechselt und bei einem Wechsel wird der zugehörige Text genau einmal  in ein Logfile geschrieben. Zusätzlich wird die Flankenerkennung einen Zyklus lang nach aussen gegeben (OUTPUT_ON/OUTPUT_OFF).&lt;/p&gt;
&lt;p&gt;&lt;span&gt;[code]&lt;/span&gt;&lt;span&gt;[color=#0000FF]&lt;/span&gt;&lt;br/&gt;
FUNCTION_BLOCK Logging_bei_EIN_AUS&lt;br/&gt;
VAR_INPUT&lt;br/&gt;
    E_SIGNAL: BOOL;&lt;br/&gt;
    Text_ON: STRING;&lt;br/&gt;
    Text_OFF: STRING;&lt;br/&gt;
END_VAR&lt;/p&gt;
&lt;p&gt;VAR_OUTPUT&lt;br/&gt;
    OUTPUT_ON:BOOL;      (&lt;em&gt;Aussgabesignal nach Flankenermittlung ON  (1 Zyklus auf ON)&lt;/em&gt;)&lt;br/&gt;
    OUTPUT_OFF:BOOL;     (&lt;em&gt;Aussgabesignal nach Flankenermittlung OFF  (1 Zyklus auf ON)&lt;/em&gt;)&lt;br/&gt;
END_VAR&lt;/p&gt;
&lt;p&gt;VAR&lt;br/&gt;
    MERKE_SIGNAL:BOOL;&lt;br/&gt;
    Log_Flanke_ON:   R_TRIG;&lt;br/&gt;
    Log_Flanke_OFF:  F_TRIG;&lt;br/&gt;
        Log_eintragen: Text_Logging;   (&lt;em&gt; Textlogging ist auch ein FB, sollte hier aber keine Rolle spielen &lt;/em&gt;)&lt;br/&gt;
END_VAR&lt;/p&gt;
&lt;hr/&gt;
&lt;p&gt;Log_Flanke_ON (CLK:=E_SIGNAL);&lt;br/&gt;
Log_Flanke_OFF(CLK:=E_SIGNAL);&lt;/p&gt;
&lt;p&gt;IF Log_Flanke_ON.Q THEN&lt;br/&gt;
    Log_eintragen(log_text_input:=Text_ON);     (&lt;em&gt; Das ist der eigentliche Zweck hier &lt;/em&gt;)&lt;br/&gt;
    OUTPUT_ON:=Log_Flanke_ON.Q;   (&lt;em&gt; Erkennen der Flanken einen Zyklus lang &lt;/em&gt;)&lt;br/&gt;
END_IF;&lt;br/&gt;
IF Log_Flanke_OFF.Q THEN&lt;br/&gt;
    Log_eintragen(log_text_input:=Text_OFF);   (&lt;em&gt; Leider knallts mir die Logfiles mit vielen gleichen Einträgen zu &lt;/em&gt;)&lt;br/&gt;
    OUTPUT_OFF:=Log_Flanke_OFF.Q;&lt;br/&gt;
END_IF;&lt;/p&gt;
&lt;p&gt;-----------------------&lt;span&gt;[/color]&lt;/span&gt;&lt;span&gt;[/code]&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Er soll dazu dienen, beim Wechsel des Zustandes eines boolschen Eingabesignals genau einmal pro Wechsel einen Logging-Eintrag zu machen.&lt;/p&gt;
&lt;p&gt;Mein Problem ist, das die Signale Log_Flanke_ON.Q und Log_Flanke_OFF.Q bei der Anordnung von mehreren Aufrufen hintereinander nicht nur einen Zyklus auf ON gehen, sondern dort bleiben, und zwar dann, wenn der Eingang eines Aufrufes nicht identisch mit dem des nächsten Aufrufes ist. Also die F_TRIG/R_TRIG-Funktionalität ausser Kraft gesetzt ist . &lt;/p&gt;
&lt;p&gt;Debuggt man das Ganze, erkennt man, das die Flags Log_Flanke_ON.M bzw. Log_Flanke_OFF.Q  nicht gemerkt werden und damit bei weiteren Zyklen auf TRUE stehen bleiben - total entgegen meinem Wunsche. &lt;/p&gt;
&lt;p&gt;Das Ganze wiederspricht doch dem Instanzen-Gedanken, daß sich Variable "gemerkt" werden.&lt;/p&gt;
&lt;p&gt;Wo habe ich denn da den Denkfehler... &lt;/p&gt;
&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;ich hatte nur eine Instanz definiert und die 4mal aufgerufen. Jetzt hat jeder Aufruf seinen eigenen Instanznamen - und siehe da ... es funktioniert !!!   &amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;    &lt;/p&gt;
&lt;/blockquote&gt;
&lt;/blockquote&gt;
&lt;/blockquote&gt;
&lt;/blockquote&gt;
&lt;p&gt;Viele Grüße&lt;br/&gt;
Thomas&lt;/p&gt;&lt;/div&gt;</summary></entry></feed>