======================================================== 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 .. image:: form_14.png sowie des flussverkettungsbasierten d-q-Modells .. image:: form_15.png zur Simulation des stationären und transienten Betriebsverhaltens. Es kommen die FSL-Befehle | run_models("pm_sym_fast") siehe :any:`emagCaclcMultiSimu` | run_models("ld_lq_fast") siehe :any:`emagCalcMultiLdLq` | run_models("psd_psq_fast") siehe :any:`emagCalcMultiPsid` zur Anwendung. Die nachfolgende Darstellung gibt einen Eindruck von der hier beispielhaft verwendeten Maschinentopologie. .. image:: example17_topology.png Die Datei der Magnetisierungskennlinie M400-50A_mod.MCV ist im Falle der Ausführung des Skripts unter Windows in ihrer Endung von MCV in MC umzubenennen und ebenso die jeweiligen Angaben in der Skript-Datei. .. role:: big :big:`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.MCV' 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.MCV' 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