Часть 1. От практики к теории. Часть 2. Реализация регулятора – от простого к настоящему. Часть 3. Реализация регулятора – вот теперь регулятор. Часть 4. Мир развивается, а «велосипед» остается. Лирика Все, что будет написано ниже про реализацию  ПИД-регулятора в ПЛК, не является чем-то новым и революционным. Практически всю эту информацию можно найти в документации на ПЛК серьезных производителей. Если вы инженер АСУТП со стажем и добросовестно изучали документацию на ПЛК, то все это вам известно. Но в текущей реалии есть каста молодых инженеров и студентов,  которая все знания черпает из роликов на ютубе. Заставив себя посмотреть  несколько самых популярных роликов про реализацию ПИД-регулятора, я был огорчен  качеством излагаемого материала: объяснение работы ПИД-регулятора уж очень «колхозное», а реализация сводится к 15 строкам кода на С++, что порождает упрощенное и ошибочное понимание предмета. Вот для касты ютуб специалистов в первую очередь и предназначено это описание. Для более наглядного изложения перейдем от теоретического описания к «инженерному», которое используется в повседневной практике, пусть это и не совсем корректно, т.е. регулируем уровень в колонне посредством изменения положения регулирующего клапана: ПИД – функция (функциональный или программный блок) реализующая алгоритм регулирования, включает три составляющих: П – пропорциональная составляющая, И – интегральная составляющая, Д – дифференциальная составляющая; переменная процесса PV – значение текущего уровня, полученное с уровнемера, может измеряться как в инженерных единицах (мм), так и в относительных (%); уставка SP (задание регулятору) – значение уровня, которое должен поддерживать регулятор в автоматическом режиме, единицы измерения как у PV;  выход регулятора OP – значение, которое формирует регулятор и которое определяет положение клапана, в нашем примере будет 0-100%; E – ошибка или рассогласование, разница между уставкой и фактическим значением переменной процесса, ошибка подается на вход ПИД-функции; tс – время цикла, периодичность с которой в ПЛК выполняется ПИД-функция (можно конечно поместить ПИД-функцию в циклическую задачу, и она будет выполняться каждый цикл ПЛК, но тогда время цикла предсказать невозможно и для расчета интегральной и дифференциальной составляющей определять время придется внутри ПИД-функции, проще всю ПИД-функцию выполнять периодически с фиксированным временем цикла);  прямое/обратное направление действия регулятора – режим формирования регулятором выходного значения, прямое действие - при увеличении значения переменной процесса 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 соответствует минимальная ошибка, которую можно обеспечить без потери устойчивости. Дальнейшее уменьшение ошибки одной П-функцией невозможно. Эксперименты с П-функцией на этом можно закончить, возвращаемся к реализации регулятора в ПЛК.   инженер со стажем