stationeers.de Mod-Werkstatt · Dominik1199
EN Anmelden
  1. Start
  2. IC10-Akademie
  3. Tag 80

Tag 80 von 365 · Einsteiger · Monat 3: Erste Systeme

Timer und Verzögerung

Ein Takt sind 0,5 Sekunden. Mit einem Zähler baust du Einschaltverzögerung und Nachlaufzeit, ohne dass der Chip mit sleep stillsteht.

Lektion 14 Min. Woche 12

Das lernst du heute

  • Takte in Sekunden umrechnen
  • Einschaltverzögerung
  • Nachlaufzeit

Eine Pumpe soll erst anlaufen, wenn die Ventile sicher offen sind. Eine Warnlampe soll noch leuchten, wenn die Maschine schon steht. Beides sind Zeiten, und Zeit misst der Chip in Takten.

Takte und Sekunden

Ein Takt dauert 0,5 s, eine Sekunde hat also 2 Takte. Läuft deine Hauptschleife mit genau einem yield pro Durchlauf, ist jeder Durchlauf ein Takt:

ZeitTakte
1 s2
10 s20
1 min120
1 h7200

sleep wartet auch, aber in dieser Zeit tut der Chip nichts anderes. Für Timer, die neben der restlichen Logik laufen, zählst du deshalb Takte.

Einschaltverzögerung

Der Ausgang geht erst an, wenn der Eingang eine Weile ohne Unterbrechung an war. Der Zähler läuft hoch, solange der Eingang 1 ist, und fällt sofort auf 0, wenn er 0 wird:

add zAn zAn 1
mul zAn zAn ein        # Eingang aus: Zaehler auf 0
sge aus zAn VERZ       # lange genug an?

Kurzes Antippen löst nichts aus. Das schützt auch vor Fehlbedienung.

Nachlaufzeit

Umgekehrt bleibt ein Ausgang nach dem Abschalten noch eine Weile an. Solange der Eingang an ist, wird der Zähler voll aufgeladen. Danach zählt er herunter:

sub zNach zNach 1
select zNach ein NACHLAUF zNach   # an: neu aufladen
max zNach zNach 0
sgtz lampe zNach                  # noch Restzeit?

Die Vorlage „Licht bei Anwesenheit“ im IC10-Coder arbeitet genauso.

Achtung

Ein Durchlauf ist nur dann ein Takt, wenn die Schleife unter 128 Befehlen bleibt. Braucht sie mehr, macht der Chip im nächsten Takt mitten im Durchlauf weiter, und deine Zeiten stimmen nicht mehr.

Tipp

Schreib Zeiten als define in Takten und die Sekunden in den Kommentar: define VERZ 6 # 3 s. Dann sieht jeder sofort, was gemeint ist.

Schaubild

Takte und yield auf einer Zeitleiste Takt 0 · 0,0 s Takt 1 · 0,5 s Takt 2 · 1,0 s Takt 3 · 1,5 s 5 Befehle yield 5 Befehle yield 5 Befehle yield 128 Befehle ohne yield: Limit Gerätewerte ändern sich nur zwischen zwei Takten.
Jeder Durchlauf der Hauptschleife mit einem yield ist ein Takt. Ein Zähler in einem Register misst so die Zeit.

Übung

Aufgabe

Der Hebel „Pumpe“ startet die Volumenpumpe „Umfuellpumpe“.

  • Anlauf: Die Pumpe läuft erst, wenn der Hebel VERZ Takte (3 s) ohne Unterbrechung an ist.
  • Nachlauf: Das Blinklicht „Betrieb“ ist an, solange die Pumpe läuft, und noch NACHLAUF Takte (5 s) danach.
  • Fehlt der Hebel, steht die Pumpe.

Hinweise

Hinweis 1

sgtz ein ein macht aus NaN eine 0 – ohne Hebel keine Pumpe.

Hinweis 2

Anlauf: hochzählen, mit ein multiplizieren, mit sge gegen VERZ prüfen.

Hinweis 3

Nachlauf: herunterzählen, bei laufender Pumpe mit select auf NACHLAUF setzen, max … 0, dann sgtz.

Quiz

4 Fragen. Ab 60 % ist das Quiz bestanden – die Auswertung macht der Server.

Tag abschließen

  • Übung im Simulator bestanden
  • Quiz mit mindestens 60 % bestanden

Ohne Konto wird der Fortschritt nur in diesem Browser gespeichert.

Fehler in dieser Lektion melden

Zum Melden bitte anmelden. Anmelden

Esc
↑ ↓ wählenEnter öffnen/ öffnet die Suche überall