Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Помощь С G-code
Все о станках с ЧПУ > Станки с ЧПУ, Hobby CNC > Программное обеспечение
shisik
Всем привет. В общем суть проблемы такова, есть 2 оси. Нужно задать одновременное движение по ним но с разной скоростью. То что быстрее надо задать циклом и повторить раз 100 пока выполняется первое.

Вот именно одновременного движения у меня и не получается. Сейчас получается только последовательное выполнение команд вниз-вправо-вверх-вниз-вправо итд. Буду благодарен за любую помощь, ибо сам я в этом только начинаю разбираться..
zergerpro
Методика программированияНажмите для просмотра прикрепленного файла
shisik
Цитата(zergerpro @ 11.11.2011, 1:09) *

спасибо за помощь, но к сожалению все равно не понимаю как реализовать :( если кому не сложно, нужен пример конкретно этого кода. Срочно просто нужно
alexandr_st+
Даже прочитав ту книжку вряд ли что получится, если вы пользователь Мач или ЕМС, т.к у софта проблемма с заданием условия. Так, чтоб выйти из ситуации, сконфигурируйте ваш мотор , который движется меддленно как шпиндель с управлением от степ/дир и назначьте нужную ось для этого. Вторую ось, соответственно можно запустить на цикл. Ну где-то это будет выглядеть так

M3 S100 (включаем ось шпинделя со скоростью 100)

M98 P0001 Q100 (переход к подпрограмме с повторением 100 раз)

M5 (выключаем шпинденль)

M30 (возврат в начало программы)




O0001 (обозначение текста подпрограммы)

G1 X10 F200 (движение по второй оси с заданной скоростью)

G1 X0 F400 (возврат в 0)

G90 (переход в абсолютные координаты)

M99 (выход из подпрограммы)

Теперь вам остается примерно рассчитать дистанцию движения по Х и скорость движения оси шпинделя, чтобы совместить. Во всяком случае это должно сработать сразу с ходу.. Когда=то была похожая задача и пришлось долго долбаться.. А нужная ось все никак не запускалась, пока не приедет другая

alexandr_st+
Для того чтобы вернуть медленную ось обратно c с движением по циклу делаем так

M3 S100 (включаем ось шпинделя со скоростью 100)

M98 P0001 Q100 (переход к подпрограмме с повторением 100 раз)

M5 (выключаем шпинденль)

M4 S100 (движение шпинделя в обратном направлении)

M98 P0001 Q100

M5

M30 (возврат в начало программы)




O0001 (обозначение текста подпрограммы)

G1 X10 F200 (движение по второй оси с заданной скоростью)

G1 X0 F400 (возврат в 0)

G90 (переход в абсолютные координаты)

M99 (выход из подпрограммы)

shisik
alexandr_st, огромное спасибо за такой подробный ответ. В понедельник попробую :)
Orly
Любопытная задача. А просто задать серию маленьких перемещений не подходит?
Типа:
g1 x10 z10
x20 z0
x30 z10

и т.д.? можно через цикл и переменные записать, тут простая арифметика.
Моталку что ли проектируете? :)
alexandr_st+
Цитата(Orly @ 11.11.2011, 22:46) *
Любопытная задача. А просто задать серию маленьких перемещений не подходит?
Типа:
g1 x10 z10
x20 z0
x30 z10
и т.д.? можно через цикл и переменные записать, тут простая арифметика.

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

у вас к примеру есть небольшой самодельный шлифовальный станочек средненькой жесткости. Представляете, какие у вас будут зарезы и почернения в местах остановок? Да и как прогу составить? Малейшее непопадание и редактирование кода превратится в большой гемор. У меня была когда-то очередная безумная идея сляпать электрохимическую установочку. Пока что все встало по причине сложностей с изготовлением механики. Но второй вопрос - программная часть. Нужен виброрежим. Как заставить ось двигаться как бабочку - два шага назад и три вперед. Причем шаги в микронном диапазоне с частотой 50 Гц. Под такую задачу G код редактировать жизни не хватит. Конечно же идеи есть и вопрос можно сказать решен, но опять же переходом на нормальную полноценную систему. Либо же под отдельную ось нужен автономный контроллер типа PLC, но с обратной связью или, хотя бы, отдельный программируемый шагодрайвер( если делать на шаговиках). Конечно проще всего такую систему сляпать на паре японских серводрайверов с возможностью программирования движения по точкам.


shisik
Цитата(alexandr_st @ 12.11.2011, 7:01) *
Остановка, разгон торможение... Не для всех задач годится такой метод, тем более что задача состоит именно в одновременном движении и насколько я понял, что медленной оси оно должно быть непрерывным.

