matlab-note-9

matlab-note-9

Charles Lv7

matlab-note-9

image-20230208173330559

Simulink系统仿真

Simulink仿真基础

Simulink系统仿真的步骤:

  • 建立系统仿真模型
  • 设置仿真参数
  • 启动仿真并分析仿真结果

子系统的创建与封装

子系统的创建

  • 通过Subsystem模块建立子系统
  • 将已有的模块转换为子系统

两者的区别是:前者先建立子系统,再为其添加功能模块;后者先选择模块,再建立子系统。

子系统的封装

子系统的条件执行

S函数的设计与应用

什么叫S函数

  • S函数是系统函数(System Function)的简称,是指采用一种程序设计语言描述的一个功能模块。
  • 用户可以采用MATLAB语言,也可以采用C、C++或FORTRAN等语言来编写S函数。
  • S函数有自己特定的语法构成规则,可以用来描述并实现连续系统、离散系统以及复合系统。
  • S函数能够接收来自Simulink求解算法的相关信息,并对求解算法发出的命令做出适当的响应,这种交互作用类似于Simulink系统模块与求解算法的相互作用。

用MATLAB语言编写S函数

在MATLAB命令行窗口输入命令,打开模板文件。

1
edit sfuntmpl.m

模板文件sfuntmpl.m包括:

  • 1个主函数
  • 6个子函数
主函数

主函数的引导语句为:

$function [sys,x0,str,ts]=fname(t,x,u,flag)$

  • fname是S函数的函数名。
  • 输入形参t、x、u、flag分别为仿真时间、状态向量、输入向量和子函数调用标志。
  • 输出形参sys代表一种返回参数;x0是初始状态值;对于M文件S函数,str将被置成一个空阵;ts是一个两列矩阵。
子函数

S函数共有6个子函数,这些子函数的前辍为mdl,由flag的值来控制在仿真的各阶段调用S函数的哪一个子函数。

  • flag取0:调用初始化子函数mdlInitializeSizes。
  • flag取1:调用子函数mdlDerivatives实现连续状态的更新。
  • flag取2:调用子函数mdlUpdate实现离散状态的更新。
  • Flag取3:调用输出子函数mdlOutputs。
S函数的应用
  • 利用S函数可以创建用户自己的Simulink模块,从而使得Simulink可以应用于更复杂系统的建模与仿真。
  • Simulink提供了现成的S函数模板文件,用户可以通过直接修改模板文件来编写S函数。
  • Title: matlab-note-9
  • Author: Charles
  • Created at : 2023-02-03 22:44:45
  • Updated at : 2023-08-17 09:48:27
  • Link: https://charles2530.github.io/2023/02/03/matlab-note-9/
  • License: This work is licensed under CC BY-NC-SA 4.0.
Comments