Hallo Oscat nutzer
Des öfteren benötige ich ein Zufallstimer um die Funtion einer Maschine zu testen.
Durch verwenden von Oscat Bausteine habe ich mir so ein Timer zusammengebaut den ich auch wieder zu vergung stellen möchte.
Vielecht benötigen ja andere so ein Baustein. Wenn ja wäre es dann ja auch was für die Lib.
FUNCTION_BLOCK RDMTimer
###############################################################################
Ersteller / author : J.Schohaus
Datum / date: 13.07.2007
###############################################################################
Änderungen / Datum / Ersteller :
moditication / date / author :
###############################################################################
Verwendete Bibliotheken ( * werden im Baustein nicht benötigt )
Oscat.lib
###############################################################################
Beschreibung:
*)
VAR CONSTANT
V01_01_01: INT := 0 ;
END_VAR
VAR_INPUT
Enable : BOOL := TRUE ;
Min_Time_ms : TIME := t#1s ; (* min Taktzeit *)
Max_Time_ms : TIME := t#1.2s ; (* Max Taktzeit *)
TP_Q : TIME := t#100ms ; (* Zeit Ausgang auf TRUE *)
END_VAR
VAR_OUTPUT
xQ : BOOL ;
END_VAR
VAR
(* Taktgenerator Simulation *)
tonRDMTimer : TON ; (* Zeitbaustein Taktgenerator *)
tof_xQ : TOF ; (* Ausschaltverzögerung Taktgenerator *)
tRDMTime : TIME ; (* Sollzeit *)
rRDMTime : REAL ; (* Zufalswert Timer *)
END_VAR
(*##########################################################################
Taktgeber für Simulation
###########################################################################*)
(* Simulation *)
tonRDMTimer ( IN:= Enable , PT:= tRDMTime );
tof_xQ ( IN:= xQ , PT:= TP_Q );
IF tof_xQ.q THEN
xQ := FALSE ;
END_IF
IF tonRDMTimer.Q THEN
xQ := TRUE ;
rRDMTime := RDM ( last:= rRDMTime ) ;
tRDMTime := REAL_TO_TIME ( rRDMTime * TIME_TO_DINT( Max_Time_ms - Min_Time_ms ) + TIME_TO_DINT(Min_Time_ms )) ;
tonRDMTimer ( IN:= FALSE );
END_IF