FB_EndlessFeedIls - General Information
Type: |
Program / function block / function |
Available as of: |
V1.0.3.0 |
Inherits from: |
- |
Implements: |
- |
Versions: |
Current version |
Intelligent Line Shaft
Carry out an infinite motion of a master axis when considering the velocity and acceleration limit of the slave axes.
During operation, the data that is transferred at input iq_stIlsData on the motion sequences from up to 10 slave axes is evaluated and velocity or acceleration limits that may have been parameterized are maintained by the intermittent reduction of the surface velocity of the master axis. The function block attempts to compensate the resulting position backlog by increasing the surface speed up until a maximum value that can be set. This means that the set velocity i_lrVel is interpreted as the effective velocity.
NOTE: The function block needs to allocate a big amount of memory in the dynamic memory storage. The size of the dynamic memory storage can be seen and changed in the Application build options view (View -> Properties... -> Application build options). This is NOT the dynamic data storage which can be managed via the DynIECData... properties of the controller.
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_lrVel |
LREAL |
Effective velocity in units/s. Value range: 0 ... MaxVel |
i_lrAcc |
LREAL |
Acceleration of the surface velocity in units/s2. Value range: >0 ... MaxAcc |
i_lrDec |
LREAL |
Delay of the surface velocity or stand still in units/s2. Value range: >0 ... MaxAcc |
i_lrJerk |
LREAL |
Jerk in units/s2. Is assigned to the variable lrMasterMaxAbsJerk from iq_stIlsData.i_stRunTime. |
i_lrPeriod |
LREAL |
With a value of <> 0, the position is kept within the period value (0 … i_lrPeriod). If a period value is too high or two low, the position is manipulated by the period value. Only positive values are valid. |
i_lrStopPosition |
LREAL |
Stop position in units. Only positive values are valid. The StopPosition must be in the range of 0 … Period. |
i_xStart |
BOOL |
FALSE -> TRUE: Start of endless motion according to set parameters. |
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_xWarning |
BOOL |
TRUE: Function block has detected a warning. The outputs q_etDiag, q_etDiagExt and q_sMsg are to be regarded as warnings. |
q_etDiag |
General library-independent statement on the diagnostic. A value not equal to ET_Diag.Ok corresponds to an diagnostic message. |
|
q_etDiagExt |
POU-specific output on the diagnostic. q_etDiag = ET_Diag.Ok -> Status message q_etDiag <> ET_Diag.Ok -> Diagnostic message |
|
q_sMsg |
STRING[80] |
Event-triggered message which gives more detailed information on the diagnostic state. |
q_xMotionInstructionActive |
BOOL |
TRUE: Axis in motion. |
q_xInVelocity |
BOOL |
Velocity i_lrVel reached. (RefVelocity > i_lrVel * 0.99 AND RefVelocity < i_lrVel* 1.01) |
q_lrPosition |
LREAL |
Position of the axis. |
Input/Output |
Data type |
Description |
---|---|---|
iq_stIlsData |
Information for the motion sequence of the slave axes as well as the parameterized limits and feedback variables. See data type PDL_ST_ILS_Data. |
q_etDiag |
q_etDiagExt |
Enumeration value |
Description |
---|---|---|---|
OK |
9 |
The POU is disabled. |
|
OK |
213 |
Endless positioning. |
|
OK |
4 |
The POU is being initialized. |
|
OK |
7 |
Active motion commands are stopped. |
|
OK |
5 |
Waiting for starting command. |
|
OK |
8 |
Waiting until the POU is deactivated. |
|
DriveConditionInvalid |
10 |
The drive is not ready for motion commands. |
|
ExecutionAborted |
75 |
There is not enough dynamic memory reserved. |
|
InputParameterInvalid |
12 |
Acc is outside the valid range. |
|
InputParameterInvalid |
13 |
Dec is outside the valid range. |
|
InputParameterInvalid |
3 |
The connected drive is invalid. |
|
InputParameterInvalid |
205 |
Hysteresis is outside the valid range. |
|
InputParameterInvalid |
199 |
MasterMaxAbsAcc is outside the valid range. |
|
InputParameterInvalid |
200 |
MasterMaxAbsJerk is outside the valid range. |
|
InputParameterInvalid |
208 |
MasterPeriodInit is outside the valid range. |
|
InputParameterInvalid |
212 |
NegAcc is outside the valid range. |
|
InputParameterInvalid |
210 |
NegVel is outside the valid range. |
|
InputParameterInvalid |
207 |
MNumberOfMasterPeriods is outside the valid range. |
|
InputParameterInvalid |
198 |
NumberOfSlaves is outside the valid range. |
|
InputParameterInvalid |
201 |
Period is outside the valid range. |
|
InputParameterInvalid |
211 |
PosAcc is outside the valid range. |
|
InputParameterInvalid |
203 |
PositionGridSize is outside the valid range. |
|
InputParameterInvalid |
209 |
PosVel is outside the valid range. |
|
InputParameterInvalid |
114 |
The ProfileId is invalid. |
|
InputParameterInvalid |
202 |
StopPosition is outside the valid range. |
|
InputParameterInvalid |
204 |
TimeGridSize is outside the valid range. |
|
InputParameterInvalid |
11 |
Vel is outside the valid range. |
|
InputParameterInvalid |
206 |
YFactor is outside the valid range. |
|
UnexpectedProgramBehavior |
116 |
The profile is already in use. |
|
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: i_lrAcc >1 For the valid value range for i_lrAcc, see output q_sMsg |
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: i_lrDec >1 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 |
---|---|---|
- |
At the input i_ifDrive, no drive was applied. |
At the input i_ifDrive, a valid drive must be transferred. |
- |
The connected drive does not support all required functionalities. |
Establish which functionalities are not supported by the drive by means of output q_sMsg. Use a drive which 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. |
Enumeration name: |
DynIecDataSizeTooSmall |
Enumeration value: |
75 |
Description: |
There is not enough dynamic memory reserved. |
Issue |
Cause |
Solution |
---|---|---|
- |
There was not enough free space in the dynamic memory storage |
Expand the dynamic memory storage. The needed space of the function block is given in the message q_sMessage of the exception. The size of the dynamic memory storage can be seen and changed in the Applicaiton build options view (View -> Properties... -> Application build options). This is NOT the dynamic data sorage which is managed via the DynIECData... properties of the controller. |
Enumeration name: |
EndlessPositioning |
Enumeration value: |
213 |
Description: |
Endless positioning. |
The axis is being positioned endlessly.
Enumeration name: |
HysteresisRange |
Enumeration value: |
205 |
Description: |
Hysteresis is outside the valid range. |
Issue |
Cause |
Solution |
---|---|---|
- |
At the input iq_stIlsData.i_stConfig.lrHysteresis, an invalid value has been applied. |
At the input iq_stIlsData.i_stConfig.lrHysteresis, a value greater than or equal to 0.001 and smaller than or equal to 50.0 must be transferred. |
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: |
MasterMaxAbsAccRange |
Enumeration value: |
199 |
Description: |
MasterMaxAbsAcc is outside the valid range. |
Issue |
Cause |
Solution |
---|---|---|
- |
At the input iq_stIlsData.i_stRunTime.lrMasterMaxAbsAcc, an invalid value has been transferred. |
At the input iq_stIlsData.i_stRunTime.lrMasterMaxAbsAcc, a value greater than or equal to 1.0 must be transferred. |
Enumeration name: |
MasterMaxAbsJerkRange |
Enumeration value: |
200 |
Description: |
MasterMaxAbsJerk is outside the valid range. |
Issue |
Cause |
Solution |
---|---|---|
- |
At the input iq_stIlsData.i_stRunTime.lrMasterMaxAbsJerk, an invalid value has been transferred. |
At the input iq_stIlsData.i_stRunTime.lrMasterMaxAbsJerk, a value greater than or equal to 1.0 must be transferred. |
Enumeration name: |
MasterPeriodInitRange |
Enumeration value: |
208 |
Description: |
MasterPeriodInit is outside the valid range. |
Issue |
Cause |
Solution |
---|---|---|
- |
At the input iq_stIlsData.i_astCamData[ ].diMasterPeriodInit, an invalid value has been applied. |
At the input iq_stIlsData.i_astCamData[ ].diMasterPeriodInit, a value greater than 0 must be transferred. |
Enumeration name: |
NegAccRange |
Enumeration value: |
212 |
Description: |
NegAcc is outside the valid range. |
Issue |
Cause |
Solution |
---|---|---|
- |
At the input iq_stIlsData.i_stRunTime.astSlaveLimits[ ].lrNegAcc, an invalid value has been applied. |
At the input iq_stIlsData.i_stRunTime.astSlaveLimits[ ].lrNegAcc, a value smaller than or equal to -1.0 must be transferred. |
Enumeration name: |
NegVelRange |
Enumeration value: |
210 |
Description: |
NegVel is outside the valid range. |
Issue |
Cause |
Solution |
---|---|---|
- |
At the input iq_stIlsData.i_stRunTime.astSlaveLimits[ ].lrNegVel, an invalid value has been applied. |
At the input iq_stIlsData.i_stRunTime.astSlaveLimits[ ].lrNegVel, a value smaller than or equal to -1.0 must be transferred. |
Enumeration name: |
NumberOfMasterPeriodsRange |
Enumeration value: |
207 |
Description: |
MNumberOfMasterPeriods is outside the valid range. |
Issue |
Cause |
Solution |
---|---|---|
- |
At the input iq_stIlsData.i_astCamData[ ].diNumberOfMasterPeriods, an invalid value has been applied. |
At the input iq_stIlsData.i_astCamData[ ].diNumberOfMasterPeriods, a value greater than 1 must be transferred. |
Enumeration name: |
NumberOfSlavesRange |
Enumeration value: |
198 |
Description: |
NumberOfSlaves is outside the valid range. |
Issue |
Cause |
Solution |
---|---|---|
- |
At the input iq_stIlsData.i_stConfig.diNumberOfSlaves, an invalid value has been applied. |
At the input iq_stIlsData.i_stConfig.diNumberOfSlaves, a value greater than or equal to 0 and smaller than or equal to Gc_diMaxNumberOfSlaves must be transferred. |
Enumeration name: |
PeriodRange |
Enumeration value: |
201 |
Description: |
Period is outside the valid range. |
Issue |
Cause |
Solution |
---|---|---|
- |
At the input i_lrPeriod, an invalid value has been applied. |
At the input i_lrPeriod, a value greater than or equal to 1.0 must be transferred. |
Enumeration name: |
PosAccRange |
Enumeration value: |
211 |
Description: |
PosAcc is outside the valid range. |
Issue |
Cause |
Solution |
---|---|---|
- |
At the input iq_stIlsData.i_stRunTime.astSlaveLimits[ ].lrPosAcc, an invalid value has been applied. |
At the input iq_stIlsData.i_stRunTime.astSlaveLimits[ ].lrPosAcc, a value greater than or equal to 1.0 must be transferred. |
Enumeration name: |
PositionGridSizeRange |
Enumeration value: |
203 |
Description: |
PositionGridSize is outside the valid range. |
Issue |
Cause |
Solution |
---|---|---|
- |
At the input iq_stIlsData.i_stConfig.diPositionGridSize, an invalid value has been applied. |
At the input iq_stIlsData.i_stConfig.diPositionGridSize, a value greater than or equal to 1 and smaller than or equal to Gc_diMaxGridSize must be transferred. |
Enumeration name: |
PosVelRange |
Enumeration value: |
209 |
Description: |
PosVel is outside the valid range. |
Issue |
Cause |
Solution |
---|---|---|
- |
At the input iq_stIlsData.i_stRunTime.astSlaveLimits[ ].lrPosVel, an invalid value has been applied. |
At the input iq_stIlsData.i_stRunTime.astSlaveLimits[ ].lrPosVel, a value greater than or equal to 1 must be transferred. |
Enumeration name: |
ProfileAlreadyInUse |
Enumeration value: |
116 |
Description: |
The profile is already in use. |
Issue |
Cause |
Solution |
---|---|---|
- |
The motion profile is already in use. |
Verify the motion data. |
Enumeration name: |
ProfileIdInvalid |
Enumeration value: |
114 |
Description: |
The ProfileId is invalid. |
Issue |
Cause |
Solution |
---|---|---|
- |
The profile does not exist. |
Verify the values at the inputs iq_stMultiCamData.astCamPoint[ ].diProfileId. |
Enumeration name: |
Stopping |
Enumeration value: |
7 |
Description: |
Active motion commands are stopped. |
The axis is stopped.
Enumeration name: |
StopPositionRange |
Enumeration value: |
202 |
Description: |
StopPosition is outside the valid range. |
Issue |
Cause |
Solution |
---|---|---|
- |
At the input i_lrStopPosition, a negative value has been transferred. |
At the input i_lrStopPosition, a value greater than or equal to 0 must be transferred. |
- |
At the input i_lrStopPosition, a value outside of the period has been transferred. |
At the input i_lrStopPosition, a value smaller than or equal to the value at the input i_lrPeriod must be transferred. |
Enumeration name: |
TimeGridSizeRange |
Enumeration value: |
204 |
Description: |
TimeGridSize is outside the valid range. |
Issue |
Cause |
Solution |
---|---|---|
- |
At the input iq_stIlsData.i_stConfig.diTimeGridSize, an invalid value has been applied. |
At the input iq_stIlsData.i_stConfig.diTimeGridSize, a value greater than 0 and smaller than 100 must be applied. |
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: |
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. |
For i_lrVel, enter a value between 0 and the axis parameter MaxVel. |
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. |
Enumeration name: |
YFactorRange |
Enumeration value: |
206 |
Description: |
YFactor is outside the valid range. |
Issue |
Cause |
Solution |
---|---|---|
- |
At the input iq_stIlsData.i_astCamData[ ].lrYFactor, a number < 1 has been transferred. |
The YFactor must be at least 1. |