欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

控制系统数字仿真与CAD-第四次实验-附完整代码

最编程 2024-02-06 17:11:26
...
1. function [result]=fun4(Kn) 2. tn=0.03; 3. Ki=0.269; 4. ti=0.067; 5. Ks=76; 6. Ts=0.00167; 7. R=6.58; 8. Tl=0.018; 9. Tm=0.25; 10. Ce=0.031; 11. Alpha=0.00337; 12. Beta=0.4; 13. A=[0 0 1 1 0]; 14. B=[tn ti Ts Tl Tm*Ce]; 15. C=[Kn Ki Ks 1/R R]; 16. D=[Kn*tn Ki*ti 0 0 0]; 17. c=8; 18. r=1; 19. W=[0 0 0 0 -Alpha; 20. 1 0 0 -Beta 0; 21. 0 1 0 0 0; 22. 0 0 1 0 -Ce; 23. 0 0 0 1 0]; 24. W0=[1 0 0 0 0 ]'; 25. block_num=5; 26. h=0.001; 27. t_end=0.5; 28. t=0:h:t_end; 29. for k=1:block_num 30. if (A(k)==0) %求积分或积分比例环节各系数 31. FI(k)=1; 32. FIM(k)=h*C(k)/B(k); 33. FIJ(k)=h*h*C(k)/B(k)/2; 34. FIC(k)=1; 35. FID(k)=0; 36. if(D(k)~=0) %若为积分比例,修正fai d 37. FID(k)=D(k)/B(k); 38. end 39. else 40. FI(k)=exp(-h*A(k)/B(k)); % 求惯性或惯性比例环节各系数 41. FIM(k)=(1-FI(k))*C(k)/A(k); 42. FIJ(k)=h*C(k)/A(k)-FIM(k)*B(k)/A(k); 43. FIC(k)=1; 44. FID(k)=0; 45. if(D(k)~=0) 46. FIC(k)=C(k)/D(k)-A(k)/B(k); 47. FID(k)=D(k)/B(k); 48. end 49. end 50. end 51. Y0=[0 0 0 0 0]'; 52. n=length(t); 53. Y=Y0; 54. X=zeros(block_num,1); 55. result=Y; 56. Uk=zeros(block_num,1); 57. Ub=Uk; 58. for m=1:(n-1) 59. Ub=Uk; 60. Uk=W*Y+W0*r; 61. Uf=2*Uk-Ub; 62. Udot=(Uk-Ub)/h; 63. % X=FI'.*X+FIM'.*Uk; 64. % Y=FIC'.*X+FID'.*Uf; 65. X=FI'.*X+FIM'.*Uk+FIJ'.*Udot; 66. Y=FIC'.*X+FID'.*Uf; 67. Y(1)=satur(Y(1),c); 68. result=[result,Y]; 69. end 70. 71. end