GRBL имеет критический дефект?

Mach, популярные и не очень CAD, CAM. Обсуждение и разработка программ для управления станками.
vtgmfg
Мастер
Сообщения: 1475
Зарегистрирован: 23 июн 2022, 14:13
Репутация: 55
Настоящее имя: Максим
Контактная информация:

Re: GRBL имеет критический дефект?

Сообщение vtgmfg »

Rom327 писал(а): 31 авг 2023, 20:17
vtgmfg писал(а): хоть 100 контроллеров с одинаковым поведением
Есть опыт испытания 100 контроллеров?
а зачем? и одного достаточно. я так понимаю дерганье ногой - это софтовые дела.
vtgmfg
Мастер
Сообщения: 1475
Зарегистрирован: 23 июн 2022, 14:13
Репутация: 55
Настоящее имя: Максим
Контактная информация:

Re: GRBL имеет критический дефект?

Сообщение vtgmfg »

Курдль писал(а): в которых этот сигнал распаян на плате вместе с драйверами ШД?
да сигнал то может использоваться по ситуации. например ШД не нагружен и в режиме ожидания - почему бы не снять ток весь или частично. микрошагами далеко не везде озабочены.
Аватара пользователя
Курдль
Мастер
Сообщения: 1992
Зарегистрирован: 20 мар 2018, 16:55
Репутация: 259
Настоящее имя: Курдль Энтеропийский
Откуда: Msk
Контактная информация:

Re: GRBL имеет критический дефект?

Сообщение Курдль »

vtgmfg писал(а): почему бы не принять это поведение контроллера за баг?
И что в этой связи предпринять?
vtgmfg писал(а): почему в магнитостабильное? он может куда угодно сколько успеет уехать.
Я предсказал наименьшее зло. Если учесть инерцию движущихся частей, то да - куда угодно.
Rom327 писал(а): все бы ничего, но Dir X тоже подглючивает, а это чревато...
Ну вроде дёргать туда-обратно сигнал Dir, пока не поступает сигнал Step не опасно. Я в этом не вижу проблемы.

UPD: я испытал контроллер на станке и заметил, что ШД оси Z (на который в этой УП ничего не должно поступать) вздрагивает при каждом мигании светодиода DISABLE (чувствуется на ощупь). Это печально. Наработка на отказ...
Мой сайт: https://cnc1310.ru
vtgmfg
Мастер
Сообщения: 1475
Зарегистрирован: 23 июн 2022, 14:13
Репутация: 55
Настоящее имя: Максим
Контактная информация:

Re: GRBL имеет критический дефект?

Сообщение vtgmfg »

Курдль писал(а): И что в этой связи предпринять?
я поставил бы тумблер на 2 положения - вкл/выкл
Курдль писал(а): вздрагивает при каждом мигании светодиода DISABLE (чувствуется на ощупь). Это печально. Наработка на отказ...
а это микрошаг вкл/выкл. он же никуда не делся
D.L.
Мастер
Сообщения: 474
Зарегистрирован: 25 авг 2018, 10:11
Репутация: 152
Настоящее имя: Дмитрий
Откуда: Киров
Контактная информация:

Re: GRBL имеет критический дефект?

Сообщение D.L. »

Курдль писал(а): И что в этой связи предпринять?
Исходники посмотреть или мануал накрайняк почитать:
$1 - Step idle delay, milliseconds Every time your steppers complete a motion and come to a stop, Grbl will delay disabling the steppers by this value. OR, you can always keep your axes enabled (powered so as to hold position) by setting this value to the maximum 255 milliseconds.
D.L.
Мастер
Сообщения: 474
Зарегистрирован: 25 авг 2018, 10:11
Репутация: 152
Настоящее имя: Дмитрий
Откуда: Киров
Контактная информация:

Re: GRBL имеет критический дефект?

Сообщение D.L. »

Код: Выделить всё

