功能描述
电流环工作模式
通过寄存器配置,HCL 可以配置三种工作模式,即 Mode0、Mode1 和 Mode2。各模式详细说明如下。
-
绿色底色为 HCL 在 Mode0 模式下工作的模块。
-
电角度选择 Theta0 寄存器的数值,即无位置测量,需要软件给定位置数据。
-
反 Park 变换计算的输入选择 Udm0、Uqm0 的寄存器数值输入,即无电流测量。
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 模式下有效,可以通过寄存器配置使能。
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] |
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] |
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 的处理流程图如下
参数 | 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] |
参数 | 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] |
输出参数 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] |
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] |
电流环断续点
- 通过寄存器字段 HCL_BPM_EN
使能电流环断点功能。
使能后,寄存器字段 HCL_BP_NODE 以及 HCL_RP_NODE 生效,分别指示断点的节点位置和续点的节点位置。
- 使能硬件电流环断和续点功能后,硬件电流环计算到断点处停止计算,并且产生中断状态通知 CPU。
- 软件根据断点处的数据,对用户所需的算法进行计算,计算出续点所需的数据。
- 软件通过寄存器 RSP_PARA0/1/2 写入续点数据,且对寄存器字段 HCL_RP_START 写 0x1,触发硬件电流环从续点继续完成本次电流环计算。
- 按照以下两种情况,设置不同流程:
- 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 的占空比 → 完成本次计算
- Case 1:利用断续点的设置,采用软件 PID 替换硬件 PID。