Прошивка BLHeli_S для ESC

Сергей_Уж

И еще про пиды, раньше D ограничивали, делали его как можно ниже из за предела шумов которые увеличение D создавало ( эти шумы), после введения нотч ( отсекающего ) фильтра появилась возможность D задрать.
Это Борис написал
И
Yes unsynced pwm uses less CPU usage and is therefore perhaps the only good reason to have it running.
Меньше ест ресурсов проца и поэтому предпочтительно

Mugz
Сергей_Уж:

И еще про пиды, раньше D ограничивали, делали его как можно ниже из за предела шумов которые увеличение D создавало ( эти шумы), после введения нотч ( отсекающего ) фильтра появилась возможность D задрать

Тащемта теперь мы задираем P потом D, а I не трогаем?

Сергей_Уж
Mugz:

Тащемта теперь мы задираем P потом D, а I не трогаем?

Сам посуди, Р при появлении отклонения от внешнего воздействия “пинает” раму в противоположном направлениии, это его задача . Если Сила пинка большая, рама не остановится в центре и пролетит его в противоположную сторону, это осциляции и то что квадрик лихорадит ты увидишь. D предупреждает мозг о силе P и предсказывает как нужно тормозить чтобы сильно не пролететь через ноль. Это задача D, при малом значении квадрик пружинит, при большом, D участвует в суммарном пид и тоже может вызвать осцилляцию, это тоже ты увидишь. Задача I при этом на заключительном этапе до успокоить раму возле нуля и не дать колебаниям выйти за допустимые рамки. Вот график на котором все понятно, работа I видна между двумя пунктирными линиями. И чё его трогать ? 😃

Mugz
Сергей_Уж:

Вот график на котором все понятно, работа I видна между двумя пунктирными линиями. И чё его трогать ?

Спасибо, уважаемый! Но я как баран на новые ворота… =)

100xanoff
Сергей_Уж:

Сам посуди, Р при появлении отклонения от внешнего воздействия “пинает” раму в противоположном направлениии, это его задача . Если Сила пинка большая, рама не остановится в центре и пролетит его в противоположную сторону, это осциляции и то что квадрик лихорадит ты увидишь. D предупреждает мозг о силе P и предсказывает как нужно тормозить чтобы сильно не пролететь через ноль. Это задача D, при малом значении квадрик пружинит, при большом, D участвует в суммарном пид и тоже может вызвать осцилляцию, это тоже ты увидишь. Задача I при этом на заключительном этапе до успокоить раму возле нуля и не дать колебаниям выйти за допустимые рамки. Вот график на котором все понятно, работа I видна между двумя пунктирными линиями. И чё его трогать ? 😃

При всем уважении, но I нужен не для успокоения остаточных колебаний, а для компенсации уводов, возникающих из-за накапливаемой ошибки P и D с течением времени. Ошибка накапливается в первую очередь из-за вибраций и внешних воздействий(ветер, паразитные влияния аэродинамического характера)

Если вы посмотрите график I в блекбоксе вы поймете что успокоить ту синусойду, создаваемую P и D он не может, он просто сдвигает общие пиды выше или ниже средней линии. А само значение I это не коэффициент воздействия, а время за которое измеряется ошибка и чем оно больше тем точнее воздействие, но дольше реакция. Поэтому I обычно уменьшают чтобы он не вносил задержку в отклик, но если уменьшить его слишком сильно, то он просто не будет должным образом улавливать ошибку.

П.С. а еще после того как мы задрали P, затем D, мы можем еще раз поднять P, т.к. с более высоким D можно поднимать P еще выше без последствий, однако на уровне ощущений это в современных контролерах неуловимо, только по блекбоксу.

mil-lion

Внесу свои пять копеек:
I - это интегральная составляющая ошибки, как правильно написал предыдущий аппонент, она не компенсирует оставшуюся синусоиду, это делается подбором правильных P и D, а она (I) правильно компенсирует ошибку в конструкции: смещённый центр тяжести, неравные моторы и регуляторы, а так же внешние воздействия: ветер, но это меняется от ориентации коптера так что толку от этого нет.
Вот поэтому для меня до сих пор остаётся загадка как настраивать I. Мой мозг пока это не осознаёт 😦

Сергей_Уж

