如何在Simulink中使用导出函数进行分区和调度
从系列:运行时软件建模
使用Export Function建模风格对模型进行分区和调度,以轻松地将函数集成到您的软件环境中,并拥有从模型到代码的清晰映射。这种风格与基于速率的建模形成对比。
使用导出函数,代码分离为可以集成到更大系统中的函数。划分模型以进行调度和更容易的代码集成是在运行时软件建模中使用这些函数的两个主要原因。
导出函数建模风格允许您轻松地将模型中的函数集成到软件环境中,并提供从模型到代码的清晰映射。
为了展示这是如何工作的,我将从一个油门控制系统的模型开始,其中所需的软件功能已经使用子系统建模。
在这个模型中,我们有模拟踏板输入,进入油门控制,然后被模拟的一个模型的油门机构作为一个植物。在油门控制子系统内部,我们有传感器和传感器管理的功能,包括一个用于主、次油门传感器和传感器监视器的功能。我们还有一个控制器和执行器。
为了理解Export Function建模的需求,让我们为这个模型生成默认代码。虽然我已经用子系统建模了所需的函数,但Simulink优化了代码并内联了函数。此外,函数的执行顺序由Simulink的内置调度器决定。因此,代码没有反映函数的接口,也没有提供控制执行顺序的能力。这可能与您的软件体系结构的需求不匹配。
让我们看看导出函数建模版本。现在模型的架构不同了。首先,油门控制器子系统现在是一个固定步长离散求解器的模型块,而不是一个可变步长求解器,因为它旨在软件和集成。
在模型块中,它们位于函数调用子系统中。导出函数允许您对接口建模,其中将集成到体系结构中的函数表示为函数触发端口。如果我们查看函数调用的采样时间,我们可以看到它们每5毫秒采样一次,除了Throttle Position Sensor Primary,它每10毫秒采样一次,以及Acceleration Pedal Position Sensor,它有一个事件,会在运行时触发。
使用导出函数,不需要任何固有的调度器,从而允许您更灵活地集成到定制环境中。您可以选择通过端口或schedule Editor进行调度,以制作一个简单的测试工具。为了模拟目的,在本例中,软件调度器是Schedule Editor。
Schedule Editor根据需要调用函数调用的时间,每隔5或10毫秒向不同的函数调用发送一个事件。加速踏板位置传感器是一个显式的非周期分区,有预定的命中时间。如果您使用Stateflow为运行时软件建模进行调度,那么您可以使用逻辑构造来根据不同的情况更改何时调用组件。
可以使用Simulink test产品设置一个更广泛的单元测试控制器的测试工具。
当我们为模型块生成代码时,我们得到了从函数调用端口的名称中分离出函数的代码,这使得软件更容易构建。使用调度的更真实的建模和更容易的代码集成是我们使用导出函数进行实时软件建模的两个主要原因。
您也可以从以下列表中选择网站:
如何获得最佳的网站性能
选择中国网站(中文或英文)以获得最佳的网站表现。其他MathWorks国家网站没有针对从您的位置访问进行优化。