Ausgaben Zusi für Leuchtmelder

Da immer mehr Zusi User von einem 1:1 Führerstand mit träumen, soll es zumindest an Datenaustausch nicht hapern.
Antworten
Nachricht
Autor
Benutzeravatar
Sven T.
Beiträge: 64
Registriert: 05.02.2012 02:23:40
Wohnort: Nordfriesland
Kontaktdaten:

Ausgaben Zusi für Leuchtmelder

#1 Beitrag von Sven T. »

Moin zusammen!

Wir sind grade dabei ein Fahrpult aus dem 628 umzubauen. Dank des Forums und persönlicher Unterstützung haben wir auch schon viele Dinge ans laufen gebracht. Die Eingaben werden dabei über ein Arcaze gesteuert, die Ausgaben laufen über einen Arduino Mega über Ethernet-Shield.

Der Tacho und die Bremsanzeigen/Manometer funktionieren alle. Nun stehen wir vor der Herausforderung die Leuchtmelder ans Laufen zu bringen. Die Ausgaben für die PZB und Sifa, sowie mit etwas Trickserei auch die "Türen offen" Leuchtmelder funktionieren annehmbar (wenn auch nicht ganz perfekt). Allerdings erschließen sich uns die TCP-Werte nicht, die Zusi für z.B. Schleuderschutz oder die Mg-Bremse liefert.

Soweit ich das auslesen konnte liefert Zusi nur die Flankenauswertung, ohne dabei eine Unterscheidung zu machen, ob es sich um eine positive oder negative Flanke handelt. Laut seriellem Monitor ist der Inhalt des Bytes "0". Ein einfaches "Leuchtmeder an/aus" gibt's ja nicht.

Hat jemand eine Idee, wie man daraus einen brauchbaren Wert umwandeln kann? Oder muss der Ansatz ein ganz anderer sein.

Wenn wir das Projekt komplett am Laufen haben, wird es dazu übrigens auch nochmal einen eigenen Beitrag mit Erfahrungsberichten und dem Hintergrund geben. Wir sind ja quasi in den letzten Zügen. :]
Es grüßt aus dem hohen Norden,
Sven

Benutzeravatar
Carsten Hölscher
Administrator
Beiträge: 33384
Registriert: 04.07.2002 00:14:42
Wohnort: Braunschweig
Kontaktdaten:

Re: Ausgaben Zusi für Leuchtmelder

#2 Beitrag von Carsten Hölscher »

So ganz hab ich das Problem nicht verstanden. Man kann sich ja z.B.im ftd-Editor ein fertiges Arduino-Script generieren lassen.

Carsten

Benutzeravatar
Sven T.
Beiträge: 64
Registriert: 05.02.2012 02:23:40
Wohnort: Nordfriesland
Kontaktdaten:

Re: Ausgaben Zusi für Leuchtmelder

#3 Beitrag von Sven T. »

Moin Carsten.

Soweit eine gute Idee. Leider klappt das bei uns nicht. Unser bis dato funktionierendes Script (PZB LM, Sifa LM, Manometer, Tacho) überträgt über Ethernet, das automatisch erstellte läuft ja über die USB-Verbindung. Wir haben dann einfach mal das vom ftd-Editor erzeugte Script genommen und unsere Ethernetverbindung weggelassen. Der Arduino bemängelt direkt im vom ftd-Editor erzeugten Text alle Variablen, die mit "-" geschrieben sind (wie zum Beispiel "valSchalter_Mg-Bremse"), weil er dies als Minus interpretiert. Heißt: wir konnten es so gar nicht auf den Arduino schreiben. Wir haben dann die "-" dann zu "_" geändert. Damit ging zwar das Überschreiben auf den Arduino (also die Fehlermeldungen waren weg), aber die Anzeigen im Pult machen jetzt einfach gar nichts mehr. :rolleyes:

Da wir nach einigen Tage prügeln mit dem Arduino allmählich nur noch Zahlen sehen, könnte der Fehler - wie so oft - natürlich auch zwischen den Ohren liegen. :sick
Insofern wären wir um eine helfende Ohrfeige dankbar. :confused:
Es grüßt aus dem hohen Norden,
Sven

Benutzeravatar
Carsten Hölscher
Administrator
Beiträge: 33384
Registriert: 04.07.2002 00:14:42
Wohnort: Braunschweig
Kontaktdaten:

Re: Ausgaben Zusi für Leuchtmelder

#4 Beitrag von Carsten Hölscher »

Allerdings erschließen sich uns die TCP-Werte nicht, die Zusi für z.B. Schleuderschutz oder die Mg-Bremse liefert.
Dann beschreib mal im Detail wo es hakt.

Carsten

Benutzeravatar
Sven T.
Beiträge: 64
Registriert: 05.02.2012 02:23:40
Wohnort: Nordfriesland
Kontaktdaten:

Re: Ausgaben Zusi für Leuchtmelder

#5 Beitrag von Sven T. »

Moin Carsten,

