CATEGORII DOCUMENTE |
Bulgara | Ceha slovaca | Croata | Engleza | Estona | Finlandeza | Franceza |
Germana | Italiana | Letona | Lituaniana | Maghiara | Olandeza | Poloneza |
Sarba | Slovena | Spaniola | Suedeza | Turca | Ucraineana |
DOCUMENTE SIMILARE |
|
Bedienungsanleitung und Beschreibung der PC-Lokomotiven- und Weichensteuerungssoftware 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 erforderlichen 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 kleines Interface.
Kurzschlußerkennung mit einstellbarer Wartezeit und Stromabschaltung bei Kurzschluß oder Nothalt.
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 Mischung aus beiden Formaten.
Volle Unterstützung des neuen Märklin-Motorola-Formats (4 Extra-Funktionen, definitive Fahrtrichtungssteuerung, kürzere Pausenzeiten).
Bezeichnung, Bremsverzögerung, Anfahrverzögerung, richtungsabhängige Höchstgeschwindigkeiten 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 erneutem Einstellen der Adresse angezeigt.
Ansteuern von 10 zweipoligen bzw. 20 einpoligen Magnetschaltartikeln oder einer entsprechenden Mischung (auch Dreiwegweiche) aus einer Auswahl von 648/324 Adressen (Adressen 000 bis 648).
Ansteuerart der Magnetartikel durch Impulsdauer gemäß Tastendruck, einen definierten Impuls 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' gelegt, 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' - einer hochfrequenten zweiten Spannung - konnte sich zumindest im Wechselstrombereich nicht durchsetzen.
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 Steuerungen 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 simple 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 solche Steuerung kostet aber ihren Preis: Man muß man für z.B. vier Regler und eine Steuerung für zumindest 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 einem entsprechenden Dekoder (dem sog. Delta-Dekoder) ausgestattet sind, jedem Kunden Appetit auf die Digitalsteuerung macht. Da die Einsteigerpackungen zumeist ein außerordentlich gutes Preis-/Leistungsverhältnis bieten (so ist der aktuelle Einsteigerkasten 29605 mit einem Preis von bis herunter 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 Lokomotiven an. Hinzu kommt, daß sich die Delta-Dekoder schon per DIP-Schalter auf 16 Adressen einstellen lassen, so daß selbst mittelgroße Anlagen ohne weitere - alles wenig aufwendige - Bastelei an dem Dekoder gesteuert 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 Extra-Funktionen der Maxi-Spur- und Spur-1-Modelle erweitern - was Märklin tunlichst verschweigt. Letzteres ist allerdings 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 gerü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ärklin vor etwa einem Jahr - natürlich 'heimlich' - eingeführt hat, nicht unterstü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 Bauteile 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 Betriebsspannung 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 Steuerteil; 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 Kombination 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ärklin-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 Formats (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 Eigenkonstruktion 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 Weichensteuerung 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 zusammenschalten 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 erforderliche '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 attraktiv 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 anderen 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ösenden 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, bietet 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-Irgendwas zusammenzubasteln. Demzufolge hat die Entwicklung von LOK auch einige hundert Stunden Programmierarbeit erfordert. Aus diesem Grund wird man mir nachsehen, daß ich die Quellcodes nicht veröffentliche.
LOK ist von vorneherein für die Bedienung durch einen Regler (Paddle), also durch ein an den Joystick-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 Leben und insbesondere die Steuerung außerordentlich erleichtert. Wer die heutzutage obligate Maussteuerung 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 vergegenwärtigen, daß man auch auf der Modelleisenbahn die Augen tunlichst auf den Schienen bzw. der gesteuerten 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 einen Regler gesteuert - und damit basta. Daher sind auch die - leider recht programmieraufwendigen - Anzeigen der Statussymbole für die Weichen und Signale nur als 'Schmankerl' für diejenigen Anwender gedacht, die es einfach 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ärklin-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 Software nicht anderweitig angeboten. Möglicherweise werde ich bei Interesse in einer späteren Version eine Märklin- bzw. EDITS-kompatible Schnittstelle zum Empfang entsprechender Steuerdaten vorsehen. Dies würde aber zum einen unbedingt den Einsatz leistungsfähiger Rechner erfordern und zum anderen ein Multitasking-Betriebssystem voraussetzen - was mit dem Erfordernis der Erzeugung exakter Impulszeiten kollidiert und überdies ein Programmier-Know-how voraussetzt, das ich nicht besitze und das ich mit als Hobby-Programmierer auch nicht unbedingt verschaffen 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 Installation 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 Pausendauer und ist durch Anderung des Werts der Periodendauer 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 errechnet. 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 eingestellt 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 Kalibrierung wird - einstellbar - bei jedem Programmstart vorgenommen. Aufgrund von nicht ohne weiteres vermeidbaren 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 grafische Benutzeroberflä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 dauert, mußte ich eine möglicherweise unelegante aber wenig Rechenzeit erfordernde Lösung finden. Die grundsätzlich mögliche (wenn auch nicht 100% exakte) Alternative der Signalerzeugung über die serielle Schnittstelle schied trotz des Vorteils der sozusagen eingebauten Interruptsteuerung aus, weil ja insbesondere alte Rechner verwendet werden sollen, diese aber zwar immer eine parallele Schnittstelle, nicht immer aber eine serielle Schnittstelle, besitzen und der Zweifel ältere RS232-Schnittstellenbaustein nicht die in diesem Fall erforderliche sehr hohe Übertragungsgeschwindigkeit unterstützt.
Da gerade bei langsamen Rechnern jeder Befehl in den kurzen Zeitschleifen erhebliche Auswirkungen 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 erforderlich, zur Gewährleistung eines nicht intermittierenden Dauer-Schaltens von Weichen, Entkupplern, Motoren u.ä. bei gedrückter Funktionstaste den Keyboard-Interrupt gleichfalls umzubiegen und zusätzlich eine eigene Tastenauswertung zu installieren. Diese wertet nur die im Hochsprachen-Programm erforderlichen 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 verwendeten 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 Daten, zum Testen bzw. Kalibrieren der Zeiten und natürlich zum Erkennen eines Kurzschlusses. Schließlich habe ich noch als weiteres 'Schmankerl' eine Routine vorgesehen, die auch bei PC ohne Gameport - etwa alte Notebook-PC - über eine zusätzliche Schaltung einen Betrieb über Regler ermöglichen soll. Diese Routine habe ich mangels Schaltung nicht überprüft; der nachfolgende Schaltplan ist 'am grünen Tisch' entstanden und sowohl aus Zeitmangel als auch mangels ersichtlicher Relevanz weder einer intensiven Überprüfung noch einer praktischen Erprobung unterzogen worden. Sie wird aber nur aktiviert, wenn in der Parametrisierung als Gameport-Adresse die Adresse des Printerports eingetragen 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 Update 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 gesprungen. Dort wird der Timer-Zähler von 64 dekrementiert. Bei 0 wird der eigentliche Timer-Interrupt 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 Programmausfü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 entsprechend signalisierten Weichendaten zuvor eine 'Umschaltung' der Zeiten durch Austausch der Parameter erfolgt. Entsprechend des Datenformats werden die Impulsfolgen durch Zeitschleifen erzeugt: 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 gesendet. 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 Assembler-Routine ja durch den Interrupt ausgelöst und nicht aus dem Hochsprachen-Programm aufgerufen 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 Hochsprachen-Teil von LOK - fortgesetzt werden. Danach hat der Timer-Interrupt den Sende-Zähler erneut 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 waren komfortable Befehle wie 'mul' unzulässig. Der Code entspricht daher nicht unbedingt den Vorgaben für eine saubere und übersichtliche Programmierung. So mußte ich z.B. Adresstabellen mehrfach 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 Sendeparameter ü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 Tastenbetätigungen sowie die Assembler-Routine auf die Freigabe der Abfrage des Gameports abgefragt werden. Dementsprechend verzweigt das Programm zu den einzelnen Unterprogrammen, die teilweise weitere entsprechende Schleifen aufweisen. Mit Ausnahme der Initialisierung und Kalibrierung ist die Steuerung der Loks - auch über die Tastatur - immer gewährleistet. Die Weichensteuerung 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. geschaltet 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. Andernfalls 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 Datenformat 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 Adresse nicht auf '0000' gesetzt wurde. Auch der Error-Eingang wird überprüft und entsprechend zurückgemeldet. Die erhaltenen Daten werden nach entsprechender Aufbereitung an den Hochsprachen-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 zwischen 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 faktisch 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 berücksichtigen muß. Zusätzliche Abfragen und Ausnahmen waren für das neue Datenformat erforderlich, da dieses ja die Bits der Geschwindigkeit sozusagen halbiert. Auch die einstellbaren Höchstgeschwindigkeiten werden berücksichtigt. Schließlich habe ich dafür gesorgt, daß jede Richtungsänderung 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 sicherlich gewöhnungsbedürftig. Nach einer kurzen Einarbeitungszeit kann man aber sicher damit umgehen, zumal man sich nach Eingabe der Daten auf die Tätigkeit des 'Knopfdruckhausierers' zurü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 komplizierte 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 Assembler-Teil ist auch gewährleistet, daß der Gameport regelmäßig abgefragt wird. Die hierdurch bewirkte 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ählbaren 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 Lokdaten sinnvoll und möglich sind.
Auch der Programmteil für die Parametrisierung bedarf nur insofern der Erläuterung, als die bei Abfrage 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 Echtzeitmessung möglich wird. Daher kann mit Sicherheit überprüft werden, ob die Länge der beiden Datenpakete (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 Messung 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 Vereinfachungshinweise - etwa zur Ersparnis des Relais - bin ich dankbar. Die vorsorgliche Reduzierung der Versorgungsspannung durch R6 und R7 mag unfachmännisch erscheinen; sie funktioniert aber und reduziert den Bauteileaufwand. Niemand ist gehindert, zwei Spannungsregler von 8 V - 10 V einzubauen oder Z-Dioden zu verwenden.
Der Regler (Paddle) wird wie folgt angeschlossen:
Sinnvollerweise verwendet man ein Drehpotentiometer mit Mittelrastung, das allerdings nicht ganz einfach zu bekommen ist.
Benutzung:
Beim ersten Aufruf erzeugt LOK zunächst die leeren Datenbankdateien und springt dann zur Parametrisierung. 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äuterungen der möglichen Befehle sieht man links die Funktionsanzeige des Reglers und rechts den Status 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 'Lokdaten' ('Loco-data') und gibt die jeweiligen Daten unter der Adresse der betreffenden Lok ein. Jedes 'normale' Zeichen einschließlich ermöglicht die Eingabe. Jede Adresse kann nur einmal vergeben werden. Da auch am Delta-Dekoder in jedem Fall 16 und zumindest mit etwas Bastelei alle 81 Adressen (0 bis 80) eingestellt werden können, dürfte dies keine Probleme bereiten, so daß eine definitive Adressierung aller Loks gewährleistet ist. Die Zeichen '' und '' symbolisieren die Anfahr- und Bremsverzögerung. Entsprechend des eingestellten Werts von 1 bis 9 wird jede Fahrtstufe für X*0,1 Sekunden beibehalten. Mit '' und '' werden die Höchstgeschwindigkeit vorwärts und Rückwä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-Motorola-Format einstellt. Mit <Esc> wird dieser Programmteil 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 deren das neue Datenformat eingetragen ist, die vier Extra-Funktionen weder abgefragt noch angesteuert werden.
Eingabe der Weichendaten
Sodann folgt die Eingabe der Daten der vorhandenen Magnetartikel mit 'Weichendaten' (Points-data). Die bekannte Organisation der Dekoder und Keyboards zu 8 Sub-Adressen je Hauptadresse findet man auch hier wieder: Vertikal sind die 81 insgesamt möglichen Adressen (0 bis 80) aufgelistet (Märklin verwendet hiervon nur 64 Adressen). Horizontal können zu den 8 Sub-Adressen (Schaltausgängen) jeweils der Typ des Magnetartikels sowie dessen Impulssteuerung eingetragen werden. Unter '1', '2', '3' '7' wird der Typ eingetragen. Unter '1 '7' wird die dazugehörige Impulssteuerung eingestellt. Als Typkürzel stehen gegenwärtig zu Verfü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 zumindest drei Adressen benötigt und ich zur Vermeidung von Eingabefehlern nur die Vergabe aufeinanderfolgender 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 Eintrag '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 entsprechend des Typs der eingegebenen Weichen pp. folgenden Adressen zur Vereinfachung der Eingabe 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 dritte Adresse die für 'Langsame Fahrt'. Bei der Dreiwegweiche folgt auf die Adresse der 'Geradeaus'-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 Dreiwegweiche der Anschluß der Spulen an die Dekoderausgä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 'Halten' (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 umgekehrt 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 gelö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, angezeigt. Anhand der Adressen in Verbindung mit den Statussymbolen sowie dem bei dreipoligen Magnetartikeln zwischen den oberen Funktionstasten eingeblendeten Zeichen '' kann man erkennen, ob es sich um einen 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 einpoligen Magnetartikel belegt ist.
Nach Eingabe der zu belegenden Funktionstaste - ggfs. mit - öffnet sich das Fenster der Weichendaten und man kann den gewünschten Magnetartikel auswählen und mit übernehmen. Unzulässige Eingaben werden nicht angenommen. Außerdem kann eine bestehende Belegung nicht überschrieben werden; zur Vermeidung irrtümlicher Eingaben muß sie zuvor explizit mit <Del> gelöscht werden. Es besteht zugleich 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-Funktionen im neuen Datenformat, der Anderung der Fahrtrichtung im alten Datenformat, der Anderung der aktuellen Lokdaten in Echtzeit sowie bei Tastaturbedienung dem Einschalten der einfachen Sonderfunktion 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 Eingaben erfordern, ausgewählt ist.
Richtungsänderung
Da im alten Motorola-Datenformat ein absoluter Richtungsbefehl nicht möglich ist, kann die tatsächliche Fahrtrichtung der Lok von der Reglerstellung abweichen - etwa wenn die Lok einen Umschaltbefehl infolge von Kontaktschwierigkeiten nicht mitbekommen hat. In diesem Fall kann mit der Funktion 'Richtung' ('Reverse') die Fahrtrichtung geändert werden. Dies funktioniert auch aus laufender Fahrt heraus.
Lok auswählen / Lok-Adresse einstellen
Die Lok-Adresse, also die Lok, kann mit aus dem Ziffernblock und Wählen von 'Adresse' ('Adress') geändert werden. Ursprünglich hatte ich vorgesehen, daß dies erst nach manuellem Deaktivieren 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 werden. Die neue Adresse wird mit übernommen; mit <Esc> kann abgebrochen werden. Der Regler wird mit aus dem Ziffernblock wieder aktiviert. LOK V.E1.0D/E merkt sich Geschwindigkeit und Status der vier Extra-Funktionen im neuen Datenformat - im Falle der Bedienung über die Tastatur auch den Status der Sonderfunktion - 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 sowohl aufgrund 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 übertragen. 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 Geschwindigkeit von Lok 01 sowie deren Status der Extrafunktionen angezeigt. Durch entsprechenden Betätigen von bis - ggfs. auch Auswählen von 'Licht' im Falle der Bedienung durch die Tastatur - sowie dem Einstellen des Reglers (Paddle), dessen tatsächliche Stellung in der zweiten Geschwindigkeitszeile angezeigt wird, kann für einen nahtlosen Übergang bei Aktivieren des Reglers (Paddle) gesorgt werden.
Zur Klarstellung: Beim Deaktivieren des Reglers werden die letzten gesendeten Daten wiederholt. Beim Aktivieren des Reglers (Paddle) werden nur die Daten der aktuellen Lok gesendet. Eine Wiederholung der Daten der anderen Loks ist gegenwärtig noch nicht möglich, da dies bei der gegenwärtigen Impulserzeugung die Kapazität alter bzw. langsamer Rechner übersteigen und zu unvertretbar langen Reaktionszeiten führen würde. Bei modernen bzw. schnellen Rechnern ist dies zwar möglich; allerdings soll LOK ja gerade eine Verwertung alter und an sich nicht mehr brauchbarer Rechner ermöglichen. 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 aufwendigen Neuentwurf der Assembler-Routine erfordern, wobei gegenwärtig noch nicht sicher ist, ob die angedachte Lösung in der Praxis überhaupt funktioniert. Gegenwä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 Reaktionszeiten 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 dadurch, daß nur alle X*0,1 Sekunden die Fahrtstufe gewechselt wird, wobei 'X' der eingetragenen Zahl entspricht. Wird also der Regler von der Mittelstellung bis zum Anschlag gedreht, so wird an die Lok nicht sofort der Befehl für die höchste Fahrtstufe gesendet. Vielmehr wird - vorbehaltlich einer vorgegebenen Höchstgeschwindigkeit - jede Fahrtstufe durchlaufen und entsprechend der eingestellten Zeit dort verharrt. Die durch Hin- und Herschalten zwischen 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 eingestellt.
Höchtsgeschwindigkeiten
Unter 'Tempo' ('Speed') können die Höchstgeschwindigkeiten für Vorwärts- und für Rückwärtsfahrt eingestellt werden. Die Bedienung erfolgt analog der obigen Beschreibung; zuerst wie die Höchstgeschwindigkeit für Vorwärtsfahrt und danach die Höchstgeschwindigkeit für Rückwärtsfahrt eingestellt.
Extra-Funktionen 1 bis 4
Mit bis können bei Loks, deren Dekoder das neue Märklin-Motorola-Format auswerten (ab Chip 701.17) , die entsprechend beschaltet sind und bei denen das Datenformat entsprechend eingetragen 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 umgebauten Delta-Dekoders geschaltet werden. Auch hier informiert eine entsprechende Anzeige über den Status.
Kalibrieren
Mit 'Eichen' ('Calibrate') und anschließender Bestätigung mit wird das Justieren der signalerzeugenden Zeitschleifen veranlaßt. Die angezeigten Werte können ignoriert werden. Normalerweise besteht kein Anlaß, diesen Programmteil manuell aufzurufen, da LOK V.E1.0D/E bereits beim Programmstart die korrekten Werte überprüft und bei - manchmal leider auch vermeintlichen - Abweichungen diese Routine aufruft.
Parametrisieren
'Init' schließlich ruft den Programmteil auf, in dem die wichtigsten Parameter eingestellt werden können, 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 Prozedur muß aufgrund der erheblichen Temperaturdrift der Bauteile auf der Game-Karte des öfteren wiederholt werden, sofern man nicht die einmal im betriebswarmen Zustand ermittelten Werte speichert und beläßt und fürderhin mit dem Spielen wartet, bis der Rechner Betriebstemperatur erreicht 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 Gegensatz zu dem Märklin-Controller - nicht erforderlich.
Portadressen
Die Portadressen werden entsprechend der vorhandenen bzw. gewünschten Ports in hexadezimaler 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. Wartezeit 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 ermittelt. 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 Tastaturbedienung.
Kurzschluß / Nothalt
Bei einem Kurzschluß wird nach Ablauf der Toleranzzeit der Betrieb unterbrochen. Nach Beseitigung 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.
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ückwä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 Fahrtrichtung. 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 Dampfgenerator 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 gesteuert 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 geschaltet. Bei eingestellten einfachen oder doppelten Impulsen genügt eine kurze Betätigung. Andernfalls 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 Weichen oder Signalen befindet sich der Schalter für den dritte Status zwar auf der -Ebene der folgenden Taste. Der Status wird aber über der 'eigentlich' zugewiesenen Funktionstaste angezeigt. Zur Vermeidung von Irrtümern wird bei den dreipoligen Magnetartikeln zwischen den oberen Funktionstasten das Zeichen '' eingeblendet, das symbolisiert, daß die -Ebene der folgenden Taste zu dem vorherigen Tastenpaar gehört.
Bei einpoligen Magnetartikeln wird die entsprechende Taste nicht hervorgehoben, da es sich bei diesen 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 Editieren 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' bestimmen 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 entsprechende Anderung der Werte angepaßt werden. Hierbei bestimmt 'lokkurz' die kurze Impulsdauer 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 korrespondierenden 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 Rechner, destso höher sollte 'interrupt' eingestellt werden. Allerdings ist zu beachten, daß auch der Eintrag unter 'request' die Schnelligkeit der Tastaturabfrage bestimmt, da entsprechend dieses Eintrags 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 allerdings bei schnellen Rechner und Tastaturbedienung zu niedrig ist. Ein 486DX2-66 läuft mit den obigen 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 Reaktionszeit, 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 Signalstellungen 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 |
Vizualizari: 4485
Importanta:
Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved