User Tools

Site Tools


loconet:ln-pe-de

LocoNet Protokoll

LocoNet® Personal Use Edition 1.0 SPECIFICATION:
Digitrax Inc., Norcross GA 30071
October 16, 1997
©Copyrighted material, all rights reserved.

Diese Wiki-Seite basiert auf http://www.digitrax.com/support/loconet/loconetpersonaledition.pdf



Prüfsumme (Checksum)

Die Daten-Bytes auf dem LocoNet® sind als 8-Bit-Daten definiert, die mit dem als letztes Bit im Oktett übertragenen höchstwertigen Bit (ms) eine Befehlscode-Markierung (OPCODE) erhalten. Wenn das ms-Bit (D7) 1 ist, werden die 7 geringwertigeren Bits als Netzwerk-OPCODE interpretiert. Dieses OPCODE-Byte ist immner nur einmal in einer gültigen Nachricht enthalten und ist das erste Byte einer Nachricht. In allen überigen Bytes der Nachricht muss inklusive des letzten Prüfsummenbytes (CHECKSUM) das höchstwertige Bit auf 0 gesetzt sein. Die CHECKSUM ist das Einer-COMPLEMENT eines Exclusiv-Oder über alle Bytes der Nachricht, außer der CHECKSUM selbst. Um die Datengenauigkeit zu prüfen, sind alle Bytes einer korrekten Nachricht exclusiv-oder-verknüpft. Wenn der resultierende Wert hexadezimal "FF" ist, werden die Daten als richtig akzeptiert.

Nachrichtenlänge (Message Length)

Die OPCODES werden auf eine bestimmte Nachrichtenlänge geprüft und die nachfolgende Nachricht wird in der entsprechenden Länge erwartet. In den Daten-Bits D6 und D5 ist die Nachrichtenlänge kodiert. D3=1 bedeutet "Folge-Nachricht / Antwort:

D7 D6 D5 D4 D3 D2 D1 D0
1 0 0 F D C B A Nachricht hat 2 Bytes, inkl. Prüfsumme
1 0 1 F D C B A Nachricht hat 4 Bytes, inkl. Prüfsumme
1 1 0 F D C B A Nachricht hat 6 Bytes, inkl. Prüfsumme
1 1 1 F D C B A Nachricht in N Bytes, wobei das nächste Byte in der Nachricht ein 7-Bit-Zählwert ist (BYTE COUNT)

A,B,C,D u. F sind Bits, mit denen 32 OPCODES je Nachrichtenlänge verfügbar sind.

Wiederholungs-Zeitschlitze (Refresh Slots)

Das Modell des Wiederholungs-Stapels im Steuerungssystem (MASTER) ist eine Anordnung von bis zu 120 Schreib/Lese-Zeitschlitzen (SLOTs). Die Adresse eines SLOT ist ein prinzipieller Bestandteil und ist allgemein das 2. Byte bzw. der 1. Parameter der Nachricht zum MASTER. Ein Wiederholungs-SLOT enthält bis zu 10 Daten-Bytes, die zu einer Lokomotive gehören und damit auch zu einem Auftrag im DCC-Gleissignal-Wiederholung-Stapel. Die meisten Mobil-Decoder oder Lokomotiv-Operationen verarbeiten den SLOT im Zusammenhang mit der zu steuernden Lokomotive. Die Nummer des SLOT ist eine "ID", vergleichbar mit dem Datei-Identifikator "file handle" zur Markierung und Verarbeitung von Dateien in einer DOS-PC-Umgebung (Originaltext von 1997!). SLOT-Adressen von 120-127 sind für die Steuerung von MASTER und System reserviert. SLOT #124 ist Schreib/Lesezugriffen zum DCS100-Programmiergleis zugewiesen und das Format der 10 Bytes ist nicht identisch mit einem "normalen" SLOT. Siehe unten.


Standard-Adress-Auswahl (Standard Address Selection)

Um einen MOBILE- oder LOCOMOTIVE-Decoder-Auftrag im Wiederholungs-Stapel anzufragenn, fordert eine Regler-Einheit (FRED usw.) eine Lokomotiv-Adresse (LOCOMOTIVE) an (opcode <BF>,<loco adr hi>,<loco adr lo>, <chk>). Der MASTER (oder PC) antwortet mit "SLOT Daten lesen" (SLOT DATA READ) für den SLOT (opcode <E7>,,), was diese Lokomotiv-Adresse und alle ihre Status-Informationen enthält. Wenn die Adresse aktuell in keinem SLOT enthalten ist, lädt der MASTER diese neue Lokomotiv-Adresse (NEW) in einen neuen SLOT (Geschwindigkeit = 0, vorwärts, Licht/Funktionen OFF und 128 Fahrstufen-Modus) und sendet es als "SLOT Daten lesen" zurück. Wenn kein freier SLOT mehr zur Verfügung steht, die neue (NEW) Lokomotiv-Adresse zu laden, wird mit "langer Bestätigung" (opcode <B4>,) und Fehlercode 0 ("fail") geantwortet.

