Process library¶
Process-industry loops (flow, level, temperature) with ISA tags, sensor presets, faults, degradations and maintenance tasks.
Load it with library: process, or pin its major version with library: process@1 (the current version is 1). Every template is a subsystem made only of core operators; the library adds names, ISA tags, units, defaults, sensor presets, faults, degradations and maintenance tasks.
Tags¶
A loop unit is named after its controller, for example TIC-101. It creates the transmitter reading TT-101 (the measured value), the valve position TV-101, and the controller's TIC-101.sp, TIC-101.mode, TIC-101.man_out and TIC-101.out. The true regulated variable is TIC-101.cv. Analyzers and lab results get AT- tags with the unit's number, and a template's ports are <unit>.<port>. Parameters of the operators inside a unit are paths such as TIC-101.plant.K.
Templates¶
flow_loop¶
Flow control loop: a fast first-order-plus-dead-time flow response to the valve, upstream pressure as the disturbance, and a noisy flowmeter.
Parameters
| Parameter | Default | Unit | Description |
|---|---|---|---|
sp |
50.0 |
m3/h |
initial setpoint |
mode |
AUTO |
1 |
initial controller mode One of MAN, AUTO, CAS. |
Kc |
0.8 |
%/(m3/h) |
controller gain (tuning: manual) |
Ti |
5.0 |
s |
integral time (tuning: manual) |
tuning |
manual |
1 |
manual (use Kc and Ti) or simc (compute them from the plant model) One of manual, simc. |
detune |
1.0 |
1 |
simc: multiplies the closed-loop time constant (above 1 is slower and more robust) |
Td |
0.0 |
s |
derivative time |
fs |
0.0 |
% |
valve static friction band (stiction) |
fd |
0.0 |
% |
valve dynamic friction band |
scan |
0.0 |
s |
controller scan period, a multiple of dt (0 = every step) |
sensor |
magnetic_flowmeter |
1 |
sensor preset One of thermocouple, magnetic_flowmeter, radar_level, online_analyzer, lab. |
span |
[0.0, 100.0] |
m3/h |
measurement span [low, high] |
cv |
1 |
name of the true regulated signal (default |
|
K |
1.0 |
(m3/h)/% |
flow per % of valve opening |
tau |
5.0 |
s |
flow time constant |
theta |
1.0 |
s |
flow dead time |
Kp |
5.0 |
(m3/h)/bar |
flow change per bar of upstream pressure deviation |
Ports (bind with exogenous: {target: <unit>.<port>, source: ...} or from: <signal>)
| Port | Default | Unit | Description |
|---|---|---|---|
pressure |
0.0 |
bar |
upstream pressure deviation |
rsp |
optional | m3/h |
remote setpoint, followed in CAS mode |
level_loop¶
Level control loop: the level integrates inflow minus outflow; the controller opens the outlet valve when the level rises (direct acting).
Parameters
| Parameter | Default | Unit | Description |
|---|---|---|---|
sp |
50.0 |
% |
initial setpoint |
mode |
AUTO |
1 |
initial controller mode One of MAN, AUTO, CAS. |
Kc |
1.4 |
%/(%) |
controller gain (tuning: manual) |
Ti |
1200.0 |
s |
integral time (tuning: manual) |
tuning |
manual |
1 |
manual (use Kc and Ti) or simc (compute them from the plant model) One of manual, simc. |
detune |
1.0 |
1 |
simc: multiplies the closed-loop time constant (above 1 is slower and more robust) |
Td |
0.0 |
s |
derivative time |
fs |
0.0 |
% |
valve static friction band (stiction) |
fd |
0.0 |
% |
valve dynamic friction band |
scan |
0.0 |
s |
controller scan period, a multiple of dt (0 = every step) |
sensor |
radar_level |
1 |
sensor preset One of thermocouple, magnetic_flowmeter, radar_level, online_analyzer, lab. |
span |
[0.0, 100.0] |
% |
measurement span [low, high] |
cv |
1 |
name of the true regulated signal (default |
|
Kv |
0.5 |
(m3/h)/% |
outflow per % of outlet valve opening |
tau_v |
2.0 |
s |
outflow time constant |
area |
2.0 |
m2 |
tank cross-section |
height |
3.0 |
m |
tank height (100 % level) |
Ports (bind with exogenous: {target: <unit>.<port>, source: ...} or from: <signal>)
| Port | Default | Unit | Description |
|---|---|---|---|
inflow |
20.0 |
m3/h |
inflow to the tank |
rsp |
optional | % |
remote setpoint, followed in CAS mode |
temperature_loop¶
Temperature control loop: a slow first-order-plus-dead-time response to the heating valve, the feed temperature as the disturbance, and a lagged thermocouple.
Parameters
| Parameter | Default | Unit | Description |
|---|---|---|---|
sp |
80.0 |
degC |
initial setpoint |
mode |
AUTO |
1 |
initial controller mode One of MAN, AUTO, CAS. |
Kc |
4.0 |
%/(degC) |
controller gain (tuning: manual) |
Ti |
600.0 |
s |
integral time (tuning: manual) |
tuning |
manual |
1 |
manual (use Kc and Ti) or simc (compute them from the plant model) One of manual, simc. |
detune |
1.0 |
1 |
simc: multiplies the closed-loop time constant (above 1 is slower and more robust) |
Td |
0.0 |
s |
derivative time |
fs |
0.0 |
% |
valve static friction band (stiction) |
fd |
0.0 |
% |
valve dynamic friction band |
scan |
0.0 |
s |
controller scan period, a multiple of dt (0 = every step) |
sensor |
thermocouple |
1 |
sensor preset One of thermocouple, magnetic_flowmeter, radar_level, online_analyzer, lab. |
span |
[0.0, 200.0] |
degC |
measurement span [low, high] |
cv |
1 |
name of the true regulated signal (default |
|
K |
0.8 |
degC/% |
temperature rise per % of heating valve opening |
tau |
600.0 |
s |
process time constant |
theta |
60.0 |
s |
process dead time |
Kd |
0.5 |
1 |
effect of the feed temperature |
tau_d |
900.0 |
s |
feed temperature time constant |
base |
10.0 |
degC |
temperature with the valve closed and a 0 degC feed |
Ports (bind with exogenous: {target: <unit>.<port>, source: ...} or from: <signal>)
| Port | Default | Unit | Description |
|---|---|---|---|
feed_temp |
25.0 |
degC |
feed temperature |
rsp |
optional | degC |
remote setpoint, followed in CAS mode |
mixer¶
Two feeds mixed in proportion to their flows, then plug flow through the outlet pipe (transit time = volume / total flow), with an online analyzer.
Parameters
| Parameter | Default | Unit | Description |
|---|---|---|---|
volume |
2.0 |
m3 |
volume of the outlet pipe (plug flow) |
max_transit |
21600.0 |
s |
longest transit time to support (at low flows) |
analyzer |
True |
1 |
measure the outlet property with an online analyzer |
span |
[0.0, 10.0] |
1 |
analyzer span [low, high] |
Ports (bind with exogenous: {target: <unit>.<port>, source: ...} or from: <signal>)
| Port | Default | Unit | Description |
|---|---|---|---|
flow_a |
10.0 |
m3/h |
flow of feed A |
prop_a |
1.0 |
1 |
property of feed A (for example a concentration) |
flow_b |
10.0 |
m3/h |
flow of feed B |
prop_b |
3.0 |
1 |
property of feed B |
heat_exchanger¶
A heating valve controls the process outlet temperature; the temperature rise per % of valve falls as the process flow rises.
Parameters
| Parameter | Default | Unit | Description |
|---|---|---|---|
sp |
70.0 |
degC |
initial setpoint |
mode |
AUTO |
1 |
initial controller mode One of MAN, AUTO, CAS. |
Kc |
4.0 |
%/(degC) |
controller gain (tuning: manual) |
Ti |
300.0 |
s |
integral time (tuning: manual) |
tuning |
manual |
1 |
manual (use Kc and Ti) or simc (compute them from the plant model) One of manual, simc. |
detune |
1.0 |
1 |
simc: multiplies the closed-loop time constant (above 1 is slower and more robust) |
Td |
0.0 |
s |
derivative time |
fs |
0.0 |
% |
valve static friction band (stiction) |
fd |
0.0 |
% |
valve dynamic friction band |
scan |
0.0 |
s |
controller scan period, a multiple of dt (0 = every step) |
sensor |
thermocouple |
1 |
sensor preset One of thermocouple, magnetic_flowmeter, radar_level, online_analyzer, lab. |
span |
[0.0, 200.0] |
degC |
measurement span [low, high] |
cv |
1 |
name of the true regulated signal (default |
|
K |
0.6 |
degC/% |
temperature rise per % of heating valve at the nominal flow |
tau |
300.0 |
s |
exchanger time constant |
theta |
30.0 |
s |
exchanger dead time |
F_nom |
20.0 |
m3/h |
nominal process flow |
tau_in |
300.0 |
s |
time constant of the inlet temperature's effect |
Ports (bind with exogenous: {target: <unit>.<port>, source: ...} or from: <signal>)
| Port | Default | Unit | Description |
|---|---|---|---|
flow |
20.0 |
m3/h |
process flow through the exchanger |
inlet_temp |
25.0 |
degC |
process inlet temperature |
rsp |
optional | degC |
remote setpoint, followed in CAS mode |
reactor¶
A reactor temperature loop plus the product property: an Arrhenius- and feed-ratio-dependent law, plug flow and back-mixing through the reactor, and a lab analysis, by default every 4 h and reported 1 h later.
Parameters
| Parameter | Default | Unit | Description |
|---|---|---|---|
sp |
80.0 |
degC |
initial setpoint |
mode |
AUTO |
1 |
initial controller mode One of MAN, AUTO, CAS. |
Kc |
4.0 |
%/(degC) |
controller gain (tuning: manual) |
Ti |
600.0 |
s |
integral time (tuning: manual) |
tuning |
manual |
1 |
manual (use Kc and Ti) or simc (compute them from the plant model) One of manual, simc. |
detune |
1.0 |
1 |
simc: multiplies the closed-loop time constant (above 1 is slower and more robust) |
Td |
0.0 |
s |
derivative time |
fs |
0.0 |
% |
valve static friction band (stiction) |
fd |
0.0 |
% |
valve dynamic friction band |
scan |
0.0 |
s |
controller scan period, a multiple of dt (0 = every step) |
sensor |
thermocouple |
1 |
sensor preset One of thermocouple, magnetic_flowmeter, radar_level, online_analyzer, lab. |
span |
[0.0, 200.0] |
degC |
measurement span [low, high] |
cv |
1 |
name of the true regulated signal (default |
|
K |
0.8 |
degC/% |
temperature rise per % of heating valve opening |
tau |
600.0 |
s |
process time constant |
theta |
60.0 |
s |
process dead time |
Kd |
0.5 |
1 |
effect of the feed temperature |
tau_d |
900.0 |
s |
feed temperature time constant |
base |
10.0 |
degC |
temperature with the valve closed and a 0 degC feed |
q_ref |
2.0 |
1 |
product property at the reference temperature, feed ratio 1 and full catalyst activity |
t_ref |
80.0 |
degC |
reference temperature |
E_R |
5000.0 |
K |
activation temperature E/R of the property's temperature dependence |
b |
1.0 |
1 |
exponent of the feed ratio |
volume |
5.0 |
m3 |
reactor volume, crossed in plug flow |
tau_mix |
600.0 |
s |
back-mixing time constant at the nominal flow |
F_nom |
10.0 |
m3/h |
nominal feed flow |
max_residence |
21600.0 |
s |
longest residence time to support (at low flows) |
lab_span |
[0.0, 10.0] |
1 |
span of the lab analysis [low, high] |
lab_period |
14400.0 |
s |
time between lab samples |
lab_delay |
3600.0 |
s |
time from taking a lab sample to reporting its result |
Ports (bind with exogenous: {target: <unit>.<port>, source: ...} or from: <signal>)
| Port | Default | Unit | Description |
|---|---|---|---|
feed_temp |
25.0 |
degC |
feed temperature |
rsp |
optional | degC |
remote setpoint, followed in CAS mode |
flow |
10.0 |
m3/h |
feed flow |
ratio |
1.0 |
1 |
feed ratio, for example of a comonomer or a chain-transfer agent |
cstr¶
A stirred reactor with two feeds and a reaction on a catalyst: the fraction of B left in the reactor, the reaction heat and the catalyst's poisoning by a feed impurity are latent states that shift the product property; a lab analysis, by default every 4 h and reported 1 h later.
Parameters
| Parameter | Default | Unit | Description |
|---|---|---|---|
sp |
80.0 |
degC |
initial setpoint |
mode |
AUTO |
1 |
initial controller mode One of MAN, AUTO, CAS. |
Kc |
4.0 |
%/(degC) |
controller gain (tuning: manual) |
Ti |
600.0 |
s |
integral time (tuning: manual) |
tuning |
manual |
1 |
manual (use Kc and Ti) or simc (compute them from the plant model) One of manual, simc. |
detune |
1.0 |
1 |
simc: multiplies the closed-loop time constant (above 1 is slower and more robust) |
Td |
0.0 |
s |
derivative time |
fs |
0.0 |
% |
valve static friction band (stiction) |
fd |
0.0 |
% |
valve dynamic friction band |
scan |
0.0 |
s |
controller scan period, a multiple of dt (0 = every step) |
sensor |
thermocouple |
1 |
sensor preset One of thermocouple, magnetic_flowmeter, radar_level, online_analyzer, lab. |
span |
[0.0, 200.0] |
degC |
measurement span [low, high] |
cv |
1 |
name of the true regulated signal (default |
|
K |
0.8 |
degC/% |
temperature rise per % of heating valve opening |
tau |
600.0 |
s |
process time constant |
theta |
60.0 |
s |
process dead time |
Kd |
0.5 |
1 |
effect of the feed temperature |
tau_d |
900.0 |
s |
feed temperature time constant |
base |
10.0 |
degC |
temperature with the valve closed and a 0 degC feed |
volume |
5.0 |
m3 |
reactor volume (well mixed) |
k_ref |
4.0 |
1/h |
rate constant at t_ref with fresh catalyst and no impurity |
E_k |
8000.0 |
K |
activation temperature E/R of the reaction rate |
poison |
0.3 |
1/ppm |
activity lost to the impurity in the reactor: factor exp(−poison · impurity) |
dT_rxn |
50.0 |
degC |
temperature rise per unit fraction of feed converted (heat of reaction) |
Kf |
1.5 |
degC/(m3/h) |
cooling by the feed per m3/h above F_nom |
F_nom |
10.0 |
m3/h |
nominal total feed |
q_ref |
1.0 |
1 |
product property at t_ref and x_ref, with fresh catalyst and no impurity |
x_ref |
0.08 |
1 |
reference fraction of B in the reactor |
b |
0.8 |
1 |
exponent of the fraction of B in the reactor |
E_q |
3000.0 |
K |
activation temperature of the property's own temperature dependence |
gamma |
0.15 |
1/ppm |
direct effect of the impurity on the property: factor exp(gamma · impurity) |
c |
1.5 |
1 |
exponent of the catalyst activity (an ageing catalyst makes a different product) |
t_ref |
80.0 |
degC |
reference temperature |
pipe_volume |
0.5 |
m3 |
volume of the outlet line (plug flow) |
max_residence |
21600.0 |
s |
longest transit through the outlet line to support (at low flows) |
lab_span |
[0.0, 2.0] |
1 |
span of the lab analysis [low, high] |
lab_period |
14400.0 |
s |
time between lab samples |
lab_delay |
3600.0 |
s |
time from taking a lab sample to reporting its result |
Ports (bind with exogenous: {target: <unit>.<port>, source: ...} or from: <signal>)
| Port | Default | Unit | Description |
|---|---|---|---|
feed_temp |
25.0 |
degC |
feed temperature |
rsp |
optional | degC |
remote setpoint, followed in CAS mode |
flow_a |
8.0 |
m3/h |
flow of feed A, the main feed |
flow_b |
2.0 |
m3/h |
flow of feed B, the reactant |
impurity |
1.0 |
ppm |
impurity carried by feed A; it poisons the catalyst |
Sensor presets¶
Errors are percentages of the measurement span; a sample period of 0 means a reading at every step.
| Preset | Description | Lag | Noise (sd) | Quantization | Sample period | Report delay |
|---|---|---|---|---|---|---|
thermocouple |
Thermocouple in a thermowell. | 20 s | 0.05 % | 0.01 % | every step | |
magnetic_flowmeter |
Magnetic flowmeter. | 1 s | 0.5 % | 0.05 % | every step | |
radar_level |
Radar level transmitter. | 2 s | 0.2 % | 0.1 % | every step | |
online_analyzer |
Online analyzer: a sample every 10 min, reported 5 min later. | 1 min | 1 % | 0.1 % | 10 min | 5 min |
lab |
Laboratory analysis: a sample every 4 h, reported 1 h later. | 0 s | 2 % | 0.5 % | 4 h | 1 h |
Faults¶
Use a fault in interventions with fault: <name> and a unit as target.
| Fault | Description | Applies to | Magnitude | Default profile |
|---|---|---|---|---|
valve_stiction |
The valve develops stick-slip friction. | all templates | static friction band in % of travel (default 3); the dynamic band is half of it | ramp over 12 h |
valve_stuck |
The valve stops moving and holds its position. | all templates | not used | step |
sensor_bias |
The transmitter reading jumps by an offset. | all templates | offset in measurement units (default 2 % of span) | step |
sensor_drift |
The transmitter reading drifts away from the true value. | all templates | total drift in measurement units (default 2 % of span) | ramp over 1 d |
sensor_noise |
The transmitter becomes noisier. | all templates | factor on the noise standard deviation (default 5) | step |
fouling |
Heat-transfer fouling: the heating valve loses effect on the temperature. | temperature_loop, heat_exchanger, reactor, cstr |
factor on the process gain (default 0.7) | ramp over 2 d |
Degradations¶
Use a degradation under degradation, with its parameters as keys.
fouling¶
Heat-transfer fouling that grows faster at higher temperatures and cuts the heating gain; cleaning resets it. Applies to: temperature_loop, heat_exchanger, reactor, cstr.
| Parameter | Default | Unit | Description |
|---|---|---|---|
rate |
0.01 |
1/day |
fraction of the heating gain lost per day at the reference temperature |
t_ref |
80.0 |
degC |
reference temperature |
max |
0.8 |
1 |
largest fraction that can be lost |
sensor_drift¶
The transmitter drifts at a steady rate; calibration resets it. Applies to: all templates.
| Parameter | Default | Unit | Description |
|---|---|---|---|
rate |
0.1 |
%/day |
drift per day, in % of the measurement span |
valve_wear¶
Packing wear widens the valve's stick-slip friction bands; replacing the valve resets it. Applies to: all templates.
| Parameter | Default | Unit | Description |
|---|---|---|---|
rate |
0.05 |
%/day |
growth of the static friction band per day, in % of travel |
max |
10.0 |
% |
largest growth |
catalyst_decay¶
The catalyst loses activity, faster at higher temperatures, lowering the product property; replacing the catalyst resets it. Applies to: reactor, cstr.
| Parameter | Default | Unit | Description |
|---|---|---|---|
rate |
0.02 |
1/day |
fraction of the activity lost per day at the reference temperature |
t_ref |
80.0 |
degC |
reference temperature |
max |
0.9 |
1 |
largest fraction that can be lost |
Maintenance tasks¶
Use a task in plan.maintenance with task: <name> and one unit or several as target.
| Task | Description | Applies to | Needs duration |
|---|---|---|---|
clean |
Clean the heat-transfer surface: fouling returns to zero. | temperature_loop, heat_exchanger, reactor, cstr |
|
replace_catalyst |
Replace the catalyst: its activity returns to fresh. | reactor, cstr |
|
calibrate |
Calibrate the transmitter: its offset and drift return to zero. | all templates | |
replace_sensor |
Replace the transmitter with a new one: calibrated, nominal noise, fresh state. | all templates | |
replace_valve |
Replace the valve: friction bands and wear return to nominal. | all templates | |
stop |
Stop the loop for a while: the valve closes in manual, then the loop returns to automatic. | all templates | yes |
remove_sensor |
Remove the transmitter: its reading becomes NaN and the controller holds its output. | all templates | |
install_sensor |
Install a new transmitter: readings resume. | all templates |