# Modull Zufallstimer

**URL:** <https://oscat.discourse.group/t/modull-zufallstimer/217>\
**Category:** Modulentwicklung / Module Development\
**Created:** [19. November 2007 um 05:38 UTC](https://oscat.discourse.group/t/modull-zufallstimer/217 "2007-11-19T05:38:27Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![system](https://global.discourse-cdn.com/free1/uploads/oscat/original/1X/2efdfb9c592ff9a666c94dff124ee84fa863dae5.jpeg) [@system](https://oscat.discourse.group/u/system)\
**Post date:** [19. November 2007 um 05:38 UTC](https://oscat.discourse.group/t/modull-zufallstimer/217/1 "2007-11-19T05:38:27Z")

</div>

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.

```auto

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

```

---

<div class="post-metadata">

**Author:** ![hugo](https://yyz2.discourse-cdn.com/free1/user_avatar/oscat.discourse.group/hugo/32/133_2.png) [@hugo](https://oscat.discourse.group/u/hugo)\
**Post date:** [19. November 2007 um 08:58 UTC](https://oscat.discourse.group/t/modull-zufallstimer/217/2 "2007-11-19T08:58:18Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![hugo](https://yyz2.discourse-cdn.com/free1/user_avatar/oscat.discourse.group/hugo/32/133_2.png) [@hugo](https://oscat.discourse.group/u/hugo)\
**Post date:** [20. November 2007 um 03:14 UTC](https://oscat.discourse.group/t/modull-zufallstimer/217/3 "2007-11-20T03:14:38Z")

</div>

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”

---

<div class="post-metadata">

**Author:** ![system](https://global.discourse-cdn.com/free1/uploads/oscat/original/1X/2efdfb9c592ff9a666c94dff124ee84fa863dae5.jpeg) [@system](https://oscat.discourse.group/u/system)\
**Post date:** [20. November 2007 um 05:22 UTC](https://oscat.discourse.group/t/modull-zufallstimer/217/4 "2007-11-20T05:22:05Z")

</div>

> der folgende aufruf erzeugt immer nur ein true am ausgang für max einen zyklus. IF tof\_xQ.q THEN xQ := FALSE ; END\_IF

stimmt entweder NOT oder eine TON Zeit davon machen.

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

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

---

<div class="post-metadata">

**Author:** ![hugo](https://yyz2.discourse-cdn.com/free1/user_avatar/oscat.discourse.group/hugo/32/133_2.png) [@hugo](https://oscat.discourse.group/u/hugo)\
**Post date:** [20. November 2007 um 10:26 UTC](https://oscat.discourse.group/t/modull-zufallstimer/217/5 "2007-11-20T10:26:39Z")

</div>

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