This example demonstrates how to design pole placement controller to balance an inverted pendulum. For controller design a linearized model of a (simple) physical system model is used. The controller is applied to the physical model in Moldelica_Controller library.
It is also shown how to linearize a modelica model. The linear model is used as a base for control design
function designInversePendulumController import Modelica.Utilities.Streams; import MatricesMSL = Modelica.Math.Matrices; import Modelica.ComplexMath.j; import Modelica_LinearSystems2.ComplexMathAdds; import Modelica_LinearSystems2; input String modelName = "Modelica_Controller.Examples.Components.InversePendulum_small" "Name of the model to linearize"; input Complex pa[4] = {-5 + 0*j, -5 + 0*j, -5.0 - 0.25*j, -5.0 + 0.25*j} "Assigned poles"; input String fileName = DataDir + "inversePendulumController_small.mat" "File name for results"; output Real K_pa[:, :] "feedback matrix pole assignment controller"; output Real M_pa[:, :] "pre filter LQ controller"; end designInversePendulumController;