Jump to content

Empfohlene Beiträge

Geschrieben

Hallo zusammen,

ich habe ein Problem bei der Steuerung meiner Bahnübergänge mit V9, Eingleisig funktioniert meine Steuerung aber Zweigleisig nicht. Zwar werden die Schranken geschlossen und der Straßenverkehr angehalten, aber die Überwachungssignale werden nicht geschaltet. Hier das Ereignisprotokoll:

[21:56:14] Ereignisprotokollierung gestartet
[21:56:39] Gleiskontakt wird ausgelöst -> H/V Hauptsperrsignal, Regio Shuttle, 1
[21:56:40] Gleiskontakt wird ausgelöst -> Ne 5 Haltetafel, Regio Shuttle, 1
[21:56:40] Signal schaltet -> H/V Hauptsperrsignal, 0
[21:56:40] Gleiskontakt wird ausgelöst -> H/V Hauptsperrsignal, Regio Shuttle, 1
[21:56:41] Gleiskontakt wird ausgelöst -> Ne 5 Haltetafel, Regio Shuttle, 1
[21:56:42] Gleiskontakt wird ausgelöst -> H/V Hauptsperrsignal, Regio Shuttle, 1
[21:56:48] Gleiskontakt wird ausgelöst -> Bü Ankündigungstafel, Regio Shuttle, 1
[21:56:48]     schliessen setzen (2)
[21:56:48]         Objekt-Variable wird gesetzt -> Bahnwärterhaus BUE#01, "Zugfahrt", 1
[21:56:48]         BUE schalten (2)
[21:56:48]             attempt to index a nil value

Und hier die Anlage: ID 426E0E6C-F99B-41ED-8CB3-21AD15CEB509 das Ereignis findet ihr unter Bahnverkehr, Bahnuebergaenge, Zweigleisig, BUE schalten (2).

Danke im voraus

Wüstenfuchs

Geschrieben (bearbeitet)
vor 21 Minuten schrieb Wüstenfuchs:

[21:56:48]             attempt to index a nil value

Im benutzerdefinierten Ereignis prüfst du in einer Wiederholung über alle Objekte mit einem Schlagwort, ob die Variable "Zugfahrt" in diesem Objekt auf 0 steht.
Aber zwei der drei Objekte (nämlich die beiden Kontakte) haben diese Variable gar nicht.

Deshalb versucht deine Bedingung eine Variable anzusprechen, die nicht existiert.
-> attempt to index a nil value

Dieser Fehler führt zum Abbruch. der Rest des benutzerdefinierten Ereignisses wird nicht mehr ausgeführt.

 

Bearbeitet von Goetz
Schreibfehler korrigiert
Geschrieben
vor 1 Stunde schrieb Goetz:

Im benutzerdefinierten Ereignis prüfst du in einer Wiederholung über alle Objekte mit einem Schlagwort, ob die Variable "Zugfahrt" in diesem Objekt auf 0 steht.
Aber zwei der drei Objekte (nämlich die beiden Kontakte) haben diese Variable gar nicht.

Deshalb versucht deine Bedingung eine Variable anzusprechen, die nicht existiert.
-> attempt to index a nil value

Dieser Fehler führt zum Abbruch. der Rest des benutzerdefinierten Ereignisses wird nicht mehr ausgeführt.

 

Richtig, die Bedingung soll prüfen bei allen Objekten mit den Schlagwort BUE 2Gl. (Wdh) die Variable Zugfahrt nicht den Wert 0 hat. Wenn ja soll die Signale, die in einer Liste im gleichen Objekt gespeichert sind, (Wdh1) in Stellung 1 schalten, wenn nein in Stellung 0. Bei den eingleisigen Bahnübergängen ist die EV genauso gestrickt, nur mit der Ausnahme das ich da mit Boolischen Werten arbeite. Die Kontakte sind, wie bei der echten Bahn nur die Auslöser, die Steuerung (Variablen und Listen) ist im Bahnwärterhaus BUE#(xx). Lasse einfach mal den Triebwagen im Hauptbahnhof fahren. Auf der Nebenstrecke gehen die Übergange, soll er aber den östlichen Übergang der Hauptstrecke passieren (der Andere ist noch nicht fertig) funktionierts nicht.

