Schnittstelle für TVM
Re: Schnittstelle für TVM
Gorgi denkt (soweit ich das sehe) an eine neue DLL-Schnittstelle; mit einer Methode mit 40 (26+14) Argumenten, die nur für TVM430 genutzt würde. Wenn ich den Code so anschaue, ist es wohl eher als Codespende gedacht, und nicht als eine offene Schnittstelle für jedes zukünftige Zugsicherungssystem, an die du wohl gerade denkst.
Diese Signatur möchte folgendes bekannter machen: ZusiWiki · ZusiSK: Streckenprojekte · YouTube: Objektbau für Zusi · euirc: Zusi-Chat
- Gorgi [Vale]
- Beiträge: 231
- Registriert: 10.04.2019 20:22:10
- Aktuelle Projekte: Am Bau bei der LN6 mitwirken.
Mdl Hcknhm, (Pausiert)
Strecke 4020 & 4080 Schwetzingen(Mannheim) bis Üst. Forst / Graben-Neudorf. (Pausiert)
Re: Schnittstelle für TVM
Ehrlich gesagt bin ich schon etwas über die Fragen verwundert, kannst du diese bitte detaillierter Stellen oder bitte einfach dir es ansehen (Der Aufruf der dll in Delphi ist grade mal 155 Zeilen, davon 25 Leerzeilen für die bessere Sichtbarkeit, ebenso ist sind die Aufrufe sehr sauber geschrieben und öfter wegen der Sichtbarkeit in der nächsten Zeile)?Carsten Hölscher hat geschrieben: ↑04.09.2024 23:06:04 Welche dll-Schnittstelle nutzt Du denn?
Carsten
Aber ich versuche es mal zu beantworten:
- Funktion TProcessArraysFunc als stdcall.
- dll wird dynamisch geladen mit LoadLibrary mit der Adresse der Funktion "process_arrays".
- Die Parameter werden als Zeiger übergeben.
- dll darf nicht entladen werden für einen Zug wenn dieser noch vorhanden ist, erst nach entfernen des Zuges darf die dll Instanz geschlossen werden.
- Jeder Zug braucht seinen eigenen Aufruf für die dll im eigenen Speicher, sodass immer nur einem Zug eine dll Instanz zur Verfügung steht und nicht mehrere Züge zeitgleich auf den selben Speicher zugreifen.
Gruß
Gorgi
- Carsten Hölscher
- Administrator
- Beiträge: 33728
- Registriert: 04.07.2002 00:14:42
- Wohnort: Braunschweig
- Kontaktdaten:
Re: Schnittstelle für TVM
Ich wollte nur wissen, ob das über die recht neue Fahrzeug-dll-Schnittstelle geht oder irgendwie anders.
Carsten
Carsten
- Gorgi [Vale]
- Beiträge: 231
- Registriert: 10.04.2019 20:22:10
- Aktuelle Projekte: Am Bau bei der LN6 mitwirken.
Mdl Hcknhm, (Pausiert)
Strecke 4020 & 4080 Schwetzingen(Mannheim) bis Üst. Forst / Graben-Neudorf. (Pausiert)
Re: Schnittstelle für TVM
Ach verstehe, Tschuldigung dann habe ich wohl an dir vorbeigeredet,Carsten Hölscher hat geschrieben: ↑04.09.2024 23:34:59 Ich wollte nur wissen, ob das über die recht neue Fahrzeug-dll-Schnittstelle geht oder irgendwie anders.
Carsten
nach Nachfrage bei @F. Schn. geht das über die Fahrzeug-dll-Schnittstelle nicht.
Dachte es wäre klar das es dafür eine neue Schnittstelle geben müsste, soweit ich weiß hattest du es damals beim großem Treffen vorgeschlagen wenn ich mich nicht täusche.
Ich hätte daher vorgeschlagen dass die dll's gemeinsam für alle anderen Zugbeeinflussungen, die in dll geschrieben sind, einfach einen separaten gemeinsamen Ordner erhalten und jeweils nur aus diesem Ordner aufgerufen werden.
Achso, das ist übrigens nicht die TVM 430, sondern der Vorgänger TVM 300, wie er noch auf mehreren Strecken in Frankreich in Betrieb ist. TVM 430 ist weitaus komplexer und noch nicht soweit fortgeschritten um es hier mitzuteilen.
Gruß
Gorgi
- Carsten Hölscher
- Administrator
- Beiträge: 33728
- Registriert: 04.07.2002 00:14:42
- Wohnort: Braunschweig
- Kontaktdaten:
Re: Schnittstelle für TVM
Also das Ganze ist als Vorschlag gemeint? Ich dachte Du zeigst irgendwas, was schon geht.
Carsten
Carsten
- Gorgi [Vale]
- Beiträge: 231
- Registriert: 10.04.2019 20:22:10
- Aktuelle Projekte: Am Bau bei der LN6 mitwirken.
Mdl Hcknhm, (Pausiert)
Strecke 4020 & 4080 Schwetzingen(Mannheim) bis Üst. Forst / Graben-Neudorf. (Pausiert)
Re: Schnittstelle für TVM
Ähm, meinst du sowas:Carsten Hölscher hat geschrieben: ↑05.09.2024 12:32:50 Also das Ganze ist als Vorschlag gemeint? Ich dachte Du zeigst irgendwas, was schon geht.
Carsten
Aus dem aktuellen Auszug sind dass die Geschwindigkeitsstufen die mein Code ausgibt anhand der eingestellten Parameter:
(Jede vier zusammenliegenden Zeilen stellen einen Block dar. Es wurden die Demodaten genutzt die auch im Delphicode stehen. Wenn Beispielsweise die Daten für die Streckenhöchstgeschwindigkeit verändert werden, so erkennt der Code es automatisch und setzt die Blockgeschwindigkeit von dort bis zum Zug herunter. Aber theoretisch darf man im Betrieb nix verändern, aber falls doch, so erkennt der Code es korrekt und die Geschwindigkeitsstufen werden dementsprechend korrekt angepasst. Ebenso ist im Code zu sehen eine Stelle wo nur 270 als Streckenhöchstgeschwindigkeit statt 300 gilt, und der Code erfasst es und gibt es dementsprechend korrekt aus mit der vorliegenden Blockherruntersignalisierung, ebenso ist auch eine theoretische Weiche mit 220 km/h eingebaut, auch das wird korrekt abgebildet.)
Code: Alles auswählen
tvm300maxGeschwindigkeit: 300
Geschwindigkeit: 30, COVIT: 90
GeschwindigkeitCode: 02
Signalabstand: 2000
tvm300maxGeschwindigkeit: 300
Geschwindigkeit: 80, COVIT: 170
GeschwindigkeitCode: 80A
Signalabstand: 2000
tvm300maxGeschwindigkeit: 300
Geschwindigkeit: 160, COVIT: 235
GeschwindigkeitCode: 160A
Signalabstand: 2000
tvm300maxGeschwindigkeit: 270
Geschwindigkeit: 220, COVIT: 285
GeschwindigkeitCode: 220A
Signalabstand: 2000
tvm300maxGeschwindigkeit: 270
Geschwindigkeit: 270, COVIT: 285
GeschwindigkeitCode: (270V)
Signalabstand: 2000
tvm300maxGeschwindigkeit: 270
Geschwindigkeit: 271, COVIT: 285
GeschwindigkeitCode: 270V
Signalabstand: 3000
tvm300maxGeschwindigkeit: 270
Geschwindigkeit: 271, COVIT: 285
GeschwindigkeitCode: 270V
Signalabstand: 2000
tvm300maxGeschwindigkeit: 270
Geschwindigkeit: 271, COVIT: 285
GeschwindigkeitCode: 270V
Signalabstand: 2500
tvm300maxGeschwindigkeit: 300
Geschwindigkeit: 270, COVIT: 315
GeschwindigkeitCode: 270A
Signalabstand: 500
Geschwindigkeit: 270, COVIT: 315
GeschwindigkeitCode: 270A
Signalabstand: 2000
tvm300maxGeschwindigkeit: 300
Geschwindigkeit: 300, COVIT: 315
GeschwindigkeitCode: (300V)
Signalabstand: 2000
tvm300maxGeschwindigkeit: 300
Geschwindigkeit: 300, COVIT: 315
GeschwindigkeitCode: 300V
Signalabstand: 2000
tvm300maxGeschwindigkeit: 230
Geschwindigkeit: 220, COVIT: 235
GeschwindigkeitCode: 220E
Signalabstand: 2000
tvm300maxGeschwindigkeit: 300
Geschwindigkeit: 220, COVIT: 235
GeschwindigkeitCode: 220E
Signalabstand: 2000
tvm300maxGeschwindigkeit: 300
Geschwindigkeit: 220, COVIT: 285
GeschwindigkeitCode: 220A
Signalabstand: 2000
tvm300maxGeschwindigkeit: 300
Geschwindigkeit: 270, COVIT: 315
GeschwindigkeitCode: 270A
Signalabstand: 3000
tvm300maxGeschwindigkeit: 300
Geschwindigkeit: 300, COVIT: 315
GeschwindigkeitCode: (300V)
Signalabstand: 1500
tvm300maxGeschwindigkeit: 300
Geschwindigkeit: 300, COVIT: 315
GeschwindigkeitCode: (300V)
Signalabstand: 2500
tvm300maxGeschwindigkeit: 300
Geschwindigkeit: 300, COVIT: 315
GeschwindigkeitCode: 300V
Code: Alles auswählen
Ausgelesen Daten f³r aktuellen Block in dem sich der Zug befindet: Geschwindigkeit: 300, COVIT: 315
GeschwindigkeitCode: 300V
Zulõssige H÷chstgeschwindigkeit nach Sicherungsystem: 300.000000
Zwangsbremsung: 0
Leuchtet COVIT: 0
Fehlercode: 0
Gorgi
Edit:
Was derzeit noch nicht geht sind Wechsel von TVM 300 zu TVM 430 und TVM 430 zu TVM 300, Ebenso Wechsel von TVM 300 zu ETCS Level 2 oder ETCS Level 2 zu TVM 300. (Kann ich da theoretisch einen Aufruf ans ETCS Senden, mit gebe mir an was das ETCS beim Signal/Ort xy in xy Kilometer Entfernung zeigt und ob es eine Bremskurve ist oder keine Bremskurve an der Stelle ist, währe gut zu wissen, so könnte ich das direkt miteinander verknüpfen. Insofern sollte ein Levelwechsel vom ETCS zu TVM natürlich auch abfragen können was der aktuelle Code für den Block xy ist. Aber ich denke das hat aktuell noch etwas Zeit.)
Der Wechsel von TVM 300 zu KVB ist fertig eingebaut, aber KVB wird noch nicht aufgerufen, da nicht existent, aber theoretisch Stünde einem Ausstieg von 220 km/h auf Lichtsignale nix im Weg. Am Wechsel von KVB zu TVM 300 bin ich aktuell dran, da fehlt noch der Feinschliff.
Teilweise gehen die Befehle über die Boucle schon oder ich habe sie nach hinten geschoben, weil Zusi sowas noch nicht kann, wie Hauptschalter ausschalten und wieder einschalten, ohne das dabei die Leistung reduziert werden muss.
Aber im Grunde habe ich für alles eigentlich ne Idee für die Umsetzung wie es möglich ist. Mein Ziel ist es ja auch es zu möglichst 100% korrekt umzusetzen. Wenn irgendjemand Fehler findet so kann ich diese korrigieren.