Hinweis: Reguläre kurze (SHORT) 7-Bit-NMRA-Adressen werden mit <loco-adr hi>=0 angegeben. Die analogen ("zero streched") Lokomotiven werden ausgewählt, indem beide Werte <loco adr hi>=<loco adr lo>=0 sind. <loco adr lo> ist immer ein 7-Bit-Wert. Wenn <loco adr hi> kein 0-Wert ist, generiert der MASTER 14-Bit- bzw. lange (LONG) Adress-Pakete die alle 14 Bit von <loco adr hi> und <loco adr lo> verwenden, wobei <loco adr hi> die höherwertigen Bits enthält. Der DT200-Master bearbeitet keine 14-Bit-Adress-Anfragen und berücksichtigt <loco adr hi> immer als 0. Es können aber die <TRK>-Rückmelde-Bits geprüft werden, um zu zu erkennen, ob der MASTER ein DT200 ist.

Eine Regler-Einheit muß die "SLOT READ DATA"-Bytes prüfen, um herauszufinden, wie die MASTER-Antworten zu verarbeiten sind. Wenn das STATUS1-Byte anzeigt, dass der SLOT COMMON, IDLE oder NEW ist, kann die Regler-Einheit den SLOT durch einen NULL MOVE-Befehl (opcode<BA>,<slotX>,<slotX>,<chk>) auf "In Gebrauch" (IN_USE) setzen. Der Aktivierungsmechanismus wird verwendet, um sicherzustellen, dass die Verwendung von SLOTs in einer Mehrbenutzer-Umgebung gegenseitig verriegelt ist.

Wenn die SLOT-Antwort ergibt, dass die Abfrage der betreffenden Lokomotive bereits verwendet wird (IN_USE) oder in einer Mehrfachtraktion (UP-CONSISTED) gebunden ist (d.h. SL_CONUP Bit 6 von STATUS1 = 1), sollte der Benutzer den SLOT nicht verwenden. Jede Lok einer Merfachtraktion muß vor Verwendung zunächst ungebunden (UNLINKED) sein! Ergebnisse von LINK- und UNLINK-Befehlen werden immer bearbeitet, während der Master berechtigt ist, die zurückgemeldete SLOT-Nummer zu ändern und den Bindungs-Auftrag unter bestimmten Umständen zurückzuweisen. Die zurückgemeldete SLOT-Nummer und die LINK-UP/DN-Bits in STAT1 sollen immer daruf geprüft werden, ob sie wie erwartet sind.

Die Regler-Einheit versucht dann die Geschwindigkeit, Fahrrichtung und die Funktionen zu aktualisieren. Immer wenn sich eine SLOT-Information in einem aktiven SLOT ändert, wird der SLOT markiert, um beim nächsten an das Gleis gesendeten DCC-Paket aktualisiert zu werden. Wenn der SLOT als Teil einer Mehrfachtraktion gebunden ist (CONSIST SLOTS), wird die gesamte Kette der SLOTs nacheinander aktualisiert.

Wird die Regler-Einheit vom LocoNet® getrennt, erfolgt nach einer Wiederherstellung der Verbindung (wenn der Regler den SLOT vor der Trennung behält) eine Abfrage der Daten des SLOTs, der vorher benutzt wurde. Wenn der gemeldete STATUS sowie Geschwindigkeits-, Fahrrichtungs- und Funktions-Daten vom Master exakt zum erinnerten SLOT passen, wird der Regler den SLOT weiterverwenden. Wenn die Daten nicht passen, wird der Regler annehmen, der SLOT wäre vom System freigegeben worden und die "log on"-Prozedur erneut durchführen.

Mit dieser Prozedur benötigt die Regler-Einheit keine eindeutige "ID-Nummer". SLOT-Adressen bedeuten nicht, dass eine bestimmte Lokomotiv-Adresse enthalten ist. Das System kann auch ohne die vom Master zugewiesene Lokomotiv-Adresse zu verwenden, abbilden, dass die SLOT-Adresse der Lokomotiv-Adresse entspricht, wenn der Benutzer direkt in SLOTs liest oder schreibt.

Abfertigung (Dispatching)

