Подход с одной стороны

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.
Аватара пользователя
skytronix
Кандидат
Сообщения: 50
Зарегистрирован: 25 ноя 2013, 16:41
Репутация: 1
Настоящее имя: Михаил
Контактная информация:

Подход с одной стороны

Сообщение skytronix »

Здравствуйте уважаемые форумчане. Подскажите дилетанту :monkey: , как можно (и возможно ли вообще) организовать в linuxcnc подход координаты с одной стороны? Т.е. Сделать так что если я задаю значение перемещения 10 мм, он перемещаться на 10 мм, а потом при перемещения в позицию 8 мм, он сначала перемещаться в позицию 6 мм, а потом в позицию 8 мм???
Аватара пользователя
PKM
Почётный участник
Почётный участник
Сообщения: 4263
Зарегистрирован: 31 мар 2011, 18:11
Репутация: 705
Настоящее имя: Андрей
Откуда: Украина
Контактная информация:

Re: Подход с одной стороны

Сообщение PKM »

G1 X10
G1 X8
:)
Или не программно управлять нужно?
Аватара пользователя
skytronix
Кандидат
Сообщения: 50
Зарегистрирован: 25 ноя 2013, 16:41
Репутация: 1
Настоящее имя: Михаил
Контактная информация:

Re: Подход с одной стороны

Сообщение skytronix »

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

Re: Подход с одной стороны

Сообщение Nick »

Надо только в отрицательную сторону?
Подумал, что можно сделать отставание по координате, но потом понял, что из-за этого будет подглючивать обратная связь и motion planner...

Скорее всего надо все на Gкодах писать.
Как вариант, вместо всех

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

G0 X... 
выполнять

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

O<move> CALL [...]
и добавить

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

