[РЕШЕНО] помогите подключить линейки к EMC2

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.
Boris
Новичок
Сообщения: 23
Зарегистрирован: 02 мар 2011, 15:26
Репутация: 0
Контактная информация:

Re: помогите подключить линейки к EMC2

Сообщение Boris »

Всё же добавил
loadrt at_pid num_chan=1
addf pid.0.do-pid-calcs servo-thread
net Xpos-fb <= encoder.0.position => pid.0.feedback
net Xpos-cmd <= axis.0.motor-pos-cmd => pid.0.command
в Мой_станок.hal.
ЕМС ругнулся на net Xpos-cmd <= axis.0.motor-pos-cmd => pid.0.command, дескать уже есть строка net xpos-cmd axis.0.motor-pos-cmd => stepgen.0.position-cmd, я эту строку закоментировал, взял из неё stepgen.0.position-cmd и добавил вторым "читателем" к net Xpos-cmd <= axis.0.motor-pos-cmd => pid.0.command (получилось net Xpos-cmd <= axis.0.motor-pos-cmd => pid.0.command => stepgen.0.position-cmd). Не знаю, правильно я поступил или так нельзя? ЕМС теперь запустился. Где смотреть результат?
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: помогите подключить линейки к EMC2

Сообщение Nick »

Не, stepgen.0.position-cmd тебе не нужен. Т.е. то, что убрал строку - это правильно, а то, что добавил нет :).

Проверь работает ли пид. Все значения всех параметров/пинов/входов/выходов можно смотреть или в hal watch или в hal show. В одном из них можно отслеживать сразу несколько параметров.

На степген нужно будет подавать выход pid.out причем подавать нужно на пин скорости, а не положения, т.е. stepgen.0.velocity-cmd .
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: помогите подключить линейки к EMC2

Сообщение Nick »

Пропустил вопрос по файлам...
Лучше писать все в мойстанок.hal, т.к. ты пишешь стандартное описание станка.
А что сейчас находится в custom? И подключается ли он в ini?
Boris
Новичок
Сообщения: 23
Зарегистрирован: 02 мар 2011, 15:26
Репутация: 0
Контактная информация:

Re: помогите подключить линейки к EMC2

Сообщение Boris »

У меня русский интерфейс в ЕМС, соответственно нет ни hal watch ни hal show, есть "hal-метр", "hal-скоп" и "показать установки hal". Пользую "hal-метр" и "показать установки hal". Из всех компонентов относящихся к pid, при движении линейки меняются только pid.0.error и pid.0.feedback. pid.0.error показывает рассогласование с индикатором координаты Х , а pid.0.feedback текущую позицию Х согласно данным с линейки. Не нашёл pid.out, но есть pid.output , (это одно и тоже?), я так понимаю на этом пине должно появиться TRUE если рассогласование достигнет нуля?
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: помогите подключить линейки к EMC2

Сообщение Nick »

Не, на нем должна появляться скорость, которая должна подаваться на двигатели для уменьшения error.
Вообще все хорошо, если есть error, значит pid работает.
Теперь нужно его настроить и смотреть .output:

# задаем значения параметров для PID
setp pid.0.Pgain [AXIS_0]P
setp pid.0.Igain [AXIS_0]I
setp pid.0.Dgain [AXIS_0]D
setp pid.0.bias [AXIS_0]BIAS
setp pid.0.FF0 [AXIS_0]FF0
setp pid.0.FF1 [AXIS_0]FF1
setp pid.0.FF2 [AXIS_0]FF2
setp pid.0.deadband [AXIS_0]DEADBAND

Вместо [AXIS_0]P нужно вставлять значения, или нужно задать их в ini файле в разделе [AXIS_0].

Потом, когда все заработает output заворачиваешь на stepgen.0.velocity-cmd и двигатель должен закрутиться :).
Boris
Новичок
Сообщения: 23
Зарегистрирован: 02 мар 2011, 15:26
Репутация: 0
Контактная информация:

Re: помогите подключить линейки к EMC2

Сообщение Boris »

Забил в HAL следующее:
# задаем значения параметров для PID
setp pid.0.Pgain 2
setp pid.0.Igain 2
setp pid.0.Dgain 2
setp pid.0.bias 2
setp pid.0.FF0 2
setp pid.0.FF1 2
setp pid.0.FF2 2
setp pid.0.deadband 2

Как выбирать значения, пока не разобрался (надо что-нибудь почитать по ПИД-регуляторам), поэтому вбил все двойки.
Ничего не изменилось: pid.output не меняется (равен нулю), меняются только error и feedback.
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: помогите подключить линейки к EMC2

Сообщение Nick »

По pid есть базовые вещи в руководстве станкостроителя от EMC:
http://cnc-club.ru/forum/viewtopic.php?f=15&t=150 вообще полезно целиком почитать. После него многое становится на свои места.
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: помогите подключить линейки к EMC2

