AutomationView organizes variables using two complementary properties:
input, output, local) groups variables in the Machine Editor Variables tab and the Variables sidebar.io, global, local) determines where each variable is declared when generating PLC code.| Property | Usage Context | Export Scope |
|---|---|---|
| Values | input, output, local |
io, global, local |
| Where it appears | Machine Editor Variables tab & Variables sidebar | Generated PLC code (GVL vs POU VAR) |
| How it is set | Set in the Variables tab or derived from %I / %Q channel bindings |
Computed automatically during PLC export |
| Category | Meaning |
|---|---|
| Input | Wired to a physical input channel (%I) or marked as input in main.machine |
| Output | Wired to a physical output channel (%Q) or marked as output in main.machine |
| Local | Internal project or sequence variable (local) |
Filter the Variables sidebar using Command Palette commands:
| Command | Action |
|---|---|
| AutomationView: List Inputs | Show input variables |
| AutomationView: List Outputs | Show output variables |
| AutomationView: List Locals | Show internal local variables |
When exporting to a PLC target, AutomationView assigns each variable to the appropriate declaration block:
| Scope | Rule | Target Declaration |
|---|---|---|
| io | Variable is bound to a %I or %Q hardware channel |
Hardware I/O Global Variable List (IO_GVL) |
| global | Variable is declared in main.machine or shared across multiple sequences |
Shared Global Variable List (GVL) |
| local | Variable is used inside a single sequence or wrapped in {variable} instance braces |
The sequence POU's local VAR block (or instance prefix Instance_var) |
{variable} PlaceholdersIn a dynamic sequence, wrapping a variable in braces (for example {CylinderExtend}) scopes it to each configured instance (Station1_CylinderExtend, Station2_CylinderExtend). Unbraced variables in a dynamic sequence remain shared across all instances.
.seq files. Their data type is inferred from context (for example count == 5 infers INT).main.machine via the Variables tab or the Declare in main.machine (Freeze) action. Explicit declarations lock the variable's data type, array dimensions, initial value, and description.%I / %Q address.