Quadrature Decoder

Вычисление положения квадратурного энкодера

  • Библиотека:
  • Блоки управления двигателем/декодеры датчиков

Описание

Блок Quadrature Decoder вычисляет положение квадратурного энкодера. Блок использует текущее значение счетчика энкодера и значение счетчика энкодера на предыдущем импульсе индекса, чтобы вычислить угловое положение квадратурного энкодера (и ротора) в степенях, радианах или в относительных единицах.

Этот рисунок показывает квадратурный диск энкодера с двумя каналами (QEPA и QEPB) и импульсом индекса (QEPI):

В этом примере таймер, управляемый QEP, увеличивается на четыре для каждой щели:

Уравнения

Блок вычисляет угловое положение (в отсчетах) квадратурного энкодера как:

Когда энкодер вращается в направлении по часовой стрелке:

  • Если IdxCnt,

    Position count=(CntIdx)

  • Если Idx>Cnt и направление вращения вала не меняется,

    Position count=(CntIdx)

  • Если Idx>Cnt и направление вращения вала противоположное,

    Position count=Counts per revolution(IdxCnt)

Когда энкодер вращается в направлении против часовой стрелки:

  • Если IdxCnt,

    Position count=Counts per revolution(IdxCnt)

  • Если Idx<Cnt и направление вращения вала не меняется,

    Position count=Counts per revolution(IdxCnt)

  • Если Idx<Cnt и направление вращения вала противоположное,

    Position count=(CntIdx)

Когда вы очищаете параметр External index count, импульс Idx сбрасывается Cnt на нуль, поэтому:

Position count=Cnt

где:

  • Position count - угловое положение квадратурного энкодера в отсчетах.

  • Counts per revolution - количество отсчётов в одном цикле вращения квадратурного энкодера.

Блок вычисляет выходные θm как:

Position=360×Position count/(Encoder slits×Encoder counts per slit) (в степенях)

Position=2π×Position count/(Encoder slits×Encoder counts per slit) (в радианах)

Position=Cnt/(Encoder slits×Encoder counts per slit) (в относительных единицах)

Порты

Вход

расширить все

Значение, которое генерирует счетчик квадратурного энкодера относительно щелевого положения. Порт принимает только скаляр беззнаковое целое число на основе параметра Counter size. Для примера, если вы выбираете 8 bits для Counter size тип входных данных должен быть uint8.

Типы данных: uint8 | uint16 | uint32

Значение, которое счетчик квадратурного энкодера сгенерировал относительно щелевого положения во время последнего импульса индекса. Порт принимает только скаляр беззнаковое целое число на основе параметра Counter size. Для примера, если вы выбираете 8 bits для Counter size тип входных данных должен быть uint8.

Зависимости

Чтобы включить этот порт, выберите параметр External index count.

Типы данных: uint8 | uint16 | uint32

Примечание

Типы входных данных для обоих Cnt и Idx должны быть идентичными.

Выход

расширить все

Угловое положение, которое блок вычисляет на основе Cnt и Idx входы.

Типы данных: single | double | fixed point

Параметры

расширить все

Количество прорезей, доступных в каждой фазе квадратурного энкодера.

Количество отсчётов, которые генерирует квадратурный энкодер для каждой щели. Счетчик указывает положение щели. Например, выберите 4, если необходимо, чтобы энкодер сгенерировал четыре отсчета, соответствующих положениям или значениям щелей 00, 10, 11 и 01.

Размер счетчика квадратурного энкодера.

Блок включает Idx входной порт только, если вы выбираете этот параметр. Блок ожидает, что Cnt вход порта сбрасывается во время Idx импульс.

Модуль выходного углового положения.

Тип данных для выходного сигнала углового положения.

Примечание

Блок Quadrature Decoder может иногда отображать предупреждающее сообщение 'Wrap on overflow detected.'

Примеры моделей

Расширенные возможности

Генерация кода C/C + +
Сгенерируйте код C и C++ с помощью Coder™ Simulink ®

.

Преобразование с фиксированной точкой
Разрабатывайте и моделируйте системы с фиксированной точкой с помощью Fixed-Point Designer™.

Введенный в R2020a
Для просмотра документации необходимо авторизоваться на сайте