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.