【永磁同步电机(PMSM)】1. 基本结构与工作原理
【永磁同步电机(PMSM)】2. 数学模型与坐标变换
【永磁同步电机(PMSM)】3. 基于Matlab 的仿真与控制
【永磁同步电机(PMSM)】4. 同步旋转坐标系仿真模型
【永磁同步电机(PMSM)】5. PMSM 的仿真模型
【永磁同步电机(PMSM)】6. 矢量空间算法(SVPWM)
【永磁同步电机(PMSM)】7. 磁场定向控制(FOC)的原理与仿真
【永磁同步电机(PMSM)】8. 位置观测器的原理与仿真模型
【永磁同步电机(PMSM)】9. 滑模观测器(SMO)的算法与仿真
【永磁同步电机(PMSM)】 8. 位置观测器的原理与仿真模型
1. 无位置传感器方法概述
PMSM 电机的很多应用需要对转速和转矩进行闭环控制。精确的闭环速度控制系统通常需要相对或绝对的转子位置信息,才能计算 Park 逆变换的 θ e \theta _e θe
获得 PMSM 电机的位置信息的方法,大致可以分为有位置传感器方法和无位置传感器的方法。
- 有位置传感器的方法,使用传感器来检测电机转速和旋转位置;
- 无位置传感器的方法,不需要物理传感器,而是通过位置观测器(估计器)算法来估计转子的位置。
有位置传感器的 PMSM 控制策略具有以下优点:
- 高精度的速度和位置控制;
- 在高负载和低速工作条件下也能保持高效工作;
- 能够自动识别电机转子的初始位置。
有位置传感器的电机控制算法具备精确位置控制的能力,适用于需要高精度位置控制的场景,如机器人运动控制、工业自动化控制等。
无位置传感器控制策略不使用位置传感器,而是通过各种算法计算或估计电机转子的位置,对电机电流进行控制。
无位置传感器的 PMSM 电机控制具有以下优点:
- 价格低,便于生产;
- 电路简单,不需要额外的位置传感器和复杂的控制算法。
无位置传感器的电机控制算法适用于一些价格敏感的场景,如家电、电动工具、无人机等领域。-
1.1 基于反电动势的无传感器方法
无位置传感器的 PMSM 电机控制方法基于永磁同步电机的数学模型,利用 PMSM 的定子电流和电压计算 反电动势(Back electromotive force,BEMF)空间矢量,以获得转子角度。
由于 FOC 的目标是转子永磁体磁通量 φ f \varphi_{f} φf 与 d轴对齐,反电动势始终位于q轴上。可以通过将同步旋转坐标系的 dq 轴的反电动势矢量投影到 αβ 两相静止正交参考系,来计算转子位置。
[ u α u β ] = R [ i α i β ] + L d d t [ i α i β ] + k v ω [ − s i n ( θ ) c o s ( θ ) ] \begin{bmatrix} u_{\alpha} \\ u_{\beta} \end{bmatrix} = R \begin{bmatrix} i_{\alpha} \\ i_{\beta} \end{bmatrix} + L \frac{d}{dt} \begin{bmatrix} i_{\alpha} \\ i_{\beta} \end{bmatrix} + k_v \omega \begin{bmatrix} -sin(\theta) \\ cos(\theta) \end{bmatrix} [uαuβ]=R[iαiβ]+Ldtd[iαiβ]+kvω[−sin(θ)cos(θ)]
{ e α = k v ω s i n ( θ ) = − u α + R i α + L d i α d t e β = k v ω c o s ( θ ) = u β − R i β − L d i β d t θ = t a n − 1 ( e α / e β ) \begin{cases} \begin{aligned} e_{\alpha} &= k_v \omega sin(\theta) &= -u_{\alpha} + R i_{\alpha} + L \frac{di_{\alpha}}{dt}\\ e_{\beta} &= k_v \omega cos(\theta) &= u_{\beta} - R i_{\beta} - L \frac{di_{\beta}}{dt}\\ \theta &= tan^{-1} (e_{\alpha} / e_{\beta}) \end{aligned} \end{cases} ⎩ ⎨ ⎧eαeβθ=kvωsin(θ)=kvωcos(θ)=tan−1(eα/eβ)=−uα+Riα+Ldtdiα=uβ−Riβ−Ldtdiβ
基于这一基本数学模型,还有许多其他基于反EMF的方法,这些方法依赖于使用通量观测器或卡尔曼滤波器,其目的是提高估计过程和算法稳定性。这种方法在中高速运行区域可以给出良好的结果,而在低速和由于缺乏反电动势而导致的静止时,由于速度小,估计会出现问题。基于反电动势的方法的主要局限性在于,它不能用于在零速和低速区域(低于5%的速率速度)对永磁同步电机进行无传感器控制。
由于测量的相电流用于反电动势计算,因此这些方法容易受到噪声的影响,而整体精度则受到电机参数R、L、磁通常数的影响,这些参数可能会随着温度而变化。
1.3 基于定子磁链的无传感器方法
定子磁链矢量方法使用同步旋转坐标系的 dq电压方程计算永磁同步电机定子磁链矢量,通过将同步旋转坐标系的 dq 轴的定子磁链矢量投影到 αβ 两相静止正交参考系,来计算转子位置。
[ u q u d ] = R [ i q i d ] + d d t [ Ψ q Ψ d ] + ω [ Ψ d − Ψ q ] \begin{bmatrix} u_q \\ u_d \end{bmatrix} = R \begin{bmatrix} i_q \\ i_d \end{bmatrix} + \frac{d}{dt} \begin{bmatrix} \varPsi_q \\\varPsi_d \end{bmatrix} + \omega \begin{bmatrix} \varPsi_d \\-\varPsi_q \end{bmatrix} [uqud]=R[iqid]+dtd[ΨqΨd]+ω[Ψd−Ψq]
其中,
Ψ q = L q i q Ψ d = L d i d + Ψ P M \varPsi_q = L_q i_q \\ \varPsi_d = L_d i_d + \varPsi_{PM} Ψq=LqiqΨd=Ldid+ΨPM
为了计算定子磁通量并最终确定转子位置,必须测量并了解相电压、电流和电阻。
Ψ α = ∫ ( u α − R i α ) d t Ψ β = ∫ ( u β − R i β ) d t \varPsi_{\alpha} = \int (u_{\alpha} - R i_{\alpha}) dt \\ \varPsi_{\beta} = \int (u_{\beta} - R i_{\beta}) dt Ψα=∫(uα−Riα)dtΨβ=∫(uβ−Riβ)dt
这种方法的主要问题是由于集成过程可能会随着时间的推移而漂移。当然,可以通过使用适当的积分方法来解决这个问题,但反电动势的主要局限性仍然存在——这种无传感器技术无法检测到初始转子位置。
1.4 基于电感的方法无传感器方法
永磁同步电机定子相电感取决于转子位置,因此可以建立一个观测器来跟踪电周期内相电感的变化。
[ u A u B u C ] = R s [ i A i B i C ] + d d t [ Ψ A Ψ B Ψ C ] \begin{bmatrix} u_A \\ u_B \\ u_C \end{bmatrix} = R_s \begin{bmatrix} i_A \\ i_B \\ i_C \end{bmatrix} + \frac{d}{dt} \begin{bmatrix} \varPsi_A \\\varPsi_B \\\varPsi_C \end{bmatrix} uAuBuC =Rs iAiBiC +dtd ΨAΨBΨC
将从定子相电感的在线计算中获得转子位置信息,并将其与包含给定转子位置的给定电感的查找表进行比较。这种方法依赖于定子电阻和永磁磁链值的知识。此外,电感计算需要高开关频率(>10kHz)。
这种方法本身不适合在零速度下确定转子位置,因为相电压在静止时接近零,并且非常容易受到某些参数变化引起的误差的影响。
1.5 基于观测器的方法
基于观测器的方法使用永磁同步电机数学模型创建一个虚拟系统,该系统用与实际系统相同的相电压激励。目标是让这个虚拟模型产生估计的输出,然后将其与真实电机的测量输出进行比较。虚拟量和物理量之间的误差用于校正状态观测器的输出,然后状态观测器用于校正永磁同步电机转子位置。
由于永磁同步电机模型从定义上讲是非线性的,状态观测器的设计和实现通常非常复杂,但算法通常对参数变化和测量噪声非常鲁棒。
这种方法的主要缺点是计算要求高和设计复杂。此外,基于观测器的方法无法检测转子的初始位置。
1.6 基于信号注入的方法
基于信号注入的方法使用叠加在控制永磁同步电机的基波相电压之上的高频信号。该高频信号感应出包含转子位置信息的电流,采用信号处理技术进行解码。
基于显著性的方法,如高频信号注入,可能是估计转子位置的最佳方法,因为即使在静止条件下也能工作。但是,由于它们仅适用于在一个电气周期内电感变化的电机,对于具有可忽略dq显著性的表面安装磁体的小型电机,测量电流的变化将太小,无法产生适当的位置估计。
2. 基于反电动势的位置观测器
总体而言,基于反电动势的方法非常流行,适用于所提出的控制系统。虽然存在低速条件不能提供精确位置估计的限制,但在低速运行时我们可以使用开环电压控制。
我们首先构建一个简单的反EMF估计器。
我们从一个简单的用例开始,例如带有表面安装永磁体的永磁同步电机,假设其没有如方程2所述的显著性(Ld=Lq)。图1显示了相绕组的数学模型表示(基本上是从三相电机到两相正交电机的CLARKE坐标变换)。
{ e α = k v ω s i n ( θ ) = − u α + R i α + L d i α d t e β = k v ω c o s ( θ ) = u β − R i β − L d i β d t \begin{cases} \begin{aligned} e_{\alpha} &= k_v \omega sin(\theta) &= -u_{\alpha} + R i_{\alpha} + L \frac{di_{\alpha}}{dt}\\ e_{\beta} &= k_v \omega cos(\theta) &= u_{\beta} - R i_{\beta} - L \frac{di_{\beta}}{dt}\ \end{aligned} \end{cases} ⎩ ⎨ ⎧eαeβ=kvωsin(θ)=kvωcos(θ)=−uα+Riα+Ldtdiα=uβ−Riβ−Ldtdiβ
这两个绕组(正弦和余弦)彼此成90度电角,转子角度θ与两个反电动势电压 e α e_{\alpha} eα 和 e β e_{\beta} eβ 直接相关:
θ = t a n − 1 ( e α / e β ) \theta = tan^{-1} (e_{\alpha} / e_{\beta}) θ=tan−1(eα/eβ)
因此,如果我们找到一种方法来估计反电动势电压 e α e_{\alpha} eα 和 e β e_{\beta} eβ ,那么我们可以简单地应用上式得到转子角度。
采用矢量空间算法(FOC)时不可能直接测量反电动势,因此需要使用数值方法从数学模型中提取反电动势信息。(在BLDC 6步换向方法,在任意时刻 3个电机相位中只有2个通电,在理论上可以测量未连接相位的反电动势。)让我们看看如何从直流电机模型开始构建一个基本的反电动势估计器。
首先,我们为上图所示的一个绕组写下基尔霍夫电路定律(例如:对于沿α轴的正弦绕组),方程变为:
u α = R i α + L d i α d t + e α = R i α + L d i α d t − k v ω s i n ( θ ) u_{\alpha} = R i_{\alpha} + L \frac{d i_{\alpha}}{dt} +e_{\alpha} = R i_{\alpha} + L \frac{d i_{\alpha}}{dt} - k_v \omega sin(\theta) uα=Riα+Ldtdiα+eα=Riα+Ldtdiα−kvωsin(θ)
上式表明,转子位置θ 嵌入了反电动势方程的电压项中。因此,找到估算反电动势的方法,就能由此估计转子的位置。
从数学的角度来看,我们可以用一个简单的观测器来估计反电动势项,该观测器基于施加的电压uα、测量的电流iα和电机绕组参数 R&L。
我们可以从流过线圈的电流开始构建这个反EMF观测器。
推导出估计的电流:
l ^ = u α − e α L ^ s + R ^ \hat{l} = \frac{u_{\alpha} - e_{\alpha}}{\hat{L}s + \hat{R}} l^=L^s+R^uα−eα
上式中的电流、电阻和电感都用 hat运算符标记,表示这些都是预测值。
如果我们能使该方程中的预测电流与方程8中的测量电流相等,就可以很好地估计反电动势项。只有当预测的反电动势与电机绕组内产生的实际反电动势相等时,预测电流与测量电流才会相等。
在Simulink环境中使用 上式 构建观测器,如下图所示:
如图所示,预测电流是根据指令电压、预测反电动势和电机绕组电阻和电感值的一些估计值之间的差值计算的。然后,将预测电流与电机相位测量电流进行比较,并将差值馈入PI控制器,该控制器的任务是使这两个电流之间的误差最小化。如果该PI控制器将误差保持为零,则意味着控制器的输出是电机线圈内产生的精确反电动势。添加负增益以稳定PI控制器周围的闭环。
我们运行模拟并将直流电机的实际反电动势与预测的反电动势进行比较,我们可以考察观测器的跟踪效果。
如图所示,电机采用可变电压模式供电,使其加速和减速到一定水平,然后再失速。电机简化模型用于检查转子位置、电机电流和相绕组反电动势,作为反电动势观测器的参考。
反电动势观测器输出,即预测的反电动势,如图所示,并与从简化电机模型获得的电机反电动势进行了比较。可以看出,观测器可以非常准确地预测反电动势。反电动势观测器的精度与PI控制器的增益相关。
这就是如何使用测量的电流和命令电压构建一个简单的观测器来预测反EMF电压的变化。
接下来,我们需要找到与正交轴对应的另一个反电动势的波形,然后使用方程3来估计转子位置。
3. 位置观测器的原理与仿真
3.1 基本原理
磁场定向控制(FOC)系统中的位置观测器,包括 预测永磁同步电机转子位置所需的3个主要模块,如下图所示:
我们使用的反电动势估计器,估计基于 PI 控制器预测的显著性反电动势。
为此,我们将考虑一个新的 γ − δ \gamma-\delta γ−δ 正交虚拟坐标系,它是一个与永磁同步电机中产生的旋转磁场同步的旋转坐标系。该 γ − δ \gamma-\delta γ−δ 虚拟坐标系与FOC中的标准 dq 坐标系偏移了误差角 θ e r r θ_{err} θerr。
如果 γδ 与 dq 坐标轴完全对齐,则:
- 如果误差角 θ e r r θ_{err} θerr 为零,则旋转磁体产生的所有显著反电动势都位于 δ轴上,该轴实际上与q轴相同,这意味着实际位置和估计位置之间没有误差。
- 如果存在误差角 θ e r r θ_{err} θerr ,则 γ轴也存在显著的反电动势,因此可以将反电动势电压作为目标函数,通过 PI 控制器将其最小化为零。
于是,我们使用这个 γ − δ \gamma-\delta γ−δ 旋转坐标系来执行与位置观测器相关的所有计算。将 γ − δ \gamma-\delta γ−δ 旋转坐标系中的永磁同步电机模型改写为:
[ u γ u δ ] = [ R + s L d − ω γ δ L q ω γ δ L q R + s L d ] [ i γ i δ ] + k v ω γ δ [ − s i n ( θ e r r ) c o s ( θ e r r ) ] \begin{bmatrix} u_\gamma \\ u_\delta \end{bmatrix} = \begin{bmatrix} R+sL_d & -\omega_{\gamma\delta} L_q \\ \omega_{\gamma\delta} L_q & R+s L_d \end{bmatrix} \begin{bmatrix} i_{\gamma} \\ i_{\delta} \end{bmatrix} + k_v\omega_{\gamma\delta} \begin{bmatrix} -sin(θ_{err}) \\cos(θ_{err}) \end{bmatrix} [uγuδ]=[R+sLdωγδLq−ωγδLqR+sLd][iγiδ]+kvωγδ[−sin(θerr)cos(θerr)]
式中,
- R 是定子电阻[Ω],
- Ld和Lq是d轴和q轴电感[H],
- ω γ δ \omega_{\gamma\delta} ωγδ是转子的估计电角速度[rad/s],
- u γ u_\gamma uγ 和 u δ u_\delta uδ 是定子电压[V],
- i γ i_\gamma iγ 和 i δ i_\delta iδ 是定子电流[A],
- k v ∗ ω γ δ k_v*\omega_{\gamma\delta} kv∗ωγδ 是基于显著性的反电动势幅值[V],
- θ e r r θ_{err} θerr 是估计的准同步坐标系 γδ 和同步转子磁通坐标系 dq 之间的相位误差 [rad],
- s 是微分算子。
注意在上式中,δ轴上的电压是根据 Ld电感而不是 Lq计算的,这有助于避免 R 和 Ld 参数的电机参数测量误差。这是选择这种基于显著性的反电动势实现的另一个原因,因为位置估计精度仅取决于一个参数,直到磁场减弱区域。唯一需要预先知道/测量的参数是 Lq。而所有其它基于模型的方法都取决于2个或3个电机参数(Rs、Ld、Lq)。
因此,反电动势估计器的输出是 γδ 误差轴中的显著反反电动势电压。要将γ-γ分量优化为零,或者说,γδ误差轴和dq坐标轴之间的角度误差 θerr 为零。
使用反正切函数,我们可以直接获得γδ误差轴和dq轴之间的角度误差θerr,该误差可以通过PI控制器优化为零。
如果γδ误差帧和dq帧之间的角度误差θerr为零,那么我们在位置跟踪观测器的输出上也有正确的位置,在PI控制器的输出上有正确的速度。
3.2 反电动势估计器
反电动势估计器(也称为 反电动势观测器)的工作是在新引入的准同步γδ参考系中检测 PMSM 电机的永磁体感应的电压。估计的反电动势量用于估计转子速度和位置。
为了便于理解,将反电动势估计器分解为三个子系统:
- AlphaBeta2GammaDelta 子系统,将实际电流和电压投影到准同步坐标系中;
- RL_Circuit_Model 子系统,用于预测准同步坐标系中电流的永磁同步电机模型;
- backEMF_Estimator 子系统,实现 PI 控制器,用于计算准同步坐标系中的反EMF方程。
1. αβ2γδ Transformations 子系统
输入电压和电流在固定参考系αβ中提供。反EMF估计器将这些量转换为准同步参考系γδ,该参考系遵循实际同步转子磁通量系dq,误差为θerr。
可以看出,这就是一个简单的 Park 变换,其中用于正弦/余弦计算的角度是位置观测器预测的角度。
2. RL_Circuit_Model 子系统
为了能够预测反电动势分量 Eγ 和 Eδ,需要一种方法来使用永磁同步电机的数学模型预测电流分量 iγ 和 iδ。反电动势估计器的关键在于创建一个包含电机绕组模型和一个输出指向反电动势信号的PI控制器的闭环系统。
我们使用了基本的一阶传递函数来模拟RL电路在连续时间域中的行为,但现在我们需要处理的是一个需要在每个FOC采样循环中进行计算的模型,因此需要找到一个可以在MCU上实现的合适模型,如下图所示。
3. backEMF_Estimator 子系统
反向电动势估算器在γδ 两轴上形成,随后从 Eγ/Eδ 分割中提取所得到的θerr。如果我们假设转子转速足以产生反向电动势,那么 Eγ/Eδ 除法的结果对反向电动势的实际水平并不敏感。这样就可以正确设置 PI 控制器。
PI 控制器(γ 轴和三角轴各一个)系数的计算如前所示,使用根轨迹法即可轻松完成。您只需设置 ξ(当前环路衰减)和 ω0(当前环路固有频率),而选择这些系数的最简单方法就是使用为 FOC 当前环路控制器选择的相同值。
实际反电动势估计器的Simulink模型如图所示:
3.3 位置跟踪观测器
由于对于反电动势估计器,我们使用了实际参数和估计参数之间的差异,因此可以将作为PI控制器输出的反电动势估计值进行划分,以提取估计的γδ和dq参考系之间的位移信息,同时减少观察器参数变化的影响。位置位移θerr由方程式3得出。
然后,可以通过驱动估计参考系γδ的位置来获得转子估计位置,以实现零位移θerr=0。为了实现这一点,实施了锁相环机制,其中回路补偿器通过试图将误差信号θerr保持为零来确保对实际转子位置的正确跟踪。
再次,使用根轨迹调整方法,我们可以从二阶特征多项式开始计算PI控制器和积分器增益。在这种情况下,ξ是所需的衰减,f0是位置跟踪环路所需的带宽。由于位置误差信号是由在旋转参考系中形成的反EMF估计器计算的,因此位置跟踪回路的动力学仅包括与转子位移变化率成比例的频率,这些频率通常低于电流回路的频率。
使用以下程序,可以自动计算位置跟踪观测器参数:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Tracking Observer parameters
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% (to be set according to the chosen control system dynamics)
p_Ksi = 0.707; % position loop attenuation
p_fo = 15; % position loop natural frequency [Hz]
p_wo = 2*pi*p_fo; % position loop natural angular frequency [rad/s]
Kp = 4*pi*p_Ksi*p_fo;
Ki = p_wo^2;
% PIr controller parameters for position tracking observer
maxCoeff = max(abs([( Kp + (Ki*Ts)/2)*pi/Wmax,...
(-Kp + (Ki*Ts)/2)*pi/Wmax]));
NShift = max(0, ceil(log2(maxCoeff)));
if (NShift > 14)
error('Inputted parameters cannot be used - u16NShift exceeds 14');
end
%f16CC1 for PIr Tracking Observer controller
TO_ControllerPIr_f16CC1 = (Kp+(Ki*Ts)/2)*pi/Wmax*2^-NShift;
TO_ControllerPIr_f16CC1 = round(TO_ControllerPIr_f16CC1 * 2^15);
TO_ControllerPIr_f16CC1(TO_ControllerPIr_f16CC1 < -(2^15)) = -(2^15);
TO_ControllerPIr_f16CC1(TO_ControllerPIr_f16CC1 > (2^15)-1) = (2^15)-1;
%f16CC2 for PIr Tracking Observer controller
TO_ControllerPIr_f16CC2 = (-Kp+(Ki*Ts)/2)*pi/Wmax*2^-NShift;
TO_ControllerPIr_f16CC2 = round(TO_ControllerPIr_f16CC2 * 2^15);
TO_ControllerPIr_f16CC2(TO_ControllerPIr_f16CC2 < -(2^15)) = -(2^15);
TO_ControllerPIr_f16CC2(TO_ControllerPIr_f16CC2 > (2^15)-1) = (2^15)-1;
%u16NShift for PIr Tracking Observer controller
TO_ControllerPIr_u16NShift = NShift;
%f16C1, u16NShift for PIr Tracking Observer integrator
TO_IntegratorTR_f16C1 = (Ts/2)*Wmax/pi;
TO_IntegratorTR_f16C1 = round(TO_IntegratorTR_f16C1 * 2^15);
TO_IntegratorTR_u16NShift = 0;
disp(['TO_ControllerPIr_f16CC1 = ' num2str(TO_ControllerPIr_f16CC1) ';'])
disp(['TO_ControllerPIr_f16CC2 = ' num2str(TO_ControllerPIr_f16CC2) ';'])
disp(['TO_ControllerPIr_u16NShift = ' num2str(NShift) ';'])
disp(['TO_IntegratorTR_f16C1 = ' num2str(TO_IntegratorTR_f16C1) ';'])
disp(['TO_IntegratorTR_u16NShift = ' num2str(TO_IntegratorTR_u16NShift) ';'])
现在,如果我们运行模型,就可以得到转子位置和速度如下图所示。
下图显示了电机实际/真实速度与基于位置跟踪观测器输出的预测值的比较。如启动时所见,由于反电动势水平低,速度信息会出现误差,但一旦电机线圈中内置了足够的反电动势,估计就会变得准确。
参考文献:NXP, Model-based design toolbox - Module 9: Position Observer