无感观测器理论模型(NTSM-SMO-PLL 与 SMO-PLL)

无感观测器理论模型(NTSM-SMO-PLL 与 SMO-PLL)

本文给出重汽重卡 115 kW IPMSM 无感观测器的完整理论模型。 两支观测器:NTSM-SMO-PLL (非奇异终端滑模,主方案)与 SMO-PLL (线性滑模,对照组)。 所有公式与 Simulink 模型 M9_Flux_weakening 中的实现逐一对应。

阅读说明 :第 3 节(NTSM-SMO)与第 6 节(PLL)从零基础写起,每引入一个概念都会先讲清"为什么需要它", 再给公式与推导。没接触过滑模控制或锁相环的读者可直接按顺序读完这两节。


0. 核心思路有没有变?------没有

环节 NTSM-SMO SMO 是否改变
电流观测器结构 Lq di^/dt=u−Rsi^−v L_q\,d\hat i/dt = u-R_s\hat i-v Lqdi^/dt=u−Rsi^−v 同左 未变
滑模控制量 vv v 的构造 终端滑模控制律 HH H 线性切换项 zz z 未变
滑模面 / 切换函数 积分非奇异终端滑模面 ss s 电流误差饱和函数 未变
反电动势提取 Eh=LPF(H,wc) E_h=\mathrm{LPF}(H,w_c) Eh=LPF(H,wc) Eh=LPF(z,wc) E_h=\mathrm{LPF}(z,w_c) Eh=LPF(z,wc) 未变
角度提取 atan2\mathrm{atan2} atan2 + 解卷绕 + 相位补偿 同左 未变
转速提取 we= Emag /ψ w_e=E_{mag}/\psi we=Emag/ψ(幅值法) → 二阶 PLL(锁相法) 同左 ⭐ 唯一改变
等效磁链 ψ\psi ψ 输出 仍保留供诊断 已不使用 接口未变

⇒ 本次改动只发生在"转速提取"这一个模块内部 ,两支观测器的滑模部分完全保持原样。 函数签名、输入输出端口数量与含义全部不变,模型连线无需改动。


1. 被控对象模型(IPMSM 在 αβ 域)

1.1 为什么用 αβ 域

电机三相绕组在物理上是耦合的。为了做无感观测,我们希望把模型写成 "两个独立的、与转子位置无关的电路" ------ 这就是 αβ(静止两相)坐标系。 它的好处是:电压、电流、反电动势都是可以直接测量或由三相量变换得到的 , 而转子位置 θe \theta_e θe 只出现在反电动势里,正好成为我们要估计的对象。

1.2 三相到 αβ(Clarke 变换,等幅值形式)

iα iβ =23 1 −12 −12 0 32 − 32 ia ib ic \begin{bmatrix}i_\alpha\\i_\beta\end{bmatrix} =\frac{2}{3}\begin{bmatrix}1 & -\tfrac12 & -\tfrac12\\2pt0 & \tfrac{\sqrt3}{2} & -\tfrac{\sqrt3}{2}\end{bmatrix} \begin{bmatrix}i_a\\i_b\\i_c\end{bmatrix} iαiβ=3210−2123 −21−23 iaibic

利用 ia+ib+ic=0 i_a+i_b+i_c=0 ia+ib+ic=0 消去 ic i_c ic,可化简为模型中的实际实现:
  iα=ia,iβ= 13 (ia+2ib)    \boxed{\;i_\alpha=i_a,\qquad i_\beta=\frac{1}{\sqrt3}\left(i_a+2i_b\right)\;} iα=ia,iβ=3 1(ia+2ib)

模型实现 :Clark 子系统,两个 Interpreted MATLAB Function(u(1) 与 (1/sqrt(3))*(u(1)+2*u(2)))。 该式为等幅值 Clarke 的正确等价写法, ∣ iαβ ∣ |i_{\alpha\beta}| ∣iαβ∣ 等于相电流幅值(已在模型中核实)。

1.3 αβ 电压方程

以 Lq L_q Lq 为电感基准(因为采用"扩展反电动势"建模,把凸极效应并入反电动势项):
   uαβ =Rs iαβ +Lq d iαβ dt + Eex,αβ    (1.1) \boxed{\;u_{\alpha\beta}=R_s i_{\alpha\beta}+L_q\frac{di_{\alpha\beta}}{dt}+E_{ex,\alpha\beta}\;} \tag{1.1} uαβ=Rsiαβ+Lqdtdiαβ+Eex,αβ(1.1)

直观理解 :这就是一个 RL 串联电路 ------ 端电压 = 电阻压降 + 电感压降 + 反电动势。 观测器的任务,就是在不知道 Eex E_{ex} Eex 的前提下,通过已知的 uu u 和 ii i 把它"抠"出来。

1.4 扩展反电动势(EEMF)

Eex,αβ =ωeψf −sin⁡θe cos⁡θe +(Ld−Lq) T(θe) did/dt ωeid ,T(θe)= cos⁡θe −sin⁡θe sin⁡θe cos⁡θe E_{ex,\alpha\beta} =\omega_e\psi_f\begin{bmatrix}-\sin\theta_e\\ \cos\theta_e\end{bmatrix} +(L_d-L_q)\,T(\theta_e)\begin{bmatrix}di_d/dt\\ \omega_e i_d\end{bmatrix}, \qquad T(\theta_e)=\begin{bmatrix}\cos\theta_e & -\sin\theta_e\\ \sin\theta_e & \cos\theta_e\end{bmatrix} Eex,αβ=ωeψf−sinθecosθe+(Ld−Lq)T(θe)did/dtωeid,T(θe)=cosθesinθe−sinθecosθe

稳态 ( id i_d id、 iq i_q iq 为常数, did/dt=0 di_d/dt=0 did/dt=0)时退化为:
Eex,αβ = ωeψf+(Ld−Lq)id ⏟ E −sin⁡θe cos⁡θe E_{ex,\alpha\beta}=\underbrace{\omega_e\big\\psi_f+(L_d-L_q)i_d\\big}_{\textstyle E}\begin{bmatrix}-\sin\theta_e\\ \cos\theta_e\end{bmatrix} Eex,αβ=E ωeψf+(Ld−Lq)id−sinθecosθe

定义等效磁链 (模型中的 psi):
  ψ  ≜  ψf+(Ld−Lq) id   (1.2) \boxed{\;\psi \;\triangleq\; \psi_f+(L_d-L_q)\,i_d\;} \tag{1.2} ψ≜ψf+(Ld−Lq)id(1.2)

稳态下:
   Eex,αβ =ωeψ −sin⁡θe cos⁡θe ,∣ Eex ∣=ωeψ   (1.3) \boxed{\;E_{ex,\alpha\beta}=\omega_e\psi\begin{bmatrix}-\sin\theta_e\\ \cos\theta_e\end{bmatrix},\qquad |E_{ex}|=\omega_e\psi\;} \tag{1.3} Eex,αβ=ωeψ−sinθecosθe,∣Eex∣=ωeψ(1.3)

三条重要性质:

  1. 幅值正比于转速 : ∣ Eex ∣=ωeψ |E_{ex}|=\omega_e\psi ∣Eex∣=ωeψ。这是"幅值法求转速"的理论依据,也是它在高速段失效的根源(见 6.0.2 节)。
  2. 方向编码了转子位置 :矢量的相角就是 θe \theta_e θe(差一个固定的 π/2\pi/2 π/2)。这是"锁相法求转速"的依据。
  3. id≈0 i_d\approx0 id≈0 时 ψ≈ψf \psi\approx\psi_f ψ≈ψf ,反电动势幅值与凸极参数 Ld L_d Ld、 Lq L_q Lq 无关。

1.5 符号约定

模型采用余弦基准:
Eex,α =−Esin⁡θe, Eex,β =+Ecos⁡θe,E=ωeψ E_{ex,\alpha}=-E\sin\theta_e,\qquad E_{ex,\beta}=+E\cos\theta_e,\qquad E=\omega_e\psi Eex,α=−Esinθe,Eex,β=+Ecosθe,E=ωeψ

反电动势矢量的相角:
arg⁡ ⁣( Eex,α +j Eex,β )=arg⁡ ⁣(E(−sin⁡θe+jcos⁡θe))=arg⁡ ⁣(jEe jθe )=θe+ π2 \arg\!\big(E_{ex,\alpha}+jE_{ex,\beta}\big) =\arg\!\big(E(-\sin\theta_e+j\cos\theta_e)\big) =\arg\!\big(jEe^{j\theta_e}\big) =\theta_e+\tfrac{\pi}{2} arg(Eex,α+jEex,β)=arg(E(−sinθe+jcosθe))=arg(jEejθe)=θe+2π

⇒ 从反电动势取角度时必须用 atan2(−Eα, Eβ) \mathrm{atan2}(-E_\alpha,\,E_\beta) atan2(−Eα,Eβ),而不是 atan2(Eβ,Eα) \mathrm{atan2}(E_\beta,E_\alpha) atan2(Eβ,Eα)。 (前者恰好把 π/2\pi/2 π/2 偏置抵消掉。)


2. 观测器总体结构

两支观测器共享同一套三层结构,唯一区别在第二层的构造:

