DE60038578T2 - Vorrichtung und Verfahren zur Erzeugung glatter Kurven in einem Bewegungssteuerungssystem - Google Patents

Vorrichtung und Verfahren zur Erzeugung glatter Kurven in einem Bewegungssteuerungssystem Download PDF

Info

Publication number
DE60038578T2
DE60038578T2 DE60038578T DE60038578T DE60038578T2 DE 60038578 T2 DE60038578 T2 DE 60038578T2 DE 60038578 T DE60038578 T DE 60038578T DE 60038578 T DE60038578 T DE 60038578T DE 60038578 T2 DE60038578 T2 DE 60038578T2
Authority
DE
Germany
Prior art keywords
section
corner
spline
blend
sections
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE60038578T
Other languages
English (en)
Other versions
DE60038578D1 (de
Inventor
Stephen J. OH 45241 Yutkowitz
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Siemens Industry Inc
Original Assignee
Siemens Energy and Automation Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Siemens Energy and Automation Inc filed Critical Siemens Energy and Automation Inc
Publication of DE60038578D1 publication Critical patent/DE60038578D1/de
Application granted granted Critical
Publication of DE60038578T2 publication Critical patent/DE60038578T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/18Numerical control [NC], i.e. automatically operating machines, in particular machine tools, e.g. in a manufacturing environment, so as to execute positioning, movement or co-ordinated operations by means of programme data in numerical form
    • G05B19/41Numerical control [NC], i.e. automatically operating machines, in particular machine tools, e.g. in a manufacturing environment, so as to execute positioning, movement or co-ordinated operations by means of programme data in numerical form characterised by interpolation, e.g. the computation of intermediate points between programmed end points to define the path to be followed and the rate of travel along that path
    • G05B19/4103Digital interpolation
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/30Nc systems
    • G05B2219/34Director, elements to supervisory
    • G05B2219/34098Slope fitting, fairing contour, curve fitting, transition
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/30Nc systems
    • G05B2219/34Director, elements to supervisory
    • G05B2219/34135Spline
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/30Nc systems
    • G05B2219/34Director, elements to supervisory
    • G05B2219/34142Polynomial
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/30Nc systems
    • G05B2219/34Director, elements to supervisory
    • G05B2219/34143Approximate corner by polynomial
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/30Nc systems
    • G05B2219/49Nc machine tool, till multiple
    • G05B2219/49164Corner, making corner

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Automation & Control Theory (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Manufacturing & Machinery (AREA)
  • Numerical Control (AREA)
  • Automatic Control Of Machine Tools (AREA)

Description

  • Die vorliegende Erfindung betrifft allgemein Einrichtungen und Prozesse zum Steuern der Bewegung eines beweglichen Elements entlang eines programmierten Weges und spezieller eine verbesserte Vorrichtung und ein verbessertes Verfahren zur Bewegungssteuerung, wobei Ecken auf dem Weg identifiziert und danach mit einem sanften Übergang versehen (geglättet) werden, um Unstetigkeiten bei Geschwindigkeit, Beschleunigung und/oder Ruck (Beschleunigungsänderung) auf ein Minimum zu begrenzen.
  • In einem System mit gesteuerter Bewegung, wie zum Beispiel einem Werkzeugmaschinensystem mit CNC-Steuerung (Computer Numerical Control, computergestützter numerischer Steuerung), werden bewegliche Maschinenelemente entlang eines programmierten Weges bewegt, indem der Bewegungsbefehl programmiert wird und Positionskoordinaten auf dem Weg vorgegeben werden. Lineare Wege werden normalerweise definiert, indem die Wegendpunkte auf der Linie programmiert werden, kreisförmige Wege werden normalerweise definiert, indem die Daten der Kreisendpunkte und des Kreismittelpunktes programmiert werden, und bogenförmige Wege werden normalerweise definiert, indem eine Reihe von Punkten entlang des Bogens programmiert wird. Der Bediener der Werkzeugmaschine kann diese Datenpunkte für das spezielle maschinell zu bearbeitende Teil programmieren. Eine Bewegung entlang des Weges kann durch das CNC-System erzielt werden, indem Zwischenpunkte zwischen den programmierten Punkten mit einer vorbestimmten Wiederholungsrate interpoliert werden, und die Bewegung der beweglichen Elemente kann in Reaktion auf diese dazwischenliegenden "interpolierten" Positionsbefehle gesteuert werden.
  • Programmierte Punkte, welche ein Paar von aufeinander folgenden linearen Abschnitten repräsentieren, definieren oft eine Ecke in dem Weg. Das Durchqueren einer solchen Ecke kann jedoch eine stufenförmige Unstetigkeit der befehlsgesteuerten Geschwindigkeit des beweglichen Elements zur Folge haben. Stufenförmige Unstetigkeiten der Geschwindigkeit sind unerwünscht, da sie hochfrequente Energie in die Positionssteuerungsschleife eines Servocontrollers einspeisen können, der für die gesteuerte Bewegung sorgt, so dass die tatsächliche Bewegung, die durch das Steuergerät erzielt wird, nicht exakt der Steuerbefehlspositions-Trajektorie folgt, die durch die Wegpunkte repräsentiert wird.
  • Außerdem machen stufenförmige Unstetigkeiten in einem Geschwindigkeitsbefehl eine unendliche Beschleunigung erforderlich, damit das gesteuerte bewegliche Element tatsächlich dem Befehl folgt. Unendliche Beschleunigungen (oder sehr große und schnelle Änderungen derselben) werden in Wirklichkeit von dem beweglichen Element niemals erreicht, infolge des letztendlichen Tiefpasscharakters der Nachlaufregelkreise, welche das Element steuern; daher wird der Befehl durch die Bewegung des Elements nicht präzise nachvollzogen. Eine stufenförmige Unstetigkeit in einem Geschwindigkeitsbefehl kann Grundkörperschwingungen und einen Verschleiß von Maschinenkomponenten zur Folge haben, neben anderen Problemen, wie etwa mechanische Durchbiegung und kreuzgekoppelte Achsendynamik, wenn eine Bewegung oder Schwingung in einer Achse eine unerwünschte Bewegung oder Schwingung an einer separaten Achse verursacht. Im Zusammenhang mit Werkzeugmaschinen können diese unerwünschten Erscheinungen auch eine inakzeptable Oberflächenbeschaffenheit und/oder eine verminderte Genauigkeit des maschinell bearbeiteten Teils zur Folge haben.
  • Obwohl bekannt ist, dass durch das Befehlen eines vollständigen Stopps an dem Eckpunkt stufenförmige Unstetigkeiten der Geschwindigkeit beseitigt werden können, sind solche Stopps nicht wünschenswert, da sie die zum Vollenden der Bewegung erforderliche Zeit verlängern. Außerdem können im Zusammenhang mit Werkzeugmaschinen vollständige Stopps auch unerwünschte "Stillstandsmarken" (Dwell Marks) auf dem Werkstück erzeugen.
  • Demzufolge ist es in der Technik bekannt, um die Geschwindigkeitsbegrenzungen beim Verwenden eines vollständigen Stopps an Ecken zu vermeiden, sich unter Anwendung gewisser tolerierbarer stufenförmiger Unstetigkeiten der Geschwindigkeit durch Ecken zu bewegen, was einen gewissen tolerierbaren Grad der Abrundung von Ecken zur Folge hat. Der Grad der Eckenrundung, welcher auftritt, hängt von vielen Faktoren ab, darunter den Achsenpositionsschleifen-Verstärkungen, den Ansprechcharakteristiken der Geschwindigkeitsregelkreis-Servogeräte, dem Winkel, der durch die Ecke definiert wird, und der Ausrichtung der Ecke relativ zu den bewegungserzeugenden Achsen. Ferner ist die Form der gerundeten Ecke asymmetrisch, und sie ist ebenfalls von den oben erwähnten Faktoren abhängig.
  • An Ecken können Kreisbögen eingefügt werden. Solche Bögen können jedoch eine unerwünschte stufenförmige Unstetigkeit der Beschleunigung zur Folge haben, welche zu Maschinenverschleiß und schlecht bearbeiteten Teilen führen kann.
  • Die Patentschriften DE 4,213,927 , US 5,955,856 und US 4,794,540 beschreiben NC-Maschinen, welche automatisch Kurven zwischen geraden Abschnitten an Werkstücken einfügen.
  • Daher besteht nach wie vor Bedarf an einem Verfahren und einer Vorrichtung zum Steuern der Bewegung durch eine Ecke in einem programmierten Weg, welches bzw. welche die Weggeschwindigkeit maximiert und außerdem stufenförmige Unstetigkeiten von Geschwindigkeit und Beschleunigung reduziert oder beseitigt. Darüber hinaus besteht nach wie vor Bedarf an einem solchen Verfahren, welches die Qualität der Oberflächenbeschaffenheit an einem Werkstück erhöht und/oder welches den Grad der Abrundung minimiert, welche an der Ecke zustande kommt. Außerdem besteht nach wie vor Bedarf an einem solchen Verfahren und einer solchen Vorrichtung, welche auch automatisch Ecken identifizieren können, welche von einem gerundeten Weg profitieren können, und dann dazu übergehen, den gerundeten Weg zu bestimmen, der für diese Ecken zu verwenden ist. Außerdem besteht Bedarf an einem Verfahren und einer Vorrichtung, welches bzw. welche die Bewegung durch eine Ecke in einem programmierten Weg einer Werkzeugmaschine steuert, welche stufenförmige Unstetigkeiten der Geschwindigkeit beseitigt und eine wünschenswerte Krümmung an der Ecke an dem maschinell bearbeiteten Teil liefert.
  • Die deutsche Patentveröffentlichung DE 4213927 beschreibt ein Verfahren zur Steuerung der Bewegung einer Werkzeugmaschine.
  • Es ist eine Aufgabe der vorliegenden Erfindung, eine Vorrichtung und ein Verfahren bereitzustellen, welche bzw. welches die Bewegung durch eine programmierte Schwenkung oder Ecke wirksam steuert und dabei stufenförmige Unstetigkeiten der Geschwindigkeit und/oder Beschleunigung reduziert oder beseitigt.
  • Die Erfindung umfasst:
    Weitere Aufgaben der vorliegenden Erfindung werden für Fachleute auf diesem Gebiet aus der nachfolgenden Beschreibung ersichtlich, in der, lediglich für die Zwecke der Veranschaulichung, verschiedene Ausführungsformen dieser Erfindung dargestellt und beschrieben werden, einschließlich einer für die Ausführung der Erfindung in Betracht gezogenen besten Form. Wie leicht einzusehen ist, gestattet die Erfindung auch andere verschiedene Aspekte und Ausführungsformen, ohne den Rahmen der Erfindung zu verlassen. Dementsprechend sollten die Zeichnungen und Beschreibungen als ihrem Wesen nach veranschaulichend und nicht einschränkend betrachtet werden.
  • Obwohl sich an die Patentbeschreibung Patentansprüche anschließen, welche die vorliegende Erfindung genau aufzeigen und klar beanspruchen, ist der Autor der Ansicht, dass dieselbe aus der nachfolgenden Beschreibung besser verständlich wird, die in Verbindung mit den beigefügten Zeichnungen zu betrachten ist, wobei:
  • 1 ein Blockschaltbild ist, das ein beispielhaftes Bewegungssteuerungssystem mit Spline Corner Blending (Spline-Eckenübergangs-) Fähigkeit gemäß den Prinzipien der vorliegenden Erfindung zeigt;
  • 2 beispielhafte programmierte Punkte in einem Teileprogramm zeigt, welche eine Ecke definieren, welche unter Anwendung eines Spline Corner Blends (Spline-Eckenübergangs) durchquert werden kann, gemäß den Prinzipien der vorliegenden Erfindung;
  • 3 ein beispielhaftes Paar von Spline-Abschnitten zeigt, die verwendet werden, um sich ruckfrei durch die Ecke von 2 zu bewegen, gemäß den Prinzipien der vorliegenden Erfindung;
  • 4 einen beispielhaften Fall zeigt, in dem ein erster linearer Abschnitt vollständig durch einen Spline-Abschnitt ersetzt wird und ein zweiter linearer Abschnitt gekürzt wird, um einen zweiten Spline-Abschnitt unterzubringen, gemäß den Prinzipien der vorliegenden Erfindung;
  • 5 einen beispielhaften Fall zeigt, in dem zwei lineare Abschnitte verändert werden, um zwei Spline-Abschnitte unterzubringen, um die Ecke zu definieren, gemäß den Prinzipien der vorliegenden Erfindung;
  • 6 einen beispielhaften Fall zeigt, in dem ein erster linearer Abschnitt modifiziert wird, um einen ersten Spline-Eckabschnitt unterzubringen, ein zweiter linearer Abschnitt durch einen zweiten Spline-Eckabschnitt ersetzt wird, welcher glatt mit dem ersten Spline-Eckabschnitt und einem dritten Spline-Abschnitt verbunden wird, gemäß den Prinzipien der vorliegenden Erfindung;
  • 7 ein beispielhaftes Spline-Koordinatensystem zeigt, welches verwendet werden kann, um die Spline-Eckabschnitte zu definieren, gemäß den Prinzipien der vorliegenden Erfindung;
  • 8 ein Beispiel eines Systems verketteter Listen ist, welches verwendet werden kann, um Spline-Eckabschnitte zu definieren, gemäß den Prinzipien der vorliegenden Erfindung;
  • 9 ein Schema einer endlichen Zustandsmaschine ist, das eine Ausführungsform eines Spline Corner Blend Systems zeigt, das gemäß den Prinzipien der vorliegenden Erfindung realisiert ist;
  • 10 ein Flussdiagramm ist, das ein beispielhaftes Verfahren der Durchführung eines Spline Corner Blendings zeigt, gemäß den Prinzipien der vorliegenden Erfindung;
  • 11 ein Schema ist, das eine Ausführungsform eines Bewegungssteuerungssystems mit Spline Corner Blend zeigt, das gemäß den Prinzipien der vorliegenden Erfindung realisiert ist;
  • 12 X-Y-Grafiken des Achsenweges für Testfälle zeigt, welche eine Implementierung einer beispielhaften Ausführungsform der vorliegenden Erfindung und herkömmliche Ansätze beinhalten;
  • 13 Geschwindigkeits-, Beschleunigungs- und Ruckprofile eines Testfalles zeigt, der eine Implementierung einer beispielhaften Ausführungsform der vorliegenden Erfindung beinhaltet;
  • 14 Geschwindigkeits-, Beschleunigungs- und Ruckprofile eines Testfalles zeigt, der einen herkömmlichen Ansatz beinhaltet;
  • 15 Geschwindigkeits-, Beschleunigungs- und Ruckprofile eines Testfalles zeigt, der einen zweiten herkömmlichen Ansatz beinhaltet.
  • 1 ist ein Blockschaltbild, das eine mögliche Hardwarekonfiguration zur Implementierung eines Bewegungssteuerungssystems mit Corner-Blending- (Eckenübergangs-)Fähigkeiten gemäß der vorliegenden Erfindung zeigt. Obwohl die hier beschriebenen Verfahren und Vorrichtungen zur Bewegungssteuerung in Verbindung mit einem Werkzeugmaschinensystem verwendet werden können, ist es denkbar, dass die Steuerung auch in anderem Zusammenhang verwendet wird, wie zum Beispiel in der Robotertechnik und bei Industriemaschinen sowie für andere Anwendungen, bei denen eine gesteuerte Bewegung wünschenswert ist.
  • Das dargestellte System von 1 ist mikroprozessorbasiert und umfasst einen Computer 400 mit einer CNC-Steuereinheit 410 und einer Servocontroller-Einheit 412. Die CNC-Steuereinheit 410 enthält einen Positionsbefehlsgenerator 414, welcher Positionsbefehle (basierend auf einem Teileprogramm 413) an den Servocontroller 412 und an einen Vorwärtskopplungs-Befehlsgenerator (Feedforward-Befehlsgenerator) 416 übermittelt. Das Teileprogramm 413 kann durch den Benutzer erzeugt werden und beschreibt den Bearbeitungsweg, dem die Werkzeugmaschine zu folgen hat, welche durch einen Aktor (Stellantrieb) 404 relativ zu einem Werkstück bewegt wird. Auf der Grundlage der Positionsbefehle und Vorwärtskopplungs-Verstärkungen übermittelt der Vorwärtskopplungs-Befehlsgenerator 416 dann Vorwärtskopplungsbefehle an den Servocontroller 412.
  • Der Aktor 404 versetzt ein bewegliches Element 407 (z. B. ein Werkstück oder Werkzeug) über ein geeignetes Gestänge 405 in eine Richtung in Bewegung. Im Zusammenhang mit Werkzeugmaschinen ist es typisch, dass zu einem beliebigen gegebenen Zeitpunkt drei Bewegungsrichtungen die Position des Werkzeugs im Raum relativ zu dem Werkstück bestimmen, während zwei weitere Bewegungsrichtungen die momentane relative Orientierung des Werkzeugs zum Werkstück bestimmen. Demzufolge würde eine vollständige Steuerung eines solchen Werkstücks und Werkzeugs eine Angabe von fünf Variablen als Funktionen der Zeit erfordern, um dadurch den Bewegungsweg des Werkstückes und Werkzeugs und deren Orientierung zu bestimmen.
  • Typische Werkzeugmaschinen besitzen mindestens drei lineare Achsen und eine Spindel. Bei Werkzeugmaschinen mit höherer Leistungsfähigkeit wird die typische Konfiguration durch die Hinzufügung von zwei Rotationsachsen für die Orientierung ergänzt, so dass man insgesamt fünf Positionierungs-/Orientierungs-Achsen und eine Spindel erhält. Spezialisierte Werkzeugmaschinen können zusätzliche Achsen enthalten, welche redundante Fähigkeiten bereitstellen oder eine gleichzeitige Bearbeitung mit mehreren Spindeln ermöglichen.
  • Es können Steuerungsvariablen zusätzlich zu Position und Orientierung erforderlich sein, um die Bearbeitung des Werkstückes genau zu spezifizieren. Außerdem sind die drei Bewegungsrichtungen, welche die Position des Werkstückes oder Werkzeugs bestimmen, normalerweise linear und orthogonal, und es kann ein Aktor 404 für jede Richtung vorgesehen sein, um die lineare Bewegung in der betreffenden Richtung zu bewirken. Das bewegliche Element 407 und der Aktor 404, welcher seine Bewegung in einer Richtung bewirkt, werden normalerweise als eine Achse bezeichnet. Die drei Achsen, welche normalerweise die Position zu einem gegebenen Zeitpunkt definieren, werden oft als X, Y und Z angegeben.
  • Corner Blending
  • Gemäß einer Ausführungsform der vorliegenden Erfindung enthält die CNC 410 außerdem eine Corner-Blending-Einheit 418, die in der Lage ist, aus den Wegpunkten und Befehlen im Teileprogramm 413 Corner Blends (Eckenübergänge, Eckenglättungen) zu erzeugen. Bei einer Ausführungsform funktioniert die Corner-Blending-Einheit 418, wie weiter unten erläutert, und weist die Fähigkeit auf, die Erzeugung von Positionsbefehlen zu bewirken, welche sanft gerundete Ecken ohne stufenförmige Unstetigkeit der Geschwindigkeit zum Ergebnis haben, und ohne dass ein vollständiger Stopp des Aktors 404 erforderlich ist.
  • Aus den Positionsbefehlen, Vorwärtskopplungsbefehlen und Rückkopplungsmessungen erzeugt der Servocontroller 412 dann Spannungsbefehlssignale, die in einen PWM-(Pulse Width Modulation, Pulsbreitenmodulations-)Verstärker 402 einzuspeisen sind, wie er in der Technik bekannt ist. Bei einer beispielhaften Ausführungsform enthält der Servocontroller 412 Positions-, Geschwindigkeits- und Strom-Rückkopplungsschleifen und Kommutierungsfunktionen zur Erzeugung der Spannungsbefehle. Der Servocontroller 412 und der PWM-Verstärker 402 bilden zusammen mit einem Strommessgerät zum Messen des Stroms von dem Verstärker einen Stromregelkreis, wie in 1 dargestellt. Es sind auch andere, alternative Konfigurationen möglich, etwa solche, bei denen die Aufgaben der Steuerung von Position, Geschwindigkeit und Strom auf verschiedene Hardwaregeräte verteilt sind.
  • Die Spannungsbefehle von dem Servocontroller 412 steuern den PWM-Verstärker 402. Dreiphasenspannungen können über den PWM-Verstärker 402 zu dem Aktor 404 geschaltet werden, welcher bei einer Ausführungsform ein WS-Elektromotor ("bürstenloser" Gleichstrommotor mit Permanenterregung) sein kann. Demzufolge werden Dreiphasenströme in den Leitungen erzeugt, die den Verstärker 402 und den Motor 404 verbinden, und die Amplituden dieser Ströme können in einer Stromregelkreis-Konfiguration detektiert und zu dem Servocontroller 412 zurückgeführt werden.
  • In Reaktion auf die Dreiphasenströme wird der Motor 404 in Rotation versetzt, und ein bewegliches Element 407 (z. B. ein Werkstück oder Werkzeug), das mit dem Motor 404 über ein geeignetes Gestänge 405 verbunden ist, wird bewegt. Ein Codierer 406 kann verwendet werden, um die Position und Geschwindigkeit des Motors zu bestimmen, welche zu dem Servocontroller 412 rückgekoppelt werden. Die vorliegende Erfindung funktioniert mit einem beliebigen Motor- und Antriebstyp, einschließlich des erwähnten Typs, jedoch auch einschließlich von GS-Motoren, hydraulischen Servogeräten, Linearmotoren usw.
  • Es versteht sich, dass die Corner-Blending-Einheit 418, der Vorwärtskopplungs-Befehlsgenerator 416 und der Positionsbefehlsgenerator 414 als ein Programm, Programme oder Unterprogramme auf einem computerlesbaren Medium, wie etwa einer Nur-Lese-Speicher-(ROM-)Einheit oder einem anderen permanenten Speichermedium, implementiert werden können. Diese Einheiten können auch als ein Spezialgerät mit ausführbaren Anweisungen implementiert werden, die in einem Direktzugriffsspeicher (Random Access Memory, RAM) oder ROM oder einer Kombination von beidem gespeichert sind. Außerdem können die Anweisungen und/oder Programme in einer beliebigen herkömmlichen Programmiersprache implementiert sein, wie zum Beispiel C oder C++, oder sie können in einer speziellen Programmiersprache implementiert sein. In ähnlicher Weise können viele der Funktionen des Servocontrollers 412 entsprechend programmierten Anweisungen ausgeführt werden.
  • Insbesondere, und für die Zwecke der Veranschaulichung, kann die Corner-Blending-Einheit 418 aktiviert werden, indem ein vordefinierter Code in dem Teileprogramm 413 angebracht wird. Wenn Corner Blending aktiviert ist, fügt die Einheit 418 automatisch Corner Blends (Eckenübergänge) zwischen jedem Paar von in dem Teileprogramm 413 definierten, aufeinander folgenden linearen Abschnitten ein, welche eine Ecke definieren und welche, bei einer Ausführungsform, der Gruppe von Kriterien genügen, die weiter unten beschrieben sind.
  • Wie in der Technik bekannt ist, kann ein linearer Abschnitt in dem Teileprogramm 413 durch einen geeigneten Bewegungssteuerungsbefehl und durch Angabe der Koordinaten jedes der zwei Punkte auf dem Weg, welche die Linie definieren, programmiert werden. Wie unten beschrieben, kann bei einer Ausführungsform der Benutzer zu dem Teileprogramm 413 Befehle hinzufügen, welche die Corner-Blending-Einheit 418 aktivieren. In diesen Befehlen kann der Benutzer auch eine Toleranz spezifizieren, welche den Betrag der Abweichung von dem ursprünglichen Weg durch die Ecke definiert, welcher zugelassen werden soll.
  • Die Corner-Blending-Einheit 418 kann die scharfe Ecke in dem programmierten Weg, der durch das Teileprogramm 413 definiert ist, beseitigen, indem sie den in die Ecke eintretenden linearen Abschnitt verkürzt, zwei gekrümmte Abschnitte an das Ende des gekürzten linearen Abschnitts anhängt und den aus der Ecke herauskommenden linearen Abschnitt verkürzt. Dies ist in 2 und 3 dargestellt. Wie in 2 dargestellt, kann das Teileprogramm 413 Befehle für eine Bewegung entlang zweier aufeinander folgender linearer Abschnitte span1 und span2 beinhalten, welche in dem Programm durch Punkte 0, 1 und 2 definiert sind. Punkt 0 hat kartesische Koordinaten X0, Y0, Z0, Punkt 1 hat kartesische Koordinaten X1, Y1, Z2, und Punkt 2 hat kartesische Koordinaten X2, Y2, Z2.
  • Bei dieser Ausführungsform des Verfahrens und der Vorrichtung zum Corner Blending der vorliegenden Erfindung werden die zwei linearen Abschnitte span1 und span2 unter Verwendung von zwei nichtlinearen Blend-Abschnitten (Übergangsabschnitten) verbunden, welche in 3 als blend1 und blend2 dargestellt sind und welche bei einer beispielhaften Ausführungsform nichtlineare Kurven umfassen, von denen jede ohne Unstetigkeit der Krümmung mit einem linearen Abschnitt verbunden ist und welche miteinander ohne Unstetigkeit der Krümmung verbunden sind. Außerdem weist jede Kurve eine sich stetig ändernde Krümmung auf. Um dies zu erreichen, kann, wie weiter unten ausführlicher beschrieben ist, jede der Kurven Polynomabschnitte vierten Grades umfassen. Während sich jedoch der restliche Teil dieses Dokuments auf ein Paar von Spline-Abschnitten vierten Grades bezieht, welche das bilden, was hier "Corner Blend" (oder nichtlinearer Weg) genannt wird, ist anzumerken, dass ebenso auch andere Ausführungsformen der vorliegenden Erfindung möglich sind. Andere mögliche Funktionen, die verwendet werden könnten, um das "Corner Blend" zu realisieren, sind Spiralsegmente, B-Splines, rationale Splines und Klothoidkurven.
  • Genauer, gemäß dieser Ausführungsform der vorliegenden Erfindung kann jeder eingefügte Blend-Abschnitt blend1 und blend2 derart konstruiert werden, dass die Stärke der Krümmung des Corner-Blend-Abschnitts von null an seinem Punkt des Übergangs zu seinem jeweiligen linearen Abschnitt bis zu einem gewissen maximalen Wert an dem Punkt auf dem Corner-Blend-Abschnitt, welcher dem ursprünglichen Eckpunkt (Punkt 1) am nächsten ist, variiert. Bei einer beispielhaften Ausführungsform werden blend1 und blend2 auf diese Weise so konstruiert, dass keine Unstetigkeit der Beschleunigung an dem Übergang zwischen dem linearen und dem Blend-Abschnitt vorhanden ist. Daher besteht bei dieser beispielhaften Implementierung keine Notwendigkeit, die Weggeschwindigkeit an dem Übergangspunkt zu begrenzen, um eine große stufenförmige Unstetigkeit bei der Beschleunigung zu vermeiden.
  • Falls zum Beispiel kreisförmige Abschnitte anstelle von Spline-Abschnitten verwendet würden, um das Corner Blend zu definieren, müsste die Weggeschwindigkeit an der Übergangsstelle zwischen dem linearen und dem kreisförmigen Abschnitt beschränkt werden, so dass sie unter einem Maximalwert bleibt. Dies könnte Verlangsamungen an den Übergangsstellen und eine nicht konstante Weggeschwindigkeit entlang des Kreisbogens zur Folge haben. Dementsprechend wurde festgestellt, gemäß einem Aspekt der vorliegenden Erfindung, dass Polynomfunktionen vierten Grades zur Implementierung der vorliegenden Erfindung verwendet werden können, um eine Unstetigkeit der Beschleunigung zu vermeiden und eine konstante Weggeschwindigkeit zu gewährleisten.
  • Allgemein sind die hauptsächlichen Maßnahmen dieser Ausführungsform des Corner Blending die folgenden:
    • • Bestimmen, ob die Situation ein Corner Blend verlangt;
    • • Bestimmen, ob die Eckenabschnitte eingefügt werden können, und Einfügen von Corner-Blend-Abschnitten zwischen den linearen Abschnitten, wenn es für zweckmäßig erachtet wird;
    • • Bestimmen ob einer der linearen Abschnitte oder beide durch einen Corner-Blend-Abschnitt ersetzt werden sollten, und gegebenenfalls Umdefinieren eines der linearen Abschnitte oder beider als Corner-Blend-Abschnitte;
    • • Berechnen der Länge der Corner-Blend-Abschnitte;
    • • Berechnen der Koeffizientenmatrizen für die Blend-Abschnitte in einem lokalen Eckenebenen-Koordinatensystem;
    • • Translatieren (Verschieben) und Rotieren der Koeffizientenmatrizen von dem lokalen Eckenebenen-Koordinatensystem zu einem Werkzeugmaschinen-Koordinatensystem, aus welchem interpolierte Positionsbefehle erzeugt werden können.
  • Programmieren der CNC zum Einfügen von Corner Blends
  • Der Corner-Blend-Modus kann durch den Benutzer im Teileprogramm unter Verwendung eines vordefinierten Codes, wie zum Beispiel eines Codes der Serie G5, programmiert werden. Der Code kann in seinem Block einen Parameter zum Festlegen einer Blend-Toleranz enthalten. Bei einer beispielhaften Ausführungsform ist der Parameter "modal" und bleibt bestehen, bis er in dem Teileprogramm explizit geändert wird oder ein Ereignis "Modale Zustände rücksetzen" (Modal States Reset) eintritt. Der Begriff "modal" bezeichnet einen Typ von Teileprogrammbefehl, welcher bewirkt, dass die Steuerung in eine gewisse Betriebsart eintritt, welche während sämtlicher nachfolgender Teileprogrammblöcke angewendet wird und bestehen bleibt, bis sie annulliert wird. Dagegen bezeichnet "nichtmodal" einen Typ von Teileprogrammbefehl, welcher bewirkt, dass eine gewisse Betriebsart nur für den Teileprogrammblock auftritt, in welchem der nichtmodale Befehl enthalten ist.
  • Der Parameter "Blend-Toleranz" (hier mit "K" bezeichnet) ermöglicht dem Programmierer, den Schwellwert der Corner-Blend-Toleranz in Einheiten der linearen Bewegung (Millimeter oder Zoll) festzulegen. Bei einer Ausführungsform ist der Parameter K ein modaler Parameter, so dass sein aktueller Wert bestehen bleibt, bis er explizit geändert wird. Bei einer weiteren beispielhaften Ausführungsform werden, falls K mit dem Wert null programmiert ist, keine Corner-Blend-Abschnitte eingefügt; falls K mit einer negativen Zahl programmiert ist, wird ein Standardwert für die Corner-Blend-Toleranz aus einer Konfigurationsdatenbank verwendet; falls K nicht explizit programmiert ist, wird der aktuelle Wert für K verwendet; und falls ein Ereignis "Modale Zustände rücksetzen" eintritt, wird K auf den Standardwert aus der Konfigurationsdatenbank gesetzt.
  • Die Blend-Toleranz (Übergangstoleranz) bestimmt den Grad, bis zu welchem der Controller den Abschnitt runden wird. Die Wahl der Toleranz ist jedoch ein Kompromiss zwischen Geschwindigkeit und Genauigkeit. Insbesondere hat das Programmieren eines großen Wertes für die Ecken-Toleranz eine schnellere Bewegung durch die Ecke, aber auch eine größere Abweichung von dem gewünschten Weg zur Folge. Das Programmieren eines kleinen Wertes für die Toleranz führt zu einer genaueren Reproduktion des gewünschten Weges, kann jedoch die Geschwindigkeit reduzieren, mit welcher die gesteuerte Bewegung ausgeführt wird.
  • Bestimmen von Fällen, in denen Spline Cornering nicht verwendet werden darf
  • Wie oben erwähnt, wird bei einer Ausführungsform der vorliegenden Erfindung das Abrunden von Ecken erreicht, indem zwei lineare Segmente mit einem oder mehreren Spline-Segmenten verbunden werden. Gemäß einem anderen Aspekt der vorliegenden Erfindung wird jedoch ein Corner Blend nur unter bestimmten Umständen eingefügt, welche automatisch identifiziert werden können. Insbesondere werden bei der Ausführungsform mit Spline Cornering in jeder der folgenden Situationen keine Blend-Abschnitte zwischen zwei aufeinander folgenden Abschnitten eingefügt:
    • • Einer der aufeinander folgenden Abschnitte oder beide sind als kreisförmige Interpolationsabschnitte definiert.
    • • Einer der aufeinander folgenden Abschnitte oder beide sind mit einer Rotationsachsen-Bewegung verbunden;
    • • Die Gesamtmenge der Bewegungsachsen von beiden Abschnitten umfasst zwei parallele lineare Achsen.
    • • Die zwei aufeinander folgenden Abschnitte sind nahezu kollinear.
    • • Der Winkel zwischen den zwei aufeinander folgenden Abschnitten ist so spitz, dass es sich nahezu um eine vollständige Umkehr handelt.
  • Im Folgenden werden die Gründe erläutert, weshalb die Verwendung von Spline Blends in diesen Situationen vermieden werden könnte. Das Spline Corner Blend ist nicht gut geeignet für die Einfügung zwischen zwei Abschnitten, welche einen oder mehrere kreisförmige Interpolationsabschnitte beinhalten. Als Alternative kann die Steuerung einen vollständigen Stopp (Verzögerung auf null) an der Ecke in das Teileprogramm einfügen, um zu vermeiden, dass eine stufenförmige Geschwindigkeitsänderung erzeugt wird. Es ist zu erwarten, dass andere Typen von Corner-Blend-Abschnitten wie etwa Blend-Abschnitte, welche Kreisbögen sind, in dieser Situation möglicherweise verwendet werden könnten. Zum Beispiel ist es denkbar, dass ein toleranzbasierter Corner-Blend-Abschnitt automatisch an einer scharfen Ecke eingefügt werden könnte, wenn einer der Abschnitte oder beide kreisförmige Interpolationsabschnitte sind.
  • Spline Corner Blends könnten ebenfalls nicht zwischen linearen Abschnitten eingefügt werden, wenn einer der Abschnitte oder beide mit der Bewegung einer Rotationsachse verbunden sind. Wie oben vermerkt, ändert das Spline Corner Blend die Geometrie basierend auf einer vorgegebenen Toleranz. Bei einer Rotationsachsen-Bewegung kann die Bedeutung der Toleranz nicht geklärt werden, da die Steuerung keine Kenntnis über den Einfluss der Bewegung der Rotationsachse auf die relative Bewegung zwischen dem Schneidwerkzeug und dem Werkstück hat. Bei einer Ausführungsform der vorliegenden Erfindung wird, wenn eine Rotationsachse programmiert ist und ein Spline-Cornering-Modus aktiv ist, der Abschnitt nicht verändert. Stattdessen kann ein vollständiger Stopp (Verzögerung auf null) an der Ecke optional in das Teileprogramm eingefügt werden, um eine sich stufenförmig ändernde Geschwindigkeit ("Geschwindigkeitsstufe") zu vermeiden.
  • Die Situation, in der die Gesamtmenge der Bewegungsachsen von beiden Abschnitten zwei parallele Achsen enthält, kann in ähnlicher Weise wie der Fall der Rotationsachse behandelt werden. In diesem Falle werden bei einer Ausführungsform keine Blend-Abschnitte eingefügt, und es wird eine Verzögerung auf null auf den ersten Abschnitt angewendet.
  • Falls die zwei linearen Abschnitte nahezu kollinear sind, kann ein Spline Blend möglicherweise ebenfalls nicht eingefügt werden. In dem Extremfall, wenn die Abschnitte exakt kollinear sind, kann ein Spline Blend ohnehin nicht formuliert werden. Ein Weg, um zu bestimmen, ob die zwei Linien nahezu kollinear sind, besteht darin, den Winkel zwischen den Richtungsvektoren der beiden linearen Abschnitte mit einem vorbestimmten unteren Schwellwert zu vergleichen. Falls der Winkel kleiner als der untere Schwellwert ist, wird der Blend-Abschnitt nicht eingefügt. Obwohl die Entscheidung, kein Corner Blend einzufügen, eine stufenförmige Geschwindigkeitsänderung verursachen kann, ist, wenn der Winkelschwellwert ausreichend klein ist, die durch die Ecke erzeugte stufenförmige Geschwindigkeitsänderung sogar bei den höchsten Vorschubgeschwindigkeiten vernachlässigbar klein. Bei einer beispielhaften Ausführungsform ist der Winkelschwellwert mit ungefähr 0,02° fest codiert, obwohl auch andere Winkel festgelegt werden können, entsprechend der stufenförmigen Geschwindigkeitsänderung, welche tolerierbar ist.
  • Falls der Winkel zwischen den zwei Abschnitten sehr spitz ist, wird gemäß einer beispielhaften Ausführungsform der vorliegenden Erfindung ebenfalls kein Spline Blend eingefügt. In dem Extremfall, wenn die zwei Abschnitte eine vollständige Umkehr beinhalten, sind alle Richtungsvektorkomponenten für einen Abschnitt gleich den entsprechenden Richtungsvektorkomponenten des anderen Abschnitts mit umgekehrtem Vorzeichen, und es kann kein Spline Blend formuliert werden.
  • Ein Weg, um zu bestimmen, ob der Winkel spitz ist, besteht darin, den durch die Richtungsvektoren der Abschnitte definierten Winkel mit einem vorbestimmten oberen Schwellwert zu vergleichen. Falls er den oberen Schwellwert übersteigt, wird kein Blend-Abschnitt eingefügt. Falls gewünscht, kann eine Verzögerung auf null angewendet werden. Bei einer Ausführungsform beträgt der Schwellwert für diesen Fall ungefähr 178°, da anzunehmen ist, dass Winkel, welche derart spitz sind, wahrscheinlich nicht in dem Teileprogramm programmiert werden, und falls dies doch der Fall ist, ein vollständiger Stopp akzeptabel wäre.
  • Einfügung von Blend-Abschnitten unter Beachtung eines Toleranzwertes
  • Bei einer beispielhaften Ausführungsform der vorliegenden Erfindung sind Corner Blends derart definiert, dass sie eine maximale Abweichung von der ursprünglich programmierten scharfen Ecke haben, welche kleiner als der oder gleich dem Corner-Blend-Toleranzwert ist. Bei einer Ausführungsform wird durch das Verfahren und die Vorrichtung zum Corner Blending versucht, ein Blend-Abschnitt einzufügen, dessen maximale Abweichung von der programmierten Ecke der Wert für Corner-Blend-Toleranz ist, wie in 3 am besten ersichtlich ist.
  • In gewissen Situationen ist jedoch die Länge eines der oder beider linearen Abschnitte, welche die ursprünglich programmierte Ecke umfassen, zu kurz, um zu ermöglichen, dass die maximale Abweichung gleich der Toleranz ist. In diesen Fällen ist gemäß einer Ausführungsform der vorliegenden Erfindung der Blend-Abschnitt, welcher eingefügt wird, näher an der Ecke als die Blend-Toleranz. Diese Fälle werden hier als Fall 1, Fall 2 und Fall 3 bezeichnet.
  • Im Fall 1 ist der in die Ecke eintretende Abschnitt, mit span1 bezeichnet, kürzer, als es erforderlich wäre, um einen Blend-Abschnitt mit der Ecken-Toleranz einzufügen. Eine weitere für Fall 1 qualifizierende Bedingung ist, dass der aus der Ecke austretende Abschnitt, mit span2 bezeichnet, entweder mehr als doppelt so lang wie span1 ist, oder länger als span1 ist und eine oder mehrere der folgenden Eigenschaften hat, welche anzeigen, dass ein Blend-Abschnitt zwischen span2 und dem ihm nachfolgenden Abschnitt (z. B. span3) nicht erforderlich ist:
    • • span2 ist der letzte Abschnitt des Programms, oder
    • • span2 ist ein Abschnitt des Positionierungs-Modus (d. h. ein Abschnitt, in welchem ein vollständiger Stopp am Ende von span2 explizit programmiert worden ist), oder
    • • span2 ist kein Abschnitt des Spline-Corner-Blend-Modus (d. h. ein Abschnitt, in welchem der zu span2 gehörige Teileprogrammblock den Befehl enthält, dass der Corner-Blend-Modus zu annullieren ist, so dass es erforderlich ist, dass nach span2 kein Corner Blend eingefügt wird), oder
    • • der nach span2 folgende Abschnitt, z. B. span3, ist kein "nichtmodaler linearer Interpolations-Abschnitt". (Der Begriff "nichtmodaler linearer Interpolations-Abschnitt" bezeichnet einen Abschnitt, welcher auf jeden Fall als ein linearer Abschnitt interpoliert wird. Der Begriff wird verwendet, um zu unterscheiden zwischen: 1) Abschnitten, welche als linear programmiert sind, jedoch durch den Prozess der Abschnittvorbereitung so modifiziert werden können, dass sie von irgendeinem nichtlinearen Typ sind, und 2) Abschnitten, welche auf jeden Fall als linear interpoliert werden.)
  • Unter den Bedingungen von Fall 1 und gemäß einer beispielhaften Ausführungsform der vorliegenden Erfindung wird span1 in die erste Spline-Hälfte umgewandelt (blend1), und die zweite Spline-Hälfte (blend2) wird nach span1 eingefügt. Span2 wird um den entsprechenden Betrag gekürzt.
  • Das Verhalten von Fall 1 ist in 4 dargestellt. Die Abbildung zeigt, wie der ideale Blend-Abschnitt, die gekrümmte gestrichelte Linie, nicht eingefügt werden kann, weil span1 zu kurz ist. Sie zeigt auch, dass die Abweichung von der Ecke, e, kleiner ist als die Corner-Blend-Toleranz. In der Abbildung bezeichnet ursprünglicher Abschnitt den ursprünglichen linearen Abschnitt vor der Modifikation durch die Vorrichtung und das Verfahren zum Corner Blending. Dies ist der programmierte Abschnitt einschließlich einer möglichen Modifikation durch Arbeitsstufen der Verarbeitung zur Abschnittsvorbereitung, welche der Abschnittsvorbereitungs- Arbeitsstufe vorangehen, in welcher das Corner Blending durchgeführt wird.
  • Im Fall 2 ist span2 weniger als doppelt so lang wie span1, span2 erfüllt keine der in den obigen Punkten aufgezählten Bedingungen, und das ideale blend2 würde einen Endpunkt haben, welcher erfordern würde, dass span2 um mehr als die Hälfte gekürzt wird. In diesem Falle wird blend1 nach einem modifizierten span1 eingefügt, und blend2 wird vor einem modifizierten span2 eingefügt, wobei der Übergangspunkt zwischen blend2 und dem modifizierten span2 der Mittelpunkt des ursprünglichen span2 ist. Dieser Fall ist in 5 dargestellt.
  • Im Fall 3 ist span2 kürzer als span1, span2 ist zu kurz, um den idealen Blend-Abschnitt unterzubringen, und span2 genügt wenigstens einer der Eigenschaften in der obigen Punktliste. In diesem Falle wird blend1 nach einem modifizierten span1 eingefügt, und span2 wird verbraucht, um blend2 zu erzeugen. Ein Beispiel eines solchen Falles ist in 6 dargestellt. Die Abbildung zeigt einen Fall, in dem span2 eine der Bedingungen in der Punktliste erfüllt, da span3 ein Spline-Abschnitt ist (kein "nichtmodaler linearer Interpolations-Abschnitt"). Ein ähnlicher Fall liegt vor, wenn span1 und span2 die gleiche Länge besitzen. In diesem Falle können beide Abschnitte in Blend-Abschnitte umgewandelt werden.
  • Beispiele von Gleichungen für Splines
  • Bei einer beispielhaften Ausführungsform der Erfindung können die Gleichungen für die zwei Spline-Blend-Abschnitte erhalten werden, indem die Gleichungen zuerst in einem zweidimensionalen "Eckenebenen-Koordinatensystem" entwickelt werden und danach die Gleichungen in das dreidimensionale, auf den Achsen der Werkzeugmaschine basierende Koordinatensystem transformiert werden, welches hier als das "Interp-Koordinaten"-System bezeichnet wird.
  • Eckenebenen-Koordinatensystem
  • Das Eckenebenen-Koordinatensystem und zugehörige Parameter für diese Ausführungsform sind in 7 dargestellt. In der Zeichnung und in der nachfolgenden Erörterung sind Punkte in diesem Koordinatensystem mit (x, y) bezeichnet. Punkte in Programmkoordinaten (z. B. aus dem Teileprogramm, und möglicherweise durch Arbeitsstufen der Abschnittsvorbereitung modifiziert, welche der Arbeitsstufe des Spline Corner Blending vorangehen) sind mit (X, Y, Z) bezeichnet. Währenddessen beziehen sich die in 7 verwendeten Bezeichnungen blend1 und blend2 auf den ersten und den zweiten halben Spline-Corner-Abschnitt.
  • Bei dieser Ausführungsform befindet sich, wie in 7 dargestellt, der Ursprung des Eckenebenen-Koordinatensystems am Anfang des ersten Blend-Abschnitts blend1. Die x-Achse ist so definiert, dass sie in der Richtung vom Anfangspunkt von blend1 zum Endpunkt von blend2 verläuft. Die y-Achse verläuft parallel zu der Linie B, welche die Winkelhalbierende des Winkels an der Ecke ist.
  • Die Bezeichnung span bezieht sich auf den linearen Abschnitt, der in die Ecke eintritt (d. h. den ersten der zwei aufeinander folgenden linearen Abschnitte, welche die Ecke definieren). In 26 ist der entsprechende Abschnitt mit span1 bezeichnet. Die Bezeichnung span wird verwendet, um sowohl den ursprünglichen linearen Abschnitt als auch den modifizierten linearen Abschnitt zu bezeichnen. In Fällen, in denen bestimmt wird, dass der ursprüngliche lineare Abschnitt in den ersten Blend-Abschnitt umgewandelt werden soll, bezeichnet span auch den ersten Blend-Abschnitt.
  • In 7 wird die Bezeichnung next verwendet, um den linearen Abschnitt zu bezeichnen, der aus der Ecke austritt (d. h. den zweiten der zwei aufeinander folgenden linearen Abschnitte, welche die Ecke definieren). In 26 ist er mit span2 bezeichnet. Die Bezeichnung next wird verwendet, um sowohl den ursprünglichen linearen Abschnitt als auch den modifizierten linearen Abschnitt, der aus der Ecke austritt, zu bezeichnen. Sie wird auch für Fälle verwendet, in denen der aus der Ecke austretende lineare Abschnitt in blend2 umgewandelt wird.
  • Die Koordinaten {x0, y0} in dem Eckenebenen-Koordinatensystem stellen die Anfangsposition von blend1 dar, die Koordinaten {x1, y1} repräsentieren die Abschnittskoordinaten des Endpunkts des ursprünglichen linearen Abschnitts, und die Koordinaten {x2, y2} repräsentieren den Endpunkt von blend2. Dieselben Indizes werden verwendet, um die äquivalenten Positionen in den Programm- und Interp-Koordinaten zu bezeichnen.
  • Der Winkel ϕ ist äquivalent zu dem Winkel zwischen den Richtungsvektoren von span und next. Der Winkel θ wird verwendet, um den Eckenwinkel zu bezeichnen. Der Abstand D stellt die Entfernung vom Ende des ursprünglichen span1 bis zu dem Punkt, wo blend1 beginnt, dar. Der Abstand e stellt die maximale Abweichung zwischen der ursprünglichen Ecke und dem Spline Corner Blend dar.
  • Die Winkel θ und ϕ können erhalten werden, indem das Skalarprodukt des Richtungsvektors von span mit dem Richtungsvektor von next berechnet wird. Dies wird durch die folgende Gleichung beschrieben, wobei {cx1 cy1 cz1} die Komponenten des Richtungsvektors von span sind und {cx2 cy2 cz2} die Komponenten des Richtungsvektors von next sind: cos(ϕ) = cx1cx2 + cy1cy2 + cz1cz2 (1)
  • Außerdem ist der Eckenwinkel θ einfach gleich der Hälfte von ϕ, wie durch Analyse von 7 überprüft werden kann.
  • Figure 00230001
  • In den obigen Gleichungen werden die Indizes x, y, z verwendet, um das Eckenebenen-Koordinatensystem für den Abschnitt zu bezeichnen. Diese Achsen bilden eine Menge von drei zueinander orthogonalen linearen Achsen, sind jedoch nicht notwendigerweise die programmierbaren X-, Y- und Z-Achsen. Zum Beispiel kann eine Werkzeugmaschine mehr als drei lineare Achsen enthalten, wobei die Symbole U, V und W programmierbare Achsen bezeichnen, welche parallel zu X, Y bzw. Z sind. Ein Teileprogrammblock könnte eine Bewegung auf einer beliebigen Kombination der existierenden programmierbaren Achsen steuern.
  • Zum Beispiel würden zwei aufeinander folgende Teileprogrammblöcke, welche eine Bewegung nur in X, V und W fordern, die Bedingungen erfüllen, die ein Corner Blending ermöglichen. In den hier gegebenen Erläuterungen würden die Symbole für das Eckenebenen-Koordinatensystem (x, y, z) für dieses Beispiel die programmierbaren Achsen X, V, W ersetzen. Jedoch würden zwei aufeinander folgende Teileprogrammblöcke, welche eine Bewegung von parallelen Achsen in den beiden Blöcken spezifizieren, nicht den Bedingungen genügen, welche ein Corner Blending ermöglichen, und es würde kein Eckenebenen-Koordinatensystem definiert. Die Richtungsvektor-Komponenten können berechnet werden, nachdem das Tripel von zueinander orthogonalen linearen Achsen (Eckenebenen-Koordinatensystem) bestimmt worden ist.
  • Spline-Koeffizientenmatrix
  • Wie oben vermerkt, umfasst bei einer beispielhaften Ausführungsform das Corner Blend zwei nichtlineare Abschnitte, welche Polynomfunktionen vierten Grades sind. Bei einer weiteren beispielhaften Ausführungsform wird jede Hälfte (in 7 als blend1 und blend2 dargestellt) des Corner Blends als ein Polynom vierten Grades mit dem Parameter u dargestellt. Der Parameter u soll so gut wie möglich mit der Distanz entlang des nichtlinearen Corner-Blend-Weges übereinstimmen. Die Gleichung für jeden halben Blend-Abschnitt kann wie folgt geschrieben werden, wobei [A] eine 2 × 5-Koeffizientenmatrix ist:
    Figure 00240001
  • Ein Vorteil der Verwendung eines Polynoms vierten Grades ist, dass dies der minimale Grad ist, der erforderlich ist, um zu ermöglichen, dass der Betrag des Krümmungsvektors an dem Übergangspunkt zu dem linearen Abschnitt (in 7 mit span bezeichnet) null ist und an dem Punkt der größten Annäherung zu der scharfen Ecke (d. h. dem durch die ursprünglichen zwei linearen Abschnitte definierten Eckpunkt, in 7 mit {x1, y1} bezeichnet) maximal ist.
  • Insbesondere sind für den ersten halben Blend-Abschnitt blend1, parametrisiert durch die Wegdistanz s, die x- und y-Komponente des Krümmungsvektors die zweiten Ableitungen der Positionsvektor-Komponenten nach s. Für ein Polynom dritten Grades in s sind die Krümmungskomponenten lineare Funktionen von s. Es wurde festgestellt, dass ein Polynom dritten Grades, bei welchem die Krümmung eine lineare Funktion der Wegdistanz ist, nicht in der Lage ist, das beispielhafte Verhalten in der x-Komponente der Krümmung zu ermöglichen (d. h. null an dem Übergangspunkt zu dem linearen Abschnitt, von null verschieden während des Übergangs und null an dem Punkt, welcher dem ursprünglichen Eckpunkt am nächsten ist).
  • Für ein Polynom vierten Grades in s sind jedoch die Krümmungskomponenten parabolische Funktionen von s. Eine Analyse von 7 zeigt, dass die y-Komponente der Krümmung entlang der ersten Hälfte des Blend-Abschnitts stetig wächst. Dagegen hat die x-Komponente der Krümmung einen Wert null am Anfang der ersten Hälfte des Blend-Abschnitts, wächst bis zu einem Maximalwert an einem gewissen Punkt auf dem ersten halben Blend-Abschnitt und fällt dann bis zum Endpunkt des ersten halben Blend-Abschnitts wieder bis auf null. Dementsprechend ist ein Polynom vierten Grades mit seiner eine parabolische Funktion der Wegdistanz darstellenden Krümmung in der Lage, ein gewünschtes Verhalten der Krümmung in der x-Achse zu erzeugen. Dieselben Überlegungen können bezüglich des zweiten halben Blend-Abschnitts angeführt werden. Außerdem wurde festgestellt, dass, wenn sich der Grad über vier hinaus erhöht, die Form des Blend-Abschnitts zwischen den Endpunkten schwer steuerbar wird. Daher wird bei einer beispielhaften Ausführungsform der vorliegenden Erfindung ein Polynom vierten Grades in einem Parameter u, welcher die Wegdistanz s gut approximiert, für blend1 und für blend2 verwendet.
  • Bei einer Ausführungsform hat jeder Spline-Abschnitt vierten Grades seine eigene eindeutige Koeffizientenmatrix [A]. Die in [A] enthaltenen Koeffizienten definieren die Geometrie des Spline-Abschnitts. Bei einer beispielhaften Ausführungsform können die Koeffizienten abgeleitet werden, indem eine Menge von Nebenbedingungen bezüglich der Eigenschaften des Abschnitts formuliert wird. Um die Koeffizienten vollständig zu spezifizieren, kann die Anzahl der Nebenbedingungen um eins größer sein als der Grad des Spline-Polynoms. Diese Anforderung wird benötigt, um die exakte Lösung der Menge von linearen Gleichungen zu ermöglichen, die erhalten wird, wenn Nebenbedingungen verwendet werden.
  • Unten sind die Nebenbedingungen für den ersten halben Spline-Blend-Abschnitt gemäß dieser Ausführungsform der Erfindung aufgelistet. Diese Nebenbedingungen können verwendet werden, um die Matrix [A] für den ersten halben Spline-Blend- Abschnitt zu formulieren. Anschließend kann, ausgehend von den Ergebnissen für den ersten halben Blend-Abschnitt, die Formulierung der Matrix [A] für den zweiten halben Blend-Abschnitt entwickelt werden, derart, dass die zwei Blend-Abschnitte Spiegelbilder voneinander sind. Um eine gewünschte Krümmung des Corner-Blend-Abschnitts zu erzielen, und gemäß einem anderen Aspekt der Erfindung, können bei dieser Ausführungsform fünf Nebenbedingungen auf den ersten halben Spline-Blend-Abschnitt angewendet werden, wie folgt:
    • • 1) Der Anfangspunkt des Spline-Abschnitts blend1 fällt mit dem Endpunkt des ersten linearen Abschnitts (modifizierter Abschnitt span) zusammen.
    • • 2) Der Einheitstangentenvektor am Anfang des Spline-Abschnitts blend1 ist mit dem Einheitstangentenvektor des linearen Abschnitts span identisch (d. h. die Komponenten der Richtungsvektoren der Abschnitte sind an der Abschnittsgrenze identisch).
    • • 3) Die Krümmung am Anfangspunkt des Spline-Abschnitts blend1 ist ein Nullvektor (d. h. die Krümmung an der Abschnittsgrenze stimmt mit der Krümmung des ersten linearen Abschnitts überein, welche null ist).
    • • 4) Der Einheitstangentenvektor am Ende des Spline-Abschnitts blend1 hat 1,0 als x-Komponente und 0,0 als y-Komponente (d. h. er ist parallel zur x-Achse).
    • • 5) Der Krümmungsvektor am Ende des Spline-Abschnitts blend1 hat eine x-Komponente null und eine negative y-Komponente, deren Betrag auf der Grundlage von Überlegungen festgelegt wird, die weiter unten dargelegt werden.
  • Die Nebenbedingungen, die oben für diese Ausführungsform beschrieben wurden, beinhalten drei Parameter, welche nicht in den Abschnittsdaten enthalten sind, die innerhalb des Teileprogramms programmiert sind. Diese drei zusätzlichen Parameter sind die Länge des Blend-Abschnitts s, die Position, wo der lineare Abschnitt in den Spline-Abschnitt übergeht, und der Betrag der Krümmung am Ende des ersten Spline-Abschnitts blend1. Diese Parameter können ausgehend von der Corner-Blend-Toleranz (d. h. der y-Koordinate des Endpunktes von blend1), der geforderten x-Koordinate des Endpunktes von blend1 und der Forderung, dass der Spline-Parameter u den Wegdistanz-Parameter s so gut wie möglich approximieren sollte, hergeleitet werden. Unten werden Gleichungen für diese drei Parameter hergeleitet. Im restlichen Teil dieses Abschnitts werden unter der Annahme, dass alle erforderlichen Parameter bekannt und verfügbar sind, die Gleichungen für die Spline-Koeffizientenmatrizen hergeleitet.
  • Bei dieser Ausführungsform können die Nebenbedingungen für die Herleitung der Polynomkoeffizienten entwickelt werden, indem angenommen wird, dass der Spline-Parameter u äquivalent zu der Distanz entlang des Weges s ist. Es wurde jedoch festgestellt, dass manche Formulierungen besser als andere sein können, wenn bewirkt werden soll, dass u eine gute Approximation für s ist. Im Ergebnis dieser Tests wurde ermittelt, dass die letzten beiden Nebenbedingungen (horizontaler Tangentenvektor und vertikaler Krümmungsvektor am Scheitelpunkt des Blend-Abschnitts) beide vorhanden sein sollten, um zu erzwingen, dass u nahezu äquivalent zu s ist. An den Endpunkten des Spline-Abschnitts ist dann der Parameter u äquivalent zu der Wegdistanz s.
  • Die erste Nebenbedingung (Anfangsposition von blend1 fällt mit dem modifizierten span zusammen) kann in Gleichungsform geschrieben werden, indem der Spline bei u = 0 berechnet wird. Mit der Wahl des Ursprungs des Koordinatensystems als Anfangspunkt des ersten Blend-Abschnitts wurde beabsichtigt, die Gleichungen für die Nebenbedingungen zu vereinfachen.
  • Figure 00270001
  • Die zweite Nebenbedingung (Anfangsrichtung ist identisch mit dem Tangentenvektor von span) kann in Gleichungsform geschrieben werden, indem die erste Ableitung von p nach u an der Stelle u = 0 gleich dem Einheitstangentenvektor von span gesetzt wird. Die Komponenten des Einheitstangentenvektors sind die Richtungskosinusse des linearen Abschnitts in dem Eckenebenen-Koordinatensystem, und die Richtungskosinusse können direkt aus dem Winkel θ berechnet werden, der in Gleichung 2 definiert ist.
  • Figure 00280001
  • Was nun die dritte Nebenbedingung (die Anfangskrümmung null betreffend) anbelangt, so kann sie in Gleichungsform geschrieben werden, indem die zweite Ableitung von p nach u an der Stelle u = 0 gleich dem Krümmungsvektor null gesetzt wird.
  • Figure 00280002
  • Die vierte Nebenbedingung (Endrichtung von blend1 parallel zur x-Achse) entspricht der Gleichsetzung der ersten Ableitung am Endpunkt von blend1 mit dem Einheitsvektor parallel zur x-Achse. Der Endpunkt von blend1 kann erhalten werden, indem der Spline an der Stelle u = S berechnet wird, wobei S die Gesamtlänge des Blend-Abschnitts ist.
  • Figure 00280003
  • Schließlich beinhaltet die fünfte Nebenbedingung (welche besagt, dass die Endkrümmung eine x-Komponente null und eine negative y-Komponente hat) die Gleichsetzung der zweiten Ableitung der Spline-Abschnitts-Position, berechnet am Ende von blend1, mit dem in die negative y-Richtung gerichteten Krümmungsvektor mit einem Betrag von κ.
  • Figure 00290001
  • Bei dieser Ausführungsform können diese fünf Nebenbedingungen gleichzeitig auf die Spline-Gleichung von Gleichung (3) angewendet werden, um die folgende Matrixgleichung zu erzeugen. In der folgenden Gleichung wird der Index 1 von [A1] verwendet, um darauf hinzuweisen, dass die Koeffizientenmatrix nur für den ersten halben Spline-Blend-Abschnitt blend1 gilt.
  • Figure 00290002
  • Das Invertieren der Matrix auf der rechten Seite führt zu einer Gleichung für die Koeffizientenmatrix [A1].
  • Figure 00290003
  • Die Ausführung der Matrixmultiplikation führt zu dem Endergebnis für die Koeffizientenmatrix [A1] für den ersten halben Spline-Blend-Abschnitt.
  • Figure 00300001
  • Eine analoge Menge von Nebenbedingungen, angewendet auf den zweiten halben Blend-Abschnitt, führt zu einer Koeffizientenmatrix [A2] für blend2, welche die folgenden Elemente hat. Die Variable D, welche in der Gleichung für [A2] vorhanden ist, ist in 7 definiert. In einem späteren Abschnitt wird eine beispielhafte Bestimmung von D erörtert.
  • Figure 00300002
  • Berechnung der Scheitelpunktkrümmung κ, der Länge des Blend-Abschnitts S und des Unterbrechungspunkt-Abstands D
  • Im vorhergehenden Abschnitt wurden die Spline-Koeffizientenmatrizen der Gleichungen (11) und (12) für die Ausführungsform auf der Grundlage einer Annahme hergeleitet, dass die Scheitelpunktkrümmung κ, die Länge des Blend-Abschnitts S und der Unterbrechungspunkt-Abstand D alle bekannt sind. In diesem Abschnitt werden Gleichungen für D und S unter der Annahme abgeleitet, dass κ bekannt ist, und danach wird erörtert, wie κ gewählt werden kann, um eine optimale Parametrisierung der Weglänge zu erhalten. Sobald diese drei Parameter bekannt sind, können die Matrixgleichungen (11) und (12) für die Spline-Blend-Abschnitte blend1 und blend2 definiert werden.
  • Die Gleichungen zur Gewinnung von D und S lassen sich erhalten, indem der erste halbe Blend-Abschnitt blend1 betrachtet wird. Das Kombinieren der Gleichungen (3) und (11) und das Berechnen an der Stelle u = S liefert die x- und die y- Koordinate des Endpunktes von blend1. Die y-Koordinate ist diejenige des Endpunktes des ursprünglichen linearen Abschnitts y1 abzüglich der Corner-Blend-Abweichung e (welche im Idealfall die Corner-Blend-Toleranz ist, wie oben erläutert). Die x-Komponente ist der Endpunkt x1 des ursprünglichen linearen Abschnitts.
  • Figure 00310001
  • Die Auswertung der obigen Gleichung führt zu den folgenden zwei Gleichungen:
    Figure 00310002
  • Die Terme x1 und y1 können durch Terme ersetzt werden, welche die Parameter D und θ enthalten, und die folgenden zwei Gleichungen können durch Betrachtung von 7 erhalten werden: x = D θ (16) y = D θ (17)
  • Das Kombinieren der Gleichungen (14) bis (17) liefert die folgenden zwei Gleichungen:
    Figure 00320001
  • Eine Gleichung für den Unterbrechungspunkt-Abstand D, als eine direkte Funktion des bekannten Winkels θ, der Corner-Blend-Toleranz e und der gewählten Scheitelpunktkrümmung κ, kann erhalten werden, indem Gleichung (18) verwendet wird, um die S enthaltenden Terme in Gleichung (19) zu eliminieren.
  • Figure 00320002
  • Eine Lösung für D könnte dann erhalten werden, indem die obige quadratische Gleichung (20) gelöst wird. Die Anwendung einer solchen Vorgehensweise hat jedoch den Nachteil, dass sie zwei Lösungen für D liefert und nicht die Frage löst, wie κ zu wählen ist. Eine beispielhafte Lösung von Gleichung (19) wird nach der Diskussion der Wahl von κ vervollständigt.
  • Experimente haben gezeigt, dass die richtige Wahl von κ wichtig sein könnte, um einen Spline zu erhalten, dessen Parametrisierung die Distanz entlang der Kurve sehr gut approximiert, d. h. u ≈ s. Die Wahl von κ kann normiert werden, indem es zu dem Radius r eines in die Ecke eingeschriebenen Kreises ins Verhältnis gesetzt wird, welcher an den durch D definierten Unterbrechungspunkten tangential zu den ursprünglichen linearen Abschnitten verläuft. Es kann ein Krümmungsfaktor f definiert werden, um die Kreiskrümmung zu der Spline-Scheitelpunktkrümmung κ ins Verhältnis zu setzen: (21)
    Figure 00330001
  • Die Analyse von 7 kann die folgende Gleichung für den Radius r eines Kreises liefern, welcher an den beiden Punkten (x0, y0) und (x1, y1) tangential zu den Abschnitten verläuft: r = D·θ (22)
  • Ein Kombinieren der vorhergehenden beiden Gleichungen liefert κ, ausgedrückt über θ und D.
  • Figure 00330002
  • Gleichung (20) kann dann unter Verwendung von Gleichung (23) nach D aufgelöst werden.
  • Figure 00330003
  • Nach Vereinfachung und Umordnung nimmt die letzte Gleichung die unten angegebene endgültige Form an und ist eine beispielhafte Lösung für D.
  • Figure 00330004
  • Der oben erörterte Krümmungsfaktor f(θ) kann experimentell bei einer Anzahl von gleiche Abstände aufweisenden Winkeln θ bestimmt werden, die einen Bereich von etwa 5° bis etwa 85° abdecken. Um diesen Faktor zu bestimmen, kann die nachfolgend skizzierte Vorgehensweise angewendet werden:
    • 1. Es wird ein als "Kandidat" in Frage kommender Wert für f(θ = θn) = fvorgeschlagen gewählt.
    • 2. Die Koeffizientenmatrizen der Spline-Blend-Kurven können unter Verwendung der Gleichungen (25), (23), (18), (11) und (12) berechnet werden.
    • 3. Die Corner-Blend-Abschnitte können unter Verwendung einer konstanten Schrittweite du interpoliert werden, welche im Vergleich zu der Abschnittslänge S genügend klein ist, um die Beobachtung feiner Einzelheiten zu ermöglichen.
    • 4. Die inkrementelle Änderung der Wegdistanz, welche über jedem i-ten Interpolationsintervall eintritt, Δsi, wird berechnet als
      Figure 00340001
    • 5. Die maximale Abweichung von einer perfekten Parametrisierung, welche während des Abschnitts auftritt, wird als das Maximum der Größe E = x(|–Δsi Δu|) über alle i berechnet.
    • 6. Der maximale Parametrisierungsfehler wird verwendet, um unter Anwendung einer Technik wie etwa einer Suche in Intervallhälften einen neuen Wert für fvorgeschlagen zu bestimmen.
    • 7. Die Schritte 1–6 können iterativ wiederholt werden, bis E oder die Änderung von fvorgeschlagen unsignifikant gering ist.
    • 8. Die Schritte 1–7 können für jeden Wert von θn wiederholt werden.
  • Diese Prozedur kann automatisch ausgeführt werden, und ein beispielhaftes Ergebnis ist die unten angegebene Wertetabelle für f(θ). Experimentell ermittelte Werte für f(θ)
    θ < 5° 10° 15° 20° 25° 30° 35° 40° 45°
    f 1.66 1.663 1.66 1.657 1.652 1.646 1.639 1.631 1.62 1.61
    30 0 04 1 7 9 9 7 23 20
    00 00 02 44 04 92 98 36 12 10
    θ 50° 55° 60° 65° 70° 75° 80° 85° > 85°
    f 1.60 1.589 1.57 1.558 1.540 1.521 1.500 1.476 1.47
    13 5 42 1 5 2 0 4 64
    55 20 91 23 71 94 16 88 88
  • Bei einer realen Implementierung von Spline Cornering kann der Krümmungsfaktor für einen beliebigen Wert von θ innerhalb des maximalen Bereiches von ungefähr 5° bis ungefähr 85° unter Verwendung einer Nachschlagtabelle und unter Anwendung von linearer Interpolation für Werte von θ, welche zwischen den Tabelleneinträgen liegen, bestimmt werden. Falls θ größer als ungefähr 85° oder kleiner als ungefähr 5° ist, wird der entsprechende konstante Wert verwendet.
  • Transformation zu Werkzeugmaschinen-Koordinaten
  • In den vorhergehenden Abschnitten wurden die Einzelheiten dargelegt, um mögliche Koeffizientenmatrizen für den ersten und zweiten halben Corner-Blend-Abschnitt (blend1 und blend2) zu bestimmen, dargestellt in einem Eckenebenen-Koordinatensystem. Wenn ein solches Eckenebenen-Koordinatensystem verwendet wird, können die Ergebnisse jedoch in das Koordinatensystem der Werkzeugmaschine umgewandelt werden, um den Positionsbefehlsgenerator (in 1 mit 414 bezeichnet) in die Lage zu versetzen, eine Interpolation durchzuführen und Positionsbefehle auf physikalische Werkzeugmaschinenachsen anzuwenden.
  • Es ist allgemein bekannt, dass die in einem lokalen Koordinatensystem ausgedrückten Koordinaten eines Punktes in ein globales Koordinatensystem transformiert werden können durch: 1) Multiplizieren mit einer Matrix [R], um das lokale Koordinatensystem so zu drehen, dass es parallel zu dem globalen Koordinatensystem ist; und 2) Addieren des Vektors {T} vom Ursprung des globalen Koordinatensystems zum Ursprung des lokalen Koordinatensystems, wobei {T} unter Verwendung globaler Koordinaten ausgedrückt ist.
  • Figure 00360001
  • Ein Ausdruck für die Rotationsmatrix [R] kann dann erhalten werden, indem die Projektionen des in lokalen Koordinaten ausgedrückten Punktes auf jede der Hauptachsen des globalen Koordinatensystems ermittelt werden. Projektionen können mittels des Skalarproduktes von Vektoren berechnet werden. X = (xȗ + yv ^ + zŵ)·i ^ + TX ⇒ X = xȗi ^ + yv ^·i ^ + zŵ·i ^ + TX Y = (xȗ + yv ^ + zŵ)·j ^ + TY ⇒ Y = xȗ·j ^ + yv ^·j ^ + zŵ·j ^ + TY Z = (xȗ + yv ^ + zŵ)·k ^ + TZ ⇒ Z = xȗ·k ^ + yv ^·k ^ + zŵ·k ^ + TZ (25B)
  • Das Ausdrücken aller Einheitsvektoren in dem globalen System führt zur folgenden Darstellung der Einheitsvektoren.
  • Figure 00360002
  • Das Kombinieren dieser Darstellungen der Einheitsvektoren mit den Gleichungen in Gleichung (258) liefert die folgende Formel für die Rotationsmatrix: [R] = [{ȗ} {v ^} {ŵ}] (25D)
  • Für den speziellen Fall, wenn das Eckenebenen-Koordinatensystem in das Werkzeugmaschinen-Koordinatensystem transformiert werden soll, kann eine Reihe von Verfahren angewendet werden. Ein Transformieren direkt in Interp-Koordinaten ist eine Möglichkeit. Der Begriff "Interp-Koordinaten" wird hier in dem Sinne verwendet, dass er sich auf das Koordinatensystem bezieht, in welchem Verschiebungen angewendet werden, um die Position des Teils und die Werkzeuggeometrie zu berücksichtigen. Bei einer solchen Ausführungsform können die Daten des Spline-Blend-Abschnitts von dem Eckenebenen-Koordinatensystem in das Koordinatensystem mit Interp-Koordinaten umgewandelt werden, indem Rotations- und Translationstransformationen auf die Koeffizientenmatrizen (Gleichungen (11) und (12)) angewendet werden. Die Rotationsoperation bewirkt, dass zu den Koeffizientenmatrizen A1 und A2 eine Zeile hinzukommt (d. h. ihre Dimension erhöht sich von 2 × 5 auf 3 × 5).
  • Die ersten zwei Spalten der Rotationsmatrix können direkt durch Betrachtung von 7 bestimmt werden. Die erste Spalte der Rotationsmatrix ist der Einheitsvektor in x-Richtung des lokalen Systems, ausgedrückt in Interp-Koordinaten. Er kann berechnet werden aus der Befehlsposition der Abschnittsdaten für den Abschnitt, der blend1 vorangeht, P0 = {X0, Y0, Z0}, und der Befehlsposition der Abschnittsdaten für blend2, P2 = {X2, Y2, Z2}.
  • Die Koordinaten X, Y, Z entsprechen nicht notwendigerweise den logischen Achsen mit demselben Namen. Die Schreibweise wird verwendet, um die Koordinaten der drei zueinander orthogonalen linearen Achsen zu bezeichnen, welche den Spline-Unterraum des Koordinatensystems mit Interp-Koordinaten umfassen. Daher kann, aufgrund der Analyse von 7, die erste Spalte der Rotationsmatrix durch Folgendes dargestellt werden, wobei die doppelten vertikalen Linien verwendet werden, um die Vektornorm (Länge) zu bezeichnen:
    Figure 00380001
  • Die Gleichung für die zweite Spalte der Rotationsmatrix kann ebenfalls durch Analyse von 7 erhalten werden. Sie ist ein Vektor, der vom Mittelpunkt der Linie, welche P0 mit P2 verbindet, zum Eckpunkt P1 gerichtet ist.
  • Figure 00380002
  • Die Berechnung des Kreuzproduktes der ersten zwei Spalten, wie unten dargestellt, würde die dritte Spalte der Rotationsmatrix erzeugen.
  • Figure 00380003
  • Nachdem die Rotation abgeschlossen ist, kann die Translation durchgeführt werden. Der Translationsvektor ist die Position des Ursprungs des Eckenebenen-Koordinatensystems, ausgedrückt in (dem Spline-Unterraum des) Koordinatensystem mit Interp-Koordinaten. Aus der Betrachtung von 7 ist ersichtlich, dass der Translationsvektor äquivalent zu dem Endpunkt des Abschnitts ist, der blend1 vorangeht. T = P ⇒ TX = X TY = Y TZ = Z (29)
  • Durch Anwendung von Gleichung (25A) auf einen der Spline-Abschnitte kann dann die Transformation einer Spline-Koeffizientenmatrix [A] von den Eckenebenen-Koordinaten in Interp-Koordinaten durchgeführt werden. Da die z-Koordinate der Eckenebenen-Darstellung des Abschnitts null ist, hat die Eckenebenen-Matrix [A] nur zwei Zeilen, und nur die ersten zwei Spalten der Rotationsmatrix sind notwendig, um die Rotation zu bewerkstelligen.
  • In der folgenden Gruppe von Gleichungen ist [Ac] die 2 × 5-Koeffizientenmatrix für die Eckenebenen-Darstellung des Spline-Abschnitts, und [Am] ist die 3 × 5-Koeffizientenmatrix für die Darstellung des Spline-Abschnitts in Interp-Koordinaten. Dieselbe Gleichung mit der identischen Rotation und Translation kann auf beide Abschnitte blend1 und blend2 angewendet werden. Die Beziehung zwischen Ac und Am kann wie folgt hergeleitet werden.
  • Die erste Gleichung (25A) kann für den Fall einer Drehung von einem ebenen Koordinatensystem in ein dreidimensionales Koordinatensystem geschrieben werden.
  • Figure 00390001
  • Als nächstes können die Eckenebenen-Koordinaten explizit als ein Polynom vierten Grades geschrieben werden.
  • Figure 00390002
  • Die Form der Spline-Gleichung in den dreidimensionalen Interp-Koordinaten ist folgende: {X Y Z}T = [Am] {u u u u }T (32)
  • Das Gleichsetzen von Gleichung (31) mit Gleichung (32) liefert das Endergebnis, welches eine Beziehung direkt zwischen [Am] (der Darstellung des Spline-Abschnitts in Eckenebenen-Koordinaten) und [Ac] (der Darstellung des Spline-Abschnitts in Interp-Koordinaten, welche verwendet werden kann, um die Bewegung durchzuführen) herstellt.
  • Figure 00400001
  • Bei der Implementierung braucht die Addition einer Matrix, die hauptsächlich mit Nullen besetzt ist, nicht ausgeführt zu werden. Stattdessen kann zuerst die Rotation angewendet werden. Das Addieren der Translationskomponenten zu den existierenden Werten kann die letzte Spalte der rotierten Matrix verändern.
  • Es wurde eine Anzahl von speziellen Schritten und Gleichungen für eine Ausführungsform des Verfahrens und der Vorrichtung der vorliegenden Erfindung für das Spline Corner Blending beschrieben. Allgemein sind die Schritte dieser Ausführungsform in dem Flussdiagramm von 10 dargestellt.
  • Der erste Schritt (nicht dargestellt) besteht darin, die verschiedenen linearen Abschnitte innerhalb des Teileprogramms zu definieren und diese aufeinander folgenden linearen Abschnitte zu betrachten. In Schritt 302 wird bestimmt, ob das Corner Blending aktiviert worden ist, etwa durch Erkennen eines Befehls innerhalb des Teileprogramms. Falls die Option Corner Blending nicht aktiviert worden ist, kann die durch lineare Abschnitte definierte Bewegung so durchgeführt werden, wie sie ursprünglich programmiert wurde, und wird nicht geändert, wie in Schritt 304 dargestellt. Dementsprechend können sich stufenförmige Geschwindigkeitsänderungen ergeben, sofern nicht an den Ecken vollständige Stopps veranlasst werden.
  • Falls jedoch das Merkmal Corner Blending aktiviert ist, setzt sich der Prozess mit Schritt 303 fort. In diesem Schritt kann das lokale Koordinatensystem für die durch die Abschnitte definierte Ecke gewählt werden. Diese Achsen bilden eine Menge von zueinander orthogonalen linearen Achsen.
  • In Schritt 305 kann der Unterbrechungspunkt-Abstand berechnet werden. Dieser Wert kann unter Verwendung von Gleichung (25) berechnet werden, wie oben erläutert. Der Krümmungsfaktor, der in dieser Gleichung verwendet wird, kann aus einer Nachschlagtabelle ausgewählt werden, welche bei einer Ausführungsform im Voraus erstellt wird, etwa unter Anwendung des oben beschriebenen Prozesses.
  • Anschließend kann Schritt 308 ausgeführt werden, wo bestimmt werden kann, ob die aufeinander folgenden Abschnitte in dem Teileprogramm den Anforderungen für die Anwendung von Corner Blending genügen. Zum Beispiel wird bei einer beispielhaften Ausführungsform, wie oben erläutert, kein Corner Blending angewendet, falls die zwei aufeinander folgenden linearen Abschnitte einen Winkel definieren, welcher sehr klein ist. Dementsprechend setzt sich der Prozess mit Schritt 304 fort, und die ursprünglich programmierte Bewegung kann veranlasst werden.
  • Falls die Abschnitte jedoch den in Schritt 308 geprüften Anforderungen genügen, setzt sich der Prozess mit Schritt 310 fort, wo bestimmt werden kann, ob die Bedingungen für Fall 1 (oben erläutert) erfüllt sind. Ist dies der Fall, kann Schritt 312 ausgeführt werden, und der erste lineare Abschnitt kann durch einen ersten Spline-Abschnitt ersetzt werden, der zweite lineare Abschnitt kann gekürzt werden, und ein zweiter Spline-Abschnitt kann zwischen dem ersten Spline-Abschnitt und dem gekürzten zweiten linearen Abschnitt eingefügt werden.
  • Falls die Bedingungen für Fall 1 nicht erfüllt sind, prüft der Prozess in Schritt 314 die Abschnitte hinsichtlich der Erfüllung der Bedingungen von Fall 2 (oben erläutert). Falls die Bedingungen von Fall 2 erfüllt sind, setzt sich der Prozess mit Schritt 316 fort. In diesem Schritt kann der erste lineare Abschnitt um die Hälfte der Länge des zweiten Abschnitts gekürzt werden, der zweite lineare Abschnitt kann auf die Hälfte seiner ursprünglichen Länge gekürzt werden, ein erster Spline-Abschnitt kann nach dem ersten linearen Abschnitt eingefügt werden, und ein zweiter Spline-Abschnitt kann nach dem ersten Spline-Abschnitt und vor dem zweiten linearen Abschnitt eingefügt werden.
  • Falls festgestellt wird, dass die Bedingungen für Fall 2 nicht erfüllt sind, setzt sich der Prozess mit Schritt 318 fort, wo bestimmt werden kann, ob die Bedingungen für Fall 3 erfüllt sind. Ist dies der Fall, kann Schritt 320 ausgeführt werden. Dementsprechend kann der erste lineare Abschnitt gekürzt werden, der zweite lineare Abschnitt kann durch einen zweiten Spline-Abschnitt ersetzt werden, und ein erster Spline-Abschnitt kann zwischen dem gekürzten linearen Abschnitt und dem zweiten Spline-Abschnitt eingefügt werden.
  • Falls die Bedingungen entweder für Fall 1 oder Fall 2 oder Fall 3 erfüllt sind, und nachdem die entsprechenden Blend-Abschnitte eingefügt worden sind, kann ein neuer Unterbrechungspunkt-Abstand berechnet werden, selbstverständlich ausgehend davon, wie der (die) lineare(n) Abschnitt(e) in Schritt 312, 316 oder 320 gekürzt wurde(n). Falls jedoch die Antwort auf die Bestimmung in Schritt 318 ebenfalls negativ ist, kann Schritt 322 ausgeführt werden. In diesem Schritt kann der erste lineare Abschnitt gekürzt werden, und es kann ein erster Blend-Abschnitt eingefügt werden, derart, dass seine nächste Annäherung an die Ecke gleich der Blend-Toleranz ist. Ebenso kann der zweite lineare Abschnitt gekürzt werden, und es kann ein zweiter Blend-Abschnitt zwischen dem ersten Blend-Abschnitt und dem zweiten linearen Abschnitt eingefügt werden.
  • Der Prozess führt dann von Schritt 322 oder 324 weiter zu Schritt 326. In Schritt 326 können die Blend-Länge und die Scheitelpunktkrümmung berechnet werden. Diese Werte können unter Verwendung der Gleichungen (18) und (23) berechnet werden, wie oben erläutert. Wie bei Gleichung (25) kann der Krümmungsfaktor, der in Gleichung (23) verwendet wird, aus einer Nachschlagtabelle gewählt werden, welche bei einer Ausführungsform im Voraus erstellt wird, etwa unter Anwendung des oben beschriebenen Prozesses.
  • Nachdem diese Werte berechnet wurden, setzt sich der Prozess mit Schritt 328 fort. In diesem Schritt können die Koeffizientenmatrizen der zwei Spline-Abschnitte berechnet werden, zum Beispiel unter Verwendung der Gleichungen (11) und (12). Danach kann Schritt 330 ausgeführt werden, und die Matrizen, welche berechnet werden, können von dem lokalen Koordinatensystem in ein Koordinatensystem transformiert werden, welches für Werkzeugmaschinen-Befehle verwendet wird. Nachdem die Transformation abgeschlossen ist, können die Matrizen verwendet werden, um Positionsbefehle zu erzeugen, welche eine glatte Bewegung durch die Ecke hindurch ohne stufenförmige Unstetigkeit der Geschwindigkeit zur Folge haben.
  • Implementierung von Spline Corner Blending mittels Arbeitsstufen-Verarbeitung und Zustandsmaschine
  • Im Folgenden wird eine mögliche digitale Implementierung des oben beschriebenen Corner Blending erörtert. Bei dieser Ausführungsform tritt eine Implementierung des Verfahrens und der Vorrichtung zum Corner Blending während zweier von den mehreren Arbeitsstufen auf, die erforderlich sind, um einen Abschnitt zur Ausführung vorzubereiten. Im Allgemeinen hat die erste Arbeitsstufe, in welcher Corner-Blend-Abschnitte bearbeitet werden, die Konstruktion der Spline-Koordinaten-Matrizen der obigen Gleichungen (11) und (12) zum Ergebnis. Die Verarbeitung des Corner-Blend-Abschnitts kann während der Abschlussstufe der Abschnittsverarbeitung abgeschlossen werden. Während der Abschlussstufe können die Spline-Koeffizientenmatrizen des Corner Blend in Werkzeugmaschinen-Koordinaten transformiert werden.
  • Bei einer Ausführungsform wird die Position der ersten Arbeitsstufe (hier als Spline-Corner-Blend-Stufe oder SCB-Stufe bezeichnet) so gewählt, dass ihr ermöglicht wird, so nahtlos wie möglich mit anderen Merkmalen des CNC-Steuergerätes zusammenzuwirken. Bei einer beispielhaften Ausführungsform findet die Spline-Corner-Blend-Stufe nach einer Spline-Interpolationsstufe statt, falls eine solche Interpolation verwendet wird, um eine Einfügung von Blends zwischen linearen Abschnitten zu ermöglichen, welche die Spline-Interpolationsstufe entschieden hat, als linear zuzuweisen.
  • 11 ist ein Blockschaltbild, das eine solche beispielhafte Ausführungsform veranschaulicht. Unter Verwendung einer geeigneten Benutzeroberfläche 202 ist der Benutzer in der Lage, ein Teileprogramm 204 zu erzeugen, welches die verschiedenen Befehle für eine maschinelle Bearbeitung enthält, die verwendet werden, um das Werkstück zu bearbeiten, sowie Bewegungsbefehle und Datenpunkte, welche den Weg definieren, den das Werkstück relativ zum Werkzeug zurücklegt.
  • Das Teileprogramm 204 kann von einer Abschnittsvorbereitungs-Einheit 208 empfangen werden, welche eine Arbeitsstufen-Verarbeitungseinheit 206 enthält, welche die Datenpunkte aus dem Teileprogramm 204 extrahiert, die den befehlsgesteuerten Bewegungsweg definieren, und diese Daten als Datenobjekte speichert, welche verschiedene Abschnitte entlang des Weges repräsentieren. Diese Abschnitte können dann durch die Abschnittsvorbereitungs-Einheit 208 modifiziert werden, welche bei dieser Ausführungsform ein Programm umfasst, das entsprechend den Lehren der vorliegenden Erfindung abläuft.
  • Die Abschnittsvorbereitungs-Einheit 208 von 11 enthält eine Spline-Corner-Blend-(SCB-)Stufe 210 und eine Menge von Operationen, die als Teil der universellen Vorwärtstransformationsstufe 212 ausgeführt werden. Die SCB-Stufe 210 empfängt Abschnittsdaten, welche bereits einer Anzahl von Abschnittsvorbereitungsstufen in der Arbeitsstufen-Verarbeitungseinheit 206 unterzogen worden sind. Unter Verwendung dieser Daten entscheidet die SCB-Stufe 210, ob das Einfügen eines Corner Blends an verschiedenen Stellen in dem Bewegungsweg von Vorteil wäre. Ist dies der Fall, überarbeitet die SCB-Stufe 210 die Abschnittsdaten und/oder fügt zusätzliche Abschnittsdaten-Objekte ein, so dass eine Ecke definiert wird, die Stetigkeit in der Krümmung aufweist. Zum Beispiel könnten, wie oben erläutert, die Daten für zwei lineare Abschnitte derart modifiziert werden, dass die Abschnitte gekürzt werden, und es könnten zwei Spline-Abschnitte vierten Grades zwischen den gekürzten linearen Abschnitten eingefügt werden.
  • Da jedoch diese Abschnittsmodifikationen in einem Koordinatensystem stattfinden können, welches bezüglich der Ecke lokal ist, kann eine Vorwärtstransformationsstufe 212 verwendet werden, um die Daten zurück zu einem globalen Koordinatensystem zu transformieren, welches für die eigentliche Ausführung von Werkzeugmaschinen-Befehlen verwendet werden kann. Dementsprechend transformiert die Vorwärtstransformationsstufe 212 die modifizierten Daten von der SCB-Stufe 210 und stellt die überarbeiteten Corner- Abschnitte der Abschnittsvorbereitungs-Einheit 208 zur Verfügung.
  • Es ist möglich, dass andere Stufen 214 ebenfalls auf die Daten einwirken, welche in der Abschnittsvorbereitungs-Einheit 208 enthalten sind. Nachdem die Verarbeitung der Abschnittsdaten abgeschlossen ist, können sie in einen Positionsbefehlsgenerator 216 eingespeist werden, welcher die Daten verwendet, um Positionsbefehle zu erzeugen, die in einen Servocontroller 218 eingespeist werden können. Bei einer beispielhaften Ausführungsform enthält der Positionsbefehlsgenerator 216 einen Interpolator zum Interpolieren von Zwischenpunkten zwischen den Datenpunkten, welche einen Abschnitt darstellen. Der Servocontroller 218 verwendet dann die Positionsbefehle, um einen Motor 220 anzusteuern.
  • Bei einer beispielhaften Ausführungsform können die Funktionen der SCB-Stufe 210 in Folgendem bestehen:
    • • Wählen des Spline-Koordinatensystems von zueinander orthogonalen Achsen.
    • • Entscheiden, an ein Spline Corner Blend möglich ist.
    • • Einfügen von Spline-Corner-Abschnitten zwischen linearen Abschnitten und/oder Umwandeln von linearen Abschnitten in Spline-Corner-Abschnitte.
    • • Bestimmen der Parameter Länge, Krümmung und Unterbrechungspunkt-Abstand von Spline-Abschnitten.
    • • Konstruieren der Spline-Koeffizientenmatrizen.
  • Bei einer beispielhaften Ausführungsform können eventuelle verbleibende Schritte, die notwendig sind, um die Vorbereitung der Spline-Abschnitte abzuschließen, auf den Vorwärtstransformationsprozess während der Abschlussstufe verschoben werden. Diese verbleibenden Schritte können das Umwandeln der Koeffizientenmatrix in Interp-Koordinaten, das Berechnen der Nebenbedingungsvektoren und das Aktualisieren von Abschnittsdaten beinhalten.
  • Um ihre Aufgaben zu erfüllen, benötigt die erste Arbeitsstufe einen Zugriff auf Abschnittsdaten, wie sie ursprünglich durch das Teileprogramm definiert wurden und möglicherweise durch Abschnittsvorbereitungsstufen modifiziert wurden, welche der SCB-Stufe vorangehen. Gemäß dieser Ausführungsform der Erfindung können die verschiedenen Abschnitte in einer verketteten Liste enthalten sein. Insbesondere greift die SCB-Stufe auf die Abschnittsdaten vom vorhergehenden Abschnitt (hier als prev bezeichnet), Abschnittsdaten vom nächsten Abschnitt (hier als next bezeichnet) und möglicherweise Abschnittsdaten vom nächsten Abschnitt des nächsten Abschnitts (hier als last bezeichnet) zu. Der aktuelle Abschnitt (hier als span oder curr bezeichnet) ist der Abschnitt, welcher gegenwärtig für eine Fertigstellung durch die Spline-Corner-Blend-Stufe vorbereitet wird. Der Abschnitt prev hat die gesamte Stufenverarbeitung abgeschlossen, einschließlich Berechnung von Nebenbedingungen und Erzeugung der Abschnittsdaten-Parameter, die für die Ausführung des Abschnitts benötigt werden.
  • Die Spline-Corner-Blend-(SCB-)Stufe 210 kann als eine endliche Zustandsmaschine (endlicher Automat) (Finite State Machine, FSM) implementiert werden. 9 ist ein Schema, welches eine mögliche FSM darstellt. Die FSM "schaut voraus" über die erforderliche Anzahl von Abschnitten, um zu entscheiden, ob die Abschnitte, welche die Ecke umfassen, genügend lang sind, um zu ermöglichen, dass zwei Spline-Corner-Blend-Abschnitte eingefügt werden und die linearen Abschnitte gekürzt werden, oder ob einer der linearen Abschnitte, welche die Ecke definieren, oder beide, in einen Spline-Abschnitt umgewandelt werden muss bzw. müssen.
  • Wie 8 zeigt, sind die möglichen Modifikationen der Liste, die durch diese Ausführungsform verursacht werden, von der in 8A bis 8E dargestellten Art. Die Abschnittsdaten aus dem Teileprogramm können in der Form einer verketteten Liste aufbewahrt werden, und die Liste kann durch die Ausführungsform der FSM von 9 modifiziert werden. Bei Option A werden keine Blend-Abschnitte eingefügt, da die beispielhaften Anforderungen für Spline Corner Blending nicht erfüllt sind. Bei dieser Option wird die Liste nicht geändert; span zeigt weiterhin auf next, und blend1 und blend2 zeigen auf Nullwerte. Im Betrieb wird kein Spline-Cornering durchgeführt, und es resultiert dann eine stufenförmige Unstetigkeit der Geschwindigkeit, sofern nicht ein vollständiger Stopp veranlasst wird (siehe 2).
  • Bei Option B wird die Liste so geändert, dass zwei Abschnitte zwischen den linearen Abschnitten in die Liste eingefügt werden, und die linearen Abschnitte werden in ihrer Länge gekürzt. Bei dieser Option zeigt blend1 auf den ersten eingefügten Abschnitt in der Liste, und blend2 zeigt auf den zweiten. Im Betrieb werden die zwei linearen Abschnitte gekürzt, und zwei glatt verbundene Spline-Abschnitte werden zwischen ihnen eingefügt (siehe 3).
  • Bei Option C wird die Liste derart geändert, dass blend1 auf span zeigt, und es wird ein Abschnitt zwischen span und next eingefügt. Blend2 wird dann so modifiziert, dass es auf den neu eingefügten Abschnitt zeigt. Im Betrieb bewirkt dies, dass der erste lineare Abschnitt durch die erste Hälfte des Corner-Blend-Abschnitts ersetzt wird, der zweite lineare Abschnitt gekürzt wird und die zweite Hälfte des Corner-Blend-Abschnitts zwischen der ersten Hälfte und dem gekürzten linearen Abschnitt eingefügt wird (siehe 4).
  • Bei Option D wird ebenfalls ein Abschnitt zwischen span und next in die Liste eingefügt. Blend1 zeigt dann auf den eingefügten Abschnitt, und blend2 zeigt auf next. Dies bewirkt, dass der erste lineare Abschnitt gekürzt wird, ein zweiter linearer Abschnitt durch die zweite Hälfte des Corner-Blend-Abschnitts ersetzt wird und die erste Hälfte des Corner-Blend-Abschnitts zwischen dem gekürzten linearen Abschnitt und der zweiten Hälfte des Corner-Blend-Abschnitts eingefügt wird (siehe 6).
  • Bei Option E schließlich wird die Liste so modifiziert, dass blend1 auf span zeigt und blend2 auf next zeigt. Im Betrieb werden beide lineare Abschnitte durch die zwei Hälften des Corner-Blend-Abschnitts ersetzt.
  • Allgemein können die Zustände der Maschine FSM der Ausführungsform folgende sein:
    • – Der Zustand geht von Warten auf neuen Abschnitt bis Knoten 5 über, prüft hinsichtlich der Mindestanforderungen für Spline Corner Blending, stellt sicher, dass die minimale Anzahl von Abschnitten vorbereitet ist, und bestimmt die Indizes der Achsen, die an dem Spline Corner Blend beteiligt sind.
    • – Der Zustand Unterbrechungspunkt-Abstand berechnen berechnet den Abstand vom Ende des linearen Abschnitts, welcher die Stelle des Übergangs zwischen dem linearen und dem Blend-Abschnitt definiert, unter der Annahme der idealen Umstände ausreichend langer linearer Abschnitte.
    • – Die Folge von Zuständen von Knoten 6 bis zur Fertigstellungs-Stufe, jedoch nicht einschließlich dieser, definiert, wie die Spline-Blend-Abschnitte eingefügt werden (d. h. aus den Optionen von 8).
    • – In den Zustand Außerhalb von Vorausschau kann eingetreten werden, wenn ein Spline-Abschnitt nicht eingefügt werden kann, weil der Vorausschau-Puffer erschöpft ist. Dementsprechend werden keine Spline-Abschnitte eingefügt, und Option A von 8 kann ausgeführt werden.
    • – Der Zustand Fertigstellungs-Stufe berechnet die Abschnittslänge und Eckenebenen-Koeffizientenmatrizen der Blend-Abschnitte (d. h. berechnet die obigen Gleichungen (11) und (12)).
  • Es wird nun auf die Einzelheiten der Ausführungsform einer Zustandsmaschine von 9 eingegangen; der Zustand Warten auf neuen Abschnitt 102 kann der Grundzustand sein, und in ihn kann bei einem Rücksetzungs- oder Abbruchvorgang (z. B. weil Spline-Abschnitte nicht eingefügt werden können) oder nach Abschluss der Berechnung der Koeffizientenmatrizen für die Spline-Blend-Abschnitte eingetreten werden. Bei Aufruf der Maschine FSM, während sie sich in diesem Zustand befindet, geht die FSM zu Knoten 1 über, in welchem eine Anzahl von Bedingungen geprüft werden kann, um sicherzustellen, dass die Abschnittsdaten (d. h. die Daten aus dem Teileprogramm, welche den ersten linearen Abschnitt definieren) den Anforderungen für Spline Corner Blending genügen. Falls der Abschnitt kein Abschnitt des Positionierungs-Modus ist (wo die Bewegung an der Ecke zu stoppen ist), kein Nicht-Bewegungs-Abschnitt ist, nicht der letzte Abschnitt eines Programms ist und nicht irgendwelche anderen Hinweise darauf enthält, dass der Abschnitt mit einem vollständigen Stopp enden wird, dann geht der Zustand zu Knoten 2 über. Andernfalls ist der Abschnitt für Spline Corner Blending nicht geeignet, und die FSM tritt wieder in den Zustand Warten auf neuen Abschnitt 102 ein. Falls der Benutzer die Option "Auf null verzögern" in der Konfiguration eingestellt hat, kann der Abschnitt mit einer Geschwindigkeit mit Verzögerung auf null ausgeführt werden, um eine stufenförmige Unstetigkeit der Geschwindigkeit zu vermeiden.
  • Am Knoten 2 kann das Vorhandensein von next (des zweiten Abschnitts von den zwei Abschnitten, welche eine Ecke definieren) bestimmt werden. Falls next existiert, geht die FSM zu Knoten 3 über. Andernfalls geht sie zu Knoten 4 über. Am Knoten 4 kann bestimmt werden, ob das System in der Lage ist, vor der Ausführung von span einen nächsten Abschnitt zur Verfügung zu stellen. Ist dies nicht der Fall, ist ein Spline Corner Blending nicht möglich, und die FSM geht zurück zu dem Zustand Warten auf neuen Abschnitt 102 über. Falls das System in der Lage ist, vor der Ausführung von span einen nächsten Abschnitt zur Verfügung zu stellen, geht die FSM vom Knoten 4 zum Zustand Warten auf nächsten Abschnitt 104 über.
  • Beim Zustand Warten auf nächsten Abschnitt 104 wird aus der Spline-Corner-Blend-Stufe ausgetreten, und die Abschnittsvorbereitungseinheit stellt sicher, dass beim nächsten Aufruf der Spline-Corner-Blend-Stufe next verfügbar ist und bereit ist, durch die Stufe verarbeitet zu werden. Daher befindet sich beim nächsten Aufruf der Spline-Corner-Blend-Stufe die FSM im Zustand Warten auf nächsten Abschnitt 104 und geht unmittelbar zu Knoten 3 über.
  • Am Knoten 3 kann next geprüft werden, um sicherzustellen, dass der Abschnitt ein linearer Interpolationsabschnitt ist, dass er kein Nicht-Bewegungs-Abschnitt ist, nicht erfordert, dass span (der Abschnitt vor next) in einem vollständigen Stopp endet und dass er kein Abschnitt ist, welcher Betriebsarten erfordert, welche eine Anwendung von Corner Blending ausschließen. Falls irgendeine dieser Bedingungen nicht erfüllt ist, dann darf kein Spline-Corner-Blend-Abschnitt eingefügt werden, und die FSM kann zurück zu dem Zustand Warten auf neuen Abschnitt 102 übergehen, in Erwartung irgendeines zukünftigen Aufrufs der Spline-Corner-Blend-Stufe. Falls der Benutzer die Option "Auf null verzögern" in der Konfiguration eingestellt hat, kann span mit einem vollständigen Stopp ausgeführt werden, um stufenförmige Geschwindigkeitsänderungen zu vermeiden.
  • Falls jedoch die Bedingungen am Knoten 3 erfüllt sind, kann in den Zustand Bestimmen von Spline-Achsen 106 eingetreten werden, in welchem die Menge von drei zueinander senkrechten Achsen, welche das Ecken-Koordinatensystem für das Spline Corner Blending definieren, bestimmt werden kann. Falls bestimmt wird, dass die an der Bewegung beteiligten Achsen eine Menge bilden, welche irgendwelche parallelen linearen Achsen oder Rotationsachsen enthält, ist eine geometrische Interpretation eines Spline Corner nicht möglich, die Stufe ist abgeschlossen, und die FSM kehrt zum Zustand Warten auf neuen Abschnitt 102 zurück. In diesem Falle kann der Abschnitt vollständig bis in die Ecke linear interpoliert werden, mit möglicher Verzögerung auf null, falls dies durch die Maschinenkonfiguration angegeben ist.
  • Die Spline-Achsen können gewählt werden, indem beurteilt wird, welche Maschinenachsen eine Bewegung durch die Ecke hindurch in modifizierten Programmkoordinaten erfahren. Die Achsen, welche sowohl während span als auch während next eine Bewegung erfahren, können für das lokale Koordinatensystem gewählt werden. Bei einer beispielhaften Ausführungsform umfassen die gewählten Spline-Achsen drei zueinander senkrechte Achsen aus der Menge von linearen Achsen {X Y Z U V W}, wobei X, Y und Z zueinander senkrecht sind und U, V und W zueinander senkrecht sind. Die Achsen X und U sind parallel, die Achsen Y und V sind parallel und die Achsen Z und W sind parallel.
  • Nachdem eine Menge von zueinander senkrechten linearen Achsen gewählt worden ist, kann die FSM zu Knoten 5 übergehen. Während des Übergangs zu Knoten 5 kann der Kosinus des Winkels, der von den Richtungsvektoren der zwei linearen Abschnitte gebildet wird, berechnet werden. Bei dieser Ausführungsform wird diese Berechnung des so genannten Kosinus-Skalarproduktes (welches äquivalent zum Kosinus des Winkels ϕ ist, der oben erläutert wurde) nur bezüglich der gewählten Spline-Achsen durchgeführt.
  • Danach kann am Knoten 5 das Kosinus-Skalarprodukt mit den festcodierten Minimum- und Maximum-Werten verglichen werden. Falls das Kosinus-Skalarprodukt bei einer Ausführungsform innerhalb des Bereiches für die Anwendung von Spline Corner Blending liegt, geht die FSM zum Zustand Unterbrechungspunkt- Abstand berechnen 108 über. Falls jedoch der Wert für das Kosinus-Skalarprodukt nicht innerhalb des Bereiches liegt, kann eine Anwendung von Spline Corner Blending als ungeeignet angesehen werden, und die FSM führt einen Zustandsübergang zum Zustand Warten auf neuen Abschnitt 102 aus, es erfolgt ein Austritt aus der SCB-Stufe, und der Abschnitt wird unter Anwendung von linearer Interpolation interpoliert. Eine Verzögerung auf null kann auferlegt werden, falls das Kosinus-Skalarprodukt größer als der festcodierte maximale Grenzwert ist, da dies bedeutet, dass von den zwei linearen Abschnitten eine scharfe Ecke definiert wird.
  • Dementsprechend verfügt diese Ausführungsform der Erfindung über die Fähigkeit zu bestimmen, wann die Einfügung eines Corner-Blend-Abschnitts zweckmäßig ist, basierend auf einem durch die zwei linearen Abschnitte definierten Winkel. Falls ein Corner-Blend-Abschnitt nicht geeignet ist, kann bei einer Ausführungsform lineare Interpolation mit einer Verzögerung auf null angewendet werden, falls der Winkel innerhalb eines vorbestimmten Bereiches liegt. Natürlich können auch andere Verfahren als der Vergleich des Kosinus-Skalarproduktes angewendet werden, um die Schärfe der Ecke zu beurteilen, wie etwa durch direkten Vergleich eines Winkels, der von den zwei linearen Abschnitten definiert wird, mit einem vorbestimmten Wert.
  • Nach dem Knoten 5 geht die beispielhafte FSM von 9 in den Zustand Unterbrechungspunkt-Abstand berechnen 108 der SCB-Stufe über. Dieser Zustand bestimmt den idealen Abstand von dem Ende des ersten linearen Abschnitts für den Übergang zur ersten Hälfte des Corner-Blends. Modifikationen dieses idealen Abstands können erforderlich sein, und wenn dies der Fall ist, erfolgen sie bei anderen Zuständen der FSM.
  • Der Wert für den Unterbrechungspunkt-Abstand D kann unter Verwendung der folgenden Schritte berechnet werden:
    • • Berechne den Eckwinkel: θ = 1/2 cos–1 (cos_dot_prod).
    • • Berechne den Sinus, Kosinus und Kotangens von θ und speichere das Ergebnis für die spätere Verwendung während des FSM-Zustands Fertigstellungs-Stufe.
    • • Berechne 1/(1 + cos(θ)) und speichere das Ergebnis für die spätere Verwendung während des FSM-Zustands Fertigstellungs-Stufe.
    • • Bestimme den Krümmungsfaktor f des Eckwinkels θ unter Verwendung einer festcodierten Nachschlagtabelle von empirischen Daten und durch lineares Interpolieren zwischen Tabelleneinträgen. Speichere f.
    • • Bestimme den Abstand D vom Ende des Abschnitts unter Verwendung dieser Zwischenergebnisse zusammen mit Gleichung (25). Speichere den berechneten Wert für D.
  • Nach Abschluss der Berechnung von D geht die FSM zu Knoten 6 über, welcher eine Reihe von Übergängen einleitet, zum Definieren der zwei Spline-Blend-Abschnitte, zum Einfügen derselben in die verkettete Liste der Abschnittsdaten und zum Modifizieren und/oder Ersetzen anderer Abschnitte in der Liste. Der Unterbrechungspunkt-Abstand D kann während dieser Schritte ebenfalls geändert werden.
  • Am Knoten 6 kann bestimmt werden, ob eine Möglichkeit für eine Einfügung oder Zuweisung eines Spline-Corner-Blends im Anschluss an next besteht. Falls diese Möglichkeit nicht existiert, dann geht der Zustand zu Knoten 11 über und umgeht den Teil der Zustandsmaschine, welcher Fälle betrachtet, in denen next möglicherweise eine Aufteilung erfordert. Bei einer beispielhaften Ausführungsform existiert die Möglichkeit für ein Blend im Anschluss an next nicht, falls der Corner-Blend-Modus im nächsten Abschnitt ausgeschaltet worden ist (entweder explizit vom Programm aus oder automatisch während irgendeiner früheren Stufe der Abschnittsverarbeitung), falls next im Positionierungs-Modus programmiert ist, falls next Informationen enthält, welche erfordern, dass der Abschnitt mit einem vollständigen Stopp endet, oder falls next der letzte Abschnitt des Programms ist. Falls die Möglichkeit jedoch existiert, geht FSM zu Knoten 7 über.
  • Am Knoten 11 (die Möglichkeit für ein Blend im Anschluss an next existiert nicht) kann ein Test durchgeführt werden, um zu prüfen, ob der ideale Unterbrechungspunkt-Abstand D größer als die Länge von next minus eine vordefinierte Längentoleranz ist. Die Längentoleranz (ein von der Blend-Toleranz verschiedener Parameter) definiert die minimale Abschnittslänge, welche von dem System als von null verschieden zu betrachten ist. Falls der Wert von D größer als die Länge von next minus die Längentoleranz ist, geht der Zustand zum Knoten 12 über. Falls nicht, geht der Zustand zum Knoten 13 über, welcher eine Folge von Entscheidungen darüber beginnt, ob blend1 durch Einfügen eines Abschnitts nach span oder durch Ersetzen des gesamten span durch blend1 erzeugt werden soll. Am Knoten 7 (die Möglichkeit für ein Blend im Anschluss an next existiert) kann D mit der Hälfte der Länge von next verglichen werden. Falls D größer als die halbe Länge von next ist, ist es wahrscheinlich, dass D so geändert wird, dass es gleich der halben Länge von next ist, so dass next in gleiche Teile aufgeteilt werden kann, zur Verwendung in: 1) dem Spline-Blend-Abschnitt zwischen span und next, und 2) dem Spline-Blend-Abschnitt zwischen next und dem nach next folgenden Abschnitt (d. h. last). Wenn D größer als die Hälfte von next ist, geht der Zustand zu Knoten 8 über.
  • Falls D nicht größer als die Hälfte von next ist, geht der Zustand zu Knoten 13 über, um das Treffen der Entscheidung darüber zu beginnen, ob span durch einen Spline-Corner-Blend-Abschnitt zu ersetzen ist. Am Knoten 8 geht, falls last nicht null ist, der Zustand sofort zum Knoten 10 über. Falls last null ist, geht der Zustand zu Knoten 9 über.
  • Falls am Knoten 9 bestimmt wird, dass last nicht vor der Ausführung von span verfügbar gemacht wird, kann nach next kein Blend-Abschnitt eingefügt werden, und der Zustand geht zu Knoten 11 über. Andernfalls geht der Zustand zum Zustand Warten auf letzten Abschnitt 110 über, die Abschnittsvorbereitungseinheit wird informiert, dass die SCB-Stufe wartet, und die SCB-Stufe wird verlassen, um der Abschnittsvorbereitungseinheit zu ermöglichen, last vorzubereiten.
  • Wenn die SCB-Stufe erneut aufgerufen wird und der FSM-Zustand der Stufe Warten auf letzten Abschnitt ist, geht der Zustand unmittelbar zu Knoten 10 über. Am Knoten 10 kann eine Prüfung durchgeführt werden, um zu bestimmen, ob last Eigenschaften hat, welche den Verbrauch von next durch einen Spline-Abschnitt ermöglichen würden. Falls last kein linearer Interpolationsabschnitt ist, oder last ein Nicht-Bewegungs-Abschnitt ist, oder last Daten enthält, welche anzeigen, dass der vorhergehende Abschnitt (in diesem Falle next) in einem vollständigen Stopp enden muss, oder last ein Abschnitt von einem Typ ist, welcher die Möglichkeit ausschließt, dass er einem Spline-Corner-Blend-Abschnitt folgt, dann geht der Zustand zu Knoten 11 über, weil kein Corner-Blend-Abschnitt für next erzeugt werden wird und eine Aufteilung von next zu gleichen Teilen nicht notwendig ist. Falls last jedoch keine dieser Eigenschaften besitzt, dann kann der Wert für D neu zugewiesen werden, so dass er gleich der Hälfte der Länge von next ist, und der Zustand geht zu Knoten 13 über. Diese Neuzuweisung von D garantiert, dass wenigstens die Hälfte des ursprünglichen next für den Spline-Corner-Blend-Abschnitt, welcher next folgt, verfügbar sein wird.
  • Der Knoten 13 führt die Prüfung durch, welche entscheidet, ob blend1 nach span einzufügen ist oder ob span zu verbrauchen ist, um blend1 zu erzeugen. Falls D größer als die Länge von span minus tol ist (wobei tol die minimale Länge eines Bewegungs-Abschnitts ist), wird dann der gesamte Abschnitt span verwendet, um die erste Hälfte des Spline-Corner-Blend-Abschnitts zu erzeugen, D kann neu zugewiesen werden, so dass es gleich der Länge von span ist, und der Zustand geht zu dem Zustand Span zu blend1 umdefinieren 112 über. Falls D nicht größer als die Länge von span minus tol ist, wird blend1 im Anschluss an span eingefügt, und der Zustand geht zu dem Zustand Blend1 nach span einfügen 114 über.
  • Die Aktionen, die während Span zu blend1 umdefinieren durchgeführt werden, beinhalten das Ändern des nichtmodalen Bewegungstyps von span von einer linearen Achsenbewegung zu einer Spline-Corner-Achsenbewegung und das Zeigen des Zeigers für blend1 auf span. Die Berechnung der neuen Länge von span kann auf die Aktionen des Zustands Fertigstellungs-Stufe 122 aufgeschoben werden. Nach Beendigung der Aktionen für Span zu blend1 umdefinieren geht der Zustand direkt zum Zustand Blend2 nach blend1 einfügen 116 über. Die Aktionen des Zustands Blend2 nach blend1 einfügen 116 sind weiter unten im Einzelnen dargelegt, und nachdem sie abgeschlossen sind, hat die verkettete Liste von Abschnitten die in 8C dargestellte Struktur.
  • Die erste Aktion, die beim Eintritt in Blend1 nach span einfügen ausgeführt wird, kann darin bestehen zu versuchen, den neuen Spline-Corner-Blend-Abschnitt in die verkettete Liste einzufügen, so dass er span folgt. Der eingefügte Abschnitt kann zu der verketteten Liste von Abschnitten unmittelbar nach dem angegebenen Abschnitt hinzugefügt werden, und dem Abschnitt, welcher dem angegebenen linearen Abschnitt folgte, kann eine neue Position in der verketteten Liste zugewiesen werden, welche dem eingefügten Abschnitt unmittelbar folgt. Die Daten für den eingefügten Abschnitt können so initialisiert werden, dass sie äquivalent zu den Daten des angegebenen Abschnitts sind, d. h. die Daten werden "vorwärtskopiert".
  • Falls während des Versuchs, einen neuen Abschnitt nach span einzufügen, entdeckt wird, dass kein verfügbarer freier Platz in der Vorausschau-Warteschlange vorhanden ist, kann die Einfügung als fehlgeschlagen angesehen werden, und es kann eine zusätzliche Prüfung durchgeführt werden, um zu bestimmen, ob die "Vorausschau erschöpft" ist. "Vorausschau erschöpft" bezeichnet eine Bedingung, in der bestimmt worden ist, dass das System nicht in der Lage sein wird, Platz in der Vorausschau-Warteschlange vor dem Punkt in dem Prozess freizugeben, wo span auszuführen ist. In diesem Falle kann kein Spline-Corner-Blend-Abschnitt eingefügt werden, und der FSM-Zustand geht zu Außerhalb von Vorausschau über. Falls eine Abschnittseinfügung fehlschlägt und die Vorausschau nicht erschöpft ist, kann der Verwaltungsprozess der Abschnittsvorbereitungsstufe benachrichtigt werden, dass die Spline-Corner-Blend-Stufe darauf wartet, dass das System in einen Zustand eintritt, in dem die Vorausschau-Warteschlange wieder einen freien Platz enthält, um einen eingefügten Abschnitt aufzunehmen; der Zustand geht zurück zu Blend1 nach span einfügen über, und die Steuerung kann an den Stufenverwaltungsprozess zurückgegeben werden, und es erfolgt der Austritt aus der Funktion der Spline-Corner-Blend-Stufe.
  • An dem Punkt in dem Prozess, wo ein Platz in der Vorausschau-Warteschlange verfügbar wird, kann die SCB-Stufe erneut aufgerufen werden. Bei diesem Aufruf befindet sich die SCB-Stufe in dem Zustand Blend1 nach span einfügen 114, die Abschnittseinfügung kann erneut versucht werden, und falls die Einfügung wieder fehlschlägt, kann der soeben beschriebene Prozess wiederholt werden. Die Versuche, einen Abschnitt einzufügen, können wiederholt werden, bis entweder ein Abschnitt erfolgreich eingefügt wird oder die Vorausschau erschöpft ist.
  • Sobald der Zustand Blend1 nach span einfügen in der Lage ist, erfolgreich einen neuen Abschnitt in die Liste nach span1 einzufügen, zeigt blend1 auf den "ersten eingefügten Abschnitt", welchem der Bewegungstyp spline corner move1 (Spline-Corner-Bewegung1) zugewiesen ist. Außerdem können die Länge und die Steuerbefehlspositionen von span so modifiziert werden, dass sie den neuen gekürzten linearen Abschnitt richtig widerspiegeln. Nach der Vollendung der Aktionen beim Zustand Blend1 nach span einfügen 114 kann ein Übergang zum Zustand Blend1 nach Blend1 einfügen vollzogen werden, und nachdem die Aktionen dieses Zustands vollendet sind, hat die verkettete Liste der Abschnitte die Struktur von 8B.
  • Wie angemerkt geht, nachdem der Zustand Blend1 nach span einfügen 114 erfolgreich abgeschlossen worden ist, die FSM in den Zustand Blend2 nach Blend1 einfügen 116 über. Der Zustand Blend2 nach Blend1 einfügen 116 versucht zuerst, einen Abschnitt in die verkettete Liste im Anschluss an den Abschnitt einzufügen, auf den durch blend1 gezeigt wird. Erfolglose Einfügungsversuche können auf eine analoge Weise behandelt werden wie diejenigen, die oben im Zusammenhang mit Blend1 nach span einfügen beschrieben wurden.
  • Nach erfolgreicher Einfügung des neuen Abschnitts wird veranlasst, dass blend2 auf den neu eingefügten Abschnitt zeigt, und als der Bewegungstyp von blend2 wird spline corner move2 (Spline-Corner-Bewegung2) angegeben. Außerdem wird die Länge von next (dem linearen Abschnitt, der blend2 folgt) so modifiziert, dass sie widerspiegelt, dass er gekürzt worden ist, und die Steuerbefehlsposition für blend2 wird definiert. Nachdem die Aktionen von Blend2 nach Blend1 einfügen abgeschlossen sind, geht der FSM-Zustand zur Fertigstellungs-Stufe über (welche unten ausführlich erläutert wird).
  • Die Erläuterung wendet sich nun wieder dem Knoten 12 zu, und den Zuständen, welche nachfolgen. Wie zuvor beschrieben, ist der Zustand Knoten 12, wenn es sicher ist, dass nach next kein Blend-Abschnitt eingefügt werden wird und der ideale Unterbrechungspunkt-Abstand größer ist als die Länge von next abzüglich der Längentoleranz. Am Knoten 12 kann eine Prüfung durchgeführt werden, um zu bestimmen, ob die Länge von next größer ist als die Länge von span abzüglich der Längentoleranz. Falls next um mehr als die Längentoleranz länger ist als span, wird span verbraucht, um blend1 zu erzeugen, D kann geändert werden, so dass es gleich der Länge von span ist, und der Zustand geht zum Zustand Span zu blend1 umdefinieren 112 über. Der Weg durch die FSM hindurch ab diesem Punkt wurde oben beschrieben. Nach Vollendung des Weges durch die FSM hindurch hat die verkettete Liste der Abschnitte für diesen Fall die Struktur von 8C.
  • Falls am Knoten 12 bestimmt wird, dass next nicht um eine Längentoleranz länger als span ist, geht der Zustand zum Zustand Next zu blend1 umdefinieren 118. In diesem Zustand wird next verbraucht, um den zweiten halben Blend-Abschnitt zu bilden, D kann geändert werden, so dass es gleich der Länge von next ist, und der Zustand geht zu Knoten 14 über. Am Knoten 14 kann ein Test durchgeführt werden, um zu prüfen, ob der spezielle Fall vorliegt, dass die Längen von span und next sich um weniger als eine Längentoleranz unterscheiden. In den seltenen Fällen, wenn dies der Fall ist, können beide lineare Abschnitte verbraucht werden, um die zwei Blend-Abschnitte zu erzeugen, und der Zustand geht zum Zustand Beide zu Spline Blend umdefinieren 120 über.
  • Die primären Aktionen für den Zustand Beide zu Spline Blend umdefinieren 120 können einfach darin bestehen, blend1 so einzustellen, dass es auf span zeigt, und seinen Bewegungstyp auf spline corner move1 (Spline-Corner-Bewegung1) zu setzen (blend2 wird bereits auf next zeigen, und sein Bewegungstyp wird bereits auf spline corner move2 gesetzt sein). Die nächste Aktion, die während Beide zu Spline Blend umdefinieren durchgeführt wird, besteht darin, die Abschnittsdatenvariablen einzustellen, welche sicherstellen, dass der erste halbe Blend-Abschnitt niemals in einem vollständigen Stopp endet, selbst wenn die Steuerung sich in einem "Einzelblock"-Modus befindet, wo ein Zyklusstart zur Folge hat, dass lediglich der nächste Block des Teileprogramms ausgeführt wird. Es erfolgt ein unbedingter Übergang von Beide zu Spline Blend umdefinieren zum Zustand Fertigstellungs-Stufe 122, und die verkettete Liste von Abschnitten hat dann die Struktur von 8E.
  • Der häufiger vorkommende Übergang aus dem Knoten 14 heraus erfolgt, wenn die Längen von span und next nicht identisch sind. In diesem Fall geht der Zustand zum Zustand Blend1 vor next einfügen 124 über. Die Aktionen von Blend1 vor next einfügen können nahezu identisch mit den Aktionen von Blend1 nach span einfügen sein, mit zusätzlichen Aktionen, um sicherzustellen, dass der erste halbe Blend-Abschnitt niemals in einem vollständigen Stopp enden kann, selbst wenn die Steuerung sich in einem "Einzelblock"-Modus befindet. Nach erfolgreicher Einfügung von blend1 geht der Zustand zu Fertigstellungs-Stufe über, und die verkettete Liste von Abschnitten hat dann die Struktur von 8D.
  • Es wird nun der Zustand Außerhalb von Vorausschau 126 betrachtet; wie oben vermerkt, kann in ihn eingetreten werden, wenn der Verwaltungsprozess der Abschnittsvorbereitungsstufe anzeigt, dass in der Vorausschau-Warteschlange kein freier Platz verfügbar ist, in welchen ein Blend-Abschnitt eingefügt werden kann, und dass ein Platz nicht vor dem Punkt in dem Prozess der Programmausführung verfügbar wird, wo der Abschnitt, welcher einen eingefügten Abschnitt erfordert, ausgeführt werden muss. Dieser Fall könnte möglicherweise eintreten, wenn die Vorausschau-Warteschlange kurz ist und mehrere Abschnittsvorbereitungsstufen in Kombination mit der SCB-Stufe verwendet werden. An dieser Stelle ist anzumerken, dass eine solche Bedingung äußerst selten ist, selbst wenn die Vorausschau-Warteschlange eine Warteschlange von einer minimalen Länge von ungefähr 20 Abschnitten ist. Trotzdem kann ein Zustand existieren, um diesen Umstand zu handhaben, so unwahrscheinlich er auch ist.
  • Bei der Ausführungsform einer endlichen Zustandsmaschine von 9 kann in den Zustand Außerhalb von Vorausschau 126 von drei Abschnittseinfügungs-Zuständen aus eingetreten werden: Zustand Blend2 nach blend1 einfügen 116, Zustand Blend1 nach span einfügen 114 und Zustand Blend1 vor next einfügen 124. Wie bei einer Betrachtung des Schemas der FSM ersichtlich ist, kann einer der Blend-Abschnitte oder können beide bereits definiert sein, wenn der Eintritt in den Zustand Außerhalb von Vorausschau 126 erfolgt. Da Außerhalb von Vorausschau angibt, dass SCB nicht durchgeführt werden kann, können bei einer Ausführungsform beliebige Blend-Abschnitte, die bereits definiert wurden, zurück in lineare Abschnitte umgewandelt werden. Die Schritte zum Umwandeln des Abschnitts in einen linearen Abschnitt können identisch sein, gleichgültig, ob die Blend-Abschnitte eingefügte Abschnitte sind oder die umdefinierten Abschnitte span oder next sind.
  • Die Umwandlung in einen linearen Abschnitt erfordert das Festlegen der Länge des linearen Abschnitts. Die Länge eines Blend-Abschnitts, der in einen linearen Abschnitt umgewandelt wurde, ist einfach der Unterbrechungspunkt-Abstand D. Die Steuerbefehlsposition (Endpunkt) für den in einen linearen Abschnitt umgewandelten Blend-Abschnitt braucht nicht berechnet zu werden, da sie bereits korrekt sein wird. Für blend1 ist die Steuerbefehlsposition diejenige des ursprünglichen linearen Abschnitts und wird keine Änderung erfahren haben.
  • Wie ebenfalls anhand der in 9 dargestellten beispielhaften Ausführungsform zu erkennen ist, erfolgt der Eintritt in den Zustand Fertigstellungs-Stufe nach erfolgreicher Erzeugung des ersten und zweiten halben Blend-Abschnitts blend1 und blend2. Die Aktionen des Zustands Fertigstellungs-Stufe 122 können folgende sein:
    • – Bestimmen des Wertes der Scheitelpunktkrümmung κ. Bestimmen der Länge der Blend-Abschnitte.
    • – Berechnen der Koeffizientenmatrix jedes Blend-Abschnitts (dargestellt in Eckenebenen-Koordinaten).
    • – Speichern gewisser Zwischenberechnungen in Daten.
  • Bei einer beispielhaften Ausführungsform ist die Scheitelpunktkrümmung κ für beide Abschnitte blend1 und blend2 identisch. Sie kann ausgehend von dem Unterbrechungspunkt-Abstand D unter Anwendung von Gleichung (23) berechnet werden. Für die Gleichung ist der Krümmungsfaktor f erforderlich, welcher bereits berechnet und in den Abschnittsdaten gespeichert worden ist. Bei der Berechnung werden einige der Zwischenvariablen benutzt, die während des Zustands Unterbrechungspunkt-Abstand berechnen 108 in den Abschnittsdaten gespeichert wurden. Nachdem er berechnet worden ist, kann der Wert für κ in den Abschnittsdaten sowohl von blend1 als auch von blend2 gespeichert werden, da er dann benötigt wird, wenn Nebenbedingungsvektoren berechnet werden (weiter unter erläutert). Außerdem ist bei der beispielhaften Ausführungsform die Abschnittslänge S für beide Abschnitte blend1 und blend2 identisch. Die Abschnittslänge kann unter Verwendung von Gleichung (18) berechnet werden.
  • Einige der Variablen, welche möglicherweise zur Berechnung der Rotationstransformation benötigt werden, können ebenfalls während der Fertigstellungs-Stufe berechnet und in den Daten von blend1 und blend2 gespeichert werden. Zu diesen Variablen gehören die reziproken Werte der Längen der Basis und der Höhe des gleichschenkligen Dreiecks, das von dem Anfangspunkt von blend1, dem ursprünglichen Eckpunkt und dem Endpunkt von blend2 gebildet wird. Diese Terme können unter Verwendung der folgenden Gleichungen effizient berechnet werden.
  • Für die folgenden zwei Gleichungen wird die Verwendung des beim C-Code üblichen Symbols "->" eingeführt, welches einen Verweis eines Zeigers auf eine Datenstruktur bezeichnet. Im vorliegenden Kontext gibt es einfach an, dass eine Variable mit einem bestimmten Abschnitts-Objekt verknüpft ist. Zum Beispiel stellt in diesem Falle span->D den Unterbrechungspunkt-Abstand dar, der mit dem speziellen Abschnitt span verknüpft ist.
  • Figure 00640001
  • Schließlich können unter Verwendung der Gleichungen (11) und (12) die Spline-Koeffizientenmatrizen der Blend-Abschnitte in dem Eckenebenen-Koordinatensystem berechnet werden.
  • Nachdem diese Berechnungen während des Zustands Fertigstellungs-Stufe 122 durchgeführt wurden, geht der Zustand der SCB-Stufe der FSM zum Zustand Warten auf neuen Abschnitt 102 über, die Stufe ist abgeschlossen, und die Steuerung kann an den Verwaltungsprozess der Abschnittsvorbereitungsstufe zurückgegeben werden, bis ein neuer Abschnitt, der ein Corner Blend erfordert, in dem Teileprogramm angetroffen wird. Nachdem die SCB-Stufe für span abgeschlossen ist, können nachfolgende Stufen ausgeführt werden, bis alle Stufen für span abgeschlossen sind.
  • Vorwärtstransformation
  • Bei einer beispielhaften Ausführungsform ist die abschließende Stufe von Abschnittsvorbereitungen eine Vorwärtstransformationsstufe 212. Vorwärtstransformation ist der Prozess, bei dem Abschnittsdaten in Werkzeugmaschinen-Koordinaten (Interp-Koordinaten) transformiert werden. Zu diesem Zeitpunkt können Abschnittsdaten eventuell geändert werden, um verschiedene Klassen von translatorischen und rotatorischen Verschiebungen zu berücksichtigen. Die Fertigstellung der Berechnungen für die Spline-Corner-Blend-Abschnitte kann bis zu diesem Punkt in dem Abschnittsvorbereitungsprozess aufgeschoben werden, um die Auswirkungen beliebiger Stufen, die der SCB-Stufe folgen, auf die Abschnittsdaten zu berücksichtigen, einschließlich der Berechnungen, die während der Vorwärtstransformation durchgeführt werden.
  • Die Vorwärtstransformationsstufe 212 kann die folgenden Aufgaben an Spline-Corner-Blend-Abschnitten ausführen:
    • • Transformieren der Spline-Koeffizientenmatrizen in Interp-Koordinaten.
    • • Berechnen der Nebenbedingungsvektoren für Geschwindigkeitsbegrenzung, d. h. max_tan, max_curv, ...
    • • Berechnen und Besetzen des Teils der Abschnittsdaten, der für die Abschnittsausführung erforderlich ist.
  • Diese Aufgaben werden in den nachfolgenden Abschnitten ausführlich erläutert.
  • Die Transformation von Eckenebenen-Koordinaten zu Interp-Koordinaten kann unter Verwendung der Gleichungen (26), (27) und (29) durchgeführt werden, und die Transformation kann auf die Koeffizientenmatrix unter Verwendung von Gleichung (33) angewendet werden. Durch Verwendung der Abschnittsdaten, die während der SCB-Stufe 210 erzeugt wurden, können die Berechnungen effizient durchgeführt werden.
  • Gemäß einem anderen Aspekt der vorliegenden Erfindung kann eine zusätzliche Aufgabe der die Vorwärtstransformationsstufe 212 enthaltenden Ausführungsform der vorliegenden Erfindung darin bestehen, eine Menge von Nebenbedingungsvektoren für den Abschnitt zu berechnen. Die Nebenbedingungsvektoren können verwendet werden, um die Nebenbedingungen des Abschnitts maximale Weggeschwindigkeit, maximale Wegbeschleunigung, maximaler Wegruck und Geschwindigkeit am Abschnittsende zu berechnen.
  • Bei dieser Ausführungsform können die Nebenbedingungsvektoren, welche für jeden Spline-Corner-Blend-Abschnitt berechnet werden, Folgendes beinhalten:
    • – Richtungskosinusse am Abschnittsanfang
    • – Richtungskosinusse am Abschnittsende
    • – Krümmung am Ende des Abschnitts blend1
    • – Krümmung am Anfang des Abschnitts blend2
    • – maximaler Wert der Komponenten des Tangentenvektors über den Abschnitt
    • – maximaler Wert der Komponenten des Krümmungsvektors über den Abschnitt
    • – maximaler Wert der Vektorkomponenten der Ableitung der Komponenten des Krümmungsvektors über den Abschnitt
  • In den folgenden Abschnitten werden Beschreibungen gegeben, wie jeder dieser Vektoren für jeden der zwei Abschnitte berechnet werden kann, welche das durch Polynome vierten Grades realisierte Spline Corner Blending bilden. Die Berechnungen können für den Spezialfall eines Spline Corner Blendings durch Polynome vierten Grades optimiert werden. Es ist denkbar, dass eine direkte Berechnung der Ableitungen des Spline-Polynoms an den Endpunkten durchgeführt werden könnte; dies würde jedoch mehrere Multiplikationen pro Komponente und pro Vektor beinhalten und wäre zeitaufwendiger.
  • Gemäß einem Aspekt der Erfindung kann die Steuerung den Vektor "Richtungskosinusse am Abschnittsanfang" des nächsten Abschnitts zusammen mit dem Vektor "Richtungskosinusse am Abschnittsende" des aktuellen Abschnitts verwenden, um die Nebenbedingung "Geschwindigkeit am Eckenende des Abschnitts" für den aktuellen Abschnitt zu berechnen. In diesem Zusammenhang stellt die Nebenbedingung "Geschwindigkeit am Abschnittsende" sicher, dass die konfigurierten maximalen Achsen-Geschwindigkeitsstufen nicht überschritten werden.
  • Für Spline-Corner-Blend-Abschnitte der oben erläuterten Ausführungsform der Erfindung ist die Geschwindigkeitsstufe, welche am Ende des Abschnitts vorliegt, gleich null. Dies ist der Fall, weil diese Spline-Corner-Blend-Abschnitte einen Richtungsvektor am Abschnittsende haben, welcher identisch mit dem Richtungsvektor am Abschnittsanfang des nächsten Abschnitts ist. Die Berechnungen der Richtungskosinusse (und Krümmungen) am Abschnittsanfang und Abschnittsende sind nur für die Komponenten dieser Vektoren notwendig, welche den Spline-Achsen entsprechen, da bereits sichergestellt worden ist, dass diese die einzigen Achsen in Bewegung sind.
  • Bei einer beispielhaften Ausführungsform werden die Richtungskosinusse am Abschnittsanfang für einen Abschnitt vom Typ spline corner move1 (Spline-Corner-Bewegung1) (den ersten halben Blend-Abschnitt) für den Fall einer Abschnittseinfügung von dem linearen Abschnitt vorwärts kopiert und für den Fall einer Umdefinition des linearen Abschnitts unverändert gelassen. Die Richtungskosinus-Komponenten am Abschnittsende des ersten halben Blend-Abschnitts können effizient bestimmt werden, indem der Richtungsvektor des Eckenebenen-Koordinatensystems in die Interp-Koordinaten gedreht wird. Da, wie oben erläutert, bei einer beispielhaften Ausführungsform der Richtungskosinus am Abschnittsende des ersten halben Blend-Abschnitts in Eckenebenen-Koordinaten {1 0}T ist (so dass das Ende des Abschnitts parallel zur x-Achse des Eckenebenen-Koordinatensystems ist), ist dann der Richtungskosinus am Abschnittsende des ersten halben Blend-Abschnitts die erste Spalte der Rotationsmatrix.
  • Die Richtungskosinus-Komponenten am Abschnittsanfang des zweiten halben Blend-Abschnitts können effizient bestimmt werden, indem die Richtungskosinus-Komponenten am Abschnittsende des vorhergehenden Abschnitts vorwärts kopiert werden (da der Richtungskosinus am Ende der ersten Hälfte gleich dem Richtungskosinus am Anfang der zweiten Hälfte sein sollte, wie oben erläutert).
  • Der Richtungskosinus am Abschnittsende des zweiten halben Blend-Abschnitts kann berechnet werden, indem die Ableitung der Kurve des Spline-Polynoms an der Stelle bestimmt wird, wo der Spline-Parameter gleich der Abschnittslänge ist.
  • Figure 00680001
  • Hierbei ist S die Abschnittslänge von blend2, und A ist die Koeffizientenmatrix von blend2.
  • Die Krümmung am Abschnittsanfang ist für den ersten halben Blend-Abschnitt der oben beschriebenen Ausführungsform der Erfindung immer gleich null, da ein SCB-Abschnitt immer von einem linearen Abschnitt mit Krümmung null aus übergeht. Da die Krümmungsdaten eines Abschnitts immer mit null initialisiert werden, und da ein Blend-Abschnitt nur nach einem linearen Abschnitt eingefügt werden kann, welcher die Krümmung null hat, muss keine Aktion erforderlich sein, um die Variable "Krümmung am Abschnittsanfang" gleich null zu setzen, da sie bereits als solche initialisiert werden kann.
  • Die Krümmung am Abschnittsende für den ersten halben Blend-Abschnitt ist die Krümmung am Abschnittsende in Eckenebene-Koordinaten, gedreht in Interp-Koordinaten. Da die Krümmung am Abschnittsende in Eckenebenen-Koordinaten {0 -κ}T ist, ist die Krümmung am Abschnittsende in Interp-Koordinaten die zweite Spalte der Rotationsmatrix, multipliziert mit -κ, wobei κ der Betrag der Scheitelpunktkrümmung ist, der in den Abschnittsdaten gespeichert ist.
  • Die Komponenten der Krümmung am Abschnittsanfang des zweiten halben Blend-Abschnitts können auf effiziente Weise erhalten werden, indem die Komponenten der Krümmung am Abschnittsende des vorhergehenden Abschnitts vorwärts kopiert werden, da sie bei der oben beschriebenen Ausführungsform identisch sein sollten (so dass die zwei Hälften zusammen einen Blend-Abschnitt mit stetiger Krümmung ergeben). Die Krümmung am Abschnittsende des zweiten halben Blend-Abschnitts ist immer gleich null, da sie gleich der Krümmung des zweiten linearen Abschnitts sein sollte. Daher kann einfach ein Kopieren von Nullen in die Komponenten der Variablen "Krümmung am Abschnittsende" vorgenommen werden.
  • Der maximale Tangentenvektor für den Abschnitt kann aus Komponenten bestehen, welche den maximalen absoluten Betrag enthalten, welchen die entsprechende Komponente des Einheitstangentenvektors während des Abschnitts erreicht. Der maximale Tangentenvektor kann verwendet werden, um Folgendes zu bestimmen: 1) die maximale Weggeschwindigkeit des Abschnitts, eingeschränkt durch die vorkonfigurierte maximale Weggeschwindigkeit und die vorkonfigurierten maximalen Achsengeschwindigkeiten, 2) die maximale Wegbeschleunigung des Abschnitts, eingeschränkt durch die vorkonfigurierte maximale Wegbeschleunigung und die vorkonfigurierten maximalen Achsenbeschleunigungen, und 3) den maximalen Wegruck des Abschnitts, eingeschränkt durch den vorkonfigurierten maximalen Wegruck und die vorkonfigurierten maximalen Achsenrucke (die vorkonfigurierten Werte sind diejenigen maximalen Werte, die für den Weg oder die Achsen für ein optimales Verhalten eingestellt wurden).
  • Jede Komponente des maximalen Tangentenvektors für einen Abschnitt kann das Maximum des absoluten Betrages der folgenden Größen sein:
    • • der Komponente des Richtungsvektors am Abschnittsanfang
    • • der Komponente des Richtungsvektors am Abschnittsende
    • • des absoluten Betrages der Komponente des Tangentenvektors an Stellen, wo die Komponente des Tangentenvektors ein Extremum annimmt, falls diese Stellen auf dem Abschnitt liegen. (Man sagt, dass eine Funktion, in diesem Falle die Komponente des Tangentenvektors über Punkten auf dem Abschnitt, die durch u angegeben sind, "ein Extremum annimmt", wenn die Funktion entweder einen Maximal- oder einen Minimalwert relativ zu den umgebenden Punkten auf der Funktion annimmt.)
  • Dies kann durch die folgende Gleichung für die allgemeine Achsenkomponente h dargestellt werden (d. h. h ist eine Spline-Achse).
  • Figure 00700001
  • In der obigen Gleichung stellen uehp und uehn die Stellen entlang des Abschnitts dar, wo der Einheitstangentenvektor ein Extremum annimmt. Bei einem Spline-Polynom vierten Grades gibt es zwei Stellen, wo die Komponente des Einheitstangentenvektors ein Extremum annimmt. Diese Stellen können sich auf dem Abschnitt befinden oder auch nicht. Nur Stellen, wo das Extremum auf dem Abschnitt liegt, d. h. 0 < ue < S gilt, werden in Gleichung (37) betrachtet.
  • Der Einheitstangentenvektor an irgendeinem durch den Parameter u definierten Punkt auf dem Abschnitt ist der folgende: {tan_vec u } = [A] {u u u }T (38)
  • Dementsprechend können die Stellen, wo eine Komponente des Einheitstangentenvektors ein Extremum annimmt, bestimmt werden, indem die Nullstellen der Ableitung der Komponente des Einheitstangentenvektors bestimmt werden. Die Stellen, an denen die Extrema für die einzelnen Spline-Koordinaten angenommen werden, können wie folgt ermittelt werden:
    Figure 00700002
  • Die Berechnung der Ableitung in der vorhergehenden Gleichung liefert die folgenden drei unabhängigen Gleichungen:
    Figure 00710001
  • Dies sind quadratische Gleichungen mit zwei Lösungen, die jeweils mit den Indizes p und n bezeichnet werden.
  • Figure 00710002
  • Da die Abschnittslänge eine reelle Zahl ist, muss das Radikal (Term unter der Quadratwurzel) größer als null sein, damit sich der Extremalpunkt auf dem Abschnitt befindet. Daher befindet sich, falls das Radikal kleiner als null ist, kein Extremalpunkt auf dem Abschnitt, und jede Komponente des maximalen Tangentenvektors ist gleich dem größeren von den absoluten Beträgen der entsprechenden Komponente des Richtungskosinus am Abschnittsanfang und des Richtungskosinus am Abschnittsende. Demzufolge besteht, falls für die h-te Komponente (h ist eine der drei Spline-Achsen, zum Beispiel h ∊ {X, Y, Z}) das Radikal größer als null ist, für eine der Stellen oder für beide Stellen uehp oder uehn die Möglichkeit, dass sie sich auf dem Abschnitt befinden. Jeder Wert für uehp und uehn kann im Hinblick darauf geprüft werden, ob er sich auf dem Abschnitt befindet, und nur die Werte, welche größer als 0 oder kleiner als die Abschnittslänge sind, werden berücksichtigt. Für diejenigen ue, welche auf dem Abschnitt liegen, kann tan_vec(u) in Gleichung (37) berechnet werden, indem Gleichung (38) bei u = ue ausgewertet wird.
  • Wie bei allen hier erörterten Nebenbedingungsvektoren ist bei einer beispielhaften Ausführungsform der maximale Tangentenvektor ein 14 Elemente umfassendes Array, um sämtliche logische Achsen zu berücksichtigen {z. B. X Y Z U V W A B C D E P Q R}. Es versteht sich, dass für Spline-Abschnitte sämtliche Komponenten des maximalen Tangentenvektors mit Ausnahme derjenigen, die den Koordinaten der Spline-Achsen entsprechen, den Wert null haben.
  • Die Komponenten des maximalen Tangentenvektors können dann verwendet werden, um die maximale Geschwindigkeit des Abschnitts zu bestimmen, die durch die maximalen Geschwindigkeiten der Achsen begrenzt ist. Dies ist einer von mehreren möglichen Werten für die maximale Geschwindigkeit, bezeichnet durch den Index 1. Die Indizes h1, h2 usw. werden verwendet, um die einzelnen logischen Achsen zu bezeichnen.
  • Figure 00720001
  • Die Komponenten des maximalen Tangentenvektors können auch verwendet werden, um die maximale Tangentialbeschleunigung des Abschnitts zu bestimmen, die durch die maximale Beschleunigung der Achse begrenzt ist.
  • Figure 00720002
  • Die Komponenten des maximalen Tangentenvektors können auch verwendet werden, um den maximalen tangentialen Ruck des Abschnitts zu bestimmen, der durch den maximalen Ruck der Achse begrenzt ist.
  • Figure 00730001
  • Außerdem wird bei diesem den Nebenbedingungsvektor betreffenden Aspekt der Erfindung der maximale absolute Betrag berechnet, welchen die Komponente des Krümmungsvektors über dem Bereich des Abschnitts aufweist. Dieser Wert kann verwendet werden, um die maximale Geschwindigkeit des Abschnitts zu bestimmen, die durch die vorkonfigurierten maximalen Beschleunigungen der Achsen begrenzt ist.
  • Jede Komponente der maximalen Krümmung ist gleich dem größten von den absoluten Beträgen der Krümmung am Abschnittsanfang und der Krümmung am Abschnittsende für den Abschnitt, sowie der Krümmung an der Stelle auf dem Abschnitt, wo die Krümmung für die betreffenden Komponente ein Extremum annimmt. Dies kann durch die folgende Gleichung für die einer allgemeinen logischen Achse (h) entsprechende Komponente der maximalen Krümmung dargestellt werden, wobei die Berechnung für diejenigen Achsen (h) durchgeführt wird, welche Spline-Achsen sind:
    Figure 00730002
  • In der obigen Gleichung stellt ue die Stelle entlang des Abschnitts dar, wo die der h-Achse entsprechende Komponente des Krümmungsvektors ein Extremum aufweist. Nur Stellen, wo das Extremum auf dem Abschnitt angenommen wird, d. h. 0 < ue < S gilt, werden in Gleichung (42) berücksichtigt.
  • Der Krümmungsvektor eines Abschnitts an irgendeinem Punkt entlang des Abschnitts, der durch den Parameter u definiert ist, ist unten angegeben. Diese Gleichung wurde durch zweimaliges Differenzieren des Positionsvektors nach u (der Entfernung entlang des Abschnitts) erhalten. {curv u } = [A] {u u }T (43)
  • Die Stelle, wo die Krümmungskomponente ein Extremum annimmt, kann bestimmt werden, indem die Nullstellen der Ableitung des Krümmungsvektors dieser Komponente ermittelt werden. Die Stellen der Extrema für die einzelnen Spline-Koordinaten können wie folgt ermittelt werden:
    Figure 00740001
  • Die Berechnung der Ableitung in der vorhergehenden Gleichung liefert die folgenden drei unabhängigen Gleichungen:
    Figure 00740002
  • Die Lösungen dieser Gleichungen sind folgende:
    Figure 00740003
  • Danach kann für jede Komponente (Spline-Achse) der Wert für ue geprüft werden, um zu bestimmen, ob er größer als null und kleiner als die Abschnittslänge ist. Wenn dies der Fall ist, kann die Krümmungskomponente an dieser Stelle unter Verwendung von Gleichung (43) berechnet werden und in Gleichung (42) eingesetzt werden; andernfalls geschieht dies nicht. Wie alle Nebenbedingungsvektoren kann die maximale Krümmung ein 14 Elemente enthaltendes Array sein, um alle logischen Achsen zu berücksichtigen. Natürlich haben für Spline-Abschnitte sämtliche Komponenten der maximalen Krümmung mit Ausnahme derjenigen, die den Koordinaten der Spline-Achsen entsprechen, den Wert null.
  • Die Komponenten der maximalen Krümmung können dann verwendet werden, um die maximale Geschwindigkeit des Abschnitts zu bestimmen, die durch die maximalen Beschleunigungen der Achsen begrenzt ist. Der Index 2 gibt an, dass die Achsenbeschleunigungs-Nebenbedingungen einen von mehreren "Kandidaten" für die Nebenbedingung der maximalen Geschwindigkeit des Abschnitts erzeugen, wobei der erste Kandidat oben im Zusammenhang mit der Berechnung der den maximalen Tangentenvektor beinhaltenden Nebenbedingung beschrieben wurde.
  • Figure 00750001
  • Gemäß dieser Ausführungsform kann eine weitere Berechnung eines Nebenbedingungsvektors erfolgen – des Vektors, dessen Komponenten die maximalen absoluten Beträge der entsprechenden Komponente der Änderung der Krümmung über den Abschnitt enthalten. Diese Größe kann verwendet werden, um die maximale Geschwindigkeit des Abschnitts zu definieren, derart, dass die konfigurierten maximalen Rucke (Beschleunigungsänderungen) der einzelnen Achsen nicht überschritten werden. Die Änderung der Krümmung an einem beliebigen Punkt auf dem Abschnitt kann berechnet werden, indem die Krümmung nach der Entfernung entlang des Weges differenziert wird. {dcurv ds(u)} = [A]{u }T (47)
  • Die obige Gleichung gibt an, dass dcurv_ds sich linear über den Abschnitt ändert. Daher ist kein Extremalpunkt vorhanden, und das Maximum von dcurv_ds ist der größere von den absoluten Beträgen von dcurv_ds an jedem Endpunkt. Die folgenden Gleichungen zeigen, wie max_dcurv_ds für jede der drei Spline-Achsen (Komponenten) berechnet werden kann: max_dcurv ds = x (|A| |A + A|) max_dcurv ds = x (|A| |A + A|) max_dcurv ds = x (|A| |A + A|) (48)
  • Die maximalen Komponenten von dcurv_ds können dann verwendet werden, um die maximale Geschwindigkeit des Abschnitts zu bestimmen, die durch die maximalen Rucke der Achsen begrenzt ist. Der Index 3 gibt an, dass die Achsenruck-Nebenbedingungen einen von mehreren "Kandidaten" für die Nebenbedingung der maximalen Geschwindigkeit des Abschnitts erzeugen, wobei die anderen beiden Kandidaten oben beschrieben wurden.
  • Figure 00760001
  • Nachdem die drei Kandidaten für Nebenbedingungen für die maximale Geschwindigkeit, basierend auf maximalen Achsengeschwindigkeiten, Achsenrucken und Achsenbeschleunigungen, berechnet worden sind, kann die Nebenbedingung für die maximale Geschwindigkeit, die auf den Abschnitt angewendet wird, berechnet werden, indem das Minimum der Menge ermittelt wird. span max speed = m n(span max spd span max spd span max spd) (106)
  • Somit können gemäß diesem Aspekt der Erfindung ein maximaler Tangentenvektor, ein maximaler Krümmungsvektor und ein maximaler Krümmungsänderungsvektor für die Corner-Blend-Abschnitte berechnet werden. Diese Informationen können dann verwendet werden, um eine Nebenbedingung für die maximale Geschwindigkeit, eine Nebenbedingung für die maximale Beschleunigung und eine Nebenbedingung für den maximalen Ruck für den Abschnitt zu wählen. Nachdem diese Nebenbedingungen bestimmt worden sind, kann die CNC-Steuereinheit sicherstellen, dass sie während der Bewegung entlang des Abschnitts nicht überschritten werden, etwa auf eine in der Technik bekannte Art und Weise.
  • Ausführung des Spline-Abschnitts
  • Bei einer beispielhaften Ausführungsform werden die oben erläuterten Spline-Corner-Blend-Abschnitte auf der Werkzeugmaschine unter Anwendung von Interpolation ausgeführt. Nachdem die Länge, die Koeffizientenmatrix und die Nebenbedingungsvektoren des Spline-Abschnitts berechnet worden sind, können die Abschnittsausführungs-Daten für den Abschnitt aktualisiert werden, um die eigentliche Bewegung entsprechend den überarbeiteten Abschnitten zu ermöglichen. Wie in der Technik bekannt ist, kann auf einer numerisch gesteuerten CNC-Maschine ein Spline-Abschnitt in regelmäßigen Zeitintervallen durch einen Interpolator (welcher in den Positionsbefehlsgenerator 414 von 1 integriert sein kann) auf eine solche Weise interpoliert werden, dass eine gewünschte Geschwindigkeit entlang des Weges (d. h. Weggeschwindigkeit oder Vorschubgeschwindigkeit) erzielt wird. Die Daten für die Abschnittsausführung können so modifiziert werden, dass sie für die spezielle Implementierung und die Anforderungen des Interpolators geeignet sind.
  • Bei der vorliegenden Ausführungsform kann der Interpolator über den Wegtyp des Abschnitts (z. B. Spline oder linear) informiert werden. Außerdem kann der Interpolator darüber informiert werden, dass der Abschnitt eine programmierbare Bewegung auf allen drei Achsen erfordert, die mit dem Spline-Koordinatensystem verknüpft sind. Außerdem kann der Interpolator über die Abbildung von dem kartesischen Spline-Koordinatensystem auf das logische Achsensystem informiert werden. Ein Kopieren der logischen Achse, die für die jeweilige Spline-Koordinate äquivalent ist, auf die Abschnittsausführungs-Datenstruktur kann dies bewirken.
  • Bei dieser Ausführungsform beinhalten die Aufgaben, welche die Interpolation von Spline-Polynomen in einer digitalen Steuereinheit mit diskreter Zeit betreffen: 1) Ein Geschwindigkeits-Manager bestimmt die momentane Vorschubgeschwindigkeit, die für das aktuelle Zeitintervall gewünscht wird, verwendet diesen Wert, um die erforderliche inkrementelle Bewegung entlang des Abschnitts während des aktuellen Zeitintervalls zu bestimmen, und aktualisiert die Entfernung entlang des Abschnitts s(t), die den nächsten erforderlichen Interpolationspunkt definiert; und 2) der Spline-Interpolator verwendet s(t) als den Parameter in dem Spline-Polynom, um die Achsen-Steuerbefehlspositionen für das aktuelle Zeitintervall der digitalen Steuereinheit zu bestimmen. Der Interpolator kann das Polynom vierten Grades auf der Basis der Abschnittsdaten berechnen, welche die Koeffizientenmatrix A darstellen:
    Figure 00780001
  • Die Matrixgleichung (49) kann unter Verwendung der folgenden Gleichungen effizient ausgewertet werden: x = (((a s + a)s + a)s + a)s + a y = (((a s + a)s + a)s + a)s + a z = (((a s + a)s + a)s + a)s + a (50)
  • Wie man sieht, sind bei Anwendung dieses beispielhaften Verfahrens vier Multiplikationen und vier Additionen pro Achse pro Zeitintervall erforderlich, so dass insgesamt zwölf Multiplikationen und zwölf Additionen benötigt werden. Dies sind drei Multiplikationen weniger, als erforderlich sind, wenn Gleichung (49) direkt ausgewertet wird.
  • Beispiel einer beispielhaften Ausführungsform
  • Die Vorteile der hier beschriebenen beispielhaften Ausführungsform des Spline Corner Blending gegenüber der Einfügung von Kreisbögen oder Geschwindigkeitsstufen werden durch das folgende Beispiel aufgezeigt, welches durch 1215 veranschaulicht wird. Das Beispiel betrifft einen Fall, in dem einer Bewegung von 5 mm entlang der Y-Achse eine Bewegung von 5 mm entlang der X-Achse folgt, beginnend und endend mit einem vollständigen Stopp. Die programmierte Vorschubgeschwindigkeit für die Bewegung beträgt ungefähr 2500 mm/min. Die 90-Grad-Ecke, die von den zwei Abschnitten gebildet wird, wird unter Anwendung von drei verschiedenen Verfahren durchquert: 1) Spline Corner Blend (SCB) mit aktivierter Vorwärtskopplung (Feedforward), 2) eingefügte Kreisbögen mit aktivierter Vorwärtskopplung, und 3) Geschwindigkeitsstufe an einer scharfen Ecke mit deaktivierter Vorwärtskopplung. Die Parameter der Achsenkonfiguration für dieses Beispiel sind typisch für ein universelles kleines Vertikalbearbeitungszentrum.
  • Für den Fall des SCB wurde in diesem Beispiel eine Corner-Blend-Toleranz von ungefähr 0,5 mm gewählt. Für den Fall des Kreisbogens wird ein Bogenradius von ungefähr 1,207 mm verwendet, da dieser bewirken wird, dass die nächste Annäherung an die Ecke ebenfalls ungefähr 0,5 mm beträgt. Für die ersten zwei Fälle in diesem Beispiel wird eine Eckentoleranz von ungefähr 0,5 mm gewählt, da dies näherungsweise der Grad der Eckenrundung ist, welcher in dem dritten Fall auftritt, wo die Bewegung mit einer Geschwindigkeitsstufe an der Ecke ausgeführt wird.
  • Der Grad der Eckenrundung für den Fall der Geschwindigkeitsstufe ist primär eine Funktion der programmierten Vorschubgeschwindigkeit (z. B. 2500 mm/min), der konfigurierten Achsen-Geschwindigkeitsstufen (z. B. 2000 mm/min für X und Y) und der konfigurierten Achsenpositions-Schleifenverstärkung (z. B. Kv von 2,5 mm/min/Mikrometer). Für den Fall der Geschwindigkeitsstufe ist Vorwärtskopplung deaktiviert, da dies eine typische Forderung für Fälle ist, welche wesentliche Unstetigkeiten in den Geschwindigkeiten der Achsenbefehle beinhalten. Vorwärtskopplung kann nicht zusammen mit Geschwindigkeitsstufen angewendet werden, da die konfigurierten Werte für maximale Geschwindigkeitsstufen normalerweise derart gewählt werden, dass die Achse mit maximalem Leistungsvermögen bei ausgeschalteter Vorwärtskopplung arbeitet. Falls Vorwärtskopplung in einem Fall mit Geschwindigkeitsstufe verwendet werden sollte, dann würde die Forderung, innerhalb des Leistungsvermögens der Achse zu arbeiten, eine Einstellung einer maximalen Geschwindigkeitsstufe zur Folge haben, welche so niedrig ist, dass sie bewirkt, dass die Achsen an einer scharfen Ecke praktisch einen vollständigen Stopp erfahren.
  • Für die Fälle, in den Vorwärtskopplung aktiviert ist, wird angenommen, dass die Ist-Achsenpositionen den Steuerbefehlspositionen genau folgen. Für den Fall, in dem Vorwärtskopplung deaktiviert ist, wird angenommen, dass die Ist-Achsenpositionen den Steuerbefehlspositionen mit Amplitudendämpfungen und Phasenverschiebungen folgen, die für eine Tiefpass-Dynamik ersten Grades charakteristisch sind, welche die typische vorherrschende Dynamik einer Regelschleife für die Achsenpositionen von Werkzeugmaschinen ist.
  • Die Wege, welche für die einzelnen Testfälle durchlaufen werden, sind in 12 dargestellt. Die für den SCB-Fall und den Kreisbogen-Fall durchlaufenen Wege, die Linien 5101 bzw. 5102, sind praktisch nicht unterscheidbar. Es existieren aber dennoch Unterschiede zwischen diesen Fällen, welche sichtbar werden, wenn weiter unten die Achsengeschwindigkeits-, Beschleunigungs- und Ruckprofile untersucht werden.
  • Der für den Fall der Geschwindigkeitsstufe durchlaufene Weg ist durch Linie 5103 dargestellt. Der Weg ist offensichtlich asymmetrisch. Die Asymmetrie wird durch die Phasennacheilungs-Charakteristik der Positionssteuereinheit verursacht, welche keine Vorwärtskopplungs-Fähigkeit nutzt. Der Grad der Asymmetrie ist eine Funktion der Vorschubgeschwindigkeit, der konfigurierten maximalen Geschwindigkeitsstufe und der Verstärkung Kv. Die Asymmetrie, die mit dem Fall der Geschwindigkeitsstufe verknüpft ist, kann aus mehreren Gründen problematisch sein, darunter aus folgenden: 1) Die Form der Kontur lässt sich im Voraus schwer vorhersagen; 2) die Form der Kontur für Ecken, die in einer Richtung entgegen dem Uhrzeigersinn durchlaufen werden, ist verschieden von der Form derselben Ecke, die in einer Richtung im Uhrzeigersinn durchlaufen wird; und 3) der Weg, der von den Achsen zurückgelegt wird, weicht lange, nachdem die Ecke gerundet worden ist, noch immer von dem idealen Weg ab.
  • Wie aus 12 ersichtlich ist, sind die Verfahren der Kreisbogen-Einfügung und des Spline Corner Blend dem Geschwindigkeitsstufen-Verfahren überlegen. Indessen werden die Vorteile von Spline Corner Blend gegenüber einem Kreisbogen in Vergleichen von Geschwindigkeits-, Beschleunigungs- und Ruck-Diagrammen für die zwei Fälle nachgewiesen.
  • Die Geschwindigkeitsprofile für die Fälle SCB, Kreisbogen und Geschwindigkeitsstufe sind in 13A, 14A bzw. 15A dargestellt. Jede dieser Abbildungen enthält Kurven von X-Achsen-Geschwindigkeit, Y-Achsen-Geschwindigkeit und Weggeschwindigkeit als Funktion der Zeit. Die Weggeschwindigkeit ist die Geschwindigkeit der kombinierten Achsenbewegungs-Tangente an den Weg im X-Y-Raum.
  • Für den Fall SCB wird die X-Achse von Geschwindigkeit null auf die programmierte Vorschubgeschwindigkeit in ungefähr 0,07 Sekunden beschleunigt. Während des Anfangsabschnitts der Bewegung bewegt sich die X-Achse allein, daher ist die Weggeschwindigkeit 5203 äquivalent zu der X-Achsen-Geschwindigkeit 5204. Während des Endabschnitts der Bewegung bewegt sich die Y-Achse allein, daher ist die Weggeschwindigkeit 5203 äquivalent zu der Y-Achsen-Geschwindigkeit 5205.
  • An der Ecke bleibt die Weggeschwindigkeit 5203 konstant. Indessen wird die X-Achsen-Geschwindigkeit 5204 allmählich von der programmierten Vorschubgeschwindigkeit auf null verringert, und die Y-Achsen-Geschwindigkeit 5205 wird allmählich von null auf die programmierte Geschwindigkeit erhöht. Die Gesamtzeit zur Ausführung der Bewegung unter Verwendung des SCB-Verfahrens beträgt ungefähr 0,31 Sekunden.
  • Wie in 14A dargestellt, erfordert der Fall des Kreisbogen-Verfahrens mehr Zeit (ungefähr 0,36 Sekunden) für die Ausführung. Ein potentieller Grund hierfür ist, dass der Übergang zwischen dem linearen Abschnitt und dem Kreisbogen eine stufenförmige Unstetigkeit in der Achsenbeschleunigung beinhaltet. Um die Achsen-Rucke innerhalb ihrer konfigurierten Maximalwerte zu halten, ist es normalerweise erforderlich, dass die Steuerung die Vorschubgeschwindigkeit vor dem Übergang zwischen der X-Achsen-Bewegung und dem Kreisbogen verringert, und dann wieder vor dem Übergang vom Kreisbogen zu der Y-Achsen-Bewegung. Dies ist zu erkennen, wenn man betrachtet, wie die Weggeschwindigkeit 5303 für den Übergang von der X-Achsen-Bewegung zum Kreisbogen (bei ungefähr 0,15 Sekunden) verringert wird (z. B. auf ungefähr 1000 mm/min). Die Weggeschwindigkeit 5303 erhöht sich dann in Richtung ihres programmierten Wertes, erreicht jedoch den programmierten Wert nicht, da sie erneut verringert werden muss (z. B. auf ungefähr 1000 mm/min), für den Übergang zwischen dem Kreisbogen und Y-Achsen-Bewegung (bei ungefähr 0,22 Sekunden).
  • Wie in 15A dargestellt, erfordert der Fall des Geschwindigkeitsstufen-Verfahrens ebenfalls mehr Zeit für die Ausführung (ungefähr 0,37 Sekunden) als der Fall des SCB, da die Steuerung die Weggeschwindigkeit 5403 unmittelbar vor der Ecke verringern muss, um zu verhindern, dass die X- und Y-Achse Geschwindigkeitsstufen (Unstetigkeiten) erfahren, welche größer sind als die konfigurierte maximale zulässige Geschwindigkeitsstufe. Die X- und die Y-Achsen-Geschwindigkeit 5401 bzw. 5402 und die Weggeschwindigkeit 5403 sind asymmetrisch aufgrund der Effekte der Dynamik erster Ordnung in der Positionsregelschleife ohne Vorwärtskopplung. Die exponentielle Ansprechcharakteristik erster Ordnung eines Geschwindigkeitsstufen-Steuerbefehls ist durch Analyse der Geschwindigkeiten 5401 und 5402 ersichtlich.
  • Eine Untersuchung der Diagramme von Achsen- und Wegbeschleunigung als Funktionen der Zeit für SCB, eingefügten Kreisbogen und Geschwindigkeitsstufe in 13B, 14B bzw. 15B lässt erkennen, dass für alle drei Fälle die maximalen X- und Y-Achsen-Beschleunigungen innerhalb ihrer konfigurierten Grenzen (z. B. 2,5 m/s2) liegen. In diesen Diagrammen ist die Wegbeschleunigung die Komponente der Beschleunigung, welche tangential zu dem Weg im X-Y-Raum ist.
  • Für den Fall des SCB sind an der Ecke die X- und die Y-Achsen-Beschleunigung 5211 bzw. 5212 glatte stetige Funktionen. Für den Kreisbogen-Fall weisen an der Ecke die X- und die Y-Achsen-Beschleunigung 5311 bzw. 5312 mäßige stufenförmige Unstetigkeiten auf. Zum Beispiel weist die Y-Achsen-Beschleunigung 5312 eine Beschleunigungsstufe von ungefähr 0,4 m/s2 dort auf, wo die X-Achsen-Bewegung in den Kreisbogen übergeht (bei ungefähr 0,15 Sekunden). Indessen weist die X-Achsen-Beschleunigung 5311 eine Unstetigkeit von ungefähr 0,4 m/s2 dort auf, wo der Kreisbogen in die Y-Achsen-Bewegung übergeht (bei ungefähr 0,22 Sekunden). Für den Geschwindigkeitsstufen-Fall weisen die X- und die Y-Achsen-Beschleunigung 5411 bzw. 5412 große stufenförmige Unstetigkeiten an der befehlsgesteuerten scharfen Ecke auf.
  • Die Achsen-Rucke und der Weg-Ruck für die Testfälle SCB, Kreisbogen und Geschwindigkeitsstufe sind in 13C, 14C bzw. 15C dargestellt. Der Weg-Ruck ist die Ruck-Komponente, welche tangential zum Weg im X-Y-Raum ist. Für den Fall des SCB nehmen der X-Achsen-Ruck 5221 und der Y-Achsen-Ruck 5222 beide einen maximalen Wert von ungefähr 100 m/s3 an der Ecke an, welcher deutlich unterhalb des zulässigen Maximums (von z. B. 150 m/s3) liegt. Für den Kreisbogen-Fall nehmen der X-Achsen-Ruck 5321 und der Y-Achsen-Ruck 5322 jeweils einen maximalen Wert von ungefähr 140 m/s3 an, welcher ungefähr gleich dem maximalen zulässigen Wert ist. Die Rucke 5321 und 5322 erreichen infolge des Vorhandenseins des Abschnitts-Blending-Algorithmus der Steuerung nicht das genaue Maximum.
  • Der X- und der Y-Achsen-Ruck für den Geschwindigkeitsstufen-Fall sind in 15C als Kurven 5421 bzw. 5422 dargestellt. In diesem Fall überschreiten die Rucke erheblich das Achsen-Maximum. Derartige hohe Niveaus des Ruckes können Probleme verursachen, wie etwa mechanische Schwingungen der Achsen sowie Verschleiß der Maschine.
  • Obwohl sehr detaillierte Gleichungen und mögliche Implementierungen eines Corner-Blending-Verfahrens und einer entsprechenden Vorrichtung für ein Bewegungssteuerungssystem vorgestellt wurden, dürfen diese Beispiele nicht als von ihrer Art her einschränkend betrachtet werden. Diese beispielhaften Ausführungsformen wurden einfach für die Zwecke der Veranschaulichung potentieller Wege dargestellt und beschrieben, wie die Erfindung hergestellt und verwendet werden kann, darunter einer in Betracht gezogenen besten Art der Ausführung der Erfindung. Es versteht sich, dass andere, davon verschiedene Aspekte und Ausführungsformen der Erfindung realisierbar sind, ohne den Rahmen der Erfindung zu verlassen.
  • Obwohl bei dem Corner-Blending-Verfahren, wie oben beschrieben, ein Polynom vierten Grades verwendet werden kann, und obwohl festgestellt wurde, dass solche Polynome gute Ergebnisse und eine wünschenswerte Krümmung liefern, ist es zum Beispiel denkbar, dass andere Typen von Polynomen benutzt werden könnten. Obwohl das Corner Blend bei einer Ausführungsform als ein Paar von Spline-Abschnitten umfassend beschrieben wurde, ist es weiterhin denkbar, dass mehr oder weniger Abschnitte verwendet werden könnten, um das Corner Blend zu erzeugen. Obwohl eine beispielhafte endliche Zustandsmaschine, welche in diskreter Zeit arbeitet, beschrieben wurde, ist es außerdem denkbar, dass andere Implementierungen und Ausführungsformen der vorliegenden Erfindung möglich sind. Es ist zu erwarten, dass digitale Schaltungen ein Verfahren zur Steuerung von CNC-Maschinen sein werden; daher wurde hier bei der Erörterung ein Schwerpunkt auf digitale Elektronik gelegt.

