uwet Posted April 12, 2012 at 09:58 AM Posted April 12, 2012 at 09:58 AM 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 Quote
batti Posted April 12, 2012 at 07:06 PM Posted April 12, 2012 at 07:06 PM 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 Quote
borg Posted April 12, 2012 at 10:30 PM Posted April 12, 2012 at 10:30 PM 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. Quote
uwet Posted April 13, 2012 at 07:53 AM Author Posted April 13, 2012 at 07:53 AM 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 Quote
borg Posted April 13, 2012 at 07:58 AM Posted April 13, 2012 at 07:58 AM 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. Quote
uwet Posted April 13, 2012 at 08:06 AM Author Posted April 13, 2012 at 08:06 AM 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 Quote
borg Posted April 13, 2012 at 08:40 AM Posted April 13, 2012 at 08:40 AM 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. Quote
Nic Posted April 13, 2012 at 08:53 AM Posted April 13, 2012 at 08:53 AM 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. Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.