Fluid catalytic cracking unit (FCCU) is a critical unit in modern oil refineries. The diagram shows where a FCCU fits in an oil refinery. FCCUs convert heavy hydrocarbons into lighter and valuable products such as LPG, gasoline, etc. As shown, the FCCU operation involves catalytic reaction, catalyst regeneration, and distillation
Given the importance of FCCUs in petrochemical industry, it would be good for a process data scientist to have some experience with ML-based monitoring of FCCUs. Therefore, we simulated an open source FCCU Model to generate data from fault-free and faulty operations to enable evaluation of fault detection and diagnosis techniques.
FCC Model and Measured Signals
Santander et al., in their work titled ‘An open source fluid catalytic cracker – fractionator model to support the development and benchmarking of process control, machine learning and operation strategies,’ provided an open source (https://github.com/Baldea-Group/FCC-Fractionator) model of a FCCU process with regulatory control. The process flow diagram below shows the subunits and controllers included in their model.
A total of 46 signals are made available as outputs and assumed to be recorded every minute. The table below lists the measured signals.
[Readers are encouraged to refer to the original work by McFarlane et al. on the modeling of FCCU. It provides greater clarity on the model provided by Santander et al.]
Dataset Files
Dataset files are available here. Data has been provided in 7 CSV files. Each file contains data from one simulation. The table below provides details on the contents of each file. Two of the CSV files contain data from fault-free conditions. The Python notebook FCCU_dataExplore_NOC.ipynb in the GitHub repository plots relevant signals. Each CSV file has 47 columns: the first column fives the time (in mins) of sampling and the rest of the 46 columns correspond to the signals listed in Table 1 in the shown order. For example, the 2nd column in the CSV file contains data for the fresh feed flow (F3).
Normal/Faulty | Filename | Data details |
---|---|---|
Normal | NOC_stableFeedFlow_outputs.csv | 2 days of data with feed flow stable and ambient temperature ranging from 75 degree F to 80 degree F. |
Normal | NOC_varyingFeedFlow_outputs.csv | 7 days of data with feed flow showing around 5% variations and ambient temperature ranging from 75 degree F to 80 degree F. |
Faulty | UAf_decrease_outputs.csv | 1 day of data with heat exchanger fouling |
Faulty | condEff_decrease_outputs.csv | 1 day of data with decreased condenser efficiency |
Faulty | Fhn_sensorDrift_outputs.csv | 1 day of data with Heavy Naphtha flow sensor drift |
Faulty | deltaP_increase_outputs.csv | 1 day of data with higher pressure drop between reactor (P4) and fractionator (P5) |
Faulty | CAB_valveLeak_outputs.csv | 1 day of data with CAB valve leak |
Simulated Faults
The five faults shown in the diagram below have been simulated. The faults have been simulated one at a time in 5 separate simulations.
The table below provide details on the fault progression and the time of onset of fault. The Python notebooks FCCU_dataExplore_***.ipynb plots some relevant variables that are expected to show deviations under the influence of the respective faults.
Fault type | Fault description | Fault details |
---|---|---|
Heat exchanger fouling | The heat transfer coefficient (UAf) of the preheater goes down from a nominal value of 25 B.t.u./s to 22.5. | The fault starts at t=120 mins. UAf goes from 25 to 23.75 linearly until 719 mins and then shows a step decrease to 22.5 at the 720th min. |
Condenser efficiency decrease | The fractionator condenser’s efficiency goes down from a nominal value of 0.9 to 0.855. | The fault starts at t=120 mins. Efficiency goes from 0.9 to 0.87 linearly until 719 mins and then shows a step decrease to 0.855 at the 720th min. |
High pressure drop between fractionator and reactor | The variable dPfrac (P4 – P5) goes down from a nominal value of 9.5 to 9.9. Increased reactor pressure, among other impacts, leads to increased catalyst circulation rate and deviations in catalyst level. | The fault starts at t=120 mins. dPfrac goes from 9.5 to 9.75 linearly until 299 mins and then shows a step increase to 9.9 at the 300th min. |
Flow sensor drift | The FHN sensor shows a drift of 35 lb/min. | The fault starts at t=120 mins. The sensor drift increases linearly from 0 to 35 until t=1440 min. |
CAB vent valve leak | The variable kcomb goes down from a nominal value of 40 to 35. kcomb is CAB discharge pipe flow resistance factor. Variations in kcomb affects the combustion air flow into the regenerator and therefore regenerator process parameters will show deviations. | The fault starts at t=120 mins. kcomb goes from 40 to 37 linearly until 299 mins and then shows a step increase to 35 at the 300th min. |
Let’s take a quick look at the heat exchanger fouling fault. Reduced heat transfer to the feed will lead the controller TC1 to open valve V1 more to increase the fuel flow so as to maintain T2 at the setpoint. Moreover, less heat going into preheating the feed implies that the flue gas temperature (T3) in the furnace will increase. The diagram below summarizes the scenario. Variables F5 and T3 have been shown here and drifts in their values are evident; however, the ‘faulty values’ are not very far away from the normal values obtained under fault-free operations with varying feed flow. Therefore, the challenge for any fault detection algorithm is to detect quickly these variables are exhibiting abnormal behavior.
Basic FDD Implementation Using Classical PCA
The Python notebooks FCCU_FDD_via_PCA_***.ipynb provide quick implementation of PCA-based FDD using the methodology detailed in our book titled ‘ML in Python for Process Systems Engineering‘. Readers are encouraged to check out the Python notebooks. The snippet below provides a quick sneak into the result obtained for heat exchanger fouling fault. We can see that the result is not very impressive.
Note to the Process Data Science community
- Classical PCA did not provide fast detection of faults
- Let us know if your FDD implementation has better fault detection speed
- We will share the interesting implementations here and on the GitHub
We hope that process data scientists will find this resource useful. We look forward to your comments.
0 Comments