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. Dies wird z.B. vom Handregler per Menuführung unterstützt.
- 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) Hinweis: bis Version 0.22 diente diese Variable bei einkompilierten DMX_ENABLED zum Ansteuern des DMX Ausgangs. Zugriffe auf Schaltdecoder mit einer größeren Adresse als der hier angegebenen wurden nicht als DCC-Befehl auf das Gleis gelegt, sondern intern zu einem Aufruf eines DMX-Makros umgeformt. Das DMX-Makro ist somit als virtueller Decoder ansprechbar, siehe Raumlichtsteuerung. Mit der Einstellung 0xffff ist dieses Umformen komplett abgeschaltet. Voreinstellung: 899 | ||||||||||||||||||||||||||||||||
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).
Changes
- 2008-07-20
CV36 (Externe Abschaltung) neu dazu - 2008-07-29
CV29 (Xpressnet Feedback-Mapping) neu dazu - 2008-08-29
CV25 Railcom Enable neu dazu