Сообщение Nick »

Вот пример значений параметров PID по умолчанию из pncconf.
Вообще это самый простой вариант - скорость зависит напрямую от расстояния до искомой точки.
Вложения
pncconf пример параметров pid.png (2774 просмотра) <a class='original' href='./download/file.php?id=1204&mode=view' target=_blank>Загрузить оригинал (112.77 КБ)</a>
Boris
Новичок
Сообщения: 23
Зарегистрирован: 02 мар 2011, 15:26
Репутация: 0
Контактная информация:

Re: помогите подключить линейки к EMC2

Сообщение Boris »

root писал(а):viewtopic.php?f=15&t=150 вообще полезно целиком почитать. После него многое становится на свои места.
О, последние два дня это моя настольная книга, и прочитал её почти целиком. Но про ПИД в этом руководстве написано поверхностно и как-то пространно (моё мнение), у меня чёткой картины, по работе ПИД-контроллера, в сознании не сложилось. Я хорошо усваиваю когда тема иллюстрированна живыми (не абстрактными) примерами. Впрочем, я наверное немного тугодум, со временем разберусь.
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: помогите подключить линейки к EMC2

Сообщение Nick »

Тут все должно быть просто:
P I D это коэффициенты уравнения расчитывающего скорость.

Все должно получаться из простого уравнения движения:
x(t) = x0 + v0*t + a*t^2/2

... но только не в пол первого ночи :hehehe:...
Завтра напишу, что к чему...
Boris
Новичок
Сообщения: 23
Зарегистрирован: 02 мар 2011, 15:26
Репутация: 0
Контактная информация:

Re: помогите подключить линейки к EMC2

Сообщение Boris »

Поставил setp pid.0.Pgain в единицу, остальное в нули, как на скриншоте. Результат тот-же.
pid.output должен быть тем больше, чем больше рассогласование, и не равен нулю если error>deadband ?
Спокойной ночи :)
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: помогите подключить линейки к EMC2

Сообщение Nick »

да, все должно быть именно так.

А ты включил pid через enable?
Boris
Новичок
Сообщения: 23
Зарегистрирован: 02 мар 2011, 15:26
Репутация: 0
Контактная информация:

Re: помогите подключить линейки к EMC2

Сообщение Boris »

root писал(а):А ты включил pid через enable?
Конечно-же не включил :) ...

Всё, с output пошёл сигнал, он всегда равен error.
Boris
Новичок
Сообщения: 23
Зарегистрирован: 02 мар 2011, 15:26
Репутация: 0
Контактная информация:

Re: помогите подключить линейки к EMC2

Сообщение Boris »

output = error * Pgain
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: помогите подключить линейки к EMC2

Сообщение Nick »

Ну все правильно, так и должно быть.

Вот классная статья по PID контроллерам, их функционированию и, главное, их настройке!
http://en.wikipedia.org/wiki/PID_controller, но она на английском. Сейчас сделаю перевод приемов настройки PID регуляторов.
Boris
Новичок
Сообщения: 23
Зарегистрирован: 02 мар 2011, 15:26
Репутация: 0
Контактная информация:

Re: помогите подключить линейки к EMC2

Сообщение Boris »

Теперь что_то типа такой строки нужно?
net [name_sig} <= pid.0.command => stepgen.0.velocity-cmd
psha
Опытный
Сообщения: 147
Зарегистрирован: 28 фев 2011, 11:11
Репутация: 1
Контактная информация:

Re: помогите подключить линейки к EMC2

Сообщение psha »

http://www.linuxcnc.org/component/optio ... g,english/
Может ускорить подбор параметров
root, доделай конвертацию! :)
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: помогите подключить линейки к EMC2

Сообщение Nick »

Boris писал(а):Теперь что_то типа такой строки нужно?
net [name_sig} <= pid.0.command => stepgen.0.velocity-cmd
Абсолютно точно.
Boris
Новичок
Сообщения: 23
Зарегистрирован: 02 мар 2011, 15:26
Репутация: 0
Контактная информация:

Re: помогите подключить линейки к EMC2

Сообщение Boris »

А что за ошибка в ЕМС постоянно вылетает "joint 0 following error"( через некоторое время существования рассогласования между pid.command и pid.feedback) и как с ней бороться? Это какое-нибудь временное ограничение на существование рассогласования? И наверняка его можно снять? А то мешает эксперименты ставить.
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: помогите подключить линейки к EMC2

Сообщение Nick »

Нужно настроить параметры FERROR и MIN_FERROR это допуски по точности следования заданной траектории.
FERROR задает максимальную погрешность при которой не будет появляться ошибка "joint 0 following error" для больших скоростей.
MIN_FERROR тоже самое, только для маленьких скоростей.

Настраивается в ini файле для каждой оси.
Ответить

Вернуться в «LinuxCNC»