Самопальный интерпретатор

Mach, популярные и не очень CAD, CAM. Обсуждение и разработка программ для управления станками.
Аватара пользователя
Крафтер
Мастер
Сообщения: 211
Зарегистрирован: 27 мар 2015, 22:25
Репутация: 61
Настоящее имя: Андрей
Откуда: Ростов-на-Дону
Контактная информация:

Re: Самопальный интерпретатор

Сообщение Крафтер »

Хорошо, какое поведение у датчика дома и какое у хард лимита?
Аватара пользователя
Сергей Саныч
Мастер
Сообщения: 9116
Зарегистрирован: 30 май 2012, 14:20
Репутация: 2857
Откуда: Тюмень
Контактная информация:

Re: Самопальный интерпретатор

Сообщение Сергей Саныч »

А зачем писать УП, которые вылазят за пределы рабочего поля?
Перед работой интерпретатор должен не спеша сгонять к концевикам осей (датчикам дома) и узнать, где у них (осей) начала (выполнить homing). После этого он уже не выедет за границы поля (программные лимиты, soft limits). Для станков любительского уровня большее обычно не требуется. Аппаратные ограничители хода (hard limits) ставят обычно для аварийного отключения на достаточно серьезных станках, чтобы не наломать дров при неконтролируемых передвижениях.
Но в любом случае работа станка при достижении любого лимита (программного или аппаратного) должна быть остановлена, ибо это явный показатель, что что-то не так. Обычно системы управления заранее просматривают УП и отказываются ее выполнять, если есть выходы за пределы поля по любой из координат.
Последний раз редактировалось Сергей Саныч 14 янв 2017, 22:33, всего редактировалось 1 раз.
Чудес не бывает. Бывают фокусы.
Аватара пользователя
Крафтер
Мастер
Сообщения: 211
Зарегистрирован: 27 мар 2015, 22:25
Репутация: 61
Настоящее имя: Андрей
Откуда: Ростов-на-Дону
Контактная информация:

Re: Самопальный интерпретатор

Сообщение Крафтер »

selenur писал(а):Я-бы сделал так: включаем станок, запускается автокалибровка, при которой станок по концевикам определяет доступное рабочее поле
Не охота при запуске ждать, пока он туда-сюда съездит.
Аватара пользователя
Сергей Саныч
Мастер
Сообщения: 9116
Зарегистрирован: 30 май 2012, 14:20
Репутация: 2857
Откуда: Тюмень
Контактная информация:

Re: Самопальный интерпретатор

Сообщение Сергей Саныч »

Крафтер писал(а):Не охота при запуске ждать, пока он туда-сюда съездит.
Ну, это несерьезно :) Да туда-сюда и не надо, достаточно только съездить в один конец по каждой оси.
Чудес не бывает. Бывают фокусы.
Аватара пользователя
Крафтер
Мастер
Сообщения: 211
Зарегистрирован: 27 мар 2015, 22:25
Репутация: 61
Настоящее имя: Андрей
Откуда: Ростов-на-Дону
Контактная информация:

Re: Самопальный интерпретатор

Сообщение Крафтер »

Ладно, тогда сделаю так: на старте берем из конфига последовательность осей, по которым надо съездить к дому. Например, Z X Y. При запуске считаем координаты нулевыми. Потом едем по очереди к осям на G0, когда натыкаемся, отъезжаем, медленно (из конфига) подъезжаем к концевику еще раз и сбрасываем координату в 0.
В оставшееся время используем концевики как хард лимиты.
Когда загружаем программу, проверяем что не вылезем, если вылазим, не даем запустить. Хотя непонятно, зачем тогда хард лимит, если программа все равно не даст за него заехать. Если без хард лимитов, тогда по одному концевику на ось, меньше ножек. А если будет пропуск шагов, может ведь и за пределы выехать?
Аватара пользователя
Сергей Саныч
Мастер
Сообщения: 9116
Зарегистрирован: 30 май 2012, 14:20
Репутация: 2857
Откуда: Тюмень
Контактная информация:

Re: Самопальный интерпретатор

Сообщение Сергей Саныч »

Датчики дома, в отличие от "хард лимитов" могут стоять не на самом начале хода оси. Тогда можно смело к ним ехать на большой скорости, не боясь влететь в ограничитель при торможении. А при срабатывании спокойно отъехать и уточнить на малой скорости.
Скажем, у меня на станке home X (оптический) срабатывает, не доходя до начала координаты (левая граница поля) где-то 40 мм. Так было удобнее его поставить. По Y и Z - 5-10 мм (точно не помню, конфиг не под рукой).
Естественно, как hard limit он при этом не используется. Софтлимиты настроены на расстоянии 1 мм от физических упоров. Программа управления начинает тормозить заранее, так как знает, где границы. Поэтом даже при ручном перемещении на большой скорости ничего плохого не случается.
Крафтер писал(а):А если будет пропуск шагов, может ведь и за пределы выехать?
Пропуск шагов - по любому аварийная ситуация и не может рассматриваться как-то иначе.
Последний раз редактировалось Сергей Саныч 14 янв 2017, 23:08, всего редактировалось 1 раз.
Чудес не бывает. Бывают фокусы.
Аватара пользователя
MX_Master
Мастер
Сообщения: 7478
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3099
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

