我是靠谱客的博主 忧伤白开水,最近开发中收集的这篇文章主要介绍Simulink框图和S-函数,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

介绍

创建模型步骤

 

 

模块集

使用模块创建框图:将需要的模块拖拽出来并连接

 

 

子系统及其封装

选中并右击,进行子系统封装

 

 

S-函数

Level-1 M文件型:创建sfuntest.m文件,实现y=-x功能

%​​sfuntest:S-函数的函数名
%t:当前仿真时间
%x:状态向量
%u:输入向量
%flag:用来标示仿真步骤,调用不同的回调函数
%sys:不同flag意义不同。0-系统描述、1-微分结果、2-更新结果、3-输出结果、4-下一个采样点、9-控制
%x0:输出状态值(只有flag为0时返回)
%str:状态字符串(只有flag为0时返回)
%ts:采样时间(只有flag为0时返回)
%(level-1的规定格式,照做就行了,除了函数名不要去改动)
function [sys,x0,str,ts,simStateCompliance] = sfuntest(t,x,u,flag)
switch flag,
  case 0,
    [sys,x0,str,ts,simStateCompliance]=mdlInitializeSizes;
  case 1,
    sys=mdlDerivatives(t,x,u);
  case 2,
    sys=mdlUpdate(t,x,u);
  case 3,
    sys=mdlOutputs(t,x,u);
  case 4,
    sys=mdlGetTimeOfNextVarHit(t,x,u);
  case 9,
    sys=mdlTerminate(t,x,u);
  otherwise
    DAStudio.error('Simulink:blocks:unhandledFlag', num2str(flag));
end

%初始化
function [sys,x0,str,ts,simStateCompliance]=mdlInitializeSizes
sizes = simsizes;
sizes.NumContStates  = 0;       %连续状态个数
sizes.NumDiscStates  = 0;       %离散状态个数
sizes.NumOutputs     = 1;       %输出数目
sizes.NumInputs      = 1;       %输入数目
sizes.DirFeedthrough = 1;       %有无直接反馈(输出=k*输入,表示有直接反馈;输出=k*状态,表示相反)
sizes.NumSampleTimes = 1;       %采样时间个数,至少一个采样时间
sys = simsizes(sizes);
x0  = [];       %初始状态
str = [];       %状态字符串
ts  = [0 0];    %采样时间,[0 0]连续采样时间、[0 1]连续采样时间并以最小步长运算、
                %[period offset]采样时间Tm=m*period+offset、[-2 0]变步长离散采样时间,由flag=4设置、
                %[-1 0]最小步长内改变的函数并采用驱动模块的采样时间、[-1 1]最小步长内不改变的函数并采用驱动模块的采样时间
simStateCompliance = 'UnknownSimState';

%状态导数函数
function sys=mdlDerivatives(t,x,u)
sys = [];

%状态表示函数
function sys=mdlUpdate(t,x,u)
sys = [];

%输出函数
function sys=mdlOutputs(t,x,u)
sys = -1 * u;

%下一步采样时间
function sys=mdlGetTimeOfNextVarHit(t,x,u)
sampleTime = 1;     %采样步长
sys = t + sampleTime;

%采样结束
function sys=mdlTerminate(t,x,u)
sys = [];

 

 

 

 

 

 

 

最后

以上就是忧伤白开水为你收集整理的Simulink框图和S-函数的全部内容,希望文章能够帮你解决Simulink框图和S-函数所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(65)

评论列表共有 0 条评论

立即
投稿
返回
顶部