2、统建模框图语义一个simulink结构图模型是对动态系统的绘图式的数学描述。动态系统的一个典型框图模型图形由块和线(信号)。这些框图模型的历史是从工程领域,如反馈控制理论与信号处理而得。框图内的块定义一个动态系统本身。以框图的每个基本动态系统之间的关系由利用连接块的信号说明。集体中的框图的块和行描述的整体的动态系统。Simulink通过介绍两种典型的模块:虚拟模块和非虚拟模块来扩展那些典型的结构图模型。虚拟模块代表子系统。虚拟模块的存在仅是为了方便组织图形,他们并不影响方程所描述的框图模型。您可以使用虚拟模块,以改善模型的可读性。一般情况下,模块和线可以用来描述许多“计算”的模式。典型的一个例
14、块代表一个家族的模块,模块参数化大大提高了标准Simulink库的建模能力。可调的参数很多模块的参数都是可调的很多模块参数都是可调的。可调参数是不用编译模型就能够改变的参数(见模型汇编以了解更多编译模型的信息)。举例来说,增益模块的增益参数时可以调整的。在仿真运行过程中,你可以改变模块的增益。如果在仿真运行过程中,一个参数时不可调的,那么,控制对话框中将设置参数已被禁用。注意:在仿真运行过程中,你不能通过对话框或模型浏览器来改变资源模块的参数值。打开一个可调参数模块的对话框会导致仿真暂停。当仿真暂停的时候,你可以改变对话框中显示的参数值。但是,您必须关闭该对话框,以使更改生效,并允许仿真继续
18、您可以建立一个包含模块系统函数的M或MEX文件,(见编写S-函数)。由此产生的文件被称为S-函数。然后,您就可以将S函数与您模型中模块具体的结合起来。您可以通过封装子系统添加一个参数对话框到S函数模块,同时将参数对话框添加到子系统中。见创建自定义模块以了解更多信息。系统和子系统Simulink的模块可以包含不同的层次一个Simulink模块框图可能包含多个层。每一层由一个子系统定义。子系统时整个模块框图的一部分,但是它一点都不影响模型框图的功能。子系统主要为组织框图方面提供帮助。子系统不能单独的定义一个框图。Simulink软件区分两种不同类型的子系统:虚拟子系统和非虚拟子系统。两者之间最
20、执行。您可以创建条件执行子系统,该子系统只有当一个跃迁发生在触发,函数调用,活动,或有利的投入时候执行(见创建条件子系统)。只有当所有的输入都是有效的时候,非虚拟子系统中的模块才执行。所有的非虚拟子系统都用粗的线条画出来的。Simulink定义了以下的非虚拟子系统:(1)原子子系统原子子系统的主要特性是原子子系统中的模块都作为一个单一的单位来执行。这在模型执行时提供了有利的分组功能。任何仿真模块都可以放置在一个原子子系统中,包括不同执行速率的模块。在虚拟子系统中你可以选择Treatasatomicunit选项来创建一个原子子系统(见原子子系统模块以获取更多信息)。(2)激活子系统激活子系
21、统是当控制信号为正值时每一步仿真都执行的子系统。激活子系统有一个唯一的控制信号输入端口,它可以是标量或是向量输入端口:1.如果输入是标量,当输入值大于零的时候子系统即执行;2.如果输入是向量,则当输入向量的任意以元素值大于零时,子系统就执行。例如:如果控制输入信号是以正弦波,则子系统在激活和非激活两种状态中交替。Simulink使用过零点的斜率来确定是否发生了激活事件。如果信号穿越了零点,且斜率为正,子系统将变成运行状态;如果信号穿越零点时,斜率为负,子系统将变成非激活状态。(3)触发子系统触发子系统在信号驱动子系统触发端口上升或下降沿时执行。触发边缘的方向由触发端口模块的Trigger
37、Hitcrossing模块。状态事件的检测取决于内部的过零点信号的构造。从模块图中不能获取该信号。对于饱和度模块,用来检测上限过零点的信号是zcSignal=UpperLimit-u,Simulink中定义其状态事件的模块,认为具有固定的过零点其中U是输入信号。过零点的信号具有方向属性,它们可以取如下的值:1.上升:当信号升到或者升过0,或当信号离开0而成为正值时发生过零点。2.下降:当信号降到或降过0,或者当信号离开0正在成为负值时发生过零点。3.兼有:在上述两种情况下都会发生过零点。对于Saturation模块的上限,过零点的方向是兼有,这就使得使用相同的过零点检测信号能够检测进入
45、置。默认值是自动,但是您可以输入任何大于零的实数。2.该系统已经超过了求解窗格的配置参数对话框中指定的连续零点的的数量。或者,这也可以MaxConsecutiveZCs命令用来设置。有过零点的模块下表列出了具有过零点的模块,并解释了模块如何运用过零点:下表列出了有过零点的模块并说明了模块如何检测过零点:模块模块说明如何检测过零点过零点描述ABSAbs一个:检测输入信号什么时候以上升或下降的方式穿过零点。一个:检测输入信号什么时候以上升或下降的方式经过零点Blacklash两个:一个用来检测什么时候使用上阈值,另一个用于检测什么时候使用下阈值CompareToConstantDead
46、Zone两个:一个用来检测什么时候进入死区(输入信号减去下限),另一个用来检测什么时候脱离死区(输入信号减去上限)一个:用于检测信号什么时候能够匹配一个常数。CompareToZeroHitCrossing一个:检测输入信号什么时候穿过阈值。这一过零点不受仿真参数对话框中的Disablezerocrossingdetection复选框的影响。一个:用于检测信号什么时候为零DeadZoneIntegrator如果存在复位端口,检测什么时候复位发生。如果输出受限制,有三个过零点:一个检测什么时候达到上饱和限,一个检测什么时候达到下饱和限。另一个检测什么时候脱离饱和。Enable
47、MinMax详细细节请见子系统模块一个:对于输出向量的每一个元素,检测输入信号什么时候是最新的最小值或最大值。FromWorkspaceRelay一个:如果继电器处于关的状态,检测打开的时刻,如果继电器处于开的状态,检测关掉的时刻。一个:用于检测输入信号什么时候处在以个既不上升又不下降的非连续状态HitCrossingRelationalOperator一个:检测什么时候输出改变。一个:用于检测输入信号什么时候穿过阈值。这一过零点不受SimulinkParameters对话框中Disablezerocrossingdetection复选框的影响。IfSaturatio
49、什么时候输出改变RelaySwitch一个:检测什么时候转换条件发生。一个:如果继电器处于关闭状态,检测打开的时刻。如果继电器处于打开状态,检测关闭的时刻代数回路Simulink的一些模块具有直接馈通的输入端口。这意味着在不知道从这些输入端口进入模块的信号值的情况下,就不能计算出这些模块的输出。具有直接馈通的输入端口的模块例子有:Simulink的一些模块具有直接馈通的端口,这就意味着在不知道从这些输入端口进入模块的信号值的情况下,就不能计算这些模块的输出。具有直接馈通端口的模块的例子有:1.数学函数模块2.增益模块3.积分模块4.乘积模块乘积模块5.加和模块6.传递函数
50、模块7.传递函数模块(当分子和分母次序相同时)乘积模块(当有非零D矩阵时)8.零极点模加和模块当具有直接馈通的输入端口被同一模块的输入直接驱动,或经由另外的具有直接馈通的模块构成的反馈回路驱动时,就会出现代数回路。一个最简单的例子是如下图所示的标量回路。传递函数模块(当分子和分母具有相同的阶数时)零极点模块(当零点数与极点数相同时当具有直接馈通的输入端口被同以模块的输入直接驱动,或经过由另外的具有直接馈通的模块构成的反馈回路驱动时,就会出现代数回路。一个最简单的例子是如图所示的标量回路。从数学上来说,这一回路表明Sum模块的输出是状态z约束,等于第一个输入u减去代数状态z(即z=u-z)
51、。这一简单的回路的结果是z=u/2,但是多数代数回路不能够通过观察得到结果。很容易用多个代数状态变量Z1,Z2,等等,创建向量代数回路,如下图所示的模型:这一简单回路的结果是z=u/2,但是多数代数回路不能通过观察而得到结果。很容易用多个代数状态变量z1,z2,等等,创建向量代数回路,如图所示该Nonlinear库中的代数约束(AlgebraicConstraint)模块是模拟代数方程并指定初始估计值的一种简单的方法。代数约束模块约束它的输入信号F(z)=0,并且输出一个状态变量z。输出必须通过一些反馈环节影响输入。可以在模块的对话框中提供代数状态值的初始估计值以改进代数回路求解器的效率。
52、标量代数回路代表标量代数方程或F(z)=0形式的约束,其中z为回路中一个模块的输出,函数f由经过回路中另外的模块到该模块输入的反馈环节所构成。在前面仅有一个模块的标量代数回路代表标量代数方程或者f(z)=0形式的约束,其中z是回路的一个模块的输出,函数f由经过回路中另外的模块到该模块输入的反馈回路节所组成。在前面的仅有一个模块的例子中所示f(z)=z-(u-z),该方程如:Z2+Z1-1=0Z2-Z1-1=0当模型中包含有代数约束F(z)=0时,会出现代数回路。当要进行建模的状态存在物理上的互联互通的时候,就会出现代数约束。另外,当试图模拟微分/代数系统(DAE)是时也可能出现这样的约束。当模
54、ConstraintAlgebraicConstraint),如上图所示。只要有可能,就要用IC模块或者AlgebraicConstraint模块指定回路中代数状态变量的初始估计值。AlgebraicConstraint,模块指定回路中代数状态变量的初始估计值突出代数回路当您更新,模拟,或调试模型的时候,您可以突出代数回路。当调试一个模型的时候,可以使用ashow命令突出代数循环回路。当仿真软件检测到更新或模拟模型时,会发生突出代数循环回路,设置参数配置对话框中的代数回路诊断的诊断窗格值为“错误”(见配置参数对话框中的更多信息)。执行这一步后,将显示一个错误信息对话框(诊断浏览
55、器),模型框图中,已被检测出有代数回路的部分将被重新着色。红色用于标记组成代数回路的线条和模块。闭幕错误对话框恢复模型框图到原来的颜色。例如,下面的数字框图显示hydcyl演示模型在其原来的颜色。下图显示更新后的图表,当代数回路诊断设置为错误时。在这个例子中,Simulink将代数回路部分着成红色,以便将其与模型图的其他部分区别出来。消除代数回路Simulink仿真软件可以消除一些包括下列任何一种类型的模块的代数回路:1.原子子系统2.激活子系统3.模型启用自动消除代数回路为一个循环回路,涉及特定情况下的原子子系统或启用子系统块,选择最小代数回路发生参数模块的参数对话框。为了使消除
56、代数回路一回路,涉及示范块,选择模型所引用的模块的最小代数回路发生参数模型参考窗格的配置参数对话框(见模型参考窗格)。如果一个循环回路包括多个这些模块,您应该使代数回路消除所有这些模块,包括嵌套模块。注意:Simulink软件尽量不减少代数循环回路测试点的信号,即使您选择最小代数回路发生代数回路默认的最小值是关闭的,因为它是不符合条件的Simulink的分行优化输入(见优化窗格)和单输出/更新函数优化实时工作区间。如果您需要这些优化的原子或启用子系统或引用模型参与代数循回路,就必须消除代数回路自己。回路的最小代数求解诊断让您可以指定的Simulink应采取行动,例如,如果它无法消除代数回路涉
57、及块为已启用代数回路消除,系统将显示一条警告。查看诊断窗格以求解更多信息。为说明Simulink软件有能力消除代数回路,请参考以下模型:用代数回路诊断串口设置为错误的求解器模拟该模型(见诊断窗格:求解以获得更多信息)显示,该模型包含了涉及原子子系统的代数回路。从模型编译的示范检查原子子系统的最小代数回路发生参数消除代数回路的事件。因此,该模型模拟现在没有舍入错误。请注意,仿真软件能够消除涉及这一模型的原子子系统的代数回路,因为原子子系统包含一个块的端口,不直接馈通,即积分模块。如果您把集成块从原子子系统删除,代数回路将不能消除。因此,试图模拟模型结果将是一个错误。Simulink建模对方程建模例子:摄氏温度转换到华氏温度对摄氏转换为华氏温度方程进行建模:TF=9/5(TC)+32首先,考虑建立模型需要的模块:1.输入温度信号的斜路模块,资源库2.定义常量32的常数模块,资源库3.乘以输入信号的9/5的增益模块,数学运算库4.两个数量相加的加和模块,数学运算库5.显示输出的范围模块,接收器库下一步,把模块都拖到模型窗口中。双击每个模块,在相应的地方输入指定的参数的值然后,单击确定按钮