
Чтобы вам было проще разобраться в особенностях нашего оборудования, мы готовим подробные обзорные материалы. Они будут публикуются в этой рубрике «ТехноГид». А если хотите сначала кратко ознакомиться с темой, загляните в наш Telegram-канал — там мы публикуем сжатые версии этих обзоров.
В нашем магазине представлена линейка шаговых двигателей и сервоприводов. Несмотря на разнообразие интерфейсов управления, стандартом де-факто для них является импульсный сигнал Pulse/Dir. Этим способом управляются все шаговые двигатели и сервоприводы, которые мы предлагаем.
Данный метод управления реализован в среде разработки FLProg, основном программном обеспечении для наших контроллеров серии FLE. Это обеспечивает простую интеграцию и позволяет легко создавать станки, манипуляторы, конвейерные линии и другие устройства на основе связки наших контроллеров, шаговых двигателей и сервоприводов.
Для управления по протоколу Pull/Dir требуется высокоскоростной выход контроллера для формирования импульсного сигнала (Pulse). Все контроллеры серии FLE с транзисторными выходами имеют от 2 до 8 таких выходов в зависимости от модели.
Мы предполагаем, что большинство из вас уже знакомы со средой FLProg. Новичкам рекомендуем обратиться к «Учебному центру» на сайте программы, где собраны обучающие материалы. Также вы можете задать вопросы на активном форуме FLProg, найти множество руководств на YouTube и в Telegram-каналах.
Для жителей России, в связи с ограничением доступа к некоторым международным ресурсам, мы создали группу ВКонтакте и канал на RuTube.
Теперь давайте подробнее рассмотрим, как реализовать управление шаговым двигателем или сервоприводом с помощью контроллера FLE.
В программе FLProg необходимый функционал находится в библиотеке блоков: раздел «Промышленная автоматика» → «ЧПУ». Для управления используйте блок «Шаговый двигатель с драйвером Pull/Dir».

Вытащим этот блок на схему проекта.

Рассмотрим настройки этого блока и возможные режимы управления.
Вкладка «Основные параметры»

Пин PUL драйвера — укажите выходной пин для сигнала PULL, передаваемого на драйвер шагового двигателя. Для корректной работы рекомендуется выбирать высокоскоростной выход контроллера. Если выбрать значение «Вход», у блока появится соответствующий вход «pinPull», на который необходимо подать номер требуемого пина. При необходимости сигнал на этом пине можно инвертировать с помощью чек-бокса «Инвертировать пин».
Пин DIR драйвера — укажите выходной пин для сигнала DIR, передаваемого на драйвер шагового двигателя. Для сигнала DIR не требуется высокоскоростной пин контроллера. При выборе значения «Вход» у блока появится вход «pinDir» для указания номера пина. Сигнал на этом пине также можно инвертировать через чек-бокс «Инвертировать пин».
Длительность импульса PULL (мкс.) — установите длительность импульса на пине PULL. Рекомендуемое значение — 20 мкс. При переключении в положение «Вход» у блока появится вход «Pulse» для задания значения длительности импульса.
Пин Zero — при необходимости укажите входной пин для сигнала установки в 0 значения счетчика текущего шага. При выборе значения «Вход» у блока появится вход «pinZero» для указания номера пина. Сигнал на этом пине можно инвертировать через чек-бокс «Инвертировать пин».
Включить подтягивающий резистор — при активации этой опции будет программно включен подтягивающий к VCC резистор для данного входа.
Контролировать во всех режимах — при активации этого параметра каждый передний фронт сигнала на данном пине будет приводить к сбросу счетчика шага в 0. При деактивации пин будет обрабатываться только в режиме поиска нуля.
Вкладка «Управление шаговым двигателем»