Claims (2)

  1. Verfahren zum Durchqueren einer Ecke in einem gesteuerten Bewegungsweg, wobei das Verfahren umfasst: Vorsehen eines gewünschten Bewegungsweges, welcher einen Eckabschnitt enthält; Bestimmen eines nichtlinearen Weges zum Durchqueren des Eckabschnitts; Berechnen einer maximalen Geschwindigkeit für den nichtlinearen Weg; Bewegen eines beweglichen Elements entsprechend dem nichtlinearen Weg anstelle des Eckabschnitts, wobei die Bewegung durch die berechnete maximale Geschwindigkeit beschränkt ist, dadurch gekennzeichnet, dass der Schritt des Bestimmens der maximalen Geschwindigkeit ferner die folgenden Schritte umfasst: Berechnen eines maximalen Tangentenvektors für den nichtlinearen Weg; Berechnen eines maximalen Krümmungsvektors für den nichtlinearen Weg; und Berechnen eines maximalen Krümmungsänderungsvektors für den nichtlinearen Weg.
  2. Verfahren nach Anspruch 1, wobei der Schritt des Bestimmens der maximalen Geschwindigkeit ferner die folgenden Schritte umfasst: Berechnen einer ersten maximalen Geschwindigkeit unter Verwendung des maximalen Tangentenvektors, um die maximalen Geschwindigkeiten des Weges zu beschränken; Berechnen einer zweiten maximalen Geschwindigkeit unter Verwendung des maximalen Krümmungsvektors, um die maximalen Beschleunigungen des Weges zu beschränken; Berechnen einer dritten maximalen Geschwindigkeit unter Verwendung des maximalen Krümmungsänderungsvektors, um die maximalen Rucke des Weges zu beschränken; und Wählen der maximalen Geschwindigkeit aus dem Minimum der ersten, zweiten und dritten maximalen Geschwindigkeiten.
