Migration to OpenModelica 1.25 and FMUs Generation
This commit is contained in:
@@ -0,0 +1,79 @@
|
||||
within AIDAModelica;
|
||||
// CP: 65001
|
||||
// SimulationX Version: 3.8.2.45319 x64
|
||||
model ComputeMotorRate "[SF2.5] Compute thrust"
|
||||
import Modelica.Math;
|
||||
Modelica.Blocks.Interfaces.RealInput TotalThrust(
|
||||
quantity="Mechanics.Translation.Force",
|
||||
displayUnit="N") "Desired total thrust " annotation(Placement(
|
||||
transformation(extent={{-20,-20},{20,20}}),
|
||||
iconTransformation(extent={{-120,55},{-80,95}})));
|
||||
Modelica.Blocks.Interfaces.RealInput MomentumConsign[3](
|
||||
quantity="Mechanics.Rotation.Torque",
|
||||
displayUnit="Nm") "Desired momentums consign" annotation(Placement(
|
||||
transformation(extent={{-20,-20},{20,20}}),
|
||||
iconTransformation(extent={{-120,-95},{-80,-55}})));
|
||||
Modelica.Blocks.Interfaces.RealOutput Motor1Rate(
|
||||
quantity="Mechanics.Rotation.RotVelocity",
|
||||
displayUnit="rpm") "Desired angular speed of 1 motor" annotation(Placement(
|
||||
transformation(extent={{-10,-10},{10,10}}),
|
||||
iconTransformation(extent={{90,65},{110,85}})));
|
||||
Modelica.Blocks.Interfaces.RealOutput Motor2Rate(
|
||||
quantity="Mechanics.Rotation.RotVelocity",
|
||||
displayUnit="rpm") "Desired angular speed of 2 motor" annotation(Placement(
|
||||
transformation(extent={{-10,-10},{10,10}}),
|
||||
iconTransformation(extent={{90,15},{110,35}})));
|
||||
Modelica.Blocks.Interfaces.RealOutput Motor3Rate(
|
||||
quantity="Mechanics.Rotation.RotVelocity",
|
||||
displayUnit="rpm") "Desired angular speed of 3 motor " annotation(Placement(
|
||||
transformation(extent={{-10,-10},{10,10}}),
|
||||
iconTransformation(extent={{90,-35},{110,-15}})));
|
||||
Modelica.Blocks.Interfaces.RealOutput Motor4Rate(
|
||||
quantity="Mechanics.Rotation.RotVelocity",
|
||||
displayUnit="rpm") "Desired angular speed of 4 motor" annotation(Placement(
|
||||
transformation(extent={{-10,-10},{10,10}}),
|
||||
iconTransformation(extent={{90,-85},{110,-65}})));
|
||||
Real M4[4,4] "Control effectiveness model matrix M";
|
||||
parameter Real d(
|
||||
quantity="Basics.Length",
|
||||
displayUnit="m")=0.33 "Parameter d";
|
||||
parameter Real cT(
|
||||
quantity="Mechanics.Translation.Force",
|
||||
displayUnit="N")=3.438e-7 "Parameter cT";
|
||||
parameter Real coef_cT(
|
||||
quantity="Mechanics.Rotation.RotVelocity",
|
||||
displayUnit="rpm")=0.10471975511965977 "coefficient cT";
|
||||
parameter Real cM(
|
||||
quantity="Mechanics.Rotation.Torque",
|
||||
displayUnit="Nm")=5.7e-9 "Parameter cM";
|
||||
parameter Real coef_cM(
|
||||
quantity="Mechanics.Rotation.RotVelocity",
|
||||
displayUnit="rpm")=0.10471975511965977 "coefficient cM";
|
||||
Real AngVelVector[4](
|
||||
quantity="Mechanics.Rotation.RotVelocity",
|
||||
displayUnit="rpm") "Vector of desired angular velocities";
|
||||
Real TMomVector[4] "Totat thust and moments vector";
|
||||
Real ParamCosSin "Parameter Cos Sin 45";
|
||||
equation
|
||||
// enter your equations here
|
||||
ParamCosSin = sqrt(2) / 2;
|
||||
TMomVector = {TotalThrust, MomentumConsign[1], MomentumConsign[2], MomentumConsign[3]};
|
||||
M4 = {{cT / coef_cT ^ 2, cT / coef_cT ^ 2, cT / coef_cT ^ 2, cT / coef_cT ^ 2}, {d * (cT / coef_cT ^ 2) * ParamCosSin, -d * (cT / coef_cT ^ 2) * ParamCosSin, -d * (cT / coef_cT ^ 2) * ParamCosSin, d * (cT / coef_cT ^ 2) * ParamCosSin}, {d * (cT / coef_cT ^ 2) * ParamCosSin, d * (cT / coef_cT ^ 2) * ParamCosSin, -d * (cT / coef_cT ^ 2) * ParamCosSin, -d * (cT / coef_cT ^ 2) * ParamCosSin}, {cM / coef_cM ^ 2, -cM / coef_cM ^ 2, cM / coef_cM ^ 2, -cM / coef_cM ^ 2}};
|
||||
M4*AngVelVector = TMomVector;
|
||||
Motor1Rate = sqrt(abs(AngVelVector[1]));
|
||||
Motor2Rate = sqrt(abs(AngVelVector[2]));
|
||||
Motor3Rate = sqrt(abs(AngVelVector[3]));
|
||||
Motor4Rate = sqrt(abs(AngVelVector[4]));
|
||||
annotation(Icon(
|
||||
coordinateSystem(extent={{-100,-125},{100,125}}),
|
||||
graphics={
|
||||
Rectangle(
|
||||
fillColor={255,255,255},
|
||||
fillPattern=FillPattern.Solid,
|
||||
extent={{-100,126.7},{103.3,-126.7}}),
|
||||
Text(
|
||||
textString="%name",
|
||||
fillPattern=FillPattern.None,
|
||||
extent={{-39,15},{39,-15}},
|
||||
origin={-9,5})}));
|
||||
end ComputeMotorRate;
|
||||
Reference in New Issue
Block a user