Edit online

功能描述

3 Mar 2025
Read time: 21 minute(s)

电流环工作模式

通过寄存器配置,HCL 可以配置三种工作模式,即 Mode0、Mode1 和 Mode2。各模式详细说明如下:
1. 电流环工作模式描述

模式

特点

功能和适用场景

电角度和位置测量

电流测量和数据计算

Mode0

电流环开环工作模式

  • 由软件通过寄存器给定(Theta0 寄存器)。
  • 无位置测量,电角度由软件提供。
  • 无电流测量,反 Park 变换的输入直接使用寄存器值(Udm0Uqm0)。
  • 直接进行反 Park 变换和 SVPWM 计算,输出占空比到 EPWM。

适用于简单的开环控制,无需电流反馈和位置反馈。

Mode1

电流环闭环工作模式

  • 由软件通过寄存器给定(Theta0 寄存器)。
  • 无位置测量,电角度由软件提供。
  • 反 Park 变换的输入来自 D 轴 PID 和 Q 轴 PID 的输出。
  • 参考电流值 Id_refIq_ref 通过寄存器设置。

支持死区补偿、交叉解耦等功能,可通过寄存器配置使能。

适用于需要电流反馈但无需位置反馈的闭环控制。
Mode2

电流环闭环工作模式(使用位置编码器数据)

  • 在 Mode1 的基础上,使用位置编码器数据进行电角度计算。
  • 电角度由位置编码器自动获取,无需软件给定。
  • 反 Park 变换的输入来自 D 轴 PID 和 Q 轴 PID 的输出。
  • 参考电流值 Id_refIq_ref 通过寄存器设置。

支持死区补偿、交叉解耦等功能,可通过寄存器配置使能。

适用于需要电流反馈和位置反馈的高精度闭环控制。

HCL Mode0 工作模式为 Mode0 的工作模式的示意图,绿色底色为 HCL 在 Mode0 模式下工作的模块。



1. HCL Mode0 工作模式

HCL Mode1 工作模式为 Mode1 的工作模式的示意图,绿色底色为 HCL 在 Mode 1 模式下工作的模块。



2. HCL Mode1 工作模式

HCL Mode2 工作模式为 Mode2 的工作模式的示意图,绿色底色为 HCL 在 Mode2 模式下工作的模块。



3. HCL Mode2 工作模式

电流环采样预处理

电流环采样预处理模块,是对 ADC 0/1 采集到的 U 相电流和 V 相电流数据进行预处理,以下为电流环采样预处理模块的输入输出参数列表。

参数

Symbol

描述

数据类型

数值表示范围

输入参数 1

DIU

ADC 采集的 U 相电流

14 位无符号整型

[0, 16383]

输入参数 2

DIV

ADC 采集的 V 相电流

14 位无符号整型

[0, 16383]

输入参数 3

IUoff

U 相 Offset 电流

14 位无符号整型

[0, 16383]

输入参数 4

IVoff

V 相 Offset 电流

14 位无符号整型

[0, 16383]

输入参数 5

CurrCalGain

电流增益

Q10(1b 符号+5b 整数+10b 小数)

[-32, 31.999755859]

输出参数 1

PDIU

预处理后的 U 相电流

16 位有符号 Q15(1b 符号+15b 小数)

[-1, 0.999969482]

输出参数 2

PDIV

预处理后的 V 相电流

16 位有符号 Q15(1b 符号+15b 小数)

[-1, 0.999969482]

SDFM 数据处理

若初始化配置选择 SDFM 电流采样,则硬件电流环根据寄存器的选择,采集相应的 SDFM 的数据(替代内部的 ADC 的数据)作为 U 相和 V 相的电流数据。从 SDFM 获取的数据,同样也需要进行数据的预处理,处理的方式如下所示。


项目

Symbol

描述

精度

范围

函数名

SDFM_Process ()

SDFM 处理

输入参数 1

IU_SDFM

U 相电流

(来自 SDFM 的数据)

Q15

(1b 符号+15b 小数)

[-1 , 0.999969482]

输入参数 2

IV_SDFM

V 相电流

(来自 SDFM 的数据)

Q15

(1b 符号+15b 小数)

[-1 , 0.999969482]

输入参数 3

PGAIN

处理增益

