-> Hier kostenlos registrieren
Hallo zusammen,
ich habe eine Problem mit eine If-Abfrage:
Bei diesen Code bekomme ich in allen IF-Anweisungen der inneren IF-Schleifen im CASE folgende Fehlermeldungen:
==> Unzulässige Operandentypen
==> Ausdruck muss von Datentyp BOOL sein
Die Datenwörter in den DBs sind alle in INT deklariert.
vielen Dank im voraus
Frank
ich habe eine Problem mit eine If-Abfrage:
Code:
FUNCTION FC113 : VOID
VAR_TEMP
// temporäre Variablen
I:INT; // Schmiervariable in For-Schleifen
J:INT; // Schmiervariable in For-Schleifen
END_VAR
VAR_INPUT
// INPUT Variablen deklarieren
bPositionierung_starten:BOOL; // Startbefehl um die Posiitonierung zu starten
iRollendurchmesser:INT; // Rollendurchmesser des Jumbos im Abwickler
iDW_Soll:INT; // Datenwort, wo die Positionsollwerte in den DBs stehen
iDB_Zaehlerkarte:BLOCK_DB; // Datenbaustein Zählerkarte
iDW_Zaehlerkarte:INT; // Datenwort Zählerkarte, wo die Position in den DBs stehen
END_VAR
VAR_OUTPUT
// OUTPUT Variablen deklarieren
bRausfahren:BOOL; // Motor muss rausfahren
bReinfahren:BOOL; // Motor muss reinfahren
END_VAR
VAR_IN_OUT
// IN_OUTPUT Variablen deklarieren
bPosition_OK:BOOL; // Positionierung abgeschlossen, POS_OK
bPositionierung_REIN:BOOL; // Motor ist aktuell am Positionieren / REINfahren, POS_ON
bPositionierung_RAUS:BOOL; // Motor ist aktuell am Positionieren / RAUSfahren, POS_ON
END_VAR
// Anweisungsteil
CASE iRollendurchmesser OF
100..150:
IF bPositionierung_starten = true THEN
// Richtstab reinfahren starten
IF bPositionierung_REIN = false AND DB41.DW[iDW_Soll] > iDB_Zaehlerkarte.DW[iDW_Zaehlerkarte] THEN
bReinfahren := true;
bPositionierung_REIN := true;
END_IF;
// Richtstab reinfahren Position erreicht
IF bPositionierung_REIN = true AND DB41.DW[iDW_Soll] <= iDB_Zaehlerkarte.DW[iDW_Zaehlerkarte] THEN
bReinfahren := false;
bPositionierung_REIN := false;
bPosition_OK := true;
END_IF;
// Richtstab rausfahren starten
IF DB41.DW[iDW_Soll] < iDB_Zaehlerkarte.DW[iDW_Zaehlerkarte] AND bPositionierung_RAUS = false THEN
bRausfahren := true;
bPositionierung_RAUS := true;
END_IF;
// Richtstab rausfahren Position erreicht
IF bPositionierung_RAUS = true AND DB41.DW[iDW_Soll] >= iDB_Zaehlerkarte.DW[iDW_Zaehlerkarte] THEN
bRausfahren := false;
bPositionierung_RAUS := false;
bPosition_OK := true;
END_IF;
END_IF;
80..99:
;
60..79:
;
40..59:
;
1..39:
;
ELSE:
// Anweisungen_ELSE
;
END_CASE;
END_FUNCTION
Bei diesen Code bekomme ich in allen IF-Anweisungen der inneren IF-Schleifen im CASE folgende Fehlermeldungen:
==> Unzulässige Operandentypen
==> Ausdruck muss von Datentyp BOOL sein
Die Datenwörter in den DBs sind alle in INT deklariert.
vielen Dank im voraus
Frank