|
|
  |
ПИД+ШИМ, переход от ПИД К ШИМ |
|
|
|
Apr 13 2016, 12:45
|
Гуру
     
Группа: Модераторы
Сообщений: 8 752
Регистрация: 6-01-06
Пользователь №: 12 883

|
Цитата(kumle @ Apr 13 2016, 15:25)  я стабилизирую частоту оборотов двигателя) Частоту вращения регулировать легко и приятно с таким двигателем. Можно даже, выбранным Вами, таким незатейливым ШИМом. Частота при постоянной нагрузке устанавливается сама-собой пропорционально напряжению питания - среднему значению по периоду ШИМа. Лучше, однако, управлять током, от которого момент зависит линейно. Но можно и так... Суммируете компоненты ПИДа и подаете эту сумму на ШИМ. Можете все это промоделировать, заменив двигатель на конденсатор с резистором и генератором тока, который имитирует нагрузку. Емкость конденсатора - момент инерции, напряжение на конденсаторе - скорость вращения. Если добавить еще резистор параллельно конденсатору, то добавится трение.
|
|
|
|
|
Apr 13 2016, 13:04
|
рядовой
     
Группа: Участник
Сообщений: 2 811
Регистрация: 21-08-06
Пользователь №: 19 713

|
Цитата(kumle @ Apr 13 2016, 15:25)  Если кратко, то мой вопрос в том как правильно сделать нормализацию управляющего сигнала с выхода ПИД, в скважность ШИМ. У Вас есть регулировочная характеристика двигателя - зависимость частоты вращения от напряжения. Средняя величина напряжения, подаваемого на двигатель, это напряжение питания, умноженное на коэффициент заполнения. Управляющий сигнал тоже имеет диапазон - от минимального значения до максимального. Если, к примеру, минимальному значению управляющего сигнала соответствует минимальный коэффициент заполнения, ему же будет соответствовать минимальная частота вращения, а максимальному - максимальная, соответственно. P.S. Вы там по ходу дела учебник читаете, что ли? Очень уж наукоемко излагаете.
|
|
|
|
|
Apr 13 2016, 14:09
|

Частый гость
 
Группа: Участник
Сообщений: 149
Регистрация: 15-12-09
Из: Москва
Пользователь №: 54 280

|
Цитата(amaora @ Apr 13 2016, 15:46)  Выход ограничивайте на крайних значениях заполнения и не надо никаких "переход от управляющего воздействия к скважности ШИМ". Ведь это будет всего лишь еще один коэффициент на который умножится невязка, как и на пропорциональный коэффициент регулятора, так зачем их нужно два. Разделение на выход регулятора и величину заполнения может иметь смысл в каких-то случаях, если выход в Вольтах например, а питание может изменяться во время работы, тогда надо пересчитывать заполнение после регулятора. А еще, Вам здесь скоро скажут, что нужен контур тока, а потом уже по скорости. А как быть в том случае если алгоритм не выдает крайнее значение заполнения? А это нужно например чтобы сразу быстро стартануть мотор. Я понимаю в этом случае нужно увеличить коэфициент в пропорциональной составляющей Kp, но тогда другие составлющие (интегральная и дифференциальная) будут вносить меньший вклад в регулирование? Как тут быть ? Цитата(Tanya @ Apr 13 2016, 15:45)  Можете все это промоделировать, заменив двигатель на конденсатор с резистором и генератором тока, который имитирует нагрузку. Не, я уже сделал макет с мотором и ременной передачей на другой вал где насажен диск для создания инерции
|
|
|
|
|
Apr 13 2016, 15:01
|
Гуру
     
Группа: Модераторы
Сообщений: 8 752
Регистрация: 6-01-06
Пользователь №: 12 883

|
Цитата(kumle @ Apr 13 2016, 17:09)  А как быть в том случае если алгоритм не выдает крайнее значение заполнения? А это нужно например чтобы сразу быстро стартануть мотор. Я понимаю в этом случае нужно увеличить коэфициент в пропорциональной составляющей Kp, но тогда другие составлющие (интегральная и дифференциальная) будут вносить меньший вклад в регулирование? Как тут быть ? Алгоритм не должен выдавать зашкаливающие значения. Он (ПИД) не для того, чтобы им так грубо управляли. Нужно плавно менять значение задатчика - ограничивать скорость нарастания. Тогда ПИД будет нормально работать. Цитата(kumle @ Apr 13 2016, 17:09)  Не, я уже сделал макет с мотором и ременной передачей на другой вал где насажен диск для создания инерции А вот с этим нужно осторожнее. Можно сжечь драйвер. Если слишком быстро (неумело) тормозить, например. При старте тоже... Контроль тока нужно делать.
|
|
|
|
|
Apr 13 2016, 15:08
|
Местный
  
Группа: Участник
Сообщений: 421
Регистрация: 2-01-08
Пользователь №: 33 778

|
Цитата(kumle @ Apr 13 2016, 17:09)  А как быть в том случае если алгоритм не выдает крайнее значение заполнения? А это нужно например чтобы сразу быстро стартануть мотор. Я понимаю в этом случае нужно увеличить коэфициент в пропорциональной составляющей Kp, но тогда другие составлющие (интегральная и дифференциальная) будут вносить меньший вклад в регулирование? Как тут быть ? Это вопрос настройки регулятора, или даже выбора структуры СУ, а еще лучше начать с изучения требуемых траекторий движения системы и того какое управление их обеспечит. Я знаю два варианта "быстрых" регуляторов. 1. Релейный, или почти релейный пропорциональный с большим коэффициентом. Весь переходный процесс регулятор находится в насыщении и выдает крайнее значение, и только в малой области около заданного значения остается линейный режим. Это требует хорошего качества обратной связи, с минимальным шумом. 2. Использование модели системы, для формирования управления из допустимой траектории (без использования невязки с заданным значением) + слабый ПИ регулятор для компенсации неточности модели или + адаптация модели. Здесь есть много разных вариантов, структур построения. В вашем случае простой пример такого управления, это пересчитывать требуемое напряжение через электромеханическую постоянную и заданную скорость + падение напряжения на активном сопротивлении, u = w*E + i*R. Только вот это пример не дает минимально возможный отклик, для этого нужно знать больше информации об управляемой системе. Добавка: п.1 не для любой системы подходит в таком простом виде.
Сообщение отредактировал amaora - Apr 13 2016, 15:13
|
|
|
|
|
Apr 15 2016, 07:52
|
Местный
  
