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
Arne aus dem Norden
Beiträge: 721
Registriert: 25.12.2011 14:28:21
Aktuelle Projekte: Fahrpult VT628/VS928 - Versuch eines Nachbaus
Wohnort: Str.Km "6,8" der Kiel-Schönberger Eisenbahn (DB-Str. 9107)

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

#161 Beitrag von Arne aus dem Norden »

L-Vosje hat geschrieben:Moin,

ich hoffe dass jemand uns helfen kann mit dem folgenden problem.

x0023 (35) LM Uhrzeit (digital).....Ergebnis--->nicht brauchbar
x004F (79) Beschleunigung x.........Ergebnis--->nicht brauchbar
x0050 (80) Beschleunigung y.........Ergebnis--->vielleicht brauchbar
x0052 (82) Drehbeschleunigung.......Ergebnis--->nicht brauchbar
x0053 (83) Drehbeschleunigung.......Ergebnis--->nicht brauchbar
Moin,

seltsam, bin ich auf dem völlig falschen Dampfer oder warum ist nach meinen Listen
x0023 (35) LM LZB Prüfen (ohne Funktion)
x004F (79) LM GNT 'G'
x0050 (80) LM GNT 'Ü'
x0052 (82) LM GNT 'S'
x0053 (83) Hintergrundbild (ohne Funktion)

Z.B. Uhrzeit digital sollte doch eigentlich auf x0032 (50) liegen und Datentyp double sein, wo kommen deine IDs her?
Abgesehen mal davon sollten die ID 10, 11 und 12 Stunde, Minuten und Sekunde als Singlewert liefern, da müßte man nichtmal was umrechnen...
Zuletzt geändert von Arne aus dem Norden am 16.05.2016 13:59:50, insgesamt 1-mal geändert.
Mein Baubericht von der echten Bahn zum Schönberger Strand:
https://www.facebook.com/Hein-Sch%C3%B6 ... 601976323/

Benutzeravatar
Arne aus dem Norden
Beiträge: 721
Registriert: 25.12.2011 14:28:21
Aktuelle Projekte: Fahrpult VT628/VS928 - Versuch eines Nachbaus
Wohnort: Str.Km "6,8" der Kiel-Schönberger Eisenbahn (DB-Str. 9107)

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

#162 Beitrag von Arne aus dem Norden »

Ach, alles klar jetzt sehe ich es.
Das sind die Zusi 3 IDs...
Ihr arbeitet also mit dem Converter und dem Zusi2 Script (um das es hier im Thread ja geht)?

Dann sieht es so aus, als wenn Ihr das mit den Zusi 3 IDs versucht. Einige IDs sind identisch, das sind die wo es läuft. Bei den anderen kommt Quatsch raus, weil auf diesem Weg (wenn es so ist) mit den Zusi 2 IDs abgerufen werden müsste.
Zuletzt geändert von Arne aus dem Norden am 16.05.2016 14:32:54, insgesamt 1-mal geändert.
Mein Baubericht von der echten Bahn zum Schönberger Strand:
https://www.facebook.com/Hein-Sch%C3%B6 ... 601976323/

L-Vosje
Beiträge: 19
Registriert: 01.03.2016 23:07:40

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

#163 Beitrag von L-Vosje »

@Arne aus dem Norden,
Nein, den Konverter verwenden wir nicht weil die diese datei x,y,z (Dreh) Beschleunigung nicht unterstützt.
Es sieht nicht aus das die in Zukunft der Fall sein wird. ( Andreas Karg ??? )
Wir haben dem Arduino über Ethernet mit dem server von Zusi3 verbunden also sollte noch die IDs klopfen scheint mir.
Die id's haben wir aus das dokumentation von Zusi3.

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

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

#164 Beitrag von F. Schn. »

Zusi 3 hat nicht nur neue IDs sondern auch ein neues Protokoll. Wenn du das Zusi-3-Protokoll direkt unterstützen willst, musst du das Protokoll erst mal in den Arduino-Code einprogrammieren.

Was ich aber machen kann, ist den Konverter so anzupassen, dass er im Zusi-2-Potokoll auf neuen Ids die x,y,z-Beschleunigung unterstützt. Wenn du mir sagst, welche IDs du alles benötigst, kann ich das auch mal schnell für alle einbauen.
Diese Signatur möchte folgendes bekannter machen: ZusiWiki · ZusiSK: Streckenprojekte · YouTube: Objektbau für Zusi · euirc: Zusi-Chat

L-Vosje
Beiträge: 19
Registriert: 01.03.2016 23:07:40

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

#165 Beitrag von L-Vosje »

