Jump to content

Wunsch Stepper-API mit Zwischenstop und Resume


Recommended Posts

Moin,

ich wünsche mir:

* den Stepper für eine Bewegung zu programmieren,

* ihn anhalten (quasi Stop) zu können (geht natürlich schon),

* ihm sagen zu können, daß er seine Fahrt wie vorher programmiert wieder aufnehmen soll.

Bsp. 1: Ich lasse einen Stepper vorwärts laufen, muß anhalten und möchte dann, daß er auf Befehl einfach weiterfährt (incl. Anfahren).

Bsp. 2: Ich gebe einem Stepper den Befehl, 12000 Steps zu fahren, muß ihn im Verlauf aber stoppen und möchte, daß er auf Befehl einfach so weitermacht, als hätte man ihn nicht angehalten.

Ich kann es natürlich auf Umwegen mit Merken des ursprünglichen Befehls und der Abfrage der Position nach dem Stop bereits jetzt realisieren, aber...

Oder seht Ihr noch eine andere Möglichkeit der einfachen Realisierung mit vorhandenen Mitteln?

gruss uwet

Link zu diesem Kommentar
Share on other sites

Hallo uwet,

 

wenn ich dich richtig verstehe geht es dir darum, dass du in deinem Code dir sparen möchtest die Schritte bei einem Stop auszulesen und bei einem erneuten Start die restlichen wieder zu setzen, korrekt?

 

Da sehe ich aktuell nur die Möglichkeit diese Logik über dein Programm zu machen. Vll. macht es sinn die API des Steppers da auf Dauer zu erweitern.

 

Grüße,

 

Bastian

Link zu diesem Kommentar
Share on other sites

Also im Prinzip möchtest du eine Funktion haben die den Stepper wieder anschmeißt mit den noch ausstehenden Schritten?

 

Sowas wie

drive_remaining_steps()

und dazu würde man dann vermutlich auch noch ein

set_remaining_steps()

machen, was das gleiche tut wie set_steps, aber den Motor noch nicht losfahren lässt. Ist das so gemeint?

 

Schreibe ich mir auch mal auf die TODO Liste, hab ja jetzt schon mehrere Erweiterungen für den Stepper, da wäre das eine Kleinigkeit vermutlich.

Link zu diesem Kommentar
Share on other sites

Ja, so ungefähr. Eben so nach dem Motto: "Warte mal und halt gesittet an, da ist was im Weg... Und jetzt mach einfach weiter wie vorher besprochen!" (vorwärts oder rückwärts, zähl weiter deine Schritte oder fahr weiter zu der vereinbarten Position) Vielleicht - und das ist erstmal nur so eine Überlegung - könnte man die Zwischenstop-Funktion wie so eine generelle Bewegungsfreigabe betrachten. Wenn ich wieder freigebe, muß ich nicht wissen, was der Motor vorher machen sollte. Ich muß also nicht merken, ob er einfach so drehte, ob er eine Position anfahren sollte oder soundsoviele Schritte machen sollte. Es würde vieles vereinfachen. Ich kann mir auch eine Art Rundruf an alle Stepper/Servos/DCs oder auch an Gruppen vorstellen. Da gibt es definitiv unbegrenzte Möglichkeiten.

Es sollte aber die Möglichkeit geben, die Motoren im Zustand des Zwischenstops umzuprogrammieren - neue Schritte, Richtung usw.

Da fällt mir noch eine Frage ein: Wie sieht es mit einer Funktion wie IsStop(&Stepper, &StopTrue) aus, die liefert, ob der Motor noch dreht? Vielleicht auch als Callback. Jetzt teste ich die Änderung der Positionen, bis keine Änderung mehr vorliegt.

gruss uwet

Link zu diesem Kommentar
Share on other sites

Da fällt mir noch eine Frage ein: Wie sieht es mit einer Funktion wie IsStop(&Stepper, &StopTrue) aus, die liefert, ob der Motor noch dreht? Vielleicht auch als Callback. Jetzt teste ich die Änderung der Positionen, bis keine Änderung mehr vorliegt.

gruss uwet

Dafür gibt es eigentlich den position_reached callback.

Link zu diesem Kommentar
Share on other sites

Zur Stepper-API Erweiterung fällt mir ev. noch eine Ergänzung ein, eines sogen. Homeruns:

Durch setPosition wird ein Lauf von z.B. 12000 Schritte ausgelöst.

Ist dieser durch Meldung im Callback am Ende soll der Motor automatisch zum Ursprung zurückgedreht werden.

 

Olaf,

wenn Du die Semantik von PositionReached verändern solltest, ergänze dann diesen durch einen weiteren Parameter, der uns hilft zu unterscheiden, ob das Event aufgrund von Stop oder durch das komplette Abfahren der SetPostions auftritt.

Link zu diesem Kommentar
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gast
Reply to this topic...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Clear editor

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...