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

Tag 346 von 365 · Experte · Monat 12: Meisterstücke

Großprojekt: Schnittstellen

Schnittstellen eines Großprojekts: Speicheradressen festlegen, das Protokoll als Tabelle dokumentieren und eine Versionsnummer, die jeder Chip prüft, bevor er Befehle ausführt.

Lektion 22 Min. Woche 50

Das lernst du heute

  • Speicheradressen festlegen
  • Protokoll dokumentieren
  • Versionen

Zwei Chips, die miteinander reden, brauchen eine gemeinsame Sprache. Für Menschen ist das ein Protokoll auf Papier, für Chips eine Liste von Adressen mit fester Bedeutung. Fehlt diese Liste, schreibt irgendwann ein Chip die Temperatur dorthin, wo ein anderer den Akkustand erwartet.

Speicheradressen festlegen

Für wenige Werte reicht ein Logic Memory je Wert. Werden es viele, lohnt sich ein Datenbus: der Stack eines eigenen Gehäuses, in den alle Chips über feste Adressen lesen und schreiben. get liest eine Adresse, put schreibt sie, die ReferenceId des Bus-Gehäuses holt der Chip über lbn:

define GEHAEUSE HASH("StructureCircuitHousing") # IC-Gehaeuse
lbn bus GEHAEUSE HASH("Datenbus") ReferenceId Average
get version bus 0          # Adresse 0: Version der Schnittstelle
get wert bus 3            # Adresse 3: Status der Energie
put bus 2 status           # Adresse 2: hier schreibt nur die Lebenserhaltung

Das Protokoll dokumentieren

Jede Adresse bekommt eine Zeile in einer Tabelle, die in jedem beteiligten Chip als Kopfkommentar steht oder in der Bibliothek neben den Scripts liegt:

AdresseNameSchreiberBedeutungBereich
0VersionZentraleVersion der Schnittstelle1, 2, …
1PulsZentraleLebenszeichenzählt hoch
2LS_StatusLebenserhaltung0 ok, 1 Warnung, 2 Störung0–2
3EN_StatusEnergie0 ok, 1 Warnung, 2 Störung0–2
4EN_AuftragZentraleLastabwurf-Stufe0–2

Drei Spalten sind Pflicht: wer schreibt, was es bedeutet und welche Werte erlaubt sind. Alles, was außerhalb des Bereichs liegt, behandelt der Leser als Fehler.

Versionen

Irgendwann änderst du das Protokoll: Ein Feld kommt dazu, eine Bedeutung ändert sich. Dann laufen für eine Weile alte und neue Chips gemeinsam. Damit das nicht still schiefgeht, steht an einer festen Stelle die Version der Schnittstelle. Jeder Chip vergleicht sie mit der Version, die er selbst versteht, und führt nur dann Befehle aus, wenn beide passen:

seq ok version SCHNITTSTELLE     # NaN oder falsche Version: 0
select befehl ok befehl 0  # ohne passende Version kein Befehl

Passt die Version nicht, geht der Chip in den sicheren Zustand, meldet den Fehler und schreibt seine eigene Version in seinen Status. So sieht die Zentrale sofort, welcher Chip noch die alte Sprache spricht.

Tipp

Erhöh die Version nur, wenn sich eine Bedeutung ändert. Kommt nur ein neues Feld am Ende dazu, das alte Chips nicht lesen, bleibt die Version gleich.

Übung

Aufgabe

Bau den Teilchip Hof. Die Zentrale schreibt die Version der Schnittstelle in „Bus_Version“ und einen Befehl in „Bus_Befehl“ (Bit 0 Lampe „Hof“, Bit 1 Pumpe „Brunnen“). Dieser Chip versteht Version 2. Passt die Version nicht oder fehlt ein Speicher: beide Ausgänge aus, Blinklicht „Versionsfehler“ an. Im Status „Bus_Status“: Bit 0 Lampe, Bit 1 Pumpe, Bit 2 Fehler, ab Bit 8 die eigene Version (4 Bit).

Hinweise

Hinweis 1

seq ok version SCHNITTSTELLE – NaN ergibt 0. Dazu snanz für den Befehl.

Hinweis 2

Ohne ok den Befehl auf 0 setzen, dann mit ext die beiden Bits holen.

Hinweis 3

Die eigene Version mit ins status SCHNITTSTELLE VERSIONSBIT 4 einsetzen.

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