Lokomotiv-Fahrsimulator

Dies ist die im Frühjahr 1992 an der Ingenieurschule Juventus in Zürich eingereichte Dokumentation meiner HTL-Diplomarbeit. Unter HTL bzw. Ingenieurschule ist die damalige Höhere Technische Lehranstalt gemeint, die der heutigen Fachhochschule bzw. einem Bachelor-Lehrgang entspricht. Die nur in Papierform vorhandene Diplomarbeit wurde eingescannt, mit einer OCR-SW maschinenlesbar gemacht und danach als HTML-Seite aufbereitet. Der in der damals weitverbreiteten Programmierhochsprache «TurboPascal für MS-DOS» geschriebene Quellcode und auch das ausführbare Programm sind leider unauffindbar. Viel Spass bei der Lektüre!
(Das Original wurde zwischen Oktober 1991 und Februar 1992 erstellt.)

INHALTSVERZEICHNIS

Der Werbe-Flyer
1. Software-Produktbild SWP (Analyse)
1A. Einleitung
1B. Erläuterungen zum triebfahrzeugseitigen Bahnbetrieb
1C. Erläuterungen zum fahrdienstseitigen Bahnbetrieb
1D. Die Bogenfahrt
1E. Neigung des befahrenen Streckenabschnittes
1F. Literaturverzeichnis und Ansprechpartner
2. Software-Anforderungsspezifikation SAS
2A. Simulierter Lokomotivtyp → SBB Re 6/6
2B. Simulierte Anhängelast
2C. Ausgangslage bei Simulationsbeginn (Randbedingungen)
2D. Man-Machine-Interface (MMI)
2E. Das Grobkonzept für den Fahrsimulator
2F. Bedienung der Lokomotive
2G. Berechnungsgrundlagen → Fahren & Bremsen
2H. Berechnungsgrundlagen → Fahrwiderstände
2I. Visualisierung → Oberleitungen zeichnen
3. Dataflow-Diagram
3A. Context-Diagramm
3B. Zugfahrt simulieren
3C. Standort ermitteln
3D. Elektrisch betreiben
3E. Pneumatisch betreiben
3F. Fahrwiderstand berechnen
3G. Schnellbremsung einleiten
3H. Bremse auslösen
3I. Sicherheits Langsamgang
3J. Sicherheits Schnellgang
3K. Ueberbremsungs Kontroller
4. Data-Dictionary
5. Process-Specifications
6. Programmier-Modulaufteilung
7. Nassi-Shneidermann-Diagramme
8. Das Fahrszenario
9.Das Benutzerhandbuch



Der Werbe-Flyer



Unerlässliches Hilfsmittel in der Lokführer*innenausbildung ist der Simulator, der fahrzeugunabhängiges Durchspielen von Übungsfahrten erlaubt. Der Lokomotiv-Fahrsimulator ist ein solcher Simulator mit dem in Echtzeit eine fiktive Fahrt mit der SBB-Elektrolokomotive vom Typ Re 6/6 gemacht werden kann. Das Modell der zu simulierenden Lokomotive ist von auf vernünftigem Masse reduzierter Komplexität, jedoch ohne betriebsrelevanten Einschränkungen und Abstriche. Die dabei involvierten physikalischen Zusammenhänge wurden möglichst wirklichkeitsgetreu nachgebildet.

Was wird geboten?
Die Lokomotive wird auf einem DOS-Personalcomputer simuliert. Die Eingabemöglichkeiten (über PC-Tastatur) umfassen die wichtigsten Bedienelemente der Lokomotive, wie... Die Ausgabe erfolgt auf dem Bildschirm und besteht aus... Über die Tastatur kann die Lokomotive vorbildgetreu bedient werden und die Anzeigeinstrumente zeigen realistische Werte an. Das Fahrgefühl wird durch die Sicht aus dem Frontfenster auf das Bahntrasse vermittelt, wobei in Abhängigkeit von der Geschwindigkeit Oberleitungsmasten an der Lok vorbeiziehen.
Verschiedene Parameter können in gewissen Grenzen frei gesetzt werden, wie... Mit dem fingierten Zug durchfährt man ein Fahrszenario, das zuvor vom Lokomotiv-Fahrsimulator als ASCII-File ab Disk gelesen wird. In diesem Fahrszenario ist ein bestimmtes Stück Bahnlinie mit Vor- und Hauptsignalen, Kurven und Steigungen beschrieben, das Stück für Stück abgefahren wird.

Wie funktioniert's?: Der Lokomotiv-Fahrsimulator besteht aus 6 Anlagen...<
  1. MMI: Setzt eine Tastatureingabe in den entsprechenden Fahr- oder Bremsbefehl um.

  2. Elektromotoren : Die Lokomotive greift über einen riesigen Drehschalter oder Stufenschalter verschiedene Fahrspannungen am Transformator ab und gibt sie auf die Elektro­motoren. Ist die Lok abgeschaltet liegt der Drehschalter in Mittelstellung. Soll nun beschleunigt werden, muss der Drehschalter Schaltkontakt für Schaltkontakt im Uhrzeigersinn aufdrehen. Dabei darf kein Schaltkontakt übersprungen werden. Bewegt sich der Drehschalter aus der Nullstellung im Gegenuhrzeigersinn, wird den Elektromotoren nicht Strom zugeführt sondern entzogen (Rekuperieren). Dies hat eine Bremswirkung zur Folge und ist neben der Druckluftbremse das zweite Bremssystem an Bord. Zur Berechnung von Zugkraft in Funktion der Geschwindigkeit resp. Motorstrom in Funktion der Zugkraft dient eine Kurvenschar, die die Fahrmotoren im Normalbetrieb und beim Rekuperieren beschreibt.

  3. Stufenschalter : Der Stufenschalter hat auf die 9 Stellungen des Fahrschalthebels folgendermassen zu reagieren:
    • F++ bedeutet +3 Stufen/sec bis I=2150A, dann +1 Stufe/sec bis I=3100A
    • F+ bedeutet +3 Stufen/sec bis I=2150A, dann +1 Stufe/sec bis I=2400A
    • M bedeutet +1 Stufe/sec bis I=2400A
    • F• bedeutet Stufe unverändert
    • F- bedeutet falls Stufe >0: -1 Stufe/sec bis I=2150A, dann -3 Stufen/sec bis Stufe=0
    • 0 bedeutet Stufe=0
    • B- bedeutet falls Stufe <0: +1 Stufe/sec bis I=-1750A, dann +3 Stufen/sec bis Stufe=0
    • B• bedeutet Stufe unverändert
    • B+ bedeutet -3 Stufen/sec bis I=-1750A, dann -1 Stufe/sec bis I=-2250 A
    Anmerkung Fahren : Stufe +l bis +32
    Anmerkung Rekuperieren: Stufe -1 bis -22

  4. Bremsapparat : Aufgrund einer Absenkung des Haupleitungsdruckes, als Ursache einer Bremshebelbetätigung, wird ein Bremszylinderdruck aufgebaut der über Bremsbacken eine Bremskraft am Rad verursacht.

  5. Supervisor : Überwacht die Zugsfahrt in bezug auf das Fahrszenario, berechnet die Fahrwiderstände wie...
    • Laufwiderstand
    • Bogenwiderstand bei Kurvenfahrt
    • Neigungswiderstand bei Steigung oder Gefälle
    • Beschleunigungswiderstand
    Prüft zudem, ob die Zugkraft auf die Schiene gebracht werden kann und veranlasst den Stufenschalter auch bei Fehlmanipulationen richtig zu arbeiten.

  6. Performer : Updaten der Anzeigeinstrumente. Erzeugt bewegte Graphik resp. den Fahreffekt (Sicht aus dem Frontfenster der Lokomotive)
Printscreen des Simulationsprogramms



Berechnungsgrundlagen - Programmablauf



1. Software-Produktbild SWP

1A. Einleitung

Um was geht es?

Trotz dem heutigen hohen Technisierungsgrad werden die Triebfahrzeuge der Eisenbahnen noch immer von Menschen, den Lokomotivführer:innen, geführt. Dass solche Leute gründlich ausgebildet werden müssen, versteht sich von selbst. Unerlässliches Hilfsmittel ist da der Fahrsimulator, der es ermöglicht, unabhängig von einem Fahrzeug in einer fiktiven Umgebung diverse Fahrszenarien durchzuspielen. Solche Lernfahrten als «Trockenübungen», haben den Vorteil, dass sie weder Mensch noch Maschine gefährden, noch den Diensbetrieb stören und zu guter Letzt weniger Energie benötigen als eine Fahrt auf einem richtigen Fahrzeug. Schlussendlich ist da auch noch der Vorteil einer präzisen Fahrauswertung die Aufschluss über den Ausbildungsstand des Lokführers geben kann. Das Fahrzeug resp. die Lokomotive die simuliert werden soll, muss mit einer geeigneten Apparatur modelliert werden. Das heisst, dass die physikalischen Zusammenhänge aus der Kinematik, Pneumatik und Elektrotechnik wirklichkeitsgetreu nachgebildet werden sollen. Diese Apparaturen sollen seinerseits auch auf Ereignisse reagieren, die vom Bedienenden über möglichst realitätsnahe Führerstandsarmaturen eingegeben werden können. Letztendlich soll die Aussenwelt, von der gewisse Handlungen ja abhängig sind, geeignet dargestellt werden.

