Scrigroup - Documente si articole

     

HomeDocumenteUploadResurseAlte limbi doc
BulgaraCeha slovacaCroataEnglezaEstonaFinlandezaFranceza
GermanaItalianaLetonaLituanianaMaghiaraOlandezaPoloneza
SarbaSlovenaSpaniolaSuedezaTurcaUcraineana

BildungBiologieBücherChemieComputerElektronischFilmGeographie
GeschichteGeschichtenGrammatikKunstLebensmittelLiteraturManagementMathematik
MedizinPhilosophiePhysikalischPolitikRezepteTechnikVerschiedeneWirtschaft
Ökologie

Bedienungsanleitung und Beschreibung der PC-Lokomotiven- und Weichensteue¬rungssoftware für das Märklin-Digital-System

Technik



+ Font mai mare | - Font mai mic



DOCUMENTE SIMILARE

Bedienungsanleitung und Beschreibung der PC-Lokomotiven- und Weichensteue­rungssoftware für das Märklin-Digital-System



Features:

LOK V.E1.0D/E bietet folgende Funktionen:

Erzeugen der für die Steuerung von Loks und Magnetartikel im Märklin-Digital-System erforder­li­chen Impulse durch PC ohne weitere Hardware (mit Ausnahme eines Boosters).

Anschlußmöglichkeit an den Märklin-Booster unmittelbar und an den Elektor-Booster über ein klei­nes Interface.

Kurzschlußerkennung mit einstellbarer Wartezeit und Stromabschaltung bei Kurzschluß oder Not­halt.

Steuern von jeweils einer Lok aus einer Auswahl von 81, d.h. von Adresse 00 bis 80.

Lokabhängige Verwendung des alten Motorola-Formats, des neuen Motorola-Märklin-Formats oder einer Mi­schung aus beiden Formaten.

Volle Unterstützung des neuen Märklin-Motorola-Formats (4 Extra-Funktionen, definitive Fahrtrich­tungssteuerung, kürzere Pausenzeiten).

Bezeichnung, Bremsverzögerung, Anfahrverzögerung, richtungsabhängige Höchstgeschwin­digkeiten und Datenformat für jede Lok dauerhaft einstellbar.

Erhöhung der Zahl der Fahrtstufen von 15 auf 25.

Geschwindigkeit und Funktionsstatus der jeweils letzten Lok wird gespeichert und bei erneu­tem Einstellen der Adresse angezeigt.

Ansteuern von 10 zweipoligen bzw. 20 einpoligen Magnetschaltartikeln oder einer entspre­chenden Mischung (auch Dreiwegweiche) aus einer Auswahl von 648/324 Adressen (Adressen 000 bis 648).

Ansteuerart der Magnetartikel durch Impulsdauer gemäß Tastendruck, einen definierten Im­puls oder zwei Impulse dauerhaft einstellbar.

Automatische Rekonstruktion der letzten Weichen- und Signalstellungen beim Programmstart.

Lok-Steuerung über Regler (Paddle) oder Tastatur.

Kalibrierung des Reglers (Paddle).

Automatische Kalibrierung der Impulserzeugung bei Programmstart.

Anforderungen:

PC:

DOS-PC mit Prozessor ab 8088

ab 512 KB RAM, parallele Schnittstelle, optional Gameport

ab 1 Diskettenlaufwerk 360 KB

ab DOS 2.1 bis DOS 7.0

Zusätzliche Hardware:

Bei angeschlossenem Märklin-Booster:

1 x Widerstand 47 k

Bei angeschlossenem Elektor-Booster:

2 x Widerstand 1 k

2 x Widerstand 22 k

2 x Widerstand 47 k

2 x 1N4148

1 x BC547

1 x 1488

1 x (DIL-Reed-)Relais 5 V

Für Regler/Paddle:

1 x Drehpotentiometer (mit Mittelrastung) 100 k

1 x Schalter 1-pol an

Einführung

Wer als Kind eine Modelleisenbahn besaß, kennt die Schwierigkeiten, mehrere Loks nebeneinander zu benutzen. Zahllose Kilometer Kabel wurden für unabhängige Stromkreise und 'tote Gleise' ge­legt, ohne daß indes ein echter Mehrzugbetrieb möglich wurde. Nur über die - teure - Oberleitung konnten wenigstens zwei Loks zugleich benutzt werden. Eine andere Lösung - das 'Aufprägen' - ei­ner hochfrequenten zweiten Spannung - konnte sich zumindest im Wechselstrombereich nicht durch­setzen.

Dies hat sich seit einigen Jahren geändert. Nahezu jeder Hersteller bietet ein digitales Mehrzugsystem an, das nicht nur diesen Spieltrieb befriedigt sondern auch PC-gesteuert flexible automatische Steue­rungen und Abläufe ermöglicht. Das zumindest Deutschland, wohl aber auch in Europa am weitesten verbreitete System ist die digitale Mehrzugsteuerung von Märklin.

Der Nachteil der Digital-Steuerung ist - natürlich - der Preis. Märklin läßt sich das Equipment recht teuer bezahlen, obwohl die verwendete Elektronik die Preise nicht rechtfertigt. So läßt sich eine simp­le Lok-Steuerung auf Basis des Motorola-Chip 145026 schon für wenig Geld aufbauen. Da aber der Selbstbau einer komfortablen Steuerung einen großen Entwicklungsaufwand erfordert und das Können der meisten Modelleisenbahner bzw. Papis, die ihren Sprößlingen eine Eisenbahn geschenkt haben, übersteigt, kommt man an sich um den Erwerb der Märklin-Produkte nicht herum. Eine sol­che Steuerung kostet aber ihren Preis: Man muß man für z.B. vier Regler und eine Steuerung für zu­mindest 32 Weichen bei Märklin mit ca. DM 1.500,- bis DM 2.000,- rechnen. Diese Preise wirken äußerst prohibitiv, obwohl Märklin andererseits durch die Einsteigerpackungen, deren Loks mit ei­nem ent­sprechenden Dekoder (dem sog. Delta-Dekoder) ausgestattet sind, jedem Kunden Appetit auf die Digitalsteuerung macht. Da die Einsteigerpackungen zumeist ein außerordentlich gutes Preis-/Lei­stungsverhältnis bieten (so ist der aktuelle Einsteigerkasten 29605 mit einem Preis von bis herun­ter zu DM 330,- unwiderstehlich, da die Einzelteile nach Liste ca. DM 700,- kosten würden - allein die Lok würde mit dem Dekoder deutlich über DM 400,- kosten), sammeln sich bei Wahrnehmung auch nur der interessantesten Angebote sehr bald einige für das Digital-System geeignete Lokomoti­ven an. Hinzu kommt, daß sich die Delta-Dekoder schon per DIP-Schalter auf 16 Adressen einstellen las­sen, so daß selbst mittelgroße Anlagen ohne weitere - alles wenig aufwendige - Bastelei an dem De­koder ge­steu­ert werden können. Schließlich läßt sich der Delta-Dekoder mit ebenfalls geringem Aufwand um die Sonderfunktion des Digital-Dekoders und mit etwa mehr Aufwand um die vier Ex­tra-Funk­tionen der Maxi-Spur- und Spur-1-Modelle erweitern - was Märklin tunlichst verschweigt. Letzteres ist aller­dings nur bei dem Delta-Dekoder mit dem Chip 701.17 und neuer möglich.

Die Elektor ist schon vor einigen Jahren in die Bresche gesprungen und hat das Steuersystem EDITS entwickelt und ab Dezember 1987 vorgestellt. Natürlich ist auch der nur teilweise Vollausbau von EDITS für 16 Regler und mit starkem Booster nicht billig; ich mußte trotz günstigem Einkauf etwa DM 800,- für die Teile zahlen. Das vergleichbare Märklin-Equipment würde aber weit über DM 5.000,- kosten.

Der Nachteil von EDITS ist, daß die Firmware zum einen einige Bugs aufweist, die man ohne ein ge­rütteltes Maß an Z80-Assembler-Kenntnisse (über die ich auch nicht nur ansatzweise verfüge) nicht beseitigen kann, und zum anderen - wesentlich schwerwiegender - das neue Datenformat, das Mär­klin vor etwa einem Jahr - natürlich 'heimlich' - eingeführt hat, nicht un­terstützt. Somit bietet EDITS nicht die vorteilhafte definitive Richtungssteuerung und natürlich auch nicht die vier Extra-Funktionen. Schließlich kommt man bei EDITS auch bei Beschränkung auf nur einen Regler nicht wesentlich billiger zum Spielen, da auf jeden Regler allein nur sehr wenige Bautei­le im Wert von vielleicht DM 5,- entfallen. EDITS ist also auf eine größere Anlage ausgerichtet.

Das Prinzip der Märklin-Digitalsteuerung ist in den entsprechenden Elektor-Ausgaben sowie dem entsprechenden Elektor-EDITS-Buch wie auch dem Märklin-Digital-Buch beschrieben. Im Internet wird man unter

https://rr-vs.informatik.uni-ulm.de:80/RR/Maedig/Maedig.html

https://www.germany.net/teilnehmer/100,76798/digital.htm

https://bolam5.lamel.bo.cnr.it/~scorzoni/motorola.html

https://www.marklin.com/subdir/digital/digital.html

https://www.sextant.it/modeltreno/dig_infi.html

fündig. Nachfolgend eine sehr kurze Übersicht:

Die Märklin-Digitalsteuerung beruht auf dem Prinzip, daß die Kontrolleinheit (Controller, Control-Unit) für jeden Empfänger (Dekoder in Lok, Waggon, Weiche etc.) Steuersignale generiert und diese über einem Verstärker (Poster) der Betriebsspannung quasi aufprägt: Die am Gleis anliegende Be­triebsspannung wird entsprechend der Steuersignale zwischen +18 V +22 V und -18 V -22 V hin- und hergeschaltet; die in den Loks, Waggons, Weichen usw. eingebauten Dekoder reagieren nur auf für sie bestimmte Signalpakete. Jedes Signalpaket besteht aus einem Adressteil und einem Steu­er­teil; nur bei Übereinstimmung des Adressteils mit der an dem jeweiligen Dekoder eingestellten Adresse erfolgt eine Auswertung und Ausführung der Steuerdaten.

Konkret wird das sog. Motorola-Protokoll, wie es in den Motorola-ICs MC145026, MC145027 und MC145029 (das mittlerweile nicht mehr erhältlich ist) implementiert ist, verwendet. Bemerkenswert hieran ist, daß die Adressdaten nicht der zweiwertigen Logik entsprechen, also als Bits bezeichnet werden können, sondern auf der dreiwertigen Logik beruhen: Die Trits (oder t-Bits) können 0, 1 und offen (open) sein. Als Sendeimpuls wird dies durch jeweils zwei Bits realisiert, die in der Kombina­tion ein Trit darstellen. Eingehender kann man dies bei den o.g. Stellen nachlesen. Wichtig zu wissen ist auch, daß seit 1994 für die Loksteuerung ein neues oder erweitertes Motorola-Format - das man wohl besser als Märklin-Format bezeichnen würde - zur Anwendung gelangen kann, wenn die Mär­k­lin-Control-Unit (6021) über DIP-Schalter entsprechend eingestellt wird. Dieses neue Datenformat, bei dem der binäre Zusammenhang der einzelnen Bits der vier Steuerdaten-Bitfolgen aufgelöst wird, so daß jedes Bit dieser vier Bitfolgen als separates Bit fungiert, ist ebenfalls oben näher beschrieben. Da aber z.B. EDITS und auch einfache Eigenkonstruktionen auf dem Motorola-Chip MC145026 basieren, der dieses neue Format nicht beherrscht, ist man zur Nutzung der Features des neuen For­mats (auch wenn dieses nach Angaben von Fa. Märklin noch nicht für H0 vorgesehen sein soll) auf die Control-Unit von Märklin, eine - naturgemäß flexible - Softwarelösung oder aber eine völlige Ei­genkonstruktion etwa mittels eines Mikrocontrollers als Signalerzeuger angewiesen.

Die Steuerung umfaßt für maximal 80 Loks die Richtung und Geschwindigkeit in fünfzehn Stufen sowie eine schaltbare Funktion, die zwischen Rückwärtsfahrt und Vorwärtsfahrt unterscheidet. Das neue Protokoll bietet u.a. eine verbesserte Fahrtrichtungsumschaltung bzw. deren Kontrolle sowie vier Extra-Funktionen, bei denen aber nicht zwischen Rückwärts- und Vorwärtsfahrt unterschieden wird. Für H0 gibt es noch keine Lok-Dekoder, die diese Funktionen zur Verfügung stellen; es ist aber abzusehen, daß die verschiedenen Tüftler dieses Problem bald gelöst haben werden. 256 (bei EDITS 324) Weichen und andere Schaltverbraucher können geschaltet werden.

Da sich bei näherem Befassen mit der Materie herausstellt, daß eine komfortable Lok- und Wei­chen­steuerung nur mit Hardware nicht mit vertretbarem Aufwand hergestellt werden kann und es letztlich auf die Konstruktion eines Spezialrechners hinausläuft, kann man auch gleich auf die bei den meisten Bastlern und Technikern vorhandenen Reste zurückgreifen: So ziemlich jeder ausrangierte PC besitzt eine Game-Karte, also einen Anschluß für analoge Joysticks. Mit Ausnahme der Regler und Schalter sowie - natürlich - des Verstärkers hat man also sämtliche Hardware parat, die man sich für EDITS oder eine Eigenentwicklung erst noch teuer kaufen - und mit reichlich Know-how zu­sammenschalten muß. Der reine Bauteileaufwand liegt somit für einen Regler bei ca. DM 1,50; berücksichtigt man noch die Buchsen, Kabel sowie die Teile des für den Anschluß an den Elektor-Booster leider erfor­der­­­liche 'Interface', so dürfte man mit ca. DM 10,- hinkommen. Bei entsprechender Auslegung der Software erhält man eine Funktionalität wie ein Märklin-Equipment für ca. DM 2.000,- (!).

Die Daten werden am einfachsten über die parallele Schnittstelle ausgeben, die nun wirklich jeder PC aufweist. Es fehlt also nur noch die Software - die nun zumindest für eine kleine Anlage verfügbar ist.

Die Vorgaben sind also: Verwendbarkeit auf jedem alten PC, da es verständlicherweise wenig at­trak­tiv ist, den neuen 166-MHz-Pentium-PC in den Keller zur Modelleisenbahn stellen zu müssen. Da andererseits Impulse bis herab zu 13 µs zu realisieren sind und der ein Befehlstakt auf einem alten XT schon 220 ns dauert, ist leicht einzusehen, daß die wesentlichen Teile der Software in Assembler (einer heutzutage nahezu ausgestorbenen Fremdsprache) geschrieben werden müssen und zum ande­ren der heutzutage modische Schnickschnack wie (hochauflösende) Grafik und (bewegte) Bilderchen oder gar ein Betrieb unter Windows nicht in Betracht kommt. LOK - so heißt diese meine Software nämlich - bietet dafür einen im Vergleich mit dem Uralt-Z80 oder dem alten Apple II hochauflösen­den Textmodus von 80 x 25 Zeichen und eine Bildschirmgestaltung, die die älteren Anwender an die gute alte Zeit der DOS-Programme erinnern wird. Da ältere PC nicht unbedingt farbtauglich sind, bie­tet sich LOK auch nur im nostalgischen Schwarz/Weiß an. Das Motto lautet also 'back to the roots', was aber nicht heißen soll, daß wir uns in die Computer-Steinzeit zurückbegeben sollen. Aus programmiertechnischer Sicht muß man sogar sagen, daß die Konstruktion einer solchen Software, die auch auf Uralt-PC noch in vertretbarer Weise läuft, deutliche höhere Anforderungen stellt als schnell mal für einen modernen Hochleistungs-PC eine Windows-Datenbank-Applikation mit Visual-Irgend­was zusammenzubasteln. Dem­zufolge hat die Entwicklung von LOK auch einige hundert Stun­den Programmierarbeit erfordert. Aus diesem Grund wird man mir nachsehen, daß ich die Quell­co­des nicht veröffentliche.

