RockRain 发表于 2008-10-29 23:29

一个奇怪的问题,同一个系统的传函表示和差分表示仿真结果不一样??

我发现一个奇怪的问题,请大家帮忙指点下,谢谢各位:

被控系统是一个稳定的离散系统,输入就是简单的恒值信号(1),无反馈。

(1)、当直接用simulink仿真时(系统用Z传函表示),系统如下:


仿真结果如下:


(2)、当使用Matlab直接写程序仿真时:
      被控系统用其差分方程表示:y(i) = 3.7564 * y(i-1) - 5.2922 * y(i-2)+ 3.3146 * y(i-3)- .7788 * y(i-4) + .0000598 * u(i-1)+ .0001722 * u(i-2)- .0001589 * u(i-3) - .000051 * u(i-4)
      输入为恒值:u(i) = 1
      可是仿真结果却是:


怎么会差这么多?用matlab直接仿真的应该没多少问题啊,这个程序应该是很简单的。。。。
各位帮忙看看吧,谢谢:)

yufeng 发表于 2008-10-30 08:42

差分方程写错了

ChaChing 发表于 2008-10-30 10:38

建议楼主列出程序

xianfa110 发表于 2008-11-2 22:34

我试了下,方程没问题,原因在于参数0.7788,末尾少了一个2,导致系统不稳定了。

yufeng 发表于 2008-11-3 08:52

那个2 应该不影响,他的差分方程写错了

ChaChing 发表于 2008-11-3 10:33

回复 地板 xianfa110 的帖子

乖乖0.7788与0.77882误差不到0.01%, 就会导致系统不稳定了!
只不过直觉怪怪的, 除非系统本身邻近不稳定区域, 不然差那麽少会有那麽大影响吗? 感觉或许尚有其他设定有问题!
对不起, 控制这东东, 个人是门外汉, 且隔行如隔山
各位大牛, 麻烦帮帮释疑!

xianfa110 发表于 2008-11-4 00:00

呵呵,不信你试试,不用他那个差分方程,直接把那个离散传函的参数少个2,看看发散不。
看看那个传函的参数都那么小,就知道这个2的影响有多大了。

原帖由 yufeng 于 2008-11-3 08:52 发表 http://www.chinavib.com/forum/images/common/back.gif
那个2 应该不影响,他的差分方程写错了

xianfa110 发表于 2008-11-4 00:06

看看系统的特征根
>> c=;
>> roots(c)

ans =

   0.9902 + 0.0324i
   0.9902 - 0.0324i
   0.8880 + 0.0701i
   0.8880 - 0.0701i

>> c=;
>> roots(c)

ans =

   1.0000         
   0.9593         
   0.8986 + 0.0667i
   0.8986 - 0.0667i

yufeng 发表于 2008-11-4 09:12

确实发散 , 但是比较奇怪的是他的差分方程确实写错了,可是和我的正确模型的结果图像一样,怪!!!

xianfa110 发表于 2008-11-5 00:01

差分方程没写错啊!z^(-1)就表示延迟一拍。没问题的。

原帖由 yufeng 于 2008-11-4 09:12 发表 http://www.chinavib.com/forum/images/common/back.gif
确实发散 , 但是比较奇怪的是他的差分方程确实写错了,可是和我的正确模型的结果图像一样,怪!!!

zhanying007 发表于 2008-11-6 10:57

我曾经遇到过这样的问题,在simulink里用示波器看到的波形,和输出到workspace再用plot画出来的,两个一点都不一样。就像你你这样大的差距。
我这样解决:在smulink仿真开始前按ctrl+E,在workspace I/O下,把limit data points to last 的值1000后面添三个0,就解决了。
所以我想没准是plot画图采样或者精度的问题?
页: [1]
查看完整版本: 一个奇怪的问题,同一个系统的传函表示和差分表示仿真结果不一样??