[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [DDL-ML] Programmiergleis / ACK-Schaltung



In article <ifado.list.ddl/95BBA9CE85BAD211A79C0001FA7EF12502BDEBB1@txruws005.txch.sulzer.ch>,
Pfiffner, Hanspeter <ddl-mailing-list@der-moba.de> wrote:
>In der NMRA wird nur festgesetzt, dass das ACK-Signal mindestens 5 ms lang
>anstehen muss. Nach oben wird keine Zeitbegrenzung angegeben.
>Mit dem KO habe ich gemessen, dass bei mir das ACK-Signal ca. 120 ms
>anstehen muss, damit es richtig erkannt wird (Rückgabewert 1). Wenn es nur
>ca. 110 ms ansteht, erhalte ich Rückgabewert 0. Wenn es ca. 130 ms ansteht,
>erhalte ich Rückgabewert 2. Es ist relativ schwierig, wenn nicht sogar
>unmöglich mit einer einfachen Kondensatorladung den Schaltzeitpunkt
>reproduzierbar so genau einzustellen.

IMHO zutreffend. Ich bin dafür, 1. die Logik des Ack-Signals umzudrehen
(d.h. positives statt negatives RI bei positivem ACK), 2. die Fähigkeit
der Hardware, ein Signal dieser Polarität zu latchen, über das Betriebssystem
auszunutzen. Ob das auch bei Linux eine kleine Änderung des Sio-Treibers
verlangt, wie bei FreeBSD, weiß ich natürlich nicht. Aber diese Änderung
wäre auch für jede andere Nutzung des RI-Signals sinnvoll.
Ich habe das bei meiner FreeBSD-Portierung gemacht und bin mit der
Stabilität sehr zufrieden.

>Ich arbeite mit SuSE Linux 7.0.
>Meine Fragen an Torsten (und andere, die sich da auskennen):
>a) Warum wird das ACK von der Software nicht erkannt, wenn es 110 ms ansteht
>(nach NMRA wäre das ok)?

Alle Unix-Derivate sind nicht uneingeschränkt realtime-fähig. Daher sind
alle Programmiermethoden, die Timing mit Hilfe von nanosleep u.ä. auf
Anwenderprogrammebene versuchen, prinzipiell unstabil.

>b) Ist es möglich, dass bei der ACK-Erkennung die verschiedenen
>Distributionen verschieden reagieren?

Eher würde ich unterschiedliche Kernel als Ursache vermuten.

>c) Gemäss meinen Erfahrungen wäre es sinnvoll, bei der ACK-Erkennung den
>Zeitbereich zwischen Rückgabewert 0 und Rückgabewert 2 zu vergrössern.
>d) In welchem File und darin in welchem Bereich wird das RI-Signal von der
>RS-232 eingelesen rsp. wo kann ich die unter c) erwähnten Zeitbereiche
>versuchsweise manipulieren?

nmra.c. Ziemlich weit hinten kommen die Routinen für scanACK etc.
-- 
Dipl.-Math. Wilhelm Bernhard Kloke
Institut fuer Arbeitsphysiologie an der Universitaet Dortmund
Ardeystrasse 67, D-44139 Dortmund, Tel. 0231-1084-257