Zum Artikel

So funktioniert die Bewegungsregelung

Geprüft 2026-11-01

Ein Zielbefehl legt nicht direkt eine feste Motorleistung fest. Im Erweiterungsmodus stellt der Host Ziele und Grenzwerte bereit; Jedes Servo plant eine Flugbahn, misst die Bewegung und berechnet die Leistung. Auf dieser Seite werden diese Beziehungen erläutert. Verwendendie Tuning-Anleitungfür den praktischen Ablauf.

So funktioniert der Erweiterungsmodus

Host-Ziele, Servobewegungsplanung und Positionsrückmeldung

Der -Host ist der Computer oder Controller, der mit den Servos verbunden ist. Es sendet ein -Ziel : ein Ziel und eine Geschwindigkeitsbegrenzung. Beschleunigungs- und Kompensationseinstellungen werden vor der Aktivierung der Motorleistung konfiguriert. Jedes Servo dann:

  1. Plant eine reibungslose Bewegung zum Ziel.
  2. Misst seine Position und schätzt seine Geschwindigkeit.
  3. Passt die Motorleistung an die geplante Bewegung an.
  4. Hält das Ziel, wenn die Bewegung beendet ist.

Die zu jedem Zeitpunkt geplante Position und Geschwindigkeit werden als -Referenz bezeichnet. Die Steuerung vergleicht sie mit der gemessenen Bewegung, sodass eine Referenzposition und eine tatsächliche Position unterschiedlich sein können.

Einige in diesem Dokument verwendete Begriffe:

Begriff Bedeutung
Encoder-Zählschritt Eine Positionsmesseinheit; nominell 4096 zählt pro Umdrehung
Motorstellgröße Der vorzeichenbehaftete Motorausgangsbefehl: Sein Vorzeichen legt die Richtung und seine Größe die Ausgangsstärke fest
Regelverstärkung Eine Einstellung, die bestimmt, wie stark der Controller reagiert
Vorsteuerung Zusätzliche Motorleistung wird anhand des erwarteten Bedarfs berechnet, anstatt auf einen Positions- oder Geschwindigkeitsfehler zu warten
Rückmeldung Vom Servo zurückgegebene Messwerte und Status
Register Eine Einstellung oder ein Messwert, der durch eine Nummer gekennzeichnet ist
Sitzung Ein Zeitraum der Erweiterungskontrolle, identifiziert durch eine vom Host bereitgestellte Nummer

Der Stellwert wird in PWM-Einheiten ausgedrückt, den Einheiten, die zur Steuerung der elektrischen Leistung des Motors verwendet werden. Die Erweiterung ermöglicht eine Leistungsbegrenzung bis 1000 in beide Richtungen. Bei diesen Werten handelt es sich nicht um direkte Drehmoment- oder Strommessungen.

S-Kurven-Bewegung

Konzeptionelle Darstellung der S-Kurven-Bewegung

Auf YouTube ansehen · MP4

Sorgt für sanfteres Beschleunigen und Bremsen. Die Kurve veranschaulicht die Beschleunigung über die Zeit. Konzeptionelle Darstellung, keine gemessenen Hardwaredaten.

Eine S-Kurve sorgt dafür, dass die Beschleunigung allmählich zu- und abnimmt. Anstatt plötzlich die volle Beschleunigung oder das Bremsen auszuüben, bewegt sich das Servo sanft in jeden Teil der Bewegung hinein und wieder heraus. Dadurch können mechanische Stöße und Vibrationen reduziert werden.

Eine vollständige Bewegung von Ruhe zu Ruhe besteht aus diesen Phasen:

Schritt Was passiert
1 Die Beschleunigung nimmt allmählich zu
2 Das Servo beschleunigt gleichmäßig
3 Die Beschleunigung nimmt allmählich auf Null ab
4 Das Servo bewegt sich mit gleichmäßiger Geschwindigkeit
5 Die Bremswirkung nimmt allmählich zu
6 Das Servo bremst gleichmäßig
7 Die Bremswirkung nimmt allmählich ab, wenn das Servo stoppt

Kurze Bewegungen überspringen Etappen, wenn die Distanz nicht ausreicht, um die gewünschte Geschwindigkeit oder Beschleunigung zu erreichen. Beim Beschleunigen und Verlangsamen gilt die gleiche Beschleunigungsgrenze.

