Störung eWicht/srcpd

8 views
Skip to first unread message

Guido Scholz

unread,
Aug 8, 2009, 4:24:40 AM8/8/09
to ewi...@googlegroups.com

Hallo zusammen,
nachdem ich mich unvermittelt als Mitglied dieser Mailingliste
wiedergefunden habe, scheint der primäre Anlaß die aktuelle
Unverträglichkeit der GA-Ansteuerung beim srcpd zu sein.

Ich habe das Thema auf der srcpd-Mailingliste aufgenommen. Eine mögliche
Lösung scheint das Aktivieren des 416-Fehlers zu sein. Am einfachsten
wäre es wohl, wenn David das mal ausprobieren würde. Dazu reicht es die
Zeile 187 in srcp-ga.c durch entfernen der Kommentarzeichen zu
aktivieren.

Kannst Du das mal testen, David?

Gruß
Guido

--
http://www.bayernline.de/~gscholz/
http://www.lug-burghausen.org/

signature.asc

David Rütti

unread,
Aug 8, 2009, 4:21:44 AM8/8/09
to ewi...@googlegroups.com

Hallo Guido

Guido Scholz schrieb:


> Hallo zusammen,
> nachdem ich mich unvermittelt als Mitglied dieser Mailingliste
> wiedergefunden habe, scheint der primäre Anlaß die aktuelle
> Unverträglichkeit der GA-Ansteuerung beim srcpd zu sein.
>
> Ich habe das Thema auf der srcpd-Mailingliste aufgenommen. Eine mögliche
> Lösung scheint das Aktivieren des 416-Fehlers zu sein. Am einfachsten
> wäre es wohl, wenn David das mal ausprobieren würde. Dazu reicht es die
> Zeile 187 in srcp-ga.c durch entfernen der Kommentarzeichen zu
> aktivieren.
>
> Kannst Du das mal testen, David?
>

Klar, kein Problem. Werde ich am Sonntag testen+berichten.

Gruss
David
> Gruß
> Guido
>
>

Sven Schlender

unread,
Aug 8, 2009, 4:55:07 AM8/8/09
to ewi...@googlegroups.com
Hi Guido,

> nachdem ich mich unvermittelt als Mitglied dieser Mailingliste
> wiedergefunden habe, scheint der primäre Anlaß die aktuelle
> Unverträglichkeit der GA-Ansteuerung beim srcpd zu sein.

Hi Guido, danke, dass Du nicht gleich schreiend wieder davon rennst ;)
Sorry nochmal für den etwas sanften Druck - wie geschrieben reicht ein
kurzer Wink und ich nehme Dich wieder von der Liste.


> Ich habe das Thema auf der srcpd-Mailingliste aufgenommen. Eine
> mögliche Lösung scheint das Aktivieren des 416-Fehlers zu sein. Am
> einfachsten wäre es wohl, wenn David das mal ausprobieren würde. Dazu
> reicht es die Zeile 187 in srcp-ga.c durch entfernen der
> Kommentarzeichen zu aktivieren.

Was mich so ein bisschen wundert - man benötigt beim srcpd nicht unbedingt
ein INIT-Kommando absetzen, um ein GA verwenden zu können?!

Gruß, Sven.


Guido Scholz

unread,
Aug 8, 2009, 8:03:11 AM8/8/09
to ewi...@googlegroups.com
Am Sat, 08. Aug 2009 um 10:55:07 +0200 schrieb Sven Schlender:

> Hi Guido,

Hallo Sven,

> Was mich so ein bisschen wundert - man benötigt beim srcpd nicht unbedingt
> ein INIT-Kommando absetzen, um ein GA verwenden zu können?!

richtig, der hat eine Art von "auto-init", wobei ich jetzt nachsehen
müßte, welche Voreinstellungen er dann für die nicht initialisierten
Paramater nimmt.

signature.asc

Guido Scholz

unread,
Aug 8, 2009, 5:37:48 PM8/8/09
to ewi...@googlegroups.com
Am Sat, 08. Aug 2009 um 14:03:11 +0200 schrieb Guido Scholz:

