nkp: спасибо за отдельный интерпретатор. попробовал, работает "на ура". Около 8 лет назад я вручную выдёргивал код разбора g-кода в каноническую форму из исходников Emc когда делал один из проектов.
Код: Выделить всё
READ => M3
4 N..... START_SPINDLE_CLOCKWISE()
READ => S123
5 N..... SET_SPINDLE_SPEED(123.0000)
READ => M3
6 N..... START_SPINDLE_CLOCKWISE()
Полагаю, уместнее будет попробовать запустить в режиме эмуляции и подключить hal-scope. Наверное, удачнее выйдет для демонстрации - тут непонятно, строка 4 запустила 123 оборота или нет?
Документ "The NIST RS274NGC Interpreter" в данном случае не помогает, поскольку не все производители типа китайцев с NC Studio и т.п. его читали. Мне интересно было реальное поведение программ, а не теоретическое соответствие стандарту (вернее интерпретации стандарта)
[cite]It is OK to use M3 or M4 if the spindle speed is set to zero. If this is done (or if the speed override
switch is enabled and set to zero), the spindle will not start turning. If, later, the spindle speed is
set above zero (or the override switch is turned up), the spindle will start turning. It is OK to use
M3 or M4 when the spindle is already turning or to use M5 when the spindle is already stopped.[/cite]
Из этого абзаца следует, кстати, что в Emc2
должен отлично работать.
UAVpilot: Извините, если мои слова выглядели некорректно, но я до сих пор не могу понять - неужели меня не слышат? Я прошу широкую общественность помочь протестировать код на разных реальных станках и сказать "что в жизни с ним происходит", а преимущественно ответы про "стандарты" и про Emc2... А про то как это код ведёт себя под NC Studio, Mach3, TurboCNC, CNCPro, USBCNC/CNCDudez, G-Code Controller'ом или на каком-нибудь Fanuc'овском роботе или токопрошивальном станке - ни слова. Получается, что смысла спрашивать нет - оказываюсь ещё и неспособным к восприятию отвлечённых примеров (кстати, я реально протестировал последовательность с кнопкой вызова и цифрами на Nokia 1280, Ms3a, s9192 - поведение РАЗНОЕ, вывод - единственно работающая везде комбинация: набрать цифры, потом зелёная трубка. Для cnc-контроллеров похоже единственное кросс-решение - только M3 Sxxx на одной строке. Причём после M3 S0 (или M3) отдельностоящая строчка Sxxx может не сработать для повышения скорости до ненулевой.).
Цель этого всего - сделать так, чтобы было удобнее и логичнее для пользователей. Собственно, я в любом случае буду продолжать разработку независимо от помощи или вреда со стороны окружающих, поскольку считаю это важным для людей вцелом.