Axioms
These rules serve as a basis for creating automation routines. They are enforced by the software so do not worry about breaking the rules; it helps to be familiar with them though.
Axiom 1 - Links transfer data from outputs to inputs
Outputs are always located on the right side of a command. Inputs are always on the left. A link can only be connected between an output and an input. An activated link, meaning it is carrying data, is white. An idle link is black.
Axiom 2 - Commands in series run sequentially
In the example below, PlaceManualPoint will never run before Wait, and Wait will not run until GoToLoadPosition completes.
Axiom 3 - Commands in parallel run concurrently
Below, both GoToLoadPosition and DriveToPosition will run at the same time. Notice they are operating on different devices. It is important not to run multiple commands on the same device at the same time or unexpected behavior might occur.
Axiom 4 - One output can link to multiple inputs
Outputs can connect to multiple inputs. When the output emits a value, the same value is sent to all inputs simultaneously.
Axiom 5 - Parameters can only have a single link
Parameters (inputs that require a value) only accept a single link. If a second is added the first is disconnected.
Axiom 6 - Triggers can have multiple links
Triggers can have zero or more links. When multiple links are connected to the same trigger if any of them are actived the trigger is fulfilled.
When a command has multiple triggers each trigger that has at least one link must be fulfilled.
Axiom 7 - All inputs with a link must be fulfilled
All inputs with a link must be fulfilled to run the command. In the example below, the outpus: OnManualMeasure, OnChange, and Result must all happen in order for DriveToPosition to run.
Axiom 8 - Commands that cannot run appear faded and gray
One reason that a command can't run is that the command may be missing a link. Make sure all active inputs are connected. All subsequent commmands in the chain will also show as gray.
The second reason that a command will not run is because a dead cycle exists. Every command in the cycle relies on the previous command to run fisrt.