Skip to main content

Drehmomentbegrenzung und Drehmomentvorsteuerung

Die Drehmomentbegrenzung von CODESYS SoftMotion sorgt dafür, dass vorgegebene Grenzen der Drehmomente oder Kräfte der Antriebe bei koordinierten Bewegungen nicht überschritten werden. Diese Grenzen der Drehmomente und Kräfte werden zusätzlich zu den bestehenden Grenzen für die Geschwindigkeit, die Beschleunigung und den Ruck der Antriebe beachtet. Voraussetzung dafür ist ein dynamisches Modell für die verwendete Kinematik in Form eines Funktionsbausteins, der die Schnittstelle ISMDynamics aus der Bibliothek SM3_Dynamics implementiert. Im Wesentlichen wird eine Methode AxesStateToTorque benötigt, die für einen gegebenen Zustand der Achsen, also für deren Position, Geschwindigkeit und Beschleunigung, die benötigten Drehmomente berechnet.

Neben der Drehmomentbegrenzung erlaubt ein dynamisches Modell die Berechnung von Solldrehmomenten für eine Drehmomentvorsteuerung. Sie finden ein Anwendungsbeispiel im Kapitel Dynamisches Robotermodell.

Anwendungsfälle

Bei vielen, insbesondere seriellen, Kinematiken gibt es eine Verkopplung mehrerer oder aller Gelenke. Ein einfaches Beispiel dafür ist das unten abgebildete Doppelpendel mit Antrieben in den Gelenken:

_sm_img_torque_1.png

Anwendungsfall 1

_sm_img_torque_2.png

Anwendungsfall 2

Der Antrieb im ersten Gelenk führt eine Drehung um 90° aus, das zweite Gelenk soll sich nicht bewegen (Anwendungsfall 1). Nimmt man ein passives zweites Gelenk an, kann man sich leicht vorstellen, dass sich das zweite Glied des Doppelpendels aufgrund seiner Trägheit nach links drehen wird. Um diese Drehung zu verhindern, muss der Antrieb im zweiten Gelenk ein Drehmoment nach rechts erzeugen. Die Bewegung des ersten Antriebs erfordert also eine Reaktion des zweiten Antriebs.

Eine Verkopplung in umgekehrter Richtung gibt es beispielsweise in dem Fall, dass sich der erste Antrieb mit konstanter Geschwindigkeit bewegen soll, während der zweite Antrieb das zweite Glied des Doppelpendels einklappt (Anwendungsfall 2). Dadurch reduziert sich das Massenträgheitsmoment des Doppelpendels bezüglich des ersten Gelenks. Um den Drehimpuls, das Produkt aus Massenträgheitsmoment und Drehgeschwindigkeit, zu erhalten, muss sich die Drehgeschwindigkeit des ersten Gelenks erhöhen. Um die Drehgeschwindigkeit konstant zu halten, muss der Drehimpuls durch Drehmomentänderung des ersten Antriebs entgegen seiner Drehrichtung reduziert werden. Die Bewegung des zweiten Antriebs erfordert also eine Reaktion des ersten Antriebs.

Ohne ein dynamisches Modell können dem Antrieb nur Sollposition, Sollgeschwindigkeit und Sollbeschleunigung übermittelt werden. Im ersten Fall bekommt der zweite Antrieb eine konstante Sollposition vorgegeben, unabhängig davon, ob sich das erste Gelenk bewegt oder nicht. Der Regler im zweiten Antrieb muss damit umgehen können, dass für dieselben Sollwerte im einen Fall ein Drehmoment erzeugt werden muss und im anderen nicht. Ähnlich verhält es sich im zweiten Fall. Hier wird dem ersten Antrieb dieselbe konstante Sollgeschwindigkeit vorgegeben, unabhängig davon, ob sich das zweite Gelenk bewegt. Auch hier muss der Regler im Antrieb damit umgehen, dass für dieselben Sollwerte unterschiedliche Drehmomente erzeugt werden müssen.

