Циклы в G-коде.

Аватара пользователя
putman
Мастер
Сообщения: 925
Зарегистрирован: 21 янв 2013, 09:49
Репутация: 100
Настоящее имя: Алексей
Откуда: г. Долгопрудный
Контактная информация:

Re: Циклы в G-коде.

Сообщение putman »

Посмотрел ссылки, подпрограммы понял, спасибо, за цикл прокатит.
Но вопрос остаётся.

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

#1=10
G0 x#1 y10
#2=#1+1
G0 x#2 y#1
Вот нашел наконец переменные, но на 3-й строке ошибка, не хочет увеличивать на 1.
Как увеличить-уменьшить переменную в коде ?
Аватара пользователя
putman
Мастер
Сообщения: 925
Зарегистрирован: 21 янв 2013, 09:49
Репутация: 100
Настоящее имя: Алексей
Откуда: г. Долгопрудный
Контактная информация:

Re: Циклы в G-коде.

Сообщение putman »

АЛИЛУЙА !!!!1 Нашел, мать драть, 3 часа копания в гугле всего лишь для того что бы понять как сложить 2 переменные.
И то, явно не нашел, стал по всякому пробывать (благо по информатике в школе 3 честная была) складывать.
Вот так работает:

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

#1=10
G0 x#1 y10
#2=[#1+1]
G0 x#2 y#1
Требуется заключать выражение в квадратные скобки.
nik1
Мастер
Сообщения: 8408
Зарегистрирован: 02 окт 2012, 07:37
Репутация: 3628
Откуда: Красногорск
Контактная информация:

Re: Циклы в G-коде.

Сообщение nik1 »

Сложная арифметика :)
Кам попроще освоить
Аватара пользователя
putman
Мастер
Сообщения: 925
Зарегистрирован: 21 янв 2013, 09:49
Репутация: 100
Настоящее имя: Алексей
Откуда: г. Долгопрудный
Контактная информация:

Re: Циклы в G-коде.

Сообщение putman »

nik1 писал(а):Сложная арифметика :)
Кам попроще освоить
Не думаю =)
nik1
Мастер
Сообщения: 8408
Зарегистрирован: 02 окт 2012, 07:37
Репутация: 3628
Откуда: Красногорск
Контактная информация:

Re: Циклы в G-коде.

Сообщение nik1 »

Кому как :)
Аватара пользователя
Алексс
Почётный участник
Почётный участник
Сообщения: 2210
Зарегистрирован: 20 июл 2012, 15:49
Репутация: 266
Заслуга: IQ32
Настоящее имя: Алексей
Откуда: Прага
Контактная информация:

Re: Циклы в G-коде.

Сообщение Алексс »

nik1 писал(а):Кам попроще освоить
иногда ручное программирование очень полезно.
например задача: полировка полого цилиндра.
нужно крутить шпиндель и ездить вверх вниз несколько сотен раз.
в каме такого не сделать. а ручками - 5 минут.

ну и тп.
Каждая собака, бегущая на поводке впереди хозяина, думает, что ведет его за собой.
Аватара пользователя
putman
Мастер
Сообщения: 925
Зарегистрирован: 21 янв 2013, 09:49
Репутация: 100
Настоящее имя: Алексей
Откуда: г. Долгопрудный
Контактная информация:

Re: Циклы в G-коде.

Сообщение putman »

Вот какой код получается для цикла, фреза начинает с координат x0.y0, и движется к x2.y2, потом к 4.4, и так далее до 38.38.

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

#1 = 0
M98 P1 L20
M30

O1
G00 X#1 Y#1
#1 = [#1 + 2]
M99 
Всем спасибо, вопрос решен.
nik1
Мастер
Сообщения: 8408
Зарегистрирован: 02 окт 2012, 07:37
Репутация: 3628
Откуда: Красногорск
Контактная информация:

Re: Циклы в G-коде.

Сообщение nik1 »

Спорить не буду, ручное программирование конечно важно уметь делать.

А как подход по дуге прописать, да еще с снижением скорости ?
В каме делов на 10 секунд :) ...
Аватара пользователя
michael-yurov
Почётный участник
Почётный участник
Сообщения: 11626
Зарегистрирован: 26 июл 2012, 00:10
Репутация: 4634
Настоящее имя: Михаил Львович
Откуда: Новоуральск
Контактная информация:

Re: Циклы в G-коде.

Сообщение michael-yurov »

