Main Content

Quadrature Decoder

计算正交编码器的位置

自 R2020a 起

库:
Motor Control Blockset / Sensor Decoders
Motor Control Blockset HDL Support / Sensor Decoders

描述

Quadrature Decoder 模块用于计算正交编码器的位置。

在计算正交编码器(和转子)的角位置(以度、弧度或标幺为单位)时,该模块会使用以下方法之一。

  • 当前编码器计数值和前一个索引脉冲(如果索引脉冲可用)时编码器计数值之间的差值。

  • 当前编码器计数器值(索引脉冲不可用时)。

下图显示了具有两个通道(QEPA 和 QEPB)和一个索引脉冲 (QEPI) 的正交编码器盘:

在此示例中,每通过编码器盘上的一个刻度线时,由 QEP 驱动的计时器数值会增加 4:

方程

该模块使用 CntIdx 模块输入来计算正交编码器的角位置(以计数为单位):

当 Cnt ≥ Idx 时:

Position count=(CntIdx)

当 Cnt < Idx 时:

Position count=Counts per revolution+(CntIdx)

Cnt(无符号整数)超出所选计数器大小的最大值时,该模块会在内部添加必要的补偿。

当您清除 External index count 复选框时,只有 Cnt 输入可用,因此:

Position count=Cnt

其中:

  • Position count 是正交编码器的角位置,以计数为单位。

  • Counts per revolution 是正交编码器的一个旋转周期中的计数 (Counts per revolution = Encoder slits ⨯ Encoder counts per slit)。

该模块将输出 θm 计算为:

θm=MaxPosition×(Position countEncoder slits×Encoder counts per slit)=MaxPosition×(Position countCounts per revolution)

其中,基于 Position unit 参数的所选值,MaxPosition = 360 (degrees) or 2π (radians) or 1 (per-unit)。

端口

输入

全部展开

正交编码器计数器针对刻度线位置生成的值。该端口只接受基于 Counter size 参数的无符号标量整数。例如,如果您为 Counter size 选择 8 bits,则输入数据类型必须为 uint8。

数据类型: uint8 | uint16 | uint32

正交编码器计数器在最后一次索引脉冲时针对刻度线位置生成的值。该端口只接受基于 Counter size 参数的无符号标量整数。例如,如果您为 Counter size 选择 8 bits,则输入数据类型必须为 uint8。

依存关系

要启用此端口,请选择 External index count 参数。

数据类型: uint8 | uint16 | uint32

正交编码器为每次旋转生成的计数数量。

CountsPerRev = Encoder slitsEncoder counts per slit

依存关系

要启用此端口,请选择 Use input port for computed parameters (run-time motor swap) 参数。

数据类型: uint8 | uint16 | uint32 | single | double | fixed point

指定正交编码器在此端口为每次旋转生成的计数数量的倒数。Data type for 1/CountsPerRev input 参数定义此输入的数据类型。

依存关系

要启用此端口,请选择 Use input port for computed parameters (run-time motor swap) 参数。

数据类型: single | double | fixed point

注意

CntIdx 端口上输入的数据类型必须相同。

输出

全部展开

模块根据 CntIdx 输入计算的角位置。

数据类型: single | double | fixed point

参数

全部展开

正交编码器的每个相位中可用的刻度线数。

依存关系

要启用此参数,请清除 Use input port for computed parameters (run-time motor swap) 参数。

正交编码器为每个刻度线生成的计数数。一个计数表示一个刻度线位置。例如,如果您要编码器生成对应于 00、10、11 和 01 刻度线位置或值的四个计数,请选择 4(正交模式)。如果选择正交模式:

每次旋转的编码器计数(正交后)= Encoder counts per slitEncoder slits

依存关系

要启用此参数,请清除 Use input port for computed parameters (run-time motor swap) 参数。

计数器大小表示处理器用于对正交编码器脉冲进行计数的计数器的寄存器大小。例如,当使用基于 TI’s C2000™ 的硬件时,它是来自 C2000™ Microcontroller BlockseteQEP 模块的计数器输出的数据类型。

仅当您选择此参数时,该模块才会启用 Idx 输入端口。Idx 输入端口期望在索引脉冲时有等于 Cnt 的值。

角位置输出的单位。

角位置输出的数据类型。

注意

Quadrature Decoder 模块可以在需要时显示警告消息 'Wrap on overflow detected'

高级选项

仅当您选择此参数时,该模块才会启用 CountsPerRev1/CountsPerRev 输入端口。选择此参数时,该模块还会禁用 Encoder slitsEncoder counts per slits 参数。

指定 1/CountsPerRev 输入的数据类型。如果指定定点数据类型,则可以使用此参数指定 1/CountsPerRev 输入的精度。

依存关系

要启用此参数,请选择 Use input port for computed parameters (run-time motor swap) 参数。

扩展功能

C/C++ 代码生成
使用 Simulink® Coder™ 生成 C 代码和 C++ 代码。

定点转换
使用 Fixed-Point Designer™ 设计和仿真定点系统。

版本历史记录

在 R2020a 中推出