Mit einem dynamischen Modell können die Solldrehmomente berechnet und an die Antriebe übermittelt werden. Dort können sie als Vorsteuergröße für die Regler verwendet werden. Der Regler erhält so zusätzliche Informationen, die eine Verbesserung der Regelgüte ermöglichen.

Die Drehmomentbegrenzung ermöglicht eine genauere Einhaltung der Grenzen des Antriebs. In vielen Fällen ist nicht die Beschränkung der Geschwindigkeit oder der Beschleunigung des Antriebs entscheidend, sondern die Beschränkung der Drehmomente. Die Vorteile der Drehmomentbegrenzung werden am Beispiel des oben beschriebenen Doppelpendels deutlich, wenn folgende Bewegungen verglichen werden: Eine Bewegung des ersten Antriebs mit eingeklapptem zweiten Glied und eine Bewegung des ersten Antriebs mit ausgeklapptem zweiten Glied. Im eingeklappten Zustand ist das Massenträgheitsmoment bezüglich des ersten Gelenks kleiner als im ausgestreckten Zustand. Für dieselbe Bewegung, also denselben Geschwindigkeits- und Beschleunigungsverlauf des Antriebs, wird im ausgestreckten Zustand deshalb ein größeres Drehmoment benötigt als im eingeklappten Zustand. Ohne dynamisches Modell müssen die Geschwindigkeits- und Beschleunigungsgrenzen so eingestellt werden, dass in beiden Zuständen die Drehmomentgrenzen eingehalten werden. Das kann dazu führen, dass sich der erste Antrieb im eingeklappten Zustand mit niedrigerer Geschwindigkeit oder Beschleunigung bewegt als nötig wäre, um die Drehmomentgrenzen des Antriebs einzuhalten. Mit einem dynamischen Modell können die Drehmomentgrenzen konfiguriert, bei der Planung der Bewegung berücksichtigt und dadurch in beiden Zuständen voll ausgenutzt werden.

Ein etwas komplexeres Beispiel ist der erste oben beschriebene Fall, in dem sich der erste Antrieb bewegt und der zweite Antrieb seine Position halten soll. Das benötigte Drehmoment im zweiten Antrieb zum Halten seiner Position, hängt von der Bewegung des ersten Antriebs ab. Beschleunigt der erste Antrieb zu stark, kann es prinzipiell passieren, dass dadurch die Drehmomentgrenze des zweiten Antriebs verletzt wird. Ohne dynamisches Modell kann das nur verhindert werden, indem die Beschleunigungsgrenzen des ersten Antriebs entsprechend konfiguriert werden. Mit dynamischem Modell kann die konfigurierte Drehmomentgrenze des zweiten Antriebs bei der Planung der Bewegung berücksichtigt und die Beschleunigung des ersten Antriebs beschränkt werden.

Bei komplexeren Bewegungen oder Kinematiken kommen die hier beschriebenen und noch weitere Verkopplungseffekte zusammen. Ein dynamisches Modell ermöglicht die Berücksichtigung dieser Verkopplungen und dadurch bessere Sollwertvorgaben und eine bessere Einhaltung der Grenzen der Antriebe.

Konfiguration des dynamischen Modells

Ein bestehendes dynamisches Modell in Form eines Funktionsbausteins, der die Schnittstelle ISMDynamics implementiert, kann mit dem Funktionsbaustein SMC_GroupSetDynamics einer Achsgruppe zugewiesen werden. Neben dem dynamischen Modell müssen über den Baustein auch noch Richtung und Betrag der Gravitationsbeschleunigung in Form eines Vektors im Maschinenkoordinatensystem konfiguriert werden.

Berücksichtigung von Lasten

Zusätzliche Lasten, beispielsweise gegriffene Objekte oder angebrachte Werkzeuge, können mithilfe des Funktionsbausteins SMC_GroupSetLoad berücksichtigt und zur Laufzeit geändert werden. Über den Eingang ExecutionMode des Bausteins lässt sich festlegen, ab wann eine Laständerung sich auswirken soll, also beispielsweise sofort oder erst nach Abschluss der aktuellen Bewegung.

Wichtig