> > Was mich so ein bisschen wundert - man benötigt beim srcpd nicht unbedingt
> > ein INIT-Kommando absetzen, um ein GA verwenden zu können?!

> richtig, der hat eine Art von "auto-init", wobei ich jetzt nachsehen
> müßte, welche Voreinstellungen er dann für die nicht initialisierten
> Paramater nimmt.

Ich habe gerade nochmal nachgesehen, das sieht konkret so aus:

if (!isInitializedGA(busnumber, addr))
initGA(busnumber, addr, 'P');

Es wird in diesem Fall also das Protokoll auf P, gesetzt sowie Bus und
Adresse auf den konkreten Wert.

Ob diese Protokollvorwahl im Einzelfall immer zum richtigen Ergebnis
führt, ist mir nicht bekannt. Manche Bus-Treiber unterstützen nur ein
bestimmtes, da kann dann nichts schief gehen.

signature.asc

Sven Schlender

unread,
Aug 9, 2009, 11:27:34 AM8/9/09
to guido....@bayernline.de, ewi...@googlegroups.com
Hi Guido,

auch Dich habe ich jetztmal wieder von der Liste runtergenommen. Bitte sag
bescheid, wenn es für Dich _absolut_ ok ist, dass Du auf dieser Liste bist.


> > > Was mich so ein bisschen wundert - man benötigt beim srcpd nicht
> > > unbedingt ein INIT-Kommando absetzen, um ein GA verwenden zu
> können?!
>
> > richtig, der hat eine Art von "auto-init", wobei ich jetzt nachsehen
> > müßte, welche Voreinstellungen er dann für die nicht initialisierten
> > Paramater nimmt.
>
> Ich habe gerade nochmal nachgesehen, das sieht konkret so aus:
>
> if (!isInitializedGA(busnumber, addr))
> initGA(busnumber, addr, 'P');

Ok, aber dieses AutoInit ist so ein bisschen an der Spec. vorbei, oder?

Gruß, Sven.


da...@ruetti13.ch

unread,
Aug 9, 2009, 4:35:52 PM8/9/09
to Guido Scholz, ewi...@googlegroups.com

Hallo Guido

> Ich habe das Thema auf der srcpd-Mailingliste aufgenommen. Eine mögliche
> Lösung scheint das Aktivieren des 416-Fehlers zu sein. Am einfachsten
> wäre es wohl, wenn David das mal ausprobieren würde. Dazu reicht es die
> Zeile 187 in srcp-ga.c durch entfernen der Kommentarzeichen zu
> aktivieren.
>
> Kannst Du das mal testen, David?

Nachdem ich in Zeile 186 zudem die letzte schliessende Klammer entfernt
hatte, konnte ich srcpd kompilieren. Nach der Änderung scheint srcpd
einwandfrei zu funktionieren. Auf jeden Fall habe ich keine negativen
Effekte entdeckt.

Im Folgenden ein kleiner Ausschnitt aus der Command-Sitzung:

<- Handshake ->
1249849106.815 200 OK GO 3
get 1 ga 1 1
1249849119.263 416 ERROR no data
get 1 ga 1 0
1249849126.784 416 ERROR no data
<- Init per spdrs60 und set 1 ga 1 1 1 50 ->
get 1 ga 1 1
1249849144.756 100 INFO 1 GA 1 1 0
get 1 ga 1 0
1249849160.904 416 ERROR no data
set 1 ga 1 0 1 50
1249849980.310 200 OK
get 1 ga 1 0
1249849980.388 100 INFO 1 GA 1 0 0
get 1 ga 1 1
1249849144.756 100 INFO 1 GA 1 1 0

>
> Gruß
> Guido

Gruss David


Sven Schlender

unread,
Aug 10, 2009, 2:44:01 AM8/10/09
to Guido Scholz, ewi...@googlegroups.com
Hi Guido,

