Edit online

功能描述

3 Mar 2025
Read time: 17 minute(s)

电流环工作模式

通过寄存器配置,HCL 可以配置三种工作模式,即 Mode0、Mode1 和 Mode2。各模式详细说明如下。



1. HCL Mode0 工作模式
HCL Mode0 工作模式为 Mode0 的工作模式的示意图:
  • 绿色底色为 HCL 在 Mode0 模式下工作的模块。

  • 电角度选择 Theta0 寄存器的数值,即无位置测量,需要软件给定位置数据。

  • 反 Park 变换计算的输入选择 Udm0、Uqm0 的寄存器数值输入,即无电流测量。



2. HCL Mode1 工作模式

HCL Mode1 工作模式为 Mode1 的工作模式的示意图:

  • 绿色底色为 HCL 在 Mode 1 模式下工作的模块。相对于 Mode0,Mode1 加入了以下模块:
    • ADC 采集
    • 电流预处理
    • Clarke 变换
    • Park 变换
    • PID
    • 死区补偿模块
  • 电角度选择 Theta0 寄存器的数值,即无位置测量,需要软件给定位置数据。

  • 反 Park 变换计算的输入选择 D 轴 PID 和 Q 轴 PID 的输出,即增加电流测量的通路。

  • D 轴 PID 和 Q 轴 PID 的输入参考值 Id_ref、Iq_ref 通过寄存器设置。

  • 死区补偿模块,在 Mode1 模式下有效,可以通过寄存器配置使能。



3. HCL Mode2 工作模式

HCL Mode2 工作模式为 Mode2 的工作模式的示意图:

  • 绿色底色为 HCL 在 Mode2 模式下工作的模块。相对于 Mode1,Mode2 加入了以下模块:
    • 电角度测量
    • 速度测量
  • 电角度选择电角度测量的数值,即增加位置测量的通路,HCL 自动获取位置数据。

  • 反 Park 变换计算的输入选择 D 轴 PID 和 Q 轴 PID 的输出,即增加电流测量的通路。

  • D 轴 PID 和 Q 轴 PID 的输入参考值 Id_ref、Iq_ref 通过寄存器设置。

  • 死区补偿模块,在 Mode2 模式下有效,可以通过寄存器配置使能。

电流环采样预处理

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

参数

Symbol

描述

数据类型

数值表示范围

输入参数 1

DIU

ADC 采集的 U 相电流

12 位无符号整型

[0, 4095]

输入参数 2

DIV

ADC 采集的 V 相电流

12 位无符号整型

[0, 4095]

输入参数 3

IUoff

U 相 Offset 电流

12 位无符号整型

[0, 4095]

输入参数 4

IVoff

V 相 Offset 电流

12 位无符号整型

[0, 4095]

输入参数 5

CurrCalGain

电流增益

16 位无符号 Q10

[0, 31.999755859]

输出参数 1

PDIU

预处理后的 U 相电流

16 位有符号 Q15

[-1, 0.999969482]

输出参数 2

PDIV

预处理后的 V 相电流

16 位有符号 Q15

[-1, 0.999969482]

电流环预处理实现的功能函数等效如下的 C 代码:
DIU = DIU - IUoff;

DIV = DIV - Ivoff;

PDIU = (s16)((DIU * CurrCalGain) >> 10);

PDIV = (s16)((DIV * CurrCalGain) >> 10);

PDIU = - PDIU;

PDIV = - PDIV;

Clarke 变换

参数

Symbol

描述

数据类型

数值表示范围

输入参数 1

PDIU

采样预处理输出的 DIU

16 位有符号 Q15

[-1, 0.999969482]

输入参数 2

PDIV

采样预处理输出的 DIV

16 位有符号 Q15

[-1, 0.999969482]

输出参数 1

IA

Alpha 轴电流

16 位有符号 Q15

[-1, 0.999969482]

输出参数 2

IB

Beta 轴电流

16 位有符号 Q15

[-1, 0.999969482]

Clarke 变换等效如下的 C 代码:
IA = PDIU;

IB = ( (PDIU + (PDIV * 2)) * IQ15(0.57735) ) >> 15;

Park 变换

参数

Symbol

描述

数据类型

数值表示范围

输入参数 1

IA

Clarke 变换输出的 IA

16 位有符号 Q15

[-1, 0.999969482]

输入参数 2

IB

Clarke 变换输出的 IB

16 位有符号 Q15

[-1, 0.999969482]

输入参数 3

sin ETHETA

电角度 ETHETA 的正弦值

