Konfigurieren von OpenDCC Z1 per Optionseinstellungen
-
OpenDCC kann sowohl beim Übersetzen als auch zur Laufzeit
flexibel auf die Bedürfnisse des jeweiligen Anwenders angepaßt
werden.
- Die Anpaßmöglichkeiten bei Übersetzen sind in der Regel in config.h zusammengefaßt. Hierunter fallen z.B. die Größen der internen Speicher und Kommandolisten sowie der generelle Support von bestimmten Funktionen und Protokollen wie z.B. Intellibox, Lenz, S88, DMX. Nähere Erläuterungen und Beispiele finden sich in config.h und config.c.
- Eine gewählte Konfiguration hat darüber hinaus noch weitere
Anpaßmöglichkeiten. Die sind durch interne, dauerhaft
gespeicherte Variablen während des Betriebes einstellbar.
Diese Variablen sind im EEPROM gespeichert. Generell gilt,
dass OpenDCC nach einem Verändern dieser Variablen neu
gestartet werden muß, damit die Änderungen wirksam werden.
Diese EEPROM-Variablen können mit unterschiedlichen Techniken beschrieben werden:- Vorbelegung beim Übersetzen. Der Inhalt des EEPROMs wird in der Datei config.h bzw. config.c festgelegt.
- Zugriff über den Befehl SO (P50X-ASCII-Mode) oder XSOset (0xa3) bzw. XSOget (0xa4) bei P50X-Binary-Mode.
- Zugriff über die Xpressnet-Befehle 0x23 0x28 und 0x23 0x29. Damit können CVs der Zentrale gelesen und geschrieben werden.
- Zugriff über den CV-Programmierbefehl einer virtuellen Lok (ab V0.14). Hierzu muß beim Starten von OpenDCC die GO-Taste gedrückt sein; anschließend werden die Programmierbefehle (DCC byteweise) auf die internen EEPROM Variablen umgelenkt. (Beispiel: Konfiguration mit Trainprogrammer vom PC aus)
Liste der Einstelloptionen (SO)
-
Im folgenden sind die default-Einstellungen der V0.15 mit einem
'*' gekennzeichnet.
Diese Voreinstellung ist aber leicht änderbar und wird sich auch ändern, daher diese Einstellungen vor der Benutzung immer kontrollieren.
SO# | SO-Name | Bedeutung | ||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | Version | Bytewert, ist dezimal zu interpretieren, z.B. 0x0E = Version 0.14 | ||||||||||||||||||||||||||||||||
1 | Baudrate | Diese SO enhält kodiert die
Default-Baudrate. Die gewählte Zuordnung entspricht dem
Lenzinterface:
Bei Abfrage über den XSOget-Befehl (0xa4) wird allerdings im Intellibox-Parser umcodiert. Grund war das Reconfigurieren der Schnittstelle nach dem Auslesen dieser SO durch Traincontroller. Also mußte in diesem Spezialfall die Zuordnung der Baudrate gemäß der Vergabe der Intellibox erfolgen:
|
||||||||||||||||||||||||||||||||
2 | OpenDCC Mode | Diese CV dient dazu, verschiedene
Ausstattungen und Fähigkeiten von OpenDCC zu
unterscheiden. (read only)
|
||||||||||||||||||||||||||||||||
3 | virtueller Decoder low | Bildet gemeinsam mit SO 4 einen 16-Bit Wert. | ||||||||||||||||||||||||||||||||
4 | virtueller Decoder high | 16-Bit-Wert: Bei Zugriff auf einen
Schaltdecoder mit dieser Adresse wird der Befehl nicht
als DCC-Befehl auf das Gleis gelegt, sondern intern wird
die Übertragung der Lokdatenbank
an das Xpressnet veranlasst. Voreinstellung: 2040 (also die oberste mögliche Adresse) |
||||||||||||||||||||||||||||||||
5 | Version | Bytewert, ist dezimal zu
interpretieren, z.B. 0x0E = Version 0.14 Hier steht der gleiche Wert wie bei CV0 (gespiegelt), um fallweise den Lese-Zugriff vereinfachen. |
||||||||||||||||||||||||||||||||
6 | CTS-Usage | 255, CTS is unused - diese SO ist für railware-Kompatibilität notwendig. Railware würde hier gerne 20 eingestellt sehen, aber bei OpenDCC will ich die CTS-Leitung nur für Kommunikation, nicht für Zustandsmeldungen (ist ja höchst unhygienisch ;-) verwenden. | ||||||||||||||||||||||||||||||||
7 | S88 Mode |
|
||||||||||||||||||||||||||||||||
8 | S88 Autoread | Zahl der Bytes, die bei S88 automatisch gelesen werden. Diese Zahl muß gleich der Summe aus SO9, SO10, SO11 sein. Innerhalb OpenDCC wird diese Variable nicht weiter ausgewertet (OpenDCC macht immer autoread), aber railware will es wissen :-). Es können max. 128 Bytes eingestellt werden. (siehe auch S88_SIZE_MAX in config.h) | ||||||||||||||||||||||||||||||||
9 | S88 Module 1 | Anzahl der Bytes auf dem S88-Strang
1 (X10 bzw. X22, "links", von vorne gesehen).
Ein übliches Modul hat 2 Byte. Sind z.B. 5 Module (mit
je 16 Bit) angeschlossen, so ist hier 10 einzustellen. Diese Variable kann auch mit X88PGet (0x9C-0x01) abgefragt und mit X88PSet (0x9D-0x01) gesetzt werden. default: 2 |
||||||||||||||||||||||||||||||||
10 | S88 Module 2 | Anzahl der Bytes auf dem S88-Strang
2 (X8 bzw. X23, "mitte"). Ein übliches Modul hat
2 Byte. Diese Variable kann auch mit X88PGet (0x9C-0x02) abgefragt und mit X88PSet (0x9D-0x02) gesetzt werden. default: 2 |
||||||||||||||||||||||||||||||||
11 | S88 Module 3 | Anzahl der Bytes auf dem S88-Strang
3 (X9 bzw. X24, "rechts", von vorne gesehen).
Ein übliches Modul hat 2 Byte. Diese Variable kann auch mit X88PGet (0x9C-0x03) abgefragt und mit X88PSet (0x9D-0x03) gesetzt werden. default: 2 |
||||||||||||||||||||||||||||||||
12 | Invertiere Weichenbefehl |
|
||||||||||||||||||||||||||||||||
13 | Weichenwiederholung | Ein Weichenbefehl wird bei der Gleisausgabe sooft wiederholt. Voreinstellung: 2 | ||||||||||||||||||||||||||||||||
14 | Weichenschaltzeit | Nach dieser Zeit (in Einheiten von 50ms) werden die Weichenspulen wieder abgeschaltet. OpenDCC schaltet die Weichenspulen nie selbst ab (das soll der Decoder machen). Ein vom Host erteilter Abschaltbefehl wird durchgereicht und ev. zur Lagerückmeldung der Weiche benutzt. Diese SO wird aber von railware abgefragt, deshalb gibt es sie. Voreinstellung: 100 | ||||||||||||||||||||||||||||||||
15 | Einschaltzustand | Hier wird die Protokollart bei
IB-Emulation festgelegt:
|
||||||||||||||||||||||||||||||||
16 | Offset für Weichenrückmeldung | Bei eingeschalteter
Weichenrückmeldung werden jeweils s88-Ereignisse
generiert, wenn die Weiche nicht geschaltet hat. Diese
werden unter Berücksichtigung dieses Offsets in den S88 Puffer eingetragen. Der
Offset ist in Einheiten von Bytes angegeben. Beispiel: Weiche 10 schalte nicht, der Offset sei auf 6 eingestellt. => es wird das Rückmeldebit 58 aktiviert (58 = 10 + 6*8). Es ist zu beachten, dass der S88-Puffer nur 1024 Bits groß ist, d.h. es können nicht alle möglichen Weichenadressen zurückgemeldet werden. Voreinstellung: 0 |
||||||||||||||||||||||||||||||||
17 | Weichenrückmeldung Mode | Mit dieser SO wird festgelegt, wie
die Weichenrückmeldung gemeldet wird:
|
||||||||||||||||||||||||||||||||
18 | Extended Resets | Mit dieser SO wird festgelegt, ob
und um wieviel die Zahl der Reset-Pakete vor einem
Programmierbefehl erhöht wird:
|
||||||||||||||||||||||||||||||||
19 | Extended Program Commands | Mit dieser SO wird festgelegt, ob
und um wieviel die Zahl der Programmierbefehle erhöht
wird:
|
||||||||||||||||||||||||||||||||
20 | PoM (Programmieren auf dem Hauptgleis) Wiederholung | Mit dieser SO wird festgelegt, wie
oft ein PoM-Befehl wiederholt wird. Voreinstellung 3. (lt. NMRA mindestens zweimal) |
||||||||||||||||||||||||||||||||
21 | Geschwindigkeitsbefehle Wiederholung | Mit dieser SO wird festgelegt, wie
oft ein Speedbefehl wiederholt wird. Voreinstellung 3. Dies sind die direkten Wiederholungen, welche möglichst bald erfolgen. Unabhängig davon erfolgt eine zyklische Auffrischung aller bisher benutzten Loks, sofern keine neuen aktuellen Befehle vorliegen. Befinden sich zu viele Loks in der Liste der direkten Wiederholungen, so wird diejenige mit dem kleinsten Restwiederholungszähler verdrängt. Dadurch passt sich OpenDCC auch bei großer Verkehrslast dynamisch an. |
||||||||||||||||||||||||||||||||
22 | Funktionsbefehl Wiederholung | Mit dieser SO wird festgelegt, wie
oft ein Funktions-Befehl wiederholt wird. Voreinstellung
0. Dies sind die direkten Wiederholungen, welche möglichst bald erfolgen. Unabhängig davon erfolgt eine zyklische Auffrischung aller bisher benutzten Loks, sofern keine neuen aktuellen Befehle vorliegen. |
||||||||||||||||||||||||||||||||
23 | Extra Präambelbits | Mit dieser SO wird festgelegt, ob
(und wieviele) zusätzliche Präambelbits erzeugt werden.
Voreinstellung 0. Wertebereich 0..10. Eventuell kann diese für die Programmierung von älteren (langsamen) Dekodern (wie z.B. Fleischmann FMZ) erforderlich sein. |
||||||||||||||||||||||||||||||||
24 | Voreinstellung DCC Format | Mit dieser SO wird festgelegt, in
welchem Format die Loks angesprochen werden.
Empfohlen ist die Einstellung 28 Fahrstufen - 128 Fahrstufen verursachen weniger Performance auf dem Gleis und werden oft auch nicht vom PC-Programm ausgenutzt. Z.B. benutzt TC offenbar nur 50 Fahrstufen. |
||||||||||||||||||||||||||||||||
25 | Voreinstellung BiDi (railcom) | Mit dieser SO wird festgelegt, ob
OpenDCC die Austastlücke (cutout) für NMRA-BiDi
(RailCom™) erzeugt.
|
||||||||||||||||||||||||||||||||
26 | Voreinstellung Fast Clock | Mit dieser SO wird festgelegt, ob
und mit welchem Beschleunigungsfaktor OpenDCC eine
Modellbahn-Uhrzeit (DCC FAST CLOCK) erzeugt. Die Uhrzeit
wird als DCC Nachricht bzw. Xpressnet-Nachricht erzeugt.
Diese Nachrichten sind (bis jetzt) proprietäre
Erweiterungen der Standard, entsprechende
Erweiterungswünsche wurden an die Gremien gesandt.
Voreinstellung: 8 |
||||||||||||||||||||||||||||||||
29 | Xpressnet Feedback Mapping | Mit dieser SO wird festgelegt, wie
Weichen und Rückmelder bei einem Abfragebefehl am
Xpressnet behandelt werden. Wegen der Einschränkungen
des Protokolls ist hier eine Unterscheidung nötig.
Hinweis: die Zentrale ordnet nur die Adressen und Statusbits der Meldebefehle entsprechend der Einstellung zu, die Befehle selbst werden dadurch nicht behindert. Wenn also z.B. im gemischten Betrieb die Weiche 257 geschaltet wird, so diese Schaltinformation normal durchgereicht - und überlagert den Adressbereich der Rückmelder. |
||||||||||||||||||||||||||||||||
30 | Timing S88 | Mit dieser SO wird festgelegt, wie
lang die Taktpulse am S88-Bus sein sollen. Die Einheit
ist 10us; Beim Lesen am S88-Bus wird jeweils ein Puls
erzeugt, dessen High und Lowzeit hier vorgegeben wird.
Voreinstellung 2, also 20µs High und 20µs Low. Hintergrund: manche Module sind mittels eines Prozessors implementiert und sind je nach Implementierung nicht in der Lage ein schnelles Auslesen zu unterstützen. Z.B. hat sich 2 als zu schnell für die Module von railway-lauf.de erwiesen. Siehe hierzu auch die Erläuterung bei S88-N Diese Zahl sollte nicht zu groß gewählt werden, da die Zeiten mittels busy-waiting implementiert sind und bei Werten über 20 der Durchsatz von OpenDCC absinken kann. |
||||||||||||||||||||||||||||||||
31 | Anzahl Weichenrückmelder im S88 | Anzahl der Bytes auf dem
(virtuellen) S88-Strang der Weichenrückmelder. Je 8
Weichenrückmelder benötigen 1 Byte, d.h. die höchste
vorkommende (Weichenadresse / 8) ist hier einzutragen.
Es ist zu beachten, dass der S88-Puffer nur 1024 Bits
groß ist, d.h. es können nicht alle möglichen
Weichenadressen zurückgemeldet werden. Diese Variable kann auch mit X88PGet (0x9C-0x04) abgefragt und mit X88PSet (0x9D-0x04) gesetzt werden. default: 0 Allgemeine Erläuterungen zu den S88-Melderbit: Es gibt insgesamt 5 Quellen für Melderbits: 3 echte Hardwarestränge und die Weichenrückmeldung und Meldungen, welche über Xpressnet eintreffen.
|
||||||||||||||||||||||||||||||||
32 | Summen-Anzahl der Melderbits | Angabe in Bytes; Es ist zu beachten,
dass der S88-Puffer nur 1024 Bits groß ist, also hat
diese Zahl einen Wertebereich von 0..128. default: 0 Erläuterungen: Wenn keine Melderquellen außerhalb der Zentrale vorhanden sind, dann errechnet sich die intern verwendete Summenanzahl aus den SO-Einstellungen der S88-Stränge und der Weichenrückmeldung. In diesem Fall muß hier nichts eingestellt werden. Sollten jedoch Melderbits auch über Xpressnet eintreffen können (von denen die Zentrale ja erst mal nicht weiß), so muß der der Bereich dieser Melderbits auch der Zentrale und den Auswerteroutinen bekannt gemacht werden. Dies geschieht mit dieser CV. (enthalten ab V0.23.6, XP-Version) |
||||||||||||||||||||||||||||||||
33 | I2C vorhanden | Ein angeschlossenes I2C-Device (wie z.B. Märklin Keyboard) kennt OpenDCC nicht, daher wird diese Anfrage von railware mit 0 beantwortet. | ||||||||||||||||||||||||||||||||
34 | Abschaltzeit bei Kurzschluß Hauptgleis, default: 6 | Hier wird die Zeit eingestellt, die
OpenDCC nach Erkennen eines Kurzschlusses bis zum
Abschalten verwendet. Einheit: 5ms; Die Defaulteinstellung von 6 bedeutet also Abschalten nach 30ms. |
||||||||||||||||||||||||||||||||
35 | Abschaltzeit bei Kurzschluß Programmiergleis, default: 8 | Hier wird die Zeit eingestellt, die
OpenDCC nach Erkennen eines Kurzschlusses bis zum
Abschalten verwendet. Einheit: 5ms; Die Defaulteinstellung von 8 bedeutet also Abschalten nach 40ms. |
||||||||||||||||||||||||||||||||
36 | Externe Abschaltung erlaubt, default: 0 | Hier kann eingestellt werden, ob
OpenDCC über den externen Eingang (Ctrl In) abgeschaltet
wird.
|
||||||||||||||||||||||||||||||||
37 | Totzeit der externen Abschaltung nach Start, default: 6 | Wenn OpenDCC frisch vom Zustand OFF in den Zustand ON (RUN) gewechselt hat, dann kann es ein paar ms dauern, bis die externe Abschaltung (welche z.B. durch abgeschaltete Booster ausgelöst wurde) wieder aufgehoben ist. Um nun nicht sofort nach Start wieder eine Abschaltung zu verursachen, ist es erforderlich, dass die Zentrale Abschaltanforderungen direkt nach dem Start ignoriert. Hier kann die Zeitdauer dieses Intervalls eingestellt werden. Einheit 5ms, die default-Einstellung von 6 entspricht also 30ms. (ab V0.17 / XP: V0.21) | ||||||||||||||||||||||||||||||||
38 | Power Up Mode | 0: OpenDCC Z1 startet mit
abgeschaltetem Gleissignal. 1: OpenDCC Z1 startet mit eingeschaltetem Gleissignal. (enthalten ab FW 0.23.11) Preset : 0 |
||||||||||||||||||||||||||||||||
39 | Seriennummer, default: 1 | Hier kann eine Seriennummer hinterlegt werden, damit lassen sich verschiedene Boxen an einem PC unterscheiden. Sonst hat diese Angabe keine Bedeutung. |
Lokdekoderformat
-
Normalerweise fragen PC-Programme bei der Zentrale nach, in
welchem Format die jeweilige Lok angesprochen werden soll.
OpenDCC meldet alle Loks standardmäßig mit dem in CV24
angegebenen Format zurück. Soll eine Lok anders angesprochen
werden, so muß für diese Lok eine Ausnahmeregel definiert
werden. Dies geschieht entweder über XLokCfgSet oder über CV40
(und fortfolgende).
Empfohlen ist die Einstellung 28 Fahrstufen - 128 Fahrstufen verursachen weniger Performance auf dem Gleis und werden oft auch nicht vom PC-Programm ausgenutzt. Z.B. benutzt TC offenbar nur 50 Fahrstufen.
Lokdaten bei OpenDCC (Atmega32) | ||||||||
---|---|---|---|---|---|---|---|---|
SO# | SO-Name | Bedeutung | ||||||
40 | Lok mit abweichendem Format (low) | bildet gemeinsam mit SO41 einen 16 Bit Wert | ||||||
41 | Lok mit abweichendem Format (high) | bildet gemeinsam mit SO40 einen 16
Bit Wert, dieser wird wie folgt interpretiert:
|
||||||
42 | Lok mit abweichendem Format (low) | bildet gemeinsam mit SO43 einen 16 Bit Wert | ||||||
43 | Lok mit abweichendem Format (high) | bildet gemeinsam mit SO42 einen 16 Bit Wert | ||||||
usw. | 64 SO-Paare | |
Lokdaten bei OpenDCC_XP (Atmega644p) | ||||||||
---|---|---|---|---|---|---|---|---|
SO# | SO-Name | Bedeutung | ||||||
40 | Lok mit abweichendem Format (low) | bildet gemeinsam mit SO41 einen 16 Bit Wert | ||||||
41 | Lok mit abweichendem Format (high) | bildet gemeinsam mit SO40 einen 16
Bit Wert, dieser wird wie folgt interpretiert:
|
||||||
42, 43 | Pict-ID | Kennung des zur Lok gehörigen
Bildes; CV42 enthält das LowByte, CV43 das Highbyte (ab V0.22 enthalten) |
||||||
44-53 | Lokname | Abgelegt als 8-Bit ASCII Wert | ||||||
54 | Lok mit abweichendem Format (low) | bildet gemeinsam mit SO43 einen 16 Bit Wert | ||||||
55 | Lok mit abweichendem Format (high) | bildet gemeinsam mit SO42 einen 16 Bit Wert | ||||||
usw. | 64 Einträge | |
Die wichtigsten Compile-Optionen
- #define PARSER
INTELLIBOX oder LENZ: definiert das Protokoll zum Host, Intellibox ist default. - #define SHORT_TURNOFF_TIME
15ms, Zeit, bis die Kurzschlußabschaltung anspricht. Diese wirkt zusätzlich zur Strombegrenzung. - #define DMX_ENABLED
0: kein DMX (default), 1: inkl. Code für DMX - #define STORE_TURNOUT_POSITIONS
0: Weichenpositionen werden nicht gespeichert.
1: Weichenpositionen werden gespeichert (default). - #define TURNOUT_FEEDBACK_ENABLED
0: normaler S88-Betrieb (default)
1: Zusätzlicher Code, um statt externer S88 Ereignisse Weichenlagen zurück zu melden (max. 1024 und sofern aktiviert) - #define TURNOUT_FEEDBACK_ACTIVATED
0: Die Weichenrückmeldung ist nicht aktiviert.
1: Die Weichenrückmeldung ist aktiviert. - #define DCC_DEFAULT_FORMAT
DCC14
DCC28(default)
DCC128
Wenn eine neue Lok aufgerufen wird, dann wird sie in diesem Format angesprochen. - #define DCC_FAST_CLOCK
0: 'normales' OpenDCC
1: 'es wird DCC Fast Clock unterstützt. - #define XPRESSNET_ENABLED
0: ohne Xpressnet Code
1: mit Xpressnet, inklusive Handling beider Interfaces (PC und Xpressnet) parallel. - #define LOCO_DATABASE
NAMED: Datenbank mit Adresse, Loknamen und Fahrstufen. LOK_NAME_LENGTH ist die Anzahl der Zeichen.
UNNAMED: Datenbank mit Adresse und Fahrstufen. - #define LOCO_DATABASE_XMT
0: Übertragung der Loco Database per LOCXMT Befehl.
TRAINCTRLR: Übertragung der Loco Database zusätzlich auch per Weichenbefehl auf Adresse 2040 möglich (virtueller Dekoder).