Предпросмотр и бесконечный цикл
- Сергей Саныч
- Мастер
- Сообщения: 9116
- Зарегистрирован: 30 май 2012, 14:20
- Репутация: 2857
- Откуда: Тюмень
- Контактная информация:
Предпросмотр и бесконечный цикл
Достаточно типовая, думаю, задача - обработка в бесконечном цикле неограниченного количества заготовок с паузой M00 после каждой и ручной сменой.
Однако, не так все просто. При загрузке программа циклится и виснет во время отработки предпросмотра (axis). Можно остановить ESC. Можно ограничить количество циклов по repeat. Но хотелось бы узнать, есть ли более радикальное решение. Например, если есть какой-нибудь флажок, который позволяет отличить режим предпросмотра от нормальной работы, то все решается элементарно. Или, скажем, флажок, который установливается автоматически во время загрузки программмы, но может быть сброшен вручную?
Здесь обсуждался похожий вопрос http://www.cnc-club.ru/forum/viewtopic. ... t=40&hilit , но окончательно решения вроде бы не найдено.
Однако, не так все просто. При загрузке программа циклится и виснет во время отработки предпросмотра (axis). Можно остановить ESC. Можно ограничить количество циклов по repeat. Но хотелось бы узнать, есть ли более радикальное решение. Например, если есть какой-нибудь флажок, который позволяет отличить режим предпросмотра от нормальной работы, то все решается элементарно. Или, скажем, флажок, который установливается автоматически во время загрузки программмы, но может быть сброшен вручную?
Здесь обсуждался похожий вопрос http://www.cnc-club.ru/forum/viewtopic. ... t=40&hilit , но окончательно решения вроде бы не найдено.
Чудес не бывает. Бывают фокусы.
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: Предпросмотр и бесконечный цикл
В Gкод перед циклом или в конце цикла, а лучше вообще так:
Либо вообще в конец цикла: (AXIS,stop) тогда как только дойдет до конца цикла превьшка прекратит рисоваться.
Хммм... может попробовать сделать патч, который все циклы ограничит скажем 10 или 20 повторами или добавить параметр в ini...
Надо по коду axis пошерстить...
Код: Выделить всё
(AXIS,hide)
o100 repeat
(AXIS,show)
...
(AXIS,hide)
o100 end repeat
(AXIS,show)
Хммм... может попробовать сделать патч, который все циклы ограничит скажем 10 или 20 повторами или добавить параметр в ini...
Надо по коду axis пошерстить...
- Сергей Саныч
- Мастер
- Сообщения: 9116
- Зарегистрирован: 30 май 2012, 14:20
- Репутация: 2857
- Откуда: Тюмень
- Контактная информация:
Re: Предпросмотр и бесконечный цикл
Нет, не работает.Nick писал(а):В Gкод перед циклом или в конце цикла, а лучше вообще так:Либо вообще в конец цикла: (AXIS,stop) тогда как только дойдет до конца цикла превьшка прекратит рисоваться.Код: Выделить всё
(AXIS,hide) o100 repeat (AXIS,show) ... (AXIS,hide) o100 end repeat (AXIS,show)
В первом варианте (hide/show) зацикливается, во втором - превьюшка не рисуется.
Чудес не бывает. Бывают фокусы.
- Сергей Саныч
- Мастер
- Сообщения: 9116
- Зарегистрирован: 30 май 2012, 14:20
- Репутация: 2857
- Откуда: Тюмень
- Контактная информация:
Re: Предпросмотр и бесконечный цикл
Сделать repeat[20] не проблема...Nick писал(а):Хммм... может попробовать сделать патч, который все циклы ограничит скажем 10 или 20 повторами или добавить параметр в ini...
А нет никакой возможности узнать из G-программы - превью выполняется в данный момент или работа?
Чудес не бывает. Бывают фокусы.
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: Предпросмотр и бесконечный цикл
хммм... не совсем понимаю... Я думаю так, превью рассчитывается только при загрузке программы. А во время выполнения ничего такого быть не должно... Или я что-то не правильно понял?Serg-tmn писал(а):А нет никакой возможности узнать из G-программы - превью выполняется в данный момент или работа?
- Сергей Саныч
- Мастер
- Сообщения: 9116
- Зарегистрирован: 30 май 2012, 14:20
- Репутация: 2857
- Откуда: Тюмень
- Контактная информация:
Re: Предпросмотр и бесконечный цикл
Да, но чтобы нарисовать превьюшку, G-код обязательно должен быть просмотрен и выполнен (в этом и суть "расчета превью", как сам понимаешь). Единственная разница - результат выводится не на станок,а на экран (точнее, в какой-то внутренний буфер, а потом на экран). Конечно, некоторые команды пропускаются (пауза, смена инструмента и т.п.).Nick писал(а):хммм... не совсем понимаю... Я думаю так, превью рассчитывается только при загрузке программы. А во время выполнения ничего такого быть не должно... Или я что-то не правильно понял?Serg-tmn писал(а):А нет никакой возможности узнать из G-программы - превью выполняется в данный момент или работа?
Так вот, если бы была некая переменная, доступная из G-кода, которая позволяет отличить, что выполняется - расчет для превью или работа, то можно было бы сделать примерно так:
Код: Выделить всё
o102 if [#<_эта переменная> EQ 0] (идет расчет для превью)
о103 repeat[1] (однократно)
o102 else (идет обработка)
о103 repeat[1000000] (многократно)
o102 endif
..........
..........
o103 endrepeat
К сожалению, ничего похожего я пока не нашел.
Чудес не бывает. Бывают фокусы.
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: Предпросмотр и бесконечный цикл
Просто выдели все repeat в (AXIS,hide) и не надо никаких переменных.
Или можешь написать что-то типа такого
Или вот тебе переменная для проверки превью:
О как, я даже не ожидал, что такое можно сделать
Или можешь написать что-то типа такого
Код: Выделить всё
#<num> = 1 (это для превьшки)
(AXIS,hide)
#<num> = 100000 (это для обработки)
(AXIS,show)
o100 repeat #<num>
....
Код: Выделить всё
#<preview> = 0 (это для обработки)
(AXIS,hide)
#<preview> = 1(это для превью)
(AXIS,show)
- Сергей Саныч
- Мастер
- Сообщения: 9116
- Зарегистрирован: 30 май 2012, 14:20
- Репутация: 2857
- Откуда: Тюмень
- Контактная информация:
Re: Предпросмотр и бесконечный цикл
Nick, а ты уверен, что строки между (AXIS,hide) и (AXIS,show) не будут выполняться при предпросмотре? Во всяком случае, когда я заключал в такую пару repeat - это не помогало.
Чудес не бывает. Бывают фокусы.
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: Предпросмотр и бесконечный цикл
Ну в мане так написано:
Кстати, а ты экранировал repeat или и repeat и end repeat? Вроде как говорят, что надо end repeat обязательно экранировать.Special comments can be inserted into the G Code file to control how the preview of AXIS behaves. In the case where you want
to limit the drawing of the preview use these special comments. Anything between the (AXIS,hide) and (AXIS,show) will not be
drawn during the preview. The (AXIS,hide) and (AXIS,show) must be used in pairs with the (AXIS,hide) being first. Anything
after a (AXIS,stop) will not be drawn during the preview.
These comments are useful to unclutter the preview display (for instance while debugging a larger g-code file, one can disable
the preview on certain parts that are already working OK).
• (AXIS,hide) Stops the preview (must be first)
• (AXIS,show) Resumes the preview (must follow a hide)
• (AXIS,stop) Stops the preview from here to the end of the file.
- Сергей Саныч
- Мастер
- Сообщения: 9116
- Зарегистрирован: 30 май 2012, 14:20
- Репутация: 2857
- Откуда: Тюмень
- Контактная информация:
Re: Предпросмотр и бесконечный цикл
Естественно. Как ты сказал, так и сделал. Но не работает.Nick писал(а): Кстати, а ты экранировал repeat или и repeat и end repeat? Вроде как говорят, что надо end repeat обязательно экранировать.
Экранированная строка выполняется при предпросмотре. Правда, достаточно своеобразно. Возможно, это глюк AXIS.
Вот иллюстрация:
Код: Выделить всё
G00 X0 Y0
F400
(AXIS,hide)
G01 Y100
(AXIS,hide)
G01 X80
А выдает диагональ от 0,0 до 80,100! То есть внутренние переменные изменились, но отработка их не произошла.
Чудес не бывает. Бывают фокусы.
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: Предпросмотр и бесконечный цикл
поменяй второй
(AXIS,hide)
на
(AXIS,show)
(AXIS,hide)
на
(AXIS,show)
- Сергей Саныч
- Мастер
- Сообщения: 9116
- Зарегистрирован: 30 май 2012, 14:20
- Репутация: 2857
- Откуда: Тюмень
- Контактная информация:
Re: Предпросмотр и бесконечный цикл
Пардон, это опечатка, я вручную перепечатывал, а на станочном компьютере было как надо (все не соберусь подключить его в сеть).Nick писал(а):поменяй второй
(AXIS,hide)
на
(AXIS,show)
Код: Выделить всё
G00 X0 Y0
F400
(AXIS,hide)
G01 Y100
(AXIS,show)
G01 X80
Чудес не бывает. Бывают фокусы.
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: Предпросмотр и бесконечный цикл
хмммм... и правда не работает.... Т.е. такое ощущение, что все эти команды отрабатываются, но не отрисовываются.... хотя тоже странно как-то...
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: Предпросмотр и бесконечный цикл
Хммм... (AXIS,stop) вроде совсем отрубает предпросмотр... (точнее оставляет предпросмотр от прошлого раза).
- Сергей Саныч
- Мастер
- Сообщения: 9116
- Зарегистрирован: 30 май 2012, 14:20
- Репутация: 2857
- Откуда: Тюмень
- Контактная информация:
Re: Предпросмотр и бесконечный цикл
Если бы отрабатывались, но не отрисовывались, был бы горизонтальный отрезок длиной 80 на уровне 100. А так - диагональ. Получается, что неправильно отрабатывается и неправильно отрисовывается.Nick писал(а):хмммм... и правда не работает.... Т.е. такое ощущение, что все эти команды отрабатываются, но не отрисовываются.... хотя тоже странно как-то...
Чудес не бывает. Бывают фокусы.
- Сергей Саныч
- Мастер
- Сообщения: 9116
- Зарегистрирован: 30 май 2012, 14:20
- Репутация: 2857
- Откуда: Тюмень
- Контактная информация:
Re: Предпросмотр и бесконечный цикл
Как-то так. Причем, если ставишь stop в конец длинной программы, то при загрузке - длительная пауза, как будто идет отработка, а потом - никаких результатов.Nick писал(а):Хммм... (AXIS,stop) вроде совсем отрубает предпросмотр... (точнее оставляет предпросмотр от прошлого раза).
Чудес не бывает. Бывают фокусы.
- Сергей Саныч
- Мастер
- Сообщения: 9116
- Зарегистрирован: 30 май 2012, 14:20
- Репутация: 2857
- Откуда: Тюмень
- Контактная информация:
Re: Предпросмотр и бесконечный цикл
Похоже, нашел выход. Может, кому пригодится.
Код: Выделить всё
o101 sub
......(код обработки одной заготовки)
o101 endsub
o101 call (это нарисует превьюшку и после запуска обработает первую заготовку)
(AXIS,hide)
o102 repeat[1000]
o101 call (а это обработка "от забора до обеда")
o102 endrepeat
(AXIS,show)
Чудес не бывает. Бывают фокусы.