Генерация G-кода, из текста, рисунка, и файлов PLT, DXF

Mach, популярные и не очень CAD, CAM. Обсуждение и разработка программ для управления станками.
Аватара пользователя
selenur
Почётный участник
Почётный участник
Сообщения: 4605
Зарегистрирован: 21 авг 2013, 19:44
Репутация: 1622
Настоящее имя: Сергей
Откуда: Новый Уренгой
Контактная информация:

Re: Программа генерации G-кода, из текста, рисунка, PLT файл

Сообщение selenur »

staltech писал(а):
Как видите файлы от версии GRBL v0.9j не подойдут для версии GRBL v1.1d
Программ генерации g кода для построчной лазерной гравировки с управлением мощностью почти нет, по крайней мере для GRBL.
Эта функция есть в PicSender Pro, это американская прога и она платная. Есть еще очень закрытая прога у одного форумчанина, я больше для GRBL не знаю. Может не сильно искал.
Для генерации g кода можно в программе использовать калибровочную таблицу, с последующей линейной интерполяцией промежуточных значений мощности.
Можно использовать несколько таблиц для разных материалов. MAX3000 по моему ты об этом уже писал.
Плюс GRBL 1.1 позволяет в реальном времени корректировать скорость и мощность.

Исходники с файлом прошивки hex версия GRBL 1.1d от 13.11.2016 для Arduino Mega 2560. Внимание с механикой не проверялось!!!
grbl-edge-mega.zip
Сейчас есть 2 алгоритма генерации выжигания точками, туда-же добавлю и построчную генерацию, но нужно определиться с первоочередными вариантами, и разобраться как правильно генерировать строки с g-командами, с расчетом на новую прошивку.
Мой сайт: http://selenur.ru
Исходники моих программ: https://github.com/selenur
Instagram https://www.instagram.com/zheigurov/
Аватара пользователя
staltech
Почётный участник
Почётный участник
Сообщения: 544
Зарегистрирован: 01 июл 2016, 22:50
Репутация: 155
Настоящее имя: Сергей
Откуда: Пензенская обл., г. Никольск
Контактная информация:

Re: Программа генерации G-кода, из текста, рисунка, PLT файл

Сообщение staltech »

Как я понял из тестов, команда S должна находится в одном кадре(строке) с координатами. Главное начать а там посмотрим, тестировать вроде пока есть кому.
Лично моя просьба изменить начало обхода пикселей, что бы координаты шли от X0 Y0, но это просто просьба.
Аватара пользователя
staltech
Почётный участник
Почётный участник
Сообщения: 544
Зарегистрирован: 01 июл 2016, 22:50
Репутация: 155
Настоящее имя: Сергей
Откуда: Пензенская обл., г. Никольск
Контактная информация:

Re: Программа генерации G-кода, из текста, рисунка, PLT файл

Сообщение staltech »

Вот это правильный вариант, но желательно сделать корректировочную таблицу в связи с нелинейностью.
Screenshot_40.jpg (4875 просмотров) <a class='original' href='./download/file.php?id=94707&mode=view' target=_blank>Загрузить оригинал (226.06 КБ)</a>
Последний раз редактировалось staltech 13 ноя 2016, 15:37, всего редактировалось 1 раз.
MAX3000
Опытный
Сообщения: 107
Зарегистрирован: 17 дек 2015, 11:12
Репутация: 18
Настоящее имя: MaX
Контактная информация:

Re: Программа генерации G-кода, из текста, рисунка, PLT файл

Сообщение MAX3000 »

selenur писал(а):Сейчас есть 2 алгоритма генерации выжигания точками, туда-же добавлю и построчную генерацию, но нужно определиться с первоочередными вариантами, и разобраться как правильно генерировать строки с g-командами, с расчетом на новую прошивку.
selenur, для новой прошивки GRBL v1.1d - ЭТО ВАЖНО!
Тесты показали, что для GRBL v1.1d команды перемещения, мощности и включения лазера должны передаваться одной строкой:

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

G1 X10 S1000 M3
G1 X20 S900
G1 X30 S800
G1 X40 S700
G1 X50 S600
G1 X60 S500
G1 X70 S400
G1 X80 S300
G1 X90 S200
G1 X100 S100
M5
Такой код дает отличный результат. На картинках хорошо видно разницу.
Аватара пользователя
selenur
Почётный участник
Почётный участник
Сообщения: 4605
Зарегистрирован: 21 авг 2013, 19:44
Репутация: 1622
Настоящее имя: Сергей
Откуда: Новый Уренгой
Контактная информация:

