• 大小: 15KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-18
  • 语言: 其他
  • 标签: S函数  PID  

资源简介

S函数写的PID控制程序和控制对象,效果过得去,仅供学习交流。

资源截图

代码片段和文件信息

function [sysx0strtssimStateCompliance] = sfunction_object(txuflag)

switch flag
 
  case 0
    [sysx0strtssimStateCompliance]=mdlInitializeSizes;
 
  case 1
    sys=mdlDerivatives(txu);
 
  case 2
    sys=mdlUpdate(txu);

  case 3
    sys=mdlOutputs(txu);

  case 4
    sys=mdlGetTimeOfNextVarHit(txu);

  case 9
    sys=mdlTerminate(txu);

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

end


function [sysx0strtssimStateCompliance]=mdlInitializeSizes


sizes = simsizes;

sizes.NumContStates  = 2;
sizes.NumDiscStates  = 0;
sizes.NumOutputs     = 1;
sizes.NumInputs      = 1;
sizes.DirFeedthrough = 1;
sizes.NumSampleTimes = 1;   % at least one sample time is needed

sys = simsizes(sizes);

x0  = [0 0];

str = [];

ts  = [0 0];                %对应纯连续系统

simStateCompliance = ‘UnknownSimState‘;   


function sys=mdlDerivatives(txu)       %连续系统计算导数

sys(1) = x(2);           %对应于系统的状态空间方程式
sys(2) = -(25+10*rands(1))*x(2)+(133+30*rands(1))*u;            %把计算得出的导数向量赋值给sys变量


function sys=mdlUpdate(txu)            %更新离散系统状态

sys = [];            %本例为连续时间系统,该部分代码无需修改


function sys=mdlOutputs(txu)

sys = x(1);


function sys=mdlGetTimeOfNextVarHit(txu)    %该子程序只在离散采样系统有用

sampleTime = 1;    %  Example set the next hit to be one second later.
sys = t + sampleTime;


function sys=mdlTerminate(txu)

sys = [];



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

     文件      14165  2018-11-16 16:33  Main.slx

     文件       1478  2018-10-23 09:50  sfunction_object.m

     文件       1397  2018-10-23 10:17  sfunction_pid.m

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

                17040                    3


评论

共有 条评论