Zweck → Was soll erreicht werden?

Die verschiedenen Fahrszenarien müssen nicht nachträglich ausgewertet werden können. Es wäre aber denkbar, in einem Textfeld anzuzeigen, ob die signalisierte Geschwindigkeit eingehalten wird. Durch falsches Handeln ausgelöste Sicherheitskreise wie Wachsamkeitskontrolle (Totmannpedal), der Rückstellschalter für Zugsicherung (geschlossene Signale) oder der Auslösetaster für die pneumatische Lokbremse treten sofort mit unübersehbarer Präsenz in Erscheinung (z.B. Schnellbremsung), das auf eine spätere Auswertung und Anzeige verzichtet wird. Nebentätigkeiten und Routinearbeiten wie die Betätigung der Türverriegelung, Zugheizung, Stirnbeleuchtung u.s.w werden weggelassen. Es werden keine Rangierfahrten vorgesehen, so dass die Funktionen zur Ueberbrückung der Sicherheitskreise ebenfalls weggelassen werden kann.

1B. Erläuterungen zum triebfahrzeugseitigen Bahnbetrieb

Die Eisenbahn beruht auf dem physikalischen Effekt, den wir Reibung nennen. Gäbe es keine Reibung würden die Räder auf der Schiene durchdrehen und der Zug bliebe stehen oder falls bereits in Bewegung, könnte ihn nur der Luftwiderstand zum stehen bringen. (vgl. Schlittschuhläufer auf dem Eisfeld) Der Reibungskoeffizient ist eine spezifische Konstante, die Normalkomponente einer Gewichtskraft und Reibungskraft in Zusammenhang bringt. Der Reibungskoeffizient und die Normalkraft des Triebfahrzeuges sind also die entschei­ denden Komponenten, die eine Aussage darüber geben, wieviel Motorenkraft über­ haupt maximal in Zugkraft umgesetzt werden können. Die Normalkraft des Triebfahrzeug in der Ebene ist in guter Näherung proportional zur Fahrzeugmasse. Der Reibungskoeffizient jedoch hängt einerseits stark von der Witterung ab (Schönwetter : u=0.4 ; Schlechtwetter : u=0.1) und andernseits von der Fahrgeschwindigkeit des Zuges. Das Triebfahrzeug (Lokomotive) setzt Energie in Zugkraft um. Bei elektrischem Betrieb geschieht dies durch Elektromotoren. Ebenfalls kann Zugkraft (oder besser Stosskraft) mittels denselbigen Motoren bei modernen Lokomotiven in Energie zurückgewandelt werden. (Rekuperation) Die Bremskraft hingegen wird nicht allein von der Lokomotive, sondern vom ganzen Zug «produziert». (Siehe Druckluftbremsen, Bremsbacken) Im folgenden werden die einzelnen Komponenten betrachtet.

Der elektrische Antrieb (Fahrbetrieb)

Es handelt sich hier um eine Lokomotive mit elektrischer Motorisierung. Je nach angelegter Motorenspannung ändert sich der Motorenstrom, das Drehmoment der Motorachse und schliesslich die Zugkraft.

Der elektrische Bremsbetrieb

Die Fahrmotoren können bei einer Talfahrt oder bei einer Verzögerungsfahrt als Generatoren geschaltet werden. Die Motoren bewirken dabei eine bestimmte Bremskraft, die vom produzierten Generatorstrom abhängig ist. Bei modernen Lokomotiven kann dieser Strom ins Netz zurückgespiesen werden. Man spricht dann von einer Rekuperationsbremse. Ältere Lokomotiven verheizen diesen Strom in Leistungswiderständen, die zur besseren Kühlung meist auf dem Dach montiert sind.

Der Druckluft-Bremsbetrieb

Man unterscheidet zwischen direkt wirkenden Druckluftbremsen (Rangierbremse) und indirekt wirkenden Druckluftbremsen (Automatische Zugbremse). Das Grundprinzip ist aber bei beiden dasselbe: Mit verdichteter Luft werden mittels Bremszylinder die Bremsklötze an die Bandagen der Räder gedrückt. Dies bewirkt eine Bremskraft, die aber stark vom Reibungskoeffizient Bremsklotz-Rad und dann Rad-Schiene abhängig ist. Die Aerodynamik, der das Bremsen unterworfen ist, hat auch eine gewissen Trägheit, die dafür Verantwortlich ist, das nach Betätigen des Bremshebels im Führerstand nicht sofort jeder Bremsklotz satt am Rad anliegt um den Bremsvorgang zu unterstützen. (Durchschlagzeit)

Schleuder- und Gleitschutz

Der Schleuderschutz hat die Aufgabe, das Schleudern eines Triebradsatzes bei ungenügender Haftreibung festzustellen und Gegenmassnahmen einzuleiten, wie zB. Anfahrvorgang anhalten (Stufenschalter) oder Reduktion der Zugkraft usw.

Betriebsstörungen

Triebfahrzeugseitig können diverse Betriebsstörungen auftreten. Es lassen sich jedoch keine vom Führerstand aus beheben. Dazu muss im Maschinenraum am entsprechenden Apparateblock ein Eingriff vorgenommen werden. Störungen wären:

Aus diesen Gründen wird von einer Implementation von Störungen abgesehen. Als Ersatz für die gemäss Pflichtenheft verlangten Maschinentörungen werden einerseits

Die Sicherheitssteuerungen des Triebfahrzeuges

Um Unfälle zu vermeiden, sind diverse Sicherheitssysteme eingebaut:

1C. Erläuterungen zum fahrdienstseitigen Bahnbetrieb

Die Vor- und Hauptsignale

Es gibt zwei Arten von Lichtsignalen:



1D. Die Bogenfahrt

Fahrtechnisch bedeutet eine Kurvenfahrt einen etwas grösseren Fahrwiderstand und eine kleinere Maximalgeschwindigkeit. Diese kann mit einer Geschwindigkeitstafel angezeigt werden.

1E. Neigung des befahrenen Streckenabschnittes

Die Neigung des Bahntrasses bietet einige Effekte wie zB.:



1F. Literaturverzeichnis und Ansprechpartner

Bahntechnische Fachliteratur

Informatik-Fachliteratur

Fachliche Bezugspersonen und Ansprechpartner

Besonderen Dank gilt nachstehenden Personen für Ihre fachliche Unterstützung in besonderen Fragen:


2. Software-Anforderungsspezifikation SAS

2A. Simulierter Lokomotivtyp → SBB Re 6/6

