使用函数调用子系统
一个函数调用子系统块是一个有条件执行的子系统,每次控制端口接收到函数调用事件时运行。一个Stateflow®图表,函数调用生成器块,MATLAB函数块,功能块,或打穿越Block可以提供函数调用事件。
函数调用子系统类似于过程式编程语言中的函数。调用函数调用子系统将按执行顺序执行子系统内块的输出方法。来解释一下函数调用子系统块参数,请参见子系统.
创建函数调用子系统
创建一个函数调用子系统:
添加一个函数调用子系统块到你的模型。
打开子系统块。添加框图,定义当子系统接收到函数调用事件时执行的算法。
属性的初始值和禁用值外港块。看到条件子系统初始输出值而且条件子系统输出值禁用时.
设置子系统执行时如何处理子系统状态:
打开子系统块,然后打开块参数对话框触发块。从启用时的状态下拉列表,选择一个选项:
举行
-国家保持其最新的价值。重置
-设定初始条件的国家。继承
-使用父子系统的hold或reset设置来启动函数调用。
对于以下的嵌套子系统函数调用子系统块有不同的参数设置,子子系统的设置覆盖从父子系统继承的设置。看到触发.
将函数调用启动器附加到函数调用输入端口。
如果你附上轮廓尺寸块,打开块,选择信号属性选项卡,然后选择输出函数调用复选框。
函数调用子系统中的采样时间传播
配置一个函数调用子系统通过设置采样时间类型它的触发端口块触发
或周期
.
一个被触发的(非周期性的)函数调用子系统可以在一个时间步长内执行0次、1次或多次。
如果一个函数调用子系统由一个根级函数调用执行轮廓尺寸使用离散采样时间块,不允许在一个时间步内调用多个函数。若要允许多个函数调用,请设置样品时间来
-1
(继承),并将函数调用子系统中所有块的采样时间设置为-1
(继承)。周期函数调用子系统在接收到函数调用信号时,在每个时间步中执行一次,而在没有接收到函数调用信号时,则不在某个时间步中执行。将函数调用子系统中所有块的采样时间设置为
-1
(继承)。
请注意
在范围检查期间,最小和最大参数设置将反向传播到函数调用子系统的实际源端口,即使函数调用子系统未启用。
为了防止这种反向传播:
添加一个信号转换Block和a信号规范源端口后阻塞。
设置输出的信号转换块
信号复制
.属性的最小值和最大值信号规范阻塞,而不是在源端口上指定它们。
函数调用子系统的锁存输入数据
可以闩锁输入数据轮廓尺寸块内函数调用子系统块,以确保数据完整性。来锁存输入数据轮廓尺寸块参数,选择用于函数调用子系统输出的反馈信号的闩锁输入.
在下面的模型中,为轮廓尺寸块在函数调用子系统ReadDSAndCal1
锁存(由<李>
),并且在子系统执行期间不能更改。的数据存储读取而且数据存储写块在每个函数调用子系统中调用。第一个和第二个函数调用写入数据,最后一个函数调用将数据读取到数据存储内存块。
请注意
根级数据轮廓尺寸块连接到内部轮廓尺寸如果连接到根级块的所有块都被锁存,则该块也被锁存。有关更多信息,请参见为函数调用子系统输出的反馈信号闩锁输入的选项.
请注意
默认情况下,数据传输信号在生成的代码中不受保护。使用自定义存储类来防止由于目标环境中的当前任务被抢占而导致这些信号中的数据损坏。