Seite 12 von 18

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

Verfasst: 12.07.2017 21:36:53
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

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

Verfasst: 13.07.2017 09:06:01
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

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

Verfasst: 13.07.2017 19:44:11
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

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

Verfasst: 14.07.2017 07:32:25
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

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

Verfasst: 14.07.2017 16:10:53
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

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

Verfasst: 14.07.2017 16:40:01
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

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

Verfasst: 14.07.2017 18:24:37
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?

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

Verfasst: 15.07.2017 10:52:18
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

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

Verfasst: 15.07.2017 14:42:21
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

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

Verfasst: 15.07.2017 17:14:58
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

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

Verfasst: 06.04.2018 18:26:16
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?

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

Verfasst: 07.04.2018 08:51:46
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...

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

Verfasst: 07.04.2018 09:14:13
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

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

Verfasst: 07.04.2018 15:26:07
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

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

Verfasst: 07.04.2018 21:14:39
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

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

Verfasst: 17.04.2018 19:22:39
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

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

Verfasst: 17.04.2018 21:44:38
von Carsten Hölscher
Das ist ales Reserve gedacht, falls man mal systemspezifisch noch weitere Parameter übergeben möchte.

Carsten

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

Verfasst: 24.04.2018 16:37:26
von Gero
Wird diese Funktion bereits genutzt oder ist sie eine Reserve für zukünftige Veränderungen im LZB-Betrieb?

Gero

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

Verfasst: 24.04.2018 16:47:47
von Carsten Hölscher
Das sollte funktionieren.

Carsten

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

Verfasst: 09.07.2019 20:38:15
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.