Fortsetzen mit MC_GroupContinue: Beim Fortsetzen behält jede Bewegung, die in den Continue-Daten gespeichert ist, die Last, mit der sie ursprünglich kommandiert wurde. Jede Bewegung, die nach der Fortsetzung kommandiert wird, verwendet die zuletzt eingestellte Last.

Berücksichtigung eines Getriebes

Die Solldrehmomente werden für den Getriebeausgang berechnet und nicht automatisch auf den Antrieb umgerechnet. Mit dem Funktionsbaustein SMC_SetAdditionalConversionFactors lässt sich pro Achse ein zusätzlicher Umrechenfaktor für das Drehmoment konfigurieren. Darüber lässt sich auch das Getriebe berücksichtigen.

Einheiten

Kräfte und Drehmomente und deren Grenzen werden in der Applikation grundsätzlich in Newton (N) oder Newtonmeter (Nm) angegeben. Bevor Sollkräfte oder Solldrehmomente an die Antriebe geschickt werden, erfolgt eventuell eine Umskalierung. So fordert die Norm CiA 402 beispielsweise, dass Solldrehmomente in Tausendstel des Nenndrehoments in mNm an den Antrieb gesendet werden.

Die Einheit für Längen ist in SoftMotion anwenderspezifisch. Da Kräfte und Drehmoment als feste Einheit N oder Nm definiert sind, muss ein Umrechnungsfaktor von anwenderspezifischer Längeneinheit auf Meter konfiguriert werden, sofern nicht Meter als Längeneinheit verwendet wird. Das geht über den Funktionsbaustein SMC_GroupSetUnits.

Drehmomentbegrenzung in beweglichen Koordinatensystemen

Wenn sich die Achsgruppe in einem beweglichen Koordinatensystem bewegt, können die Drehmomentgrenzen nur eingehalten werden, wenn die Achsgruppe dem beweglichen Koordinatensystem exakt folgen kann. Ist das nicht möglich und sind mittels SMC_GroupSetPathTolerance Toleranzen für die Abweichung konfiguriert, können beim Versuch die Abweichung auszugleichen Drehmomentgrenzen überschritten werden. Kommt es zum Fehler, weil die Abweichungen außerhalb der Toleranzen liegen, hält die Achsgruppe an. Bei diesem Anhalten können die Drehmomentgrenzen ebenfalls überschritten werden. Die Solldrehmomente werden in jedem Fall berechnet und an die Antriebe geschickt.

Drehmomentbegrenzung im Fehlerfall

Wenn ein Fehler während der Planung erkannt wird, beispielsweise dass eine kommandierte Bewegung den Arbeitsbereich verletzen wird, hält die Achsgruppe auf der bisher kommandierten Bahn an. Dabei werden die Drehmomentgrenzen eingehalten. Wenn ein Anhalten auf der Bahn nicht möglich ist, beispielsweise weil ein Antrieb einen Fehler meldet, können auch die Drehmomentgrenzen nicht eingehalten werden.

Unterschiede bei der Verwendung von Einzelachsbewegungen und koordinierten Bewegungen

Grundsätzlich werden für alle Achsen, die Teil einer Achsgruppe mit dynamischem Modell sind, Solldrehmomente berechnet. Das gilt sowohl im Stillstand als auch wenn die Achse mittels Einzelachsbewegungen (beispielsweise MC_MoveAbsolute) oder die gesamte Achsgruppe mittels koordinierter Bewegungen (beispielsweise MC_MoveDirectAbsolute) verfahren wird.

Die Drehmomentbegrenzung ist nur bei koordinierten Bewegungen aktiv. Der Grund dafür ist, dass die benötigten Drehmomente einer Achse, wie oben beschrieben, von Position und Bewegung einiger oder aller anderen Achsen der Achsgruppe abhängen. Eine Beschränkung der Drehmomente ist deshalb nur möglich, wenn alle Achsen der Achsgruppe koordiniert bewegt werden können.

Eine Ausnahme ist der Baustein SMC_GroupJog. Dieser Baustein unterstützt keine Drehmomentbegrenzung. Es wird empfohlen, stattdessen SMC_GroupJog2 zu verwenden.