文档

建模语义方面的考虑

数据传播

代码生成的第一阶段是编制框图。这个阶段类似于C或c++程序。编译器执行类型检查和预处理。同样,仿真软件金宝app®引擎验证输入/输出数据类型的块端口一致,线宽块之间预期的厚度、连接块和样品时间是一致的。

仿真软件金宝app引擎传播数据信号从一个街区到另一个。数据由传播

  • 数据类型

  • 线的宽度

  • 样品时间

您可以验证模型块支持通过输入什么数据类型金宝app金宝app

在MATLAB®提示,或(从帮助浏览器)点击上面的命令。

仿真软件金宝app引擎通常信号属性来自一个源块。例如,轮廓尺寸的块的参数对话框中指定的信号属性块。

在这个例子中,轮廓尺寸的块有一个端口3的宽度,一个示例. 01秒的时间,数据类型是双,信号是复杂的。

这个图显示信号的传播与进出口相关的属性块通过一个简单的框图。

在这个例子中,增益和外港块继承的属性指定尺寸块。

样品时间传播

继承了样例次源块(例如,一个根尺寸)有时会导致意想不到的和意想不到的样品时间作业。由于一块可能指定一个继承的样品时间,信息在一开始通常是不足以完全编译一个框图。

在这种情况下,仿真软件引擎传播已知或分金宝app配样本乘以那些继承了块样品,但尚未分配的一个示例。因此,发动机继续填空(未知样本时报),直到样品倍已经分配给尽可能多的街区。块还没有样本时间被分配一个默认的样品时间。

完全确定性模型(一个没有样品时间设置使用上面的规则),你应该显式地指定样本来源的时光。源模块包括根尺寸块和块没有输入端口。你不需要设置子系统输入端口样品时间。你可能想这样做,但是,当创建模块化的系统。

一个独立输入隐式连接到地面。对于地面块和地面连接,样品时间总是常数()。

所有模块都有一个继承采样时间(T年代= 1)。他们被分配一个示例(Tf- T)/ 50。

块的输出常量值

当您显示样品颜色,默认情况下,常数块出现红色的颜色表明块输出在模拟常量值。下游块的输出值也不断在模拟,如获得块,同样出现红色如果他们使用一种遗传样品时间。生成的代码对这些块部分取决于物体的可调谐性参数。

如果你集模型配置参数默认参数的行为内联块参数可调在生成的代码中。因为块输出是常数,代码生成器消除了由于常数合并分组码。如果代码生成器不能折叠代码,或者如果您选择设置来禁用常数合并,块代码出现在模型初始化函数。生成的代码更为有效,因为它在执行期间不计算这些块的输出。

然而,如果你配置一个块或模型,这样块参数可调变量出现在生成的代码,代码生成器代表块方式不同。块可调参数,例如:

  • 设置参数默认参数的行为可调。默认情况下,全球的数字块显示为可调参数字段参数结构。

  • 您使用一个可调参数,如金宝appSimulink.Parameter使用存储类以外的对象汽车,因为一个或多个数字块参数的值。这些块的设置参数可调不管你选择模型配置参数默认参数的行为

如果一块参数可调,在执行过程中生成的代码必须计算块输出。因此,块代码出现在模型中一步函数。如果模型使用多个离散率,分组码出现在输出函数最快的下游使用块输出率。

门闩子系统街区

当一个尺寸块的信号源是引发或函数调用子系统,可以使用锁选项保存在子系统执行时输入值。尺寸的块锁选项包括:

使用
触发子系统 门闩外输入通过延迟信号
函数调用子系统 门闩输入函数调用子系统输出的反馈信号

当您选择子系统块参数门闩输入函数调用子系统输出的反馈信号函数调用子系统,代码生成器

  • 保留了门闩在生成的代码无论可能是设置的优化

  • 地方门闩的代码在一个子系统的输出/更新功能

关于这些选项的更多信息,请参见块的描述轮廓尺寸

块执行顺序

一旦模型引擎编译框金宝app图,它创建了一个模型.rtw文件(类似于一个对象文件生成的C或c++文件)。的模型.rtw文件包含模型的连接信息,以及信号的属性。因此,计时引擎可以确定当块不同的利率应该执行。

你不能覆盖这个执行顺序通过直接调用块(手写代码)模型。例如,在接下来的图disconnected_trigger左边的模型有其触发端口连接到地面,从而导致块继承一个常数样品时间。调用触发功能,f (),直接从用户代码不工作。相反,你应该使用一个函数调用生成器指定的速率f ()应该执行,所示connected_trigger模型在右边。

而不是函数调用生成器,您可以使用另一个块,可以驱动触发端口。然后,你应该叫模型的主要入口点执行触发器功能。

对于多重速率的模型,常用的代码生成器是为个人单独模型生成代码,然后手动代码生成的代码之间的I / O模块。这种方法的地方负担的数据模型之间的一致性模型的开发人员。另一种方法是让模型和代码生成器维护数据一致性率和生成多金宝app重速率的代码在一个多任务环境中使用。率过渡块能够界面周期和异步信号。的描述金宝app仿真软件编码器™块库,看到异步事件。有关多重速率的代码生成的更多信息,请参阅对于多任务执行建模

代数循环

代数循环循环变量之间的依赖关系。这可以防止简单直接计算的值。例如,在一个方程组

  • x = y + 2

  • y = - x

的值xy不能直接计算。

为了解决这个问题,要么多次尝试可能的解决方案金宝搏官方网站xy(在一个聪明的方式,例如,使用基于梯度搜索)或“解决”的系统方程。在上一个示例中,解决系统成为一个显式的形式导致

  • 2 x = 2

  • y = - x

  • x = 1

  • y = 1

一个代数环存在时的输出块直接引线(如获得,总和,产品,转移Fcn)反馈作为输入相同的块。仿真软件金宝app引擎通常能够解决模型包含代数循环,如第二图。

代码生成器不能产生代码,解决代数循环。这一限制包括在反馈模型,使用代数约束块路径。然而,仿真软件引擎通常可以金宝app消除代数环出现,用模型方程在某些方面分组包含它们。它通过将更新和输出函数来避免循环依赖。有关详细信息,请参见代数循环概念(金宝app模型)。

代数循环触发子系统

而仿真软件引擎可以最金宝app小化代数循环涉及原子,使子系统,适用于一些特殊的考虑触发子系统。可以生成一个例子的代码如下所示模型和触发子系统。

默认的模型行为结合输出子金宝app系统和更新方法,创建了一个明显的代数环,即使单位延迟块子系统没有直接引线。

可以允许发动机仿真软件来解决这个问题金宝app通过分割输出和触发更新方法和enabled-triggered子系统时可行的。如果你想让代码生成器利用这个特性,选择子系统块参数最小化代数循环出现。选择这个参数来避免代数循环警告触发子系统参与循环。

请注意

如果你检查这个盒子,子系统生成的代码可能包含分割输出和更新方法,即使所涉及的子系统实际上不是一个循环。同样,如果直接引线块(如获得块)连接到尺寸在上面的触发子系统中,仿真软件引擎不能解决这个问题,代码生成器无法生成代码。金宝app

一个模型配置参数最小化代数循环出现也可用。选择它使代码生成器生成的代码模型包含模型块中所涉及代数循环。