Disclaimer:
0. Zunaechst mal habe ich NULL Hoffnung, dass vR diese Bugs in den alten Produkten repariert. Sie wissen z.B. mittlerweile sehr wohl wie man die Startprogrammbefreiung korrekt einbaut, haben diese Bugs aber in BR111 und BR143 belassen (bei der BR111 kann man den Bug durch den Kauf der ORoten mit Quelltext selber fixen). Ich habe den Bug, den ich hier beschreibe bei mir in der 132/232 und der 112 gefixt (durch Wrapperskripte, die die Funktion OnControlValueChange abfangen) und werde nach und nach Wrapperskripte fuer alle anderen Loks erstellen. Allerdings kann ich die nicht anbieten, da VR solche Sachen unterdrueckt. Ich habe seinerzeit die mit der ORoten BR111 publizierten Luaskripte verbessert, aber der Eintrag wurde einfach gesperrt. Das ist vielleicht nachvollziehbar, da kommerzielle Produkte eben aufwendig getestet werden muessen, und ein Fehler der in der 120, 103, E03, 243, 156, 112 etc. ueberall vorhanden ist, wuerde einen enormen Testaufwand erzeugen. Und Support von Fremdaenderungen ist nervig bzw. Suizid, weil man ja die Qualitaet der Aenderung ueberhaupt nicht kennt!
1. Der Bug ist ein Fehler in der PZBFREI-Logik seit der BR111 (dort nicht), also in allen Produkten wie z.B. BR232 bis zur aktuellen BR112! (Getestet mit 232, 243, 112)
2. Ich bitte, dass jemand den Bug wenigstens bei der BR112 nachvollzieht und an den VR Support meldet (ich habe keine Supportmoeglichkeit auf der VR Webseite gefunden). So kann er hoffentlich wenigstens in den aktuellen Loks UND ALLEN ZUKUENFTIGEN gefixt werden.
Bugbeschreibung:
Die VR Loks nach der BR111, die aber alle auf dem PZB Code der BR111 aufsetzen, haben einen Programmierfehler in der PZB-FREI Logik, durch den man bei einer Befreiung aus einer Zwangsbremsung nach verpasster Wachsambetaetigung am 1000Hz aus der Sicht des Skriptcodes auch gleichzeitig eine Befreiung aus einer restriktiven Ueberwachungskurve erzeugt. Dadurch bekommt man am naechsten scharfen 500Hz Magnet IMMER eine Zwangsbremsung.
Technisches [fuer Herrn Golz/vR]:
Die PZBFrei-Logik innerhalb OnControlValueChange funktioniert ungefaehr so:
Bei der BR111:
Falls Taste Frei gedrueckt
___Falls TasteFreibereitsgedrueckt=FALSE und ZWBaktiv=TRUE und weitere Bedingungen
______behandle Variante Frei aus ZWB
______ZWBaktiv=FALSE
______TasteFreibereitsgedrueckt=TRUE <--- verhindert dass die anderen beiden Falls-Bloecke abgearbeitet werden
___Falls TasteFreibereitsgedrueckt=FALSE und ZWBaktiv=FALSE und weitere Bedingungen:
______behandle Variante Frei aus 1000Hz
______Markiere Befreiung als unzulaessig falls kommender scharfer 500Hz
______TasteFreibereitsgedrueckt=TRUE
___Falls TasteFreibereitsgedrueckt=FALSE und ZWBaktiv=FALSE und weitere Bedingungen:
______behandle Variante Frei aus restriktive Ueberwachung
___fertig
fertig
BR232, BR243, BR112, und hoechstwahrscheinlich 120, 103, E03, 110, 140, 156, 243:
Hier ist folgendes passiert (weiss ich als Softwareentwickler aus Erfahrung zu 99% Gewissheit). Bei den Entwicklungen nach BR111 schaute Herr Golz auf diese komplexen if-Schleifen und sah die gleiche Bedingung TasteFreibereitsgedrueckt=FALSE in allen Falls-Zweigen. Wenn die Bedingungen in den Schleifen sich wechselseitig ausschliessen, gewinnt man an Performance wenn man die Abfrage rauszieht. Wenn man nach einer langen Zeit auf seinen eigenen Code schaut, passiert genau sowas!
Falls Taste Frei gedrueckt
___Falls TasteFreibereitsgedrueckt=FALSE <- Abfrage wurde herausgezogen. Damit fehlt aber die "Barriere" zwischen den kommenden Falls-Zweigen
______Falls ZWBaktiv=TRUE und weitere Bedingungen
_________behandle Variante Frei aus ZWB
_________TasteFreibereitsgedrueckt=TRUE <--- verhindert NICHT MEHR dass die anderen beiden Falls-Bloecke abgearbeitet werden!
_________ZWBaktiv=FALSE <--- dadurch wird der einer der naechsten Zweige (meistens Befreiung aus restriktiver Ue.) AUCH aufgerufen
______Falls ZWBaktiv=FALSE und weitere Bedingungen:
_________behandle Variante Frei aus 1000Hz
_________Markiere Befreiung als unzulaessig falls kommender scharfer 500Hz
_________TasteFreibereitsgedrueckt=TRUE
______Falls ZWBaktiv=FALSE und weitere Bedingungen:
_________behandle Variante Frei aus restriktive Ueberwachung
______fertig
___fertig
fertig