Quadrature Decoder

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

  • Библиотека:
  • Motor Control Blockset / Декодеры Датчика

Описание

Блок 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++ с помощью Simulink® Coder™.

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

Введенный в R2020a