锁相环在无传感器FOC中的应用:从反电动势到角度跟踪
锁相环在无传感器FOC中的应用:从反电动势到角度跟踪
摘要:在基于滑模观测器(SMO)的无传感器FOC中,我们获得了包含转子位置信息的反电动势分量
一、 锁相环的基本概念与原理
锁相环本质上是一个相位反馈控制系统,其核心目标是使一个内部可控振荡器的相位与一个输入参考信号的相位同步。
在一个典型的软件PLL中,它通常包含三个基本部分:
- 相位检测器(Phase Detector, PD):比较输入信号与内部估计信号的相位差,输出一个与相位误差成正比的误差信号
。 - 环路滤波器(Loop Filter, LF):通常是一个PI控制器,对误差信号
进行滤波和调节。其输出是估计的角频率 。 - 压控振荡器(Voltage-Controlled Oscillator, VCO):在数字系统中,这表现为一个积分器。它将估计的角频率
积分,得到估计的相位角 。这个 会反馈回相位检测器,形成闭环。
[SMO Output] Phase Loop VCO
e_α, e_β ---> Detector ---> Filter ---> (Integrator)
(Noisy) [ε(θ-θ̂)] [PD: e_d] [PI] [ω̂] [θ̂ = ∫ω̂ dt]
^ |
| |
--------------------------------------------
Feedback (cosθ̂, sinθ̂)在FOC的上下文中,输入信号是滑模观测器估算出的反电动势矢量
二、 从帕克变换推导相位误差信号
将滑模观测器输出的反电动势矢量
\begin{bmatrix}
e_d \\
e_q
\end{bmatrix}
=
\begin{bmatrix}
\cos\hat{\theta} & \sin\hat{\theta} \\
-\sin\hat{\theta} & \cos\hat{\theta}
\end{bmatrix}
\begin{bmatrix}
e_\alpha \\
e_\beta
\end{bmatrix}其中,
根据之前的推导,真实的反电动势在α-β坐标系下为:
e_\alpha = \omega_e \psi_f \sin\theta \\
e_\beta = -\omega_e \psi_f \cos\theta一般定义
将上述真实表达式代入
\begin{aligned}
e_d &= \cos\hat{\theta} \cdot (\omega_e \psi_f \sin\theta) + \sin\hat{\theta} \cdot (-\omega_e \psi_f \cos\theta) \\
&= \omega_e \psi_f (\cos\hat{\theta}\sin\theta - \sin\hat{\theta}\cos\theta) \\
&= \omega_e \psi_f \sin(\theta - \hat{\theta}) \\[1em]
e_q &= -\sin\hat{\theta} \cdot (\omega_e \psi_f \sin\theta) + \cos\hat{\theta} \cdot (-\omega_e \psi_f \cos\theta) \\
&= -\omega_e \psi_f (\sin\hat{\theta}\sin\theta + \cos\hat{\theta}\cos\theta) \\
&= -\omega_e \psi_f \cos(\theta - \hat{\theta})
\end{aligned}关键推导:当估计角度
\begin{aligned}
e_d &\approx \omega_e \psi_f \cdot (\theta - \hat{\theta}) \approx \theta - \hat{\theta} = \Delta\theta\\
e_q &\approx -\omega_e \psi_f = -E
\end{aligned}这个公式揭示了一个重要的关系:在 d-q 坐标系下,反电动势的 d 轴分量
锁相状态分析:
当估计角度
\begin{aligned}
e_d &= \omega_e \psi_f \sin(0) = 0 \\
e_q &= -\omega_e \psi_f \cos(0) = -\omega_e \psi_f = -E
\end{aligned}这意味着:
- d 轴分量
:表示完全锁定,无相位误差 - q 轴分量
:表示反电动势全部落在 q 轴负方向上
三、 鉴相器设计
如何从反电动势中得到相位误差信号
在实际系统中,我们无法获得理想的反电动势
将观测到的反电动势用估计角度
\begin{aligned}
\hat{E}_d &= \cos\hat{\theta} \cdot \hat{E}_{\alpha} + \sin\hat{\theta} \cdot \hat{E}_{\beta}\\
\hat{E}_q &= -\sin\hat{\theta} \cdot \hat{E}_{\alpha} + \cos\hat{\theta} \cdot \hat{E}_{\beta}\\
\end{aligned}根据之前得出的结论,在锁相状态下,当
E_{err} = E_d^{target} - \hat{E}_d = 0 - \hat{E}_d = -\hat{E}_d即:
\boxed{E_{err} = -(\cos\hat{\theta} \cdot \hat{E}_{\alpha} + \sin\hat{\theta} \cdot \hat{E}_{\beta})}根据之前
\boxed{E_{err} = -\hat{E}_d \approx -\Delta\theta= -(\hat{\theta} - \theta)=\theta-\hat{\theta}=\theta_{err}}四、 环路滤波器(PI控制器)与速度估计
误差信号
\hat{\omega}_e(k) = K_p \cdot \epsilon(k) + K_i \cdot \sum_{j=0}^{k} \epsilon(j) \cdot T_s为什么PI控制器的输出是速度?
这里有两种相辅相成的理解方式:
从系统动态角度理解:误差
本质上反映了角度跟踪的“滞后”或“超前”量。当电机加速时,真实角度变化加快,如果观测器/计算环节的响应速度不变,就会产生更大的跟踪滞后(即更大的正 )。这个滞后量 可以直观地理解为一种“相位积累差”,其变化率与加速度相关。PI控制器的积分项对 进行累积: 。这正好对应于速度是加速度的积分这一物理关系。比例项 则提供快速的相位校正响应,是对积分过程的一种动态补偿。从闭环控制与数学推导理解:我们从公式
出发。将其重写为 。在PLL中,我们通过PI控制器来驱动这个误差 趋于零。PI控制器的传递函数在频域中为 。整个PLL闭环的作用就是让估计角度 跟踪真实角度 。根据自动控制原理,对于一个跟踪相位的闭环系统,其前向通路中积分器(VCO)前的控制器输出,自然具有频率的量纲。因此,PI输出被定义为估计速度 是闭环系统结构下的必然结果。
两种理解并不矛盾,第一种提供了更直观的物理图景,第二种则基于严格的系统框图与数学关系。在实践中,我们只需记住:PI控制器处理的是相位误差信号,其输出被定义为估计的转速。
五、 算法流程与C语言实现
基于以上推导,PLL的离散化实现步骤如下:
鉴相:计算误差信号
。环路滤波:将
送入PI控制器,得到估计的速度。\begin{aligned} \text{比例项} &: P_{out} = K_p \cdot E_{err}(k) \\ \text{积分项} &: I_{sum} = I_{sum} + K_i \cdot E_{err}(k) \cdot T_s \\ \dot{\hat{\theta}}_e(k) &= P_{out} + I_{sum} \end{aligned}(可选)速度滤波:对
进行低通滤波以平滑噪声,得到 。积分得位:对滤波后的速度进行积分,更新位置估计值。
\hat{\theta}_e(k) = \hat{\theta}_e(k-1) + \dot{\hat{\theta}}_{e, flt}(k) \cdot T_s注意对
进行周期归一化(如模 )。
以下是简化的C语言代码框架:
typedef struct {
// PI 参数
float Kp;
float Ki;
float integral_sum; // 积分项累加值
// 状态变量
float theta_hat; // 估计角度 θ_hat
float omega_hat; // 估计速度 ω_hat
float lpf_alpha; // 速度低通滤波系数
float flt_omega; // 滤波后速度
} PLL;
float PLL_Update(PLL *pll, float Ealpha_hat, float Ebeta_hat, float Ts) {
float phase_error;
float omega_unfiltered;
// 1. 鉴相器:计算相位误差 E_err
phase_error = -(cosf(pll->theta_hat) * Ealpha_hat + sinf(pll->theta_hat) * Ebeta_hat);
// 2. 环路滤波器 (PI控制器):输出为未滤波的速度估计
pll->integral_sum += pll->Ki * phase_error * Ts; // 积分项
omega_unfiltered = (pll->Kp * phase_error) + pll->integral_sum; // PI输出
// 3. (可选)对速度进行低通滤波
pll->flt_omega = pll->lpf_alpha * pll->flt_omega + (1.0f - pll->lpf_alpha) * omega_unfiltered;
pll->omega_hat = pll->flt_omega;
// 4. 积分器 (VCO):更新估计角度
pll->theta_hat += pll->omega_hat * Ts;
// 角度归一化到 [0, 2π)
pll->theta_hat = fmod(pll->theta_hat, 2.0f * PI);
if (pll->theta_hat < 0) {
pll->theta_hat += 2.0f * PI;
}
return pll->theta_hat; // 返回用于Park变换的角度
}六、 总结
锁相环是提升无传感器FOC系统位置估计鲁棒性和平滑性的有效工具。它将角度提取问题转化为一个闭环跟踪控制问题。通过将滑模观测器得到的反电动势矢量投影到以估计角度定向的