DDorf 1981 - IBIS in eigenes Fahrzeug integrieren (für Entwickler)

Aus LOTUS Wiki DE
Wechseln zu: Navigation, Suche

Vorlage:ArticleMetadata

In diesem Artikel wird beschrieben, wie das IBIS aus dem Addon Düsseldorf 1981 in das eigene Fahrzeug integriert werden kann.

    • Achtung: Dieser Artikel beschreibt das Addon "[1981]". Die beschriebenen Funktionen sind ggf. noch nicht verfügbar, bitte die [[1]] beachten!**

1 Modulslot

1.1 Name des Modulslots

Der Name des Modulslots lautet "IBIS_GT6N" und bekommt den IBIS-Hauptrechner zugewiesen. Für (Zweirichtungs)-Fahrzeuge die eine zweite Bedieneinheit haben, gibt es zusätzlich den Slot "IBIS_GT6N_Slave", in dem ein Terminal eingesetzt wird, was nur über die Displayanzeige verfügt, Töne abspielt und Tastendrücke an das Hauptgerät weiterleitet.

1.2 Maße des Modulslots

Die Maße des IBIS ohne zusätzliche optische Konfiguration entsprechen denen den [[2]]-Modulslots. Siehe hier: [Modul-Slots]

2 Aktivierung des Geräts

2.1 Elektrische Verbindungen

Das IBIS benötigt folgende Messages zwingend um eingeschaltet zu werden:

    • `BATTERYSWITCH` (integer, Broadcast(busId = GEN)) - Schaltet den Batteriehauptschalter ein (1) bzw. aus (0). Bei ausgeschaltetem Batteriehauptschalter macht das Gerät gar nichts!
    • `MAINSWITCH` (integer) - Schaltet das Gerät aktiv (1) bzw. inaktiv (0), wenn der Batteriehauptschalter eingeschaltet ist.
    • `VOLTAGE` (single, Broadcast(busId = GEN)) - Batteriespannung, dabei ist "1.0" die Sollspannung.

Diese Messages gelten für Hauptrechner und Terminal gleichermaßen!

2.2 Optische Konfiguration

Das Gerät ist in seiner Erscheinungsweise über die Message `FAHRZEUGTYP` (integer) anpassbar:

    • 0 = Das Gerät wird dargestellt wie im [[3]]
    • 1 = Das Gerät ist etwas anders proportioniert, hat einen Rahmen und einen Beleuchtungsbügel für den B80D (Stahl)
    • 2 = Wie "1" nur ohne Rahmen und Bügel
    • 3 = Wie im GT8 mit sichtbarem Gehäuse, Beleuchtungsbügel aber ohne Rahmen. Das Gerät schaltet sich hier im Funkbereich 01 auch erst nach einer Verzögerung von 15 Minuten aus, wenn der Umschalthebel in "0" gestellt wird. In allen anderen Funkbereichen geht es sofort aus.

Diese Messages gelten für Hauptrechner und Terminal gleichermaßen!

3 Messages zum Empfangen

3.1 Standardmessages

Zusätzlich zu den oben beschrieben Nachrichten zur Aktivierung empfängt das IBIS vom Fahrzeug oder anderen Modulen:

    • `LIGHT` (single, Broadcast(GEN)) - steuert die Helligkeit der Beleuchtung (0 = Aus)
    • `LIGHT` (single) - steuert die Helligkeit der Beleuchtung (0 = Aus)
    • `DOORRELEASE` (integer, Broadcast(PIS)) - setzt die Türfreigabe (1), muss nicht zwingend mit 0 überschrieben werden.
    • `ATBUSSTOP` (integer) - wie `DOORRELEASE`
    • `SWITCH_OFF` \- Wird vom Fahrzeug gesendet (1), wenn ein [[4]] für Weichen überfahren wurde. Das IBIS löscht daraufhin die Anzeige für Weichenanforderung.
    • `WEGIMPULS` \- Wird immer dann gesendet (1), wenn das Fahrzeug einen Meter (Richtung egal) zurückgelegt hat. Ist für die automatische Haltestellenweiterschaltung (90m) zwingend erforderlich und inkrementiert außerdem den internen Kilometerzähler des IBIS. Als Wert ist hier nur die "1" zulässig!
    • `INITSTRING` \- Wird an die Anzeigen geschickt, wenn das IBIS resettet wird.
    • `BEIWAGEN` \- (integer, Broadcast([[5]])) aktiviert die

Abfrage nach der Beiwagennummer, muss der Beiwagen senden. Die Beiwagennummer wird gelöscht, sobald die Nachricht `BEIWAGEN` "0" geschickt wird.

    • `KM_STAND` \- (single) Sollte nur einmal geschickt werden, initialisiert den Kilometerstand des Fahrzeugs.

3.2 Debugging

