Страница 1 из 1

Обороты шпинделя в HAL

Добавлено: 15 фев 2019, 12:41
atomichammer
Добрый день
Продолжаю осваивать и затачивать LinuxCNC под себя.
Поставил управление оборотами по аналогу, все хорошо работает (нет). Теперь хочется в интерфейсе видеть обороты (заданные, конечно, а не реальные). И вот тут я застрял.
Еще не до конца понимаю логику сигналов и пинов в HAL и никак не могу прикрутить обороты к прогресс-бару.
Исходные данные таковы:
Вот это в основном HAL файле:

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

net spindle-cmd-rpm => pwmgen.0.value
net spindle-on <= motion.spindle-on => pwmgen.0.enable
net spindle-pwm <= pwmgen.0.pwm
setp parport.0.pin-17-out-invert 1
net spindle-on motion.spindle-on => parport.0.pin-17-out
setp pwmgen.0.pwm-freq 200.0
setp pwmgen.0.scale 24000
setp pwmgen.0.dither-pwm true
net spindle-cmd-rpm     <= motion.spindle-speed-out
net spindle-cmd-rpm-abs <= motion.spindle-speed-out-abs
net spindle-cmd-rps     <= motion.spindle-speed-out-rps
net spindle-cmd-rps-abs <= motion.spindle-speed-out-rps-abs
что написать в custom_postgui.hal, чтобы связать spindle-cmd-rpm и pyvcp.spindle_rpm? Я уже даже методом перебора пошел и все равно ничего не получилось.

Re: Обороты шпинделя в HAL

Добавлено: 15 фев 2019, 13:17
atomichammer
Вот стоило создать тему - тут же все заработало...
НУ еще вопрос вдогонку: где настраивается максимум оборотов и шаг приращения по F11-F12? Кагбе работает все правильно, но добавлять (виртуально) оборотов можно бесконечно... И шаг мелкий, по 100

Re: Обороты шпинделя в HAL

Добавлено: 15 фев 2019, 13:29
atomichammer
Быстрый ответ: нигде не настраивается и шаг нигде не меняется (кроме исходников)

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

case EMCMOT_SPINDLE_INCREASE:
	    rtapi_print_msg(RTAPI_MSG_DBG, "SPINDLE_INCREASE");
	    if (emcmotStatus->spindle.speed > 0) {
		emcmotStatus->spindle.speed += 100; //FIXME - make the step a HAL parameter
	    } else if (emcmotStatus->spindle.speed < 0) {
		emcmotStatus->spindle.speed -= 100;
	    }
	    break;

	case EMCMOT_SPINDLE_DECREASE:
	    rtapi_print_msg(RTAPI_MSG_DBG, "SPINDLE_DECREASE");
	    if (emcmotStatus->spindle.speed > 100) {
		emcmotStatus->spindle.speed -= 100; //FIXME - make the step a HAL parameter
	    } else if (emcmotStatus->spindle.speed < -100) {
		emcmotStatus->spindle.speed += 100;
	    }
	    break;