ich würde den "zufallsgenerator" dauerhaft laufen lassen und zwar als zyklusweise addition bis 15 und eine bis 5, also:
Code:
*
L MW 10
+ 1
T MW 10
L 15 //bzw. für MW12 dann 5
<=I
SPB noze
L 0
T MW 10
noze: NOP 0
wenn der merker eins ist, soll ja dann für die ermittelte zeit einen ausgang als pulspause ansteuern. also zu erst, das MW10 und MW12 wegspeichern, in MW14 und MW16 z.b..
Code:
*
U M 1.0
FP M 1.1
SPBN end
L MW 10
T MW 14
end: NOP 0
da unsere ermittelten zeiten ja minuten sind und wir aber sekunden brauchen, würde ich diese noch alá
Code:
*
L MW 10
L 60
*I
T MW 14
in sekunden im selben zug umrechnen.
für den taktgenerator nehme ich meinen puls-pause-(variabel) FC1691:
Code:
*
FUNCTION "PULSE_GENERATOR_VAR" : VOID
TITLE =PULSE_GENERATOR_VARI
//DATE: 03.04.2008
//AUTHOR: 4lagig
//VERSION: V0.1 BasicVer
AUTHOR : '4lagig'
FAMILY : BoolGF
VERSION : 0.1
VAR_INPUT
xPlcPulse : BOOL ;
xOn : BOOL ;
dOnTime : DINT ;
dOffTime : DINT ;
END_VAR
VAR_IN_OUT
dOnDelay : DINT ;
dOffDelay : DINT ;
xHelpFlag : BOOL ;
xOut : BOOL ;
END_VAR
BEGIN
NETWORK
TITLE =
U #xOn;
U #xPlcPulse;
FP #xHelpFlag;
SPBN end;
U #xOut;
SPBN off;
L #dOnDelay;
L 1;
+I ;
T #dOnDelay;
L #dOnDelay;
L #dOnTime;
>=I ;
SPBN end;
R #xOut;
L 0;
T #dOnDelay;
SPA end;
off: L #dOffDelay;
L 1;
+I ;
T #dOffDelay;
L #dOffDelay;
L #dOffTime;
>=I ;
SPBN end;
S #xOut;
L 0;
T #dOffDelay;
end: SET ;
SAVE ;
BEA ;
END_FUNCTION
an xPlcPulse würde ich den 1s-takt (Mx.5) anlegen, an xOn den freigabe merker.
fast fertig, den ausgang noch beschaltet und schick ist.
ja, ich weiß, das ist nur quasi zufall, aber kaum reproduzierbar