Jump to content

Variable für automat. Beschleunigung provoziert unbekannten Fehler und stoppt Ereignis-Ablauf


Recommended Posts

Fehlfunktion.thumb.jpg.adf04cb16649935863c355ca14679bf7.jpgGuten Tag, Entwickler im Modellbahn-Studio

Kennt jemand von Euch die Bedeutung/Entstehung der folgenden Fehlermeldung: "Unknown method or property name trackContact"?

Ich habe das Problem bereits in meiner Steuerungs-Anfrage vom 24.07.2021 ("Strassenverkehr: Fehler beim Ausführen ...") vorgestellt, mich jedoch offenbar zu wenig verständlich ausgedrückt und daher keine Antwort erhalten. Ich versuche es daher nochmals andersrum:

Bild 1 "Fehlfunktion": Fahrzeuge sollen an STOP-Kontakten kurz anhalten und dann weiterfahren, ohne nachfolgende Fahrzeuge über den STOP zu ziehen. Zu diesem Zweck wird die Variable 1 (automat. Beschleunigung = false) eingefügt. Dies löst aber die erwähnte Fehlermeldung (rot) aus und die Weiterfahrt stoppt. Ein Verlassen des Kontakts und damit Auslösung der Variablen 2 (automat. Beschleunigung = true) ist damit nicht möglich. Die Analyse des fehlerhaften Ereignisses im Ereignis-Protokoll zeigt nur ein unverdächtiges Bild der Variablen 1.

Bild 2 "Korrektfunktion": Unerklärlich - in einer anderen Anlage mit praktisch gleicher STOP-Funktion schaltet die identische Programmierung einwandfrei: Mit der Variablen 1 stoppt der Bus und fährt nach kurzer Verzögerung problemlos weiter - ohne nachfolgende Fahrzeuge über den STOP zu ziehen. Genau so, wie es sein sollte! Wo ist denn der Unterschied zwischen den beiden Anlagen?

Meine Folgerung: Wird die Variable 1 aus der Anlage "Fehlfunktion" entfernt, so funktionieren die STOPs normal - aber die Autokolonne wird langsam länger, da das Kopf-Fahrzeug die nachfolgenden Autos über den STOP zieht. Muss ich mich wohl damit abfinden?

Pröbelt einmal in der beigefügten Anlage "Test 3 Albula neu". Findet jemand eine Lösung? Da wäre ich überglücklich! Ich habe diese Fragestellung auch noch in die Abteilung "Steuerung" gepostet - vielleicht hat einer der dortigen Experten doch noch eine Lösung für das Problem?

Freundliche Grüsse und Dank für Eure Hilfestellung

Frenkyboy

Korrektfunktion.jpg

Test-3 Albula neu.mbp

Link to comment
Share on other sites

Hallo Frenkyboy,

Der Fehler ist - wie meistens - ziemlich trivial, ab man findet ihn nicht.

Der Fehler ist, dass in Bild1 die automatische Beschleunigung als Eigenschaft des Gleiskontakts und nicht des Fahrzeugs ausgewählt wurde. Wenn Du nochmal auf "automatische Beschleunigung" klickst und die Vorauswahl (Objekte, Gleiskontakt, Fahrzeug) durchgehst, wirst Du sehen, dass das Häkchen bei "Gleiskontakt -> automatische Beschleunigung" ist und nicht bei "Fahrzeug -> automatische Beschleunigung".

Da sowohl beim Gleiskontakt als auch beim Fahrzeug die Eigenschaft denselben Namen hat, ist es an der Oberfläche fast nicht zu erkennen, wo der Fehler liegt.

Wenn Du kurz mal auf LUA-Schreibweise umschaltest ("< >"), kann man es leichter erkennen. Dann aber ohne Änderung wieder auf "Normaldarstellung" (erster Button) zurückschalten, ohne etwas an dem LUA-Skript zu ändern. Sonst ist der Inhalt der Funktion futsch.

Albula2.thumb.JPG.7646e62370278b66870b4de8efcc4ba2.JPG

Albula3.thumb.JPG.5276d386bc8238b95c0b09bf7c6c8cd1.JPG

Die falsche Auswahl kommt bei den meisten der Ereignisse vor.

Ansonsten fiel mir auf, dass Du oft sowohl das Fahrzeug (als Auslöser) als auch den Gleiskontakt angibts. Das Fahrzeug als Auslöser reicht vollkommen. Und: Bei "Bus reduziert Geschw..." gehts Du alle Busse als Wiederholung durch. Jemand sagte mir, dass das so ungünstig ist (wegen Performance), da alle Objekte der Anlage durchsucht werden. Da der Gleiskontakt ja schon Auslöser ist, würde es reichen, eine Bedingung zu setzen:

Albula4.thumb.JPG.bb46c4d896e5626b534e3af3bc566ef0.JPG

Das Problem mit der sich aufbauenden Kolonne konnte ich nicht nachvollziehen.

Grüße, Wolfgang

 

 

Link to comment
Share on other sites