Die Einstellung ramp_time_ms steuert, wie lange es dauert, bis die Beschleunigung von Null auf ihren Grenzwert ansteigt. Eine längere Rampe sorgt für einen sanfteren Wechsel, erfordert aber im Allgemeinen mehr Zeit und Distanz zum Beschleunigen oder Anhalten.

Ruck bezeichnet die Geschwindigkeit, mit der sich die Beschleunigung ändert. Dieser Planer begrenzt den Ruck, sodass sich die Beschleunigung reibungslos ändert. Der Ruck selbst kann sich zwischen den Phasen immer noch abrupt ändern. Seine ungefähre Größe beträgt:

jerk = 1000 × acceleration / ramp_time_ms    [counts/s³]

Ändern eines Ziels während der Bewegung

Ein neues Ziel setzt die aktuell geplante Bewegung fort und behält seine Position, Geschwindigkeit und Beschleunigung bei. Durch erneutes Senden desselben Ziels wird die Verschiebung nicht neu gestartet. Halten Sie während der Fahrt die vorgeschriebene Geschwindigkeitsbegrenzung ein; es kann sich für die nächste Bewegung ändern, sobald die geplante Bewegung gestoppt wurde. Beschleunigung und Rampenzeit gehören zur Konfiguration und erfordern zum Ändern das Ausschalten des Motors und eine deaktivierte Sitzung.

Ein Ziel außerhalb der gespeicherten Legacy-Positionsgrenzen wird auf die nächste Grenze angepasst. Die angeforderte Geschwindigkeit ist ebenfalls auf den konfigurierten Grenzwert begrenzt. Das Servo verwendet bei jeder Bewegung die konfigurierte Beschleunigung. Nullgeschwindigkeit oder konfigurierte Beschleunigung ist ungültig.

Die gesamte geplante Bewegung muss innerhalb der Positionsgrenzen bleiben. Ein neues Ziel kann daher abgelehnt werden, wenn sich der Servo bereits einer Grenze zu schnell nähert, um innerhalb dieser anzuhalten, selbst wenn das Ziel selbst zulässig ist.

Bei der Ankunft hält das Servo bei eingeschaltetem Motor automatisch das Ziel. Die gemessene Position kann aufgrund von Reibung, Last, Leistungsgrenzen oder Abstimmung immer noch Fehler aufweisen. Durch Halten wird der Positionsfehler weiterhin korrigiert; Die Motorleistung wird nicht auf einen festen Wert eingefroren.

Jedes Servo plant seine eigene Bewegung. Das gleichzeitige Senden mehrerer Ziele garantiert nicht, dass alle Servos gleichzeitig ankommen.

Gemeinsame Positionslimits

Legacy- und Erweiterungssteuerung verwenden die gleichen Positionsbegrenzungsregister: 9 – 10 enthalten das Minimum und 11 – 12 das Maximum. Jeder Wert ist ein vorzeichenloser 16-Bit-Wert in korrigierten Encoder-Zählungen, einschließlich der konfigurierten Richtung und Positionskorrektur des Servos. Es gibt keine separaten Einstellungen für die Begrenzung der Ausfahrposition.

Durch die Kalibrierung werden die Encoder-Zählungen den physischen Positionen zugeordnet. Das -Kalibrierungstool lässt die erfasste Referenzposition 2048 ablesen und misst dann die Verfahrgrenzen. Diese Zählung ist nicht automatisch ein Null-Grad-Gelenkwinkel, und der gemessene Verfahrmittelpunkt ersetzt nicht die erfasste Referenz. Schwerkraftmodelle und Visualisierungen benötigen eine passende Zähl-zu-Winkel-Zuordnung.

Die Firmware liest diese Register beim Starten der Steuerung. Bei aktivierten Grenzwerten muss das Minimum unter dem Maximum liegen, das Maximum darf höchstens 32767 betragen und die gemessene Position muss innerhalb des Bereichs liegen. Andernfalls schlägt der Start fehl, ohne dass der Motor bewegt wird. Der Planer hält die gesamte Bewegung, einschließlich Bremsen, innerhalb des von ihm ermittelten Bereichs.

Gleiche Mindest- und Höchstwerte deaktivieren die Verfahrwegbegrenzungen und entsprechen dem alten Verhalten. Extension-Befehle bleiben weiterhin innerhalb ihres unterstützten Positionsbereichs von − 32767 bis 32767-Zählungen.

