FB_HomeForce - General Information
Type: |
Function block |
Available as of: |
V1.3.4.0 |
Inherits from: |
- |
Implements: |
- |
Homing a linear axis to a limit stop
A linear axis i_ifDrive is moved to the homing position. The axis is moved across the distance i_lrMaxTravel and while doing so its maximum applied force is monitored. If the applied force exceeds a value of i_lrMaxForce N for a period of i_diForceTime ms, the axis is moved back by i_lrOffset, stopped and set to the position i_lrHomePosition.
Two modes are supported (input i_etMode) for homing.
Information on executing asynchronous methods can be found here.
Input |
Data type |
Description |
---|---|---|
i_xEnable |
BOOL |
A rising edge FALSE -> TRUE activates the POU, a falling edge TRUE -> FALSE deactivates the POU. A deactivated POU does not execute any actions. |
i_ifDrive |
IF_Drive |
Input for the axis that shall be controlled. |
i_lrMaxForce |
LREAL |
Force at which the homing point is detected. At the same time the motion of the axis is limited to this force. |
i_diForceTime |
DINT |
Period of time in ms, during which the force has to be applied for the homing point to be classified as valid. |
i_lrLowLimit |
LREAL |
Lower limit of the position (relative to the start position), at which the torque signal is valid. |
i_etMode |
Reference mode oPosDirectionMaxForce = positive direction until MaxForce is reached. oNegDirectionMaxForce = negative direction until MaxForce is reached. |
|
i_lrOffset |
LREAL |
Positioning that is being executed when the homing point has been reached. The offset should be preset in the opposite direction to “Moving to Stop”. |
i_lrMaxTravel |
LREAL |
Maximum distance for searching for the stop. It is calculated by means of the entered value. |
i_lrHomePosition |
LREAL |
Position of the axis after finishing homing |
i_lrVel |
LREAL |
Velocity in units/s. (0< i_lrVel< Drive.MaxVel) |
i_lrAcc |
LREAL |
Acceleration Unit/s2. (0< i_lrAcc< Drive.MaxAcc) |
i_lrDec |
LREAL |
Deceleration in units/s2. (0< i_lrDec< Drive.MaxAcc) |
i_lrJerk |
LREAL |
Jerk (change of acceleration or deceleration) in units/s3. i_lrJerk >> 0. |
i_xStart |
BOOL |
Starts referencing. |
Output |
Data type |
Description |
---|---|---|
q_xActive |
BOOL |
TRUE: The POU is active and has to be executed further. FALSE: The POU is inactive. |
q_xReady |
BOOL |
TRUE: The POU is ready to operate and can accept user commands. FALSE: The POU is not ready to accept user commands. |
q_etDiag |
General, library-independent statement on the diagnostic. A value not equal to ET_Diag.Ok corresponds to an error message. |
|
q_etDiagExt |
POU-specific output on the diagnostic. q_etDiag = ET_Diag.Ok -> Status message q_etDiag <> ET_Diag.Ok -> Error message |
|
q_sMsg |
STRING[80] |
Event-triggered message which gives more detailed information on the diagnostic state. |
q_lrPosition |
LREAL |
Axis reference position. |
q_xMotionInstructionActive |
BOOL |
TRUE: The axis is processing a motion command. The output is also set if the motion command defines that the axis is at stand still, e.g. due to a standing master. |
q_xHomeOk |
BOOL |
The axis stops at the homing position. |
q_etDiag |
q_etDiagExt |
Enumeration value |
Description |
---|---|---|---|
OK |
9 |
The POU is disabled. |
|
OK |
222 |
Homing has been performed. |
|
OK |
4 |
The POU is being initialized. |
|
OK |
5 |
Waiting for starting command. |
|
OK |
8 |
Waiting until the POU is deactivated. |
|
OK |
313 |
Wait until the maximum force has been reached. |
|
ControllerConditionInvalid |
100 |
The controller is not supported. |
|
DriveConditionInvalid |
10 |
The drive is not ready for motion commands. |
|
ExecutionAborted |
290 |
Init has not been completed yet. |
|
ExecutionAborted |
297 |
A cold start of the controller is required |
|
ExecutionAborted |
289 |
No asynchronous task has been generated. |
|
HomingFailed |
315 |
MaxForce has not been reached. |
|
InputParameterInvalid |
12 |
Acc is outside the valid range. |
|
InputParameterInvalid |
288 |
The value of IF_Async is invalid. |
|
InputParameterInvalid |
13 |
Dec is outside the valid range. |
|
InputParameterInvalid |
3 |
The connected drive is invalid. |
|
InputParameterInvalid |
14 |
Jerk is outside the valid range. |
|
InputParameterInvalid |
314 |
MaxForce is outside the valid range. |
|
InputParameterInvalid |
111 |
The Mode is indeterminable. |
|
InputParameterInvalid |
11 |
Vel is outside the valid range. |
|
UnexpectedProgramBehavior |
284 |
It was not possible to transfer an asynchronous job to a task. |
|
UnexpectedProgramBehavior |
285 |
The prompt for the interface was unsuccessful. |
|
UnexpectedProgramBehavior |
287 |
The creating of a Semaphore failed |
|
UnexpectedProgramBehavior |
1 |
An unintended detected error occurred during execution. |
|
UnexpectedProgramBehavior |
2 |
The POU is in an undefined state. |
Enumeration name: |
AccRange |
Enumeration value: |
12 |
Description: |
Acc is outside the valid range. |
Issue |
Cause |
Solution |
---|---|---|
- |
At the input i_lrAcc, an invalid value has been transferred. |
The following must hold: 0 < i_lrAcc < drive parameter MaxAcc For the valid value range for i_lrAcc: see output q_sMsg |
Enumeration name: |
AsyncAddWasNotSuccessful |
Enumeration value: |
284 |
Description: |
It was not possible to transfer an asynchronous job to a task. |
Issue |
Cause |
Solution |
---|---|---|
- |
An error has been detected and occurred in the internal execution. |
Please inform the support team about this detected error. |
Enumeration name: |
AsyncInitNotFinished |
Enumeration value: |
290 |
Description: |
Init has not been completed yet. |
Issue |
Cause |
Solution |
---|---|---|
- |
PDL.G_ifAsync.Init() method has not been completed yet. |
Call up the Init() method before you call up FB_HomeForce for the first time. After you have called up the Init method, wait until Init has been executed successfully. (Init.q_xDone = TRUE) |
Enumeration name: |
AsyncInvalid |
Enumeration value: |
288 |
Description: |
The value of IF_Async is invalid. |
Issue |
Cause |
Solution |
---|---|---|
- |
No valid value has been transferred at the i_ifAsync input. |
Verify whether the value at the i_ifAsync input is <> 0. |
ColdResetOfControllerNecessary
Enumeration name: |
ColdResetOfControllerNecessary |
Enumeration value: |
297 |
Description: |
A cold start of the controller is required |
Issue |
Cause |
Solution |
---|---|---|
- |
Gc_udiNumOfAsyncTasks has been changed. |
A cold start of the controller and a call-up of PDL.G_ifAsync.Init() is required. |
Enumeration name: |
ControllerInvalid |
Enumeration value: |
100 |
Description: |
The controller is not supported. |
Issue |
Cause |
Solution |
---|---|---|
- |
The controller does not provide the required conditions. |
For more details, see q_sMsg output |
Enumeration name: |
DecRange |
Enumeration value: |
13 |
Description: |
Dec is outside the valid range. |
Issue |
Cause |
Solution |
---|---|---|
- |
At the input i_lrDec, an invalid value has been transferred. |
The following must hold: 0 < i_lrDec < drive parameter MaxAcc For the valid value range for i_lrDec, see output q_sMsg. |
Enumeration name: |
Disabled |
Enumeration value: |
9 |
Description: |
The POU is disabled. |
The function block is disabled and executes no actions whatsoever. i_xEnable and q_xActive are set to FALSE
Enumeration name: |
DriveInvalid |
Enumeration value: |
3 |
Description: |
The connected drive is invalid. |
Issue |
Cause |
Solution |
---|---|---|
- |
No drive has been applied at the i_ifDrive input. |
A valid drive must be transferred to the i_ifDrive input. |
- |
The connected drive does not support all required functionalities. |
Establish which functionalities are not supported by the drive by means of the q_sMsg output. Use a drive that supports all required functionalities. |
Enumeration name: |
DriveNotReady |
Enumeration value: |
10 |
Description: |
The drive is not ready for motion commands. |
Issue |
Cause |
Solution |
---|---|---|
- |
The axis is not in position control. |
Verify the state of the axis. |
- |
The parameter State of the SERCOS bus is not 4. |
Set the SERCOS bus parameter PhaseSet to 4. Verify the SERCOS bus for errors. |
Enumeration name: |
HomingDone |
Enumeration value: |
222 |
Description: |
Homing has been performed. |
The homing sequence has been completed successfully.
Enumeration name: |
Initializing |
Enumeration value: |
4 |
Description: |
The POU is being initialized. |
The function block is being initialized and thus is not yet ready to receive commands at its inputs.
The function block will signalize that it is ready for operation with the signal q_xReady = TRUE.
Enumeration name: |
InterfaceCastFailed |
Enumeration value: |
285 |
Description: |
The prompt for the interface was unsuccessful. |
Issue |
Cause |
Solution |
---|---|---|
- |
An error has been detected and occurred in the internal execution. |
Please inform your Schneider Electric representative about this detected error. |
Enumeration name: |
JerkRange |
Enumeration value: |
14 |
Description: |
Jerk is outside the valid range. |
Issue |
Cause |
Solution |
---|---|---|
- |
At the input i_lrJerk, an invalid value has been applied. |
At the input i_lrJerk, a value greater than 0 and smaller than or equal to GC_lr_MaxJerk must be transferred. |
Enumeration name: |
MaxForceNotFound |
Enumeration value: |
315 |
Description: |
MaxForce has not been reached. |
Issue |
Cause |
Solution |
---|---|---|
- |
The stop was not found. |
Verify the state of the limit stop. Verify the i_lrMaxForce input. Verify the i_lrMaxTravel input. Verify the state of the axis. |
Enumeration name: |
MaxForceRange |
Enumeration value: |
314 |
Description: |
MaxForce is outside the valid range. |
Issue |
Cause |
Solution |
---|---|---|
- |
At the input i_lrMaxForce, an invalid value has been applied. |
At the input i_lrMaxForce, a value must be transferred which fulfills the following formula: 0.0 < (i_lrMaxForce / lrForceConstant * 10000000.0 / lrMaxDrivePeakCurrent / lrLimCurrent) < 100.0 with lrLimCurrent := lrUserDrivePeakCurrent * 100.0 / lrMaxDrivePeakCurrent with lrForceConstant, lrMaxDrivePeakCurrent and lrUserDrivePeakCurrent being the parameters of the axis. |
Enumeration name: |
NoAsyncTasksCreated |
Enumeration value: |
289 |
Description: |
No asynchronous task has been generated. |
Issue |
Cause |
Solution |
---|---|---|
- |
Gc_udiNumOfAsyncTasks = 0 |
Allocate Gc_udiNumOfAsyncTasks with a value > 0 and <= 10. |
Enumeration name: |
SemaphoreMeCreateFailed |
Enumeration value: |
287 |
Description: |
The creating of a Semaphore failed |
Issue |
Cause |
Solution |
---|---|---|
- |
An error was detected in the internal processing. |
Please inform the support team about this detected error. |
Enumeration name: |
UnexpectedFeedback |
Enumeration value: |
1 |
Description: |
An unintended detected error occurred during execution. |
Issue |
Cause |
Solution |
---|---|---|
- |
An error occurred in the internal execution. |
Please inform the support team about this error. |
Enumeration name: |
UnknownMode |
Enumeration value: |
111 |
Description: |
The Mode is indeterminable. |
Issue |
Cause |
Solution |
---|---|---|
- |
At the input i_etMode, an invalid value has been applied. |
The i_etMode input must be allocated with an element of the ET_HomeForceMode enumeration. |
Enumeration name: |
UnknownState |
Enumeration value: |
2 |
Description: |
The POU is in an undefined state. |
Issue |
Cause |
Solution |
---|---|---|
- |
An error occurred in the internal execution. |
Please inform the support team about this error. |
Enumeration name: |
VelRange |
Enumeration value: |
11 |
Description: |
Vel is outside the valid range. |
Issue |
Cause |
Solution |
---|---|---|
- |
At the input i_lrVel, an invalid value has been applied. |
Apply a value greater than 0 and smaller than the axis parameter MaxVel to i_lrVel. |
Enumeration name: |
WaitForStart |
Enumeration value: |
5 |
Description: |
Waiting for starting command. |
The function block has completed its initialization and is waiting for a positive edge at the input i_xStart before continuing the processing.
Enumeration name: |
WaitUntilDisabled |
Enumeration value: |
8 |
Description: |
Waiting until the POU is deactivated. |
The function block is disabled. All internal states are reset and connected resources (e.g. axes) are transferred to a safe state. The function block has to be called up continuously until it reports q_xActive = FALSE.
Enumeration name: |
WaitUntilMaxForceReached |
Enumeration value: |
313 |
Description: |
Wait until the maximum force has been reached. |
The axis is moved towards the limit stop until the set force is exceeded or the maximum distance has been covered.
Name |
Description |
---|---|
Registering the logger points of the POU in the Application Logger |