SLOTs aktiver Lokomotiven (einschl. der ersten in Mehrfachtraktionen) können für die Zuweisung zu BT2-Reglern (für 2 Personen) im Abfertigungs-Modus (DISPATCH) freigegeben sein. In diesem Fall fragt ein BT2-Regler, wenn er in seinem normalen Modus arbeitet, nach einem Abfertigungs-SLOT (DISPATCH SLOT), der für ein Gerät mit Aufsichtsfunktion vorbereitet ist. Das ermöglicht Club-Betrieb, wobei eine Lok an einen Lokführer mit einfachem Regler mit eingeschränkten Möglichkeiten durch Schuppenpersonal oder Abfertiger übergeben wird. Bemerkung: Digitrax hat 1999 die Produktion des BT2 Buddy Throttle (Regler für 2 Partner) eingestellt.

Zur Übergabe (DISPATCH PUT) eines SLOTs wird ein "SLOT MOVE" in den SLOT 0 ausgeführt. In diesem Fall wird das Ziel "SLOT 0" nicht kopiert, aber die Quell-SLOT-Nummer wird durch das System im Abfertigungs-(DISPATCH)-SLOT markiert. Dies ist ein Stapel mit "Tiefe eins" ("one deep stack").

Zur Übernahme (DISPATCH GET) eines SLOTs wird ein "SLOT MOVE" aus dem SLOT 0 ausgeführt (ein Ziel wird nicht benötigt). Wenn dort ein zur Abfertigung (DISPATCH) markierter SLOT im System ist, wird mit einem "SLOT Daten lesen" (SLOT DATA READ) (<E7>,,,) mit den SLOT-Informationen geantwortet. Wenn dort kein SLOT zur Abfertigung vorliegt, wird mit "langer Bestätigung" (opcode <B4>,) und Fehlercode 0 ("fail") geantwortet.

Zukünftige Erweiterungen (Future Expansion Codes)

Unmittelbare Befehlscode kann von einem Gerät an den Master gesendet werden. Dieser wird in DCC-Pakete konvertiert und als nächstes Paket zum Gleis gesendet. Diese Pakete werden in keinen Wiederholungs-Stapel eingetragen. Sie sind in einem System verfügbar, das auf dem DCS100/"Chief" basiert.

Befehlscode für den Zugriff zu einem zusätzlichen Servicemodus "Programmier-Gleis" ist enthalten. Diese Aufträge werden nicht in den Hauptdatenstrom der DCC-Pakete eingetragen.

Hinweis: Einige irreführende Erweiterungen und Befehlscode-Abfolgen wurden aus dieser LocoNet®-Version entfernt. Ein Entwickler, der dieses Protokoll korrekt implementiert, sollte beim Betrieb auf einem LocoNet® mit anderen Erweiterungen keine Probleme bekommen. Es sollte Versuchungen widerstanden werden, Optimierungen oder Verknüpfungen mit diesem Protokoll vorzunehmen, weil sie zukünftige Probleme mit Hard- oder Software garantieren.

Die folgenden Tabellen wurden nicht übersetzt


2 Byte Message Opcodes

FORMAT

<OPC>,<CKSUM>
Opcode Response
Symbol Code Description Success Fail
OPC_IDLE 0x85 FORCE IDLE state, B'cast emerg. STOP - -
OPC_GPON 0x83 GLOBAL power ON request - -
OPC_GPOFF 0x82 GLOBAL power OFF req - -
OPC_BUSY 0x81 MASTER busy code, NUL - -


4 Byte Message Opcodes

FORMAT

<OPC>,<ARG1>,<ARG2>,<CKSUM>
Opcode Arguments Response
Symbol Code Description Arg1 Arg2 Success Fail
OPC_LOCO_ADR 0xBF Request loco address, if not found master puts address in a free slot. 0 ADR OPC_SL_RD_DATA OPC_LONG_ACK
No free slot available. ACK1=0
OPC_SW_ACK 0xBD Request switch with acknoledge function. SW1 SW2 OPC_LONG_ACK, ACK1=0x7F OPC_LONG_ACK, ACK1=0x00
OPC_SW_STATE 0xBC Request state of switch. SW1 SW2 OPC_LONG_ACK, ACK1=0x7F OPC_LONG_ACK, ACK1=0x00
OPC_RQ_SL_DATA 0xBB Request slot data/status block SLOT 0 OPC_SL_RD_DATA
OPC_MOVE_SLOTS 0xBA Move slot SRC to DST SRC DST OPC_SL_RD_DATA
OPC_LINK_SLOTS 0xB9 Link slot ARG1 to slot ARG2 SL1 SL2 OPC_SL_RD_DATA
OPC_UNLINK_SLOTS 0xB8 Unlink slot ARG1 from slot ARG2 SL1 SL2 OPC_SL_RD_DATA
OPC_CONSIST_FUNC 0xB6 Set FUNC bits in a CONSIST uplink element SLOT DIRF
OPC_SLOT_STAT1 0xB5 Write slot stat1 SLOT STAT1
OPC_LONG_ACK 0xB4 Long acknowledge LOPC ACK1
OPC_INPUT_REP 0xB2 General sensor input codes IN1 IN2
OPC_SW_REP 0xB1 Turnout sensor state report SN1 SN2
OPC_SW_REQ 0xB0 Request switch function SW1 SW2 OPC_LONG_ACK, LOPC=0x30, ACK1=0x00
OPC_LOCO_SND 0xA2 Set slot sound function SLOT SND
OPC_LOCO_DIRF 0xA1 Set slot direction, function 0-4 state SLOT DIRF
OPC_LOCO_SPD 0xA0 Set slot speed SLOT SPD


