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')