Feedforward control (D2)

1.1 IntroductionPAGEREF _Toc307387738 \h2

1.2 Description 3

1.3 Parameters 10

1.3.1 Overview 10

1.3.2 Description 14

1.3.3 Example parameterization of feedforward with additive command values 19

1.3.3.1 Velocity feedforward 19

1.3.3.2 Acceleration feedforward 22

More:

button Introduction

button Description

button Parameters


Introduction

Task

During normal operation without feedforward control, contour errors occur as the result of the following error on curved paths, in particular in a combination of contours with axes of differing dynamics.

The following error and thus also the contour error can be minimised by the use of a feedforward control. In the case of spindles, a feedforward control is necessary above all when tapping threads with an endlessly rotating spindle because, as far as possible, both the contour axes and also the spindle have to follow the specified setpoints without a following error if a good machining result is to be achieved.

The feedforward control of the control system compensates the following error on the basis of the current velocity and the acceleration. By appropriate parameterisation in the axis parameter lists [AXIS] and also n the NC program, the feedforward control can be adapted to the dynamics of the machine or to the required contour accuracy.

Note that the axes may overshoot when feedforward control is activated.

Therefore, parameterise feedforward control conscientiously. The weighting factors in the axis parameter lists and in the NC program must be set correctly.

Applicability

Feedforward control is available for all axis and drive types [AXIS].


Description

Principle

The following error is caused by the control system's velocity, acceleration and jolt delay in the position controller with respect to the calculated command variable in the interpolator. In the interpolator, the feedforward control calculates the theoretical following error tat would result from the current velocity and acceleration in the position controller and, on the basis of this, it determines a velocity setpoint vfeedforward that is added to the position controller's output (Figure 1-1). This additional setpoint can be weighted with a factor.

The expected following errors can be calculated in accordance with the relationship

for constant velocity

and for constant jerk

for constant acceleration. Ta is the mechanical time constant of the drive, Kv the psosition controller gain.

Alternatively the command velocities and accelerations calculated in the CNC control can be transmitted as additve command velocity and torque values to the drive controller and fed into the appropriate control loops as additive command values (see picture 1.2).

Feedforward control modes | On the basis of the cause of the following error, the control system distinguishes between the following feedforward control modes: q Velocity feedforward control and q Acceleration feedforward control. q Jerk feedforward control. Both feedforward control modes can be activated or parameterised independently of one another.
Activation | The P-AXIS-00223 parameter activates feedforward control for each axis or spindle. When the corresponding bits are set, the feedforward modes are selected and further control information is also activated. The feedforward control mode is selected in the NC program.

Weighting

Feedforward control can be weighted with two axis-specific weighting factors. The entire feedforward control is weighted with the P-AXIS-00228 and P-AXIS-00229 parameters.

Acceleration feedforward control can also be weighted with the substitute time constant Ta, which is determined on the basis of the P-AXIS-00225 and P-AXIS-00226 parameters.

Jerk feedforward control can also be weighted with a factor

which is determined with parameters P-AXIS-00337 and P-AXIS-00338.

According to experience, the entire feedforward control can be weighted with a factor within the range of 0.71. At values more than 1, the axis leads and has a detrimental influence on contouring accuracy.

Figure 1-1: Block diagram of conventional feedforward control

Figure 1- 2 : Block diagram of feedforward control with additive command values

Parameterisation for PROFIdrive

In the case of PROFIdrive, the control system currently only supports the telegram 5. PROFIdrive also requires the parameters

q P-AXIS-00092: position sensor increments per motor revolution and

q P-AXIS-00165: time offset of feedforward control setpoints,

which must be set in the axis parameter lists.

In the case of PROFIdrive, with the P-AXIS-00223 parameter it is also possible to select how the calculated feedforward control value is passed on to the drive:

q P-AXIS-00223, bit 9 = 0: The feedforward control value is calculated into the control deviation (XERR  signal No. 25) as a following error.

q P-AXIS-00223, bit 9 = 1: the feedforward control value is included in calculations as the velocity in the velocity setpoint (NSOLL_B  signal No. 7).

SERCOS drives: if, in the case of SERCOS drives, feedforward control is not to be realised in the drive, but in the NC control system, the Kv factor in the axis parameter list must be set equal to the Kv factor of the SERCOS drive (S-0-0104).

