Hi,
I've an application as follows:
ControlLogix L62
Machine with 7 Servos running from Kinetix 6000.
An encoder connected to the auxiliary input on one of the Kinetix drives.
This encoder returns a 0-360 deg rotation position.
I'm using the LIM instruction, with the encoder feedback as input, to activate various flags controlling cylinders.
A problem I'm experiencing is as follows: Sometimes when the machine stops, the encoder value cycles from X to X minus a value, and back again. (The difference is very small)
Ex: 330 to 329.001 to 330
If I'm firing cylinders at 330, I end up with 'chattering cylinders'. i.e. the cylinders keep pulsing on/off.
A solution I'm using to overcome this issue is as follows:
IF Encoder_RawValue > Encoder_WorkValue THEN
Encoder_WorkValue = Encoder_RawValue
ELSE
IF Encoder_WorkValue > Encoder_RawValue + Hysteresis_Value THEN
Encoder_WorkValue = Encoder_RawValue 'This covers 360 rollover (Hysteresis_Value = 1)
ENDIF
This still has the problem when the machine stops at 0 on the encoder (bounce from 0 to 359.999 to 0)
I overcome this by using a LIM on the Encoder_RawValue between 0 and 359.5. (I'm sacrificing the last 0.5 deg)
I'm not happy with this solution as it seems a bit dodgy for some reason.
The machine is not high speed (approx 60 rpm) and is one direction only.
Is there a better way to overcome this problem?
I'd appreciate any advice or help you guys can give.
Thanks,
Tim
I've an application as follows:
ControlLogix L62
Machine with 7 Servos running from Kinetix 6000.
An encoder connected to the auxiliary input on one of the Kinetix drives.
This encoder returns a 0-360 deg rotation position.
I'm using the LIM instruction, with the encoder feedback as input, to activate various flags controlling cylinders.
A problem I'm experiencing is as follows: Sometimes when the machine stops, the encoder value cycles from X to X minus a value, and back again. (The difference is very small)
Ex: 330 to 329.001 to 330
If I'm firing cylinders at 330, I end up with 'chattering cylinders'. i.e. the cylinders keep pulsing on/off.
A solution I'm using to overcome this issue is as follows:
IF Encoder_RawValue > Encoder_WorkValue THEN
Encoder_WorkValue = Encoder_RawValue
ELSE
IF Encoder_WorkValue > Encoder_RawValue + Hysteresis_Value THEN
Encoder_WorkValue = Encoder_RawValue 'This covers 360 rollover (Hysteresis_Value = 1)
ENDIF
This still has the problem when the machine stops at 0 on the encoder (bounce from 0 to 359.999 to 0)
I overcome this by using a LIM on the Encoder_RawValue between 0 and 359.5. (I'm sacrificing the last 0.5 deg)
I'm not happy with this solution as it seems a bit dodgy for some reason.
The machine is not high speed (approx 60 rpm) and is one direction only.
Is there a better way to overcome this problem?
I'd appreciate any advice or help you guys can give.
Thanks,
Tim