- Регистрация
- 11.06.2019
- Сообщения
- 3 463
- Реакции
- 7 339
- Баллы
- 188
- Город
- Печора
- Имя
- Олег
- Станок
- CNC3040Ы
- Прошивка
- 1.1f
-
Рекомендованный
- #811
Сейчас поле у моего станка несколько больше предыдущего, так получилось столкнуться с такой штукой:
Иногда, при длительном удержании кнопки перемещения в режиме Jog (непрерывное) и отпускании её, ось останавливается, а затем может прокатиться ещё на некоторое расстояние. Эффект более заметен, если скорость перемещения была от 2000 мм/мин и выше. Кнопка пауза/стоп перемещение останавливает, но пока её нажмёшь...
Это не проявляется при коротких пробежках, когда кнопка не постоянно удерживается, а жмётся "тычками", периодически.
Полазил по коду - вроде всё нормально, при отпускании кнопки перемещения передаётся команда 0x85, что должно отменять движение, но лишняя пробежка всё равно вылазит. На гитхабе GRBL, в "проблемах" есть несколько тем с подобной заморочкой, одно решение мне показалось вполне годным.
Формула, которую я использую для расчёта шага перемещения при команде Jog расписана тут. И оно, вроде, работает до определённого момента - пока команды поступают в планировщик GRBL и находятся только в нём (их 14 штук + 1 в "оперативном обслуживании"), то команда отмены движения благополучно очищает буфер планировщика и ось благополучно останавливается. Если планировщик заполнен, то несколько команд могут "запрыгнуть" в буфер сериал-порта, а при очистке буфера планировщика и останове оси, они благополучно проходят дальше и, соответственно, вызывают лишние "телодвижения".
При параметре GRBL $10=3 (по дефолту 1), в строку отчёта входит дополнительная инфа в виде Bf:15,128, где первое число - количество доступных блоков планировщика, второе - количество доступных байт в буфере RX сериал-порта. С этим параметром можно отслеживать заполненность планировщика и ограничивать поступление команд перемещения.
Это было реализовано и вышеупомянутыйде эффект пока не проявляется.
При $10=3 Кэндл работает прекрасно, поэтому добавлю при старте ""Коммандера" проверку, что записано в этом параметре и если значение не 3, то оператору будет предложено установить $10=3 автоматом. Можно проигнорировать этот запрос и не изменять значение - в этом случае всё будет работать как и прежде, т.е с возможным проявлением "перевыбега".
Иногда, при длительном удержании кнопки перемещения в режиме Jog (непрерывное) и отпускании её, ось останавливается, а затем может прокатиться ещё на некоторое расстояние. Эффект более заметен, если скорость перемещения была от 2000 мм/мин и выше. Кнопка пауза/стоп перемещение останавливает, но пока её нажмёшь...
Это не проявляется при коротких пробежках, когда кнопка не постоянно удерживается, а жмётся "тычками", периодически.
Полазил по коду - вроде всё нормально, при отпускании кнопки перемещения передаётся команда 0x85, что должно отменять движение, но лишняя пробежка всё равно вылазит. На гитхабе GRBL, в "проблемах" есть несколько тем с подобной заморочкой, одно решение мне показалось вполне годным.
Формула, которую я использую для расчёта шага перемещения при команде Jog расписана тут. И оно, вроде, работает до определённого момента - пока команды поступают в планировщик GRBL и находятся только в нём (их 14 штук + 1 в "оперативном обслуживании"), то команда отмены движения благополучно очищает буфер планировщика и ось благополучно останавливается. Если планировщик заполнен, то несколько команд могут "запрыгнуть" в буфер сериал-порта, а при очистке буфера планировщика и останове оси, они благополучно проходят дальше и, соответственно, вызывают лишние "телодвижения".
При параметре GRBL $10=3 (по дефолту 1), в строку отчёта входит дополнительная инфа в виде Bf:15,128, где первое число - количество доступных блоков планировщика, второе - количество доступных байт в буфере RX сериал-порта. С этим параметром можно отслеживать заполненность планировщика и ограничивать поступление команд перемещения.
Это было реализовано и вышеупомянутый
При $10=3 Кэндл работает прекрасно, поэтому добавлю при старте ""Коммандера" проверку, что записано в этом параметре и если значение не 3, то оператору будет предложено установить $10=3 автоматом. Можно проигнорировать этот запрос и не изменять значение - в этом случае всё будет работать как и прежде, т.е с возможным проявлением "перевыбега".