Sehr nett von Ihnen, danke dafür.

Was wir brauchen ist;

Beschleunigung x
Beschleunigung y
Drehbeschleunigung x ist aber neu vor Zusi2, geht das?
Drehbeschleunigung y auch neu vor Zusi2.
Digitaluhr
LmZugart
Lm Befehl
Lm 500 Hz
Lm 1000 Hz


Beschleunigung x
Beschleunigung y
Drehbeschleunigung x
Drehbeschleunigung y

Alle diese beschleunigungen datei ist das wichtigste da wir den Rest, möglicherweise, mit dem Arduino tun können.
Noch einmal vielen Dank. :)

Benutzeravatar
Arne aus dem Norden
Beiträge: 721
Registriert: 25.12.2011 14:28:21
Aktuelle Projekte: Fahrpult VT628/VS928 - Versuch eines Nachbaus
Wohnort: Str.Km "6,8" der Kiel-Schönberger Eisenbahn (DB-Str. 9107)

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

#166 Beitrag von Arne aus dem Norden »

F. Schn. hat geschrieben:Wenn du das Zusi-3-Protokoll direkt unterstützen willst, musst du das Protokoll erst mal in den Arduino-Code einprogrammieren.
@F.Schn.: So wie ich ihn jetzt verstehe, hat er genau das gemacht...

@L-Vosje: vielleicht würde es helfen, wenn du dein komplettes Script hier mal zum Download reinstellen würdest...
Mein Baubericht von der echten Bahn zum Schönberger Strand:
https://www.facebook.com/Hein-Sch%C3%B6 ... 601976323/

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

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

#167 Beitrag von F. Schn. »

Hm, ich kapiere die neuen Beschleunigungswerte nicht so ganz. Kann man die x-Beschleunigung auf
<Command ID="2657" Name="Längsbeschleunigung" Type="Single" />
und die y-Beschleungigung auf
<Command ID="2658" Name="Querbeschleunigung" Type="Single" />
legen?
Dann blieben nur noch die Rotationsbeschleunigungen als neue Beschleunigungen übrig. Bei einer Testfahrt brachten die jedoch nur Grundrauschen.

Unabhängig davon bleibt aber Arnes Frage natürlich bestehen: Hast du das Z3-Protokoll nachgebaut (dann muss es eig. auch ohne Converter gehen) oder nur im Z2-Protokoll den Port geändert (dann ist es verwundetlich, dass überhaupt etwas geklappt hat)?
Diese Signatur möchte folgendes bekannter machen: ZusiWiki · ZusiSK: Streckenprojekte · YouTube: Objektbau für Zusi · euirc: Zusi-Chat

L-Vosje
Beiträge: 19
Registriert: 01.03.2016 23:07:40

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

#168 Beitrag von L-Vosje »

@F.Schn.: So wie ich ihn jetzt verstehe, hat er genau das gemacht...
Das ist richtig, wir erhalten alle datei von Zusi3.
.
@L-Vosje: vielleicht würde es helfen, wenn du dein komplettes Script hier mal zum Download reinstellen würdest...
Werde ich machen.

L-Vosje
Beiträge: 19
Registriert: 01.03.2016 23:07:40

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

#169 Beitrag von L-Vosje »

@L-Vosje: vielleicht würde es helfen, wenn du dein komplettes Script hier mal zum Download reinstellen würdest...
Hier ist das vollständige Skript für arduino mit ethernet2

http://www.grelpo.nl/html/arduino_script.html

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

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

#170 Beitrag von F. Schn. »

Hi,

ok, du hast also tatsächlich einen Code für das Zusi-3-Protokoll geschrieben.

Ich habe mich mal ein bisschen mit deinem Code beschäftigt, aber so ganz klar ist mir die Struktur noch nicht. Werde mir das daher die nächsten Tage noch mal anschauen.

Wenn ich das richtig sehe, fragst du dort nur die Geschwindigkeit und die x-Beschleunigung ab, die anderen Beschleunigungen und vor allem die Uhrzeit sehe ich jetzt nicht, richtig?



OT: Ich hatte selbst mal eine Überlegung für die void loop gemacht, ich habe das mal auf deinen Fall angepasst:

Code: Alles auswählen

union {
  byte b[4];
  int i;
} dataLng;

union {
  byte b[2];
  int16_t i;
} dataGroup;

int ebene = 0;
int16_t ebene1Status = 0;
int16_t ebene2Status = 0;
int16_t ebene3Status = 0;

union {
  byte b[4];
  float f;
  int i;
} nutzdata;

#define MAX_NUTZDATA 4

