GRAFCET — Batch Reactor Heat-Hold-Cool
A charge-heat-hold-cool-discharge batch that carries both branch shapes at once: a simultaneous divergence brings the jacket to temperature while the agitator ramps to shear speed, one convergence releases the hold, and an alternative divergence on the assay sends a failed batch round a rework hold rather than out of the vessel.
Make it your own.
title "Batch reactor — charge, heat, hold, cool, discharge"
step 1 "Vessel empty, valves shut" initial
N "Ready to charge lamp"
step 2 "Charge solvent"
N "V101 solvent valve open"
N "Load cell totalise"
step 3 "Charge reagent"
N "V102 reagent valve open"
step 4 "Heat jacket to 85 C"
N "Steam valve modulate"
S "Agitator run"
step 5 "Ramp agitator to shear speed"
N "Agitator ramp to 300 rpm"
step 6 "Hold temperature at 85 C"
N "Temperature PID at setpoint"
L 40min "Hold timer"
step 7 "Hold shear at 300 rpm"
N "Speed PID at setpoint"
step 8 "Cool to 30 C"
N "Cooling water valve open"
R "Agitator run"
step 9 "Sample and assay"
P "Sample valve pulse"
D 3min "Assay result wait"
step 10 "Rework hold, re-assay"
L 10min "Rework timer"
step 11 "Discharge to receiver"
N "Discharge pump run"
R "Cooling water valve open"
transition t1 : "recipe_loaded . start_batch"
transition t2 : "solvent_mass >= 400 kg"
transition t3 : "reagent_mass >= 85 kg"
transition t4 : "jacket_temp >= 85 C"
transition t5 : "agitator_rpm >= 300"
transition t6 : "hold_timer_done . temp_in_band"
transition t7 : "product_temp <= 30 C"
transition t8 : "assay_pass"
transition t9 : "/assay_pass"
transition t10 : "rework_timer_done"
transition t11 : "receiver_empty . discharge_done"
1 -> t1 -> 2 -> t2 -> 3 -> t3
# Heat and shear are independent and must both finish: AND, double bar.
simultaneous t3 -> 4, 5
4 -> t4 -> 6
5 -> t5 -> 7
simultaneous 6, 7 -> t6
t6 -> 8 -> t7 -> 9
# Pass or fail: OR, single bar.
alternative 9 -> t8, t9
t8 -> 11
t9 -> 10
10 -> t10 -> 9
11 -> t11 -> 1