Часть 1. От практики к теории.

Часть 2. Реализация регулятора – от простого к настоящему.

Часть 3. Реализация регулятора – вот теперь регулятор.

Часть 4. Мир развивается, а «велосипед» остается.

Реализация регулятора в ПЛК

Лирика

Все, что будет написано ниже про реализацию ПИД-регулятора в ПЛК, не является чем-то новым и революционным. Практически всю эту информацию можно найти в документации на ПЛК серьезных производителей. Если вы инженер АСУТП со стажем и добросовестно изучали документацию на ПЛК, то все это вам известно. Но в текущей реалии есть каста молодых инженеров и студентов, которая все знания черпает из роликов на ютубе. Заставив себя посмотреть несколько самых популярных роликов про реализацию ПИД-регулятора, я был огорчен качеством излагаемого материала: объяснение работы ПИД-регулятора уж очень «колхозное», а реализация сводится к 15 строкам кода на С++, что порождает
упрощенное и ошибочное понимание предмета. Вот для касты ютуб специалистов в
первую очередь и предназначено это описание.

Теперь необходимо определиться с терминологией

Для более наглядного изложения перейдем от теоретического описания к «инженерному», которое используется в повседневной практике, пусть это и не совсем корректно, т.е. регулируем уровень в колонне посредством изменения положения регулирующего клапана:

  • ПИД – функция (функциональный или программный блок) реализующая алгоритм регулирования, включает три составляющих: П – пропорциональная составляющая, И – интегральная составляющая, Д – дифференциальная составляющая;

  • переменная процесса PV – значение текущего уровня, полученное с уровнемера, может измеряться как в инженерных единицах (мм), так и в относительных (%);

  • уставка SP (задание регулятору) – значение уровня, которое должен поддерживать регулятор в автоматическом режиме, единицы измерения как у PV;

  • выход регулятора OP – значение, которое формирует регулятор и которое определяет положение клапана, в нашем примере будет 0-100%;

  • E – ошибка или рассогласование, разница между уставкой и фактическим значением переменной процесса, ошибка подается на вход ПИД-функции;

  • – время цикла, периодичность с которой в ПЛК выполняется ПИД-функция (можно конечно поместить ПИД-функцию в циклическую задачу, и она будет выполняться каждый цикл ПЛК, но тогда время цикла предсказать невозможно и для расчета интегральной и дифференциальной составляющей определять время придется внутри ПИД-функции, проще всю ПИД-функцию выполнять периодически с фиксированным временем цикла);

  • прямое/обратное направление действия регулятора – режим формирования регулятором выходного значения, прямое действие - при увеличении значения переменной процесса PV регулятор увеличивает значение выхода OP, обратном действие - при увеличении значения переменной процесса PV регулятор уменьшает значение выхода OP.

Реализуется направление действия регулятора методом вычисления ошибки, для прямого действия E=PV-SP, для обратного E=SP-PV. На рисунке показаны два варианта установки клапана для регулирования уровня в емкости. Первый вариант – клапан LV1 установлен на отводящем трубопроводе, т.е при увеличении уровня (PV) клапан должен открываться, это прямое действие регулятора E=PV-SP. Второй вариант – клапан LV2 установлен на подающем трубопроводе, т.е. при повышении уровня клапан должен закрываться, это будет обратное действие регулятора E=SP-PV.

ПЛК является дискретным устройством, поэтому ПИД-функция выполняется периодически с заданным временем цикла tc и формула ПИД-регулятора трансформируется из непрерывной формы в дискретную:

OP – выход ПИД-функции, E – ошибка (рассогласование), n – текущий цикл, n-1 – предыдущий цикл, tc – время цикла ПИД-функции, kP,kI,kD – коэффициенты П,И,Д-составляющих. Для дискретной формы вместо времени используется номер отсчета (цикла). В таком виде ПИД-функция и реализуется в ПЛК.

Рассмотрим работу регулятора только с П-составляющей (пропорциональное регулирование) для исходного примера - поддержание уровня в емкости клапаном на отводящем трубопроводе. Регулятор получается прямого действия E=PV-SP. Время цикла для выполнения ПИД-функции примем 0,3 секунды, коэффициент kP=2, диапазон уровнемера 0-100%, диапазон открытия регулирующего клапана 0-100%, расход на отводящем трубопроводе линейно зависит от положения клапана, 10% открытия клапана соответствует расходу 10м3/час.

В начальный момент жидкость в емкости отсутствует (уровень равен нулю), расхода в подающем трубопроводе нет. В регуляторе задана уставка 30%. При таких условиях ошибка (рассогласование) на входе в П-функцию E=PV-SP=0-30=-30 (отрицательная). Выход П-функции OP=kP*E также получается отрицательным, но положение клапана не может быть меньше «0», поэтому клапан просто полностью закрыт.

Подаем жидкость в емкость с фиксированным расходом (условно 10м3/ч), емкость наполняется, значение уровня увеличивается, достигает значения уставки 30% и продолжает постепенно увеличивается. Ошибка E=PV-SP становится положительной и также увеличивается, соответственно значение выхода П-функции OP=kP*E становится положительным клапан начинает открываться. Чем выше уровень в емкости, тем больше значение ошибки на входе П-функции и больше открытие клапана. При значении уровня в 35% значение ошибки будет E=PV-SP=35-30=5, открытие клапана будет OP=kP*E=5*2=10%, что обеспечивает расход в отходящем трубопроводе 10м3/час. Расход в отводящем трубопроводе равен расходу в подающем трубопроводе, следовательно изменение уровня в емкости прекратилось, система пришла в равновесие, т.е. при kP=2 равновесие (стабилизация, окончание процесса регулирования) наступает при ошибке E=5%.

В П-регуляторе значение ошибки не может быть равным «0». Чтобы обеспечивать требуемый расход в отходящем трубопроводе, на входе П-регулятора должна быть ошибка, соответствующая необходимому положению клапана, а при E=0 выход OP также будет равен «0», клапан будет закрыт.

Чтобы уменьшить ошибку П-регулятора, нужно увеличивать коэффициент kP. При kP=5 ошибка будет E=2, так как OP=kP*E=5*2=10, что соответствует требуемому положению клапана.

В идеальной системе, в которой отсутствует запаздывание, коэффициент kP можно увеличивать до бесконечности, тем самым уменьшая ошибку в установившимся режиме. В реальных системах запаздывание присутствует всегда. В нашем примере, изменение уровня в емкости будет отставать от изменения положения клапана, а показания уровнемера будут отставать от фактического значения уровня. На следующем рисунке показано поведение системы при наличии запаздывания между показаниями уровнемера и фактическим уровнем на 10 циклов. При том же kP=2 в системе появилось перерегулирование, «перебег» клапана и затухающие колебания.

Теперь, при наличии запаздывания в системе, если увеличить коэффициент усиления kP=3, колебания в системе становятся незатухающими, система теряет устойчивость.

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

Эксперименты с П-функцией на этом можно закончить, возвращаемся к реализации регулятора в ПЛК.

Комментарии (3)


  1. ValeriyS
    24.12.2022 18:20
    +1

    Если запаздывание будет совсем большим, то можно использовать предиктор Смита:

    https://en.wikipedia.org/wiki/Smith_predictor


  1. Weron2
    25.12.2022 04:40

    А что за софтина рисует графики? Это симулятор процесса регулирования как я понимаю?

    Я в свое время делал симулятор двухпозиционного регулятора, возможно после вашего объяснения, можно будет замахнуться и на ПИД регуляторы)


  1. lamer84
    26.12.2022 09:54

    Ох, меня смутило, что и уставка, и ошибка регулирования в процентах. Я сначала даже не сразу понял, почему при заданном уровне в 30 получили 35 и это ошибка в 5%, потом сообразил, что это не относительная ошибка, а абсолютная в единицах SP, PV и E. Я бы назвал эти "5%" как "5 процентных пунктов" или как-то так. У меня просто сформировалось восприятие, что ошибка регулирования в 5% значит (|PV-SP|/SP)*100 = 5. Чисто как восприятие.

    А при переходе из символьных формул в числовые вы меняете значения местами:

    OP=kP*E=5*2=10%

    При этом kP = 2, а Е = 5. Лучше, как мне кажется, написать 2*5%, хоть от перемены мест результат не меняется, но наглядность лучше.