AutomationView discovers, tracks, and maps the PLC variables used across your project. Variables are not created from a panel button - AutomationView ingests them automatically from your Sequence files and machine configuration, then lets you list, rename, inspect, and address them.
AutomationView supports all standard IEC 61131-3 data types. These are the types you can assign to your variables.
| Type | Description | Example |
|---|---|---|
BOOL |
Boolean (true/false) | sensor_1, motor_on |
INT |
16-bit signed integer | counter, speed |
DINT |
32-bit signed integer | position, total_count |
REAL |
32-bit floating point | temperature, pressure |
STRING |
Text string | product_name |
TIME |
Duration value | delay_time |
WORD |
16-bit unsigned | status_flags |
DWORD |
32-bit unsigned | error_code |
BYTE |
8-bit unsigned | data_byte |
ARRAY |
Array of values | positions[10] |
Compound types are special variable types that correspond to IEC 61131-3 function blocks. Each compound variable contains child fields that you access with dot notation (e.g., my_timer.Q).
| Type | Children | Description |
|---|---|---|
| TON | .IN, .Q, .PT, .ET |
On-delay timer |
| TOF | .IN, .Q, .PT, .ET |
Off-delay timer |
| TP | .IN, .Q, .PT, .ET |
Pulse timer |
| RTO | .IN, .Q, .PT, .ET |
Retentive on-delay timer |
| CTU | .CU, .Q, .PV, .CV |
Count-up counter |
| CTD | .CD, .Q, .PV, .CV |
Count-down counter |
Timer and counter variables are used with their corresponding instructions. For example, a
TONvariable is used with the TON instruction in an action.
In the Variables sidebar, each variable is grouped by its usage context - whether it is wired to physical I/O or kept internal.
| Usage context | Address area | Description |
|---|---|---|
| Input | %I |
Assigned to an input channel (sensors, switches) |
| Output | %Q |
Assigned to an output channel (actuators, motors) |
| Local | - | Not assigned to any I/O channel (default) |
Usage context (input / output / local) is what drives the sidebar categories while you edit. It is distinct from the export scope (local / global / io), which is derived only when PLC code is generated. See the Variable Scope reference.
I/O addresses are computed from the equipment channel and follow the pattern % + area + size + byte offset (+ .bit for bit channels):
I for inputs, Q for outputs.X (bit, <= 1 bit), B (byte, <= 8 bits), W (word, <= 16 bits), D (double word, > 16 bits)..bit suffix is appended only for X (bit) channels.%IX2.0 -> Input bit, byte offset 2, bit 0
%QW4 -> Output word, byte offset 4
%IB1 -> Input byte, offset 1
%QD8 -> Output double word, offset 8
A conflict is detected when the same address is claimed by more than one variable. Run Validate Addresses after changing assignments to check for conflicts and unassigned channels.
I/O addresses are not stored in a separate file or a standalone I/O editor. The mapping lives in the Machine editor, on its Architecture tab, and persists inside the .machine file. There you assign a variable to each equipment channel, and AutomationView computes the matching %I/%Q address.
Run AutomationView: Assign Addresses (Automatic) to compute non-conflicting addresses for unassigned channels. The command opens the Architecture tab and reports how many channels it auto-assigned. For the assignments to persist in the .machine file, apply them from the Machine editor's Architecture tab.
Run AutomationView: Assign Addresses (Manual) to open the Architecture tab and assign variables to channels one by one in the grid.
All variable commands are available through the Command Palette (Ctrl+Shift+P). See the Variable Commands reference for full details.
| Command | Description |
|---|---|
| Rename Variable | Project-wide rename refactoring |
| Get Variable Value | Read value during emulation |
| Set Variable Value | Force a value during emulation |
| List Variables | Show all project variables |
| List Inputs / Outputs / Locals | Filter by usage context |
| Variable Info | Show type, address, and usage context |
| Validate Addresses | Check for conflicts and duplicates |
The Variables panel organizes your variables by usage context:
Variables
+-- Inputs
| +-- start_button (BOOL) %I0.0
| +-- sensor_1 (BOOL) %I0.1
+-- Outputs
| +-- motor (BOOL) %Q0.0
| +-- valve (BOOL) %Q0.1
+-- Locals
+-- counter (INT)
+-- delay_timer (TON)
During emulation, values update in real time. You can click any variable to inspect or force its value.
AutomationView ingests variables automatically from your Sequence code and machine configuration. A name referenced in a transition condition or action is registered as a variable when the file is parsed.
A variable's usage context (input / output / local) follows its I/O assignment: assign it to an input channel and it becomes an input, to an output channel and it becomes an output. Anything not assigned to an I/O channel stays local.