Ein akzeptierter Schreibzugriff auf einen der beiden Grenzwerte beendet eine aktive Erweiterungssitzung und schaltet den Motor aus, einschließlich Schreibvorgängen, die nur im RAM angewendet werden. Aktivieren Sie eine neue Sitzung, um die geänderten Werte zu verwenden. Die normale Persistenz der alten Einstellungen gilt weiterhin.

PID-Controller

Konzeptionelle Darstellung der PID-Regelung

Auf YouTube ansehen · MP4

Passt an, wie das Servo Positionsfehler korrigiert. Die graue Kurve veranschaulicht die Schwingung; Die weiße Kurve zeigt eine gedämpftere Reaktion. Die gestrichelte Linie ist das Ziel. Konzeptionelle Darstellung, keine gemessenen Hardwaredaten.

Der PID-Controller passt die Motorleistung an die geplante Bewegung an. Seine drei Einstellungen haben unterschiedliche Aufgaben:

Einstellung Was es bewirkt Hauptkompromiss
P – Positionskorrektur Zieht den Motor in die geplante Position; Größere Fehler führen zu mehr Korrekturen Ein höherer P kann Fehler reduzieren, kann aber auch zu Schwingungen führen
I – kumulierte Korrektur Baut zusätzliche Korrekturen auf, wenn ein Fehler weiterhin besteht Kann einen dauerhaften Fehler reduzieren, kann jedoch die Überschwing- oder Einschwingzeit verlängern
D – Geschwindigkeitskorrektur Reagiert auf die Differenz zwischen geplanter und gemessener Geschwindigkeit; Widersteht Bewegungen beim Halten Kann die Dämpfung verbessern, aber eine übermäßige Reaktion auf verrauschte Geschwindigkeitsmesswerte kann zu einer ungleichmäßigen Ausgabe führen

Die Berechnung lautet:

position error = planned position − measured position
speed error = planned speed − filtered measured speed

motor output = Kp × position error
             + Kd × speed error
             + accumulated I correction
             + gravity compensation
             + velocity feedforward

Das Ergebnis wird auf die konfigurierte maximale Leistung begrenzt. Durch den Motorschutz kann es noch weiter reduziert werden. Die Rückmeldung meldet sowohl die angeforderte als auch die angelegte Leistung, sodass der Host erkennen kann, wann der Motor begrenzt wird.

Die gemessene Geschwindigkeit wird mithilfe aktueller Positionswerte und eines einstellbaren Filters geglättet. Eine größere velocity_filter_q8-Einstellung reagiert schneller auf Änderungen, entfernt aber weniger Messrauschen.

Verhinderung übermäßiger akkumulierter Korrekturen

Der I-Beitrag hat seine eigene Grenze. Der Regler verhindert außerdem, dass er in eine Richtung weiter baut, in der die Motorleistung bereits begrenzt ist; Dies wird allgemein als Anti-Windup bezeichnet. Sie kann immer noch verringert werden, um dem Motor zu helfen, sich von dieser Grenze zu erholen. Durch Setzen von Ki auf Null wird die I-Korrektur deaktiviert und gelöscht.

Wenn der Servo mindestens 50 ms lang nahezu stationär war und der Positionsfehler innerhalb einer Encoderzählung liegt, hört die Akkumulation von I auf. P, D und beide Feedforward-Formen bleiben aktiv. Durch Ausschalten des Motorausgangs wird die I-Korrektur gelöscht.

Geschwindigkeitsvorsteuerung

Konzeptionelle Darstellung der Geschwindigkeitsvorsteuerung

Auf YouTube ansehen · MP4

Addiert die Motorleistung basierend auf der geplanten Geschwindigkeit, die im Servo berechnet wird. Beide Kurven verlaufen im Zeitverlauf von links nach rechts. Konzeptionelle Darstellung, keine gemessenen Hardwaredaten.

Die Geschwindigkeitsvorsteuerung liefert einen Teil der Ausgangsleistung, die voraussichtlich für die Bewegung benötigt wird, bevor ein Tracking-Fehler entsteht. Es wird im Servo aus der geplanten Geschwindigkeit berechnet:

velocity feedforward = velocity gain × planned speed

