【问题标题】:Simulink model errorSimulink 模型错误
【发布时间】:2017-05-31 11:03:39
【问题描述】:

我不得不在这张照片之后创建 Simulink 图:

我的答案是这个:

我给a、b 和c 赋予了一些值(如 3、4 和 5),但是当我尝试运行它时,它给了我以下警告:

警告:模型“ex2_2”没有连续状态,因此 Simulink 使用 求解器“VariableStepDiscrete”而不是求解器“ode45”。您可以通过以下方式禁用此诊断 在配置参数的求解器选项卡中明确指定离散求解器 对话框,或通过将“自动求解器参数选择”诊断设置为“无” 配置参数对话框的诊断选项卡

警告:“ex2_2/Unit Delay”是离散的,但继承了连续的采样时间;考虑 用内存块代替单位延迟。当一个单位延迟块继承连续样本时 时间,它的行为与内存块相同。单位延迟块的时间延迟不会 固定并且可以随着每个时间步长而改变。这可能是意外行为。通常,一个 单位延迟块使用离散采样时间。您可以通过设置 上采样时间组中的“离散用作连续”诊断到“无” 配置参数对话框的诊断窗格。 "

而输出(scope)只是一个步进信号...

我不知道我哪里错了。

【问题讨论】:

    标签: matlab simulink


    【解决方案1】:

    您已正确构建模型,但未正确配置它。

    按原样运行模型时,会发生以下情况:

    1. Step 块默认是连续时间源(Sample Time 设置为0)。
    2. Simulink 看到 Step 连接到 Unit delay 块,保证在次要步骤期间具有恒定输出(不同于 Memory块)
    3. 根据documentation on sample times:

      [...] Simulink 将 [Fixed-in-Minor step] 设置为继承的采样时间或对用户规范 0(连续)的更改。当您使用固定步长求解器时,此设置等效于并因此转换为最快的离散速率。

      在可变步长求解器的上下文中,连续采样时间退化为固定小步长而不是离散时间。可变步长用于加快模拟速度(在精度允许的情况下采用更大的步长),但需要技巧来计算,例如,步长触发的确切时间(Enable zero-crossing detection”复选框>Step 块的选项)。因此,Simulink 在这种特殊情况下的最佳前进方式是将 Step 模块的采样时间转换为 Fixed-in-Minor-Step,它会向前传播并由模型中的所有其他模块继承。

    4. 这通常是一种尴尬的采样时间类型,它实际上不是连续时间,但仍然被所有块看到。因此,固有的离散时间 Unit delay 会抱怨由连续时间信号驱动(您的 2nd 警告),而 Simulink 本身会抱怨完全缺乏任何地方的“真实”连续时间块,同时被指示使用连续时间求解器,ode45(您的 1st 警告)。

    像往常一样在软件开发中:总是最好是明确的,关于一切。在这种情况下,最简单的解决方法是在模型配置对话框中明确指定离散时间、固定步长求解器。这样,步骤中的连续时间将自动转换为 Unit delay 的离散时间。

    【讨论】:

    • 如何在模型配置对话框中指定离散时间、固定步长求解器?抱歉,我对 simulink 有点陌生...
    • @LaurentiuAdrianParaschiv 除非它发生巨大变化(我在 R2010a 上),否则打开模型配置对话框 (Ctrl+E)。在左侧,您可以选择配置类别。选择Solver。然后,在右侧的Solver Options 下,选择Fixed Step type 和discrete-time solver。此外,您可以明确指定采样时间。设置为 auto 时,Simulink 将选择一个采样时间,以便总共执行 50 个步骤。您可能需要更多以获得更好看的范围输出。
    • 现在它给了我以下错误:无法根据模型“ex2_2”中的采样时间确定固定步长,因为该模型没有任何离散采样时间。根据模拟开始和停止时间选择固定步长 (0.2)。您可以通过在“配置参数”对话框的“求解器”窗格中明确指定固定步长,或在“配置参数”对话框的“诊断”窗格的“求解器”组中将“自动求解器参数选择”诊断设置为“无”来禁用此诊断盒子。
    • @LaurentiuAdrianParaschiv 如果您明确指定采样时间为 0.2?
    【解决方案2】:

    您要实现的框图是一个离散时间系统。由于没有常微分方程 (ODE),只有它们的离散对应方程(有限差分方程),因此警告 1 指出,您不需要 ODE 求解器。

    在离散时间系统中,您必须指定采样时间以接近连续时间表示,其中每个瞬间 t 由离散整数 n 和其级数(n+1、n+2 等)为t = nT,其中 T 是您的采样时间; Simulink 基本上希望您尊重这种逻辑,然后要求一个采样时间。默认情况下,Simulink 将其设置为变量,这可能导致结果“偏离轨道”。这就是警告 2 所指出的。

    解决方案:在“模型配置参数”菜单的“求解器”选项卡上,将“固定步长”设置为“类型”。窗格将随着与采样时间相关的字段(固定步长)而改变;然后以秒为单位设置不同于“自动”的采样时间(例如 0.01)。这将解决警告 2。仍然在 Solver 菜单中,还设置“离散(无连续状态)”而不是任何其他无用的求解器。这将解决警告 1。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-08
      • 2018-09-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多