Skip to main content

MPC-контроллер

Модуль APC

Model Predictive Control (MPC) -- алгоритм управления, который использует математическую модель процесса для прогнозирования поведения системы и вычисления оптимальных управляющих воздействий с учётом ограничений. В платформе Strix MPC реализован как внешний сервис, интегрированный с BaSyx через REST API.

Принцип работы

На каждом шаге контроллер:

  1. Измеряет текущее состояние процесса из субмодели OperationalData
  2. Прогнозирует поведение на горизонте предсказания (10--60 минут)
  3. Оптимизирует траекторию управляющих воздействий с учётом ограничений
  4. Применяет первый шаг оптимальной траектории
  5. Повторяет на следующем шаге (принцип скользящего горизонта)
Движок Gekko

Для решения задач оптимального управления используется библиотека Gekko (Python) -- решатель для смешанных целочисленных и нелинейных задач оптимизации. Gekko поддерживает DAE (differential-algebraic equations), что позволяет описывать сложные технологические процессы.

Классификация переменных

ТипОписаниеПримеры (SAG mill)
Manipulated Variables (MV)Управляющие воздействия -- контроллер их изменяетРасход воды, подача руды, скорость вращения
Controlled Variables (CV)Управляемые параметры -- контроллер удерживает в целевом диапазонеКрупность помола (P80), уровень заполнения, ток двигателя
Disturbance Variables (DV)Возмущения -- контроллер не может влиять, но учитываетТвёрдость руды, содержание Au, влажность

Параметры настройки

ПараметрДиапазонОписание
Горизонт предсказания10--60 минНа сколько вперёд контроллер прогнозирует поведение
Шаг управления1--5 минИнтервал между пересчётами оптимальной траектории
Горизонт управления3--10 шаговКоличество шагов, на которых оптимизируются MV
Веса CV0.0--1.0Относительный приоритет удержания каждой CV
Скорость изменения MVпо переменнойМаксимально допустимое изменение MV за один шаг

Режимы работы

РежимОписаниеПрименение
AdvisoryКонтроллер рассчитывает рекомендации, оператор принимает решениеНачальная настройка, обучение операторов
SupervisoryКонтроллер формирует уставки, оператор подтверждает каждое изменениеШтатная эксплуатация с контролем оператора
Closed-loopПолная автоматика -- уставки передаются в АСУ ТП без подтвержденияУстановившийся режим, ночные смены
Безопасность

При нарушении любого жёсткого ограничения (например, ток двигателя > 95% номинала) контроллер автоматически переходит в режим Advisory и генерирует аларм.

Пример: SAG mill (полуавтогенная мельница)

Переменные

ПеременнаяТипЕд. изм.ДиапазонЦелевое значение
Подача рудыMVт/ч1200--1800--
Расход водыMVм3/ч800--1400--
Скорость вращенияMV% от ном.60--80--
Крупность P80CVмкм100--200150
Уровень заполненияCV%25--3530
Ток двигателяCV% от ном.--< 90
Циркуляционная нагрузкаCV%18--2220
Твёрдость рудыDVпо шкале Bond--измеряется
Содержание AuDVг/т--измеряется

Целевая функция

min Σ [w_cv * (CV - CV_target)^2 + w_mv * ΔMV^2]

Контроллер минимизирует сумму отклонений CV от целевых значений и резкости изменений MV, при соблюдении ограничений:

  • Ток двигателя ≤ 90% номинала
  • 18% ≤ циркуляция ≤ 22%
  • Скорость изменения подачи ≤ 50 т/ч за шаг

Ожидаемый эффект

ПоказательБез MPCС MPCУлучшение
Производительность по питанию1450 т/ч1550 т/ч+7%
Стабильность P80 (sigma)25 мкм10 мкм-60%
Перегрузки двигателя3-5 / смену0-1 / смену-80%
Расход электроэнергии22 кВт*ч/т20 кВт*ч/т-9%

Конфигурация в BaSyx

Все параметры контроллера хранятся в субмоделях на оборудовании:

APC субмодель

APC/
Configuration/
Mode: "supervisory"
PredictionHorizon_min: 30
ControlStep_min: 2
ControlHorizon_steps: 5
ManipulatedVariables/
FeedRate/
Min: 1200
Max: 1800
MaxDelta: 50
Unit: "t/h"
WaterFlow/
Min: 800
Max: 1400
MaxDelta: 30
Unit: "m3/h"
ControlledVariables/
P80/
Target: 150
Min: 100
Max: 200
Weight: 0.4
Unit: "um"
MotorCurrent/
Max: 90
Weight: 0.3
Unit: "%"
Output/
LastCalculation: "2026-03-26T10:00:00Z"
FeedRate_setpoint: 1530
WaterFlow_setpoint: 1120
Status: "optimal"

Архитектура сервиса

Сервис apc-controller следует стандартному паттерну BaSyx-сервисов:

ПараметрЗначение
ЯзыкPython 3.12
ДвижокGekko (APOPT solver)
Интервал60--120 с (настраивается)
Входные субмоделиOperationalData, APC/Configuration
Выходная субмодельAPC/Output
Dockerbasyx-apc-ctrl

Контроллер не имеет собственной базы данных -- все данные и конфигурация хранятся в BaSyx.