Edit online

功能描述

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/ BISS/ ENDAT_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 的占空比 → 完成本次计算