Re: Программа генерации G-кода, из текста, рисунка, PLT файл

Сообщение selenur »

переделаю под такой вариант
Мой сайт: http://selenur.ru
Исходники моих программ: https://github.com/selenur
Instagram https://www.instagram.com/zheigurov/
Аватара пользователя
Rom327
Почётный участник
Почётный участник
Сообщения: 2989
Зарегистрирован: 03 апр 2015, 13:23
Репутация: 437
Настоящее имя: Роман
Откуда: Подольск
Контактная информация:

Re: Программа генерации G-кода, из текста, рисунка, PLT файл

Сообщение Rom327 »

MAX3000 писал(а): Тесты показали, что для GRBL v1.1d команды перемещения, мощности и включения лазера должны передаваться одной строкой:

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

G1 X10 S1000 M3
G1 X20 S900
G1 X30 S800
G1 X40 S700
G1 X50 S600
G1 X60 S500
G1 X70 S400
G1 X80 S300
G1 X90 S200
G1 X100 S100
M5
Такой код дает отличный результат. На картинках хорошо видно разницу.
А зачем в каждой строке писать ''G1''? Если скорость постоянная, то достаточно только вначале программы указать скорость G1 F***...
Это сугубо мое мнение, могу и ошибаться...
https://vk.com/rom327
GRBL настройки: http://blogandbux.blogspot.com/2018/07/ ... revod.html
G коды: http://3d-stanki.ru/spravochnik/program ... stankov-2/
Аватара пользователя
xvovanx
Мастер
Сообщения: 3772
Зарегистрирован: 25 фев 2016, 12:27
Репутация: 920
Настоящее имя: Владимир
Откуда: Latvia
Контактная информация:

Re: Программа генерации G-кода, из текста, рисунка, PLT файл

Сообщение xvovanx »

Вечер добрый!
Уважаемый Selenur, а можно в програмку добавить (как было в старый версиях) - выбор: фрезеровка/прожиг. А то в Г-коде при фрезеровке отсутствует напрочь Z координата и весь текст идет "слитно" без подъема фрезы. Прога получается ориентирована чисто на лазер... :cry:
И 'косячок' выскакивает при работе с растром
Вложения
Gkod.jpg (4846 просмотров) <a class='original' href='./download/file.php?id=94732&mode=view' target=_blank>Загрузить оригинал (351.35 КБ)</a>
Error.jpg (4839 просмотров) <a class='original' href='./download/file.php?id=94733&mode=view' target=_blank>Загрузить оригинал (203.26 КБ)</a>
Аватара пользователя
selenur
Почётный участник
Почётный участник
Сообщения: 4605
Зарегистрирован: 21 авг 2013, 19:44
Репутация: 1622
Настоящее имя: Сергей
Откуда: Новый Уренгой
Контактная информация:

Re: Программа генерации G-кода, из текста, рисунка, PLT файл

Сообщение selenur »

xvovanx писал(а):Вечер добрый!
Уважаемый Selenur, а можно в програмку добавить (как было в старый версиях) - выбор: фрезеровка/прожиг. А то в Г-коде при фрезеровке отсутствует напрочь Z координата и весь текст идет "слитно" без подъема фрезы. Прога получается ориентирована чисто на лазер... :cry:
И 'косячок' выскакивает при работе с растром
По поводу поднятия, опускания, это делается путем добавления команд, при нажатии выделенных кнопок:
2016-11-13_234852.jpg (4834 просмотра) <a class='original' href='./download/file.php?id=94735&mode=view' target=_blank>Загрузить оригинал (428.37 КБ)</a>
Перед началом траектории необходимо добавить команду "Z0", или "Z-0.1" если нужно некоторое заглубление
При окончании траектории, нужно задать команду поднятия на безопасную высоту, например "Z5".
Если теперь нажать кнопку Генерация G-кода, то получишь нужный результат.
А при работе с растром что за косяк?
Мой сайт: http://selenur.ru
Исходники моих программ: https://github.com/selenur
Instagram https://www.instagram.com/zheigurov/
Аватара пользователя
selenur
Почётный участник
Почётный участник
Сообщения: 4605
Зарегистрирован: 21 авг 2013, 19:44
Репутация: 1622
Настоящее имя: Сергей
Откуда: Новый Уренгой
Контактная информация:

Re: Программа генерации G-кода, из текста, рисунка, PLT файл

Сообщение selenur »