Сегодня нужно было у прямоугольника одну сторону на миллиметр уменьшить за 2-3 прохода.
Стал вписывать команды вручную
Перепутал оси, забыл задать скорость подачи для G1, перепутал положение нуля, забыл включить шпиндель, не смог остановить выполнение команды.
В общем - накосячил везде, где только можно, заготовку испортил.
Вот оно, как бывает с непривычки...
Аватара пользователя
putman
Мастер
Сообщения: 925
Зарегистрирован: 21 янв 2013, 09:49
Репутация: 100
Настоящее имя: Алексей
Откуда: г. Долгопрудный
Контактная информация:

Re: Циклы в G-коде.

Сообщение putman »

Я понимаю, что сложные детали придётся делать в солидворке, но простые хочу научиться сам, так сказать быть ближе к станку =)
По этому первое моё хобби программирование и не на каких нибудь сях и т.п., а на ассемблере, чем ближе к железу тем лучше.
Аватара пользователя
Сергей Саныч
Мастер
Сообщения: 9116
Зарегистрирован: 30 май 2012, 14:20
Репутация: 2857
Откуда: Тюмень
Контактная информация:

Re: Циклы в G-коде.

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

putman писал(а):не на каких нибудь сях и т.п., а на ассемблере, чем ближе к железу тем лучше
Воистину так :) Но Си тоже вещь полезная. Хотя МК я программирую (пока) исключительно на ассемблере.
Кстати, а что может быть ближе к железу (в прямом смысле), чем G-код?

Иногда вот так приходится изгаляться :) (кусочек кода для TurboCNC)
(для просмотра содержимого нажмите на ссылку)

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

