ВОПРОС Вопросы по оптимизации G-кода

Sany-sch

ОН УШЁЛ
Регистрация
12.11.2019
Сообщения
536
Реакции
1 532
Баллы
133
Имя
Александр
Спрошу здесь, тема вроде подходящая, про прошивку, ну и живая.
Вопрос такой: Как оптимизировать г-код, чтоб контроллер его быстрей распознавал и обрабатывал?
Например, встречал такой код:
G1 X20.8000
G1 X21.0000 Y7.2000
G1 X13.2000
G1 X13.0000 Y7.4000

G1 прописана в каждой строке. А встречал без неё.
Встречал с пробелами в строке, а встречал без них, Встречал заглавные буквы, а бывают маленькие.
Вот и интересно, как правильно с точки зрения контроллера.
 
G1 прописана в каждой строке. А встречал без неё.
Встречал с пробелами в строке, а встречал без них, Встречал заглавные буквы, а бывают маленькие.
Вот и интересно, как правильно с точки зрения контроллера.
G1 комада модальная, т.е. до смены ее другой модальной командой перемещения инструмента (G0, G2, G3), остается активной.
Пробелы в строке необязательны, контроллер и так понимает, но читабельность снижается. Обязателен пробел после разделителя кадров ( ; ) если кадры команд пишутся в одну строку, как в Candle в описании, допустим, кнопки "Щуп".
 
G1 прописана в каждой строке. А встречал без неё.
Встречал с пробелами в строке, а встречал без них, Встречал заглавные буквы, а бывают маленькие.
Вот и интересно, как правильно с точки зрения контроллера.
см. файл protocol.c
Модальные команды нет смысла дублировать в каждой строке - лишняя обработка для переключения состояния парсера. Пробелы - игнорируются (т.е. не попадают в "собранную" строку), а буквы приводятся к верхнему регистру, что тоже - лишняя обработка.
Так же игнорируется комментарии между скобками и начинающиеся с точки с запятой.
Таким образом, не дублируем модальные команды, удаляем комментарии, а так же не используем значения вещественных чисел с дробной частью более требуемой (например, если достаточно только 3 знака, а используется 5) - функция извлечения вещественных чисел из строки read_float (файл nuts_bolts.c) работает так же посимвольно, соответственно - лишние такты процессора.

Как оптимизировать г-код, чтоб контроллер его быстрей распознавал и обрабатывал?
Берём 2 УП, одну - с учётом вышесказанного, вторую без исправлений и сравниваем время проверки (check mode) файла, так будет видно, есть ли смысл и насколько он велик :)
 
хочу свой Экю удвоить , что значит парсер ,что значит модальный?
 
Таким образом, не дублируем модальные команды, удаляем комментарии, а так же не используем значения вещественных чисел с дробной частью более требуемой
Спасибо, Олег, как всегда помогаете. Благодаря вам уже нашел что подправить.
 
  • Последнее редактирование:
Последнее редактирование:
Уточните, читабельность снижается с пробелами или без?
С пробелами, на мой взгляд, более читабельно, но это индивидуально, кому то, может и проще.
хочу свой Экю удвоить , что значит парсер ,что значит модальный?
Парсер это типа рендер в графике,отслеживает, просчитывает и плвнирует поступление команд на исполнение. Группы зависимых команд называется модальной,если одна из группы включена, она действительна до смены ее командой из этой же группы, например: (G0, G1, G2, G3); (G17, G18, G19); (G20, G21); (G54,G55, G56...); (G90, G91);
 
Группы зависимых команд называется модальной
Модальные G-коды сохраняются в памяти системы ЧПУ и действуют до их прямой отмены в течении всего времени исполнения управляющей программы системы ЧПУ, немодальные G-коды действуют лишь в пределах одного кадра управляющей программы, в котором они находятся.
 
Читабельность с пробелами выше.
Имею ввиду читабельность не человеком, а контроллером.
Таким образом, не используем значения вещественных чисел с дробной частью более требуемой (например, если достаточно только 3 знака, а используется 5)
Тогда вопрос такой (сейчас будет многа букав):
Например мой станок имеет 160шагов на мм(лазер) это значит 1 шаг =0,00625мм
Если мне нужно сделать один шаг от Х0 то я могу так и написать, Х0.00625 и контроллер сделает шаг , а могу написать Х0.006 и контроллер сделает расчёт до ближайшего и сделает шаг. В первом случае дольше читать и распознавать, во втором считать. Что по времени оптимальнее?
 
Имею ввиду читабельность не человеком, а контроллером.

Тогда вопрос такой (сейчас будет многа букав):
Например мой станок имеет 160шагов на мм(лазер) это значит 1 шаг =0,00625мм
Если мне нужно сделать один шаг от Х0 то я могу так и написать, Х0.00625 и контроллер сделает шаг , а могу написать Х0.006 и контроллер сделает расчёт до ближайшего и сделает шаг. В первом случае дольше читать и распознавать, во втором считать. Что по времени оптимальнее?
Фиолетово. Ибо механическое передвижение гораздо медленнее чем скорость расчёта микроконтроллера.
 
Сверху Снизу
Обнаружен блокировщик рекламы AdBlock

МЫ ДОГАДЫВАЕМСЯ, ЧТО РЕКЛАМА ВАС РАЗДРАЖАЕТ!

Конечно, Ваше программное обеспечение для блокировки рекламы отлично справляется с блокировкой рекламы на нашем сайте, но оно также блокирует полезные функции. Мы стараемся для Вас и не обязываем Вас донатить и скидывать денег на наши кошельки, чтобы пользоваться форумом, но реклама это единственное, что позволяет поддерживать проект и развивать его.

Спасибо за Ваше понимание!

Я отключил свой AdBlock    Нет, я не буду ничего отключать