DE60038578T 1999-11-19 2000-11-20 Vorrichtung und Verfahren zur Erzeugung glatter Kurven in einem Bewegungssteuerungssystem Expired - Lifetime DE60038578T2 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US16662599P 1999-11-19 1999-11-19
US166625P 1999-11-19
US09/711,443 US6922606B1 (en) 1999-11-19 2000-11-13 Apparatus and method for smooth cornering in a motion control system
US711443 2000-11-13

Publications (2)

Publication Number Publication Date
DE60038578D1 DE60038578D1 (de) 2008-05-21
DE60038578T2 true DE60038578T2 (de) 2008-08-21

Family

ID=26862426

Family Applications (3)

Application Number Title Priority Date Filing Date
DE60008068T Expired - Lifetime DE60008068T2 (de) 1999-11-19 2000-11-20 Vorrichtung und Verfahren zur Erzeugung glatter Kurven in einem Bewegungssteuerungssystem
DE60038577T Expired - Lifetime DE60038577T2 (de) 1999-11-19 2000-11-20 Vorrichtung und Verfahren zur Erzeugung glatter Kurven in einem Bewegungssteuerungssystem
DE60038578T Expired - Lifetime DE60038578T2 (de) 1999-11-19 2000-11-20 Vorrichtung und Verfahren zur Erzeugung glatter Kurven in einem Bewegungssteuerungssystem

