Trouyan 0 4 марта, 2013 Опубликовано 4 марта, 2013 · Жалоба ключевое слово - нормировка надо привести выход к безразмерной величине изменяемой от нуля до единицы и почитать пару лекций по ТАУ. Нормировка обязательна? Осваиваю ПИД регулятор и эта нормировка не радует, т.к. придется работать с числами с плавающей точкой. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AndreyVN 0 4 марта, 2013 Опубликовано 4 марта, 2013 · Жалоба Нормировка обязательна? Осваиваю ПИД регулятор и эта нормировка не радует, т.к. придется работать с числами с плавающей точкой. Нормировка - может и не обязательна, а вот без интегральной составляющей, статическую ошибку регулирования никак не устранить. Удастся Вам посчитать интеграл ошибки регулирования в целых числах? Дифференциальная составляющая понадобиться для обеспечения требуемого быстродействия - тоже проблема в целых числах. На мой взгляд, без плавающей точки остается только пропорциональное регулирование. PS: Что у вас за железо, что оно только с целыми числами работает???? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Trouyan 0 5 марта, 2013 Опубликовано 5 марта, 2013 · Жалоба Нормировка - может и не обязательна, а вот без интегральной составляющей, статическую ошибку регулирования никак не устранить. Удастся Вам посчитать интеграл ошибки регулирования в целых числах? Дифференциальная составляющая понадобиться для обеспечения требуемого быстродействия - тоже проблема в целых числах. На мой взгляд, без плавающей точки остается только пропорциональное регулирование. PS: Что у вас за железо, что оно только с целыми числами работает???? Железо быстрое, только и так уже сильно загружено. Ни как не удаётся освоить ПИД-регуляотр. Пытаюсь промоделировать примитивную задачу, но как-то не очень получается. Может кто разбирается в с Симулинке? Задачу взял для освоения такого плана: Подвешенное тело на которое действует две силы подъемная (управление ее и регулируем) и сила тяжести. Имею такую диффуру: m*y``=F-mg y``=F/m-g Строю модель в симулинке: и задаю небольшое начальное отклонение(во втором интеграторе): И далее подбираю параметры. Проблема, конечно, в подборе коэффициентов. =) Не очень понятна методика их получения... и вообще правильно ли Я построил модель. Заранее благодарю. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Гость TSerg 5 марта, 2013 Опубликовано 5 марта, 2013 · Жалоба >На мой взгляд, без плавающей точки остается только пропорциональное регулирование. Не надо "ля-ля". Лет так 35 назад на i8080 ( 580 ) - 8р проц. мы с удовольствием делали не только PID, но и более сложные вещи именно в формате с фиксированной запятой ( разновидность целочисленной арифметики ) в сетке 16-32 р. >Не очень понятна методика их получения. Методы расчета коэффициентов ПИД-регулятора давно "прозрачно разглажены". Зиглер и Николс сделали это еще в 1942 г. Инженеру о [С]ПИД Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tanya 4 5 марта, 2013 Опубликовано 5 марта, 2013 · Жалоба И далее подбираю параметры. Проблема, конечно, в подборе коэффициентов. =) В такой Вашей модельной задаче не обойтись без дифференциального члена, если Вы регулируете положение, а не скорость. Такая вот особенность - пропорциональный член является "пружинкой". По поводу целых чисел полностью согласна с предыдущим оратором. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Гость TSerg 5 марта, 2013 Опубликовано 5 марта, 2013 · Жалоба >Подвешенное тело на которое действует Термин "подвешенное" означает, что существует в некоторой точке жесткая/гибкая связь между телом и опорой. Выражайтесь грамотнее - у Вас на схеме нет "подвешенного" тела. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Trouyan 0 5 марта, 2013 Опубликовано 5 марта, 2013 · Жалоба >Подвешенное тело на которое действует Термин "подвешенное" означает, что существует в некоторой точке жесткая/гибкая связь между телом и опорой. Выражайтесь грамотнее - у Вас на схеме нет "подвешенного" тела. Вот Я тоже думаю что где-то в схеме проблема, потому и написал здесь.... интуиция не подвела =) Tanay, спасибо большое, это Я уже подробно вчитал. Про смысл и на что влияет каждый коэффициент. Но задачу решить пока не помогло. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Гость TSerg 5 марта, 2013 Опубликовано 5 марта, 2013 · Жалоба Но задачу решить пока не помогло. Начните с нуля, т.е. с примитивных задач и решений их - это помогает, серьезно. >Написал для себя класс. Это - в "орешник" :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Abrams 0 22 января, 2014 Опубликовано 22 января, 2014 · Жалоба Добрый день! Встала задача реализовать контроллер, который поддерживает постоянной скорость вращения ДВС электрогенератора. Краткое описание в другой теме - 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 и используют только положительные значения. Где правда? Заранее благодарен за помощь! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tanya 4 23 января, 2014 Опубликовано 23 января, 2014 · Жалоба Добрый день! Встала задача реализовать контроллер, который поддерживает постоянной скорость вращения ДВС электрогенератора. 2. Результат работы ПИД "pid_out" - это 24-битная переменная, да еще и со знаком. Правильно ли я понимаю, что мне просто надо этот результат привести к диапазону 0-1023 и подавать на ЦАП? Она будет без знака. Вы ведь не собираетесь (я даже думаю, что не можете) крутить генератор в другую сторону. Просто обрезаете снизу. В младших разрядах будет копиться интеграл. Можно его отдельно копить. 16 разрядов должно хватить. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Abrams 0 23 января, 2014 Опубликовано 23 января, 2014 · Жалоба Разумеется генератор и сам двигатель крутяться всегда в одну сторону, это я понимаю. :rolleyes: Управление скоростью вращения двигателя осуществляется заслонкой в канале подачи газового топлива. Необходимо всегда держать частоту вращения двигателя 3000 об/мин. Сама заслонка управляется напряжением 0-10В: 0В - минимальный угол открытия (устанавливается механически), обеспечивающий холостой ход двигателя (около 1500 об/мин) 10В - максимальный угол открытия 90 град. - максимальные обороты двигателя (около 4500 об\мин) Таким образом мне надо результат работы ПИД преобразовать в 0-1023 и прямо подать на ЦАП? Получается, если результат ПИД будет меньше 0, то считаем его равным 0 и заслонка должна быть закрыта, а двигатель работать на ХХ? Если же результат положительный, то просто "беру" старшие 10 бит от 24-битного результата и пишу в ЦАП? P.S. Прошу сильно не бить, что так дотошно все переспрашиваю и уточняю. Спасибо! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tanya 4 23 января, 2014 Опубликовано 23 января, 2014 · Жалоба Получается, если результат ПИД будет меньше 0, то считаем его равным 0 и заслонка должна быть закрыта, а двигатель работать на ХХ? Если правильно настроить, то не будет. В установившемся режиме главный член - интегральный. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
thermit 1 24 января, 2014 Опубликовано 24 января, 2014 · Жалоба Добрый день! Встала задача реализовать контроллер, который поддерживает постоянной скорость вращения ДВС электрогенератора. Краткое описание в другой теме - 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 и используют только положительные значения. Где правда? Заранее благодарен за помощь! как быстро реагирует двигатель на изменение положения заслонки при максимальной нагрузке? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Abrams 0 24 января, 2014 Опубликовано 24 января, 2014 · Жалоба как быстро реагирует двигатель на изменение положения заслонки при максимальной нагрузке? К сожалению точно не знаю :( Заказчик говорит, что на других генераторах, при изменении нагрузки с минимума до максимальной двигатель реагирует практически мгновенно и просаживания частоты генератора не заметно. Но это все на глаз, по индикатору выходной частоты генератора. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tanya 4 24 января, 2014 Опубликовано 24 января, 2014 · Жалоба К сожалению точно не знаю :( Да это и не важно - двигатель такой, какой есть. Регулятор должен быть настроен адекватно. Время тут относительная величина с точки зрения масштаба. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться