Case Study
Steam Generator Classification & Optimization
Real‑time ML‑assisted dispatch of legacy steam generators to stabilize supply alongside a variable solar steam facility—built in Ignition with Python ML, MQTT, and historian data.
Oil & Gas
Ignition
Python / ML
OPC UA
AVEVA & Canary Historian
Executive Snapshot
Objective
Prioritize & dispatch ~12 legacy steam generators in real time to offset variability from a new solar steam facility while meeting downstream demand.
My Role
Technical Lead & developer (Ignition Python); led a team of 3 devs; code reviews & delivery leadership.
Duration
~8 months
Scope
~12 generators • multi‑year historian data • real‑time dispatch logic
Architecture
PLC → OPC UA → (Ignition Gateway + Python) → Canary/AVEVA
Ignition (Gateway/Edge)
Python (TensorFlow / scikit‑learn)
OPC UA
MQTT (Cirrus Link)
AVEVA Historian
Canary Historian
ISA‑95
TLS Mutual Auth
Outcome
- ML‑driven classification of generators by ramp profile, efficiency, and reliability.
- Real‑time dispatch logic to select/start units and set targets as solar output fluctuates.
- Operator decision support that reduced manual trial‑and‑error and tribal knowledge load.
Implementation paused due to solar program funding; analytics/tooling retained by the steam team. Estimated potential savings on order of ~$50k/yr.
Problem
Legacy steam generators (~decades old) exhibited differing ramp‑up/down behavior, efficiency curves, and reliability. With variable solar steam supply coming online, operators needed a fast, consistent way to choose which units to start, when to start them, and at what setpoints to maintain downstream steam demand— without relying on deep tribal knowledge or manual trial‑and‑error.
Solution
- Extracted multi‑year time‑series from AVEVA Historian for model training & feature engineering.
- Built an Ignition‑hosted Python service to classify each generator (ramp profiles, efficiency, reliability) and score them.
- Designed a real‑time dispatch algorithm in Ignition to recommend/start units and set targets as solar output varied.
- Plumbed PLC signals via OPC UA and MQTT (Cirrus Link) into the Gateway; logged to Canary for dashboards & analysis.
- Hardened connectivity using Purdue‑aligned zones, TLS, and certificate‑based auth between tiers.
Architecture
Standards: ISA‑95. Security: segmented zones, firewall allow‑lists, TLS, cert‑based MQTT, role‑based access.
Planned KPIs & Decision Support
| KPI / Decision Aid | Description | Status |
|---|---|---|
| Dispatch Score | Composite rank per unit (ramp time, steady‑state efficiency, recent reliability/MTBF). | Validated on historical data |
| Ramp Readiness | Time‑to‑target & overshoot tendency by generator and ambient conditions. | Modeled; ready for prod |
| Operator Assist | Start/stop & setpoint recommendations surfaced in Ignition; reduces tribal knowledge burden. | HMI prototype completed |
| Forecast Fit | Deviation of combined output vs. solar forecast; triggers re‑dispatch if drift exceeds threshold. | Algorithm defined |
Projected savings (paused): fuel optimization + fewer mis‑dispatches + reduced warm‑standby hours.
- Historical data extraction & model development using AVEVA historian datasets.
- OPC UA + MQTT plumbing; Ignition Gateway Python service for classification scoring.
- Prototype HMI for operator recommendations; shadow‑mode validation against operator choices.
- Planned assisted‑dispatch cutover (paused with program funding change).
- You: Architecture, Ignition Python development, code reviews, data modeling, stakeholder alignment.
- Developers (3): Data pipelines, model training, HMI prototypes.
- Operations (2): SME input on ramps, setpoints, safe‑start constraints.
- Engineering (4): Controls integration, historian access, validation.
- Lesson: Deliver value in layers; decision‑support UI stands on its own even without full automation.
- Risk: Portfolio dependency on solar initiative funding—mitigated by modular analytics reuse.
- Next: Package analytics as an accelerator for future boiler/steam dispatch projects.