LOK ist von vorneherein für die Bedienung durch einen Regler (Paddle), also durch ein an den Joy­stick-Port angeschlossenen Potentiometer (100 k, lin) konzipiert. Nach Möglichkeit sollte man eine (heutzutage nicht mehr allzuleicht erhältliche) Ausführung mit Mittelrastung wählen, da dies das Le­ben und insbesondere die Steuerung außerordentlich erleichtert. Wer die heutzutage obligate Maus­steuerung vermißt, dem sei gesagt, daß ich auf die technisch mögliche Maussteuerung nach reiflicher Überlegung bewußt verzichtet habe, da die Bedienung einer solchen Software über die Maus eine noch größere Strafe darstellen würde als die nur vorsorglich für den Fall der Fälle implementierte Steuerung über die Tastatur, die naturgemäß eine rechte Krücke darstellt. Wer dies nicht glaubt, der möge sich bitte vergegen­wärtigen, daß man auch auf der Modelleisenbahn die Augen tunlichst auf den Schienen bzw. der ge­steuerten Lok haben sollte und sich nicht darauf konzentrieren kann, den Mauszeiger auf dem Feld für die Geschwindigkeit usw. zu halten. Loks werden nun einmal über ei­nen Regler gesteuert - und damit basta. Daher sind auch die - leider recht programmieraufwendigen - Anzeigen der Statussym­bole für die Weichen und Signale nur als 'Schmankerl' für diejenigen An­wender gedacht, die es ein­fach nicht lassen können, statt auf die Eisenbahn auf den Bildschirm zu starren. Allerdings haben sie einen definitiven Nutzen im Tunnel bzw. Untergrund.

Zum Abschluß eine Klarstellung: LOK ist nicht zur automatischen Ablaufsteuerung gedacht. Hierfür gibt es bereits eine Menge anderer Software, die jedoch die entsprechenden Hardware - also z.B. das Mär­k­lin-Equipment oder auch EDITS - voraussetzt. LOK soll 'nur' und gerade die Anschaffung der teuren Hardware (bis Ausnahme des Boosters) ersparen. Meines Wissen wird eine derartige Soft­wa­re nicht anderweitig angeboten. Möglicherweise werde ich bei Interesse in einer späteren Version eine Märklin- bzw. EDITS-kompatible Schnittstelle zum Empfang entspre­chen­­der Steuerda­ten vor­se­hen. Dies würde aber zum einen unbedingt den Einsatz leistungsfähiger Rech­ner erfordern und zum anderen ein Multitasking-Betriebssystem voraussetzen - was mit dem Er­fordernis der Er­zeu­gung exakter Impulszeiten kollidiert und überdies ein Programmier-Know-how voraussetzt, das ich nicht besitze und das ich mit als Hobby-Programmierer auch nicht unbedingt ver­schaffen will.

Funktionsweise:

Herzstück von LOK V.E1.0E/D ist eine Assembler-Routine, die u.a. für die Impulserzeugung sorgt. Nach Umbiegen u.a. des Timer-Interrupts und Neuprogrammierung des Systems-Timers 0 sowie In­stallation entsprechender Zähler, die sowohl für ein exaktes Aufrufen der Timer-Routine als auch den periodischen Start der Impulserzeugung sorgen, wird - einstellbar - alle ca. 14 ms ein Paket aus Steuerimpulsen erzeugt und wie erforderlich zweimal mit einer Pause von ca. 1,7 ms ausgesendet. Die Zeit bis zur nächsten Sequenz ist die Pau­sendauer und ist durch Anderung des Werts der Peri­odendauer in der Datei LOK.INI einstellbar. Nach jedem vierten Aussenden der Steuerdaten werden der Regler (Paddle) bzw. die Tastatur abgefragt und aus dem Wert die nächsten Sendedaten errech­net. Auch dieser Wert ist in LOK.INI einstellbar. Daten für Weichen werden nach Tastendruck zweimal nacheinander gesendet. Werden keine neuen Daten übergeben, so werden die letzten Daten wiederholt bzw. im neuen Datenformat auch die Datenpakete für die Extra-Funktionen im Turnus gesendet.

Die eigentlich Impulserzeugung erfolgt durch Zeitschleifen, die im Rahmen der Kalibrierung einge­stellt und justiert werden, da ich bislang noch keine rein Timer- oder Interrupt-gesteuerte Lösung gefunden habe, die auf allen Rechnergenerationen zuverlässig funktioniert. Diese Ka­librierung wird - einstellbar - bei jedem Programmstart vorgenommen. Aufgrund von nicht ohne weiteres vermeidba­ren Interrupts bei Aufruf der entsprechenden Programmroutine kann der Software gelegentlich eine Neukalibrierung als erforderlich erscheinen. Diese wird daher erst nach entsprechender Bestätigung vorgenommen.

Da LOK - wie gesagt - insbesondere auf ausrangierten, älteren Rechner benutzt werden und diese einer Resteverwertung zuführen soll, mußte ich auf allen Schnickschnack und insbesondere eine gra­fi­sche Benutzer­oberfläche verzichten. Man bedenke, daß das kürzeste Signal nur 13 µs dauert. Da der System-Timer 0 alle ca. 860 ns schaltet und der Prozessortakt bei einem alten 8 MHz-XT ca. 130 ns beträgt, allein eine Multiplikation dann also schon länger als der kürzeste Impuls von 13 µs dau­ert, mußte ich eine möglicher­weise unelegante aber wenig Rechenzeit erfordernde Lösung fin­den. Die grundsätzlich mögliche (wenn auch nicht 100% exakte) Alternative der Signalerzeugung über die se­rielle Schnittstelle schied trotz des Vorteils der sozusagen eingebauten Interruptsteuerung aus, weil ja insbesondere alte Rechner verwen­det werden sollen, diese aber zwar immer eine parallele Schnitt­stelle, nicht immer aber eine se­rielle Schnittstelle, besitzen und der Zweifel ältere RS232-Schnittstel­lenbaustein nicht die in diesem Fall erforderliche sehr hohe Übertragungsgeschwindigkeit unterstützt.

Da gerade bei langsamen Rechnern jeder Befehl in den kurzen Zeitschleifen erhebliche Auswir­kun­gen hat, ist nicht auszuschließen, daß unter bestimmten Bedingungen die einzelnen Zeiten manuell optimiert werden müssen. Aufgrund der natürlichen Toleranz der Dekoder, die schon aufgrund der Bauteiletoleranzen bis zu 20% Abweichung klaglos hinnehmen müssen, hat sich bislang derartiges aber nicht als notwendig erwiesen. Daher habe ich von einer menügesteuerten Anpassung abgesehen; die Werte müßten durch Editieren von LOK.INI geändert werden.

Aufgrund der mannigfaltigen Repeat-Funktionen der PC-Tastaturen erwies es sich als erforder­lich, zur Gewährleistung eines nicht intermittierenden Dauer-Schaltens von Weichen, Entkupplern, Moto­ren u.ä. bei gedrückter Funkti­onstaste den Keyboard-Interrupt gleichfalls umzubiegen und zusätzlich eine eigene Tastenauswertung zu installieren. Diese wertet nur die im Hochsprachen-Programm er­forderlichen Tasten aus. Sie gleicht nicht eventuelle Funktionsdefizite der installierten Tastaturtreiber aus; sollte also die eine oder andere Taste nicht funktionieren, so liegt dies mit Gewißheit an dem ver­wendeten Tastaturtreiber, der nur einen 'verkrüppelten' Interrupt 16 enthält.

Der Assembler-Teil enthält noch Routinen zur Abfrage des Reglers (Paddle), zur Übernahme der Da­ten, zum Testen bzw. Kalibrieren der Zeiten und natürlich zum Erkennen eines Kurzschlusses. Schließ­lich habe ich noch als weiteres 'Schmankerl' eine Routine vorge­sehen, die auch bei PC ohne Gameport - etwa alte Notebook-PC - über eine zusätzliche Schaltung einen Betrieb über Regler er­mög­lichen soll. Diese Routine habe ich mangels Schaltung nicht über­prüft; der nachfolgende Schalt­plan ist 'am grünen Tisch' entstanden und sowohl aus Zeitmangel als auch mangels ersichtlicher Re­levanz weder einer in­tensiven Überprüfung noch einer praktischen Er­probung unterzogen worden. Sie wird aber nur aktiviert, wenn in der Parametrisierung als Game­port-Adresse die Adresse des Prin­terports ein­ge­tragen wird.

Dieser Routine sowie der Schaltung liegt folgendes Prinzip zugrunde:

Entsprechend der übergebenen Reglernummer wird der betreffende Regler auf den ADC geschaltet. Nach der AD-Wandlung werden die ersten vier Bit - D0-D3 - der Ausgangsdaten des ADC als erstes Nibble eingelesen. Danach werden die folgenden drei Bit - D4-D6 - der Ausgangsdaten des ADC sowie der Status des entsprechend der Reglernummer zugleich durchgeschalteten Schalters - D7 - als zweites Nibble eingelesen. Die Nibble-weise Übertragung ist erforderlich, da nicht bei jedem PC D0-D7 der parallele Schnittstelle auch Daten empfangen können und daher mit Sicherheit nur noch SLCT, PE, ACK und BUSY als Eingangsleitungen zur Verfügung stehen.