Q10

(1b 符号+ 5b 整数+10b 小数)

[-32 , 31.999755859]

输入参数 4

IU_SDFM_OFF

U 相偏置电流

Q15

(1b 符号+15b 小数)

[-1 , 0.999969482]

输入参数 5

IV_SDFM_OFF

V 相偏置电流

Q15

(1b 符号+15b 小数)

[-1 , 0.999969482]

输出参数 1

DIU

处理后的 U 相电流

Q15

(1b 符号+15b 小数)

[-1 , 0.999969482]

输出参数 2

DIV

处理后的 V 相电流

Q15

(1b 符号+15b 小数)

[-1 , 0.999969482]

DIU 和 DIV 最后输出的结果需要进行溢出处理:
  • 如果结果大于 IQ15(1.0),结果等于 32767。
  • 如果结果小于 IQ15(-1.0),结果等于 -32768。

Clarke 变换

Clarke 变换功能模块,实现标准的 Clarke 变换计算,计算的输入和输出采用 Q15 定点数格式。

项目

Symbol

描述

精度

范围

函数名

CLARK_TRFM ()

Clark 变换计算

输入参数 1

DIU

U 相电流

(来自电流采样预处理模块)

Q15

(1b 符号+15b 小数)

[-1 , 0.999969482]

输入参数 2

DIV

V 相电流

(来自电流采样预处理模块)

Q15

(1b 符号+15b 小数)

[-1 , 0.999969482]

输出参数 1

Iα

Alpha 轴电流

Q15

(1b 符号+15b 小数)

[-1 , 0.999969482]

输出参数 2

Iβ

Beta 轴电流

Q15

(1b 符号+15b 小数)

[-1 , 0.999969482]

Clark 的计算公式如下:





Park 变换

Park 变换功能模块,实现的标准的 Park 变换计算,计算的输入和输出采用的 Q15 定点数格式。其中,正弦值和余弦值的数据来源于内部 Cordic 模块根据电角度计算后提供的结果。

项目

Symbol

描述

精度

范围

函数名

PARK_TRFM ()

Park 变换计算

输入参数 1

Iα

Alpha 轴电流

来自 CLARK 变换

Q15

(1b 符号+15b 小数)

[-1 , 0.999969482]

输入参数 2

Iβ

Beta 轴电流

来自 CLARK 变换

Q15

(1b 符号+15b 小数)

[-1 , 0.999969482]

输入参数 3

sinθ

旋转角度的正弦值

来自 Cordic 加速模块

Q15

(1b 符号+15b 小数)

[-1 , 0.999969482]

输入参数 4

cosθ

旋转角度的余弦值

来自 Cordic 加速模块

Q15

(1b 符号+15b 小数)

[-1 , 0.999969482]

输出参数 1

Id

D 轴电流

Q15

(1b 符号+15b 小数)

[-1 , 0.999969482]

输出参数 2

Iq

Q 轴电流

Q15

(1b 符号+15b 小数)

[-1 , 0.999969482]

Park 的计算公式如下:





QEP 电角度计算

QEP 电角度计算模块,实现的是对 QEP 的位置数据进行处理,利用软件初始化给定的参数(这些参数与电机的参数相关),进行电机的电角度的计算。其中 HCL0 获取的 QEP 位置数据源来自于 QEP0,而 HCL1 的 QEP 位置数据源来自于 QEP1,初始化时需要注意区分。

参数

Symbol

描述

数据类型

数值表示范围

输入参数 1

QPOSCNT

当前计数器值,来自 QEP

32 位无符号整型

[0x0 , 0xFFFFFFFF]

输入参数 2

QEP_INIT_POS

QEP 初始位置值

24 位无符号整型

[0x0 , 0xFFFFFF]

输入参数 3

QEP_POS_CAL

QEP 位置校正值

25 位有符号整型

[-224 , 224 - 1]

输入参数 4

QEP_MAX_POS

QEP 最大位置值

24 位无符号整型

[0x0 , 0xFFFFFF]

输入参数 5

QEP_ELECT_MAX

QEP 最大电角度

24 位无符号整型

[0x0 , 0xFFFFFF]

输入参数 6

QEP_ELECT_FAC

电角度转换因子

24 位无符号 Q24

