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

Tag 292 von 365 · Experte · Monat 10: Bits und Daten

Fernsteuerung

Befehle über Funk: warum ein Logiksender ohne Verbindung den Chip anhält, eine laufende Nummer als Lebenszeichen, Rückmeldung an die Basis und der sichere Zustand bei Funkstille.

Lektion 20 Min. Woche 42

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:
Achtung

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:

BitsInhalt
0–7Nummer
8Pumpe 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.

Tipp

Die Antwort braucht ein eigenes Sender-Paar. Schreibt der Empfänger auf demselben Weg zurück, überschreibt er den Befehl der Basis.

Schaubild

Geräte im Datennetz mit Typ und Namen IC-Gehäuse IC10 StructureGasSensor „Lager“ StructureGasSensor „Werkstatt“ StructureWallHeater „Lagerheizung“ StructureWallHeater „Lagerheizung“ StructureWallHeater „Werkstattheizung“ lbn SENSOR HASH("Lager") liest nur diesen Sensor sbn HEIZUNG HASH("Lagerheizung") schaltet beide auf einmal
Hin geht der Befehl mit Nummer, zurück die Nummer mit dem tatsächlichen Zustand.

Ü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 d0 leer 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 d1 da 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

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