Note: In the case of SERCOS drives, feedforward control is realised in the drive itself and is set with the following parameters:

IDN: S-0-0296: Velocity feedforward gain

IDN: S-0-0348: Acceleration feedforward gain

Programming

Feedforward control is programmed in the NC program with the modally active commands G135, G136 and G137 [PROG].

Selection of feedforward control

Feedforward control is explicitly deactivated every time the program is started. Axis group-specific activation of feedforward control is programmed with the NC command G135.

Feedforward control weighting

An axis-specific percentage weighting is assigned to the calculated feedforward control quantities via G136. It is limited for all axes to 100%. The weighting factors are reset to 100% after every program start. If feedforward control is activated or deactivated during the NC program, the weighting factors remain set to the values set by G136. For axes for which no G136 has been programmed, the weighting factor remains set to 100%.

It is also possible to enter selection and weighting of feedforward control in a block.

Cancellation of feedforward control

G137 is used to deactivate feedforward control a specific axis group.

Deactivating individual axes

In the case of axes for which no feedforward control is to be implemented after global selection with G135, a percentage weighting of 0% must be specified with G136.

Example

G135 (Selection of feedforward control)

(für alle Achsen 100%)

G136 X80 Y95 Z0 (Weighting: in this case the Z axis)

(has no feedforward control)

Spindle parameterisation

Feedforward control for spindles also is programmed in the NC program with the modally active commands G135, G136 and G137 [PROG].

Feedforward control can be programmed for a specific spindle with these commands. The commands must not be used simultaneously with other spindle-specific commands.

Example

S[G135] (Feedforward control activation for S)

S[G136=80] (Feedforward control weighting in %)

S[G137] (Feedforward control deactivation)

S2[G135 G136=90] (Activation with 90% weighting for S2)

S2[G136=0] (Weighting changed to 0%)

S1[G135] (Activation with 100% default )

(weighting for S1)

Delay

For calculation of the feedforward values, there is a delay of at least one clock pulse between the interpolator and the position controller.

Effects of the delay during measurement travel

In the worst case, an error can be produced during measurement travel because the interpolator, which monitors the stroke of the measuring probe, ignores the distance components in the block buffer between the interpolator and the position controller. This can be prevented by increasing the actual stroke of the measurng probe in the P-AXIS-00086 (hub_messtaster) parameter.

Example

For a simple travel movement, the following figures show the measured following errors with and without velocity and acceleration feedforward control. Figure 1-3 shows a clear following error during the entire travel movement.

When velocity feedforward control is activated, following error peaks occur only in the acceleration phases; in the constant-velocity range, the following error is compensated entirely by feedforward control (Figure 1-4). The following error can be reduced further in the acceleration phases by means of additional acceleration feedforward control (Figure 1-5 ).

Figure 1-3: Following error without feedforward control

Figure 1-4: Following error with velocity feedforward control

Figure 1-5: Following error with velocity and acceleration feedforward control


Parameters

More:

button Overview

button Description

button Example parameterization of feedforward with additive command values


Overview

Constant | Description
V_SATZ_ANZ | Maximum number of buffered blocks

ID | Parameter | Description
P-AXIS-00092 | incr_per_rev | PROFIdrive: position sensor increments per motor revolution
P-AXIS-00165 | shift_time | PROFIdrive: time offset of feedforward control setpoints
P-AXIS-00205 | v_reso_denom | Normalization of the velocity denominator
P-AXIS-00206 | v_reso_num | Normalization of the velocity numerator
P-AXIS-00207 | v_time_base | Time base for normalization of velocity
P-AXIS-00223 | vorsteuerung | Feedforward control mode
P-AXIS-00225 | vs_a_faktor | Substitute time constant for acceleration feedforward control, numerator
P-AXIS-00226 | vs_nenner | Substitute time constant for acceleration feedforward control, denominator
P-AXIS-00228 | vs_v_faktor | Weighting factor for feedforward control, numerator
P-AXIS-00229 | vs_v_nenner | Weighting factor for feedforward control, denominator
P-AXIS-00325 | torque_scale_num | Numerator scaling factor for torque
P-AXIS-00326 | torque_scale_denom | Denominator scaling factor for torque
P-AXIS-00337 | jerk_fact_nom | Weighting factor for jerk feedforward control, numerator
P-AXIS-00338 | jerk_fact_nom | Weighting factor for jerk feedforward control, denominator
P-AXIS-00389 | velocity_delay_time | Delaytime for velocity feedforward
P-AXIS-00390 | acceleration_delay_time | Delaytime for acceleration feedforward
P-AXIS-00391 | load | Motorload
P-AXIS-00392 | acc_reference_value | Scaling factor for acceleration feedforward