Family Applications Before (2)

Application Number Title Priority Date Filing Date
DE60008068T Expired - Lifetime DE60008068T2 (de) 1999-11-19 2000-11-20 Vorrichtung und Verfahren zur Erzeugung glatter Kurven in einem Bewegungssteuerungssystem
DE60038577T Expired - Lifetime DE60038577T2 (de) 1999-11-19 2000-11-20 Vorrichtung und Verfahren zur Erzeugung glatter Kurven in einem Bewegungssteuerungssystem

Country Status (3)

Country Link
US (1) US6922606B1 (de)
EP (1) EP1102139B1 (de)
DE (3) DE60008068T2 (de)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102007050282B4 (de) * 2006-11-09 2015-11-26 Sew-Eurodrive Gmbh & Co Kg Vorrichtung zur Bewegung eines Objektes, Verfahren zur Bestimmung einer Bahnkurve, Verfahren zum Betreiben einer Maschine oder Anlage
US9304507B2 (en) 2011-08-25 2016-04-05 Fanuc Corporation Tool path display apparatus having display unit for acceleration or jerk of tool tip point
DE102013011684B4 (de) * 2012-07-19 2017-09-07 Fanuc Corporation Numerische Steuervorrichtung, die eine Einfügeeinheit für Ecken mit mehreren Kurven umfasst
DE112017008009B4 (de) 2017-09-08 2022-03-31 Mitsubishi Electric Corporation Servosteuerungsvorrichtung

