FC_OverloadDetectionSetLinear - General Information
Type: |
Function |
Available as of: |
SystemInterface_1.36.2.1 |
Versions: |
Current version |
Stop the axis due to overload after the expected force was exceeded for a given time.
This function activates overload monitoring in the axis i_stAxisId.
Overload detection is used to monitor the deviation of the actual force from the expected force (feed forward). When the overload detection is enabled, the drive is stopped. The axis must be parameterized so that the expected mass inertia is calculated.
i_lrForce indicates the threshold of the deviation from the expected force. The deviation can be detected via the FeedbackCurrent. The FeedbackCurrent can be converted into the deviation from the expected force using the ForceConstant.
Force deviations are caused for instance by:
oFriction (if not taken into account in the parameters StaticFrictionLinear and ViscousFrictionLinear)
oExternal mass inertias (for example, moving against limit stop)
oVariable forces of mass inertia
oOscillations in the system (for example, mechanical resonances)
oTransient response of the controller (especially at strong jerks)
NOTE: LoadInertiaLinear must be correctly specified in the PLC configuration. It is also assumed that the mass inertia is constant.
Monitoring is only active in a specific position range. This position range is defined by i_lrLowLimit (low position limit) and i_lrHighLimit (high position limit).
If the threshold i_lrForce is exceeded within the position range, an internal timer is incremented. If the threshold is undershot during the time i_uiOverloadTime, the internal timer is decremented. If the internal timer reaches the value i_uiOverloadTime, the monitoring system is enabled. The following diagram illustrates this behavior.
If an overload occurs, the position of the axis i_stAxisId is kept in an internal parameter after the time i_uiOverloadTime has elapsed. This position is used as reference position. The drive remains in position control.
The state of the monitoring system can be read using the function FC_OverloadDetectionGetState.
The threshold i_lrForce is exceeded if the overall force is greater than the expected force plus the parameterized threshold of the deviation.
Current oscillation and high noise in the current signal (FeedbackCurrent) may cause mistripping. You can avoid this by using smooth motions.
NOTE: Processing this function typically takes 10 ms as parameters are transferred to the axis via the Sercos service channel. There must be a one-time increase in the times for the cycle check of the task in which the function is executed. For example FC_CycleCheckTimeSet(500, 2).
Input |
Data type |
Description |
---|---|---|
i_stAxisId |
ST_LogicalAddress |
Logical address of the axis |
i_lrForce |
LREAL |
Maximum permitted deviation from the expected mass inertia (in N) |
i_lrLowLimit |
LREAL |
Lower position limit (in user-defined units) |
i_lrHighLimit |
LREAL |
Upper position limit (in user-defined units) |
i_uiOverloadTime |
UINT |
Time after which the axis is stopped in an overload case (in ms) |
Data type |
Description |
---|---|
DINT |
0: OK -1: Logical address of the servo amplifier or motor invalid -2: mass inertia exceeds max. mass inertia -3: LowLimit greater or equal to HighLimit -4: Value FC_OverloadTime is out of the range -5: Firmware version of the servo amplifier is not supported |
The following program example moves an axis with two positioning instructions. Force monitoring (FC_OverloadDetectionSetLinear) is activated during the procedure.
PROGRAM PLC_PRG
VAR
lState: DINT:=1;
lResult: DINT;
END_VAR
CASE lState OF
1:
FC_CycleCheckTimeSet(100, 200);
FC_ControllerEnableSet(Axis.stLogicalAddress);
lResult:=FC_OverloadDetectionSetLinear(i_stAxisId:= Axis.stLogicalAddress, i_lrForce:=0.08, i_lrLowLimit:=10, i_lrHighLimit:=350, i_uiOverloadTime:=500);
lState:=lState+1;
2:
IF Axis.AxisState = 3 THEN
FC_PosStartSmooth(Axis.stLogicalAddress,0, 250, 0, 1000, 1000, 0, 0, ET_PosMode.Absolute, 0);
lState:=lState+1;
END_IF;
3:
IF Axis.AxisState = 3 THEN
FC_PosStartSmooth(Axis.stLogicalAddress,360, 250, 0, 1000, 1000, 0, 0, ET_PosMode.Absolute, 0);
lState:=2;
END_IF;
END_CASE;
The figure shows the current increase (or force increase) and the triggering of the diagnostic message (vertical dotted line) when there is a rise in current and an increase in force.