54 lines
1.3 KiB
Plaintext
54 lines
1.3 KiB
Plaintext
FUNCTION "FC_ClearJam" : Void
|
|
{ S7_Optimized_Access := 'TRUE' }
|
|
VERSION : 0.1
|
|
VAR_INPUT
|
|
xInLocked : Bool; // Bedingung, damit diese Funktion ausgeführt wird
|
|
END_VAR
|
|
|
|
VAR_IN_OUT
|
|
arInOutJam : Array[*] of "stCarrier"; // Zu manipulierende Jam Daten
|
|
xInOutStart : Bool; // Start befehlt
|
|
END_VAR
|
|
|
|
VAR_TEMP
|
|
tmpEmptyCarr : "stCarrier"; // Leere Carrier Struktur
|
|
nCounter : DInt;
|
|
nArrayMax : Int;
|
|
nIdx : Int;
|
|
nStatus : Int;
|
|
xResult : Bool;
|
|
END_VAR
|
|
|
|
|
|
BEGIN
|
|
(*
|
|
FC löscht alle Carrierdaten für den verschaltenen Jam
|
|
|
|
Man könnte optional noch einbauen, das man eine bestimmte Position löschen kann
|
|
*)
|
|
|
|
#nArrayMax := DINT_TO_INT(UPPER_BOUND(ARR := #arInOutJam, DIM := 1));
|
|
|
|
REGION Returnbedingung
|
|
IF NOT #arInOutJam[1].bStatus.%X0 OR NOT #xInLocked THEN
|
|
#xInOutStart := FALSE;
|
|
RETURN;
|
|
END_IF;
|
|
END_REGION
|
|
|
|
REGION Funktion ausführen
|
|
IF #xInOutStart THEN
|
|
FOR #nIdx := 1 TO #nArrayMax DO
|
|
IF #arInOutJam[#nIdx].bStatus.%X0 THEN
|
|
#arInOutJam[#nIdx] := #tmpEmptyCarr; // Carrierdaten löschen/überschreiben
|
|
ELSE
|
|
EXIT; //fertig, nichts mehr zu tun
|
|
END_IF;
|
|
END_FOR;
|
|
#xInOutStart := FALSE;
|
|
END_IF;
|
|
END_REGION
|
|
|
|
END_FUNCTION
|
|
|