Здравствуйте.
Я новичек в программировании при этом взялся написать программу для управления деревообрабатывающим станком.
Станок мой. Пишу ради интереса.
Управление осями написал, и дошел до самой главной части и тут полный затык. Абсолютный.
Понимаю, что задача простая но я не вижу решения.
Мой тупик, это калибровка осей.
Алгоритм достаточно простой, но при этом я в полной прострации.
Это должно работать так.
Ось движется в определенном направлении.
Энкодер дает неизвестное кол-во импульсов на оборот, при этом в энкодере есть выход Z срабатывающий на полный оборот винта. Оборотов много.
1. Нужно вычислить кол-во импульсов на оборот и запомнить это значение. пусть будет (Х). (Энкодеров несколько, они с разным кол-м импульсов, но принцип работы одинаков, хочу написать FB)
2. Каждый раз при срабатывании входа (Z) счетчик импульсов со входа (А) обнуляется.
Есть концевой выключатель, при срабатывании которого и начинается процесс калибровки.
2. После сработки концевика нужно вычислить сколько импульсов осталось выдать энкодеру на выходе (А) до завершения полного оборота. От (Х) отнимем текущее показание счетчика и получим остаток импульсов (Y) до полного оборота и нулевого положения.
3. отнимаем от (Y)-(T), где Т- кол-во импульсов для компенсации инерции двигателя. При достижении счетчиком значения (Y-T) останавливаем двигатель и ось долетает до нужного нам нуля по инерции. (в симуляторе T будет =0).
Привод.
Асинхронник 1230 об/мин с тормозом и редуктор 1/40. Энкодер на винте после редуктора.
Буду благодарен за помощь.
Фото станочка.
1_217_5301754850_IMG_20170530_105236.jpg