FunctionBlocks Read MC_ReadMessagesFB - ThorstenBrach/SRCI GitHub Wiki
Read error codes of pending errors and move them into user data block "RobotData".
This command is used internally by the RobotTask functionblock and should not be used directly within the application. The RobotTask functionblock automatically provides the extracted data in the UserData.
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.PARALLEL |
Execution mode of the command |
M |
|
Priority |
PriorityMode.NORMAL |
Priority of the command |
M |
|
Enable |
- |
Enable / Disable the command at rising / falling 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 |
|
Enabled |
- |
Command enabled successfully |
M |
|
Busy |
- |
Function block is being processed |
M |
|
CommmandBuffered |
- |
Command was transferred to the robot-controller and confirmed |
M |
|
Valid |
- |
TRUE, while the following outputs return valid values: • Values |
M |
|
OutCmd |
- |
Command specific outputs |
M |
ReadMessagesParCmd
| Parameter | Data Type | Default Value | Description | Required |
|---|---|---|---|---|
MsgID |
- |
ID for function specific acknowledgement mechanism |
M |
|
MessageLevel |
- |
Defines up to which level of severity messages will be transmitted to the PLC’s message buffer |
M |
ReadMessagesOutCmd
| Parameter | Data Type | Default Value | Description | Required |
|---|---|---|---|---|
MsgId |
- |
ID for function-specific acknowledgement mechanism |
M |
|
NumberOfActiveErrors |
- |
Number of pending errors on RC |
M |
|
NumberOfActiveWarnings |
- |
Number of pending warnings on RC |
M |
|
Timestamp |
- |
Timestamp |
M |
|
MsgType |
- |
Message Type |
M |
|
Severity |
- |
Severity of returned message |
M |
|
ErrorCode |
- |
Error code |
M |
|
Text |
- |
Message text |
M |
Declaration
VAR_GLOBAL
/// Robot assignment of function
AxesGroup : AxesGroup;
/// Robot Task
RobotTask : MC_RobotTaskFB;
/// Read Messages
ReadMessages : MC_ReadMessagesFB;
END_VARCall
// call function block
ReadMessages
(
Name := 'SRCI_Robot',
ExecMode := ExecutionMode.PARALLEL,
Priority := PriorityLevel.NORMAL,
AxesGroup := AxesGroup
);Usage
VAR_INPUT
/// Request enable read messages
Enable : BOOL;
/// Command parameter
ParCmd : ReadMessagesParCmd;
END_VAR
VAR_OUTPUT
/// Error ID
ErrorID : DINT;
/// Error addition text
ErrorAddTxt : STRING;
/// Command outputs
OutCmd : ReadMessagesOutCmd;
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)
ReadMessages.ParCmd := ParCmd;
// forwarding command output(s)
OutCmd := ReadMessages.OutCmd;
CASE _stepCmd OF
0: // Enable or disable function ?
IF (( Enable ) XOR
( NOT ReadMessages.Enabled ))
THEN
// Set parameter
ReadMessages.ParCmd.MsgID := 1;
ReadMessages.ParCmd.MessageLevel := MessageLevel.WARNING;
// set timeout
SetTimeout(PT := _timeoutCmd, rTimer := _timerCmd);
// inc step counter
_stepCmd := _stepCmd + 1;
END_IF
1: // Start Execution
IF (( NOT ReadMessages.Busy ) AND
( NOT ReadMessages.Error ))
THEN
// enable/disable read messages
ReadMessages.Enable := Enable;
// 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 (ReadMessages.Error)
THEN
ErrorID := ReadMessages.ErrorID;
ErrorAddTxt := CONCAT('_stepCmd = ' , DINT_TO_STRING(_stepCmd));
END_IF
END_IF
2: // Wait Execution done ?
IF (( NOT ReadMessages.Busy ) AND
( ReadMessages.Enabled = Enable ))
THEN
// 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 (ReadMessages.Error)
THEN
ErrorID := ReadMessages.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