Files
HundM_Fortna/=A01+UH01-KF00/Programmbausteine/970_Visu/FB_LaengenmessungAI.scl
T

60 lines
1.9 KiB
Plaintext

FUNCTION_BLOCK "FB_LaengenmessungAI"
{ S7_Optimized_Access := 'TRUE' }
VERSION : 0.1
VAR_INPUT
udt_LetzteMessung : "udt_LengtMeasurementHMI";
END_VAR
VAR_IN_OUT
udt_LengthMeasurementHMI : Array[0..9] of "udt_LengtMeasurementHMI";
xInOutClear : Bool;
END_VAR
VAR
Lrtrig_S_SchiebenUm1 {InstructionName := 'R_TRIG'; LibVersion := '1.0'; S7_SetPoint := 'False'} : R_TRIG;
Li_S_IndexSchieberegister { S7_SetPoint := 'True'} : Int;
END_VAR
VAR_TEMP
udt_LengthMeasurementHMI_leer : Array[0..9] of "udt_LengtMeasurementHMI";
END_VAR
BEGIN
REGION Info
(* ------------------------------------------------------------------------------------------------
Modulname : FB_LaengenmessungAI
Date : 20.10.2025
Author : Kannler Thomas / Automated-Intelligence
Info : FB für die Visualisierung der letzten 10 Messungen
ChangeLog: :
---------------------------------------------------------------------------------------------- *)
END_REGION
REGION Flankenauswertung
#Lrtrig_S_SchiebenUm1(CLK := #udt_LetzteMessung <> #udt_LengthMeasurementHMI[0]);
END_REGION
REGION Schieberegister
IF #Lrtrig_S_SchiebenUm1.Q THEN
// Von vorne nach hinten schieben: 8 -> 9, 7 -> 8, 6 -> 7, ..., 0 -> 1
FOR #Li_S_IndexSchieberegister := 9 TO 1 BY -1 DO
#udt_LengthMeasurementHMI[#Li_S_IndexSchieberegister] := #udt_LengthMeasurementHMI[#Li_S_IndexSchieberegister - 1];
END_FOR;
// Neuen Datensatz vorne an Index 0 speichern
#udt_LengthMeasurementHMI[0] := #udt_LetzteMessung;
END_IF;
END_REGION
REGION Liste leeren
IF #xInOutClear THEN
#xInOutClear := FALSE;
#udt_LengthMeasurementHMI := #udt_LengthMeasurementHMI_leer;
END_IF;
END_REGION
END_FUNCTION_BLOCK