Es gibt einen Verstärkung für jede Richtung und eine Grenze für die resultierende Ausgabe. Beide Verstärkungen sind nicht negativ; Die Bewegungsrichtung bestimmt das Ausgangszeichen. Seine Leistungsgrenze darf nicht größer sein als die Leistungsgrenze des Hauptmotors.

Da das Servo seine eigene geplante Geschwindigkeit kennt, folgt die Kompensation automatisch der Beschleunigung und dem Bremsen und wird Null, wenn die geplante Bewegung stoppt. Der Host liefert lediglich seine Einstellungen; Es ist nicht erforderlich, kontinuierlich Geschwindigkeits-Feedforward-Werte zu senden.

Konfigurieren Sie diese Funktion zusammen mit den anderen Einstellungen in 0xA0, während die Motorleistung ausgeschaltet und die Sitzung deaktiviert ist. Setzen Sie beide Verstärkungen und die Ausgangsgrenze auf Null, um sie zu deaktivieren.

Schwerkraftkompensation

Konzeptionelle Darstellung der Schwerkraftkompensation

Auf YouTube ansehen · MP4

Der Host berechnet den Beitrag und der Servo wendet ihn an. Der Abwärtspfeil stellt das Gewicht dar; Der Aufwärtspfeil steht für Unterstützung. Konzeptionelle Darstellung, keine gemessenen Hardwaredaten.

Die Schwerkraftkompensation liefert die erforderliche Leistung, um das Gewicht eines Arms und seiner Last zu tragen. Dies ist auch dann nützlich, wenn der Motor stillsteht und die Geschwindigkeitsvorsteuerung Null ist.

Der -Host berechnet die Schwerkraftkompensation und sendet einen vorzeichenbehafteten Ausgabewert an jedes Servo. Bei der Berechnung können Gelenkwinkel, Armabmessungen, Verbindungsgewichte und Nutzlast berücksichtigt werden. Der Host muss die geschätzte Last in die Ausgangseinheiten des Servos umrechnen. Die Firmware enthält kein Modell des Arms.

Die Richtung ist wichtig: Der positive Erweiterungsausgang folgt steigenden Encoder-Zählungen. Die Gelenkwinkelkonvention eines Arms kann in die entgegengesetzte Richtung verlaufen, daher muss die Konvertierung des Hosts dies berücksichtigen.

Jede Schwerkraftaktualisierung enthält den gewünschten Ausgabewert. Die Anstiegsgeschwindigkeit – wie schnell sich die Kompensation ändern kann, in Ausgabeeinheiten pro Sekunde – ist Teil der Hauptkonfiguration und bleibt während der gesamten Sitzung konstant.

Das Servo ändert seine Kompensation schrittweise in Richtung des gewünschten Werts und addiert ihn zum Reglerausgang. Alle Beiträge zusammen unterliegen weiterhin der konfigurierten Leistungsbegrenzung und dem Motorschutz.

Wenn keine Schwerkraftaktualisierungen mehr eintreffen, fährt das Servo mit seiner konfigurierten Anstiegsgeschwindigkeit in Richtung der zuletzt angeforderten Kompensation fort und behält dann diesen Wert bei. Es gibt keinen Ablauftimer. Der Host sollte die Kompensation aktualisieren, wenn sich die Armhaltung oder -last ändert. Durch Setzen des Drehmomentfreigaberegisters 40 auf Null wird die Kompensation gelöscht und der Motorausgang ausgeschaltet.

Wenden Sie die Erklärung auf das Tuning an

Wenn eine kurze Bewegung nie die gewünschte Geschwindigkeit erreicht, wird sie durch eine Erhöhung der Geschwindigkeitsbegrenzung möglicherweise nicht schneller. Eine längere Leistungssättigung erfordert die Überprüfung von Last, Flugbahn und zulässigem Stellgröße, nicht nur höhere Verstärkungen. Wenn der Encoder seiner Referenz folgt, das Werkzeug jedoch einen physischen Punkt verfehlt, überprüfen Sie Kalibrierung, Geometrie und Mechanik.

Unterscheiden Sie zwischen der geplanten und gemessenen Bewegung und der Positionierungsgenauigkeit und Wiederholbarkeit . Bei den vier Steuerdiagrammen und Animationen oben handelt es sich eher um konzeptionelle als um gemessene Servodiagramme.


Startseite der Dokumentation · Quellrevision: a995f77 . Extension 9.0 .