у вас к примеру есть небольшой самодельный шлифовальный станочек средненькой жесткости. Представляете, какие у вас будут зарезы и почернения в местах остановок? Да и как прогу составить? Малейшее непопадание и редактирование кода превратится в большой гемор. У меня была когда-то очередная безумная идея сляпать электрохимическую установочку. Пока что все встало по причине сложностей с изготовлением механики. Но второй вопрос - программная часть. Нужен виброрежим. Как заставить ось двигаться как бабочку - два шага назад и три вперед. Причем шаги в микронном диапазоне с частотой 50 Гц. Под такую задачу G код редактировать жизни не хватит. Конечно же идеи есть и вопрос можно сказать решен, но опять же переходом на нормальную полноценную систему. Либо же под отдельную ось нужен автономный контроллер типа PLC, но с обратной связью или, хотя бы, отдельный программируемый шагодрайвер( если делать на шаговиках). Конечно проще всего такую систему сляпать на паре японских серводрайверов с возможностью программирования движения по точкам.

Вот как раз это и есть шлифовальный станок :) Поэтому последовательность действий не рассматривается, нужно одновременное движение по осям, по одной из них непрерывное.

Да, еще вопрос. По посту выше я понял что надо задать одну из осей как шпиндель, собсна как в таком случае настоящий шпиндель запустить?
Orly
shisik
Просто замкнув автомат не получится?

alexandr_st
На работе есть станок с ЧПУ Sinumeric, там есть интересная функция look ahead, она как раз в такой ситуации устраняер разгон/торможения и делает движения по возможности с постоянной скоростью.
А такого типа программы, где много повторяющихся движений я записываю через переменные.
например:
R1=10
R2=5
N10 G1 Z10 X=R1
R1=R1+10
Z0 X=R1
R2=R2-1
IF R2>0 GOTOB N10

Это примерно тоже что я ниже выше написал, только теперь, чтобы отредактировать количество и величину перемещений нужно поправить только переменные R1 и R2.
Или это все не реально на самодельных станках?
Orly
Автомат - в смысле пускатель, извиняюсь.
alexandr_st+
Цитата(Orly @ 13.11.2011, 20:03) *
shisik
Просто замкнув автомат не получится?

alexandr_st
На работе есть станок с ЧПУ Sinumeric, там есть интересная функция look ahead, она как раз в такой ситуации устраняер разгон/торможения и делает движения по возможности с постоянной скоростью.
А такого типа программы, где много повторяющихся движений я записываю через переменные.
например:
R1=10
R2=5
N10 G1 Z10 X=R1
R1=R1+10
Z0 X=R1
R2=R2-1
IF R2>0 GOTOB N10

Это примерно тоже что я ниже выше написал, только теперь, чтобы отредактировать количество и величину перемещений нужно поправить только переменные R1 и R2.
Или это все не реально на самодельных станках?


