Искусственный интеллект в системе управления газоперекачивающим агрегатом (ГПА)

Несколько лет назад, когда я работал в фирме по разработке систем автоматизации технологических процессов, мне была поставлена интересная задача: в режиме реального времени автоматически производить расчет расхода газа через нагнетатель ГПА. На основании этого расчета необходимо построить систему защиты нагнетателя от помпажа.

Помпаж — неустойчивая работа компрессора характеризуемая резкими колебаниями напора и расхода перекачиваемой среды.

При помпаже резко ухудшается аэродинамика проточной части, компрессор не может создавать требуемый напор, при этом, давление за ним на некоторое время остаётся высоким. В результате происходит обратный проброс газа. Давление за компрессором уменьшается, он снова развивает напор, но при отсутствии расхода напор резко падает, ситуация повторяется. При помпаже вся конструкция испытывает большие динамические нагрузки, которые могут привести к её разрушению.

Обычно для такого расчета используют датчик перепада давления газа на конфузоре нагнетателя, но его не оказалось. В наличии были только ГДХ (газодинамичские характеристики) нагнетателя 1973 года выпуска снятые при трех различных входных давлениях газа.

Газодинамическая зарактеристика ГПА

Рисунок 1. Газодинамическая характеристика ГПА.

Оператор вручную, зная входное давление газа Pвх, выходное давление газа Pвых и частоту вращения ротора нагнетателя N, мог графическим способом получить значение коммерческой производительности, а из нее уже и расход газа. Соответственно можно было оценить близость нахождения этой точки к границе помпажа.

И вот теперь необходимо написать программу для автоматического расчета расхода газа.

В аспирантуре тема моей диссертации была «Применение методов искусственного интеллекта в управлении производством этилового спирта». И там я решал схожую задачу построения математической модели с применением нейронных сетей.

Но начальство сразу же отмело мою идею, посчитав это "слишком непонятной темой".

Начал пробовать решить задачу разными путями:

   1. Построение линейно-кусочной зависимости исходных графиков. Этот метод давал большие погрешности, к тому же графиков было три, и аппроксимировать необходимо было слои, которые находятся между этих графиков. Получалась такая трехмерная задача.
   2. Построение полинома графиков. На одном графике все работало хорошо, но для трех графиков появлялись большие погрешности.
   3. Постараться свести все три графика к одному, который будет приведен к нормальным или стандартным условиям. Но у меня не хватало времени для реализации данного решения в сжатые сроки.
   4. И тогда на свой страх и риск я решил вернуться к реализации с помощью нейронных сетей.

Оцифрованные графики я сделал еще тогда, когда пытался решить задачу первым способом.

Часть таблицы с данными

Рисунок 2. Часть таблицы с данными.

В таблице получилось порядка 500 строк. Часть этих данных я перенес в другую таблицу, для использования в тестовой проверке.

Далее в MatLab построил трехслойную нейронную сеть (многослойный персептрон) с 3-мя нейронами во входном слое, 10-ю нейронами в скрытом слое и одним нейроном в выходном слое. На нейроны входного слоя подаем Рвх, Рвых и Nн, а на выходном слое получаем коммерческую производительность.

Рисунок 3. Скрипт для создания и обучения нейронной сети.

В качестве функции активации для скрытого слоя выбрана функция гиперболического тангенса, а для выходного слоя -линейная функция.

Запустил алгоритм обучения нейронной сети на данных полученных с графиков.

Рисунок 4. Процесс обучения нейронной сети.

После обучения получил весовые коэффициенты каждого нейрона.

Рисунок 5. Результаты обучения сети в графическом виде.

После этого для контроллера Fanuc Rx7i на языке С написал программу CalcQ.c и ввел туда полученные коэффициенты. Потом прогнал программу на тестовом множестве (которое не использовалось в обучении).

Оказалось, что нейронная сеть выдает очень точные результаты не только для тех данных, на которых производилось обучение, но и на тех, которые не были использованы. Нейронная сеть смогла аппроксимировать данные.

В итоге, показав результаты изысканий руководителю и убедив в простоте и надежности расчетов, мы внедрили мой алгоритм на одном из ПХГ.

Плюс данного решения в том, что возрасла скорость реакции системы на опасные ситуации. Появилась возможность реализовать автоматическую систему антипомпажной защиты нагнетателя, что было невозможно при ручном расчете расхода газа.

Минусы данного решения в том, что при изменении характеристик нагнетателя необходимо заново строить ГДХ и переобучать сеть. Но ГДХ никто не снимал с момента выпуска данного нагнетателя в эксплуатацию, и так как сами операторы оценивают расход по старым характеристикам, то решение можно считать вполне приемлемым.

Исходный код нейронной сети для контроллера Fanuc Rx7i: CalcQ.c

Наверх