Simulink模型错误

时间:2017-01-16 15:00:28

标签: matlab simulink

我必须在这张图片之后创建Simulink Diagram:

Diagram

我的回答是这个:

Simulink image

我已经为abc(如3,4和5)提供了一些值,但是当我尝试运行它时,它给了我以下警告:

  

警告:型号' ex2_2'没有连续状态,因此Simulink正在使用   求解器' VariableStepDiscrete'而不是解决方案' ode45'。您可以通过禁用此诊断   在配置参数的求解器选项卡中显式指定离散求解器   对话框,或通过设置'自动求解器参数选择'诊断到没有'在里面   “配置参数”对话框的“诊断”选项卡

     

警告:' ex2_2 /单位延迟'是离散的,但是继承了连续的采样时间;考虑   用内存块替换单元延迟。当单位延迟块继承连续样本时   时间,它的行为与内存块相同。单位延迟块的时间延迟不会   固定,可以随着每个时间步而改变。这可能是意外行为。通常,a   单位延迟块使用离散采样时间。您可以通过设置来禁用此诊断   ' Discrete用作连续'诊断到没有'在示例时间组中   “配置参数”对话框的“诊断”窗格。 "

和输出(范围)它只是一个步骤信号...

我不知道我在哪里错了。

2 个答案:

答案 0 :(得分:1)

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

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

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

      

    [...] Simulink将[固定在次要步骤]设置为继承的采样时间或用户指定为0(连续)的更改。当您使用固定步长求解器时,此设置相当于并因此转换为最快离散速率。

    在变步长求解器的上下文中,连续采样时间降级为固定在次要步骤而不是离散时间。可变步长用于加速模拟(当准确度允许时采取更大的步骤),但需要诡计来计算,例如,步骤触发的确切时间(“Enable zero-crossing detection”勾选框中 Step 块的选项)。因此,Simulink在这种特定情况下的最佳前进方法是将 Step 块的采样时间转换为固定在次要步骤,该步骤向前传播并由模型中的所有其他块继承。

  4. 这通常是一种尴尬的采样时间,实际上不是连续时间,但仍然可以被所有块看到。因此,固有的离散时间单位延迟会抱怨被连续时间信号驱动(你的2 nd 警告),而Simulink本身会抱怨完全缺乏任何地方的“真实”连续时间块,同时被指示使用连续时间解算器,ode45(你的1 st 警告)。
  5. 与软件开发中一样: 总是 最好是明确的,关于 一切 。在这种情况下,最简单的方法是在模型配置对话框中明确指定离散时间固定步长求解器。这样,从步骤开始的连续时间将自动转换为单位延迟的离散时间。

答案 1 :(得分:0)

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

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

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