1、 1 第一章第一章 引引 言言 1.1 MATLAB软件简介软件简介 MATLAB 是 matrix %清除包括全局变量在内的所有变量 close all; %关闭所有窗口(程序运行产生的,不包括命令窗, editor 窗和帮助窗) Ts=20; %定义变量 ts 表示采样时间 %delay plant kp=1; %用传函形式建立被控对象模型 Tp=60; delay=80; sys=tf(kp,Tp,1,inputdelay,80) %用加零阶保持器的方法将传函离散化 dsys=c2d(sys,Ts,zoh); %从 LTI 对象提取传递函数两对组模型参数 其中参数v的意义是以向量形式输出
2、 num,den=tfdata(dsys,v); M=1; if M=1; %对象模型不精确时,采用用 Pi+smiith 控制 kp1=kp*1.10; %对象模型不精确时,确定比例系数 Tp1=Tp*1.10; %由被控对象传韩得 Tp=60 delayl=delay*1.0; %对象模型不精确时,确定滞后时间 elseif M=2|M=3 %在对象模型精确采用 Pi+Smith 或者采用 Pi 控制 kp1=kp; %在对象模型精确时,确定比例系数 Tp1=Tp; %由被控对象传韩得 Tp=60 delay1=delay; %在对象模型精确时,确定滞后时间 End %在三种情况下,用传函
3、形式建立被控对象模型 sys=tf(kp1,Tp1,1,inputdelay,80); %在三种情况下,用加零阶保持器的方法将传函离散 化 dsys1=c2d(sys,Ts,zoh); %在三种情况下从 LTI 对象提取传递函数两对组模型 参 数其中参数v的意义是以向量形式输出 num1,den1=tfdata(dsys1,v); %数字控制器初始输出设置为零 u_1=0.0;u_2=0.0;u_3=0.0;u_4=0.0;u_5=0.0; e1_1=0; %系统误差初值设置为零 e2_1=0.0; %数字控制器输入误差初值设置为零 ei=0; %所有采样时刻误差值之和开始时设置为零 xm_1
4、=0.0; %不含有滞后环节被控对象预估器输出初值为零 14 ym_1=0.0; %含有滞后环节被控对象预估器输出初值为零 y_1=0.0; %系统初始时刻输出设置为零 for k=1:1:600 time(k)=k*Ts; %采样时间信号值 s=2; if s=2 %跟踪方波信号 rin(k)=sign(sin(0.0002*2*pi*k*Ts); End %计算不含有滞后环节被控对象预估模型输出值 xm(k)=-den(2)*xm_1+num(2)*u_1 %计算含有滞后环节被控对象预估模型输出值 yout(k)=-den(2)*y_1+num(2)*u_5 if M=1 %对象模型不精确
5、时,Pi+smith 控制 e1(k)=rin(k)-yout(k); %计算系统误差值 e2(k)=e1(k)-xm(k)+ym(k); %计算数字控制器输入误差值 e2(k)=e1(k)-xm(k)+ym(k); ei=ei+Ts*e2(k); %计算所有采样时刻误差值之和 %采用位置式控制算法得到数字控制器输出控制 量 u(k)=0.50*e2(k)+0.010*ei e1_1=e1(k); %更新系统误差值 elseif M=2 %对象模型精确时,Pi+smith 控制 e2(k)=rin(k)-xm(k); %计算数字控制器输入误差 ei=ei+Ts*e2(k); %计算所有采样时刻误差值之和 %采用位置式控制算法得到数字控制器输出控制量 u(k)=0.50*e2(k)+0.010*ei e2_1=e2(k); %更新数字控制器输入误差值 elseif M=3 %仅采用 Pi 控制 e1(k)=rin(k)-yout(k); %计算系统误差值 ei=ei+Ts*e1(k); %计算所有采样时刻误差值之和 u(k)=0.50*e1(k)+0.010*ei e1_1=e1(k); %更