Страница 2 из 5
Re: помогите подключить линейки к EMC2
Добавлено: 03 мар 2011, 14:35
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). Не знаю, правильно я поступил или так нельзя? ЕМС теперь запустился. Где смотреть результат?
Re: помогите подключить линейки к EMC2
Добавлено: 03 мар 2011, 15:12
Nick
Не, stepgen.0.position-cmd тебе не нужен. Т.е. то, что убрал строку - это правильно, а то, что добавил нет

.
Проверь работает ли пид. Все значения всех параметров/пинов/входов/выходов можно смотреть или в hal watch или в hal show. В одном из них можно отслеживать сразу несколько параметров.
На степген нужно будет подавать выход pid.out причем подавать нужно на пин скорости, а не положения, т.е. stepgen.0.velocity-cmd .
Re: помогите подключить линейки к EMC2
Добавлено: 03 мар 2011, 18:11
Nick
Пропустил вопрос по файлам...
Лучше писать все в мойстанок.hal, т.к. ты пишешь стандартное описание станка.
А что сейчас находится в custom? И подключается ли он в ini?
Re: помогите подключить линейки к EMC2
Добавлено: 03 мар 2011, 19:56
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 если рассогласование достигнет нуля?
Re: помогите подключить линейки к EMC2
Добавлено: 03 мар 2011, 21:42
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 и двигатель должен закрутиться

.
Re: помогите подключить линейки к EMC2
Добавлено: 03 мар 2011, 23:27
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.
Re: помогите подключить линейки к EMC2
Добавлено: 03 мар 2011, 23:46
Nick
По pid есть базовые вещи в руководстве станкостроителя от EMC:
http://cnc-club.ru/forum/viewtopic.php?f=15&t=150 вообще полезно целиком почитать. После него многое становится на свои места.
Re: помогите подключить линейки к EMC2
Добавлено: 03 мар 2011, 23:53
Nick
Вот пример значений параметров PID по умолчанию из pncconf.
Вообще это самый простой вариант - скорость зависит напрямую от расстояния до искомой точки.
Re: помогите подключить линейки к EMC2
Добавлено: 04 мар 2011, 00:22
Boris
root писал(а):viewtopic.php?f=15&t=150 вообще полезно целиком почитать. После него многое становится на свои места.
О, последние два дня это моя настольная книга, и прочитал её почти целиком. Но про ПИД в этом руководстве написано поверхностно и как-то пространно (моё мнение), у меня чёткой картины, по работе ПИД-контроллера, в сознании не сложилось. Я хорошо усваиваю когда тема иллюстрированна живыми (не абстрактными) примерами. Впрочем, я наверное немного тугодум, со временем разберусь.
Re: помогите подключить линейки к EMC2
Добавлено: 04 мар 2011, 00:33
Nick
Тут все должно быть просто:
P I D это коэффициенты уравнения расчитывающего скорость.
Все должно получаться из простого уравнения движения:
x(t) = x0 + v0*t + a*t^2/2
... но только не в пол первого ночи

...
Завтра напишу, что к чему...
Re: помогите подключить линейки к EMC2
Добавлено: 04 мар 2011, 00:47
Boris
Поставил setp pid.0.Pgain в единицу, остальное в нули, как на скриншоте. Результат тот-же.
pid.output должен быть тем больше, чем больше рассогласование, и не равен нулю если error>deadband ?
Спокойной ночи

Re: помогите подключить линейки к EMC2
Добавлено: 04 мар 2011, 01:05
Nick
да, все должно быть именно так.
А ты включил pid через enable?
Re: помогите подключить линейки к EMC2
Добавлено: 04 мар 2011, 12:21
Boris
root писал(а):А ты включил pid через enable?
Конечно-же не включил

...
Всё, с output пошёл сигнал, он всегда равен error.
Re: помогите подключить линейки к EMC2
Добавлено: 04 мар 2011, 12:26
Boris
output = error * Pgain
Re: помогите подключить линейки к EMC2
Добавлено: 04 мар 2011, 13:03
Nick
Ну все правильно, так и должно быть.
Вот классная статья по PID контроллерам, их функционированию и, главное, их настройке!
http://en.wikipedia.org/wiki/PID_controller, но она на английском. Сейчас сделаю перевод приемов настройки PID регуляторов.
Re: помогите подключить линейки к EMC2
Добавлено: 04 мар 2011, 13:24
Boris
Теперь что_то типа такой строки нужно?
net [name_sig} <= pid.0.command => stepgen.0.velocity-cmd
Re: помогите подключить линейки к EMC2
Добавлено: 04 мар 2011, 13:26
psha
Re: помогите подключить линейки к EMC2
Добавлено: 04 мар 2011, 13:30
Nick
Boris писал(а):Теперь что_то типа такой строки нужно?
net [name_sig} <= pid.0.command => stepgen.0.velocity-cmd
Абсолютно точно.
Re: помогите подключить линейки к EMC2
Добавлено: 04 мар 2011, 14:48
Boris
А что за ошибка в ЕМС постоянно вылетает "joint 0 following error"( через некоторое время существования рассогласования между pid.command и pid.feedback) и как с ней бороться? Это какое-нибудь временное ограничение на существование рассогласования? И наверняка его можно снять? А то мешает эксперименты ставить.
Re: помогите подключить линейки к EMC2
Добавлено: 04 мар 2011, 15:27
Nick
Нужно настроить параметры FERROR и MIN_FERROR это допуски по точности следования заданной траектории.
FERROR задает максимальную погрешность при которой не будет появляться ошибка "joint 0 following error" для больших скоростей.
MIN_FERROR тоже самое, только для маленьких скоростей.
Настраивается в ini файле для каждой оси.