> > > > richtig, der hat eine Art von "auto-init", wobei ich jetzt
> > > > nachsehen müßte, welche Voreinstellungen er dann für die nicht
> > > > initialisierten Paramater nimmt.
>
> > > Ich habe gerade nochmal nachgesehen, das sieht konkret so aus:
> > >
> > > if (!isInitializedGA(busnumber, addr))
> > > initGA(busnumber, addr, 'P');
>
> > Ok, aber dieses AutoInit ist so ein bisschen an der Spec. vorbei,
> oder?
>

> Was sagt denn die Spezifikation dazu? Ist das verboten?

Nein, ist es nicht direkt. Aber wenn man sich das Kapitel 5.1 durchliest,
ist der dort angenommen Lebenszyklus eines Geräts durchaus mit INIT, GET,
SET, TERM beschrieben. Ich verstehe das zumindestens so.

BtW: Da ist mir aufgefallen, das nach den INITs des eWicht eigentlich kein
GET geschickt wird - das müsste ich wohl noch einbauen.

Gruß, Sven.

Guido Scholz

unread,
Aug 10, 2009, 2:18:27 PM8/10/09
to ewi...@googlegroups.com
Am Mon, 10. Aug 2009 um 08:44:01 +0200 schrieb Sven Schlender:

> Nein, ist es nicht direkt. Aber wenn man sich das Kapitel 5.1 durchliest,
> ist der dort angenommen Lebenszyklus eines Geräts durchaus mit INIT, GET,
> SET, TERM beschrieben. Ich verstehe das zumindestens so.

Vermutlich gibt es noch einen anderen Grund für dieses Auto-Init. Bei
einem SRCP-Server, der selbst die Signalerzeugung für die Anlage
übernimmt, also gemäß DD[LW], ist die Situation sehr einfach:


[SRCP-Client] <------> [SRCP-Server] ------> [Anlage]


Er hat alles unter Kontrolle, und bekommt Statusänderungen nur von den
angeschlossenen Cliens.

Anders bei einem SRCP-Server, der an einer Zentrale hängt. Hier können
Statusänderungen auch von der Zentrale kommen, die eventuell sogar noch
Handregler angeschlossen hat:


[SRCP-Client] <------> [SRCP-Server] <------> [Zentrale] ------> [Anlage]
|
[Handregler]

Das dumme ist nun, dass die Zentrale kein SRCP kann, sondern z.B. nur Echos
der bereits an die Anlage geleiteten Stellbefehle des Handreglers an den
SRCP-Server weiterleitet. Die Zentrale sendet also quasi direkt ein SET
ohne vorgeschaltetes INIT. Dann braucht man halt ein Auto-Init.

> BtW: Da ist mir aufgefallen, das nach den INITs des eWicht eigentlich kein
> GET geschickt wird - das müsste ich wohl noch einbauen.

Warum brauchst Du nach einem Init ein Get? Wenn schon, dann ein Set.


Wertet Dein eWicht eigentlich Nachrichten des Info-Kanals aus?

signature.asc

David Rütti

unread,
Aug 15, 2009, 7:17:36 AM8/15/09
to ewi...@googlegroups.com

Hallo

Ich habe mir die neue eWicht Firmware 1.0.5 auf Herz und Nieren geprüft.

Und hier kommt mein Senf :-)

- GA delay: Bei mir (Upgrade von 1.0.4) war er auf -1 gesetzt, sollte
m.E. was passenderes (z.B. 50 ms) sein

- Geschwindigkeitsstufen beim Drehgeber:
So wie ich es sehe, ist die Zählgeschwindigkeit (in 1er, 10er, oder
100er) abhängig von der Drehzeit, also etwa nach 3 s 10er und weiteren
3s 100er. Ich finde dies nicht ergonimisch und bin meistens mehrmals
über das Ziel hinausgeschossen. Ich wünsche mir eine Abhängigkeit von
der Drehgebergeschwindigkeit. Also langsam drehen 1er, mittelschnell
drehen 10er und schnell drehen 100er

- Schnelles Wechseln zwischen GA <-> GL:
Funktioniert. Allerdings hat sich ein kleiner Bug eingeschlichen: Bei
mehrmaligem Ändern der GA-Adresse (>= 3) ohne zwischendurch auf GL zu
wechseln, kann anschliessend nicht mehr auf die Lok gewechselt werden.
Druck auf GL bewirkt dann ein Umschalten auf eine alte GA Adresse.
Umgekehrt habe ich keine unerwünschten Effekte gefunden.

Gruss
David

Sven Schlender

unread,
Aug 15, 2009, 11:45:08 AM8/15/09
to ewi...@googlegroups.com
Hi,


> Das dumme ist nun, dass die Zentrale kein SRCP kann, sondern z.B. nur
> Echos der bereits an die Anlage geleiteten Stellbefehle des Handreglers
> an den SRCP-Server weiterleitet. Die Zentrale sendet also quasi direkt
> ein SET ohne vorgeschaltetes INIT. Dann braucht man halt ein Auto-Init.

Ok - soweit verstanden.


> > BtW: Da ist mir aufgefallen, das nach den INITs des eWicht eigentlich
> > kein GET geschickt wird - das müsste ich wohl noch einbauen.
>
> Warum brauchst Du nach einem Init ein Get? Wenn schon, dann ein Set.

SRCP:Spec.:
After INIT any write access to the affected device by SET or INIT for all
active sessions is invalid until
reading access is processed by the commands GET or VERIFY(depending on the
device group) or
TERM. This includes the session executing the INIT.

Vermutlich will man so erzwingen, dass ein Client Kenntnis über den
Grundzustand erlangt.


> Wertet Dein eWicht eigentlich Nachrichten des Info-Kanals aus?

Ja - eigentlich werden alle Zustände auf dem eWicht aus INFO-Nachrichten
abgeleitet.

Gruß, Sven.

Sven Schlender

unread,
Aug 15, 2009, 11:54:03 AM8/15/09
to ewi...@googlegroups.com
Hi David,

wieder einmal vielen Dank fürs Testen.

> - GA delay: Bei mir (Upgrade von 1.0.4) war er auf -1 gesetzt, sollte
> m.E. was passenderes (z.B. 50 ms) sein

Ja, das hat etwas mit dem Upgrade zu tun (EEPROM-Speicherstelle steht auf
0xFF :). Wenn Du einen Reset auf Werkseinstellungen durchführst, wird Du
feststellen, das der initiale Wert derzeit auf 500 ms steht.

> - Geschwindigkeitsstufen beim Drehgeber:
> So wie ich es sehe, ist die Zählgeschwindigkeit (in 1er, 10er, oder
> 100er) abhängig von der Drehzeit, also etwa nach 3 s 10er und weiteren
> 3s 100er.

Es geht nicht über die Drehzeit, sondern über die Anzahl der inkrementierten
Schritte.


> Ich finde dies nicht ergonimisch und bin meistens mehrmals
> über das Ziel hinausgeschossen. Ich wünsche mir eine Abhängigkeit von
> der Drehgebergeschwindigkeit. Also langsam drehen 1er, mittelschnell
> drehen 10er und schnell drehen 100er

Ja - gut. Das ist jetzt nochmal ganz anders, als wir es bisher hatten. Aber
ich denke, das das vermutlich die bessere Lösung ist. Ich werde mich da
nochmal dransetzen und das einbauen.


> - Schnelles Wechseln zwischen GA <-> GL:
> Funktioniert. Allerdings hat sich ein kleiner Bug eingeschlichen: Bei
> mehrmaligem Ändern der GA-Adresse (>= 3) ohne zwischendurch auf GL zu
> wechseln, kann anschliessend nicht mehr auf die Lok gewechselt werden.
> Druck auf GL bewirkt dann ein Umschalten auf eine alte GA Adresse.
> Umgekehrt habe ich keine unerwünschten Effekte gefunden.

Mmmh, ok, das muss ich mir anschauen. Wieder mit srcpd getestet?


Sieht so aus, als es würde es bald eine 1.0.6 geben :)

Gruß, Sven.

David Rütti

unread,
Aug 15, 2009, 1:26:37 PM8/15/09
to ewi...@googlegroups.com
Hallo Sven

