Ich schlage vor wir bauen einen Baustein wie folgt:
Eingänge:
Start: Eingang Bool, wenn aktiviert, startet mit einem Strich, indem intern ein Offset auf den Wert von Run gesetzt wird. Wir starten also immer mit dem Strich!
on: Strichlänge in Meter
off: Lücke in Meter
run: die Lauflänge in Meter
out: True, wenn der Strich aufgetragen wird.
Code:
if start and not active then // steigende Flanke am start erkannt
offset := run; // offset wird auf run gesetzt, damit wir bei 0 beginnen
endif
active := start; // active merkt sich den Zusatnd für die Flankenerkennung
if (active and ((off + on) >= 0)) then // wir müssen division durch 0 verhindern
out := ((run - offset) mod (off + on) <= on; // die eigentliche Funktion die den Ausgang steuert
else out := false;
endif
Eingänge:
Start: Eingang Bool, wenn aktiviert, startet mit einem Strich, indem intern ein Offset auf den Wert von Run gesetzt wird. Wir starten also immer mit dem Strich!
on: Strichlänge in Meter
off: Lücke in Meter
run: die Lauflänge in Meter
out: True, wenn der Strich aufgetragen wird.
Code:
if start and not active then // steigende Flanke am start erkannt
offset := run; // offset wird auf run gesetzt, damit wir bei 0 beginnen
endif
active := start; // active merkt sich den Zusatnd für die Flankenerkennung
if (active and ((off + on) >= 0)) then // wir müssen division durch 0 verhindern
out := ((run - offset) mod (off + on) <= on; // die eigentliche Funktion die den Ausgang steuert
else out := false;
endif