FB_EllipticSpline - CalcFullSplineUserApex (Methode)
Typ: |
Methode |
Verfügbar ab: |
V1.4.1.0 |
Dieses Kapitel enthält Informationen zu folgenden Aspekten:
Berechnen von Kurvenpunkten für eine elliptische Kurve.
Auf der Grundlage der Eingänge i_stStart, i_stTarget, i_lrAbsHeight und i_lrScalingFactor und des Werts der Eigenschaft udiNumberOfSplinePoints berechnet diese Methode eine Positionstabelle für eine Kurveninterpolation (Spline-Interpolation) im dreidimensionalen Raum. Die Verfahrbewegung entlang dieser Positionen kann mit dem Fahrbefehl IF_RobotMotion.MoveS realisiert werden. Eine Positionstabelle wird von der Startposition bis zur Zielposition sowie von der Zielposition bis zur Startposition berechnet. Dazu werden immer zwei ellipsenförmige Halbäste berechnet: von der Startposition bis zum Scheitelpunkt (Apex) und vom Scheitelpunkt bis zur Endposition. Der Scheitelpunkt der zwei Halbäste der elliptischen Kurve kann durch den Eingang i_lrScalingFactor gehandhabt werden.
Vollständige Kurve von der Startposition bis zur Zielposition: i_lrScalingFactor := -0.75
Vollständige Kurve von der Startposition bis zur Zielposition: i_lrScalingFactor := 0.5
Eingang |
Datentyp |
Beschreibung |
---|---|---|
i_stStart |
Startposition in kartesischen Koordinaten Wertebereich: i_stStart.lrX / lrY <> i_stTarget.lrX / lrY |
|
i_stTarget |
Zielposition in kartesischen Koordinaten Wertebereich: i_stStart.lrX / lrY <> i_stTarget.lrX / lrY |
|
i_lrAbsHeight |
LREAL |
Absolute Höhe des Scheitelpunkts (des Apex) der elliptischen Kurve. Wertebereich: i_lrAbsHeight > i_stStart.lrZ UND i_lrAbsHeight > i_stTarget.lrZ |
i_lrScalingFactor |
LREAL |
Ein Wert ungleich 0,0 bewegt den Apex der elliptischen Kurve entweder in die Startposition oder in die Zielposition, wo 0 die mittlere Position zwischen der Startposition und der Zielposition definiert. Ein positiver Wert bewegt ihn in Richtung der Zielposition an, ein negativer Wert in Richtung der Startposition. Wertebereich: -1,0 < i_lrScalingFactor < 1,0 |
Ausgang |
Datentyp |
Beschreibung |
---|---|---|
q_etDiag |
Allgemeingültige, bibliotheksunabhängige Aussage zur Diagnose. Ein Wert ungleich ET_Diag.Ok entspricht einer Diagnosemeldung. |
|
q_etDiagExt |
Bausteinspezifischer Ausgang zur Diagnose. q_etDiag = ET_Diag.Ok -> Statusmeldung q_etDiag <> ET_Diag.Ok -> Diagnosemeldung |
|
q_sMsg |
STRING[80] |
Ereignisabhängige Meldung, die zusätzliche Informationen über den Diagnosezustand gibt. |
q_stForward |
Berechnete Kurventabelle von der Start- bis zur Endposition. |
|
q_stReverse |
Berechnete Kurventabelle von der End- bis zur Startposition. |
|
q_udiApexIndex |
UDINT |
Index des Kurvenpunkts, der den Scheitelpunkt der elliptischen Kurve darstellt. |
q_lrSplineLength |
LREAL |
Resultierende Länge der linearen Verbindungen zwischen den Kurvenpunkten der elliptischen Kurve. |
q_etDiag |
q_etDiagExt |
Enumerationswert |
Beschreibung |
---|---|---|---|
OK |
0 |
Ok |
|
InputParameterInvalid |
163 |
Die Positionen sind identisch. |
|
InputParameterInvalid |
89 |
Die Anzahl der Kurvenpunkte ist außerhalb des Bereichs. |
|
InputParameterInvalid |
162 |
Der Skalierungsfaktor ist außerhalb des Bereichs. |
|
InputParameterInvalid |
164 |
Die Zirkular-Position ist ungültig. |
|
InputParameterInvalid |
91 |
Das Target ist ungültig. |
Enumerationsname: |
IdenticalPosition |
Enumerationswert: |
163 |
Beschreibung: |
Die Positionen sind identisch. |
Problem |
Ursache |
Lösung |
---|---|---|
Die Berechnung der elliptischen Kurve war nicht erfolgreich. |
Die kartesischen Komponenten X und Y der Startposition (i_stStart) und der Zielposition (i_stTarget) sind in einem Bereich von 0,001 identisch. |
Darauf achten, dass beide Werte nicht wechselseitig identisch sind. |
Enumerationsname: |
NumberOfSplinePointsRange |
Enumerationswert: |
89 |
Beschreibung: |
Die Anzahl der Kurvenpunkte ist außerhalb des Bereichs. |
Problem |
Ursache |
Lösung |
---|---|---|
Die Berechnung der elliptischen Kurve war nicht erfolgreich. |
Der bei der Eigenschaft udiNumberOfSplinePoints übergebene Wert liegt außerhalb des gültigen Bereichs. |
Darauf achten, dass udiNumberOfSplinePoints größer oder gleich 3 ist. Darauf achten, dass udiNumberOfSplinePoints kleiner oder gleich 98 ist. |
Enumerationsname: |
Ok |
Enumerationswert: |
0 |
Beschreibung: |
Ok |
Die Berechnung der elliptischen Kurve war erfolgreich.
Enumerationsname: |
ScalingFactorRange |
Enumerationswert: |
162 |
Beschreibung: |
Der Skalierungsfaktor ist außerhalb des Bereichs. |
Problem |
Ursache |
Lösung |
---|---|---|
Die Berechnung der elliptischen Kurve war nicht erfolgreich. |
Der am Eingang i_lrScalingFactor übergebene Wert liegt außerhalb des gültigen Bereichs. |
Am Eingang i_lrScalingFactor muss ein Wert größer als 1,0 übergeben werden. Am Eingang i_lrScalingFactor muss ein Wert kleiner als 1,0 übergeben werden. |
Enumerationsname: |
StartInvalid |
Enumerationswert: |
164 |
Beschreibung: |
Die Zirkular-Position ist ungültig. |
Problem |
Ursache |
Lösung |
---|---|---|
Die Berechnung der elliptischen Kurve war nicht erfolgreich. |
Die Methode SetWorkingPlane wurde aufgerufen, und die Arbeitsebene XY wird konfiguriert. |
Sicherstellen, dass der Eingang i_stStart.lrZ auf 0 gesetzt ist. |
Die Methode SetWorkingPlane wurde aufgerufen, und die Arbeitsebene XZ wird konfiguriert. |
Sicherstellen, dass der Eingang i_stStart.lrY auf 0 gesetzt ist. |
|
Die Methode SetWorkingPlane wurde aufgerufen, und die Arbeitsebene YZ wird konfiguriert. |
Sicherstellen, dass der Eingang i_stStart.lrX auf 0 gesetzt ist. |
|
Der Wert des Eingangs i_lrScalingFactor entspricht nicht 0,0 und der Wert des Eingangs i_stStart.lrZ ist größer als der Wert des Eingangs i_lrAbsHeight. |
Darauf achten, dass der Eingang i_stStart.lrZ nicht größer oder gleich dem Eingang i_lrAbsHeight ist. |
Enumerationsname: |
TargetInvalid |
Enumerationswert: |
91 |
Beschreibung: |
Das Target ist ungültig. |
Problem |
Ursache |
Lösung |
---|---|---|
Die Berechnung der elliptischen Kurve war nicht erfolgreich. |
Die Methode SetWorkingPlane wurde aufgerufen, und die Arbeitsebene XY wird konfiguriert. |
Sicherstellen, dass der Eingang i_stTarget.lrZ auf 0 gesetzt ist. |
Die Methode SetWorkingPlane wurde aufgerufen, und die Arbeitsebene XZ wird konfiguriert. |
Sicherstellen, dass der Eingang i_stTarget.lrY auf 0 gesetzt ist. |
|
Die Methode SetWorkingPlane wurde aufgerufen, und die Arbeitsebene YZ wird konfiguriert. |
Sicherstellen, dass der Eingang i_stTarget.lrX auf 0 gesetzt ist. |
|
Der Wert des Eingangs i_lrScalingFactor entspricht nicht 0,0 und der Wert des Eingangs i_stTarget.lrZ ist größer als der Wert des Eingangs i_lrAbsHeight. |
Darauf achten, dass der Eingang i_stTarget.lrZ nicht größer oder gleich dem Eingang i_lrAbsHeight ist. |