使用模型名称作为编程接口

使用模型名称作为编程接口

您可以使用模型的名称作为编程接口来执行指定的 模拟阶段,并计算各个状态和时间的值, 指定.

此功能不适用于逐步运行模型、模拟模型 编程或调试。为此,请考虑以下替代方案:

  • 要逐步执行模拟,请使用“向前一步”和 后退按钮。

    有关详细信息,请参见逐步模拟

  • 要以编程方式模拟模型,请使用simparsimbatchsim函数。

  • 对于低级调试,请使用Simulink®调试器。

模型要求

当您使用模型名称作为编程接口来计算模拟值时, 软件忽略状态转换和条件执行的影响。使用 此功能仅适用于实现简单动态系统的模型。这样的系统 必须满足这些要求:

  • 模型中的所有状态都必须具有内置的非总线数据类型。

    有关内置数据类型的详细信息,请参见关于Simulink中的数据类型

  • 模型必须包含最少量的状态逻辑,例如 Stateflow®图表和有条件执行的子系统。

  • 模型必须仅包含Simulink库中的块。模型不能包含S函数或Simscape™块。

  • 将状态值指定为向量时,模型中的状态必须 有真实的双重价值。

将此功能用于不满足这些要求的模型和模型 使用多任务执行可能会产生意想不到的结果。欲了解更多信息 关于多任务和单任务执行,请参阅基于时间的调度和代码生成(Simulink编码器)。

输入参数

要将模型名称用作编程接口,请将模型名称用作 虽然它是一个函数的名称。您始终提供四个输入:

  • t -模拟时间,指定为真实的,双精度 标量

  • x -状态值,指定为真实的double的向量 价值观或结构。

    将状态转换为Simulink.op.ModelOperatingPoint对象不是 supported.

  • u -输入数据,指定为真实的向量,双精度 价值观

  • phase -要执行的模拟阶段,指定为1 在这些选项中:

    • 'sizes' -大小计算阶段,其中 软件确定模型输入,输出, 和状态向量

    • 'compile' -编译阶段,其中 软件传播信号和采样时间属性

    • 'update' -更新阶段,在此阶段,模型 计算离散状态的值

    • 'outputs' -输出阶段,其中 模型计算块和模型输出值

    • 'derivs' -衍生品阶段,其中 模型计算连续状态的导数

    • 'term' -终止阶段

输出参数的数量、类型和维数取决于 你执行的阶段。

使用此功能时,必须手动执行 适当的顺序。有关仿真如何运行的详细信息,请参见动力学系统中的仿真阶段。 此功能并不意味着逐步运行模拟或替代 典型的模拟工作流程。

执行大小计算阶段

要运行大小阶段,请使用以下语法,为 前三个输入参数。

[sys,x0,blks,st] = modelName([],[],[],'sizes');

大小阶段返回四个输出参数:

  • sys -系统信息,作为向量返回, 七个要素:

    • sys(1) -连续状态的数量 系统

    • sys(2) -离散状态的数量 系统

    • sys(3) -模型输出的数量。

    • sys(4) -模型输入的数量。

    • sys(5) -保留。

    • sys(6) -直接馈通标志,用于 系统值1表示 系统具有直接馈通。值0 表示系统没有直接 馈通

    • sys(7) -连续、离散、 小步长固定,采样时间可控, 系统此索引处的值指示 ts输出。

  • x0 -包含初始条件的向量 系统状态。

  • blks -包含块名称的向量 与系统状态相关。中元素的顺序 blks匹配中元素的顺序 x0.

  • st - m-by-2数组 系统的采样时间信息,其中m是 等于sys(7)的值。的第一列 数组表示采样时间,第二列表示偏移。 有关采样时间的详细信息,请参阅采样时间类型

执行编译阶段

要运行编译阶段,请使用以下语法,为 前三个输入参数。

[sys,x0,blks,st] = modelName([],[],[],'compile');

编译阶段返回与大小阶段相同的四个输出参数:

  • sys -系统信息,作为向量返回, 七个要素:

    • sys(1) -连续状态的数量 系统

    • sys(2) -离散状态的数量 系统

    • sys(3) -模型输出的数量。

    • sys(4) -模型输入的数量。

    • sys(5) -保留。

    • sys(6) -直接馈通标志,用于 系统值1表示 系统具有直接馈通。值0 表示系统没有直接 馈通

    • sys(7) -连续、离散、 小步长固定,采样时间可控, 系统此索引处的值指示 ts输出。

  • x0 -包含初始条件的向量 系统状态。

  • blks -包含块名称的向量 与系统状态相关。中元素的顺序 blks匹配中元素的顺序 x0.

  • st - m-by-2数组 系统的采样时间信息,其中m是 等于sys(7)的值。的第一列 数组表示采样时间,第二列表示偏移。 有关采样时间的详细信息,请参阅采样时间类型

在运行编译阶段之后,必须运行终止阶段,然后才能 关闭模型。如果在执行之前多次执行编译阶段, 终止阶段,则必须执行相同数量的终止阶段 次

计算离散状态值

要执行更新阶段并计算离散状态值,请使用以下语法。 您可以指定要计算离散状态的时间, 计算中使用的状态和输入值。

dStates = modelName(t,x,u,'update');

更新阶段将离散状态值dStates作为 结构或数组,具体取决于您指定当前状态值的方式, x.

  • 当您将x指定为空([])或 作为结构,更新阶段返回dStates作为 一个结构,包含所有的离散和连续状态值 具有内置数据类型的状态。

  • 当您将x指定为向量或数组时, phase返回dStates作为向量或数组, 仅包含具有真实的、双精度 价值观

计算输出值

要计算模型输出,请使用以下语法。您可以指定您希望 以计算离散状态和当前状态以及输入值,以在 计算。

out = modelName(t,x,u,'outputs');

计算连续状态导数

要计算连续状态的导数,请使用以下语法。您指定 要计算离散状态和当前状态的时间,以及输入 中使用的值 计算。

derivs = modelName(t,x,u,'derivs');

执行终止阶段

分析完模型行为后,使用以下语法执行 终止阶段,以便您可以关闭模型。指定[]用于 前三个输入参数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值