Специалисты по ТАУ есть?

Настало время приводить прошивку регуля бормашинки во вменяемое состояние. С красивыми блок-схемами, формулами и т.п. Без “магических коэффициентов”, которые так любят программисты от сохи. Начали бодро, но тут полезло…

Вот есть абстрактный регулятор скорости, который умеет мерять все что происходит в моторчике (обычном, не асинхроннике). Допустим, мы хотим просто стабилизировать обороты. Тут все просто - ставим ПИ(Д), заводим на него уставку, реальную скорость, и радуемся. Методики настройки стандартного ПИД-а известны и просты. Д-компоненту вообще херим, чтобы не заморачиваться.

Теперь, добавим “маленькое” условие - хочется ограничить максимальную потребляемую мощность, чтобы не спалить мотор. Вроде бы мелочь, и практически никогда не “используется”. Но при попытке построить схему регулятора выходит какой-то ад. Можно конечно поступить тупо в лоб - поставить 2 последовательных ПИД-а, но радости настройки это никому не прибавит. У нас ведь какая цель? Чтобы юзеру было легко. Если для защиты надо еще пару параметров крутить - это плохо, очень.

Хочется что-то простое, не требующее дополнительных усилий в настройке. Т.к. ограничение мощности работает с тем же режимом, что регулировка скорости (и с тем же мотором), то “на глаз” должны прокатить те же параметры ПИД-а. Дальше, по логике, простых вариантов два:

  • Используем один ПИД, но пытаемся завести на вход 2 сигнала через хитрый микшер
  • Используем 2 одинаковых пида, и коммутируем выходы как Min(out1, out2). Типа, кто больше ограничил скорость, тот и прав.

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

Кто-нибудь знает простое готовое решение? Ключевой момент - ПРОСТОЕ (не требующее отдельной ручной настройки для ограничения мощности).

  • 1442
Comments
Lazy

Электродвигатели насколько я помню имеют линейную ( или почти линейную ) зависимость оборотов от мощности. Вместо регулирования оборотов не проще сразу регулировать мощность?

Taboo

Вам надо ограничить мощность, или управлять ею?
Если ограничить, то возмите и ограничте её после ПИДа.
Там конечно с интегральной состовляющей херня приключится, но её можно просто обнулить.

Vitaly
Lazy;bt159263

Электродвигатели насколько я помню имеют линейную ( или почти линейную ) зависимость оборотов от мощности. Вместо регулирования оборотов не проще сразу регулировать мощность?

Если очень упрощать, то регулируют обычно то, что хотят сделать стабильным. Стабильная потребляемая мощность, в отличие от оборотов, нахер не нужна.

Переходи сразу к блок-схемам, на этом обычно валятся все мамкины рецепты 😃

Панкратов_Сергей

Мотор палит не мощность на него подаваемая, а ток.
Потому если просто то нужно просто брать интеграл по току за определенный промежуток времени (зависящий от тепловой инерции обмотки).
Более верно и точнее - интеграл по току с учетом оборотов ( потому как охлаждение зависит от оборотов).

Vitaly
Taboo;bt159264

Вам надо ограничить мощность, или управлять ею?
Если ограничить, то возмите и ограничте её после ПИДа.

Мне надо регулировать скорость и ограничивать максимально допустимую мощность.

Как конкретно “ограничить мощность после ПИД”? И удовлетворить тем требованиям, которые я назвал. Покажите блок-схему, или формулу хотя бы.

SergejK

Если напряжение остается постоянным, то ограничение максимальной мощности будет означать ограничение максимального тока. Похоже имелось ввиду ограничивать по току выход пида оборотов. Если ток превышает максимально допустимый - выдавать на мотор последнее значение пида оборотов до тех пор, пока ток не упадет ниже ограничения. Это как самый простой вариант.

Vitaly
SergejK;bt159268

Если напряжение остается постоянным, то ограничение максимальной мощности будет означать ограничение максимального тока. Похоже имелось ввиду ограничивать по току выход пида оборотов. Если ток превышает максимально допустимый - выдавать на мотор последнее значение пида оборотов до тех пор, пока ток не упадет ниже ограничения. Это как самый простой вариант.

Это бормашинка, а не вентилятор. Многое зависит от того, как юзер давит на вал. Если заморозить угол открытия симистора - будет полная фигня.

И я настойчиво рекомендую перейти от рассуждений к блок-схемам или формулам. Это очень наглядный критерий, как отличить конструктивные вещи от болтовни или дилетанства с магическими константами.

SergejK

Ну а если поконкретнее, как имеряются обороты в данном случае, прямо на валу сенсором или еще как? Измеряется ли вообще ток?

