Spline-Interpolation

transBSpline

transBSpline(BreakAngle:=LREAL, BreakLength:=LREAL, MergeDiff:=LREAL, LineBreakAngle:=LREAL,LineBreakLength:=LREAL, LineMergeDiff:=LREAL)

transBSpline erzeugt eine kontinuierliche Kurve aus einer stückweisen linearen Polylinie.
Die Kurve wird durch die Eingangspolylinie begrenzt, die Start- und Endpunkte werden interpoliert, innere Punkte sind die Kontrollpunkte (DeBoor-Punkte) der Kurve. Es sind mindestens drei Punkte erforderlich. Eine BSpline-Kurve weist eine lokale Kontrolle auf und ist daher für die Manipulation von Kontrollpunkten geeignet.

//Enable
transBSpline(BreakAngle := 70, BreakLength := 1000);
//Disable
transBSpline();

Beispiel:

Spline-Interpolation 1:
!//BSpline
N10 G00 X18.498 Y0
!transBSpline(BreakAngle:=70.0, BreakLength:=1000.0);
N20 G01 X18.498 Y0 Z0 F6000
N30 X16.572 Y6.543 Z1
N40 X15.616 Y9.715 Z2
N50 X15.121 Y11.275 Z3
N60 X14.838 Y13.196 Z4
N70 X14.982 Y15.085 Z5
N80 X15.595 Y16.485 Z6
N90 X16.396 Y17.490 Z7
N100 X18.653 Y19.243 Z8
N110 X25.07 Y22.526 Z9
N120 X22.228 Y22.997 Z8
N130 X19.569 Y23.174 Z7
N140 X16.488 Y22.884 Z6
N150 X13.634 Y22.228 Z5
N160 X9.533 Y20.793 Z4
N170 X6.668 Y19.009 Z3
N180 X4.224 Y16.877 Z2
N190 X2.376 Y14.61 Z1
N200 X1.068 Y11.959 Z0
! transBSpline();
M02

Parameter

BreakAngle (obligatorisch): Ermöglicht die Beibehaltung von scharfkantigen Merkmalen in der Bahn. Der Spline bricht, wenn derdie Bahn um mehr als BreakAngle abweicht. Der Spline beendet und interpoliert den Punkt.

Spline-Interpolation 2:

BreakLength (obligatorisch): Ermöglicht die Beibehaltung von langen Merkmalen in der Bahn. Der Spline bricht bei Segmenten, die länger als BreakLength sind. Der Spline beendet und interpoliert die Start- und Endpunkte des langen Segments.

Spline-Interpolation 3:

MergeDiff (optional): Der BSpline setzt sich aus Bezier-Segmenten zusammen. Um die Verarbeitungsgeschwindigkeit zu erhöhen, kann der Spline durch Zusammenführen komprimiert werden. Benachbarte Segmente werden zusammengeführt, wenn die Differenz der Kontrollpunkte kleiner ist als MergeDiff. Unten werden benachbarte Segmente zu einem zusammengeführt.

Spline-Interpolation 4:
Spline-Interpolation 5:

Übermäßige Krümmung

Ein zu aggressives Zusammenführen kann zu einer übermäßigen Verformung führen, und ein Segment mit übermäßiger Krümmung wird mit einem Laufzeitfehler zurückgewiesen.

Die zulässige Krümmung ergibt sich aus der Bahngeschwindigkeit und der Beschleunigung.

Die BSpline wird aus einer Kontrollpunkt-Polylinie konstruiert, die aus G01-Segmenten gebildet wird, z. B.: CADCAM. Um die Verarbeitungsgeschwindigkeit zu erhöhen, kann die Kontrollpunkt-Polylinie durch Zusammenführen benachbarter Segmente komprimiert oder vereinfacht werden.

LineBreakAngle (optional): Die Zusammenführung benachbarter Kontrollpunkte wird unterbrochen, wenn der Ablenkungswinkel LineBreakAngle überschreitet.

Spline-Interpolation 6:

LineBreakLength (optional): Die Zusammenführung benachbarter Kontrollpunkte wird unterbrochen, wenn die Länge LineBreakLength überschritten wird.

Spline-Interpolation 7:

LineMergeDiff (optional): Benachbarte Kontrollpunkte werden zusammengeführt, wenn die Differenz (senkrechter Abstand) kleiner als LineMergeDiff ist. In diesem Beispiel kann N30 weggelassen werden, was das Kontrollpolygon vereinfacht.

Spline-Interpolation 8:
Spline-Interpolation 9:

Sind die optionalen Parameter nicht parametrisiert oder sind sie 0, findet keine Zusammenführung statt.

Spline-Interpolation 10:

Übermäßige Krümmung

Ein zu aggressives Zusammenführen kann zu einer übermäßigen Verformung führen, und ein Segment mit übermäßiger Krümmung wird mit einem Laufzeitfehler zurückgewiesen.

Die zulässige Krümmung ergibt sich aus der Bahngeschwindigkeit und der Beschleunigung.

Abarbeitungsreihenfolge:

Wenn BreakAngle oder BreakLength 0 sind, findet keine weitere Verarbeitung statt. LineBreakAngle, LineBreakLength und LineMergeDiff werden zunächst abgearbeitet, um die Kontrollpunkt-Polylinie zu vereinfachen. BreakAngle, BreakLength und MergeDiff werden schließlich abgearbeitet, um die BSpline-Kurve zu erzeugen.

Dekodierstopps und Handshake M-Funktionen:

Die BSpline sollte vor einem Dekodierstopp oder einer M-Funktion vom Typ Handshake mit !transBSpline(); beendet werden.

!//BSpline
N10 G00 X18.498 Y0
!transBSpline(BreakAngle:=70.0, BreakLength:=1000.0);
N20 G01 X18.498 Y0 Z0 F6000
N30 X16.572 Y6.543 Z1
N40 X15.616 Y9.715 Z2
N50 X15.121 Y11.275 Z3
N60 X14.838 Y13.196 Z4
N70 X14.982 Y15.085 Z5
N80 X15.595 Y16.485 Z6
N90 X16.396 Y17.490 Z7
N100 X18.653 Y19.243 Z8
N110 X25.07 Y22.526 Z9
!transBSpline();
!sync();
!transBSpline(BreakAngle:=70.0, BreakLength:=1000.0);
N120 X22.228 Y22.997 Z8
N130 X19.569 Y23.174 Z7
N140 X16.488 Y22.884 Z6
N150 X13.634 Y22.228 Z5
N160 X9.533 Y20.793 Z4
N170 X6.668 Y19.009 Z3
N180 X4.224 Y16.877 Z2
N190 X2.376 Y14.61 Z1
N200 X1.068 Y11.959 Z0
! transBSpline();
M02

Kompatible G-Codes und Funktionen

Andere G-Codes als G01 werden unterstützt.
G00
G02, G03 (Circle and Helix):
Die BSpline wird vorher beendet und danach fortgesetzt.
G04
G09, G60
G54
und andere Transformationen

disableMask()
runFile(path:= )
smoothingSet(mainType:=smoothingTwinBezier,subType:=smoothingRadius,value:= )

ToolRadiusCompensation wird nicht unterstützt.

Voraussetzungen

Entwicklungsumgebung

Zielsystem

TwinCAT V3.1.4024.4

PC oder CX (x86 oder x64)