Standard: Modul-Slots: Unterschied zwischen den Versionen
de_>DrBlackError (Die Seite wurde neu angelegt: „In diesem Artikel werden alle LOTUS-weit als Standard definierten Modulslot-Informationen aufgelistet. == Allgemeine Broadcast-Standards == Nicht alle der genannten Broadcasts werden bereits vom Standardcontent unterstützt. Die folgenden Broadcasts sind auf der BusID <code>GEN</code> standardisiert: *<code>BATTERYSWITCH</code> (integer): Ein- und Ausschaltbefehl des Batteriehauptschalters (oder wahlweise Abklemmen der Batterie) *<code>MAINSWITCH</code…“) |
K (1 Version importiert: Init) |
Aktuelle Version vom 23. Oktober 2023, 22:03 Uhr
In diesem Artikel werden alle LOTUS-weit als Standard definierten Modulslot-Informationen aufgelistet.
Allgemeine Broadcast-Standards
Nicht alle der genannten Broadcasts werden bereits vom Standardcontent unterstützt.
Die folgenden Broadcasts sind auf der BusID GEN
standardisiert:
BATTERYSWITCH
(integer): Ein- und Ausschaltbefehl des Batteriehauptschalters (oder wahlweise Abklemmen der Batterie)MAINSWITCH
(integer): Ein- und Ausschalt-Befehl (1 bzw. 0) des Hauptschalters (im Allgemeinen Zündschloss o.Ä. bzw. Richtungswender).LIGHT
(single): Die Helligkeit der Anzeigen-Beleuchtung wird als Value empfangen und wird in die zuständige Variable geschrieben.VOLTAGE
(single): Aktuell vorliegende Systemspannung, 1.0 = SollspannungVEH_NUMBER
(string): Sendet im ersten SimStep die Wagennummer als Broadcast
Allgemein zum FIS
Dank des Broadcast-Systems ist es immer möglich, dass selbst erstellte Bordrechner und selbst erstellte Anzeigen weitere Daten übertragen als die hier aufgeführten! Auf diese Weise kann natürlich ein komplexeres FIS auf den bestehenden Fahrzeugen eingerichtet werden.
Die hier aufgeführten Broadcast-Sendungen und -Empfänge sind jedoch jene, welche zur Anwendung kommen müssen, wenn neu entwickelte Module zu den Standard-Content-Modulen kompatibel sein sollen.
Außenanzeigen
Bei den Anzeigen wird stets unterschieden zwischen einer Master-Anzeige, welche die gesamte Script-Logik und die Schreib-Befehle enthält, und Slave-Anzeigen, die keinerlei innere Logik enthalten, sondern lediglich von der Master-Matrix den Textur-Index erhalten, so dass sie dieselbe Textur wie die Master-Anzeige verwenden (und somit dasselbe anzeigen). Der Vorteil ist hierbei, dass nur eine einzige Textur generiert wird, die dann von allen Anzeigen gemeinsam genutzt wird.
Geometrie
Die Anzeigen sind flach und auf den Mittelpunkt der eigentlichen Matrix ausgerichtet. Sie sind so ausgerichtet wie die Front-Matrix. Wichtig ist, dass sie etwas zu breit und etwas zu hoch für den Anzeigen-Kasten vom GT6N sind, damit keine Lücken entstehen und sie auch auf anderen Fahrzeugen eingesetzt werden können.
- Frontanzeige beim Bus:
TERMINUSDISPLAY_LARGE
(kein Slave vorgesehen) - Frontanzeige beim GT6N (als Master) und Seitenanzeigen bei Bus und GT6N (jeweils als Slave):
TERMINUSDISPLAY
undTERMINUSDISPLAY_SLAVE
- Linien-Anzeige beim GT6N und beim Bus (nur Slave):
LINEDISPLAY_SLAVE
(die Z-Koordinaten der Linien-Anzeige sind identisch mit denen der Seitenanzeige) - Schmale Anzeige für Linie und Ziel, z.B. für Busse, die am Heck auch nochmal das Ziel anzeigen (nur Slave):
TERMINUSDIRPLAY_SLAVE_NARROW
(die Z-Koordinaten der schmalen Anzeige sind identisch mit denen der Seitenanzeige) - Reine Zielanzeige, z.B. für Busse mit aufgeteilten Seitenanzeigen (nur Slave):
TERMINUSONLYDISPLAY_SLAVE
Die Maße sind identisch zu denen der Seitenanzeige, abgesehen natürlich von der Breite der Anzeige selbst – diese ergibt sich über die Skalierung und Höhe der reinen Zielanzeige.
Script-Kommunikation (Master)
Per Broadcast werden die folgenden Befehle unter der BusID PIS
empfangen:
LINE
(integer): Empfängt als Value die Liniennummer (ohne irgendwelche Kurs- oder Sonderzeichen-Information!). Es findet unmittelbar eine Umwandlung in einen String unter Berücksichtigung des aktuellen Sonderzeichen-Codes auf Basis der FIS-Gruppe und dann die Aktualisierung der Anzeige statt.TERMINUS_LISTINDEX
(integer): Empfängt als Value den Index (nicht den Code!) der soeben gewählten Ziel-Haltestelle. Die entsprechenden Strings werden der FIS-Gruppe entnommen und es findet auf deren Basis unmittelbar eine Aktualisierung der Anzeige statt.SPECIALCHAR
(integer): Empfängt als Value den Sonderzeichen-Code. Es findet keine Aktualisierung der Anzeige statt.
Per Broadcast wird der folgende Befehl unter der BusID GEN
empfangen:
LIGHT
(single): Die Helligkeit der Anzeigen-Beleuchtung wird als Value empfangen und wird in die zuständige Variable geschrieben.MAINSWITCH
(integer): Ein Ein- und Ausschalt-Befehl (1 bzw. 0) wird als Value empfangen und schaltet die Anzeige ein- bzw. aus. Dieser Befehl wird für gewöhnlich nur von LED- oder LCD-Anzeigen verarbeitet, die dementsprechend "ausschalten" können. Reine Rollband-, Flipdot- oder Fallblattanzeigen benötigten den Befehl natürlich nicht.
Direkt vom Fahrzeug empfangen wird folgender Befehl:
INITSTRING
(string): Der String, der auf die Anzeige geschrieben werden soll, wenn sonst nichts geschrieben werden soll (z.B. IBIS auf 0 zurücksetzen).
Script-Kommunikation (Slave)
Die einzigen Befehle, die die Slave-Anzeigen direkt empfangen, sind der LIGHT
- und der MAINSWITCH
-Broadcast. Ansonsten gibt es noch "interne" Broadcasts zwischen den Anzeigen, die aber nicht standardisiert werden müssen. Hier müssen lediglich die Anzeigen untereinander aufeinander abgestimmt werden.
Innenanzeigen
Bei den Innenanzeigen wird das selbe Master-Slave-System wie bei den Außenanzeigen verwendet. Die Modulklasse für die Master lautet STOPDISPLAY_MASTER
, die der Slaves STOPDISPLAY_SLAVE
.
Geometrie
Die dargestellte Innenanzeige ist die vom GT6N. Der DL wird jedoch andere Innenanzeigen erhalten, deren Spezifikationen aber dieselben sein werden.
Script-Kommunikation
Wichtig: Momentan empfangen die Anzeigen noch per Broadcast den Haltewunsch. Das wird aber geändert werden müssen, damit in verschiedenen Bereichen verschiedene Haltewunsch-Zustände angezeigt werden können! Aus dem Grunde wird die Haltewunsch-Spezifikation hier noch nicht aufgelistet.
Es werden per Broadcast die folgenden Befehle über die BusID PIS
empfangen:
STOP_SEQ
(integer): Die "Position" der aktuellen Haltestelle in der Haltestellenliste der aktuell eingestellten Route ("die wievielte Haltestelle es ist")ROUTE_LISTINDEX
(integer): Der Index der eingestellten RouteTERMINUS_LISTINDEX
(integer): Der Index des eingestellten ZielesLINE
(integer): Die eingestellte LinieDOORSOPEN
(integer): Es wird eine 1 empfangen, wenn die Türfreigabe gegeben wird
Direkt vom Fahrzeug empfangen wird folgender Befehl:
INITSTRING
(string): Der String, der auf die Anzeige geschrieben werden soll, wenn sonst nichts geschrieben werden soll (z.B. IBIS auf 0 zurücksetzen).
IBIS / Bordrechner GT6N
Die Modulklasse für den Bordrechner des GT6N lautet IBIS_GT6N
.
Geometrie
Die Größe und Ausrichtung des IBIS kann folgender Grafik entnommen werden; die Z-Achse zeigt dabei in Richtung des Betrachters, das IBIS liegt gewissermaßen "auf dem Boden":
Script-Kommunikation
Das IBIS sendet die Aufforderungen an Innen- und Außenanzeigen mittels Broadcasts, die unter der BusID PIS
verteilt werden:
LINE
(integer): Sendet als Value die Liniennummer (ohne irgendwelche Kurs- oder Sonderzeichen-Information!), die an den Anzeigen angezeigt werden soll. Die Aktualisierung der Anzeigen wird hiermit angefordert.TERMINUS_LISTINDEX
(integer): Sendet als Value den Index (nicht den Code!) der soeben gewählten Ziel-Haltestelle, die an den Anzeigen angezeigt werden soll. Die Aktualisierung der Anzeigen wird hiermit angefordert.SPECIALCHAR
(integer): Sendet als Value den Sonderzeichen-Code. Das Umwandeln desselben in einen Sonderzeichen-String erfolgt erst in der Matrix. Die Aktualisierung der Matrix wird nicht angefordert! Erst eine der oberen Messages löst die Aktualisierung der Anzeigen aus.ROUTE_LISTINDEX
(integer): Index der aktuell eingestellten Route, vor allem für die InnenanzeigenSTOP_SEQ
(integer): Sendet die Information, welche Haltestelle angezeigt werden soll, wobei übertragen wird, um die wievielte Haltestelle es sich entlang der aktuellen Route handelt.
Ebenfalls per Broadcast sendet das IBIS die Befehle für die akustischen Ansagen, die vom Fahrzeug-Hauptscript ausgeführt werden, ebenfalls über die BusID "PIS":
ANNOUNCE_USERID
und ANNOUNCE_SUBID (beide integer): Erst muss die UserID der Sound-ContentID übertragen werden, dann die SubID. Sobald die SubID übertragen wurde, muss die Ansage beginnen.ANNOUNCE_GLUED
(string): Zeichenkette bestehend aus abwechselnd Content-UserID und Content-SubID, getrennt durch ein Pluszeichen "+", z.B.:1000+1231004+1000+1231006+
. Es sollen die durch die angegebenen ContentIDs identifizierten Sounds aneinander gehängt und dann abgespielt werden. ACHTUNG! Die Zeichenkette muss mit einem "+" enden!
Wenn eine Weiche gestellt werden soll, dann sendet das Gerät per direkte Übertragung den folgenden Befehl:
SWITCH
(integer): Die Richtung ist wie folgt kodiert: 0 = links, 1 = rechts, 2 = geradeaus
Die folgenden Befehle versorgen das Fahrzeug mit Linie und Route, damit dieses die Daten an die Balisen weiterleiten kann (ebenfalls direkte Übertragung):
LINE
(integer)ROUTE
(integer)
Die folgenden Befehle werden über eine explizite Message vom Fahrzeug an das Gerät gesendet (kein Broadcast!):
MAINSWITCH
(integer): Value = 0 schaltet das Gerät aus, Value = 1 schaltet es ein.VELOCITY
(single): Wie schnell rollt/bewegt sich das Fahrzeug (m/s) ? Negative Werte sind für Rückwärtsfahrt vorzusehen.ATBUSSTOP
(integer): Befindet sich das Fahrzeug an einer Bushaltestelle, ermittelt bspw. über die Türfreigabe? 0 = nein, 1 = ja.
Sollen abweichende Systeme von Steuergerät/Anzeigen eingebaut werden, können ohne Probleme weitere Broadcast-Befehle eingefügt werden; durch die Broadcast-Charakteristik müssen diese nicht mit dem GT6N-Hauptscript kompatibel sein oder von diesem berücksichtigt werden.
Eingabegerät und Fahrscheindrucker beim Bus
Die Modulklasse für den Bordrechner des ND313 lautet ITCS_TERMINAL
.
Geometrie
Der Ursprung des Gerätes muss mittig platziert werden. Die Ausrichtung ist der folgenden Grafik zu entnehmen:
Script-Kommunikation
Die Script-Kommunikation erfolgt genauso wie mit der des GT6N-Steuergerätes (abgesehen von den Weichenstellbefehlen, natürlich ;-) )
Motor
Insbesondere bei Fahrzeugen mit Verbrennungsmotor (Straßenfahrzeug oder Diesellok oder -triebwagen) wird der Motor mit seinem Sound in ein separates Modul verlagert, damit man die Möglichkeit hat, ohne Probleme einen alternativen Motor (andere PS-Zahl, anderes Verhalten und/oder anderer Sound) einzubauen. Bei Elektromotoren wird das Modulsystem vermutlich nicht zur Anwendung kommen, da hier die Ansteuerung eine viel größere Rolle spielt, sowohl bei der Leistung als auch beim Sound. Hier wird wohl eher auf Fahrzeugkonstanten zurückgegriffen.
Die Modulklasse für einen klassischen Motor lautet ENGINE_PISTON
(d.h. Kolbenmotor, also Benziner oder Diesel-Motor). Für alle Fälle seien hier aber auch für Elektromotoren die Klasse ENGINE_ELECTRIC
und für Gasturbinen die Klasse ENGINE_TURBINE
definiert.
WICHTIG: Damit die ND313-Scripts ohne Modifikationen funktionieren, muss der Motor auf Slot Nr. 0!
Geometrie
Die Geometrie ist komplett irrelevant, da es hierbei um keinerlei Darstellung geht! Soll eine zu öffnende Motorklappe realisiert werden, dann muss das dahinter platzierte Mesh vom Bus selbst mitgeliefert werden! Für gewöhnlich verwendet man seitens des Motor-Moduls einen sehr kleinen Würfel und platziert seitens des Busses den Modul-Slot irgendwo so, dass er nicht sichtbar ist, aber der Sound trotzdem aus der richtigen Richtung hörbar ist.
Script-Kommunikation
Bei der gesamten Kommunikation wird ohne Broadcasts gearbeitet und erfolgt immer über das Fahrzeug selbst. Es gibt keine Kommunikation zwischen Motor und Getriebe direkt:
- Einmalig beim ersten SimStep-Durchlauf wird vom Motor mit
INV_J
(single) das Trägheitsmoment gesendet, damit der Antriebsstrang bei seinem Verhalten damit rechnen kann. - Dauerhaft sendet der Motor mit
M
(single in Newtonmetern) das aktuelle Drehmoment, was er leisten kann (welches über Gaspedalstellung, Drehzahl usw. berechnet wird) - Dauerhaft empfängt der Motor mit
THROTTLE
(single, von 0 bis 1) die aktuelle Gaspedalstellung (aber das, was davon wirklich am Motor ankommt, also inklusive Eingriff durch ASR usw.) - Dauerhaft empfängt der Motor mit
RPM
(single, in Umdrehungen pro Sekunde) die aktuelle Drehzahl, die der Antriebsstrang am Motorflansch vorgibt - Dauerhaft empfängt der Motor mit
STARTERSHUTOFF
(integer) die Position von Anlasser und Motorabstellung: 1 = Anlasser soll aktiv sein, -1 = Motorabschaltung soll aktiv sein, 0 = nichts
Getriebe
Das Getriebemodul steuert, wie die Kraft auf die Räder wirkt und wie schnell sich der Motor dreht, abhängig von Wandler, Kupplung und eingelegtem Gang. Die Modulklasse ist GEARBOX
, egal, ob es sich um ein Schaltgetriebe oder ein Automatikgetriebe handelt.
WICHTIG: Damit die ND313-Scripts ohne Modifikationen funktionieren, muss das Getriebe auf Slot Nr. 1!
Geometrie
Hierbei verhält es sich so wie beim Motor: Die Position muss stimmen, damit der Sound aus der richtigen Richtung zu hören ist, aber das Mesh muss versteckt sein und entsprechend klein gewählt werden.
Script-Kommunikation
Auch beim Getriebe wird ohne Broadcasts gearbeitet und die Kommunikation wird immer über das Fahrzeug selbst geleitet:
- Dauerhaft sendet das Getriebe mit
MODE
(integer) den aktuellen Modus (-1 = R, 0 = N, 1 = 1, 2 = 1+2, 3 = 1+2+3, 4 = D), d.h. den Modus, in dem das Getriebe tatsächlich ist. Beispielsweise gibt es eine Latenz zwischen dem Drücken des Gangwahltasters und dem Wechsel des Modus' im Getriebe. Oder aber schaltet das Getriebe gar nicht in den Modus D (selbst wenn man den Gangwahltaster drückt), wenn der Motor nicht läuft. - Dauerhaft sendet das Getriebe mit
GEAR_CURRENT
(integer), welcher tatsächliche Gang eingelegt ist. (-1 = Rückwärts, 0 = Leerlauf, 1 = 1. Gang, 2 = 2. Gang usw.) - Dauerhaft sendet das Getriebe mit
RPM_INPUT
(single, Umdrehungen pro Minute) die Drehzahl, welches der Getriebeeingang hat, also die Welle zum Motor hin. Das ist derjenige Wert, der vom Fahrzeug dem Motor übergeben wird. - Dauerhaft sendet das Getriebe mit
M_OUTPUT
(single, Newtonmeter), welches Drehmoment am Getriebeausgang entsteht. Dieser Wert muss dann vom Fahrzeug entsprechend des verbauten Differenzials (wo üblicherweise eine weitere Übersetzung verbaut ist) und das Raddurchmessers umgerechnet werden, um die Kraft der Räder auszurechnen, mit der diese den Bus antreiben sollen. - Das Getriebe empfängt mit
MODE
(integer), welcher Modus eingestellt werden soll. Kodiert ist der Wert so wie die gleichnamige Sende-Information (s.o.). - Das Getriebe empfängt mit
RETARDER
(integer), welche Retarder-Stufe aktiviert werden soll. - Das Getriebe empfängt mit
INV_J_INPUT
(single), welche Trägheit der Motor (plus ggf. vorhandene Zusatzbauteile) hat - Das Getriebe empfängt mit
RPM_OUTPUT
(single, Umdrehungen pro Minute), welche Drehzahl der Getriebeausgang haben soll. Da der Getriebeausgang fest mit Differenzial und Rädern verbunden ist, muss das Fahrzeugscript die Geschwindigkeit der Räder über den Raddurchmesser und die Differenzialübersetzung hin zum Getriebe umrechnen. Diese Information erreicht dann das Getriebe. - Das Getriebe empfängt mit
M_INPUT
(single, Newtonmeter) das Drehmoment, welches der Motor liefert - Das Getriebe empfängt mit
THROTTLE
(single, 0...1) die Stellung des Gaspedals, da hiervon die Schaltpunkte abhängig gemacht werden.
Entwerter
Wer möchte, kann seine Entwerter ebenfalls modular konfigurieren. Hierzu bitte folgende Konventionen einhalten:
Klasse: TICKETSTAMPER
Geometrie: Schlitz in Richtung positiver Y-Achse, Mittelpunkt "hinten unten":
ACHTUNG: Unsere Fahrzeuge haben bisher keine modularen Entwerter.