Step 7 SCL Beispiel, toggeln einer Variable bei einer IF Abfrage

Snowjek

Level-1
Beiträge
2
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,
ich habe ein einfaches Beispiel in SCL vorliegen und verstehe nicht warum die Variable tunaimmer zwischen FALSE und TRUE springt. Somit ändert sich das Ergebnis der Ausgangs variable zwischen 1 und 2, wenn die Variable varinput TRUE ist. Kann mir jemand das erklären?
FUNCTION FC13 :VOID


VAR_INPUT
inputvar :BOOL;
END_VAR


VAR_OUTPUT
result :REAL;
END_VAR


VAR
tuna :BOOL;


END_VAR


BEGIN
IF inputvar AND NOT tuna
THEN
result:= SQRT(2+2);
ELSE
result:=1;
END_IF;
tuna:= inputvar;


END_FUNCTION
 
Du hast eine Function - da liegen VAR-Variablen (also Deine tuna) in TEMP und können sich nichts über die Laufzeit der Function hinaus merken, bei jedem Aufruf der Function haben sie zunächst einen unbestimmten, quasi zufälligen Inhalt. Wenn sich Deine Variable tuna etwas merken soll, dann muß der Wert außerhalb der Function in einer INOUT-Variable gespeichert werden. Oder Du mußt die Function in einen Function_Block umwandeln, dann kann sich tuna den Wert in der STAT-Instanz merken.

Harald
 
Zurück
Oben