Re: Самопальный интерпретатор

Сообщение MX_Master »

Мои советы таковы:

Автоматическая поездка к датчикам дома может быть проблемой, если на пути к ним окажутся неожиданные препятствия - забытый инструмент или тряпка, поворотка (4-я ось), материал. Так что поездка домой пе должна быть автоматом, а только по нажатию кнопки оператором и для каждой оси лучше отдельные кнопки.

Наезд на датчик дома - это многоразовый наезд, каждый раз на меньшей скорости.

Хард лимиты могут быть равноценны E-STOP или просто команде ABORT. Смотря как система настроена, где-то риск больше, где-то меньше.
Аватара пользователя
Сергей Саныч
Мастер
Сообщения: 9116
Зарегистрирован: 30 май 2012, 14:20
Репутация: 2857
Откуда: Тюмень
Контактная информация:

Re: Самопальный интерпретатор

Сообщение Сергей Саныч »

MX_Master писал(а):Автоматическая поездка к датчикам дома может быть проблемой, если на пути к ним окажутся неожиданные препятствия - забытый инструмент или тряпка, поворотка (4-я ось), материал. Так что поездка домой пе должна быть автоматом, а только по нажатию кнопки оператором и для каждой оси лучше отдельные кнопки
Обычно первой хоумится ось Z и остается в крайнем верхнем положении. Так безопаснее.
MX_Master писал(а):Наезд на датчик дома - это многоразовый наезд, каждый раз на меньшей скорости.
Больше двух раз особого смысла нет.
MX_Master писал(а):Хард лимиты могут быть равноценны E-STOP или просто команде ABORT. Смотря как система настроена, где-то риск больше, где-то меньше.
Да.
Чудес не бывает. Бывают фокусы.
vladumur
Мастер
Сообщения: 278
Зарегистрирован: 07 авг 2014, 16:44
Репутация: 37
Откуда: Россия, Красноярский край
Контактная информация:

Re: Самопальный интерпретатор

Сообщение vladumur »

Крафтер писал(а):Ладно, тогда сделаю так: на старте берем из конфига последовательность осей, по которым надо съездить к дому. Например, Z X Y. При запуске считаем координаты нулевыми. Потом едем по очереди к осям на G0, когда натыкаемся, отъезжаем, медленно (из конфига) подъезжаем к концевику еще раз и сбрасываем координату в 0.
В оставшееся время используем концевики как хард лимиты.
Когда загружаем программу, проверяем что не вылезем, если вылазим, не даем запустить. Хотя непонятно, зачем тогда хард лимит, если программа все равно не даст за него заехать. Если без хард лимитов, тогда по одному концевику на ось, меньше ножек. А если будет пропуск шагов, может ведь и за пределы выехать?
Операция - ДОМ (home). Нужна для калибровки, так как станок при включении не знает где у него находятся нули.
Даже если при выключении у вас контролер сохраняет текущие координаты, всегда что-то может произойти, что физически "собьет" ось. Поэтому при включении, станок предлагает "домой?"-если жмем да, то операция "дом", если жмем нет - то использовать текущие координаты.
Далее станок в процессе работы использует "софт лимиты ".
В случае если в процессе работы станок "вдруг" наскочил на " хард лимиты" (всего их 6 шт по две на одну ось, для трех осевого станка). То полная остановка с включением ревуна на 100 дБ и проблескового маяка ( останавливать наверное надо всё-таки понежнее, так как хард лимиты устанавливаются с маленьким но запасом на свободный ход)
Зачем нужны софт лимит одновременно с хард лимит?
Софт лимит- ограничивает действие уп координатами действия осей, в случае несоответствия останавливает уп на этапе проверки.
Хард лимит - аварийная остановка осей в ходе выполнения уп, вследствие выхода осей за пределы физического рабочего стола. По причине потери шагов, например.
И кстати да, дайте возможность использовать датчики Дом (home) как хардлимиты , типа галочка в программе :)
vladumur
Мастер
Сообщения: 278
Зарегистрирован: 07 авг 2014, 16:44
Репутация: 37
Откуда: Россия, Красноярский край
Контактная информация:

Re: Самопальный интерпретатор

Сообщение vladumur »