А понял, проблема в незаполненных некоторых параметрах, перед генерацией, добавлю ещё проверки, на заполненность полей.
Мой сайт: http://selenur.ru
Исходники моих программ: https://github.com/selenur
Instagram https://www.instagram.com/zheigurov/
MAX3000
Опытный
Сообщения: 107
Зарегистрирован: 17 дек 2015, 11:12
Репутация: 18
Настоящее имя: MaX
Контактная информация:

Re: Программа генерации G-кода, из текста, рисунка, PLT файл

Сообщение MAX3000 »

selenur, еще для избежания поджигов по краям потушеный лазер (M5 или S0) должен выходить за линию печати на 1-3 мм (можно добавить поле для задания данной величины) для разгона двигателей - так называемая зона торможения разгона.
И еще по поводу команды M5 - скорее всего ее можно заменить командой S0, а M5 добавлять в самом конце файла.
Аватара пользователя
selenur
Почётный участник
Почётный участник
Сообщения: 4605
Зарегистрирован: 21 авг 2013, 19:44
Репутация: 1622
Настоящее имя: Сергей
Откуда: Новый Уренгой
Контактная информация:

Re: Программа генерации G-кода, из текста, рисунка, PLT файл

Сообщение selenur »

MAX3000 писал(а):selenur, еще для избежания поджигов по краям потушеный лазер (M5 или S0) должен выходить за линию печати на 1-3 мм (можно добавить поле для задания данной величины) для разгона двигателей - так называемая зона торможения разгона.
И еще по поводу команды M5 - скорее всего ее можно заменить командой S0, а M5 добавлять в самом конце файла.
Для примера, как должен выглядеть G-код?
Мой сайт: http://selenur.ru
Исходники моих программ: https://github.com/selenur
Instagram https://www.instagram.com/zheigurov/
MAX3000
Опытный
Сообщения: 107
Зарегистрирован: 17 дек 2015, 11:12
Репутация: 18
Настоящее имя: MaX
Контактная информация:

Re: Программа генерации G-кода, из текста, рисунка, PLT файл

Сообщение MAX3000 »

selenur писал(а):Для примера, как должен выглядеть G-код?
На картинках:
G0 - красный
G1 - зеленый
Вот так выглядит файл без зоны торможения-разгона - Test-S400.nc:
Test-S400.jpg (4799 просмотров) <a class='original' href='./download/file.php?id=94766&mode=view' target=_blank>Загрузить оригинал (45.3 КБ)</a>
У него край в увеличенном виде выглядит так:
Test-S400-Край.jpg (4799 просмотров) <a class='original' href='./download/file.php?id=94767&mode=view' target=_blank>Загрузить оригинал (178.79 КБ)</a>
А вот так выглядит файл с зоной торможения-разгона - Test-S400-AS.nc и Test-S400-AM.nc:
Здесь два варианта:
  • управление при помощи команд M3/M5 - файл Test-S400-AM.nc
  • управление при помощи команды S0 - файл Test-S400-AS.nc
Test-S400-AS-AM.jpg (4799 просмотров) <a class='original' href='./download/file.php?id=94768&mode=view' target=_blank>Загрузить оригинал (47.17 КБ)</a>
А край у него в увеличенном виде выглядит так:
Test-S400-AS-AM-Край.jpg (4799 просмотров) <a class='original' href='./download/file.php?id=94769&mode=view' target=_blank>Загрузить оригинал (194.17 КБ)</a>
Часть кода:
Test-S400.nc

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

G0 X0 Y0
G1 X10 S1000 M3
G1 X20 S900
G1 X30 S800
G1 X40 S700
G1 X50 S600
G1 X60 S500
G1 X70 S400
G1 X80 S300
G1 X90 S200
G1 X100 S100
M5
G0 X100 Y0.2
G1 X90 S100 M3
G1 X80 S200
G1 X70 S300
G1 X60 S400
G1 X50 S500
G1 X40 S600
G1 X30 S700
G1 X20 S800
G1 X10 S900
G1 X0 S1000
M5
Test-S400-AM.nc

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

G0 X-2 Y0
G0 X0
G1 X10 S1000 M3
G1 X20 S900
G1 X30 S800
G1 X40 S700
G1 X50 S600
G1 X60 S500
G1 X70 S400
G1 X80 S300
G1 X90 S200
G1 X100 S100
M5
G0 X102
G0 X102 Y0.2
G0 X100
G1 X90 S100 M3
G1 X80 S200
G1 X70 S300
G1 X60 S400
G1 X50 S500
G1 X40 S600
G1 X30 S700
G1 X20 S800
G1 X10 S900
G1 X0 S1000
M5
Здесь команда G0 Xxx Yxx заменяется командой G0 Xxx+/-2 Yxx, перед ней добавляется G0 Xxx+/-2, а после неё добавляется команда G0 Xxx.
2 - расстояние в мм, на которое будет выходить лазер, так называемая зона торможения-разгона (можно добавить поле для задание данной величины и еще добавить галочку для активации, может кому-то не нужна будет эта зона торможения-разгона).

