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

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

Ein eigenes Protokoll

Zwei Chips verständigen sich über einen Logikspeicher: Nachrichten aus Nummer, Kennung und Wert packen, Quittung zurückschreiben und Doppelausführung verhindern.

Lektion 20 Min. Woche 42

Das lernst du heute

  • Nachrichten aus Kennung und Wert
  • Quittung
  • Reihenfolge

Ein Chip in der Leitwarte soll einem Chip in der Pumpstation sagen, was zu tun ist: Pumpe an, Sollwert 250, Licht umschalten. Ein Logikspeicher zwischen beiden hält genau eine Zahl. Damit daraus eine Unterhaltung wird, braucht ihr eine Abmachung – ein Protokoll.

Nachrichten aus Kennung und Wert

Eine Nachricht hat drei Teile, gepackt in eine Zahl:

BitsFeldBedeutung
0–15Wert0 bis 65535
16–23Kennungwas zu tun ist
24–31Nummerlaufende Nummer der Nachricht

Die Kennungen legst du fest und schreibst sie in beide Chips:

KennungBefehl
1Pumpe „Haupt“ an oder aus (Wert 1 oder 0)
2Sollwert anzeigen
3Licht umschalten

Der Sender packt mit ins:

move nachricht wert
ins nachricht kennung 16 8
ins nachricht nummer 24 8
sbn SPEICHER HASH("Postfach") Setting nachricht

Quittung

Der Empfänger liest das Postfach, führt den Befehl aus und schreibt die Nummer der Nachricht in einen zweiten Speicher, die Quittung. Der Sender sieht daran, dass seine Nachricht angekommen ist.

Reihenfolge und Doppelausführung

Ein Logikspeicher behält seinen Wert. Der Empfänger liest dieselbe Nachricht also jeden Takt wieder. Für „Pumpe an“ ist das egal, für „Licht umschalten“ nicht: Das Licht würde zweimal pro Sekunde umschalten. Deshalb die Nummer: Der Empfänger merkt sich die letzte und führt nur aus, wenn eine neue kommt.

ext nummer nachricht 24 8
beq nummer letzte start     # schon erledigt
move letzte nummer

Für die Reihenfolge gilt eine Regel: Der Sender schickt die nächste Nachricht erst, wenn die Quittung seine Nummer zeigt. Sonst überschreibt er eine Nachricht, die noch niemand gelesen hat. Nach 255 beginnt die Nummer wieder bei 0 – sie muss sich nur von der letzten unterscheiden.

Achtung

Nach einem Neustart des Empfängers ist letzte zunächst 0. Liegt noch eine alte Nachricht im Postfach, würde er sie ein zweites Mal ausführen. Lies deshalb beim Start die Quittung als letzte ein – sie enthält die Nummer, die zuletzt erledigt wurde.

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
Der Sender schreibt ins Postfach, der Empfänger führt aus und schreibt die Nummer in die Quittung.

Übung

Aufgabe

Schreibe den Empfänger. Das Postfach „Postfach“ enthält Nachrichten nach der Tabelle oben:

  • Kennung 1: Pumpe „Haupt“ On = Wert
  • Kennung 2: Anzeige „Soll“ = Wert
  • Kennung 3: Lampe „Licht“ umschalten
  • jede neue Nummer genau einmal ausführen, unbekannte Kennungen ignorieren
  • danach die Nummer in „Quittung“ schreiben
  • fehlt das Postfach, passiert nichts

Hinweise

Hinweis 1

ext nummer nachricht 24 8, dann beq nummer letzte start – alte Nachricht, nichts tun.

Hinweis 2

Je Kennung ein bne kennung N weiter vor der Aktion.

Hinweis 3

Umschalten: Lampe lesen, seqz, zurückschreiben.

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