Я не спец в физике электродвигателей, но попробовал бы проинтегрировать значения тока во времени, необходимом для разгона груза определенной массы с нуля до скольки-то оборотов/мин. Потом проверил бы, насколько линейна зависимость этой суммы от массы нагрузки. Если вполне себе линейная, то вот и формула :) Не?
Ввели интегральную составляющую? Без нее ошибка в вашей системе будет всегда, где то больше, где то меньше. До этого отсутствие И-составляющей несколько компенсировалось интегрированием выхода контроллера, но это был вредный интегратор в вашем случае, тормозящий, увеличивающий инерцию системы. Посмотрите по графикам моменты когда ошибка меняет знак, когда кривая оборотов пересекает уставку - здесь выход контроллера _уже_ должен ползти против "перелета", а получалось так, что вы сначала должны были выбрать все накопленное до этого в power_level воздействие. Теперь же у вас есть возможность более тонко регулировать этот момент в И-компоненте, вклад которой непосредственно зависит от ошибки.
Попробуйте поиграть отношением П к И, увеличить И пропорционально уменьшению П-коэффициента, и посмотрите, что выйдет. И наоборот.
Кстати, есть еще такой момент - если выход пид-регулятора будет колебаться достаточно быстро, то за счет инерционности нагрузки можно получить как бы "усреднение" воздействия (по аналогии с ШИМ-управлением), эквивалент некоторого промежуточного между двумя ступенями дискретного воздействия.
4ainik, да. power_level = zero_power - pid.update. При этом следует помнить, что выход регулятора должен быть ограничен между zero_power и max_power. Интегральную составляющую тоже стоит ограничить.
Я поясню. Если мое предположение о суммировании выхода пид-регулятора во времени верно, то есть выход регулятора - это "на сколько надо изменить предыдущее управляющее воздействие", то такой подход в вашем случае не совсем подходит, так как тем самым вы инерцию всей системы "усугубляете" инерцией этого интеграла, не имеющего непосредственной зависимости от ошибки. Выход вашего регулятора должен быть, имхо, "какое управляющее воздействие надо установить сейчас" для минимизации ошибки регулирования. Единственным аккумулирующим местом должна быть интегральная составляющая - Iterm в вашем случае.
Посмотрел графики повнимательней. Поясните по синей кривой - что это? 120 для синей кривой - это что за число, в каких единицах? Это непосредственно само управляющее воздействие? Вы где то интегрируете (суммируете) выход пид-регулятора?
4ainik, пропорциональный регулятор (ПД) не даст Вам точное попадание в уставку, будет "невыбранная" ошибка, пробуйте добавлять интегральную. А перелет как раз обусловлен наличием инерции у нагрузки.
Если есть возможность, выведите графики каждой из составляющих регулятора (pTerm, iTerm, dTerm в случае с реализацией по вашей ссылке) - поможет понять принцип регулирования, назначение каждой из составляющих, оценить вклад каждой в работу регулятора.
P.S. Но вполне может оказаться и так, что некоторое компромиссное значение коэффициентов будет работать удовлетворительно во всех случаях. Тут только опыт покажет...
Толковый метод вычисления коэффициентов есть в статьях по ссылке что я привел в ответе. Вкратце - ступенчато меняется управляющее воздействие на систему, из графиков отклика системы (обратная связь) получаем динамические характеристики (по сути, модель системы) - задержки, амплитуды, и прочее, из чего уже и вычисляются коэффициенты регулятора (все формулы по ссылке есть).
Контроль тока даст вам массу возможностей - диагностику нештатных ситуаций, свободу (безопасность) при настройке регулятора по оборотам, и прочее. Правильно спроектированный каскадный регулятор дает более стабильную систему, адекватную реакцию на изменение характера нагрузки, более быструю реакцию на внешнее воздействие. Я не настаиваю на таком решении как единственно верном, конечно.
Что касается условий в вашем случае, то простой пид-регулятор (уставка и обратная связь - обороты, управляющее воздействие - ток на двигатель, если правильно понимаю, что такое ФИ регулятор), будет вести себя совершенно по разному при изменении динамических характеристик системы. Настроенный с большой массой нагрузки он будет нестабилен с маленькой массой, настроенный без массы будет срывать вам ремни. В любом случае классический одиночный регулятор не решит вашу проблему, насколько могу судить, придется мудрить что то в любом случае. Вместо каскадного регулятора можно попробовать менять коэффициенты одиночного пида в зависимости от усредненного значения тока за определенный промежуток времени, как вариант. Или вот, например, можно попробовать сделать зависимость от фактической скорости нарастания оборотов при определенном управляющем воздействии, то есть "пощупать" систему перед началом цикла. Но такое решение не гарантирует вам адекватную реакцию регулятора на изменение условий _во время_ выполнения цикла.
moonysleeps: не соглашусь с Иваном... Делают, но только когда это действительно необходимо, оправдано и безопасно. А по поводу гидравлики, думаю, проще будет обратиться к продавцам этой самой гидравлики (номенклатура гидрораспределителей не маленькая, и надо четко представлять, что и на что вы собрались менять - в вопросе маловато информации)
Написано
Войдите на сайт
Чтобы задать вопрос и получить на него квалифицированный ответ.