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:
| Adresse | Name | Schreiber | Bedeutung | Bereich |
|---|---|---|---|---|
| 0 | Version | Zentrale | Version der Schnittstelle | 1, 2, … |
| 1 | Puls | Zentrale | Lebenszeichen | zählt hoch |
| 2 | LS_Status | Lebenserhaltung | 0 ok, 1 Warnung, 2 Störung | 0–2 |
| 3 | EN_Status | Energie | 0 ok, 1 Warnung, 2 Störung | 0–2 |
| 4 | EN_Auftrag | Zentrale | Lastabwurf-Stufe | 0–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.
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