Согласен с вами. Но график вверху принадлежит автору прошивки Boris.B и я привел перевод его постинга кажется прошлого года о роли I в его PID контроллере. Я не буду спорить, у меня это отложилось так. Мой товарищь преподает что такое PID студентам, мы говорили с ним, вроде не возражал. Понятно что интеграл это сумма по определению, как это точно работает здесь 100 процентов никто не знает, PID есть если кто не в курсе и в паяльнике 😃

PS продается на Бенгуде на жалах Т12, в настройках меню кажется 10 или 12 пунктов, три из них настройка PID 😃 Какова роль I в паяльнике ? 😃

skydiver
Сергей_Уж:

Какова роль I в паяльнике ?

Прикоснулись паяльником к земляному полигону, пошел отбор тепла. На изменение скорости остывания - отработала D, но ее не хватило - т.к. полигон оказался большой и теплоемкий. На изменение температуры отработала P, ровно пропорционально температуре остывания(ошибки), но этого тоже не хватило, температура установилась на N градусов меньше чем заданная. Далее вступает в дело I - смотрит, прошла секунда температура все еще не вернулась к заданной - добавила мощности, прошла еще секунда - если не вернулась - добавила еще мощности, и т.д. Т.е. чем дольше сохраняется ошибка, тем больше вес I составляющей в компенсирующем воздействии. Доходчиво? Тоже самое и в коптерах, например с ветром.

Это совсем на пальцах, уровень 5го класса:) как проще объяснить я не знаю

Сергей_Уж
skydiver:

Прикоснулись паяльником к земляному полигону, пошел отбор тепла.

Спасибо Алексей, а то народ когда комментирует пункты меню, просит эти три пункта просто не трогать 😃

Паяльник
banggood.com/DSK-Digital-Soldering-Station-Kit-Sol…

Но в вашем описании работа I больше похожа на работу D. D дает понять мозгу как протекает процесс , это работа D его не бывает без P она следит за Р и на ее данных мозг делает прогноз поведения, I только уточняет ( в полетнике я так себе представляю это и есть небольшие поправки в пределах пунктирных линий ) Или что то не так ?

PS Повышаю ставку, это за 3 класс 😃

Mugz
skydiver:

Это совсем на пальцах, уровень 5го класса как проще объяснить я не знаю

Видимо я еще в четвертом.
Теперь скажите как всё это в реалии применить. Настраиваем P до посинения и появления осциляций. Затем вваливаем D - пока не будет трясти на спуске или после флипэндрола, потом еще вваливаем P. А I как настраивать?
А как настраивать по Yaw?

Вы меня простите, что спрашиваю сто раз обмусоленную тему. Но мне никто не рассказывал про Пиды. По гуляющим видео всё не однозначно. У каждого своя методика и она в корне отличается от других (ну кроме настройки P).

Я вот и спрашиваю пока точно вот уверен не буду что всё верно понял.

mil-lion
Сергей_Уж:

Но в вашем описании работа I больше похожа на работу D.

Нет. Алексей все правильно объяснил I. D - это тормоз P когда мы очень быстро двигаемся к нужной точке. Поэтому раз скорость приближения большая, то пора тормозить чтобы не было перерегулирования (осциляции). D - дифференцирующая составляющая управления, она связанна со скоростью ошибки, а I - интегральная - почти постоянная составляющая ошибки.
Под настройку ПИД - наверное лучше отдельную ветку создавать и там обсуждать.

Сергей_Уж
mil-lion:

D - это тормоз

Игорь, D это не тормоз, это прогноз, он не так работает как вы описали. Он берет несколько значений параметра P суммирует и делит и выдает мозгу, но никак не занимается торможением. Вы правильно написали связана со скоростью ошибки, она определяет скорость изменения P а как реагировать дело полетника.

mil-lion
Mugz:

Настраиваем P до посинения и появления осциляций. Затем вваливаем D - пока не будет трясти на спуске

Первый пункт правильный. А вот D - увеличиваем чтобы прошли осциляции от большого Р. Потом опять увеличиваем Р и потом увеличиваем D чтобы их убрать. И так несколько итераций. Далее немного уменьшаем Р и D. С ними все. По I - не подскажу, сам не понимаю как ее настраивать, говорят что как раз при спусках и резких подъемах надо настраивать I.

По хорошему ПИД надо настраивать держа квадрик в руках, соблюдая ТБ, и даем квадригу изменение по путчу или ролу или по yaw и смотрите поведение квадрика на возмущение, он должен четко сопротивляться без колебаний (осциляций) возвращаться на место.

Сергей_Уж:

