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

Функциональный блок 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».

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 представлена на рисунке ниже

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

Подключение коэффициентов
Для ПИД-регулятора выберем время цикла равную в 1 секунду. Прописываем «T#1s» в колонке «Initial Value».
Внимание
Тип данных «Time» не является внешним, поэтому класс необходимо выбрать «Local»

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

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

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

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

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

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

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

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

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