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

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

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

Подключим к ПЛК модули расширения BRIC-AO-4 и BRIC-AI-16. Добавляем их в Beremiz. Язык программирования выберем FBD для наглядности. Функциональный блок PID выбирается из «Additional function blocks».

../_images/372.png

Функциональный блок PID

Вход

Тип

Описание

AUTO

BOOL

Включение режима ПИД-регулятора (0 - ручное регулирование, 1 - автоматическое)

DIR

BOOL

Направление регулирования ( 0 - обратное регулирование, 1 - прямое. По умолчанию стоит прямое регулирование)

PV

REAL

Входной сигнал (автоматический режим)

SP

REAL

Заданное значение (уставка в автоматическом режиме)

X0

REAL

Заданное значение (уставка в ручном режиме)

KP

REAL

Пропорциональный коэффициент

TR

REAL

Интегральный коэффициент

TD

REAL

Дифференциальный коэффициент

CYCLE

TIME

Время цикла

Выход

Тип

Описание

XOUT

REAL

Выход ПИД-регулятора

Добавим переменные AO_1_ao_val_0 и AI_1_ai_physical_0 в программу. В нашем случае задание PV будем получать от AI_1_ai_physical а выход ПИД-регулятора XOUT будет подключен к AO_1_ao_val. Добавим также остальные входные переменные. Также для нашей программы нужны будут SDO-регистры модуля AO, а именно калибровочные коэффициенты нулевого канала AO_1_ao_calib_a_0 и AO_1_ao_calib_b_0. Копируем регистры в программу, в «Polling» пишем «read».

../_images/381.png

SDO-регистры модуля AO

Примечание

Расчет необходимого значения AO_val_x осуществляется по формуле:

AO_val_x = (AO_OUT - AO_calib_b_x) * AO_calib_a_x

где AO_OUT - необходимое выходное значение в «мА» или «В», AO_calib_a_x, AO_calib_b_x - индивидуальные калибровочные коэффициенты каждого канала.

Параметр

Значение по умолчанию

Диапазон

Описание

AO_val_x

-

0 – 4095

Выходное значение аналогового канала в единицах АЦП

AO_calib_a_x

163.8 - для токовых каналов / 287.368 - для каналов напряжения

-

Калибровочный коэффициент А

AO_calib_b_x

0.0 - для токовых каналов / 0.0 - для каналов напряжения

-

Калибровочный коэффициент В

Для того чтобы ручное значение записывалось в mA необходимо вычислить его с помощью формулы:

X0 = (manual_set - AO_calib_b_x) * AO_calib_a_x

Реализация на языке FBD представлена на рисунке ниже

../_images/391.png

Подключение manual_set

Добавим Пропорциональный, Интегральный и Дифференциальные коэффициенты. Класс выбираем так же как и у других «External», для взаимодействия через WEB-страницу.

../_images/401.png

Подключение коэффициентов

Для ПИД-регулятора выберем время цикла равную в 1 секунду. Прописываем «T#1s» в колонке «Initial Value».

Внимание

Тип данных «Time» не является внешним, поэтому класс необходимо выбрать «Local»

../_images/412.png

Добавление времени цикла

Осталось подключить выход ПИД-регулятора. XOUT преобразуется в тип данных «UINT» и записывается в AO_1_ao_val_0. Чтобы выход выдавался в mA, добавим коэффициенты. В данном случае используется обратная формула:

xout_ma = (XOUT / AO_calib_a_x) + AO_calib_b_x;

../_images/421.png

Подключение выхода XOUT

Добавим переменные в главный проект. Опишем переменные в разделе «Documentation». Программа готова.

../_images/431.png

Программа ПИД-регулятора

Подключим нулевой канал модулей расширения между собой. Финальный результат на рисунке ниже.

../_images/gif101.gif

Подключение модулей расширения

Загружаем прошивку и заходим в WEB-страницу. Задаем manual_set значение в 5 mA. В данном случае ПИД-регулятор находится в ручном режиме и выход равен заданию.

../_images/441.png

WEB-страница контроллера

../_images/gif111.gif

ПИД-регулятор в ручном режиме

Задаем параметры автоматического режима. После задания уставок и коэффициентов, задаем «auto_man» значение «1» тем самым запускаем ПИД-регулятор в автоматическом режиме. Выход регулятора XOUT стремится к уставке.

../_images/gif121.gif

ПИД-регулятор в автоматическом режиме

После достижения заданной уставки, ПИД-регулятор удерживает выходное значение в пределах данного задания.

../_images/gif141.gif

ПИД-регулятор в автоматическом режиме после достижения уставки

../_images/gif131.gif

Результат программы