Willkommen 

RE: Kommunikation mit der CS2 über CAN-Protokoll

#1 von RHG2 ( gelöscht ) , 25.03.2009 13:28

Hallo liebe Modellbahnkollegen

Bevor ich meine Fragen stelle möchte ich mich kurz vorstellen.
Ich bin in der Steiermark (Südosten Österreichs) zu Hause und ich lese schon seit einiger Zeit im Forum mit und habe auf diese Weise schon etliche Tipps bekommen.

Ich habe derzeit eine großteils analoge Anlage aus M- und im neueren Teil aus K-Gleisen.
Besonders die M-Weichen machen zunehmend Probleme bei der Steuerung durch den PC. Ich möchte daher auf digital (und K-Gleis) umbauen und habe dazu eine kleine Testanlage aufgebaut:

CS2 Software Rev. 1.0.5(3)
Decoder ESU-Switch-Pilot und LDT S-DEC-4-MM, beide mit separater Stellstromversorgung
Rückmeldung LDT RM-DEC-88-Opto und LDT HSI-88-USB

Gesteuert wird über ein eigenes C#-Programm (C# 2008 mit .NET 3.5).
Es kommuniziert über die USB-Schnittstelle mit dem HSI-88-USB und erhält so die Rückmeldungen. Der CS2 werden derzeit nur Befehle erteilt (CAN Befehle über das Ethernet-Kabel und das UDP-Protokoll). Die Antworten der CS2 werden nur mitprotokolliert und nicht ausgewertet.

Folgende Probleme stören mich derzeit noch:

1.) Bei der CS2 muss ich das CAN-Protokoll nach jedem Einschalten neu aktivieren:
- SETUP
- Schraubenschlüssel
- IP
- Häkchen bei "Aktivieren" ausschalten
- OK
- Schraubenschlüssel
- IP
- Häkchen bei "Aktivieren" einschalten
- OK
- CONTROL
Erst dann liest und sendet die CS2 das Protokoll.
Merkt sich die CS2 beim Ausschalten wirklich nicht, dass das CAN-Protokoll gestartet werden soll ?
Oder mache ich da etwas falsch ?

2.) Beim Schalten der Magnetartikel scheint die CS2 etwas unzuverlässig zu sein, insbesondere mit den ESU-Decodern. Schon beim Schalten im CS2-Gleisbild muss man relativ lange warten, bis man z.B. eine Weiche hin und herschalten kann. Die 200 msec laut CAN-Protokoll finde ich ok, aber länger ? Wenn ja, wie lang ?

Mit dem PC über das CAN-Protokoll habe ich bis jetzt folgende Prozedur als zuverlässig gefunden:
Senden des Stellbefehls 5 (FÜNF) x mit je 200 msec Intervall !!
Die CS2 bestätigt zwar jeden Befehl innerhalb von ca. 0.01 sec.
Eine zweite Bestätigung (vom Decoder ??) kommt aber erst nach mehr als einer Sekunde!
Die Prozedur erscheint mir daher eher als "Holzhammer-Methode".

Hier habe ich ein Stück aus dem Protokoll:
Zeit 13 Bytes
20,22 : PC 00 16 03 00 06 00 00 30 00 01 01 00 00 Befehl 1 (Gerät 0, Stellung 1, ein)
20,22 : CS2 00 17 33 10 06 00 00 30 00 01 01 00 00 Antwort 1
20,42 : PC 00 16 03 00 06 00 00 30 00 01 01 00 00 Befehl 2
20,44 : CS2 00 17 33 10 06 00 00 30 00 01 01 00 00 Antwort 2
20,63 : PC 00 16 03 00 06 00 00 30 00 01 01 00 00 Befehl 3
20,63 : CS2 00 17 33 10 06 00 00 30 00 01 01 00 00 Antwort 3
20,83 : PC 00 16 03 00 06 00 00 30 00 01 01 00 00 Befehl 4
20,83 : CS2 00 17 33 10 06 00 00 30 00 01 01 00 00 Antwort 4
21,03 : PC 00 16 03 00 06 00 00 30 00 01 01 00 00 Befehl 5
21,05 : CS2 00 17 33 10 06 00 00 30 00 01 01 00 00 Antwort 5
21,34 : PC 00 16 03 00 06 00 00 30 01 01 01 00 00 Neuer Stellbefehl 1 (Gerät 1, 1, ein)
21,34 : CS2 00 17 33 10 06 00 00 30 01 01 01 00 00 Anwort auf neuen Stellbefehl 1
21,55 : PC 00 16 03 00 06 00 00 30 01 01 01 00 00 usw.
21,55 : CS2 00 17 33 10 06 00 00 30 01 01 01 00 00
21,75 : PC 00 16 03 00 06 00 00 30 01 01 01 00 00
21,77 : CS2 00 17 33 10 06 00 00 30 01 01 01 00 00
21,95 : PC 00 16 03 00 06 00 00 30 01 01 01 00 00
21,97 : CS2 00 17 33 10 06 00 00 30 01 01 01 00 00
22,13 : CS2 00 17 47 11 06 00 30 00 00 01 00 00 00 Zweite Antwort auf ersten Befehl


