## c't-Projekte - Mailinglisten

[Voriger (Datum)] [Nächster (Datum)] [Voriger (Thread)] [Nächster (Thread)]
[Nach Datum][Nach Thread]

### [ct-bot] ->Klappe

Absender: Frank Menzel
Datum: Sa, 24.01.2009 20:03:29
In-reply-to: <02189744-5AD5-4204-A5D3-E271199C2020@xxxxxxxxxxxxxxx>

    Hallo Timo,
    zu dem Punkt: " if (pos == DOOR_CLOSE && sensDoor == 0) {
    		return;	// Klappe ist bereits geschlossen
    	}"

    Ich habe sie auskommentiert aber dann geht gar nichts. Gleich nach
    flashen gibt er nur noch ein sich immer wiederholendes Klicken von
    sich-keine Anzeige, nichts geht mehr. Wieder die Zeilen rein, alles geht
    wieder. Wieder auskommentiert-ticken. Also habe ich die Zeilen drin
    gelassen.

    Die Änderung des Aufrufens von bot_servo(data... zu bot_servo(NULL...
    hat aber die Lösung gebracht und er kommt damit zu Ende, kein endloses
    Ticken mehr.

    Bei der ursprünglichen Version ohne NULL-Aufruf, also noch mit dem
    endlosen Ticken nach Einfangen, ist mir noch folgendes aufgefallen: Wenn
    Objekt eingefangen ist, leuchtet ja die gelbe LED und es kommt das
    endlose Ticken. Wenn ich aber den bot nun mit dem eingefangenen Objekt
    ein wenig zurückschiebe und die LED verlischt, dann hört auch das Ticken
    auf und das Verhalten kommt zum Ende.

    Soweit erst einmal dazu,
    Gruß, Frank

    -----Ursprüngliche Nachricht-----
    Von: ct-bot-entwickler-bounces@xxxxxxxxxxxxxxxxx
    [mailto:ct-bot-entwickler-bounces@xxxxxxxxxxxxxxxxx] Im Auftrag von Timo
    Sandmann
    Gesendet: Samstag, 24. Januar 2009 18:16
    An: Entwicklung rund um den c't-bot
    Betreff: Re: [ct-bot] Motorregelung fehlerhaft?

    Hi Frank,

    Am 23.01.2009 um 19:41 schrieb Frank Menzel:
    > Vielleicht kennst Du ja auch bei dem anderen Problem so schnell die
    > Lösung :-) Ist mir schon lange aufgefallen und möchte ich jetzt mal
    > ansprechen. Es geht um die Klappe, di sich ja wunderbar via FB steuern
    > lässt, auf und nieder (bei mir + und -). Bei mir ist der
    > Klappen-Optokoppler ohne Funktion,

    wenn der Klappensensor bei dir außer Funktion ist, dann würde ich in
    bot-logic/behaviour_servo.c Zeile 56ff:
    	if (pos == DOOR_CLOSE && sensDoor == 0) {
    		return;	// Klappe ist bereits geschlossen
    	}
    einfach auskommentieren. Der Sensor wird vom Servo-Verhalten nur dazu
    genutzt, den Servo gar nicht erst einzuschalten, wenn die Klappe
    geschlossen werden soll, aber bereits zu ist. Wenn die genannten
    Zeilen auskommentiert sind, ist das Servo-Verhalten völlig unabhängig
    vom Klappensensor.

    > weil meine Klappe eben nicht
    > seitwärts weggeht sondern hoch und runter. Wenn jeweils die Klappe die
    > Endposition erreicht hat, dann summt der Servo noch kurz nach und
    > schweigt dann, läuft wohl auf den Servotimeout.

    Das ist auch bei der Standard-Klappe der Fall. Das ist hier kein
    Timeout im Sinne eines Abbruchs, weil etwas nicht rechtzeitig reagiert
    hat, sondern das Verhalten schaltet den Servo einfach nur für 1
    Sekunde ein und dann wieder aus. Daher sollte das Prinzip auch bei
    deiner Konstruktion funktionieren.

    > Bis hierher alles prima.
    > Wenn aber dann in einem Verhalten mal das Klappe-ZU-Verhalten
    > aufgerufen
    > wird, wie bei CATCH_PILLAR, und die Klappe dann in dem Verhalten
    > zugegangen ist (eingefangen) so kommt auch dieses Nachsummen des
    > Servos.
    > Doch in dem Fall kommt er nie zu Ende und summt endlos weiter. Es ist
    > dann auch nicht mehr möglich, mit + oder - via FB die Klappe zum
    > Aufmachen zu bewegen. Erst nach Reset ist alles wieder ok. Wird das
    > Klappe-zu-Verhalten in einem anderen Verhalten eingebaut, so endet
    > dann
    > jenes Verhalten bei Klappe zu und kommt nicht mehr zum Aufrufer
    > zurück.

    Also haben wir folgenden Situation: Wenn bot_servo() mit caller ==
    NULL aufgerufen wird (wie von der Fernbedienung), funktioniert alles,
    wenn aber caller != NULL (wie beim Aufruf aus einem Verhalten heraus),
    dann wird der Servo nie wieder ausgeschaltet und der Caller ist ewig
    blockiert?

    > Wo kann da das Problem sein ?

    Ich sehe da so gerade auch kein Problem, weil dein Klappenumbau hier
    eigentlich keinen Einfluss haben dürfte. sensDoor müsste ja bei dir
    immer 1 sein. Und wenn nicht, dürfte der Servo gar nicht erst
    anlaufen. Trotzdem würde ich einfach die drei o.g.  Zeilen
    auskommentieren, weil sie in deiner Konstellation eh keinen Sinn machen.
    Was du auch noch mal ausprobieren kannst: Im Verhalten wie
    bot_catch_pillar() einfach den bot_servo(data, ...)-Aufruf auf
    bot_servor(NULL, ...) ändern, dann müsste es ja wie bei der
    Fernbedienung sein. Falls das hilft, müsste es aber irgendwo noch
    einen Bug geben.

    > Vielleicht ist hier mein Spezialfall mit
    > unbenutztem Klappe-Zu-Optokoppler und Timeout Schuld?

    Nein, das denke ich nicht.

    Grüße,
    Timo
    _______________________________________________
    ct-bot-entwickler Mailingliste
    ct-bot-entwickler@xxxxxxxxxxxxxxxxx
    http://www.heise.de/bin/newsletter/listinfo/ct-bot-entwickler

- Referenzen:
  - Re: [ct-bot] Motorregelung fehlerhaft?
    - From: Timo Sandmann

- Voriger (Datum): Re: [ct-bot] Motorregelung fehlerhaft?, Timo Sandmann
- Nächster (Datum): Re: [ct-bot] ->Klappe, Timo Sandmann
- Voriger (Thread): Re: [ct-bot] Motorregelung fehlerhaft?, Timo Sandmann
- Nächster (Thread): Re: [ct-bot] ->Klappe, Timo Sandmann
- Indizes:
  - Datum
  - Thread