[Simulink] Simulink信号的学习笔记

时间:2024-05-20 13:23:27

翻译、整理自Matlab官方帮助文档

信号基础知识

https://ww2.mathworks.cn/help/simulink/ug/signal-basics.html

什么是信号

信号是指在所有时间点都有对应值的时变量,在Simulink中,信号指Simulink模型中的模块以及模快本身所表示的动态系统的输出。模块中的线条表示模块所定义的信号之间的数学关系。不明白?举个例子

连接模块A的输出端口和模块B的输入端口的线条表明了B的信号输出取决于模块A的信号输出。

Simulink模块图用带箭头的线条来表示信号。
信号来源指的是在计算模块的过程中写入信号的模块
信号目标指的是在计算模块的过程中读取信号的模块

注意:Simulink的信号是数学概念,仅表示模块之间的数学关系,而不是物理关系。

信号的分类

Simulink可以包含多种不同类型的信号,建模时所有信号都表示为一条实线,只有仿真之后,信号才会以指定的线型显示:
[Simulink] Simulink信号的学习笔记
当信号线携带有向量时,会显示第2种信号线,但是Simulink默认这种信号线不显示,如果需要显示,需要勾选Display > Signals & Ports > Wide Nonscalar Lines
[Simulink] Simulink信号的学习笔记
即可得到下图:
[Simulink] Simulink信号的学习笔记

信号属性

要查看、修改信号的属性,可以通过三种方法:

  • View > Property Inspector
  • View > Model Data Editors
  • 右键信号线 > Signal Properties

#TODO 后续补充信号属性都要修改什么

信号属性的修改

两种方式:

  • 利用上面的三种方法,在界面上进行修改,效率低啊
  • 以编程的方式指定信号属性,后期可以利用自定义工具实现批量修改
    • get_param 获取创建信号线的模块端口的句柄
    • set_param 设置该端口的参数

https://ww2.mathworks.cn/help/simulink/ug/approach-modeling-programmatically.html#bs9iolk-1

信号名称

  • 请勿使用小于号字符 (<) 作为信号名称的开头,为什么? 因为小于号被propagated signal的显示占用了(瞎猜的)
    [Simulink] Simulink信号的学习笔记
    当subsystem中的输入端信号线属性上勾选了show propagated signals后,该信号线上显示如下:
    [Simulink] Simulink信号的学习笔记

  • 信号名称可以解析为 Simulink.Signal 对象
    #TODO :补充Simulink数据字典的内容

  • 信号名称的存在只是为了使模块图更清晰,没有任何计算意义。

  • Bus Creator 的输入必须具有唯一的名称。如果存在重复的名称,Bus Creator 模块将在所有输入信号名称后面追加 (signal#),其中 # 是输入端口的索引。

信号显示

在Display > Signals & Ports中进行具体的设置即可。

信号的存储

对于建模时的信号属性的存储,有两种策略:

  • 如果要提高模型的可移植性、易读性和易于维护性,可以将这些信号的设定存储在模型文件中,而不借助Simulink.Signal对象。

甚至可以在Simulink的设置窗口,将Signal resolution设置为None,禁止模型使用Simulink.Signal对象。
[Simulink] Simulink信号的学习笔记

  • 将对信号的设定与所建立的模型分开单独进行管理,使用Simulink.Signal对象的属性对信号进行存储。

测试信号

范围检查

[Simulink] Simulink信号的学习笔记
#TODO :补充Simulink Diagnostics下的Data Validity的内容

连接性验证

Signal Builder

Signal Builder可以协助进行模型测试,尤其是在与Simulink Assertion模块以及Simulink Verfication and Validation 产品中的Model Coverage Tool结合使用。
#TODO :补充Simulink Assertion模块
#TODO :补充Simulink Verfication and Validation

控制信号

一个控制信号是用来启动一个模块的执行用的,如下:
[Simulink] Simulink信号的学习笔记

虚拟信号

https://ww2.mathworks.cn/help/simulink/ug/virtual-signals.html?action=changeCountry&s_tid=gn_loc_dropp

什么是虚拟信号?

虚拟信号是一种信号,用图形的方式表示其他信号或其他信号的一部分。
虚拟信号是纯图形实体,没有数学或物理意义。
Simulink在进行模型仿真时会忽略虚拟信号,而且生成的代码中也不存在虚拟信号。

[未完待续] - 20190221