由此响应曲线得原系统不稳定。
在程序文件的方式下执行如下MATLAB程序: num=[10]; %传递函数得分子
den=[1 3 2 0]; %传递函数得分母
[A,B,C,D]=tf2ss(num,den);%将传函模型转为状态空间模型 sys_ss=ss(A,B,C,D);%建立状态空间模型 Q=[-1+i -1-i -2]; %期望的极点配置 T=ctrb(A,B); %得可控判别矩阵 R=rank(T); %得可控判别矩阵的秩 N=size(A);
n=N(1); %得矩阵A的秩
if det(T)~=0 %可控判别行列式不等于0 if R==n
disp('系统可控!') %可控判别矩阵的秩等于矩阵A的秩系统可控 elseif R disp('系统不可控!') %可控判别矩阵的秩小于矩阵A的秩系统不 可控 else det(T)==0 disp('系统不可控!') %可控判别行列式的值等于0系统不可控 5 end k=acker(A,B,Q)%如果系统可控利用acker函数得反馈向量 end 执行这一程序得: 系统可控! k = 1 4 4 为得到加状态反馈后系统的动态性能指标,在程序文件的方式下执行如下MATLAB程序: num=[10]; %传递函数得分子 den=[1 3 2 0]; %传递函数得分母 [A,B,C,D]=tf2ss(num,den); %将传函模型转为状态空间模型 sys_ss=ss(A,B,C,D); %建立状态空间模型 k=[1 4 4]; sys=ss(A-B*k,B,C,D); %建立状态反馈模型 step(sys) %得系统的阶跃响应 执行这一程序得: 得系统的动态性能指标: 6 上升时间:1.86s 峰值时间:3.92s 峰值:2.57 超调量:2.75% 调节时间:4.59s 终值:2.5 由程序执行所得的矩阵A,B,C,D及向量k得系统加反馈以后的状态方程,进而得其模拟图及加阶跃信号时的输出波形如图所示: 1.5 所得结论: 比较加反馈前后系统的阶跃响应可得利用状态反馈实现极点的指定配置后系统由不稳定状态变为了稳定状态,系统的动态性能均得到了很大的改善。 7 2.1 课程设计心得 课程设计前,对一切都是陌生的,觉得好复杂,需要掌握的东西太多了,对老师讲解的涉及操作的东西几乎一概不知,自己为能否顺利的完成这一任务捏一把汗。 刚开始选定一个题时,觉得无从下手,看着例题中编好的程序觉得跟看天书似的,根本不知道那是啥意思,但几遍过后似乎一下子醒悟了,起码有了头绪。顺着头绪我从先前的照猫画虎到自己可以有条理的做完一个程序,做出一个状态模型图,进而得到输出波形,这期间虽然磕磕绊绊也出现过不少错误,但最终还是成功了。 回想一下这个过程,自己收获还是蛮多的。 首先,我学会耐心理智的看问题。从起初的一点一滴我都认真的对待,每一个问题我都想方设法把它弄透彻了,然后重新开始,每次发现一个错误并且靠自己思索可以解决时,我都会为这一小进步开心许久,而且使我更有信心的去完成后面的每一步。 其次,我还意识到协作的重要性,有时候碰到问题自己就像被裹在里面一样,检查很多遍仍然找不到错误的根源,往往事倍功半。但朋友或老师的一句话或是一个小建议有时就使我事半功倍的从错误的泥潭中抽出,少走很多弯路。这让我看到我的一大缺陷:不善于交流。我总是自己摸索,说不定已经错了,但我完全没有意识,仍然沉浸在其中,直到得到一个错误的结论才回头重新开始,这样既耗费了时间又浪费了精力,往往会觉得付出很多,但收获却没与付出成正比。 此外,这次设计让我对MATLAB/Somulink这一功能强大,形象逼真,便于操作的软件工具在控制系统仿真,分析与设计中的应用有了更深的,更加全面的认识与进一步的掌握,让我更加清楚地认识到了它的重要性与实用性。虽然以前我就知道这一工具在自动控制领域中是一个重要角色,但这种意识只停留在字面的,抽象的概念。经过这次设计,我有了切身体会。 2.2 设计过程中所用的参考书: 《自动控制理论》课程设计指导书 《控制系统仿真及MATLAB应用》 《计算机仿真技术与CAD》 《MATLAB/Simulink与控制系统仿真》 8