从系列:运行时软件建模
Teresa Hubscher-Younger MathWorks
使用导出功能建模风格的分区和调度模型,可以轻松地将功能集成到软件环境中,并具有从模型到代码的清晰映射。这种风格与基于速率的建模形成了对比。
使用导出函数,代码分离出可以集成到更大系统中的函数。划分模型以进行调度和更容易的代码集成是使用这些函数进行运行时软件建模的两个主要原因。
导出功能建模风格允许您轻松地将模型中的功能集成到软件环境中,并提供从模型到代码的清晰映射。
为了说明这是如何工作的,我将从一个节气门控制系统的模型开始,其中所需的软件功能已经使用子系统进行了建模。
在这个模型中,我们模拟了踏板输入,进入油门控制,然后通过一个油门体作为植物的模型来模拟。在节气门控制子系统中,我们有传感器和传感器管理功能,包括主、次节气门传感器和传感器监控器。我们还有一个控制器和执行器。
为了理解导出函数建模的需要,让我们为这个模型生成默认代码。虽然我已经用子系统建模了所需的函数,但是Simulink优化了代码并内联了函数。万博1manbetx此外,函数的执行顺序由Simulink的内置调度器决定。万博1manbetx结果,代码没有反映函数的接口,也没有提供控制执行顺序的能力。这可能与软件架构的需求不匹配。
让我们看看导出函数建模版本。模型现在以不同的方式进行架构设计。首先,节流控制器子系统现在是一个带有固定步长离散求解器的模型块,而不是一个可变步长求解器,因为它是用于软件和集成的。
在模型块中,它们位于函数调用子系统中。导出函数允许您对接口建模,其中要集成到体系结构中的函数被表示为函数触发端口。如果我们看一下样本时间函数调用,我们可以看到,他们每5毫秒采样,除了油门位置传感器主要是在每10毫秒采样,和油门踏板位置传感器,它这将运行时触发一个事件。
使用导出函数时,不需要考虑固有的调度器,允许您更灵活地集成到自定义环境中。您可以选择通过端口或调度编辑器来进行调度,以制作一个简单的测试工具。出于模拟目的,软件调度器(在本例中)是调度编辑器。
Schedule编辑器根据需要调用函数的时间,每隔5或10毫秒向不同的函数调用发送一个事件。加速踏板位置传感器是一个明确的非周期性分区,它计划了车辆的行驶时间。如果使用Stateflow对运行时软件建模进行调度,则可以使用逻辑结构在根据不同情况调用组件时进行更改。
可以使用Simulink测试产品设置更广泛的测试工具来对控制器进行单元测试。万博1manbetx
当我们为模型块生成代码时,我们得到了分离函数的代码,这些函数是从函数调用端口的名称中提取出来的,这使得软件更容易构建。我们使用导出函数进行实时软件建模的两个主要原因是,更现实的建模与调度和更容易的代码集成。