(3)
57.66StepGain(s+3.33)(s+24)Zero-Pole10sTransfer Fcn12s +10s+16Transfer Fcn1Scope57.66Step1Gain10.6770-0.5730z -11.0000-0.2500z -1Discrete Filter0.2500+0.2500z -11-z -1Discrete Filter1-1-20.000496+0.0009921z +0.000496z -1-21.0000-1.5714z +0.6032z Discrete Filter2
21
实验三
1、(P89例3.1)某数字控制系统如图所示,其输入为单位阶跃信号,采样周期T=0.1s,试求系统在各采样时刻的输出y(t)。
r(t) e(t)Te(kT)11?0.5z?1数字控制器D(z)u(kT)T1?e?Tssu(t)1sx11s?1x2y(t)保持器Gh(s)被控对象G0(s)解:程序如下: clear all
m=2; n=3; % 明确输入、输出存储向量单元的维数; A=[2.4 -1.863 0.453]; % 差分方程输出项系数行向量 B=[0 0.005 0.005]; % 差分方程输入项系数行向量
R=zeros(m+1,1); % 建立参与递推运算的输入信号序列存储列向量
Y=zeros(n,1); % 建立参与递推运算的输出信号序列存储列向量 T=0.1; % 明确采样周期T=0.1s
Tf=15; M=Tf/T; % 设定仿真总时间为15s(共进行M=150次递推计算) yt=0;t=0; for k=1:M
R(k)=1; % kT采样时刻输入
R=[R(k);R(1:m)]; % 刷新参与递推运算的输入信号序列 yk=A*Y+B*R; % 递推运算
Y=[yk;Y(1:n-1)]; % 刷新参与递推运算的输出信号序列
yt=[yt,yk]; % yt为记载各采样(kT)时刻输出响应的行向量 t=[t,k*T]; % t为记载各采样(kT)时刻的行向量(与yt对应) end
plot(t,yt,'*m'); % 绘制各采样(kT)时刻的输出响应图 grid;
xlabel('time(s)'); ylabel('y(kT)');
1.51y(kT)0.5005time(s)1015
22
2、(P92例3.2)数字控制系统同例3.1,采样周期T=0.1s,采用双重循环方法求系统在单位阶跃信号r(t)=1(t) 作用下的状态响应设初始状态。设初始状态
解:程序如下:
F=[1 0;0.01 0.99];
x1(0)?x2(0)?0G=[0.01;0];c=[0 1]; % 连续被控对象的离散化状态方程的系数阵 TF=15; % 设定总仿真时间为15s
T=0.1;h=0.01; % 设定内循环步长h=0.01,而外循环则以采样周期T=0.1为步长 N1=round(TF/T); % 离散部分计算的次数(外循环)
N2=round(T/h); % 在一采样周期内连续被控对象计算次数(内循环) x=[0;0]; %为状态变量设置初始值 u=0;t=0; xt=x;
for k=1:N1 % 外循环 y=c*x; r(k)=1;
e(k)=r(k)-y;
u=0.5*u+e(k); % 外循环中递推求数字控制器在实际采样时刻的输出(步长为T) for j=1:N2 % 内循环
x=F*x+G*u; % 内循环中递推求受控对象状态响应(步长为h) xt=[xt,x]; % xt为记载各步状态响应的矩阵
t=[t,j*h+(k-1)*T]; % t为记载各采样(kT)时刻的行向量(与yt对应) end end
x1t=xt(1,:);x2t=xt(2,:); %输出状态变量x1,x2 plot(t,x1t,':k',t,x2t,'*m'); legend('x1', 'x2'); grid;
xlabel('time(s)');
21.81.61.41.210.80.60.40.20 05time(s)1015x1x2
23
3、采样控制系统数字仿真实验,系统采样周期为0.1s。求采用以下采样周期进行系统仿真,分析单位阶跃输入时的响应特性:1)T=0.1s, 2) T=0.04s
解:SIMULINK图形如下:
(z-0.98)(z-0.64)StepDiscreteZero-PoleZero-OrderHold1s+1Transfer Fcn1sIntegratorScope(z-0.98)(z-0.64)Step1DiscreteZero-Pole1Zero-OrderHold11s+1Transfer Fcn11sIntegrator1
24
1.% 这是例6.2的仿真程序 F=[1 0;0.01 0.99];
G=[0.01;0];c=[0 1]; % 连续被控对象的离散化状态方程的系数阵 TF=15; % 设定总仿真时间为15s
T=0.1;h=0.01; % 设定内循环步长h=0.01,而外循环则以采样周期T=0.1为步长
N1=round(TF/T); % 离散部分计算的次数(外循环)
N2=round(T/h); % 在一采样周期内连续被控对象计算次数(内循环) x=[0;0]; %为状态变量设置初始值 u=0;t=0; xt=x;
for k=1:N1 % 外循环 y=c*x; r(k)=1;
e(k)=r(k)-y;
u=0.5*u+e(k); % 外循环中递推求数字控制器在实际采样时刻的输出(步长为T)
for j=1:N2 % 内循环
x=F*x+G*u; % 内循环中递推求受控对象状态响应(步长为h) xt=[xt,x]; % xt为记载各步状态响应的矩阵
t=[t,j*h+(k-1)*T]; % t为记载各采样(kT)时刻的行向量(与yt对应) end end
x1t=xt(1,:);x2t=xt(2,:); %输出状态变量x1,x2 plot(t,x1t,':k',t,x2t,'*m'); legend('x1', 'x2'); grid;
xlabel('time(s)');
2.% 求连续被控对象离散化状态方程的程序(基于连续系统离散相似算法) h=0.01; % 虚拟采样周期为0.01s A=[0 0;1 -1]; B=[1;0];
[F,G]=c2d(A,B,h) % 输入端采用零阶保持器
3.% 这是例7.1的仿真程序 clear all
m=2; n=3; % 明确输入、输出存储向量单元的维数; A=[2.4 -1.863 0.453]; % 差分方程输出项系数行向量 B=[0 0.005 0.005]; % 差分方程输入项系数行向量
25