vor 1 Stunde schrieb prinz:

Hallo Frenkyboy,

Der Fehler ist - wie meistens - ziemlich trivial, ab man findet ihn nicht.

Der Fehler ist, dass in Bild1 die automatische Beschleunigung als Eigenschaft des Gleiskontakts und nicht des Fahrzeugs ausgewählt wurde. Wenn Du nochmal auf "automatische Beschleunigung" klickst und die Vorauswahl (Objekte, Gleiskontakt, Fahrzeug) durchgehst, wirst Du sehen, dass das Häkchen bei "Gleiskontakt -> automatische Beschleunigung" ist und nicht bei "Fahrzeug -> automatische Beschleunigung".

Da sowohl beim Gleiskontakt als auch beim Fahrzeug die Eigenschaft denselben Namen hat, ist es an der Oberfläche fast nicht zu erkennen, wo der Fehler liegt.

Wenn Du kurz mal auf LUA-Schreibweise umschaltest ("< >"), kann man es leichter erkennen. Dann aber ohne Änderung wieder auf "Normaldarstellung" (erster Button) zurückschalten, ohne etwas an dem LUA-Skript zu ändern. Sonst ist der Inhalt der Funktion futsch.

Albula2.thumb.JPG.7646e62370278b66870b4de8efcc4ba2.JPG

Albula3.thumb.JPG.5276d386bc8238b95c0b09bf7c6c8cd1.JPG

Die falsche Auswahl kommt bei den meisten der Ereignisse vor.

Ansonsten fiel mir auf, dass Du oft sowohl das Fahrzeug (als Auslöser) als auch den Gleiskontakt angibts. Das Fahrzeug als Auslöser reicht vollkommen. Und: Bei "Bus reduziert Geschw..." gehts Du alle Busse als Wiederholung durch. Jemand sagte mir, dass das so ungünstig ist (wegen Performance), da alle Objekte der Anlage durchsucht werden. Da der Gleiskontakt ja schon Auslöser ist, würde es reichen, eine Bedingung zu setzen:

Albula4.thumb.JPG.bb46c4d896e5626b534e3af3bc566ef0.JPG

Das Problem mit der sich aufbauenden Kolonne konnte ich nicht nachvollziehen.

Grüße, Wolfgang

 

Guten Abend, Prinz/Wolfgang

Herzlichen Dank für Deine Lösung. Darauf wäre ich nie gekommen - aber ich habe ohnehin nur ein rudimentäres Verständnis von Variablen und deren versteckten Feinheiten!

Ein kleines Problem habe ich noch bei der Umsetzung Deines Vorschlags zur Geschwindigkeitsreduzierung der Busse:

Ich kriege das Schlagwort "Busse" nicht in die Bedingung "Eigenschaften/Variable existiert" hinein (Bild "Lösungsversuch"). Was mache ich da falsch?

Freundliche Grüsse

Frenkyboy

 

Lösungsversuch.JPG

Vorschlag Prinz.JPG

Link to comment
Share on other sites

Du stellst mit dem "Zahnrad" neben dem Eintrag "Fahrzeug" um auf "Variable (erweitert)". Dann erscheint unter dem Objekt (wie eingetragen "Auslöser - Fahrzeug" ein weiteres Feld "Variable". Dort kannst Du "Busse" eintragen oder evtl. auch auswählen.

 

Link to comment
Share on other sites

Danke nochmals, Prinz (y)

Ich konnte das jetzt nachvollziehen. Einziger kleiner Schönheitsfehler: Die Busse überfahren den Kontakt trotzdem mit unveränderter Geschwindigkeit, wie die andern Autos. Also vielleicht doch besser mit "Wiederholung" arbeiten?

Dank Deiner Hilfe kann ich jetzt in meiner Anlage noch einige kleine "kosmetische" Ergänzungen einfügen und sie dann veröffentlichen. Herzlichen Dank!

Freundliche Grüsse

Frenkyboy

Link to comment
Share on other sites

Hallo Frenkyboy,

Bei meiner Kopie funktioniert das Abbremsen. Prüfe doch noch mal nach (Mein Lieblingsfehler), ob bei der Bedingung als Auslöser evtl. der Gleiskontakt statt Fahrzeug angegeben ist.

Grüße zurück

Wolfgang

 

Link to comment
Share on other sites

vor 20 Minuten schrieb prinz:

Hallo Frenkyboy,

Bei meiner Kopie funktioniert das Abbremsen. Prüfe doch noch mal nach (Mein Lieblingsfehler), ob bei der Bedingung als Auslöser evtl. der Gleiskontakt statt Fahrzeug angegeben ist.

Grüße zurück

Wolfgang

 

Hallo Wolfgang

Ja, genau das war's: Hatte bei "Fahrzeuggeschwindigkeit setzen" irrtümlich als Auslöser den Gleiskontakt drin. Jetzt funktioniert alles 100% - auch in Verbindung mit den Zügen. Also nochmals besten Dank!

Grüsse, Frenkyboy

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...