Independent of the method used to send a command, certain constraints must be taken into account:
-
Only one command can be sent at a time (at most one command per PLC cycle). The previous command needs to be received by the channel before sending a new one.
Any command sent while another one is being exchanged with the channel will be ignored.
The availability can be checked on the bus rack through the system bit CMD_IN_PROGR (%MWr.m.c.0.1).
-
The channel can receive two commands in succession. One will be executed, while the second is in buffer, waiting for the first one to be completed. This is valid for positioning commands only, and the chosen buffer mode must be Buffered or BlendingPrevious.
-
When a command is being executed, and another one is already in buffer, the channel cannot accept a third command. Check the availability of the channel before sending any command.
If a command is sent while the channel is not available, it will be rejected, all commands in the channel will be aborted, the axis will be stopped and the corresponding error notification will be reported in the BUFFER_FULL status object (%MWr.m.c.3.4).
Module Availability to Commands
The value of implicit status objects: Idle and FreeCmdBuf allows to check if the module is available for a new command.
The following table details the different cases:
Idle
|
FreeCmdBuf
|
Meaning
|
0
|
0
|
Two cases:
In both cases, no command should be sent.
|
0
|
1
|
A command is being executed, but the command buffer is free.
A new command can be sent and will be kept in the command buffer; FreeCmdBuf is set to 0.
|
1
|
0
|
No significance
|
1
|
1
|
The buffer is free and no command is being executed.
A new command can be sent.
|