AI Predictive Maintenance for Chemical Plant Equipment

We design and deploy artificial intelligence systems: from prototype to production-ready solutions. Our team combines expertise in machine learning, data engineering and MLOps to make AI work not in the lab, but in real business.
Showing 1 of 1 servicesAll 1566 services
AI Predictive Maintenance for Chemical Plant Equipment
Medium
~2-4 weeks
FAQ
AI Development Areas
AI Solution Development Stages
Latest works
  • image_web-applications_feedme_466_0.webp
    Development of a web application for FEEDME
    1161
  • image_ecommerce_furnoro_435_0.webp
    Development of an online store for the company FURNORO
    1041
  • image_logo-advance_0.png
    B2B Advance company logo design
    561
  • image_crm_enviok_479_0.webp
    Development of a web application for Enviok
    823
  • image_logo-aider_0.jpg
    AIDER company logo development
    762
  • image_crm_chasseurs_493_0.webp
    CRM development for Chasseurs
    848

AI-предиктивное обслуживание оборудования химического завода

Химический завод — среда с высокими рисками и дорогостоящими простоями. Незапланированная остановка реактора или компрессорного узла стоит $50,000-$500,000 в сутки потерянного производства. ML-предиктивное обслуживание снижает частоту незапланированных остановок на 30-50% за счёт раннего обнаружения деградации оборудования.

Критическое оборудование и риски

Ротационное оборудование:

  • Компрессоры (центробежные, поршневые): самое критичное — останавливает производство
  • Насосы: сотни единиц, потеря одного насоса → перераспределение потоков
  • Мешалки (агитаторы): забивание, вибрация подшипников
  • Турбины: паровые, газовые

Теплообменники: Fouling (загрязнение) — постепенное снижение теплопередачи. Влияет на эффективность реакции и потребление энергии.

Реакторы:

  • Catalyst deactivation: снижение активности катализатора → падение конверсии
  • Hotspot formation: опасные локальные перегревы (для экзотермических реакций)

Колонны дистилляции: Flooding, weeping — нарушения гидравлики тарелок → резкое падение разделения.

Мониторинг вибрации ротационного оборудования

Виброметрия — основной метод:

from scipy.fft import fft, fftfreq
from scipy.signal import welch
import numpy as np

def vibration_analysis(vibration_signal, sampling_rate=25600):
    """
    Анализ вибрации: временная область + спектральный анализ
    """
    # Временные статистики
    time_features = {
        'rms': np.sqrt(np.mean(vibration_signal**2)),
        'peak': np.max(np.abs(vibration_signal)),
        'crest_factor': np.max(np.abs(vibration_signal)) / np.sqrt(np.mean(vibration_signal**2)),
        'kurtosis': scipy.stats.kurtosis(vibration_signal),  # > 3 = дефект подшипника
        'skewness': scipy.stats.skew(vibration_signal)
    }

    # Спектральный анализ (Welch PSD)
    freqs, psd = welch(vibration_signal, fs=sampling_rate, nperseg=4096)

    # Envelope анализ для подшипниковых дефектов (BPFO, BPFI, BSF, FTF)
    analytic_signal = scipy.signal.hilbert(vibration_signal)
    envelope = np.abs(analytic_signal)
    env_freqs, env_psd = welch(envelope, fs=sampling_rate)

    return time_features, (freqs, psd), (env_freqs, env_psd)

Характерные дефектные частоты подшипника:

def bearing_defect_frequencies(shaft_rpm, n_balls, contact_angle_deg,
                                pitch_diameter, ball_diameter):
    """
    BPFO (Ball Pass Frequency Outer race) — дефект внешнего кольца
    BPFI (Ball Pass Frequency Inner race) — дефект внутреннего кольца
    BSF (Ball Spin Frequency) — дефект тела качения
    FTF (Fundamental Train Frequency) — сепаратор
    """
    f_r = shaft_rpm / 60  # частота вращения вала
    cos_angle = np.cos(np.radians(contact_angle_deg))
    bd_over_pd = ball_diameter / pitch_diameter

    bpfo = (n_balls / 2) * f_r * (1 - bd_over_pd * cos_angle)
    bpfi = (n_balls / 2) * f_r * (1 + bd_over_pd * cos_angle)
    bsf = (pitch_diameter / (2 * ball_diameter)) * f_r * (1 - (bd_over_pd * cos_angle)**2)
    ftf = (f_r / 2) * (1 - bd_over_pd * cos_angle)

    return {'bpfo': bpfo, 'bpfi': bpfi, 'bsf': bsf, 'ftf': ftf}

Диагностика теплообменников

Fouling Monitoring:

def calculate_fouling_factor(U_clean, U_current):
    """
    Общее сопротивление теплопередаче: 1/U = 1/U_clean + R_fouling
    R_fouling = fouling resistance (м²·К/Вт)
    Рост R_fouling → нужна очистка
    """
    R_fouling = 1/U_current - 1/U_clean
    return R_fouling

def estimate_U_from_operating_data(Q_duty, A_area, LMTD):
    """
    Из оперативных данных: тепловой поток, площадь, средняя логарифмическая разность температур
    """
    return Q_duty / (A_area * LMTD)

def predict_fouling_progression(fouling_history, cleaning_intervals):
    """
    LSTM прогноз накопления fouling: когда R_fouling достигнет критического значения?
    """
    model = lstm_fouling_model.predict(fouling_history)
    days_to_clean_threshold = model['days_to_threshold']
    return days_to_clean_threshold

ML-модели деградации

LSTM для прогноза RUL компрессора:

import torch.nn as nn

class CompressorHealthLSTM(nn.Module):
    def __init__(self, n_features, hidden_size=128):
        super().__init__()
        self.lstm = nn.LSTM(n_features, hidden_size, num_layers=2,
                            dropout=0.2, batch_first=True)
        self.attention = nn.MultiheadAttention(hidden_size, num_heads=4, batch_first=True)
        self.fc = nn.Sequential(
            nn.Linear(hidden_size, 64),
            nn.ReLU(),
            nn.Linear(64, 1)  # дни до следующего отказа
        )

    def forward(self, x):
        lstm_out, _ = self.lstm(x)
        attn_out, _ = self.attention(lstm_out, lstm_out, lstm_out)
        return self.fc(attn_out[:, -1, :])

# Входные фичи: вибрация (RMS, kurtosis, bearing freqs), температура,
# давление нагнетания/всасывания, мощность, расход, масло

Catalyst Activity Monitoring:

def monitor_catalyst_activity(reactor_data):
    """
    Нормализованная конверсия при стандартных условиях
    Снижение vs. fresh catalyst baseline → деактивация
    """
    # Коррекция на температуру, давление, состав питания
    normalized_conversion = correct_to_standard_conditions(
        reactor_data['measured_conversion'],
        reactor_data['temperature'],
        reactor_data['pressure'],
        reactor_data['feed_composition']
    )

    # Тренд деактивации (линейный или экспоненциальный)
    activity_trend = fit_deactivation_model(normalized_conversion)

    # Прогноз: когда конверсия упадёт ниже приемлемого уровня?
    days_to_regeneration = predict_regeneration_time(activity_trend, min_acceptable_conversion)
    return days_to_regeneration

Интеграция с CMMS и ERP

Автоматическое создание нарядов на работу:

def auto_generate_work_order(equipment_id, predicted_failure_days, failure_type, cmms_api):
    """
    При RUL < threshold → создание Work Order в CMMS
    """
    wo_data = {
        'equipment': equipment_id,
        'predicted_failure': datetime.now() + timedelta(days=predicted_failure_days),
        'failure_mode': failure_type,
        'priority': 'urgent' if predicted_failure_days < 7 else 'planned',
        'recommended_parts': get_spare_parts(equipment_id, failure_type),
        'estimated_labor_hours': labor_time_db.get(failure_type)
    }
    return cmms_api.create_work_order(wo_data)

Spare Parts Pre-positioning: На основе агрегированного прогноза по всему оборудованию — автоматический заказ запасных частей: подшипники, уплотнения, клапаны.

SAP PM (Plant Maintenance) интеграция: SAP PM → Notification → Work Order → Confirmation — весь цикл автоматизирован через RFC/BAPI.

Безопасность и SIL

Safety Instrumented System (SIS): Предиктивное обслуживание не заменяет SIS. Но ML-мониторинг добавляет слой раннего предупреждения до срабатывания safety interlock.

HAZOP и MOC: Любые изменения в управлении процессом → Management of Change + HAZOP review. ML-система документирует рекомендации, финальное решение — Process Engineer.

Сроки: OPC-UA коннектор + вибрационный анализ FFT/kurtosis + базовые алерты + CMMS интеграция — 5-6 недель. LSTM RUL для компрессоров, fouling прогноз, catalyst monitoring, автоматические Work Orders, spare parts planning — 3-4 месяца.