Игорь, D это не тормоз, это прогноз, он не так работает как вы описали. Он берет несколько значений параметра P суммирует и делит и выдает мозгу, но никак не занимается торможением. Вы правильно написали связана со скоростью ошибки, она определяет скорость изменения P а как реагировать дело полетника.

В классическом ПИД: Uупр = P*delta(i) + D*(delta(i)-delta(i-1))/t + I*СУММА(delta(i)), где delta - это ошибка управления между входным и выходным сигналами.
Правильно D - прогноз как мы быстро достигаем нужного положения, и D применяется к скорости ошибки управления, но никак P, ведь P, D, I - это константы, вы же их и задаете в конфигураторе, то как они могут меняться? Поэтому все делается именно с ошибкой управления.

Сергей_Уж
mil-lion:

Первый пункт правильный. А вот D - увеличиваем чтобы прошли осциляции от большого Р.

Я не лезу в драку 😃 Но я всегда считал что при большом P при увеличение D и появление осцилляций связано с суммарным пид Для этого в блекбокс и ввели значения суммарные пиды.
Сам по себе P и D могут быть небольшими, но суммарный значение превышает границу за которой осцилляция . Они же работают в фазе P и D. D строго следует за P
Так на форумах это пробегало.

mil-lion:

P, D, I - это константы,

Это не константы, это границы за пределы которых вы запрещаете значения выбегать, эти значения ( P D I ) переменны, а не постоянны, посмотрите блекбокс. Именно в этих заданных вами границах синусоида работает, узкие границы, маленькие значения, большие границы - большие разбросы и осцилляции. В сети 220 вольт, но напряжение может гулять от и до но не выше, если 5 вольт другое кино. ( не удачный пример )

PaulM

Увеличение D же по факту гасит P, разве нет?

Сергей_Уж
PaulM:

Увеличение D же по факту гасит P, разве нет?

D это пресc секретарь P и его задача доносить мозгу как ведет себя P / Я вот поискал писали же раньше
Писал Крайков, он уже давно не на конфе, живет в штатах, лётчик, летает на реактивном самолете , мы с ним разбирались когда то в этом, но я уже и подзабыл
rcopen.com/forum/f136/topic362347/20525
rcopen.com/forum/f136/topic362347/20536
rcopen.com/forum/f136/topic362347/20542

skydiver

Увеличение D же по факту гасит P, разве нет?

И да и нет 😒
Хотя вобще не правильно говорить что она гасит или не гасит P, она с ним вобще ничего не делает, P отдельно, D отдельно.
D увеличивает силу противодействия в момент увеличения ошибки, и уменьшает силу противодействия в момент уменьшения ошибки. Скорость изменения ошибки может быть как положительной так и отрицательной, соответственно и вес D в корректирующем воздействии либо положительный, либо отрицательный в зависимости от знака скорости изменения ошибки.

mil-lion
Сергей_Уж:

Это не константы, это границы за пределы которых вы запрещаете значения выбегать, эти значения ( P D I ) переменны, а не постоянны, посмотрите блекбокс.

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

Сергей_Уж
skydiver:

Скорость изменения ошибки может быть как положительной так и отрицательной, соответственно и вес D в корректирующем воздействии либо положительный, либо отрицательный в зависимости от знака скорости изменения ошибки.

Абсолютно точно написано, я просто утверждаю что когда скорость изменения ошибки положительная она накладывается ( суммируется ) на PID и суммарное значение может превысить предел. Поэтому в ящике и ввели суммарный PID

mil-lion:

И давайте я посмотрю исходники Бориса и найду кусок кода где идет расчет.

Отлично, я там дал выше ссылки писал Крайков, там как раз есть ссылки на куски кода Бориса на тот момент.
( потом он их поменял ) Это во второй ссылке, со слов “физически в прошивке Бориса если посмотреть код”

Сергей_Уж

Обновили все файлы прошивки ( версия осталась таже 16.3 ), возле каждого файла появилась надпись
Update SiLabs BLHeli bootlaoder to rev “d” hex files

Ну и выпустили новую версию сюит под это изменение с новой прошивкой
Changes in 16.3.14.7.0.1:
SiLabs BLHeli bootloader:
 updated rev sign “c” to “d” for BLHeli_S 16.3 and BLHeli 14.7 hex files. No change in functionality.

MFer

Последние пару страниц имели много букв п и д ))) спасибо было реально полезно…

Upd: упс, это не тоьуо в этой теме ))) перепутал )))