The SFC jumped to Step 99. The crane rose. The drain opened.
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).
In CODESYS SFC, she right-clicked Step 20 and selected . She created an Action named Acid_Emergency . She set its qualifier to N (Non-Stored, executes while step is active) and S (Set/Stored for emergency). codesys sfc example
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 .
She slammed her fist on the desk.
Lena needed an .
Crane_Up := TRUE; Acid_Drain_Valve := TRUE; // SD qualifier keeps this ON Emergency_Alerter := TRUE; Inside Step 0 's Entry Action: The SFC jumped to Step 99
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.
Transition from Step 20: Condition: (T#45s) AND NOT EStop_Pressed Supervisory Logic (Parallel Branch): IF EStop_Pressed THEN Jump to Step 99: EMERGENCY_RETRACT END_IF She went to the Action Definition for Step 20
The SFC's showed:
But then... nothing.