Tag Archives: библиотека Util.lib

Терморегулятор с ПИД-управлением в CoDeSys

Задача: моделирование работы ПИД – регулятора температуры. По первому выходу осуществляется непосредственно ПИД-регулирование, по второму – сигнализация режима работы по гистерезисной, П или U – логике.

Чему можно научиться: работа со стандартным ПИД-регулятором, разработка гистерезисных  алгоритмов на языках ST и CFC

Основная программа разработана на языке CFC. Такой выбор объясняется наибольшей наглядностью работы с функциональными блоками по сравнению с другими языками программирования ПЛК.

Итак, ПИД – регулятор.

ПИД-регулирование является наиболее точным и эффективным методом поддержания контролируемой величины на заданном уровне. На рис. 1 приведена функциональная схема ПИД-регулятора. Основное назначение регулятора – формирование управляющего сигнала Y, задающего выходную мощность исполнительного механизма (ИМ) и направленного на уменьшение рассогласования Е или отклонения текущего значения регулируемой величины Т от величины уставки Туст.

пропорционально-интегрально-дифференциальное регулирование

рис1 Схема ПИД-регулятора

ПИД-регулятор состоит из трех основных частей: пропорциональной Кп, интегральной 1/р×Ти и дифференциальной р×Тд. На практике, для формирования цифровых регуляторов используются разностные формулы, позволяющие работать не с непрерывным во времени сигналом, а с квантованным по времени. Таким образом, для расчета управляющего сигнала на выходе цифрового ПИД-регулятора  используется формула:

Xp полоса пропорциональности;
Ei рассогласование или разность между уставкой Туст и текущим значением измеренной величины Тi;
tд дифференциальная постоянная;
DEi разность между двумя соседними рассогласованиями Ei и Ei–1;
Dtизм время между двумя соседними измерениями Ti и Ti–1;
tи интегральная постоянная;
накопленная в i-й момент времени сумма рассогласований (интегральная сумма).

Пропорциональная составляющая зависит от рассогласования Ei и отвечает за реакцию на мгновенную ошибку регулирования.

Интегральная составляющая содержит в себе накопленную ошибку регулирования и позволяет добиться максимальной скорости достижения уставки.

Дифференциальная составляющая зависит от скорости изменения рассогласования и позволяет улучшить качество переходного процесса.

В CoDeSys в библиотеке UTIL.lib реализован стандартный блок ПИД-регулятора, который показан на рис.2

рис2 ПИД-регулятор в CoDeSys

Функциональный блок реализует ПИД закон регулирования:

где Y_OFFSET – стационарное значение, KP – коэффициент передачи, TN – постоянная интегрирования (ms), TV – постоянная дифференцирования (ms), e(t) — сигнал ошибки (SET_POINT-ACTUAL).

Входы ACTUAL, SET_POINT, KP, Y_OFFSET, Y_MIN Y_MAX типа REAL. Входы TN и TV типа

DWORD, RESET и MANUAL типа BOOL.

Выходы Y – REAL, LIMITS_ACTVE и OVERFLOW типа BOOL.

Значение выхода Y ограничено Y_MIN и Y_MAX. При достижении Y границ ограничения, выход

LIMITS_ACTVE, (BOOL) принимает значение TRUE. Если ограничение выхода не требуется, Y_MIN

и Y_MAX должны быть равны 0.

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

Теперь собственно о программе.

Для начала, как обычно – список переменных. По традиции – это самая длинная часть программы. Список переменных  включает в себя параметры 2 регуляторов (ПИД и 2-х позиционного) и входы / выходы системы управления.

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

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

Далее собственно программа управления.

рис4 Проект ПИД-регулятора в CoDeSys

рис4 Проект ПИД-регулятора в CoDeSys

В алгоритме ПИД-регулятора реализовано ограничение по мощности регулирования (0-100%). Двухпозиционный регулятор реализован в виде подпрограммы, которая выглядит, например, так:

рис5 Переменные подпрограммы 2-х позиционного регулятора

рис5 Переменные подпрограммы 2-х позиционного регулятора

Программа на ST

рис8 Подпрограмма работы 2-х позиционного регулятора на языке ST

рис8 Подпрограмма работы 2-х позиционного регулятора на языке ST

Ну и то же самое на языке CFC

рис9 2-хпозиционный регулятор на языке CFC

рис9 2-хпозиционный регулятор на языке CFC

рис10 Подпрограмма на CFC (продолжение)

рис10 Подпрограмма на CFC (продолжение)

 

Мой блог находят по следующим фразам