Что же такое G-код? G-код — условное именование языка программирования устройств с числовым программным управлением (ЧПУ), был создан в 60-х годах прошлого столетия. В 80-х стал отраслевым стандартом ISO 6983-1:2009 на западе, в СССР это - ГОСТ 20999-83. Грубо говоря g-код это - список инструкций для ЧПУ станка, что бы он перемещал инструмент (сверло, фреза, печатающая головка) в нужной последовательности и в нужном направлении. Выглядит он примерно так:
G0 X 47.585 Y 38.795
M3 M8
G0 Z 3.000
F150
G1 Z -1.500
F400
G1 X 47.552 Y 38.836
G1 X 47.521 Y 38.879
G1 X 47.491 Y 38.923
G1 X 47.462 Y 38.969
G1 X 47.435 Y 39.017
G1 X 47.409 Y 39.066
G1 X 47.385 Y 39.117
G1 X 47.362 Y 39.171
G1 X 47.340 Y 39.226
G1 X 47.320 Y 39.284
G1 X 47.302 Y 39.343
Получить управляющую программу для ЧПУ можно при помощи специальных CAM программ. CAM системы переводят 2d и 3d, разработанные в системах автоматизированного проектирования САПР (у буржуев это - CAD). Примером CAD может служить SolidWorks, AutoCAD и др. Какие я буду использовать CAD/CAM системы пока не знаю. В идеале хотелось бы иметь мощный инструмент с открытым исходным кодом. Но я точно знаю какие буду использовать программы sender.
G0 X 47.585 Y 38.795
M3 M8
G0 Z 3.000
F150
G1 Z -1.500
F400
G1 X 47.552 Y 38.836
G1 X 47.521 Y 38.879
G1 X 47.491 Y 38.923
G1 X 47.462 Y 38.969
G1 X 47.435 Y 39.017
G1 X 47.409 Y 39.066
G1 X 47.385 Y 39.117
G1 X 47.362 Y 39.171
G1 X 47.340 Y 39.226
G1 X 47.320 Y 39.284
G1 X 47.302 Y 39.343
Получить управляющую программу для ЧПУ можно при помощи специальных CAM программ. CAM системы переводят 2d и 3d, разработанные в системах автоматизированного проектирования САПР (у буржуев это - CAD). Примером CAD может служить SolidWorks, AutoCAD и др. Какие я буду использовать CAD/CAM системы пока не знаю. В идеале хотелось бы иметь мощный инструмент с открытым исходным кодом. Но я точно знаю какие буду использовать программы sender.
Sender - это программа которая выполняет функцию передачи g-кода с персонального компьютера на станок по COM порту (в моем случае COM-порт). Мне понравились Universal Gcode Sender и Grbl Controller. Достаточно простые программы, есть версии под linux.
Итак вернемся к g-коду. Для того чтобы станок передвинул инструмент по осям X,Y необходимо в него передать команду:
G1 X 47.552 Y 38.836
, где G1 - Команда, линейная интерполяция
X 47.552 - смещение по оси Х
Y 38.836 - смещение по оси Y
X 47.552 - смещение по оси Х
Y 38.836 - смещение по оси Y
Не смотря на то что g-код стандартизирован, я видел много его вариантов, например вместо G1 G01 или X47 и X 47 (с пробелом). Или вообще жесть типа:
G01 Z[-1.000000*#7+#10] F#4
квадратные скобки, какие-то звездочки, плюсики. И как прикажите с таким кодом работать? Править вручную? Убирать лишние скобки и пробелы? Вот вам и стандартизация. Хочется максимально все автоматизировать, а значит передо мной стоит нелегкая задача написать универсальный парсер g-кода который будет понимать любой g-код. Мы радиолюбители! В наших жилах течет горячий припой! Мало того это нужно сделать средствами Arduino. В Arduino нет регулярных выражений, а еще он не умеет работать с числами с плавающей запятой. Как вы наверное заметили координаты у нас до трех знаков после запятой. AVR это вам не Intel 8086/8087 так что даже не знаю стоит ли за это браться. Уверен что стоит! «Фигня война! Главное – маневры!».
В Ардуине есть богатый набор строковых функций. Описание на русском языке можно найти тут. Как известно EEPROM в AVR имеет ограниченное количество циклов записи — 100000 не так уж и много. Так что разработку мы будем проводить не на железе как обычно это делали а с помощью онлайн симулятора https://circuits.io/. Circuits: виртуальная Arduino в браузере! Обладает богатым функционалом. Позволяет собирать виртуальные схемы на макетной плате, подключать вольтметры, осциллографы. А еще там есть редактор кода и монитор COM-порта как в толстой Arduino IDE. Конкретно за моими разработками можно следить тут.