Die Ansteuerung durch die Software geschieht wie folgt:

1. Adressen (D2 - D4) auf '0', ADC-Steuerung (D5 - D7) auf '1'

2. Reglernummer als Adresse auf D2 - D4

3. ADC-Reset durch D5 auf '0'

4. D/A-Beginn durch D5 auf '1'

5. Schleife ca. 180 µs, da D/A typ. ca. 100 µs benötigt

6. Latch für 1. Nibble freigeben durch D6 auf '0'

7. 1. Nibble lesen von SLCT, PE, ACK, BUSY (Bit0 - Bit3)

8. Latch für 1. Nibble sperren durch D6 auf '1'

9. Latch für 2. Nibble freigeben durch D7 auf '0'

10. 2. Nibble lesen von SLCT, PE, ACK, BUSY (Bit4 - Bit7)

11. Adressen (D2 - D4) auf '0', ADC-Steuerung (D5 - D7) auf '1'

Wer will oder mangels Gameport bzw. mangels Steckplatz für einen Game-Karte 'muß', kann dies ja ausprobieren und mich über Erfolg oder Mißerfolg unterrichten; bei Softwarefehlern ist ihm ein Up­date gewiß.

Aufgrund des Einklinkens in den Timer-Interrupt und der Neuprogrammierung des System-Timers 0 (Divisor = 1024) wird also alle ca. 860 µs zu dem Beginn der entsprechenden Ersatzadresse ge­sprungen. Dort wird der Timer-Zähler von 64 dekrementiert. Bei 0 wird der eigentliche Timer-Inter­rupt aufgerufen und der Zähler erneut auf 64 gesetzt. Hierdurch ist gewährleistet, daß die Systemuhr und das Diskettenlaufwerk weiter funktioniert (daher läßt sich auch nicht der Timer-Interrupt ohne weiteres für Zeitmessungen mißbrauchen). Zugleich wird der Sende-Zähler von z.B. 16 (einstellbar) dekrementiert. Solange er nicht 0 ist, wird der Interrupt beendet und die unterbrochene Programm­ausführung fortgesetzt. Ist er bei 0 angelangt, so erfolgt eine Überprüfung, ob gerade Sendedaten vom Hochsprachen-Teil übertragen werden. In diesem Fall wird eine weitere Runde gewartet, d.h. der Interrupt nach entsprechender Inkrementierung des Sendezähler beendet. Andernfalls geprüft, ob in der letzten Pause neue Daten gesendet wurden. Ist dies nicht der Fall, so werden die gespeicherten letzten Daten gesendet. Andernfalls werden die neuen Daten zum Senden verwendet, wobei bei ent­sprechend signalisierten Weichendaten zuvor eine 'Umschaltung' der Zeiten durch Austausch der Parameter erfolgt. Entsprechend des Datenformats werden die Impulsfolgen durch Zeitschleifen er­zeugt: Nach Setzen bzw. Rücksetzen von D0 des ausgewählten Printerports wird entsprechend der vorgegebenen Werte für 'kurz' (ca. 26 µs) und 'lang' (ca. 182 µs) eine simple Schleife durchlaufen. Nach Aussenden des ersten Datenpakets wird entsprechend des vorgegebenen Werts eine Pause von ca. 1,7 ms ebenfalls durch eine Zeitschleife realisiert und anschließend die Daten noch einmal gesen­det. Dies ist bekanntlich erforderlich, weil die Dekoder nur Daten verarbeiten, die innerhalb einer bestimmten Zeit zweimal eintreffen. Danach wird der Zähler für die Abfrage des Gameports von z.B. 4 (einstellbar) dekrementiert. Ist er bei 0, so wird ein Flag gesetzt, daß aus dem Hochsprachen-Teil von LOK abgefragt werden kann (eine unmittelbare Werteübergabe ist nicht möglich, da diese As­sembler-Routine ja durch den Interrupt ausgelöst und nicht aus dem Hochsprachen-Programm aufge­rufen wird) und der Zähler zurückgesetzt. Schließlich wird zu der Adresse zurückgesprungen, bei die Unterbrechung durch den Timer-Interrupt begonnen hatte. Für die Zeit von minimal ca. 2,8 ms (mittelbar durch Sendezähler einstellbar) kann das eigentlich laufende Programm - also der Hoch­sprachen-Teil von LOK - fortgesetzt werden. Danach hat der Timer-Interrupt den Sende-Zähler er­neut auf 0 dekrementiert, so daß der Sendevorgang erneut beginnt.

Die gesamte Routine ist zeitoptimiert. Da es gerade bei den kurzen Zeiten auf jeden Takt ankommt, mußte ich konsequent diejenige Realisierung wählen, die die geringste Zeit beansprucht. Daher wa­ren komfortable Befehle wie 'mul' unzulässig. Der Code entspricht daher nicht unbedingt den Vor­gaben für eine saubere und übersichtliche Programmierung. So mußte ich z.B. Adresstabellen mehr­fach durch Zeiger mittelbar zugreifbar machen, da eine simple 'mul'-Operation viel zu viel Zeit in Anspruch genommen hätte.

Der Hochsprachen-Teil von LOK V.E1.0D/E enthält das 'Drumherum' sowie die Datenbank- und Berechnungsroutinen. Nach dem Einlesen der .INI-Datei sowie der Datenbanken für die Lok- und Weichendaten werden fakultativ die Prozessoranpassung überprüft, dem Assembler-Teil die Sende­parameter übergeben sowie die Interrupts umgebogen und die Weichen geschaltet. Daran schließt sich der funktionaler Kern an, der aus einer Schleife besteht, in der das Keyboard auf Tasten­betäti­gun­gen sowie die Assembler-Routine auf  die Freigabe der Abfrage des Gameports ab­ge­fragt wer­den. Dementsprechend verzweigt das Programm zu den einzelnen Unterprogrammen, die teilweise wei­tere entsprechende Schleifen aufweisen. Mit Ausnahme der Initialisierung und Kalibrie­rung ist die Steuerung der Loks - auch über die Tastatur - immer gewährleistet. Die Weichensteue­rung ist nur im Normalbetrieb - also nicht bei Einstellungen gleich welcher Art - möglich.

Bis etwa 80% der verfügbaren Rechenzeit wird durch das Senden in Anspruch genommen. In der verbleibenden Zeit wird die Schleife durchlaufen. Wird die Freigabe des Gamports erkannt (idealerweise alle ca. 50 ms), so wird zunächst überprüft, ob zwischenzeitlich eine Weiche pp. ge­schaltet oder ein Reverse-Befehl gegeben wurde. In diesem Fall werden diese Daten umgehend in den Speicherbereich des Assembler-Teils übertragen und ein entsprechendes Flag gesetzt. Andern­falls werden anhand der beim letzten Mal erhaltenen Daten des Gameports die Steuerdaten für die Lok errechnet. Diese werden an den Assembler-Teil durch Aufruf als Parameter übertragen und ein Flag als Indikator für neue Daten übertragen. In diesem aufgerufenen Teil der Assembler-Routine werden die Daten so weit wie möglich aufbereitet - also z.B. auf die Ausnahmen im neuen Daten­format geachtet -, da es hier auf das Einhalten bestimmter Zeiten nicht ankommt. Danach wird der Gameport bzw. die oben dargestellte Hardware über den Printerport abgefragt, sofern dessen Adres­se nicht auf '0000' gesetzt wurde. Auch der Error-Eingang wird überprüft und entsprechend zu­rückgemeldet. Die erhaltenen Daten werden nach entsprechender Aufbereitung an den Hochspra­chen-Teil zurückgegeben. Dort geht es weiter mit der Programmschleife

Bei der Erzeugung der Steuerdaten für die Loks sorgt ein an sich simples Hin- und Herschalten zwi­schen bei absoluten Fahrtstufen für Zwischenwerte, die sich aber leider nicht in jeder Situation in der erwünschten Weise auswirken. Besser als die von Märklin vorgegebenen 15 Fahrtstufen, die überdies im unteren Bereich nicht und im oberen Bereich kaum genutzt werden können und sich daher fak­tisch auf etwa 6 bis 8 verwertbare Fahrtstufen reduzieren, ist dies aber allemal. Verkompliziert wurde dies aber durch die Anfahr- und Bremsverzögerung, die natürlich ebenfalls die Zwischenwerte be­rücksichtigen muß. Zusätzliche Abfragen und Ausnahmen waren für das neue Datenformat erforder­lich, da dieses ja die Bits der Geschwindigkeit sozusagen halbiert. Auch die einstellbaren Höchstge­schwindigkeiten werden berücksichtigt. Schließlich habe ich dafür gesorgt, daß jede Richtungs­ände­rung erkannt und in entsprechende Befehle umgesetzt wird.

Intern besonders aufwendig ist die Weichensteuerung geraten, bei der ich versucht habe, mögliche Fehleingaben zu verhindern. Da ich aus den oben ausgeführten Vorgaben und Performance-Gründen keine grafische Oberfläche implementieren konnte und auch eine Farbgestaltung ausschied, mußte ich mit den mageren Möglichkeiten des erweiterten ASCII-Zeichensatzes eines Darstellung wählen, die aller erforderlichen Informationen mit möglichst wenig Tastendrücken bietet. Meine Lösung ist si­cherlich gewöhnungsbedürftig. Nach einer kurzen Einarbeitungszeit kann man aber sicher damit um­gehen, zumal man sich nach Eingabe der Daten auf die Tätigkeit des 'Knopfdruckhausierers' zu­rückziehen kann und nur noch bis drücken braucht.

Zu den die Weichen - und die Lokdaten - betreffenden Programmteilen ist nicht viel zu sagen; es handelt sich um eine nur insofern außergewöhnliche Datenbankapplikation, als zahlreiche und kom­plizierte Abfragen Fehleingaben verhindern sollen. Hierdurch wird das Programm etwas schwerfällig, was man besonders bei langsamen Rechnern spürt. Allerdings stört dies nicht weiter, da das Wichtige - nämlich das exakte Senden der Daten, damit immer Wechselspannung am Gleis anliegt, durch die Manipulation des Interrupts - gewährleistet ist. Durch entsprechende Abfragen des Flags im Assem­bler-Teil ist auch gewährleistet, daß der Gameport regelmäßig abgefragt wird. Die hierdurch bewirk­te Schwerfälligkeit der anderen Programmteile ist bei langsamen Rechnern hinzunehmen aber nicht weiter schädlich, da Daten zum einen nicht oft und zum anderen nicht innerhalb einer bestimmten Zeitspanne eingegeben werden müssen.

Unerwartet aufwendig hat sich das Aussenden der Daten entsprechend der jeweiligen Sendedauer dargestellt. Da ja nach einer bestimmten Zeit nach dem Senden des Befehls für das Anschalten der Spule der Befehl für das Ausschalten der Spule erfolgen muß, während dieser Zeit aber der übrige Sendebetrieb auch zur Aufrechterhaltung der Wechselspannung weitergehen und auch der Gameport abgefragt werden muß, war eine simple Zeitschleife o.ä. nicht geeignet. Um alle einstellbaren Schaltmodi - insbesondere das zweimalige Schalten - bearbeiten zu können, waren einige Schleifen und Abfragen erforderlich, die bei langsamen Rechner zu kleinen Verzögerungen führen können.

Wählt man den Regler (Paddle) aus, so wird in eine weitere Abfrageschleife verzweigt, in der auch das Flag der Assembler-Routine für die Abfrage des Gameports kontrolliert wird. Die hier auswähl­baren Funktionen sind nichts besonders interessant oder bedeutsam und erklären sich aus sich heraus; sie bedürfen daher keiner weiteren Erläuterung. Durch entsprechende Abfragen ist sichergestellt, daß nur die Optionen angeboten werden, die nach den Einstellungen und der Eintragungen in den Lokda­ten sinnvoll und möglich sind.

Auch der Programmteil für die Parametrisierung bedarf nur insofern der Erläuterung, als die bei Ab­frage des Gameports aufgerufene Assembler-Routine auch feststellt, ob ein Regler angeschlossen ist und funktioniert.

Die Routine zum Kalibrieren schließlich ruft die Testroutine des Assembler-Teils auf. In dieser wird der Teil, in dem die Daten ausgesendet werden, wiederholt durchlaufen, so daß eine Echtzeitmes­sung möglich wird. Daher kann mit Sicherheit überprüft werden, ob die Länge der beiden Datenpa­kete (abzüglich der nicht berücksichtigten zweiten Pause) korrekt ist.

Nach jedem Durchlauf werden die Werte entsprechend der bekannten Soll-Dauer erhöht. Da aber die Werte für die einzelnen Zeiten naturgemäß zunächst in einem festen Verhältnis stehen - die Weichen-Werte entsprechen 50% der Lok-Werte, die langen Impulse sind sieben Mal so lang wie die kurzen Impulse und die Pause zwischen beiden Pakten ist achtmal so lang wie ein Datenpaket - wirkt sich eine gleichmäßige Vergrößerung aller Werte bei langsamen Rechnern aufgrund der sehr niedrigen Werte für die Schleifenwiederholung zum Nachteil insbesondere der kurzen Zeiten aus. Da eine Mes­sung auch der einzelnen Zeiten aber einen weiteren erheblichen Aufwand erfordert hätte, habe ich mich mit einem pauschalen Zuschlag begnügt - der jedoch aufgrund der natürlichen Toleranz der Dekoder noch nicht einmal erforderlich gewesen wäre.

Anschlüsse:

Benutzt werden an der parallelen Schnittstelle folgende Anschlüsse:

D0 / Pin 2  Daten Aus Aktiv = High = 5 V

D1 / Pin 3  Power an/aus Aus Aktiv = High = 5V

ERROR / Pin 15 Kurzschluß/Nothalt Ein Aktiv = High = 5 V

Masse / Pin 18-25 Masse

Die Verbindung zu dem Märklin-Booster gestaltet sich äußerst einfach:

Die Verbindung zum Elektor-Booster ist aufgrund der erforderlichen Umsetzung von 0 / 5 V zu -15/+15 V sowie der Freischaltung bei Kurzschluß/Nothalt leider etwas aufwendiger:

Dies ist natürlich nur ein Beispiel. Eigene Entwicklungen sind möglich; für Vereinfachungs­hinweise - etwa zur Ersparnis des Relais - bin ich dankbar. Die vorsorgliche Reduzierung der Versorgungs­span­nung durch R6 und R7 mag un­fachmännisch erscheinen; sie funktioniert aber und reduziert den Bau­teileaufwand. Niemand ist ge­hindert, zwei Spannungsregler von 8 V - 10 V einzubauen oder Z-Dio­den zu verwenden.

Der Regler (Paddle) wird wie folgt angeschlossen:

Sinnvollerweise verwendet man ein Drehpotentiometer mit Mittelrastung, das allerdings nicht ganz ein­fach zu bekommen ist.

Benutzung:

Beim ersten Aufruf erzeugt LOK zunächst die leeren Datenbankdateien und springt dann zur Para­metrisierung. Dort gibt man die Daten wie unten beschrieben ein und kalibriert ggfs. den Regler (Paddle). Danach wird die erste Kalibrierung des Rechners angeboten, die man tunlichst durchführen sollte. Sodann gibt man mit oder ein, ob der Regler aktiv sein soll.

Sodann sowie nach jedem folgenden Aufruf  erscheint die normale Maske. Unter der kurzen Erläute­rungen der mögli­chen Be­fehle sieht man links die Funktionsanzeige des Reglers und rechts den Sta­tus der Funktionstasten bis im Normal- und -Modus.

Eingabe der Lokdaten

Sinnvollerweise gibt man zunächst die Daten der vorhandenen Loks ein. Hierzu wählt man 'Lok­da­ten' ('Loco-data') und gibt die jeweiligen Daten unter der Adresse der betreffenden Lok ein. Jedes 'normale' Zei­chen einschließlich ermöglicht die Eingabe. Jede Adresse kann nur ein­mal ver­geben werden. Da auch am Delta-Dekoder in jedem Fall 16 und zumindest mit etwas Bastelei alle 81 Adressen (0 bis 80) eingestellt wer­den können, dürfte dies keine Probleme bereiten, so daß eine de­finitive Adressie­rung aller Loks gewährleistet ist. Die Zeichen '' und '' symbolisieren die An­fahr- und Brems­verzögerung. Entsprechend des eingestellten Werts von 1 bis 9 wird jede Fahrtstufe für X*0,1 Se­kunden beibehalten. Mit '' und '' werden die Höchstge­schwindigkeit vorwärts und Rück­wärts symbolisiert; zulässig sind Werte von 6 bis 15. 'Fmt' steht für Datenformat, wobei '0' das alte Motorola-Format und '1' das neue Märklin-Motoro­la-Format einstellt. Mit <Esc> wird die­ser Pro­grammteil verlassen.

Zur Klarstellung: Die Eingabe des Datenformats ist nicht identisch mit der Wahl der Betriebsart bei der Parametrisierung. In der Parametrisierung legt man 'nur' fest, ob nur das für die jeweilige Lok das in deren Daten eingetragene Datenformat oder immer das neue Datenformat ergänzt um den dem Fahrtrichtungsumkehrbefehl des alten Datenformats benutzt wird, wobei natürlich bei Loks, bei de­ren das neue Datenformat eingetragen ist, die vier Extra-Funktionen weder abgefragt noch angesteu­ert werden.

Eingabe der Weichendaten

Sodann folgt die Eingabe der Daten der vorhandenen Magnetartikel mit 'Weichendaten' (Points-da­ta). Die be­kannte Orga­nisation der Dekoder und Keyboards zu 8 Sub-Adressen je Hauptadresse fin­det man auch hier wie­der: Vertikal sind die 81 ins­gesamt möglichen Adressen (0 bis 80) aufgelistet (Märklin verwendet hiervon nur 64 Adressen). Horizontal können zu den 8 Sub-Adressen (Schalt­aus­gängen) jeweils der Typ des Magnetartikels sowie dessen Impulssteuerung ein­getragen werden. Unter '1', '2', '3' '7' wird der Typ eingetra­gen. Unter '1 '7' wird die da­zu­gehörige Impulssteuerung eingestellt. Als Typ­kürzel stehen gegenwärtig zu Ver­fü­gung:

D = Dreiwegweiche

L = Weiche links

R = Weiche rechts

K = Kreuzungsweiche

S = Signal 2 Stellungen

F = Signal 3 Stellungen

M = Motor

E = Entkuppler

In der Fußzeile werden die zulässigen bzw. möglichen Einträge angezeigt. Man muß beachten, daß die Adressierung eines Magnetartikels nicht dekoderübergreifend erfolgen darf, d.h. daß z.B. eine Dreiwegweiche nicht bei der Sub-Adresse 6 oder gar 7 beginnen darf, da die Dreiwegweiche zu­min­dest drei Adressen benötigt und ich zur Vermeidung von Eingabefehlern nur die Vergabe auf­einan­derfolgender Adressen /wie es auch der Praxis entspricht) zugelassen habe.

Bei Eingabe von '0' als Art der Impulssteuerung bestimmt allein die Dauer des Tastendrucks, wie lange der entsprechende Magnetartikel betätigt wird. Dementsprechend bewirkt der Ein­trag '1' das Aussenden nur eines Impulses von ca. 0,3 Sekunden Dauer. Der Eintrag '2' hat das Aussenden von zwei derartigen Impulsen mit einer Pause von ca. 0,3 Sekunden zur Folge.

