Doehler & Haass verwendet Cookies, um die Dienste ständig zu verbessern und bestimmte Features zu ermöglichen. Indem Sie hier fortfahren, stimmen Sie dieser Verwendung zu. Mehr Informationen

System-Spezifikation / SX1-Programmierung

Auslesevorgang

Der Lokdecoder meldet bei jedem Einschalten der Versorgungsspannung automatisch seine Adresse und auch seine eingestellten Parameterwerte. Es wird dazu ein spezielles Verfahren verwendet, das über die Stromaufnahme am Gleis funktioniert (hierbei darf nur 1 Lok am Gleis stehen). Dies ist in Bild 25 beschrieben.

Einschalten der Versorgungsspannung

Anstieg der Versorgungsspannung am Kondensator des ASIC’s

Impulsstrom am Gleis

Bild 25: Auslesevorgang bei SelecTRIX.

Erklärung zu den Kurvenverläufen:

Das Einschalten der Versorgungsspannung führt zu einem Spannungsanstieg am Kondensator der Versorgungsspannung des ASIC’s. Ist die Betriebsspannung (ca. 3,5V) des ASIC’s erreicht, beginnt der Auslesevorgang der intern gespeicherten Information. Dieser Auslesevorgang startet mit einer Synchronisierung (2* log ‘1’, 1* log ‘0’), danach folgen die Daten D0 .. D15. Vor diesen Ausleseimpulsen ist noch ein kleiner Stromimpuls direkt beim Einschalten der Gleisspannung zu beobachten, der durch den Ladevorgang des Kondensators hervorgerufen wird.

Folgende Codiervorschrift für den Impulsstrom des Auslesevorgangs wird angewendet:

  • Der Impulszug besteht aus einem Grundrahmen von Impulsen die jeweils ca. 200 μs lang sind, im Abstand von ca. 800 μs
  • Beim Auftreten einer log ‘0’ wird zwischen den Impulsen des Grundrahmens jeweils mittig ein Impuls von ca. 200 μs Länge eingefügt
  • Nach dem Einschaltvorgang erfolgt zunächst eine Synchronisierung, bestehend aus ‘1’ + ‘1’ + ‘0’, anschließend die Ausgabe der Daten

log ‘1’



log ‘0’

Bild 26: Codierung der Auslesedaten.

In Bild 27 ist ein Datenstrom mit D0=0, D1=1, D2=0 usf. angenommen. Die Impulse werden durch Ansteuerung des Motors erzeugt (damit Strom fließt) Damit sich der Motor bei diesem Auslesevorgang nicht bewegt, werden die Impulse abwechselnd in Richtung „vorwärts“ und in Richtung „rückwärts“ abgegeben (siehe Bild 27: Motorimpulse). Die Stromimpulse am Gleis sind ja die Addition der „vorwärts“ und „rückwärts“ Impulse und liefern wieder den gewünschten Gesamtimpulszug.

Angenommener Impulsstrom D0=0, D1=1, D2=0 usf.

Motorimpuls vorwärts

Motorimpuls rückwärts

Bild 27: Motorimpulse.

Es werden 16 Bits ausgelesen, die folgende Bedeutung haben:

Programmiervorgang

Die elektronisch programmierbaren Lokdekoder können immer wieder mit neuer Information überschrieben werden. Um den Programmiervorgang zu verstehen ist es zunächst erforderlich etwas auf die technologischen Bedingungen im Decoder einzugehen.

Bild: Zeitdiagramm

Zeichenerklärung 1 Einschalten der Versorgungsspannung
2 Stromimpulse wie beim Auslesevorgang
3 nicht zu beachten
4 nicht zu beachten

Beschreibung:

ASIC inaktiv   Zunächst ist der ASIC noch nicht aktiv: Die interne Stromversorgung, die einen Kondensator beinhaltet, muß erst einen bestimmten Wert (ca. 3,5 V erreichen). Dies ist nach ca. 1 .. 5 ms der Fall (je nach Versorgungsspannung und Toleranzen)
     
Programmierung
unmöglich
  In diesem Bereich ist der Decoder noch nicht bereit die Daten zu übernehmen
     
Programmierung   Nur in diesem Bereich kannder Decoder die Daten übernehmen, da nach 3,2 ms keine Datenübernahme mehr erfolgt

Programmier - Impulsfolge

Der Eingangsteil des Decoders muß zwischen normaler Datenübertragung und Programmierung unterscheiden können, außerdem darf im normalen Betriebsfall keine Möglichkeit bestehen den Decoder umzuprogrammieren. Dies wird dadurch erreicht, daß

  1. der Decoder ca. 3,2 ms nach dem Aktivwerden (erkennbar am 1. Ausleseimpuls) nicht mehr auf Programmierung umschalten kann (es erfolgt keine Datenübernahme mehr)
  2. der Programmierbefehl eine eigene Rahmenstruktur besitzt, die in der normalen Übertragung nicht vorkommt

Die Rahmenstruktur des Programmierbefehls ist dem folgenden Bild zu entnehmen, in der auch zeitmäßig dieBereitschaft zur Datenübernahmezu erkennen ist:

Bild: Rahmenstruktur und Bereitschaft zur Datenübernahme

Im normalen Betriebsfall besteht ein Grundrahmen aus einer Synchronisierung und 7 Datenkanälen. Soll auf Programmierung umgeschaltet werden, dann wird ein Rahmen mit einer Synchronisierung und nur 2 Datenkanälen (mit beliebigem Inhalt, normalerweise K=0) angewendet. Werden 2 aufeinanderfolgende „kurze“ Rahmen erkannt, erfolgt mit der nächsten Synchronisierung die Übernahme der Daten (damit werden die aus dem nichtflüchtigen Speicher geladenen Daten überschrieben, der Speicher wird jedoch noch nicht programmiert). Dieser Vorgang muß innerhalb von 3,2 ms abgeschlossen sein, da sonst ein intern ablaufendes Zeitglied die Aktvierung der eigentlichen Programmierung verhindert. Es müssen also 7 Kanäle (siehe obiges Bild) innerhalb von 3,2 ms (besser aus Toleranzgründen innerhalb von 2,4 ms) übertragen werden. Da 1 Kanal wie auch bei normalem Betrieb aus 12 Bit besteht, muß mit verkürzten Datenbits gearbeitet werden. Ein Datenbit bei der Programmierung darf max. sein:

tBit = 2,4 ms / (7 * 12) = 28 us

Empfohlen wid ein Datenbit mit 12 us Impuls und 8 us Pause.

Ist die Aktivierung des Datenübernahme erfolgt, hat man beliebig Zeit. Um nicht mit den Ausleseimpulsen zu kollidieren, wird am Besten nach der Aktivierung der Datenübernahmeeine kleine Pause (10 ms) eingelegt (die Zeiten streuen technologiebedingt sehr stark).

Man kann die Impulsfolge auch leicht an dem realisierten Programm erkennen:

;-----------------------------------------------;
;	Pg-Sx:	Programmierzyklus		;
;-----------------------------------------------;
z_pzyk:	acall	z_pvon		; Sync auf 1. @EN
				;
	acall	z_p1d1		; Vorspann, damit
	acall	z_p1d1		; das 1. Sync richtig
	acall	z_p1d0		; erkannt wird
	acall	z_p1d0		;
	acall	z_p1d0		;
	acall	z_p1d1		;
	acall	z_p1d1		;
	acall	z_p1d1		;
	acall	z_p1d1		;
				;
	acall	z_psyn		;
	acall	z_p1k0		;
	acall	z_p1k0		;
	acall	z_psyn		;
	acall	z_p1k0		;
	acall	z_p1k0		;
	acall	z_psyn		;
				;
	acall	ti_10m		; Dateneingabe:
	acall	z_paus		; aus r6 und r7
	acall	z_p1d0		; entspricht Sync:
	acall	z_p1d0		; 3 * 0
	acall	z_p1d0		;
	acall	z_p1d1		;
	acall	z_p1d1		;
	acall	ti_25m		; 25 ms für Programmierung
	orl	p1,#0e0h 	; Spannung aus
	ret			;
				;

Dabei bedeuten:

z_pvon   Einschalten der Spannung
mit Wartezeit auf 1. Leseimpuls
   
z_p1d0   1 Impuls D = „0“    
z_p1d1   1 Impuls D = „1“    
z_psyn   kompletter sync-Kanal   0 0 0 1 1 1 0 0 1 0 0 1
z_p1k0   kompletter Leerkanal   0 0 1 0 0 1 0 0 1 0 0 1
z_paus   2 Datenkanäle   d d 1 d d 1 d d 1 d d 1
d d 1 d d 1 d d 1 d d 1
t_10ms   Wartezeit 10 ms    
t_25ms   Wartezeit 25 ms    

Es ist ganz wichtig, die Impulsfolge nach der Wartezeit von 10 ms genau einzuhalten, da sonst keine Programmierung erfolgt (der Programmierimpuls wird nur ausgelöst, wenn das externe Synchronisiersignal mit dem internen erzeugten Synchronisiersignal, das zeitmäßig etwas verzögert ist, übereinstimmt).