[0 , 0.999999940]

输出参数 1

ELECT_THETA0

QEP 电角度

16 位有符号 Q15

[-1 , 0.999969482]

输出参数 2

ELECT_OUT

电角度(脉冲数)

无符号整型 24 位

[0x0 , 0xFFFFFF]

ABS 电角度计算

ABS 电角度计算模块,实现的是对绝对值编码器接口(即 TA-IF、BIS-IF 和 EDAT-IF 绝对值编码器接口)的位置数据进行处理,利用软件初始化给定的参数(这些参数与电机的参数相关),进行电机的电角度的计算。其中 HCL0 获取的绝对值位置数据源来自于绝对值编码器接口 TA-IF0/BIS-IF0/EDAT-IF0,而 HCL1 的绝对值位置数据源来自于 TA-IF1/BIS-IF1/EDAT-IF1,初始化时需要注意区分。

另外,ABS 电角度计算模块支持电角度补偿,用于补偿由于绝对值编码器读取位置数据的延迟带来的误差。

参数

Symbol

描述

数据类型

数值表示范围

输入参数 1

ABS_POS

当前位置值,来自 TA/ BIS/ EDAT_IF

24 位无符号整型

[0x0 , 0xFFFFFF]

输入参数 2

ABS_POS_COMP

绝对值编码器的位置补偿值

25 位有符号整型

[-224 , 224 - 1]

输入参数 3

ABS_MAX_POS

绝对值编码器的最大位置

24 位无符号整型

[0x0 , 0xFFFFFF]

输入参数 4

ABS_ELECT_MAX

绝对值编码器的最大电角度

24 位无符号整型

[0x0 , 0xFFFFFF]

输入参数 5

ABS_ELECT_FAC

位置转换因子

32 位无符号整型

[0x0 , 0xFFFFFFFF]

输入参数 6

ETHETA_CAL_RSHIFT

右移位数配置

5 位无符号整型

[0x0,0x1F]

输入参数 7

Motor_Speed

测试的 RPM 转速(来自经过滑动平均滤波后的转速)

16 位有符号整型

[-215 , 215 - 1]

输入参数 8

DEANG_Comp

传输延迟进行的角度补偿系数

Q15(1b 符号+16b 整数+15b 小数)

[-65536 , 65535.999969482]

输入参数 9

HCL_ENC_RATIO

HCL 周期与编码器读取位置周期比

5 位无符号整型

[0x0,0x1F]

输出参数 1

ELECT_THETA1

ABS 电角度

16 位有符号 Q15

[-1 , 0.999969482]

输出参数 2

ELECT_OUT

电角度(脉冲数)

无符号整型 16 位

[0x0 , 0xFFFF]

注: 绝对值位置数据大于 24-bit 时,需通过寄存器配置移位,使位置数据为 24-bit 长度,假设输入的是 32-bit 长度的位置数据,那么需要进行 8-bit 的右移操作。

THETA_SEL

THETA_SEL 功能用于 Mode0 /1 /2 不同工作模式下电角度的选择,在 Mode0 和 Mode1 的情况下,电角度选择寄存器 THETA0 的位置数据;而在 Mode2 的情况下,电角度选择编码器的位置数据,也就是 QEP 或绝对值编码器的数据,具体选择通路如下所示:

参数

Symbol

描述

数据类型

数值表示范围

输入参数 1

ELECT_THETA0

QEP 电角度

16 位有符号 Q15

[-1 , 0.999969482]

输入参数 2

ELECT_THETA1

ABS 电角度

16 位有符号 Q15

[-1 , 0.999969482]

输入参数 3

THETA0

THETA0

16 位有符号 Q15

[-1 , 0.999969482]

输出参数 1

sin ETHETA

电角度 ETHETA 正弦值

16 位有符号 Q15

[-1 , 0.999969482]

输出参数 2

cos ETHETA

电角度 ETHETA 余弦值

16 位有符号 Q15

[-1 , 0.999969482]



UDQ_SEL

UDQ_SEL 功能用于 Mode0 / 1 / 2 不同工作模式下 UD 和 UQ 输入信号源的选择,在 Mode0 的情况下,反 Park 变换模块的输入选择的是寄存器的数值,从而实现电流环开环的计算;而在 Mode1 和 Mode2 的情况下,反 Park 变换模块的输入来自上一级的功能模块的输出,从而实现电流环闭环的计算,具体选择通路如下所示:

参数

Symbol

描述

数据类型

数值表示范围

输入参数 1

UDM0

Mode0 的 UDM0(来自寄存器)

16 位有符号 Q15

[-1 , 0.999969482]

输入参数 2

UQM0

Mode0 的 UQM0(来自寄存器)

16 位有符号 Q15

[-1 , 0.999969482]

输入参数 3

UD

Mode1/2 的 UD(来自 D 轴 PID)

16 位有符号 Q15

[-1 , 0.999969482]

输入参数 4

UQ

Mode1/2 的 UQ(来自 Q 轴的 PID)

16 位有符号 Q15

[-1 , 0.999969482]

输出参数 1

UDS

选择输出数据 UDS

16 位有符号 Q15

[-1 , 0.999969482]

输出参数 2

UQS

选择输出数据 UQS

16 位有符号 Q15

[-1 , 0.999969482]



DPID

DPID 实现的功能是 D 轴的 PID 控制算法,PID 的控制流程如下所示:

参数

Symbol

描述

数据类型

数值表示范围

输入参数 1

ID_REF

D 轴参考电流值

16 位有符号 Q15

[-1 , 0.999969482]

输入参数 2

ID

D 轴电流计算值

16 位有符号 Q15

[-1 , 0.999969482]

输入参数 3

DPID_KP

D 轴 PID 比例系数

Q15(1b 符号+4b 整数+15b 小数)

[-16 , 15.999969482]

输入参数 4

DPID_KI

D 轴 PID 积分系数

16 位有符号 Q15

[-1 , 0.999969482]

输入参数 5

DPID_UMAX

D 轴 PID 输出最大限值

16 位有符号 Q15

[-1 , 0.999969482]

输入参数 6

DPID_UMIN

D 轴 PID 输出最小限值

16 位有符号 Q15

[-1 , 0.999969482]

输出参数 1

UD

D 轴 PID 输出值

16 位有符号 Q15

[-1 , 0.999969482]



QPID

QPID 实现的功能是 Q 轴的 PID 控制算法,PID 的控制流程如下所示:

参数

Symbol

描述

数据类型

数值表示范围

输入参数 1

IQ_REF

Q 轴参考电流值

16 位有符号 Q15

[-1 , 0.999969482]

输入参数 2

IQ

Q 轴电流计算值

16 位有符号 Q15

[-1 , 0.999969482]

输入参数 3

QPID_KP

Q 轴 PID 比例系数

Q15(1b 符号+4b 整数+15b 小数)

[-16 , 15.999969482]

输入参数 4

QPID_KI

Q 轴 PID 积分系数

16 位有符号 Q15

[-1 , 0.999969482]

输入参数 5

QPID_UMAX

Q 轴 PID 输出最大限值

16 位有符号 Q15

[-1 , 0.999969482]

输入参数 6

QPID_UMIN

Q 轴 PID 输出最小限值

16 位有符号 Q15

[-1 , 0.999969482]

输入参数 7

QPID_COMP

Q 轴 PID 补偿值

16 位有符号 Q15

[-1 , 0.999969482]

输入参数 8

INTG_SEP_ERR

积分分离值

15 位无符号 Q15

[0 , 0.999969482]

输出参数 1

UQ

Q 轴 PID 输出值

16 位有符号 Q15

[-1 , 0.999969482]



电压补偿

参数

Symbol

描述

数据类型

数值表示范围

输入参数 1

VoltAdc

ADC 采集的母线电压

无符号 14 位整型

[0, 16383]

输入参数 2

VoltADCAveVal

ADC 采集的母线电压平均值

无符号 14 位整型

[0, 16383]

输入参数 3

AveVal_Q14

voltADCAveVal 的倒数

Q14

[0,0.999938964]

输入参数 4

VComp_Coff_MAX

电压补偿系数的最大值

Q10

[0,3.9990234375]

输入参数 5

VComp_Coff_MIN

电压补偿系数的最小值

Q10

[0,3.9990234375]

输入参数 6

D_COMP

D 轴补偿

来自交叉解耦和反电势补偿模块

Q15

