功能描述
电流环工作模式
模式 |
特点 |
功能和适用场景 |
|
---|---|---|---|
电角度和位置测量 |
电流测量和数据计算 |
||
Mode0 电流环开环工作模式 |
|
|
适用于简单的开环控制,无需电流反馈和位置反馈。 |
Mode1 电流环闭环工作模式 |
|
|
支持死区补偿、交叉解耦等功能,可通过寄存器配置使能。 适用于需要电流反馈但无需位置反馈的闭环控制。 |
Mode2 电流环闭环工作模式(使用位置编码器数据) |
|
|
支持死区补偿、交叉解耦等功能,可通过寄存器配置使能。 适用于需要电流反馈和位置反馈的高精度闭环控制。 |
HCL Mode0 工作模式为 Mode0 的工作模式的示意图,绿色底色为 HCL 在 Mode0 模式下工作的模块。
HCL Mode1 工作模式为 Mode1 的工作模式的示意图,绿色底色为 HCL 在 Mode 1 模式下工作的模块。
HCL Mode2 工作模式为 Mode2 的工作模式的示意图,绿色底色为 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 数据处理
项目 |
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] |
- 如果结果大于 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] |
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()为占空比计算函数
参数 |
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] |
参数 |
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] |
参数 |
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] |
参数 |
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] |
电流环断续点
- 通过寄存器字段 HCL_BPM_EN
使能电流环断点功能。
使能后,寄存器字段 HCL_BP_NODE 以及 HCL_RP_NODE 生效,分别指示断点的节点位置和续点的节点位置。
- 使能硬件电流环断和续点功能后,硬件电流环计算到断点处停止计算,并且产生中断状态通知 CPU。
- 软件根据断点处的数据,对用户所需的算法进行计算,计算出续点所需的数据。
- 软件通过寄存器 RSP_PARA0/1/2 写入续点数据,且对寄存器字段 HCL_RP_START 写 0x1,触发硬件电流环从续点继续完成本次电流环计算。
- 设置下列断点和续点:
- Node D:断点 (BreakPoint),在执行到这一点时,电流环停止,并产生一个中断请求(IRQ)。
- Node E:续点 (Continue Point),在中断函数处理完毕后,从这一点继续执行后续流程。
电流环执行顺序:- A → B → C → D
- 在 D 点,电流环停止,触发中断请求(IRQ)。
- 中断函数进行用户的 PID 算法,获得 Ud 和 Uq 数据作为续点数据被写入 RSP_PARA0/1 寄存器。
- 通过设置 HCL_RP_START = 0x1 来触发电流环重新启动。
- 电流环从 F 点开始继续执行:F → G。
- 根据新的 Ud 和 Uq 值更新 EPWM 的占空比,完成本次计算。