Geschrieben
vor 3 Minuten schrieb Wüstenfuchs:

Richtig, die Bedingung soll prüfen bei allen Objekten mit den Schlagwort BUE 2Gl. (Wdh) die Variable Zugfahrt nicht den Wert 0 hat.

Das kann sie aber nicht bei Objekten, welche diese Variable gar nicht haben.
Wenn die Variable nicht existiert, dann kann ich nicht nachschauen, ob sie 0 ist. Wo sollte ich denn nachschauen, wenn es da nix (nil) gibt?

Geschrieben (bearbeitet)
vor 12 Minuten schrieb Goetz:

Das kann sie aber nicht bei Objekten, welche diese Variable gar nicht haben.
Wenn die Variable nicht existiert, dann kann ich nicht nachschauen, ob sie 0 ist. Wo sollte ich denn nachschauen, wenn es da nix (nil) gibt?

Die Bedingung bezieht sich doch auf die erste Wiederholung der Wiederholungskette, also fuer alle Objekte mit einen Schlagwort (Wdh), die nachfolgenden Wiederholungen haben deshalb extra eine Nummer als Präfix. Muss mal nachsehen ob ich da was verkehrt gemacht habe.

Bearbeitet von Wüstenfuchs
Geschrieben (bearbeitet)
vor 8 Stunden schrieb Wüstenfuchs:

Die Bedingung bezieht sich doch auf die erste Wiederholung der Wiederholungskette, also fuer alle Objekte mit einen Schlagwort

Richtig.
Und zwei deiner drei Objekte mit dem angegebenen Schlagwort haben keine Variable mit dem Namen "Zugfolge" "Zugfahrt".

Bearbeitet von Goetz
Geschrieben (bearbeitet)
vor 7 Minuten schrieb Goetz:

Richtig.
Und zwei deiner drei Objekte mit dem angegebenen Schlagwort haben keine Variable mit dem Namen "Zugfolge".

Upps welche denn? Da habe ich mich wohl beim Copi and Paste irgendwo vertan. Dann werde ich mich mal auf die suche begeben.

Danke Goetz.

Bearbeitet von Wüstenfuchs
Geschrieben (bearbeitet)
vor 8 Stunden schrieb Wüstenfuchs:

welche denn?

Zugfahrtnil.jpg.6b247298dd78acb6c67c797e0f8b2011.jpg

 

 

vor 10 Stunden schrieb Goetz:

zwei der drei Objekte (nämlich die beiden Kontakte) haben diese Variable gar nicht.

Viele Grüße
Götz

Bearbeitet von Goetz
Bild korrigiert
Geschrieben
vor einer Stunde schrieb Goetz:

 

Zugfolgenil.jpg.4525ee9b9e67e82cde75d98e9036e0e2.jpg

 

 

Viele Grüße
Götz

Hab sie gefunden, denen muss ich versehentlich das falsche Schlagwort zugewiesen haben. Die Signale schalten trotzdem immer noch nicht, sobald die Verzögerung abgelaufen ist kommt die gleiche Fehlermeldung.

Geschrieben (bearbeitet)
vor 10 Stunden schrieb Wüstenfuchs:

Die Signale schalten trotzdem immer noch nicht, sobald die Verzögerung abgelaufen ist kommt die gleiche Fehlermeldung.

Da du die Veröffentlichung rückgängig gemacht hast, kann ich nicht nachschauen, woran es jetzt hakt.

Die Anlage ist wieder verfügbar. Ich schau mal, was ich noch finde ...

Bearbeitet von Goetz
Ergänzungen
Geschrieben
vor 17 Minuten schrieb Phrontistes:

"Zugfahrt" oder "Zugfolge"

Danke für den Hinweis, Phrontistes.
Ich hatte mich vertan und habe es jetzt korrigiert.

Geschrieben
vor 3 Stunden schrieb Goetz:

