|
|
  |
Автоматическое регулирование |
|
|
|
Mar 4 2013, 15:16
|
Группа: Участник
Сообщений: 11
Регистрация: 27-01-12
Пользователь №: 69 912

|
Цитата(LordN @ Aug 29 2006, 23:18)  ключевое слово - нормировка надо привести выход к безразмерной величине изменяемой от нуля до единицы и почитать пару лекций по ТАУ. Нормировка обязательна? Осваиваю ПИД регулятор и эта нормировка не радует, т.к. придется работать с числами с плавающей точкой.
|
|
|
|
|
Mar 4 2013, 15:45
|
Знающий
   
Группа: Свой
Сообщений: 754
Регистрация: 29-06-06
Из: Volgograd
Пользователь №: 18 458

|
Цитата(Артур @ Mar 4 2013, 18:16)  Нормировка обязательна? Осваиваю ПИД регулятор и эта нормировка не радует, т.к. придется работать с числами с плавающей точкой. Нормировка - может и не обязательна, а вот без интегральной составляющей, статическую ошибку регулирования никак не устранить. Удастся Вам посчитать интеграл ошибки регулирования в целых числах? Дифференциальная составляющая понадобиться для обеспечения требуемого быстродействия - тоже проблема в целых числах. На мой взгляд, без плавающей точки остается только пропорциональное регулирование. PS: Что у вас за железо, что оно только с целыми числами работает????
|
|
|
|
|
Mar 5 2013, 16:12
|
Группа: Участник
Сообщений: 11
Регистрация: 27-01-12
Пользователь №: 69 912

|
Цитата(AndreyVN @ Mar 4 2013, 19:45)  Нормировка - может и не обязательна, а вот без интегральной составляющей, статическую ошибку регулирования никак не устранить. Удастся Вам посчитать интеграл ошибки регулирования в целых числах? Дифференциальная составляющая понадобиться для обеспечения требуемого быстродействия - тоже проблема в целых числах. На мой взгляд, без плавающей точки остается только пропорциональное регулирование.
PS: Что у вас за железо, что оно только с целыми числами работает???? Железо быстрое, только и так уже сильно загружено. Ни как не удаётся освоить ПИД-регуляотр. Пытаюсь промоделировать примитивную задачу, но как-то не очень получается. Может кто разбирается в с Симулинке? Задачу взял для освоения такого плана: Подвешенное тело на которое действует две силы подъемная (управление ее и регулируем) и сила тяжести. Имею такую диффуру: m*y``=F-mg y``=F/m-g Строю модель в симулинке: и задаю небольшое начальное отклонение(во втором интеграторе):  И далее подбираю параметры. Проблема, конечно, в подборе коэффициентов. =) Не очень понятна методика их получения... и вообще правильно ли Я построил модель. Заранее благодарю.
|
|
|
|
Guest_TSerg_*
|
Mar 5 2013, 16:33
|
Guests

|
>На мой взгляд, без плавающей точки остается только пропорциональное регулирование. Не надо "ля-ля". Лет так 35 назад на i8080 ( 580 ) - 8р проц. мы с удовольствием делали не только PID, но и более сложные вещи именно в формате с фиксированной запятой ( разновидность целочисленной арифметики ) в сетке 16-32 р. >Не очень понятна методика их получения. Методы расчета коэффициентов ПИД-регулятора давно "прозрачно разглажены". Зиглер и Николс сделали это еще в 1942 г. Инженеру о [С]ПИД
|
|
|
|
Guest_TSerg_*
|
Mar 5 2013, 16:53
|
Guests

|
>Подвешенное тело на которое действует
Термин "подвешенное" означает, что существует в некоторой точке жесткая/гибкая связь между телом и опорой. Выражайтесь грамотнее - у Вас на схеме нет "подвешенного" тела.
|
|
|
|
|
Mar 5 2013, 17:05
|
Группа: Участник
Сообщений: 11
Регистрация: 27-01-12
Пользователь №: 69 912

|
Цитата(TSerg @ Mar 5 2013, 20:53)  >Подвешенное тело на которое действует
Термин "подвешенное" означает, что существует в некоторой точке жесткая/гибкая связь между телом и опорой. Выражайтесь грамотнее - у Вас на схеме нет "подвешенного" тела. Вот Я тоже думаю что где-то в схеме проблема, потому и написал здесь.... интуиция не подвела =) Tanay, спасибо большое, это Я уже подробно вчитал. Про смысл и на что влияет каждый коэффициент. Но задачу решить пока не помогло.
|
|
|
|
Guest_TSerg_*
|
Mar 5 2013, 17:20
|
Guests

|
Цитата(Артур @ Mar 5 2013, 21:05)  Но задачу решить пока не помогло. Начните с нуля, т.е. с примитивных задач и решений их - это помогает, серьезно. >Написал для себя класс. Это - в "орешник"
|
|
|
|
|
Jan 22 2014, 19:52
|
Участник

Группа: Участник
Сообщений: 55
Регистрация: 10-02-09
Из: Выборг
Пользователь №: 44 667

|
Добрый день! Встала задача реализовать контроллер, который поддерживает постоянной скорость вращения ДВС электрогенератора. Краткое описание в другой теме - http://electronix.ru/forum/index.php?showtopic=118178С аппаратной частью проблем нет. Собрали макет - сигнал от датчика принимается, частота считается, выход на 0-10В работает. Контроллер будет 18F45K22 на 16MIPS. Выходное напряжение получается от ЦАП 10 бит. А теперь начинается самое интересное, надо делать регулятор! За последние два дня перечитал много всего по ПИД и его цифровой реализации. За основу возьму аппноут от Микрочипа AN937. Все там вроде хорошо, но есть несколько несовсем понятных моментов приментельно к конкретной задачи: 1. Входная ошибка "error" - это разница между частотами вращения, правильно? Т.е. я просто вычитаю из необходимой номинальной частоты (3000 об/мин) текущую частоту (например 2500 об/мин) и эту разницу (500 об/мин) в явном виде присваиваю переменной "error" и переводить об/мин в "попугаи" не надо? 2. Результат работы ПИД "pid_out" - это 24-битная переменная, да еще и со знаком. Правильно ли я понимаю, что мне просто надо этот результат привести к диапазону 0-1023 и подавать на ЦАП? 3. Если п.2 = ДА, то как правильно пересчитать "pid_out" в 0-1023 для ЦАП? Ноль "pid_out" - это 0 или 511? В большинстве реализаций, что я видел, отрицательные значения результата считают равным 0 и используют только положительные значения. Где правда? Заранее благодарен за помощь!
|
|
|
|
|
Jan 23 2014, 11:39
|
Участник

Группа: Участник
Сообщений: 55
Регистрация: 10-02-09
Из: Выборг
Пользователь №: 44 667

|
Разумеется генератор и сам двигатель крутяться всегда в одну сторону, это я понимаю. Управление скоростью вращения двигателя осуществляется заслонкой в канале подачи газового топлива. Необходимо всегда держать частоту вращения двигателя 3000 об/мин. Сама заслонка управляется напряжением 0-10В: 0В - минимальный угол открытия (устанавливается механически), обеспечивающий холостой ход двигателя (около 1500 об/мин) 10В - максимальный угол открытия 90 град. - максимальные обороты двигателя (около 4500 об\мин) Таким образом мне надо результат работы ПИД преобразовать в 0-1023 и прямо подать на ЦАП? Получается, если результат ПИД будет меньше 0, то считаем его равным 0 и заслонка должна быть закрыта, а двигатель работать на ХХ? Если же результат положительный, то просто "беру" старшие 10 бит от 24-битного результата и пишу в ЦАП? P.S. Прошу сильно не бить, что так дотошно все переспрашиваю и уточняю. Спасибо!
|
|
|
|
|
Jan 24 2014, 07:23
|
Знающий
   
Группа: Участник
Сообщений: 781
Регистрация: 3-08-09
Пользователь №: 51 730

|
Цитата(Abrams @ Jan 22 2014, 22:52)  Добрый день! Встала задача реализовать контроллер, который поддерживает постоянной скорость вращения ДВС электрогенератора. Краткое описание в другой теме - http://electronix.ru/forum/index.php?showtopic=118178С аппаратной частью проблем нет. Собрали макет - сигнал от датчика принимается, частота считается, выход на 0-10В работает. Контроллер будет 18F45K22 на 16MIPS. Выходное напряжение получается от ЦАП 10 бит. А теперь начинается самое интересное, надо делать регулятор! За последние два дня перечитал много всего по ПИД и его цифровой реализации. За основу возьму аппноут от Микрочипа AN937. Все там вроде хорошо, но есть несколько несовсем понятных моментов приментельно к конкретной задачи: 1. Входная ошибка "error" - это разница между частотами вращения, правильно? Т.е. я просто вычитаю из необходимой номинальной частоты (3000 об/мин) текущую частоту (например 2500 об/мин) и эту разницу (500 об/мин) в явном виде присваиваю переменной "error" и переводить об/мин в "попугаи" не надо? 2. Результат работы ПИД "pid_out" - это 24-битная переменная, да еще и со знаком. Правильно ли я понимаю, что мне просто надо этот результат привести к диапазону 0-1023 и подавать на ЦАП? 3. Если п.2 = ДА, то как правильно пересчитать "pid_out" в 0-1023 для ЦАП? Ноль "pid_out" - это 0 или 511? В большинстве реализаций, что я видел, отрицательные значения результата считают равным 0 и используют только положительные значения. Где правда? Заранее благодарен за помощь! как быстро реагирует двигатель на изменение положения заслонки при максимальной нагрузке?
|
|
|
|
|
Jan 24 2014, 08:00
|
Участник

Группа: Участник
Сообщений: 55
Регистрация: 10-02-09
Из: Выборг
Пользователь №: 44 667

|
Цитата(thermit @ Jan 24 2014, 11:23)  как быстро реагирует двигатель на изменение положения заслонки при максимальной нагрузке? К сожалению точно не знаю  Заказчик говорит, что на других генераторах, при изменении нагрузки с минимума до максимальной двигатель реагирует практически мгновенно и просаживания частоты генератора не заметно. Но это все на глаз, по индикатору выходной частоты генератора.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|