(1b 符号 + 15b 小数)

[-1 , 0.999969482]

输入参数 7

Q_COMP

Q 轴补偿

来自交叉解耦和反电势补偿模块

Q15

(1b 符号 + 15b 小数)

[-1 , 0.999969482]

输出参数 1

Volt_Comp_Coff

电压补偿系数

Q10

[0,3.9990234375]

输出参数 2

Ud_c

D 轴补偿后电压

Q15

(1b 符号+15b 小数)

[-1 , 0.999969482]

输出参数 3

Uq_c

Q 轴补偿后电压

Q15

(1b 符号+15b 小数)

[-1 , 0.999969482]

交叉解耦和反电势补偿

参数

Symbol

描述

数据类型

数值表示范围

输入参数 1

Id

D 轴电流分量

来自 PARK 变换

Q15

(1b 符号+15b 小数)

[-1, 0.999969482]

输入参数 2

Iq

Q 轴电流分量

来自 PARK 变换

Q15

(1b 符号+15b 小数)

[-1, 0.999969482]

输入参数 3

AE_spd1

AE 速度(标幺值)

定点数

[0, 0xFFFFFFFF]

输入参数 4

OMEG_RSHIFT

角速度右移

无符号整型数

4 位

[0x0, 0xF]

输入参数 5

DCP_MOD_SEL

补偿模式选择

无符号整型数

2 位

[0x0 , 0x3]

输入参数 6

Fremax_div_rate

电流环参数寄存器配置

Q15

(1b 符号+2b 整数 +15b 小数)

[-4, 3.999969482]

输入参数 7

Isdpu

电流环参数寄存器配置

Q10

(1b 符号+5b 整数 +10b 小数)

[0, 31.9990234375]

输入参数 8

Isqpu

电流环参数寄存器配置

Q10

(1b 符号+5b 整数 +10b 小数)

[0, 31.9990234375]

输入参数 9

LD

电流环参数寄存器配置

Q10

(1b 符号+15b 小数)

[0, 0.999969482]

输入参数 10

LQ

电流环参数寄存器配置

Q15

(1b 符号+15b 小数)

[0, 0.999969482]

输入参数 11

FluxRotor

电流环参数寄存器配置

Q15

(1b 符号+15b 小数)

[0, 0.999969482]

输出参数 1

D_COMP

D 轴补偿

Q15

(1b 符号+15b 小数)

[-1, 0.999969482]

输出参数 2

Q_COMP

Q 轴补偿

Q15

(1b 符号+15b 小数)

[-1, 0.999969482]

反电势/解耦补偿,电压补偿,限幅的处理流程如下图:

反 Park 变换

反 Park 变换功能模块,实现的标准的反 Park 变换计算,计算的输入和输出采用的 Q15 定点数格式。其中,正弦值和余弦值的数据来源于内部 Cordic 模块根据电角度计算后提供的结果。

参数

Symbol

描述

数据类型

数值表示范围

输入参数 1

Ud

DPID 或 UDM0 输出的 UD

16 位有符号 Q15

[-1 , 0.999969482]

输入参数 2

Uq

QPID 或 UQM0 输出的 UQ

16 位有符号 Q15

[-1, 0.999969482]

输入参数 3

sin θ

电角度 θ 的正弦值

16 位有符号 Q15

[-1, 0.999969482]

输入参数 4

cos θ

电角度 θ 的余弦值

16 位有符号 Q15

[-1, 0.999969482]

输出参数 1

Uα

Alpha 轴电压

16 位有符号 Q15

[-1, 0.999969482]

输出参数 2

Uβ

Beta 轴电压

16 位有符号 Q15

[-1, 0.999969482]

Park 的计算公式如下:

Uα = Ud *cosθ - Uq*sinθ

U​β = Ud *sinθ - Uq*cosθ

死区补偿



参数

Symbol

描述

数据类型

数值表示范围

输入参数 1

ID

D 轴电流计算值

16 位有符号 Q15

[-1 , 0.999969482]

输入参数 2

IQ

Q 轴电流计算值

16 位有符号 Q15

[-1 , 0.999969482]

输入参数 3

DT_COMP_DAT

死区补偿数据(需要根据初始配置值计算获得)

15 位无符号 Q15

[0, 0.999969482]

