FunctionBlocks Read MC_ReadRobotDataFB - ThorstenBrach/SRCI GitHub Wiki
Read robot-specific data from the RC.

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 |
|
Execute |
- |
Start of the command at the rising edge |
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 |
ReadRobotDataOutCmd
Parameter | Data Type | Default Value | Description | Required |
---|---|---|---|---|
RCManufacturer |
- |
RC manufacturer name |
M |
|
RCOrderID |
- |
RC part number |
M |
|
RCSerialNumber |
- |
RC serial number |
M |
|
RASerialNumber |
- |
RA serial number |
M |
|
RCFirmwareVersion |
- |
Robot firmware version in manufacturer-specific format |
M |
|
RCInterpreterVersion |
- |
Interpreter version |
M |
|
AxisJointUsed |
- |
Used joint axes of the robot |
M |
|
AxisExternalUsed |
- |
Used external axes of the robot |
M |
|
AxisJointUnit |
- |
Unit of the joint axes of the robot |
M |
|
AxisExternalUnit |
- |
Unit of the external axes of the robot |
M |
|
RCSupportedFunctions |
- |
Functions supported by the RC |
M |
|
RobotID |
- |
Unique and unmodifiable identification of the RA |
M |
|
InterpreterCycleTime |
- |
Interpreter task cycle time of the RC [ms] |
M |
Declaration
VAR_GLOBAL
/// Robot assignment of function
AxesGroup : AxesGroup;
/// Robot Task
RobotTask : MC_RobotTaskFB;
/// Read Robot Data
ReadRobotData : MC_ReadRobotDataFB;
END_VAR
Call
// call function block
ReadRobotData
(
Name := 'SRCI_Robot',
ExecMode := ExecutionMode.PARALLEL,
Priority := PriorityLevel.NORMAL,
AxesGroup := AxesGroup,
);
Usage
VAR_INPUT
/// Start command execution
Execute : BOOL;
/// Command parameter
ParCmd : ReadRobotDataParCmd;
END_VAR
VAR_OUTPUT
/// Error ID
ErrorID : DINT;
/// Error addition text
ErrorAddTxt : STRING;
/// Command outputs
OutCmd : ReadRobotDataOutCmd;
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)
ReadRobotData.ParCmd := ParCmd;
// forwarding command output(s)
OutCmd := ReadRobotData.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 ReadRobotData.Busy ) AND
( NOT ReadRobotData.Error ))
THEN
// start execution
ReadRobotData.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 (ReadRobotData.Error)
THEN
ErrorID := ReadRobotData.ErrorID;
ErrorAddTxt := CONCAT('_stepCmd = ' , DINT_TO_STRING(_stepCmd));
END_IF
END_IF
2: // Wait Execution done ?
IF (( NOT ReadRobotData.Busy ) AND
( ReadRobotData.Done ))
THEN
// stop execution
ReadRobotData.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 (ReadRobotData.Error)
THEN
ErrorID := ReadRobotData.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