Families Citing this family (54)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6242880B1 (en) * 1998-09-08 2001-06-05 Cimplus, Inc. Tolerance based motion control system
DE10144487A1 (de) 2001-09-10 2003-03-27 Heidenhain Gmbh Dr Johannes Verfahren zur Bahnsteuerung
DE10164496A1 (de) * 2001-12-28 2003-07-17 Siemens Ag Automatisierungssystem
GB2418033B (en) * 2003-06-02 2007-06-20 Honda Motor Co Ltd Teaching data preparing method for articulated robot
US7180253B2 (en) 2003-09-30 2007-02-20 Rockwell Automation Technologies, Inc. Method and system for generating multi-dimensional motion profiles
DE10351781B4 (de) * 2003-11-06 2006-12-07 Siemens Ag Rechnergestütztes Anpassungsverfahren für ein Anwenderprogramm für eine Werkzeugmaschine und hiermit korrespondierende Gegenstände
JP2006099347A (ja) * 2004-09-29 2006-04-13 Fanuc Ltd ロボット移動制御方法
CA2747118C (en) * 2005-03-23 2015-02-10 Hurco Companies, Inc. Method of curvature controlled data smoothing
CA2624258C (en) * 2005-09-30 2016-08-02 Sunfish Studio, Llc System and method to compute narrow bounds on a modal interval polynomial function
DE102005058809A1 (de) * 2005-12-09 2007-06-14 Hella Kgaa Hueck & Co. Bahnplanung
JP4652252B2 (ja) * 2006-02-28 2011-03-16 株式会社ミツトヨ 画像測定システム、画像測定方法及び画像測定プログラム
DE102006022831A1 (de) * 2006-05-16 2007-11-22 Siemens Ag Verfahren zum Steuern einer Schleifmaschine und numerisch gesteuerte Schleifmaschine
US8725283B2 (en) * 2006-08-04 2014-05-13 Hurco Companies, Inc. Generalized kinematics system
US8024068B2 (en) 2006-08-04 2011-09-20 Hurco Companies, Inc. Machine tool control system
JP2010500180A (ja) * 2006-08-04 2010-01-07 ハーコ カンパニーズ,インコーポレイティド 工具利用管理システムおよび方法
US7933677B2 (en) * 2006-08-04 2011-04-26 Hurco Companies, Inc. System and method for surface finish management
JP5032081B2 (ja) * 2006-09-29 2012-09-26 オークマ株式会社 工作機械における加工制御方法及び加工情報作成方法
US7979158B2 (en) * 2007-07-31 2011-07-12 Rockwell Automation Technologies, Inc. Blending algorithm for trajectory planning
US8765212B2 (en) 2007-09-21 2014-07-01 Nordson Corporation Methods for continuously moving a fluid dispenser while dispensing amounts of a fluid material
US9529778B2 (en) 2008-03-27 2016-12-27 Sunfish Studio, Llc System and method to compute narrow bounds on a modal interval polynomial function
JP4467625B2 (ja) * 2008-03-31 2010-05-26 三菱電機株式会社 数値制御装置および数値制御方法
EP2144127B1 (de) * 2008-07-08 2014-04-30 Siemens Aktiengesellschaft Verfahren und Steuergerät zum Aufsynchronisieren eines Aufnehmers eines Handlingsgerätes
CN101877567B (zh) * 2009-04-29 2012-09-19 鸿富锦精密工业(深圳)有限公司 马达速度命令产生装置及方法
CN102428419B (zh) * 2009-06-03 2013-12-25 三菱电机株式会社 数控装置以及生产系统
WO2012026279A1 (ja) * 2010-08-25 2012-03-01 三菱電機株式会社 軌跡制御装置
US8803885B1 (en) * 2011-09-07 2014-08-12 Infragistics, Inc. Method for evaluating spline parameters for smooth curve sampling
CN104168854B (zh) 2012-01-24 2017-02-22 史密夫和内修有限公司 多孔结构及其制造方法
JP5326015B2 (ja) * 2012-02-20 2013-10-30 ファナック株式会社 加工曲線作成機能を有する数値制御装置
JP6128767B2 (ja) * 2012-07-05 2017-05-17 キヤノン株式会社 ロボット制御装置、及びロボット制御方法
JP5734270B2 (ja) * 2012-12-21 2015-06-17 ファナック株式会社 コーナ角度に応じて自動的に加工経路の補正を行うワイヤ放電加工機
JP5855692B2 (ja) * 2014-02-26 2016-02-09 ファナック株式会社 コーナ形状補正機能を有するワイヤ放電加工機
JP6126152B2 (ja) 2015-03-16 2017-05-10 ファナック株式会社 曲線部を有する軌道を生成するロボットの軌道生成装置
JP6612592B2 (ja) * 2015-11-12 2019-11-27 ローランドディー.ジー.株式会社 箔転写装置で使用するデータを作成するためのプログラム、箔転写装置、箔転写方法
CN105700466A (zh) * 2015-11-23 2016-06-22 上海交通大学 高速数控加工轨迹的曲率光顺方法
WO2017113195A1 (zh) * 2015-12-30 2017-07-06 深圳配天智能技术研究院有限公司 一种加工路径规划方法、加工路径规划装置及数控机床
US10347016B2 (en) * 2016-01-12 2019-07-09 Monotype Imaging Inc. Converting font contour curves
JP6363642B2 (ja) * 2016-02-29 2018-07-25 ファナック株式会社 接線連続のコーナにおけるコーナ経路の最適化機能を有する数値制御装置
US11402818B2 (en) * 2016-12-12 2022-08-02 Fanuc Corporation Numerical controller and data structure
EP3444687A1 (de) * 2017-08-14 2019-02-20 Siemens Aktiengesellschaft Verfahren zum betrieb einer numerisch gesteuerten werkzeugmaschine sowie werkzeugmaschine dazu
US10571921B2 (en) * 2017-09-18 2020-02-25 Baidu Usa Llc Path optimization based on constrained smoothing spline for autonomous driving vehicles
DE102017010425A1 (de) * 2017-11-12 2019-05-16 Wirtgen Gmbh Selbstfahrende Baumaschine und Verfahren zum Steuern einer selbstfahrenden Baumaschine
US10936792B2 (en) 2017-12-21 2021-03-02 Monotype Imaging Inc. Harmonizing font contours
US10732632B2 (en) * 2018-01-31 2020-08-04 Baidu Usa Llc Method for generating a reference line by stitching multiple reference lines together using multiple threads
CN110948477B (zh) * 2018-09-26 2021-12-17 深圳市优必选科技有限公司 一种机器人及其动作优化方法和装置
CN113711155A (zh) * 2019-07-19 2021-11-26 西门子(中国)有限公司 机器人路径规划器、方法、装置和计算机可读存储介质
CN110703684B (zh) * 2019-11-01 2022-09-30 哈工大机器人(合肥)国际创新研究院 一种端点速度不限的轨迹规划方法及装置
JP7444588B2 (ja) 2019-11-25 2024-03-06 ファナック株式会社 軌道生成装置、自動位置制御装置および軌道生成方法
CN113001537B (zh) * 2019-12-20 2022-08-02 深圳市优必选科技股份有限公司 机械臂控制方法、机械臂控制装置及终端设备
CN111913441B (zh) * 2020-08-06 2021-11-09 南京工程学院 一种基于轨迹模式的拐角平滑过渡方法
CN112965443B (zh) * 2021-02-08 2022-03-01 浙江工业大学 一种裁床拐角轨迹跟踪高精度插值控制方法
CN112947299B (zh) * 2021-04-26 2023-02-21 深圳市英威腾电气股份有限公司 一种运动设备的运动控制方法、系统及装置
CN114217573B (zh) * 2021-12-10 2023-12-29 江苏集萃智能制造技术研究所有限公司 一种速度前瞻控制方法
CN114415598B (zh) * 2021-12-29 2023-09-12 深圳数马电子技术有限公司 加工路径的过渡方法、装置、存储介质及计算机设备
CN117666475A (zh) * 2023-12-07 2024-03-08 齐齐哈尔大学 一种连续短线段拐角加工路径平滑方法

