// 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;