AIDA is a study case for model based system engineering, made by MOISE project. This project contains the simulation model of AIDA (made with SimulationX in Modelica)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

54 lines
5.0 KiB

within AIDAModelica;
model ControlEffectivenessModel "Control effectiveness model"
// CP: 65001
// SimulationX Version: 3.8.2.45319 x64
Modelica.Blocks.Interfaces.RealInput Motor1AngularVelocity(quantity = "Mechanics.Rotation.RotVelocity", displayUnit = "rpm") "Angular velocity of 1 motor input" annotation(
Placement(transformation(extent = {{-135, 40}, {-95, 80}}), iconTransformation(extent = {{-120, 55}, {-80, 95}})));
Modelica.Blocks.Interfaces.RealInput Motor2AngularVelocity(quantity = "Mechanics.Rotation.RotVelocity", displayUnit = "rpm") "Angular velocity of 2 motor input" annotation(
Placement(transformation(extent = {{-135, 10}, {-95, 50}}), iconTransformation(extent = {{-120, 5}, {-80, 45}})));
Modelica.Blocks.Interfaces.RealInput Motor3AngularVelocity(quantity = "Mechanics.Rotation.RotVelocity", displayUnit = "rpm") "Angular velocity of 3 motor input" annotation(
Placement(transformation(extent = {{-135, -20}, {-95, 20}}), iconTransformation(extent = {{-120, -45}, {-80, -5}})));
Modelica.Blocks.Interfaces.RealInput Motor4AngularVelocity(quantity = "Mechanics.Rotation.RotVelocity", displayUnit = "rpm") "Angular velocity of 4 motor input" annotation(
Placement(transformation(extent = {{-135, -50}, {-95, -10}}), iconTransformation(extent = {{-120, -95}, {-80, -55}})));
Modelica.Blocks.Interfaces.RealOutput TotalThrust(quantity = "Mechanics.Translation.Force", displayUnit = "N") "Total thrust output" annotation(
Placement(transformation(extent = {{55, -35}, {75, -15}}), iconTransformation(extent = {{90, 65}, {110, 85}})));
Modelica.Blocks.Interfaces.RealOutput Moments[3](quantity = "Mechanics.Rotation.Torque", displayUnit = "Nm") "Moments output" annotation(
Placement(transformation(extent = {{55, 45}, {75, 65}}), iconTransformation(extent = {{90, -85}, {110, -65}})));
ComputeMoments computeMoments1 annotation(
Placement(transformation(extent = {{-20, 45}, {-5, 70}})));
ComputeTotalThrust computeTotalThrust1 annotation(
Placement(transformation(extent = {{-20, -40}, {-5, -15}})));
equation
connect(computeMoments1.Motor1AngularVelocity, Motor1AngularVelocity) annotation(
Line(points = {{-20, 65}, {-25, 65}, {-110, 65}, {-110, 60}, {-115, 60}}, color = {0, 0, 127}, thickness = 0.0625));
connect(computeMoments1.Motor2AngularVelocity, Motor2AngularVelocity) annotation(
Line(points = {{-20, 60}, {-25, 60}, {-110, 60}, {-110, 30}, {-115, 30}}, color = {0, 0, 127}, thickness = 0.0625));
connect(computeMoments1.Motor3AngularVelocity, Motor3AngularVelocity) annotation(
Line(points = {{-20, 55}, {-25, 55}, {-110, 55}, {-110, 0}, {-115, 0}}, color = {0, 0, 127}, thickness = 0.0625));
connect(computeMoments1.Motor4AngularVelocity, Motor4AngularVelocity) annotation(
Line(points = {{-20, 50}, {-25, 50}, {-110, 50}, {-110, -30}, {-115, -30}}, color = {0, 0, 127}, thickness = 0.0625));
connect(computeTotalThrust1.Motor1AngularVelocity, Motor1AngularVelocity) annotation(
Line(points = {{-20, -20}, {-25, -20}, {-110, -20}, {-110, 60}, {-115, 60}}, color = {0, 0, 127}, thickness = 0.0625));
connect(computeTotalThrust1.Motor2AngularVelocity, Motor2AngularVelocity) annotation(
Line(points = {{-20, -25}, {-25, -25}, {-110, -25}, {-110, 30}, {-115, 30}}, color = {0, 0, 127}, thickness = 0.0625));
connect(computeTotalThrust1.Motor3AngularVelocity, Motor3AngularVelocity) annotation(
Line(points = {{-20, -30}, {-25, -30}, {-110, -30}, {-110, 0}, {-115, 0}}, color = {0, 0, 127}, thickness = 0.0625));
connect(computeTotalThrust1.Motor4AngularVelocity, Motor4AngularVelocity) annotation(
Line(points = {{-20, -35}, {-25, -35}, {-110, -35}, {-110, -30}, {-115, -30}}, color = {0, 0, 127}, thickness = 0.0625));
connect(computeMoments1.Moments[:], Moments[:]) annotation(
Line(points = {{-5, 55}, {0, 55}, {60, 55}, {65, 55}}, color = {0, 0, 127}, thickness = 0.0625));
connect(computeTotalThrust1.TotalThrust, TotalThrust) annotation(
Line(points = {{-5, -25}, {0, -25}, {60, -25}, {65, -25}}, color = {0, 0, 127}, thickness = 0.0625));
annotation(
Motor1AngularVelocity(flags = 2),
Motor2AngularVelocity(flags = 2),
Motor3AngularVelocity(flags = 2),
Motor4AngularVelocity(flags = 2),
TotalThrust(flags = 2),
Moments(flags = 2),
computeMoments1(Motor1AngularVelocity(flags = 2), Motor2AngularVelocity(flags = 2), Motor3AngularVelocity(flags = 2), Motor4AngularVelocity(flags = 2), Moments(flags = 2)),
computeTotalThrust1(Motor1AngularVelocity(flags = 2), Motor2AngularVelocity(flags = 2), Motor3AngularVelocity(flags = 2), Motor4AngularVelocity(flags = 2), TotalThrust(flags = 2)),
Icon(coordinateSystem(extent = {{-100, -125}, {100, 125}}, initialScale = 0.1), graphics = {Rectangle(fillColor = {255, 255, 255}, fillPattern = FillPattern.Solid, extent = {{-100, 106.7}, {100, -106.7}}), Text(origin = {-7, 3}, extent = {{-15, 11}, {15, -11}}, textString = "%name")}),
experiment(StopTime = 10, StartTime = 0, Interval = 0.02, MaxInterval = "0.001"));
end ControlEffectivenessModel;