FunctionBlocks Additional MC_AbortMeasuringInputFB - ThorstenBrach/SRCI GitHub Wiki
This command allows the PLC to cancel active measurement commands that were initiated using the "MeasuringInput" function. The command is triggered on the rising edge of the "Execute" input.
The input parameter "MeasuringID" specifies which active measurement should be canceled. If "MeasuringID" is set to zero, all active measurements will be canceled. If no active measurement exists, the function block returns an error message along with a corresponding ErrorID.
If an error occurs during execution or if the RC is unable to process the command, it will also return an error message and the appropriate ErrorID.
VAR_INPUT
Parameter | Data Type | Default Value | Description | Required |
---|---|---|---|---|
InternalLogger |
- |
For internal usage only |
- |
|
ExternalLogger |
- |
For internal usage only |
- |
|
LogLevel |
- |
For internal usage only |
- |
|
Name |
- |
User defined command name |
O |
|
ExecMode |
ExecutionMode.SEQUENCE_PRIMARY |
Execution mode of the command |
M |
|
Priority |
PriorityLevel.NORMAL |
Priority of the command |
M |
|
Execute |
- |
Start of the command at the rising edge |
M |
|
ParCmd |
- |
Command specific parameter |
M |
VAR_IN_OUT
Parameter | Data Type | Default Value | Description | Required |
---|---|---|---|---|
AxesGroup |
- |
Robot group assigned to the function |
M |
VAR_OUTPUT
Parameter | Data Type | Default Value | Description | Required |
---|---|---|---|---|
CommandData |
RobotLibraryCommandDataFB |
- |
For internal usage only |
- |
ResponseData |
RobotLibraryResponseDataFB |
- |
For internal usage only |
- |
Error |
- |
Error occurred during execution. See ErrorID for details |
M |
|
ErrorID |
- |
Error ID as raw value for error diagnosis |
M |
|
ErrorIDEnum |
- |
Error ID as enumeration for error diagnosis |
M |
|
ErrorAddTxt |
- |
Additional error text information |
M |
|
WarningID |
- |
Warning ID as raw value for identifying warnings |
M |
|
WarningIDEnum |
- |
Warning ID as enumeration for identifying warning |
M |
|
InfoID |
- |
Info ID for as raw value for identifying additional information |
M |
|
InfoIDEnum |
- |
Info ID for as enumeration for identifying additional information |
M |
|
Done |
- |
Command executed successfully |
M |
|
Busy |
- |
Function block is being processed |
M |
|
CommmandBuffered |
- |
Command was transferred to the robot-controller and confirmed |
M |
Declaration
VAR_GLOBAL
/// Robot assignment of function
AxesGroup : AxesGroup;
/// Robot Task
RobotTask : MC_RobotTaskFB;
/// Abort measuring input
AbortMeasuringInput : MC_AbortMeasuringInputFB;
END_VAR
Call
// Call functionblock
AbortMeasuringInput
(
Name := 'SRCI_Robot',
ExecMode := ExecutionMode.PARALLEL,
Priority := PriorityLevel.NORMAL,
AxesGroup := AxesGroup
);
Usage
VAR_INPUT
/// Start command execution
Execute : BOOL;
/// Command parameter
ParCmd : AbortMeasuringInputParCmd;
END_VAR
VAR_OUTPUT
/// Error ID
ErrorID : DINT;
/// Error addition text
ErrorAddTxt : STRING;
/// Command outputs
OutCmd : AbortMeasuringInputOutCmd;
END_VAR
VAR
/// internal step counter
_stepCmd : DINT;
/// internal timer for command
_timerCmd : TON;
/// internal timeout for command
_timeoutCmd : TIME := T#5S;
END_VAR
// forwarding command parameter(s)
AbortMeasuringInput.ParCmd := ParCmd;
// forwarding command output(s)
OutCmd := AbortMeasuringInput.OutCmd;
CASE _stepCmd OF
0: // start execution ?
IF ( Execute )
THEN
// Reset request
Execute := FALSE;
// set timeout
SetTimeout(PT := _timeoutCmd, rTimer := _timerCmd);
// inc step counter
_stepCmd := _stepCmd + 1;
END_IF
1: // Start Execution
IF (( NOT AbortMeasuringInput.Busy ) AND
( NOT AbortMeasuringInput.Error ))
THEN
// start execution
AbortMeasuringInput.Execute := TRUE;
// set timeout
SetTimeout(PT := _timeoutCmd, rTimer := _timerCmd);
// inc step counter
_stepCmd := _stepCmd + 1;
ELSE
// timeout exceeded ?
IF (CheckTimeout(_timerCmd) = RobotLibraryConstants.OK)
THEN
ErrorID := RobotLibraryErrorIdEnum.ERR_TIMEOUT_CMD;
ErrorAddTxt := CONCAT('_stepCmd = ' , DINT_TO_STRING(_stepCmd));
END_IF
// Error occurred ?
IF (AbortMeasuringInput.Error)
THEN
ErrorID := AbortMeasuringInput.ErrorID;
ErrorAddTxt := CONCAT('_stepCmd = ' , DINT_TO_STRING(_stepCmd));
END_IF
END_IF
2: // Wait Execution done ?
IF (( NOT AbortMeasuringInput.Busy ) AND
( AbortMeasuringInput.Done ))
THEN
// stop execution
AbortMeasuringInput.Execute := FALSE;
// set timeout
SetTimeout(PT := _timeoutCmd, rTimer := _timerCmd);
// set step counter
_stepCmd := 0;
ELSE
// timeout exceeded ?
IF (CheckTimeout(_timerCmd) = RobotLibraryConstants.OK)
THEN
ErrorID := RobotLibraryErrorIdEnum.ERR_TIMEOUT_CMD;
ErrorAddTxt := CONCAT('_stepCmd = ' , DINT_TO_STRING(_stepCmd));
END_IF
// Error occurred ?
IF (AbortMeasuringInput.Error)
THEN
ErrorID := AbortMeasuringInput.ErrorID;
ErrorAddTxt := CONCAT('_stepCmd = ' , DINT_TO_STRING(_stepCmd));
END_IF
END_IF
ELSE
// invalid step
ErrorID := RobotLibraryErrorIdEnum.ERR_INVALID_STEP;
ErrorAddTxt := CONCAT('_stepCmd = ' , DINT_TO_STRING(_stepCmd));
END_CASE