Purpose
Queue operation is used to buffer lines of AeroScript code. This operation mode is useful for applications that require many short duration moves in a row. This often includes CNC machining or laser manufacture applications. Programs that require velocity blending, velocity profiling, or lookahead synchronization during extremely long AeroScript programs are also common use cases for queue operation. Some AeroScript commands are also only compatible with queue mode operation.
Command Queue History
Command Queue operation was officially released in Automation1 version 2.3.0.
Why would you use Command Queue? When executing AeroScript code via the .NET interface and the C library, a fixed overhead of processing time and sometimes network latency occurs between commands. Command Queue operation allows the controller to buffer single lines of AeroScript code in a FIFO (First In First Out) queue to execute commands with no latency.
Command Queue operation is supported in the .NET library and C library; this feature can't be accessed from Automation1 Studio. Command Queue obsoletes the previous Queue Mode operation and PROGRAM BUFFEREDRUN command from A3200 and has significant differences from the A3200 implementation. See Introduction to Queue Mode and Command Queue in A3200 for more details on the previous implementation.
For complete documentation, please refer to the Automation1 Help documentation on our website for the .NET API and the C API.
Governing the Command Queue
Command Queue has its own control methods to govern the task in which it runs. (The Command Queue reserves one task for operation which cannot be used for other purposes.) This differs from ProgramStop() and other AeroScript commands, which aren't available in Command Queue. The following basic control and scheduling functions are available for the Command Queue, in both the .NET API and the C API:
- Begin: Assigns a task to Command Queue mode operation. The queue begins storing all command sent to it, executing them in FIFO sequence. The assigned task cannot run normal AeroScript programs while Command Queue is executing.
- Various basic motion commands have their own Command Queue enabled versions, such as Enable, Disable, MoveLinear, etc. See the documentation for examples. For all other commands, use:
- Execute: Adds a single line of AeroBasic code to the end of the queue. This does not execute the command immediately. This is useful if you're not sure whether a specific Command Queue version of an AeroScript command exists. Please refer to the restrictions on legal commands in the documentation above.
- Pause: Pause Command Queue execution. If a queue line is currently executing, the line will complete without being aborted.
- Resume: Return from a Pause condition.
- WaitForEmpty: Halt until all commands currently in the queue have been executed. You can optionally provide a timeout for this function.
- End: Abort the currently executing AeroScript line from Command Queue, discard all remaining queued lines, and returns the assigned task to normal AeroScript execution.
The following statuses are also available for the Command Queue. Their method of retrieval differs between .NET and C.
- Paused status (boolean)
- Empty queue status (boolean)
- Number of executed commands over the queue's lifespan
- Number of unexecuted commands remaining in the queue
- Number of times the queue became empty during its lifespan
Additional Considerations
When using Command Queue, several considerations are the responsibility of the customer and end user. This includes queue starvation management, and thread safety.
Please refer to the documentation (.NET API, C API) for full information on queue starvation management and thread safety for the Queue Mode commands and class, which differ between .NET and C.
Related articles