N101
; Обход по контуру большой кнопки сферической фрезой
#53 = [#5+#15] ; Смещение точки отсчета на центр большой кнопки
G00 X[#53-8.75] Y[#6+2.9786]
G01 Z[#9-(3.85+1.15)] F[#1300/3.]
G02 X[#53-8.3427] Y[#6+3.4699] R[1.5-#13] F[#1300]
G02 X[#53+8.3427] Y[#6+3.4699] R[46.-#13]
G02 X[#53+8.75] Y[#6+2.9786] R[1.5-#13]
G01 Y[#6-2.9786] F[#1300/3.]
G02 X[#53+8.3427] Y[#6-3.4699] R[1.5-#13] F[#1300/2.]
G02 X[#53-8.3427] Y[#6-3.4699] R[46.-#13]
G02 X[#53-8.75] Y[#6-2.9786] R[1.5-#13]
G01 Y[#6+2.9786] F[#1300/3.]
G00 Z[#9+0.]
; Штриховка хордами
; #5001 - радиус дуги хорды
; #5002 - шаг штриховки
; #5003 - половина длины хорды
; #5004 - высота сегмента
; #5005 - Z
; #5006 - радиус цилиндра
#5002=0.1
#5004=0.
#5006=20.
#5010=0.1 ; Недоход до стенок
#5001=[46.-#13-#5010]
N55 M98 O5007
G00 X[#53+0.] Y[#6+5.25-#13-#5010] ; Начало
G01 Z[#9-(3.85+1.15)] F[#1300/2.]
N51
#5004=[#5004+#5002]
#5008=#5004
IF #5004 GT [5.25-#13-#5010] #5008=[(5.25-#13-#5010)*2-#5004]
#5009=[2.*#5001*#5008-SQR(#5008)]
IF #5009 LT 0. M97 O53 ; Выход во избежание SQRT(<0)
IF #5009 GE 0. #5003=[SQRT(#5009)] ; это из-за глюка TCNC
N57 M98 O5005
IF #5003 GT [9.75-#13-#5010] #5003=[9.75-#13-#5010]
G01 X[#53-#5003] Y[#6+5.25-#13-#5010-#5004] Z[#9+#5005] F[#1300/2.]
#5004=[#5004+#5002]
#5008=#5004
IF #5004 GT [5.25-#13-#5010] #5008=[(5.25-#13-#5010)*2-#5004]
#5009=[2.*#5001*#5008-SQR(#5008)]
IF #5009 LT 0. M97 O53 ; Выход во избежание SQRT(<0)
IF #5009 GE 0. #5003=[SQRT(#5009)] ; это из-за глюка TCNC
N56 M98 O5005
IF#5003 GT [9.75-#13-#5010] #5003=[9.75-#13-#5010]
G01 X[#53+#5003] Y[#6+5.25-#13-#5010-#5004] Z[#9+#5005]
M97 O51
N53

G00 Z[#9+1.]
Чудес не бывает. Бывают фокусы.
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: Циклы в G-коде.

Сообщение nkp »

putman писал(а):3 часа копания в гугле всего лишь для того что бы понять как сложить 2 переменные.
как по мне - полезней посмотреть-проанализировать примеры...
там и ifы и while и др.
Аватара пользователя
putman
Мастер
Сообщения: 925
Зарегистрирован: 21 янв 2013, 09:49
Репутация: 100
Настоящее имя: Алексей
Откуда: г. Долгопрудный
Контактная информация:

Re: Циклы в G-коде.

Сообщение putman »

nkp писал(а):
putman писал(а):3 часа копания в гугле всего лишь для того что бы понять как сложить 2 переменные.
как по мне - полезней посмотреть-проанализировать примеры...
там и ifы и while и др.
Я не смог ничего найти про циклы, уж не знаю как но не смог.
Аватара пользователя
putman
Мастер
Сообщения: 925
Зарегистрирован: 21 янв 2013, 09:49
Репутация: 100
Настоящее имя: Алексей
Откуда: г. Долгопрудный
Контактная информация:

Re: Циклы в G-коде.

Сообщение putman »

Serg-tmn писал(а):
putman писал(а):не на каких нибудь сях и т.п., а на ассемблере, чем ближе к железу тем лучше
Воистину так :) Но Си тоже вещь полезная. Хотя МК я программирую (пока) исключительно на ассемблере.
Кстати, а что может быть ближе к железу (в прямом смысле), чем G-код?

Иногда вот так приходится изгаляться :) (кусочек кода для TurboCNC)
(для просмотра содержимого нажмите на ссылку)

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

N101
; Обход по контуру большой кнопки сферической фрезой
#53 = [#5+#15] ; Смещение точки отсчета на центр большой кнопки
G00 X[#53-8.75] Y[#6+2.9786]
G01 Z[#9-(3.85+1.15)] F[#1300/3.]
G02 X[#53-8.3427] Y[#6+3.4699] R[1.5-#13] F[#1300]
G02 X[#53+8.3427] Y[#6+3.4699] R[46.-#13]
G02 X[#53+8.75] Y[#6+2.9786] R[1.5-#13]
G01 Y[#6-2.9786] F[#1300/3.]
G02 X[#53+8.3427] Y[#6-3.4699] R[1.5-#13] F[#1300/2.]
G02 X[#53-8.3427] Y[#6-3.4699] R[46.-#13]
G02 X[#53-8.75] Y[#6-2.9786] R[1.5-#13]
G01 Y[#6+2.9786] F[#1300/3.]
G00 Z[#9+0.]
; Штриховка хордами
; #5001 - радиус дуги хорды
; #5002 - шаг штриховки
; #5003 - половина длины хорды
; #5004 - высота сегмента
; #5005 - Z
; #5006 - радиус цилиндра
#5002=0.1
#5004=0.
#5006=20.
#5010=0.1 ; Недоход до стенок
#5001=[46.-#13-#5010]
N55 M98 O5007
G00 X[#53+0.] Y[#6+5.25-#13-#5010] ; Начало
G01 Z[#9-(3.85+1.15)] F[#1300/2.]
N51
#5004=[#5004+#5002]
#5008=#5004
IF #5004 GT [5.25-#13-#5010] #5008=[(5.25-#13-#5010)*2-#5004]
#5009=[2.*#5001*#5008-SQR(#5008)]
IF #5009 LT 0. M97 O53 ; Выход во избежание SQRT(<0)
IF #5009 GE 0. #5003=[SQRT(#5009)] ; это из-за глюка TCNC
N57 M98 O5005
IF #5003 GT [9.75-#13-#5010] #5003=[9.75-#13-#5010]
G01 X[#53-#5003] Y[#6+5.25-#13-#5010-#5004] Z[#9+#5005] F[#1300/2.]
#5004=[#5004+#5002]
#5008=#5004
IF #5004 GT [5.25-#13-#5010] #5008=[(5.25-#13-#5010)*2-#5004]
#5009=[2.*#5001*#5008-SQR(#5008)]
IF #5009 LT 0. M97 O53 ; Выход во избежание SQRT(<0)
IF #5009 GE 0. #5003=[SQRT(#5009)] ; это из-за глюка TCNC
N56 M98 O5005
IF#5003 GT [9.75-#13-#5010] #5003=[9.75-#13-#5010]
G01 X[#53+#5003] Y[#6+5.25-#13-#5010-#5004] Z[#9+#5005]
M97 O51
N53

G00 Z[#9+1.]
Вставил Ваш код в мач3, ругается, я уже обрадовался, смотрю условия есть, думаю пригодиться, ан нет.
Как найти полный список команд логические, арифметические, сравнения, цикла, перехода и т.п. для мач3 ? не могу и всё тут.
Как у Вас этот код заработал ? у меня сразу ругает.
Аватара пользователя
Сергей Саныч
Мастер
Сообщения: 9116
Зарегистрирован: 30 май 2012, 14:20
Репутация: 2857
Откуда: Тюмень
Контактная информация:

Re: Циклы в G-коде.

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

putman писал(а):Как у Вас этот код заработал ? у меня сразу ругает.
я же говорю - этот код для TurboCNC. В Маче, скорее всего, есть серьезные отличия. В LinuxCNC - тоже, но там хоть описание есть. А про Мач не знаю, никогда с ним не работал.
Чудес не бывает. Бывают фокусы.
Аватара пользователя
putman
Мастер
Сообщения: 925
Зарегистрирован: 21 янв 2013, 09:49
Репутация: 100
Настоящее имя: Алексей
Откуда: г. Долгопрудный
Контактная информация:

Re: Циклы в G-коде.

Сообщение putman »

Мне пока достаточно циклов =)
Сделаю деталь и буду учить КАМ.
Аватара пользователя
putman
Мастер
Сообщения: 925
Зарегистрирован: 21 янв 2013, 09:49
Репутация: 100
Настоящее имя: Алексей
Откуда: г. Долгопрудный
Контактная информация:

Re: Циклы в G-коде.

Сообщение putman »

Заметил странности когда работаешь с переменными.
Иногда код до конца не отрабатывается, например цикл не 10 раз исполнится, а 6, запускаю программу заново, норм работает.
Переменная определена одним значением, а при выполнении фреза едет в другое место, перезапускаю заново, и всё правильно работает.
Это жесть !!! Не вижу тогда смысла писать программы в ручную, придётся учить солидворк раз мач творить всё что пожелает.
Аватара пользователя
tooshka
Почётный участник
Почётный участник
Сообщения: 1803
Зарегистрирован: 24 окт 2012, 14:26
Репутация: 209
Настоящее имя: Андрей
Откуда: Нижний Новгород
Контактная информация:

Re: Циклы в G-коде.

Сообщение tooshka »

putman писал(а):раз мач творить всё что пожелает.
Может мач на свалку)) ??
Милая, ты услышь меня
под окном стою со своим я ЧПУ! (Протяжно; с надрывом; форте)
Внимание!!! Чрезмерное увлечение ЧПУ приводит к проблемам в семейных отношениях!
Аватара пользователя
Сергей Саныч
Мастер
Сообщения: 9116
Зарегистрирован: 30 май 2012, 14:20
Репутация: 2857
Откуда: Тюмень
Контактная информация:

Re: Циклы в G-коде.

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

tooshka писал(а):Может мач на свалку)) ??
когда я только начинал работать с ЧПУ (лет 7 назад), купили реабиновский станочек, с ним в комплекте шел CD с Мачем (версию не помню). Поставил его, всё заработало, но как! двигатели при движении не пели, а шипели, станок выше 100 мм/мин не разгонялся. Никакие настройки не помогали (компьютер был не помню какой, но по тем временам достаточно современный). Быстренько набросал программку генерации шагов - движки с ней заработали как надо, скорость увеличилась раз в 5-6. Понял - дело в Маче. Или в Windows. После длительных поисков остановился на TurboCNC. С ней все заработало нормально даже на скромном Pentium-100. И до сих пор работает, хотя для нового станка осваиваю LinuxCNC. Вместе с линуксом. Возвращаться к Мачу желания ни разу не возникало, хотя, может быть, новые версии и получше.
Последний раз редактировалось Сергей Саныч 24 апр 2013, 12:11, всего редактировалось 1 раз.
Чудес не бывает. Бывают фокусы.
aftaev
Зачётный участник
Зачётный участник
Сообщения: 34042
Зарегистрирован: 04 апр 2010, 19:22
Репутация: 6192
Откуда: Казахстан.
Контактная информация:

Re: Циклы в G-коде.

Сообщение aftaev »

putman писал(а):Это жесть !!! Не вижу тогда смысла писать программы в ручную, придётся учить солидворк раз мач творить всё что пожелает.
код выложи целиком на своем лицензионном Маче испробую.
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
Ответить

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