Страница 1 из 1

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

Добавлено: 27 ноя 2013, 10:33
skytronix
Здравствуйте уважаемые форумчане. Подскажите дилетанту :monkey: , как можно (и возможно ли вообще) организовать в linuxcnc подход координаты с одной стороны? Т.е. Сделать так что если я задаю значение перемещения 10 мм, он перемещаться на 10 мм, а потом при перемещения в позицию 8 мм, он сначала перемещаться в позицию 6 мм, а потом в позицию 8 мм???

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

Добавлено: 27 ноя 2013, 10:39
PKM
G1 X10
G1 X8
:)
Или не программно управлять нужно?

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

Добавлено: 27 ноя 2013, 10:50
skytronix
В программе так оно и есть. А вот как сделать что-бы станок физически при движении в отрицательную сторону пробегал дальше, а потом подошел к нужной координате с положительной стороны? (Таким образом выбирая люфт)

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

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

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

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

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

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

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

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

O<move> SUB 
  G1 X[#1-2]
  G1 X#1
O<move> ENDSUB 
А какой станок?

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

Добавлено: 27 ноя 2013, 11:22
Сергей Саныч
skytronix писал(а):(Таким образом выбирая люфт)
Для выборки люфтов в LinuxCNC есть специальная возможность - задаешь в нужной оси величину люфта, скажем, BACKLASH = 0.1 и люфты будут автоматически выбираться.
Но лучше бороться с люфтами в механике, особенно в станках с силовой обработкой, например, фрезерных.

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

Добавлено: 27 ноя 2013, 11:32
Nick
Если выработка винта не однородная - может не сработать!
Хотя для неоднородной выработки можно сделать файл с заданием выработки для отдельных участков винта.

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

Добавлено: 27 ноя 2013, 11:33
skytronix
Переделываем старый ручной Иркутский станок под ЧПУ. Сейчас переделываем поворотную ось А.
Пишем программу:
G1 A10
G1 A8
Вопрос в том как заложить жестко что если перемещение отрицательное (А8-А10=А-2) сначала выполнить А-4, а потом А2.
Заранее извиняюсь если не совсем ясно изъясняюсь. Немного туповат

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

Добавлено: 27 ноя 2013, 12:24
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
Расскажи по подробнее про станок. В каком режиме будет работать четвертая ось? Только холостой поворот на указанынй угол или и обработка во время вращения?

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

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

Про скрипты я наверное поспешил, с подпрограммой помойму удачнее вариант

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

Добавлено: 27 ноя 2013, 12:54
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:

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

Добавлено: 27 ноя 2013, 13:00
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

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

Добавлено: 27 ноя 2013, 13:15
NightV
skytronix писал(а):Немного туповат
тупые станки не переделывают :hehehe: они их гробят :freak_in_action:

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

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

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

O<move> SUB
  O<move-if> IF [#1 LT #<_a>]
   
А что за параметр #<а>?? :thinking:
Linuxcnc выдал сообщение что поименнованый параметр не определен

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

Добавлено: 27 ноя 2013, 13:35
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

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

Добавлено: 27 ноя 2013, 13:38
Сергей Саныч
Nick писал(а):Попробуй заменить #<_a> на #<5423>
Может, на #5423 ?

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

Добавлено: 27 ноя 2013, 13:54
skytronix
Nick писал(а):Это текущее положение оси A...
Ругнулся - значит у тебя версия до 2.6...
Попробуй заменить #<_a> на #<5423>
У меня версия 2.5.3
Сначала тоже ругнулся на параметр <5423>, убрал <> и все заработало :cheesy: Nick спасибо за ссылки, и быструю помощь

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

Добавлено: 27 ноя 2013, 14:33
Сергей Саныч
Подправил #5423 - это в другом месте с 1 начинются координаты (#5221)