Der Ardunio und direkte Ausgaben vom ZusiServer über TCP

Da immer mehr Zusi User von einem 1:1 Führerstand mit träumen, soll es zumindest an Datenaustausch nicht hapern.
Nachricht
Autor
Benutzeravatar
nonesense
Beiträge: 391
Registriert: 15.07.2006 12:50:10
Aktuelle Projekte: Einheitsführerstand
Ludmilla
Wohnort: Köln
Kontaktdaten:

Re: Der Ardunio und direkte Ausgaben vom ZusiServer über TCP

#221 Beitrag von nonesense »

Code: Alles auswählen

if (ebene == 4) {
 if (dataGroup.i == 0x0005) { // Melder 1000 Hz
	if (nutzdata.b[0] == 1) {digitalWrite(37, HIGH);}
	if (nutzdata.b[0] == 0) {digitalWrite(37, LOW);}
 } else if (dataGroup.i == 0x0006) { // Melder U
	if (nutzdata.b[0] == 1) {digitalWrite(27, HIGH);}
	if (nutzdata.b[0] == 0) {digitalWrite(27, LOW);}
 } else if (dataGroup.i == 0x0007) { // Melder M
	if (nutzdata.b[0] == 1) {digitalWrite(29, HIGH);}
	if (nutzdata.b[0] == 0) {digitalWrite(29, LOW);}
 } else if (dataGroup.i == 0x0008) { // Melder O
	if (nutzdata.b[0] == 1) {digitalWrite(31, HIGH);}
	if (nutzdata.b[0] == 0) {digitalWrite(31, LOW);}
 } else if (dataGroup.i == 0x000A) { // Melder 500 Hz
	if (nutzdata.b[0] == 1) {digitalWrite(35, HIGH);}
	if (nutzdata.b[0] == 0) {digitalWrite(35, LOW);}
 } else if (dataGroup.i == 0x000B) { // Melder Befehl
	if (nutzdata.b[0] == 1) {digitalWrite(33, HIGH);}
	if (nutzdata.b[0] == 0) {digitalWrite(33, LOW);}
 }
}
Hallo zusammen,

ich erweitere meinen Sketch so, dass er beide Protokolle kann.
Zusi2/Loksim geng ja schon. Das Zusi3 Protokoll lässt sich recht einfach einfügen. Danke an F. Schn.!

Mit dem Code-Schnipsel oben habe ich aber ein Problem, bzw. mit dem, was mir Übertragen wird. Und zwar erwarte ich, dass wenn ein Leuchtmelder blinkt, ich alle 500ms ein neues Paket bekomme, mit neuen Werten.
Neue Daten bekomme ich auch Zyklisch, jedoch ändern sie die LM-Zustände nicht oder nur sehr selten. Bekomme ich z.B. eine 1000er Beeinflussung, geht der blaue LM aus, anstatt, dass er anfängt zu blinken.

Hat jemand einen Tipp?

Gruß
Jens
Zuletzt geändert von nonesense am 12.07.2017 21:38:18, insgesamt 1-mal geändert.

Benutzeravatar
Oliver Lamm
Beiträge: 3073
Registriert: 04.01.2002 15:02:17
Aktuelle Projekte: Aachen - Neuss für Zusi3
Wohnort: Essen
Kontaktdaten:

Re: Der Ardunio und direkte Ausgaben vom ZusiServer über TCP

#222 Beitrag von Oliver Lamm »

Hallo Jens,

ich habe leider die Erfahrung gemacht, das sich das "Blinken" nicht über das Protokoll sauber abbilden lässt. Am besten geht das über die Abrage des Status der Zugsicherung und dann das Blinken dort selber zu definieren.
Kannst mir gerne noch mal eine Email schreiben, dann schicke ich Dir meinen Codeblock.

Oli
Oliver Lamm
mail(AT)oliverlamm(DOT)de

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

Re: Der Ardunio und direkte Ausgaben vom ZusiServer über TCP

#223 Beitrag von nonesense »

Hallo Olli,

das dachte ich mir schon. Dazu fand ich in der Doku unter "11.3.3.3.4.4 PZB90" das hier:
============
Zusatzinfo Melderbild:
0: Normalzustand
1: 1000 Hz nach 700m
2: Restriktiv
3: Restriktiv + 1000Hz
4: Restriktiv + 500 Hz
5: Prüfablauf nach LZBÜbertragungsausfall (>0)
============
Darin fehlt mir
- 1000 Hz vor 700m, nicht restriktiv
- 500 Hz nicht restriktiv

Gruß
Jens

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

Re: Der Ardunio und direkte Ausgaben vom ZusiServer über TCP

#224 Beitrag von Jens Haupert »

nonesense hat geschrieben: Darin fehlt mir
- 1000 Hz vor 700m, nicht restriktiv
- 500 Hz nicht restriktiv
Hallo Jens,

