![]() |
|
#1
|
|||
|
|||
|
Kann mir bitte jemand den programmiercode für ein blinklicht mit zeitgliedern in scl poste
wäre ganz nett vielen dank im vorraus |
|
#2
|
|||
|
|||
|
Code:
Function FC100 : VOID
Var_Input
Start: Bool; //Damit gehts los
Stop: BOOL; // Damit hörts auf
Pulszeit: INT; //Dauer Lampe an in 1/10s.
Pausenzeit: INT; //Dauer Lampe aus in 1/10s.
PulsFlanke: BOOL; //Hardwareblinker 100ms
END_VAR
VAR_IN_OUT
SpeicherPuls: INT; // Zeit merken an
SpeicherPause: INT; // Zeit merken aus
MerkenStart: BOOL; //Merken das Gestartet wurde
END_VAR
LABEL
ende;
END_LABEL
VAR_OUTPUT
DOUT: BOOL; //Zu beschaltender Ausgang (Lampe)
END_VAR
BEGIN
IF Start OR MerkenStart THEN
MerkenStart := True;
IF Stop THEN
MerkenStart := False;
DOUT := False;
End_If;
IF SpeicherPuls < Pulszeit AND PulsFlanke THEN
SpeicherPuls := SpeicherPuls + 1;
DOUT := True;
END_IF;
IF SpeicherPuls >= Pulszeit THEN
SpeicherPuls := Pulszeit;
DOUT := False;
IF SpeicherPause < Pausenzeit AND PulsFlanke THEN
SpeicherPause := SpeicherPause + 1;
END_IF;
END_IF;
IF SpeicherPause >= Pausenzeit THEN
SpeicherPause := 0;
SpeicherPuls := 0;
END_IF;
END_IF;
END_FUNCTION
Praktikabler wär es allerdings, wenn man einfach das Taktmerkerbyte der Hardwarekonfig nimmt Aber so hat man einen höhren Spielraum Gruß m. |