const __flash settings_t defaults = {\
    .pulse_microseconds = DEFAULT_STEP_PULSE_MICROSECONDS,
    .stepper_idle_lock_time = DEFAULT_STEPPER_IDLE_LOCK_TIME,

Код: Выделить всё

#define DEFAULT_STEPPER_IDLE_LOCK_TIME 25 // msec (0-254, 255 keeps steppers enabled)
Аватара пользователя
Курдль
Мастер
Сообщения: 1992
Зарегистрирован: 20 мар 2018, 16:55
Репутация: 259
Настоящее имя: Курдль Энтеропийский
Откуда: Msk
Контактная информация:

Re: GRBL имеет критический дефект?

Сообщение Курдль »

D.L. писал(а): Исходники посмотреть или мануал накрайняк почитать:
Да, признаю. Мне казалось, что Grbl Settings я знаю достаточно хорошо. А на самом деле видимо в начале изучения я этим параметром принебрёг.
Надо повторить тесты с новым значением.
Однако предположим, что я выставлю параметр $1 = 254. Значит в процессе выполнения УП может сложиться ситуация, когда исполнительный механизм не движется 0.254 с (лазер прожигает затравочное отверстие, например) и тогда ток со всех ШД снимется с описанными выше последствиями. Но этот риск я готов принять.
Мой сайт: https://cnc1310.ru
vtgmfg
Мастер
Сообщения: 1475
Зарегистрирован: 23 июн 2022, 14:13
Репутация: 55
Настоящее имя: Максим
Контактная информация:

Re: GRBL имеет критический дефект?

Сообщение vtgmfg »

так выставите 255 и насколько я понял драйвера будут всегда под током. а выключить как?
все равно тумблер
vtgmfg
Мастер
Сообщения: 1475
Зарегистрирован: 23 июн 2022, 14:13
Репутация: 55
Настоящее имя: Максим
Контактная информация:

Re: GRBL имеет критический дефект?

Сообщение vtgmfg »

так выставите 255 и насколько я понял драйвера будут всегда под током. а выключить как?
все равно тумблер
Аватара пользователя
Курдль
Мастер
Сообщения: 1992
Зарегистрирован: 20 мар 2018, 16:55
Репутация: 259
Настоящее имя: Курдль Энтеропийский
Откуда: Msk
Контактная информация:

Re: GRBL имеет критический дефект?

Сообщение Курдль »

Курдль писал(а): Однако предположим, что я выставлю параметр $1 = 254.
Выставил. Однако ничего не изменилось. Хотя казалось бы, что 250 мс надежно перекроют подозрительные интервалы.
Значит все-таки что-то с этим кодом не так. Может быть это мкс, а не мс?..
Выставил $1 = 255. Это да, - всё изменило. Теперь ШД постоянно под током и никаких "пробоев" не наблюдается.
Мой сайт: https://cnc1310.ru
Pens
Мастер
Сообщения: 228
Зарегистрирован: 18 июн 2019, 08:43
Репутация: 36
Настоящее имя: Андрей
Контактная информация:

Re: GRBL имеет критический дефект?

Сообщение Pens »

Курдль писал(а): 31 авг 2023, 22:30 Значит все-таки что-то с этим кодом не так. Может быть это мкс, а не мс?..
Выставил $1 = 255. Это да, - всё изменило. Теперь ШД постоянно под током и никаких "пробоев" не наблюдается.
Сотая строка в settings.h:

uint8_t stepper_idle_lock_time; // If max value 255, steppers do not disable.

Значение по умолчанию выбирается в зависимости от типа станка. Для каких-то 25, для других 255.
Аватара пользователя
Курдль
Мастер
Сообщения: 1992
Зарегистрирован: 20 мар 2018, 16:55
Репутация: 259
Настоящее имя: Курдль Энтеропийский
Откуда: Msk
Контактная информация:

Re: GRBL имеет критический дефект?

Сообщение Курдль »

Pens писал(а): uint8_t stepper_idle_lock_time; // If max value 255, steppers do not disable.
Я выставил 255. Возможно на всех Grbl-устройствах буду делать так.
Однако осадочек остался...
Хотелось бы понять, почему алгоритм не работает, как описано (в первой своей части):
D.L. писал(а): $1 - Step idle delay, milliseconds Every time your steppers complete a motion and come to a stop, Grbl will delay disabling the steppers by this value. OR, you can always keep your axes enabled (powered so as to hold position) by setting this value to the maximum 255 millisec
Мой сайт: https://cnc1310.ru
Pens
Мастер
Сообщения: 228
Зарегистрирован: 18 июн 2019, 08:43
Репутация: 36
Настоящее имя: Андрей
Контактная информация:

Re: GRBL имеет критический дефект?

Сообщение Pens »

Эта переменная встречается в одном месте. Stepper.c с 235 строки:

// Stepper shutdown
void st_go_idle()
{
// Disable Stepper Driver Interrupt. Allow Stepper Port Reset Interrupt to finish, if active.
TIMSK1 &= ~(1<<OCIE1A); // Disable Timer1 interrupt
TCCR1B = (TCCR1B & ~((1<<CS12) | (1<<CS11))) | (1<<CS10); // Reset clock to no prescaling.
busy = false;

// Set stepper driver idle state, disabled or enabled, depending on settings and circumstances.
bool pin_state = false; // Keep enabled.
if (((settings.stepper_idle_lock_time != 0xff) || sys_rt_exec_alarm || sys.state == STATE_SLEEP) && sys.state != STATE_HOMING) {
// Force stepper dwell to lock axes for a defined amount of time to ensure the axes come to a complete
// stop and not drift from residual inertial forces at the end of the last movement.
delay_ms(settings.stepper_idle_lock_time);
pin_state = true; // Override. Disable steppers.
}
if (bit_istrue(settings.flags,BITFLAG_INVERT_ST_ENABLE)) { pin_state = !pin_state; } // Apply pin invert.
if (pin_state) { STEPPERS_DISABLE_PORT |= (1<<STEPPERS_DISABLE_BIT); }
else { STEPPERS_DISABLE_PORT &= ~(1<<STEPPERS_DISABLE_BIT); }
}
Аватара пользователя
Курдль
Мастер
Сообщения: 1992
Зарегистрирован: 20 мар 2018, 16:55
Репутация: 259
Настоящее имя: Курдль Энтеропийский
Откуда: Msk
Контактная информация:

Re: GRBL имеет критический дефект?

Сообщение Курдль »

Pens писал(а): Эта переменная встречается в одном месте.
Значит все-таки Simen Skogsrud что-то недоработал :)
Любое значение, кроме 255, не изменяет ни-че-го.
Мой сайт: https://cnc1310.ru
D.L.
Мастер
Сообщения: 474
Зарегистрирован: 25 авг 2018, 10:11
Репутация: 152
Настоящее имя: Дмитрий
Откуда: Киров
Контактная информация:

Re: GRBL имеет критический дефект?

Сообщение D.L. »

Pens писал(а): 01 сен 2023, 10:23 Эта переменная встречается в одном месте. Stepper.c с 235 строки:

// Stepper shutdown
void st_go_idle()
{
// Disable Stepper Driver Interrupt. Allow Stepper Port Reset Interrupt to finish, if active.
TIMSK1 &= ~(1<<OCIE1A); // Disable Timer1 interrupt
TCCR1B = (TCCR1B & ~((1<<CS12) | (1<<CS11))) | (1<<CS10); // Reset clock to no prescaling.
busy = false;

// Set stepper driver idle state, disabled or enabled, depending on settings and circumstances.
bool pin_state = false; // Keep enabled.
if (((settings.stepper_idle_lock_time != 0xff) || sys_rt_exec_alarm || sys.state == STATE_SLEEP) && sys.state != STATE_HOMING) {
// Force stepper dwell to lock axes for a defined amount of time to ensure the axes come to a complete
// stop and not drift from residual inertial forces at the end of the last movement.
delay_ms(settings.stepper_idle_lock_time);
pin_state = true; // Override. Disable steppers.
}
if (bit_istrue(settings.flags,BITFLAG_INVERT_ST_ENABLE)) { pin_state = !pin_state; } // Apply pin invert.
if (pin_state) { STEPPERS_DISABLE_PORT |= (1<<STEPPERS_DISABLE_BIT); }
else { STEPPERS_DISABLE_PORT &= ~(1<<STEPPERS_DISABLE_BIT); }
}
А это что тогда?))
Pens
Мастер
Сообщения: 228
Зарегистрирован: 18 июн 2019, 08:43
Репутация: 36
Настоящее имя: Андрей
Контактная информация:

