Boolean options allow a single dynamic sequence to adapt its steps, transitions, actions, and branches for each hardware variant without duplicating .seq files.
Use sequence options when multiple stations share the same base cycle but differ in physical configuration:
| Use Case | Option Name | When Option is ON |
When Option is OFF |
|---|---|---|---|
| Solenoid Valve Type | bistable |
Pulses {retract} coil during retraction |
Releases {extend} coil (spring return) |
| Sensor Feedback | fb_on |
Waits for {is_on} sensor with 3000 ms watchdog |
Waits for a fixed 500 ms delay timer |
| Optional Process | with_greasing |
Executes the greasing sub-branch | Skips directly to the next operation |
.seq file in the Sequence Editor.Bistable Valve).bistable).ON or OFF) when an instance does not override it.option) or Present when option is OFF (!option).Click the options pill under the sequence name in the top-right panel of the Sequence Editor to open the options popover:
ON / OFF) to switch the default value of the option.Each instance of a dynamic sequence can enable or disable options independently in the Machine Editor:
main.machine and select the Instances tab.asm_z or clamp).True) or OFF (False) for that specific instance.Retracting, right-click the {retract} action and assign it to option bistable (Present when option is ON).TurningOn, assign the {is_on} sensor transition and 3000 ms timeout to fb_on (Present when option is ON), and assign the 500 ms delay timer transition to !fb_on (Present when option is OFF).main.machine -> Instances, enable bistable on double-solenoid cylinders and leave it OFF on spring-return cylinders.from automation_machine import Sequence, StepType, ActionQualifier, ActionInstruction
class Cylinder(Sequence):
dynamic = True
def setup(self):
self.declare_option("bistable", "Bistable Valve", "Drive retract solenoid coil", default=False)
s0 = self.add_step(StepType.INITIAL, name="Idle")
s1 = self.add_step(StepType.NORMAL, name="Extending")
s2 = self.add_step(StepType.NORMAL, name="Retracting")
self.add_transition(s0, s1, condition="{cmd_extend}")
self.add_transition(s1, s2, condition="{is_extended}")
self.add_transition(s2, s0, condition="{is_retracted}")
s1.add_action("{extend}", "Extend cylinder", qualifier=ActionQualifier.N)
with self.option("bistable"):
s2.add_action("{retract}", "Retract cylinder", qualifier=ActionQualifier.N)
Cylinder()
AutomationView validates sequence options and instance arguments in real time:
| Code | Check |
|---|---|
S070 – S072 |
Valid option declaration name and boolean default value |
S073 – S074 |
Option block references a declared option (name or !name) |
S075 |
Sequence retains at least one initial step across all option combinations |
M022 – M024 |
Machine instance passes valid boolean values to declared options |
{variable} placeholdersS070–S075 and M022–M024 rules