Страница 1 из 1
Вопросы по G33
Добавлено: 07 июл 2015, 10:44
alexandr1988
Добрый день! Интересует непонятное поведение linuxcnc, связанное с g33.
выполняю программы вида
Код: Выделить всё
G21
G91
M3
o100 do
M66 L0 P1
o101 if [#5399 NE 1]
Здесь код программы, содержащий G33
o101 else
o100 break
o101 endif
o100 while [#<_task> NE 0]
M05 M2
При остановке и прерывании цикла с помощью M66, после того как прошел код M2 и программа закончилась, шпиндель делает еще несколько оборотов.
При повторном запуске этого же g-кода (сразу после полной остановки и ДО запуска шпинделя) ось X уезжает в сторону, как будто отрабатывая перемещение, синхронизированное с этим вращением после остановки.
Поясню, что в моем случае шпиндель включается с помощью команды M3 + подача внешнего сигнала.
В чем тут причина? hal и ini прилагаю. Это не металлообрабатывающее оборудование, шпиндель во время нарезания резьбы не останавливаю)
Может нужно использовать M30 вместо M2?
PS. не знаю куда лучше разместить сообщение, в g-code или сюда, просьба сильно не ругаться
Re: Конфигурация EMC2 LinuxCNC
Добавлено: 07 июл 2015, 11:36
nkp
прямого ответа к сожалению у меня нет...
а если пробовать без м66...
просто цикл пока (для проверки) задать повтором например...
или как то по другому ,но без м66...
Re: Конфигурация EMC2 LinuxCNC
Добавлено: 07 июл 2015, 11:41
alexandr1988
Просто цикл без остановки с помощью M66 крутился две смены без отдыха, проблем нет никаких.
Но стоит прервать цикл, как следующий запуск вызовет сдвиг, но что интересно, не всегда, и закономерность я не уловил.
Пробовал после прерывания цикла включить-выключить питание кнопкой F2 в linuxcnc, вот тогда сдвига нет, но это не очень удобно.
Re: Конфигурация EMC2 LinuxCNC
Добавлено: 07 июл 2015, 11:49
nkp
ну если уже понятно ,что дело в м66 , то может стоит просто
переделать программу без него??
можно остановить кнопкой (или сигналом на пин) "Стоп" ???
-----------------
или задача чисто теоретическая - выяснить природу явления???

Re: Конфигурация EMC2 LinuxCNC
Добавлено: 07 июл 2015, 11:56
alexandr1988
nkp писал(а):ну если уже понятно ,что дело в м66 , то может стоит просто
переделать программу без него??
можно остановить кнопкой (или сигналом на пин) "Стоп" ???
-----------------
или задача чисто теоретическая - выяснить природу явления???

Задача выяснить природу явления и победить его)
Остановка в конце цикла достаточно важна, она позволяет свести к нулю брак вследствие остановок машины.
Копался в информации по G-кодам, нашел вот что:
Команда M02 - конец программы, без сброса модальных функций.
Команда M30 - конец управляющей программы, со сбросом модальных функций.
Это актуально для Linux CNC или здесь какие то другие различия между этими кодами? И может быть проблема именно в этом? Проверить пока к сожалению не могу, машина в работе.
Если это совсем не по теме, то прошу модераторов перенести это в
FAQ по Gcode, примеры
Re: Конфигурация EMC2 LinuxCNC
Добавлено: 07 июл 2015, 12:10
nkp
alexandr1988 писал(а):Задача выяснить природу явления и победить его)
===============================
не зная всех тонкостей процесса производственного ...
сейчас откуда то там приходит сигнал ,что мол мы все допилили ,допустим:
net signal-name motion.digital-in-00 <= parport.0.pin10-in
а если так:
net stop halui.program.stop <= parport.0.pin10-in
ну или что то подобное...
Re: Конфигурация EMC2 LinuxCNC
Добавлено: 07 июл 2015, 12:21
alexandr1988
nkp писал(а):
сейчас откуда то там приходит сигнал ,что мол мы все допилили ,допустим:
net signal-name motion.digital-in-00 <= parport.0.pin10-in
а если так:
net stop halui.program.stop <= parport.0.pin10-in
ну или что то подобное...
Сейчас с помощью M66 происходит выход из цикла после его повторения (нажимается кнопка, цикл выполняется до конца и машина останавливается) и кнопка стоп нажимается сама, так как получена команда M2- конец программы.
А если тот же сигнал завести на halui.program.stop, то останов будет происходить в тот момент, когда нажали на кнопку, что не совсем правильно.
Может нужно при выходе из цикла как то принудительно активировать пин halui.program.stop?
Re: Конфигурация EMC2 LinuxCNC
Добавлено: 08 июл 2015, 10:35
Nick
Мне кажется так - надо прервать цепочку G33. Если у тебя все пемемещения по G33 - они должны быть синхронизированны друг с другом.
Попробуй в начале программы добавить G0 Xчто-нибудь...
Re: Конфигурация EMC2 LinuxCNC
Добавлено: 09 июл 2015, 12:37
alexandr1988
Nick писал(а):Мне кажется так - надо прервать цепочку G33. Если у тебя все пемемещения по G33 - они должны быть синхронизированны друг с другом.
Попробуй в начале программы добавить G0 Xчто-нибудь...
До цикла сделать перемещение, к примеру, на 0,001 мм? Или уже в самом цикле?
Кстати, замена М2 на М30 ничего не поменяла.
А что если сделать так?
Код: Выделить всё
G21
G91
M3
o100 do
M66 L0 P1
o101 if [#5399 NE 1]
Здесь код программы, содержащий G33
o101 else
o100 break
o101 endif
o100 while [#<_task> NE 0]
M64 P2
M05 M30
Добавим
M64 P2 в G-код, а в hal
net stop halui.program.stop <= motion-digital-in-01. Такой вариант имеет место быть? Пробовать на станке пока не могу, много работы и операторы ругаются. Хочу собрать все варианты, и когда будет окно, пробовать их все.
Re: Вопросы по G33
Добавлено: 09 июл 2015, 13:22
nkp
M64 P2 motion-digital-in-02
ну или соответственно
M64 P1 motion-digital-in-01
M65 P... в начале где нибудь тогда ...
если их "рядом" поставить - нормально работать не будут...
Re: Вопросы по G33
Добавлено: 09 июл 2015, 13:31
Nick
alexandr1988 писал(а):До цикла сделать перемещение, к примеру, на 0,001 мм? Или уже в самом цикле?
все равно, главное, чтобы при остановке и выбежке шпинделя не было лишнего перемещения. Для этого надо "порвать" цепочку последовательных G33.
PS а что станок делает?
Re: Вопросы по G33
Добавлено: 09 июл 2015, 13:46
alexandr1988
nkp писал(а):M64 P2 motion-digital-in-02
ну или соответственно
M64 P1 motion-digital-in-01
M65 P... в начале где нибудь тогда ...
если их "рядом" поставить - нормально работать не будут...
А останов с помощью М2/М30 разве не переводит все выходы в исходное состояние? тогда М65 и не нужен.
Насчет нумерации ошибся, признаю.
Nick писал(а):все равно, главное, чтобы при остановке и выбежке шпинделя не было лишнего перемещения. Для этого надо "порвать" цепочку последовательных G33.
PS а что станок делает?
Станок делает одеяльную/матрасную и прочую стежку.
Видео с телефона загружается только в низком качестве. Но LinuxCNC видно)
Доступно по ссылке
https://cloud.mail.ru/public/HD2X/BW2PK4brp
Момент, когда машина поднимает иглы на малой скорости после завершения программы по M2, как мне кажется, и вызывает эту ошибку. Но на видео этого нет, так как остановка не в конце цикла.
Re: Вопросы по G33
Добавлено: 09 июл 2015, 14:14
nkp
alexandr1988 писал(а):Насчет нумерации ошибся, признаю.
я вообще протупил

- подумал про выходы (out)
вот они то и не "выключаются" ,кроме как М65
Re: Вопросы по G33
Добавлено: 09 июл 2015, 15:20
alexandr1988
Все началось с моей ошибки в net stop halui.program.stop <= motion-digital-in-01.
Нужно же motion-digital-out-01! Действительно, после M64 выход сам при остановке программы не изменяет состояние.
Пробовал без станка и на G1, но стоп нажимается. Буду пробовать на станке, может это и выход из ситуации. А M65 если надо, куда нибудь пристроимю