Интересно сделать систему обратной связи по линейкам для ЧПУ или начать, чтобы кто-то подхватил (готов со своей стороны помочь в написании кода для контролера, по мере сил). Так сложилось, что у меня уже есть такая система, поэтому интерес у меня скорее академический.
Основная идея, получить блок, который реализует обратную связь по линейкам/энкодерам для контролеров и программой ЧПУ без обратной связи с минимальными фин. затратами, с кодом под GPL. Данная идея возникла случайно, благодаря aftaev и моему, замечу не скромному оптимизму
Хотелось бы в общих чертах, понять как все это работает.
У меня есть свои мысли по данному поводу, буду благодарен если Вы подтвердите или опровергните их. Может расскажите о подводных камнях, любой помощи буду признателен.
Отбросим такие мелочи, как контролер, библиотеки, код и т.д. Интересна сама суть процесса, вот как она мне видеться:
1. Между контролером ЧПУ и драйвером шагового двигателя ставится блок управления, который вносит корректировку в движение по каждой оси.
2. От контролера заводим в блок управления STEP\DIR\ENABLE, из блока управления пробрасываем STEP\DIR\ENABLE.
3. К блоку подключаем 3 линейки.
Контролер генерирует импульсы STEP\DIR которые передает в блок управления. Блок управления пробрасывает каждый импульс на драйвер шагового двигателя, после каждого импульса проверяет положение линейки, добавляет импульсы (возможно через ПИД, пока не понимаю, как его прикрутить).
Немного подробнее, импульсы от контролера идут с частотой в зависимости от скорости перемещения. Когда мы отправляем G0 X100, то Mach3 берет данные по максимальной скорости оборотов для G0. К примеру 1000 оборотов, ШВП пусть будет с шагом 5мм, получаем 5 метров в минуту и около 84мм в секуду. В одном миллиметре пусть будет 320 шагов (1/16 микрошаг), получается в секунду при такой скорости нужно сформировать 26880 импульсов, пока грубо округлим до 27Khz. Получается каждые 0,000037c или 37 миллисекунд идет импульс, определенной длины.
Блок управления хранит в себе настройки по кол-во шагов в 1мм.
Пробрасывая каждый шаг на драйвер шагового двигателя у нас есть около 37 миллисекунд до следующего импульса, мы смотрим после каждого шага.
Рассмотрим линейку.
Максимальная скорость линейки 60м\мин, 120м\мин, в секунду минимум 1м. В метре 1000 миллиметров, разрешение 0,001 получается 1Mhz. Да там будут еще расчеты и т.д. грубо возьмем до 500Khz. Получается, что после изменения шага, мы тут же получаем изменение положения, примерно через 2 миллисекунды.
Если мои размышления верны, то получается у нас есть время около 35 миллисекунд после каждого шага, для внесения поправки. Но тут возникает вопрос, с какой скоростью может работать шаговый драйвер, к примеру EM402 всего 50KhZ максимум, что можно выжать 1 шаг на исправление в 1 шаге. Мои AM882 дают до 200Khz, это примерно 7 шагов между каждым шагом.
Такие заключения лучше проводить, после просмотра осциллографом или логическим анализатором, но до станка доберусь не скоро, тем более с такими инструментами. А пока бросаю курить (увы грешен), как там у классика - Нет ничего проще чем бросить курить я 1000 раз делал это..., есть время поразмыслить.
И напоследок еще вопрос, это кому-то нужно?
UPD. Нашел отличную тему, Исследование генераторов шагов LinuxCNC, Mach и прочих #1.
