Files
AIDASimulation/SimulationModels/SimulationX/AIDAModelica/ControlPosition.mo21

48 lines
1.9 KiB
Plaintext
Raw Normal View History

// CP: 65001
// SimulationX Version: 3.8.2.45319 x64
within AIDAModelica;
model ControlPosition "ControlPosition_Modelica.ism"
Modelica.Blocks.Interfaces.RealOutput Position_command[3] "'output Real' as connector" annotation(Placement(
transformation(extent={{40,50},{60,70}}),
iconTransformation(extent={{90,-10},{110,10}})));
Modelica.Blocks.Interfaces.RealInput Drone_position_consign[3] "'input Real' as connector" annotation(Placement(
transformation(extent={{-140,40},{-100,80}}),
iconTransformation(extent={{-120,-70},{-80,-30}})));
Modelica.Blocks.Interfaces.RealInput Drone_position[3] "'input Real' as connector" annotation(Placement(
transformation(extent={{-85,-15},{-45,25}}),
iconTransformation(extent={{-120,30},{-80,70}})));
Modelica.Blocks.Continuous.LimPID PID[3](
controllerType=Modelica.Blocks.Types.SimpleController.P,
k={10,10,10},
Ti={0.5,0.5,0.5},
Td={0.1,0.1,0.1},
yMax={100,100,100},
initType=Modelica.Blocks.Types.InitPID.SteadyState,
limitsAtInit={false, false, false},
y_start={1,58,0}) "P, PI, PD, and PID controller with limited output, anti-windup compensation and setpoint weighting" annotation(Placement(transformation(extent={{-30,50},{-10,70}})));
equation
connect(PID.y,Position_command[:]) annotation(Line(
points={{-9,60},{-4,60},{45,60},{50,60}},
color={0,0,127},
thickness=0.0625));
connect(Drone_position_consign[:],PID.u_s) annotation(Line(
points={{-120,60},{-115,60},{-37,60},{-32,60}},
color={0,0,127},
thickness=0.0625));
connect(Drone_position[:],PID.u_m) annotation(Line(
points={{-65,5},{-60,5},{-20,5},{-20,43},{-20,48}},
color={0,0,127},
thickness=0.0625));
annotation(
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 ControlPosition;