In TwinCAT, the PROGRAM or FUNCTION_BLOCK structure has a specific order of execution. The VAR section declares variables, but it doesn't execute logic. To run logic on the first scan, you declare a boolean flag and check its state.
You can use this bit in to set default values at startup: beckhoff first scan bit
: Essential for setting default values for retentive memory variables. In TwinCAT, the PROGRAM or FUNCTION_BLOCK structure has
PROGRAM MAIN VAR bInitDone : BOOL; myCounter : INT; END_VAR You can use this bit in to set
FirstScan gives you a deterministic moment to reset, preset, or home everything before normal operation begins.
🚀 Ensures that PID gains, speed limits, or timers start with default "safe" values rather than zeros.
: It is built into the runtime and is highly reliable for initializing state machines or variables. Implementation Example