Асинхронная работа осей

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.
Аватара пользователя
magnetic
Мастер
Сообщения: 431
Зарегистрирован: 03 авг 2015, 11:27
Репутация: 73
Настоящее имя: Алексей
Контактная информация:

Асинхронная работа осей

Сообщение magnetic »

Есть ли возможность из LinuxCNC запрограмировать независимую работу осей?

Цель такая, есть две оси которые двигают независимые каретки, нужно что бы во время того как одна ось двигается по программе, вторая максимально быстро отъехала в заданное положение, ну например для смены детали.
Вилки и ложки на фото из AISI304!
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: Асинхронная работа осей

Сообщение nkp »

magnetic писал(а):независимую работу осей?
насчет "независимой" работы не скажу,но вышеописаную задачу в емс можно сделать разными способами...
Аватара пользователя
magnetic
Мастер
Сообщения: 431
Зарегистрирован: 03 авг 2015, 11:27
Репутация: 73
Настоящее имя: Алексей
Контактная информация:

Re: Асинхронная работа осей

Сообщение magnetic »

Может быть подскажете в какую сторону копать? Ибо даже не знаю как это может называться... Заранее спасибо.
Вилки и ложки на фото из AISI304!
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Асинхронная работа осей

Сообщение Nick »

Лучше по подробнее опиши задачу.

Вообще команды осям сначала выходят из motion - пины - axis.N.pos-cmd, а потом ты их заводишь на управления моторами - stepgen.N.pos-cmd, можно в эту цепочку встроить что-то, что будет уводить ось в заданное поможение, при поступлении спец сигнала. (например компонент mux2).

ЗЫ но не проще ли все это написать на Gкоде?
Аватара пользователя
magnetic
Мастер
Сообщения: 431
Зарегистрирован: 03 авг 2015, 11:27
Репутация: 73
Настоящее имя: Алексей
Контактная информация:

Re: Асинхронная работа осей

Сообщение magnetic »

Вопрос и был про реализацию в g code.

Есть две каретки, оси А и В, с тисками, на одну закрепили деталь, она поехала под шпиндель, шпиндель сверлит.

В тиски на второй каретке ставим вторую деталь, она едет на рабочую позицию, шпиндель, все еще сверлит первую деталь.

Шпиндель досверлил, первая каретка отъезжает из рабочей зоны, а шпиндель уже вторую деталь сверлит.

Далее цикл повторяется.

Как такое можно реализовать, чтобы каретки независимо от шпинделя двигались? Настройка гибкая д.быть ибо детали разные небольших серий.

Заранее спасибо за подсказку.
Вилки и ложки на фото из AISI304!
Аватара пользователя
MX_Master
Мастер
Сообщения: 7488
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3113
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

Re: Асинхронная работа осей

Сообщение MX_Master »

Допустим, сделаете. А каким софтом траектории создавать?
Аватара пользователя
magnetic
Мастер
Сообщения: 431
Зарегистрирован: 03 авг 2015, 11:27
Репутация: 73
Настоящее имя: Алексей
Контактная информация:

Re: Асинхронная работа осей

Сообщение magnetic »

MX_Master писал(а):Допустим, сделаете. А каким софтом траектории создавать?
Траектории простые, поэтому использую Vim :rail: :rail:

Частая задача: насверлить в нескольких сотнях фланцев 4 отверстия по углам, потом зенковку сделать.
Вилки и ложки на фото из AISI304!
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Асинхронная работа осей

Сообщение Nick »

Вообще по уму это называется pallet changer или как-то так :).

Для тебя... движение может быть только синхронно со шпинделем.
Заводить тиски в рабочую зону надо по нажатию кнопки?

Можно внутри цикла обработки вызывать процедуру, которая будет проверять, не нажата ли кнопка. И если нажата загонять тиски в рабочую зону.
НО опять же в это время не получится сверлить.

Покажи пример своей программы.

ЗЫ синхронизация со шпинделем нужна для ускорения цикла? Сколько по времени едут тиски? Сделай фото/видео работы.
Аватара пользователя
magnetic
Мастер
Сообщения: 431
Зарегистрирован: 03 авг 2015, 11:27
Репутация: 73
Настоящее имя: Алексей
Контактная информация:

Re: Асинхронная работа осей

Сообщение magnetic »

Станок в проекте, но уже на стадии проектирования возник такой вопрос, и опасения видимо не напрасны. G-code не предусматривает асинхрона, то есть надо ставить два компа, и их как-то связывать или мириться с последовательной работой осей.
синхронизация со шпинделем нужна для ускорения цикла? Сколько по времени едут тиски?
Скоре асинхронизация... Да, именно увеличить производительность, 30-40 секунд на смену детали, это примерно 30%-40% простоя. Придется думать о других способах оптимизации.
Вилки и ложки на фото из AISI304!
popcorn
Мастер
Сообщения: 252
Зарегистрирован: 21 янв 2015, 00:20
Репутация: 18
Откуда: Янтарный край
Контактная информация:

Re: Асинхронная работа осей

Сообщение popcorn »

