1

Тема: CANNY7: Пример ПИД-регулятора

Пример ПИД регулятора на базе контроллера CANNY7.

http://forum.canny.ru/files/pid_cfd_prev.png

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

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

В примере принята дискретная модель устройства управления, т.е. оно может быть либо только включено, либо выключено, что наиболее близко к работе электрического реле.
При включенном устройстве управления состояние модели объекта регулирования, с каждым тактом времени, увеличивается на определенную константную величину, стремясь достигнуть целевого значения регулируемого параметра, моделируя процесс, схожий с нагреванием воды в бойлере.
При выключенном устройстве управления состояние модели объекта регулирования, с каждым тактом времени, уменьшается на определенную константную величину, моделируя воздействие внешней среды, т.е. процесс схожий с остыванием воды в бойлере.

Исходный файл диаграммы и график процесса:

Вложений в сообщении

Иконка вложения PID_ctrl.cfd 9.65 кб, скачивался 723 раз, последний раз 2016-05-31 

pid_working.png, 34.38 кб, 720 x 481
pid_working.png 34.38 кб, скачивался 672 раз, последний раз 2016-05-31 

2

Re: CANNY7: Пример ПИД-регулятора

Пример системы управления нагревателем воды (бойлером) на базе контроллера CANNY7 с использованием доработанной диаграммы ПИД регулятора.

В процессе работы системы информация о текущей температуре передается в CAN для возможности мониторинга и анализа. По результатам работы нагревателя построен график изменения температуры воды с течением времени.
http://forum.canny.ru/misc.php?action=pun_attachment&item=415&download=0

Вложений в сообщении

Иконка вложения PID_ctrl_boiler_1a.cfd 16.69 кб, скачивался 630 раз, последний раз 2017-03-07 

pid_boiler.gif, 255.41 кб, 737 x 320
pid_boiler.gif 255.41 кб, скачивался 714 раз, последний раз 2017-03-07 

Иконка вложения pid_boiler_work.png 106.31 кб, скачивался 194 раз, последний раз 2017-03-07 

3

Re: CANNY7: Пример ПИД-регулятора

Здравствуйте.
Очень хочу разобраться в этой схеме для реализации "вживую".
Уставка, если я верно понял, это желаемое значение (температуры, влажности, и т.д) так?  На диаграмме задано константой, но в реалиях можно задавать, к примеру, потенциометром с соотв. схемой. Так?

4

Re: CANNY7: Пример ПИД-регулятора

Да, уставка это целевое значение, которое контролируется системой и к достижению которого система стремится.
В примере это константа. Изменять ее значение в процессе работы устройства можно используя тактовые кнопки (увеличение/уменьшение значения уставки при нажатии кнопки), пульты ИК, цифровые протоколы передачи данных (CAN, UART,...) и т.п. Обычный потенциометр для этих целей не подойдет, т.к. у контроллеров CANNY 7 нет АЦП.
Если требуется однократная установка уставки, то ее можно задавать через параметры пользователя при загрузке ПО через SFX-файл.
В принципе, диаграмма, с минимальными доработками, может быть успешно перенесена на другие типы контроллеров CANNY - основной алгоритм от этого не изменится.

5

Re: CANNY7: Пример ПИД-регулятора

Здравствуйте. Помогите пожалуйста, решить аналогичную задачку, но немного для другой цели. Возможно ли использовать данную схему для ШИМ регулирования нагрузки на нагревательном элементе 2,5 Ом при напряжении питания 13,8В? Контроль температуры должен обязательно быть с уставкой в 35-40 градусов Скорость нагрева до заданной температуры желательна не более 2 минут. Гистерезис вокруг точки регулирования +-2-3 градуса. Желательно реализовать аварийное отключение при достижении критической температуры, скажем 55 градусов.
Буду очень признателен за помощь.

6

Re: CANNY7: Пример ПИД-регулятора

samovol пишет:

Здравствуйте. Помогите пожалуйста, решить аналогичную задачку, но немного для другой цели. Возможно ли использовать данную схему для ШИМ регулирования нагрузки на нагревательном элементе 2,5 Ом при напряжении питания 13,8В? Контроль температуры должен обязательно быть с уставкой в 35-40 градусов Скорость нагрева до заданной температуры желательна не более 2 минут. Гистерезис вокруг точки регулирования +-2-3 градуса. Желательно реализовать аварийное отключение при достижении критической температуры, скажем 55 градусов.
Буду очень признателен за помощь.

Использовать диаграмму примера для указанной задачи вполне возможно, понадобятся небольшие доработки. Для управления нагревателем потребуется внешний силовой ключ. Уставка назначается в диаграмме. Скорость нагрева и другие параметры работы регулятора определяются конструктивными особенностями самой системы, а также пропорциональным, интегральным и дифференциальным коэффициентами, задаваемыми пользователем в диаграмме. Реализация аварийного отключения также не является проблемой.

7 (25-12-2017 14:55:37 отредактировано samovol)

Re: CANNY7: Пример ПИД-регулятора

Использовать диаграмму примера для указанной задачи вполне возможно, понадобятся небольшие доработки. Для управления нагревателем потребуется внешний силовой ключ. Уставка назначается в диаграмме. Скорость нагрева и другие параметры работы регулятора определяются конструктивными особенностями самой системы, а также пропорциональным, интегральным и дифференциальным коэффициентами, задаваемыми пользователем в диаграмме. Реализация аварийного отключения также не является проблемой.