O<move> SUB 
  G1 X[#1-2]
  G1 X#1
O<move> ENDSUB 
А какой станок?
Аватара пользователя
Сергей Саныч
Мастер
Сообщения: 9116
Зарегистрирован: 30 май 2012, 14:20
Репутация: 2858
Откуда: Тюмень
Контактная информация:

Re: Подход с одной стороны

Сообщение Сергей Саныч »

skytronix писал(а):(Таким образом выбирая люфт)
Для выборки люфтов в LinuxCNC есть специальная возможность - задаешь в нужной оси величину люфта, скажем, BACKLASH = 0.1 и люфты будут автоматически выбираться.
Но лучше бороться с люфтами в механике, особенно в станках с силовой обработкой, например, фрезерных.
Чудес не бывает. Бывают фокусы.
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Подход с одной стороны

Сообщение Nick »

Если выработка винта не однородная - может не сработать!
Хотя для неоднородной выработки можно сделать файл с заданием выработки для отдельных участков винта.
Аватара пользователя
skytronix
Кандидат
Сообщения: 50
Зарегистрирован: 25 ноя 2013, 16:41
Репутация: 1
Настоящее имя: Михаил
Контактная информация:

Re: Подход с одной стороны

Сообщение skytronix »

Переделываем старый ручной Иркутский станок под ЧПУ. Сейчас переделываем поворотную ось А.
Пишем программу:
G1 A10
G1 A8
Вопрос в том как заложить жестко что если перемещение отрицательное (А8-А10=А-2) сначала выполнить А-4, а потом А2.
Заранее извиняюсь если не совсем ясно изъясняюсь. Немного туповат
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Подход с одной стороны

Сообщение Nick »

skytronix писал(а):Вопрос в том как заложить жестко что если перемещение отрицательное (А8-А10=А-2) сначала выполнить А-4, а потом А2.
Можно вот так с использованием подпрограммы.
Также можно скриптом заменить все G01 A... на O<move> CALL [...].

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

O<move> SUB
  O<move-if> IF [#1 LT #<_a>]
    G01 A[#1-2]
    G01 A#1
  O<move-if> ENDIF
O<move> ENDSUB
Расскажи по подробнее про станок. В каком режиме будет работать четвертая ось? Только холостой поворот на указанынй угол или и обработка во время вращения?
Аватара пользователя
skytronix
Кандидат
Сообщения: 50
Зарегистрирован: 25 ноя 2013, 16:41
Репутация: 1
Настоящее имя: Михаил
Контактная информация:

Re: Подход с одной стороны

Сообщение skytronix »

Только холостой поворот на нужный угол, после чего ось стопорится.
Расскажите по подробнее про скрипты, как правильно прописать?

Про скрипты я наверное поспешил, с подпрограммой помойму удачнее вариант
Аватара пользователя
skytronix
Кандидат
Сообщения: 50
Зарегистрирован: 25 ноя 2013, 16:41
Репутация: 1
Настоящее имя: Михаил
Контактная информация:

Re: Подход с одной стороны

Сообщение skytronix »

Nick писал(а):O<move> CALL [...].

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

O<move> SUB
  O<move-if> IF [#1 LT #<_a>]
    G01 A[#1-2]
    G01 A#1
  O<move-if> ENDIF
O<move> ENDSUB
Как мне это правильно прописать? :monkey:
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Подход с одной стороны

Сообщение Nick »

если Gкод пишется вручную - то не актуально.
вообще скрипт достаточно простой, собственно вот:

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

sed -r "s/(G0?[0-1]\s*A)([-\.0-9]+)/O<move> [\2]/i"
меняет все строки вида
G00 или G01 A(+число) на O<move> [(число)]

skytronix писал(а):Как мне это правильно прописать?
Это лучше всего в отдельный файл под названием move.ngc и положи этот файл в директорию с ini (точнее там в ini есть параметр что-то вроде NGC prefix, в общем туда). Или можно просто тупо в начале каждого Gкода писать.
Потом для вызова:
O<move> CALL [-0.100]

Ой, в процедуре ошибка, надо так
(G01 A#1 надо делать в любом случае, а не только если едем в обратную сторону)

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

O<move> SUB
  O<move-if> IF [#1 LT #<_a>]
    G01 A[#1-2]
  O<move-if> ENDIF
  G01 A#1
O<move> ENDSUB
Аватара пользователя
NightV
Почётный участник
Почётный участник
Сообщения: 6610
Зарегистрирован: 30 дек 2011, 09:14
Репутация: 2279
Настоящее имя: Владимир Айрапетян
Откуда: Israel
Контактная информация:

Re: Подход с одной стороны

Сообщение NightV »

skytronix писал(а):Немного туповат
тупые станки не переделывают :hehehe: они их гробят :freak_in_action:
Всё просто! если знаешь КАК!
Аватара пользователя
skytronix
Кандидат
Сообщения: 50
Зарегистрирован: 25 ноя 2013, 16:41
Репутация: 1
Настоящее имя: Михаил
Контактная информация:

Re: Подход с одной стороны

Сообщение skytronix »

NightV писал(а): тупые станки не переделывают :hehehe: они их гробят :freak_in_action:
Поэтому и спрашиваю, что-бы не угробить :wik:

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

O<move> SUB
  O<move-if> IF [#1 LT #<_a>]
   
А что за параметр #<а>?? :thinking:
Linuxcnc выдал сообщение что поименнованый параметр не определен
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Подход с одной стороны

Сообщение Nick »

Это текущее положение оси A...
Ругнулся - значит у тебя версия до 2.6...
Попробуй заменить #<_a> на #<5423>

Список параметров есть тут: http://linuxcnc.org/docs/html/gcode/ove ... rameters_a
Вот тут есть с именными параметрами, но они будут работать скорее всего только с версии 2.6 http://www.linuxcnc.org/docs/devel/html ... parameters
Аватара пользователя
Сергей Саныч
Мастер
Сообщения: 9116
Зарегистрирован: 30 май 2012, 14:20
Репутация: 2858
Откуда: Тюмень
Контактная информация:

Re: Подход с одной стороны

Сообщение Сергей Саныч »

Nick писал(а):Попробуй заменить #<_a> на #<5423>
Может, на #5423 ?
Последний раз редактировалось Сергей Саныч 27 ноя 2013, 14:31, всего редактировалось 1 раз.
Чудес не бывает. Бывают фокусы.
Аватара пользователя
skytronix
Кандидат
Сообщения: 50
Зарегистрирован: 25 ноя 2013, 16:41
Репутация: 1
Настоящее имя: Михаил
Контактная информация:

Re: Подход с одной стороны

Сообщение skytronix »

Nick писал(а):Это текущее положение оси A...
Ругнулся - значит у тебя версия до 2.6...
Попробуй заменить #<_a> на #<5423>
У меня версия 2.5.3
Сначала тоже ругнулся на параметр <5423>, убрал <> и все заработало :cheesy: Nick спасибо за ссылки, и быструю помощь
Аватара пользователя
Сергей Саныч
Мастер
Сообщения: 9116
Зарегистрирован: 30 май 2012, 14:20
Репутация: 2858
Откуда: Тюмень
Контактная информация:

Re: Подход с одной стороны

Сообщение Сергей Саныч »

Подправил #5423 - это в другом месте с 1 начинются координаты (#5221)
Чудес не бывает. Бывают фокусы.
Ответить

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