FunctionBlocks Additional MC_ActivateNextCommandFB - ThorstenBrach/SRCI GitHub Wiki
This command terminates the current instruction in the sequence buffer and proceeds with the next one.
The input parameter ProcessingMode determines whether the function is executed once in the parallel buffer or waits for a trigger signal. If the function is set to wait for a trigger, it can be configured to run either once (Trigger Once) or repeatedly (Trigger Multiple) until the user disables it. The ListenerID parameter specifies which trigger action to listen for.
If an error occurs during execution or if the RC is unable to process the command, an error message along with a corresponding ErrorID is returned.
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 |
|
OutCmd |
- |
Command specific outputs |
M |
ActivateNextCommandParCmd
Parameter | Data Type | Default Value | Description | Required |
---|---|---|---|---|
ProcessingMode |
- |
Processing mode used to activate the next command |
||
ListenerID |
- |
ID of the trigger function that may be triggered: |
ActivateNextCommandOutCmd
Parameter | Data Type | Default Value | Description | Required |
---|---|---|---|---|
OriginID |
- |
Unique system-generated ID of the "Action" when the function is triggered. |
||
InvocationCounter |
- |
Number of successful trigger-based command invocations |
Declaration
VAR_GLOBAL
/// Robot assignment of function
AxesGroup : AxesGroup;
/// Robot Task
RobotTask : MC_RobotTaskFB;
/// Activate next command
ActivateNextCommand : MC_ActivateNextCommandFB;
END_VAR
Call
// Call functionblock
ActivateNextCommand
(
Name := 'SRCI_Robot',
ExecMode := ExecutionMode.PARALLEL,
Priority := PriorityLevel.NORMAL,
ProcessingMode := ProcessingModeEnum.PARALLEL,
AxesGroup := AxesGroup
);
Usage
VAR_INPUT
/// Start command execution
Execute : BOOL;
/// Command parameter
ParCmd : ActivateNextCommandParCmd;
END_VAR
VAR_OUTPUT
/// Error ID
ErrorID : DINT;
/// Error addition text
ErrorAddTxt : STRING;
/// Command outputs
OutCmd : ActivateNextCommandOutCmd;
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)
ActivateNextCommand.ParCmd := ParCmd;
// forwarding command output(s)
OutCmd := ActivateNextCommand.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 ActivateNextCommand.Busy ) AND
( NOT ActivateNextCommand.Error ))
THEN
// start execution
ActivateNextCommand.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 (ActivateNextCommand.Error)
THEN
ErrorID := ActivateNextCommand.ErrorID;
ErrorAddTxt := CONCAT('_stepCmd = ' , DINT_TO_STRING(_stepCmd));
END_IF
END_IF
2: // Wait Execution done ?
IF (( NOT ActivateNextCommand.Busy ) AND
( ActivateNextCommand.Done ))
THEN
// stop execution
ActivateNextCommand.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 (ActivateNextCommand.Error)
THEN
ErrorID := ActivateNextCommand.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