Faulty position initialisation in case of ABS encoders with different motor/encoder mounting position and if an offset is entered under C3012

Which products are affected?
ESP-SPAC-POS1 (Software Package Positioner V3.1)

What happens?
The actual value integrator (g_dnActualPositionReal) is loaded with a wrong position value when switching on the PLC.

When does the problem occur?
This restriction only occurs with applications in which a multi-turn absolute value encoder  (SCM60/70, SRM50 or other absolute value encoders with Stegmann Hiperface interface) are used as position feedback. The problem occurs if, in addition, the offset of the reference measuring system is set unequal zero (C3012 <> 0) and the settings for the motor/encoder mounting position differ (C3000 <> C3001). In this case the absolute position in the initialisation phase is erroneously negated.

Possible diagnostics?
The failure is understandable if the offset of the reference measuring system is written with a value unequal zero (e. g. C3012 = 100000) and if the home position is set with g_bHomePositionSet:=TRUE. Then the current position g_dnActualPositionReal indicates the value from C3012. After switching off and on the PLC control voltage the absolute value encoder must read the position value and the position integrator must be reset. It can be observed that the integrator is loaded with the negated value of the offset set before (g_dnActualPositionReal = -100000).

Short-term measures/recommendations?
The initialisation of the absolute position cannot be influenced directly when switching on. However, it is possible to recalculate the correct position after switching on and to set the integrator. The position sequences can be started without any problems by applying this initial value.

In principle the correct position can be calculated and set as follows:
  • Setting the Boolean 'Condition for calculating the position' in the PLC_ColdStart(PRG)
  • Before starting the calculation, it should be waited until the template has left the 'Init' state and changed to the 'Stand By' state (g_byOperationState=0)
  • Resetting the home position (g_bHomePositionReset:=TRUE) and inhibiting the drive controller
  • Calculating the new current position according to the following formula: ActPosNeu = 2 * (C3012 in increments) - MCTRL_dnPos_p
  • Writing the reference measuring offset (3012) with the calculated value via L_ParWrite
  • Saving the new offset selection by setting C0003 temporarily to 1 via an L_ParWrite
  • Setting the home position (g_bHomePositionSet:=TRUE) and enabling the drive controller subsequently
  • Resetting the 'condition for calculating the position'

Remarks:
This additional position initialisation process takes some program cycles. It is not allowed to enable the actual user program before the initialisation process has expired. This can be implemented through interlocking via the 'condition for calculating the position'.

Caution in case of active loads!
Since the drive controller must be inhibited to set the home position, the motor cannot generate torque for this short period of time. Usually this is not required since a motor with an active load is slowed down mechanically when being switched on.

The limit values to be entered under C3012 are +/-214000 units. Since only this code can be used to transfer the calculated position the usable display range of the position is restricted.

Evaluation:
It is very improbable that the conditions required for producing the failure occur at the same time. The behaviour occurs in a reproducible manner whenever switching on the PLC. The function restriction can already be detected during commissioning. The short-term measure described has already been used successfully. However, due to the limitation of the traversing range the short-term measure described cannot be used for every application.

URL for linking this AKB article: https://www.lenze.com/en-de/go/akb/200413373/1/
Contact form