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

Темы связанные с инженерными разработками, но не подходящие в другие ветки форума

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

Postby GoodSimon on 13 Apr 2017, 01:56

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

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

Postby Borjomy_1 on 13 Apr 2017, 02:31

Для того, чтобы разобраться в работе PID.vi надо хотя бы представлять, что такое ПИД регулирование, для чего звенья пропорционального, интегрального и дифференциального звеньев. Тут надо читать теорию управления. Ничего нового в хелпе не будет.
Если вы знаете математическую формулу, по которой считаются звенья П, И и Д, то стандартный PID вам, действительно, не нужен.
Чтобы система сама находила коэффициенты потребуется несколько больше, чем простая работа... Это не невозможно, но все придется делать ручками.
Для симуляции необходимо создать математическую модель теплообмена какого-то объекта, т.е зависимость температуры какой-то точки объекта от количества поданного тепла и времени, с учетом задержек и потерь. Только после этого к ней можно начинать прикручивать ПИД регулятор
Borjomy_1
expert
expert
 
Posts: 1809
Joined: 28 Jun 2012, 09:32
Location: город семи холмов
Medals: 3
Activity (1) Professionalism (1) Silver (1)
LabVIEW Version: 4-8.6,9-14
Karma: 318
VIP

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

Postby GoodSimon on 14 Apr 2017, 00:01

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


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

Я так понял PID.vi универсален, но для понимания "в лоб" для меня сложен. Но ведь в этой библиотеке есть само-подстраивающийся ПИД-регулятор.
Все это меня приводит к вопросам:
"Как сделать ПИД-регулятор в LabVIEW самому?"
"Можно ли как-то задавать передаточную функцию что бы регулятор с ней работал?"
"Как сделать автонастройку коэффициентов?"
GoodSimon
beginner
beginner
 
Posts: 12
Joined: 12 Apr 2017, 17:25
LabVIEW Version: 2016
Karma: 0

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

Postby Artem.spb on 14 Apr 2017, 01:03

GoodSimon wrote:Нам ПИД-регулятор давали вот такой формулой:
Image
"Как сделать ПИД-регулятор в LabVIEW самому?"

Капитан очевидность подсказывает мне, что надо запрограммировать эту формулу.
e(t) ы простейшем случае просто разность между уставкой и реальным значением.
dt - шаг дискретизации вашей системы.
интеграл-дифференциал, надеюсь, объяснять не надо?

"Как сделать автонастройку коэффициентов?"

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

Ну а с программированием регулятора температуры совсем просто. Только не с автоподбором коэффициентов. Потому что ваша имитационная систему будет вести себя совершенно не так, как ведёт себя реально подогреваемая система.
Artem.spb
expert
expert
 
Posts: 1371
Joined: 31 Jul 2011, 23:05
Medals: 2
Activity (1) Автор (1)
LabVIEW Version: 12,14,15
Karma: 237
CLD hardware I/O VIP freelance

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

Postby GoodSimon on 14 Apr 2017, 01:36

Artem.spb wrote:интеграл-дифференциал, надеюсь, объяснять не надо?

Как раз таки лучше бы объяснить как им пользоваться в labview, ибо я совсем не понимаю где в этой среде интегралл от 0 по t.
dt - шаг дискретизации вашей системы.

Т.е. как часто система будет получать текущее значение?
GoodSimon
beginner
beginner
 
Posts: 12
Joined: 12 Apr 2017, 17:25
LabVIEW Version: 2016
Karma: 0

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

Postby Andrew Lunev on 14 Apr 2017, 04:02

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

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

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

Ну а сделать автонастройку тут или найти и полностью содрать уже чей-то готовый вариант или вообще не браться.
Если бы в природе существовал универсальный рабочий алгоритм самонастройки, то теория автоматического управления перестала бы существовать как наука. Любой инженер мог бы вставить такой идеальный самонастраивающийся регулятор и получить прекрасно работающую систему. Существующие алгоритмы самонастройки работают только со строго определенными типами объектов и чаще обеспечивают характеристики хуже, чем можно добиться синтезом специализированного регулятора. Если сможете придумать новый работающий алгоритм самонастройки и реализовать его и он будет хотя бы на 5% лучше аналогов, то можете сразу писать и защищать диссертацию...
User avatar
Andrew Lunev
leader
leader
 
Posts: 863
Joined: 11 Dec 2010, 12:31
Location: Москва
Medals: 2
Activity (1) Professionalism (1)
LabVIEW Version: 2018
Karma: 249
hardware I/O VIP teachers

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

Postby Boris_K on 31 May 2017, 17:48

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

Зачем так категорично? Можно же "в лоб" руками написать алгоритм какой-нибудь простейшей тепловой модели, как система будет реагировать на подачу мощности.
Race conditions - самый опасный, скользкий и противный баг!
Boris_K
developer
developer
 
Posts: 262
Joined: 28 Jan 2015, 14:25
LabVIEW Version: 2012 Pro
Karma: 6

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

Postby Andrew Lunev on 31 May 2017, 18:51

Boris_K wrote: Можно же "в лоб" руками написать алгоритм
Конечно можно, вообще для реализации любого алгоритма достаточно всего нескольких команд языка программирования. Сейчас уже весь набор не вспомню, но вроде это сложение, сравнение и присваивание. Вопрос был совершенно четкий: "Можно ли как-то задавать передаточную функцию что бы регулятор с ней работал?" Вот я и ответил, что задать передаточные функции можно в тулките. Тулкит позволяет не программировать передаточную функцию, а именно задавать. А так, конечно, можно реализовать и без тулкита модель и даже передаточную функцию, но писать с нуля численное интегрирование например методом Рунге-Кутты с переменным шагом та еще радость... :wink:
User avatar
Andrew Lunev
leader
leader
 
Posts: 863
Joined: 11 Dec 2010, 12:31
Location: Москва
Medals: 2
Activity (1) Professionalism (1)
LabVIEW Version: 2018
Karma: 249
hardware I/O VIP teachers

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

Postby Jakob Brontfeyn on 01 Jun 2017, 13:57

Почитайте для начала, вот есть у меня неплохой документ.
И надо определиться что Вы, собственно, хотите, изучить тему или
получить зачет. Регулятор ПИД да еще и с автотьюнингом...
ну не берется такая крепость кавалерийской атакой... тут требуется длительная осада...
Attachments
Особенности реализации алгоритмов регулирования библиотеки PID Control LabVIEW.pdf
(337.65 KiB) Downloaded 137 times
User avatar
Jakob Brontfeyn
expert
expert
 
Posts: 1703
Joined: 28 Feb 2008, 11:01
Medals: 6
Activity (1) Gold (1) Silver (2) Black (2)
Karma: 237
VIP


Return to Общие

Who is online

Users browsing this forum: No registered users and 2 guests

cron