Orly, то что у вас на работе, это понятно, но здесь форум не САПР2000 и основная публика пользователи Мач3 или ЕМС2. Расписывать степень иуглубленность своих знаний смысла нет, т.к Мач просто не поймет нужных вам команд. Я попытался перегнать ваш код в удобочитаемый для Мача -
N1 #1=10
N2 #2=5
N10 G1 Z10 X[#1]
N11 #1=[[#1]+10]
N12 Z0 X[#1]
N13 #2=[[#2]-1]
N14 IF [#2]>0 GOTO N10

и вроде бы читается пока не доходит до условия IF GOTO. Попробуйте сам. Вот здесь явно вылазит урезанность хоббийного ПО. А на Синумерике любой сможет. Я, например, на своем Turbo PMAC (заметьте, не дядином, а своем личном) могу такое завернуть, что Синумерику в программной части и не снилось, при этом управляя 16ю станками с вращающимися координатными системами, по 8 приводов на каждую координатную систему.. Но вопрос стоит как выйти из ситуации при помощи того, что имеем, потому как не у каждого дома Синумерик в личном пользовании. А Look Ahead это у Мача стандартно и вроде работает неплохо.

Цитата
Да, еще вопрос. По посту выше я понял что надо задать одну из осей как шпиндель, собсна как в таком случае настоящий шпиндель запустить?

В Маче к командам М3,М4 в настройках Порт/пин можно подцепить реле, которое будет запускать ваш шпиндель. Единственное, перед перед основным кодом перехода к подпрограмме (M98 P0001) добавьте команду
G4 P2 (задержка 2 секунды для разгона настоящего шпинделя)
Секунды сами выставите по усмотрению
shisik
Прошу прощения за глупые вопросы, но как сконфигурировать ось Y в качестве шпинделя? Вот так сейчас выглядят мои настройки

mycnc
Цитата(Orly @ 13.11.2011, 22:03) *
На работе есть станок с ЧПУ Sinumeric, там есть интересная функция look ahead, она как раз в такой ситуации устраняет разгон/торможения и делает движения по возможности с постоянной скоростью.

Любопытно. Это настолько очевидная функция. Я думал она присутствует в системах типа Мач/ЕМЦ.
А как в Маче установить - надо тормозить в конце кадра или нет?
AlexSpb
присутствует,настраивается.в генерал конфиг
mycnc
Цитата(AlexSpb @ 14.11.2011, 11:24) *
присутствует,настраивается.в генерал конфиг

А тогда в чем проблемы у автора топика?
Пару G-кодов загнать в цикл. Даже если это последовательное выполнение, то при одинаковой длине и без торможений это будет эквивалентно единому перемещению по одной из осей с постоянной скоростью.

Или я что-то не понимаю?
Orly
mycnc
вот и мне это интересно.

alexandr_st
Уважаемый. Я не в коем случае не "расписываю степень и углубленность своих знаний". Mach начал изучать дня три назад, так что конкретный G код для него я написать не могу. Поэтому и написал как умею.
Мне самому интересно узнать возможности мача. Не верю что в маче нет возможности создать цикл со счетчиком хотя бы. Думаю что и команда условного перехода тоже должна быть.
alexandr_st+
Цитата
Не верю что в маче нет возможности создать цикл со счетчиком хотя бы. Думаю что и команда условного перехода тоже должна быть.


Orly, если вам удастся разрешить эту проблемму и вы поделитесь результатами со страждущими, буду премного вам благодарен. Я в свое время очень много часов ухлопал в попытках приблизиться или обойти другим путем работу с условными переходами, в том числе написанием скриптов. Возможно в моем скудном мозгу просто недостаточно знаний для работы с тем же Мач, но к сожалению нужного результата так и не получил. Бился над этой проблеммой для своего заточного станка. Разработчики спец софта завернули $25000, Конечно такой расклад пока не по карману и приходится изворачиваться своими силами. Сложность как раз при работе со спиралями, циклы с заглублениями и вращением поворотной оси + коррекции данных от щупов и смещениями на следующую спираль, иногда с одновременным движением по 5ти осям. Конечно без переменных здесь просто никак не обойтись и условные переходы просто жизненная необходимость.
А в примере со шлифовкой, конечно проще заколбасить свой скрипт, который при запуске будет запрашивать исходные данные и затем автоматически генерить УП, тем более что все сводится, насколько я понял, к работе зигзагом и, возможно, небольшим заглублением по Z и переходом на новый цикл. Не самая сложная задача. А начинающему пользователю заморачиваться на написании кода вручную и его редактировании, при надобности, осилить самостоятельно не так просто.Да и нужно ли для шлифовки такие сложности, если достаточно одного единственного скрипта.
Orly
Спасибо за развернутый ответ. Познавательно.
Очень жаль что на маче нет условных переходов - крайне полезная штука.

Возвращаясь к теме, получается два простых способа решения поставленной задачи. Первый - написать скрипт, как вы предложили, и второй - использовать в g коде цикл и look ahead. Верно?
Тут уже кому что проще, я вот скрипты писать не умею - мне проще цикл придумать.
[с опаской] Надеюсь цикл со счетчиком в маче есть?
alexandr_st+
Цитата(shisik @ 14.11.2011, 8:22) *
Прошу прощения за глупые вопросы, но как сконфигурировать ось Y в качестве шпинделя?

Номера пинов и галки с оси Y перекидываешь на строчку с надписью Spindle. В предпоследней вкладке Spindle Setup под Motor control ставишь галку возле Step/dir Motor.
Где-то в начале кода добавь пару строчек
G17 G90 G54 G49 G40 G80 G50
G21
G64


G64 запиши обязательно, тода не будет тормозить при реверсе, а сразу пойдет в обратную сторону

Orly, гляньте там постами выше я писал пример кода с переходом к подпрограмме. Там есть строчка M98 P0001 Q100 - Q 100 это и есть счетчик. Есть правда одна загвоздка - если остановить станок вовремя выполнения кода и в этот момент бегут строчки подпрограммы, то дальше продолжить выполнение кода уже проблемматично, нужно возвращаться в нули и перезапускаться по новой. Правда, у тех кто дружит с кнопкой HOLD, должно быть все нормально. В моем случае только Stop или E-Stop, не дай бог впороть чужую фрезу )))



shisik
Цитата(alexandr_st @ 15.11.2011, 7:45) *
Номера пинов и галки с оси Y перекидываешь на строчку с надписью Spindle. В предпоследней вкладке Spindle Setup под Motor control ставишь галку возле Step/dir Motor.
Где-то в начале кода добавь пару строчек
G17 G90 G54 G49 G40 G80 G50
G21
G64


G64 запиши обязательно, тода не будет тормозить при реверсе, а сразу пойдет в обратную сторону





Что-то не выходит.. Вроде все как вы сказали настроил, запускаю шпиндель для теста через M3 S1000, но реакции никакой.
alexandr_st+
В настройках двигателей шпиндель бы тоже сконфигурировать нелишне было бы, не забудьте нажать Save axis settings

Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.