Крафтер писал(а):Может когда-то и перейду на F4, пока производительности хватает... хотя зачем F4, лучше сразу FPGA.
Слава Аллаху что вас в этом не надо убеждать :)
Тогда уж продолжайте дальше на текущей макетке работать, как дойдете до ограничений, так и сообщите нам что выбрали.
Уверен в итоге будет stm32+frga.
vladumur
Мастер
Сообщения: 278
Зарегистрирован: 07 авг 2014, 16:44
Репутация: 37
Откуда: Россия, Красноярский край
Контактная информация:

Re: Самопальный интерпретатор

Сообщение vladumur »

MX_Master писал(а):Наезд на датчик дома - это многоразовый наезд, каждый раз на меньшей скорости.
Предлагаю обратить крайне пристальное внимание на эту цитату. По причине разной точности датчиков используемых в качестве "дома" (home):
Производить наезд - отъезд три раза, с замером, в случае совпадений всех трех замеров - сброс оси в ноль. Не совпало - по новой, не совпало три раза - выдать сообщение "иди ты нафик не буду работать, пока не купиш мне новую красивую железку".
Аватара пользователя
Крафтер
Мастер
Сообщения: 211
Зарегистрирован: 27 мар 2015, 22:25
Репутация: 61
Настоящее имя: Андрей
Откуда: Ростов-на-Дону
Контактная информация:

Re: Самопальный интерпретатор

Сообщение Крафтер »

Подключение концевиков для использования разных функций можно сделать следующим образом: у контроллера есть 11 ножек, настроенных на вход. Из конфига можно настроить, какое состояние считается срабатыванием (0 или 1), чтобы использовать нормально замкнутые и нормально разомкнутые датчики. Дальше в конфиге можно задать номера входов, используемых каждой осью как хард лимиты и как дом. Например, если на ножки 3, 5 и 8 подключены датчики, задаем
HomeX 5
HardMinX 5
HomeY 8
HomeZ 3
То есть можно один датчик использовать для нескольких функций.
Всё ещё не пойму, что делать после наезда на хард лимит. Если контроллер продолжает блокировать движение, то с него и съехать не получится. А если дать пользователю возможность ездить ручным управлением при активном датчике, то он же может доломать. Или давать тогда ездить, но только в сторону от датчика? И если датчик используется как хоум и хард одновременно, то во время поиска дома надо переставать использовать его как хард лимит?

Еще одна проблема. Если задать максимальную скорость 100 мм/сек, ускорение 50 мм/сек2, тогда тормозной путь будет 10 см, что кажется слишком большой цифрой. Наверное лучше для торможения задать ускорение отдельно, если сделать 5000 мм/сек, то остановится через 1 мм, уже приемлемо.
Последний раз редактировалось Крафтер 15 янв 2017, 15:58, всего редактировалось 1 раз.
vladumur
Мастер
Сообщения: 278
Зарегистрирован: 07 авг 2014, 16:44
Репутация: 37
Откуда: Россия, Красноярский край
Контактная информация:

Re: Самопальный интерпретатор

Сообщение vladumur »

При наезде на хардлимиты - запись координат текущей строки выполнения уп, сброс уп, после нажатия оператором ОК и освобождение осей для ручного передвижения.
Может кто-то лучше предложит?
Аватара пользователя
Крафтер
Мастер
Сообщения: 211
Зарегистрирован: 27 мар 2015, 22:25
Репутация: 61
Настоящее имя: Андрей
Откуда: Ростов-на-Дону
Контактная информация:

Re: Самопальный интерпретатор

Сообщение Крафтер »

Нашел описание, как это работает у других.
http://www.cnc-club.com/forum/viewtopic ... 18#p311746
http://cncmasterkit.ru/viewtopic.php?f=5&t=4052

Там наткнулся на проблему: "случай когда по оси два винта и два датчика Home соответственно". У меня на оси Х как раз два винта стоят, так что придется заморочаться с этим делом. Как в этом случае работает станок? Едет по двум осям, при наезде каждой оси на датчик останавливает её? Думаю, это единственный способ точно найти базу.
vladumur
Мастер
Сообщения: 278
Зарегистрирован: 07 авг 2014, 16:44
Репутация: 37
Откуда: Россия, Красноярский край
Контактная информация:

Re: Самопальный интерпретатор

Сообщение vladumur »

Да вроде этот случай достаточно прост - в программе должна быть опция " подчинить ось х оси y", тогда оси должны ездить синхронно, соответственно датчики дом и хардлимит основной оси должны распространять свое действие на подчиненную ось.
vladumur
Мастер
Сообщения: 278
Зарегистрирован: 07 авг 2014, 16:44
Репутация: 37
Откуда: Россия, Красноярский край
Контактная информация:

Re: Самопальный интерпретатор

Сообщение vladumur »