Группа: Свой
Сообщений: 229
Регистрация: 3-02-06
Из: Санкт-Петербург
Пользователь №: 13 974

|
Цитата(Tanya @ Apr 13 2016, 18:01)  Алгоритм не должен выдавать зашкаливающие значения. Он (ПИД) не для того, чтобы им так грубо управляли. Нужно плавно менять значение задатчика - ограничивать скорость нарастания. Тогда ПИД будет нормально работать. разве ПИД не обязан адекватно реагировать при любом изменение задатчика?
|
|
|
|
|
Apr 15 2016, 09:08
|
Местный
  
Группа: Свой
Сообщений: 229
Регистрация: 3-02-06
Из: Санкт-Петербург
Пользователь №: 13 974

|
Цитата(Tanya @ Apr 15 2016, 11:14)  Нет, к всеобщему сожалению. Реальный. Идеальный с бесконечным напряжением питания (выдаваемым на выходе воздействием) мог бы. не понимаю, к примеру если ПИД управляет температурой котла, мы разве не можем поменять температуру с 50 до 80 ? какие последствие при этом будут? и кто тогда должен плавно менять? другой контур ПИД? или еще что то? какие критерий допустимости изменения входа?
|
|
|
|
|
Apr 15 2016, 09:19
|
Гуру
     
Группа: Модераторы
Сообщений: 8 752
Регистрация: 6-01-06
Пользователь №: 12 883

|
Цитата(digital @ Apr 15 2016, 12:08)  не понимаю, к примеру если ПИД управляет температурой котла, мы разве не можем поменять температуру с 50 до 80 ? какие последствие при этом будут? Будет большое перерегулирование с последующими колебаниями. Не всегда это допустимо. Цитата(digital @ Apr 15 2016, 12:08)  и кто тогда должен плавно менять? другой контур ПИД? или еще что то? какие критерий допустимости изменения входа? Плавно менять должен ограничитель скорости нарастания. Ведь при максимальной мощности скорость нагрева ограничена. Вот и нужно до этой величины (ну, не совсем, немного меньше) ограничивать задатчик. Альтернативно. На примере Вашего котла - включаем максимальную мощность на некоторое время. При некоторой небольшой невязке включаем ПИД с величиной И-компоненты, соответствующей выбранной температуре - мы ведь не первый день этот котел греем...
|
|
|
|
|
Apr 15 2016, 09:54
|
Местный
  
Группа: Свой
Сообщений: 229
Регистрация: 3-02-06
Из: Санкт-Петербург
Пользователь №: 13 974

|
Цитата(Tanya @ Apr 15 2016, 12:19)  Будет большое перерегулирование с последующими колебаниями. Не всегда это допустимо. хм, я получается воюю с ветреными мельницами Цитата Плавно менять должен ограничитель скорости нарастания. Ведь при максимальной мощности скорость нагрева ограничена. Вот и нужно до этой величины (ну, не совсем, немного меньше) ограничивать задатчик. Альтернативно. На примере Вашего котла - включаем максимальную мощность на некоторое время. При некоторой небольшой невязке включаем ПИД с величиной И-компоненты, соответствующей выбранной температуре - мы ведь не первый день этот котел греем... т.е. примерно так? 1. способ error=TempNeed-TempCur; // где TempNeed задатчик TemCur текущая if((error<-5.0)||(error>-5.0)) Output=1.0; // else Output=PID(error); 2. способ Temp+=(TempNeed-Temp)/64; error=Temp-TempCur; Output=PID(error); // где TempNeed задатчик // TemCur текущая температура (измеренная) и можно еще вопрос в случае нагревателя, выход ПИД это амплитуда подаваемая на нагреватель или приращение амплитуды ? т.е. Output=PID(error); или Output+=PID(error);
|
|
|
|
|
Apr 15 2016, 12:23
|
Гуру
     
Группа: Модераторы
Сообщений: 8 752
Регистрация: 6-01-06
Пользователь №: 12 883

|
Цитата(digital @ Apr 15 2016, 12:54)  хм, я получается воюю с ветреными мельницами т.е. примерно так?
и можно еще вопрос
в случае нагревателя, выход ПИД это амплитуда подаваемая на нагреватель или приращение амплитуды ?
т.е. Output=PID(error); или Output+=PID(error); Не знаю, с чем и зачем Вы воюете, но пишете очень непонятно. Это на каком языке? Схема (кусок кода) ограничения скорости задатчика должна линейно по времени периодически (каждую секунду или минуту, или неделю..) добавлять немножко к задатчику до достижения желаемого. Второй способ - совсем отключаем регулятор и подаем максимальную мощность до достижения почти желаемого, после чего включаем ПИД, записав в И-часть заранее определенную величину. На выходе регулятора должна быть мощность, которая при нагреве напряжением пропорциональна его квадрату, а при использовании ШИМа - среднему по периоду времени включения нагревателя. Это если напряжение фиксировано.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|