Hat jemand von Euch damit Erfahrung und eine Idee, wie die Magnetartikel schneller schalten ?
Ich habe jetzt noch parallel zum Gerät 0 am ESU-Decoder zwei LEDs geschaltet. Beim manuellen Schalten an der CS2 sieht man deutlich ca. 200 msec den Schaltstrom. Beim Schalten vom PC mit nur einer Wiederholung sieht man meist gar nichts. Bei 5 Wiederholungen habe ich den Eindruck dass zumindest 1x der Schaltimpuls kommt. Kann es sein, dass der ESU-Decoder bei fahrendem Zug den Befehl nicht immer richtig erkennt ?

Danke im Voraus für Eure Antworten und schöne Grüße aus dem sonnigen Süden.

Wolfgang


RHG2

RE: Kommunikation mit der CS2 über CAN-Protokoll

#2 von sd ( gelöscht ) , 25.03.2009 22:12

Hallo Wolfgang,

1) Die Einstellungen sollten eigentlich gespeichert werden. Allerdings wird das Netzwerk erst ganz am Schluss der Hochlaufphase aktiviert. Direkt nach dem Hochfahren ist daher oft kein Netz verfügbar, das sollte aber innerhalb einer Minute aktiv werden.
Ansonsten musst du die CS2 mal neu starten, dann geht es meist. Die Netzwerkanbindung ist noch nicht hundertprozentig stabil.

2) So wird es eigentlich nicht gemacht. Die Magnetartikel werden üblich über zwei Befehle angesteuert, den Strom-Ein-Befehl und nach einer kurzen Pause (meist 200 ms) der Strom-Aus-Befehl.
Kommt kein Strom-Aus-Befehl, schaltet die CS2 nach einem Timeout von ca. 1 Sekunde den Strom selbst aus. Wenn dagegen mehrere Strom-Ein-Befehle in kurzen Abständen hintereinander kommen, wird der Timeout immer weiter hinausgezögert.

In deinem Beispiel wird fünfmal alle 200 ms ein Strom-Ein-Befehl auf die erste Weiche gesendet. Jeder verschiebt den Timeout weiter nach hinten. Daher wird eine Sekunde nach Befehl 5 der Strom von der CS2 selbst ausgeschaltet. Der letzte Befehl (bei 22,13) ist die Quittung dieses Vorgangs.

Du hast also insgesamt 2 Sekunden lang die Weiche befeuert. In dieser Zeit sollte selbst der schwerste Antrieb schalten (selbst alte M-Antriebe brauchen normalerweise nie länger als 500 ms).

Wenn die Weiche trotzdem nicht schaltet, hast du möglicherweise die falsche Adresse geschaltet. Du müsstest mit deinem Programm eigentlich auch die Schaltbefehle empfangen, wenn du direkt an der CS2 schaltest. Genau diese Befehle muss dein Programm auch senden.

Gruß, Stefan


sd

RE: Kommunikation mit der CS2 über CAN-Protokoll

#3 von Sieloff , 26.03.2009 09:37

Hallo Wolfgang,

Noch 2 Bemerkungen von mir.

zu 1) Das passiert bei mir auch, und zwar immer dann, wenn ich mehrere Kurzschlüsse auf der Anlage hatte. Die CS2 scheint ihren Status dann nicht immer sauber abzuspeichern. Wenn im Betrieb keine Kurzschlüsse auftreten funktioniert es beim Neustart immer sofort. Genauer untersucht habe ich es aber nicht.

zu 2) Du solltest darauf achten, immer nur eine Weiche zu einem Zeitpunkt zu schalten. Im CAN-Protokoll steht da auch eine Warnung. Ich schalte Weichen mit 200 ms und Relais (k84 und ähnliche) mit 50 ms, und habe damit keine Probleme. Falls ich mehrere Schaltbefehle absetzte werden die treiberseitig serialisiert. Nur nach einer korrekten Rückmeldung wird der nächste abgesetzt. Ganz selten habe ich schon erlebt, dass
ein Schaltbefehl nicht ausgeführt wurde, obwohl er korrekt zurückgemeldet wurde. Die Ursache dazu schien jedes mal auf CS2-Seite zu liegen.

Gruß
Franz


CS2 und CS3, 23 S88-N, Link S88 6 x 60174,
Rocrail als Steuerprogramm
K und C-Gleise, Märklin, Roco und Liliput Loks


 
Sieloff
Regionalbahn (RB)
Beiträge: 44
Registriert am: 24.10.2006
Ort: Aspach
Gleise C und K-Gleise
Spurweite H0
Steuerung CS2 + CS3/Linux-PC
Stromart Digital


RE: Kommunikation mit der CS2 über CAN-Protokoll

#4 von RHG2 ( gelöscht ) , 26.03.2009 14:02

Hallo Stefan, hallo Franz

Danke für Eure Antworten.
Habe ich gleich ausprobiert.

