Codesys Sfc Example Apr 2026
She went to the Action Definition for Step 20. Instead of putting Drain_Valve := FALSE in the step's exit action, she created a Global Action called Acid_Safety and set its qualifier to SD (Set Dominant—stays TRUE until explicitly reset).
The transition to Step 0 required Acid_Level < 5% . But the drain valve closed after 2 seconds because the "DIP" step's action had been deactivated. She forgot: Actions in SFC only run while their step is active.
Crane_Up := TRUE; Acid_Drain_Valve := TRUE; // SD qualifier keeps this ON Emergency_Alerter := TRUE; Inside Step 0 's Entry Action:
[Step 20: DIP] --(45s & no EStop)--> [Step 30: RINSE] | | (EStop_Pressed) v [Step 99: EMERGENCY_RETRACT] --(Acid_Level<5%)--> [Step 0: IDLE] Inside Step 99 's Action: codesys sfc example
The problem was chaos. Operators would skip steps, hit "EMERGENCY RESET" mid-dip, or manually open the drain while the coil was submerged. The old ladder logic was a 40-rung monster of interlocking seals that no one understood.
But then... nothing.
This is how industrial programmers think. Not just "code that runs"—but . She went to the Action Definition for Step 20
The Pickle Paradox System: Industrial Pickling Line (Acid Bath for Steel Coils) Controller: CODESYS SoftPLC v3.5 SP20 Part 1: The Problem Engineer Lena Vasquez stared at the production log. Line 7, the steel coil pickling line, had just scrapped its third $40,000 coil of the week. The sequence: Load coil → Dip in HCl acid → Rinse → Dry → Unload .
Then she wrote a parallel :
Lena needed an .
Lena pointed at the HMI. "No. The SFC saved it. Look—step history."
The SFC jumped to Step 99. The crane rose. The drain opened.
At 3:47 PM, a bearing seized on the acid bath agitator. The temperature spiked to 110°C. Acid_Temp > 95C triggered a pre-programmed fault. But the drain valve closed after 2 seconds
The SFC was in with a coil halfway submerged.