Vitaly

Обороты меряются опосредованно, через BackEMF. Но считайте что таходатчиком, чтобы не отвлекаться на те вопросы, которые сейчас не имеют значения. Ток меряется, напряжение тоже. Схема тут.

Постановка задачи такова:

  • Есть возможность померять все стандартные процессы, происходящие в моторе, включая скорость.
  • Нужно построить регулятор, который стабилизирует скорость и лимитирует мощность.
  • Настройка регулятора должна быть такая же простая, как просто у ПИД-а, который только регулирует скорость. По этим критериям двухконтурный ПИД мне не нравится, и он явно избыточен для данной задачи.
SergejK

Избыточность не порок, если ускоряет процесс разработки и внедрения и позволяет получить желаемый результат. Отсюда мне видится вариант с двумя параллельными пидами и выбором по минимуму на выходе наиболее оптимальным. Пид ограничения мощности в силу простоты и некритичности к скорости реакции наверняка будет нормально работать на широком круге устройств со среднестатистическими настройками. Зато данная схема позволит осуществлять плавный переход от регулировки оборотов к ограничению мощности и наоборот и легко реализуема.

Vitaly

Параллельные пиды действительно где-то ставят в реальной жизни?

Везде где я встречал - только последовательное включение, а это довольно мутная хрень, если грамотно прорабатывать а не на соплях лепить. Было б просто - поставил бы классический вариант и не парился.

SergejK

Параллельные они только в плане параллельной работы и вычислений результата. Регулировать же мотор в любой момент времени будет только один из них, в зависимости от того, что нужно регулировать в этот момент.

Vitaly

Вы не могли бы ответить именно на мой вопрос, а не вообще 😃 ? Такая схема включения где-то встречается в реальной жизни? Меня смущает, что я не видел подобного ни в одной публикации, когда искал.

Lazy

ШИМ с обратной связью по току? Или я что то не понимаю?

SergejK

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

Vitaly
Lazy;bt159276

Или я что то не понимаю?

Не понимаешь. Мне нужен регулятор, который работает от ДВУХ параметров. Скорости и мощности. ДВУХ, а не ОДНОГО. Но при этом такой же простой в настройке, как регуль, который трекает один параметр (только скорость). И мне нужна нормальная аналитическая запись, это обычно либо блок-схема из стандартных модулей, либо пачка формул - кому как удобнее.

От слов “обратная связь по току” у меня каждый раз глазик дергается. Если интересно - загугли “BackEMF speed” и посмотри нормальные статьи, как определяют скорость мотора, вместо малограмотного творчества.

ADF

Ну, по генераторному ЭДС обороты оценить, а нагрузку на валу (момент) проще всего через ток. Чтобы сопоставить: напряжение И ток - с парой: обороты И момент.

Пршу простить за капитанство.

Taboo

Я понял вашу проблему.
Действительно, когда вникаешь, получаетса, что мощность зависит и от тока и от напряжения. 😃 Мощностью надо как-то управлять и хочется поставить ещё один ПИД. 😃
Но как Вы заметили - это сложно.
Я бы в таком проекте, мощность ограничил бы аппаратно. Либо крутил напряжение. Либо поставил источник тока.

Панкратов_Сергей

Повторю- мотор сгорает не от подаваемой на него мощности, а от мощности, что на нем рассеивается.
Мотору можно скормить и 300 вт и он не сгорит. Но в то же время может сгореть и при 30 вт поданной мощности.
В первом случае подали 300, 270 ушло на вал, а 30 вт расселось на якоре и при хорошем обдуве ( обороты).
А во втором случае подали всего 30, но мотор застопорен, обдува нет- все на якоре…
Потому-

Мотор палит не мощность на него подаваемая, а ток.
Потому если просто то нужно просто брать интеграл по току за определенный промежуток времени (зависящий от тепловой инерции обмотки).
Более верно и точнее - интеграл по току с учетом оборотов ( потому как охлаждение зависит от оборотов).

Тут формула и написана, только словами.

amaora

Самое простое это добавить поверх основного контура ограничение на уставку (заданное значение). Именно ограничение а не регулятор, то есть если мощность больше предела, то уменьшаем уставку до значения когда при текущем значении тока она станет не больше предела. И еще его нужно замедлить относительно основного контура регулирования, например взяв не мгновенное значение мощности а пропущенное через НЧ-фильтр. Иначе можно испортить работу контура, появятся колебания. Я так делаю вот здесь, но у меня совсем иначе построено управление.

Да и про то, что сжигает мотор не потребляемая мощность а потери, все правильно говорят, надо ток ограничивать. Мощность ограничивается чтобы не навредить цепям питания, источнику.