1.) Meine CS2 startet das CAN Protokoll auch nach 5 Minuten noch nicht automatisch.

Beim Reboot der CS2 sieht man am PC, wie einige Augenblicke nach dem Einschalten des Fahrstroms auch das LAN wieder da ist, aber das Protokoll kann ich nur mit dem oben geschilderten Workaround starten.
Für die Testphase ist das für mich ok. Und wenn Du schreibst, dass die Netzwerkanbindung "noch" nicht hundertprozentig stabil ist, dann hoffe ich auf eine Verbesserung mit dem angekündigten Update.
Die Beobachtung mit dem Kurzschluss konnte ich nicht nachvollziehen. Auch nach Reboot, ohne dass überhaupt ein Zug gefahren ist, startet meine CS2 das Protokoll nicht.

2.) Danke Stefan, da habe ich die Märklin Beschreibung falsch verstanden. Ich war der Meinung, es wird die in der CS2 eingestellte Zeit verwendet. Ich habe das Programm jetzt so geändert, dass der Strom für die definierte Zeit eingestellte Zeit (200 msec) eingeschaltet und danach wieder ausgeschaltet wird. Beide Befehle quittiert die CS2 richtig nach ca. 0.01 Sekunden. Sicherheitshalber wartet mein Programm danach noch 50 msec bis der nächste Befehl gestartet wird, weil ich derzeit die Quittierung noch nicht auswerte.
Soweit ich kontrolliert habe, wurden aber alle Befehle richtig quittiert.

ABER, der ESU-Switch-Pilot macht immer noch Schwierigkeiten. Ich habe die Weiche abgeklemmt und nur mehr die LEDs dran, um zu sehen, ob der Schaltbefehl ankommt. Auch beim manuellen Schalten am Keyboard wird gelegentlich kein Schaltimpuls gegeben, obwohl im Keyboard und im CS2-Gleisbild umgeschaltet wurde.
Im Programm habe ich die Pause verlängert (von 50 auf 500 msec) um mitzählen zu können (3x hin, 3x zurück). Also empirisch würde ich schätzen, dass ca. jeder 20. Schaltimpuls nicht ankommt. Fehlerquote daher 5%. Wenn ich die ganze Prozedur dreimal wiederhole, dann müsste die Fehlerquote auf 0.05*0.05*05 = 0.000125 absinken. Es wird dann schon ziemlich sicher wenigstens einmal geschaltet. (Methode Holzhammer).

Fehlermöglichkeiten wären jetzt:
- Signal im Gleis von der CS2
- oder Switch-Pilot

Ich tippe jetzt eher auf den Switch-Pilot, weil das Problem beim LDT-Decoder (Adresse 4-7) nicht auftritt.

Da überlege ich, ob man die Schaltdecoder eventuell an den Programmiergleis-Ausgang legen kann, um Störungen vom Anlagengleis auszuschalten. Geht das ?

Viele Grüße

Wolfgang


RHG2

RE: Kommunikation mit der CS2 über CAN-Protokoll

#5 von est2fe , 28.03.2009 09:36

Hallo Wolfgang,

um rauszubekommen, ob die CS den Schaltbefehl zuverlässig sendet, gehe doch einfach mal so vor:

Klemme an beide, den ESU und den LDT Leuchtdioden (mit Vorwiderständen) an die Ausgänge und programmiere beide auf die gleiche Adresse, am besten den LDT, der ja angeblich immer funktioniert, auf die Adresse des ESU. Dann schalte mal recht oft hin und her und beobachte die LEDs. Es sollten immer bei beiden Decodern die LEDs gemeinsam leuchten. Tun sie das nicht, hat einer der Decoder ein Problem. Mit LEDs als Last macht es auch nichts aus, wenn man zwei Decoder gleichzeitig anspricht.
Eventuell kannst du auch die Schaltzeit für diesen Versuch in der CS verlängern, damit man das besser sieht.

Gruss

est2fe


est2fe  
est2fe
EuroCity (EC)
Beiträge: 1.194
Registriert am: 07.06.2007
Gleise C + M
Steuerung 6021 IB1 MS1 MS2 CS2 CS3


RE: Kommunikation mit der CS2 über CAN-Protokoll

#6 von RHG2 ( gelöscht ) , 29.03.2009 15:40

Hallo est2fe

Danke, das ist eine gute Idee.
Das Aufbauen der Versuchsanordung hat natürlich etwas länger gedauert als eine Software-Änderung.

Ergebnis:
LDT schaltet immer, ESU schaltet fallweise nicht.

Jetzt habe ich den ESU-Decoder ausgebaut und nur mit den LEDs versehen als einziges Gerät an den Gleisausgang der CS2 gehängt. Der Fehler ist reproduzierbar und ich werde daher nächste Woche meinen Händler besuchen.

Herzlichen Dank und viele Grüße

Wolfgang


RHG2

   


  • Ähnliche Themen
    Antworten
    Zugriffe
    Letzter Beitrag
disconnected Foren-Chat Mitglieder Online 149
Xobor Einfach ein eigenes Forum erstellen
Datenschutz