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

Tag 99 von 365 · Fortgeschritten · Monat 4: Netzwerk im Detail

ReferenceId: Geräte direkt ansprechen

Jedes Gerät hat eine feste Nummer, die ReferenceId. Mit ihr im Register oder in einem define sprechen l und s genau dieses eine Gerät an.

Lektion 13 Min. Woche 15

Das lernst du heute

  • ReferenceId lesen
  • l und s mit einer ID im Register
  • ID per define

Zwei Sensoren hängen im Kesselraum. Beide heißen „Kessel“, weil sie zusammen gemittelt werden. Jetzt willst du aber nur den einen am Einlass lesen. Namen helfen hier nicht weiter. Jedes Gerät hat jedoch eine eigene, feste Nummer: die ReferenceId.

Die ReferenceId lesen

Die ReferenceId ist ein LogicType wie jeder andere, und jedes Gerät kann ihn lesen:

l id d0 ReferenceId                               # Geraet an d0
lbn id SENSOR HASH("Einlass") ReferenceId Average # Geraet mit Namen

Mit lbn klappt das nur, wenn genau ein Gerät passt. Bei zwei Treffern bildet Average den Mittelwert zweier Nummern, und das ist keine gültige Nummer mehr. Ohne Treffer kommt NaN heraus.

l und s mit einer ID im Register

Steht eine ReferenceId in einem Register, setzt du dieses Register dort ein, wo sonst ein Pin steht:

l temp id Temperature        # liest das Geraet mit dieser Nummer
s id On 1                    # schreibt direkt dorthin

Der Chip sucht das Gerät dann im Datennetz, ohne Pin und ohne Namen. Das hilft, wenn du viele gleiche Geräte einzeln ansprechen willst oder dir die sechs Pins ausgehen.

Die ID per define

Kennst du die Nummer, darf sie direkt in ein define. Ein define-Name an der Stelle eines Geräts gilt als ReferenceId:

define KESSELEIN 12345 # ReferenceId des Einlass-Sensors
l temp KESSELEIN Temperature

Die Nummer liest du einmal aus, etwa mit s db Setting id aufs Gehäuse, und trägst sie dann ein.

Achtung

Eine ReferenceId gilt nur für dieses Gerät in diesem Spielstand. Baust du den Sensor ab und wieder auf, bekommt er eine neue Nummer, und dein define zeigt ins Leere. Namen überleben einen Umbau, Nummern nicht.

Hinweis

Fehlt das Gerät zur Nummer, hält l mit einem Fehler an. Wie du vorher prüfst, ob es noch da ist, kommt morgen mit bdse und bdns. Bis dahin holst du die Nummer jeden Takt neu mit lbn und prüfst sie mit bnan.

Schaubild

Lesen mit l, Schreiben mit s Gas-Sensor (d0) Temperature 293.15 IC10 r0 = 293.15 Wandlampe (d1) On 1 l r0 d0 Temperature Gerät → Register s d1 On 1 Wert → Gerät
Statt eines Pins steht ein Register mit der ReferenceId. Der Chip sucht das Gerät dann direkt im Datennetz.

Übung

Aufgabe

Ein Gassensor „Kessel“ und eine LED-Anzeige „Kesselanzeige“ hängen im Netz.

  • Hol jeden Takt die ReferenceId beider Geräte mit lbn.
  • Lies die Temperatur mit l über die ID und schreib sie in °C mit s über die ID auf die Anzeige.
  • Fehlt der Sensor: Anzeige −999. Fehlt die Anzeige: nichts schreiben. Nie ein Fehler.

Hinweise

Hinweis 1

lbn anz ANZEIGE HASH("Kesselanzeige") ReferenceId Average, dann bnan anz start.

Hinweis 2

Für den Sensor genauso, aber bei NaN zur Ausgabe springen und vorher c auf KEINWERT setzen.

Hinweis 3

Lesen mit l temp id Temperature, schreiben mit s anz Setting c.

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