FB_PreCalcMultiCam - General Information
Type: |
Function block |
Available as of: |
V1.0.3.0 |
Inherits from: |
- |
Implements: |
- |
Versions: |
Current version |
The function block receives the same input data as with a MultiCam function block and creates the data for the Intelligent Line Shaft so that the axis moved by the MultiCam function block can be monitored as an ILS slave axis.
After a positive edge on i_xEnable or i_xNewCam the function block generates the motion profile from the data from iq_stMultiCamDat and calculates the scaling (YMax) of the front axis of the Intelligent Line Shaft. The function block writes both into the data structure iq_stIlsData from where it is read out by the function block FB_EndlessFeedIls.
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_xNewCam |
BOOL |
Starts a new motion profile based on the current motion profile |
i_diSlaveNumber |
DINT |
Number of slave axis that have to be monitored. |
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 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. |
Input/Output |
Data type |
Description |
---|---|---|
iq_stMultiCamData |
Information about the course of the cam (ST_MultiCam structure). |
|
iq_stIlsData |
Information for the motion sequence of the slave axes as well as the parameterized limits and feedback variables. |
q_etDiag |
q_etDiagExt |
Enumeration value |
Description |
---|---|---|---|
OK |
9 |
The POU is disabled. |
|
OK |
4 |
The POU is being initialized. |
|
OK |
99 |
The POU is active. |
|
InputParameterInvalid |
125 |
The boundary conditions are invalid. |
|
InputParameterInvalid |
121 |
NumberOfCamPoints is outside the valid range. |
|
InputParameterInvalid |
129 |
K is outside the valid range. |
|
InputParameterInvalid |
130 |
M is outside the valid range. |
|
InputParameterInvalid |
197 |
SlaveNumber is outside the valid range. |
|
InputParameterInvalid |
126 |
The cam type is indeterminable. |
|
InputParameterInvalid |
122 |
XFactor is too small. |
|
InputParameterInvalid |
124 |
YFactor is too small. |
|
UnexpectedProgramBehavior |
116 |
The profile is already in use. |
|
UnexpectedProgramBehavior |
127 |
The memory for tables from system profiles is full. |
|
UnexpectedProgramBehavior |
123 |
The system profile table is full. |
|
UnexpectedProgramBehavior |
1 |
An unintended detected error occurred during execution. |
Enumeration name: |
BoundaryConditionInvalid |
Enumeration value: |
125 |
Description: |
The boundary conditions are invalid. |
Issue |
Cause |
Solution |
---|---|---|
- |
When defining the motion profile in iq_stMultiCamData, the set boundary conditions cannot be complied with. |
Verify the definition of the motion profile and particularly the boundary conditions of the sub-segments. As an alternative, select different profiles for the sub-segments to be able to comply with all desired boundary conditions. |
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: |
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: |
NumberOfCamPointsRange |
Enumeration value: |
121 |
Description: |
NumberOfCamPoints is outside the valid range. |
Issue |
Cause |
Solution |
---|---|---|
- |
At the input iq_stMultiCamData.diNumberOfCamPoints, an invalid value has been transferred. |
At the input iq_stMultiCamData.diNumberOfCamPoints, a value greater than 0 and smaller than or equal to SystemInterface.MAX_NO_OF_SEG + 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: |
ProfileMemoryFull |
Enumeration value: |
127 |
Description: |
The memory for tables from system profiles is full. |
Issue |
Cause |
Solution |
---|---|---|
- |
The system profile memory is full. |
Delete any profiles that are no longer needed using the SystemInterface.FC_ProfileDelete function |
Enumeration name: |
ProfileTableFull |
Enumeration value: |
123 |
Description: |
The system profile table is full. |
Issue |
Cause |
Solution |
---|---|---|
- |
The maximum number of system profiles has been exceeded. |
Delete any profiles that are no longer needed using the SystemInterface.FC_ProfileDelete function |
Enumeration name: |
RangeK |
Enumeration value: |
129 |
Description: |
K is outside the valid range. |
Issue |
Cause |
Solution |
---|---|---|
- |
At the input iq_stMultiCamData.astCamPoint[ ].lrK, an invalid value has been applied. |
Verify the values for iq_stMultiCamData.astCamPoint[ ].lrK |
Enumeration name: |
RangeM |
Enumeration value: |
130 |
Description: |
M is outside the valid range. |
Issue |
Cause |
Solution |
---|---|---|
- |
At the input iq_stMultiCamData.astCamPoint[ ].lrM, an invalid value has been applied. |
Verify the values for iq_stMultiCamData.astCamPoint[ ].lrM |
Enumeration name: |
SlaveNumberRange |
Enumeration value: |
197 |
Description: |
SlaveNumber is outside the valid range. |
Issue |
Cause |
Solution |
---|---|---|
- |
The number of slave axes i_diSlavenumber is smaller than 1 or the number of slave axes i_diSlavenumber is greater than iq_stIlsData.i_stConfig.diNumberOfSlaves, or The number of slave axes iq_stIlsData.i_stConfig.diNumberOfSlaves is greater than Gc_diMaxNumberOfSlaves |
At the input i_diSlavenumber, a positive value smaller than iq_stIlsData.i_stConfig.diNumberOfSlaves and smaller than Gc_diMaxNumberOfSlaves must be transferred. |
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: |
UnknownCamType |
Enumeration value: |
126 |
Description: |
The cam type is indeterminable. |
Issue |
Cause |
Solution |
---|---|---|
- |
The cam type of a point iq_stMultiCamData.astCamPoint is assigned with an invalid cam profile. |
The cam types etCamType of all used cam points at the input iq_stMultiCamData.astCamPoint must be assigned with an element of the enumeration ET_CamType. |
Enumeration name: |
Working |
Enumeration value: |
99 |
Description: |
The POU is active. |
The precalculations are being performed.
Enumeration name: |
XFactorTooSmall |
Enumeration value: |
122 |
Description: |
XFactor is too small. |
Issue |
Cause |
Solution |
---|---|---|
- |
Two successive cam points iq_stMultiCamData.astCamPoint[ ].lrX have a distance of less than 0.1 units. |
Verify the definition of the cam and, if necessary, remove cam profiles that are too short. |
Enumeration name: |
YFactorTooSmall |
Enumeration value: |
124 |
Description: |
YFactor is too small. |
Issue |
Cause |
Solution |
---|---|---|
- |
A cam profile requiring a motion of the slave axis is to be used with identical start and end points. |
At the input iq_stMultiCamData.astCamPoint[i-1].etCamType, a cam profile of type ModSinCom has been applied. The value of the difference between its start point iq_stMultiCamData.astCamPoint[i-1].lrY and its end point iq_stMultiCamData.astCamPoint[i].lrY is smaller than Gc_lrZeroTolerance. This type of profile requires a motion of the slave cam. At the input iq_stMultiCamData.astCamPoint[i-1].etCamType, a cam profile of type ModAccTrCom has been applied. The value of the difference between its start point iq_stMultiCamData.astCamPoint[i-1].lrY and its end point iq_stMultiCamData.astCamPoint[i].lrY is smaller than Gc_lrZeroTolerance. This type of profile requires a motion of the slave cam. At the input iq_stMultiCamData.astCamPoint[i-1].etCamType, a cam profile of type HarmoComb has been applied. The value of the difference between its start point iq_stMultiCamData.astCamPoint[i-1].lrY and its end point iq_stMultiCamData.astCamPoint[i].lrY is smaller than Gc_lrZeroTolerance. This type of profile requires a motion of the slave cam. At the input iq_stMultiCamData.astCamPoint[i-1].etCamType, a cam profile of type SinStraightComb has been applied. The value of the difference between its start point iq_stMultiCamData.astCamPoint[i-1].lrY and its end point iq_stMultiCamData.astCamPoint[i].lrY is smaller than Gc_lrZeroTolerance. This type of profile requires a motion of the slave cam. |