PM-Reluktanzsynchronmaschine und Parameteridentifikation¶
Parameterbasierte FE-Modellerstellung einer PM-unterstützten Reluktanz-Synchronmaschine, Simulation des Leerlauf- und Lastfalls sowie Ermittlung der Maschinenparameter des induktivitätsbasierten d-q-Modells
sowie des flussverkettungsbasierten d-q-Modells
zur Simulation des stationären und transienten Betriebsverhaltens. Es kommen die FSL-Befehle
run_models("pm_sym_fast")
siehe Simulation PM/Reluctance and DC-excited Synchrounous Machinesrun_models("ld_lq_fast")
siehe Ld and Lq identificationrun_models("psd_psq_fast")
siehe Psid and Psiq identification
zur Anwendung.
Die nachfolgende Darstellung gibt einen Eindruck von der hier beispielhaft verwendeten Maschinentopologie.
Skript-Datei
--------------------------------------------------------------------------------
-- FSL Control Parameter -------------------------------------------------------
--------------------------------------------------------------------------------
exit_on_error = false
exit_on_end = false
verbosity = 2
--------------------------------------------------------------------------------
-- FE Model Generation ---------------------------------------------------------
--------------------------------------------------------------------------------
new_model_force("example17","PM Rel Example")
global_unit('mm') -- Global unit of length (m; cm; mm)
pickdist(0.001) -- Distance to select nodes by coordinates
cosys('polar')
-- General Model and Simulation Data --
m.tot_num_slot = 24.000 -- Number of slots (>= 1)
m.num_poles = 4.000 -- Number of poles 2p (>= 2)
m.npols_gen = 1.000 -- Number of poles simulated (>= 1)
m.num_slots = 6.000 -- Number of slots in model
m.arm_length = 150.000 -- Effect. armature length [mm]
m.fc_radius = 100.500 -- Radius air-gap center [mm]
pre_models("basic_modpar");
-- Stator
m.yoke_diam = 300.000 -- Outer diameter yoke DAS [mm]
m.inside_diam = 202.000 -- Inner diameter DIS [mm]
m.slot_height = 30.000 -- Total slot height HSL [mm]
m.slot_h1 = 4.000 -- Slot opening height H1S [mm]
m.slot_h2 = 8.000 -- Slot head height H2S [mm]
m.slot_width = 7.000 -- Slot width SWI;< 0 groove in Slot[mm]
m.slot_r1 = 0.000 -- Upper Radius R1S [mm]
m.slot_r2 = 0.000 -- Lower Radius R2S [mm]
m.wedge_width1 = 0.000 -- Distance middlepoints B1S [mm]
m.wedge_width2 = 0.000 -- Distance middlepoints B2S [mm]
m.nodedist = 2.000 -- Rel.nod-dist > 0 begin tooth;< 0 slot
m.middle_line = 2.000 -- Layers: 0;vert:1;horiz:2;vert+horiz:3
m.tooth_width = 12.000 -- Tooth width TW (replaces B1; B2) [mm]
m.slot_top_sh = 0.000 -- Top of slot: corner=2; line=1; arc=0
m.airgap = 0.666 -- Airgap 2/3 height:>0; <0:no ndchn[mm]
m.tot_num_sl = m.tot_num_slot -- Total number of teeth on 2pi
m.num_sl_gen = m.num_slots -- Number of teeth be generated
m.zeroangl = 0.000 -- Reference angle to x-axis [grad]
m.rlength = 100.000 -- rel. length fe in z-dir [%]
m.mcvkey_yoke = 'M400-50A_mod'
pre_models("STATOR_3");
m.basfreq = 50.000 -- Base Frequency for ch and cw fo [Hz]
m.basind = 1.500 -- Base Induction (Peak) Bo [T]
m.ch = 3.000 -- Fe-Hysteresis -Coefficient ch [W/kg]
m.cw = 1.500 -- Fe-Eddy current-Coefficient cw [W/kg]
m.hyscoef = 1.000 -- Hysteresis- Frequency-Coefficient
m.edycoef = 2.000 -- Eddycurrent-Frequency-Coefficient
m.indcoef = 2.000 -- Induction-Coefficient
m.ffactor = 1.000 -- Material + Field Factor >= 1
m.spweight = 7.650 -- Specific Weight Iron [gr/cm3]
m.fillfact = 1.000 -- Fillfactor Iron <= 1
m.emodul = 0.210E12 -- E-Modul [kN/mm2]
m.poison = 0.300 -- Poissonvalue <= 1
m.dampfact = 0.000 -- Dampingfactor
m.thcond = 30.000 -- Thermal conductivity [W/m degr]
m.thcap = 480.000 -- Thermal heat capacity [Ws/g degr]
pre_models("FE-Losses-1");
-- Windings and Conductor Specification
--m.tot_num_slot = 24.000 -- Total Number of slots Q
--m.num_poles = 4.000 -- Number of Poles 2p
m.num_phases = 3.000 -- Number of Phases m <= 200
m.num_layers = 2.000 -- Number of Layers (slot sides)per slot
m.num_wires = 6.000 -- Number of wires per slot side
m.current = 0.000 -- Wdg-Current [A] or flux [Vs/mm];peak
m.coil_span = 6.000 -- Coil span Y >= 1
--m.num_slots = 6.000 -- Number of slots in Model (Rot-Mot)
m.mat_type = 1.000 -- Ma-type:1=Rot;21=lin-x;22=lin-y
m.wind_type = 1.000 -- W-typ:1=w&cur;2=w&flux;3=bar&cur
m.win_asym = 1.000 -- asy. slot pitch: 1=sym.; <1=asym.
m.wdg_location = 1.000 -- Windg location:1: stator; 2: rotor
m.curr_inp = 0.000 -- Curent:Const:0; Q-axis:1; D-axis:-1
m.dq_offset = 0.000 -- Offset to D-axis:>=0 Compl;<0 only Re
m.npols_gen = 1.000 -- Number of Poles simulated (>= 1)
m.xcoil_1 = 111.538 -- center coordinate of 1. coil side [mm]
m.ycoil_1 = 14.684 -- center coordinate of 1. coil side [mm]
m.xcoil_2 = 115.699 -- center coordinate of 2. coil side [mm]
m.ycoil_2 = 47.944 -- center coordinate of 2. coil side [mm]
pre_models("Gen_winding");
m.cufilfact = 0.450 -- Conductor space filling-factor: <= 1
m.culength = 160.000 -- Rel. conductor length (c+e wdg) [%]
m.cuconduct = 56000000.000 -- Conductor conductivity 20 Dgr C [S/m]
m.numlayers = 1.000 -- Number of conductor layers > = 1
m.conheight = 0.000 -- Rectangular Conductor height [mm]
m.contemp = 20.000 -- Conductor Temperature [Degree C]
m.emodul = 0.210E12 -- E-Modul [kN/mm2]
m.poison = 0.300 -- Poissonvalue <= 1
m.dampfact = 0.000 -- Dampingfactor
m.thcond = 30.000 -- Thermal conductivity [W/m degr]
m.thcap = 480.000 -- Thermal heat capacity [Ws/g degr]
m.slot_indul = 1.000 -- Slot insulation [mm]
m.dia_wire = 0.000 -- Diameter single round wire [mm]
m.num_wire = 0.000 -- Number of single wires/conductor
pre_models("CU-Losses-1");
-- Specify Permanent Magnet Properties
m.remanenc = 0.700 -- Remanence Br (Ref:20 Degree C) [T]
m.relperm = 1.050 -- Rel. Permeability muer
m.spmaweight = 4.000 -- Specific Weight Magnets [gr/cm3]
m.temcoefbr = -0.100 -- Temperature Coefficient for Br [%/K]
m.temcoefhc = -0.100 -- Temperature Coefficient for Hc [%/K]
m.magntemp = 20.000 -- Magnet Temperature [Degree C]
m.magncond = 0.000 -- Magnet el. conductivity [1/Ohm m]
m.magsegwid = nil -- Magnet segment width [mm]
m.magseglen = nil -- Magnet segment length z-direction [mm]
pre_models("Magnet-data");
-- Rotors with Permanent Magnets and Reluctance
m.rotor_rad = 100.000 -- Outer Radius RA [mm]
m.inside_rad = 40.000 -- Inner Radius; <0:holes uneven RI [mm]
m.magn_height = 5.000 -- Inner Magnet height HM [mm]
m.magn_width = 50.000 -- Inner Magnet width;< 0 # BM [mm]
m.magn_dm = 8.000 -- Magnet distance from RI DM [mm]
m.magn_dm1 = 8.000 -- Magnet dist. betw.magnet DM1 [mm]
m.gap_ma_iron = 2.000 -- Iron gap betw. magnets DE_M[mm]
m.iron_height = 1.500 -- Iron height circle rotor H1 [mm]
m.corner_rad = 2.500 -- Corner and Circle radius R1 [mm]
m.circle_num = 10.000 -- Number of Circles R1 per Pole NC
m.slot_num = 3.000 -- Number of Slots per Pole NS < NC/2
m.magn_num = 1.000 -- Number of Magnets sections NM
m.iron_shape = 99.000 -- Airgap shape radius HA:<= RA [mm]
m.nodedist = 2.000 -- Rel. Node distance > 0.2
--m.airgap = 0.666 -- Mesh height (2/3 airgap) [mm]
--m.num_poles = 4 -- Total number of poles on 2pi
--m.npols_gen = 1 -- Number of poles be generated
m.zeroangl = 0.000 -- Reference angle to x-axis [grad]
m.mcvkey_yoke = 'M400-50A_mod'
pre_models("Magnet+Reluct");
m.basfreq = 50.000 -- Base Frequency for ch and cw fo [Hz]
m.basind = 1.500 -- Base Induction (Peak) Bo [T]
m.ch = 3.000 -- Fe-Hysteresis -Coefficient ch [W/kg]
m.cw = 1.500 -- Fe-Eddy current-Coefficient cw [W/kg]
m.hyscoef = 1.000 -- Hysteresis- Frequency-Coefficient
m.edycoef = 2.000 -- Eddycurrent-Frequency-Coefficient
m.indcoef = 2.000 -- Induction-Coefficient
m.ffactor = 1.000 -- Material + Field Factor >= 1
m.spweight = 7.650 -- Specific Weight Iron [gr/cm3]
m.fillfact = 1.000 -- Fillfactor Iron <= 1
m.emodul = 0.210E12 -- E-Modul [kN/mm2]
m.poison = 0.300 -- Poissonvalue <= 1
m.dampfact = 0.000 -- Dampingfactor
m.thcond = 30.000 -- Thermal conductivity [W/m degr]
m.thcap = 480.000 -- Thermal heat capacity [Ws/g degr]
pre_models("FE-Losses-2");
-- Generate File Needed to Specify the Phase Currents
pre_models("gen_pocfile");
-- Connect the stator and rotor and apply boundary conditions automatically
pre_models("connect_models")
-- Calculation of stray inductances of the winding overhangs
m.nseg = 4.000 -- Number of segments
m.npolsim = m.npols_gen -- Number of poles simulated
--m.fc_radius = 100.500 -- Radius air-gap center (torque) [mm]
m.perimrad = 139.275 -- Radius of perimeter [mm]
m.vbendrad = 5.000 -- Bending radius vertical [mm]
m.endheight = 20.000 -- End winding height [mm]
m.wiredia = 1.000 -- Wire diameter [mm]
pre_models("leak_dist_wind");
--post_models("end_wind_leak","leak");
--------------------------------------------------------
-- Simulation and Performance Analysis of the Machine --
--------------------------------------------------------
----------------------------------
-- Simulation Control Parameter --
----------------------------------
m.hc_min = 95.000 -- Limit demagnetisa > 0:[%]Hc;<0:[kA/m]
m.con_hdcopy = 1.000 -- Hc-copy:Name:auto:0;intact:1; none:-1
m.b_max = 2.000 -- Max Induction [T] in colorgradation
m.b_min = 0.000 -- Move inside: 0 ; Move outside: > 0
m.calc_fe_loss = 1.000 -- Calc. FE-Loss:0:no; 1:yes; 2:m-output
m.eval_force = 0.000 -- Eval. force density > 0; no <= 0
m.allow_draw = 1.000 -- Draw Graphics :> 0: yes; 0: no
m.fline_dens = 1.000 -- F-Lines: 1: small; 2: medium; 3:thick
m.num_flines = 25.000 -- Number of Field-lines: < 100 > 2
m.name_bch_log = 0.000 -- Name bch-file in Logfile:> 0:yes;0:no
m.st_size_move = 0.000 -- Step size move: r/ph:[degr]; x/y:[mm]
m.num_nonl_it = 300.000 -- Number of nonlinear Iterations < 99
m.perm_mode = 0.000 -- Permeability mode:>0:restore;0:actual
m.error_perm = 0.010 -- Rel. Permeability error < 0.1 [%]
m.allow_demagn = 0.000 -- Allow Demagnetisation:= 1:yes;= 0:no
m.maenergy = 0.000 -- Force from magn energy 1 :yes;= 0:no
m.el_order_ag = 1.000 -- El. order in air gap: lin=1: quadr=2
m.export_scrpt = 0.000 -- Export parameters in script: yes > 0
pre_models("FE-contr-data");
-----------------------------------------------
-- Flux Density Distribution at Open Circuit --
-----------------------------------------------
calc_field_single(100,restored,0.01)
grf_clear()
draw_spels()
color_gradation(0,0,"tot","Babs",0,0,"example17_fluxdens_0.svg")
sleep(3)
ppc = 150 -- phase peak current
def_curr_wdg(1,ppc)
def_curr_wdg(2,-ppc/2)
def_curr_wdg(3,-ppc/2)
calc_field_single(100,restored,0.01)
grf_clear()
draw_spels()
color_gradation(0,0,"tot","Babs",0,0,"example17_fluxdens_1.svg")
sleep(3)
post_models("draw_f_lines","b")
save_metafile("example17_fluxlines.svg")
sleep(3)
-----------------------------------------------
-- Open Circuit and Load Voltages and Torque --
-----------------------------------------------
-- Parameter commented out are requested by run_models() but
-- already given above.
m.move_action = 0.000 -- Move Action: rotate=0; linear=1
--m.arm_length = 150.000 -- Effect. armature length [mm]
m.num_pol_pair = m.num_poles/2 -- Number of Pole pairs (>= 1)
--m.npols_gen = 1.000 -- Number of Poles simulated (>= 1)
m.speed = 2500.000 -- Speed: rotate [1/min]
m.skew_angle = 0.000 -- Skew angle [Deg; mm]
m.nu_skew_steps = 0.000 -- No of skew sect:>0:finite;0:infinite
m.eval_force = 0.000 -- Evaluate force density: no = 0;yes >0
m.current = ppc -- Nominal stator coil current(Peak) [A]
m.angl_i_up = 0.000 -- Angle current I vs. voltage Up [Deg]
m.num_par_wdgs = 0.000 -- Number of parallel Windings (>= 1)
m.magn_temp = 20.000 -- Temperature Magnet [Deg C]
--m.fc_radius = 100.500 -- Radius air-gap center (torque) [mm]
m.optim_i_up = 1.000 -- Optimize < I vs Up : no = 0; yes > 0
m.calc_fe_loss = 1.000 -- Calculate Losses:>0; areas>0; no = 0
m.nu_move_steps = -13.000 -- Number of move steps
m.range_phi = 180.000 -- Move range angle
m.phi_start = 0.000 -- Start angle
m.pm_eff_aktiv = 0 -- No interaction
m.fc_mult_move_type = 1.0 -- Type of move path in air gap
m.fc_force_points = 0.000 -- Number move points in air gap
m.pocfilename = 'example17_4p.poc'
run_models("pm_sym_fast");
-------------------------------------------------------
-- Maschine Parameter Identification (Psi_m, Ld, Lq) --
-------------------------------------------------------
-- Parameter commented out are requested by run_models() but
-- already given above.
--m.move_action = 0.000 -- Move Action: rotate=0; linear=1
--m.arm_length = 150.000 -- Effect. armature length [mm]
--m.num_pol_pair = 2.000 -- Number of Pole pairs (>= 1)
--m.npols_gen = 1.000 -- Number of Poles simulated (>= 1)
--m.speed = 2500.000 -- Speed: rotate [1/min]
--m.skew_angle = 0.000 -- Skew angle [Deg; mm]
--m.nu_skew_steps = 0.000 -- No of skew sect:>0:finite;0:infinite
m.current = 2*ppc -- Nominal stator coil current(Peak) [A]
--m.num_par_wdgs = 1.000 -- Number of parallel Windings (>= 1)
--m.magn_temp = 20.000 -- Temperature Magnet [Deg C]
--m.fc_radius = 100.923 -- Radius air-gap center (torque) [mm]
m.num_cur_steps = 3.000 -- Number of current steps <= 15
m.nu_beta_steps = 3.000 -- Number of beta angle steps <= 15
m.beta_max = 0.000 -- Beta angle maximum
m.beta_min = -60.000 -- Beta angle minimum
--m.nu_move_steps = -13.000 -- Number of move steps
--m.range_phi = 180.000 -- Move range angle
--m.phi_start = 0.000 -- Start angle
m.pm_eff_aktiv = 0 -- No interaction
--m.pocfilename = 'example17_4p.poc'
--run_models("ld_lq_fast"); -- <<< uncomment to activate
------------------------------------------------------
-- Maschine Parameter Identification (Psi_d, Psi_q) --
------------------------------------------------------
-- Parameter commented out are requested by run_models() but
-- already given above.
--m.arm_length = 150.000 -- Effect. armature length [mm]
--m.num_pol_pair = 2.000 -- Number of Pole pairs (>= 1)
--m.npols_gen = 1.000 -- Number of Poles simulated (>= 1)
--m.speed = 2500.000 -- Speed: rotate [1/min]
--m.skew_angle = 0.000 -- Skew angle [Deg; mm]
--m.nu_skew_steps = 0.000 -- No of skew sect: >0:finite;0:infinite
--m.num_par_wdgs = 1.000 -- Number of parallel Windings (>= 1)
--m.fc_radius = 100.500 -- Radius air-gap center (torque) [mm]
m.maxid = 2*ppc -- Max value Id-current [A]
m.minid = -2*ppc -- Min value Id-current [A]
m.maxiq = 2*ppc -- Max value Iq-current [A]
m.miniq = -2*ppc -- Min value Iq-current [A]
m.delta_id = 2*ppc -- Delta Id [A]
m.delta_iq = 2*ppc -- Delta Iq [A]
--m.nu_move_steps = -13.000 -- Number of move steps
--m.range_phi = 180.000 -- Move range angle
--m.phi_start = 0.000 -- Start angle
--m.pocfilename = 'example17_4p.poc'
run_models("psd_psq_fast"); -- <<< uncomment to activate