Eomys/pyleecan

Changes in rotor speed (N0) don't affect average Torque

Closed this issue · 4 comments

Hello,
I'm currently working on a University project for my Electrical Machines course and I have to model some typologies of IPMSM using Pyleecan.
To overcome Datakeeper's issues I wrote down a simple for loop iteranting over a bunch of lists I provide as inputs (current, angle, speed), unfortunately providing different rotor speeds doesn't affect average torque (I even tried to reach 10000 rpm and no changes in torque).
Is there a way to link rotor speed to average torque without using Datakeeper structure?
Is it possible to plot the motor mechanical characteristic (x: angular rotor speed, y: mechanical torque)?

rotor_speed = 500 # [rpm] 
rotor_speed_list = [number + rotor_speed for number in range(0,1000,83)]
Id_0k = [number + 200 for number in range(0,260,20)]  # input current list
Phi_0k= [number  for number in range(60,125,5)]
Tem_av = []

for i in range(len(Id_0k)):

    simulation.input = InputCurrent()  # Definition of a sinusoidal current
    I0_rms = Id_0k[0]/sqrt(2) # Maximum current [Arms]  # I0, Phi0 to set
    Phi0 = Phi_0k[0]*pi/180  # Maximum Torque Per Amp
    Id_ref = (I0_rms*exp(1j*Phi0)).real # [Arms] # Compute corresponding Id/Iq
    Iq_ref = (I0_rms*exp(1j*Phi0)).imag # [Arms]
    speed =  rotor_speed_list[i]
    # Setting the values
    simulation.input.OP = OPdq(Id_ref=Id_ref, Iq_ref=Iq_ref, N0 = speed)  # OP definition
    (Id_ref,Iq_ref)
    simulation.input.Nt_tot = 128 # Number of time step
    simulation.input.Na_tot = 2048 # Spatial discretization
    out_op = simulation.run()
    Tem_av_i = out_op.mag.Tem_av  
    Tem_av.append(Tem_av_i)

dict_data_set = {"speed": rotor_speed_list, "Id_0" : Id_0k[0], "Phi_0": Phi_0k[0], "Average_Tem": Tem_av}
<style> </style>
speed Id_0 Phi_0 Average_Tem
500 200 60 14,58983
583 200 60 14,58983
666 200 60 14,58983
749 200 60 14,58983
832 200 60 14,58983
915 200 60 14,58983
998 200 60 14,58983
1081 200 60 14,58983
1164 200 60 14,58983
1247 200 60 14,58983
1330 200 60 14,58983
1413 200 60 14,58983
1496 200 60 14,58983

Hello,

Great to know that some university are using Pyleecan for courses :) Could you share the name of your university and professor ? We are looking for feedback/collaboration on how to improve pyleecan for university.

What is your issue with Datakeeper ? Is there an error message ? Which version of pyleecan are you using ?

The loop you have construct is the purpose of the object VarLoadCurrent that would speed up your calculation (VarLoadCurrent should draw your machine in FEMM only once while you draw it at each call to simu.run). You can take a look at https://pyleecan.org/tuto_Operating_point.html#Iterating-on-several-Operating-Point.

As you are using InputCurrent, the simulation is current driven for an IPMSM then the torque doesn't change with speed (there is no electrical model in this case).

Best regards,
Pierre

Hi Pierre,
thanks for your reply :)
I'm studying at UNIVPM ( Università Politecnica delle Marche, Ancona, Italy) with Professor Emanuele Principi
So, basically, simulations are only current or voltage driven?
Since I have to compute rotor speed for every average torque value at a certain input current, introducing an efficiency factor in the OPdq constructor and than computing speed using Power = (Torque*angular speed) will work just fine?
Referring to Datakeeper I had the same problem as issue #598.
I'm running:
pyleecan 1.4.2
pyfemm 0.1.3
SciDataTool 2.5.0
Python 3.9.7
Thanks for your help

Hello,

I just release pyleecan1.5.0 and updated all the tutorials on the website (there is a new loss tutorial). Normally the DataKeeper issue should be solved.
Do you need further help or can we close this issue ?

Best regards,
Pierre

Hello Pierre,
nice to hear these news of yours, I'll take a look at the new features as soon as I can.
Of course you can close the issue.
Best regards,
Giuliano