Befehl CALC ruft Baustein unabhängig von der Bedingung auf

Betrifft welche Produkte?
ESP-DDS2-x (Drive PLC Developer Studio V1.x, 2.x)

Wie sieht die Reaktion aus?
Mit dem Befehl CALC sollte in der Programmiersprache Anweisungsliste (AWL) die Instanz eines Funktionsblocks aufgerufen werden, wenn das Ergebnis des vorhergehenden Ausdrucks TRUE ist. Der Aufruf der Instanz erfolgt aber unabhängig vom Ergebnis des vorhergehenden Ausdrucks.

Wann tritt das Problem auf?
Beim Aufruf der Instanz eines Funktionsblocks mit dem Befehl CALC können den Parametern des Funktionsblocks (dessen Eingängen) in Klammern die gewünschten Werte zugewiesen werden. Der Aufruf der Instanz erfolgt in Abhängigkeit von dem Wert, der dem letzten Eingang zugewiesen wird. D. h. ist das Zuweisungsergebnis 0, dann wird der Baustein nicht aufgerufen ansonsten wird er aufgerufen.

Beispiel:
LD bEnable
CALC CTU1 (CU:=bCountUp, RESET:=bReset, PV:=nCounterLimit)
LD CTU1.CV
ST nResult

Unabhängig von der booleschen Variablen bEnable zählt die Instanz des Bausteins CTU bei jeder Flanke an Eingang CU um eins hoch, wenn die Variable nCounterLimit (und damit der Bausteineingang PV ungleich 0 ist).

Diagnosemöglichkeiten?
keine

Kurzfristige Maßnahmen/Empfehlungen?
Ersetzen Sie den Befehl CALC durch CAL und realisieren Sie die bedingte Abarbeitung des Bausteins mit einem Sprungbefehl.

Beispiel:
LD bEnable
JMPCN NoCount
CAL CTU1 (CU:=bCountUp, RESET:=bReset, PV:=nCounterLimit)
LD CTU1.CV
ST nResult
NoCount:

Bewertung:
Bei dem Befehl CALC wird nicht die richtige Bedingung für den Aufruf eines Bausteins ausgewertet. Spätestens bei der Inbetriebnahme kann diese Funktionseinschränkung erkannt werden.

URL zur Verlinkung dieses AKB-Artikels: https://www.lenze.com/de-de/go/akb/200600620/0/
Contact form