永磁同步发电机(PMSG)转速滑模控制器
1. 被控对象:从运动方程到"控制输入是谁"
PMSG 常用 表贴式(\(L_d=L_q=L_s\))且采用 \(i_d=0\) 控制(无弱磁、无需凸极利用时的最优选择)。
1.1 机电运动方程(真正的速度环被控对象)
电磁转矩(id=0):
所以
关键视角:对速度环而言,控制输入 = \(i_q\)(q轴电流指令),而 \(T_m\)(原动机输入机械转矩)是有界慢变扰动/负载。
2. 滑模面与等效控制
Step 1 — 跟踪误差
Step 2 — 线性滑模面
\(s=0\) ⇒ \(\dot e + \lambda e = 0\) ⇒ \(e(t)\to 0\) 指数收敛,时间常数 \(\tau=1/\lambda\)。
Step 3 — 把 \(\dot\omega_m\) 代入,解出 \(i_q^*\)
由 (1):
代入 \(s\):
把标称部分和不确定部分分开。记标称摩擦/惯量(\(\hat J,\hat B\)),真实值存在偏差,\(\Delta T_m\) 为未建模+实际负载波动:
于是 \(s\) 的动态为:
在速度外环设计中,通常假定电流内环远快于速度环(即 \(i_q \approx i_q^*\) 准稳态),把 \(i_q\) 当直接输入,得到等效代数关系而非微分方程:
更干净的做法——直接从 (2) 写出趋近条件求 \(i_q^*\):
令滑模到达条件:
用标称模型反推使 \(s\to 0\) 所需的 \(i_q^*\):
为了让 \(s\) 收缩,令
最终得到最实用的控制律:
其中
| 符号 | 含义 | 整定经验 |
|---|---|---|
| \(\lambda\) | 滑动面指数收敛率 | \(5\sim30\) rad/s(看你期望 ω 响应速度) |
| \(K\) | 切换增益(抗扰强度) | 初估 \(K > \max|d(t)|\cdot\hat J/\hat K_t\),再往下调到临界稳定,最后加 20–30% 余量 |
| \(\phi\) | 边界层厚度 | 先设 \(\phi=0.5\%\sim2\%\) 的 \(\omega_{rated}\),越小越"硬"但抖振越大 |
sat(z) = clip(z, -1, 1),即 \(|z|>1\) 时截为 ±1。
3. 完整双闭环接线架构
┌──────────────────────────┐
ω_ref(k) ──► │ SMC 速度环 │
│ e=ωref-ωm │
│ s = ė + λe │
│ iq* = (J/Kt)[ v_eq │
│ + K·sat(s/φ) ] │
│ id* = 0 │
└──────┬──────────┬──────────┘
│ │
id*, iq* ──► │ 电流环(PI or SMC)│──► SVPWM ──► Inverter ──► PMSG
↑ ↑
(id,iq) from Park(θe) ωm, θe from encoder / PLL-less obs
电流内环(id=0)最小可用版
如果追求一致的高性能,电流环也可用超螺旋滑模或预测电流控制,但工程上 PI + 前馈解耦已经够让速度环假设"iq≈iq*"成立。
4. 离散化(MCU / Simulink 落地写法)
采样周期 \(T_s\),实测 \(\omega_m(k)\),\(\omega_{ref}\) 可预设或来自上层功率调度:
/* ---- 参数 ---- */
float lambda = 15.0f; // 滑动面收敛率
float Ksw = 80.0f; // 切换增益 (A/s量级,看iq量程)
float phi = 2.0f; // 边界层 (rad/s),≈0.5~2% of rated ω
float Jhat = 0.003f; // kg·m² 估的就行
float Kt_hat = 0.18f; // Nm/A = 3/2*np*ψf
/* ---- 差分 ---- */
float e = omega_ref - omega_m;
float de = (e - e_prev) / Ts; // 或带LPF微分
e_prev = e;
float s = de + lambda * e;
/* ---- sat(·) ---- */
float sat_s = s / phi;
if(sat_s > 1.0f) sat_s = 1.0f;
if(sat_s < -1.0f) sat_s = -1.0f;
/* ---- iq* ---- */
float v_eq = (omega_ref - omega_m_prev)/Ts // ė_ref ≈ 0 if ωref step
+ (Bhat/Jhat)*omega_m
+ lambda * e;
omega_m_prev = omega_m;
float iq_cmd = (Jhat/Kt_hat) * (v_eq + Ksw * sat_s);
/* ---- 限幅 ---- */
iq_cmd = clamp(iq_cmd, -Iq_max, Iq_max);
** 微分炸噪怎么办?**
把de换成 一阶滤波微分:
de_filtered += (de_raw - de_filtered)*(Ts/τ_filt)withτ_filt≈3~10 ms,或直接用(s·ωm)的替代形式避免显式微分
5. 免微分 / 低噪声写法
显式 \(\dot e=\dot\omega_{ref}-\dot\omega_m\) 对编码器量化/噪声敏感。等价改写:
若 \(\omega_{ref}\) 变化缓慢(\(\dot\omega_{ref}\approx 0\)),则
而 \(\dot\omega_m\) 可以用 一阶惯性观测:
或者更优雅地——把滑模面改成积分型,彻底消掉微分:
但实操中最划算的就是:滤波微分 + 边界层 sat(),别抠理论完美性。
参考代码 永磁同步发电机速度控制的滑模控制器 www.youwenfan.com/contentcnv/81344.html
6. 参数整定速查
| 步骤 | 做什么 | 现象指示 |
|---|---|---|
| ① 设 \(K=0\) | 只有等效项,看开环响应趋势 | 若有静差/爬不上去 → \(K\) 不够 |
| ② 从小到大拉 \(K\) | 直到阶跃响应无静差且快 | 看到高频抖振 → \(K\) 大了,进③ |
| ③ 调 \(\phi\) | 增大 \(\phi\) 平滑,减小 \(\phi\) 收紧 | \(\phi\) 太小=抖振,太大=边界层里变线性(软滑模) |
| ④ 调 \(\lambda\) | 决定收敛快慢 | 过大→iq* 容易撞限幅;过小→响应拖尾 |
经验初值区间(中等惯性负载):

浙公网安备 33010602011771号