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 TimeUse Case
1 msHigh-speed motion control, precise timing
10 msGeneral automation, conveyor logic
50 msSlow processes, HVAC, level control
100 msMonitoring-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 BOOL output activates a conveyor belt motor, causing the belt mesh to animate.
  • A REAL output sets a servo position, rotating a 3D joint to the target angle.
  • An INT output 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 BOOL input to TRUE when an object enters its detection zone.
  • A distance sensor writes a REAL value representing the measured distance to the nearest object.
  • A counter sensor increments an INT each 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.

On this page