1

我相信在尝试在 Simulink 中导入和测试在 System Identification Toolbox (SIT) 中创建的传递函数时,我在做一些根本性的错误。

举一个简单的例子来说明我在做什么。我有一个输入,它是一个从 12 秒到 25 秒的偏移正弦波,幅度为 1,频率为 1.5rad/s,它给出了测量输出。

我使用 SIT 创建了一个简单的 2 极 1 零传递函数,它给出了以下协议: 坐适合

然后,我尝试将此传递函数导入 Simulink,以便在以下配置中进行调查,该配置具有频率 1.5rad/s 的正弦输入和起始 t=12。LTI 系统块是指工作空间内的传递函数变量: Simulink 原理图

当我运行这个模拟 13 秒时,模块的输入与预期的一样,但后传递函数信号与预期的结果几乎没有一致,并且超出了一个数量级。

前: 预信号

邮政: POST 信号

有人可以深入了解我哪里出错了,为什么tfin simulink 的输出与 SIT 中显示的模型输出几乎没有相似之处。我对控制理论有基本的了解,但我很难理解这一点。

4

1 回答 1

1

这可能是由于 SimuLink 和 SI Toolbox 中使用的初始条件不同,后者应该使用模型估计初始条件,而 Simulink 对初始条件没有什么特别之处,除非您自己指定它们。

在我看来,您的原始信号似乎处于周期性状态,因为您的输出看起来也几乎像正弦波。在周期状态下,初始条件几乎没有影响。您可以通过长时间模拟您的模型来验证我的假设:如果最后,您的信号达到数据中正确的幅度和相位滞后,您就会知道初始条件是错误的。无论如何,您都可以从工具箱中获得估计的初始状态,我认为使用InitialState结果对象的属性。

另一件可能出错的事情是您在 Simulink 中使用的时间离散化,以防您估计连续时间模型(拉普拉斯变量中的一个s,而不是zor中的一个q)。

编辑:在这种情况下,我建议您检查 Simulink 用于离散化 CT 模型的方法,方法是c2d在 MATLAB 中使用,并在 Simulink 中使用如下设置。在 MATLAB 中,您还可以使用 来“模拟”对 CT 模型的响应lsim,您必须在其中指定离散化方法。

在此处输入图像描述

此设置允许您加载 CT 模型和离散变量(在本例中为状态空间表示)。通过比较信号,你可以看到你使用的离散化方法是否与 SimuLink 使用的相同(这取决于你在设置中设置的积分方法)。

于 2014-02-25T15:37:57.907 回答