Страница 1 из 1

Настройка AT_PID шпинделя c асинхронным мотором

Добавлено: 11 июл 2013, 23:39
Алексс
Хочу поделиться результатами сегодняшних экспериментов.

Все подключил по мануалу, вместо pid грузим at_pid.
sum2 не подключал, надеялся заменить установкой FF0 в 1. Сразу скажу - не получилось.

Запускаем linuxcnc, затем в консоли пишем:

Код: Выделить всё

halcmd setp pid.0.tune-mode  1
в axis даем команду типа s1000m3.

Запускаем halscope, настраиваем два канала:

pid.0.error
pid.0.output

error должен показать 1000, output предположительно около нуля.

в консоли пишем:

Код: Выделить всё

halcmd setp pid.0.tune-start  1
наверняка ничего не начнет крутится либо будет, но настройка не идет.
Начинаем увеличивать pid.0.tune-effort, при этом pid.0.output должен увеличиваться, pid.0.error уменьшаться, до тех пор, пока не пересечет ноль. После этого шпиндель должен начать разгонятся/тормозить - типа идет настройка.
Когда процесс отстановится, настройка как-бы завершена.

Можно проверить как оно работает в реале:

Код: Выделить всё

halcmd setp pid.0.tune-mode  0
Если что-то не так - повторяем процес. Можно попробовать увечить количество итераций

Код: Выделить всё

halcmd setp pid.0.tune-cycles  1000

Re: Настройка AT_PID шпинделя c асинхронным мотором

Добавлено: 12 июл 2013, 10:57
Nick
А параметры ПИД на сколько я понял при этом не сохраняются? Их надо потом самому в ini переписать?

Re: Настройка AT_PID шпинделя c асинхронным мотором

Добавлено: 12 июл 2013, 11:04
Алексс
само собой в ini они не пишутся :)
они будут записаны в pid.0.
надо их оттуда считать и в hal конфиг перенести. ну или в ini, для особых любителей прекрасного :hehehe:

Re: Настройка AT_PID шпинделя c асинхронным мотором

Добавлено: 12 июл 2013, 11:07
PKM
Алексс писал(а):само собой в ini они не пишутся :)
они будут записаны в pid.0.
надо их оттуда считать и в hal конфиг перенести. ну или в ini, для особых любителей прекрасного :hehehe:
Любопытно, можно ли для этого использовать Calibration tool?

Re: Настройка AT_PID шпинделя c асинхронным мотором

Добавлено: 12 июл 2013, 11:09
Алексс
что за тулза ?

Re: Настройка AT_PID шпинделя c асинхронным мотором

Добавлено: 12 июл 2013, 11:24
Алексс
еще такая мысль.

в приведенной ссылке используется компонент sum2 для компенсации отрицательных значений:

Код: Выделить всё

net pid_command       pid.0.command  => sum2.0.in0
net pid_output            pid.0.output      => sum2.0.in1
но, как я понимаю, pid может выдавать на output значения от -maxoutput до +maxoutput.
тоесть опять может случиться ситуация:
command = 1000, output = -4000

при этом output пойдет на pwmgen, который на знак не смотрит!

итого pwmgen начнет генерить "трафик" на базе значения 3000. при этом шпиндель разгоняется, значение output еще больше уменьшается и тд. тоесть мотор просто разгоняется на максимум и оттуда уже не выходит.
что в общем-то у меня и случилось.

приведу еще тут формулы вычисления значений pid:

Код: Выделить всё

    The PID loop calculations are as follows (see the code for
    all the nitty gritty details):

    error = command - feedback
    if ( abs(error) < deadband ) then error = 0
    limit error to +/- maxerror
    errorI += error * period
    limit errorI to +/- maxerrorI
    errorD = (error - previouserror) / period
    limit errorD to +/- maxerrorD
    commandD = (command - previouscommand) / period
    limit commandD to +/- maxcmdD
    commandDD = (commandD - previouscommandD) / period
    limit commandDD to +/- maxcmdDD
    output = bias + error * Pgain + errorI * Igain +
             errorD * Dgain + command * FF0 + commandD * FF1 +
             commandDD * FF2
    limit output to +/- maxoutput
из них, к стати, видно, что FF0 = 1 не спасет от отрицательных значений.
также из этого видно, что можно еще подкрутить maxerror-ы, для предотвращения выхода в ноль и некоего "сглаживания" характера pid.

Re: Настройка AT_PID шпинделя c асинхронным мотором

Добавлено: 12 июл 2013, 13:00
PKM
Алексс писал(а):что за тулза ?
В меню Machine - Calibration, можно изменять и сохранять параметры

Re: Настройка AT_PID шпинделя c асинхронным мотором

Добавлено: 12 июл 2013, 13:06
Алексс
никогда в жизни не видел :)
надо дома посмотреть...