Самодельный ПИД регулятор

Темы связанные с инженерными разработками, но не подходящие в другие ветки форума
Ответить
GoodSimon
beginner
beginner
Сообщения: 12
Зарегистрирован: 12 апр 2017, 17:25
Версия LabVIEW: 2016
Контактная информация:

Самодельный ПИД регулятор

Сообщение GoodSimon »

Здравствуйте, я на форуме и в LabVIEW новичок, по этому заранее прошу простить если неверно буду выражаться и не понимать ответов.
Теперь к делу: я студент и мне дали РГР в которой от меня требуется сделать ПИД-регулятор в LabVIEW. Читал много-немного, но все без толку. Во всех статьях о ПИД-регуляторе в LabVIEW отсылают на уже существующий стандартный PID.vi. Может я совсем глупый, для графического программирования, но этот стандартный PID.vi мне кажется сложным. Я рассматривал примеры и пытался понять, но это оказалось в пустую, а качественного описания о его работе на русском языке я не нашел.
Прошу добрых форумчанинов мне с этим делом помочь :help:.
Конкретно о чем прошу:
1) Помочь построить ПИД-регулятор в LabVIEW
2) Сделать так что бы он сам находил нужные коэффициенты или объяснить почему это невозможно сделать (Хотя тут я опираюсь на свое, скудное, знание VisSim, в нем мы на паре строили ПИД-регулятор и он сам мог подсчитывать кэффициенты. Исходя из этого такое возможно! Вот и хочу такое же сделать в LabVIEW).
3) К этому самодельному регулятору сделать пример с регуляцией температуры, в котором данные будут симулироваться, а не браться с реального датчика.
Еще раз, очень прошу помочь! :help:
Borjomy_1

Activity Professionalism Silver
doctor
doctor
Сообщения: 2210
Зарегистрирован: 28 июн 2012, 09:32
Награды: 3
Версия LabVIEW: 2009..2020
Откуда: город семи холмов
Благодарил (а): 27 раз
Поблагодарили: 26 раз

Re: Самодельный ПИД регулятор

Сообщение Borjomy_1 »

Для того, чтобы разобраться в работе PID.vi надо хотя бы представлять, что такое ПИД регулирование, для чего звенья пропорционального, интегрального и дифференциального звеньев. Тут надо читать теорию управления. Ничего нового в хелпе не будет.
Если вы знаете математическую формулу, по которой считаются звенья П, И и Д, то стандартный PID вам, действительно, не нужен.
Чтобы система сама находила коэффициенты потребуется несколько больше, чем простая работа... Это не невозможно, но все придется делать ручками.
Для симуляции необходимо создать математическую модель теплообмена какого-то объекта, т.е зависимость температуры какой-то точки объекта от количества поданного тепла и времени, с учетом задержек и потерь. Только после этого к ней можно начинать прикручивать ПИД регулятор
GoodSimon
beginner
beginner
Сообщения: 12
Зарегистрирован: 12 апр 2017, 17:25
Версия LabVIEW: 2016
Контактная информация:

Re: Самодельный ПИД регулятор

Сообщение GoodSimon »

Borjomy_1 писал(а):Для того, чтобы разобраться в работе PID.vi надо хотя бы представлять, что такое ПИД регулирование, для чего звенья пропорционального, интегрального и дифференциального звеньев. Тут надо читать теорию управления. Ничего нового в хелпе не будет.
Если вы знаете математическую формулу, по которой считаются звенья П, И и Д, то стандартный PID вам, действительно, не нужен.
Чтобы система сама находила коэффициенты потребуется несколько больше, чем простая работа... Это не невозможно, но все придется делать ручками.
Для симуляции необходимо создать математическую модель теплообмена какого-то объекта, т.е зависимость температуры какой-то точки объекта от количества поданного тепла и времени, с учетом задержек и потерь. Только после этого к ней можно начинать прикручивать ПИД регулятор
Нам ПИД-регулятор давали вот такой формулой:
Изображение
Примерно так мы делали в VisSim:
Изображение
Как я понимаю:
Пропорциональная составляющая дает сигнал обратный отклонению регулируемой величины от заданного значения.
Интегрирующая составляющая избавляет от статической ошибки.
Дифференцирующая помогает скомпенсировать отклонения возникающие из-за внешних возмущений.

Я так понял PID.vi универсален, но для понимания "в лоб" для меня сложен. Но ведь в этой библиотеке есть само-подстраивающийся ПИД-регулятор.
Все это меня приводит к вопросам:
"Как сделать ПИД-регулятор в LabVIEW самому?"
"Можно ли как-то задавать передаточную функцию что бы регулятор с ней работал?"
"Как сделать автонастройку коэффициентов?"
Artem.spb

Activity Автор
professor
professor
Сообщения: 3391
Зарегистрирован: 31 июл 2011, 23:05
Награды: 2
Версия LabVIEW: 12-18
Благодарил (а): 49 раз
Поблагодарили: 172 раза
Контактная информация:

Re: Самодельный ПИД регулятор

Сообщение Artem.spb »

