siehe auch STE7-Hilfe
Wichtiger Unterschied bei Ausgangsparametern von FC und FB
In Funktionsbausteinen (FB) wird beim Zugriff auf Parameter die Kopie des Aktualparameters im Instanz-DB verwendet. Wird beim Aufruf eines FB ein Eingangsparameter nicht übergegeben bzw. im Baustein ein Ausgangsparameter nicht beschrieben, so werden die im Instanz-DB noch vorhandenen älteren Werte weiter verwendet (Instanz-DB = Gedächtnis des FB).
Funktionen (FC) haben kein Gedächtnis. Die Versorgung der Formalparameter ist deshalb im Gegensatz zum FB nicht optional, sondern zwingend erforderlich. Der Zugriff auf FC-Parameter erfolgt über Adressen (bereichsübergreifende Zeiger). Wird als Aktualparameter ein Operand aus dem Bereich Daten (Datenbaustein) oder eine lokale Variable des rufenden Bausteins verwendet, wird für die Parameterübergabe eine Kopie des Aktualparameters in den Lokaldaten des rufenden Bausteins temporär gespeichert.
[TABLE="width: 498"]
[TR]
[TD="width: 11, bgcolor: white"][/TD]
[TD="width: 486"] Achtung
Wird in einem solchen Fall ein OUTPUT Parmeter in einem FC nicht beschrieben, können die ausgegebenen Werte zufällig sein!
Der für die Kopie bereitgestellte Bereich in den Lokaldaten des rufenden Bausteins wird mangels Zuweisung an den OUTPUT Parmeter nicht beschrieben und bleibt somit unverändert. Damit wird zufällig der in diesem Bereich stehende Wert ausgegeben, da Lokaldaten nicht automatisch mit z. B. 0 vorbelegt sind.[/TD]
[/TR]
[/TABLE]
Beachten Sie deshalb Folgendes:
- Initialisieren Sie wenn möglich OUTPUT Parameter.
- Setze- und Rücksetze-Befehle sind VKE-abhängig. Wird mit diesen Befehlen der Wert eines OUTPUT Parameters ermittelt, wird bei VKE = 0 kein Wert gebildet.
- Achten Sie darauf, dass - unabhängig von allen möglichen Programmpfaden innerhalb des Bausteins - die OUTPUT-Parameter auf jeden Fall beschrieben werden. Beachten Sie hierbei insbesondere Sprungbefehle sowie den ENO-Ausgang in KOP und FUP. Denken Sie auch an BEB und die Wirkung der MCR-Befehle.
[TABLE="width: 498"]
[TR]
[TD="width: 11, bgcolor: white"][/TD]
[TD="width: 486"] Hinweis
Bei OUTPUT-Parametern eines FB bzw. INOUT-Parametern eines FC und FB können die ausgegebenen Werte zwar nicht zufällig sein, da hier ohne Beschreibung des Parameters der alte Ausgangswert bzw. der Eingangswert als Ausgangswert erhalten bleibt. Dennoch sollten Sie auch hier die oben gegebenen Hinweise beachten, um nicht unbeabsichtigt "alte" Werte weiter zu verarbeiten.[/TD]
[/TR]
[/TABLE]