Test-S400-AS.nc

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

G0 X-2 Y0
G0 X0
G1 X10 S1000
G1 X20 S900
G1 X30 S800
G1 X40 S700
G1 X50 S600
G1 X60 S500
G1 X70 S400
G1 X80 S300
G1 X90 S200
G1 X100 S100
S0
G0 X102
G0 X102 Y0.2
G0 X100
G1 X90 S100
G1 X80 S200
G1 X70 S300
G1 X60 S400
G1 X50 S500
G1 X40 S600
G1 X30 S700
G1 X20 S800
G1 X10 S900
G1 X0 S1000
S0
Здесь тоже что и в Test-S400-AM.nc, плюс команда M5 заменяется командой S0 (отстается только в конце) и команда M3 добавляется в начале программы, а по коду везде убирается.

Файлы примеров:
Test-S400-AS-AM.rar
(996 байт) 305 скачиваний
Последний раз редактировалось MAX3000 14 ноя 2016, 12:20, всего редактировалось 2 раза.
Аватара пользователя
selenur
Почётный участник
Почётный участник
Сообщения: 4605
Зарегистрирован: 21 авг 2013, 19:44
Репутация: 1622
Настоящее имя: Сергей
Откуда: Новый Уренгой
Контактная информация:

Re: Программа генерации G-кода, из текста, рисунка, PLT файл

Сообщение selenur »

Хорошо, добавлю в программу ;-)
Мой сайт: http://selenur.ru
Исходники моих программ: https://github.com/selenur
Instagram https://www.instagram.com/zheigurov/
arkhnchul
Мастер
Сообщения: 1773
Зарегистрирован: 01 фев 2016, 13:56
Репутация: 339
Откуда: москва
Контактная информация:

Re: Программа генерации G-кода, из текста, рисунка, PLT файл

Сообщение arkhnchul »

staltech писал(а):Программ генерации g кода для построчной лазерной гравировки с управлением мощностью почти нет, по крайней мере для GRBL.
https://github.com/arkhnchul/Inkscape

ЗЫ с управлением мощностью не факт что у меня в коде работает, проверить руки не доходят. В оригинале - https://github.com/305engineering/Inkscape - точно должно.
Аватара пользователя
selenur
Почётный участник
Почётный участник
Сообщения: 4605
Зарегистрирован: 21 авг 2013, 19:44
Репутация: 1622
Настоящее имя: Сергей
Откуда: Новый Уренгой
Контактная информация:

Re: Программа генерации G-кода, из текста, рисунка, PLT файл

Сообщение selenur »

Сейчас в процессе переделки, методики формирования G-кода, что-бы можно было самостоятельно, составлять формат наполнения:
Теперь файлы профиля, выглядят так:
Вариант 1:

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

# Настройка для лазерного выжигателя P - вариант #
"%"
"G90"
"S0"
"M5"
"G0 F400"

LINES
{
	"G0" [X.] [Y.]

	POINTS
	{
		[SKIP_FIRST_POINT]

		"M3" [X.!] [Y.!] "G4" [P]
		"M5"
	}
}

"G0 X0 Y0"
"M30"
"%"
Вариант 2:

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

# Настройка для лазерного выжигателя S - вариант #
"%"
"G90"
"S0"
"M5"
"G0 F400"
"G1 F400"

LINES
{
   "G0" [X.] [Y.]

   POINTS
   {
      [G1!] [X.] [Y.] [S] "M3"
   }
   "M5"
}

"G0 X0 Y0"
"M30"
"%"
Вариант 3:

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

# Настройка для фрезера #
"%"
"M3"
"G0 F400"
"G1 F400"
"G90 G10 L20 P0 X0 Y0 Z0"
"G0 X0 Y0 Z10"

LINES
{
   "G0" [X.] [Y.]
   "Z0"

   POINTS
   {
      [G1!] [X.] [Y.] [S] "M3"
   }

   "Z10"
}