als Grundlage unseres Programms haben wir den Code benutzt, der im Thema "Der Arduino und direkte Ausgaben vom ZusiServer über TCP" hinterlegt ist und diesen entsprechend unserer Anschlüsse und Gerätschaften (u.a. drei Schrittmotoren für den HBL-, den HL- und den C-Druck, sowie den Tacho direkt) abgeändert.

Der Knackpunkt ist jetzt die Auswertung der Datenpakete. Die Übermittlung findet ja immer bei einer Zustandsänderung statt. Das funktioniert soweit auch. Wenn man sich den Wert für die Mg-Bremse im seriellen Monitor vom Arduino anzeigen lässt, dann ist der Inhalt immer "0". Und das egal, ob die Bremse aus ist oder ein. Laut Dokumentation soll für der übermittelte Wert Ein/Aus sein. Das müsste nach unserem Verständnis also bei positiven Änderung eine "1" und bei einer negativen Änderung eine "0" sein. Dadurch, dass der Wert aber "0" ist, kann der Arduino den Leuchtmelder nicht richtig ansteuern.

Die Auswertung des Programms sieht aktuell so aus:

Code: Alles auswählen

if (dataGroup.i == 0x001d) {
Serial.println(nutzdata.b[0]);
if(nutzdata.b[0] == 1) {digitalWrite(27, HIGH);}
if(nutzdata.b[0] == 0) {digitalWrite(27, LOW);}
}
Wir nehmen hier übrigens immer die Mg-Bremse als Beispiel, weil es sich im Simulator schnell austesten lässt.

Die anderen Leuchtmelder, bei denen das gleiche Problem vorliegt, sind das Schleudern, die Drehzahlverstellung und der Störmelder.
Es grüßt aus dem hohen Norden,
Sven

Benutzeravatar
Sven T.
Beiträge: 64
Registriert: 05.02.2012 02:23:40
Wohnort: Nordfriesland
Kontaktdaten:

Re: Ausgaben Zusi für Leuchtmelder (gelöst)

#6 Beitrag von Sven T. »

[...], könnte der Fehler - wie so oft - natürlich auch zwischen den Ohren liegen. :sick
[...]

Ja Carsten, was soll ich sagen... Der Fehler lag wie erwartet zwischen den Ohren. Unser "Arne aus dem Norden" hat uns die rettende Ohrfeige verpasst:

Wie der Experte vielleicht schon am Code sieht haben wir schlicht und einfach den falschen Datentyp abgefragt. Wenn man als Laie den ganzen Tag nur am Programmieren ist, kann das schon mal vorkommen.

Wir haben den Code jetzt geändert in:

Code: Alles auswählen

if (dataGroup.i == 0x001d) {
if (nutzdata.f == 0) {digitalWrite(27, LOW);}
else {digitalwrite(27, HIGH);}
}
Und siehe da: Es funktioniert.

Trotzdem bedanken wir uns für die schnelle Reaktion, denn das Nachhaken hat nochmal Motivation gegeben die grauen Zellen wiederholt zu beanspruchen.
Es grüßt aus dem hohen Norden,
Sven

Benutzeravatar
nonesense
Beiträge: 504
Registriert: 15.07.2006 12:50:10
Aktuelle Projekte: QDmi
Fahrpult Einheitsführerstand
Ludmilla
Wohnort: Köln
Kontaktdaten:

Re: Ausgaben Zusi für Leuchtmelder (gelöst)

#7 Beitrag von nonesense »

Ich würde das so vereinfachen:

Code: Alles auswählen

if (dataGroup.i == 0x001d) {
    digitalWrite(27, nutzdata.f != 0);
}
Oder sogar so:

Code: Alles auswählen

if (dataGroup.i == 0x001d) digitalWrite(27, nutzdata.f != 0);
Eine Zeile Code, statt fünf.

Gruß
Jens

Benutzeravatar
Jens Haupert
Beiträge: 4911
Registriert: 23.03.2004 14:44:34
Aktuelle Projekte: http://www.zusidisplay.de
Wohnort: Berlin
Kontaktdaten:

Re: Ausgaben Zusi für Leuchtmelder (gelöst)

#8 Beitrag von Jens Haupert »

nonesense hat geschrieben: 07.10.2021 13:26:51Eine Zeile Code, statt fünf.
Obwohl viele Einsteiger die 5 Zeilen besser verstehen, als die einzeilige kompakte Darstellung. :D

Grüße
Jens

Benutzeravatar
F. Schn.
Beiträge: 6629
Registriert: 24.10.2011 18:58:26

Re: Ausgaben Zusi für Leuchtmelder

#9 Beitrag von F. Schn. »

Kannst du beschreiben, welchen Zug du zum Testen verwendet hast und welche Bedienhandlungen du vorgenommen hast, damit der LM hätte kommen müssen?
Diese Signatur möchte folgendes bekannter machen: ZusiWiki · ZusiSK: Streckenprojekte · YouTube: Objektbau für Zusi · euirc: Zusi-Chat

Antworten