Skip to content
github-actions[bot] edited this page Oct 15, 2026 · 2 revisions

Usage — running the machine on TwinCAT

Published from _docs/02-usage.md — edit it there, not here. Changes made in the wiki are overwritten on the next sync.

Operating the demo with the TwinCAT control program driving it.

For the twin's own controls — camera, selection, the tool strip, hot keys — see using the application. This page is only about the control side.

1. Startup order

The order matters: the twin's devices bind to PLC symbols on connect, so the runtime has to be there first.

  1. Open the TwinCAT solution and put the runtime into Run mode.
  2. Open Unity/Assets/Demo_1/Scenes/VC_Demo_1_Beckhoff_1.unity.
  3. Press Play.

If the twin comes up with devices that never move, the usual cause is the runtime not being in Run, or the ADS route not resolving — see 01 · Setup.

The first reset after the runtime starts references both lift axes: each carriage searches down to its B_AxisMin sensor, sets zero there, and then moves to its home level - Lift01 to 10 mm, Lift02 to 364 mm. Later resets skip the search. A reset that never finds the sensor stops with lift fault 9 instead of hanging.

2. The operator panel

The Beckhoff scene adds an on-screen panel, MAIN.FG_System.H_ControlPanel. It is a PanelSampler aggregating eight buttons, and they are PackML states rather than free-form commands:

Button
START
STOP
RESET
CLEAR
ABORT
PRODUCTION Mode
MAINTANANCE Mode. Spelled this way in the twin — the misspelling is the actual symbol name
MANUAL Mode

The bit each button occupies is in the panel's generated BitLayout on FG_System in TwinCAT.

The panel is this vendor's, not the machine's. The Siemens scene has a different one — seven controls including a rotary mode switch. That is why the panel is marked † on the main repository's pages.

3. The signal tower

H_SignalTower reports machine state by colour. The mapping is a machine-level contract, not a TwinCAT detail — it is in the state-lamp table.

4. The web HMI

Beckhoff/TwinCAT_1/HMI is a TE2000 project bound to PLC_1 as runtime PLC1 on port 851. Its pages:

Page Shows
StartPage, GroupsOverview The machine and its groups
FG_01 … FG_05 Per-group device tiles and controls
FG_Transport, FGTransport_Index, FGTransport_Lift, FGTransport_Stopper, FGTransport_Drive The conveyor, and one page per module type. The lift tile shows the carriage position, Homed, At home / At far and the limit sensors, and has Reference axis (Manual only)
FGTransport_Axes The two lift axes in TwinCAT's own motion controls - enable, jog, move, halt. Manual mode only. Reference with the lift tile's button; the NC's own homing does not use B_AxisMin
EtherCAT Bus and terminal state
Events The event log
Settings, LoginPage —

Every HMI binding is checked against the PLC's own symbols when this module is built, so a page cannot quietly bind to a symbol that no longer exists.

5. Faults, recovery and what the machine will not do

The behaviour is a machine-level contract, so it is documented in the main repository, not here:

Question Read
How a station stops, resets and hands the pallet on Transport behaviour
Why a group will not start without its Index unit same — the step chain and its three invariants
What the FG_01 laser interlock does and does not enforce FG_01 behaviour
Why a NOK verdict stops the pallet FG_02 behaviour, FG_04 behaviour
Resetting FG_03 or FG_05 with a part in the gripper Gripper station reset
The safety chain, and who owns which fact The safety chain

Two things that surprise people, both documented in full at those links:

  • No functional group runs on its own. Each is served by an Index unit in FG_Transport that fixes the pallet, triggers the group, and waits for it to report done before releasing.
  • Retracted holds the pallet; extending releases it. Several authored descriptions in the twin say the opposite and are known to be wrong.

6. Which control path to use

The twin says MAIN.FG_01.P_Camera. TwinCAT says MAIN.Machine.FG_01.P_Camera. Only the second works in a link or an HMI binding, and the first fails silently in both.

Never derive a control path by hand — the verified one for every device is on that group's page in the TwinCAT machine pages.

Clone this wiki locally