主要内容

从模型中调用S金宝appimulink函数

金宝app®函数具有类似于编程语言的带有输入和输出参数的接口。金宝appSimulink函数调用者通过输入参数向Simulink函数发送数据,执行函数,然后通过输出参数从函数接收数据。你可以使用以下方法调用Simu金宝applink函数:

  • 函数调用者

  • MATLAB函数

  • Stateflow®图表

下面几节将展示如何调用Simulink函数。金宝app这个函数Y = timesttwo (x)将一个值相乘(x)2,然后将计算值(y)回打电话的人。要创建函数,请参见向模型中添加金宝appSimulink函数

若要使用Simulink函数和函数调用程序打开完整的模型,金宝app请参见ex_金宝appsimulink_functions_and_function_callers

使用函数调用方块调用Simulink函数块金宝app

建立一个函数调用者块,将数据通过输入参数发送到金宝app仿真软件的功能块,并通过输出参数从函数接收数据。

  1. 添加一个函数调用者块到你的模型。

  2. 打开“函数调用者”对话框。在函数原型框中,输入Y = timesttwo (x).这个函数原型创建一个输入端口x及输出端口y函数调用者块。

    请注意

    在空白文本框中输入将显示先前创建的与所输入文本匹配的函数原型列表。

  3. 添加并设置金宝app仿真软件的功能块,如使用Simulin金宝appk函数块创建Simulink函数

    请注意

    类的函数名和参数名金宝app仿真软件的功能Block和函数原型函数调用者Block必须完全匹配。

测试函数调用

  1. 添加一个正弦波块提供测试数据的输入和范围块查看来自输出的结果。

  2. 运行一个模拟。输入正弦振幅为2是翻了一倍。

使用MATLAB函数块调用Simulink函数块金宝app

建立一个MATLAB函数块,将数据通过输入参数发送到金宝app仿真软件的功能块,并通过输出参数从函数接收数据。

  1. 添加一个MATLAB函数块到你的模型。

  2. 双击该块,打开MATLAB®编辑器。进入函数调用Y1 = timestwo(x1)

    请注意

    类中定义的函数的参数名MATLAB函数类定义的函数的实参名称不必匹配金宝app仿真软件的功能块。对于一个函数调用者调用金宝app仿真软件的功能块,参数名称必须匹配。

    请注意

    MATLAB函数块只支持离散的和固定在次金宝app要的采样时间。

  3. 添加并设置金宝app仿真软件的功能块,如使用Simulin金宝appk函数块创建Simulink函数

测试函数调用

  1. 添加一个正弦波块提供测试数据的输入和范围块查看来自输出的结果。

  2. 正弦波块,设置样品时间0.01.对于模型,打开Configuration Parameters对话框到求解器窗格。集类型固定步而且固定的大小0.01

  3. 运行一个模拟。

使用状态流程图调用Simulink函数块金宝app

设置状态流图,将数据通过输入参数发送到金宝app仿真软件的功能块,并通过输出参数从函数接收数据。

  1. 向Simulink模型中添加状态流程图。金宝app双击Simulink框图。金宝app2 .在搜索框中输入图表,然后从搜索结果中选择图表

  2. 双击图表打开它。

  3. 从左侧工具栏中,单击并拖动默认转换图标在图表上。

  4. 将输入端口添加到图表中。打开模型资源管理器。在左侧窗格中,选择图表.从菜单中选择添加>数据.集的名字x1而且范围输入

    请注意

    在状态流图中定义的函数的参数名不必与使用金宝app仿真软件的功能块。对于一个函数调用者调用金宝app仿真软件的功能块,参数名称必须匹配。

  5. 向图表中添加输出端口。从菜单中选择添加>数据.集的名字日元而且范围输出

  6. 添加一个正弦波阻塞并连接信号输出到图表输入端口。添加一个范围阻塞并连接输入到图表输出端口。

  7. 编辑转换代码以调用函数。例如,调用金宝app仿真软件的功能块,输入:

    {日元= timestwo_sf (x1);}

    请注意

    状态流图的输入信号可以是连续的,也可以是离散的。

  8. 添加并设置金宝app仿真软件的功能块,如使用Simulin金宝appk函数块创建Simulink函数

测试函数调用

  1. 添加一个正弦波块提供测试数据的输入和范围块查看来自输出的结果。

  2. 正弦波块,设置样品时间0.01.对于模型,打开Configuration Parameters对话框到求解器窗格。集类型固定步而且固定的大小0.01

  3. 运行一个模拟。

从多个站点调用金宝appSimulink Function块

如果你打电话给金宝app仿真软件的功能阻塞来自多个站点,所有调用站点共享该函数的状态。例如,假设您有一个包含两个调用和两个调用的状态流图函数调用者阻塞对同一函数的调用。

A定义的函数金宝app仿真软件的功能Block是一个递增的计数器1每次调用时输入为1

单位延迟Block有状态,因为Block值在这两个调用之间是持久的函数调用者块和状态流图。从概念上讲,你可以认为这个函数是在MATLAB代码中实现的:

函数y =计数器(u)持续状态;If isempty(state) state = 0;结束y =状态;状态=状态+ u;

金宝app对象的状态值初始化单位延迟块在模拟的开始。此后,每次调用函数时,都会更新状态值。

在本例中,Scope1中观察到的输出增量为4在每个时间步。Scope2、Scope3和Scope4显示了类似的行为。唯一的区别是,由于函数调用的执行顺序不同,所观察到的信号发生了移位。

多呼叫者的诊断设置

对于共享一个函数且具有不同采样时间率的多个调用者,实时代码的数据完整性和一致性可能是一个问题。考虑控制诊断的严重性。

选择一个固定步解算器。设置将每个离散速率视为单独的任务:

  • 清除(单任务),然后设置单任务速率转换参数没有一个(默认),警告,或错误

  • 选择(多任务),然后设置多任务速率转换参数错误(默认)或警告

另请参阅

相关的话题