Там еще овердохрена приключений с теорией, но видимо остановимся на том что есть. Ибо уже подзадолбало ковыряться, да и работает приемлемо. Опишу в общих чертах что вышло. Решили подбирать методом половинного деления, по отсутствию автоколебаний и перерегулирования. Каждый шаг занимает пару секунд, всего около 6 шагов - довольно быстро, и нет смысла мудрить с продвинутыми техниками. Получилось примерно так:
P - сначала отпускаем коэффициенты и меряем дисперсию шума. Автоколебанием считаем если дисперсия больше шума на 10%. Потом двигаемся между минимумом и максимумом, уменьшая шаг, пока не найдем точку где автоколебаний все еще нет.
I - тут немного хитрее. Поскольку автоколебаний им не запустить, то дергаем скорость с 0.3 до 0.4 и смотрим чтобы выход не “заносило”. Тоже половинным делением подбираем нужное значение.
Уменьшаем оба коэффициента на 0.8, для запаса стабильности.
Крайние значения интервала P взяты [1…5] - типовые номиналы. Крайнее значение I сейчас забито константой (4 сек), но потом подправим, чтобы мерилось время разгона-останова (больше быть точно не может).
Теперь о грустном. Жопа поселилась в измерялке скорости, и похоже свила там гнездо. Магия с линеаризацией характеристики мотора помогла только частично. Попутно выяснилось, что у мотора реально плавает активное сопротивление в зависимости от оборотов и нагрузки. Если вбить коррекцию на глаз, то постоянную интегрирования можно уменьшить в разы. Но как под эту хрень подводить научную базу и рисовать формулы - непонятно.
Наверное пока остановимся на том что есть и возьмем таймаут. Для простых людей и так хватит, а нам еще надо посочинять регули для коллекторников постоянного тока и асинхронников.
{"assets_hash":"a8b26fa7f6e768b07a72c8c9aadb9422","page_data":{"users":{"39c21abc3df9550077797d18":{"_id":"39c21abc3df9550077797d18","hid":349,"name":"Vitaly","nick":"Vitaly","avatar_id":null,"css":""}},"settings":{"blogs_can_create":false,"blogs_mod_can_delete":false,"blogs_mod_can_hard_delete":false,"blogs_mod_can_add_infractions":false,"can_report_abuse":false,"can_vote":false,"can_see_ip":false,"blogs_edit_comments_max_time":30,"blogs_show_ignored":false,"blogs_reply_old_comment_threshold":30,"votes_add_max_time":168},"entry":{"_id":"5be635fc9970730077118453","hid":23603,"title":"Залили в реп автонастройку ПИД-а бормашинки","html":"<p><a href=\"https://github.com/speedcontrols/ac_sc_grinder\" class=\"link link-ext link-auto\" data-nd-link-type=\"autolink\" data-nd-link-orig=\"https://github.com/speedcontrols/ac_sc_grinder\" target=\"_blank\" rel=\"nofollow noopener\">github.com/speedcontrols/ac_sc_grinder</a></p>\n<p>Там еще овердохрена приключений с теорией, но видимо остановимся на том что есть. Ибо уже подзадолбало ковыряться, да и работает приемлемо. Опишу в общих чертах что вышло. Решили подбирать методом половинного деления, по отсутствию автоколебаний и перерегулирования. Каждый шаг занимает пару секунд, всего около 6 шагов - довольно быстро, и нет смысла мудрить с продвинутыми техниками. Получилось примерно так:</p>\n<ul>\n<li><strong data-nd-pair-src=\"**\">P</strong> - сначала отпускаем коэффициенты и меряем дисперсию шума. Автоколебанием считаем если дисперсия больше шума на 10%. Потом двигаемся между минимумом и максимумом, уменьшая шаг, пока не найдем точку где автоколебаний все еще нет.</li>\n<li><strong data-nd-pair-src=\"**\">I</strong> - тут немного хитрее. Поскольку автоколебаний им не запустить, то дергаем скорость с 0.3 до 0.4 и смотрим чтобы выход не “заносило”. Тоже половинным делением подбираем нужное значение.</li>\n<li>Уменьшаем оба коэффициента на 0.8, для запаса стабильности.</li>\n</ul>\n<p>Крайние значения интервала P взяты [1…5] - типовые номиналы. Крайнее значение I сейчас забито константой (4 сек), но потом подправим, чтобы мерилось время разгона-останова (больше быть точно не может).</p>\n<!--cut-->\n<p>Теперь о грустном. Жопа поселилась в измерялке скорости, и похоже свила там гнездо. Магия с линеаризацией характеристики мотора помогла только частично. Попутно выяснилось, что у мотора реально плавает активное сопротивление в зависимости от оборотов и нагрузки. Если вбить коррекцию на глаз, то постоянную интегрирования можно уменьшить в разы. Но как под эту хрень подводить научную базу и рисовать формулы - непонятно.</p>\n<p>Наверное пока остановимся на том что есть и возьмем таймаут. Для простых людей и так хватит, а нам еще надо посочинять регули для коллекторников постоянного тока и асинхронников.</p>\n","user":"39c21abc3df9550077797d18","ts":"2018-11-10T01:35:56.000Z","st":1,"cache":{"comment_count":0},"views":532,"bookmarks":0,"votes":0},"subscription":null},"locale":"en-US","user_id":"000000000000000000000000","user_hid":0,"user_name":"","user_nick":"","user_avatar":null,"is_member":false,"settings":{"can_access_acp":false,"can_use_dialogs":false,"hide_heavy_content":false},"unread_dialogs":false,"footer":{"rules":{"to":"common.rules"},"contacts":{"to":"rco-nodeca.contacts"}},"navbar":{"tracker":{"to":"users.tracker","autoselect":false,"priority":10},"forum":{"to":"forum.index"},"blogs":{"to":"blogs.index"},"clubs":{"to":"clubs.index"},"market":{"to":"market.index.buy"}},"recaptcha":{"public_key":"6LcyTs0dAAAAADW_1wxPfl0IHuXxBG7vMSSX26Z4"},"layout":"common.layout"}