exponenta event banner

Квадратурный декодер

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

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

Описание

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

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

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

Уравнения

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

При вращении кодера по часовой стрелке:

  • Если Idx≤Cnt,

     Число позиций = (Cnt Idx)

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

     Число позиций = (Cnt Idx)

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

     Число позиций =  Счетчики  за оборот (Idx − Cnt)

При вращении кодера против часовой стрелки:

  • Если Idx≥Cnt,

     Число позиций =  Счетчики  за оборот (Idx − Cnt)

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

     Число позиций =  Счетчики  за оборот (Idx − Cnt)

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

     Число позиций = (Cnt Idx)

При сбросе параметра External index count импульс Idx сбрасывает значение Cnt на ноль, поэтому:

 Количество позиций = Cnt

где:

  •  Число позиций - угловое положение квадратурного кодера в счетчиках.

  • Счетчики на оборот - это количество счетчиков в одном цикле вращения квадратурного кодера.

Блок вычисляет выходной сигнал, как:

Position = 360 ×  Position count/(  Количество щелей кодировщика на    щель) (в градусах)

Position = ×  Position count/(  Кодировочные щели ×    Кодировочные отсчеты на щель) (в радианах)

Position = Cnt/(  Число щелей кодировщика на    щель) (в единицах измерения)

Порты

Вход

развернуть все

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

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

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

Зависимости

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

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

Примечание

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

Продукция

развернуть все

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

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

Параметры

развернуть все

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

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

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

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

Блок вывода углового положения.

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

Примечание

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

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

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

Создание кода C/C + +
Создайте код C и C++ с помощью Simulink ® Coder™

.

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

Представлен в R2020a