diese Fälle passen ja zum Zustand "0: Normalzustand" und können über andere Daten abgefragt werden. Das von dir genannte Datenfeld beinhaltet einzig die von der PZB90 neu eingeführten Zustände. D.h., wenn man in den Zuständen 1-5 ist, ist das LM-Bild klar. Ist man im Zustand 0 muss man den 1000er und 500er LM über die entsprechenden Pakete auswerten. Beide zeigen in diesem Fall immer Standlicht.

Grüße
Jens

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

Re: Der Ardunio und direkte Ausgaben vom ZusiServer über TCP

#225 Beitrag von nonesense »

Hallo Jens,

so habe ich es auch angefangen auszuwerten.

Der 85er, z.B. blinkt dann, wenn:
(1000erAn && KeineZwangsbr. && HLL >= 2,2Bar && KeinStörbetrieb && ZurgatO) || 1000HzNach700m

...So habe ich es jetzt in meinem Code sinngemäß abgeleitet. Mega umständlich. Bestimmt habe ich etwas übersehen.

Gruß
Jens

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

Re: Der Ardunio und direkte Ausgaben vom ZusiServer über TCP

#226 Beitrag von Jens Haupert »

Jup,

geschenkt wird einem nix. Meine Methode, die das Zusi-LZB/PZB-Paket auswertet (@Roland bitte wegschauen), ist ca. 900 Zeilen lang. :rolleyes: Da ist halt alles drin, was einfluss auf die LMs und die Textmeldungen hat: PZB, LZB, Zwangsbremsungen, Störschalter, Störungen/Ausfälle, usw.

Grüße
Jens
Zuletzt geändert von Jens Haupert am 14.07.2017 16:40:45, insgesamt 1-mal geändert.

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

Re: Der Ardunio und direkte Ausgaben vom ZusiServer über TCP

#227 Beitrag von F. Schn. »

@Carsten: Bist du dir sicher, das der von Oli und Jens vorgeschlagene Weg sinnig ist? Wäre es nicht sinnvoller, wie bei SST die Zustände "ein, aus, blinkend" zu übertragen?

Benutzeravatar
Oliver Lamm
Beiträge: 3073
Registriert: 04.01.2002 15:02:17
Aktuelle Projekte: Aachen - Neuss für Zusi3
Wohnort: Essen
Kontaktdaten:

Re: Der Ardunio und direkte Ausgaben vom ZusiServer über TCP

#228 Beitrag von Oliver Lamm »

Der Weg ist nicht sinnig ... er ist unschön aber der einzige derzeit gangbare Weg.
Ich habe schon lange nicht mehr einen solchen Spaghetti-Code zur Auswertung eines Protokolles geschrieben.

Oli
Oliver Lamm
mail(AT)oliverlamm(DOT)de

Benutzeravatar
Michael_Poschmann
Beiträge: 19429
Registriert: 05.11.2001 15:11:18
Aktuelle Projekte: Finalisierung Großraum Hagen
Wohnort: Str.Km "1,6" der Oberen Ruhrtalbahn (DB-Str. 2550)

Re: Der Ardunio und direkte Ausgaben vom ZusiServer über TCP

#229 Beitrag von Michael_Poschmann »

Vielleicht ergibt sich ja hier mal die Gelegenheit, auf der Zusi-Schnittstellenseite aufzuräumen und Altlasten zu beseitigen. Möglicherweise lösen sich dabei dann auch einige seit gefühlten Ewigkeiten aktenkundige Fehler auf (Angleicher-Bug, H-Brems-Fehler etc.). Sicherlich steht das nicht auf Prio 1, aber es bleibt zu hoffen, dass es das Interface irgendwann mal auf die Agenda schafft. Bis dahin heißt es Zähne zusammenbeißen, improvisieren und mit den Fehlern leben.

Unseren Enkeln werden wird dann stolz berichten können, zur "Carbonara-Fraktion" von Zusi gehört zu haben ;)

Grüße
Michael

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

Re: Der Ardunio und direkte Ausgaben vom ZusiServer über TCP

#230 Beitrag von Carsten Hölscher »

Wenn der Modus von LM fehlt, dann nur weil es bisher niemand brauchte, das kann ich gelegentlich mal nachrüsten.
Das System ist von der Grundfunktion ausgehend nach und nach um diverse Funktionen (Störschalter usw. usw.) erweitert worden und es ist immer das dazugekommen, was Jens für ZD brauchte, um die neue Funktion sauber erkennen zu können. Mit dem PZB-Wissen von heute würde ich das vermutlich etwas anders gestalten.

Carsten

HolgerS218
Beiträge: 3
Registriert: 28.02.2017 13:05:07
Aktuelle Projekte: Bau eines Fahrpultes
Wohnort: Solling

