Simulink壁咚(二)——What and How

目录

一、Simulink 知多少

二、S-Function

三、零阶保持器

四、Model Advisor模型建议器


一、Simulink 知多少

1.1 记录每次运行结果

 1.2 子系统封装

右击子系统,点击Mask,Create Mask 创建并编辑

数字信号处理X——EasySimulink封装和库_simulink函数封装库_注释远方的博客-CSDN博客

 找实例, demo----->输入关键字

1.3 代码生成

 打开设置齿轮

二、S-Function

在命令行中输入demo并搜索s function examples,打开level1中的csfunc获得模板。

function [sys,x0,str,ts] = sfunc(t,x,u,flag,para1)
%CSFUNC An example MATLAB file S-function for defining a continuous system.  
%   Example MATLAB file S-function implementing continuous equations: 
%      x' = Ax + Bu
%      y  = Cx + Du
%   
%   See sfuntmpl.m for a general S-function template.
%
%   See also SFUNTMPL.
  
%   Copyright 1990-2009 The MathWorks, Inc.
% t表示仿真时间,x当前的状态值,u当前系统的输入,flag是阶段标志位


A=[-0.09   -0.01
    1          0];

B=[ 1   -7
    0   -2];

C=[ 0    2
    1   -5];

D=[-3    0
    1    0];

switch flag,

  %%%%%%%%%%%%%%%%%%
  % Initialization %
  %%%%%%%%%%%%%%%%%%
  case 0,
    [sys,x0,str,ts]=mdlInitializeSizes(A,B,C,D);

  %%%%%%%%%%%%%%%
  % Derivatives %
  %%%%%%%%%%%%%%%
  case 1,
    sys=mdlDerivatives(t,x,u,A,B,C,D);

  %%%%%%%%%%%
  % Outputs %
  %%%%%%%%%%%
  case 3,
    sys=mdlOutputs(t,x,u,A,B,C,D,para1);

  %%%%%%%%%%%%%%%%%%%
  % Unhandled flags %
  %%%%%%%%%%%%%%%%%%%
  case { 2, 4, 9 },
    sys = [];

  %%%%%%%%%%%%%%%%%%%%
  % Unexpected flags %
  %%%%%%%%%%%%%%%%%%%%
  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 [sys,x0,str,ts]=mdlInitializeSizes(A,B,C,D)

sizes = simsizes;
sizes.NumContStates  = 2;%连续系统状态的数量,A
sizes.NumDiscStates  = 0;%离散系统
sizes.NumOutputs     = 2;% C D
sizes.NumInputs      = 2;% B
sizes.DirFeedthrough = 1;%直馈0/1,如果输入直接影响输出为1(y=Cx+Du),否则为0(y=Cx)
sizes.NumSampleTimes = 1;%采样时间的个数

sys = simsizes(sizes);
x0  = zeros(2,1);%初始状态的定义
str = [];
ts  = [0 0];%[采样间隔 采样截止时间],连续系统为[0 0],离散系统[0.1 0]

% end mdlInitializeSizes
%
%=============================================================================
% mdlDerivatives
% Return the derivatives for the continuous states.
%=============================================================================
%
function sys=mdlDerivatives(t,x,u,A,B,C,D)

sys = A*x + B*u;%实际上为x' = Ax + Bu

% end mdlDerivatives
%
%=============================================================================
% mdlOutputs
% Return the block outputs.
%=============================================================================
%
function sys=mdlOutputs(t,x,u,A,B,C,D,para1)

sys = C*x + D*u; % 实际为 y= Cx +Du
disp(para1);
% end mdlOutputs


三、零阶保持器

MATLAB Simulink中零阶保持器(ZOH,Zero-Order Hold)是将输入信号每过一个采样时间更新一次,并保持到下一次采样,多用于将连续信号离散化

 零阶保持器设置为0.1s

 

四、Model Advisor模型建议器

model advisor是simulink自带的静态模型检查器,能够根据设定的规则对模型进行检查,并且能够进行部分错误的自动修改。

参考:

如何使用Simulink Model Advisor创建自定义检查项?_哔哩哔哩_bilibili

Simulink代码生成(五)——代码生成文件的结构_simulink代码_b_Rlover_star的博客-CSDN博客

S-function入门及案例详解(1)——S-function基础介绍及基本案例_wendy_ya的博客-CSDN博客

Simulink 中 model advisor 检查规则自定义_simulink model advisor_Tomato-的博客-CSDN博客
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值