## c't-Projekte - Mailinglisten

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

### Re: [ct-bot] Motorregelung fehlerhaft?

Absender: Timo Sandmann
Datum: Sa, 24.01.2009 18:15:47
In-reply-to: <000801c97d8a$3aa12d10$0200a8c0@mexpnew>
References: <000801c97d8a$3aa12d10$0200a8c0@mexpnew>

    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

- Antworten:
  - [ct-bot] ->Klappe
    - From: Frank Menzel

- Referenzen:
  - AW: [ct-bot] Motorregelung fehlerhaft?
    - From: Frank Menzel

- Voriger (Datum): AW: [ct-bot] Motorregelung fehlerhaft?, Frank Menzel
- Nächster (Datum): [ct-bot] ->Klappe, Frank Menzel
- Voriger (Thread): AW: [ct-bot] Motorregelung fehlerhaft?, Frank Menzel
- Nächster (Thread): [ct-bot] ->Klappe, Frank Menzel
- Indizes:
  - Datum
  - Thread