|
|
|
|
// CP: 65001
|
|
|
|
|
// SimulationX Version: 3.8.2.45319 x64
|
|
|
|
|
within AIDAModelica;
|
|
|
|
|
model ControlAltitude "[SF2.4] Control altitude"
|
|
|
|
|
Modelica.Blocks.Interfaces.RealOutput TotalThrustManual(
|
|
|
|
|
quantity="Mechanics.Translation.Force",
|
|
|
|
|
displayUnit="N") "Desired total thrust autopilot mode output" annotation(Placement(
|
|
|
|
|
transformation(extent={{20,20},{40,40}}),
|
|
|
|
|
iconTransformation(
|
|
|
|
|
origin={100,0},
|
|
|
|
|
extent={{-10,-10},{10,10}})));
|
|
|
|
|
Modelica.Blocks.Interfaces.RealInput VSpeed(
|
|
|
|
|
quantity="Mechanics.Translation.Velocity",
|
|
|
|
|
displayUnit="m/s") "Real drone speed feedback" annotation(Placement(
|
|
|
|
|
transformation(extent={{-105,-5},{-65,35}}),
|
|
|
|
|
iconTransformation(extent={{-120,30},{-80,70}})));
|
|
|
|
|
Modelica.Blocks.Interfaces.RealInput RCVerticalSpeedCommand(
|
|
|
|
|
quantity="Mechanics.Translation.Velocity",
|
|
|
|
|
displayUnit="m/s") "'input Real' as connector" annotation(Placement(
|
|
|
|
|
transformation(extent={{-105,25},{-65,65}}),
|
|
|
|
|
iconTransformation(
|
|
|
|
|
origin={-100,-50},
|
|
|
|
|
extent={{-20,-20},{20,20}})));
|
|
|
|
|
ComputeTotalThrustCA computeTotalThrustCA1 annotation(Placement(transformation(extent={{-10,20},{10,40}})));
|
|
|
|
|
ComputeAltitudeConsign computeAltitudeConsign1 annotation(Placement(transformation(extent={{-55,20},{-35,40}})));
|
|
|
|
|
equation
|
|
|
|
|
connect(computeAltitudeConsign1.VSpeed,VSpeed) annotation(Line(
|
|
|
|
|
points={{-54,26},{-76,26},{-76,16},{-84,16}},
|
|
|
|
|
color={0,0,127}));
|
|
|
|
|
connect(computeTotalThrustCA1.AccelerationConsign,computeAltitudeConsign1.AccelerationConsign) annotation(Line(
|
|
|
|
|
points={{-10,30},{-15,30},{-30,30},{-35,30}},
|
|
|
|
|
color={0,0,127},
|
|
|
|
|
thickness=0.0625));
|
|
|
|
|
connect(computeAltitudeConsign1.RCVerticalSpeedCommand,RCVerticalSpeedCommand) annotation(Line(
|
|
|
|
|
points={{-55,35},{-60,35},{-80,35},{-80,45},{-85,45}},
|
|
|
|
|
color={0,0,127},
|
|
|
|
|
thickness=0.0625));
|
|
|
|
|
|
|
|
|
|
connect(computeTotalThrustCA1.TotalThrustAP,TotalThrustManual) annotation(Line(
|
|
|
|
|
points={{10,30},{15,30},{25,30},{30,30}},
|
|
|
|
|
color={0,0,127},
|
|
|
|
|
thickness=0.0625));
|
|
|
|
|
annotation(
|
|
|
|
|
Speed(flags=2),
|
|
|
|
|
TotalThrustManual(flags=2),
|
|
|
|
|
RCVerticalSpeedCommand(flags=2),
|
|
|
|
|
computeTotalThrustCA1(
|
|
|
|
|
AccelerationConsign(flags=2),
|
|
|
|
|
TotalThrustAP(flags=2),
|
|
|
|
|
AC(flags=2)),
|
|
|
|
|
computeAltitudeConsign1(
|
|
|
|
|
RCVerticalSpeedCommand(flags=2),
|
|
|
|
|
AccelerationConsign(flags=2),
|
|
|
|
|
PID1(
|
|
|
|
|
u(flags=2),
|
|
|
|
|
y(flags=2),
|
|
|
|
|
P(
|
|
|
|
|
u(flags=2),
|
|
|
|
|
y(flags=2)),
|
|
|
|
|
I(
|
|
|
|
|
u(flags=2),
|
|
|
|
|
y(flags=2)),
|
|
|
|
|
D(
|
|
|
|
|
u(flags=2),
|
|
|
|
|
y(flags=2),
|
|
|
|
|
x(flags=2)),
|
|
|
|
|
Gain(
|
|
|
|
|
u(flags=2),
|
|
|
|
|
y(flags=2)),
|
|
|
|
|
Add(
|
|
|
|
|
u1(flags=2),
|
|
|
|
|
u2(flags=2),
|
|
|
|
|
u3(flags=2),
|
|
|
|
|
y(flags=2))),
|
|
|
|
|
speedErrorModelSAC1(
|
|
|
|
|
SpeedConsign(flags=2),
|
|
|
|
|
Speed(flags=2),
|
|
|
|
|
SpeedError(flags=2),
|
|
|
|
|
vzd(flags=2),
|
|
|
|
|
vz(flags=2),
|
|
|
|
|
ASE(flags=2))),
|
|
|
|
|
Icon(graphics={
|
|
|
|
|
Rectangle(
|
|
|
|
|
fillColor={255,255,255},
|
|
|
|
|
fillPattern=FillPattern.Solid,
|
|
|
|
|
extent={{-100,100},{100,-100}})}),
|
|
|
|
|
experiment(
|
|
|
|
|
StopTime=1,
|
|
|
|
|
StartTime=0,
|
|
|
|
|
Interval=0.002,
|
|
|
|
|
MaxInterval="0.001"));
|
|
|
|
|
end ControlAltitude;
|