Description

P-AXIS-00092 | Position sensor increments per motor revolution
Parameter | getriebe[i].incr_per_rev
Description | The number of position sensor increments per motor revolution is specified with this parameter. The value used internally in the NC kernel (after evaluation of the value transferred in the bus telegram with this parameter) must be specified.
Data type | UNS32
Data range | 0 = P-AXIS-00092 = MAX(UNS32)
Dimension | -
Default | -
Remarks | This parameter applies to PROFIDRIVE drives only

P-AXIS-00165 | Time offset of feedforward control setpoints
Parameter | vorsteuer.shift_time
Description | With this parameter you can set a time offset in NC cycles between output of the setpoints and output of the calculated feedforward control quantities. In the case of a value above zero, the feedforward control values are output before the associated setpoint. In this way, you can optimise the behaviour of the axis when using feedforward control.
Data type | UNS16
Data range | 0 = P-AXIS-00165 = V_SATZ_ANZ -1
Dimension | Cycles
Default | -
Remarks | This parameter applies to PROFIdrive only

P-AXIS-00205 | Normalization of the velocity denominator
Parameter | antr.v_reso_denom
Description | Normalization of the velocity denominator.
Data type | UNS32
Data range | 0 < v_reso_nom < MAX(UNS32)
Dimension | translatory: um | rotatory: 0,001°
Default | 36
Remarks |

P-AXIS-00206 | Numerator scaling factor for torque
Parameter | antr.v_reso_num
Description | Numerator scaling factor for torque.
Data type | UNS32
Data range | 0 < v_reso_nom < MAX(UNS32)
Dimension | translatory: Increments | rotatory: Increments
Default | 1
Remarks |

P-AXIS-00207 | Time base for normalization of velocity
Parameter | antr.v_time_base
Description | With this parameter the timebase for velocity normalization is set. Possible values are: 0 : per minute 1 : per second 2 : per interpolator cycle
Data type | UNS16
Data range | 0 .. 2
Dimension | translatory: - | rotatory: -
Default | 0 (per minute)
Remarks |

P-AXIS-00223 | Feedforward control mode
Parameter | vorsteuer.vorsteuerung
Description | With this parameter, various modes can be set for feedforward control.
Data type | UNS16
Data range | 0x0000 | No feedforward control
 | 0x0001 | Velocity feedforward control
 | 0x0002 | Acceleration feedforward control
 | 0x0100 | PROFIdrive: in the Profidrive telegram 5, the calculated feedforward control value is included as the velocity in the velocity setpoint (NSOLL_B  signal No. 7). The feedforward control value is calculated into the control deviation (XERR  signal No. 25) as a following error if this flag is not activated.
Dimension | -
Default | -
Remarks | -

P-AXIS-00225

Substitute time constant for acceleration feedforward control, numerator

Parameter

vorsteuer.vs_a_faktor

Description

This parameter describes the numerator of the mechanical time constant TA of the drive, which is modelled as a delay element of the first order. The drive has the following transfer function in the Laplace range:

In the case of the acceleration feedforward control, the acceleration command variable is weighted with this mechanical substitute time constant..

..of the drive.

Data type

SGN32

Data range

0 = P-AXIS-00225 = MAX(SGN32)

Dimension

μ s

Default

-

Remarks

-

P-AXIS-00226

Substitute time constant for acceleration feedforward control, denominator

Parameter

vorsteuer.vs_a_nenner

Description

This parameter describes the denominator of the mechanical time constant TA of the drive, which is modelled as a delay element of the first order. The drive has the following transfer function in the Laplace range:

In the case of the acceleration feedforward control, the acceleration command variable is weighted with this mechanical substitute time constant..

..of the drive.

Data type

SGN32

Data range

0 = P-AXIS-00226 = MAX(SGN32)

Dimension

1

Default

-

Remarks

-

P-AXIS-00228 | Weighting factor for feedforward control, numerator
Parameter | vorsteuer.vs_v_faktor
Description | This parameter describes the numerator of the velocity and acceleration feedforward weighting factor.
Data type | SGN32
Data range | 0 = P-AXIS-00228 = MAX(SGN32)
Dimension | -
Default | -
Remarks | According to experience, the weighting factor should be set within the range of 0.7  1. At values more than 1, the axis leads and has a detrimental influence on contouring accuracy.

P-AXIS-00229 | Weighting factor for feedforward control, denominator
Parameter | vorsteuer.vs_v_nenner
Description | This parameter describes the numerator of the velocity and acceleration feedforward weighting factor.
Data type | SGN32
Data range | 0 = P-AXIS-00229 = MAX(SGN32)
Dimension | -
Default | -
Remarks | According to experience, the weighting factor should be set within the range of 0.7  1. At values more than 1, the axis leads and has a detrimental influence on contouring accuracy.

P-AXIS-00325 | Numerator scaling factor for torque
Parameter | antr. torque_scale_num
Description | Numerator of the torque scaling factor for the additional torque command value to the drive. The factor is set up as a rational factor. This factor is the value that has to be output to the drive in order to deliver its nominal torque.
Data type | UNS32
Data range | 0 < v_reso_nom < MAX(UNS32)
Dimension | translatory: Increments | rotatory: Increments
Default | 1
Remarks |

P-AXIS-00326 | Denominator scaling factor for torque
Parameter | antr.torque_scale_denom
Description | Denominator of the torque scaling factor for the additional torque command value to the drive. The factor is set up as a rational factor. This factor is the value that has to be output to the drive in order to deliver its nominal torque.
Data type | UNS32
Data range | 0 < torque_scale_denom MAX < (UNS32)
Dimension | translatory: - | rotatory: -
Default | 1
Remarks |

P-AXIS-00337 | Weighting factor for jerk feedforward control, numerator
Parameter | vorsteuer.jerk_fact_nom
Description | With this parameter the numerator of the scaling factor for jerk feedforward is set. The scaling factor for jerk feedforward is defined as:
Data type | UNS32
Data range | 0 ≤ P-AXIS-00337 ≤ MAX(UNS32)
Dimension | -
Default | -
Remarks | -

P-AXIS-00338 | Weighting factor for jerk feedforward control, denominator
Parameter | vorsteuer.jerk_fact_denom
Description | With this parameter the denominator of the scaling factor for jerk feedforward is set. The scaling factor for jerk feedforward is defined as:
Data type | UNS32
Data range | 0 ≤ P-AXIS-00338 ≤ MAX(UNS32)
Dimension | -
Default | -
Remarks | -

P-AXIS-00389

Delaytime for velocity feedforward

Parameter

vorsteuer.velocity_delay_time

Description

If velocity feedforward via an additive velocity command value is activated, with this parameter the output of the velocity feedforward value can be delayed with respect to the command position.

The dimension of the delay time is in us, the maximum delay is one interpolator cycle..

The optimal value for this parameter depends on the used drive controller, it has to be questioned from the drive controller manufacturer.

Data type

UNS16

Data range

0 < Interpolator cycle time

Dimension

us

Default

0

Remarks

The maximum delay time that can be set up is one interpolator cycle. If a bigger delay time is set up an error message 70349 (seee P-ERR-70349) is output and the delay time is set to zero.

P-AXIS-00390

Delaytime for acceleration feedforward

Parameter

vorsteuer.acceleration_delay_time

Description

If acceleration feedforward via an additive torque command value is activated, with this parameter the output of the acceleration feedforward value can be delayed with respect to the command position.

The dimension of the delay time is in us, the maximum delay is one interpolator cycle.

The optimal value for this parameter depends on the used drive controller, it has to be questioned from the drive controller manufacturer.

Data type

UNS16

Data range

0 < Interpolator cycle time

Dimension

us

Default