void loop() {
 if (client.available()) {
	dataLng.b[0] = client.read();
	dataLng.b[1] = client.read();
	dataLng.b[2] = client.read();
	dataLng.b[3] = client.read();
	
	if (dataLng.i == 0) { //BEGIN NODE
		n++;
		dataGroup.b[0] = client.read();
		dataGroup.b[1] = client.read();
		if (ebene == 1) {
			ebene1Status = dataGroup.i;
		} else if (ebene == 2) {
			ebene2Status = dataGroup.i;
		} else if (ebene == 3) {
			ebene3Status = dataGroup.i;
		}
	} else if (dataLng.i == -1) { //END NODE
		n--;
	} else { //ATTRIBUTE
		dataGroup.b[0] = client.read();
		dataGroup.b[1] = client.read();
		nutzdata.i = 0; //CLEAR
		for(int i = 0; i < dataLng.i - 2; i++) {
			byte b = client.read();
			if (i < MAX_NUTZDATA) {
				nutzdata.b[i] = b;
			}
		}
		
		//AUSWERTUNG
		if ((ebene >= 1) && (ebene1Status == 0x0001)) { //VERBINDUNGSAUFBAU
		} else if ((ebene >= 1) && (ebene1Status == 0x0002)) { //FAHRPULT
			if ((ebene >= 2) && (ebene2Status == 0x000A)) { //FST-DATA
				if ((ebene >= 3) && (ebene3Status == 0x0022)) { //NBÜ-DATA
				} else if ((ebene >= 3) && (ebene3Status == 0x0064)) { //SIFA
					if (ebene == 3) {
						if (dataGroup.i == 0x0002) { // Status Sifa-Leuchtmelder
							if (nutzdata.b[0] == 1) Serial.println("sifa aan");
							if (nutzdata.b[0] == 0) Serial.println("sifa uit");
						} else if (dataGroup.i == 0x0003) { // Status Sifa-Hupe
							if (nutzdata.b[0] == 2) Serial.println("sifa dwangrem aan");
							if (nutzdata.b[0] == 1) Serial.println("sifa toeter aan");
							if (nutzdata.b[0] == 0) Serial.println("sifa toeter uit");
						}
					}
				} else if ((ebene >= 3) && (ebene3Status == 0x0065)) { //PZB
				} else if ((ebene >= 3) && (ebene3Status == 0x0066)) { //DOORS
				} else if (ebene == 2) {
					if (dataGroup.i == 0x0001) { // Geschwindigkeit m/s
						byte v = nutzdata.f * 3.6;
						Serial3.print("A");
						Serial3.println(v);
					} else if (dataGroup.i == 0x004F) { // Beschleunigung x m/s^2
						byte vv = snelheid * 3000;
						Serial2.println(vv);
					}
				}
			}
		}
	}
 }
 // if the server's disconnected, stop the client:
 if (!client.connected()) {
  Serial.println();
  Serial.println("verbinding verbroken");
  client.stop();
  // do nothing:
  while (true);
 }
}
Das ist jetzt kein Kompilierfähiger Code sondern eher ein paar Gedanken. Wenn ihr lust habt, könnt ihr das ja mal Kompilierfähig herrichten und mal testen.[/size]

Gruß
F. Schn.
Zuletzt geändert von F. Schn. am 17.05.2016 19:00:38, insgesamt 1-mal geändert.
Diese Signatur möchte folgendes bekannter machen: ZusiWiki · ZusiSK: Streckenprojekte · YouTube: Objektbau für Zusi · euirc: Zusi-Chat

L-Vosje
Beiträge: 19
Registriert: 01.03.2016 23:07:40

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

#171 Beitrag von L-Vosje »

Wenn ich das richtig sehe, fragst du dort nur die Geschwindigkeit und die x-Beschleunigung ab, die anderen Beschleunigungen und vor allem die Uhrzeit sehe ich jetzt nicht, richtig?
Ja , das ist richtig, es ist noch in anfang.
Das ist jetzt kein Kompilierfähiger Code sondern eher ein paar Gedanken. Wenn ihr lust habt, könnt ihr das ja mal Kompilierfähig herrichten und mal testen.
wir werden es versuchen.
Zuletzt geändert von L-Vosje am 17.05.2016 20:50:27, insgesamt 2-mal geändert.

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

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

#172 Beitrag von F. Schn. »

L-Vosje hat geschrieben:Ja , das ist richtig, es ist noch in anfang.
Ok, was ist dann das Problem mit der Uhrzeit? Das sieht in meinen Augen alles passend aus?
Diese Signatur möchte folgendes bekannter machen: ZusiWiki · ZusiSK: Streckenprojekte · YouTube: Objektbau für Zusi · euirc: Zusi-Chat

L-Vosje
Beiträge: 19
Registriert: 01.03.2016 23:07:40

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

#173 Beitrag von L-Vosje »

Das Problem ist die Zahl, die herauskommt.
Ich sehe nicht, wie ich zb. von 0.6045601844 ein uhrzeit sol machen.
0x50 / 0x52 / ox53 sind im praktischen Sinne nicht verwendbar.
0x4F ist in Ordnung.
Wir haben zuvor Beschleunigung-y, jetzt 0x50, für die Bewegung verwendet für unsere Führerstand in Zusi2.

HEX
23 ----> 75/C4/1A/63/0.6045601844
23 ----> A/E2/1A/63/0.6050115585
23 ----> 61/0/1B/63/0.6054745197
23 ----> 34/1D/1B/63/0.6059143543
23 ----> 82/38/1B/63/0.6063309669
23 ----> 93/54/1B/63/0.6067592620
23 ----> 28/72/1B/63/0.6072106361
23 ----> 77/8D/1B/63/0.6076273441
1 ----> 26/77/35/190/-0.1772123336
2 ----> 0/0/A0/64/5.0000000000
3 ----> 0/0/0/0/0.0000000000
4 ----> 90/AF/F/65/8.9803619384
D ----> 0/0/0/0/0.0000000000
E ----> 0/60/6A/70/15000.0000000000
13 ----> 0/0/0/0/0.0000000000
23 ----> FB/8E/1B/63/0.6076504707
4F ----> B7/80/C0/189/-0.0939955043
50 ----> 0/0/B0/187/-0.0053710937
52 ----> 0/0/0/0/0.0000000000
53 ----> 0/8/1D/54/0.0000023399
1 ----> D/7F/A7/190/-0.3271411895
4 ----> 5/0/10/65/9.0000047683
4F ----> CA/7E/C0/189/-0.0939918327
50 ----> D/E/21/58/0.0006143756
53 ----> 4E/E5/7A/179/-0.0000000584
1 ----> 6E/2D/BF/188/-0.0233370923
4 ----> FF/FF/F/65/8.9999990463
23 ----> BD/8F/1B/63/0.6076620101

usw. usw.
Zuletzt geändert von L-Vosje am 20.05.2016 11:18:41, insgesamt 1-mal geändert.

Benutzeravatar
Arndt
Beiträge: 78
Registriert: 05.06.2011 14:24:18
Wohnort: Windeck Herchen

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

#174 Beitrag von Arndt »

Soweit ich weiß wird die Uhrzeit als Bruch dargestellt. Das heißt z.B.:
0,25 ist 06:00 Uhr
0,50 ist 12:00 Uhr
0,75 ist 18:00 Uhr
Und so weiter. In C gibt es eine Klasse, die das direkt umrechnen kann. Vermutlich gibt es in anderen Programmiersprachen auch fertige Klassen.

Benutzeravatar
Jeff Becker
Beiträge: 364
Registriert: 16.05.2015 10:26:52
Aktuelle Projekte: Fahrpultbau, mich mit Blender anfreunden und über eine CFL Strecke für Zusi träumen...

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

#175 Beitrag von Jeff Becker »

Hallo nachdem ich es geschafft habe dass das Arduino mit den Zusi3 Server funktioniert, will ich nun die Druckluftanzeige und meinen Tacho in betrieb nehmen. Das mit den Leuchtelder funktioniert auch und ich habe es auch schnell gelernt wie man noch welche hinzufügen kann. Die Druckluftanzeige und der Tacho sollen mit einem Schrittmotor funktionieren. Meine Frage nun:

Wie bekomme ich es hin dass dies funktioniert?

Mfg Jeff
Mein Projekt: Mein eigenes Fahrpult. Schaut doch mal vorbei
https://m.youtube.com/channel/UCrpDMup3YWCyJkPzLzLuf2w

L-Vosje
Beiträge: 19
Registriert: 01.03.2016 23:07:40

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

#176 Beitrag von L-Vosje »

VT24 hat geschrieben:Soweit ich weiß wird die Uhrzeit als Bruch dargestellt. Das heißt z.B.:
0,25 ist 06:00 Uhr
0,50 ist 12:00 Uhr
0,75 ist 18:00 Uhr
Und so weiter. In C gibt es eine Klasse, die das direkt umrechnen kann. Vermutlich gibt es in anderen Programmiersprachen auch fertige Klassen.

Ich habe es versucht, es funktioniert, Vielen dank.

