# MCV_RmvPlug

The MCV_RmvPlug FB is used to check whether and which of the 16 axis interfaces are blocked by unacknowledged commands of the PLCopen FBs. After checking, this FB can be used to remove detected blockages.

## Notice

This FB serves diagnostic purposes and must only be used during the development phase of a project.

Blockdiagramm

Parameters of the FB

VAR_INPUT
Variable name | Data type | Description
check_plug | BOOL | Starts the check to detect which of the maximum 16 axis interfaces is blocked by a command which is not acknowledged by the PLC.
clear_all_plugs | BOOL | Acknowledges all commands which are blocking an axis interface.
clear_ax_01 | BOOL | These 16 inputs can be used to cancel the block of the axis interface of each axis separately caused by an unacknowledged command.
… | BOOL
clear_ax_16 | BOOL

VAR_OUTPUT
Variable name | Data type | Description
any_blocked | BOOL | Is TRUE if the block caused by an unacknowledged command was detected at any axis interface after the start of the check executed for the axis interfaces.
highest_id_blocked | BOOL | Indicates the identification number of the axis with the highest number that is blocked by an unacknowledged command.
blocked_ax_01 | BOOL | There are 16 outputs, each of which indicates exactly where each axis is blocked by an unacknowledged command. If the value is TRUE, the axis is blocked.
… | BOOL
blocked_ax_16 | BOOL

Behaviour of the FB

- The function block can be command independently of the state of the axis.
- The check for blocked axis interfaces is started via the "check_plug" input. An axis interface is considered to be block and thus incapable of reporting other commands issued to the assigned axis if a command is applied at the interface as processed for more than 10 successive PLC cycles, but has not been acknowledged by the PLC. The blocking command is identified by its ordinal number and this is stored.
- The "any_blocked" output becomes TRUE if at least one axis interface is blocked.
- If an axis is blocked, the "blocked_ax_01" "... blocked_ax_16" assigned to an axis becomes TRUE.
- If any axis is blocked, the "highest_id_blocked" output indicates the highest ordinal number of all blocked axes.
- Via the "clear_all_plugs" input, for every blocked axis precisely the command is acknowledged by this FB whose ordinal number has been stored for the axis.
- For each axis, blockage can be individually removed via the "clear_ax_01 ..." "clear_ax_16 inputs".