Programming an axis polynomial (POLY)
Release Note
This function is available as of CNC Build V2.11.2016.08
Characteristics of axis-specific polynomials
The motion rules for an axis can be programmed by specifying axis-specific polynomials.
This axis-specific polynomial motion is programmable for linear motions (G00, G01). The dynamic parameters of the currently active G function (G00 or G01) are used.
An upper limit of the polynomial parameter is specified for each axis polynomial up to which the polynomial parameter is interpolated. If the upper limit is not programmed, the value 1.0 is assigned.
The polynomial coefficients of an axis polynomial are defined in square brackets after the axis identifier in ascending order. The keyword POLY is always specified first as identification. Higher polynomial coefficients which are not required can be omitted. Coefficients which are not programmed are assigned the value 0. At least the first coefficient 'A0' must be set.
The maximum possible degree of the polynomial is 5.
Evaluation
The polynomial coefficients refer to the specification of absolute axis positions and are used in a 5th degree polynomial:
p(s) = A0 + A1 * s + A2 * s² + A3 * s³ + A4 * s4 + A5 s5
The polynomial parameter is interpolated for the polynomial from zero up to the programmed upper limit simultaneously with the executed motion path.
This applies to the absolute position of the polynomial axis in mm or degrees:
At motion start (s = 0):
p(0) = A0
At motion end (s = L):
p(L) = A0 + A1 * L + A2 * L² + A3 * L³ + A4 * L4 + A5 L5
Axis-specific polynomial programming is only effective blockwise. Therefore, if required, it must be reused in the next motion block for each axis.
Notice
When determining the polynomial coefficients, it is important to ensure that the axis position is continuous, i.e. the polynomial value at 0 position must correspond to the axis position of the previous motion block.
The repeated programming of axis polynomials in sequenced NC blocks requires that the end position of a polynomial corresponds to the start position of the next polynomial.
Since the value at position 0 is only defined by the coefficient A0 for a polynomial, the following applies: A0 is equal to the axis position from the previous motion block.
Programming
Scheme:
Axis [ POLY L<Maximum value of polynomial parameter> A0 A1 A2 A3 A4 A5 ]
Example:
X [ POLY L=1.0 A0=0.1 A1=0.2 A2=0.3 A3=0.4 A4=0.5 A5=0.6 ]
The same NC block may contain a mixed programming of linear motions and one* axis-specific polynomial. Active offsets (G54, G92, #PSET...) may be included in the programmed polynomial positions.
No calculation or monitoring of the dynamic is executed for the programmed polynomial axis. Similarly, no command value monitoring of software limits takes place (only actual value specific monitoring of limits).
Syntax: |
<axis_name> [ POLY [ L=.. ] A0=.. [A1=.. A2=.. A3=.. A4=.. A5=.. ] ] |
<axis_name> | Name of the polynomial axis |
POLY | Identifier for the polynomial programming of an axis. Must always be programmed as the first keyword. |
L=.. | Upper limit of the polynomial parameter of the axis to be moved without unit (optional: if not programmed, L has value 1.0, programmed value must be > 0) |
A0=.. | First polynomial coefficient, mandatory (start value of polynomial) |
A1=.. - A5=.. | Second to sixth polynomial coefficient, x, x^2, x^3, x^4, x^5 (optional: default value of non-programmed coefficients is 0) |
Programing Example
Programming an axis polynomial
;C axis, polynomial parameter L = 0.7 A0 = 0.1, A1 = 0.3, A2 = 0.5
Nxx C0.1
Nxx C[POLY L=0.7 A0=0.1 A1=0.3 A2=0.5]
;X axis, polynomial parameter L = 0.3, A0 = 0.2, A1= 0.5
Nxx X0.2
Nxx X[POLY L=0.3 A0=0.2 A1=0.5]
;Simple programming without polynomial parameter (default L1), only A0 coefficient
Nxx X0.2
Nxx X[POLY A0=0.2]
;Mixed programming of linear motion and axis polynomial
Nxx C0.1
Nxx G01 F1000 X100 Y150 C[POLY L=0.7 A0=0.1 A1=0.3 A2=0.5]
;Note: The equals signs between the keyword and the value are optional