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