Files
2026-06-29 16:29:41 +02:00

51 lines
1.2 KiB
Plaintext

FUNCTION "FC_TSHR_Shift" : Void
{ S7_Optimized_Access := 'TRUE' }
VERSION : 0.1
VAR_INPUT
xInShiftBack : Bool;
END_VAR
VAR_IN_OUT
arTSHR : Array[*] of "stCarrier";
END_VAR
VAR_TEMP
tStatus : Int;
tStatusSim : Int;
tSrcIdx : DInt;
tDestIdx : DInt;
nArrayMax : DInt;
stEmptyCarrier : "stCarrier"; // Carrier mit leeren Daten
END_VAR
VAR CONSTANT
Constant_1 {InstructionName := 'DTL'; LibVersion := '1.0'} : DTL;
END_VAR
BEGIN
#nArrayMax := UPPER_BOUND(ARR := #arTSHR, DIM := 1); // get array size
IF #xInShiftBack THEN // move backward
#tSrcIdx := 1;
#tDestIdx := 0;
ELSE // move forward
#tSrcIdx := 0;
#tDestIdx := 1;
END_IF;
#tStatus := MOVE_BLK_VARIANT(SRC := #arTSHR,
COUNT := DINT_TO_UDINT(#nArrayMax-1),
SRC_INDEX := #tSrcIdx,
DEST_INDEX := #tDestIdx,
DEST => #arTSHR);
#arTSHR[#nArrayMax] := #stEmptyCarrier;
END_FUNCTION