-
大小: 7KB文件类型: .rar金币: 2下载: 0 次发布日期: 2021-05-14
- 语言: Matlab
- 标签: S-Function PID控制器
资源简介
使用S-Function函数实现离散PID控制器,并建立simulink仿真模型。
![](http://www.nz998.com/pic/65532.jpg)
代码片段和文件信息
function [sysx0strts] = dPID(txuflagkpkikd)
%SFUNTMPL General M-file S-function template
switch flag
%%%%%%%%%%%%%%%%%%
% Initialization %
%%%%%%%%%%%%%%%%%%
case 0
[sysx0strts]=mdlInitializeSizes;
%%%%%%%%%%%%%%%
% Derivatives %
%%%%%%%%%%%%%%%
case 1
sys=mdlDerivatives(txu);
%%%%%%%%%%
% Update %
%%%%%%%%%%
case 2
sys=mdlUpdate(txu);
%%%%%%%%%%%
% Outputs %
%%%%%%%%%%%
case 3
sys=mdlOutputs(txukpkikd);
%%%%%%%%%%%%%%%%%%%%%%%
% GetTimeOfNextVarHit %
%%%%%%%%%%%%%%%%%%%%%%%
case 4
sys=mdlGetTimeOfNextVarHit(txu);
%%%%%%%%%%%%%
% Terminate %
%%%%%%%%%%%%%
case 9
sys=mdlTerminate(txu);
%%%%%%%%%%%%%%%%%%%%
% Unexpected flags %
%%%%%%%%%%%%%%%%%%%%
otherwise
DAStudio.error(‘Simulink:blocks:unhandledFlag‘ num2str(flag));
end
% end sfuntmpl
%
%=============================================================================
% mdlInitializeSizes
% Return the sizes initial conditions and sample times for the S-function.
%=============================================================================
%
function [sysx0strts]=mdlInitializeSizes
sizes = simsizes;
sizes.NumContStates = 0;
sizes.NumDiscStates = 4;
sizes.NumOutputs = 1;
sizes.NumInputs = 1;
sizes.DirFeedthrough = 0;
sizes.NumSampleTimes = 1; % at least one sample time is needed
sys = simsizes(sizes);
%
% initialize the initial conditions
%
x0 = [0;0;0;0];
str = [];
ts = [-2 0];
% end mdlInitializeSizes
function sys=mdlDerivatives(txu)
sys = [];
% end mdlDerivatives
%=============================================================================
% mdlUpdate
% Handle discrete state updates sample time hits and major time step
% requirements.
%=============================================================================
%
function sys=mdlUpdate(txu)
x(3)=x(2);
x(2)=x(1);
x(1)=u;
x(4)=u+x(4);
sys =x;
% end mdlUpdate
%=============================================================================
% mdlOutputs
% Return the block outputs.
%=============================================================================
%
function sys=mdlOutputs(txukpkikd)
sys=kp*x(1)+ki*0.01*x(4)+kd*(x(2)-x(3))/0.01;
% end mdlOutputs
%
%=============================================================================
% mdlGetTimeOfNextVarHit
% Return the time of the next hit for this block. Note that the result is
% absolute time. Note that this function is only used when you specify a
% variable discrete-time sample time [-2 0] in the sample time array in
% mdlInitializeSizes.
%=============================================================================
%
function sys=mdlGetTimeOfNextVarHit(txu)
sampleTime = 0.01;% Example set the next hit to be one second later.
sys = t + sampleTime;
% end mdlGetTimeOfNextVarHit
%=============================================================================
% mdlTerminate
% Perform any end of simulation tasks.
%============
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 20563 2012-11-05 16:52 unti
文件 3132 2012-11-05 16:49 dPID.m
----------- --------- ---------- ----- ----
23695 2
相关资源
- MPC路径跟踪
- MATLAB的S-Function编写指导
-
Matlab+Simuli
nk-cmi、miller、双相码 -
MATLAB/simuli
nk短路电流仿真 -
PLLsimuli
nk仿真模型 - 冲击电压发生器MATLAB仿真,主要是单
- 高压直流输电系统的滤波器设计及仿
- 24脉波整流仿真
-
simuli
nk的使用手册全 - 基于卡尔曼滤波的PID控制
-
Simuli
nk快速入门教程 -
《Matlab Simuli
nk与控制系统仿真》. -
混合动力simuli
nk模型 -
基于simuli
nk的带有MPPT功的光伏电池 -
基于Simuli
nk的DSB调制解调系统仿真 -
基于Simuli
nk的MFSK系统的仿真 -
基于Simuli
nk的模拟通信仿真 -
基于Simuli
nk的匹配滤波器设计 -
APF资料-APF、SVG simuli
nk源程使用说明 -
simuli
nk之基于模型开发的嵌入式设计 -
Matlab分享系列 - 3 - Matlab_Simuli
nk代码 -
matlab simuli
nk simevent 建模入门 -
用MATLAB-Simuli
nk做锂电池建模 .pdf -
matlab/simuli
nk mu 分析与综合工具箱使 -
基于simuli
nk的组合导航的仿真 -
基于Simuli
nk模型的嵌入式代码生成 - 基于systolic的上三角矩阵求逆电路的实
-
倒立摆的模糊控制基于simuli
nk仿真, -
simuli
nk仿真及代码生成的模型程序文 -
200个SIMUli
nk电力电子仿真模型打包
评论
共有 条评论