Понадобился контролер сервопривода, там, правда, не шаговик,
коллекторный. Сделал сам, так как из-за санкцией и цен, покупать
готовый на модбас было признано не целесообразным. Управляется по Модбас.
Блюдёт концевики, текущую позицию по инкрементальному энкодеру. Ведёт учёт интеграла квадрата тока двигателя для защиты от перегрева (прошита паспортная время-токовая характеристика привода), выдаёт значение условного нагрева 0..100% и мгновенный ток привода в мА. Обнаруживает КЗ, отображает в флагах регистра состояния. Обнаруживает просадку питания, при просадке снижает ток двигателя. Обнаруживает перенапряжение на шине +24В.
Управляется просто: записываешь в регистр желаемой позиции число. Привод едет куда указано. Если потерялась позиция, нужно сначала скомандовать "0". Едет до концевика нулевой позиции, инициализирует энкодер.
В принципе, реализовать электронные концевики - добавить пару строк в обработчик превышения тока.