"M5"
"G0 X0 Y0 Z10"
"M30"
"%"
Вот пример когда траектория одна и тоже, по профиль разный:
2016-11-19_022429.jpg (4681 просмотр) <a class='original' href='./download/file.php?id=95157&mode=view' target=_blank>Загрузить оригинал (469.39 КБ)</a>
2016-11-19_023104.jpg (4681 просмотр) <a class='original' href='./download/file.php?id=95158&mode=view' target=_blank>Загрузить оригинал (282.95 КБ)</a>
как вам такая реализация? :-)
Мой сайт: http://selenur.ru
Исходники моих программ: https://github.com/selenur
Instagram https://www.instagram.com/zheigurov/
MAX3000
Опытный
Сообщения: 107
Зарегистрирован: 17 дек 2015, 11:12
Репутация: 18
Настоящее имя: MaX
Контактная информация:

Re: Программа генерации G-кода, из текста, рисунка, PLT файл

Сообщение MAX3000 »

selenur, отлично!
Только во 2 варианте (S вариант) "M3" в каждой строке не нужны.
M3 - вставляется один раз в начале
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5183
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Программа генерации G-кода, из текста, рисунка, PLT файл

Сообщение Serg »

"The NIST RS274NGC Interpreter - Version 3" утверждает, что скорость может задаваться командой S в любом месте и в любое время, но реально она должна изменяться командами включения шпинделя (m3/m4).

Кстати, к моменту выполнения команд m3/m4/m5 станок должен полностью завершить движение по траектории, т.е. остановится. Т.о. код типа
g0 x0 y0
g1 x50 m3
g1 x100 m3
будет пройден с полной остановкой посередине.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
selenur
Почётный участник
Почётный участник
Сообщения: 4605
Зарегистрирован: 21 авг 2013, 19:44
Репутация: 1622
Настоящее имя: Сергей
Откуда: Новый Уренгой
Контактная информация:

Re: Программа генерации G-кода, из текста, рисунка, PLT файл

Сообщение selenur »

MAX3000 писал(а):selenur, отлично!
Только во 2 варианте (S вариант) "M3" в каждой строке не нужны.
M3 - вставляется один раз в начале
Это просто для примера пока ;-)
Мой сайт: http://selenur.ru
Исходники моих программ: https://github.com/selenur
Instagram https://www.instagram.com/zheigurov/
Аватара пользователя
selenur
Почётный участник
Почётный участник
Сообщения: 4605
Зарегистрирован: 21 авг 2013, 19:44
Репутация: 1622
Настоящее имя: Сергей
Откуда: Новый Уренгой
Контактная информация:

Re: Программа генерации G-кода, из текста, рисунка, PLT файл

Сообщение selenur »

В процессе разработки, что-бы можно было сделать такую штуку:
2016-11-21_011252.jpg (4630 просмотров) <a class='original' href='./download/file.php?id=95328&mode=view' target=_blank>Загрузить оригинал (41.99 КБ)</a>
решил в генерацию G-кода, добавить поддержку математических функций, что позволит, добавлять края, выделенные красным, в коде самого профиля, не затрагивая при этом стандартный алгоритм, генерации.
Для примера вот результат, в котором я пока просто беру координату X и умножаю на два.
2016-11-21_010955.jpg (4630 просмотров) <a class='original' href='./download/file.php?id=95322&mode=view' target=_blank>Загрузить оригинал (634.28 КБ)</a>
В результате чего, получается G-код, растянутый по оси Х :-)
На переднем фоне, исходная траектория текста, а на заднем фоне полученная :-)
Мой сайт: http://selenur.ru
Исходники моих программ: https://github.com/selenur
Instagram https://www.instagram.com/zheigurov/
MAX3000
Опытный
Сообщения: 107
Зарегистрирован: 17 дек 2015, 11:12
Репутация: 18
Настоящее имя: MaX
Контактная информация:

Re: Программа генерации G-кода, из текста, рисунка, PLT файл

Сообщение MAX3000 »

selenur, алгоритм немножко другой должен быть. Зона торможения-разгона прибавляется/вычитается к крайним Х-точкам линии перед и после G0. Но тут надо учитывать координату Х начала следующей линии, если она больше, то прибавлять к ней, если меньше, то прибавлять к текущей - это если движение происходит по контуру картинки, пропуская белые места. А если перемещение осуществлять по ширине картинки, то тут проще - перед G0 лазер движется G0 Xmax+dx (G0 Xmin-dX), затем идет команда G0 X dY, дальше G0 X-dX и код отрисовки следующей линии, крайние положения лазера по координате Х всегда будут одинаковы, но при таком методе лишние движения будут.
Последний раз редактировалось MAX3000 21 ноя 2016, 16:53, всего редактировалось 1 раз.
Ответить

Вернуться в «Windows / Mach»