Re: Der Ardunio und direkte Ausgaben vom ZusiServer über TCP

#231 Beitrag von HolgerS218 »

Hallo zusammen,

dank eurer Skripte habe auch ich nun die ansteuerung von Leuchtmeldern über den Arduino hingbekommen.
Beim einfügen der entsprechenden Befehle für Schrittmotoren und/oder Drehspulen hört es dann bei mir aber auch schon auf.

Hat jemand evtl. ein funktionsfähiges Skript mit dem man Schrittmotoren und/oder Drehspulen ansteuern kann?

Benutzeravatar
Arne aus dem Norden
Beiträge: 670
Registriert: 25.12.2011 14:28:21
Aktuelle Projekte: Fahr/Bremshebel im Selbstbau
Wohnort: Str.Km "6,8" der Kiel-Schönberger Eisenbahn (DB-Str. 9107)

Re: Der Ardunio und direkte Ausgaben vom ZusiServer über TCP

#232 Beitrag von Arne aus dem Norden »

HolgerS218 hat geschrieben: Hat jemand evtl. ein funktionsfähiges Skript mit dem man Schrittmotoren und/oder Drehspulen ansteuern kann?
Moin,

vorab: das du mit solchen Verbrauchern ohne Verstärkerschaltung sehr schnell die Grenzen der Belastbarkeit des Arduinos erreichst ist dir klar?
Es gibt wohl bei z.B. Deuta Meßwerke die sich gerade noch am den Analogpins direkt betreiben lassen, in so einem Fall reicht ein einfaches analogWrite(); mit dem Wert auf den gewünschten (PWM-fähigen) Pin. https://www.arduino.cc/reference/en/lan ... alogwrite/" target="_blank
Das Problem ist höchstens die Kalibrierung auf das entsprechende Gerät, hier dürfte kaum ein vohandenes Script 1zu1 passen.

