Files
HundM_Fortna/=A01+UH01-KF00/Programmbausteine/200_MFR/FC_ClearJam.scl
T

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