输入参数 4

DT_LP_FLT

死区补偿低通滤波系数(需要根据初始配置值计算)

15 位无符号 Q15

[0, 0.999969482]

输入参数 5

ETHETA

电角度

16 位有符号 Q15

[-1, 0.999969482]

输出参数 1

UA_COMP

Alpha 轴死区补偿电压

16 位有符号 Q15

[-1, 0.999969482]

输出参数 2

UB_COMP

Beta 轴死区补偿电压

16 位有符号 Q15

[-1, 0.999969482]

SVPWM

SVPWM 的处理流程图如下



  • Iclarke()为 Clarke 逆变换
  • Sector()为扇区号计算函数
  • Vectime()为矢量时间计算函数
  • Duty_Cal()为占空比计算函数
2. Clarke 逆变换

参数

Symbol

描述

数据类型

数值表示范围

输入参数 1

Uα_c

PID 电流输出

16 位有符号 Q15

[-1, 0.999969482]

输入参数 2

Uβ_c

PID 电流输出

16 位有符号 Q15

[-1, 0.999969482]

输出参数 1

U_PHU

U 相电压

16 位有符号 Q15

[-1, 0.999969482]

输出参数 2

U_PHV

V 相电压

16 位有符号 Q15

[-1, 0.999969482]

输出参数 3

U_PHW

W 相电压

16 位有符号 Q15

[-1, 0.999969482]

3. 扇区号计算

参数

Symbol

描述

数据类型

数值表示范围

输入参数 1

U_PHU

U 相电压

16 位有符号 Q15

[-1, 0.999969482]

输入参数 2

U_PHV

V 相电压

16 位有符号 Q15

[-1, 0.999969482]

输入参数 3

U_PHW

W 相电压

16 位有符号 Q15

[-1, 0.999969482]

输出参数 1

SEC_NUM

扇区号

16 位无符号整型数

1/ 2/ 3/ 4/ 5/ 6

输出参数 2

U_PHU_ABS

U 相电压绝对值

16 位有符号 Q15

[0, 0.999969482]

输出参数 3

U_PHV_ABS

V 相电压绝对值

16 位有符号 Q15

[0, 0.999969482]

输出参数 4

U_PHW_ABS

W 相电压绝对值

16 位有符号 Q15

[0, 0.999969482]

4. 时间矢量计算

参数

Symbol

描述

数据类型

数值表示范围

输入参数 1

U_PHU_ABS

U 相电压绝对值

16 位有符号 Q15

[0, 0.999969482]

输入参数 2

U_PHV_ABS

V 相电压绝对值

16 位有符号 Q15

[0, 0.999969482]

输入参数 3

U_PHW_ABS

W 相电压绝对值

16 位有符号 Q15

[0, 0.999969482]

输入参数 4

SEC_NUM

扇区号

16 位无符号整型数

1/2/3/4/5/6

输入参数 5

PWM_TIMCOST

PWM 时间常数

20 位无符号 Q15

[0, 31.999969482]

输入参数 6

PWM_PRD

PWM 周期

16 位无符号整型数

[0, 0xFFFF]

输入参数 7

PRD_OM

周期过调制值

16 位无符号整型数

[0, 0xFFFF]

输出参数 1

VECT1

时间矢量 1

16 位无符号整型数

[0, 0xFFFF]

输出参数 2

VECT2

时间矢量 2

16 位无符号整型数

[0, 0xFFFF]

输出参数 3

VECT0

时间矢量 0

16 位无符号整型数

[0, 0xFFFF]

5. 占空比计算

参数

Symbol

描述

数据类型

数值表示范围

输入参数 1

VECT1

时间矢量 1

16 位无符号整型数

[0, 0xFFFF]

输入参数 2

VECT2

时间矢量 2

16 位无符号整型数

[0, 0xFFFF]

输入参数 3

VECT0

时间矢量 0

16 位无符号整型数

[0, 0xFFFF]

输入参数 4

SEC_NUM

扇区号

16 位无符号整型数

1/ 2/ 3/ 4/ 5/ 6

输入参数 5

MAXDUTY

最大占空比

16 位无符号整型数

[0, 0xFFFF]

输入参数 6

MINDUTY

最小占空比

16 位无符号整型数

