Sonntag, 6. Januar 2019

Simulation eines Elektromagnetes mit OpenModelica


System:

An einen einfachen Elektromagnet soll der Weg, die Kraft und die Geschwindigkeit gemessen werden.


Modell:


Generiertes Programm (vereinfacht):

model Elektromagnet
Modelica.Electrical.Analog.Basic.TranslationalEMF emf;
Modelica.Electrical.Analog.Basic.Ground ground1 ;
Modelica.Electrical.Analog.Basic.Resistor resistor1(R = 1)  ;
Modelica.Electrical.Analog.Basic.Inductor inductor1(L = 0.01)  ;
Modelica.Electrical.Analog.Sources.SignalVoltage signalVoltage1 ;
Modelica.Mechanics.Translational.Components.Mass mass1(m = 1)  ;
Modelica.Mechanics.Translational.Components.Fixed fixed1 ;
Modelica.Mechanics.Translational.Sensors.MultiSensor multiSensor1 ;
Modelica.Blocks.Continuous.FirstOrder firstOrder1(T = 0.01, k = 1)  ;
Modelica.Blocks.Sources.Pulse pulse1(amplitude = 2, offset = -1, period = 5, width = 50);
Modelica.Mechanics.Translational.Components.SpringDamper springDamper1(c=1000,d=100);
Modelica.Blocks.Continuous.Integrator Strecke ;
equation
  connect(multiSensor1.v, Strecke.u) ;
  connect(emf.n, ground1.p) ;
  connect(ground1.p, signalVoltage1.n) ;
  connect(pulse1.y, firstOrder1.u) ;
  connect(firstOrder1.y, signalVoltage1.v) ;
  connect(springDamper1.flange_b, fixed1.flange) ;
  connect(multiSensor1.flange_b, springDamper1.flange_a) ;
  connect(mass1.flange_b, multiSensor1.flange_a) ;
  connect(emf.flange, mass1.flange_a) ;
  connect(signalVoltage1.p, resistor1.p) ;
  connect(resistor1.n, inductor1.p) ;
  connect(inductor1.n, emf.p) ;
  annotation();
end Elektromagnet;


Ergebnisse: