Das lernst du heute
- Befehle über Funk
- Rückmeldung
- Sicherheit bei Verbindungsverlust
Die Pumpstation am Eisfeld liegt zwei Kilometer von der Basis entfernt. Kein Datenkabel reicht so weit. Ein Logiksender-Paar überbrückt die Strecke – und bringt eine neue Gefahr mit: Was tut die Pumpe, wenn die Verbindung abreißt?
Was der Logiksender liefert
Ein Logiksender (StructureLogicTransmitter) im aktiven Modus hat ein eigenes Setting. Ein Sender im passiven Modus ist mit einem anderen verbunden und reicht Lesen und Schreiben an ihn weiter. Wie du die beiden koppelst, steht in Tag 116.
Für die Sicherheit zählt ein Detail aus dem Spielcode: Hat der passive Sender keine Verbindung oder keinen Strom, meldet er sich als nicht lesbar. Ein l oder lbn darauf hält mit IncorrectLogicType an – und solange der Chip steht, behält die Pumpe ihren letzten Befehl. Ohne Verbindung lässt er sich auch nicht beschreiben, ohne Strom verwirft er Geschriebenes still. Deshalb hängen beide Empfänger an Pins, und vor jedem Zugriff fragst du nach:
move weg 1 # erst einmal: keine Verbindung
move funk 0
bdns befehlsfunk pruefen # Geraet weg?
bdnvl befehlsfunk Setting pruefen # Strom, Verbindung?
l funk befehlsfunk Setting
move weg 0
pruefen:
Bleibt der Chip an der Basis stehen, steht auch der Sender still: Er behält einfach seinen letzten Wert. Für den Empfänger sieht das aus wie ein gültiger Befehl, der sich nicht ändert. Ein Funkbefehl braucht deshalb ein Lebenszeichen.
Befehle mit Nummer
Wie beim Protokoll vom Montag bekommt jeder Befehl eine laufende Nummer. Die Basis zählt sie regelmäßig hoch, auch wenn sich der Befehl nicht ändert:
| Bits | Inhalt |
|---|---|
| 0–7 | Nummer |
| 8 | Pumpe an (1) oder aus (0) |
Der Empfänger merkt sich die letzte Nummer. Ändert sie sich zu lange nicht, ist die Verbindung weg – genau wie beim Watchdog:
seq tmp nummer alt
add still still tmp
mul still still tmp
move alt nummer
sgt tmp still TIMEOUT # zu lange still
or weg weg tmp
Sicherheit bei Verbindungsverlust
Was „sicher“ ist, hängt von der Anlage ab. Für eine Pumpstation heißt es meistens: Pumpe aus, Ventile zu, Lampe an. Der Empfänger setzt diesen Zustand selbst durch, ohne auf einen Befehl zu warten:
seqz tmp weg
and befehl befehl tmp # ohne Verbindung: aus
sbn PUMPE HASH("Pumpe") On befehl
Rückmeldung
Die Basis will nicht nur senden, sondern wissen, was draußen passiert. Ein zweites Sender-Paar trägt die Antwort zurück: die zuletzt gesehene Nummer und den Zustand, den die Pumpe wirklich hat. Stimmt die Nummer, ist der Befehl angekommen. Stimmt der Zustand nicht mit dem Befehl überein, greift draußen gerade die Sicherheit.
Die Antwort braucht ein eigenes Sender-Paar. Schreibt der Empfänger auf demselben Weg zurück, überschreibt er den Befehl der Basis.
Schaubild
Übung
Aufgabe
Schreibe den Empfänger der Pumpstation. Die Logiksender hängen an Pins: „Befehl“ an d0, „Antwort“ an d1. „Befehl“ liefert Bits 0–7 Nummer und Bit 8 Pumpe:
- Pumpe „Pumpe“ folgt Bit 8
- ändert sich die Nummer länger als TIMEOUT = 20 Takte nicht, oder ist
d0leer bzw. nicht lesbar: Pumpe aus, Lampe „Funk“ an - Rückmeldung in „Antwort“: Nummer in Bits 0–7, tatsächlicher Pumpenbefehl in Bit 8 – nur, wenn
d1da und beschreibbar ist
Hinweise
Hinweis 1
Lesen: erst move weg 1 und move funk 0, dann bdns und bdnvl an d0 vor dem l.
Hinweis 2
Auspacken: ext nummer funk 0 8 und ext befehl funk 8 1, Verlust wie beim Watchdog.
Hinweis 3
Antwort: bdns und bdnvs an d1, dann move antwort nummer, ins antwort befehl 8 1 und s.
Quiz
3 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