oscat.lib > Modulentwicklung / Module Development

Modull Zufallstimer

(1/1)

J Schohaus:
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.


--- Code: ---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

--- Ende Code ---

hugo:
danke das werden wir gerne in einer der nächsten releases aufnehmen

hugo:
wir haben den code getestet und es ergaben sich ein paar fragen:

der folgende aufruf erzeugt immer nur ein true am ausgang für max einen zyklus.
IF tof_xQ.q THEN
   xQ := FALSE ;
END_IF

um den definierten puls mit der länge TP_Q zu erzeugen müsste es wie folgt sein:
if not tof_xQ.q then
        xQ := False ;
end_if;

desweiteren bekommen wir in der simulation einen fehler "unerlaubte arithmetische operation"

J Schohaus:

--- Zitat ---der folgende aufruf erzeugt immer nur ein true am ausgang für max einen zyklus.
IF tof_xQ.q THEN
   xQ := FALSE ;
END_IF

--- Ende Zitat ---

stimmt entweder NOT oder eine TON Zeit davon machen.


--- Zitat ---desweiteren bekommen wir in der simulation einen fehler "unerlaubte arithmetische operation"

--- Ende Zitat ---

Ich habe auf der aktuellen Codesys Version geteste und kein Fehler!
Mit welchen Werten wurde der Baustein aufgerufen?

hugo:
wir haben dan baustein ab der version 2.4 drin, und den sode entsprechend korrigiert.
danke für den input

Navigation

[0] Themen-Index

Zur normalen Ansicht wechseln