Here is the actual model which doesn't run, without any useful error message:
CODE
model BrushlessAndInverter "Motore lineare brushless azionato da un inverter"
constant Integer m=3 "numero di fasi";
parameter Modelica.SIunits.Voltage VNominal=100
"voltaggio nominale RMS per fase";
parameter Modelica.SIunits.Frequency fNominal=50
"frequenza nominale di alimentazione";
parameter Modelica.SIunits.Frequency f=50 "frequenza effettiva";
parameter Modelica.SIunits.Time tRamp=1 "rampa di frequenza";
parameter Modelica.SIunits.Mass M_Load=1 "massa del carico";
SynchronousInductionTranslationalMachine linearMotor;
Modelica.Electrical.Machines.Sensors.CurrentRMSsensor currentRMSSensor;
Modelica.Blocks.Sources.Ramp ramp(height=f, duration=tRamp);
Modelica.Electrical.Machines.Examples.Utilities.VfController Vfcontroller1(
final m=m,
VNominal=VNominal,
fNominal=fNominal,
BasePhase=+Modelica.Constants.pi/2);
Modelica.Electrical.MultiPhase.Sources.SignalVoltage SignalVoltage1(final m=m);
Modelica.Electrical.MultiPhase.Basic.Star Star1(final m=m);
Modelica.Electrical.Analog.Basic.Ground Ground1;
Modelica.Mechanics.Translational.SlidingMass LoadMass(m=M_Load);
Modelica.Electrical.Machines.Examples.Utilities.TerminalBox TerminalBox1;
equation
connect(SignalVoltage1.plug_n, Star1.plug_p);
connect(Star1.pin_n, Ground1.p);
connect(ramp.y, VfController1.u);
connect(VfController.y, SignalVoltage1.v);
connect(SignalVoltage1.plug_p, currentRMSSensor.plug_p);
connect(linearMotor.flange_a, LoadMass.flange_a);
connect(TerminalBox1.negativeMachinePlug, linearMotor.plug_sn);
connect(TerminalBox1.positiveMachinePlug, linearMotor.plug_sp);
connect(TerminalBox1.plugToGrid, CurrentRMSSensor.plug_n);
annotation (uses(Modelica(version="2.2.1")));
end BrushlessAndInverter;
model SynchronousInductionTranslationalMachine
extends PartialBasicInductionTranslationalMachine;
parameter Modelica.SIunits.Frequency fNominal=50
"Frequenza nominale di eccitazione";
parameter Modelica.SIunits.Voltage V0=112.3
"Voltaggio nominale RMS no-load, per fase";
parameter Modelica.SIunits.Resistance Rs=0.03
"Resistenza di statore, per fase";
parameter Modelica.SIunits.Inductance Lssigma=0.1/(2*pi*fNominal)
"Stray inductance di statore, per fase";
parameter Modelica.SIunits.Inductance Lmd=0.3/(2*pi*fNominal)
"Induttanza in direzione d";
parameter Modelica.SIunits.Inductance Lmq=0.3/(2*pi*fNominal)
"Induttanza in direzione q";
output Modelica.SIunits.Current i_0_s(stateSelect=StateSelect.prefer)=spacePhasorS.zero.i
"Corrente al terminale zero dello statore";
output Modelica.SIunits.Current idq_ss[2] = airGapR.i_ss
"Corrente di statore, riferimento fisso sullo statore";
output Modelica.SIunits.Current idq_sr[2](each stateSelect=StateSelect.prefer)=airGapR.i_sr
"Corrente di statore, riferimento fisso sul rotore";
protected
parameter Modelica.SIunits.Current Ie=sqrt(2)*V0/(Lmd*2*pi*fNominal)
"Corrente di eccitazione equivalente";
public
Modelica.Electrical.MultiPhase.Basic.Resistor rs(final m=m, final R=fill(Rs, m));
Modelica.Electrical.MultiPhase.Basic.Inductor lssigma(final m=m, final L=fill(Lssigma, m));
MySpacePhasor spacePhasorS;
TranslationalAirGapR airGapR(
final p=p,
final Lmd=Lmd,
final Lmq=Lmq);
Modelica.Electrical.Machines.BasicMachines.Components.PermanentMagnet
permanentMagnet( Ie=Ie);
equation
connect(rs.plug_n, lssigma.plug_p);
connect(lssigma.plug_n.pin[1], spacePhasorS.plug_p.pin[1]);
connect(lssigma.plug_n.pin[2], spacePhasorS.plug_p.pin[2]);
connect(lssigma.plug_n.pin[3], spacePhasorS.plug_p.pin[3]);
connect(rs.plug_p, plug_sp);
connect(spacePhasorS.plug_n.pin[1], plug_sn.pin[1]);
connect(spacePhasorS.plug_n.pin[2], plug_sn.pin[2]);
connect(spacePhasorS.plug_n.pin[3], plug_sn.pin[3]);
connect(spacePhasorS.ground, spacePhasorS.zero);
connect(spacePhasorS.spacePhasor, TranslationalAirGapR.spacePhasor_s);
connect(TranslationalAirGapR.flange_a, SlidingMass1.flange_a);
connect(TranslationalAirGapR.support, internalSupport);
connect(TranslationalAirGapR.spacePhasor_r, permanentMagnet.spacePhasor_r);
annotation (uses(Modelica(version="2.2.1")));
end SynchronousInductionTranslationalMachine;
partial model PartialBasicInductionTranslationalMachine
"Partial model per macchina elettrica lineare a induzione"
extends PartialBasicTranslationalMachine(M_carriage=1);
constant Real pi=Modelica.Constants.pi;
constant Integer m=3 "Numero di fasi";
parameter Integer p(min=1)=2 "numero di coppie polari";
output Modelica.SIunits.Voltage vs[3]={plug_sp.pin[1].v - plug_sn.pin[1].v, plug_sp.pin[2].v - plug_sn.pin[2].v, plug_sp.pin[3].v - plug_sn.pin[3].v };
output Modelica.SIunits.Voltage is[m]={plug_sp.pin[1].i, plug_sp.pin[2].i, plug_sp.pin[3].i };
Modelica.Electrical.MultiPhase.Interfaces.PositivePlug plug_sp(final m=m);
Modelica.Electrical.MultiPhase.Interfaces.NegativePlug plug_sn(final m=m);
annotation (uses(Modelica(version="2.2.1")));
end PartialBasicInductionTranslationalMachine;
partial model PartialBasicTranslationalMachine
"Partial model per macchina elettrica lineare"
parameter Modelica.SIunits.Mass M_carriage "Massa del pattino traslante";
output Modelica.SIunits.Position s = SlidingMass1.s "Posizione del pattino";
output Modelica.SIunits.Velocity v = SlidingMass1.v "Velocità del pattino";
output Modelica.SIunits.Force F_electrical = SlidingMass1.flange_a.f
"Forza elettromagnetica applicata al pattino";
output Modelica.SIunits.Force F_flange = -flange_a.f
"Forza ottenuta alla flangia del carrello";
Modelica.Mechanics.Translational.Interfaces.Flange_a flange_a
"Flangia del carrello";
Modelica.Mechanics.Translational.SlidingMass SlidingMass1(final m=M_carriage);
Modelica.Mechanics.Translational.Fixed FixedGuide(final s0=0);
protected
Modelica.Mechanics.Translational.Interfaces.Flange_b internalSupport;
equation
connect(SlidingMass1.flange_b, flange_a);
connect(internalSupport, FixedGuide.flange_b);
annotation (uses(Modelica(version="2.2.1")));
end PartialBasicTranslationalMachine;
model TranslationalAirGapR
"Modello dell'airgap per motori lineari, sistema di coordinate fissato al rotore."
constant Integer m=3 "numero di fasi";
parameter Modelica.SIunits.Length Radius = 0.1
"Raggio del rotore avvolto corrispondente";
parameter Integer p(min=1) "numero di coppie polari";
parameter Modelica.SIunits.Inductance Lmd "induttanza asse d";
parameter Modelica.SIunits.Inductance Lmq "induttanza asse q";
output Modelica.SIunits.Force F_electrical;
Modelica.SIunits.Angle gamma "angolo di rotazione del rotore";
Modelica.SIunits.Current i_ss[2]
"corrente di statore rispetto al sistema di riferimento dello statore";
Modelica.SIunits.Current i_sr[2]
"corrente di statore rispetto al sistema di riferimento del rotore";
Modelica.SIunits.Current i_rs[2]
"corrente di rotore rispetto al sistema di riferimento dello statore";
Modelica.SIunits.Current i_rr[2]
"corrente di rotore rispetto al sistema di riferimento del rotore";
Modelica.SIunits.Current i_mr[2]
"corrente di magnetizzazione rispetto al sistema di riferimento dello statore";
Modelica.SIunits.MagneticFlux psi_ms[2]
"flusso magnetico rispetto al sistema di riferimento dello statore";
Modelica.SIunits.MagneticFlux psi_mr[2]
"flusso magnetico rispetto al sistema di riferimento del rotore";
Real RotationMatrix[2,2] "matrix of rotation from rotor to stator";
protected
parameter Modelica.SIunits.Inductance L[2,2]={{Lmd , 0.0} , {0.0 , Lmd}}
"matrice di induttanza";
public
Modelica.Mechanics.Translational.Interfaces.Flange_a flange_a;
Modelica.Mechanics.Translational.Interfaces.Flange_a support
"supporto sul quale agisce la forza motrice";
Modelica.Electrical.Machines.Interfaces.SpacePhasor spacePhasor_s;
Modelica.Electrical.Machines.Interfaces.SpacePhasor spacePhasor_r;
equation
//Angolo meccanico corrispondente alla traslazione relativa di pattino e guida.
gamma = p*(flange_a.s - support.s)/Radius;
RotationMatrix = {{+cos(gamma), -sin(gamma)},{+sin(gamma),+cos(gamma)}};
i_ss = spacePhasor_s.i_;
i_ss = RotationMatrix*i_sr;
i_rr = spacePhasor_r.i_;
i_rs = RotationMatrix*i_rr;
i_mr = i_sr + i_rr;
psi_mr = L*i_mr;
psi_ms = RotationMatrix*psi_mr;
spacePhasor_s.v_ = der(psi_ms);
spacePhasor_r.v_ = der(psi_mr);
F_electrical = m/2*p*(spacePhasor_s.i_[2]*psi_ms[1] - spacePhasor_s.i_[1]*psi_ms[2]);
flange_a.f = -F_electrical;
support.f = F_electrical;
annotation (uses(Modelica(version="2.2.1")));
end TranslationalAirGapR;
model MySpacePhasor
"Physical transformation: three phase <-> space phasors"
constant Integer m=3 "number of phases";
constant Real pi=Modelica.Constants.pi;
Modelica.SIunits.Voltage v[m] "instantaneous phase voltages";
Modelica.SIunits.Current i[m] "instantaneous phase currents";
protected
parameter Real TransformationMatrix[ 2, m]=2/m*
{{cos(+(k - 1)/m*2*pi) for k in 1:m}, {+sin(+(k - 1)/m*2*pi) for k in 1:m}};
parameter Real InverseTransformation[m, 2]=
{{cos(-(k - 1)/m*2*pi), -sin(-(k - 1)/m*2*pi)} for k in 1:m};
public
Modelica.Electrical.MultiPhase.Interfaces.PositivePlug plug_p(final m=m);
Modelica.Electrical.MultiPhase.Interfaces.NegativePlug plug_n(final m=m);
Modelica.Electrical.Analog.Interfaces.PositivePin zero;
Modelica.Electrical.Analog.Interfaces.NegativePin ground;
Modelica.Electrical.Analog.Basic.Ground gnd;
Modelica.Electrical.Machines.Interfaces.SpacePhasor spacePhasor;
equation
v = {plug_p.pin[1].v - plug_n.pin[1].v, plug_p.pin[2].v - plug_n.pin[2].v, plug_p.pin[3].v - plug_n.pin[3].v};
i = {+plug_p.pin[1].i, +plug_p.pin[2].i, +plug_p.pin[3].i};
i = {-plug_n.pin[1].i, -plug_n.pin[2].i, -plug_n.pin[3].i};
zero.v = 1/m*sum(v);
spacePhasor.v_ = TransformationMatrix *v;
-zero.i = 1/m*sum(i);
-spacePhasor.i_ = TransformationMatrix *i;
connect(gnd.p, ground);
end MySpacePhasor;
Thank you again for your precious help!