Страница 5 из 5
Re: Алгоритм управления следящим приводом
Добавлено: 17 ноя 2016, 12:16
Михайло
Как-то так:
Код: Выделить всё
"PID_P" := "DB_MAIN".Kp * (#E - "E_1");
"PID_I" := "DB_MAIN".Ki * #E;
"PID_D" := "DB_MAIN".Kd * (#E - 2 * "E_1" + "E_2");
IF "V_PPO_PID" + "PID_P" + "PID_I" + "PID_D" > "DB_MAIN".V_PID_max THEN
"V_PPO_PID" := "DB_MAIN".V_PID_max;
ELSE
IF "V_PPO_PID" + "PID_P" + "PID_I" + "PID_D" < (- "DB_MAIN".V_PID_max) THEN
"V_PPO_PID" := - "DB_MAIN".V_PID_max;
ELSE
"V_PPO_PID" := "V_PPO_PID" + "PID_P" + "PID_I" + "PID_D";
END_IF;
END_IF;
Re: Алгоритм управления следящим приводом
Добавлено: 17 ноя 2016, 17:44
Михайло
Re: Алгоритм управления следящим приводом
Добавлено: 18 ноя 2016, 05:52
Автоматизатор
Михайло писал(а):Как-то так:
У меня ограничение стоит на задание приводу, а регулятор я не ограничиваю.
Код: Выделить всё
// Ограничение скорости
IF "FB_POS_PPO_DB".V_Synh_r > "DB_MAIN".V_PID_max THEN
// максимальная частота 150 Гц
// при передаточном отношении редуктора 4,91 и шаге ШВП 10 мм
// максимальная скорость 100 мм/сек
"FB_POS_PPO_DB".V_Synh_r := "DB_MAIN".V_PID_max ;
END_IF;
У тебя же ограничения стоят прямо на регуляторе (ты переписываешь его расчеты). Как правильно?
Re: Алгоритм управления следящим приводом
Добавлено: 18 ноя 2016, 06:05
Михайло
Автоматизатор писал(а):Как правильно?
Надо блокировать приращения, иначе выход регулятора V_PPO_PID может уйти в глубокую бесконечность, если регулятор долго находится в насыщении. Особенно из-за И-составляющей: она долго накапливается и потом ей также долго уменьшаться обратно. То есть, если не блокировать приращение И-составляющей, то регулятор может долго возвращаться из насыщения чисто из-за одной накопленной И-компоненты, даже если созданы все условия для быстрого выхода из насыщения. Это, конечно, неправильно. П- и Д- составляющие могут выскакивать из насыщения вроде как за один пересчет. Именно поэтому у КЕБа в модели ПИД-регулятора стоит такой особенный ограничитель на И-составляющую.
Re: Алгоритм управления следящим приводом
Добавлено: 18 ноя 2016, 07:37
Автоматизатор
У Яскавы тоже приводят на структурной схеме отдельный ограничитель на интегратор. С ним разобрались, у меня реализовано так:
Код: Выделить всё
IF "V_PPO_PID" <= "DB_MAIN".V_PID_max THEN // Интегрирование только при отсутствии насыщения
"PID_I" := "DB_MAIN".Ki * #E; // Интегральная составляющая ПИД-регулятора
END_IF;
Думаю надо написать аналогичное на дифференциальную.
А вот с П ?
Re: Алгоритм управления следящим приводом
Добавлено: 18 ноя 2016, 08:00
Михайло
Автоматизатор писал(а):у меня реализовано так:
1. Нет обнуления И-приращения (PID_I).
2. Нужно сравнивать с пределом не текущее значение V_PPO_PID, а следующее, потенциально возможное, т.е. (V_PPO_PID + PID_P + PID_I + PID_D), где PID_P, PID_I, PID_D - необнуленные текущие приращения. Иначе могут иметь место "хитрые игры" П- И Д-приращений на границе насыщения регулятора, в некоторых случаях наверное могут дать безудержный рост V_PPO_PID за счет PID_I. Под хитрой игрой понимается вхождение в насыщение в одном цикле и выход из насыщения в следующем цикле и затем снова насыщение и так далее... П- и Д- составляющие могут обеспечить такую "игру". Не думаю, что это практически сильно повлияет на что-то, но все-таки!
Re: Алгоритм управления следящим приводом
Добавлено: 02 дек 2016, 17:26
Михайло
Автоматизатор
Как успехи в отладке? Такое ощущение, что ты бросил силы на другие работы.
Re: Алгоритм управления следящим приводом
Добавлено: 03 дек 2016, 08:07
Автоматизатор
Михайло писал(а):Как успехи в отладке?
Как сказать? С одной стороны: получается все точнее и точнее. По последним испытаниям максимальная ошибка положения порядка 0,57 мм. Улучшения идут за счет устранения косяков, которые возникают при переходе с работы в основном цикле ОВ1 на работу с прерываниями с периодом менее времени выполнения ОВ1 (время выполнения ОВ1 порядка 8-9 мс, прерывания до 2 мс). Например, надо брать значения скоростного счетчика энкодера не %ID1000, а %ID1000:P.
Сейчас выяснил, что большая ошибка может получаться в математических вычислениях. Для расчета регулятора используются небольшие приращения. Регулятор считается в REAL, а сигналы от энкодеров идут в DINT. Надо быть очень внимательным в расчетах.
Сегодня планирую пересчитать регулятор от другого датчика с более высоким разрешением, проверить расчеты.
Цель: ошибка должна быть менее 0,2 мм.
Re: Алгоритм управления следящим приводом
Добавлено: 03 дек 2016, 13:04
Михайло
Какая дискретность у имеющегося энкодера в миллиметрах?
Re: Алгоритм управления следящим приводом
Добавлено: 03 дек 2016, 14:25
Автоматизатор
На самой оправке стоит энкодер 4096 имп./оборот (квадратурный счет = 16 384 имп./об.).
На высокой скорости 1 об/сек. при периоде опроса 2 мс приращение будет 16 384 * 2 /1000 = 33,768 имп.
Re: Алгоритм управления следящим приводом
Добавлено: 04 дек 2016, 07:15
Автоматизатор
Автоматизатор писал(а):На самой оправке стоит энкодер 4096 имп./оборот (квадратурный счет = 16 384 имп./об.).
На высокой скорости 1 об/сек. при периоде опроса 2 мс приращение будет 16 384 * 2 /1000 = 33,768 имп.
Ошибка счета в 1 импульс - составит 1 / 33 * 100 = 3 %.
При расчете перемещения с шагом 60 мм ошибка составит: 60 * 0.03 = 1.8 мм
Re: Алгоритм управления следящим приводом
Добавлено: 04 дек 2016, 08:06
Михайло
Чему равно x=pi*D/4096? D - диаметр пружины.
Я взял с потолка D=200 мм, получил x=0,15 мм. Это в общем-то меньше, чем 0,2 мм, но для задачи регулирования надо поточнее.
Неужели пружины такие прецизионные?
Re: Алгоритм управления следящим приводом
Добавлено: 04 дек 2016, 12:27
Автоматизатор
Михайло писал(а):Неужели пружины такие прецизионные?
Сам не думал. Из-за механики погрешность при укладке усиливается в 2-3 раза. Когда проектировали, то особо никто и не считал.
До последнего времени был другой принцип управления: менялось тупо задание скорости подачи при достижении заданного угла поворота. Только если геометрия не получилась, то концов не найти.
Re: Алгоритм управления следящим приводом
Добавлено: 04 дек 2016, 18:47
Михайло
Ни хера се: точность 2 сотки - с такой точностью роботы (простейшие правда) работают. А Вы хотели просто регулировать скорость...
Re: Алгоритм управления следящим приводом
Добавлено: 04 дек 2016, 19:33
mr_Frodo
Михайло писал(а):точность 2 сотки - с такой точностью роботы (простейшие правда) работают
Хоть в данном случае и не "сотки", а "десятки", но всё-равно точность "Нихера се"!!!
Re: Алгоритм управления следящим приводом
Добавлено: 06 мар 2019, 08:49
Lyailya
Михайло писал(а):Если рассматривать S7-1200, то в этом плане интересным будет его технологический функционал Motion Control (функции MC_Home и др.).
мне помогло ответы
Re: Алгоритм управления следящим приводом
Добавлено: 06 мар 2019, 18:42
Автоматизатор
Lyailya писал(а):технологический функционал Motion Control
У 1200-ого фукционал не просто Motion Control, а Simple Motion Control. То есть совсем примитивный. После практической работы с сервоприводами - очень скромно.