Motor mfpcc eso
Skill calebzu/pmsm-control-claude-skills-for-matlab/.claude/skills/motor-mfpcc-eso
PMSM Claude Skills: methodology + skill library for AI-augmented MATLAB/Simulink modeling of PMSM control (FCS-MPC, DTC, SMC) with the Reference Model Learning Workflow; plus an extra FOC + load-torque-estimator reference
npx -y skills add calebzu/pmsm-control-claude-skills-for-matlab --skill motor-mfpcc-esoAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 9 stars9 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
PMSM Model-Free Predictive Current Control + ESO Builder. Build an inner-loop model-free DEADBEAT predictive current controller in the stationary αβ frame — first-order ultralocal model (ẏ = F + α·u) with a linear Extended State Observer estimating the lumped disturbance F — modulated by SVPWM at fixed switching frequency, with an outer speed PI providing iq_ref, for a three-phase voltage-source-inverter-driven SPMSM in Simulink. The current control law uses NO machine parameters (no Rs/Ls/ψf) — only the input gain α and the ESO bandwidth ω0. Use when constructing, reproducing, porting, or extending an MFPCC / ultralocal-model / ESO-based deadbeat current-control simulation in Simulink (keywords MFPCC, model-free predictive current control, ultralocal model, extended state observer, ESO, deadbeat predictive current control, ADRC-style current loop, 无模型预测电流控制, 扩张状态观测器). Skip for FCS-MPC of any vector count (single/dual/three-vector — this method is continuous-set deadbeat + SVM, NOT FCS-MPC; use the motor-fcs-mpc family), FOC PI current loops, DTC, SMC speed loops, sensorless, scalar V/Hz, BLDC trapezoidal, induction-motor predictive control, IPMSM with saliency, weak-field / MTPA, or pure theory questions. Layered on motor-pmsm-base.
SKILL.md
8.1 KB, as published. Nobody here has run it
motor-mfpcc-eso — PMSM Model-Free Deadbeat Predictive Current Control + ESO Builder
Three-phase 2-level voltage-source inverter + SPMSM. Inner loop = model-free deadbeat predictive
current control in the stationary αβ frame: plant abstracted as the first-order ultralocal model
di_s/dt = F + α·u_s, a linear ESO estimating current + lumped disturbance F (absorbs
resistance, back-EMF, all parameter variation), and a closed-form deadbeat inversion with
one-step delay compensation producing a continuous (uα, uβ) command that SVPWM modulates at
fixed switching frequency. Outer loop = speed PI providing iq_ref; id_ref = 0. Only 2 tuned
parameters: α and ω0 (via pole z12). Distilled from Y. Zhang, J. Jin, L. Huang, IEEE Trans.
Ind. Electron. 68(2):993-1002, 2021 (DOI 10.1109/TIE.2020.2970660). Layered on
motor-pmsm-base; all base discipline applies (Visual 4-check, broken-FOC defense).
⚠ Method Identity (PINNED)
Deadbeat PCC + ESO + SVM = CONTINUOUS control set. NOT FCS-MPC. No vector enumeration, no cost function, no switching-state selection — voltage solved algebraically, handed to a modulator. Do NOT layer this on the motor-fcs-mpc family. Full evidence: formulas §D.
Formula Sources (single source of truth)
- Method formulas: pmsm_formulas.md §G — ultralocal model
(4)/(7), ESO (8)–(17), deadbeat (18)–(21), method identity, parameters. Plant by reference:
pmsm_formulas.md §8 (αβ complex-vector SPMSM;
Ld = Lq = Ls). ESO derivation + tuning rationale: eso_derivation.md.
Must-Follow Rules
- Plan first — numbered plan with parameter table and build-script structure. Get user approval.
- One-click reproducibility — all parameters injected via
set_param(mdl,'InitFcn',...);wref/TLprofiles as From-Workspace inline expressions. See build_sop.md. - Model-free boundary + literal params — the
MFPCC_ESOchart uses ONLYalpha, beta01, beta02, Tsc(embedded as build-time numeric literals == InitFcn, asserted; bare workspace names do NOT resolve in charts).Rs/Ls/psi_finside the chart voids the method. See chart_contract.md. - Chart I/O contract is fixed —
MFPCC_ESO: 6 in(ialpha, ibeta, theta_e, omega_e, iq_ref, id_ref)→ 6 out(ua, ub, iq_meas, id_meas, Fa_o, Fb_o). See chart_contract.md. - Double-
Fwarning — PMSM maskF= viscous frictionB(plant); ESO stateF= lumped disturbance (controller). Same letter, unrelated quantities. Never cross-assign. - Glue: inputs = six ZOH @ Tsc, output = Unit Delay @ Tsc (NOT ZOH) — the
ua/ubUnit Delays realize the 1-step delay that deadbeat eqs (20)/(21) compensate; a ZOH appliesu(k)in the same cycle → horizon broken → divergence. Chart stays INHERITED. See chart_contract.md §3. - ESO gains by closed form, asserted in build —
omega0 = (1 − z12)/Tsc,beta01 = 2·omega0·Tsc,beta02 = omega0²·Tsc. Defaultz12 = 0.15,alpha = 50. See eso_derivation.md §3. - All-discrete solver — model
FixedStepDiscrete@Ts+ powerguiDiscrete@Ts;SpeedPIchart DISCRETE @Tsc; re-commit both chart configs after wiring. See build_sop.md §5. - SVPWM workspace contract + sector-7 fix — the library SVPWM reads
TpwmandVdc_valfrom workspace; carrier is hardcoded forTpwm = 1e-4; apply the MultiPortSwitch sector-7 startup fix on the local instance. See build_sop.md §4. idbias grows ∝ ωe² — expected physics, not a bug — do not "fix" it during acceptance; check it stays inside the documented envelope. See known_limitations.md #1.
Build Flow
| Phase | Action | Reference |
|---|---|---|
| 0 | Validate inputs + sanity grid | base/pre_build_grid.md |
| 1 | Plant layer (powergui Discrete, DC, UB, PMSM, TL inline-FW, BusSelector) + measurement (Clark abc→αβ, Gain_Pn ×2 for θe/ωe) | build_sop.md §2-§3 |
| 2 | Outer SpeedPI chart (PI + anti-windup clamp ±iq_max) | chart_contract.md §2 |
| 3 | MFPCC_ESO chart (two-channel ESO + deadbeat + delay comp) | chart_contract.md §1 |
| 4 | Glue: 6 input ZOH @ Tsc + 2 output Unit Delay @ Tsc | chart_contract.md §3 |
| 5 | Modulation (SVPWM library + sector-7 fix) → UB gate | build_sop.md §4 |
| 6 | Loggers (10 To Workspace) + Scope; solver + InitFcn + chart re-commit guard | build_sop.md §5-§6 |
| 7 | Acceptance (Layer 1 physics + Layer 2 metrics) | acceptance_criteria.md |
Required User Inputs
Ask the user before starting. Validation-case defaults in build_sop.md §7.
| Group | Parameters |
|---|---|
| Machine (7) | Rs, Ls (= Ld = Lq, SPMSM), psi_f, Pn, J, B (→ PMSM mask F), Vdc |
| Control (5) | alpha (default 50), z12 (default 0.15), iq_max, Kp_w, Ki_w |
| Sampling (3) | Ts (plant, default 1e-6), Tsc = Tpwm (control = switching, default 1e-4) |
| Scenario (5) | wref_rpm, ramp_t, TL_val, TL_t, StopTime |
Triggers / Skip
| ✅ Use | ❌ Skip |
|---|---|
| Build / port / extend MFPCC-ESO (ultralocal + ESO + deadbeat + SVM) in Simulink | FCS-MPC single/dual/three-vector → motor-fcs-mpc family |
| Model-free / parameter-free current loop with fixed switching frequency | FOC PI loops, DTC, SMC, sensorless, scalar V/Hz, BLDC |
| Generalizing MFPCC-ESO to a new SPMSM parameter set | IPMSM saliency, MTPA, weak-field; IM predictive control; pure theory |
Generalization Across Machine Sub-Types
| Sub-type | Constraint | Verdict |
|---|---|---|
| SPMSM | Ld = Lq = Ls | ✅ supported; id_ref = 0 |
| IPMSM (any saliency) | Ld ≠ Lq | ❌ out of scope — saliency introduces 2θe coupling that breaks the αβ ultralocal premise (pmsm_formulas §8) |
| any SPMSM param set | — | topology unchanged (same blocks/wiring/charts); alpha/z12 defaults transfer (parameter-free law) |
Sibling Skills
- motor-pmsm-base — base infrastructure; motor-smc-pmsm — closest architecture (outer + inner loop + SVPWM + UB)
- motor-fcs-mpc / dualvector / trivector — FCS-MPC family (different identity: finite set); motor-dtc-pmsm — DTC