Режим управления двигателем — выберите режим работы двигателя. Для возможности динамического переключения режимов установите значение «Вход». В этом случае у блока появится вход «Mode».
Доступные режимы:
- 0 – Стоп. Двигатель остановлен.
- 1 – Непрерывное вращение. Двигатель разгоняется в направлении, заданном сигналом на входе «Dir», от стартовой скорости до максимальной с заданным ускорением, после чего продолжает вращение с постоянной скоростью.
- 2 – Переход на заданный шаг. Двигатель перемещается к указанному на входе «TargetStep» положению. При изменении номера целевого шага двигатель немедленно начинает перемещение к новому положению. Допустимый диапазон значений: от -2147483648 до 2147483647. В этом режиме сигнал на входе «Dir» игнорируется, так как направление определяется автоматически.
- 3 – Выполнение количества шагов. При поступлении переднего фронта на входе «ExecNumStep» двигатель выполняет заданное на входе «NumStep» количество шагов в направлении, указанном сигналом на входе «Dir».
- 4 – Поиск нуля. Двигатель начинает вращение в направлении, заданном сигналом на входе «Dir», до момента появления сигнала на пине Zero (при его настройке) или логической единицы на входе блока «Zero». При возникновении любого из этих событий двигатель останавливается, а значение текущего шага сбрасывается в 0. Обработка сигнала с пина Zero выполняется в аппаратном прерывании для обеспечения точной установки нулевой позиции.
Направление вращения — задайте направление вращения двигателя. Для возможности оперативного управления направлением установите значение «Вход», что активирует вход «Dir».
Максимальная скорость — укажите максимальную скорость вращения двигателя. При выборе значения «Вход» у блока появится вход «MaxSpeed».
Начальная скорость — задайте стартовую скорость вращения двигателя, с которой начинается ускорение. При выборе значения «Вход» у блока появится вход «InitSpeed».
Ускорение — укажите ускорение, с которым двигатель будет разгоняться от начальной скорости до максимальной. При выборе значения «Вход» у блока появится вход «Acceleration».
Вход перехода на целевой шаг — при активации этой опции у блока появится вход «TargetStep» для задания номера целевого шага в соответствующем режиме. При деактивации значение целевого шага будет равно 0.
Вход выполнения количества шагов — при активации этой опции у блока появятся входы «ExecNumStep» и «NumStep», необходимые для режима выполнения заданного количества шагов. При деактивации данный режим будет работать как режим остановки.
Вход установки текущего шага — при активации этой опции у блока появятся входы «ExecSetStep» и «CurrentStep». При поступлении переднего фронта на входе «ExecSetStep» в счетчик текущего шага будет установлено значение со входа «CurrentStep».
Вход Zero — при активации этой опции у блока появится вход «Zero». При поступлении переднего фронта на этом входе в счетчик текущего шага будет записано значение 0. В режиме поиска нуля это также приведет к остановке двигателя.
Выход текущего шага — при активации этой опции у блока появится выход «Step», на который будет выводиться значение счетчика текущего шага.
Выход текущей скорости — при активации этой опции у блока появится выход «Speed», отображающий текущую скорость вращения двигателя.
Статусы работы двигателя
На выходе «Status» отображаются следующие состояния:
- 1 — FLPROG_STOP_STEP_MOTOR_STATUS — Двигатель остановлен.
- 2 — FLPROG_CONTINUOUS_ROTATION_STEP_MOTOR_STATUS — Двигатель находится в режиме непрерывного вращения.
- 3 — FLPROG_POSITION_TRANSITION_WAIT_COMMAND_STEP_MOTOR_STATUS — Двигатель находится в режиме перехода на заданный шаг и остановлен после достижения целевой позиции.
- 4 — FLPROG_POSITION_TRANSITION_EXECUTE_COMMAND_STEP_MOTOR_STATUS — Двигатель находится в режиме перехода на заданный шаг и выполняет перемещение.
- 5 — FLPROG_GO_STEP_COUNT_STEP_WAIT_COMMAND_STEP_MOTOR_STATUS — Двигатель находится в режиме выполнения заданного количества шагов и ожидает команду.
- 6 — FLPROG_GO_STEP_COUNT_STEP_EXECUTE_COMMAND_STEP_MOTOR_STATUS — Двигатель находится в режиме выполнения заданного количества шагов.
- 7 — FLPROG_FIND_ZERO_STEP_MOTOR_STATUS — Двигатель находится в режиме поиска нуля и выполняет поиск.
- 8 — FLPROG_END_FIND_ZERO_STEP_MOTOR_STATUS — Двигатель завершил поиск нуля и остановлен.