6 Byte Message Opcodes

FORMAT

<OPC>,<ARG1>,<ARG2>,<ARG3>,<ARG4>,<CKSUM>
Symbol Code Description Arg1 Arg2 Arg3 Arg4 Success Fail
OPC_MULTI_SENSE 0xD0 power management and transponding type zone and section addr addr
OPC_UHLI_FUN 0xD4 Function 9-28 by Uhlenbrock 0x20 slot function group function


Variable Byte Message Opcodes

FORMAT

<OPC>,<COUNT>,<ARG1>,<ARG2>,<ARG3>,...,<ARG(COUNT-3)>,<CKSUM>
Opcode Arguments
Symbol Code Description Count Arg1 Arg2 Arg3 Arg4 Arg5 Arg6 Arg7 Arg8 Arg9 Arg10 Arg11 Response
OPC_WR_SL_DATA 0xEF Write slot data. 0x0E SLOT# STAT1 ADR SPD DIRF TRK SS2 ADR2 SND ID1 ID2 OPC_LONG_ACK
OPC_WR_SL_DATA 0xEF Write PT slot data. 0x0E 0x7C PCMD 0 HOPSA LOPSA TRK CVH CVL DATA7 0 0 OPC_LONG_ACK
OPC_WR_SL_DATA 0xEF Write Fast Clock slot data. 0x0E 0x7B CLK_RATE FRAC_MINSL FRAC_MINSH 256-MINS_60 TRK 256-HRS_24 DAYS CLK_CNTR ID1 ID2 OPC_LONG_ACK
OPC_SL_RD_DATA 0xE7 Slot data response. 0x0E SLOT# STAT1 ADR SPD DIRF TRK SS2 ADR2 SND ID1 ID2 -
- 0xE6 Programming service mode aborted. 0x10/0x15


Opcode Arguments
Symbol Code Description Count Arg1 Arg2 Arg3 Arg4 Arg5 Arg6 Arg7 Arg8 Arg9 Arg10 Arg11 Arg12 Arg13 Response
OPC_PEER_XFER 0xE5 Move 8 bytes peer to peer, SRC→DST. 0x10 SRC DSTL DSTH PXCT1 D1 D2 D3 D4 PXCT2 D5 D6 D7 D8 -


Opcode Arguments
Symbol Code Description Count Arg1 Arg2 Arg3 Arg4 Arg5 Arg6 Response
OPC_LISSY_REP 0xE4 Lissy IR report 0x08 0x00 high unit, direction low unit high addr low addr - -
OPC_WHEELCNT_REP 0xE4 Wheel counter report 0x08 0x40 high unit, direction low unit high count low count - -


Opcode Arguments
Symbol Code Description Count Arg1 Arg2 Arg3 Arg4 Arg5 Arg6 Arg7 Arg8 Arg9 Response
OPC_LISSY_REP 0xE4 RFID-5 report 0x0C 0x41 addr. high addr. low RFID-0 RFID-1 RFID-2 RFID-3 RFID-4 RFID-HI -


Opcode Arguments
Symbol Code Description Count Arg1 Arg2 Arg3 Arg4 Arg5 Arg6 Arg7 Arg8 Arg9 Arg10 Arg11 Response
OPC_LISSY_REP 0xE4 RFID-7 report 0x0E 0x41 addr. high addr. low RFID-0 RFID-1 RFID-2 RFID-3 RFID-4 RFID-5 RFID-6 RFID-HI -


Opcode Arguments
Symbol Code Description Count Arg1 Arg2 Arg3 Arg4 Arg5 Arg6 Arg7 Arg8 Response
OPC_IMM_PACKET¹ 0xED Send n-byte packet immediate. 0x0B 0x7F REPS DH1 IM1 IM2 IM3 IM4 IM5 OPC_LONG_ACK
ACK1=0x7F if not limited
ACK1=lim if limited
ACK1=0x00 If busy

¹) The SLOT DATA bytes are, in order of TRANSMISSION for <E7> READ or <EF> WRITE NOTE SLOT 0 <E7> read will return MASTER config information bytes .

loconet/ln-pe-de.txt · Last modified: 2018/11/12 08:56 by 127.0.0.1