http://wiki.linuxcnc.org/cgi-bin/emcinf ... _PID_Loops
Что там пишут:
Настройка ПИД-регулирования в ЕМС
Введение
Настройка ПИД-реулирования является сложным вопросом.
У каждого есть свой предпочтительный способ настройки, и каждый способ имеет свои достоинства и недостатки. Обычно настройка заключается в методе проб и ошибок.
Эта страница является местом, где разные пользователи EMC показывают свои индивидуальные подходы к настройке, а также делятся советами и подсказкми. Пожалуйста добавляйте любые мысли, которые у вас есть об этом предмете.
John Kasunich:
Начнем с нуля:
При создании вещей я придеживаюсь подхода "снизу вверх".
Я даже не начинаю с ЕМС как все, я часто проектирую отдельный контур позиционирования в HAL и проверяю его с входными сигналами от генератора. Только когда контур позиционирования работает я подключаю его к ЕМС.
Вероятно, большинство так делать не будет, но я так делаю, поскольку мне удобно работать в HAL. Когда нибудь я могбы сделать hal-файлы и инструкцию c моим методом, которыми будут пользоваться неопытные пользователи HAL, сейчас у меня есть время для описания вещей в общих чертах.
(
Замечание. Везде здесь я использую дюймы, потому что мне действительно очень не хочется писать "дюймы" или "мм" дюжину раз. Там, где вы встретите "дюймы" можете подставить "(или мм)" следом за ними.
) Фактически, вы можете использовать любую машинную единицу, какую хотите в том случае, если вы последовательны. Машинные единицы во всех блоках HAL совпадают с машинными единицами, поределенными в ini-файле ЕМС.
Получить рабочие энкодеры.
Любой сервосистеме необходима обратная связь по положению. Большинство систем в качестве обратной связи с двигателем используют квадратурный энкодер. В первую очередь вам необходимо приобрести энкодер, шлейф и источник питания для соединения программных или аппаратных устройств, которые вы намереваетесь использовать для посчета импульсов энкодеров. Подробная информация о которых зависит от конкретного устройства. Как только вы установите аппаратную часть, в ваш hal-файл необходимо загрузить соответствующий драйвер (и еще загрузить HAL-модуль программного счетчика энкодера, если вы его используете). Детали позже. Вы должны иметь возможность провернуть вал двигателя и посмотреть параметр энкодера "counts" (отсчеты) используя команду "halcmd show param" или HAL-метр.
Установка масштаба энкодера.
Используйте машинные данные для вычисления числа отсчетов энкодера за дюйм или мм. Например, если ваш станок имеет 5 оборотов ШВП на дюйм, 40 зубцов шкива редуктора на ШВП, 20 зубцов шкива на моторе и 512 циклов отсчета на оборот (2048 отсчетов на оборот) энкодера, то шкала будет такой:
5 оборотов ШВП на дюйм * ( 40 зубцов шкива редуктора на ШВП / 20 зубцов шкива на моторе) * 2048 отсчетов на оборот энкодера = 20480 отсчетов на дюйм. Таким образом параметр position-scale энкодера должен быть 20480. Если вы установите параметр "scale", то HAL-пин "position" будет показывать текущее положение в дюймах (или мм).
Проерка полярности энкодера.
С выключенным двигателем проверните каждую ось так, чтобы стол станка подвинутся в положительном направлении. Если положение ответившего энкодера увеличилось, то полярность правильная и вы можете приступать к следующему шагу. Если положение ответившего энкодера уменьшилось, то полярность обратная. Данную проблему можно решить двумя способами. Вы можете исправить оборудование, чтобы были правильные отсчеты (например поменять местами сигналы А и В энкодера или поменять местами сигналы А и не-А квадратурного энкодера). Или вы можете решить проблему программно, установив отрицательное значение масштаба.
Грубая проверка масштаба энкодера.
С выключенным двигателем запишите значение HAL-пина "position", затем вручную передвиньте ось так, чтобы рабочий орган станка переместится на известное расстояние, например 1 дюйм. Затем запишите новое значение HAL-пина "position" и вычтите их друг из друга. Разность должна быть расстоянием, на которое вы переместили стол станка. Если она отличается на несколько процентов, это не проблема и она может быть четко решена позже. Если разность велика, повторите шаг, где расчитывается масштаб, выясните, что пошло не так и исправьте это. Если "position" обратной связи точно (в пределах нескольких процентов) отображает путь оси, то переходите к следующему шагу.
Режим скорости или крутящего момента?
Сервосистемы могут работать в одном из двух режимов, основанных на управляющих сигналах сервоприводов. Если сигнал привода представляет собой желаемый крутящий момент двигателя, то систма в режиме Крутящий момент. Если сигнал привода представляет собой желаемую скорость, то система в режиме Скорость. (Примечание: со щеточными двигателями постоянного тока момент прапорционален току якоря, а скорость прапорциональна напряжению якоря.) Таким образом, если привод управляется током, то это система работает в режиме Крутящий момент, а если напряжением, то - Скорость.
Добавлено пользователем jros (не специалист):
Я думаю, что некоторые нестандартные ПИД-модули, настроенные параметрами такими как FF0, FF1, FF2, bias, имеют большую чувствительность в режиме Момент, потому что они предсталяют собой физические оценки априори необходимого крутящего момента (т.е. FF1 - вязкость(трение), FF2 - инерционность, удержание тяжести,...) Я не могу понять смысл FF1, например, если управление в режиме Скорость.
Проверка вывода ЦАП
Соедините HAL-сигнал с выводом ЦАП, установите масштаб ЦАП в 1.0. Затем с выключенным приводом и двигателем установите HAL-сигнал в +1.0В и проверьте мультиметром, что выходное напряжение правильное. Повторите операцию созначением выходного напряжения -1.0В. Затем проверьте с большими значениями в зависимости от диапазона ЦАП, например +5.0В и -5.0В. Следующие шаги должны быть описаны более подробно.
Установка масштаба DAC
Вычислиние основано на отношении Вольт к оборотам в минуту и прочим так, что HAL-пин DAC масштабируется в дюйм в секунду.
Проверка полярности предусилителя привода и масштаба.
Скомандуйте приводу медленно двигаться установив выход ЦАП в 0,05 дюйма/сек и проверьте, что актуальная скорость и направление оси верны. Ошибка в 10-20% это нормально, но обратную полярность или грубую ошибку скорости необходимо исправить.