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

Tag 309 von 365 · Experte · Monat 11: Optimierung und Fehlersuche

Alle Fehlercodes

Alle 39 Fehlercodes des Chips mit Nummer und Ursache – und wie ein zweiter Chip Error und LineNumber eines Gehäuses ausliest.

Lektion 18 Min. Woche 45

Das lernst du heute

  • Fehlernummern lesen
  • Ursache je Code
  • Fehler am Gehäuse auslesen

Die Heizung im Labor bleibt kalt. Am Gehäuse steht Error IncorrectLogicType at line 14. Das Spiel nennt den Fehler beim Namen und die Zeile dazu. Hinter jedem Namen steckt eine feste Nummer, und die Liste ist kurz genug, um sie einmal ganz durchzugehen.

Beim Laden oder beim Laufen

Es gibt zwei Zeitpunkte, an denen ein Fehler auftritt:

  • Beim Laden: Bevor der Chip startet, liest er jede Zeile. Ein unbekannter Befehl, eine fehlende Angabe oder ein doppeltes Label halten ihn auf, bevor die erste Zeile läuft.
  • Beim Laufen: Die Zeile ist gültig, aber beim Ausführen geht etwas schief, etwa weil am Pin kein Gerät steckt. Der Chip bleibt auf dieser Zeile stehen und versucht sie jeden Takt neu.

Die ganze Liste

Nr.Nametypische Ursache
0Nonekein Fehler
1UnknownFehler ohne eigene Nummer
2IncorrectVariableName unbekannt: Tippfehler bei alias, define oder Label
3IncorrectVariableTypeim Spielcode 0.2.6428 ohne Auslöser, kommt also nicht vor
4IncorrectLogicTypeLogicType falsch geschrieben oder vom Gerät nicht lesbar/schreibbar
5IncorrectLogicSlotTypedasselbe für Slot-Typen
6IncorrectArgumentCountAngabe zu viel oder zu wenig, z. B. Batchmodus vergessen
7DeviceNotSetpraktisch nie: nur eine ungenutzte Hilfsfunktion wirft ihn. Ein leerer Pin meldet 25
8JumpTagDuplicateein Label steht zweimal im Code
9UnrecognisedInstructionBefehl unbekannt, auch bei falscher Großschreibung
10IndexOutOfRangeIndex außerhalb des erlaubten Bereichs, z. B. ein Pin über d5
11OutOfRegisterBoundsRegister über r17, meist bei rr-Umwegen
12OutOfDeviceBoundsdasselbe bei dr-Umwegen
13, 14, 15, 21IncorrectReagentMode, UnhandledReagentMode, IncorrectReagentDevice, IncorrectReagentTyperund um lr: 14 unbekannter Modus, 15 Modus passt nicht zum Gerät (Required am Ofen). 13 und 21 löst der Spielcode nicht aus
16ChipCatchingFirehcf – der Chip „fängt Feuer“
17StackOverFlowpush über die 512 Plätze hinaus
18StackUnderFlowpop oder peek auf einen leeren Stack
19ExtraDefinederselbe Name zweimal per define
20DeviceListNullGehäuse hängt an keinem Datennetz, Batchbefehle laufen ins Leere
22DeviceNotSlotWriteablein diesen Slot darf nicht geschrieben werden
23, 24ShiftOverflow, ShiftUnderflowZahl zu groß oder zu klein für einen Bitbefehl, Bitposition außerhalb
25DeviceNotFoundhinter der Angabe steckt kein Gerät: leerer Pin, unbekannte ReferenceId
26, 27MemoryNotReadable, MemoryNotWriteableget/put an einem Gerät ohne passenden Speicher
28, 29, 30InvalidStringLength, InvalidStringNull, InvalidStringNonAsciiSTR("…") zu lang, leer oder mit Umlaut
31, 32, 33InvalidPreprocessHash, InvalidProcessBinary, InvalidPreprocessHexHASH("…"), %… oder $… nicht lesbar
34LogicTypeIsNoneLogicType None benutzt
35, 36PayloadOverflow, PayloadUnderflowBitfeld bei ext/ins zu lang (35); 36 löst der Spielcode nicht aus
37InvalidIntegeran einer Stelle für Ganzzahlen steht etwas anderes
38AliasNotFoundein alias zeigt auf nichts Brauchbares

Im Alltag begegnen dir vor allem 4, 6, 9, 18, 20 und 25. Die anderen kommen selten vor, aber wenn, dann weißt du jetzt, wo du suchen musst.

Tipp

Der IC10-Coder zählt die Zeilen wie der Chip ab 0. Steht am Gehäuse line 14, ist es im Editor die Zeile mit der Nummer 14.

Den Fehler von außen sehen

Ein zweiter Chip kann jedes Gehäuse im Datennetz überwachen. Er sieht zwei Werte: Error ist 1, solange das Gehäuse einen Fehler hat, sonst 0. LineNumber ist die Zeile, auf der der Chip gerade steht. Weil ein Chip mit Laufzeitfehler auf der fehlerhaften Zeile stehen bleibt, ist LineNumber dann genau die Fehlerzeile.

define GEHAEUSE HASH("StructureCircuitHousing") # IC-Gehaeuse
lbn r0 GEHAEUSE HASH("Heizchip") Error Average      # 1 = Fehler, 0 = laeuft
lbn r1 GEHAEUSE HASH("Heizchip") LineNumber Average # aktuelle Zeile
Achtung

Error sagt nur ja oder nein. Die Nummer und den Namen des Fehlers bekommst du über das Datennetz nicht, die stehen nur am Gehäuse selbst. Und: Gib dem Wächter einen anderen Namen als dem überwachten Chip. Sonst mittelt lbn über beide Gehäuse.

Schaubild

IC-Gehäuse mit Chip, Pins und Datennetz IC-Gehäuse IC10 db d0 d1 d2 d3 frei d4 frei d5 frei Gas-Sensor Wandlampe Anzeige Datenkabel Pumpe Akku Heizung … Datennetz: lb, lbn, sb, sbn
Das Gehäuse meldet einen Fehler mit Namen und Zeile. Über das Datennetz sieht ein anderer Chip davon nur Error (0 oder 1) und LineNumber.

Übung

Aufgabe

Baue einen Fehlerwächter für das Gehäuse „Heizchip“: Meldet es einen Fehler, geht das Blinklicht „Chipfehler“ an und die Anzeige „Fehlerzeile“ zeigt die Zeile. Ohne Fehler ist das Licht aus und die Anzeige zeigt -1. Ist das Gehäuse abgebaut, gilt das als Fehler: Licht an, Anzeige -1.

Hinweise

Hinweis 1

Error und LineNumber liest du mit lbn und dem Hash von StructureCircuitHousing.

Hinweis 2

Fehlt das Gehäuse, ist Error NaN. snan erkennt das, select macht daraus eine 1.

Hinweis 3

Für die Anzeige zweimal select: erst nach Error, dann nach dem fehlenden Gehäuse.

Quiz

5 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