Core Concepts
Understand Projects, Toolboxes, component trees, I/O binding, and the execution cycle
Core Concepts
Before diving into the editor, it helps to understand the foundational concepts that Sim Assist is built around. This page covers Projects, Toolboxes, the component tree, I/O binding, and the PLC execution cycle.
Projects vs Toolboxes
Projects are your working simulations. A Project contains a 3D scene, one or more PLC programs, variable definitions, and I/O bindings. Projects are what you edit, run, and share. Each project belongs to an organization and can have multiple collaborators.
Toolboxes are reusable packages of components, models, and function blocks. Think of them as libraries. A Toolbox might contain a set of conveyor belt models with pre-configured physics, or a collection of PLC function blocks for motor control. You can install Toolboxes from the Marketplace into your project, or create your own to share.
The key difference: Projects are specific simulations you build and run. Toolboxes are reusable building blocks you compose into Projects.
Component Tree
Every object in your 3D scene lives in the Component Tree — a hierarchical structure displayed in the left panel of the editor. The tree defines parent-child relationships between components.
When a parent component moves, its children move with it. This is essential for building assemblies. For example, a robotic arm might have this structure:
- Base (static)
- Shoulder Joint (rotating)
- Upper Arm
- Elbow Joint (rotating)
- Lower Arm
- Gripper
- Lower Arm
- Elbow Joint (rotating)
- Upper Arm
- Shoulder Joint (rotating)
Components in the tree can be renamed, reordered, shown, hidden, and deleted. Each component can have properties, physics bodies, and I/O pin assignments. See Component Tree for the full reference.
I/O Binding
I/O binding is the bridge between your PLC programs and the 3D simulation. It connects PLC variables to component properties so that the control logic can read sensors and drive actuators.
Inputs (PLC reads from scene): A proximity sensor component has a Detected property. You bind a PLC BOOL variable SensorActive to this property. During simulation, when an object enters the sensor's detection zone, SensorActive becomes TRUE in your PLC program.
Outputs (PLC writes to scene): A motor component has a Speed property. You bind a PLC REAL variable MotorSpeed to it. Your PLC program sets MotorSpeed to 1.0, and the motor in the scene starts turning.
Bindings are configured in the Properties panel when a component is selected. Each component type defines which properties are available for binding.
Execution Cycle
Sim Assist follows the standard IEC 61131-3 PLC scan cycle, synchronized with the simulation frame rate:
- Read Inputs — The runtime reads all bound input properties from the 3D scene (sensor states, positions, temperatures) and updates the corresponding PLC variables.
- Execute Program — All PLC programs run in their defined order. FBD networks are evaluated left to right, top to bottom. ST programs execute sequentially.
- Write Outputs — The runtime writes all bound output variables back to the 3D scene (motor speeds, valve states, light colors).
- Physics Step — The Rapier physics engine advances one simulation step, applying forces, resolving collisions, and updating positions.
- Render — The 3D viewport renders the updated scene.
This cycle repeats at the configured scan rate (default: 20ms cycle time, or 50 Hz). You can adjust the cycle time in the project settings. Faster cycle times provide more responsive control but require more processing power.
Timing Considerations
PLC timers (TON, TOF, TP) use the scan cycle time for their internal clock. If your cycle time is 20ms, a TON with a preset of 1000ms will require 50 scan cycles to elapse. The simulation clock and PLC clock are always synchronized — there is no drift between them.