Simulation
Run PLC programs in real-time with bidirectional I/O binding
Simulation Engine
The simulation engine executes your PLC programs against a live 3D scene, letting you validate automation logic without physical hardware. Programs run in the browser using a standards-compliant IEC 61131-3 runtime.
Start, Stop, and Pause
Use the simulation toolbar at the top of the editor to control execution:
- Start begins execution from the current state. All I/O bindings become active and the PLC program enters its scan cycle.
- Pause freezes execution mid-cycle. The 3D scene and all variable values are held in place so you can inspect state.
- Stop halts execution and resets all outputs to their default values. Input bindings are disconnected.
- Reset returns the 3D scene to its initial positions and clears all retained variable values.
You can also use keyboard shortcuts: Space to toggle start/stop, and F5 to reset.
Execution Speed
By default the simulation runs in real-time mode at 60 frames per second, meaning one second of simulation time equals one second of wall-clock time. You can adjust this:
- 0.1x — Slow motion, useful for observing fast sequences step by step.
- 1x — Real-time. Matches physical timing for realistic testing.
- 5x / 10x — Accelerated execution for long-running processes like batch sequences or timer-heavy logic.
The speed multiplier is displayed in the toolbar and can be changed while the simulation is running.
Cycle Time Configuration
The PLC scan cycle time determines how frequently your program is evaluated. The default is 10 ms, which suits most applications. You can configure this in Project Settings → Simulation:
| Cycle Time | Use Case |
|---|---|
| 1 ms | High-speed motion control, precise timing |
| 10 ms | General automation, conveyor logic |
| 50 ms | Slow processes, HVAC, level control |
| 100 ms | Monitoring-only applications |
Shorter cycle times increase CPU load. If you notice dropped frames in the 3D view, consider increasing the cycle time.
Bidirectional I/O Binding
The simulation engine connects PLC variables to 3D scene objects through I/O bindings, creating a closed feedback loop:
PLC Outputs Drive the Scene
When your PLC program sets an output variable, the bound 3D object reacts immediately. Examples include:
- A
BOOLoutput activates a conveyor belt motor, causing the belt mesh to animate. - A
REALoutput sets a servo position, rotating a 3D joint to the target angle. - An
INToutput changes a signal light color by switching the material on a lamp object.
Scene Sensors Feed PLC Inputs
Sensors placed in the 3D scene detect physical interactions and write values back to PLC input variables:
- A proximity sensor sets a
BOOLinput toTRUEwhen an object enters its detection zone. - A distance sensor writes a
REALvalue representing the measured distance to the nearest object. - A counter sensor increments an
INTeach time an object passes through a gate.
You configure bindings in the I/O Mapping panel by dragging a PLC variable onto a scene object property.
Simulation Modes
Sim Assist supports several simulation modes depending on your workflow:
- Standalone — The PLC program and 3D scene run entirely in the browser. No external connections are needed.
- OPC UA Connected — The simulation bridges to a real PLC or SCADA system via OPC UA. See the OPC UA Integration page for setup details.
- Hardware-in-the-Loop (HIL) — A real PLC controls the simulated 3D scene. Inputs from the scene are sent to the PLC, and PLC outputs drive the simulation.
- Software-in-the-Loop (SIL) — The browser-based PLC runtime replaces a physical controller, allowing full testing without any hardware.