ini 复制代码
┌─────────────────────────────────────────────────────────────┐
│  第一层:电流观测器                                          │
│      L_q · dî/dt = u − Rs·î − v                              │
│      这是对象模型 (1.1) 的"复制品",v 是人为加入的修正量      │
├─────────────────────────────────────────────────────────────┤
│  第二层:滑模控制量 v                                        │
│      NTSM:v = H  ← 终端滑模控制律                            │
│      SMO :v = z  ← 线性切换项 z = K·sat(x₁,φs)              │
├─────────────────────────────────────────────────────────────┤
│  第三层:反电动势提取与角度/转速                              │
│      E_h   = LPF(v, wc)                                      │
│      θ     = unwrap[atan2(−E_hα, E_hβ)] + atan(ωpll/wc)      │
│      ωpll  = PLL(E_h)          ← 本版改动点                   │
└─────────────────────────────────────────────────────────────┘

电流误差矢量(贯穿全文的核心变量):
  x1≜ i^αβ − iαβ    (2.1) \boxed{\;x_1\triangleq\hat i_{\alpha\beta}-i_{\alpha\beta}\;} \tag{2.1} x1≜i^αβ−iαβ(2.1)


3. NTSM-SMO 核心(主方案)

3.0 预备知识:滑模控制是什么(零基础可读)

3.0.1 基本思想

我们要让 i^ \hat i i^ 跟踪 ii i,但不知道该施加多大的修正量 vv v(因为我们不知道 Eex E_{ex} Eex)。

滑模控制的做法 是:不去"算出"这个修正量,而是让 vv v 在两个极端值之间高速切换 , 使误差 x1 x_1 x1 被强行推向一个我们设计的曲面 s=0s=0 s=0,并在上面保持。

举个最简例子:若希望 x1→0 x_1\to0 x1→0,取 v=K sgn(x1) v = K\,\mathrm{sgn}(x_1) v=Ksgn(x1)。

  • x1>0 x_1>0 x1>0 时 v=+Kv=+K v=+K,把误差往负方向推;
  • x1<0 x_1<0 x1<0 时 v=−Kv=-K v=−K,把误差往正方向推。

只要 KK K 足够大,误差就会被"夹"在 0 附近 ------ 这就是最简单的滑模。

3.0.2 两个阶段
阶段 含义
到达阶段(reaching) ss s 从初始值被拉到 s=0s=0 s=0 的过程
滑动阶段(sliding) 到达后,系统被约束在 s=0s=0 s=0 上运动

滑动阶段有一个极其重要的性质 :一旦 s≡0s\equiv0 s≡0,系统的运动完全由曲面方程 s=0s=0 s=0 决定, 与对象参数( Rs R_s Rs、 Lq L_q Lq)和外部扰动无关。

直观理解 :开关量 vv v 的"平均值"会自动调整到恰好抵消扰动的大小 ------ 这正是我们想要的反电动势。这就是滑模观测器能"不求而知"反电动势的根本原因。

3.0.3 为什么叫"终端"(Terminal)
  • 线性滑模面 (如 s=x1 s=x_1 s=x1):误差按指数衰减 x1(t)=x1(0)e−λt x_1(t)=x_1(0)e^{-\lambda t} x1(t)=x1(0)e−λt,理论上永远到不了零(渐近收敛)。
  • 终端滑模面 (含 ∣x1∣rsgn(x1) |x_1|^r\mathrm{sgn}(x_1) ∣x1∣rsgn(x1), 0<r<10<r<1 0<r<1 的分数幂): 误差在有限时间内精确到达零。

为什么分数幂能带来有限时间? 考虑标量方程 x˙=−k∣x∣rsgn(x) \dot x=-k|x|^r\mathrm{sgn}(x) x˙=−k∣x∣rsgn(x), 0<r<10<r<1 0<r<1。分离变量积分:
∫x00 dx∣x∣r =−k∫0Tdt ⟹ T= ∣x0∣1−r k(1−r) <+∞ \int_{x_0}^{0}\frac{dx}{|x|^r}=-k\int_0^{T}dt \ \Longrightarrow\ T=\frac{|x_0|^{1-r}}{k(1-r)}<+\infty ∫x00∣x∣rdx=−k∫0Tdt ⟹ T=k(1−r)∣x0∣1−r<+∞

⇒ 收敛时间是有限的 (而指数收敛对应 T=∞T=\infty T=∞)。

3.0.4 为什么叫"非奇异"(Nonsingular)

最原始的终端滑模面写成:
s=x1+β  x˙1 q/p ,q>p⟹qp>1 s=x_1+\beta\,\dot x_1^{\,q/p},\qquad q>p\quad\Longrightarrow\quad \frac qp>1 s=x1+βx˙1q/p,q>p⟹pq>1

对它求导会出现 x˙1 q/p−1 \dot x_1^{\,q/p-1} x˙1q/p−1,指数 q/p−1>0q/p-1>0 q/p−1>0 没问题; 但如果写成 s=x1+β  x˙1 p/q s=x_1+\beta\,\dot x_1^{\,p/q} s=x1+βx˙1p/q( p/q<1p/q<1 p/q<1),求导后指数变成负数 p/q−1<0p/q-1<0 p/q−1<0, 当 x˙1 →0 \dot x_1\to0 x˙1→0 时项趋于无穷 ------ 这就是奇异问题。

本方案采用"积分型"构造规避奇异 :把终端项放在积分号内部
s=x1+∫0tkn∣x1∣rsgn(x1) dτ s=x_1+\int_0^t k_n|x_1|^r\mathrm{sgn}(x_1)\,d\tau s=x1+∫0tkn∣x1∣rsgn(x1)dτ

求导后得到的是 ∣x1∣rsgn(x1) |x_1|^r\mathrm{sgn}(x_1) ∣x1∣rsgn(x1)(指数 r=0.6>0r=0.6>0 r=0.6>0),在 x1=0 x_1=0 x1=0 处不奇异 ✓


3.1 电流误差动态

由 (1.1) 与观测器第一层:
Lq d i^αβ dt = uαβ −Rs i^αβ −H L_q\frac{d\hat i_{\alpha\beta}}{dt}=u_{\alpha\beta}-R_s\hat i_{\alpha\beta}-H Lqdtdi^αβ=uαβ−Rsi^αβ−H

两式相减,消去已知的 uαβ u_{\alpha\beta} uαβ:
  Lq dx1 dt =−Rsx1−H+ Eex    (3.1) \boxed{\;L_q\frac{dx_1}{dt}=-R_sx_1-H+E_{ex}\;} \tag{3.1} Lqdtdx1=−Rsx1−H+Eex(3.1)

读法 :误差的变化率由三部分决定 ------ 电阻自衰减( − RsLq x1 -\frac{R_s}{L_q}x_1 −LqRsx1)、我们的控制量( − HLq -\frac{H}{L_q} −LqH)、 以及我们想知道的扰动( + Eex Lq +\frac{E_{ex}}{L_q} +LqEex)。滑模的任务就是让 HH H 恰好抵消 Eex E_{ex} Eex。


3.2 积分非奇异终端滑模面

分数幂项:
∣x1∣rsgn(x1),r=pq,p=3, q=5 ⇒ r=0.6 |x_1|^r\mathrm{sgn}(x_1),\qquad r=\frac pq,\quad p=3,\ q=5\ \Rightarrow\ r=0.6 ∣x1∣rsgn(x1),r=qp,p=3, q=5 ⇒ r=0.6

这个函数作用在矢量上是逐分量进行的。它兼具"符号函数"(给方向)与"分数幂"(小误差处增益相对更大)两重作用。

滑模面(含两个积分项):
  s=x1+ ∫0tjnx1 dτ ⏟ Ij: 线性积分项 + ∫0tkn∣x1∣rsgn(x1) dτ ⏟ Ik: 终端积分项    (3.2) \boxed{\;s=x_1+\underbrace{\int_0^t j_nx_1\,d\tau}{I_j:\ \text{线性积分项}}+\underbrace{\int_0^t k_n|x_1|^r\mathrm{sgn}(x_1)\,d\tau}{I_k:\ \text{终端积分项}}\;} \tag{3.2} s=x1+Ij: 线性积分项 ∫0tjnx1dτ+Ik: 终端积分项 ∫0tkn∣x1∣rsgn(x1)dτ(3.2)

离散化(前向欧拉):
Ijk=Ijk−1+Ts jn x1k−1 I_jk=I_jk-1+T_s\,j_n\,x_1k-1 Ijk=Ijk−1+Tsjnx1k−1
Ikk=Ikk−1+Ts kn ∣x1k−1∣rsgn(x1k−1) I_kk=I_kk-1+T_s\,k_n\,|x_1k-1|^r\mathrm{sgn}(x_1k-1) Ikk=Ikk−1+Tskn∣x1k−1∣rsgn(x1k−1)
sk=x1k−1+Ijk+Ikksk=x_1k-1+I_jk+I_kk sk=x1k−1+Ijk+Ikk

⚠️ 实现细节 :模型中 Ij I_j Ij、 Ik I_k Ik 各加了 ±50\pm50 ±50 的抗饱和限幅,防止极端工况下无限累积。