0

Remarks

The maximum delay time that can be set up is one interpolator cycle. If a bigger delay time is set up an error message 70348 (seee P-ERR-70348) is output and the delay time is set to zero.

P-AXIS-00391 | load inerta
Parameter | getriebe[].load
Description | To set up acceleration feedforward with additive torque command value the total load inerta of the motor has to be configured here. The total load inerta is the inerta of the motor itself and the inerta of the load related to the motor shaft. In case of a translatory moved axis the moved masses have to be converted in an equivalent inerta related to the motor shaft.
Data type | REAL64
Data range | 0 < P-AXIS-00391 <= MAX_REAL64
Dimension | kg (Linear motor), kg * m2 (rotatory Motor)
Default | 1e-6
Remarks | -

P-AXIS-00392 | Scaling factor for acceleration feedforward
Parameter | antr.acc_reference_value
Description | This parameter is used for the scaling of the additive torque command if acceleration feedforward with additive command values is used. It has to be entered the nominal torque of the motor.
Data type | REAL64
Data range | 0 .. MAX_REAL64
Dimension | Nm (N for linear motor)
Default | 1
Remarks | -


Example parameterization of feedforward with additive command values

More:

button Velocity feedforward

button Acceleration feedforward


Velocity feedforward

Configuration

In order to activate velocity feedforward in P-AXIS-00223 velocity feedforward and the output of the velocity feedforward value as additional command value has to be set up.

vorsteuer.vorsteuerung 0x101 #0x001: Activation velocity feedforward
#0x100: Output as add. vel. command value

In the cyclic process date the additive command value has to be configured.

If output of velocity feedforward as additive velocity command value is configured and no additive command velocity value is configured in the cyclic process data an error message 70350 (see P-ERR-70350) is output.

Velocity scaling

Now velocity scaling has to be set up with the parameters P-AXIS-00205, P-AXIS-00206 and P-AXIS-00207.

In parameter P-AXIS-00205 the resulting velocity of the axis (under consideration of all transmission elements such as gearbox ratios and leadscrew pitch) has to be entered when the value of P-AXIS-00206 is output on the velocity interface.

Example:

