Jump to content

Recommended Posts

Geschrieben

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

Geschrieben

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

Geschrieben

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.

Geschrieben

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

Geschrieben

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.

Geschrieben

Und das geht auch, wenn ich einen drehenden Motor anhalten möchte? Ist dann der gewünschte Stillstand das Ereignis "Position reached" und wird somit der vollzogene Stillstand gemeldet?

gruss uwet

Geschrieben

Ah, verstehe das Problem. Ich könnte ohne Probleme einbauen das er "position reached" auch aufruft wenn ein Stop Zustand erreicht wird. Würde natürlich die Semantik der API ein wenig ändern, aber ich denke das sollte eigentlich kein Problem sein hier.

Geschrieben

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.

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...