两个积分项分别做什么?

项 作用
Ij=∫jnx1 I_j=\int j_nx_1 Ij=∫jnx1 消除稳态误差(积分作用),使 x1 x_1 x1 的平均值为零
Ik=∫kn∥x1∥rsgn(x1) I_k=\int k_n\|x_1\|^r\mathrm{sgn}(x_1) Ik=∫kn∥x1∥rsgn(x1) 提供终端(有限时间)收敛特性

3.3 控制律

  H=−Rsx1+Lq jnx1 ⏟ ①线性积分项 + kn∣x1∣rsgn(x1) ⏟ ②终端项 + k1s ⏟ ③线性滑模项 + f sat(s,ϕs) ⏟ ④自适应切换项    (3.3) \boxed{\; H=-R_sx_1+L_q\Big\\underbrace{j_nx_1}_{\\text{①线性积分项}}+\\underbrace{k_n\|x_1\|\^r\\mathrm{sgn}(x_1)}_{\\text{②终端项}}+\\underbrace{k_1s}_{\\text{③线性滑模项}}+\\underbrace{f\\,\\mathrm{sat}(s,\\phi_s)}_{\\text{④自适应切换项}}\\Big \;} \tag{3.3} H=−Rsx1+Lq①线性积分项 jnx1+②终端项 kn∣x1∣rsgn(x1)+③线性滑模项 k1s+④自适应切换项 fsat(s,ϕs)(3.3)

