uwet Geschrieben April 12, 2012 at 09:58 Geschrieben April 12, 2012 at 09:58 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 Zitieren
batti Geschrieben April 12, 2012 at 19:06 Geschrieben April 12, 2012 at 19:06 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 Zitieren
borg Geschrieben April 12, 2012 at 22:30 Geschrieben April 12, 2012 at 22:30 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. Zitieren
uwet Geschrieben April 13, 2012 at 07:53 Autor Geschrieben April 13, 2012 at 07:53 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 Zitieren
borg Geschrieben April 13, 2012 at 07:58 Geschrieben April 13, 2012 at 07:58 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. Zitieren
uwet Geschrieben April 13, 2012 at 08:06 Autor Geschrieben April 13, 2012 at 08:06 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 Zitieren
borg Geschrieben April 13, 2012 at 08:40 Geschrieben April 13, 2012 at 08:40 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. Zitieren
Nic Geschrieben April 13, 2012 at 08:53 Geschrieben April 13, 2012 at 08:53 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. Zitieren
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.