FunctionBlocks Additional MC_AbortMeasuringInputFB - ThorstenBrach/SRCI GitHub Wiki

MC_AbortMeasuringInputFB

📝 Description:

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.

⚙️ FB Variables:

VAR_INPUT
Parameter Data Type Default Value Description Required

InternalLogger

IMessageLogger

-

For internal usage only

-

ExternalLogger

IMessageLogger

-

For internal usage only

-

LogLevel

LogLevelEnum

-

For internal usage only

-

Name

STRING(20)

-

User defined command name

O

ExecMode

ExecutionMode

ExecutionMode.SEQUENCE_PRIMARY

Execution mode of the command

M

Priority

PriorityLevel

PriorityLevel.NORMAL

Priority of the command

M

Execute

BOOL

-

Start of the command at the rising edge

M

ParCmd

[AbortMeasuringInputParCmd]

-

Command specific parameter

M

VAR_IN_OUT
Parameter Data Type Default Value Description Required

AxesGroup

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

BOOL

-

Error occurred during execution. See ErrorID for details

M

ErrorID

WORD

-

Error ID as raw value for error diagnosis

M

ErrorIDEnum

RobotLibraryErrorIdEnum

-

Error ID as enumeration for error diagnosis

M

ErrorAddTxt

STRING(MAX_ADD_TEXT_LENGTH)

-

Additional error text information

M

WarningID

WORD

-

Warning ID as raw value for identifying warnings

M

WarningIDEnum

RobotLibraryWarningIdEnum

-

Warning ID as enumeration for identifying warning

M

InfoID

WORD

-

Info ID for as raw value for identifying additional information

M

InfoIDEnum

RobotLibraryInfoIdEnum

-

Info ID for as enumeration for identifying additional information

M

Done

BOOL

-

Command executed successfully

M

Busy

BOOL

-

Function block is being processed

M

CommmandBuffered

BOOL

-

Command was transferred to the robot-controller and confirmed

M

⚙️ FB Structures:

AbortMeasuringInputParCmd
Parameter Data Type Default Value Description Required

MeasuringID

UINT

0

Define an active measurement that is to be aborted.
0: Abort all existing measurements
>0: Abort the measurement with the specific MeasuringID

M

⏳ Timing Diagram:

Work in progress – more content coming soon.

📋 Examples:

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

💡 Additional Information:

Work in progress – more content coming soon.

⚠️ **GitHub.com Fallback** ⚠️