Leadscrew error compensation
Compensation process
Leadscrew error compensation (referred to below as SSFK) is an axial correction. The position setpoint of the compensated axis is changed by a compensation value based on position controller timing, in order, for instance, to compensate for leadscrew errors. This correction is cancelled by computation again for the measured actual position values so that the correction performed does not appear in the display data of the control system.
Compensation table
The compensation values are taken from a table in which the characteristic of the compensation curve as a function of the axis position is saved. The axis positions entered in the table are designated as interpolation points and the related values of the compensation curve are referred to as compensation values. The compensation value is subject to linear interpolation for axis positions lying between interpolation points. The table of compensation values is referred to below as compensation table.
Bilateral/ unilateral SSFK
It is possible to state a separate compensation table for each movement direction of an axis. This method of compensation is referred to as bilateral compensation. If a table is used for both directions of movement of one axis, we speak of unilateral compensation.
The compensation tables are saved axis-specifically in a file (compensation value list).
The axis dynamics are ignored on output of the compensation values.
The diagram below shows a compensation value curve by way of example. The significance of the parameters used in the diagram is explained later.

Characteristics
This functionality features the following characteristics:
- The same interpolation point positions must be used for both value tables if using bilateral compensation.
- It is possible to define a compensation table only for a part-traversing range of an axis. The value at the relevant end of the table is reused for axis positions outside the compensation table.
- There may be any compensation value not equal to zero at the reference point.
- The spacing between interpolation points in the value tables may be selected as either equidistant or as non-equidistant.
Action
SSFK acts under the following preconditions.
- SSFK has been activated for the axis.
- A compensation table must be provided to the control system for the axis.
- The axis has been referenced or used as an absolute measuring system.
Activation
The SSFK is activated for the specified axis with P-AXIS-00175 in the axis parameter list [AXIS]:
Variable name | Type | Significance |
---|---|---|
lr_param.ssfk | BOOLEAN | 0: no SSFK |
Example
Excerpt from axis parameter list:
:
lr_param.ssfk 1
:
General data of SSFK-table
The general data of the list body is used to program the mode of operation of compensation, e.g. unilateral or bilateral. Adding ssfk turns the general data into kw.ssfk.* It contains following elements:
Variable name | Type | Significance |
---|---|---|
unit | BOOLEAN | Unit of the position entries |
interval | SGN32 | Spacing between interpolation points of the compensation table if using equidistant interpolation points. If this parameter is = 0, the position of each interpolation point must be specified separately |
kw_startpos | SGN32 | Start position of the compensation table |
kw_nr_max | SGN32 | Number of entries in the compensation table. |
bilateral | BOOLEAN | 0: Unilateral compensation |
modulo | BOOLEAN | Compensation is performed for a modulo axis. |
Compensation values of SSFK
The compensation values are specified in the tablekw.ssfk.table[i].*.
The field index i may assume values 0 tokw.ssfk.kw_nr_max 1.
The compensation values are specified as absolute position errors in the unit specified inkw.ssfk.(metric in 0.1 µm or incremental).
where: ith compensation value
ith setpoint (interpolation point in the compensation table)
ith actual value (measured with reference gauging device)
The table contains the following elements:
Variable name | Type | Significance |
---|---|---|
pos | SGN16 | Compensation value in the case of movement in positive direction respectively compensation value for unilateral compensation. |
neg | SGN16 | Compensation value in the case of movement in negative direction, not used for unilateral compensation. |
setpoint | SGN32 | Setpoint of the axis (programmed value). Only for non-equidistant interpolation points. |
If using bilateral compensation, the position errors in the case of movement in positive direction must be entered in entry pos. The specification of the interpolation points applies to both directions.
If using unilateral compensation, the position errors must also be entered in entry pos and there is no neg entry.
By contrast with specification of individual interpolation points for the compensation table, it is also possible to use a system of fixed increments. In this case, specification of the interpolation points in variable setpoint can be omitted.
In order to use a fixed interpolation point increment system, the increment of the interpolation point increment system must be specified in variable kw.ssfk.intervall. The interpolation points are then computed internally from the start position (kw.ssfk.kw_startpos) and the increment.
Special features applicable to modulo axes
If a compensation table is configured for a modulo axis (kw.ssfk.modulo = 1), a "modulo transition" also occurs in the compensation table at the modulo transition of the axis position.
This can be used to compensate for position errors caused by gears or transmissions for instance.
The following special aspects must be noted:
- The position values of the first and last entry in the compensation list must be the same.
- The number of compensation values is equal to the number of entries in the compensation value table here as well.