Bei der Lokomotive, die nachgebildet werden soll, handelt es sich um die seit Juli 1975 bei den SBB verkehrenden Streckenlokomotive des Typs Re 6/6. Diese sechsachsige Hochleistungslokomotive wird für die Zugförderung auf den Alpentransversalen (Gotthard/Simplon) eingesetzt. Sie ist die derzeit (1990) stärkste Lokomotive auf Schweizer Schienen und entwickelt eine maximale Leistung von 8020 kW bei 106 km/h (= 10'900PS), oder anders ausgedrückt, sie vermag auf einer Steigung von 27 Promille eine Last von 800 Tonnen mit 0.03 m/s2 vom Stillstand auf 80 km/h zu beschleunigen.

Technische Zeichnung der Lokomotive Re6/6



Für die Simulation wurde diese Lokomotive ausgewählt, weil sie sich in der Bedienung kaum vom Standard- oder Schulfahrzeug (Re 4/4) der SBB unterscheidet, aber etwas interessantere Leistungsdaten aufweisen kann, als ihre kleine Schwester.

Bei der Re 6/6 handelt es sich um eine Lokomotive mit der Achsfolge Bo'Bo'Bo (=drei Zweiachsendrehgestelle mit Einzelradantrieb) für Betrieb an Einphasen-Wechselspannung (15 kV bei 16 2/3 Hz) in Direktmotortechnik. 6 mal 12-poliger Einphasen-Wechselstrom-Reihenschluss­Fahrmotor mit Umax= 620 V/ Imax = 3440kA. Zur Steuerung der Fahrmotoren dient ein Stufenschalter mit 34 Positionen. Position 33 und 34 sind ausschliesslich für den Feldschwächebetrieb reserviert. Unter Feldschwächebetrieb versteht man die Schwächung der Motorerregung, was eine erhöhte Drehzahl und ein erhöhter Strom bei gleichbleibendem Drehmoment bewirkt. Der Feldschwächebetrieb wird in dieser Simulation nicht implementiert, darum stehen nur 32 relevante Fahrstufen zur Verfügung. Das Fahrstufen/Zugkraft/Strom/Geschwindigkeits-Diagramm für elektrisches Fahren wie auch rekuperatives Bremsen entnehme man den folgenden Kennlinien:

Fahr-Kennlinien der Lokomotive Re6/6 bei 15 kV Netzspannung




Motorbrems-Kennlinien der Lokomotive Re6/6 bei 15 kV Netzspannung



Weitere Parameter:

2B. Simulierte Anhängelast

Die Lokomotive soll als Lokzug (Zug mit Lokomotive und in unserem Fall ein Wagen) oder als Blockzug mit einer Anhängelast von zB. 16 Leichtstahl-Personenzugwagen verkehren.

Für die Wagen sollen folgende Parameter gelten:

Es sollen aber auch weitere Zugvarianten definiert werden können.

2C. Ausgangslage bei Simulationsbeginn (Randbedingungen)

Bei Fahrbeginn mit der simulierten Lokomotive ist folgende Ausgangslage anzutreffen:

2D. Man-Machine-Interface (MMI)

Das MMI besteht hauptsächlich aus den Führerstandsarmaturen der Re 6/6. Es wird unterschieden zwischen Eingabe- und Ausgabeeinheit.

Eingabeeinheit

Im folgenden eine Übersicht über betriebsrelevante, lokomotivseitige Eingabeelemente. Diese Eingabeelemente bzw. deren Position/Stellungen werden in die Simulation resp. Berechnung miteinbezogen:

Nachfolgend wird nun erklärt, welcher Schalter oder Hebel in welcher Position welchen Effekt bewirkt:

Ausgabeeinheit

Betriebsrelevante, lokomotivseitige Ausgabeelemente → Diese Instrumente werden funktionsfähig implementiert:

Nicht betriebsrelevante lokomotivseitige Ausgabeelemente → Die Anzeigeinstrumente von weniger wichtigen Betriebsparametern, welche vom Simulator nicht berechnet oder als konstant angenommen werden, sollen wenn möglich bzw. der Vollständigkeitshalber auch implementiert bzw. dargestellt werden, jedoch nur als Dummy-Anzeige. Diese sind:

Die virtuelle Signalanzeige

Unter virtueller Signalisierung wird die Darstellung von Signalstellungen auf einem speziell dafür vorgesehenen Anzeigefeld verstanden. Drei Signalarten werden virtuell angezeigt: Vor- , Hauptsignale und Neigungs-Signaltafeln (Neigungszeiger).
Die virtuelle Darstellung wurde gewählt, um unabhängig von der Auflösung der Graphik-Karte (VGA) eine eindeutige Signalisierung zu gewährleisten. Die Darstellung der Signale aus der Sicht des Lokführers wäre zwar realitätsnaher, birgt aber durch den Fahreffekt die Gefahr, dass die Signale verschwimmen. (Nachleuchten des Bildschirmes)

Messagebox

In einem speziell dafür reservierten Feld werden dem Benutzer Meldungen angezeigt, wie zB. einen Kommentar bei Bremsauslösung.



2E. Das Grobkonzept für den Fahrsimulator

Der Lokomotiv-Fahrsimulator besteht aus mehreren Komponenten:

Folgend werden die Komponenten beschrieben, die bis anhin noch nicht erwähnt wurden und im Rahmen eines Grobkonzeptes noch weiteren Bemerkungen bedürfen:

Das Fahrszenario

Für eine möglichst flexible Programmgestaltung wird die Strecke, die befahren werden soll, nicht fix programmiert. Vielmehr soll es mit einem Texteditor möglich sein, ein idividuelles Fahrszenario zusammenzustellen, das dann später beim Start des Simulationsprogramms von diesem automatisch gelesen und zur Ausführung gebracht wird. Sämtliche Ereignisse werden in Entfernung vom Startpunkt aus bezogen. Das heisst, die folgenden Elementen werden mit einer km-Marke versehen, die angibt, wieviel Weg in Meter seit dem Start schon befahren wurden.

Elemente des Fahrszenarios

Beispiel eines möglichen Fahrszenarios

Die Elemente werden mit einem Texteditor (zB. Norton-Editor) physikalisch sinnvoll zusammengestellt und in ein Textfile gespeichert. Eine solche Zusammenstellung kann zB. folgendermassen aussehen (Das Fileformat muss noch definieret werden.)

  1. km 0.0 - 1.1: Fahrt in Ebene
  2. km 1.1 - 1.1: Vorsignal mit Fahrbegriff 3 (65 km/h) in 200 Meter
  3. km 1.1 - 2.0: Fahrt in Ebene
  4. km 2.0 - 2.0: Hauptsignal mit Fahrbegriff 3 (65 km/h) in 200 Meter
  5. km 2.0 - 2.8: Fahrt in Kurve mit Radius 400m
  6. km 2.8 - 3.5: Fahrt in Ebene
  7. km 3.5 - 3.5: Vorsignal auf freie Fahrt in 200 Meter
  8. km 3.5 - 4.5: Fahrt in Ebene
  9. km 4.5 - 4.5: Hauptsignal auf freie Fahrt in 200 Meter
  10. km 4.5 - 5.8: Fahrt in Ebene
  11. km 5.8 - 7.5: Fahrt in Steigung
  12. km 7.5 - 8.3: Fahrt in Ebene
  13. km 8.3 - 8.3: Vorsignal auf Warnung in 200 Meter
  14. km 8.3 - 9.3: Fahrt in Ebene
  15. km 9.3 - 9.3: Hauptsignal auf Halt in 200 Meter
  16. km 9.5 - 9.5: Parcours beendet


Bei der Anordnung der Elemente müssen folgende Regeln beachtet werden : Soll z.B. eine Bergfahrt untersucht bzw. geprobt werden, kann ein entsprechendes File erstellt und dies dann wiederum mit dem Simulator abgespielt werden.

Rechenmodell des Zuges

Einen Berechnungs-Überblick bietet das folgende Blockschaltbild:

Der Supervisor

Auf die Ereignisse wie Signale, Trasseart und Kurven, welche vom Fahrszenario bestimmt sind, muss via MMI richtig reagiert werden. Wenn der Fahrstufenschalter nicht richtig bedient wird, sorgt der Supervisor dafür, dass es nicht zum Programmabsturz kommt. Eine weitere Aufgabe des Supervisors ist zu prüfen, ob die durch Fahrstufe und Geschwindigkeit gegebene Zugkraft der Lokomotive auch in Bewegung umgesetzt werden kann bzw. ob der Haftreibungskoeffizient auch genügt. Ist dies nicht der Fall, veranlasst er eine Unterbrechung der Beschleunigungsphase und schaltet den Stufenschalter zurück, bis die Zugkraft am Gleis wieder greift. Zusätzlich beginnt die Meldelampe für Schleuderanzeige zu leuchten.

Der Timemanager

Alle Berechnungen, Entscheide, MMI-Abfragen usw. müssen mehrmals pro Sekunde durchgespielt werden. Dies unter anderem aus folgenden Gründen:

2F. Bedienung der Lokomotive

Um die Handlungen im Führerstand dem Laien etwas näherzubringen und um den Fahrstufenautomat besser zu verstehen, folgt nun eine Einführung zur Bedienung der Lokomotive:

2G. Berechnungsgrundlagen → Fahren & Bremsen

Durch die Spurführung der Bahn reduziert sich die Bewegung des Zuges auf einen eindimensionalen translatorischen Vorgang. Auf diese Bewegungsrichtung entlang der Strecke (Fahrtrichtung) beziehen sich alle Vorgänge der Mechanik. Der Kraftbedarf für die Bewegung des Zuges ermittelt sich aus der Anhängelast, den Fahrwiderständen und der aktuellen Geschwindigkeit des Zuges, im Falle des Lokomotiv-Fahrsimulators allerdings in umgekehrter Reihenfolge, das heisst: je nach eingestellter Zugkraft (Fahrstufe) und Belastung resultiert eine Beschleunigung resp. eine Geschwindigkeits- und somit Wegänderung.
Wie man den folgenden Ausführungen entnehmen kann, sind die Widerstandsgleichungen nicht immer geschlossen lösbar. Es wird in vielen Fällen die Geschwindigkeit benötigt, um zB. den Laufwiderstand zu berechnen, der wiederum zu einer resultierender Geschwindigkeit beitragen soll. Dies ist mitunter ein Grund, warum der Simulator zeitdiskret gelöst werden soll. Wird nämlich das Zeitintervall sehr klein gewählt, kann für die Laufwiderstandberechnung zum Zeitpunkt t0 der Geschwindigkeitswert zum Zeitpunkt t-1 verwendet werden.
Zu jedem betrachteten Zeitpunkt während der Fahrt erfolgt diese Traktionsrechnung:

Die Ermittlung der Zugkraft

Als Ausgangslage dienen die bereits in der Einleitung vorgestellte Motorenkennlinien der Re 6/6:

Wie man daraus erkennen kann, bildet jede Fahrstufe einen eigenen Graphen. Es gilt nun, diese Graphen mathematisch möglichst einfach aber genügend genau zu beschreiben. Genügend genau soll bedeuten: Fehlerschranke = 5 kN.
Die Zugkraft ist in unserem Falle eine Funktion der Geschwindigkeit. Da sich die Kennlinien ähnlich verhalten, wird zuerst eine allgemein gültige Funktionsgleichung gesucht. Danach werden durch die Wahl von geeigneten Stützwerten die Koeffizienten der einzelnen Funktionen bestimmt. Besonders ist darauf zu achten, wie sich die gewählten Funktionen ausserhalb des relevanten Bereichs, der zwischen 0..140 km/h und 0..400 kN liegt. verhalten:
Würde man ein Polynom zweiten Grades wählen, hätte zB. die Kennlinie für die erste Fahrstufe bei etwa 40 km/h ein Minima und würde dann wieder quadratisch in den positiven Kraftbereich ansteigen. Dass hätte den Nachteil, dass fälschlicherweise eine grosse Geschwindigkeit eine grosse Zugkraft ergeben würde. Dies müsste mit einer Vergleichsoperation unterdrückt werden, was wiederum kostbare Rechenzeit benötigt.

Mit y=1/(ax2+bx+c) wurde eine geeignete Funktion gefunden, bei der sich jede Kennlinie für grosse Geschwindigkeiten der Nulllinie (Zugkraft=0) nähert und die über den ganzen Bereich hinreichend genau ist.

Herauslesen von geeigneten Stützwerten:


Die Koeffizientenrechnung:
(Um diese Dokumentation nicht unnötig aufzublähen, wird im folgenden von den 32 erstellten Berechnungen nur die erste (Fahrstufe 1) detailliert aufgezeigt.)
Die aus der für die Stufe 1 gegebenen Kurve herausgelesenen Werte lauten:

Stufe1:   x=v [km/h]    x=v [m/s]   y=F [kN]     1/y=1/F [1/kN]
          ——————————    —————————   ————————     ——————————————
            15            4.167       12.5          0.08000
            7.5           2.083       15.57         0.06423
            1             0.278       19.64         0.05092
Der x-Wert wurde von km/h auf m/s umgerechnet. Dies darum, um bei der Implementation
überflüssige und zeitraubende Einheitenkonvertierungen zu ersparen.
Ausserdem wurde der invertierte Wert von y berechnet, um das Einsetzen in den Gleichungsansatz zu erleichtern.

Der Gleichungsansatz lautet: y = 1 / (ax2 + bx + c)
Dies ergibt mit den eingesetzten Stützwerten folgende drei Gleichungen mit den drei Unbekannten a,b,c:
                             0.08000  =  a*152  + b*15  + c
                             0.06432  =  a*7.52 + b*7.5 + c
                             0.05092  =  a*12   + b+1   + c
Diese Gleichungssystem lässt sich mit einer Matritzenrechnung rationell lösen:
                            |0.08000|   |225      15      1|     |a|
                            |0.06432| : |56.25    7.5     1|  =  |b|
                            |0.05092|   |1        1       1|     |c|
Daraus erhält man die Koeffizienten:
                             a = 50.89e-6   b = 7.250e-3   c = 48.90e-3
Die für alle 32 Fahrstufen berechneten Koeffizienten lauten: (Die Koeffizienten sind auf Geschwindigkeit in Meter/Sek skaliert)



Die Ermittlung der elektrischen Bremskraft

Als Ausgangslage dient auch dieses Mal die bereits in der Einleitung vorgestellte Motorbremskennlinien der Re 6/6:

Die Kurven haben eine Resonanzcharakteristik. Mit y=1/(ax2+bx+c) wurde wiederum ein geeigneter Gleichungsansatz gefunden, der diesem Umstand entsprechend Rechnung trägt. Die Stützpunkte wurden so gewählt, dass immer ein Wertepaar den Kulminationspunkt fixiert {x=30/y=f(x)}. Bei den Kennlinien für die Bremsstufen 18 bis 22 musste bei der Koordinatenbestimmung ein Trick angewandt werden: Um ebenfalls das Maxima bei x=30 zu erhalten, wurde der Schnittpunkt des Graphen mit der Aequidistanzlinie F=170kN an der Geraden x=30km/h auf die negative x-Seite gespiegelt. Dazu das folgende Beispiel:

Stufe 19:    x=v [km/h]    y=F [kN]
             ——————————    ————————
                140         89.14
                80          170
                ???         ???
Der Punkt (80/170) gespiegelt an x=30 ergibt (-20/170)
Die Tabelle kann nun vervollständigt werden:
Stufe 19:    x=v [km/h]    y=F [kN]
             ——————————    ————————
                -20         170
                80          170
                140         89.14
Herauslesen von geeigneten Stützwerten:


Analog denselben Überlegungen wie bei der Ermittlung der Koeffizienten für die 32 Fahrstufen, erhält man für die 22 Bremsstufen folgende Werte: (Die Koeffizienten sind auf Geschwindigkeit in Meter/Sek skaliert)



Die Ermittlung der Kraft-Strom Motorenkennlinie für das Fahren

Als Ausgangslage dienen wiederum die in der Einleitung vorgestellte Motorenkennlinie Re 6/6:

Es soll der Motorenstrom eine Funktion der Zugkraft sein. Wie der Graph zu erkennen gibt, stellt er einen Hyperbel-Ast im 1. Quadranten der Koordinatenebene dar.

Die allgemeine Funktionsgleichung lautet:
            x2        y2
           ———   -   ———   =   1
            α2        β2
Durch Umstellen der Gleichung erhält man:
                 _____________
            y = √(ax2 + bx + c)
Weil uns nur der erste Quadrant interessiert, muss nur der positive Wurzelwert berechnet werden.

Herauslesen von geeigneten Stützwerten:
            x=F [kN]    y=I [A]
            ————————    ———————
                1          1
               57.5      1100
              336        3000

Berechnung der Koeffizienten:
                    1  =  a             +  b         +  c
            1'210'000  =  a * 3'306.25  +  b * 57.5  +  c
            9'000'000  =  a * 112'896   +  b * 336   +  c

Mit der Matritzenrechnung erhält man:
            a = 19.57   b = 20.27e+3   c = -20.29e+3
Die grösste Fehlerabweichung der somit erhaltenen Funktionsgleichung beträgt maximal 2.0%
(210kN = 2258A anstatt 2200A)

Die Ermittlung der Kraft-Strom Motorenkennlinie für das Bremsen

Als Ausgangslage dient erneut die in der Einleitung vorgestellte Motorenkennlinie Re 6/6:

Es soll wiederum der Motorenstrom, hier Rekuperationsstrom, eine Funktion der Zugkraft sein. Vorerst muss abgeklärt werden, welcher Ansatz zur Beschreibung der Funktion gewählt werden muss. Da der Strom im Kennlinienfeld nicht explizit als Graph eingezeichnet ist, soll dies hier nachgeholt werden:

Die Kurve zeigt, dass als Funktionsbeschreiber auch da wieder der Hyperbel-Ast gewählt werden kann.

Es gilt also wieder der Ansatz:
                 _____________
            y = √(ax2 + bx + c)

Herauslesen von geeigneten Stützwerten:
            x=F [kN]    y=I [A]
            ————————    ———————
                1          1
               27.2      1000
              165.7      2400

Berechnung der Koeffizienten:
                    1  =  a              +  b          +  c
            1'000'000  =  a * 739.84     +  b * 27.2   +  c
            5'760'000  =  a * 27'456.49  +  b * 165.7  +  c

Mit der Matritzenrechnung erhält man:
            a = -23.7   b = 38.82e+3   c = -38.79e+3
Die grösste Fehlerabweichung der somit erhaltenen Funktionsgleichung beträgt maximal 1.2%
(110kN = 1988A anstatt 1960A)

2H. Berechnungsgrundlagen → Fahrwiderstände

Nähere Betrachtungen der einzelnen Fahrwiderstände lassen folgende physikaliche Zusammenhänge erkennen:

Die praktische Berechnung wird übersichtlicher, wenn die Widerstände spezifisch auf die gemeinsame Grösse Gewichtskraft Fg bezogen werden (spezifische Fahrwiderstände mit der Einheit [N/kN]). Die folgenden Formeln ergeben erst nach der Multiplikation mit der Gewichtskraft den tatsächlichen Widerstand.
Folgende Widerstände werden in dieser Simulation berücksichtigt:

Der Laufwiderstand wf

Der Laufwiderstand ist aus der Rollreibung (geschwindigkeitsunabhängiger Teil) und dem Luftwiderstand (quadratisch von der Geschwindigkeit abhängiger Teil) zusammengesetzt. Die verwendeten Koeffizienten wurden empirisch ermittelt. Sie sind im Buch «Elektrische Bahnen/Springer Verlag» zu finden.

          wf = 2.5 + 3.888e-3 * (v + 2.8)2
          wobei v = [m/s] und wf = [N/kN]
          Mit dem Wert 2.8 wurde ein Gegenwind von 10 km/h angenommen.

Der Bogenwiderstand wb

In der Bogenfahrt entstehen durch die Wirkung der Fliehkraft Führungskräfte zwischen Rad und Schiene. Der Bogenwiderstand ist in erster Linie vom Bogenradius abhängig. Die Koeffizienten können auch hier nur wieder durch Messung ermittelt werden.

                  750
          wb  =  —————    wobei r → [m], wb → [N/kN]
                   r

Der Neigungswiderstand wi

Je nach Neigung des Trasses ergibt sich eine Hangabtriebskraft. Berechnen lässt sich diese aus:

          Fh  =  m * g * sin(β)    wobei β → Winkel zwischen senkrechter Ebene und Normalen zur schrägen Ebene

Bei den kleinen Winkeln β, welche im Betrieb der Adhäsionsbahn in Frage kommen,
kann der Sinus mit hinreichender Genauigkeit durch den Tangens ersetzt werden.

                  m * g * sin(β)
          wi  =  ————————————————  =  tan(β
                   m * g

Da der Tangens dem Steigungsmass entspricht, folgt:

          wi  =  I    wobei I → [Steigung in Promille], wi = [N/kN]

Der Beschleunigungswiderstand wa

Während der Beschleunigung des Zuges ist die als Beschleunigungswiderstand Wa bezeichnete Trägheitskraft zu berücksichtigen. Die Rotationsenergie der einzeln rotierenden Massen, wie Radsätze und Antrieb dürfen dabei nicht vernachlässigt werden. Zur Beschleunigung der Masse m einschliesslich der einzeln rotierenden Massen wird somit die folgende Kraft benötigt:

          Wa  =  a * (m + ∑J * (w/v)2)
		  
          wobei a=m/s2,  J=kg/m2,  w=[rad/s],  v=[m/s],  Wa=[N≡kgm/s2]

Der nun eingeführte Faktor σ erlaubt eine einfache Berücksichtigung der Rotationsenergie
durch einen Zuschlag zur Masse. Für ganze Züge einschliesslich Triebfahrzeuge kann mit
σ = 1.08 (guter Mittelwert) gerechnet werden. Somit lautet die Formel:

          wa  =  l/g * σ * a * 1000
		  
          wobei g=9.81[m/s2],  σ=1.08,  a=[m/s2],  wa=[N/kN]

Übertrageung der Zugkraft durch Adhäsion (Kraftschluss)

Die Zug- bzw. Bremskraft, die ein Rad auf die Schiene überträgt, ist durch die Adhäsion begrenzt. Sie entspricht in erster Annäherung der Haftreibung. Wenn ein durch die Masse m des Fahrzeuges belastetes Rad eine Gewichtskraft Fg aufweist, kann dieses Rad höchstens die folgende Kraft Fh übertragen:

          Fh  =  μ * Fg * cos(β)
Fg * cos(β) ist die rechtwinklig zur Schienenebene wirkende Komponente der Gewichtskraft. Bei den kleinen Neigungswinkeln, welche im Betrieb der Adhäsionsbahnen in Frage kommen, kann mit hinreichender Genauigkeit der Kosinus durch 1 ersetzt werden.

Der Haftreibungswert beim Kraftschluss:
Für den Haftreibungswert μ0 zwischen Triebrad und Schiene ist bei getriebenem Rad die Abnahme von μ0 mit zunehmender Fahrgeschwindigkeit zu beachten. Bei gebremsten Rad ist der Haftreibungswert weitgehend von der Geschwindigkeit unabhängig.

Die angegebenen Werte für μ0 sind Maximalwerte. Ueberschreitet die Zug- oder Bremskraft am Radumfang den Wert μ*Fg, mit Fg=Adhäsionsgewicht des Fahrzeuges, so tritt Schleudern oder Gleiten der Triebräder ein, dass heisst, das Rad haftet nicht mehr, sondern gleitet über die Schiene. Man spricht dann auch nicht mehr vom Haftreibungswert, sondern vom Gleitreibungswert.

Maximalwert μ0 des Haftreibungswertes zwischen Triebrad und Schiene in Abhängigkeit der Fahrgeschwindigkeit V0. Werte für getriebenes Rad nach oben, für gebremstes Rad nach unten aufgetragen.
1 sehr gute Adhäsionsverhältnisse k=1.6
2 normale Adhäsionsverhältnisse k=1
3 sehr schlechte Adhäsionsverhältnisse k=0.6
4 gleitende Räder


Der mathematische Zusammenhang für das getriebene Rad wurde von Curtius und Kniffler aus seinerzeitigen Versuchen ermittelt und folgendermassen beschrieben:

                      |    2.083     |
          μ0  =  k *  | ———————————— |  +  0.161
                      |  v + 12.22   |

          wobei v = [m/s]
          Mit der Konstanten k wird den Witterungsverhältnissen Rechnung getragen
          k = 1.6 → μ0 bei 0 km/h ist 4.3  (Optimales Wetter)
          k = 1   → μ0 bei 0 km/h ist 0.33 (Normales Wetter)
          k = 1.6 → μ0 bei 0 km/h ist 0.2  (Schlechtes Wetter)

Die pneumatische Bremse (Druckluft-Bremse)

Die durch den Bremsklotzdruck P am Radreifen entstehende Reibung erzeugt die Kraft P*μk, die am Radumfang tangential angreift und der Drehrichtung entgegengesetzt ist. Eine gleich grosse Gegenkraft wird zwischen Rad und Schiene erzeugt, die den Lauf des Fahrzeuges hemmt. Damit die Räder auf den Schienen nicht gleiten, darf die vom Bremsklotz auf das Rad wirkende Reibungskraft P*μk nie grösser werden, als die vom Rad auf die Schienen übertragene Haftreibungskraft Fg0. Im Gegensatz zum Haftreibungswert zwischen Rad und Schiene ist der Reibungswert μk zwischen dem Bremsklotz aus Gusseisen und dem Radreifen (Stahl) von der Geschwindigkeit und Flächenpressung des Klotzes abhängig, und zwar nimmt er sowohl mit zunehmender Geschwindigkeit wie auch bei grösser werdenden Flächenpressung des Klotzes ab. (Durch diese Eigenschaft wird die volle Ausnützung der Klotzbremse erschwert.)

Mathematisch formuliert lautet dies:

                           1 + 0.036 * v       1 + 0.0056 * p     
          μk  =  0.6  *   ———————————————  *  ————————————————
                           1 + 0.180 * v       1 + 0.0280 * p

          wobei v = Geschwindigkeit [m/s]
                p = Flächenpressung resp. Bremszylinderdruck [N/cm2]
Die dargestellten Kurven lassen erkennen, dass bei hohen Geschwindigkeiten der Klotzdruck bei Graugussbremsklötzen mit Rücksicht auf den Reibwert wesentlich höher sein darf als bei niedrigen Geschwindigkeiten, in deren Bereich der Reibungswert μk den Haftreibungswert μ0 sogar übersteigt.

Um ein Blockieren der Räder zu verhüten, muss daher im untern Geschwindigkeitsbereich der Klotzdruck begrenzt werden, während er im obern Geschwindigkeitsbereich zur Verstärkung der Bremswirkung zu erhöhen ist. Dies geschieht mit der Bremsumschaltung von RIC auf R, die bewirkt, dass bei R-Bremsung die doppelte Bremskraft auf die Räder wirkt, als bei RIC-Bremsung. Die Umschaltung von RIC- auf R-Bremsung geschieht bei 80 km/h. Zurückgeschaltet auf RIC-Bremsung wird bei 50 km/h. Die Bremsstufe RIC ist in ihrer Wirkung der P-Bremse ähnlich. (Es wird hier aber nur die R-Bremse ausführlich betrachtet.)

Wegen den Materialeigenschaften des Graugusses machen sich Witterungseinflüsse beim Reibungskoeffizienten μk kaum bemerkbar und sind daher zu vernachlässigen.


Der Zusammenhang : Hautleitungsdruck → Bremsdruck → Bremskraft
Der Hauptleitungsdruck beträgt vor Betätigung der Bremsen 5 Bar. Der Höchstdruck im Bremszylinder wird bei einer Druckabsenkung in der Hauptleitung auf 3.5 Bar erreicht.

Der Hauptleitungdruck ist annähernd proportional zum Bremszylinderdruck, wobei die Hysterese zwischen «Bremse anziehen» und «Bremse lösen» vernachlässigt werden kann.
Die mathematische Formulierung:

          y  =  -2.89 * x + 14.01    wobei x → Hauptleitungsdruck [Bar]
                                           y → Bremszylinderdruck [Bar]
Auch der Zusammenhang Bremsdruck zu Bremskraft ist proportional. Maximaler Bremsdruck ergibt maximale Bremskraft. Um aber eine Aussage über die maximale Bremskraft zu machen, muss die Abbremsung bekannt sein.

Die Abbremsung
Mit Abbremsung wird das Verhältnis zwischen Klotzdruck und Radlast bezeichnet. Für Geschwindigkeiten unter 50 km/h (RTC-Bremsung) wurde die Abbremsung auf ungefähr 80% festgelegt. Diese Abbremsung bezieht sich auf die Anwendung der vollen Bremskraft (Schnellbremsung) für Fahrzeuge mit gusseisernen Bremsklötzen und Radreifen aus Stahl. Für Geschwindigkeiten über 80 km/h (R-Bremsung) sind dagegen Abbremsungen bis 160% und mehr zulässig.

Druckauf- und Abbau im Bremszylinder
Die über den Druckabfall in der Hauptleitung gewählte Bremskraft liegt nicht sofort an den Rädern an, sondern baut sich kontinuierlich auf. Wobei der Druck linear auf- und abgebaut wird.

Bremsen mit hohem Druck v > 80 km/h (R-Bremsung):


Bremsen mit kleiner Druckstufe v < 50 km/h (RIC-Bremsung):


Man kann demnach folgendes formulieren: Falls während dem Bremsvorgang die Bremse von RIC auf R umgeschaltet wird, benötigt dies:

2I. Visualisierung → Oberleitungen zeichnen

Um den Fahreffekt der Lokomotive zu visualisieren, wird die Sicht aus dem Führerstand gezeigt. Das Gleisbild soll dabei statisch sein und die Oberleitungsmasten in Funktion der Zeit sich der Lokomnotive nähern. Der Grund, warum das Gleis statisch bleibt, ist der, dass man schon bei kleinen Geschwindigkeiten den Schienenstrang nur noch als zwei Linien wahrnimmt, die am Horizont zusammenlaufen. Die Bewegung der Oberleitungsmasten die eine mittlere Entfernung von 60 Metern (von Mast zu Mast) haben, wird dargestellt. Es werden aber nicht unendlich viele Masten gezeigt, sondern nur deren fünf. Der erste Mast ist stationär in 240 Meter Entfernung zur Lokomotive. Die weiteren vier Masten verteilen sich im Abstand von je 60 Metern bis zur Lokomotive. Wenn die Lokomotive in Gang gesetzt wird, bewegen sich nun die vier Masten ihr entgegen. Sobald ein Mast die Lokomotive passiert hat, wird er in 240 Meter Entfernung neu gesetzt. Der fünfte Mast bleibt bei 240 Metern stehen und vermittelt so den Eindruch eines am Horizont verschwindenden Masten-Tunnels. Die Schwierigkeit besteht nun in der zweidimensionalen Abbildung der Masten, die untereinander im dreidimensionalen Raum ja einen konstanten Abstand haben. Das Gesetzt der Proportionalität zeigt, dass der vertikale Abstand der Fusspunkte der Masten sich gegen das Zentrum (Fluchtpunkt) immer wieder halbiert.
Dazu zwei Skizzen: (Ansicht von oben und Ansicht von vorne)

Es gilt für Mastn:
            n * y         x                      b * x
           ———————   =   ———     oder     an =  ————————
              b           an                     n * y
			  
Es sei nun  x=y/2    Somit gilt nun für Mastn:

              b
           ———————
            2 * n
			
Dies ergibt für n = 1..5

            a1=b/2 , a2=b/4 , a3=b/6 , a4=b/8, a5=bl0
Dies ist eine "1/2n"-Funktion. Um die Tiefenwirkung besser hervorzuheben, wird nun aber eine "1/2n"-Funktion angewendet. Damit bewegen sich die Oberleitungen in den hinteren Regionen nicht so schnell wie bei der "1/2n"-Funktion, ausserdem trifft es nun zu, dass sich der vertikale Abstand der Fusspunkte der Masten gegen das Zentrum (Fluchtpunkt) immer wieder halbiert.
Dies ergibt für n = 1..5 : a1=b/2 , a2=b/4 , a3=b/8 , a4=b/16 , a5=b/32
Somit ist auch der Bereich von n=0 bis n=1 gelöst weil 1/20=1 ergibt was bei 1/2n unendlich wäre.


3. Dataflow-Diagram

3A. Context-Diagramm




3B. Zugfahrt simulieren




3C. Standort ermitteln




3D. Elektrisch betreiben




3E. Pneumatisch betreiben




3F. Fahrwiderstand berechnen




3G. Schnellbremsung einleiten




3H. Bremse auslösen




3I. Sicherheits Langsamgang




3J. Sicherheits Schnellgang




3K. Ueberbremsungs Kontroller




4. Data-Dictionary

Context Diagramm

Datenflüsse
———————————
Bremshebel          HL_Druck
Fahrschalter        Fahrschalterbereich
Anzeigegeräte       Fahrgeschwindigkeit + HL_Druck + Motorstrom + Schleuderwarnung
Virtuelle_Signale   Neigung + Eff_Signalentf + Signal
Fahrszenario_Wahl   Fahrszenario_Nr
Fahrszenario        l{Kilometerstein + Streckenaenderung}n  
Kurvenradius        Kurve
Geschwindigkeit     Fahrgeschwindigkeit
Signaleinhaltung    Fahrgeschwindigkeit + Begriff
Fahrstrecke         Fahrszenario_Nr
Adhäsion            Haftreibung
Zuglänge            Wagenanzahl
Bremsvermögen       Abbremsung
Wagendimensionen    Gewicht + Laenge

Level-0-Diagramm

Datenflüsse
———————————
Adhäsion            Haftreibung
Fahrschalter        Fahrschalterbereich
Schleudern          Schleuderwarnung
Ampere              Motorstrom
Geschwindigkeit     Fahrgeschwindigkeit
Triebkraft          Zugkraft
Strecke             '0.000' .. '10.000'
Bremshebel          HL_Druck
Wagendimensionen    Gewicht + Laenge
Bremsvermögen       Abbremsung
Zuglänge            Wagenanzahl
Gesamtbremskraft    Zugkraft
Kurvenradius        Kurve
Fahrwiderstand      Zugkraft
Neigungspromille    Neigung
Fahrszenario        l{Kilometerstein + Streckenaenderung}n
Virtuelle_Signale   Neigung + Eff_Signalentf + Signal
Signaleinhaltung    Fahrgeschwindigkeit + Begriff

Level-1-Diagramm

Datenflüsse
———————————
Geschwindigkeit     Fahrgeschwindigkeit
Triebkraft          Zugkraft
Gesamtbremskraft    Zugkraft
Fahrwiderstand      Zugkraft
Strecke             '0.000' .. '10.000'
Lichtsignal         Signalentf + Signal
Neigungspromille    Neigung
Kurvenradius        Kurve 
Fahrszenario        l{Kilometerstein + Streckenaenderung)n
Signalabstand       Eff_Signalentf
Signaleinhaltung    Fahrgeschwindigkeit + Begriff

Level-2-Diagramm

Datenflüsse
———————————
Fahrschalter        Fahrschalterbereich
Zuschaltstrom       [3100|2400|-1750|-2250]
Fahrstufenkorrektur '-54' .. +54'
Fahrstufe           '-22' .. '+32'
Schleudern          Schleuderwarnung
Ampere              Motorstrom
Adhäsion            Haftreibung
Triebkraft          Zugkraft
Motorenkraft        Zugkraft

Level-3-Diagramm

Datenflüsse
———————————
Bremshebel          HL_Druck
Bremsvermögen       Abbremsung
Geschwindigkeit     Fahrgeschwindigkeit
Klotzkraft          Zugkraft
Adhäsion            Haftreibung
Wagengewicht        Gewicht
Wagenbremskraft     Zugkraft
Zuglänge            Wagenanzahl
Wagenlaenge         Laenge
Totzeit             '0.0' .. '2.0'      *Bremsreaktionszeit in Sekunden*
Gesamtbremskraft    Zugkraft

Datenflusselemente

HL_Druck            '3.5' .. '5.0'      *Hauptleitungsdruck in Bar*
Fahrschalterbereich [F++|F+|M|F.|F-|0|B-|B.|B+]
Fahrgeschwindigkeit '0.0' .. '44.4'     *in Meter/Sekunde (0..160km/h)*
Motorstrom          '0' .. '4000'       *1 von 6 Motoren, in Ampere*
Signalpanel         Neigung + Eff_Signalentf + Signal
Neigung             '-27' .. '+27'      *Neigung in Promille*
Eff_Signalentf      '0' .. '1000'       *Meter*
Fahrszenario_Nr     'l' .. 'n'          *Von SBB angebotene Streckenauswahl*
Kilometerstein      '0.001' .. '10.000' *Streckenkilometer ab Start*
Streckenaenderung   [Kurve|Neigung|Signalentf + Signal]
Signalentf          '500' .. '1000'     *Sichtweite zum Signal in Meter*
Signal              Signaltyp + Begriff
Signaltyp           [Vorsignal|Hauptsignal]
Begriff             [Halt|Fahrbegiff1|Fahrbegiff2|Fahrbegiff3]
Kurve               '0' .. '1000'       *Radius in Meter
Haftreibung         '0.6' .. '1.6'      *Dies ist nicht μ0!*
Wagenanzahl         '1' .. '24'
Abbremsung          '0.8' .. '2.0'      *Klotzdruck zu Radlast*
Gewicht             '200' .. '400'      *Wagengewichtskraft in kN*
Laenge              '10' .. '30'        *Wagenlaenge in Meter*
Zugkraft            '-400' .. '400'     *Bremsen bis Antreiben in kN*

5. Process-Specifications

Prozess 1.1 "Geschwindigkeit überwachen"

In      Lichtsignal (= Signalentf + Begriff)
In      Geschwindigkeit
Akt     Sobald ein Lichtsignal angekündigt wird, soll mittels der Geschwindigkeit,
        die über die Zeit integriert die Strecke ergibt, festgestellt werden, wann das Signal passiert wird.
In/Out  Signalabstand = Tatsächlicher (dekrementierter) Abstand zum Signal.
Akt     Zusätzlich wird noch überprüft, ob der Fahrbefehl (Geschwindigkeit)
        beim passieren des Signals eingehalten wird.
Out     Signaleinhaltung

Prozess 1.2 "Fahrweg rechnen"

In      Triebkraft
In      Gesamtbremskraft
In      Fahrwiderstand
Akt     Alle diese Kräfte unter Berücksichtigung der Vorzeichen summiert, ergibt die resultierende Kraft.
        Diese einmal über die Zeit integriert, ergibt die Geschwindigkeit zum Zeitpunkt t
Out     Geschwindigkeit
Akt     Diese Geschwindigkeit nochmals über die Zeit integriert, ergibt die zurückgelegte Strecke.
Out     Strecke

Prozess 1.3 "Strecke vergleichen"

In      Fahrszenario (=Kilometerstein+ [Kurve|Neigung|Signalentf + Signal])
In      Strecke
Akt     Es wird überprüft, ob das Fahrszenario an dem soeben passierten Streckenkilometer Strecke ein Kilometerstein
        mit entsprechendem Ereignis aufweist. Sollte dies der Fall sein, so wird das Ereignis an die entsprechenden Prozesse weitergeleitet.
Out     Lichtsignal
Out     Kurvenradius
Out     Neigungspromille

Prozess 2.1 "Fahrstufe aufschalten"

In      Fahrschalter (= [F++|F+|M|F.|F-|0|B-|B.|B+])
Akt     Anmerkung: El. Fahren : Stufe +l bis +32
                   El. Bremsen: Stufe -1 bis -22
        F++ +3 Stufen/sec bis I=2150A, dann +1 Stufe/sec bis I=3100A
        F+  +3 Stufen/sec bis I=2150A, dann +1 Stufe/sec bis I=2400A
        M+  1 Stufe/sec bis !=2400 A
        F.  Stufe unverändert
        F-  Falls Stufe >0: -1 Stufe/sec bis I=2150A, dann -3 Stufen/sec bis Stufe=0
        0   Stufe = 0
        B-  Falls Stufe <0: +1 Stufe/sec bis I=-1750A, dann +3 Stufen/sec bis Stufe=0
        B.  Stufe unverändert
        B+  -3 Stufen/sec. bis I=-1750A, dann -1 Stufe/sec bis I=-2250A
Out     Fahrstufe
In      Notstopp
Akt     Notstopp hat absolute Priorität. Ist Notstopp=l wird Fahrstufe=0 (Zwangsabschaltung der Fahrmotoren).
        Erst wenn Notstopp=0, kann wieder über den Fahrschalter eine Fahrstufe gewählt werden.
In      Fahrstufenkorrektur
Akt     Ist die Fahrstufe einmal auf den geforderten Zuschaltstrom aufgeschaltet worden, soll dieser Lastunabhängig gleich bleiben.
        Dazu der Prozess Motor regeln. Dieser bestimmt, wann eine Fahrstufe zu- oder wegegschaltet werden muss.
In      Fahrstufenkorrektur
Out     Zuschaltstrom
Akt     Damit der Prozess "Motor regeln" weiss, welcher Zuschaltstrom nun eingehalten werden muss,
        wird ihm das mittels Zuschaltstrom mitgeteilt.

Prozess 2.2 "Motorenkraft ermitteln"

In      Fahrstufe
In      Geschwindigkeit
Akt     Es wird mittels der Fahrstufe und der Geschwindigkeit die Motorenkraft und der Motorenstrom berechnet.
Out     Motorenkraft
Out     Ampere

Prozess 2.3 "Motor regeln"

In      Zuschaltstrom
In      Ampere
In      Schleudern
Akt     Dieser Prozess vergleicht mit Ampere, ob der Zuschaltstrom schon erreicht worden ist, 
        und wenn dies der Fall ist, versucht er, diesen auszuregeln.
        Falls der Prozess "Kraftschluss beurteilen" feststellt, dass die Triebräder schleudern, wird verursacht,
        dass eine Fahrstufe zurückgeschaltet wird.
Out     Fahrstufenkorrektur

Prozess 2.4 "Kraftschluss beurteilen"

In      Motorenkraft
In      Adhäsion
In      Geschwindigkeit
In      Adhäsion
Akt     Es wird überprüft, ob das Lokomotivengewicht (Fg=ll77kN) die Motorenkraft bei einer
        durch die Geschwindigkeit und Adhäsion gegebenen Reibung auf die Schiene übertragen kann.
        Falls dies der Fall ist, wird die ganze Motorenkraft in Triebkraft umgewandelt.
        Falls die Triebräder nicht haften, kommt ein kleinere Reibwert zur Anwendung.
        Die Triebkraft ist nun nicht mehr der Motorenkraft identisch, sondern wird auf die Kraft reduziert,
        die die Lok bei gleitenden Rädern noch übertragen kann.
        Dazu wird dem Lokomotivführer eine Schleuderwarnung angezeigt und die Motoren müssen
        zurückgeregelt werden.
Out     Schleudern

Prozess 3.1 "Bremskraft rechnen"

In      Bremsvermögen
In      Wagengewicht
Akt     Mit Bremsvermögen und Wagengewicht wird die maximale Klotzkraft (alle Bremsklötze am Wagen zusammengefasst)
        ermittelt. Multiplikation.
In      Bremshebel (= 5.0 bis 3.5 Bar)
Akt     Je nach Stellung des Bremshebels kommt nur ein Teil der möglichen Klotzkraft zur Anwendung.
In      Geschwindigkeit
Akt     Bei Geschwindigkeit >80 km/h (entspricht 22.22 m/s) wird die Bremskraft verdoppelt.
        Fällt die Geschwindigkeit unter 50 km/h (entspricht 13.89 m/s) zurück,
        wird die Bremskraft wieder auf den einfachen Wert zurückgestellt.
        Die Bremskraft erreicht nicht sofort den Endwert. Der Bremsdruck baut sich allmählich auf.
Out     Klotzkraft
In      Schnellbremsung
Akt     Schnellbremsung hat absolute Priorität. Ist Schnellbremsung=l, wird Bremshebel auf 3.5 Bar gestellt.
        Erst wenn Schnellbremsung=0, kann über Bremshebel wieder eine Bremsstufe gewählt werden.

Prozess 3.2 "Adhäsion beurteilen"

In      Klotzkraft
In      Geschwindigkeit
In      Adhäsion
In      Wagengewicht
Akt     Es wird überprüft, ob das Wagengewicht die Klotzkraft bei einer durch die Geschwindigkeit
        und Adhäsion gegebenen Reibung auf die Schiene übertragen kann.
        Falls dies der Fall ist, wird die ganze Klotzkraft in Wagenbremskraft umgewandelt.
        Falls die Wagenräder nicht haften, kommt ein kleinere Reibwert zur Anwendung.
        Die Wagenbremskraft ist nun nicht mehr der Klotzkraft identisch, sondern wird auf die Kraft reduziert,
        die der Wagen bei gleitenden Rädern noch übertragen kann.
Out     Wagenbremskraft

Prozess 3.3 "Gesamtbremskraft ermitteln"

In      Wagenbremskraft
In      Totzeit
Akt     Dieser Prozess ermittelt die gesammte Bremskraft des Zuges. Dem Umstand der Durchschlagzeit wird dabei
        Rechnung getragen. Die Totzeit ist die Zeit die verstreicht, bis sich das Bremsereignis vom einen Wagen
        auf den nächsten fortgepflanzt hat. Sobald Bremse_betätigt, beginnt sich die Gesammtbremskraft
        durch Zuschalten von Wagenbremskräften im Takt der Totzeit aufzubauen.
        Dieser Vorgang ist beendet, wenn alle Bremsen am Zug angesprochen haben resp. wenn "Zuglänge" mal
        eine Wagenbremskraft aufaddiert wurde.
Out     Gesamtbremskraft

Prozess 3.4 "Bremseinsatz festlegen"

In      Wagenlänge
In      Zuglänge
Akt     Bei einer bekannten Durchschlagzeit wird berechnet, wieviel Zeit benötigt wird,
        um ein Bremsereignis an den nächsten Wagen weiterzugeben.
Out     Totzeit

Prozess 4.1 "Laufwiderstand rechnen"

In      Zuglänge
In      Wagendimensionen
Akt     Mit Zuglänge und Wagendimensionen wird die Gewichtskraft des Zuges ermittelt
In      Geschwindigkeit
Akt     Mit der Geschwindigkeit bestimmt man den spezifischen Laufwiderstand.
        Dieser multipliziert mit der Zug-Gewichtskraft ergibt den Laufwiderstand
Out     Laufwid

Prozess 4.2 "Bogenwiderstand rechnen"

In      Zuglänge
In      Wagendimensionen
Akt     Mit Zuglänge und Wagendimensionen wird die Gewichtskraft des Zuges ermittelt,
        wobei berücksichtigt werden muss, welcher Teil des Zuges zum Zeitpunkt t in die
        Bogenrechnung involviert ist. zB. Einfahrt des Zuges in eine Kurve.
In      Kurvenradius
Akt     Mit dem Kurvenradius bestimmt man den spezifischen Bogenwiderstand.
        Dieser multipliziert mit der Zug-Gewichtskraft ergibt den Bogenwiderstand.
Out     Bogenwid

Prozess 4.3 "Neigungswiderstand rechnen"

In      Zuglänge
In      Wagendimensionen
Akt     Mit Zuglänge und Wagendimensionen wird die Gewichtskraft des Zuges ermittelt,
        wobei berücksichtigt werden muss, welcher Teil des Zuges zum Zeitpunkt t in die
        Steigung/Ebene/Gefälle involviert ist.
        zB. Einfahrt des Zuges in eine Steigung/Ebene/Gefälle !
In      Neigungspromille
Akt     Mit Neigungspromille bestimmt man den spezifischen Neigungswiderstand.
        Dieser multipliziert mit der Zug-Gewichtskraft ergibt den Neigungswiderstand.
Out     Neigungswid

Prozess 4.4 "Fahrwiderstände aufsummieren"

In      Laufwid
In      Bogenwid
In      Neigungswid
Akt     Alle zusammengezählt ergibt den Fahrwiderstand
Out     Fahrwiderstand

Prozess 5.1 "1500 Meter zählen"

In      Strecke
Akt     Bei Start 1500 wird der aktuelle Strecken-Wert in Beginn_Strecke gespeichert.
        Sobald Beginn_Strecke + 1500 < Strecke erfüllt ist, wird Stoppl500 generiert.

Prozess 5.2 "100 Meter zählen"

In      Strecke
Akt     Bei Start 100 wird der aktuelle Strecken-Wert in Beginn_Strecke gespeichert.
        Sobald Beginn_Strecke + 100 < Strecke erfüllt ist, wird StopplOO generiert.

Prozess 5.3 "Stillstand erkennen"

In      Geschwindigkeit
Akt     Sobald Geschwindigkeit = 0, wird Schnellbremsung_Reset generiert.

Prozess 6.1 "Bremsstufe feststellen"

In      Bremshebel
Akt     Wenn Bremshebel ≠ 5 Bar wird Bremse_anziehen generiert.

6. Programmier-Modulaufteilung

Jedes Modul (TOL) und auch das Hauptprogramm benutzen die Commen-Types aus dem COMM_TYP.TOL.

7. Nassi-Shneidermann-Diagramme

Randbedingungen setzen



Verkettete Liste



Motorstrom_Regler





Fahrstufenschalter





Lok_Simulieren



Hauptprogramm



8. Das Fahrszenario

Der Zweck des Fahrszenario-Files ist die Wegbeschreibung der zu tätigen Bahnfahrt. Es werden folgende Ereignisse unterschieden:

Zu jedem Ereignis gehört die km-Streckenmarke an der es eintrifft.
Zu den Signalen ist folgendes zu ergänzen: Das Ereignis Signal tritt auf, wenn es in den Sichtbereich des Lokführers kommt. Mit x-Meter wird angegeben, wie weit es tatsächlich noch entfernt ist. Bei der virtuellen Signalanzeige des Lok-Simulators wird diese effektive Entfernung angegeben und je nach bewältigtem Weg nachgeführt.

Das Szenario-Fileformat

Vorsignal  : kkkkk|S|xxxx|V|YY
             kkkkk = Streckenkilometer
             s     = Signal
             xxxx  = Entfernung zum Signal
             V     = Vorsignal
             yy    = Fahrbegriff [FO|F1|F2|F3]

Hauptsignal: kkkkk|S|xxxx|V|YY
             kkkkk = Streckenkilometer
             s     = Signal
             xxxx  = Entfernung zum Signal
             V     = Vorsignal
             yy    = Fahrbegriff [FO|F1|F2|F3]

Kurve      : kkkkk|K|xxxx
             kkkkk = Streckenkilometer
             K     = Kurve
             xxxx  = Kurvenradius in Meter (muss grösser 180m sein.)
			 
Steigung   : kkkkk|K|00xx
             kkkkk = Streckenkilometer
             N     = Neigung
             00xx  = Angabe der Neigung (Zwischen 0 und 54, wird später
                     um 27 erniedrigt. (-27 .. +27)

Die Ereignisse müssen km-mässig aufwärtsfolgend sein.

Beispiel eines Fahrszenarios

Fahrszenario: Filename GOTTHARD.SZN

{lm : Nach 40m Hauptsignal mit Fahrbegriff 1 "Freie Fahrt"}
00001|S|0040|H|F1
{100m: 18%. Steigung}
00100|N|0037
{200 : Kurve mit Radius 200m}
00200|K|0200
{300 : Kurve mit Radius 0m}
00300|K|0000
{800m : Nach 500m Vorsignal mit Fahrbegriff 3 "Fahrt mit 65 km/h"}
00800|S|0500|V|F3
{1000m : Nach 600m Hauptsignal mit Fahrbegriff 3 "Fahrt mit 65 km/h"}
01000|S|0600|H|F3
{1410m : 0%. Steigung}
01410|N|0027
{2000m : Nach 600m Vorsignal mit Fahrbegriff 2 "Fahrt mit 40 km/h"}
02000|S|0600|V|F2
{2450m : Nach 600m Hauptsignal mit Fahrbegriff 2 "Fahrt mit 40 km/h"}
02450|S|0600|H|F2
{2900m : -27%. Steigung}
02900|N|0000
{3100 : Kurve mit Radius 500m}
03100|K|0500
{4000m : Nach 500m Vorsignal mit Fahrbegriff 0 "Halt"}
04000|S|0500|V|F0
{4450m : Nach 600m Hauptsignal mit Fahrbegriff 0 "Halt"}
04450|S|0600|H|F0
{4800m : 0%. Steigung (Bahnhof)}
04800|N|0027
{5053m : Nach 50m Hauptsignal mit Fahrbegriff 1 "Freie Fahrt"}
05053|S|0050|H|F1
{5100m : 27%. Steigung}
05100|N|0054
{5200 : Kurve mit Radius 220m}
05200|K|0220
{6000m: Nach 650m Vorsignal mit Fahrbegriff 2 "Fahrt mit 40 km/h"}
06000|S|0650|V|F2
{6200 : Kurve mit Radius 800m}
0620|K|0800
{6550m : Nach 400m Hauptsignal mit Fahrbegriff 2 "Fahrt mit 40 km/h"}
06550|S|0400|H|F2
{6800m : 15%. Steigung}
06800|N|0042
{8000m : Nach 600m Vorsignal mit Fahrbegriff 0 "Halt"}
08000|S|0600|V|F0
{8500m : Nach 1500m Hauptsignal mit Fahrbegriff 0 "Halt"}
0850|S1500|H|F0
Ein weiteres Beispiel:

9. Das Benutzerhandbuch

Einleitung

Beim Lokomotiv-Fahrsimulator handelt es sich um eine Echtzeit-Simulation einer Fahrt mit der SBB-Elektrolokomotive Typ Re 6/6. Über die Tastatur kann die Lokomotive vorbildsgetreu bedient werden und die Anzeigeinstrumente zeigen realistische Werte an. Das Fahrgefühl wird durch die Sicht aus dem Frontfenster auf das Bahntrasse vermittelt, wobei in Abhängigkeit von der Geschwindigkeit Oberleitungsmasten an der Lok vorbeiziehen.

Anordnung der Bedien- und Ableseelemente in der Simulation

Auf dem Bildschirm werden während der Simulation die wichtigsten Anzeigeinstrumente angezeigt, wie:

Über die Tastatur sind folgende Eingabeelemente verfügbar:

Programm starten

Nachdem das Programm durch Eingabe von BO_BO_BO gestartet wurde, erscheint eine Eingabemaske, wo man die Randbedingungen wie Anzahl Wagen, Gewicht usw. angeben kann. Diese Eingabemaske sieht so aus:

LOKOMOTIV-FAHRSIMULATOR ---Randbedingungen---
—————————————————————————————————————————————
Abbremsung    (50..300%)  :  160
Wagen-Gewicht (10..40 t)  :  16
Wagen-Anzahl  (1..50)     :  30
Adhäsion      (1..9)      :  5

Pfad zum Szenario-File    :  D:\TP5\PRG\
Szenario-Filename:        :  ZUERICH.SZN

SIMULATOR STARTEN
PROGRAMM-EXIT
Mit den Pfeiltasten bewegt man nun den invertierten Balken auf die Zeile, die man geändert haben möchte. Nun löscht man die Einträge mit der Backspace-Taste und ersetzt sie mit den gewünschten, wobei zu beachten ist, dass nur der Wertebereich in Klammern zulässig ist. Es ist nicht nötig, Einträge zu machen, dann werden einfach die gezeigten Werte (Default-Werte) übernommen. Die Simulation wird gestartet, indem man den Balken auf SIMULATOR STARTEN bewegt und die ENTER-Taste drückt. Dasselbe gilt für PROGRAMM-EXIT.

Erklärung der Randbedingungen

Simulation starten

Nachdem die Randbedingungen erfolgreich gesetzt wurden, baut sich eine Führerstandskulisse auf dem Bildschirm auf. Wie man auf dem BZ- und HLD-Rundinstrument sieht, sind die Bremsen angezogen. Falls jetzt die Bremse ausgelöst würde (Taste B), hätte dies zur Folge, dass die Lokomotivbremse abschaltet. Dies kann man gerade einmal probieren. Man sieht, dass bei Bremsauslösung der BZ-Druck zusammenfällt und bei erneutem Betätigen der Taste B wieder hochschnellt. Nun löst man die Luftbremse durch betätigen der Taste 0 (Null). Jetzt kann die Lokomotive in Gang gesetzt werden. Dazu betätigen wir den Fahrschalthebel und setzten ihn auf F++, F+ oder M. Nun beginnt sich die Lokomotive zu bewegen.

Erklärung der Fahrschaltstellungen

Die Lokomotive greift über einen riesigen Drehschalter oder Stufenschalter verschiedene Fahrspannungen am Transformator ab und gibt sie auf die Elektromotoren. Ist die Lok abgeschaltet liegt der Drehschalter in Mittelstellung. Soll nun beschleunigt werden, muss der Drehschalter Schaltkontakt für Schaltkontakt im Uhrzeigersinn aufdrehen. Dabei darf kein Schaltkontakt übersprungen werden. Bewegt sich der Drehschalter aus der Nullstellung im Gegenuhrzeigersinn, wird den Elektromotoren nicht Strom zugeführt sondern entzogen (Rekuperieren). Dies hat eine Bremswirkung zur Folge und ist neben der Druckluftbremse das zweite Bremssystem an Bord.
(An Fachleute : Diese Erklärung ist sinnbildlich zu verstehen)

Fehlmanipulationen

Fahren mit der Lokomotive

Signaltafeln

Auf der oberen rechten Bildschirmhälfte erscheinen die virtuellen Signale. Auf diese ist je nach gezeigtem Fahrbefel mit einer Geschwindigkeitssenkung oder einem Halt zu reagieren. Geschlossene Signale erzeugen ein Signalton und lassen eine Warnlampe aufleuchten. Durch betätigen der Taste S quittiert man ein solches Signal.

Verlassen der Simulation

Bei betätigen der Taste Q verlässt man die Simulation.