-
Die vorliegende Erfindung bezieht sich auf ein Verfahren zur Steuerung einer Bewegung einer mechanischen Vorrichtung, wie insbesondere einem Industrieroboter, unter Verwendung nacheinander und insbesondere zusammenhängender und aufeinanderfolgend interpolierter Verfahrsätze, mittels einer durch eine Steuerungseinrichtung durchgeführten Bahnplanung zur Sicherstellung der Einhaltung der in jedem Verfahrsatz gültigen Beschränkungen und zum Abbau einer Geschwindigkeit auf v=0 und einer Beschleunigung auf a=0 bis zu einer vorgegebenen Endposition der Bewegung.
-
Es soll eine Strecke der Länge s abgefahren werden, die in n Teilstücke aufgeteilt ist. In diesen sogenannten Verfahrsätzen gelten jeweils Beschränkungen für die Maximalgeschwindigkeit Vmax, die maximale und minimale Beschleunigung amax bzw. amin , sowie den maximalen und minimalen Ruck jmax bzw. jmin .
-
Innerhalb eines Verfahrsatzes sei das Beschleunigungsprofil stetig und stückweise linear. Daraus ergeben sich Profile für Position, Geschwindigkeit, Beschleunigung und Ruck, wie in der 1 gezeigt.
-
Gemäß dem Stand der Technik verschwindet die Beschleunigung im Übergang zweier Verfahrsätze, so dass keine Übergangsbeschleunigung stattfindet.
-
-
Demnach ist es die Aufgabe der vorliegenden Erfindung, die Bewegungsdynamik durch beispielsweise mehr Laufruhe und höhere Geschwindigkeiten zu verbessern und die Anregung der Vorrichtung bzw. Maschine bzw. Roboters durch eine entsprechende Bahninterpolation für einen möglichst glatten Geschwindigkeitsverlauf zu vermindern bzw. zu verhindern, so dass unter Einhaltung von vorgegebenen Beschränkungen ein zeitoptimales Geschwindigkeitsprofil errechnet werden kann, um die Strecke in möglichst kurzer Zeit abzufahren.
-
Diese Aufgabe löst die vorliegende Erfindung mittels eines Verfahrens zur Steuerung einer Bewegung von mechanischen Vorrichtungen unter Verwendung nacheinander interpolierter Verfahrsätze gemäß dem Anspruch 1.
-
Vorteilhaft wird dabei über die vorhandenen Bewegungsabschnitte eine Bremswegrampe berechnet. Die resultierenden Wertepaare für die Bremsverzögerung und die Geschwindigkeit werden dann vorzugsweise tabellarisch abgelegt. Während der Sollwertvorgabe wird der nächste Stützpunkt berechnet, wobei hierbei die Grenzwerte der Folgeabschnitte mit berücksichtigt werden. Bevorzugt arbeitet der Mechanismus dabei für Echtzeit-Steuerungen optimiert.
-
Demnach wird ein Verfahren zur Steuerung einer Bewegung einer mechanischen Vorrichtung, wie insbesondere einem Industrieroboter, unter Verwendung nacheinander interpolierter Verfahrsätze, mittels einer durch eine Steuerungseinrichtung durchgeführten Bahnplanung zur Sicherstellung der Einhaltung der in jedem Verfahrsatz gültigen Beschränkungen und zum Abbau einer Geschwindigkeit auf v=0 und einer Beschleunigung auf a=0 bis zu einer vorgegebenen Endposition der Bewegung unter Verwendung zumindest einer ersten Verfahrensanweisung, welche zumindest in einer Phase einer Verfahrsatzvorbereitung für jeden Verfahrsatz eine noch erlaubte Endgeschwindigkeit berechnet, bei welcher ein Anhalten bis zum Streckenende garantiert wird; sowie mittels zumindest einer zweiten Verfahrensanweisung, welche eine Gültigkeit von zumindest während einer Verfahrsatzabarbeitung durch die erste Verfahrensanweisung ermittelten Werte verifiziert, und/oder mittels zumindest einer dritten Verfahrensanweisung, welche beim Überschreiten einer Beschränkung und/oder bei unzureichendem Bremsweg eines Verfahrsatzes, einen Bremsvorgang einleitet, indem für die verbliebene Strecke bis zum Verfahrsatzende Sektionen gebildet werden, welche für den Abbau der Beschleunigung und das Abbremsen auf den durch die erste Verfahrensanweisung ermittelten Endgeschwindigkeitswert benötigt werden, wobei die Bewegung mit einer Anfangsgeschwindigkeit und einer Anfangsbeschleunigung beginnt und an einem Endpunkt anhält, beansprucht, wie in Anspruch 1 angegeben.
-
Vorteilhafte Ausführungsformen und Weiterbildungen sind Gegenstand der Unteransprüche.
-
Es wird ein bewegliches, insbesondere mechanisches System bzw. Vorrichtung betrachtet, welches eine Strecke im Raum abfahren soll. Die Bewegung startet dabei mit einer Anfangsgeschwindigkeit und einer Anfangsbeschleunigung und soll an einem vorzugsweise definierten Endpunkt anhalten. Äußere Faktoren, wie z. B. die Mechanik und/oder die Masse des zu bewegenden Systems oder auch die Bewegungsrichtung geben dabei die Beschränkungen für die Beschleunigung und die Geschwindigkeit vor, welche nicht über- bzw. unterschritten werden können bzw. dürfen.
-
Zudem ist vorteilhaft die maximale Änderungsrate der Beschleunigung - der sogenannte Ruck - begrenzt.
-
Die Beschränkungen umfassen dabei vorzugsweise zumindest
eine Maximalgeschwindigkeit vmax , welche vorzugsweise die Einheit [mm/s] aufweist,
eine Maximalbeschleunigung amax , welche vorzugsweise die Einheit [mm/s2] aufweist,
eine Minimalbeschleunigung amin , welche einer Maximalverzögerung entspricht und ebenso vorzugsweise die Einheit [mm/s2] aufweist,
einen maximalen Ruck jmax und
einen minimalen Ruck jmin , welcher jeweils vorzugsweise die Einheit [mm/s3] aufweist.
-
Ist der zeitliche Verlauf des Rucks j:R
+ → R,t → j(t) bekannt, dann ergeben sich die Werte für die Beschleunigung, die Geschwindigkeit und die Position wie folgt:
-
Dabei sind a0 , v0 , s0 die Werte zu Beginn der Bewegung. Die Position bzw. der Weg bzw. die Strecke s weist dabei vorzugsweise die Einheit [mm] auf.
-
Im Folgenden sind die Angaben der Geschwindigkeit, Beschleunigung, Ruck und Position zur vereinfachten und verständlichen Darstellung jedoch ohne Einheiten aufgeführt, wobei die oben genannten Einheiten jederzeit bei der Betrachtung herangezogen werden können.
-
Für einen zeitlich konstanten Ruck können folgende Integrale direkt angeben werden:
-
Unter Einhaltung der oben genannten Beschränkungen soll die Strecke vorteilhaft in der kürzest möglichen Zeit abgefahren werden. Die gesamte Bewegung teilt sich dabei vorzugsweise in mindestens drei Phasen auf. In der ersten Phase, nämlich der Beschleunigungsphase, wird zunächst eine gewisse Maximalgeschwindigkeit aufgebaut, während in der zweiten Phase, nämlich der Konstantphase dann mit dieser Geschwindigkeit weiter verfahren wird und schließlich in der dritten Phase, nämlich der Verzögerungsphase, die Bewegung bzw. die Geschwindigkeit bis zum Stillstand abgebremst bzw. verzögert bzw. reduziert wird. Dabei soll die Beschleunigung vorzugsweise über die Zeit stetig und stückweise linear sein. Daraus ergibt sich ein stückweise konstanter Ruck.
-
Die Bahnplanung hat dabei die Aufgabe, wie oben bereits erwähnt, zum Einen die Einhaltung der in jedem Verfahrsatz gültigen Beschränkungen sicherzustellen und zum Anderen bis zur vorgegebenen Endposition die Geschwindigkeit auf v =0 und die Beschleunigung auf a =0 abzubauen bzw. zu reduzieren.
-
Vorzugsweise wird dabei die Einhaltung der zweiten Bedingung, nämlich die Geschwindigkeit und die Beschleunigung bis zu einer vorgegebenen Position im Wesentlichen vollständig abzubauen in zwei Schritten, nämlich dem Schritt der Verfahrsatzvorbereitung und dem Schritt der Verfahrsatzabarbeitung realisiert.
-
In der Verfahrsatzvorbereitung ermittelt vorzugsweise die erste Verfahrensanweisung, welche auch als „Look Ahead-Algorithmus“ bezeichnet werden kann, für jeden Verfahrsatz eine noch erlaubte Endgeschwindigkeit, mittels welcher bis zum Ende der Gesamtstrecke, d.h. bis zum Erreichen des letzten Verfahrsatzes die Bewegung bzw. die Geschwindigkeit der Bewegung bzw. Beschleunigung vollständig abgebremst bzw. reduziert werden kann. Beim Verfahren der Verfahrsätze im Schritt der Verfahrsatzabarbeitung werden dann diese Werte zum Ermitteln des eigentlichen Geschwindigkeitsverlaufs verwendet.
-
Vorzugsweise soll die tatsächliche Geschwindigkeit am Ende aller Verfahrsätze stets kleiner gleich der Geschwindigkeit der ersten Verfahrensanweisung sein, um so sicherstellen zu können, dass das System bzw. die Bewegung der Vorrichtung bzw. Maschine bis zum Erreichen des Endpunktes bis zum Stillstand verzögert werden kann.
-
Demzufolge wird vorzugsweise in der Phase einer Verfahrsatzabarbeitung die berechnete Endgeschwindigkeit zum Ermitteln des eigentlichen Geschwindigkeitsverlaufes verwendet, wobei ausgehend von den aktuellen Werten der Position (c_dCurrentPos), Geschwindigkeit (c_dCurrentVel) und/oder Beschleunigung (c_dCurrentAcc), mittels zumindest der ersten Verfahrensanweisung der maximale Ruck gesetzt und dadurch neue Werte der Position (dNewPos), Geschwindigkeit (dNewVel) und/oder Beschleunigung (dNewAcc) durch Interpolation ermittelt werden.
-
Vorzugsweise hat demnach die erste Verfahrensanweisung bzw. der „Look Ahead-Algorithmus“ die Aufgabe, für jeden der n Verfahrsätze, wobei vorzugsweise eine Mehrzahl an Verfahrsätzen und insbesondere mindestens ein Verfahrsatz angewandt wird, im Verfahrsatzpuffer eine Endgeschwindigkeit vLA zu ermitteln, die es erlaubt, bis zum Ende der Strecke auf v =0 (und a =0) abzubremsen. Somit muss vorteilhaft folglich ermittelt werden, wie viel Geschwindigkeit bei einer gegebenen Anfangsgeschwindigkeit vstart in einem Verfahrsatz unter Einhaltung der geltenden Beschränkungen jmax , jmin , amin abgebaut werden kann. Dies hängt bevorzugt von der Anfangsbeschleunigung ab. Zu Beginn eines Verfahrsatzes, welcher sich beispielsweise in der Beschleunigungsphase befindet, gilt folglich: astart > 0. D.h., dass zunächst diese Beschleunigung abgebaut und anschließend eine Verzögerung aufgebaut werden muss. Demzufolge kann also in diesem Fall weniger Geschwindigkeit abgebaut werden, als wenn sich die Bewegung bereits im Verzögerungsvorgang mit astart < 0 befinden würde.
-
Dies bedeutet im Fall der ersten Verfahrensanweisung, dass vorzugsweise neben einer Endgeschwindigkeit vLA auch eine Endbeschleunigung aLA anzugeben ist, so dass vorteilhaft für jeden Verfahrsatz ein Endwertepaar aus Endgeschwindigkeit und Endbeschleunigung (vLA , aLA ) ermittelt wird. Dafür wird bevorzugt mittels der ersten Verfahrensanweisung ein kontinuierlicher Verzögerungsvorgang gebildet, wobei immer gilt: aLA= 0.
-
Um nun für jeden Verfahrsatz das Endwertepaar (vLA, aLA)i, i=1, ... , n, auszurechnen, beginnend am Endpunkt der Strecke, an welchem nach Voraussetzung v=0 und a=0 gelten muss, wird (vLA, aLA)n =(0, 0) gesetzt. Ausgehend von diesen Endbedingungen (v=0; a=0) wird nun ein Endwertepaar (vLA, aLA)n-1 mit maximaler Geschwindigkeit v für das Verfahrsatzende des vorletzten Verfahrsatzes ermittelt, so dass unter Einhaltung der im n-ten Verfahrsatz geltenden Beschränkungen das Ende der Strecke mit (v, a) =(vLA, aLA.)n =(0, 0) erreicht werden kann.
-
Dieser Verzögerungsvorgang ist zeitlich rückwärts betrachtet demnach ein Beschleunigungsvorgang, wobei die zulässige Maximalbeschleunigung gerade dem Betrag der zulässigen Maximalverzögerung |amin| entspricht. Vorzugsweise wird mittels der ersten Verfahrensanweisung stets mit den Beträgen von Verzögerungen gerechnet, so dass alle ermittelten Werte für die Beschleunigung bzw. Verzögerung „a“ ein positives Vorzeichen besitzen.
-
Wie oben bereits erwähnt, besteht ein Beschleunigungsvorgang aus bis zu drei Abschnitten bzw. Segmenten bzw. Sektionen. Folglich erhalten in den Berechnungen die Anfangswerte vorzugsweise den Index 0 (v0 , a0 ) und die Endwerte bevorzugt den Index 3 (v3 , a3 ).
-
Am Anfang der Beschleunigung ist v0=0 und a0=0. Des Weiteren muss die Länge des n-ten Satzes s(n) in die Berechnung einfließen und die im Verfahrsatz geltenden Beschränkungen jmax , jmin , |amin| müssen beachtet werden. Zudem muss ermittelt werden, welchen Wert a3 die Beschleunigung am Ende des Beschleunigungsvorganges annehmen soll.
-
Da die gesuchte Beschleunigung am Ende des Beschleunigungsvorganges, d.h.
weder die Beschränkungen des letzten noch des vorletzten Verfahrsatzes verletzen sollte, wird
a3 bevorzugt zunächst wie folgt gesetzt:
-
Mit diesen Voraussetzungen kann nun
berechnet werden.
-
Im Folgenden wird dazu ein erstes Beispiel aufgeführt:
-
Es seien drei Verfahrsätze im Verfahrsatzpuffer:
| | s | vmax | amax | amin | jmax | jmin |
| Verfahrsatz 1 | 30 | 10000 | 4000 | -4000 | 50000 | -50000 |
| Verfahrsatz 2 | 20 | 10000 | 3000 | -3000 | 50000 | -50000 |
| Verfahrsatz 3 | 50 | 10000 | 4000 | -4000 | 50000 | -50000 |
-
Dann lauten die Werte der ersten Verfahrensanweisung für die Geschwindigkeit und die Beschleunigung wie folgt:
| | vLA | aLA |
| Verfahrsatz 1 | 706.8083379333484 | 3000 |
| Verfahrsatz 2 | 616.0990291262135 | 3000 |
| Verfahrsatz 3 | 0 | 0 |
-
Um die Endwerte bzw. das Endwertpaar aus Endgeschwindigkeit und Endbeschleunigung von Verfahrsatz
1 zu bestimmen, wird vorzugsweise im Wesentlichen genauso verfahren wie bei der Bestimmung des Endwertpaares für den Verfahrsatz
2. D.h., dass die berechneten Endwerte des Endwertpaares des zweiten Verfahrsatzes als Startwerte bzw. Anfangswerte bei der Berechnung der Endwerte des ersten Verfahrsatzes verwendet werden und folglich „rückwärts beschleunigt“ wird. Dabei wird die Endbeschleunigung, wie oben beschrieben, gebildet:
-
Jedoch ist es ebenso möglich, dass die gewünschte Beschleunigung
aLA gar nicht erreicht werden kann, wie folgendes zweites Beispiel zeigt:
| | s | vmax | amax | amin | jmax | jmin |
| Verfahrsatz 1 | 30 | 10000 | 4000 | -4000 | 50000 | -50000 |
| Verfahrsatz 2 | 20 | 10000 | 4000 | -4000 | 50000 | -50000 |
| Verfahrsatz 3 | 20 | 10000 | 4000 | -4000 | 20000 | -50000 |
-
Ausgehend von (v
LA, a
LA)
3=(0, 0) wird nur eine Endbeschleunigung von
anstatt des vorläufigen Wertes a
3=4000 erreicht.
-
Beim Eintreten dieses Falls wird die maximal erreichbare Beschleunigung als Endbeschleunigung der ersten Verfahrensanweisung (mit der entsprechend zugehörigen Geschwindigkeit) des vorliegenden Verfahrsatzes gesetzt. Es ergeben sich demnach folgende Werte:
| | vLA | aLA |
| Verfahrsatz 1 | 517.8025359433898 | 4000 |
| Verfahrsatz 2 | 330.1927248894627 | 3634.241185664279 |
| Verfahrsatz 3 | 0 | 0 |
-
Vorzugsweise gilt ganz allgemein, dass je kürzer der Verfahrsatz, je größer die Geschwindigkeit und/oder je kleiner der Ruck ist, desto weniger Beschleunigung kann innerhalb einer festgelegten Strecke auf- oder abgebaut werden.
-
Problematisch wird dies jedoch beispielsweise bei der Konstellation, wie es das dritte Beispiel zeigt:
| | s | vmax | amax | amin | jmax | jmin |
| Verfahrsatz 1 | 30 | 10000 | 1000 | -1000 | 50000 | -50000 |
| Verfahrsatz 2 | 10 | 10000 | 4000 | -4000 | 20000 | -20000 |
| Verfahrsatz 3 | 50 | 10000 | 4000 | -4000 | 20000 | -50000 |
-
Nach der ersten Berechnung ergeben sich für Endbeschleunigung und -geschwindigkeit des zweiten Verfahrsatzes
-
Werden diese Werte zur Berechnung der Endwerte des ersten Verfahrsatzes herangezogen, wird eine Endbeschleunigung von
errechnet, obwohl nur eine Beschleunigung von 1000 erlaubt ist.
-
Die Differenz a
Δ =3694.848498478164 - 1000 =2694.848498478164 muss deshalb vorher schon abgebaut werden. Dazu wird nachträglich die Endbeschleunigung des zweiten Verfahrsatzes reduziert, um die Beschränkungen des ersten Verfahrsatzes einhalten zu können. Als neue Endbeschleunigung wird gesetzt:
-
Jetzt kann, wie bekannt, weitergerechnet werden, wobei folgende Endwerte erhalten werden:
| | vLA | aLA |
| Verfahrsatz 1 | 581.8476387081914 | 1000 |
| Verfahrsatz 2 | 561.3371315246402 | 1305.151501521836 |
| Verfahrsatz 3 | 0 | 0 |
-
Ein viertes Beispiel soll aufzeigen, was erforderlich ist, sofern die berechnete Endgeschwindigkeit die zulässige Maximalgeschwindigkeit verletzt, wobei dabei folgende zwei Verfahrsätze betrachtet werden:
| | s | vmax | amax | amin | jmax | jmin |
| Verfahrsatz 1 | 100 | 10000 | 6000 | -6000 | 50000 | -50000 |
| Verfahrsatz 2 | 250 | 1500 | 6000 | -6000 | 20000 | -50000 |
-
Als Endwerte für den ersten Verfahrsatz wird vorläufig
erhalten. Demnach verletzt die Endgeschwindigkeit des ersten Verfahrsatzes
die zulässige Maximalgeschwindigkeit des zweiten Verfahrsatzes. In diesem Fall sollte die berechnete Beschleunigung vorzugsweise nicht übernommen werden und die Geschwindigkeit nicht einfach auf die zulässige Maximalgeschwindigkeit gesetzt werden, also (v
LA, a
LA)
1 =(1500, 6000), da folglich, ausgehend von diesen Anfangswerten, die Beschleunigung bzw. die Verzögerung nicht abgebaut werden kann, bevor die Geschwindigkeit auf Null reduziert wurde.
-
Des Weiteren ist es nicht ausreichend die Endbeschleunigung vom Verfahrsatz
2 auf Null und die Endgeschwindigkeit auf
zu setzen, da beim Starten mit diesen Werten in den letzten Verfahrsatz die Distanz von 250 folglich nicht ausreichen würde, um die Bewegung vollständig abbremsen zu können. Der Bremsweg betrüge im vorliegenden Fall 277.5.
-
Vorzugsweise wird stattdessen wie im Folgenden beschrieben vorgegangen:
-
Verletzt eine berechnete Geschwindigkeit der ersten Verfahrensanweisung die zulässige Maximalgeschwindigkeit, so wird die letzte Berechnung nochmals durchgeführt, jedoch dieses Mal mit a
3=0, wodurch folgende Werte erhalten werden:
| | vLA | aLA |
| Verfahrsatz 1 | 1409.067567567568 | 0 |
| Verfahrsatz 2 | 0 | 0 |
-
Läge die Maximalgeschwindigkeit noch niedriger als der aktuell berechnete Wert, so wird schließlich die Maximalgeschwindigkeit als Look Ahead-Geschwindigkeit bzw. als Geschwindigkeit der ersten Verfahrensanweisung gesetzt.
-
Im Übergang zweier Verfahrsätze ist folglich in diesem Fall bzw. bei dieser ersten Verfahrensanweisung die Geschwindigkeit immer konstant. Die von der ersten Verfahrensanweisung ermittelten Endgeschwindigkeiten werden vorzugsweise dauerhaft gespeichert.
-
Vorzugsweise wird mit Hilfe der zweiten Verfahrensanweisung (im Folgenden auch als „DecCheck“-Algorithmus bezeichnet) geprüft, ob die neuen Werte der Position (dNewPos), der Geschwindigkeit (dNewVel) und der Beschleunigung (dNewAcc) gültig sind.
-
D.h., dass in der Verfahrsatzvorbereitung bzw. in der Satzvorbereitung zuerst mit der ersten Verfahrensansweisung für jeden Verfahrsatz eine Endgeschwindigkeit (mit zugehöriger Endbeschleunigung) ermittelt wurde, welche die maximal erlaubte Geschwindigkeit am Ende des jeweiligen Verfahrsatzes darstellt, um bis zum Ende der Gesamtstrecke die Bewegung abbremsen zu können, während in der Verfahrsatzabarbeitung diese Werte wiederum genutzt werden, um den tatsächlichen Geschwindigkeitsverlauf zu bestimmen.
-
Zu Beginn der Bewegung, d.h. in der Beschleunigungsphase soll eine Geschwindigkeit aufgebaut werden. Ausgehend von den aktuellen Werten für die Position, die Geschwindigkeit und die Beschleunigung (c_dCurrentPos, c_dCurrentVel, c_dCurrentAcc) wird der maximale positive Ruck gesetzt, wodurch die Werte im nächsten Interpolationsschritt erhalten werden. Diese ergeben sich einfach aus den oben aufgeführten Formeln (1), indem die Zykluszeit eingesetzt wird.
-
Diese neuen Werte (dNewPos, dNewVel, dNewAcc) sind bevorzugt gültig, wenn sichergestellt ist, dass:
- 1. sämtliche Beschränkungen in diesem und allen folgenden Verfahrsätzen eingehalten werden; und
- 2. bis zum Streckenende vollständig abgebremst werden kann.
-
Ob die „neue“ Beschleunigung (dNewAcc) die Maximalbeschleunigung im selben Verfahrsatz verletzt, wird vorzugsweise gleich nach deren Berechnung überprüft. Danach wird, wie oben erwähnt, mit Hilfe der zweiten Verfahrensanweisung geprüft, ob die neuen Werte gültig sind.
-
Um ermitteln zu können, ob die Bewegung bis zum Streckenende angehalten werden kann, wird bevorzugt ein Verzögerungsvorgang mit den vorläufigen neuen Werten (dNewPos, dNewVel, dNewAcc) als Startwerte gebildet.
-
Vorzugsweise muss bei diesem Verzögerungsvorgang darauf geachtet werden, dass sämtliche Beschränkungen eingehalten werden, d.h., dass beispielsweise nicht die Minimalbeschleunigung amin (bzw. die maximale Verzögerung) eines Verfahrsatzes unterschritten wird. Diese Problematik wurde auch schon bei der Beschreibung der ersten Verfahrensanweisung dargelegt, wo iterativ dort für jeden Verfahrsatz Beschleunigungsendwerte aLA bestimmt wurden, welche es ermöglichen, die Beschleunigungsgrenze amin in jedem Verfahrsatz einzuhalten. Dies soll demnach auch im Folgenden berücksichtigt werden.
-
Die zweite Verfahrensanweisung (DecCheck-Algorithmus) wird vorteilhaft mittels zweier Methoden, nämlich einer Verzögerungs-Methode (Decelerate) und einer Bremsstreckenberechnungs-Methode (CalcBrakeDistance) erfüllt.
-
D.h., dass vorzugsweise der Verzögerungsvorgang mit den neuen Werte der Position (dNewPos), der Geschwindigkeit (dNewVel) und der Beschleunigung (dNewAcc), welche als Start- bzw. Anfangswerte dienen, unter Einsatz der Verzögerungs-Methode, bei welcher eine Endgeschwindigkeit unter einer vorgegeben Strecke ermittelt wird, und der Bremsstreckenberechnungs-Methode, bei welcher eine Strecke unter einer vorgegebenen Endgeschwindigkeit ermittelt wird, gebildet wird.
-
Demnach werden, um einen Verzögerungsvorgang zu ermöglichen, neben den Anfangswerten für die Geschwindigkeit und die Beschleunigung auch die Werte bezüglich einer gewünschten Endbeschleunigung und einer Strecke benötigt, auf welcher die Bewegung verzögert werden soll. Dies entspricht den Eingangsparametern der Verzögerungs-Methode (Decelerate: StartVel, StartAcc, EndAcc, Distance).
-
Ein einziger Verzögerungsvorgang kann vorzugsweise nicht über Verfahrsatzgrenzen hinweg gebildet werden, da sich im Allgemeinen die Beschränkungen in den einzelnen Verfahrsätzen unterscheiden. Stattdessen wird bevorzugt für jeden Verfahrsatz ein eigener Verzögerungsvorgang gebildet.
-
Befindet sich folglich die Bewegung gerade im Verfahrsatz an der Position x und ist die Gesamtstrecke des Verfahrsatzes s, dann steht eine Strecke s - x für die Verzögerung der Bewegung bzw. der Geschwindigkeit und/oder der Beschleunigung zur Verfügung.
-
Um zu bestimmen, welche Endbeschleunigung nun der Verzögerungs-Methode übergeben werden soll, wird die Verzögerung aLA (bzw. die negative Beschleunigung), welche in der ersten Verfahrensanweisung ermittelt wurde, verwendet, da diese sicherstellt, dass die Beschränkungen für die Minimalbeschleunigung amin in jedem Verfahrsatz eingehalten werden können.
-
Als Ergebnis der Berechnung in der Verzögerungs-Methode wird vorteilhaft eine Endgeschwindigkeit (EndVel) ermittelt. Daneben gibt vorzugsweise die Verzögerungs-Methode auch die während des Verzögerungsvorgangs maximal erreichte Geschwindigkeit (LimVel) aus. Falls nämlich die Anfangsbeschleunigung (StartAcc) positiv ist, muss diese folglich zunächst erst abgebaut werden, damit anschließend verzögert werden kann. Solange die Beschleunigung „a“ jedoch positiv ist, wird weiterhin Geschwindigkeit aufgebaut, so dass die maximal erreichte Geschwindigkeit größer als die Anfangsbeschleunigung bzw. - geschwindigkeit ist.
-
Weiterhin ist es denkbar, dass die gewünschte Endbeschleunigung (EndAcc) gar nicht erreicht wird. Auch diese Situation kann bereits beim Beschleunigungsvorgang in der ersten Verfahrensanweisung auftreten.
-
Dazu folgendes fünftes Beispiel:
-
Es seien eine Strecke der Länge s =30 und die Beschränkung jmin =-20000 gegeben. Die Anfangswerte lauten v0 =800 und a0 =3000. Die gewünschte Endbeschleunigung ist a3 =4000. Dann wäre eine Strecke s =320.8333 notwendig, um diese Endbeschleunigung zu erreichen. Innerhalb der Strecke s könnte dagegen die Beschleunigung auf a3=2293.160855222864 abgebaut werden. Die Endgeschwindigkeit lautet dann in diesem Fall v3 =893.5353323018386. Diese Endgeschwindigkeit v3 ist dann im vorliegenden Fall gleichzeitig die maximal erreichte Geschwindigkeit.
-
Die Verzögerungs-Methode liefert folglich die Ausgangsparameter der Endgeschwindigkeit (EndVel), der Endbeschleunigung (EndAcc) und der Anfangsbeschleunigung bzw. - geschwindigkeit (LimVel) zurück.
-
D.h., dass die durch die Verzögerungs-Methode ermittelte Endbeschleunigung immer größer gleich der Beschleunigung aLA ist.
-
Demnach werden folglich vorzugsweise mittels der Verzögerungs-Methode ermittelte Verfahrsatz-Endwerte für die Geschwindigkeit (
v3 ) und die Beschleunigung (
a3 ) mit den ermittelten Endwerten (
vLA ,
aLa ) der ersten Verfahrensanweisung verglichen, wobei immer gilt:
-
Dadurch ergeben sich folgende Fallunterscheidungen:
| v3>vLA | Werte sind ungültig. |
| v3=vLA; a3=aLA | Werte sind gültig. |
| v3=vLA; a3>aLA | Es kann keine Aussage über die Gültigkeit der Werte gemacht werden. |
-
Die erste Verfahrensanweisung hat für die Endpositionen der einzelnen Verfahrsätze die maximalen Geschwindigkeiten ermittelt, welche ein Anhalten der Bewegung, d.h. ein Reduzieren der Geschwindigkeit und der Beschleunigung auf den Wert Null, bis zum Streckenende garantieren. Jede größere Geschwindigkeit als die Endgeschwindigkeit gemäß der ersten Verfahrensanweisung vLA führt unvorteilhaft dazu, dass nicht mehr innerhalb der Strecke abgebremst werden kann. Deshalb sind die vorläufigen Werte in diesem Fall ungültig.
-
Ist die Geschwindigkeit v3 dagegen kleiner gleich der Geschwindigkeit der ersten Verfahrensanweisung, müssen die Beschleunigungen vorzugsweise miteinander verglichen werden. Sind dagegen a3 und aLA identisch, dann kann folglich bevorzugt innerhalb der gesamten Strecke abgebremst werden.
-
Ist a3 größer als aLA kann dagegen keine Aussage über die Gültigkeit der Werte gemacht werden. Dann werden die durch die Verzögerungs-Methode ermittelten Werte der Endgeschwindigkeit (EndVel) und der Endbeschleunigung (EndAcc) dem nächsten Verfahrsatz, welcher seinerseits mit diesen Anfangswerten einen Verzögerungsvorgang bildet, übergeben. D.h., dass am Anfang des nächsten Verfahrsatzes die Gesamtdistanz des darauffolgenden Verfahrsatzes der nächsten Verzögerungs-Methode übergeben werden, so dass wiederum Endwerte bzw. Endwertpaare erhalten werden, welche mit den entsprechenden Werten der ersten Verfahrensanweisung verglichen werden. Falls dann jedoch immer noch nicht über die Gültigkeit der vorläufigen Werte entschieden werden kann, wird mit dem übernächsten Verfahrsatz weitergerechnet. Dies wird solange fortgeführt, bis eine Entscheidung getroffen werden kann.
-
Die zweite Methode der zweiten Verfahrensanweisung ist die Bremsstreckenberechnungs-Methode (CalcBrakeDistance). Während bei der Verzögerungs-Methode eine Strecke vorgegeben wird und eine Endgeschwindigkeit ermittelt wird, benötigt die Bremsstreckenberechnungs-Methode eine Endgeschwindigkeit und liefert die Strecke zurück, welche erforderlich ist, um auf diese Endgeschwindigkeit zu verzögern.
-
Ebenso wie die Verzögerungs-Methode berechnet die Bremsstreckenberechnungs-Methode die beim Verzögerungsvorgang erreichte Maximalgeschwindigkeit (LimVel). Ebenso muss eine Endbeschleunigung angegeben werden, welche am Ende der Verzögerung erreicht werden soll. Kann diese Endbeschleunigung nicht erreicht werden bevor die Geschwindigkeit v3 erreicht wird, wird die bis dahin erreichte Verzögerung zurückgegeben.
-
Dazu folgendes sechstes Beispiel:
-
Es seien v0 =300, a0 =0, a3 =-4000=amin , jmax =50000=-jmin und s=50. Setzt man v3 =0, dann wird ein Bremsweg SB = 17.2125 ermittelt.
-
Zusätzlich zur Bildung eines Verzögerungsvorgangs und dem anschließenden Vergleichen der Wertepaare (v3 , a3 ) und (vLA , aLA ), kann auch beispielsweise mit der Bremsstreckenberechnungs-Methode auf das Wertepaar (vLA , aLA ) verzögert werden, um zu überprüfen, ob die dazu benötigte Strecke größer oder kleiner gleich der verbleibenden Distanz bis zum Verfahrsatzende ist.
-
Ist die Strecke kleiner gleich der verbleibenden Distanz bis zum Verfahrsatzende, dann sind die Werte gültig, anderenfalls ungültig. Für aLA≠0 ist diese Berechnung jedoch nicht immer so einfach durchführbar. So kann der Fall auftreten, dass das Wertepaar der ersten Verfahrensanweisung mit den gegebenen Startwerten nicht erreicht wird. Daher wird diese Methode vorzugsweise immer nur dann angewendet, wenn gilt aLA=0.
-
Mit der ersten Verfahrensanweisung wurden in der Verfahrsatzvorbereitung Werte für Endgeschwindigkeiten ermittelt, mit denen bis zum Streckenende verzögert werden kann. Bei diesen Werten galt, dass die zugehörige Beschleunigung stets gleich Null ist.
-
Mit diesen Werten kann vorteilhaft die Bremsstrecke ermittelt werden (dNewVel, dNewAcc, c_dConstEndVeILA, 0.0, dBrakeDist, dLimVel), wobei bevorzugt verglichen wird, ob die Bremsdistanz (dBrakeDist) größer oder kleiner gleich der Distanz bis zum Verfahrsatzende (dRestDist) ist.
| dBrakeDist = dRestDist | Werte sind gültig. |
| dBrakeDist > dRestDist | Umschalten auf die Verzögerungs-Methode (DecCheckLow =FALSE). |
-
Ist der Bremsweg kleiner gleich der Reststrecke bis zum Verfahrsatzende sind die Werte gültig. Jedoch muss es umgekehrt nicht sein, dass die Werte ungültig sind, wenn der Bremsweg größer ist. Das „Bremsweg-Kriterium“ ist also hinreichend, jedoch nicht notwendig für die Gültigkeit der Werte der Position, der Geschwindigkeit und/oder der Beschleunigung (dNewPos, dNewVel, dNewAcc).
-
Gilt in einem Verfahrsatz aLA=0, dann wird vorzugsweise die Bremsstreckenberechnungs-Methode angewandt, wobei die Verzögerungs-Methode dabei bevorzugt nicht zum Einsatz kommt, so dass folglich das Bremswegkriterium erforderlich ist. Das bedeutet, dass wenn der Bremsweg größer als die Distanz bis zum Verfahrsatzende ist, muss bevorzugt abgebremst werden, wobei die Werte jedoch dann ungültig sind.
-
Mittels der zweiten Verfahrensanweisung wurde folglich eine Methodik entwickelt, die nachweist oder auch widerlegt, dass mit den vorläufigen Werten der Position, Geschwindigkeit und Beschleunigung (dNewPos, dNewVel, dNewAcc) das Abbremsen bis zum Ende der Gesamtstrecke möglich ist. Des Weiteren wird mittels dieser zweiten Verfahrensanweisung im Wesentlichen nie die Minimalbeschleunigung amin der einzelnen Verfahrsätze verletzt, so dass folglich diese Beschränkung im Wesentlichen stets eingehalten wird.
-
In einer bevorzugten Ausführungsform wird der Ruck zumindest teilweise und besonders bevorzugt stets frei gewählt, so dass im Allgemeinen auch jmax . und jmin im Wesentlichen immer eingehalten werden. Folglich fehlen lediglich noch die Beschränkungen amax und vmax .
-
Da in der zweiten Verfahrensanweisung ein kontinuierlicher Verzögerungsvorgang gebildet wird, werden positive Beschleunigungen zuerst vorzugsweise vollständig abgebaut. Die maximale Beschleunigung wird bei diesem Vorgang also immer am Anfang eines Verfahrsatzes angenommen.
-
Demnach wird vorzugsweise zu Beginn jedes Verfahrsatzes mittels der zweiten Verfahrensanweisung geprüft, ob die Anfangsgeschwindigkeit des jeweiligen Verfahrsatzes die Maximalbeschleunigung amax überschreitet.
-
Des Weiteren wird auf die Maximalgeschwindigkeit geachtet, indem nach dem Aufrufen der Bremsstreckenberechnungs-Methode und/oder der Verzögerungs-Methode beispielsweise immer die Werte der Anfangsbeschleunigung bzw. -geschwindigkeit (LimVel) mit den Werten der maximalen Geschwindigkeit (c_dMaxVel) verglichen werden.
-
Somit werden in der zweiten Verfahrensanweisung vorzugsweise alle Beschränkungen in die Betrachtung einbezogen. Wird eine Beschränkung verletzt, liefert beispielsweise die zweite Verfahrensanweisung einen Wert größer Null zurück. Anderenfalls ist mit dem Rückgabewert gleich 0 alles in Ordnung.
| Rückgabe-Wert | Bedeutung |
| 0 | Keine Verletzung; Werte sind gültig. |
| 1 | Bremsweg reicht nicht aus. |
| 2 | Maximalgeschwindigkeit wurde überschritten. |
| 3 | Maximalbeschleunigung wurde überschritten. |
-
Wird während des Ablaufs der zweiten Verfahrensanweisung festgestellt, dass die Maximalbeschleunigung oder die Maximalgeschwindigkeit eines Verfahrsatzes verletzt wurde und/oder der Bremsweg nicht ausreicht, dann muss folglich vorzugsweise ein Bremsvorgang eingeleitet werden.
-
Um jedoch korrekt verzögern zu können, werden für die verbleibende Strecke bis zum Verfahrsatzende Sektionen gebildet. D.h., dass jeder Verfahrsatz eine Vielzahl, jedoch mindestens eine Sektion und vorzugsweise mindestens zwei Sektionen aufweisen kann.
-
Folglich gibt es auch eine Vielzahl von verschiedenen Methoden-Bestandteilen bzw. Abschnitten, welche für das Bilden von Sektionen zuständig sind (BuildSections(), BuildAccSections(), BuildDecSections(), RemoveAcc (), BuildEndOfMove (), BuildFinalMove ()).
-
Vorzugsweise werden beim Bilden der Sektionen die Anfangswerte (c_dSi, c_dVi, c_dAi) und die Rücke (c_dJi) in jeder einzelnen Sektion gespeichert. Zudem muss bevorzugt bekannt sein, wie lange das Verfahren jeder einzelnen Sektion andauert, so dass die Zeitpunkte (c_dTi), welche die Anfangszeit angeben, bei welcher die Sektion „i“ beginnt, gespeichert werden.
-
Vor dem Bilden der Sektionen werden zudem die aktuelle Zeit (c_dTimeOffset) und Position (c_dPosOffset) gespeichert. Das hat den Vorteil, dass in den folgenden Berechnungen die Anfangswerte für die Zeit und die Position auf T=0 und s=0 gesetzt werden können.
-
Um die korrekten Werte zu erhalten, werden dann wieder die Offset-Werte addiert. Wie viele und welche der vorzugsweise sieben Sektionen benötigt werden, ist von verschiedenen Faktoren abhängig. Wurde beispielsweise die Maximalgeschwindigkeit in einem Verfahrsatz verletzt, so wird beim Bilden der Sektionen in diesem Verfahrsatz folglich vorzugsweise versucht, exakt diese Maximalgeschwindigkeit zu erreichen.
-
Ein Ziel der vorliegenden Erfindung ist dabei demnach schnellstmöglich Geschwindigkeit abzubauen, wobei hierbei mehrere Fälle hinsichtlich der Anfangs- und Endbeschleunigung, wie die folgende Tabelle zeigt, unterschieden werden.
| a0 | aLA |
| >0 | =0 |
| =0 | =0 |
| <0 | =0 |
| >0 | <0 |
| =0 | <0 |
| <0 | <0 |
-
In einer bevorzugten Ausführungsform wird des Weiteren mit jedem Aufruf der dritten Verfahrensanweisung der Zeitpunkt (c_dTFinal), welcher das zeitliche Ende der Sektionen speichert, gesetzt, wobei dabei die Werte für die Position, die Geschwindigkeit, die Beschleunigung und den Ruck zurückgeliefert werden, welche der nachfolgende Verfahrsatz im ersten Interpolationsschritt wiederum als Anfangswerte verwendet.
-
Weitere Vorteile, Ziele und Eigenschaften der vorliegenden Erfindung werden anhand nachfolgender Beschreibung anliegender Zeichnung erläutert.
-
Komponenten, welche in den Figuren wenigstens im Wesentlichen hinsichtlich ihrer Funktion übereinstimmen, können hierbei mit gleichen Bezugszeichen gekennzeichnet sein, wobei diese Komponenten nicht in allen Figuren gekennzeichnet und erläutert sein müssen.
-
In den Figuren zeigen:
- 1 ein Diagramm zur beispielhaften Abbildung des zeitlichen Verlaufs von Geschwindigkeit, Beschleunigung und Ruck einer Bewegung;
- 2 ein Diagramm zur Abbildung des Bahnverlaufs eines Bremsvorganges mit positiver Anfangs- und verschwindender Endbeschleunigung (a0>0, aLA=0):
- 3 ein Diagramm zur Abbildung des Bahnverlaufs eines Bremsvorganges, bei welcher innerhalb der Sektionen die Bewegung verzögert wird;
- 4 ein Diagramm zur Abbildung des Bahnverlaufs eines Bremsvorganges mittels der Bildung lediglich einer zweiten Sektion;
- 5 ein Diagramm zur Abbildung des Bahnverlaufs eines Bremsvorganges mit negativer Anfangs- und negativer Endbeschleunigung (a0<0, aLA<0);
- 6 ein Diagramm zur Abbildung des Bahnverlaufs eines Bremsvorganges mit negativer Anfangs- und verschwindender Endbeschleunigung(a0<0, aLA=0);
- 7 ein Diagramm zur Abbildung des Bahnverlaufs eines Bremsvorganges mit verschwindender Anfangs- und verschwindender Endbeschleunigung (a0=0, aLA=0);
- 8 ein Diagramm zur Abbildung des Bahnverlaufs eines Bremsvorganges mit verschwindender Anfangs- und negativer Endbeschleunigung (a0=0, aLA<0);
- 9 ein Diagramm zur Abbildung des Bahnverlaufs eines Bremsvorganges mit positiver Anfangsbeschleunigung und dem Ziel die Maximalgeschwindigkeit zu erreichen, für den Fall a0=0, aLA=0;
- 10 ein Diagramm zur Abbildung des Bahnverlaufs eines Bremsvorganges mit positiver Anfangsbeschleunigung und dem Ziel die Maximalgeschwindigkeit zu erreichen, für den Fall a0=0, aLA<0;
- 11 ein Diagramm zur Abbildung der Ruckanpassung im letzten Verfahrsatz; und
- 12 ein Diagramm zur Abbildung von Zeiten beim Verfahrsatzübergang.
-
1 zeigt ein Diagramm zur beispielhaften Abbildung des zeitlichen Verlaufs von der Geschwindigkeit v, der Beschleunigung a und des Rucks j einer Bewegung, wobei der Ruck j für Bewegungen nicht über die gesamte Zeit des Bewegungsablaufs durch einen geschlossenen Funktionsterm dargestellt werden kann. Stattdessen wird der Ruck j abschnittsweise definiert.
-
Wie in 1 deutlich zu erkennen ist, teilt sich die Bewegung in sieben Abschnitte auf, innerhalb derer der Ruck j jeweils konstant. ist. Die Bewegung beginnt zum Zeitpunkt T0 =0 und endet zum im Wesentlichen festgelegten Zeitpunkt T7 bzw. bei der Abschnittsgrenze T7 . Die Abschnitte sind folglich von t0 bis t6 nummeriert. Der i-te Abschnitt wird begrenzt durch die Zeitpunkte bzw. Abschnittsgrenzen Ti und Ti+1, i =0, ... ,6.
-
Der i-te Abschnitt hat dann die Länge ti =Ti+1 -TI. Umgekehrt gilt Ti+1 =Ti + ti, i =0, ..., 6.
-
Der Ruck
j wird nun abschnittsweise angegeben durch:
-
Dabei sind
j0 , ...
j6 reelle Zahlen. Gemäß
1 gilt z.B.:
-
Um die Beschleunigung
a zu einer beliebigen Zeit
t bzw. zu einem beliebigen Zeitwert
t, welcher einem Zeitpunkt
t entspricht, zu erhalten, muss der Ruck
j beispielsweise über mehrere Abschnitte integriert werden. Liegt
t im i-ten Abschnitt, d. h. T
i < t = T
i+1, dann ist
-
Dabei ist:
i=0,...,6
die Änderung der Beschleunigung
a im i-ten Abschnitt. Die Beschleunigung an den Abschnittsgrenzen wird dabei mit a
i=a(T
i) bezeichnet,
Für diese gilt:
i=0,...,6
-
Somit lautet die Beschleunigung
a zu einer beliebigen Zeit
t im i-ten Abschnitt:
-
Für Geschwindigkeit
v und Position
s werden analoge Größen eingeführt. So ist:
die Geschwindigkeitsänderung im i-ten Abschnitt und v
i :=v(T
i) =v
i-1, + dv
i-1 die Geschwindigkeit zum Zeitpunkt T
i. Für eine beliebige Zeit
t ∈ [T
i, T
i+1] lautet die Geschwindigkeit
-
Die Positionsänderung im i-ten Abschnitt erhält man durch
-
Die Position an den Abschnittsgrenzen ist s
i:=s(T
i)=s
I-1+ds
I-1 und für eine beliebige Zeit
t ∈ [T
i, T
i+1] schließlich
-
In der 2 ist ein Diagramm zur Abbildung des Bremsvorganges mit positiver Anfangs- und verschwindender Endbeschleunigung gezeigt. D.h., dass die aktuelle Beschleunigung a0>0 und die Beschleunigung aus der ersten Verfahrensanweisung aLA=0 ist.
-
Die Bewegung befindet sich beim Bilden der Sektionen also gerade in einem Beschleunigungsvorgang, so dass zunächst die vorhandene Beschleunigung abgebaut werden muss. D.h. die Bewegung befindet sich folglich im zweiten Segment, wobei gilt: T2 =0.
-
Es wird nun die dritte Verfahrensanweisung und vorzugsweise die Methode BuildAccSections (StartVel, StartAcc, TargetVel) aufgerufen, um dieser die aktuellen Werte für die Geschwindigkeit (=v2 ) und die Beschleunigung (=a2) zu übergeben.
-
Da keine bestimmte Geschwindigkeit erreicht wird, sondern lediglich vorzugsweise so schnell wie möglich die Beschleunigung abgebaut werden soll, wird die Zielgeschwindigkeit bzw. die Endgeschwindigkeit auf Null gesetzt (TargetVel =0). Folglich wird berechnet, welche Zeit und Strecke benötigt wird, um bei Wirkung von j2 =jmin zu a3 =0 zu gelangen. Die Endwerte lauten dann T3 , s3 , v3 , a3=0.
-
Zu der Beschleunigung der ersten Verfahrensanweisung aLA=0 gehört auch eine Geschwindigkeit vLA , welche bevorzugt am Ende des Verfahrsatzes erreicht werden soll. D.h., dass von einer Geschwindigkeit v3 auf eine Geschwindigkeit vLA<v3 verzögert wird.
-
Um den Verzögerungsvorgang zu planen, wird demnach bevorzugt die dritte Verfahrensanweisung (StartVel, StartAcc, EndVel) mit den Startwerten v3(=v4), a3=0(=a4) und der gewünschten Endgeschwindigkeit vLA verwendet. Hierbei werden anfänglich die Startwerte T4 =0 und s4 =0 angewandt, wobei erst später die korrekten Werte gespeichert werden.
-
Folglich wurden bisher die Strecken berechnet, welche für den Abbau bzw. die Reduzierung der Beschleunigung auf vLA , d.h. der Geschwindigkeit der ersten Verfahrensanweisung benötigt werden. Werden nun die beiden Streckenstücke und die aktuelle Position addiert, so erhält man im Wesentlichen die Distanz des aktuellen Verfahrsatzes. Jedoch ist es möglich, dass eine kleine Differenz beispielsweise aus folgendem Grund entstehen könnte: Das Bilden von Sektionen wurde, wie zuvor beschrieben, deshalb erforderlich, da bei einer weiteren Beschleunigung mit den Werten im nächsten Interpolationsschritt ein zu langer Bremsweg benötigt worden wäre, um auf vLA abzubremsen. Mit den aktuellen Werten hingegen ist ein Verzögern noch möglich. Der Grenzfall, bei dem ein Verzögern auf vLA gerade bis zum Endpunkt des Verfahrsatzes noch möglich ist, wird irgendwo zwischen den aktuellen Werten und den Werten im nächsten Schritt erreicht.
-
Nachdem die Zeit t3 für diesen Abschnitt berechnet wurde, werden die Zeiten und Positionen am Anfang jedes einzelnen Abschnitts angepasst. Die Werte am Ende der letzten berechneten Sektion werden abgespeichert (zusätzlich in den Größen c_dS. c_dV, c_dA. c_dJ, c_dTFinal).
-
Darauf folgend wird die zweite Verfahrensanweisung deaktiviert.
-
Immer wenn die Endbeschleunigung der ersten Verfahrensanweisung aLA=0 ist, kann die Endgeschwindigkeit vLA exakt erreicht werden. Ist dagegen aLA negativ, wie in 3 dargestellt, wird dann die Beschleunigung innerhalb der Sektionen so weit wie möglich verzögert, um zu versuchen am Ende des Verfahrsatzes aLA zu erreichen. Einen dritten Abschnitt gibt es in diesem Fall also nicht.
-
Zum Bilden der Sektionen 4 bis 6 wird die dritte Verfahrensanweisung (BuildDecSections mit StartVel, StartAcc, EndAcc, Distance) aufgerufen, welcher dann die aktuellen Werte für die Geschwindigkeit und die Beschleunigung übergeben werden. Dabei ist aLA die Endbeschleunigung und die verbleibende Wegstrecke ist die Distanz, die sich dadurch ergibt, dass von der Gesamtdistanz des Verfahrsatzes die aktuelle Wegstrecke abgezogen wird, welche bei der Funktion der dritten Verfahrensanweisung (BuildAccSections()) verbraucht wurde.
-
Auch wäre es denkbar, dass es gar nicht möglich ist, alle Sektionen (DecSections) zu bilden, da bis zum Ende des Verfahrsatzes die Beschleunigung nicht auf a=0 abgebaut werden kann. In diesem Fall wird lediglich die zweite Sektion, wie in 4 gezeigt, gebildet.
-
Ist die Anfangsbeschleunigung negativ, was beispielsweise dann passieren kann, wenn über mehrere Verfahrsätze hinweg verzögert wird, können die in den 5 und 6 gezeigten Fälle auftreten.
-
Der Fall a0<0, aLA<0 (5) ist ähnlich wie der Fall a0>0, aLA<0 (ähnlich zu 2), nur dass hier die Beschleunigungssektionen (AccSections) entfallen, so dass es nur die Abschnitte 4 bis 6 gibt.
-
Einen weiteren Fall zeigt 6. Generell liegt die Geschwindigkeit bei der Bahninterpolation stets etwas unterhalb der durch die erste Verfahrensanweisung berechneten Geschwindigkeit. Das führt im Fall a0<0, aLA=0 dazu, dass die gewünschte Endgeschwindigkeit vLA erreicht wird, bevor das Verfahrsatzende erreicht ist. Die übrige Strecke wird dann mit dieser Geschwindigkeit weiter abgefahren. Jedoch werden dabei keine Sektionen bis zum Verfahrsatzende gebildet, sondern es erfolgt ein Austreten aus den vorausberechneten Sektionen und ein Setzen beim Austreten aus den Sektionen der Werte.
-
In den 7 und 8 wird jeweils der Fall aufgezeigt, dass in einem Verfahrsatz die Maximalgeschwindigkeit erreicht werden soll oder bereits erreicht worden ist.
-
Sollen Sektionen gebildet werden, dann können diese - falls aLA=0 ist - bis zum Verfahrsatzende geplant werden (siehe 7). Dieser Bahnverlauf berechnet sich analog zu dem in 2, nur muss jetzt keine Beschleunigung abgebaut werden, so dass die Abschnitte 0 bis 2 entfallen.
-
In 8 wird zunächst in der zweiten Verfahrensanweisung mit konstanter (Maximal-) Geschwindigkeit verfahren, wie durch die gestrichelte Linie angedeutet. Gibt die zweite Verfahrensanweisung im Verlauf der Interpolation einen Wert größer Null zurück, werden Sektionen bis zum Verfahrsatzende gebildet.
-
In den 8 und 10 wird zudem der Fall gezeigt, dass die Sektionsbildung mit positiver Startbeschleunigung aufgerufen wird, wobei es das Ziel ist die Maximalgeschwindigkeit zu erreichen.
-
Gilt folglich a0>0 und aLA=0, können wie gewohnt bis zum Verfahrsatzende Sektionen gebildet werden. Im Fall mit a0>0 und aLA<0, wie in der 10 gezeigt, werden zunächst die Beschleunigungssektionen (AccSections), d.h. die Abschnitte 0 bis 2 gebildet, um die Maximalgeschwindigkeit zu erreichen. Dann wird zuerst im Modus der zweiten Verfahrensanweisung verfahren und später noch einmal Sektionen gebildet, nämlich die Abschnitte 4 bis 6. Dieser Fall entspricht folglich im Wesentlichen dem Fall aus 8.
-
Zu erwähnen sind zudem zwei weitere Sonderfälle. So kann es möglich sein, dass ein Verfahrsatz komplett im Modus der zweiten Verfahrensanweisung (DecCheckModus) verfahren wird, ohne dass Sektionen gebildet werden müssen. Das stellt sich vor allem am Anfang einer Bewegung ein, wenn das System beschleunigt. Um einen korrekten Übergang von einem Verfahrsatz zum nächsten Verfahrsatz zu gewährleisten, müssen aber die Werte für die Zeit, die Geschwindigkeit und die Beschleunigung berechnet werden, welche exakt am Verfahrsatzübergang (d. h. bei Position c_dDistance) gelten. Diese Position wird im Allgemeinen natürlich nicht auf einem Interpolationspunkt, sondern zwischen zwei Interpolationspunkten liegen.
-
Wird bei der Berechnung des nächsten Interpolationspunktes festgestellt, dass die neue Position größer als die Position am Verfahrsatzübergang ist (dNewPos> c_dDistance), dann werden jedoch nur für das letzte bzw. verbliebene Stück des Verfahrsatzes noch Sektionen gebildet, wobei der Verfahrensanweisung die aktuellen Werte für die Geschwindigkeit und die Beschleunigung sowie die verbleibende Strecke bis zum Verfahrsatzende (c_dDistance; c_dCurrentPos) übermittelt werden.
-
Der andere Sonderfall betrifft den allerletzten Verfahrsatz im Verfahrsatzpuffer, für welchen stets vLA=0 und aLA=0 gilt. In 6 wurde die Situation aufgezeigt, dass auf eine konstante Geschwindigkeit vLA>0 abgebremst werden soll und die verbleibende Distanz des Verfahrsatzes im Modus der zweiten Verfahrensanweisung mit dieser Geschwindigkeit verfahren werden soll. Diese Lösung funktioniert jedoch nicht, wenn vLA=0 ist, denn hier kann die verbliebene Strecke nicht mehr aufgeholt werden, da bereits vollständig abgebremst wurde. Stattdessen müssen die Sektionen vorteilhaft so geplant werden, dass mit den vorhandenen Bedingungen die Restdistanz verfahren werden kann.
-
Alle diese Bedingungen können erfüllt werden, wenn der Ruck im letzten Abschnitt bzw. im letzten Verfahrsatz, wie in der 11 gezeigt, angepasst wird.
-
12 zeigt ein Diagramm zur Abbildung von Zeiten beim Verfahrsatzübergang. Für die Bahninterpolation wird in jedem Interpolationsschritt die Interpolationsberechnungs-Methode mit den aktuellen Werten für die Position, die Geschwindigkeit, die Beschleunigung und den Ruck aufgerufen und liefert die Werte für den nächsten Schritt zurück. Die Schrittweite wird durch die Zykluszeit bestimmt. Der Interpolationsberechnungs-Methode wird die aktuelle Zeit übergeben. Zu dem Zeitpunkt, an welchem Sektionen gebildet werden, wird diese Zeit vorzugsweise temporär zwischengespeichert (Offset-Wert). Das ist insbesondere deshalb erforderlich, weil der Anfangszeitpunkt der Sektionen auf T=0 festgelegt wurde, und nicht, wie es bevorzugt sein müsste, auf die aktuelle Zeit.
-
Wenn später innerhalb der berechneten Sektionen verfahren wird, wird folglich von der aktuellen Zeit der Offset-Wert abgezogen. Vergleichbar wird ebenso mit der Position verfahren.
-
Beim Bilden der Sektionen wird demnach die Positionsdifferenz zwischen der aktuellen Position und der gespeicherten Position auf den gespeicherten Positionswert aufaddiert. Überschreitet während der Interpolation zu irgendeinem Zeitpunkt die Position die Gesamtdistanz des Verfahrsatzes, so wird vermerkt, dass die Bewegung am Verfahrsatzende angekommen ist und sich eigentlich bereits im nächsten Verfahrsatz befindet. An dieser Stelle wird vorzugsweise ein „Zwischenschritt“ bei der Interpolation eingefügt. Bei jedem Aufruf der dritten Verfahrensanweisung (BuildSections-Methode) wird der Zeitpunkt (c_dTFinal) gesetzt, der das zeitliche Ende der Sektionen speichert. Werden Sektionen bis zum Verfahrsatzende gebildet, dann markiert dieser Zeitpunkt auch das zeitliche Ende des Verfahrsatzes. Es können folglich die Werte für die Position, die Geschwindigkeit, die Beschleunigung und den Ruck am Verfahrsatzende zurückgeliefert werden. Vorzugsweise wird außerdem die Restzeit temporär gespeichert, die bis zum nächsten reguIären Interpolationspunkt fehlt. Der nächste Satz verwendet vorzugsweise nun im ersten Interpolationsschritt nicht die übliche Zykluszeit, sondern diese gespeicherte Restzeit und ermittelt damit die Werte für die Position, die Geschwindigkeit, die Beschleunigung und den Ruck. Damit ist die Bewegung im neuen Verfahrsatz angekommen.
-
Bezugszeichenliste
-
- a
- Beschleunigung
- amax
- maximale Beschleunigung
- amin
- minimale Beschleunigung
- j
- Ruck
- jmax
- maximaler Ruck
- jmin
- minimaler Ruck
- s
- Position
- t
- Zeit
- t0, t1, t2, t3, t4, t5, t6
- Abschnitte
- T1, T2, T3, T4, T3, T6
- Zeitpunkte
- vmax
- Maximale Geschwindigkeit
- v,v2, v3, V4, v5,v6, v7
- Geschwindigkeit