For a SERCOS-Drive with a leadscrew pitch of 10 mm/rev and default scaling of the velocity command values (10-4 U/min) an output of 10000 as velocity command value results in a translatory velocity of the axis of 10 mm/min ( (10000 * 10-4U/min * 10 mm/U). So the parameters P-AXIS-00205, P-AXIS-00206 and P-AXIS-00207 have to be set to the following values.

antr.v_time_base 0 #Timebase per Minute
antr.v_reso_num 10000 #Outputvalue to drive
antr.v_reso_denom 10000 #Resulting axis velocity in um/v_time_base

If an additional gearbox with a gearbox ratio of 3 (nmotor/nload) is considered, for the same output value the translatory axis velocity is reduced to 3,333 mm/min (10000 * 10-4U/min / i * 10 mm/U). This results in the following values for P-AXIS-00206 and P-AXIS-00207:

antr.v_time_base 0 #Timebase per Minute
antr.v_reso_num 10000 #Outputvalue to drive
antr.v_reso_denom 3333 #Resulting axis velocity in um/v_time_base

Additionally the output of the velocity feedforward value can be delayed compared to the position command value. this delay can be set up with parameter P-AXIS-00389.

The maximum delay time that can be set up is one interpolator cycle. If a bigger delay time is set up an error message 70349 (seee P-ERR-70349) is output and the delay time is set to zero.

The resulting parameter set is:

vorsteuer.vorsteuerung 0x101 #0x001: Activation velocity feedforward
#0x100: Output as add. vel. command value
vorsteuer.velocity_delay_time 150 # Delay velocity feedforward against
# position command value in us
antr.v_time_base 0 #Timebase per Minute
antr.v_reso_num 10000 #Outputvalue to drive
antr.v_reso_denom 3333 #Resulting axis velocity in um/v_time_base


Acceleration feedforward

Configuration

In order to use acceleration feedforward in P-AXIS-00223 acceleration feedforward and output of acceleration feedforward as additional command value has to be configured:

vorsteuer.vorsteuerung 0x202 #0x002: Activation acceleration feedforward
#0x200: Output as additive torque command
#value

The additve torque/current command value has to be configured in the cyclic process data.

If output of acceleration feedforward as additive command value is configured and there is no additive torque/current command value configured in the cyclic process data error message 70351 (see P-ERR-70351) is output.

Torque calculation

When acceleration feedforward with an additive torque/current command value is used the required torque of the motor is calculated with the formula

This torque is scaled in the motor format and output to the drive.

For the calculation of the angular acceleration it is neccessary to know the mechanical configuration of the axis. Because of this it is necessary to configure the path resolution of the axis with the parameters P-AXIS-00092, P-AXIS-00363, P-AXIS-00362, P-AXIS-00334 and P-AXIS-00223.

When one of the parameters P-AXIS-00363 and P-AXIS-00362 has asigned a value unequal one path resolution is calculated according to the formula:

Parameter set

For an axis with a motor encoder resolution of 220 increments per Revolution, a gearbox ratio of 3 and a spindle pich of 5 mm/rev the following parameter set follows:

antr.feed_const_num 50000 #feedconstant 5mm per revolution
antr.feed_const_denom 1 #
getriebe[].incr_per_rev 10485676 #2**20 increments per motor
#revolution
getriebe[].wegaufz 3 #gearbox ratio: input
#revolutions
getriebe[].wegaufn 1 #gearbox ratio: output
#revolutions

As a further parameter total motor load (Jt) is needed. Jt consists of the sum of the moment of inertia of the motor and the motor related moment of inertia of the load. The resulting value in dimension kg*m2 has to be inserted in parameter P-AXIS-00391.

getriebe[].load 0.48 #Total motor load 0.48 kg*m**2

With the available parameters it is possible to calculate the required motor torque.

To calculate the command value that has to be ouput to the drive the following parameters are neccessary:

The nominal torque of the motor as a reference value for torque scaling in P-AXIS-00392 and the torque scaling factor in parameters P-AXIS-00325 and P-AXIS-00326.

The value for P-AXIS-00392 can be extracted from the motor data sheet:

antr.acc_reference_value 0.45 #nominal torque in Nm

For parameters P-AXIS-00325 and P-AXIS-00326 the value has to be entered, which has to be output to the motor in order to deliver its nominal torque. This value depends on the torque scaling that is set up in the drive.

If for example percentual weighting in 0.1% of the maximum current of the drive amplifier is used, for a maximum current of 3.16 A and a nominal current of 1.58 A parameters P-AXIS-00325 und P-AXIS-00326 result in:

Possible values for P-AXIS-00325 and P-AXIS-00326 would be:

antr.torque_scale_num 500
antr.torque_scale_denom 1

Additionally the output of the acceleration feedforward value can be delayed with respect to the command position. This delay can be set up with parameter P-AXIS-00390.

The maximum delay time that can be set up is one interpolator cycle. If a bigger delay time is set up an error message 70348 (seee P-ERR-70348) is output and the delay time is set to zero..

With parameters P-AXIS-00225 and P-AXIS-00226 the feedforward value can be weighted. In the following example the weighting factor is 1.2.

vorsteuer.vs_a_faktor 12 # Weighting acceleration feedforward
# numerator
vorsteuer.vs_a_nenner 10 # Weighting acceleration feedforward
# denominator

So the resulting, complet parameter set is:

vorsteuer.vorsteuerung 0x202 #0x002: Activation acceleration feedforward
#0x200: Output as additive torque command value
antr.feed_const_num 50000 #feedconstant 5mm per revolution
antr.feed_const_denom 1 #
getriebe[].incr_per_rev 10485676 #2**20 increments per motor revolution
getriebe[].wegaufz 3 #gearbox ratio: input revolutions
getriebe[].wegaufn 1 #gearbox ratio: output revolutions
antr.acc_reference_value 0.45 #nominal torque in Nm
antr.torque_scale_num 500
antr.torque_scale_denom 1
vorsteuer.acceleration_delay_time 150 # Delay acceleration feedforward against
# position command value in us
vorsteuer.vs_a_faktor 12 # Weighting acceleration feedforward numerator
vorsteuer.vs_a_nenner 10 # Weighting acceleration feedforward denominator