Gantrykins в EMC2
- Andrey_L
- Кандидат
- Сообщения: 69
- Зарегистрирован: 25 сен 2011, 16:50
- Репутация: 0
- Контактная информация:
Gantrykins в EMC2
Здравствуйте!
Ну, наконец то русскоязычный ресурс на интересующую тему
Господа, вопрос такой:
Построил сервоконтроллер на базе EMC2+Motenc(плата I/O)+ amc( серводрайверы)+Magmotor(двигатели щеточные с оптическими энкодерами),
все работает нормально.Станок портальный,на оси Х два движка,следовательно модуль кинематики Gantrykins.Запускаешь,далее Homing по всем осям,
по умолчанию все это происходит в Joint Mode,затем переключаешься в World Mode и можно двигать станок с клавиатуры,но вот засада ,если забыл
это сделать,то есть переключиться из Joint в World Mode и двинуть станок по оси Х с клавы,то разумеется Х1 двинулся,а Х2 на месте и
Crash Machine and Error on X.Посоветуйте,пожалуйста,как от этой засады избавиться.Буду признателен за любые идеи.
Ну, наконец то русскоязычный ресурс на интересующую тему
Господа, вопрос такой:
Построил сервоконтроллер на базе EMC2+Motenc(плата I/O)+ amc( серводрайверы)+Magmotor(двигатели щеточные с оптическими энкодерами),
все работает нормально.Станок портальный,на оси Х два движка,следовательно модуль кинематики Gantrykins.Запускаешь,далее Homing по всем осям,
по умолчанию все это происходит в Joint Mode,затем переключаешься в World Mode и можно двигать станок с клавиатуры,но вот засада ,если забыл
это сделать,то есть переключиться из Joint в World Mode и двинуть станок по оси Х с клавы,то разумеется Х1 двинулся,а Х2 на месте и
Crash Machine and Error on X.Посоветуйте,пожалуйста,как от этой засады избавиться.Буду признателен за любые идеи.
- PKM
- Почётный участник
- Сообщения: 4263
- Зарегистрирован: 31 мар 2011, 18:11
- Репутация: 705
- Настоящее имя: Андрей
- Откуда: Украина
- Контактная информация:
Re: Gantrykins в EMC2
Скорее всего никак. Просто отучиться двигать станок с клавы.
Кстати, мне всегда было любопытно, как происходит Homing портала. Ведь если двигать асинхронно, будет перекос?
Motenc - это дорого, если мне не изменяет память?
Кстати, мне всегда было любопытно, как происходит Homing портала. Ведь если двигать асинхронно, будет перекос?
Motenc - это дорого, если мне не изменяет память?
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: Gantrykins в EMC2
Давай конкретизируем задачу, тебе нужно запретить джогить с клавы в Joint Mode?
Наверное, сначала одновременно двигает обе оси в сторону датчика (считаем, что в начальный момент портал не перекошен), потом при срабатывании первого концевика, тормозим первую ось и догоняем второй.PKM писал(а):Кстати, мне всегда было любопытно, как происходит Homing портала. Ведь если двигать асинхронно, будет перекос?
- PKM
- Почётный участник
- Сообщения: 4263
- Зарегистрирован: 31 мар 2011, 18:11
- Репутация: 705
- Настоящее имя: Андрей
- Откуда: Украина
- Контактная информация:
Re: Gantrykins в EMC2
А может, там один датчик на оба привода? По логике, так и должно быть, какой смысл 2 ставить и потом их равнять.
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: Gantrykins в EMC2
Тогда не будет смысла в Gantrykins, он позволяет выровнять слегка перекосившийся портал. Ну и наверное следить за ним по двум энкодерам и прочее. А если только один датчик, то как ты узнаешь, на какой стороне портала он сработал?
- PKM
- Почётный участник
- Сообщения: 4263
- Зарегистрирован: 31 мар 2011, 18:11
- Репутация: 705
- Настоящее имя: Андрей
- Откуда: Украина
- Контактная информация:
Re: Gantrykins в EMC2
Я думаю, что Gantrykins нужен только для сервоприводов, чтобы было куда завести датчики обратной связи. А шаговые куда проще подключить на один выход.
Все равно же хоумить нужно одновременно. Оба поехали искать, скорость маленькая, от одного датчика оба и остановились.
В общем, эти порталы (точнее, не только порталы, а joints-axes как таковые) в EMC2 слабоватое место. Хоть и очень универсально, но пока что не очень удобно для ежедневного использования.
Все равно же хоумить нужно одновременно. Оба поехали искать, скорость маленькая, от одного датчика оба и остановились.
В общем, эти порталы (точнее, не только порталы, а joints-axes как таковые) в EMC2 слабоватое место. Хоть и очень универсально, но пока что не очень удобно для ежедневного использования.
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: Gantrykins в EMC2
Для шаговиков - та же тема, хоумить их нужно по отдельности (точнее сначала вместе, а доводить по-отдельности). Скажем за время работы один из них пропускает шаги, и в итоге портал потихоньку перекашивается. Вот чтобы это исправить и нужен Gantrykins и второй датчик.
- PKM
- Почётный участник
- Сообщения: 4263
- Зарегистрирован: 31 мар 2011, 18:11
- Репутация: 705
- Настоящее имя: Андрей
- Откуда: Украина
- Контактная информация:
Re: Gantrykins в EMC2
С обной стороны - да. А с другой тсороны - если шаговик пропускает шаги, это в любом случае ненормально, и лишний датчик вряд ли сильно поможет. Да и какая там точность у этих датчиков, +-0.5 мм наверное.
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: Gantrykins в EMC2
Другое дело, пока станок стоит, один из движков могут сдвинуть, а ты об этом и не узнаешь . В результате деталь поплывет...
Точность датчиков может быть и больше.
Точность датчиков может быть и больше.
- Andrey_L
- Кандидат
- Сообщения: 69
- Зарегистрирован: 25 сен 2011, 16:50
- Репутация: 0
- Контактная информация:
Re: Gantrykins в EMC2
Можно,конечно,конкретизировать
В идеале,было бы неплохо вообще убрать Joint Mode для Gantrykins,что разработчики и обещали сделать в будущих релизах.
Запретить Jog с клавы в Joint Mode,хорошая идея-подскажите,плиз,как? Теперь по порядку:
Motenc вместе с дочерней платой не очень дорого(порядка 1000$),но оно того стоит.Что хреново,поддержка производителя никакая((
Хоумится портал по двум концевикам и точность хоума порядка пяти соток: этому способствует Z канал энкодера(мерили часовым индикатором).
Принцип хоума у меня такой:
при включении станок в Joint Mode( по умолчанию),все "суставы" хоумятся независимо,но в ini я прописал порядок такой,что Joint 0(X1) и Joint 1(X2)
едут к концевикам одновременно.После хоума нужно переключиться в World Mode,и тогда уже двигать портал клавой-
вот тут и засада ,очень часто просто забываешь,дернул -балка в раскорячку,и все заново...
Рассинхрон в работе Х1 и Х2 ,конечно,может быть,но не более 0.06 мм( в ini MIN_FERROR=0.06),далее просто выскочит ошибка.
По этой проблеме я общался с одним буржуем,вот что он ответил:
In joint mode (aka free mode) kinematics are ignored, they are not
taken into account.
Whatever is stated in Your kinematics module, joints are independent
in joint mode. They will be homed separately (according to homing
sequence stated in INI file).
Since I also needed some specific 5-axis stuff for waterjet machine, I
decided to address also the question of gantry simply by permanently
assigning two joints to one axis.
In kinematics module I had:
In inverse kins:
joint[0] = tran.pos->x
joint[1] = tran.pos->x
In forward kins
tran.pos->x = joint[0]
Please note that joint[1] is not considered in forward kinematics.
These lines hardcode joints 0 and 1 to X axis.
Но как он это сделал пока тишина(( Может будут какие идеи? Буду премного благодарен
В идеале,было бы неплохо вообще убрать Joint Mode для Gantrykins,что разработчики и обещали сделать в будущих релизах.
Запретить Jog с клавы в Joint Mode,хорошая идея-подскажите,плиз,как? Теперь по порядку:
Motenc вместе с дочерней платой не очень дорого(порядка 1000$),но оно того стоит.Что хреново,поддержка производителя никакая((
Хоумится портал по двум концевикам и точность хоума порядка пяти соток: этому способствует Z канал энкодера(мерили часовым индикатором).
Принцип хоума у меня такой:
при включении станок в Joint Mode( по умолчанию),все "суставы" хоумятся независимо,но в ini я прописал порядок такой,что Joint 0(X1) и Joint 1(X2)
едут к концевикам одновременно.После хоума нужно переключиться в World Mode,и тогда уже двигать портал клавой-
вот тут и засада ,очень часто просто забываешь,дернул -балка в раскорячку,и все заново...
Рассинхрон в работе Х1 и Х2 ,конечно,может быть,но не более 0.06 мм( в ini MIN_FERROR=0.06),далее просто выскочит ошибка.
По этой проблеме я общался с одним буржуем,вот что он ответил:
In joint mode (aka free mode) kinematics are ignored, they are not
taken into account.
Whatever is stated in Your kinematics module, joints are independent
in joint mode. They will be homed separately (according to homing
sequence stated in INI file).
Since I also needed some specific 5-axis stuff for waterjet machine, I
decided to address also the question of gantry simply by permanently
assigning two joints to one axis.
In kinematics module I had:
In inverse kins:
joint[0] = tran.pos->x
joint[1] = tran.pos->x
In forward kins
tran.pos->x = joint[0]
Please note that joint[1] is not considered in forward kinematics.
These lines hardcode joints 0 and 1 to X axis.
Но как он это сделал пока тишина(( Может будут какие идеи? Буду премного благодарен
- PKM
- Почётный участник
- Сообщения: 4263
- Зарегистрирован: 31 мар 2011, 18:11
- Репутация: 705
- Настоящее имя: Андрей
- Откуда: Украина
- Контактная информация:
Re: Gantrykins в EMC2
Похоже, это был Viesturs - у него водорезка =)
Судя по всему, отредактировал файл кинематики gantrykins.c и откомпилировал его заново. Ничего сложного, но вначале нужно скачать исходники ЕМС2. Все это подробно есть на linuxcnc.Andrey_L писал(а):Но как он это сделал пока тишина
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: Gantrykins в EMC2
А как переключаются моды? Может просто завязать моду на axis.XX.jog-enable?Andrey_L писал(а):Запретить Jog с клавы в Joint Mode,хорошая идея-подскажите,плиз,как?
- Andrey_L
- Кандидат
- Сообщения: 69
- Зарегистрирован: 25 сен 2011, 16:50
- Репутация: 0
- Контактная информация:
Re: Gantrykins в EMC2
Да это действительно Viesturs, у него,в том числе и 5-осевая водорезка.Сегодня он прислал мне свой исходник файла модуля кинематики.
Но в своей машине он не использует World,а по поводу " ничего сложного" -это кому как
Nick,я пытался завязать halui.mode-teleop на halui.axis.N.is-homed, но стали выскакивать очень странные ошибки.
Если можно подробней,какой сигнал требуется подать на axis.N.jog-enable(если не ошибаюсь это входной pin)
Но в своей машине он не использует World,а по поводу " ничего сложного" -это кому как
Nick,я пытался завязать halui.mode-teleop на halui.axis.N.is-homed, но стали выскакивать очень странные ошибки.
Если можно подробней,какой сигнал требуется подать на axis.N.jog-enable(если не ошибаюсь это входной pin)
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: Gantrykins в EMC2
Наверное как-то так:
Загружаем компонент not
loadrt not names=not.is-joint
addf not.is-joint base-thread # Хотя тут наверное можно использовать и servo thread
Подключаем к нему пин halui.mode.is-joint, т.е. находимся в режиме joint
net not.is-joint.in <= halui.mode.is-joint
Потом не плохо бы посмотреть находимся ли мы в режиме manual:
Загружаем компонент and2 (логическое "и")
loadrt and2 names=and2.joint
addf and2.joint base-thread # Хотя тут наверное можно использовать и servo thread
И подключаем к нему нужные пины:
net and.joint.in0 <= halui.mode.is-manual
net and.joint.in1 <= not.is-joint.out
А потом подключаем к нему jog-enable:
net jog-enable <= and.joint.out
net jog-enable => axis.0.jog-enable
net jog-enable => axis.1.jog-enable
net jog-enable => axis.2.jog-enable
Загружаем компонент not
loadrt not names=not.is-joint
addf not.is-joint base-thread # Хотя тут наверное можно использовать и servo thread
Подключаем к нему пин halui.mode.is-joint, т.е. находимся в режиме joint
net not.is-joint.in <= halui.mode.is-joint
Потом не плохо бы посмотреть находимся ли мы в режиме manual:
Загружаем компонент and2 (логическое "и")
loadrt and2 names=and2.joint
addf and2.joint base-thread # Хотя тут наверное можно использовать и servo thread
И подключаем к нему нужные пины:
net and.joint.in0 <= halui.mode.is-manual
net and.joint.in1 <= not.is-joint.out
А потом подключаем к нему jog-enable:
net jog-enable <= and.joint.out
net jog-enable => axis.0.jog-enable
net jog-enable => axis.1.jog-enable
net jog-enable => axis.2.jog-enable
- Andrey_L
- Кандидат
- Сообщения: 69
- Зарегистрирован: 25 сен 2011, 16:50
- Репутация: 0
- Контактная информация:
Re: Gantrykins в EMC2
Обязательно попробую и отпишусь,но судя по скрипту,портал тогда пойдет в раскорячку в MDI режиме,хотя,наверняка я ошибаюсь
Nick спасибо,бум попробовать
Nick спасибо,бум попробовать
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: Gantrykins в EMC2
Какому скрипту?Andrey_L писал(а):но судя по скрипту,портал тогда пойдет в раскорячку в MDI режиме
- Andrey_L
- Кандидат
- Сообщения: 69
- Зарегистрирован: 25 сен 2011, 16:50
- Репутация: 0
- Контактная информация:
Re: Gantrykins в EMC2
я так для простоты называюNick писал(а):...
loadrt and2 names=and2.joint
addf and2.joint base-thread # Хотя тут наверное можно использовать и servo thread
И подключаем к нему нужные пины:
net and.joint.in0 <= halui.mode.is-manual
net and.joint.in1 <= not.is-joint.out
...
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: Gantrykins в EMC2
эммм.... может я что-то не так понял - я с gantry не работал, написал по интуиции...
Кстати, дай посмотреть на свои hal и ini!
Кстати, дай посмотреть на свои hal и ini!
- Andrey_L
- Кандидат
- Сообщения: 69
- Зарегистрирован: 25 сен 2011, 16:50
- Репутация: 0
- Контактная информация:
Re: Gantrykins в EMC2
вот мои файлы HAL и INI,конечно с тремя осями(Joints) проще работать,но тогда кинематика усложняется...
- Вложения
-
- motenc.ini
- (7.08 КБ) 1126 скачиваний
-
- core_servo.hal
- (3.01 КБ) 1100 скачиваний
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: Gantrykins в EMC2
А почему gantry закомментирован?
#loadrt gantrykins
#setp gantrykins.joint-0 0
#setp gantrykins.joint-1 1
#setp gantrykins.joint-2 2
#setp gantrykins.joint-3 1
А как меняются режимы из joint в world? Там кнопочка специальная есть, или нужно другие какие-то действия выполнить?
#loadrt gantrykins
#setp gantrykins.joint-0 0
#setp gantrykins.joint-1 1
#setp gantrykins.joint-2 2
#setp gantrykins.joint-3 1
А как меняются режимы из joint в world? Там кнопочка специальная есть, или нужно другие какие-то действия выполнить?