Добрый день
А актуальная текущая версия будет опубликована?
Вроде хотели выложить.
Аватара пользователя
Крафтер
Мастер
Сообщения: 211
Зарегистрирован: 27 мар 2015, 22:25
Репутация: 61
Настоящее имя: Андрей
Откуда: Ростов-на-Дону
Контактная информация:

Re: Самопальный интерпретатор

Сообщение Крафтер »

Будет :hottabych: , просто я на этих концевиках завис. Сначала думал сделать откат к дому на полной скорости, потом понял, что надо сделать поддержку хотя бы какого-то скрипта, чтобы на нужной скорости и в нужном порядке подкатывать. Плюс были подводные камни с работой концевиков, как себя должен вести станок при разных схемах подключения. Разобрался, как это работает в маче, у меня само получилось так же. Может на этих выходных будет. Но это все в железе особо не протестировано, хотя сигналы на выводах правильные. Кстати насчет новой схемы генерации шагов надо сказать. Если взять обычный алгоритм Брезенхема, когда на каждом шаге самой длинной оси делаются шаги и по другим осям, получается сигнал нестабильной частоты, вот пример:
брезенхэм.PNG
брезенхэм.PNG (1.5 КБ) 5277 просмотров
По У шаги будут такие 110110110. Если время одного шага по Х = 100 мсек, то по У между шагами будут получаться интервалы 100 200 100 200, то есть нестабильная частота. В новой схеме каждая ось генерирует шаги независимо, и максимальное изменение частоты = 20%. Интересно, как это в маче сделано. Если задать ему переезд G1 X30 Y20, будет ли по У такой кривой сигнал, или у них тоже оси независимо работают?
Аватара пользователя
Сергей Саныч
Мастер
Сообщения: 9116
Зарегистрирован: 30 май 2012, 14:20
Репутация: 2857
Откуда: Тюмень
Контактная информация:

Re: Самопальный интерпретатор

Сообщение Сергей Саныч »

Не знаю, как в Маче, а в LCNC алгоритм, сходный с Брезенхемовским, используется для генерации частот шагов на основе базовой частоты. При программной генерации это обычно 25-40 кГц.
Оси работают, по сути, независимо. Каждый сервоцикл (раз в миллисекунду) выдается задание, с какой частотой какой оси шагать. Шаги подсчитываются. В конце сервоцикла количество фактически пройденных шагов (точнее, импульсов Step) сравнивается с требуемым, и исходя из этого формируется задание частоты на следующий период. Все расчеты, кроме непосредственно генерации и подсчета сделанных шагов, производятся с формате с плавающей запятой.
Крафтер писал(а):Если время одного шага по Х = 100 мсек
Крафтер писал(а):Если задать ему переезд G1 X30 Y20, будет ли по У такой кривой сигнал, или у них тоже оси независимо работают?
В этом примере при периоде шага X 100 мсек (один шаг за 100 сервоциклов) ось Y будет делать шаг за 150 мсек. То есть частота шага будет равномерной.
Чудес не бывает. Бывают фокусы.
Аватара пользователя
Крафтер
Мастер
Сообщения: 211
Зарегистрирован: 27 мар 2015, 22:25
Репутация: 61
Настоящее имя: Андрей
Откуда: Ростов-на-Дону
Контактная информация:

Re: Самопальный интерпретатор

Сообщение Крафтер »

интерфейс.PNG (5227 просмотров) <a class='original' href='./download/file.php?id=102218&sid=60d788586015056925e440f75503f817&mode=view' target=_blank>Загрузить оригинал (58.01 КБ)</a>
src_CraftTool_rev349_rev344.zip
(268.41 КБ) 427 скачиваний
Новый алгоритм выдачи шагов. Шаги генерируются аппаратно, программа периодически корректирует их частоту.
Исправлено торможение (не хватало разрядности).
Число осей увеличено до 5 (интерпретатор пока поддерживает 3, и две в качестве подчиненных).
Добавлено переназначение номеров осей и поддержка подчинённых осей.
Добавлена возможность инвертирования осей.
Обработка концевиков интерполятором.
Добавлено чтение и исполнение скрипта движения к дому.

При приближении камеры сделано увеличение области под курсором.
Перспективная проекция изменена на ортогональную.
Добавлен сдвиг вида при зажатом Shift.
Добавлено отображение масштабной сетки.
Добавлены кнопки видов.
Рисование точек траектории.
Добавлена кнопка переключения на машинные координаты.
Добавлены тесты.
Аватара пользователя
Крафтер
Мастер
Сообщения: 211
Зарегистрирован: 27 мар 2015, 22:25
Репутация: 61
Настоящее имя: Андрей
Откуда: Ростов-на-Дону
Контактная информация:

Re: Самопальный интерпретатор

Сообщение Крафтер »

Ответить

Вернуться в «Windows / Mach»