Я в чпу нуб полный, но:
Если тиски с деталями в процессе сверловки неподвижны, то можно сделать достаточно большой поворачивающися круг или просто планку, на которую напротив друг-друга поместить тиски? И просто поворачивать по нажатию кнопки круг, и запускать цикл для сверления?
Хотя всё от размера и веса деталей зависит.
Даже фотку нашёл:
Как раз по запросу pallet changer, всё уже придумано за нас :ura:
Вложения
5997-2329857.jpg (3521 просмотр) <a class='original' href='./download/file.php?id=64970&mode=view' target=_blank>Загрузить оригинал (127.12 КБ)</a>
Изображение
Аватара пользователя
magnetic
Мастер
Сообщения: 431
Зарегистрирован: 03 авг 2015, 11:27
Репутация: 73
Настоящее имя: Алексей
Контактная информация:

Re: Асинхронная работа осей

Сообщение magnetic »

popcorn, спасибо за фото, но речь шла не о механическом исполнении, а о программных возможностях LinuxCNC и именно о возможности задать перемещение осей независимо друг от друга.
Выяснили, что влоб через g-code не получится скорее всего.
Хотелось бы так:

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

g0 A500 B500  (оси А и B  подают заготовку 1 и 2 на позицию для сверления) 
g1 Z-5 F1 (сверлим)
g0 Z0 (просверлили, шпиндель наверх уехал)
g0 A0 + "команда не жди, когда приеду обрабатывай след. кадр." (ось A с готовой деталью на смену едет и не дожидаясь исполнения переход к сл. кадру) 
g0 Y100 (сместили шпиндель к B оси  - второй заготовке)
g0 Z-5 F1 (сверлим вторую деталь, тут бы где-то обработать кнопку, что поменяли деталь A и она б к шпинделю поехала)
Видимо надо 2 компа ставить или какие-то решения еще искать.
Вилки и ложки на фото из AISI304!
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5183
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Асинхронная работа осей

Сообщение Serg »

В принципе пролема решаема средствами HAL. Исполнителем будет pid или stepgen, позиция им будет задаваться с помощью M68, ну и limit3 ещё поставить в промежутке...
Тут разве что не решён вопрос хоминга этих осей. Для полноценного решения нужно ждать выхода нового компонента auxaxis, но на его доделку у меня пока нет времени. :)
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
MX_Master
Мастер
Сообщения: 7488
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3113
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

Re: Асинхронная работа осей

Сообщение MX_Master »

А попробуйте синхронно

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

G0 Y0 A500 B500
G1 Z-5 F1
G0 Z0
G0 Y100 A0 (убираем первую заготовку и едем ко второй)
G1 Z-5 F1
G0 Z0
M0 (или M1, или G4, в общем пауза для смены заготовок)
G0 Y0 A500 B0 (убираем вторую заготовку, ставим первую и едем к ней)
G1 Z-5 F1
G0 Z0
(и т.д.)
Аватара пользователя
magnetic
Мастер
Сообщения: 431
Зарегистрирован: 03 авг 2015, 11:27
Репутация: 73
Настоящее имя: Алексей
Контактная информация:

Re: Асинхронная работа осей

Сообщение magnetic »

MX_Master писал(а):А попробуйте синхронно
менно.
MX_Master, спасибо, вы тонко уловили суть проблемы, но вот тут-то нелепое и вырисовывается:

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

G0 Y100 A0 (убираем первую заготовку и едем ко второй)
Они одновременно приедут в пункт назначения, хотя, безусловно, Ваш вариант экономичней по времени (если Y быстрее доедет), а вопрос был именно в том можно ли их заставить приехать не одновременно.
Вилки и ложки на фото из AISI304!
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Асинхронная работа осей

Сообщение Nick »

Можно вот так:

Подаем задание на stepgen через sum2, в котором на втором входе будет mux2. У mux2 - на одном входе 0, на втором 500.
Контроллируем mux через M62-65 и через кнопку.
Т.е. просверлили, через M62-65 включили mux2 - тиски с максимальной скоростью (stepgen) ломанулись на смену.
Нажали кнопку -> тиски поехали назад.

И все это будет происходить не зависимо от motion - значит ассинхронно движению шпинделя.

(надо только логику включения mux2 чуть чуть проработать)
Аватара пользователя
magnetic
Мастер
Сообщения: 431
Зарегистрирован: 03 авг 2015, 11:27
Репутация: 73
Настоящее имя: Алексей
Контактная информация:

Re: Асинхронная работа осей

Сообщение magnetic »

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

Re: Асинхронная работа осей

Сообщение Nick »

Тут главное начать :).
1. Почитай как работает hal
http://www.cnc-club.ru/wiki/index.php/% ... %D1%8B_hal
http://www.cnc-club.ru/wiki/index.php/% ... %D1%8B_hal

2. Редактируй свой хал.
sum2 - компонент который имеет два входа и 1 выход. На выходе у него сумма входов.
mux2 - имеет два входа и 1 выход + пин выбора (sel). Если sel=0 на выходе значение первого входа, если sel=1 - второго.

В итоге тебе надо получить цепочку:

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

axis.N.pos-cmd -> sum2 -> stepgen.pos-cmd
                  /
0   ->  mux2   ->
500 -> /
Ответить

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