一个奇怪的问题,同一个系统的传函表示和差分表示仿真结果不一样??
我发现一个奇怪的问题,请大家帮忙指点下,谢谢各位:被控系统是一个稳定的离散系统,输入就是简单的恒值信号(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直接仿真的应该没多少问题啊,这个程序应该是很简单的。。。。
各位帮忙看看吧,谢谢:) 差分方程写错了 建议楼主列出程序 我试了下,方程没问题,原因在于参数0.7788,末尾少了一个2,导致系统不稳定了。 那个2 应该不影响,他的差分方程写错了
回复 地板 xianfa110 的帖子
乖乖0.7788与0.77882误差不到0.01%, 就会导致系统不稳定了!只不过直觉怪怪的, 除非系统本身邻近不稳定区域, 不然差那麽少会有那麽大影响吗? 感觉或许尚有其他设定有问题!
对不起, 控制这东东, 个人是门外汉, 且隔行如隔山
各位大牛, 麻烦帮帮释疑! 呵呵,不信你试试,不用他那个差分方程,直接把那个离散传函的参数少个2,看看发散不。
看看那个传函的参数都那么小,就知道这个2的影响有多大了。
原帖由 yufeng 于 2008-11-3 08:52 发表 http://www.chinavib.com/forum/images/common/back.gif
那个2 应该不影响,他的差分方程写错了 看看系统的特征根
>> 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 确实发散 , 但是比较奇怪的是他的差分方程确实写错了,可是和我的正确模型的结果图像一样,怪!!! 差分方程没写错啊!z^(-1)就表示延迟一拍。没问题的。
原帖由 yufeng 于 2008-11-4 09:12 发表 http://www.chinavib.com/forum/images/common/back.gif
确实发散 , 但是比较奇怪的是他的差分方程确实写错了,可是和我的正确模型的结果图像一样,怪!!! 我曾经遇到过这样的问题,在simulink里用示波器看到的波形,和输出到workspace再用plot画出来的,两个一点都不一样。就像你你这样大的差距。
我这样解决:在smulink仿真开始前按ctrl+E,在workspace I/O下,把limit data points to last 的值1000后面添三个0,就解决了。
所以我想没准是plot画图采样或者精度的问题?
页:
[1]