• 大小: 1.2MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-10-10
  • 语言: Matlab
  • 标签: S函数  

资源简介

可以运行,二级倒立摆的建模、线性化S函数的PID控制以及非线性化S函数的PID控制, (1) 根据牛顿运动定律或者拉格朗日方程,建立直线型二级倒立摆的非线性运动模型,给出系统运动的状态方程。 (2) 对非线性运动模型进行线性化,针对线性化模型采用极点配置或者PID控制的方法,设计直线型二级倒立摆的控制方案,给出控制律设计方法; (3) 分别针对有扰动和无扰动两种情况下,采用Matlab软件进行仿真,编写倒立摆非线性运动模型的S函数,结合设计的控制方案,给出Matlab仿真的框图,并给出仿真结果。

资源截图

代码片段和文件信息

function [sysx0strts] = Inverted_Pendulum_model_linear(txuflag)

A=[0 0  0 1 0  0; 0 0 0 0  1 0; 0 0 0 0 0 1; 0 0 0 0 0 0; 0  72.0642  -21.1972  0 0 0; 0  -38.5321 37.8186 0 0 0;];

B=[ 0; 0; 0; 1; 5.7012; -0.0728;];

C=[ 1 0 0 0 0 0; 0 1 0 0 0 0; 0 0 1 0 0 0;];

D=[0;0;0];

switch flag

  case 0
    [sysx0strts]=mdlInitializeSizes(ABCD);

  case 1
    sys=mdlDerivatives(txuABCD);

  case 3
    sys=mdlOutputs(txuABCD);

  case { 2 4 9 }
    sys = [];

  otherwise
    DAStudio.error(‘Simulink:blocks:unhandledFlag‘ num2str(flag));

end
% end csfunc

%
%=============================================================================
% mdlInitializeSizes
% Return the sizes initial conditions and sample times for the S-function.
%=============================================================================
%
function [sysx0strts]=mdlInitializeSizes(ABCD)

sizes = simsizes;
sizes.NumContStates  = 6;
sizes.NumDiscStates  = 0;
sizes.NumOutputs     = 3;
sizes.NumInputs      =  1;
sizes.DirFeedthrough = 1;
sizes.NumSampleTimes = 1;

sys = simsizes(sizes);
x0  = [0;0;0;0;0;0];
str = [];
ts  = [0 0];

% end mdlInitializeSizes
%
%=============================================================================
% mdlDerivatives
% Return the derivatives for the continuous states.
%=============================================================================
%
function sys=mdlDerivatives(txuABCD)

sys = A*x + B*u;

% end mdlDerivatives
%
%=============================================================================
% mdlOutputs
% Return the block outputs.
%=============================================================================
%
function sys=mdlOutputs(txuABCD)

sys = C*x + D*u;

% end mdlOutputs

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      90971  2019-06-19 21:25  仿真\Inverted_Pendulum.mdl

     文件       1830  2019-06-19 19:33  仿真\Inverted_Pendulum_model_linear.m

     文件       2665  2019-06-19 21:14  仿真\Inverted_Pendulum_model_nonlinear.m

     文件    1444614  2019-06-19 21:24  仿真\倒立摆分析.pdf

     目录          0  2019-06-20 10:25  仿真

----------- ---------  ---------- -----  ----

              1540080                    5


评论

共有 条评论