GoodSimon писал(а): Нам ПИД-регулятор давали вот такой формулой:
Изображение
"Как сделать ПИД-регулятор в LabVIEW самому?"
Капитан очевидность подсказывает мне, что надо запрограммировать эту формулу.
e(t) ы простейшем случае просто разность между уставкой и реальным значением.
dt - шаг дискретизации вашей системы.
интеграл-дифференциал, надеюсь, объяснять не надо?
"Как сделать автонастройку коэффициентов?"
Для начала смириться с тем, что это почти невозможно.
потом погуглить и с осознанием того, какая система находится под управлением, выбрать алгоритм подбора коэффициентов, подходящий для этой системы. В идеальных условиях определённых систем алгоритмы дают хорошие результаты.

Ну а с программированием регулятора температуры совсем просто. Только не с автоподбором коэффициентов. Потому что ваша имитационная систему будет вести себя совершенно не так, как ведёт себя реально подогреваемая система.
GoodSimon
beginner
beginner
Сообщения: 12
Зарегистрирован: 12 апр 2017, 17:25
Версия LabVIEW: 2016
Контактная информация:

Re: Самодельный ПИД регулятор

Сообщение GoodSimon »

Artem.spb писал(а):интеграл-дифференциал, надеюсь, объяснять не надо?
Как раз таки лучше бы объяснить как им пользоваться в labview, ибо я совсем не понимаю где в этой среде интегралл от 0 по t.
dt - шаг дискретизации вашей системы.
Т.е. как часто система будет получать текущее значение?
Аватара пользователя
Andrew Lunev

Activity Professionalism
VIP
VIP
Сообщения: 957
Зарегистрирован: 11 дек 2010, 12:31
Награды: 2
Версия LabVIEW: 2014-2021
Откуда: Москва
Благодарил (а): 4 раза
Поблагодарили: 10 раз

Re: Самодельный ПИД регулятор

Сообщение Andrew Lunev »

У вас дана формула идеального непрерывного ПИД-регулятора. Проблема в том, что хорошо он работает только с идеальными линейными стационарными объектами. В реальной жизни таких объектов нет. Поэтому в Labview реализован модифицированный ПИД-регулятор с доработками, устраняющими основные проблемы регулятора при работе с реальными объектами в реальных условиях. То есть реализован регулятор для практического применения, а не для анализа САУ и проведения лабораторных работ. Поэтому он и выглядит сложней, но если из него выкинуть "лишнее", то получится именно ваш академический вариант.

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

Моделирование всей системы с передаточными функциями в Labview возможно после установки тулкита Control and Simulation.

Ну а сделать автонастройку тут или найти и полностью содрать уже чей-то готовый вариант или вообще не браться.
Если бы в природе существовал универсальный рабочий алгоритм самонастройки, то теория автоматического управления перестала бы существовать как наука. Любой инженер мог бы вставить такой идеальный самонастраивающийся регулятор и получить прекрасно работающую систему. Существующие алгоритмы самонастройки работают только со строго определенными типами объектов и чаще обеспечивают характеристики хуже, чем можно добиться синтезом специализированного регулятора. Если сможете придумать новый работающий алгоритм самонастройки и реализовать его и он будет хотя бы на 5% лучше аналогов, то можете сразу писать и защищать диссертацию...
Boris_K
developer
developer
Сообщения: 281
Зарегистрирован: 28 янв 2015, 14:25
Версия LabVIEW: 2012 Pro

Re: Самодельный ПИД регулятор

Сообщение Boris_K »

Моделирование всей системы с передаточными функциями в Labview возможно после установки тулкита Control and Simulation.
Зачем так категорично? Можно же "в лоб" руками написать алгоритм какой-нибудь простейшей тепловой модели, как система будет реагировать на подачу мощности.
Race conditions - опасный и скользкий баг!
Аватара пользователя
Andrew Lunev

Activity Professionalism
VIP
VIP
Сообщения: 957
Зарегистрирован: 11 дек 2010, 12:31
Награды: 2
Версия LabVIEW: 2014-2021
Откуда: Москва
Благодарил (а): 4 раза
Поблагодарили: 10 раз

Re: Самодельный ПИД регулятор

Сообщение Andrew Lunev »

Boris_K писал(а): Можно же "в лоб" руками написать алгоритм
Конечно можно, вообще для реализации любого алгоритма достаточно всего нескольких команд языка программирования. Сейчас уже весь набор не вспомню, но вроде это сложение, сравнение и присваивание. Вопрос был совершенно четкий: "Можно ли как-то задавать передаточную функцию что бы регулятор с ней работал?" Вот я и ответил, что задать передаточные функции можно в тулките. Тулкит позволяет не программировать передаточную функцию, а именно задавать. А так, конечно, можно реализовать и без тулкита модель и даже передаточную функцию, но писать с нуля численное интегрирование например методом Рунге-Кутты с переменным шагом та еще радость... :wink:
Аватара пользователя
Jakob Brontfeyn

Activity Gold Silver Black
expert
expert
Сообщения: 1729
Зарегистрирован: 28 фев 2008, 11:01
Награды: 6
Благодарил (а): 1 раз
Контактная информация:

Re: Самодельный ПИД регулятор

Сообщение Jakob Brontfeyn »

Почитайте для начала, вот есть у меня неплохой документ.
И надо определиться что Вы, собственно, хотите, изучить тему или
получить зачет. Регулятор ПИД да еще и с автотьюнингом...
ну не берется такая крепость кавалерийской атакой... тут требуется длительная осада...
Вложения
Особенности реализации алгоритмов регулирования библиотеки PID Control LabVIEW.pdf
(337.65 КБ) 462 скачивания
Ответить

Вернуться в «Общие»