西工大电气系统仿真第三四次作业

  • 格式:docx
  • 大小:723.26 KB
  • 文档页数:15

电气系统仿真第三第四次作业专业:电气工程及其自动化学生姓名:郭振超学生学号:2014301801学生班号:09021402第三次1.clc;clear;num=[1 0];den=[1 2 10];h=tf(num,den) %h(s)hz=tf(num,den,0.1) %h(z)num1=[1 -1];den1=[1 1];num2=[1 2];den2=[1 4 5];sys1=tf(num1,den1);sys2=tf(num2,den2);H1=[sys1;sys2]H2=[sys1 sys2]2.clc;clear;z1=[-12]; p1=[-1 -4 -5];k1=3;z2=[0];p2=[2 -4];k2=-2;z3=[];p3=[2 -4];k3=-2;h1=zpk(z1,p1,k1)h2=zpk(z2,p2,k2)h3=zpk(z3,p3,k3)%下面转化为传递函数型tf_h1=tf(h1)tf_h2=tf(h2)tf_h3=tf(h3)%下面转化为状态空间模型ss_h1=ss(h1)ss_h2=ss(h2)ss_h3=ss(h3)3.clc;clear;%G1(s)编写G1=tf([1],[1 10]);%G2(s)编写G2=tf([1],[1 1]);%G3(s)编写G3=tf([1 0 1],[1 4 4]);%G4(s)编写G4=tf([1 1],[1 6]);%H1(s)编写H1=tf([1 1 ],[1 2]);%H2(s)编写H2=tf([2],[1]);%H3(s)编写H3=tf([1],[1]);%三种方式表达式不一样但是绘图结果是一样的这是因为一个系统的传递函数表达形式不是唯一的%比较点前移Hx1=H1/G1/G2;%此时G2 G3 H2 构成的闭环传递函数设为 G23G23=feedback(G2*G3,H2);%G1 G23 G4 H3 Hx1算出G(s)G=feedback(G1*G23*G4,Hx1-H3,+1) figure;step(G)G34=feedback(G3*G4,H1,+1);G23=feedback(G2*G34,H2/G4);G=feedback(G1*G23,H3)figure;step(G)Hx1=H1*G4/G2;G23=feedback(G2*G3,Hx1-H2,+1); G=feedback(G1*G23*G4,H3) figure;step(G)4.1clc;clear; a = [-0.5572 -0.7814;0.7814 0];b = [1 -1;0 2];c = [1.9691 6.4493];d=[0 0];sys_ss = ss(a,b,c,0)sys_tf=tf(sys_ss)sys_zpk=zpk(sys_ss)[z,p,k]=ss2zp(a,b,c,d,2)4.2clc;clear;close all;a = [-0.5572 -0.7814;0.7814 0];b = [1 -1;0 2];c = [1.9691 6.4493];d=[0 0];sys = ss(a,b,c,d)sysd=c2d(sys,0.1)figure (1) ;step(sys,'r-',sysd,'b--')figure (2) ;bode(sys,'r-')hold;bode(sysd,'b--')5.clc;clear;close all;H=tf([25],[1 6 25]);step(H,'r-')[y,t]=step(H);ypeak=max(y);n=length(y);for k=1:nif(y(k)==ypeak)peaktime=t(k)temp=k;%记住此时对应数组的位置endendystead=y(n);over=(ypeak-ystead)/ypeak%上升时间,题目要求0到100%,实际定义的10%-90%,按题目要求for k=1:tempif(y(k)>=ystead)risetime=t(k)break;endend%调节时间,98%-102%ydown=0.98;yup=1.02;for k=temp:nif(y(k)<=yup)settime=t(k)break;endend6.clc;clear;close all;H=tf([1],[1 1]);Hd=c2d(H,0.1);figure(1);step(H,'r-',Hd,'b--');figure(2);impulse(H,'r-',Hd,'b--');figure(3);bode(H,'r-',Hd,'b--');7.clc;clear;num=[1 0 3 4 0 ];den=[0 1 3 3 1];Hd=tf(num,den,0.1);figure(1);bode(Hd,'r-');[Gm_d,Pm_d,Wgm_d,Wpm_d] = margin(Hd);Gm_dPm_dH=d2c(Hd,'tustin'); [Gm_c,Pm_c,Wgm_c,Wpm_c] = margin(H);Gm_cPm_c8.clc;clear;G1=tf([44],[0.00167 1]);G2=tf([1],[0.017 1]);G3=tf([1],[0.075 1]);G4=tf([1],[0.1925]);H=tf([0.01158],[1]);G23=feedback(G2*G3,1);%(1)分析比例控制的作用,取比例系数为分别为1 5 10Kp=[6 8 10];% for k=1:3% Gp=tf([Kp(k)],[1]);% G=feedback(Gp*G1*G23*G4,H);% step(G)% hold on;% endfigure(1);Gp1=tf([Kp(1)],[1]);G=feedback(Gp1*G1*G23*G4,H);step(G,'r')hold on;Gp2=tf([Kp(2)],[1]);G=feedback(Gp2*G1*G23*G4,H);step(G,'b')hold on;Gp3=tf([Kp(3)],[1]);G=feedback(Gp3*G1*G23*G4,H);step(G,'y')hold on;legend('Kp=6','Kp=8','Kp=10'); title('比例环节');%由图可以看出,设TD=0、Ti=∞,K 值越大,超调量越大,峰值时间越小,调节时间越大,动态性能越差%(2)采用PI控制,固定比例系数Kp=1,令Ti取0.02, 0.03, 0.04时,% 绘制该系统的阶跃响应曲线Kp=1;Ti=[0.02 0.03 0.04];figure(2);Gp1=tf([Ti(1) 1],[Ti(1) 0]);G=feedback(Gp1*G1*G23*G4,H);step(G,'r')hold on;Gp2=tf([Ti(2) 1],[Ti(2) 0]);G=feedback(Gp2*G1*G23*G4,H);step(G,'b')hold on;Gp3=tf([Ti(3) 1],[Ti(3) 0]);G=feedback(Gp3*G1*G23*G4,H);step(G,'y')hold on;legend('Ti=0.02','Ti=0.03','Ti=0 .04');title('比例-积分环节');%由图可以看出,PI调节时Kp=1固定,积分环节Ti越大,% 系统的超调量越小,峰值时间变大,调节时间越小,动态性能变好% (3) 采用PID控制,固定比例系数Kp=1,Ti=0.01,% 令Td分别取0.01, 0.04, 0.07时,绘制该系统的阶跃响应曲线.Kp=1;Ti=0.01;Td=[0.01 0.04 0.07];figure(3);Gp1=tf([Ti*Td(1) Ti 1],[Ti 0]); G=feedback(Gp1*G1*G23*G4,H); step(G,'r')hold on;Gp2=tf([Ti*Td(2) Ti 1],[Ti 0]); G=feedback(Gp2*G1*G23*G4,H); step(G,'b')hold on;Gp3=tf ([Ti*Td(3) Ti 1],[Ti 0]); G=feedback(Gp3*G1*G23*G4,H); step(G,'y')hold on;legend('Td=0.01','Td=0.04','Td=0 .07');title('比例-积分-微分环节');%由图可以看出,PID调节Kp=1,Ti=0.01固定,% 微分环节Td越大,超调量越小,峰值时间变大,调节时间变小% 系统的动态性能变好第四次1.2.3.1M函数代码:function y = fcn(x,k1,k2,k3) %#codegenif(abs(x)<=1)y=k2*x;elseif (x>1)y=k3*(x-1)+k2;elsey=k1*(x+1)-k2;endend3.2function [sys, x0]=fun3(t,x,u,flag,k1,k2,k3)if flag==0sys=[1,0,1,0,0,0]; %¶¨ÒåÒ»¸ö״̬±äÁ¿¶¨ÒåÒ»¸öÊä³ö ״̬·½³Ìdy=k£¬ Êä³öyx0=[-5];%¼ÙÉè³õʼֵÊÇ-5£¬¿ÉÒÔËæ±ãÉ趨¼´¿É% x0=[-3,-5];elseif flag==1if t<=-1sys(1)=k1;elseif t<=1sys(1)=k2;elsesys(1)=k3;endelseif flag==3sys=x;elsesys=[];end 4.14.2S函数代码function [sys,x0]=fun_4(t,x,u,flag) if flag==0sys=[2;0;2;1;0;0];x0=[1;3];elseif flag==1sys(1)=x(2);sys(2)=-0.5*x(2)-0.8*x(1)+0.9*u; elseif flag==3sys=x;else sys=[];end。