[0, 0xFFFF]

输出参数 1

TD1

时间占空比 1

16 位无符号整型数

[0, 0xFFFF]

输出参数 2

TD2

时间占空比 2

16 位无符号整型数

[0, 0xFFFF]

输出参数 3

TD3

时间占空比 3

16 位无符号整型数

[0, 0xFFFF]

速度测量

速度测量模块,用于测量电机的转速,其中速度的输出支持 RPM 的速度输出(即 AE_spd0),此数据可以经过滑动平均滤波模块后,提供给电角度补偿算法。另外速度的输出支持更高精度的输出(即 AE_spd1),用定点数表示,该结果是提供给软件的速度使用。

参数

Symbol

描述

数据类型

数值表示范围

输入参数 1

POS

当前的位置值

24 位无符号整型

[0, 0xFFFFFF]

输入参数 2

SPD_DIR_THR

方向阈值

24 位无符号整型

[0, 0xFFFFFF]

输入参数 3

ABS_MAX

位置计数器最大值

24 位无符号整型

[0, 0xFFFFFF]

输入参数 4

AE_SpdMCoff0

AE 速度定标因子 0

32 位无符号整型

[0, 0xFFFFFFFF]

输入参数 5

AE_DelPosCoff

AE 最大速度限制

24 位无符号整型

[0, 0xFFFFFF]

输入参数 6

SPD_CAL_RSHIFT0

速度计算右移

5 位无符号整型

[0, 0x1F]

输入参数 7

AE_SpdMCoff1

AE 速度定标因子 1

32 位无符号整型

[0, 0xFFFFFFFF]

输入参数 8

SPD_CAL_RSHIFT1

速度计算右移

5 位无符号整型

[0, 0x1F]

输出参数 1

AE_spd0

AE 速度(单位 rpm)

16 位有符号整型

[-215, 215-1]

输出参数 2

AE_spd1

AE 速度(标幺值)

定点数

[0, 0xFFFFFFFF]

速度滑动平均滤波

速度滑动平均滤波模块,是对速度测量模块输出的 RPM 速度进行滑动平均滤波,滑动平均滤波的深度最大支持对 16 次的 RPM 速度进行。

参数

Symbol

描述

数据类型

数值表示范围

输入参数 1

AE_spd0

AE 测速输出值

16 位有符号整型

[-215 , 215-1]

输入参数 2

Filt_times

滤波次数

3 位无符号整型

[0x0 , 0x7]

输出参数 1

Motor_Speed

电机速度(单位 rpm)

16 位有符号整型

[-215, 215-1]

电流环断续点

硬件电流环支持断点和续点功能,详细功能描述和工作流程如下:
  1. 通过寄存器字段 HCL_BPM_EN 使能电流环断点功能。

    使能后,寄存器字段 HCL_BP_NODE 以及 HCL_RP_NODE 生效,分别指示断点的节点位置和续点的节点位置。

  2. 使能硬件电流环断和续点功能后,硬件电流环计算到断点处停止计算,并且产生中断状态通知 CPU。
  3. 软件根据断点处的数据,对用户所需的算法进行计算,计算出续点所需的数据。
  4. 软件通过寄存器 RSP_PARA0/1/2 写入续点数据,且对寄存器字段 HCL_RP_START 写 0x1,触发硬件电流环从续点继续完成本次电流环计算。
以下示例展示了设置断续点并通过软件 PID 替换硬件 PID 的方式实现电流环控制的完整流程:
  1. 设置下列断点和续点:
    • Node D:断点 (BreakPoint),在执行到这一点时,电流环停止,并产生一个中断请求(IRQ)。
    • Node E:续点 (Continue Point),在中断函数处理完毕后,从这一点继续执行后续流程。
    电流环执行顺序:
    • A → B → C → D
    • 在 D 点,电流环停止,触发中断请求(IRQ)。
  2. 中断函数进行用户的 PID 算法,获得 Ud 和 Uq 数据作为续点数据被写入 RSP_PARA0/1 寄存器。
  3. 通过设置 HCL_RP_START = 0x1 来触发电流环重新启动。
    • 电流环从 F 点开始继续执行:F → G。
    • 根据新的 Ud 和 Uq 值更新 EPWM 的占空比,完成本次计算。