饱和函数(边界层,用于抑制抖振):
sat(y,ϕ)= { y/ϕ, ∣y∣≤ϕ(线性区,减小抖振) sgn(y), ∣y∣>ϕ(饱和区,全增益) \mathrm{sat}(y,\phi)=\begin{cases}y/\phi, & |y|\le\phi\quad\text{(线性区,减小抖振)}\\2pt\mathrm{sgn}(y), & |y|>\phi\quad\text{(饱和区,全增益)}\end{cases} sat(y,ϕ)={y/ϕ,sgn(y),∣y∣≤ϕ(线性区,减小抖振)∣y∣>ϕ(饱和区,全增益)

逐项解释:

项 名称 作用
−Rsx1 -R_sx_1 −Rsx1 电阻补偿 抵消 (3.1) 中的 −Rsx1 -R_sx_1 −Rsx1,使误差动态"干净"
Lq jnx1 L_q\,j_nx_1 Lqjnx1 线性积分项 与滑模面中的 Ij I_j Ij 对应,保证滑模面可达
Lq kn∥x1∥rsgn(x1) L_q\,k_n\|x_1\|^r\mathrm{sgn}(x_1) Lqkn∥x1∥rsgn(x1) 终端项 与 Ik I_k Ik 对应,提供有限时间收敛
Lq k1s L_q\,k_1s Lqk1s 线性滑模项 指数收敛到滑模面,保证到达阶段稳定
Lq f sat(s,ϕs) L_q\,f\,\mathrm{sat}(s,\phi_s) Lqfsat(s,ϕs) 自适应切换项 主切换项,靠它抵消未知的 Eex E_{ex} Eex

3.4 自适应切换增益

  f=min⁡ { m ∣s∣ (1+δ)δ+e −εa∣s∣ ,    3m}    (3.4) \boxed{\;f=\min\left\{\frac{m\,|s|\,(1+\delta)}{\delta+e^{-\varepsilon_a|s|}},\;\;3m\right\}\;} \tag{3.4} f=min{δ+e−εa∣s∣m∣s∣(1+δ),3m}(3.4)

逐段分析:

| ∣s∣|s| ∣s∣ | ff f 的近似值 | 说明 | |---|---|---| | →0\to0 →0 | f→0f\to0 f→0 | 小误差处自动减小增益,抑制抖振 | | 中等 | f≈m∥s∥f\approx m\|s\| f≈m∥s∥ | 近似线性增长 | | 大 | f→3mf\to3m f→3m(限幅) | 防止起动大误差时 HH H 过大 |

限幅 3m3m 3m 的物理意义 :避免起动瞬间 ∣s∣|s| ∣s∣ 很大时 HH H 出现不合理的巨大值。

⚠️ 已知特性 :由于 s→0s\to0 s→0 时 f→0f\to0 f→0,滑模面附近的切换能力主要由 k1s k_1s k1s 承担。 但由 3.7 节估算,稳态 ∣s∣|s| ∣s∣ 约 7 A(并不小), ff f 实际长期处于饱和区,故该特性不影响正常工作。


3.5 到达律推导

第一步:把控制律 (3.3) 代入误差方程 (3.1):
Lq dx1 dt =−Rsx1−{−Rsx1+Lqjnx1+kn∣x1∣rsgn(x1)+k1s+f sat(s)}+ Eex L_q\frac{dx_1}{dt} =-R_sx_1-\Big\{-R_sx_1+L_q\bigj_nx_1+k_n\|x_1\|\^r\\mathrm{sgn}(x_1)+k_1s+f\\,\\mathrm{sat}(s)\\big\Big\}+E_{ex} Lqdtdx1=−Rsx1−{−Rsx1+Lqjnx1+kn∣x1∣rsgn(x1)+k1s+fsat(s)}+Eex

−Rsx1 -R_sx_1 −Rsx1 与括号内的 +Rsx1 +R_sx_1 +Rsx1 恰好抵消:
Lq dx1 dt =−Lqjnx1+kn∣x1∣rsgn(x1)+k1s+f sat(s)+ Eex L_q\frac{dx_1}{dt}=-L_q\bigj_nx_1+k_n\|x_1\|\^r\\mathrm{sgn}(x_1)+k_1s+f\\,\\mathrm{sat}(s)\\big+E_{ex} Lqdtdx1=−Lqjnx1+kn∣x1∣rsgn(x1)+k1s+fsat(s)+Eex

两边除以 Lq L_q Lq:
   dx1 dt =−jnx1+kn∣x1∣rsgn(x1)+k1s+f sat(s)+ Eex Lq    (3.5) \boxed{\;\frac{dx_1}{dt}=-\bigj_nx_1+k_n\|x_1\|\^r\\mathrm{sgn}(x_1)+k_1s+f\\,\\mathrm{sat}(s)\\big+\frac{E_{ex}}{L_q}\;} \tag{3.5} dtdx1=−jnx1+kn∣x1∣rsgn(x1)+k1s+fsat(s)+LqEex(3.5)

第二步:对滑模面 (3.2) 求时间导数:
dsdt = dx1 dt +jnx1+kn∣x1∣rsgn(x1) \frac{ds}{dt}=\frac{dx_1}{dt}+j_nx_1+k_n|x_1|^r\mathrm{sgn}(x_1) dtds=dtdx1+jnx1+kn∣x1∣rsgn(x1)

把 (3.5) 代入, jnx1 j_nx_1 jnx1 与 kn∣x1∣rsgn(x1) k_n|x_1|^r\mathrm{sgn}(x_1) kn∣x1∣rsgn(x1) 也被抵消,得到到达律:
   dsdt =−k1s−f sat(s,ϕs)+ Eex Lq    (3.6) \boxed{\;\frac{ds}{dt}=-k_1s-f\,\mathrm{sat}(s,\phi_s)+\frac{E_{ex}}{L_q}\;} \tag{3.6} dtds=−k1s−fsat(s,ϕs)+LqEex(3.6)

这就把复杂的误差动态化简成了一个标量一阶方程 ------ 这就是控制律 (3.3) 中每个补偿项存在的意义。

滑模可达性 :只要 ff f(或其饱和值 3m3m 3m)在滑模面附近大于 ∣ Eex ∣/Lq |E_{ex}|/L_q ∣Eex∣/Lq,就有 ss˙<0 s\dot s<0 ss˙<0,滑模可达。


3.6 等效控制原理 ⭐(本节是全文枢纽)

3.6.1 什么是"等效控制"

开关量 vv v(即 HH H 中的切换部分)以极高频率在 ±\pm ± 之间跳变。 虽然它本身是断续的,但它在一个开关周期内的平均值 是连续且有意义的 ------ 这个平均值称为等效控制 veq v_{eq} veq。

由 (3.6) :滑模发生时 s˙≈0 \dot s\approx0 s˙≈0( ss s 在一个电周期内均值为零),故
  k1s+f sat(s,ϕs)= Eex Lq    (3.7) \boxed{\;k_1s+f\,\mathrm{sat}(s,\phi_s)=\frac{E_{ex}}{L_q}\;} \tag{3.7} k1s+fsat(s,ϕs)=LqEex(3.7)

3.6.2 从等效控制到反电动势

把 (3.7) 代回控制律 (3.3),注意 (3.3) 中的括号恰好就是 (3.7) 的左端:
H=−Rsx1+Lqjnx1+kn∣x1∣rsgn(x1)+ Lqk1s+f sat(s) ⏟ =  Eex (由 3.7) H=-R_sx_1+L_q\bigj_nx_1+k_n\|x_1\|\^r\\mathrm{sgn}(x_1)\\big+\underbrace{L_q\Bigk_1s+f\\,\\mathrm{sat}(s)\\Big}{=\,E{ex}\ \text{(由 3.7)}} H=−Rsx1+Lqjnx1+kn∣x1∣rsgn(x1)+=Eex (由 3.7) Lqk1s+fsat(s)
  H=−Rsx1+Lqjnx1+kn∣x1∣rsgn(x1)+ Eex    (3.8) \boxed{\;H=-R_sx_1+L_q\bigj_nx_1+k_n\|x_1\|\^r\\mathrm{sgn}(x_1)\\big+E_{ex}\;} \tag{3.8} H=−Rsx1+Lqjnx1+kn∣x1∣rsgn(x1)+Eex(3.8)

⇒ 当 x1→0 x_1\to0 x1→0(理想滑模)时:
  H   →   x1→0      Eex    (3.9) \boxed{\;H\;\xrightarrow{\;x_1\to0\;}\;E_{ex}\;} \tag{3.9} Hx1→0 Eex(3.9)

3.6.3 结论与实现

(3.9) 就是"用低通滤波 HH H 即可提取反电动势"的全部理论依据:
Eh=LPF(H,  wc) E_h=\mathrm{LPF}\big(H,\;w_c\big) Eh=LPF(H,wc)

低通在这里承担两个角色:

  1. 滤掉开关纹波 ( HH H 是高频切换量,我们只要它的平均值)
  2. 实现"取平均"这一数学操作(低通 = 滑动平均的连续形式)

⚠️ 实际偏差 :真实系统中 x1 x_1 x1 不严格为 0,(3.8) 中的 −Rsx1+Lqjnx1+kn∣x1∣rsgn(x1) -R_sx_1+L_qj_nx_1+k_n\|x_1\|\^r\\mathrm{sgn}(x_1) −Rsx1+Lqjnx1+kn∣x1∣rsgn(x1) 会残留进入 Eh E_h Eh ,使其幅值偏离真实 Eex E_{ex} Eex。 残余量与滑模紧度( ∣x1∣ |x_1| ∣x1∣ 的大小)直接相关 ------ 这是 6.0.2 节讨论"幅值法为何不准"的物理根源。


3.7 稳态量级估算与参数意义

由 (3.7),在饱和区 f sat(s)=3m f\,\mathrm{sat}(s)=3m fsat(s)=3m(取正),得
k1∣s∣+3m≈ ∣ Eex ∣ Lq k_1|s|+3m\approx\frac{|E_{ex}|}{L_q} k1∣s∣+3m≈Lq∣Eex∣

以 3000 rpm 为例: ωe=1256.6 \omega_e=1256.6 ωe=1256.6 rad/s, ∣ Eex ∣=ωeψf=229.6 |E_{ex}|=\omega_e\psi_f=229.6 ∣Eex∣=ωeψf=229.6 V, Lq=12 L_q=12 Lq=12 mH
∣ Eex ∣ Lq =19133 A/s \frac{|E_{ex}|}{L_q}=19133\ \text{A/s} Lq∣Eex∣=19133 A/s

代入 k1=1500 k_1=1500 k1=1500、 3m=90003m=9000 3m=9000:
∣s∣≈ 19133−90001500 ≈6.8 A |s|\approx\frac{19133-9000}{1500}\approx6.8\ \text{A} ∣s∣≈150019133−9000≈6.8 A

⇒ 稳态 ss s 约 7 A, ff f 实际长期处于饱和区( f=3mf=3m f=3m),3.4 节提到的" f→0f\to0 f→0"只在过渡瞬间出现。

参数意义速查:

参数 增大后的效果 代价
k1 k_1 k1 到达更快,稳态 ∥s∥\|s\| ∥s∥ 更小 抖振增大
kn k_n kn 终端收敛更快 低速抖振
mm m 切换增益更强,滑模更紧 抖振增大
ϕs \phi_s ϕs 边界层加宽,抖振减小 滑模精度下降

4. 线性 SMO 核心(对照组)

线性滑模观测器只有一个控制量:
  z=K sat(x1,ϕs)   (4.1) \boxed{\;z=K\,\mathrm{sat}(x_1,\phi_s)\;} \tag{4.1} z=Ksat(x1,ϕs)(4.1)

误差方程 (同 3.1,只是把 HH H 换成 zz z):
Lq dx1 dt =−Rsx1−z+ Eex (4.2) L_q\frac{dx_1}{dt}=-R_sx_1-z+E_{ex} \tag{4.2} Lqdtdx1=−Rsx1−z+Eex(4.2)

滑模面 : x1=0 x_1=0 x1=0(一阶滑模,无终端项、无积分项)

等效控制 :滑模发生时 x1=0 x_1=0 x1=0 且 dx1/dt=0 dx_1/dt=0 dx1/dt=0,代入 (4.2):
0=−0− zeq + Eex ⟹    zeq = Eex    (4.3) 0=-0-z_{eq}+E_{ex}\quad\Longrightarrow\quad\boxed{\;z_{eq}=E_{ex}\;} \tag{4.3} 0=−0−zeq+Eex⟹zeq=Eex(4.3)

⇒ 比 NTSM 的推导简单得多: zz z 的平均值直接就是 Eex E_{ex} Eex。

NTSM 与 SMO 的本质差异

NTSM-SMO 线性 SMO
滑模面 s=x1+∫jnx1+∫kn∥x1∥rsgn(x1) s=x_1+\int j_nx_1+\int k_n\|x_1\|^r\mathrm{sgn}(x_1) s=x1+∫jnx1+∫kn∥x1∥rsgn(x1) x1 x_1 x1
控制量 HH H(5 项) z=K sat(x1,ϕs) z=K\,\mathrm{sat}(x_1,\phi_s) z=Ksat(x1,ϕs)(1 项)
收敛性 有限时间(终端项保证) 渐近收敛
等效控制 H→ Eex H\to E_{ex} H→Eex,需 x1→0 x_1\to0 x1→0 zeq = Eex z_{eq}=E_{ex} zeq=Eex,直接成立
参数个数 9 个( jn,kn,p,q,k1,m,δ,εa,ϕs j_n,k_n,p,q,k_1,m,\delta,\varepsilon_a,\phi_s jn,kn,p,q,k1,m,δ,εa,ϕs) 2 个( K,ϕs K,\phi_s K,ϕs)
抗参数摄动 理论上更强(滑模对匹配扰动不变) 较强
抖振 相对更大(终端项在低速段增益高) 相对更小

⇒ 对比实验要检验的核心假设:NTSM 的终端项能否带来更快的收敛与更强的鲁棒性。


5. 反电动势提取与角度

5.1 低通滤波提取

两支均采用一阶低通:
   dEh dt =wc(v−Eh)   v= { H, NTSM z, SMO (5.1) \boxed{\;\frac{dE_h}{dt}=w_c\big(v-E_h\big)\;} \qquad v=\begin{cases}H,& \text{NTSM}\\ z,& \text{SMO}\end{cases} \tag{5.1} dtdEh=wc(v−Eh)v={H,z,NTSMSMO(5.1)

离散化:
Ehk=Ehk−1+wcTs(vk−1−Ehk−1) E_hk=E_hk-1+w_cT_s\big(vk-1-E_hk-1\big) Ehk=Ehk−1+wcTs(vk−1−Ehk−1)

频域特性:一阶低通的传递函数与频率响应
G(s)= wc s+wc ⟹G(jω)= wc wc+jω G(s)=\frac{w_c}{s+w_c} \quad\Longrightarrow\quad G(j\omega)=\frac{w_c}{w_c+j\omega} G(s)=s+wcwc⟹G(jω)=wc+jωwc
  ∣G(ω)∣= wc wc2+ω2 ,∠G(ω)=−arctan⁡ ωwc    (5.2) \boxed{\;|G(\omega)|=\frac{w_c}{\sqrt{w_c^2+\omega^2}},\qquad \angle G(\omega)=-\arctan\frac{\omega}{w_c}\;} \tag{5.2} ∣G(ω)∣=wc2+ω2 wc,∠G(ω)=−arctanwcω(5.2)

⚠️ 关键认识 :一阶低通对基波同时 造成幅值衰减 与相位滞后,二者都随转速变化。

  • 相位滞后 → 5.3 节用 arctan⁡(ωe/wc) \arctan(\omega_e/w_c) arctan(ωe/wc) 补偿;
  • 幅值衰减 → 旧版用 corrcorr corr 补偿,本版改用 PLL 后不再需要(见 6.0.2 节)。

数值示例( wc=1571 w_c=1571 wc=1571 rad/s):1000 rpm( ωe=419 \omega_e=419 ωe=419)时衰减 0.966、滞后 14.9°; 3000 rpm( ωe=1257 \omega_e=1257 ωe=1257)时衰减 0.781、滞后 38.7°。

5.2 角度提取(atan2 + 解卷绕)

由 1.5 节的符号约定,反电动势矢量的角度是 θe+π/2 \theta_e+\pi/2 θe+π/2,故取角度时需先交换分量、再取负:
θraw =atan2(− Eh,α ,   Eh,β ) (5.3) \theta_{raw}=\mathrm{atan2}\big(-E_{h,\alpha},\;E_{h,\beta}\big) \tag{5.3} θraw=atan2(−Eh,α,Eh,β)(5.3)

验算 :代入 Eh,α =−Esin⁡θe E_{h,\alpha}=-E\sin\theta_e Eh,α=−Esinθe、 Eh,β =Ecos⁡θe E_{h,\beta}=E\cos\theta_e Eh,β=Ecosθe: atan2(Esin⁡θe,  Ecos⁡θe)=θe \mathrm{atan2}(E\sin\theta_e,\;E\cos\theta_e)=\theta_e atan2(Esinθe,Ecosθe)=θe ✓

解卷绕 (消除 atan2\mathrm{atan2} atan2 固有的 ±π\pm\pi ±π 跳变,得到连续角度):
θk=θk−1+mod( θraw \[k−θk−1+π,  2π)−π] (5.4) \thetak=\thetak-1+\Big\\mathrm{mod}\\big(\\theta_{raw}\[k-\thetak-1+\pi,\;2\pi\big)-\pi\Big] \tag{5.4} θk=θk−1+mod(θraw\[k−θk−1+π,2π)−π](5.4)

原理 :把每步的角度增量折算到 (−π,π](-\pi,\pi] (−π,π] 内再加回上一步,从而跨过 ±π\pm\pi ±π 边界时不跳变。 实现上 mod 若得负值需再补 2π2\pi 2π。

5.3 相位补偿

低通造成的相位滞后 φlpf =arctan⁡(ωe/wc) \varphi_{lpf}=\arctan(\omega_e/w_c) φlpf=arctan(ωe/wc) 必须补回,否则角度会整体滞后:
   θest =θ+arctan⁡ ⁣ ( ωe,pll wc )    (5.5) \boxed{\;\theta_{est}=\theta+\arctan\!\left(\frac{\omega_{e,pll}}{w_c}\right)\;} \tag{5.5} θest=θ+arctan(wcωe,pll)(5.5)

⚠️ 这里用的是 PLL 输出的转速 ωe,pll \omega_{e,pll} ωe,pll。 旧版用幅值法得到的 we w_e we 本身有偏差(高速段偏低约 15%),导致补偿不足 → 角度滞后 ; 改用 PLL 后 ωe,pll \omega_{e,pll} ωe,pll 准确,补偿量随之准确 ------ 这是 PLL 带来的第二个收益。

5.4 等效磁链修正(凸极)

用补偿角做 Park 变换取出 id i_d id(低通平滑),再算等效磁链:
θcomp =θ+arctan⁡ ⁣ ( ωe,pll wc ) \theta_{comp}=\theta+\arctan\!\left(\frac{\omega_{e,pll}}{w_c}\right) θcomp=θ+arctan(wcωe,pll)
id,inst =iαcos⁡ θcomp +iβsin⁡ θcomp i_{d,inst}=i_\alpha\cos\theta_{comp}+i_\beta\sin\theta_{comp} id,inst=iαcosθcomp+iβsinθcomp
id,f ← id,f +wfTs( id,inst − id,f ) i_{d,f}\leftarrow i_{d,f}+w_fT_s\big(i_{d,inst}-i_{d,f}\big) id,f←id,f+wfTs(id,inst−id,f)
  ψ=ψf+(Ld−Lq)  id,f    (5.6) \boxed{\;\psi=\psi_f+(L_d-L_q)\,i_{d,f}\;} \tag{5.6} ψ=ψf+(Ld−Lq)id,f(5.6)

说明 : ψ\psi ψ 在本版中已不参与转速计算(PLL 不需要它),但仍作为输出保留,供对照与诊断使用。


6. ⭐ 转速提取:二阶 PLL(本版核心改动)

6.0 预备知识:锁相环是什么(零基础可读)

6.0.1 一个生活类比

想象你在听一个音叉(频率未知)。你手上有一个可调音叉,你想让它和对方的音完全同频同相。

你的做法:

  1. 听两者的"拍频" (相位差引起的强弱变化)------ 这是鉴相器
  2. 根据拍频去拧调节旋钮 ------ 这是环路滤波器
  3. 旋钮控制你的音叉频率 ------ 这是压控振荡器

当拍频消失时,两者就"锁相"了。此时你旋钮的位置就代表了对方的频率。

PLL 就是把这个过程自动化、数学化。 在我们的场景里:

  • "对方的音叉" = 反电动势矢量(它的旋转频率就是 ωe \omega_e ωe)
  • "你的音叉" = 内部振荡器 θpll \theta_{pll} θpll
  • 锁相完成后, ωpll \omega_{pll} ωpll 就等于 ωe \omega_e ωe ------ 这就是我们要的转速
6.0.2 为什么"锁相"比"测幅"可靠 ⭐

这是本版改动的核心动机,值得讲透。

幅值法的逻辑 : ∣ Eex ∣=ωeψ |E_{ex}|=\omega_e\psi ∣Eex∣=ωeψ,所以 ωe=∣E∣/ψ \omega_e=|E|/\psi ωe=∣E∣/ψ。

它依赖一个前提 :我们测到的 ∣E∣|E| ∣E∣ 就是真实的 ∣ Eex ∣ |E_{ex}| ∣Eex∣。

但实际测到的是 Eh=LPF(H) E_h=\mathrm{LPF}(H) Eh=LPF(H),其中 ∣Eh∣ |E_h| ∣Eh∣ 受两个方向相反的效应影响:

效应 物理来源 对 ∥Eh∥ \|E_h\| ∥Eh∥ 的作用
(a) 幅值衰减 一阶低通对 ωe \omega_e ωe 处正弦的固有衰减 wc/ wc2+ωe2 w_c/\sqrt{w_c^2+\omega_e^2} wc/wc2+ωe2 使其偏低
(b) 纹波整流 HH H 中的开关纹波经 Ehα2 + Ehβ2 \sqrt{E_{h\alpha}^2+E_{h\beta}^2} Ehα2+Ehβ2 这个非线性运算被"整流"抬高 使其偏高

⇒ 净效果 = (a) − (b),而两者都随转速、滑模紧度、参数变化,无法用单一系数覆盖全速域。

实测结果:3000 rpm 时转速偏高约 15%。

而 PLL 锁的是"相位":

反电动势矢量 Eh E_h Eh 虽然有幅值误差、有纹波,但它的旋转速度(也就是相位变化率)几乎不受影响 ------ 纹波是叠加在旋转矢量上的高频抖动,对"转过一圈需要多长时间"这件事影响极小。

一句话 :幅值被污染了,但相位是干净的。所以要从相位里取转速,而不是从幅值里取。


6.1 相位检测器(PD)

6.1.1 构造

我们要一个"与相位差成正比"的信号。把反电动势矢量投影到内部振荡器的 d 轴上:
  εd= Eh,α cos⁡ θpll + Eh,β sin⁡ θpll    (6.1) \boxed{\;\varepsilon_d=E_{h,\alpha}\cos\theta_{pll}+E_{h,\beta}\sin\theta_{pll}\;} \tag{6.1} εd=Eh,αcosθpll+Eh,βsinθpll(6.1)

6.1.2 推导

代入理想反电动势 Eh,α =−∣E∣sin⁡ θsig E_{h,\alpha}=-|E|\sin\theta_{sig} Eh,α=−∣E∣sinθsig、 Eh,β =∣E∣cos⁡ θsig E_{h,\beta}=|E|\cos\theta_{sig} Eh,β=∣E∣cosθsig:
εd =−∣E∣sin⁡ θsig cos⁡ θpll +∣E∣cos⁡ θsig sin⁡ θpll =∣E∣(sin⁡ θpll cos⁡ θsig −cos⁡ θpll sin⁡ θsig ) =∣E∣sin⁡( θpll − θsig ) (6.2) \begin{aligned} \varepsilon_d &=-|E|\sin\theta_{sig}\cos\theta_{pll}+|E|\cos\theta_{sig}\sin\theta_{pll}\\4pt &=|E|\big(\sin\theta_{pll}\cos\theta_{sig}-\cos\theta_{pll}\sin\theta_{sig}\big)\\4pt &=|E|\sin\big(\theta_{pll}-\theta_{sig}\big) \end{aligned} \tag{6.2} εd=−∣E∣sinθsigcosθpll+∣E∣cosθsigsinθpll=∣E∣(sinθpllcosθsig−cosθpllsinθsig)=∣E∣sin(θpll−θsig)(6.2)

用到的三角恒等式 : sin⁡(A−B)=sin⁡Acos⁡B−cos⁡Asin⁡B\sin(A-B)=\sin A\cos B-\cos A\sin B sin(A−B)=sinAcosB−cosAsinB

⇒ 鉴相器输出 = 幅值 × 相位差的正弦,正是我们想要的。

当相位差很小时 : sin⁡(Δ)≈Δ\sin(\Delta)\approx\Delta sin(Δ)≈Δ,故 εd≈∣E∣ ( θpll − θsig ) \varepsilon_d\approx|E|\,(\theta_{pll}-\theta_{sig}) εd≈∣E∣(θpll−θsig),线性鉴相 ✓

6.1.3 归一化

εd \varepsilon_d εd 里含有 ∣E∣|E| ∣E∣,而 ∣E∣=ωeψ |E|=\omega_e\psi ∣E∣=ωeψ 随转速变化 ------ 若不处理,PLL 的环路增益会随转速变化(高速时增益大、易振荡,低速时增益小、响应慢)。

做法:除以幅值
  ε=− εd max⁡(∣Eh∣,1)   ≈   θsig − θpll    (6.3) \boxed{\;\varepsilon=-\frac{\varepsilon_d}{\max(|E_h|,1)}\;\approx\;\theta_{sig}-\theta_{pll}\;} \tag{6.3} ε=−max(∣Eh∣,1)εd≈θsig−θpll(6.3)

⇒ 归一化后 ε\varepsilon ε 直接就是"相位差(弧度)",与转速、与幅值误差都无关 ✓

⚠️ 符号极其关键 :误差必须取 ( θsig − θpll ) (\theta_{sig}-\theta_{pll}) (θsig−θpll),才能构成负反馈 。 若取反,闭环特征方程会变成 s2−kps−ki=0 s^2-k_ps-k_i=0 s2−kps−ki=0,右半平面有根,必然发散(见 6.3 节)。
分母为何用 max⁡(∣Eh∣,1) \max(|E_h|,1) max(∣Eh∣,1) :防止低速时 ∣Eh∣→0 |E_h|\to0 ∣Eh∣→0 造成除零。 代价是极低速( ∣E∣<1|E|<1 ∣E∣<1 V)时归一化失效,可另加"低速冻结"保护(见 6.6.2 节)。


6.2 环路滤波器(LF)与压控振荡器(VCO)

6.2.1 为什么环路滤波器必须是 PI 而不是纯 P

先用直觉理解:

  • 纯比例 P :输出频率正比于相位差。 锁定时要求相位差 →0\to0 →0,但若输入频率与初始频率不同,必须有非零相位差才能产生频率差 ------ 于是系统会稳定在"有固定相位误差"的状态(I 型系统,对频率阶跃有稳态误差)。

  • PI :积分器会累积 相位误差,直到它足够把频率拉到正确值,此时相位误差回到零。 ⇒ 锁定时相位误差为零,转速输出精确 ✓

6.2.2 数学表达

环路滤波器:
   ωpll =kpε+ki ⁣∫ ⁣ε dt   (6.4) \boxed{\;\omega_{pll}=k_p\varepsilon+k_i\!\int\!\varepsilon\,dt\;} \tag{6.4} ωpll=kpε+ki∫εdt(6.4)

压控振荡器(积分器:频率 → 相位):
   θpll =∫ ωpll  dt   (6.5) \boxed{\;\theta_{pll}=\int\omega_{pll}\,dt\;} \tag{6.5} θpll=∫ωplldt(6.5)

离散实现:

scss 复制代码
∫ε ← ∫ε + Ts·ε
ω_pll = kp·ε + ki·∫ε
ω_pll ← clamp(ω_pll, ±ω_max)         % 限幅防跑飞
θ_pll ← θ_pll + Ts·ω_pll
θ_pll ← wrap(θ_pll) 到 (−π, π]

6.3 闭环传递函数与稳定性

6.3.1 建立模型

设相位差 x= θpll − θsig x=\theta_{pll}-\theta_{sig} x=θpll−θsig。由 (6.3), ε≈−x\varepsilon\approx-x ε≈−x。

对 (6.4)(6.5) 求导:
θ˙pll = ωpll =kpε+ki ⁣∫ ⁣ε=−kpx−ki ⁣∫ ⁣x \dot\theta_{pll}=\omega_{pll}=k_p\varepsilon+k_i\!\int\!\varepsilon=-k_px-k_i\!\int\!x θ˙pll=ωpll=kpε+ki∫ε=−kpx−ki∫x

而 x˙= θ˙pll − θ˙sig \dot x=\dot\theta_{pll}-\dot\theta_{sig} x˙=θ˙pll−θ˙sig, θ˙sig =ωe \dot\theta_{sig}=\omega_e θ˙sig=ωe:
x˙=−kpx−ki ⁣∫ ⁣x−ωe (6.6) \dot x=-k_px-k_i\!\int\!x-\omega_e \tag{6.6} x˙=−kpx−ki∫x−ωe(6.6)

两边再求导(消去积分):
  x¨=−kpx˙−kix   \boxed{\;\ddot x=-k_p\dot x-k_ix\;} x¨=−kpx˙−kix

特征方程:
  s2+kps+ki=0   (6.7) \boxed{\;s^2+k_ps+k_i=0\;} \tag{6.7} s2+kps+ki=0(6.7)

6.3.2 稳定条件(劳斯判据)

二阶系统 s2+a1s+a0=0 s^2+a_1s+a_0=0 s2+a1s+a0=0 稳定的充要条件是所有系数同号:
kp>0,ki>0 k_p>0,\qquad k_i>0 kp>0,ki>0

⇒ 只要 kp,ki k_p,k_i kp,ki 取正,闭环必稳定 ✓(这也再次说明 (6.3) 的符号取对了)

6.3.3 传递函数形式

以相位为输入、相位为输出的闭环传递函数:
Φ(s)= kps+ki s2+kps+ki \Phi(s)=\frac{k_ps+k_i}{s^2+k_ps+k_i} Φ(s)=s2+kps+kikps+ki

误差传递函数:
Φe(s)=1−Φ(s)= s2 s2+kps+ki \Phi_e(s)=1-\Phi(s)=\frac{s^2}{s^2+k_ps+k_i} Φe(s)=1−Φ(s)=s2+kps+kis2

关键观察 : Φe(s) \Phi_e(s) Φe(s) 的分子含 s2s^2 s2 ------ 这意味着 直流( s=0s=0 s=0)与频率阶跃( 1/s21/s^2 1/s2)都没有稳态误差 ,只有频率斜坡( 1/s31/s^3 1/s3)才有。


6.4 参数整定

二阶系统标准形式 s2+2ζωns+ωn2=0 s^2+2\zeta\omega_ns+\omega_n^2=0 s2+2ζωns+ωn2=0,与 (6.7) 对照:
  ωn= ki ,ζ= kp 2 ki = kp 2ωn    (6.8) \boxed{\;\omega_n=\sqrt{k_i},\qquad \zeta=\frac{k_p}{2\sqrt{k_i}}=\frac{k_p}{2\omega_n}\;} \tag{6.8} ωn=ki ,ζ=2ki kp=2ωnkp(6.8)

反解出增益:
  ki=ωn2,kp=2ζωn   (6.9) \boxed{\;k_i=\omega_n^2,\qquad k_p=2\zeta\omega_n\;} \tag{6.9} ki=ωn2,kp=2ζωn(6.9)

两个参数的物理意义:

参数 物理意义 增大后
ωn \omega_n ωn 环路带宽 跟踪更快、锁定更快;但抗噪变差
ζ\zeta ζ 阻尼比 减小会超调振荡;增大响应变慢

本模型取值:

参数 值 说明
ζ\zeta ζ 0.707 工程最佳阻尼(无超调、响应最快)
ωn \omega_n ωn 2π×50=314.162\pi\times50=\mathbf{314.16} 2π×50=314.16 rad/s 自然频率(≈50 Hz)
kp k_p kp 2×0.707×314.16=444.32\times0.707\times314.16=\mathbf{444.3} 2×0.707×314.16=444.3 比例增益
ki k_i ki 314.162=9.8696×104 314.16^2=\mathbf{9.8696\times10^4} 314.162=9.8696×104 积分增益
ωmax \omega_{max} ωmax 3000 rad/s 输出限幅(防跑飞)

6.5 加速段的稳态相位误差

6.5.1 为什么会有误差

从误差传递函数 Φe(s)= s2 s2+kps+ki \Phi_e(s)=\dfrac{s^2}{s^2+k_ps+k_i} Φe(s)=s2+kps+kis2 出发,代入不同的输入:

输入类型 输入表达式 稳态误差
相位阶跃 1/s1/s 1/s 00 0
频率阶跃 1/s21/s^2 1/s2 00 0(II 型系统)
频率斜坡 1/s31/s^3 1/s3 ω˙e /ωn2 \dot\omega_e/\omega_n^2 ω˙e/ωn2

用终值定理验算频率阶跃 ( Δω\Delta\omega Δω):
lim⁡s→0 s⋅ s2 s2+kps+ki ⋅ Δωs2 = lim⁡s→0 s Δω s2+kps+ki =0✓ \lim_{s\to0}s\cdot\frac{s^2}{s^2+k_ps+k_i}\cdot\frac{\Delta\omega}{s^2} =\lim_{s\to0}\frac{s\,\Delta\omega}{s^2+k_ps+k_i}=0\quad ✓ s→0lims⋅s2+kps+kis2⋅s2Δω=s→0lims2+kps+kisΔω=0✓

用终值定理验算频率斜坡 (斜率 ω˙ \dot\omega ω˙):
lim⁡s→0 s⋅ s2 s2+kps+ki ⋅ ω˙s3 = lim⁡s→0 ω˙ s2+kps+ki = ω˙ki = ω˙ωn2 \lim_{s\to0}s\cdot\frac{s^2}{s^2+k_ps+k_i}\cdot\frac{\dot\omega}{s^3} =\lim_{s\to0}\frac{\dot\omega}{s^2+k_ps+k_i} =\frac{\dot\omega}{k_i}=\frac{\dot\omega}{\omega_n^2} s→0lims⋅s2+kps+kis2⋅s3ω˙=s→0lims2+kps+kiω˙=kiω˙=ωn2ω˙

⇒ 得到
  Δ θss = ω˙e ωn2    (6.10) \boxed{\;\Delta\theta_{ss}=\frac{\dot\omega_e}{\omega_n^2}\;} \tag{6.10} Δθss=ωn2ω˙e(6.10)

6.5.2 本模型数值

转速参考 0→3000 rpm 用 0.25 s,即 2000 rpm/s:
ω˙e =2000×π30×4=837.8 rad/s2 \dot\omega_e=2000\times\frac{\pi}{30}\times4=837.8\ \text{rad/s}^2 ω˙e=2000×30π×4=837.8 rad/s2
Δ θss = 837.8314.162 =0.0085 rad=0.49∘ \Delta\theta_{ss}=\frac{837.8}{314.16^2}=0.0085\ \text{rad}=\mathbf{0.49^\circ} Δθss=314.162837.8=0.0085 rad=0.49∘

⇒ PLL 在加速段引入的附加相位误差仅 0.5°,可忽略。

6.5.3 带宽选择权衡
ωn \omega_n ωn 加速段相位误差 抗噪能力 适用
2π×302\pi\times30 2π×30 1.36° 更好 噪声大、加速慢
2π×502\pi\times50 2π×50(当前) 0.49° 适中 本模型
2π×802\pi\times80 2π×80 0.19° 较差 加速快、噪声小

6.6 锁定过程与低速保护

6.6.1 锁定时间

二阶系统按 ζωn \zeta\omega_n ζωn 的速率收敛,工程上取
tlock ≈ 3 ζωn = 30.707×314.16 ≈13.5 ms t_{lock}\approx\frac{3}{\zeta\omega_n}=\frac{3}{0.707\times314.16}\approx\mathbf{13.5\ ms} tlock≈ζωn3=0.707×314.163≈13.5 ms

⇒ 起动后约 14 ms 内锁定。

6.6.2 低速问题与保护

问题 :起动瞬间反电动势接近 0,相位检测器输出被噪声主导, ωpll \omega_{pll} ωpll 会乱跳 (实测起动段 0~0.2 s 曲线有密集毛刺)。

保护措施(可选,一行代码):

matlab 复制代码
if Emag_f > 5                      % EMF 足够大才闭合环路
    err = -Ed_pll / Emag_f;
else
    err = 0;                       % 低速冻结,避免噪声驱动
end

代价:引入约 100 rpm 以下的死区(本模型无影响)。


6.7 PLL 与幅值法的完整对照

项 幅值法 PLL
提取依据 ∥E∥=ωeψ \|E\|=\omega_e\psi ∥E∥=ωeψ θ˙sig =ωe \dot\theta_{sig}=\omega_e θ˙sig=ωe
受幅值误差影响 强(衰减 + 纹波双重污染) 弱 ✅
受纹波影响 强(经平方和非线性整流) 弱 ✅
是否需要 ψ\psi ψ 需要 (且 ψ\psi ψ 需标定) 不需要 ✅
是否需要 corrcorr corr 补偿 需要(且随转速变化,难标定) 不需要 ✅
相位补偿准确性 受 we w_e we 偏差拖累 准确 ✅
加速段行为 无额外误差 有 ω˙/ωn2 \dot\omega/\omega_n^2 ω˙/ωn2(0.49°,可忽略)
低速行为 可用 有死区(可加保护)
实现复杂度 简单 中等(多 6 行)

实测对照(3000 rpm 稳态):

指标 幅值法(corr 理论式, m=6000) PLL
转速误差 +15% ❌ +2.6%(NTSM)/ +3.4%(SMO) ✅
角度误差(均值) ~0 ~0 ✅
角度误差(振荡带) ±5.7° 明显收窄 ✅

7. 完整离散算法

7.1 NTSM-SMO-PLL

scss 复制代码
输入:u_α, u_β, i_α, i_β, T_s
参数:Rs, L(=Lq), Ld, ψf, j_n, k_n, p, q, k1, m, δ, εa, φs, wc, wf

持久状态:î_α, î_β, I_j, I_k, E_hα, E_hβ, θ_prev, Emag_f, id_f, θ_pll, ∫ε

① 电流误差与分数幂
   x1 = [î_α − i_α ; î_β − i_β]
   xp = sign(x1) ⊙ |x1|^(p/q)

② 积分终端滑模面(带抗饱和)
   I_j ← I_j + Ts·j_n·x1          (限幅 ±50)
   I_k ← I_k + Ts·k_n·xp          (限幅 ±50)
   s   = x1 + I_j + I_k

③ 自适应切换增益
   f = m·|s|·(1+δ) / (δ + exp(−εa·|s|))
   f = min(f, 3m)

④ 控制律
   H = −Rs·x1 + L·[ j_n·x1 + k_n·xp + k1·s + f ⊙ sat(s, φs) ]

⑤ 电流观测器
   î ← î + Ts·(u − Rs·î − H)/L

⑥ 反电动势提取
   E_h ← E_h + wc·Ts·(H − E_h)

⑦ 角度
   θ_raw  = atan2(−E_hα, E_hβ)
   θ      = θ_prev + [mod(θ_raw − θ_prev + π, 2π) − π]
   θ_prev = θ

⑧ 幅值(仅用于 PLL 归一化)
   Emag_inst = √(E_hα² + E_hβ²)
   Emag_f   ← Emag_f + wf·Ts·(Emag_inst − Emag_f)

⑨ PLL
   ε_d = E_hα·cos(θ_pll) + E_hβ·sin(θ_pll)
   ε   = −ε_d / max(Emag_f, 1)
   ∫ε ← ∫ε + Ts·ε
   ω_pll = kp·ε + ki·∫ε
   ω_pll = clamp(ω_pll, ±ω_max)
   θ_pll ← θ_pll + Ts·ω_pll
   θ_pll ← wrap(θ_pll)

⑩ 凸极修正
   θ_comp = θ + atan(ω_pll/wc)
   id_inst = i_α·cos(θ_comp) + i_β·sin(θ_comp)
   id_f   ← id_f + wf·Ts·(id_inst − id_f)
   ψ = ψf + (Ld − L)·id_f

⑪ 输出
   θ_est = θ + atan(ω_pll/wc)
   ω_est = ω_pll
   E_α = E_hα,  E_β = E_hβ,  ψ

7.2 SMO-PLL(差异仅在 ②③④⑤⑥)

vbnet 复制代码
②' 线性切换项(无滑模面)
    z = K · sat(x1, φs)          ← 用原始电流误差,不滤波

③' 无自适应增益

④' 无需单独控制律:v = z

⑤' î ← î + Ts·(u − Rs·î − z)/L

⑥' E_h ← E_h + wc·Ts·(z − E_h)   ← 只滤切换项

⑦ 及其后各步与 NTSM 完全相同(含同一套 PLL 参数)。


8. 参数表

8.1 电机参数(PMSM 模块,与 InitFcn 一致)

符号 变量 值 单位
Rs R_s Rs Rs 0.958 Ω
Ld L_d Ld Ld 5.25e-3 H
Lq L_q Lq Lq / L 12e-3 H
ψf \psi_f ψf flux 0.1827 Wb
pp p(极对数) pole 4 ---
Vdc V_{dc} Vdc Vdc 311 V
Ts T_s Ts Ts 1e-5 s

8.2 NTSM 参数

符号 变量 值 说明 调大后的效果
jn j_n jn j_n 500 线性积分系数 稳态误差消除更快
kn k_n kn k_n 4000 终端项系数 终端收敛更快,低速抖振增大
p/qp/q p/q p,q 3/5 终端指数 r=0.6r=0.6 r=0.6 rr r 越小终端特性越强
k1 k_1 k1 k1 1500 线性滑模项 到达更快,稳态 ∥s∥\|s\| ∥s∥ 更小
mm m m 3000 自适应增益基准 滑模更紧, HH H 相位误差更小
δ\delta δ delta 0.2 自适应律参数 ---
εa \varepsilon_a εa eps_a 2 自适应律参数 ---
ϕs \phi_s ϕs phi_s 0.5 边界层厚度 抖振减小,滑模精度下降

8.3 SMO 参数

符号 变量 值 说明
KK K K_smo 600 切换增益
ϕs \phi_s ϕs phi_s_smo 1.5 边界层厚度

8.4 滤波与 PLL 参数

符号 变量 值 说明
wc w_c wc wc 2π×250=15712\pi\times250=1571 2π×250=1571 反电动势低通截止(rad/s)
wf w_f wf wf 2π×150=9422\pi\times150=942 2π×150=942 幅值 / id i_d id 低通截止(rad/s)
ζ\zeta ζ 函数内常数 0.707 PLL 阻尼比
ωn \omega_n ωn wn_pll(函数内) 2π×50=314.162\pi\times50=314.16 2π×50=314.16 PLL 自然频率(rad/s)
kp k_p kp 由 (6.9) 算出 444.3 PLL 比例增益
ki k_i ki 由 (6.9) 算出 9.87×1049.87\times10^4 9.87×104 PLL 积分增益
ωmax \omega_{max} ωmax we_max(函数内) 3000 PLL 输出限幅(rad/s)

⚠️ 两支观测器的 PLL 参数必须完全一致 ,否则对比不公平。 建议后续把 wn_pll、zeta、we_max 提到 InitFcn 由外部传入统一管理。


9. 已知局限与后续工作

# 局限 影响 后续
1 反电动势幅值 Emag E_{mag} Emag 仍被纹波整流抬高 仅影响诊断量,不影响转速/角度 可增大 mm m 使滑模更紧
2 NTSM 的 HH H 含线性项,基波相位与 Eex E_{ex} Eex 有约 2.7° 偏差 ( m=3000m=3000 m=3000) 贡献部分角度误差 增大 mm m(6000 时降到 0.15°)
3 低速( ∥E∥≲5\|E\|\lesssim5 ∥E∥≲5 V)时 PLL 无有效输入 起动段转速有毛刺 加低速冻结保护(6.6.2 节)
4 PLL 增益硬编码在函数内 不便统一调参 提到 InitFcn 由外部传入
5 p/qp/q p/q、 jn j_n jn、 kn k_n kn、 k1 k_1 k1、 mm m 等参数未做系统性整定 未必处于最优 后续做参数扫描
6 仅验证了 500~3000 rpm 区间 弱磁区(>2110 rpm 基准转速)未充分验证 补做高速工况
7 未做参数偏差鲁棒性对比 NTSM 的理论优势未验证 改 PMSM 块参数对比

附录 A:关键公式速查

公式 编号
uαβ =Rs iαβ +Lq d iαβ dt + Eex u_{\alpha\beta}=R_si_{\alpha\beta}+L_q\frac{di_{\alpha\beta}}{dt}+E_{ex} uαβ=Rsiαβ+Lqdtdiαβ+Eex (1.1)
ψ=ψf+(Ld−Lq)id \psi=\psi_f+(L_d-L_q)i_d ψ=ψf+(Ld−Lq)id (1.2)
Eex =ωeψ−sin⁡θe;cos⁡θe E_{ex}=\omega_e\psi-\\sin\\theta_e;\\cos\\theta_e Eex=ωeψ−sinθe;cosθe, ∥ Eex ∥=ωeψ \|E_{ex}\|=\omega_e\psi ∥Eex∥=ωeψ (1.3)
x1=i^−i x_1=\hat i-i x1=i^−i (2.1)
Lq x˙1 =−Rsx1−H+ Eex L_q\dot x_1=-R_sx_1-H+E_{ex} Lqx˙1=−Rsx1−H+Eex (3.1)
s=x1+∫jnx1+∫kn∥x1∥rsgn(x1) s=x_1+\int j_nx_1+\int k_n\|x_1\|^r\mathrm{sgn}(x_1) s=x1+∫jnx1+∫kn∥x1∥rsgn(x1) (3.2)
H=−Rsx1+Lqjnx1+kn∥x1∥rsgn(x1)+k1s+fsat(s) H=-R_sx_1+L_qj_nx_1+k_n\\|x_1\\|\^r\\mathrm{sgn}(x_1)+k_1s+f\\mathrm{sat}(s) H=−Rsx1+Lqjnx1+kn∥x1∥rsgn(x1)+k1s+fsat(s) (3.3)
f=min⁡{m∥s∥(1+δ)/(δ+e −εa∥s∥ ),3m}f=\min\{m\|s\|(1+\delta)/(\delta+e^{-\varepsilon_a\|s\|}),3m\} f=min{m∥s∥(1+δ)/(δ+e−εa∥s∥),3m} (3.4)
x˙1 =−jnx1+kn∥x1∥rsgn(x1)+k1s+fsat(s)+ Eex /Lq \dot x_1=-j_nx_1+k_n\\|x_1\\|\^r\\mathrm{sgn}(x_1)+k_1s+f\\mathrm{sat}(s)+E_{ex}/L_q x˙1=−jnx1+kn∥x1∥rsgn(x1)+k1s+fsat(s)+Eex/Lq (3.5)
s˙=−k1s−fsat(s)+ Eex /Lq \dot s=-k_1s-f\mathrm{sat}(s)+E_{ex}/L_q s˙=−k1s−fsat(s)+Eex/Lq (3.6)
k1s+fsat(s)= Eex /Lq k_1s+f\mathrm{sat}(s)=E_{ex}/L_q k1s+fsat(s)=Eex/Lq(准稳态) (3.7)
H=−Rsx1+Lqjnx1+kn∥x1∥rsgn(x1)+ Eex H=-R_sx_1+L_qj_nx_1+k_n\\|x_1\\|\^r\\mathrm{sgn}(x_1)+E_{ex} H=−Rsx1+Lqjnx1+kn∥x1∥rsgn(x1)+Eex (3.8)
H→ Eex H\to E_{ex} H→Eex( x1→0 x_1\to0 x1→0) (3.9)
z=Ksat(x1,ϕs) z=K\mathrm{sat}(x_1,\phi_s) z=Ksat(x1,ϕs), zeq = Eex z_{eq}=E_{ex} zeq=Eex (4.1)(4.3)
Eh=LPF(v,wc) E_h=\mathrm{LPF}(v,w_c) Eh=LPF(v,wc) (5.1)
∥G∥=wc/ wc2+ω2 \|G\|=w_c/\sqrt{w_c^2+\omega^2} ∥G∥=wc/wc2+ω2 , ∠G=−arctan⁡(ω/wc)\angle G=-\arctan(\omega/w_c) ∠G=−arctan(ω/wc) (5.2)
θ=unwrapatan2(− Ehα , Ehβ ) \theta=\mathrm{unwrap}\\mathrm{atan2}(-E_{h\\alpha},E_{h\\beta}) θ=unwrapatan2(−Ehα,Ehβ) (5.3)(5.4)
θest =θ+arctan⁡( ωpll /wc) \theta_{est}=\theta+\arctan(\omega_{pll}/w_c) θest=θ+arctan(ωpll/wc) (5.5)
ψ=ψf+(Ld−Lq) id,f \psi=\psi_f+(L_d-L_q)i_{d,f} ψ=ψf+(Ld−Lq)id,f (5.6)
εd= Ehα cos⁡ θpll + Ehβ sin⁡ θpll =∥E∥sin⁡( θpll − θsig ) \varepsilon_d=E_{h\alpha}\cos\theta_{pll}+E_{h\beta}\sin\theta_{pll}=\|E\|\sin(\theta_{pll}-\theta_{sig}) εd=Ehαcosθpll+Ehβsinθpll=∥E∥sin(θpll−θsig) (6.1)(6.2)
ε=−εd/max⁡(∥Eh∥,1)≈ θsig − θpll \varepsilon=-\varepsilon_d/\max(\|E_h\|,1)\approx\theta_{sig}-\theta_{pll} ε=−εd/max(∥Eh∥,1)≈θsig−θpll (6.3)
ωpll =kpε+ki∫ε \omega_{pll}=k_p\varepsilon+k_i\int\varepsilon ωpll=kpε+ki∫ε, θpll =∫ ωpll \theta_{pll}=\int\omega_{pll} θpll=∫ωpll (6.4)(6.5)
s2+kps+ki=0 s^2+k_ps+k_i=0 s2+kps+ki=0(闭环特征方程) (6.7)
ωn= ki \omega_n=\sqrt{k_i} ωn=ki , ζ=kp/(2ωn) \zeta=k_p/(2\omega_n) ζ=kp/(2ωn); ki=ωn2 k_i=\omega_n^2 ki=ωn2, kp=2ζωn k_p=2\zeta\omega_n kp=2ζωn (6.8)(6.9)
Δ θss = ω˙e /ωn2 \Delta\theta_{ss}=\dot\omega_e/\omega_n^2 Δθss=ω˙e/ωn2 (6.10)
相关推荐
垆边人似月.1 小时前
找出最小的 K 个数
数据结构·c++·算法
熊猫钓鱼>_>1 小时前
当工具成为类:Softmax困境与连接器过载的算法根源
算法·ai·agent·工具·曲线·华为云码道·生态图鉴
信奥卷王1 小时前
[GESP202503 六级] 树上漫步(含视频)
算法
Purple Coder2 小时前
南京-我来啦
算法
w_zero_one2 小时前
动态规划(三)
java·算法·动态规划
Logic1012 小时前
C语言/数据结构贡献法题解:数组权值——所有连续子数组中不同数字个数之和(O(n)解法)
c语言·数据结构·算法·数组·时间复杂度·贡献法·哈希记录
DongQiShanRen2 小时前
六根硬件映射(中):双站校验、生克闭环与驱动接口
数据库·人工智能·算法·rust·哈希算法·集成学习
mmmmath_32 小时前
LeetCode.637.二叉树的层平均值
算法·leetcode
青少儿编程课堂2 小时前
蓝桥杯·全国青少年信息素养大赛·电子学会C/C++考级:并查集连通块与朋友圈问题解析
c++·python·算法·bfs·信息学竞赛