Dann funktioniert unser Programm gut
Und das bedeutet dass 0x50 0x52 0x53 bedauerlicherweise nicht nützlich sind für uns. ;(

Ich möchte allen danken.

L-Vosje
Beiträge: 19
Registriert: 01.03.2016 23:07:40

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

#177 Beitrag von L-Vosje »

Jeff Becker hat geschrieben:Hallo nachdem ich es geschafft habe dass das Arduino mit den Zusi3 Server funktioniert, will ich nun die Druckluftanzeige und meinen Tacho in betrieb nehmen. Das mit den Leuchtelder funktioniert auch und ich habe es auch schnell gelernt wie man noch welche hinzufügen kann. Die Druckluftanzeige und der Tacho sollen mit einem Schrittmotor funktionieren. Meine Frage nun:

Wie bekomme ich es hin dass dies funktioniert?

Mfg Jeff
Wir haben das mit servo's gemacht, für die arduino's gibt es shields für die Kontrolle von Schrittmotoren.
Am beste ein arduino für kommunikation mit Zusi3 und ein zweite für die schrittmotoren und der rest.


Unsere Struktur.

Bild

Benutzeravatar
Arne aus dem Norden
Beiträge: 721
Registriert: 25.12.2011 14:28:21
Aktuelle Projekte: Fahrpult VT628/VS928 - Versuch eines Nachbaus
Wohnort: Str.Km "6,8" der Kiel-Schönberger Eisenbahn (DB-Str. 9107)

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

#178 Beitrag von Arne aus dem Norden »

L-Vosje hat geschrieben:Wir haben das mit servo's gemacht, für die arduino's gibt es shields für die Kontrolle von Schrittmotoren.
Am beste ein arduino für kommunikation mit Zusi3 und ein zweite für die schrittmotoren und der rest.
Hallo,

zur Druckluftanzeige: Servos sind eher zweite Wahl wegen des meistens zu geringen Stellweges. Optimum ist eigentlich ein Schrittmotor. Treiber sind nicht nötig, wenn man Motoren mit sehr geringer Leistung wählt.
Für das Thema gibt es einen eigenen Thread: http://forum.zusi.de/viewtopic.php?f=25 ... &start=140" target="_blank
Beispiel: https://vimeo.com/145046850" target="_blank
Die Einbindung war mittels der X25 Library für den Arduino bislang eher Kinderkram, allerdings läßt sich die Library mit der aktuellen Arduino IDE derzeit anscheinend nicht mehr kompilieren.

zum Tacho: als erstes die Stromaufnahme des Gerätes testen. Es gibt da starke Unterschiede, aber manch moderner Tacho von Deuta bewegt sich schon zwischen 3 und 5 mA und kann dann direkt an den analogen Ausgang des Arduino betrieben werden: https://vimeo.com/138329853" target="_blank
Zuletzt geändert von Arne aus dem Norden am 20.05.2016 13:40:34, insgesamt 2-mal geändert.
Mein Baubericht von der echten Bahn zum Schönberger Strand:
https://www.facebook.com/Hein-Sch%C3%B6 ... 601976323/

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

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

#179 Beitrag von F. Schn. »

@L-Vosje: Ich bekomme Werte in der selben Größenordnung für die Beschleunigungen. Vielleicht hat ja jemand Lust, diese Werte auf Plausiblität zu prüfen. Johannes?
Diese Signatur möchte folgendes bekannter machen: ZusiWiki · ZusiSK: Streckenprojekte · YouTube: Objektbau für Zusi · euirc: Zusi-Chat

L-Vosje
Beiträge: 19
Registriert: 01.03.2016 23:07:40

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

#180 Beitrag von L-Vosje »

F. Schn. hat geschrieben:@L-Vosje: Ich bekomme Werte in der selben Größenordnung für die Beschleunigungen. Vielleicht hat ja jemand Lust, diese Werte auf Plausiblität zu prüfen. Johannes?
wir verwenden x004F (79) Beschleunigung X (werte * 1000)(werte as float) für de- und acceleration.
x004F (79) Beschleunigung X stimmt.

wir verwenden x004C (76) Gleiskrümmung (werte * 1000)(werte as float) statt x0050 (80) Beschleunigung Y

ist natürlich abhängig von der situation, Wir verwenden es um die fuhrerstand zu bewegen aber 0x50 / 0x52 / 0x53 sind für uns auch nicht verwendbar, Vielleicht ein Fehler in zusi3.

Leider ist auch die x004C (76) Gleiskrümmung nicht nutzbar weil die Richtung, in die Info oft falsch ist
Zuletzt geändert von L-Vosje am 21.05.2016 15:02:01, insgesamt 1-mal geändert.

Antworten