Zum Zwecke des Debugging von Modulen, insbesondere der Anzeigenmodule des GT8S/NM-Wagens, kann das IBIS über seine Testfunktionen weitere Informationen anzeigen. Dazu benötigt es aber folgende Informationen:

    • `RLB_SpezFis_NotFound` \- (integer, Broadcast([[6]])) - Erzeugt die Fehlermeldung "keine spezielle [[7]]!" auf dem IBIS. Die Rollbandmodule teilen so mit, dass keine passende [[8]] Datei gefunden wurde und somit auch kein Rollband angezeigt werden kann.
    • `ROLLBANDINDEX` \- (integer, Broadcast(IBIS_DEBUGGING)) - Zeigt an, welcher Rollbandindex gewählt wurde (beim GT8/S/U die Auswahl des Betriebshofs)
    • `ANZAHL_SONDERZIELE` \- (integer, Broadcast(IBIS_DEBUGGING)) - Zeigt die Anzahl an Sonderzielen an, welche mit speziellen Zielcodemanipulationen angesteuert werden können
    • `LINIENBAND_LAENGE` \- (integer, Broadcast(IBIS_DEBUGGING)) - Zeigt die Länge des Linienbandes an
    • `ZIELBAND_LAENGE` \- (integer, Broadcast(IBIS_DEBUGGING)) - Zeigt die Länge des Zielbandes an
    • `LINIE_USERID` \- (integer, Broadcast(IBIS_DEBUGGING)) - Zeigt die User-ID des Linienbandes
    • `ZIELBAND_CONTENTID` \- (integer, Broadcast(IBIS_DEBUGGING)) - Zeigt die User-ID des Zielbandes
    • `LINIENBAND_CONTENTID` \- (integer, Broadcast(IBIS_DEBUGGING)) - Zeigt die erste(!) Content-ID des Linienbandes
    • `ZIELBAND_USERID` \- (integer, Broadcast(IBIS_DEBUGGING)) - Zeigt die erste(!) Content-ID des Zielbandes

Das Rollband wird über den Broadcast `SendBroadcastInteger(self, '[[9]]', 'IBIS_TELL_DEBUG_INFO', 1)` dazu aufgefordert die Informationen bereitzustellen.


    • ACHTUNG** _ **:**_ Bei unseren Rollbandmodulen ist es so, dass sich immer nur das Rollband mit der Wagenbusadresse 1:01 meldet! So werden Überschneidungen vermieden!

4 Messages die gesendet werden

Folgende Nachrichten schickt das IBIS direkt ans Fahrzeug bzw. als Broadcast:

    • `SWITCH` \- (string) wo 0 (Links), 1 (Rechts) oder 2 (Gerade) für Weichensteuerung durch das Fahrzeug.
    • `ANNOUNCE_USERID` \- (integer, Broadcast(PIS)) User ID der abzuspielenden Ansage
    • `ANNOUNCE_SUBID` \- (integer, Broadcast(PIS)) Content ID der abzuspielenden Ansage
    • `ROUTE_LISTINDEX` \- (integer, Broadcast(PIS)) Index der aktuell eingestellten Route
    • `TERMINUS_LISTINDEX` \- (integer, Broadcast(PIS)) Sendet als Value den Index (nicht den Code!) der soeben gewählten Ziel-Haltestelle, die an den Anzeigen angezeigt werden soll.
    • `SPECIALCHAR` \- (integer, Broadcast(PIS)) Sendet als Value den Sonderzeichen-Code. Das Umwandeln desselben in einen Sonderzeichen-String erfolgt erst in der Anzeige.
    • `STOP_SEQ` \- (integer, Broadcast(PIS)) Sendet die Information, welche Haltestelle angezeigt werden soll, wobei übertragen wird, um die wievielte Haltestelle es sich entlang der aktuellen Route handelt.
    • `LINE` \- (integer, Broadcast(PIS)) Sendet als Value die Liniennummer (ohne irgendwelche Kurs- oder Sonderzeichen-Information!)
    • `OFFSTRING` \- (integer, Broadcast(PIS)) Sendet als Value den zuvor festgelegten `INITSTRING` wenn die Linie gelöscht wird.
    • `LineForBalise` \- (integer), enthält die eingestellte Linie für die Fahrweganforderung
    • `RouteForBalise` \- (integer), enthält die eingestellte Route für die Fahrweganforderung

Zusätzlich zu den oben genannten Standardnachrichten werden gesendet:

    • `DEST_CODE` \- (integer, Broadcast(PIS)) Sendet als Value den Zielcode, der im IBIS eingestellt ist.
    • `ROUTE` \- (integer, Broadcast(PIS)) Sendet als Value die Route, die im IBIS eingestellt ist.
    • `LINIE_KURS` \- (string, Broadcast([[10]])) Sendet als Value die eingestellte Linie-Kurs im IBIS
    • `LINIE` \- (string, Broadcast([[11]])) Sendet als Value die eingestellte Linieim IBIS
    • `KURS` \- (string, Broadcast([[12]])) Sendet als Value den eingestellten Kurs im IBIS
    • `ZIEL` \- (string, Broadcast([[13]])) Sendet als Value das eingestellte Ziel im IBIS
    • `ROUTE` \- (string, Broadcast([[14]])) Sendet als Value die eingestellte Route im IBIS
    • `WABE` \- (string, Broadcast([[15]])) Sendet als Value die eingestellte Wabe im IBIS
    • `KURZSTRECKE` \- (string, Broadcast([[16]])) Sendet als Value die eingestellte Kurzstrecke im IBIS
    • `STUNDE` \- (string, Broadcast([[17]])) Sendet als Value die aktuelle Stunde
    • `MINUTE` \- (string, Broadcast([[18]])) Sendet als Value die aktuelle Minute
    • `DestinationForBalise` \- (integer), enthält das eingestellte Ziel für die Fahrweganforderung


Die obigen Nachrichten dienen einem abgeschaltetem IBIS-Hauptgerät im Zugverband als Info, was das aktuell aktive Gerät verarbeitet. Daher muss der Broadcast "[[19]]" unbedingt auch über die Kupplung gekuppelt werden!

5 Interne Kommunikation

Für die Kommunikation zwischen dem Hauptrechner und dem Terminal gibt es den Broadcast `IBIS_INTERN`, dort werden alle erforderlichen Eingaben versendet bzw. empfangen.


Richtung

---|---|---|--- Integer | `TERM_AKTIV` | 0 = Terminal inaktiv 1 = Terminal aktiv

TERM > HAUPT

Integer | `TERM_TEXID` | Enthält die TexId des Displays, wird vom Hauptrechner mitgeteilt.

HAUPT > TERM

Integer | `TERM_PLAYSND` | Spielt einen Ton auf dem Terminal ab: 0 = Tastenton 1 = Fehlerton 2 = Startsound 3 = Abfahrtton 4 = Testfunktion-starten-Ton 5 = Testfunktions-Tastenton

HAUPT > TERM

String | `TERM_REQSWITCH` | 0, 1 oder 2 für die Weichenanforderung. Das Terminal schickt zunächst den Tastendruck an den Hauptrechner, dieser entscheidet dann, ob eine Weichenanforderung ausgelöst wird und teilt das über diese Nachricht dem Terminal mit. Dies ist erforderlich, damit das Fahrzeug unterscheiden kann welcher [[20]] betätigt werden soll. Anschließend wird diese Message geschickt:

SendMessageToParentString(Self, 'SWITCH', value);

HAUPT > TERM

Integer | `BTNPRESS_TERM` | Tastendruck auf dem Terminal, wird nur gesendet wenn das Terminal auch tatsächlich Aktiv und nicht defekt ist:

1 = Taste "0" 2 = Taste "1" 3 = Taste "2" 4 = Taste "3" 5 = Taste "4" 6 = Taste "5" 7 = Taste "6" 8 = Taste "7" 9 = Taste "8" 10 = Taste "9" 11 = Taste "Eingabe/QUITT" 12 = Taste "Löschen" 13 = Taste "Weiche links" 14 = Taste "Weiche Gerade" 15 = Taste "Weiche rechts" 16 = Taste "Stumm" 17 = Taste "Unfall" 18 = Taste "Datum/Uhrzeit" 19 = Taste "Sprechwunsch" 20 = Taste "Ansage wiederholen" 21 = Taste "Aussen" 22 = Taste "[[21]] an [[22]]"

Der jeweilige Wert mit -1 Mulitpliziert wird gesendet, wenn die Taste wieder losgelassen wird. Drückt man auf dem Terminal die Taste mit der ID 4, wird nach dem loslassen die Message "-4" hinterhergeschickt. So weiß der Hauptrechner, ob eine Taste gedrückt gehalten wird. Deswegen ist auch die ID 0 nicht vergeben ![[23]]

TERM > HAUPT


So ist es möglich, die Grundfunktion des IBIS-Gerätes in einer völlig anderen Optik beizubehalten. Das Hauptgerät kann versteckt platziert und ein eigenes Terminal entwickelt werden. Die Anzahl an Terminals ist nicht begrenzt, es sollte aber nur eines zur gleichen Zeit aktiv sein - das muss das Fahrzeug steuern! Ist mehr als ein Terminal aktiv, ist die Anzeige dort identisch, es kann nicht unterschieden werden, welches Terminal aktiv ist.


Das Fahrzeug muss in diesem Fall natürlich aus dem Modulslot des Terminals die Weichenanforderung verarbeiten.

Das Terminal kann nur aktiv sein, wenn das Hauptgerät mit der Message `MAINSWITCH` ausgeschaltet wurde bzw. eben gar nicht erst eingeschaltet wurde.