а зачем? и одного достаточно. я так понимаю дерганье ногой - это софтовые дела.
GRBL имеет критический дефект?
- Курдль
- Мастер
- Сообщения: 1993
- Зарегистрирован: 20 мар 2018, 16:55
- Репутация: 259
- Настоящее имя: Курдль Энтеропийский
- Откуда: Msk
- Контактная информация:
Re: GRBL имеет критический дефект?
И что в этой связи предпринять?
Я предсказал наименьшее зло. Если учесть инерцию движущихся частей, то да - куда угодно.
Ну вроде дёргать туда-обратно сигнал Dir, пока не поступает сигнал Step не опасно. Я в этом не вижу проблемы.
UPD: я испытал контроллер на станке и заметил, что ШД оси Z (на который в этой УП ничего не должно поступать) вздрагивает при каждом мигании светодиода DISABLE (чувствуется на ощупь). Это печально. Наработка на отказ...
Мой сайт: https://cnc1310.ru
-
- Мастер
- Сообщения: 474
- Зарегистрирован: 25 авг 2018, 10:11
- Репутация: 152
- Настоящее имя: Дмитрий
- Откуда: Киров
- Контактная информация:
Re: GRBL имеет критический дефект?
Исходники посмотреть или мануал накрайняк почитать:
$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.
-
- Мастер
- Сообщения: 474
- Зарегистрирован: 25 авг 2018, 10:11
- Репутация: 152
- Настоящее имя: Дмитрий
- Откуда: Киров
- Контактная информация:
Re: GRBL имеет критический дефект?
Код: Выделить всё
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)
- Курдль
- Мастер
- Сообщения: 1993
- Зарегистрирован: 20 мар 2018, 16:55
- Репутация: 259
- Настоящее имя: Курдль Энтеропийский
- Откуда: Msk
- Контактная информация:
Re: GRBL имеет критический дефект?
Да, признаю. Мне казалось, что Grbl Settings я знаю достаточно хорошо. А на самом деле видимо в начале изучения я этим параметром принебрёг.
Надо повторить тесты с новым значением.
Однако предположим, что я выставлю параметр $1 = 254. Значит в процессе выполнения УП может сложиться ситуация, когда исполнительный механизм не движется 0.254 с (лазер прожигает затравочное отверстие, например) и тогда ток со всех ШД снимется с описанными выше последствиями. Но этот риск я готов принять.
Мой сайт: https://cnc1310.ru
-
- Мастер
- Сообщения: 1476
- Зарегистрирован: 23 июн 2022, 14:13
- Репутация: 55
- Настоящее имя: Максим
- Контактная информация:
Re: GRBL имеет критический дефект?
так выставите 255 и насколько я понял драйвера будут всегда под током. а выключить как?
все равно тумблер
все равно тумблер
-
- Мастер
- Сообщения: 1476
- Зарегистрирован: 23 июн 2022, 14:13
- Репутация: 55
- Настоящее имя: Максим
- Контактная информация:
Re: GRBL имеет критический дефект?
так выставите 255 и насколько я понял драйвера будут всегда под током. а выключить как?
все равно тумблер
все равно тумблер
- Курдль
- Мастер
- Сообщения: 1993
- Зарегистрирован: 20 мар 2018, 16:55
- Репутация: 259
- Настоящее имя: Курдль Энтеропийский
- Откуда: Msk
- Контактная информация:
Re: GRBL имеет критический дефект?
Выставил. Однако ничего не изменилось. Хотя казалось бы, что 250 мс надежно перекроют подозрительные интервалы.
Значит все-таки что-то с этим кодом не так. Может быть это мкс, а не мс?..
Выставил $1 = 255. Это да, - всё изменило. Теперь ШД постоянно под током и никаких "пробоев" не наблюдается.
Мой сайт: https://cnc1310.ru
-
- Мастер
- Сообщения: 228
- Зарегистрирован: 18 июн 2019, 08:43
- Репутация: 36
- Настоящее имя: Андрей
- Контактная информация:
Re: GRBL имеет критический дефект?
Сотая строка в settings.h:
uint8_t stepper_idle_lock_time; // If max value 255, steppers do not disable.
Значение по умолчанию выбирается в зависимости от типа станка. Для каких-то 25, для других 255.
- Курдль
- Мастер
- Сообщения: 1993
- Зарегистрирован: 20 мар 2018, 16:55
- Репутация: 259
- Настоящее имя: Курдль Энтеропийский
- Откуда: Msk
- Контактная информация:
Re: GRBL имеет критический дефект?
Я выставил 255. Возможно на всех Grbl-устройствах буду делать так.
Однако осадочек остался...
Хотелось бы понять, почему алгоритм не работает, как описано (в первой своей части):
Мой сайт: https://cnc1310.ru
-
- Мастер
- Сообщения: 228
- Зарегистрирован: 18 июн 2019, 08:43
- Репутация: 36
- Настоящее имя: Андрей
- Контактная информация:
Re: GRBL имеет критический дефект?
Эта переменная встречается в одном месте. 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); }
}
// 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); }
}
- Курдль
- Мастер
- Сообщения: 1993
- Зарегистрирован: 20 мар 2018, 16:55
- Репутация: 259
- Настоящее имя: Курдль Энтеропийский
- Откуда: Msk
- Контактная информация:
Re: GRBL имеет критический дефект?
Значит все-таки Simen Skogsrud что-то недоработал
Любое значение, кроме 255, не изменяет ни-че-го.
Мой сайт: https://cnc1310.ru
-
- Мастер
- Сообщения: 474
- Зарегистрирован: 25 авг 2018, 10:11
- Репутация: 152
- Настоящее имя: Дмитрий
- Откуда: Киров
- Контактная информация:
Re: GRBL имеет критический дефект?
А это что тогда?))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); }
}
-
- Мастер
- Сообщения: 228
- Зарегистрирован: 18 июн 2019, 08:43
- Репутация: 36
- Настоящее имя: Андрей
- Контактная информация:
Re: GRBL имеет критический дефект?
А я так понял, что выполнение любого из перечисленных в if условий формирует задержку и устанавливает в true значение переменной pin_state. Фигурная скобка закрывается после этих действий.
-
- Мастер
- Сообщения: 997
- Зарегистрирован: 19 июл 2018, 07:46
- Репутация: 193
- Откуда: Иркутск
- Контактная информация:
Re: GRBL имеет критический дефект?
Люди имеют свойство ошибаться
Именно здесь где-то кроется причина, управление enable появилось в одном из последних коммитов Simen'a https://github.com/grbl/grbl/commit/c2a ... 3a594c602e
Всю остальную ботву с задержками выключения накрутил потом уже Sungeun K. Jeon, и действительно менять их почти бесполезно, это работает не так. Там простой delay для того, чтобы моторы успели остановиться, а не таймаут по неактивности движения.
- Курдль
- Мастер
- Сообщения: 1993
- Зарегистрирован: 20 мар 2018, 16:55
- Репутация: 259
- Настоящее имя: Курдль Энтеропийский
- Откуда: Msk
- Контактная информация:
Re: GRBL имеет критический дефект?
А как на Ваш взгляд идет развитие Grbl? Это вроде opensourse продукт, который должен совершенствоваться и улучшаться сообществом.
Но мне кажется, что все доработки поверхностные и в лучшем случае относятся к увеличению числа осей или к HAL.
Мой сайт: https://cnc1310.ru
-
- Мастер
- Сообщения: 997
- Зарегистрирован: 19 июл 2018, 07:46
- Репутация: 193
- Откуда: Иркутск
- Контактная информация:
Re: GRBL имеет критический дефект?
Извините, не слежу за темой. Но думаю, что оригинальный grbl, который на atmega, никуда особо не движется, поскольку ресурсов контроллера маловато и желающих пописать серьезные вещи под эту устаревшую платформу немного. Возможно на платформе stm32 поинтереснее будет, ну и 3д принтеры придают некоторый импульс. Хотя, насколько я знаю, основные алгоритмы расчета движения и генерации шагов не меняются, там все тот же код.
То, что вы нашли - это пограничный случай видимо. Я на фрезере никогда grbl не использовал и затея с отключением двигателей мне вообще кажется бредовой. На мой взгляд, после хоуминга и до выключения станка из розетки двигатели должны быть постоянно под питанием, благо настройка для этого имеется. Отключение двигателей имеет некоторый смысл на 3д принтере, да и то не факт.
- hmnijp
- Мастер
- Сообщения: 1723
- Зарегистрирован: 20 авг 2017, 15:02
- Репутация: 527
- Настоящее имя: Константин
- Откуда: Ульяновск
- Контактная информация:
Re: GRBL имеет критический дефект?
типичное для драйверов шд