16 位有符号 Q15

[-1, 0.999969482]

输入参数 4

cos ETHETA

电角度 ETHETA 的余弦值

16 位有符号 Q15

[-1, 0.999969482]

输出参数 1

ID

D 轴电流

16 位有符号 Q15

[-1, 0.999969482]

输出参数 2

IQ

Q 轴电流

16 位有符号 Q15

[-1, 0.999969482]

QEP 电角度计算

参数

Symbol

描述

数据类型

数值表示范围

输入参数 1

QPOSCNT

当前计数器值,来自 QEP

24 位无符号整型

[0x0 , 0xFFFFFF]

输入参数 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 电角度计算

参数

Symbol

描述

数据类型

数值表示范围

输入参数 1

ABS_POS

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

24 位无符号整型

[0x0 , 0xFFFFFF]

输入参数 2

ABS_POS_COMP

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

24 位有符号整型

[-223 , 223 - 1]

输入参数 3

ABS_MAX_POS

绝对值编码器的最大位置

24 位无符号整型

[0x0 , 0xFFFFFF]

输入参数 4

ABS_ELECT_MAX

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

24 位无符号整型

[0x0 , 0xFFFFFF]

输入参数 5

ABS_ELECT_FAC

电角度转换因子

24 位无符号 Q24

[0 , 0.999999940]

输入参数 6

ABS_DEANG_COMP

绝对值编码器的延迟补偿值

16 位有符号整型

[-215 , 215 - 1]

输出参数 1

ELECT_THETA1

ABS 电角度

16 位有符号 Q15

[-1 , 0.999969482]

输出参数 2

ELECT_OUT

电角度(脉冲数)

无符号整型 24 位

[0x0 , 0xFFFFFF]

THETA_SEL

参数

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]

THETA_SEL 功能用于 Mode0 /1 /2 不同工作模式下电角度的选择,具体选择通路如下图所示:



UDQ_SEL

参数

Symbol

描述

数据类型

数值表示范围

输入参数 1

UDM0

UDM0

16 位有符号 Q15

[-1 , 0.999969482]

输入参数 2

UQM0

UQM0

16 位有符号 Q15

[-1 , 0.999969482]

输入参数 3

UD

UD,DPID 输出

16 位有符号 Q15

[-1 , 0.999969482]

输入参数 4

UQ

UQ,QPID 输出

16 位有符号 Q15

[-1 , 0.999969482]

输出参数 1

UDS

选择输出数据 UDS

16 位有符号 Q15

[-1 , 0.999969482]

输出参数 2

UQS

选择输出数据 UQS

16 位有符号 Q15

[-1 , 0.999969482]

UDQ_SEL 功能用于 Mode0 / 1 / 2 不同工作模式下 UD 和 UQ 输入信号源的选择,具体选择通路如下图所示:



DPID

参数

Symbol

描述

数据类型

数值表示范围

输入参数 1

ID_REF

D 轴参考电流值

16 位有符号 Q15

[-1 , 0.999969482]

输入参数 2

ID

D 轴电流计算值

16 位有符号 Q15

[-1 , 0.999969482]

输入参数 3

DPID_KP

D 轴 PID 比例系数

16 位有符号 Q15

[-1 , 0.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]

输入参数 7

DPID_COMP

D 轴 PID 补偿值

16 位有符号 Q15

[-1 , 0.999969482]

输出参数 1

UD

D 轴 PID 输出值

16 位有符号 Q15

[-1 , 0.999969482]



QPID

参数

Symbol

描述

数据类型

数值表示范围

输入参数 1

IQ_REF

Q 轴参考电流值

16 位有符号 Q15

[-1 , 0.999969482]

输入参数 2

IQ

Q 轴电流计算值

16 位有符号 Q15

[-1 , 0.999969482]

输入参数 3

QPID_KP

Q 轴 PID 比例系数

16 位有符号 Q15

[-1 , 0.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]



反 Park 变换

参数

Symbol

描述

数据类型

数值表示范围

输入参数 1

UD_S

DPID 或 UDM0 输出的 UD

16 位有符号 Q15

[-1 , 0.999969482]

输入参数 2

UQ_S

QPID 或 UQM0 输出的 UQ

16 位有符号 Q15

[-1 , 0.999969482]

输入参数 3

sin ETHETA

电角度 ETHETA 的正弦值

16 位有符号 Q15

[-1 , 0.999969482]

输入参数 4

cos ETHETA

电角度 ETHETA 的余弦值

16 位有符号 Q15

[-1 , 0.999969482]

输出参数 1

UA

Alpha 轴电压

16 位有符号 Q15

[-1 , 0.999969482]

输出参数 2

UB

Beta 轴电压

16 位有符号 Q15

[-1 , 0.999969482]

死区补偿

参数

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 的处理流程图如下



1. 反 Clarke 变换

参数

Symbol

描述

数据类型

数值表示范围

输入参数 1

UA

Alpha 轴电压

16 位有符号 Q15

[-1 , 0.999969482]

输入参数 2

UB

Beta 轴电压

16 位有符号 Q15

[-1 , 0.999969482]

输入参数 3

UA_COMP

Alpha 轴死区补偿电压

16 位有符号 Q15

[-1 , 0.999969482]

输入参数 4

UB_COMP

Beta 轴死区补偿电压

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]

2. Sector

参数

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]

3. Time Vector

参数

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]

输出参数 1

VECT1

时间矢量 1

16 位无符号整型数

[0 , 0xFFFF]

输出参数 2

VECT2

时间矢量 2

16 位无符号整型数

[0 , 0xFFFF]

输出参数 3

VECT0

时间矢量 0

16 位无符号整型数

[0 , 0xFFFF]

4. Duty

参数

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]

QEP 测速

参数

Symbol

描述

数据类型

数值表示范围

输入参数 1

QPOSCNT

QEP 位置数据

24 位无符号整型数

[0 , 0xFFFFFF]

输入参数 2

SPD_DIR_TH

测速方向阈值

24 位无符号整型数

[0 , 0xFFFFFF]

输入参数 3

QEP_MAX_POS

QEP 最大位置

24 位无符号整型数

[0 , 0xFFFFFF]

输入参数 4

QEP_SPDMCOFF

QEP 测速系数

24 位无符号 Q15

[0 , 511.999969482]

输入参数 5

QEP_MAX_DPOS

QEP 最大位置差

24 位无符号整型数

[0 , 0xFFFFFF]

输出参数 1

SPD_OUT

速度输出

16 位有符号整型数

[0 , 0xFFFF]

ABS 测速

参数

Symbol

描述

数据类型

数值表示范围

输入参数 1

ABS_POS

ABS 位置数据

24 位无符号整型数

[0 , 0xFFFFFF]

输入参数 2

SPD_DIR_TH

测速方向阈值

24 位无符号整型数

[0 , 0xFFFFFF]

输入参数 3

ABS_MAX_POS

ABS 最大位置

24 位无符号整型数

[0 , 0xFFFFFF]

输入参数 4

ABS_SPDMCOFF

ABS 测速系数

24 位无符号 Q15

[0 , 511.999969482]

输入参数 5

ABS_MAX_DPOS

ABS 最大位置差

24 位无符号整型数

[0 , 0xFFFFFF]

输出参数 1

SPD_OUT

速度输出

16 位有符号整型数

[0 , 0xFFFF]

电流环断续点

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

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

  2. 使能硬件电流环断和续点功能后,硬件电流环计算到断点处停止计算,并且产生中断状态通知 CPU。
  3. 软件根据断点处的数据,对用户所需的算法进行计算,计算出续点所需的数据。
  4. 软件通过寄存器 RSP_PARA0/1/2 写入续点数据,且对寄存器字段 HCL_RP_START 写 0x1,触发硬件电流环从续点继续完成本次电流环计算。
  5. 按照以下两种情况,设置不同流程:
    • Case 1:利用断续点的设置,采用软件 PID 替换硬件 PID。

      设置 Node D 为断点 BreakPoint,Node E 为续点,电流环执行的顺序为:

      A → B → C → D → 电流环停止,产生 IRQ → 中断函数进行用户的 PID 算法,获得 Ud 和 Uq 数据作为续点数据,续点数据写入 RSP_PARA0/1 寄存器,HCL_RP_START = 0x1 触发电流环重新启动→ F → G→更新 EPWM 的占空比→完成本次计算



    • Case 2:利用断续点的设置,采用 SDFM 接口的电流数据替换内置 ADC0/1 的电流数据。

      设置 Node B 为断点 BreakPoint,Node B 为续点,电流环执行的顺序为:

      A → B → 电流环停止,产生 IRQ → 中断函数进行 SDFM 的数据获取并且进行相应的数据处理,获得 PDIU 和 PDIV 数据作为续点数据,续点数据写入 RSP_PARA0/1 寄存器,HCL_RP_START = 0x1 触发电流环重新启动→ C → D → F → G → 更新 EPWM 的占空比 → 完成本次计算