Gern geschehen!

>> - GA delay: Bei mir (Upgrade von 1.0.4) war er auf -1 gesetzt, sollte
>> m.E. was passenderes (z.B. 50 ms) sein

> Ja, das hat etwas mit dem Upgrade zu tun

Habe ich mir gedacht. Dann ist ja alles i.O.

>> Ich wünsche mir eine Abhängigkeit von
>> der Drehgebergeschwindigkeit. Also langsam drehen 1er, mittelschnell
>> drehen 10er und schnell drehen 100er

> Ja - gut. Das ist jetzt nochmal ganz anders, als wir es bisher hatten.
> Aber
> ich denke, das das vermutlich die bessere Lösung ist. Ich werde mich da
> nochmal dransetzen und das einbauen.

Wäre wahrscheinlich das ergonimische, wenn Du so was einbauen könntest.
Als Alternative und sicherlich einfacher zu implementiren wäre z.B. Push and
Turn :-) Solange Knob gedrückt, wird in 100er oä verstellt.
Mit der aktuellen Lösung komme ich gar nicht zu recht. Was meinen eigentlich
die Anderen?


> Mmmh, ok, das muss ich mir anschauen. Wieder mit srcpd getestet?

Genau. srcpd und Loconet sowie Loopback. Und zwar immer aus dem aktuellen
repisotory.


> Sieht so aus, als es würde es bald eine 1.0.6 geben :)

Freue mich schon aufs Testen.

Gruss
David

Sven Schlender

unread,
Aug 16, 2009, 4:22:47 AM8/16/09
to ewi...@googlegroups.com
Hi David,

> Wäre wahrscheinlich das ergonimische, wenn Du so was einbauen könntest.
> Als Alternative und sicherlich einfacher zu implementiren wäre z.B.
> Push and
> Turn :-) Solange Knob gedrückt, wird in 100er oä verstellt.
> Mit der aktuellen Lösung komme ich gar nicht zu recht. Was meinen
> eigentlich die Anderen?

Nur Kurt Harders hat noch einen eWicht. Leider bisher kein Feedback von ihm.

Gruß, Sven.

Sven Schlender

unread,
Aug 18, 2009, 2:08:14 AM8/18/09
to ewi...@googlegroups.com
Hi Guido, Hi David,

ich muss jetzt nochmal in dieses INIT/GET/SET-Problem einhaken. Ich konnte
heute Morgen ein wenig mit der aktuellsten srcpd-Version rumspielen und ich
finde, dass es immer noch nicht ganz passt bzw. ich es noch nicht
vollständig verstanden habe.

Hier ein Mittschnitt der Session zwischen HyperTerm und srcpd (erstmalige
Initialisierung eines GAs mit Adresse 4)

GET 1 GA 4 0
1250575463.664 416 ERROR no data

INIT 1 GA 4 M
1250575470.852 200 OK

GET 1 GA 4 0
1250575477.883 416 ERROR no data

SET 1 GA 4 0 1 -1
1250575615.508 200 OK

GET 1 GA 4 0
1250575615.523 100 INFO 1 GA 4 0 1

Nach dem INIT des GAs kann srcpd trotzdem keine Daten liefern und bringt
"ERROR no data". Dabei sollte es doch einen Grundzustand geben? Ich muss
entgegen der Spec. erst SET absetzen, bevor der srcpd Daten zu diesem GA
liefert. Wo liegt mein Denkfehler?

Gruß, Sven.

mgr...@snafu.de

unread,
Aug 18, 2009, 12:32:05 PM8/18/09
to ewi...@googlegroups.com
Hallo Sven, ich denke das ist so OK, denn woher soll das Programm
wissen, in welcher Stellung der Magnetartikel steht, das ist erst
eindeutig, wenn ein SET Befehl gesendet wurde.

Gruß - Michael

Guido Scholz

unread,
Aug 18, 2009, 2:39:44 PM8/18/09
to ewi...@googlegroups.com
Am Tue, 18. Aug 2009 um 08:08:14 +0200 schrieb Sven Schlender:

> Hi Guido, Hi David,