Family Cites Families (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS60107106A (ja) 1983-11-15 1985-06-12 Mitsubishi Electric Corp 曲線補間装置
US4663726A (en) 1985-04-15 1987-05-05 General Electric Co. Robot control utilizing cubic spline interpolation
US4794540A (en) 1986-06-18 1988-12-27 Mts Systems Corporation Iterative spline function controlled positioning mechanism
JPH0782554B2 (ja) 1986-09-10 1995-09-06 フアナツク株式会社 曲面加工方法
US4772831A (en) 1986-11-20 1988-09-20 Unimation, Inc. Multiaxis robot control having improved continuous path operation
US5390292A (en) 1987-01-26 1995-02-14 Ricoh Company, Ltd. Apparatus for converting a gregory patch
JPH01258106A (ja) 1988-04-08 1989-10-16 Fanuc Ltd 空間曲線創成法
JPH01319868A (ja) 1988-06-21 1989-12-26 Mitsubishi Electric Corp 曲面生成方式
US5033005A (en) 1988-09-06 1991-07-16 Schlumberger Technologies, Inc. Analytical computer-aided machining system and method
JPH02113305A (ja) 1988-10-24 1990-04-25 Fanuc Ltd スプライン補間方法
ES2080051T3 (es) 1989-02-28 1996-02-01 Siemens Ag Procedimiento de control en una maquina herramienta numerica o un robot.
US5198161A (en) 1990-03-07 1993-03-30 Kao Corporation Parison thickness control method
US5229698A (en) 1990-08-06 1993-07-20 Cincinnati Milacron Inc. Method and apparatus for sub-span interpolation
ES2083409T3 (es) 1990-09-25 1996-04-16 Heidenhain Gmbh Dr Johannes Procedimiento para determinar el contorno de trayectoria de herramientas para maquinas de control numerico.
JP2718260B2 (ja) 1990-11-08 1998-02-25 三菱電機株式会社 数値制御装置
NL9002703A (nl) 1990-12-10 1992-07-01 Philips Nv Bewerkingsmachine en besturingsinrichting geschikt voor toepassing in een dergelijke bewerkingsmachine.
US5396160A (en) * 1991-03-11 1995-03-07 General Motors Corporation Method of real-time machine path planning from a math model
US5682319A (en) 1991-06-04 1997-10-28 Anca Pty. Ltd. Computer numerically controlled machines
DE69314688T2 (de) 1992-04-23 1998-02-19 Heidenhain Gmbh Dr Johannes Numerische Steuerungseinrichtung und Verfahren zur Steuerung der Bewegung eines Werkzeuges
DE4213927A1 (de) 1992-04-28 1993-11-04 Festo Kg Verfahren zur steuerung einer werkzeugmaschine, insbesondere eine fraesmaschine
JP2857540B2 (ja) * 1992-06-22 1999-02-17 ファナック株式会社 カッタパスの自動再作成を行うcad/cam方法及び装置
US5438522A (en) 1992-12-18 1995-08-01 Cincinnati Milacron Inc. Method and apparatus for sub-span interpolation
JP2805119B2 (ja) 1993-02-26 1998-09-30 オークマ株式会社 非円形ワーク加工用数値制御装置
US5434489A (en) 1993-07-30 1995-07-18 Fanuc Robotics North America, Inc. Method and system for path planning in cartesian space
US5872714A (en) * 1993-11-26 1999-02-16 Ford Global Technologies, Inc. Rapidly making a contoured part
US5394323A (en) 1994-03-29 1995-02-28 The University Of British Columbia Path error control system
US5602968A (en) 1994-05-02 1997-02-11 The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration Task space angular velocity blending for real-time trajectory generation
EP0707252B1 (de) * 1994-10-13 1998-06-03 Kabushiki Kaisha F A Labo Verfahren zur dreidimensionalen Bearbeitung
JP2933119B2 (ja) 1995-05-09 1999-08-09 ファナック株式会社 数値制御装置
JP3396342B2 (ja) 1995-07-17 2003-04-14 三菱電機株式会社 スプライン補間機能を有する数値制御装置
US5726896A (en) 1995-08-30 1998-03-10 University Of Utah Research Foundation Method and system for spline interpolation, and their use in CNC
US5949693A (en) * 1996-09-06 1999-09-07 Tandler; William Computer aided design (CAD) system for automatically constructing datum reference frame (DRF) and feature control frame (FCF) for machine part
US5774359A (en) 1996-09-17 1998-06-30 Autodesk, Inc. Method for generating an extended rolling ball fillet surface between two surfaces
JP2824424B2 (ja) * 1996-11-07 1998-11-11 株式会社エフ・エーラボ 三次元加工方法
JPH10320026A (ja) 1997-05-20 1998-12-04 Mitsubishi Electric Corp 数値制御装置及び方法
ES2235381T3 (es) * 1997-12-02 2005-07-01 Lacent Technologies Inc. Boquilla de laser montada en portico y procedimiento para controlar el posicionamiento del laser.
US6112133A (en) * 1998-02-27 2000-08-29 Imcs, Inc. Visual system and method for generating a CNC program for machining parts with planar and curvilinear surfaces

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102007050282B4 (de) * 2006-11-09 2015-11-26 Sew-Eurodrive Gmbh & Co Kg Vorrichtung zur Bewegung eines Objektes, Verfahren zur Bestimmung einer Bahnkurve, Verfahren zum Betreiben einer Maschine oder Anlage
US9304507B2 (en) 2011-08-25 2016-04-05 Fanuc Corporation Tool path display apparatus having display unit for acceleration or jerk of tool tip point
DE102012016434B4 (de) 2011-08-25 2021-11-11 Fanuc Corp. Werkzeugweganzeigevorrichtung mit einer Anzeigeeinheit für eine Beschleunigung oder einen Sprung eines Werkzeugspitzenpunkts
DE102013011684B4 (de) * 2012-07-19 2017-09-07 Fanuc Corporation Numerische Steuervorrichtung, die eine Einfügeeinheit für Ecken mit mehreren Kurven umfasst
DE112017008009B4 (de) 2017-09-08 2022-03-31 Mitsubishi Electric Corporation Servosteuerungsvorrichtung
US11630425B2 (en) 2017-09-08 2023-04-18 Mitsubishi Electric Corporation Servo control device

Also Published As

Publication number Publication date
EP1102139A3 (de) 2002-08-07
DE60038578D1 (de) 2008-05-21
DE60008068D1 (de) 2004-03-11
EP1102139A2 (de) 2001-05-23
DE60038577D1 (de) 2008-05-21
DE60038577T2 (de) 2009-04-30
US6922606B1 (en) 2005-07-26
DE60008068T2 (de) 2004-09-23
EP1102139B1 (de) 2004-02-04

Similar Documents

Publication Publication Date Title
DE60038578T2 (de) Vorrichtung und Verfahren zur Erzeugung glatter Kurven in einem Bewegungssteuerungssystem
DE60027124T2 (de) Bewegungssteuerung mit Spline Interpolation
DE112013006980B4 (de) Numerische Steuerungseinrichtung
DE102009024130B4 (de) Verfahren zur echtzeitfähigen Bahnplanung kontinuierlicher, rucksprungfreier Sollwerttrajektorien
DE60123379T2 (de) Numerisch gesteuerte Bearbeitungseinheit für gekrümmte Flächen
DE112005000451T5 (de) Designverfahren für ein Industrieerzeugnis unter Verwendung einer Klothoidenkurve, Industrieerzeugnis, die mit dem Designverfahren entworfen werden, und Verfahren und Vorrichtung zur numerischen Steuerung unter Verwendung der Klothoidenkurve
DE102017129258A1 (de) Laserbearbeitungsrobotersystem und Steuerverfahren für Laserbearbeitungsrobotersystem
DE102015103451B4 (de) Verfahren zum zeitdiskreten Kontrollieren antreibbarer Achsen und Computerprogrammprodukt
DE19618332A1 (de) Numerische Steuervorrichtung mit Spline-Interpolationsfunktion
DE112017000203B4 (de) Numerische Steuerung und numerisches Steuerungsverfahren
DE2422102A1 (de) Numerische steuerung zur erzeugung einer parabolischen auskehlung
EP0751447A1 (de) Numerisches Steuerverfahren
DE112012006403T5 (de) Numerik-Steuervorrichtung
DE102018218201A1 (de) Numerische steuereinrichtung, cnc-werkzeugmaschine, numerisches steuerverfahren und programm für eine numerische steuerung
DE19532146A1 (de) NC-Verfahren und zugehörige Vorrichtung
DE10357650A1 (de) Verfahren zur Glättung von Polygonzügen in NC-Programmen
DE102020003527A1 (de) Numerische Steuervorrichtung
DE10393527T5 (de) Systeme und Verfahren zur Darstellung komplexer n-Kurven für die Direktsteuerung einer Werkzeugbewegung
DE112020000656T5 (de) Bearbeitungsprogrammumwandlungsvorrichtung, numerische Steuerung, Bearbeitungsprogrammumwandlungsverfahren und Vorrichtung für maschinelles Lernen
EP3955073A1 (de) Betreiben einer wenigstens zweiachsigen werkzeugmaschine
DE19614232A1 (de) Verfahren und Vorrichtung für die numerische Steuerung
DE4310126A1 (de) Verfahren und Vorrichtung zur numerischen Bahnsteuerung von Werkzeugmaschinen
EP4137899A1 (de) Verfahren zum bestimmen einer bearbeitungsbahn und verfahren zur bearbeitung eines werkstücks mittels einer mehrachsigen bearbeitungsmaschine
EP3335087B1 (de) Verfahren zur bereitstellung eines verfahrprofils, steuereinrichtung, maschine sowie computerprogramm
DE2226547A1 (de) Proportional Interpolator fur Mehr achsenmaschinen

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8327 Change in the person/name/address of the patent owner

Owner name: SIEMENS INDUSTRY, INC. (N.D.GES.D. STAATES DEL, US