Why does the FEM-Parameterized PMSM require rotor angle vector between 0 to 120/N degrees

25 views (last 30 days)
Toolboxes:
Simscape Electrical
Block:
FEM-Parameterized PMSM
Modeling Option:
3-D flux linkage data
Flux linkage data format:
D and Q axes flux linkage as a function of D-axis current (iD), Q-axis current (iQ), and rotor angle (theta)
Documentation states: If Flux linkage data format is D and Q axes flux linkages as a function of D-axis current (iD), Q-axis current (iQ), and rotor angle (theta) or D and Q axes flux linkages as a function of peak current magnitude (I), current advance angle (B), and rotor angle (theta) (that is, if you tabulate D and Q flux linkage data), then the rotor angle vector must have four or more points and a range from 0 to 120/N degrees, where N is the number of pole pairs.
Problem:
4 pole-pair PMSM
My FEA software solves the flux linkages over 1 electrical period and outputs the table with a rotor angle dependency from 0 to 90 degrees. The data I have is cyclic over this range. For this particular solver the flux is calculated for each of these rotor angle working points 20 in total:
0.00000000 4.73684200 9.47368400 14.21053000 18.94737000 23.68421000 28.42105000 33.15789000 37.89474000 42.63158000 47.36842000 52.10526000 56.84211000 61.57895000 66.31579000 71.05263000 75.78947000 80.52632000 85.26316000 90.00000000
On the other hand the FEM-Parameterized PMSM block is asking for 0 to 120/N = 0 to 120/4 = 0 to 30 degrees. When simply doing a brute force method where I simply only enter in flux linkage data that is within 0 to 30 degrees I get the error that the data must be cyclic between the first and last point. As in the table at 0 degrees must be equal to the table at the last point which in my case would be at 28.42105 degrees. They obviously don't match and now I am trying to reason through why.
The data I have from my FEA solver is cyclic but around 90 degrees wheareas here it is asking for 0 to 30 degrees.
  1. Why should it be from 0 to 120/N?
  2. My FEA solver dosen't let me specify solving between 0 to 30 degrees. I have no control over the angle it solves for. I can only specify the number of computations over an electrical period. In this case I specified 20 computations for an electrical period.
  3. I am confident the FEA solver and the motor model is accurate based on actual test data and correlation between the two.
  4. Is it valid to simply take my 0 to 90 and translate it down to 0 to 30 degrees? This feels wrong without fundamentally understanding how the PMSM block uses the angle.
  5. Is there any thoughts from anyone where my confusion may come from so I can read more into and try to understand the root of my issue?
Context: I am using this block in order to quickly run simulations in tandem with my motor control block and I need a motor model to do it. Running this level of simulation with my actual motor control block and generated C code is not possible with my FEA software so I must do it here in Simulink/Simscape instead.
Thanks for any response.

Answers (1)

Satyam
Satyam on 19 Nov 2025 at 3:18
Hi Jordan,
The FEM‑Parameterized PMSM block requires the rotor angle vector to span 0 to 120/N mechanical degrees because the machine’s flux linkage is periodic every 120° electrical due to three‑phase symmetry. For a 4‑pole‑pair motor, this means 0–30° mechanical. The block replicates this sector to model the full electrical period, so the first and last angle points must match for cyclic continuity. You can try out a few troubleshooting steps:
  • Verify if your FEA angle is electrical or mechanical and convert.
  • Extend or interpolate your data to cover 0-120° electrical (or 0-30° mechanical for N=4) and ensure endpoints match.
  • Provide at least 4 angle points in that range.
  • If you cannot regenerate data, consider using the A‑phase flux linkage format in the block.
I hope it helps.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!