Bei mehrpoligen Magnetartikeln muß nur die erste Adresse - für 'Geradeaus' oder 'Freie Fahrt' (bzw. 'Langsame Fahrt bei entsprechenden zweipoligen Signalen) - eingegeben werden. Die ent­spre­chend des Typs der eingegebe­nen Weichen pp. folgenden Adressen zur Vereinfachung der Ein­gabe durch '=' symbolisiert. Bei zweipoligen Weichen muß also auf die Adresse der 'Geradeaus'-Spule die Adresse der 'Bogen'-Spule folgen. Bei zweipoligen Signalen folgt auf die Adresse der 'Freie Fahrt'- bzw. 'Langsame Fahrt'-Spule die Adresse der 'Halten'-Spule. Bei dreipoligen Signalen folgt als drit­te Adresse die für 'Langsame Fahrt'. Bei der Dreiwegweiche folgt auf die Adresse der 'Ge­ra­de­aus'-Spule die Adresse der 'Bogen/Links'-Spule und auf diese die Adresse der 'Bogen/Rechts'-Spule. Diese komfortable Bedienung setzt jedoch voraus, daß bei der Dreiweg­wei­che der Anschluß der Spulen an die Dekoderaus­gänge gemäß der nachfolgenden Zeichnung ge­ändert wird.

Es handelt sich hierbei nur um ein Prinzip-Schaltbild, das illustriert, wie die einzelnen Spulen - ggfs. über Transistoren - von drei Schaltausgängen gesteuert werden können.

Bei dreipoligen Signalen ist zu beachten, daß ein unmittelbares Umschalten von 'Langsamer Fahrt' (Hp2) auf 'Freie Fahrt' (Hp1) nicht zulässig und konstruktionsbedingt auch nicht möglich ist. Zuvor muß immer auf 'Halten' (Hp0) geschaltet werden. Das umgekehrte unmittelbare Schalten von 'Freie Fahrt' (Hp1) auf 'Langsame Fahrt' (Hp2) ist zwar technisch möglich, ist aber meines Wissens im realen Bahnbetrieb nicht zulässig, so daß ich auch hier vorgesehen habe, daß zunächst auf 'Hal­ten' (Hp0) geschaltet werden muß. Um Fehlbedienungen nicht mit völliger Untätigkeit zu bestrafen, habe ich vorgesehen, daß bei einer irrtümlichen direkten Umschaltung von 'Hp2' auf 'Hp1' und um­ge­kehrt ein Warnton erklingt und das Signal stattdessen auf 'Hp0' geschaltet wird.

Unzulässige Eingaben sind nicht möglich; sie werden durch einen Warnton signalisiert. Eintragungen werden durch Eingabe von ' ' durch ge­löscht. Mit <Esc> wird dieser Programmteil verlassen.

Belegung der Funktionstasten

Schließlich sollten die Funktionstasten belegt werden. Nach Wahl des Befehls 'F-Tasten' ('F-keys') wird die aktuelle Belegung der Funktionstasten, d.h. die Adressen der jeweiligen Magnetartikel, an­gezeigt. Anhand der Adressen in Verbindung mit den Statussymbolen sowie dem bei dreipoligen Mag­netarti­keln zwischen den oberen Funktionstasten eingeblendeten Zeichen '' kann man erken­nen, ob es sich um ei­nen drei- oder zweipoligen Magnetartikel handelt. Als Statussymbole stehen zur Verfü­gung:

= Weiche Bogen links

= Weiche Bogen rechts

= Weiche geradeaus

X = Kreuzungsweiche Kreuzung

= Kreuzungsweiche Bogen

= Signal 'Freie Fahrt'

= Signal 'Langsame Fahrt'

= Signal 'Halten'

= Motor

= Entkuppler

Das Zeichen '' signalisiert, daß nur die -Funktion der Funktionstaste mit einem einpoli­gen Ma­gnetartikel belegt ist.

Nach Eingabe der zu belegenden Funktionstaste - ggfs. mit - öffnet sich das Fenster der Wei­chendaten und man kann den gewünschten Magnetartikel auswählen und mit überneh­men. Unzu­lässige Eingaben werden nicht angenommen. Außerdem kann eine bestehende Bele­gung nicht über­schrieben werden; zur Vermeidung irrtümlicher Eingaben muß sie zuvor explizit mit <Del> gelöscht werden. Es besteht zu­gleich die Möglichkeit, die Daten der Magnetartikel zu ändern.

Mit <Esc> wird dieser Programmteil verlassen.

Auswahl des Lok-Reglers

Zur Anderung der Lok-Adresse, also Wechsel zu einer anderen Lok, Betätigen der vier Extra-Funk­tionen im neuen Datenformat, der Anderung der Fahrtrichtung im alten Datenformat, der Anderung der aktuellen Lokdaten in Echtzeit sowie bei Tastaturbedienung dem Einschalten der einfachen Son­derfunktion ist der Regler mit  - ersatzweise auch - auszuwählen.

Die Auswahl des Reglers kann mit <Esc> beendet werden; ohne dies endet sie 10 Sekunden nach der letzten Tastenbetätigung, sofern nicht eine der nachfolgend beschriebenen Funktionen, die Ein­gaben erfor­dern, ausgewählt ist.

Richtungsänderung

Da im alten Motorola-Datenformat ein absoluter Richtungsbefehl nicht möglich ist, kann die tatsäch­liche Fahrtrichtung der Lok von der Reglerstellung abweichen - etwa wenn die Lok ei­nen Umschalt­befehl infolge von Kontaktschwierigkeiten nicht mitbekommen hat. In diesem Fall kann mit der Funk­tion 'Richtung' ('Reverse') die Fahrtrichtung geändert werden. Dies funktioniert auch aus lau­fender Fahrt heraus.

Lok auswählen / Lok-Adresse einstellen

Die Lok-Adresse, also die Lok, kann mit aus dem Ziffern­block und Wählen von 'Adresse' ('Adress') geändert werden. Ursprünglich hatte ich vorgesehen, daß dies erst nach manuellem De­aktivieren des Reglers (Paddle) möglich ist. Testanwender fanden dies aber zu umständlich, so daß der Regler (Paddle) nun automatisch deaktiviert wird.

Auch hier können die Lok-Daten ge­ändert wer­den. Die neue Adresse wird mit übernommen; mit <Esc> kann abgebrochen werden. Der Regler wird mit aus dem Ziffern­block wie­der akti­viert. LOK V.E1.0D/E merkt sich Ge­schwin­digkeit und Status der vier Extra-Funk­tionen im neuen Da­ten­format - im Falle der Bedienung über die Tastatur auch den Status der Son­der­funktion - der jeweils letzten bzw. vorletzten Lok. Ein Beispiel erläutert dies:

Man fährt mit Lok 01. Aus der Fahrt heraus deaktiviert man den Regler (Paddle). Lok 01 fährt so­wohl auf­grund der internen Speicherung der Daten als auch dem Weitersenden des letzten Befehls weiter. Im neuen Datenformat werden auch die Daten für die vier Extra-Funktionen übertra­gen. Man wechselt auf Lok 02, aktiviert den Regler (Paddle) - von nun an werden nur noch die Daten für Lok 02 übertragen - und rangiert. Danach wechselt man nach Auswählen und Deaktivieren des Reglers (Paddle) wieder auf Lok 01. Nun wird in der ersten Geschwindigkeitszeile die letzte Ge­schwin­dig­keit von Lok 01 sowie deren Status der Extrafunktionen angezeigt. Durch entspre­chenden Betätigen von bis - ggfs. auch Auswählen von 'Licht' im Falle der Bedienung durch die Tastatur - sowie dem Einstellen des Reg­lers (Paddle), dessen tatsächliche Stellung in der zweiten Geschwindig­keits­zeile angezeigt wird, kann für einen nahtlosen Übergang bei Aktivie­ren des Reglers (Paddle) gesorgt werden.

Zur Klarstellung: Beim Deaktivieren des Reglers werden die letzten gesendeten Daten wieder­holt. Beim Aktivieren des Reglers (Paddle) werden nur die Daten der aktuellen Lok gesendet. Eine Wie­derholung der Daten der anderen Loks ist gegenwärtig noch nicht möglich, da dies bei der ge­gen­wär­tigen Im­pulserzeugung die Kapazität alter bzw. langsamer Rechner übersteigen und zu unver­tret­bar langen Reaktionszeiten führen würde. Bei modernen bzw. schnellen Rechnern ist dies zwar mög­lich; aller­dings soll LOK ja gerade eine Verwertung alter und an sich nicht mehr brauchbarer Rechner ermög­lichen. Eine entsprechende Verbesserung ist indes beabsichtigt.

Gleiches gilt für die Verwendung mehrerer Regler. Da der Gameport den Anschluß von vier Reglern (Paddle) ermöglicht, bietet sich an, LOK auch entsprechend auszulegen. Auch dies würde aber einen auf­wendigen Neuentwurf der Assembler-Routine erfordern, wobei gegenwärtig noch nicht sicher ist, ob die angedachte Lösung in der Praxis überhaupt funktioniert. Gegen­wärtig würde dies aber selbst bei PC mit 386-Prozessor zu Abfragezeiten von mehr als 0,25 Sekunden je Regler (Paddle) führen, was in Ansehung der erforderlichen Berechnungen keine sinnvolle Reakti­onszeiten mehr ermöglicht.

Anfahrverzögerung

Mit 'Anfahr' ('Speed-up') kann die Anfahrverzögerung in Echtzeit eingestellt werden. Mit und auf dem Ziffernblock kann der Wert der Verzögerung von 0 bis 9 eingestellt und zugleich die Lok gefahren werden, um die Auswirkung der Anderung zu erkennen. Die Verzögerung geschieht da­durch, daß nur alle X*0,1 Sekunden die Fahrtstufe gewechselt wird, wobei 'X' der einge­tragenen Zahl ent­spricht. Wird also der Regler von der Mittelstellung bis zum Anschlag ge­dreht, so wird an die Lok nicht sofort der Befehl für die höchste Fahrtstufe gesendet. Vielmehr wird - vorbehaltlich ei­ner vor­gegebenen Höchstgeschwindigkeit - jede Fahrtstufe durchlaufen und entsprechend der ein­ge­stellten Zeit dort verharrt. Die durch Hin- und Herschalten zwi­schen zwei Fahrtstufen erzeugten künstlichen Zwischenwerte werden ebenfalls berücksichtigt. Mit wird der eingestellten Wert übernommen; mit <Esc> kann ohne Anderung abgebrochen werden.

Bremsverzögerung

Mit 'Bremsen' ('Slow-down') wird analog der obigen Beschreibung der Wert für die Bremsverzö­gerung ein­gestellt.

Höchtsgeschwindigkeiten

Unter 'Tempo' ('Speed') können die Höchstgeschwindigkeiten für Vorwärts- und für Rück­wärts­fahrt einge­stellt werden. Die Bedienung erfolgt analog der obigen Beschreibung; zuerst wie die Höchstge­schwindigkeit für Vorwärtsfahrt und danach die Höchstgeschwindigkeit für Rück­wärtsfahrt einge­stellt.

Extra-Funktionen 1 bis 4

Mit bis können bei Loks, deren Dekoder das neue Märklin-Motorola-Format auswer­ten (ab Chip 701.17) , die entsprechend beschaltet sind und bei denen das Datenformat ent­sprechend einge­tragen ist, die vier Extra-Funktionen geschaltet werden. Eine entsprechende Anzeige informiert über den Status.

Sonderfunktion

Mit 'Licht' ('Light') kann bei Tastaturbedienung die Sonderfunktion der Digital-Dekoders bzw. des umge­bauten Delta-Dekoders geschaltet werden. Auch hier informiert eine entsprechende An­zeige über den Status.

Kalibrieren

Mit 'Eichen' ('Calibrate') und anschließender Bestätigung mit wird das Justieren der signal­er­zeu­genden Zeit­schleifen veranlaßt. Die angezeigten Werte können ignoriert werden. Normalerweise be­steht kein Anlaß, diesen Programmteil manuell aufzurufen, da LOK V.E1.0D/E bereits beim Pro­grammstart die korrekten Werte überprüft und bei - manchmal leider auch vermeintlichen - Abwei­chungen diese Routine aufruft.

Parametrisieren

'Init' schließlich ruft den Programmteil auf, in dem die wichtigsten Parameter eingestellt werden kön­nen, nämlich die Betriebsart bezüglich des Datenformats, die LPT-Port-Adresse, die Gameport-Adresse sowie die Kurzschluß-Toleranzzeit. Außerdem wird der Regler (Paddle) kalibriert. Diese Pro­zedur muß aufgrund der erheblichen Temperaturdrift der Bauteile auf der Game-Karte des öfte­ren wiederholt werden, sofern man nicht die einmal im betriebswarmen Zustand ermittelten Werte spei­chert und beläßt und fürderhin mit dem Spielen wartet, bis der Rechner Betriebstemperatur er­reicht hat.

Datenformat

Trägt man bei der Betriebsart des Datenformats '0' ein, so wird das Datenformat entsprechend der Vorgaben zu der jeweils ausgewählten Lok gesendet. Eine Umstellung ist also - im Gegen­satz zu dem Märklin-Controller - nicht erforderlich.

Portadressen

Die Portadressen werden entsprechend der vorhandenen bzw. gewünschten Ports in hexadezi­maler Form eingeben. Standardwerte sind für den LPT-Port '0378' und für den Gameport '0201'. Die Eingabe von '0000' führt zur Steuerung des Lok über die Tastatur.

Kurzschluß-Toleranzzeit

Da beim Betrieb oftmals für sehr kurze Zeit Kurzschlüsse auftreten, ist nicht wünschenswert, daß die Kurzschlußsicherung sofort ausgelöst wird. Daher kann eine entsprechende Toleranz- bzw. Warte­zeit von 0,1 bis 3,0 Sekunden eingetragen werden.

Kalibrierung des Reglers (Paddle)

Den Anweisungen folgend werden die Werte für die linke, rechte und mittlere Reglerstellung ermit­telt. Registriert das Programm identische oder zu große Werte, so geht es von einem defekten oder fehlenden Potentiometer aus und stellt den Gameport auf '0000' ein, schaltet also auf Tasta­turbe­die­nung.

Kurzschluß / Nothalt

Bei einem Kurzschluß wird nach Ablauf der Toleranzzeit der Betrieb unterbrochen. Nach Beseiti­gung der Störung kann durch Betätigen einer Taste fortgefahren werden. Gleiches geschieht durch Betätigen von , die überall mit Ausnahme der Eingabe von Lok- und Weichendaten als Nothalt-Taste fungiert.

Programmende

Mit <Esc> wird das Programm beendet. Die aktuellen Daten werden automatisch gespeichert. Dies gilt nicht für die Werte der Rechner- und Regler(Paddle)-Kalibrierung, Diese werden nur bei Bejahen der entsprechenden Frage durch Überschreiben der alten Werte gespeichert; andernfalls bleiben die alten Werte vom Programmstart erhalten.

Referate Technik

Steuern der Loks und Schalten der Weichen

Steuern der Loks

Bei Anschluß eines Reglers (Paddle) regelt dieser die Geschwindigkeit. In der Mittelstellung ist die Geschwindigkeit 0. Von dort aus nach rechts wird die Vorwärtsgeschwindigkeit erhöht; nach links verringert zunächst die Geschwindigkeit und führt bei Überdrehen über die Mittelstellung zur Rück­wärtsgeschwindigkeit. Allerdings gilt die Zuordnung der Drehrichtung zur Fahrtrichtung absolut nur im neuen Datenformat und neuen Dekodern (ab Chip 701.17); im alten Datenformat bestimmt allein ein entsprechendes Flip-Flop in dem Dekoder, das auf den Umschaltbefehl reagiert, die Fahrtrich­tung. Erkennt der Dekoder den Umschaltbefehl - etwa aufgrund momentaner Kontaktprobleme - nicht, so behält die Lok die Fahrtrichtung bei.

Der dazugehörige Schalter schaltet die Sonderfunktion ein, an die üblicherweise das Licht, der Dampf­generator oder die TELEX-Kupplung angeschlossen ist - sofern in die entsprechende Lok der Digital-Dekoder oder der umgebaute Delta-Dekoder eingebaut ist.

Ohne Regler (Paddle) oder bei Verzicht auf dessen Benutzung kann die Lok bei Eintrag von '0000' als Gameport-Adresse durch die Tastenkombinationen vorwärts und rückwärts ge­steuert werden; beim Halten dieser Tastenkombinationen wird der Geschwindigkeitswert heraus bzw. herabgezählt. Bei sehr schnellen Rechnern und kurzen Pausen- sowie Abfragezeiten kann dies zu viel zu schnellen Reaktionen führen. In diesem Fall ist der Wert für die Abfragezeit angemessen zu erhöhen.

Schalten der Weichen

Weichen pp. werden durch einfaches Betätigen der Tasten bis sowie bis ge­schaltet. Bei eingestellten einfachen oder doppelten Impulsen genügt eine kurze Betätigung. An­dern­falls wird entsprechend der Dauer des Tastendrucks geschaltet. Die jeweils gedrückte Taste eines Tastenpaares ist hervorgehoben. Entsprechend der Eintragungen in den Weichendaten sowie der Tastenbelegung wird der entsprechende Status durch die oben erläuterten Symbole angezeigt. Dies ist aber nur relevant, wenn die Weiche oder das Signal nicht sichtbar ist. Bei dreipoligen Wei­chen oder Signalen befindet sich der Schalter für den dritte Status zwar auf der -Ebene der fol­genden Taste. Der Status wird aber über der 'eigentlich' zugewiesenen Funktionstaste angezeigt. Zur Ver­meidung von Irrtümern wird bei den dreipoligen Magnetarti­keln zwischen den oberen Funktions­ta­sten das Zeichen '' eingeblendet, das symbolisiert, daß die -Ebene der fol­genden Taste zu dem vorherigen Tastenpaar gehört.

Bei einpoligen Magnetartikeln wird die entsprechende Taste nicht hervorgehoben, da es sich bei die­sen regelmäßig nur um monostabile Gerätschaften - Entkuppler, Motor einer Drehscheibe usw. - handelt.

Zusätzliche Parametrisierung durch Anderung von LOK.INI

Folgende Einträge in LOK.INI sind für den Anwender u.U. von Interesse und können nur durch Edi­tieren der Datei LOK.INI geändert werden:

18=lokkurz

9=weichkurz

132=loklang

66=weichlang

1278=lokpause

634=weichpause

14=interrupt

8=request

1=autokal

1=weichini

Impulserzeugung

Die Werte vor 'lokkurz', 'weichkurz', 'loklang', weichlang', 'lokpause' und 'weichpause' bestim­men die Impulserzeugung. Sollte eine korrekte Steuerung nicht möglich sein und ein Messen mit dem Oszilloskop ergeben, da die Zeiten nicht stimmen, so müssen die nicht passenden Zeiten durch ent­sprechende Anderung der Werte angepaßt werden. Hierbei bestimmt 'lokkurz' die kurze Impuls­dauer für Loks von 26 µs, 'loklang' die lange Impulsdauer für Loks von 182 µs und 'lokpause' die Dauer der Pause zwischen zwei Datenpaketen von 1,7 ms. Für die Weichen gelten die korrespon­die­renden Werte, die aber nur 50% der Lokwerte - also 13 µs, 91 µs und 850 µs - betragen

Reaktionszeit

Der Wert von 'interrupt' bestimmt die Periode des Aussendens der Daten, also mittelbar die Dauer der Pause zwischen zwei Datenpaketen. Zulässig ist ein minimaler Wert von 14, der ein Pause von etwa 2,8 ms zur Folge hat - etwas mehr als doppelt soviel wie bei Märklin im neuen Datenformat zulässig ist. Allerdings ist dieser Wert bei langsamen Rechner zu niedrig, da dann nicht mehr genü­gend Rechenzeit für die Auswertung der Reglerabfrage zur Verfügung steht. Je langsamer der Rech­ner, destso höher sollte 'interrupt' eingestellt werden. Allerdings ist zu beachten, daß auch der Ein­trag unter 'request' die Schnelligkeit der Tastaturabfrage bestimmt, da entsprechend dieses Ein­trags der Regler (Paddle) abgefragt wird: Ist ein Wert von vier eingetragen, so wird der Regler (Paddle) nach jedem vierten Aussenden der Daten abgefragt. Zulässig ist ein minimaler Wert von 2, der aller­dings bei schnellen Rechner und Tastaturbedienung zu niedrig ist. Ein 486DX2-66 läuft mit den obi­gen Werten gut. Bei langsamen Rechnern wird man die Pausendauer durch Vergrößerung von 'interrupt' verlängern um dadurch dem PC mehr Zeit zum Berechnen der Daten zu geben. Zur Kompensation der daraus folgenden längeren Intervalle zur Abfrage des Reglers (Paddle), also der Re­aktionszeit, wird man 'request' bis zum minimalen Wert von 2 reduzieren. Bei extrem langsamen Rechnern kann etwas Probieren erforderlich sein, um die optimale Kombination herauszufinden.

Automatische Rechnerkalibrierung

Mit 'autokal' kann eingestellt werden, ob das Programm beim Start die eingetragenen Werte für die Impulssteuerung verifiziert. Mit dem Eintrag '0' wird dieser Test abgestellt.

Automatische Weichenrekonstruktion

Der Wert von '1' für 'weichini' bestimmt, ob beim Programmstart die letzten Weichen- und Signal­stellungen rekonstruiert werden, also Weichen und Signale entsprechend der gespeicherten letzten Stellungen geschaltet werden. Mit '0' wird dies abgestellt.

https://www.azreferate.com/referate/technik/Farbfernsehempfnger-Prinzip-de839.php



Politica de confidentialitate | Termeni si conditii de utilizare



DISTRIBUIE DOCUMENTUL

Comentarii


Vizualizari: 4485
Importanta: rank

Comenteaza documentul:

Te rugam sa te autentifici sau sa iti faci cont pentru a putea comenta

Creaza cont nou

Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved