=========================================== M-Modelle und PM-/Reluktanzmotor-Simulation =========================================== Das Beispiel zeigt die Verwendung der in FEMAG vorhandenen parameterbasierten Maschinenmodelle (M-Models) mit den Befehlen pre_models und deren Simulation mit run_models. Das Beispiel kann interaktiv erzeugt werden, wenn unter dem Menü-Punkt "CAD-Param/M-Models" die Funktion "Write Script file" aktiviert wird. .. role:: big :big:`Skript-Datei` ---------------------------------------------------------------------- :: --------------------------------------------- -- Allgemeine Einstellungen ----------------- --------------------------------------------- exit_on_error = false -- Verhalten nach Fehler exit_on_end = true -- Verhalten nach Skriptausfuehrung verbosity = 2 -- Grad der Bildschirmmeldungen --------------------------------------------- -- Modellerstellung ------------------------- --------------------------------------------- new_model_force("example","PMSM") --------------------- -- Allgemeine Angaben global_unit('mm') -- Globale Einheit (m, cm, mm) pickdist(0.001) -- Abstand Schnappen auf Knotenpunkt cosys('polar') -------------------------- -- Grunddaten der Maschine m.tot_num_slot = 12 -- Number of Stator Slots (>= 1) m.num_slots = 3 -- Number of Stator Slots (>= 1) m.num_poles = 4 -- Number of Poles 2p (>= 2) m.npols_gen = 1 -- Number of Poles simulated (>= 1) m.fc_radius = 34.25 -- Radius air-gap center [mm] m.arm_length = 50.0 -- Effect. armature length [mm] pre_models("basic_modpar") -------------------- -- Erstellung Stator m.yoke_diam = 130.000 -- Outer diameter yoke DAS [mm] m.inside_diam = 70.000 -- Inner diameter DIS [mm] m.slot_height = 20.000 -- Total slot height HSL [mm] m.slot_h1 = 2.000 -- Slot opening height H1S [mm] m.slot_h2 = 4.000 -- Slot head height H2S [mm] m.slot_width = 3.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 = 1.000 -- Rel.nod-dist > 0 begin tooth,< 0 slot m.middle_line = 0.000 -- Layers: 0,vert:1,horiz:2,vert+horiz:3 m.tooth_width = 9.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 = 1.000 -- Airgap 2/3 height:>0:3, <0:4 rows[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 = 'dummy' pre_models("STATOR_3") -------------------- -- Erstellung Rotor m.magn_rad = 33.500 -- Radius Magnet airgap side RA [mm] m.yoke_rad = 20.000 -- Radius iron yoke inside RI [mm] m.magn_height = 5.000 -- Magnet height HM [mm] m.magn_width = 80.000 -- Magnet width: > 0: [%], < 0:[mm] m.nodedist = 1.000 -- Rel. Node distance > 0.5 .. m.condshaft_r = 20.000 -- Conduct. Shaft Radius:< yoke_rad [mm] m.magn_num = 1.000 -- Number Magnet sections: > = 1 m.magn_perm = 28.500 -- Radius Iron RFE between magnets [mm] m.magn_l = 100.000 -- Magnet Length: < 150 % air gap length m.magn_ori = 1.000 -- Magnet:par = +/-1,Pol = 2,halb = +/-3 m.magn_type = 2.000 -- MagnType:Ac:1,Acp:2,Rc:3, Rcp:4,AAp:5 m.magn_shape = 0.000 -- Magnet surface radius <= RA HA[mm] m.br_height = 0.000 -- Iron bridge height: = 0: none BH[mm] m.br_width = 0.000 -- Iron bridge width : = 0: none BW[mm] m.zeroangl = 0.000 -- Reference angle to x-axis [grad] m.cond_shaft = 0.000 -- El. Conductivity of shaft [S/m] m.mcvkey_yoke = 'dummy' m.mcvkey_mshaft = 'dummy' pre_models("Magnet-Sector") ---------------------------------------------- -- Modellvervollständigung und Randbedingungen pre_models("connect_models") -- connect stator and rotor, mesh airgap and -- apply the boundary conditions automatically ---------------------- -- Wicklungserstellung m.num_phases = 3.000 -- Number of Phases m <= 500 m.num_layers = 1.000 -- Number of Layers (slot sides)per slot m.num_wires = 100.000 -- Number of wires per slot side m.current = 0.000 -- Wdg-Current [A] or flux [Vs/mm],peak m.coil_span = 3.000 -- Coil span Y >= 1 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 = 44.433 -- center coordinate of 1. coil side [mm] m.ycoil_1 = 11.906 -- center coordinate of 1. coil side [mm] m.xcoil_2 = 0.000 -- center coordinate of 2. coil side [mm] m.ycoil_2 = 0.000 -- center coordinate of 2. coil side [mm] pre_models("Gen_winding") ----------------------------------------- -- Materialeigenschaften Permanentmagnete m.remanenc = 1.200 -- Remanence Br (Ref:20 Degree C) [T] m.relperm = 1.050 -- Rel. Permeability muer m.spmaweight = 7.600 -- 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 = 625000.0 -- 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") ---------------------------------------------------- -- Material-/Modellparameter des Stators- und Rotors m.basfreq = 50.0 -- Base Frequency for ch and cw fo [Hz] m.basind = 1.50 -- Base Induction (Peak) Bo [T] m.ch = 4.00 -- Fe-Hysteresis -Coefficient ch [W/kg] m.cw = 2.00 -- Fe-Eddy current-Coefficient cw [W/kg] m.hyscoef = 1.00 -- Hysteresis- Frequency-Coefficient m.edycoef = 2.00 -- Eddycurrent-Frequency-Coefficient m.indcoef = 2.00 -- Induction-Coefficient m.ffactor = 1.00 -- Material + Field Factor >= 1 m.spweight = 7.65 -- Specific Weight Iron [gr/cm3] m.fillfact = 1.00 -- Fillfactor Iron <= 1 m.emodul = 0.210E+12 -- E-Modul [kN/mm2] m.poison = 0.300 -- Poissonvalue <= 1 m.dampfact = 0.00 -- Dampingfactor m.thcond = 0.00 -- Thermal conductivity [W/m degr] m.thcap = 0.00 -- Thermal heat capacity [Ws/g degr] pre_models("FE-Losses-1"); pre_models("FE-Losses-2"); -------------------------- -- Stromverlaufsdefinition cosys('polar') -- ensure the cosys is polar here pre_models("gen_pocfile") -- generate poc file automatically ----------------------------------------------------------------------------- ----- Berechnung/ Simulation ------------------------------------------------ ----------------------------------------------------------------------------- ----------------------- -- Simulationsparameter 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.400 -- 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 = 5.000 -- F-Lines: 1: small; 2: medium; 3:thick m.num_flines = 20.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 = 1.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"); ---------------------------------------------------- -- PM-/Reluktanzmotor-Simulation (Leerlauf und Last) m.move_action = 0.000 -- Move Action: rotate=0, linear=1 --m.arm_length = 50.0 -- Effect. armature length [mm] --m.num_pol_pair = m.num_poles/2 -- Number of Pole pairs (>= 1) m.speed = 1000.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 = 6.000 -- 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 = m.magntemp -- Temperature Magnet [Deg C] m.optim_i_up = 1.000 -- Optimize < I vs Up : no = 0, yes > 0 m.nu_move_steps = 91.0 -- Number of move steps m.range_phi = 180.0 -- Move range angle m.phi_start = 0.000 -- Start angle m.pm_eff_aktiv = 100.0 -- Effektive Magnetlaenge [%] m.fc_mult_move_type = 0.0 -- Type of move path in air gap m.pocfilename = 'example_4p.poc' -- POC file run_models("pm_sym_fast") ------------------------------ -- Auswertung ---------------- ------------------------------ post_models("r_torque","T") printf("> Drehmoment: %g Nm",T[1]) printf("> Nutrastmoment: %g Nm",T[2]) printf("> Lastpulsation: %g Nm",T[3]) post_models("r_winding_losses","L") printf("> Wicklungsverluste: %g W",L[1]) post_models("r_iron_losses","L") printf("> Eisenverluste im Stator: %g W",L[1]) printf("> Eisenverluste im Rotor: %g W",L[2]) ------------------------------ -- Abschluss ----------------- ------------------------------ save_model('close')