Da du die Veröffentlichung rückgängig gemacht hast, kann ich nicht nachschauen, woran es jetzt hakt.

Hab sie mit aktualisierten Stand neu Hochgeladen. ID 426E0E6C-F99B-41ED-8CB3-21AD15CEB509

Geschrieben
vor 10 Stunden schrieb Wüstenfuchs:

sobald die Verzögerung abgelaufen ist kommt die gleiche Fehlermeldung.

Das liegt daran, dass du nach der Verzögerung an zwei Stellen die falsche Wiederholung eingetragen hattest:

Wiederholung0.jpg.979b9a6c76ce28ce58ead29a62d20faa.jpg

Die Wdh gibt es hier nicht mehr, denn das ist die Wiederholung von oben und die ist hier abgelaufen.
Stattdessen benötigst du an den beiden markierten Stellen die neue Wdh0.

Im Grunde sind diese Wiederholungen für alle Objekte mit dem Schlagwort BUE 2Gl. an dieser Stelle aber sowieso unsinnig.
Es handelt sich ja nur um ein einziges Objekt: Das Bahnwärterhaus.

Viele Grüße
Götz

Geschrieben
vor 6 Minuten schrieb Goetz:

Im Grunde sind diese Wiederholungen für alle Objekte mit dem Schlagwort BUE 2Gl. an dieser Stelle aber sowieso unsinnig.
Es handelt sich ja nur um ein einziges Objekt: Das Bahnwärterhaus.

 

Bis jetzt ist es nur ein Bahnübergang auf der Hauptstrecke weitere sind in Arbeit und sollen alle Global gesteuert werden, also mit dem gleichen Befehl.

Das mit dem Prafix des Widerholungsnamens hatte ich wohl noch drei Wochen gesucht und nicht gefunden.😎👨‍🦯😎

Geschrieben
vor 1 Minute schrieb Wüstenfuchs:

weitere sind in Arbeit

Auch wenn es mehrere sind, willst du immer nur einen davon bedienen und nicht alle gleichzeitig.
Du kannst das allgemeingültig definieren, das ist schon richtig.

Aber mit der Wiederholung würdest du immer alle Bahnübergänge auf einmal ansprechen, wenn irgendwo ein BÜ Kontakt betreten wird. Und das willst du ganz bestimmt nicht.

Geschrieben (bearbeitet)
vor 37 Minuten schrieb Wüstenfuchs:

alle Global gesteuert

Ich möchte folgende Methode vorschlagen:

Im benutzerdefinierten Ereignis legst du einen Parameter für ein Objekt an.
Den Namen kannst du frei wählen. Ich habe mich hier für "Schaltkasten" entschieden.

ParameterSchaltkasten.jpg.3e55c407986bf77d068fd00489688c70.jpg

 

Beim Aufruf des benutzerdefinierten Ereignisses übergibst du dann an den Parameter das Objekt, was zum Kontakt gehört.
Also jeweils das Ding, was du im Kontakt in der Variablen BUE gespeichert hast.

Parameterbergabe.jpg.81f12585984eb4fb0948a592c0873a27.jpg

 

so sieht das dann aus:

mehrgleisiger BÜ für Wüstenfuchs.mbp

Viele Grüße
Götz

Bearbeitet von Goetz
Schreibfehler korrigiert
Geschrieben

Danke @Goetz werde ich mir mal ansehen. Mein Ziel ist es die EV so schlank wie möglich zu halten. Deshalb will ich so viele allgemeingültige Befehle wie möglich verwenden. Sonst haben die Kids mit ihren Pc's nachher Probleme mit der Proformens, da die nicht so einen starken Prozessor haben wie ich.

Geschrieben
vor 14 Minuten schrieb Wüstenfuchs:

Mein Ziel ist es die EV so schlank wie möglich zu halten.

Das habe ich doch längst verstanden, Wüstenfuchs.
Deshalb zeige ich dir mit meinem Beispiel, wie du das erreichst.

Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren

Du musst ein Benutzerkonto besitzen, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen.

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden
×
×
  • Neu erstellen...