AutomationView provides a complete variable system for defining, tracking, and mapping PLC variables across your project.
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.
Variables are organized by scope, which determines whether they correspond to physical I/O or internal memory.
| Scope | Address Prefix | Description |
|---|---|---|
| Input | %I |
Physical inputs (sensors, switches) |
| Output | %Q |
Physical outputs (actuators, motors) |
| Memory | %M / %MW |
Internal memory |
| Local | - | Variables local to a Sequence |
Addresses follow the IEC 61131-3 standard. The format is %<area><size><byte>.<bit>:
%I0.0 -> Input byte 0, bit 0
%Q0.1 -> Output byte 0, bit 1
%MW100 -> Memory word 100
%MD200 -> Memory double-word 200
Address conflicts (two variables sharing the same address) are automatically detected by Intelligent Diagnostics. Always run Validate Addresses after manual address changes.
Run AutomationView: Assign Addresses (Automatic) to auto-assign non-conflicting addresses to all variables. This is the fastest way to get started.
Run AutomationView: Assign Addresses (Manual) to assign addresses one by one with conflict validation.
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 scope |
| Variable Info | Show type, address, and usage context |
| Validate Addresses | Check for conflicts and duplicates |
The Variables panel organizes your variables by scope:
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 automatically detects variables from your Sequence code and intelligently infers their scope:
This auto-detection is a suggestion only. You can always override the inferred scope and assign the variable to a different category.