Re: GRBL имеет критический дефект?

Сообщение Pens »

А я так понял, что выполнение любого из перечисленных в if условий формирует задержку и устанавливает в true значение переменной pin_state. Фигурная скобка закрывается после этих действий.
Kost_irk
Мастер
Сообщения: 997
Зарегистрирован: 19 июл 2018, 07:46
Репутация: 193
Откуда: Иркутск
Контактная информация:

Re: GRBL имеет критический дефект?

Сообщение Kost_irk »

Курдль писал(а): Неужели гениальный Simen Svale Skogsrud мог где-то накосячить?
Люди имеют свойство ошибаться
Курдль писал(а): Значит все-таки Simen Skogsrud что-то недоработал
Именно здесь где-то кроется причина, управление enable появилось в одном из последних коммитов Simen'a https://github.com/grbl/grbl/commit/c2a ... 3a594c602e
Всю остальную ботву с задержками выключения накрутил потом уже Sungeun K. Jeon, и действительно менять их почти бесполезно, это работает не так. Там простой delay для того, чтобы моторы успели остановиться, а не таймаут по неактивности движения.
Аватара пользователя
Курдль
Мастер
Сообщения: 1992
Зарегистрирован: 20 мар 2018, 16:55
Репутация: 259
Настоящее имя: Курдль Энтеропийский
Откуда: Msk
Контактная информация:

Re: GRBL имеет критический дефект?

Сообщение Курдль »

Kost_irk писал(а): Именно здесь где-то кроется причина, управление enable появилось в одном из последних коммитов Simen'a
А как на Ваш взгляд идет развитие Grbl? Это вроде opensourse продукт, который должен совершенствоваться и улучшаться сообществом.
Но мне кажется, что все доработки поверхностные и в лучшем случае относятся к увеличению числа осей или к HAL.
Мой сайт: https://cnc1310.ru
Kost_irk
Мастер
Сообщения: 997
Зарегистрирован: 19 июл 2018, 07:46
Репутация: 193
Откуда: Иркутск
Контактная информация:

Re: GRBL имеет критический дефект?

Сообщение Kost_irk »

Курдль писал(а): А как на Ваш взгляд идет развитие Grbl?
Извините, не слежу за темой. Но думаю, что оригинальный grbl, который на atmega, никуда особо не движется, поскольку ресурсов контроллера маловато и желающих пописать серьезные вещи под эту устаревшую платформу немного. Возможно на платформе stm32 поинтереснее будет, ну и 3д принтеры придают некоторый импульс. Хотя, насколько я знаю, основные алгоритмы расчета движения и генерации шагов не меняются, там все тот же код.
То, что вы нашли - это пограничный случай видимо. Я на фрезере никогда grbl не использовал и затея с отключением двигателей мне вообще кажется бредовой. На мой взгляд, после хоуминга и до выключения станка из розетки двигатели должны быть постоянно под питанием, благо настройка для этого имеется. Отключение двигателей имеет некоторый смысл на 3д принтере, да и то не факт.
Аватара пользователя
hmnijp
Мастер
Сообщения: 1720
Зарегистрирован: 20 авг 2017, 15:02
Репутация: 526
Настоящее имя: Константин
Откуда: Ульяновск
Контактная информация:

Re: GRBL имеет критический дефект?

Сообщение hmnijp »

2023-07-09 16-13-32.jpg (1548 просмотров) <a class='original' href='./download/file.php?id=208965&sid=eb483c007c7ed20fb80d16efbfd69ad4&mode=view' target=_blank>Загрузить оригинал (86.65 КБ)</a>
типичное для драйверов шд
Ответить

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