Matlab Simulink 使用基础

基本操作

快速插入模块

如果知道要插入的模块的名字的话, 双击空白处 => 输入模块名 => 选中 => 回车即可快速插入

常用模块

  • scope

    示波器

  • Constant

    常数

  • Mux

    把多个信号合并成一个信号, 方便连接

    上面是一个把两个信号合并成一个信号的 MUX, 可以通过更改 Number of inputs 来设置更多的输入信号

  • Demux

    把总线还原成原来的信号

  • powergui

    可以选择连续型或者离散型
    powergui 模块用来模拟包含 Simscape™ Electrical™ Specialized Power Systems 模块的任何 Simulink 模型。
    它存储表示模型的状态空间方程的等效Simulink电路.
    动态系统仿真中用得比较多

    • 当模型中只有一个 powergui 时

      将 powergui 块放在顶层图中以获得最佳性能。

    • 当模型中有多个 powergui 时

      powergui 不要放在顶层, 并且每一个 powergui 都应该在对应的subsystem 的顶层

  • Gain

    放大器

  • 加减乘除 (Add Subtract Multiply Divide)

  • function & matlab function

示波器设置

打开示波器

  • 设置通道数

    View => Configuration Properties => Number of input ports

  • 设置布局

    View => Layout

    如上图所示, 布局为四行一列

  • 显示信号lable

    View => Legend

示波器操作

  • 只缩放X 轴

  • 只缩放Y 轴

  • 适应全屏幕

  • X 轴适应全屏幕

  • Y 轴适应全屏幕

  • Ctrl + 鼠标滚轮缩放

    这个缩放的是什么轴和 当前所处的缩放模式相关

Matlab Function 调试

直接进入Matlab Function 点击对应的行号中以下断点, 之后就可以在线调试了

鼠标移动到变量上即可查看变量的值

使用全局变量的方法有很多种, 我只介绍其中一种, 这种我觉得是比较灵活的

要使用全局变量要满足以下三个条件

  • 全局变量必须定义为 Simulink Signal 或者 Simulink Parameter

    通过 MODELING => Model Explorer => 可以看到当前Simulink 可见的变量有哪些

    在 Model Workspace 和 External Data => Base Workspace 中的变量都是Simulink 可见的变量,
    但是要作为全局变量使用, 就只有 Simulink Signal 类型的变量才可以
    可以手动点击菜单栏的按钮或者Ctrl + s 来创建新的 Simulink Signal 变量

    创建的变量最好是 double 类型, Complexity 设为 real
    如果变量太多的话, 可以使用脚本来创建( 后面会介绍 )

  • Matlab Function 中使用 global 声明变量为全局变量

    1
    2
    3
    
    function y = fcn(u)
    global AAA;
    y = u;
    
  • Matlab Function 在符号表中新建全局变量声明, 并且声明为 Data Store Memory

    先进入Matlab Function ( 一定要先进入 Matlab Function ) 否则 MODELING 里面不会出现 SYmbols Pane
    然后 MODELING => Symbols Pane => 点击添加变量
    填好全局变量的名字后把数据类型设为 Data Store Memory 类型

如果想要对某些变量只在仿真时初始化一次, 可以在model 的 callback InitFcn* 函数中进行设置

MODELING => Model Settings 的下拉箭头 => Model Properties

Callbacks => InitFcn*

直接在 InitFcn* 函数里面做变量的初始化赋值, 或者运行函数或者脚本
通常来说脚本比较合适一些, 因为有些操作放在函数里面执行和直接在脚本执行, 它的作用范围不一样, 结果也不一样

  • 使用脚本初始化Simulink 全局变量

    doInit.m

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    
    TEST_val0 = 10;
    TEST_val = TEST_val0 - 5;
    MY_TEST = RSS(TEST_val);
    
    function SS = RSS(value)
      SS = Simulink.Signal;
      SS.DataType = 'double';
      SS.Complexity = 'real';
      SS.InitialValue = mat2str(value);
    end
    
    function SS = CSS(value)
      SS = Simulink.Signal;
      SS.DataType = 'double';
      SS.Complexity = 'complex';
      SS.InitialValue = mat2str(value);
    end
    
    function SP = RSP(value)
        SP = Simulink.Parameter;
        SP.Value = value;
    end
    

    其中 RSS 是把信号注册为 Simulink.Signal 类型, 数据类型为 ‘double’, Complexity 为 ‘real’…
    然后在 Callback InitFcn* 中加上 run(‘doInit.m’) 这样在开始仿真的时候就会通过回调函数来运行一次脚本
    可以看到, 使用脚本来做初始化工作很方便, 关键是可以进行复杂的赋值操作, 比如上面的 TEST_val = TEST_val0 - 5; 就只有在脚本中才可以这样用

Licensed under CC BY-NC-SA 4.0