文章目录
翻译、整理自Matlab官方帮助文档
信号基础知识
https://ww2.mathworks.cn/help/simulink/ug/signal-basics.html
什么是信号
信号是指在所有时间点都有对应值的时变量,在Simulink中,信号指Simulink模型中的模块以及模快本身所表示的动态系统的输出。模块中的线条表示模块所定义的信号之间的数学关系。不明白?举个例子
连接模块A的输出端口和模块B的输入端口的线条表明了B的信号输出取决于模块A的信号输出。
Simulink模块图用带箭头的线条来表示信号。
信号来源指的是在计算模块的过程中写入信号的模块
信号目标指的是在计算模块的过程中读取信号的模块
注意:Simulink的信号是数学概念,仅表示模块之间的数学关系,而不是物理关系。
信号的分类
Simulink可以包含多种不同类型的信号,建模时所有信号都表示为一条实线,只有仿真之后,信号才会以指定的线型显示:
当信号线携带有向量时,会显示第2种信号线,但是Simulink默认这种信号线不显示,如果需要显示,需要勾选Display > Signals & Ports > Wide Nonscalar Lines
即可得到下图:
信号属性
要查看、修改信号的属性,可以通过三种方法:
- 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的显示占用了(瞎猜的)
当subsystem中的输入端信号线属性上勾选了show propagated signals后,该信号线上显示如下: -
信号名称可以解析为 Simulink.Signal 对象
#TODO :补充Simulink数据字典的内容
-
信号名称的存在只是为了使模块图更清晰,没有任何计算意义。
-
Bus Creator 的输入必须具有唯一的名称。如果存在重复的名称,Bus Creator 模块将在所有输入信号名称后面追加 (signal#),其中 # 是输入端口的索引。
信号显示
在Display > Signals & Ports中进行具体的设置即可。
信号的存储
对于建模时的信号属性的存储,有两种策略:
- 如果要提高模型的可移植性、易读性和易于维护性,可以将这些信号的设定存储在模型文件中,而不借助Simulink.Signal对象。
甚至可以在Simulink的设置窗口,将Signal resolution设置为None,禁止模型使用Simulink.Signal对象。
- 将对信号的设定与所建立的模型分开单独进行管理,使用Simulink.Signal对象的属性对信号进行存储。
测试信号
范围检查
#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在进行模型仿真时会忽略虚拟信号,而且生成的代码中也不存在虚拟信号。
[未完待续] - 20190221