Дано: шпиндель имеет двухпроводное дискретное управление по направлению/запуску/останову (если активен сигнал CW и неактивен сигнал CCW - вращение по часовой, если активен сигнал CCW и неактивен сигнал CW - вращение против, оба неактивны - останов, оба активны - запрещенное состояние), скорость задается по аналоговому каналу.
Linuxcnc, выполняя команду "M3", активирует сигнал шпиндель-энейбл и шпиндель-форвард (названия примерны), выполняя команду "M4" - шпиндель-энейбл и шпиндель-реверс, при выполнении команды "M5" - делает сигналы шпиндель-энейбл, шпиндель-форвард и шпиндель-реверс неактивными.
Linuxcnc позволяет выполнение произвольной последовательности кодов "M3" и "M4", не заботясь о необходимости останова шпинделя при смене направления вращения, что для реального шпинделя неприемлемо.
Вопрос к практикам, столкнувшимся с подобной проблемой: какой сценарий поведения системы при смене направления вращения шпинделя без промежуточного останова предпочтительнее с точки зрения минимизации ущерба?
- естоп (или программа кривая или оператор устал)
- игнорируем смену направления вращения, режем дальше
- останавливаем шпиндель
- другое
