Induktion/Induktionsverlauf im Element¶
Das Skript erstellt ein Modell, führt eine Leerlauf und Lastberechnung durch und wertet die Induktion in einem Element und dessen Verlauf über dem Drehwinkel aus. Der Verlauf wird zur weiteren Verwendung in eine Datei geschrieben.
Befehlserläuterung siehe Datenzugriff auf Element und Anwendungsbeispiele für Induktion und Induktionsverlauf in den Elementen.
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","Induc(x)")
global_unit('mm') -- Globale Einheit (m, cm, mm)
pickdist(0.001) -- Abstand Schnappen auf Knotenpunkt
cosys('polar')
-- Define FE control data
m.hc_min = 95.0 -- Limit demagnetisa > 0:[%]Hc,<0:[kA/m]
m.con_hdcopy = 0.00 -- Hc-copy:Name:auto:0,intact:1, none:-1
m.b_max = 2.40 -- Max Induction [T] in colorgradation
m.b_min = 0.00 -- Move inside: 0 , Move outside: > 0
m.calc_fe_loss = 0.00 -- Calcul. FE-Loss > 0, areas <0, no = 0
m.eval_force = 0.00 -- Eval. force density > 0, no <= 0
m.allow_draw = 1.00 -- Draw Graphics :> 0: yes, 0: no
m.fline_dens = 1.00 -- F-Lines: 1: small, 2: medium, 3:thick
m.num_flines = 10.00 -- Number of Field-lines: < 100 > 2
m.name_bch_log = 0.00 -- Name bch-file in Logfile:> 0:yes,0:no
m.st_size_move = 0.00 -- Step size move: r/ph:[degr], x/y:[mm]
m.num_nonl_it = 1.00 -- Number of nonlinear Iterations < 99
m.perm_mode = 0.00 -- Permeability mode:>0:restore,0:actual
m.error_perm = 0.500E-01 -- Rel. Permeability error < 0.1 [%]
m.allow_demagn = 0.00 -- Allow Demagnetisation:= 1:yes,= 0:no
m.maenergy = 0.00 -- Force from magn energy 1 :yes,= 0:no
m.el_order_ag = 1.00 -- El. order in air gap: lin=1: quadr=2
m.export_scrpt = 0.00 -- Export parameters in script: yes > 0
pre_models("FE-contr-data");
-- Define basic model parameters
m.tot_num_slot = 12 -- Numer of Slots
m.num_slots = 3.00 -- Number of slots in Model (Rot-Mot)
m.num_poles = 4 -- Number of Poles 2p (>= 2)
m.npols_gen = 1 -- Number of Poles simulated (>= 1)
m.arm_length = 50 -- Effect. armature length [mm]
m.fc_radius = 34.2 -- Radius air-gap center (torque) [mm]
pre_models("basic_modpar");
-- CAD-Parameter Data:
-- STATOR_3
m.yoke_diam = 130. -- Outer diameter yoke DAS [mm]
m.inside_diam = 70.0 -- Inner diameter DIS [mm]
m.slot_height = 20.0 -- Total slot height HSL [mm]
m.slot_h1 = 2.00 -- Slot opening height H1S [mm]
m.slot_h2 = 4.00 -- Slot head height H2S [mm]
m.slot_width = 3.00 -- Slot width SWI,< 0 groove in Slot[mm]
m.slot_r1 = 0.00 -- Upper Radius R1S [mm]
m.slot_r2 = 0.00 -- Lower Radius R2S [mm]
m.wedge_width1 = 0.00 -- Distance middlepoints B1S [mm]
m.wedge_width2 = 0.00 -- Distance middlepoints B2S [mm]
m.nodedist = 1.00 -- Rel. node distance in iron > 0.5
m.middle_line = 0.00 -- Layers: 0,vert:1,horiz:2,vert+horiz:3
m.tooth_width = 9.00 -- Tooth width TW (replaces B1, B2) [mm]
m.slot_top_sh = 0.00 -- Top of slot: corner=2, line=1, arc=0
m.airgap = 1.00 -- Mesh in airgap: 2/3 airgap height[mm]
m.tot_num_sl = 12 -- Total number of teeth on 2pi
m.num_sl_gen = 3 -- Number of teeth be generated
m.zeroangl = 0.00 -- Reference angle to x-axis [grad]
m.mcvkey_yoke = 'dummy'
pre_models("STATOR_3");
-- CAD-Parameter Data:
-- Magnet-Sector
m.magn_rad = 33.5 -- Radius Magnet airgap side RA [mm]
m.yoke_rad = 20.0 -- Radius iron yoke inside RI [mm]
m.magn_height = 5.00 -- Magnet height HM [mm]
m.magn_width = 80.0 -- Magnet width: > 0: [%], < 0: BM [mm]
m.airgap = 1.00 -- Mesh height (2/3 airgap) [mm]
m.nodedist = 1.00 -- Rel. Node distance > 0.2 ..
m.condshaft_r = 20.0 -- Conduct. Shaft Radius:< yoke_rad [mm]
m.magn_num = 1.00 -- Number Magnet sections: > = 1
m.magn_perm = 1.05 -- Radius Iron between magnets [mm]
m.magn_l = 100. -- Magnet Length: < 150 % [%]
m.magn_ori = 1.00 -- Magnet: par = 1, Pol = 2, halbach = 3
m.magn_type = 2.00 -- Mag Type:Ac:1,Acp:2,Rc:3, Rcp:4,AAp:5
m.magn_shape = 0.00 -- Magnet surface radius or shape HA[mm]
m.br_height = 0.00 -- Iron bridge height: = 0: none BH[mm]
m.br_width = 0.00 -- Iron bridge width : = 0: none BW[mm]
m.zeroangl = 0.00 -- Reference angle to x-axis [grad]
m.cond_shaft = 0.00 -- El. Conductivity of shaft [S/m]
m.mcvkey_yoke = 'dummy'
m.mcvkey_mshaft = 'dummy'
pre_models("Magnet-Sector");
-- connect_models
pre_models("connect_models");
-- Gen_winding
m.num_phases = 3.00 -- Number of Phases m <= 500
m.num_layers = 1.00 -- Number of Layers (slot sides)per slot
m.num_wires = 20.0 -- Number of wires per slot side
m.current = 1.00 -- Wdg-Current [A] or flux [Vs/mm],peak
m.coil_span = 3.00 -- Coil span Y >= 1
m.num_slots = 3.00 -- Number of slots in Model (Rot-Mot)
m.mat_type = 1.00 -- Ma-type:1=Rot;21=lin-x;22=lin-y
m.wind_type = 1.00 -- W-typ:1=w&cur;2=w&flux;3=bar&cur
m.win_asym = 1.00 -- asy. slot pitch: 1=sym.; <1=asym.
m.wdg_location = 1.00 -- Windg location:1: stator, 2: rotor
m.curr_inp = 0.00 -- Curent:Const:0, Q-axis:1, D-axis:-1
m.dq_offset = 0.00 -- Offset to D-axis:>=0 Compl;<0 only Re
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");
--------------------------------------------------------------------------------
-- Berechnung ------------------------------------------------------------------
--------------------------------------------------------------------------------
-- PM-/Reluktanzmotor-Simulation (Leerlauf und Last)
m.move_action = 0.000 -- Move Action: rotate=0, linear=1
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 = 40.000 -- Nominal stator coil current(Peak) [A]
m.angl_i_up = 20.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.optim_i_up = 0.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 = 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 -- Effektive Magnetlaenge [%]
m.fc_mult_move_type = 0. -- Type of move path in air gap
m.pocfilename = 'sin.poc' -- POC file
run_models("pm_sym_fast");
--------------------------------------------------------------------------------
-- Auswertung ------------------------------------------------------------------
--------------------------------------------------------------------------------
x = 36.96
y = 3.1
elkey = get_elem_key(x,y)
draw_elem(elkey,red,0)
-- Rückgabe der Induktion des letzten Berechnungsschrittes
B1,B2 = get_elem_data("induc",elkey)
print(B1, B2)
-- Rückgabe der Anzahl berechneter Positionen/Zeitpunkte
N = get_sim_data("num_move_steps")
-- Rückgabe der Induktion zum Berechnungsschritt "mstep" des Lastfalls "lstep"
verbosity = 1
data=io.open("elem_data_1.txt","w+")
for i=1,N do
B1,B2,phi = get_elem_data("induc(x)",elkey,i,3)
-- B1,B2,phi = get_elem_data("induc(x)",x,y,i,3)
data:write(string.format("%d %g %g %g\n",i,phi,B1,B2))
end
io.close(data)
-- Rückgabe des Induktionsverlaufes über Position oder Zeit für Leerlauf
--B,stat = get_elem_data("induc()",elkey,3)
B,stat = get_elem_data("induc()",x,y,3)
print(stat)
M = table.getn(B)
N = table.getn(B[1])
print(M, N)
data=io.open("elem_data_2.txt","w+")
for i=1,N do
data:write(string.format("%d %g %g %g\n",i,B[3][i],B[1][i],B[2][i]))
end
io.close(data)
save_model('close')