Спасибо. Не могли бы Вы порекомендовать конкретные ключи, которые уже опробованы и работают с Canny7 в 12-14 В цепях (автомобильных) . Желательно MOSFET, чтобы обойтись без радиатора. Ток до 8 А.
И если не трудно, помогите добавить в эту схему:
1. кнопку включения/выклчения, которая запускает схему по первому нажатию, а выключает по следующему.
2. В кнопке есть индикаторный светодиод, который надо зажечь, когда схема запущена и погасить когда выключается после второго нажатия (выключения).

Заранее спасибо, очень надеюсь на Вашу помощь.

8

Re: CANNY7: Пример ПИД-регулятора

Можно использовать интеллектуальные ключи BTS555. Для работы с ними конфигурацию управляющего канала необходимо установить как минусовой без подтяжки, т.е. выбрать из расширенных настроек: Дискретный выход; Состояние ВКЛ.: МИНУС (100мА); состояние ВЫКЛ.: воздух.
Решить вопрос активации регулятора с помощью внешней управляющей кнопки можно несколькими способами, в зависимости от конкретных условий. Прилагаю фрагмент диаграммы, который включает/отключает исполнительное устройство (нагреватель) при нажатии кнопки. Фрагмент ставится после блока №54 диаграммы PID_ctrl_boiler_1a.cfd .
Полярность кнопки и выхода на светодиод можно установить в соответствии с особенностями схемы подключения.

Вложений в сообщении

button_ctrl.PNG, 21.17 кб, 728 x 261
button_ctrl.PNG 21.17 кб, скачивался 601 раз, последний раз 2017-12-26 

9 (18-04-2019 20:15:13 отредактировано tsaplin-av)

Re: CANNY7: Пример ПИД-регулятора

Здравствуйте. В данной диаграмме "Хо"- это  значение температуры в градусах Цельсия или некое значение которое выдает цифровой датчик температуры?

Модераторское: постарайтесь не изменять сообщения, за исключением грамматических ошибок, так как возможно на заданный вопрос уже кто-нибудь отвечает.

Вложений в сообщении

Иконка вложения PID_ctrl_boiler_1a.cfd 16.69 кб, скачивался 487 раз, последний раз 2019-04-18 

10

Re: CANNY7: Пример ПИД-регулятора

CannyLab поддерживает перенос диаграмм через буфер Windows.
Нужно открыть диаграмму, выделить все (Ctrl+A), скопировать выделение в буфер обмена (Ctrl+C), открыть новый файл диаграммы для требуемого контроллера, вставить содержимое буфера обмена (Ctrl+V).
Набор драйверов и регистров у разных контроллеров может отличаться, по этому после вставки диаграммы может потребоваться исправить несоответствия, заменяя ошибочные регистры (выделятся красным цветом) на регистры используемого контроллера. Алгоритмическая чатсь останется неизменной, сами по себе, диаграммы разных контроллеров совместимы.
Обратите внимание, что может потребоваться подбор коэффициентов регулятора, которые зависят от системы, в которой он применяется.
Хо - уставка в градусах цельсия. Значения датчика температуры DS18B20 (однопроводный Dallas 1-Wire, цифровой) преобразуются в драйвером контроллера в целые, десятитысячные доли градуса и знак температуры.

11

Re: CANNY7: Пример ПИД-регулятора

Спасибо

12

Re: CANNY7: Пример ПИД-регулятора

Мне кажется что программа в первом сообщении написана неправильно. Хотя бы потому, что в PID регулировании возмущение расчитывается как разница между уставкой (ХО) и текущими показаниями, а не наоборот. Также при запуске в симуляторе видно что многие функции вычитания производят вычисления из меньшего вычитая большее, тем самым получая заоблачные значения вроде 65530. Которые дальше идут на расчет. Суммирование происходит по тем же правилам, с такими же ошибочными результатами.

Вложений в сообщении

Иконка вложения Снимок экрана 2022-05-04 в 19.08.16.png 101.23 кб, скачивался 54 раз, последний раз 2022-05-04 

13

Re: CANNY7: Пример ПИД-регулятора

Dmitry30Rus пишет:

Мне кажется что программа в первом сообщении написана неправильно..

Алгоритм проверен на нагревателе, выше приведены реальные графики его работы.
Вычитание из меньшего большего вполне реальная ситуация в беззнаковой арифметике, которая приводит к получению переполнения, которое в свою очередь можно рассматривать как отрицательное значение. В преведенной диаграмме эти значения корректно обрабатываются и участвуют в вычислениях со своим знаком, а на последней стадии выделяется абсолютное значение и его знак, формируя управляющее воздействие.

14

Re: CANNY7: Пример ПИД-регулятора

Доброго вам дня! Пользую Canny 7.2 DUO. Воспользовался вашим PID регулятором для поддержания постоянных оборотов bldc мотора, всё работает замечательно, спасибо вам большое! Единственное можете подсказать, пожалуйста, что за параметр у вас в PID "ограничение интегратора"(подробнее в скриншоте) и за что он отвечает при его изменении? Заранее вас благодарю!

Вложений в сообщении

Ограничение интегратора.JPG, 58.07 кб, 556 x 333
Ограничение интегратора.JPG 58.07 кб, скачивался 31 раз, последний раз 2024-08-14 

15

Re: CANNY7: Пример ПИД-регулятора

Vitalich пишет:

... что за параметр у вас в PID "ограничение интегратора"(подробнее в скриншоте) и за что он отвечает при его изменении? Заранее вас благодарю!

См: https://en.wikipedia.org/wiki/Integral_windup