Bei den Schrittmotoren wird es etwas komplexer. Da sind zum einen die Miniaturschrittmotoren wie z.B. Switec X27, die lassen sich noch direkt am Arduino betreiben. Für alle größeren wirst du externe Treiberbausteine brauchen. Die Verwendung von fertigen Bibliotheken macht dann Sinn, ist aber von dem verwendeten Motor oder Treiber abhängig. Ich hatte zuletzt die X25 Library verwendet ( https://github.com/clearwater/SwitecX25" target="_blank , die machte aber irgendwann in den letzten Arduino-IDEs Probleme). Je nach verwendeter Motorgröße und Treiber gibt es dann unterschiedliche Versionen der Ansteuerung (Spulen direkt bzw. über Verstärker wie H-Brücken oder Takt/Richtungssignale auf einen Treiber) und unterschiedliche Arten der Referenzierung. Das wird sich vermutlich deswegen nicht wirklich in einem funktionsfähigen Skript hier darstellen lassen, denn das passt immer nur auf genau die gewählte Motor/Treibervariante...
Mein Baubericht von der echten Bahn zum Schönberger Strand:
https://www.facebook.com/Hein-Sch%C3%B6 ... 601976323/

HolgerS218
Beiträge: 3
Registriert: 28.02.2017 13:05:07
Aktuelle Projekte: Bau eines Fahrpultes
Wohnort: Solling

Re: Der Ardunio und direkte Ausgaben vom ZusiServer über TCP

#233 Beitrag von HolgerS218 »

Guten Morgen,

das man wahrscheinlich eine Verstärkerschaltung benötigen wird war mir schon klar.
ich dachte mur das es vieleicht ein Script gibt, dass ich nur noch ein wenig bearbeiten muss damit es bei mir funktioniert.?

Danke

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

Re: Der Ardunio und direkte Ausgaben vom ZusiServer über TCP

#234 Beitrag von nonesense »

Ich habe ja die stoppschildförmige Srittmotorplatine für die Manometer entworfen.
Die ist mit einem Arduiniocode versehen. Ansteuerung ist allerdings via I²C-Bus. Müsstest dir also die relevanten teile rauskopieren.

Gruß
Jens

Gero
Beiträge: 71
Registriert: 30.04.2014 12:49:56
Aktuelle Projekte: Fahrpult Wittenberger / IC Steuerwagen

Re: Der Ardunio und direkte Ausgaben vom ZusiServer über TCP

#235 Beitrag von Gero »

HolgerS218 hat geschrieben:Hat jemand evtl. ein funktionsfähiges Skript mit dem man Schrittmotoren und/oder Drehspulen ansteuern kann?
Moin!

Ja, für Drehspulinstrumente hab ich eine relativ umfangreiche Lösung mit LZB, Kalibrierung, 16bit Auflösung und Anpassung des Verhaltens der Anzeigen, weil Steuerwagenanwendung.

Die ist aber so umfangreich, dass die vom Mega über I2C die Daten auf ein eigenes Board geschickt bekommt und das Board ein Teensy sein sollte.

Wenn da an etwas Interesse besteht kann ich gerne ein paar Dinge erklären.
Ist halt nicht die Minimallösung. Vielleicht interessieren dich ein paar Dinge in meinem Wittenberger-Thread.

Beim Thema wenig bearbeiten gibts im Fahrpultmilieu leider wenig, weil jeder immer eine Individuallösung hat und es keinen Musterweg zum Fahrpult gibt. Die Skripte hier sind eine Ausnahme davon

Gero
Zuletzt geändert von Gero am 07.04.2018 21:17:16, insgesamt 1-mal geändert.

Gero
Beiträge: 71
Registriert: 30.04.2014 12:49:56
Aktuelle Projekte: Fahrpult Wittenberger / IC Steuerwagen

Re: Der Ardunio und direkte Ausgaben vom ZusiServer über TCP

#236 Beitrag von Gero »

Moin, stehe auf dem Schlauch:

Bild

Wo soll der Knoten da noch hingehen? Warum wird der Prüflauf überhaupt noch weiter als Knoten ausgegeben? Hätte da nicht sowas wie

Code: Alles auswählen

00 28, Byte, Status LZB Funktionsüberprüfung
0 = kein Prüflauf
1 = Alle LM blinken
2 = Fgr. Anzeigen
3 = B an, Ü aus
4 = Zwangsbremsung
gereicht?

Ich verstehe nicht, wie ich das weiter auswerten soll. Auf Ebene / Tabellenspalte 5 bin ich schon gekommen, aber wie geht es weiter? Folgt nochmal ein Knoten mit Werten, die nicht in der Tabelle aufgeführt sind? Das wird seinen Sinn haben - ich steige aber einfach nicht durch.

Gero
Zuletzt geändert von Gero am 17.04.2018 19:25:00, insgesamt 2-mal geändert.

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

Re: Der Ardunio und direkte Ausgaben vom ZusiServer über TCP

#237 Beitrag von Carsten Hölscher »

Das ist ales Reserve gedacht, falls man mal systemspezifisch noch weitere Parameter übergeben möchte.

Carsten

Gero
Beiträge: 71
Registriert: 30.04.2014 12:49:56
Aktuelle Projekte: Fahrpult Wittenberger / IC Steuerwagen

Re: Der Ardunio und direkte Ausgaben vom ZusiServer über TCP

#238 Beitrag von Gero »

Wird diese Funktion bereits genutzt oder ist sie eine Reserve für zukünftige Veränderungen im LZB-Betrieb?

Gero

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

Re: Der Ardunio und direkte Ausgaben vom ZusiServer über TCP

#239 Beitrag von Carsten Hölscher »

Das sollte funktionieren.

Carsten

Benutzeravatar
Formsignal
Beiträge: 115
Registriert: 13.11.2018 23:34:14

Re: Der Ardunio und direkte Ausgaben vom ZusiServer über TCP

#240 Beitrag von Formsignal »

Seltsames Problem:

Mit einem Arduino MEGA funktioniert die Verbindung zu Zusi einwandfrei. Da ich aus Platzgründen einen Arduino UNO einbauen wollte, hab ich den selben Code auf einen solchen geladen. Lediglich die

Code: Alles auswählen

 Ethernet.begin(mac, ip);                 // Zuordnung von IP und MAC an das Shield
 Serial.begin(115200);                    // serielle Schnittstelle am USB Anschluss für Debugging
 //Serial1.begin(19200);                    // serielle Ausgabe an den nächsten µC (falls vorhanden) für die Zeiger und Lampenausgabe
 //Serial2.begin(19200);                    // serielle Ausgabe an den nächsten µC (falls vorhanden) für die Zeiger und Lampenausgabe
 //Serial3.begin(19200);                    // serielle Ausgabe an den nächsten µC (falls vorhanden) für die Zeiger und Lampenausgabe
Serial1, Serial2, Serial3 musste ich auskommentieren, da ansonsten nicht compiled werden kann.

Der UNO will sich aber nicht mit Zusi3 TCP verbinden, die Konsole schreibt nur:

Code: Alles auswählen

Client gestartet, warte auf Netzwerk
verbinden...
Verbindung Fehlgeschlagen
Woran könnte es liegen, muss etwas für den UNO geändert werden?
Windows Firewall hab ich zum testen auch mal ausgeschaltet.

EDIT: Fehler gefunden. Ich hatte noch Pins vom MEGA im Code angesprochen, die der UNO ja gar nicht besitzt.
Zuletzt geändert von Formsignal am 09.07.2019 20:44:30, insgesamt 1-mal geändert.
Viele Grüße,
Franz aká Formsignal

Antworten