Hallo Sven,

> GET 1 GA 4 0
> 1250575463.664 416 ERROR no data
>
> INIT 1 GA 4 M
> 1250575470.852 200 OK
>
> GET 1 GA 4 0
> 1250575477.883 416 ERROR no data

hier könnte er allenfalls ein "101 INFO ..." zurückliefern, mehr hat er
zu dieser Zeit ja nicht anzubieten.

> Nach dem INIT des GAs kann srcpd trotzdem keine Daten liefern und bringt
> "ERROR no data". Dabei sollte es doch einen Grundzustand geben? Ich muss
> entgegen der Spec. erst SET absetzen, bevor der srcpd Daten zu diesem GA
> liefert. Wo liegt mein Denkfehler?

Mach doch mal einen Feature-Request für die "101 INFO" auf der
srcpd-Mailingliste.

signature.asc

Guido Scholz

unread,
Aug 18, 2009, 2:54:31 PM8/18/09
to ewi...@googlegroups.com
Am Tue, 18. Aug 2009 um 20:39:44 +0200 schrieb Guido Scholz:

> Am Tue, 18. Aug 2009 um 08:08:14 +0200 schrieb Sven Schlender:

> > Hi Guido, Hi David,

> Hallo Sven,

> > GET 1 GA 4 0
> > 1250575463.664 416 ERROR no data
> >
> > INIT 1 GA 4 M
> > 1250575470.852 200 OK
> >
> > GET 1 GA 4 0
> > 1250575477.883 416 ERROR no data

> hier könnte er allenfalls ein "101 INFO ..." zurückliefern, mehr hat er
> zu dieser Zeit ja nicht anzubieten.

Das war natürlich Unsinn, denn Du fragst ja konkret nach Informationen
von Port 0. Wenn der noch nicht gestellt wurde, gibt es auch keine Daten
zum Abfragen.

Das Abfragen des Protokolls ist wohl nicht vorgesehen, was aber kein
Problem ist, da der Client das selbst gesetzt hat. Sollte ein anderer
Client das Protokoll umstellen, bekommt der erste Client das über den
Info-Kanal per 101-Nachricht mitgeteilt.

Sollte jetzt wohl stimmen.

signature.asc

Sven Schlender

unread,
Aug 19, 2009, 2:39:04 AM8/19/09
to ewi...@googlegroups.com
Hi,

> ich denke das ist so OK, denn woher soll das Programm
> wissen, in welcher Stellung der Magnetartikel steht, das ist erst
> eindeutig, wenn ein SET Befehl gesendet wurde.

Ok - soweit die Realität.
Auch wenn ich nerve, aber ich sehe nicht, wie das alles mit der Spec.
zusammenpasst. Das sollte doch für uns alle der kleinste gemeinsame Nenner
sein.

Laut Spec. gibt es für GAs sehr wohl einen Default bzw. Grundzustand:
The default state of a device is indicated by zero on all ports.

Mir ist klar, dass mindestens ein SET abgesetzt werden muss, damit der
Server synchron mit der Anlage ist. Dennoch müsste er für ein GET nach dem
INIT eine valide Antwort der Form "100 INFO ..." liefern.

BTW: DDW macht es so!

Gruß, Sven.

Guido Scholz

unread,
Aug 19, 2009, 2:10:26 PM8/19/09
to ewi...@googlegroups.com
Am Wed, 19. Aug 2009 um 08:39:04 +0200 schrieb Sven Schlender:

> Hi,

Hallo Sven,

> Laut Spec. gibt es für GAs sehr wohl einen Default bzw. Grundzustand:
> The default state of a device is indicated by zero on all ports.
>
> Mir ist klar, dass mindestens ein SET abgesetzt werden muss, damit der
> Server synchron mit der Anlage ist. Dennoch müsste er für ein GET nach dem
> INIT eine valide Antwort der Form "100 INFO ..." liefern.

Du solltest Dich mit dem Problem mal auf drmb oder der
srcpd-Mailingliste melden.

signature.asc
Reply all
Reply to author
Forward
0 new messages