主要内容

设计图表金宝app功能

在本教程中,您将使用Simulink金宝app®函数在状态流中®改进图表设计的一个模型命名old_sf_car

金宝appMATLAB中的独立状态流图不支持Simul金宝appink函数®

old_sf_car模型包含一个名为阈值计算和一个名为shift_logic

当运行此模型时,图表首先广播输出事件CALC_TH触发函数调用子系统。的两个值shift_logic图表。接下来,图表广播输出事件CALC_TH触发函数调用子系统。最后,子系统输出(up_thdown_th)返回图表作为输入。

在以下情况下,你可以用Simulink函数替换函数调用子系统:金宝app

  • 子系统执行图表所需的计算。

  • 模型中的其他块不需要访问子系统输出。

编辑要使用的模型金宝app函数

接下来的部分描述了如何用状态流程图中的Simulink函数替换Simulink模型中的函数调用子系统。金宝app这个过程减少了模型中的对象数量,同时保留了相同的模拟结果。

一步 任务 参考
1 打开模型。 打开模型
2 将函数调用子系统的内容移动到图中的Simulink函数中。金宝app 在图表中添加金宝appSimulink函数
3. 将特定图表级数据的范围更改为当地的 更改图表数据的范围
4 用函数调用替换事件广播。 更新图表中的状态操作
5 验证函数输入和输出是否已定义。 向图表中添加数据
6 删除模型中未使用的项。 删除模型中未使用的项目

请注意

要跳过转换步骤,请打开模型sf_car

打开模型

打开模型old_sf_car.如果您模拟该模型,您将在两个作用域中看到这些结果。

添加一个金宝app图表的功能

控件中添加一个Simulink函数金宝appshift_logic图表。

  1. 在Simuli金宝appnk模型中,右键单击左下角的Threshold Calculation块并选择减少从上下文菜单。

  2. 打开shift_logic图表。

  3. 在图表中,右键单击下面selection_state并选择粘贴从上下文菜单。

  4. 扩展新的Simulink功能,金宝app使签名适合功能框。

    提示

    要更改函数的字体大小,请右键单击函数框并从字体大小菜单。

  5. 扩大…的边界selection_state包含新函数。

    请注意

    函数驻留在此状态而不是图表级别,因为图表中没有其他状态需要函数输出up_thdown_th.看到将Simuli金宝appnk函数绑定到某个状态

  6. 将Simulink函数金宝app重命名为Threshold_Calculationcalc_threshold通过输入[down_th, up_th] = calc_threshold(齿轮,油门)在功能框中。

更改图表数据的范围

在模型资源管理器中,更改图表级数据的范围up_thdown_th当地的因为这些数据的计算现在发生在图表中。

更新图表中的状态操作

在状态流编辑器中,更改行动selection_state调用Simulink函数金宝appcalc_threshold

During: [down_th, up_th] = calc_threshold(gear, throttle);

向图表中添加数据

因为函数calc_threshold需要节气门作为输入,您必须将该数据定义为图表输入。(详情,请参阅添加Stateflow数据.)

  1. 添加输入数据节气门到图表上港口1的属性。

    在Simulink模型中,使用端口1可以防止信号线重叠。金宝app

  2. 在Simuli金宝appnk模型中,添加一个信号线节气门向发动机模块的输入和向发动机模块的输入shift_logic图表。

删除模型中未使用的项目

  1. 在模型资源管理器中,删除函数调用输出事件CALC_TH因为阈值计算块不再存在。

  2. 删除模型中的任何虚线信号线。

运行新模型

你的新模型看起来像这样:

如果模拟新模型,结果与原始设计相匹配。

相关的话题