ПОЛЕЗНО GRBL Commander - автономный контроллер на ESP32

    Рекомендованный
  • #661
ОлегК!!!
Скачал, откомпилил, загрузил, проверил.
Чё то с совместными перемещениями XY глючит.
Начинает двигаться XY, но на какое то определённое расстояние и встает как лом проглотил. Кнопки не отпускал.
Проходят оси 8.332мм каждая, и встают.
Ща в исходник гляну.
 
ОлегК!!!
Проверил, всё в порядке. Совместное движение теперь работает Как надо.
Исправь в исходнике
while (currentOperation == OPERATION_MANUAL)
{
if (millis() - prevMillis > KEYS_CHECK_INTERVAL)
{
key_pressed = GetKey();
static bool ds = false;
if (!single_step && (key_pressed == KEY_X_RIGHT ||
key_pressed == KEY_Y_UP ||
key_pressed == KEY_X_LEFT ||
key_pressed == KEY_Z_DOWN ||
key_pressed == KEY_Y_DOWN ||
key_pressed == KEY_Z_UP ||
key_pressed == KEY_XpYp ||
key_pressed == KEY_XmYm ||
key_pressed == KEY_XpYm ||
key_pressed == KEY_XmYp:)
-тут была лишняя круглая скобка.
 
Исправь в исходнике
while (currentOperation == OPERATION_MANUAL)
{
if (millis() - prevMillis > KEYS_CHECK_INTERVAL)
{
key_pressed = GetKey();
static bool ds = false;
if (!single_step && (key_pressed == KEY_X_RIGHT ||
key_pressed == KEY_Y_UP ||
key_pressed == KEY_X_LEFT ||
key_pressed == KEY_Z_DOWN ||
key_pressed == KEY_Y_DOWN ||
key_pressed == KEY_Z_UP ||
key_pressed == KEY_XpYp ||
key_pressed == KEY_XmYm ||
key_pressed == KEY_XpYm ||
key_pressed == KEY_XmYp:)
-тут была лишняя круглая скобка.
А как же оно с лишней скобкой компилировалось? :eek:
 
  • Последнее редактирование:
Последнее редактирование:
ОлегК!!!
Всё же есть пролемка в ProbeZ().
Например: калибруемся по X, Y (X0, Y0) - ну и отошли от точки калибровки. Для удобств.
Индикация показывает отклонение от нулевой точки. Кстати и Z показывает отклонение от 0. (т.е при калибровке по щупу -высота щупа + последний прыжок.
Начинаем программу, где как обычно- Z идёт на безопасное расстояние, потом Команда X;Y на быстром ходу(G0) в зеро.
По X, Y всё проходит без сучка и задоринки.
По Z, в нашем случае (т.е, "не в нашем, а в вашем"- Операция Ы) (это про себя)
По второму джампу отскочили. Начинаем программу, а оно, САбака, за 0 берёт то, на что отскочили.
Хотя по команде Shift+SC XYZ - выходит как и положено в Нули.
Надо поразбираться с этим вопросом.
Сейчас детальку грызу. До утра будет грызть.
Завтра приступлю.
 
  • Последнее редактирование:
Последнее редактирование:
Всё же есть пролемка в ProbeZ().
Согласен.
Я, как обычно на смене, пришлось опять виртуально ковырять...
Вроде сейчас Zsc должна соответствовать правильному значению - я по бумажке проверил :)

ЗЫ: Проверил уже на станке, как по мне, теперь всё нормально и с учётом толщины и без учёта....
 
ОлегК!!!
Уже можно скачать?
 
Можно.
 
  • Последнее редактирование:
Последнее редактирование:
ОлегК!!!
И всё же какая то хрень(извините за выражение) выходит.(Т.е. нихрена "не выходит")
При обнулении с кнопок X0, Y0, Z0- всё идёт как по маслу.
Подошёл по одной оси -обнулился. Отъехал в Удобное место для калибровки другой оси- откалибровался. И так по всем осям.
Последнее положение не соответствует 0 заготовки.
Начинаем программу - Как и положено по программе - всё выполняется в соответствии с УП. Хотя Исходное положение Машинки было далеко от 0 заготовки.
Всё чин- чинарём.
Однако, при калибровке по Зет по щупу и начав программу с этого места(второго отскока+толщина щупа)- Зет выходит на 2ую величину последнего отскока+толщину проба/щупа,
По Команде SHIFT+Stop Z выходит на величину безопасного расстояния, т.е. опускается, т.к. величину (у меня была 3мм)
А оси X и Y вообще начинают уходить в непредсказуемое положении.
Но, если после калибровки по Зет проб или иные Пробы по осям и Выйти в SHIFT+SC XYZ
Всё срастается.
Можно отойти от точки "плавающего нуля" (так у нас назвали G54-G59) в нашем случае Координаты sc и начать работать с программой.
Не понятно, но здорово.
В принципе это можно оговорить в инструкции(Хелпе).
Но, SC XY и SHIFT+SC XYZ нужны, как правило, для экстренных случаев.
Хотя пользуюсь этой опцией регулярно.
Закончил одну программу над деталью. Выключил Машинку и пошёл спать.
На сл день - включаю машинку, проделываю известную процедуру и начинаю другую программу с теми же плавающими Нулями.
ОлегК!!!
Вопрос в сл.:
Чем отличается SC XY и SHIFT+SC XYZ от всяческих пробов?
Кстати ОлнгК!!!
В WiFiBidge -
void zeroAxis(char axis)
{
if (cnc_state != STATE_IDLE || lock) return;

switch (axis)
{
case 'X':
Xsc = Xm;
if (isHomingCycle) prefs.putFloat("Xsc", Xsc);
sendCommand:(char *)"G92X0.0");
break;
case 'Y':
Ysc = Ym;
if (isHomingCycle) prefs.putFloat("Ysc", Ysc);
sendCommand:(char *)"G92Y0.0");
break;
case 'Z':
Zsc = Zm;
if (isHomingCycle) prefs.putFloat("Zsc", Zsc);
sendCommand:(char *)"G92Z0.0");
break;
}
}
У вас было по всем осям "G92X0.0". У себя исправил.
Или не надо было?
 
  • Последнее редактирование:
Последнее редактирование:
Виктор,
Не уверен, что понял, но попробую воспроизвести.

Чем отличается SC XY и SHIFT+SC XYZ от всяческих пробов?
Станок переходит в машинные координаты последнего рабочего 0 либо в плоскости (X, Y), либо в пространстве (X, Y, Z).
Работает после поиска домашней позиции.

У вас было по всем осям "G92X0.0". У себя исправил.
Или не надо было?
Издержки копипаста, прошляпил, исправлю.
 
ОлегК!!!
Ещё вопрос вскочил!
У вас и в Канделе как-то по разному выполняются G92-
В канделе по G92 wcoX(координаты смещения, кажется) = Xm(машинные координаты)
Соответственно Xw = Xm-wcoX.
По этому в Каделе при обнулении какой либо оси - G92 пишется Xm в wcoX для текущего положения. Дальше всё просто. По выше упомянутой формуле
Xw = Xm-wcoX.
У Вас же сначала присваивается какие-то виртуальные значения, чему-то , а потом G92 X0.0. (к примеру)
Присвоить что-то в Xm или в wcoX мы не можем.
Это только для чтения.
ОлегК!!!
Просто хотелось бы пояснить мои непонятки.
Что касается Зет и прочих проб- просто необходимо в Хелпе указать - Обязательное выход в SC XY и/или SHIFT+SC XYZ после опробирования.
 
  • Последнее редактирование:
Последнее редактирование:
У Вас же сначала присваивается какие-то виртуальные значения, чему-то , а потом G92 X0.0. (к примеру)
Где конкретно это происходит? Файл, номер строки можете указать?
Виктор, такой вопрос - покажите, что у вас выдаст Кэндл по команде $#
 
В команде
void zero_X()
{
if (cnc_state != STATE_IDLE || !cnc_connection) return;
if (isHomingCycle)
{
Xsc = Xm;
prefs.putFloat("Xsc", Xsc);
}
returnCode = cnc.send:(char *)"G92X0.0", 1, 1, 1);
responceBuffer = cnc.getBuffer();
}
 
Сверху Снизу
Обнаружен блокировщик рекламы AdBlock

МЫ ДОГАДЫВАЕМСЯ, ЧТО РЕКЛАМА ВАС РАЗДРАЖАЕТ!

Конечно, Ваше программное обеспечение для блокировки рекламы отлично справляется с блокировкой рекламы на нашем сайте, но оно также блокирует полезные функции. Мы стараемся для Вас и не обязываем Вас донатить и скидывать денег на наши кошельки, чтобы пользоваться форумом, но реклама это единственное, что позволяет поддерживать проект и развивать его.

Спасибо за Ваше понимание!

Я отключил свой AdBlock    Нет, я не буду ничего отключать