我已经创建了以下simulink模型与两个块,一个直接加法和另一个块的单位延迟。simulink配置参数为0.2级固定步长的固定步长求解器。现在我的疑问是,对于没有单位延迟的块,在第0次仿真时输出是可用的,这是2,但在单元延迟的情况下,输出在第0次仿真时为0。为什么?simulink模型很抱歉,但我无法找到这个型号。
发布于 2016-05-08 08:50:32
你可以把你的Simulink图想象成具有输入和输出的离散线性动力系统。使用传递函数方法,这样的系统可以通过
(1) Y(z)=G(z)X(z)
其中,Y(z)是系统的输出,X(z)是输入,G(z)是传递函数(注意:为了解释的简单性,我在现阶段省略了初始条件)。系统的每个单独块也可以作为表单(1)的系统来处理。
考虑一下您的第一个图表。以输入输出形式(1)表示的常量块是
(2) Y1(z) = G1(z)X(z)
含:G1(z) = 1,R.
(3) Y1(z) = X(z).
每个Simulink‘单元延迟’块可以被看作是一个具有表单(1)传递函数的表单Gu(z) = z^(-1)系统。将图中与“单位延迟”块关联的传递函数表示为G2(z),将图底部的传递函数表示为G3(z)。在这种情况下,我们有G3(z) = G2(z) = Gu(z) = z^(-1)。请注意,与G2关联的系统的输入是系统(3)的输出,而与G3关联的系统的输入是与G2关联的系统的输出。考虑到上述考虑,对应于与G1和G2相关联的单元延迟块的系统分别由(4)和(5)给出。
(4) Y2(z) = G2(z)*Y1(z) = z^(-1)*Y1(z) = z^(-1)*G1(z)*X(z) = z^(-1)*X(z)
(5) Y3(z) = G3(z)Y2(z) = z^(-1)*z^(-1)*X(z) = z^(-2)*X(z)
假设与整个模型相关联的系统的输出表示为Y(z),并对应于求和块的输出,则整个系统的传递函数可以表示为
(6) Y(z) = Y1(z) + Y2(z) + Y3(z)
概括如下:
(7a) Y1(z) = X(z)
(7b) Y2(z) = z^(-1)*Y1(z)
(7c) Y3(z) = z^(-1)*Y2(z)
(7d) Y(z) = Y1(z) + Y2(z) + Y3(z)
上面的系统对应于一个形式的差分方程。
(8a) y1(k) = x(k)
(8b) y2(k) = y1(k-1)
(8c) y2(k) = y2(k-1)
(8d) y(k) = y1(k) + y2(k) + y3(k)
要了解这一点,可以将Z变换应用于上面的等式(8)。您可以假设在Simulink中,模拟总是从k=0开始(获取与您需要使用t(k) = k*T的输出相关联的“物理时间”,其中T是在求解器属性中设置的采样时间)。因此,您需要提供y1(k)和y2(k)的值,以便k=-1能够解决所有k>=0的系统问题。
所有表示传递函数(无论是离散的还是连续的)的Simulink块都允许分配初始条件。对于离散系统,假设初始条件对所有k<=0有效(如果考虑物理时间,则为t<=0 )。表示传输函数的块的默认初始条件是0。因此,当您模拟系统(8)时,Simulink假设y1(-1)=0,y2(-1)=0。constant block为所有k>=0分配x(k) = 1。
鉴于以上所述,让我们在时间步骤(8)中计算系统k=0,1,2的值。
在k=0
y1(0) = x(0) = 1,y2(0) = y1(-1) = 0,y3(0) = y2(-1) = 0,y(0) = 1
在k=1
y2(1) = x(1) = 1,y2(1) = y1(0) = 1,y3(1) = y2(0) = 0,y(0) = 2
在k=2
y2(2) = x(2) = 1,y2(2) = y1(1) = 1,y3(2) = y2(1) = 1,y(0) = 3
https://stackoverflow.com/questions/37096475
复制相似问题