第3章 Simulink信号操作,3.1 信号基础 3.2 信号及示波器管理器 3.3 显示信号 3.4 多维数组信号的连接 3.5 信号组操作 3.6 复合信号,3.1 信 号 基 础 3.1.1 信号属性及分类 信号是模型仿真时出现在Simulink模块输出端的数值流理解模型图中连接模块之间沿着示意线传输的信号是非常有用的,但需注意的是,Simulink模型中用来连接模块的线只具有逻辑意义,而没有任何物理含义因此,把Simulink中的信号类比成电子信号也是不完全正确的例如,电子信号在电缆中传输时是需要时间的,相比之下,Simulink模块的输出是同时出现在它所连接模块的输入端的1.信号维数 Simulink模块可以输出一维或二维信号一维(1-D)信号是由一维数组输出流组成的,这个数组流在每个仿真时间步上以一个数组(向量)的频率进行输出;二维(2-D)信号是由一个二维数组流组成的,这个二维数组流在每个模块采样时间内以一个二维数组(矩阵)的频率产生多维信号则是由多维数组流(二维或二维以上)组成的,在每个模块采样时间上以某一个数组的频率进行输出MATLAB最多支持32维数组,Simulink中的每个模块在可以接收或输出的信号维数上是不同的,有些模块可以接收或输出任意维信号,而有的模块只接收或输出向量或标量信号。
Simulink 6.6中增加了支持多维信号的模块数目,多达75个模块都支持多维信号为了确定模块是否支持多维信号,可以参看模块帮助中的特性说明,若说明中的Multidimensionalized属性标识为Yes,则表示该模块支持多维数组Simulink的用户接口和文档通常把一维信号描述为向量(vectors),把二维信号描述为矩阵(matrices),而一元素数组常常是指标量(scalar),行向量(row vector)是只有一行的二维数组,列向量(column vector)是只有一列的二维数组 本章3.1.3节中的内容“确定输出信号的维数”讨论了对于可输出非标量信号的模块,如何确定这些模块的输出信号维数2.信号数据类型 数据类型是指用来在Simulink内部表示信号值的格式缺省时,Simulink信号的数据类型是double(双精度)用户也可以创建其他数据类型的信号Simulink支持与MATLAB相同的数据类型3.复信号 缺省时,Simulink的信号值是实数,但Simulink模型也可以创建和管理复信号信号值为复数的信号称为复信号用户可以用下面的方法把复信号引入到Simulink模型中: 从MATLAB工作区将复值信号数据通过模型最顶层的输入端口(即Inport端口)装载到模型中; 在模型中建立一个Constant模块,并将其值设置为复数; 建立对应于复信号实部和虚部的实值信号,然后利用Real-Imag to Complex转换模块将这两部分组合成复信号。
4.纯虚信号 纯虚信号(virtual signal)是用图示方式表示另一个信号的信号事实上,纯虚信号纯粹就是一组信号示意图,它没有任何数学或物理意义,当对模型进行仿真时,Simulink会忽略这些信号 Simulink中的纯虚模块如Bus Creator模块或Subsystem模块可以产生纯虚信号同纯虚模块一样,纯虚信号也允许用户以图示方式简化模型例如,利用Bus Creator模块,用户可以将大量的非纯虚信号(也就是由非纯虚模块产生的信号)简化为单个的纯虚信号,从而使整个用户模型更简洁,更便于理解在这里,用户可以将纯虚信号看成是捆绑在一起的一组信号无论用户何时运行或更改系统模型,Simulink都会自动确定由模型纯虚信号所表示的非纯虚信号,这个过程可用一个“术语”表示,Simulink将其称为信号传递(Signal Propagation)当运行模型时,Simulink会使用由信号传递所确定的相应的非纯虚信号来驱动由纯虚信号所连接的模块例如,以图3-1所示模型为例模型中用Bus Creator模块和Bus Selector模块传递纯虚信号,这两个模块均是纯虚模块,驱动Gain模块G1和G2的信号是分别对应于s2和s1的纯虚信号。
Bus Selector模块对话框可以设置从输入总线(这里是标签为s3的信号)中传递过来的信号,用户可以选择信号的排列顺序当更新或仿真模型时,Simulink会自动确定模型中的信号首先选中模型中标识为s3的纯虚信号线,然后选择Edit菜单下的Signal properties命令,打开信号属性对话框,将对话框中的Show Propagated Signals选项设置为on,此时模型中的纯虚信号标签显示了由纯虚信号表示的非纯虚信号,如图3-2所示图3-1,图3-2,5.控制信号 控制信号(Control Signal)也是Simulink中的一种信号,当仿真执行某一模块时,另一模块利用控制信号对这个模块进行初始化,例如,函数调用或动作子系统模块当用户更新系统方块图的仿真条件或者开始仿真时,Simulink会使用点画线重新绘制用来表示方块图控制信号的线,如图3-3所示图3-3,6.信号总线 信号总线是用来表示一组信号的纯虚信号,用来模拟捆绑在一起的电缆信号,没有实际的数学或物理含义,Simulink使用特定的线型来表示信号总线如果用户在Format菜单下选择Signal Dimensions命令,则Simulink会显示总线中信号分量的数目,如图3-4所示。
图3-4,7.复合信号 Simulink可以把一组多个信号组合到一个复合信号中,而且复合信号可以在模块之间进行传递,如果需要的话,用户可以从复合信号中提取组成信号信号总线是复合信号的一种,复合信号没有什么实际的功能,当有多个并行的信号存在时,使用复合信号可以简化模型的外观,增强模型的可读性8.信号术语汇编 表3-1概述了Simulink用户接口和文档中用来描述信号的术语3.1.2 信号的线型 Simulink使用各种不同的线型表示模型窗口中的信号类型因此,了解各种线型有助于读者区分模型图中各种不同类型的信号信号的类型及对应的线型如表3-2所示只有选择Wide nonscalar lines选项时,用户才可以控制非标量信号的线宽,除此之外,用户不能改变其他信号线的线型在用户刚开始建立模型方块图时,Simulink用细实线表示模型图中的所有信号,只有当用户更新模型图或者开始仿真时,不同类型的信号才会用指定的线型表示3.1.3 确定输出信号的维数 1.确定Sources模块的输出维数 Sources库中的模块是没有输入的模块,如Constant模块和Sine Wave模块等如果用户在模块的参数对话框内没有选择Interpret Vector Parameters as 1-D参数项,那么一个Sources模块输出的维数与其输出值参数的维数是相同的;如果选择了模块参数对话框内的Interpret Vector Parameters as 1-D参数项,那么在输出参数值的维数不是N × 1或1 × N的情况下,模块输出的维数才等于输出值参数的维数,若输出参数值的维数是N × 1或1 × N,则模块输出一个宽度为N的向量信号。
以Sources模块库中的Constant模块为例,这个模块输出一个等于其Constant value参数值的常值信号,表3-3说明了Constant value参数的维数和Interpret Vector Parameters as 1-D参数的设置值如何确定了Constant模块输出的维数2.确定非Sources模块的输出维数 如果一个模块有输入,那么该模块的输出在经过标量扩展之后与其输入有相同的维数(所有的输入也必须有相同的维数)3.1.4 确定信号及参数维数的准则 当创建一个Simulink模型时,用户必须遵守Simulink中信号和参数维数的确定准则 1.输入信号维数准则 输入信号维数准则:一个模块的所有非标量输入必须有相同的维数 一个模块可以混合有标量输入和非标量输入,但所有的非标量输入都必须有相同的维数,Simulink会扩展标量输入,以使其与非标量输入具有相同的维数,这样就遵守了上述规则2.模块参数维数准则 模块参数维数准则:通常,模块的参数必须与所对应的输入具有相同的维数这个规则包括下面两种情况: (1) 模块可以有对应于非标量输入的标量参数在这种情况下,Simulink会扩展标量参数,以使其与对应的输入具有相同的维数,这样就遵守了这个规则。
(2) 如果输入是向量,对应的参数可以是N × 1或1 × N矩阵,在这种情况下,Simulink会将N个矩阵元素应用到输入向量的对应元素这个特例允许用MATLAB行向量或列向量指定应用到向量输入中的参数,这样的向量实际上分别是1 × N矩阵或N × 1矩阵3.向量或矩阵输入转换规则 在下列情况下,Simulink会将向量转换为行矩阵或列矩阵,或者将行矩阵或列矩阵转换为向量: (1) 如果一个向量信号被连接到要求矩阵的输入上,则Simulink会将向量转换为一行矩阵或一列矩阵 (2) 如果一列矩阵或一行矩阵被连接到要求向量的输入上,则Simulink会将矩阵转换为向量 (3) 如果一个模块的输入是由向量和矩阵混合组成的,而且所有的矩阵输入都只有一列或一行,那么Simulink会将向量分别转换为只有一列或一行的矩阵3.1.5 输入和参数的标量扩展 1. 输入的标量扩展 输入的标量扩展是指扩展标量输入,以使其与其他非标量输入或非标量参数具有相同的维数当模块的输入是由标量信号和非标量信号混合组成时,Simulink会将标量输入扩展为与其他非标量输入具有相同维数的非标量信号,被扩展信号的分量等于信号被扩展的标量值。
图3-5中的模型说明了输入信号的标量扩展这个模型增加了标量输入和向量输入,Constant1模块的输入是标量,其被扩展以匹配Constant模块的向量输入,因此,Constant1模块的输入被扩展为向量[3 3 3]图3-5,2. 参数的标量扩展 如果模块有非标量输入,并且对应的参数是标量,则Simulink会扩展标量参数,以使其与输入有相同的元素数目被扩展参数中的每个元素分量等于原标量值,然后Simulink将被扩展参数的每个元素分量应用到相应的输入分量中 以图3-6中的模型为例,Gain模块的标量参数被扩展为与其模块输入具有相同维数的三维向量[3 3 3],因此,模块的输出也是三维向量[3 6 9]图3-6,3.1.6 设置信号属性 Simulink中的信号是有属性的,用户可以利用信号属性(Signal Properties)对话框设置信号属性可以用下面三种方法打开信号属性对话框: (1) 选中携带信号的线,然后选择模型窗口中Edit菜单下的Signal Properties命令,打开Signal Properties对话框,在此查看或设置信号属性 (2) 在选中的信号线上单击鼠标右键,在弹出的上下文菜单中选择Signal Properties命令,打开Signal Properties对话框。
(3) 选择带有输入信号或输出信号的模块,在模块上单击鼠标右键,在弹出的模块上下文菜单中选择Port Signal Properties命令图3-7,Signal Properties对话框包括三个选项页:Logging and accessibility、Real-Time Workshop和Documentation Signal name:信号的名称 Signal name must resolve to Simulink signal object:表示基本的MATLAB工作间或模型工作间必须包含一。