Based on the inputs i_stStart, i_stTarget, i_lrAbsHeight, the additional parameters in iq_stConfiguration and on the value of the property udiNumberOfSplinePoints, this method calculates a position table for a spline interpolation in three-dimensional space. Traveling along these positions can be realized by using the motion command. A position table is calculated from the start position to the target position as well as from the target position to the start position.
Also refer to chapter Behavior of Method FB_EllipticSpline.CalcSplineExtended.
Input |
Data type |
Description |
---|---|---|
i_stStart |
Start position in cartesian coordinates. Value range: i_stStart.lrX / lrY <> i_stTarget.lrX / lrY |
|
i_stTarget |
Target position in cartesian coordinates. Value range: i_stStart.lrX / lrY <> i_stTarget.lrX / lrY |
|
i_lrAbsHeight |
LREAL |
Absolute height of the elliptic spline apex. Value range: i_lrAbsHeight > i_stStart.lrZ AND i_lrAbsHeight > i_stTarget.lrZ |
Input/Output |
Data type |
Description |
---|---|---|
iq_stConfiguration |
Additional configuration parameters for the elliptic spline to be calculated. |
Output |
Data type |
Description |
---|---|---|
q_etDiag |
General library-independent statement on the diagnostic. A value not equal to ET_Diag.Ok corresponds to a diagnostic message. |
|
q_etDiagExt |
POU-specific output on the diagnostic. q_etDiag = ET_Diag.Ok -> Status message q_etDiag <> ET_Diag.Ok -> Diagnostic message |
|
q_sMsg |
STRING[80] |
Event-triggered message that gives additional information on the diagnostic state. |
q_stForward |
Calculated spline table from start to end position. |
|
q_stReverse |
Calculated spline table from end to start position. |
|
q_stFeedback |
Feedback data of a successful calculation of an elliptic spline. |
q_etDiag |
q_etDiagExt |
Enumeration value |
Description |
---|---|---|---|
OK |
Ok |
0 |
Ok |
InputParameterInvalid |
NumberOfSplinePointsRange |
89 |
The number of spline points is out of range. |
InputParameterInvalid |
StartInvalid |
164 |
The start position is invalid. |
InputParameterInvalid |
TargetInvalid |
91 |
The target is invalid. |
InputParameterInvalid |
ScalingFactorRange |
162 |
The scaling factor is out of range. |
ExecutionAborted |
NoSolutionFound |
137 |
No available solution. |
UnexpectedProgramBehavior |
UnexpectedFeedback |
13 |
A feedback value was invalid. |
Enumeration name: |
NumberOfSplinePointsRange |
Enumeration value: |
89 |
Description: |
The number of spline points is out of range. |
Issue |
Cause |
Solution |
---|---|---|
Calculating the elliptic spline was not successful. |
The value transferred at the property udiNumberOfSplinePoints lies outside the valid range. |
Ensure that udiNumberOfSplinePoints is greater than or equal to (3 + iq_stConfiguration. diStartNumberOfVerticalPoints + iq_stConfiguration.diTargetNumberOfVerticalPoints). Ensure that the value is less than or equal to 98. |
Enumeration name: |
NoSolutionFound |
Enumeration value: |
137 |
Description: |
No available solution. |
Issue |
Cause |
Solution |
---|---|---|
Calculating the elliptic spline was not successful. |
Based on the parameters specified, no spline could be calculated. |
Ensure that the distance between the start position, the target position, and the absolute height of the spline is not too small. |
Enumeration name: |
ScalingFactorRange |
Enumeration value: |
162 |
Description: |
The scaling factor is out of range. |
Issue |
Cause |
Solution |
---|---|---|
Calculating the elliptic spline was not successful. |
The value transferred at the input iq_stConfiguration.lrApexScalingFactor lies outside the valid range. |
Ensure that the transferred value for is in the range of iq_stConfiguration.lrApexScalingFactor is in the range equal to or greater than -1.0 and equal to or smaller than 1.0. |
Enumeration name: |
StartInvalid |
Enumeration value: |
164 |
Description: |
The start position is invalid. |
Issue |
Cause |
Solution |
---|---|---|
Calculating the elliptic spline was not successful. |
The method SetWorkingPlane was called and the working plane XY is configured. |
Ensure that the input i_stStart.lrZ is set to 0. |
The method SetWorkingPlane was called and the working plane XZ is configured. |
Ensure that the input i_stStart.lrY is set to 0. |
|
The method SetWorkingPlane was called and the working plane YZ is configured. |
Ensure that the input i_stStart.lrX is set to 0. |
|
The start position transferred at the input |
Ensure that the start position i_stStart.lrZ is smaller than i_lrAbsHeight or at the same height. |
|
The obstacle at the start position lies outside the limits of the spline. |
Ensure that:
|
Enumeration name: |
TargetInvalid |
Enumeration value: |
91 |
Description: |
The target is invalid. |
Issue |
Cause |
Solution |
---|---|---|
Calculating the elliptic spline was not successful. |
The method SetWorkingPlane was called and the working plane XY is configured. |
Ensure that the input i_stTarget.lrZ is set to 0. |
The method SetWorkingPlane was called and the working plane XZ is configured. |
Ensure that the input i_stTarget.lrY is set to 0. |
|
The method SetWorkingPlane was called and the working plane YZ is configured. |
Ensure that the input i_stTarget.lrX is set to 0. |
|
The start position transferred at the input |
Ensure that the start position i_stTarget.lrZ is smaller than i_lrAbsHeight or at the same height. |
|
The obstacle at the target position lies outside the limits of the spline. |
Ensure that:
|