1) 绘制给定系统的根轨迹图:
G(S)?KS(S?1)(S?2),K?1.5
2)给定单位负反馈系统的开环传递函数为:
K(S?2)G(S)?2S?2S?3
①绘制给定系统的Bode 图, 并求系统的幅值裕度(db)和相位裕度。 ②用根轨迹分析法,讨论增益K的变化对系统性能的影响; ③作出K=0.25、0.42、1.5、2、4、6、8时,系统的阶跃响应图。
实验7 SIMULINK对经典控制系统的设计仿真
一 实验目的:
学习用Simulink软件工具对经典控制系统进行仿真设计的基本方法。
二 实验内容
用Simulink工具对下列题目进行仿真设计。
练习7-1 带有右零点或时间迟延环节的系统称为非最小相位系统。本题是研究非最
G(S)?S2n(S)?0.5S?1.5小相位零点的作用。已知系统的传递函数为,编写程序并仿真:
①、设 n(s)=1.5,求该二阶系统阶跃响应及超调量、峰值时间、过渡过程时间; ②、设n(s)=(-s+a)/a ,a={1,3,6},求该二阶系统阶跃响应; ③、设n(s)=(s+a)/a ,a={1,3,6},求该二阶系统阶跃响应;
④、分别绘制②③两项的阶跃响应图,并列表表示所得结果。②③两项的阶跃响应图中应附有①项的阶跃响应曲线,以作比较;
⑤、基于所得的数据,试叙述在阶跃响应中左平面零点与右平面零点各自的作用是什么?
练习7-2 分析滞后与超前补偿器在不稳定系统中的补偿作用。
1以双积分器为例: G(S)?2S
其补偿器有如下三种: Ⅰ、比例补偿器:K(S)=KC
Ⅱ、超前补偿器:K(S)=KC(S+1)/(S+5) Ⅲ、滞后补偿器:K(S)=KC(S+5)/(S+1)
讨论: ①、在第一种情况下,系统能稳定吗?增加KC的作用是什么?
②、在第二种情况下,系统能稳定吗?增加KC的作用是什么? ③、在第三种情况下,系统能稳定吗?增加KC的作用是什么?
④、设KC={0.1,0.5,1},对以上每一种情况进行仿真,求其阶跃响应,要求将
这三种情况的闭环阶跃响应绘制在同一张图中。在每种情况中,仿真时间为{10,50,5}。 练习7-3 对典型的PID控制系统模型进行Simulink仿真,记录仿真结果。并将阶跃输出结果和时间变量写到MATLAB的工作空间变量t和y中,用plot(t ,y)将仿真结果打印出来。比较两种仿真结果。取Kp=10, Ki=3, Kd=2
PID控制系统模型框图和Simulink仿真图见图7-1,图7-2; + KKp?i?KdSSS3?7S2?24S?24S4?10S3?35S2?50S?24_ 图7-1 PID控制系统模型框图
图7-2 PID控制系统仿真模型
附录 MATLAB常用函数
1、常用矩阵函数
命令 d=eig(A) [v,d]=eig(A) det(A) inv(A) poly(A) trace(A) orth(A) 说明 矩阵特征值 矩阵特征值和特征向量 行列式计算 求逆 特征多项式 对角元素之和 正交化
2、常用特殊矩阵
命令 A=[ ] A=eye( n ) A=ones(n,m) A=zeros(n,m) A=rand(n,m) A=randn(n,m) 空矩阵 N维单位矩阵 全部元素都为1的矩阵 全部元素都为0的矩阵 元素为0到1之间均匀分布的随机矩阵 元素为零均值单位方差正态分布的随机矩阵 说明
3、图形绘制和修饰
(1)坐标轴调整
axis([xmin xmax ymin ymax]) 图形的x轴范围限定在[xmin xmax]
y轴范围限定在[ymin ymax]
axis(‘控制字符串’) 根据字符串控制图形
set(gca,‘xtick’,标示向量) 按照向量设置X坐标的刻度标示 set(gca,’ytick’,标示向量) 按照向量设置Y坐标的刻度标示
set(gca,‘xticklabel’,‘字符串|字符串?') 按字符串设置X坐标的刻度标示 set(gca,'yticklabel’,‘字符串|字符串?') 按字符串设置Y坐标的刻度标示 (2)文字标示
title(‘字符串’) 图形标题 xlabel(‘字符串’) x轴标注
ylabel(‘字符串’) y轴标注 text(x,y,‘字符串’) 在坐标处标注说明文字 gtext(‘字符串’) 用鼠标在特定处标注说明文字 (3)网格控制
grid on 在所画的图形中添加网格线 grid off 在所画的图形中去掉网格线 (4)图例注解
legend(‘字符串1’,‘字符串2’,?,参数)
为区分各条曲线以字符串进行注解说明,参数确定注解在图形中的位置。
(5)图形的保持
hold on 保持当前图形及轴系的所有特性 hold off 解除命令
(6)图形窗口的分割 可把一个绘图窗口分割成几个区域,分别绘图。 subplot(m,n,p) 将当前绘图窗口分割成m行n列区域,指定第p个编号区域
为当前绘图区。 区域编号原则:“先上后下,先左后右”。
4、线性系统分析设计
(1)模型描述
状态空间:写为A、B、C、D四个矩阵的形式;也可用SYS = SS(A,B,C,D) 传递函数:用分子、分母的多项式表示;可用SYS = TF(NUM,DEN)建立tf模型
num(1)snn?1?num(2)snn?2?...?num(nn?1)s?num(nn) G(s)?den(1)snd?1?den(2)snd?2?...?den(nd?1)s?den(nd)零极点:用增益k、分子零点向量z、分母极点向量p表示,
G(s)?ki[s?z(1)][s?z(2)]???[s?z(m)]
[s?p(1)][s?p(2)]???[s?p(n)]同样可用 SYS = ZPK(Z,P,K)建立zpk模型 部分分式:
G(s)?num(s)r(1)r(2)r(n)???....??k(s)
den(s)s?p(1)s?p(2)s?p(n)传递函数没有相同极点时,可与部分分式相互转换:
[r,p,k]=residue(num,den) 传递函数变换为部分分式形式 [num,den]=residue(r,p,k) 部分分式变换为传递函数形式 闭环系统
feedback 反馈连接 SYS = feedback(SYS1,SYS2,sign)
[A,B,C,D]=feedback(A1,B1,C1,D1,A2,B2,C2,D2,sign)
[num,den]=feedback(num1,den1,num2,den2,sign)
sign=+(-)1反馈极性,缺省-1为负反馈
series系统串联
类似地,有 parallel系统并联
(2)模型转换ss—状态空间、tf—传递函数、zp—零极点 ? [num,den]=ss2tf(a,b,c,d,iu) 状态空间到传递函数 ? [z,p,k]=ss2zp(a,b,c,d,iu) 状态空间到零极点
? [a,b,c,d]=tf2ss(num,den) 传递函数到状态空间 ? [z,p,k]=tf2zp(num,den) 传递函数到零极点
? [a,b,c,d]=zp2ss(z,p,k) 零极点到状态空间
? [num,den]=zp2tf(z,p,k) 零极点到传递函数 ? [r,p,k]=residue(num,den) 传递函数到部分分式 ? [num,den]=(r,p,k) 部分分式到传递函数
(3)系统分析 (以下模型描述也可以用状态空间表达式的A、B、C、D)
? step(num,den) 直接画出单位阶跃响应曲线,时间是自动给定
[y,x] =step(num,den,T) 求系统在T时间向量下的单位阶跃响应输出,y是列
向量,并返回状态x的变化。
? Impulse,lism 用法类似step ? bode(num,den,w) 直接绘出bode图。
? [m,p]= bode(num,den,w) 求出幅值和相角,可再用半对数坐标画图 ? Nyquist(num,den,{wmin,wmax})
直接绘Nyquist曲线,{wmin,wmax}频率范围
? [real,imag,ww]= Nyquist(num,den,{wmin,wmax})
得到实部、虚部,可再绘图。
? rlocus(num,den) 直接绘出根轨迹
? [r,k]= rlocus(num,den) 返回增益和对应的复极点 ? [r]= rlocus(num,den,k) 返回给定增益对应的复极点 (4)状态反馈设计
? M=ctrb(A,B) 系统的能控矩阵 M=[B AB A2B … An-1B]
? N=obsv(A,C) 求取系统的能观矩阵 N=[C CA CA2 … CAn-1]
k=acker(A,B,p) (单输入)对于期望极点p,求出系统的状态反馈增益阵k