- 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.
Why does the FEM-Parameterized PMSM require rotor angle vector between 0 to 120/N degrees
25 views (last 30 days)
Show older comments
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.
- Why should it be from 0 to 120/N?
- 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.
- I am confident the FEA solver and the motor model is accurate based on actual test data and correlation between the two.
- 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.
- 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.
0 Comments
Answers (1)
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:
I hope it helps.
0 Comments
See Also
Categories
Find more on Choose and Parameterize Blocks in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!