1、10 宿迁学院机电工程系 《计算机控制》课程大作业 (2013—2014学年度第2学期) 得 分 题 目 名 称 PID控制器实验 专 业 自动化 班 级 11自动化(2) 姓 名 陆超 学 号 20110710223 起 止 日 期 6/13——6/19 授 课 教 师
2、 仲伟松 目录 一、摘要--------------------------------------------------------------------2 二、实验一-----------------------------------------------------------------3 三、 实验二-----------------------------------------------------------------6 四、总结-----------
3、10 五、 参考文献--------------------------------------------------------------11 摘要 计算机控制技术是一门以电子技术、电气控制技术、计算机应用技术为基础,以计算机控制技术为核心,综合可编程控制技术、单片机技术、计算机网络技术,从而实现生产技术的精密化、生产设备的信息化、生产过程的自动化及机电控制系统的最佳化的专门学科。 计算机控制系统是在自动控制技术和计算机技术发展
4、的基础上产生的。若将自动控制系统中的控制器的功能用计算机来实现,就组成了典型的计算机控制系统。它用计算机参与控制并借助一些辅助部件与被控对象相联系,以获得一定控制目的而构成的系统。其中辅助部件主要指输入输出接口、检测装置和执行装置等。它与被控对象的联系和部件间的联系通常有两种方式:有线方式、无线方式。控制目的可以是使被控对象的状态或运动过程达到某种要求,也可以是达到某种最优化目标。 实验一、增量式PID控制算法及仿真 当执行机构需要的是控制量的增量(例如驱动步进电机)时,应采用增量式PID控制,根据递推原理可得增量式PID控制算法为
5、 设被控对象,采用增量式控制算法,PID控制参数。 仿真程序: %Increment PID Controller clear all; close all; ts=0.001; sys=tf(200,[1,50,0]); dsys=c2d(sys,ts,'z'); [num,den]=tfdata(dsys,'v'); u_1=0.0;u_2=0.0;u_3=0.0; y_1=0;y_2=0;y_3=0; x=[0,0,0]'; error_1=0; error_2=0; for k=1:1:1000 time(k)
6、k*ts; rin(k)=1.0; kp=8; ki=0.10; kd=10; du(k)=kp*x(1)+kd*x(2)+ki*x(3); u(k)=u_1+du(k); if u(k)>=10 u(k)=10; end if u(k)<=-10 u(k)=-10; end yout(k)=-den(2)*y_1-den(3)*y_2+num(2)*u_1+num(3)*u_2; error=rin(k)-yout(k);
7、 u_3=u_2;u_2=u_1;u_1=u(k); y_3=y_2;y_2=y_1;y_1=yout(k); x(1)=error-error_1; %Calculating P x(2)=error-2*error_1+error_2; %Calculating D x(3)=error; %Calculating I error_2=error_1; error_1=error; end plot(time,rin,'b',time,yout,
8、'r'); xlabel('time(s)');ylabel('rin,yout'); 由于控制算法中不需要累加,控制增量Δu(k)仅与最近k次的采样有关,所以误动作影响小,而且较容易通过加权处理获得比较好的控制效果。 实验二、带死区的PID控制算法 某些系统为了避免控制作用过于频繁,消除由于频繁动作所引起的振荡,可采用带死区的PID控制算法,控制算法为:,式中e(k)为位置跟踪偏差,B为可调的死区参数,具体可根据实际控制对象由试验确定。若B太小,会使控制动作过于 频繁,达不到稳定被控对象的目的;若B太大,则系统将产生较大的
9、滞后。 设被控对象为,采样周期为1ms,对象输出上有一个幅值为0.5的正态分布的随机干扰信号。采用积分分离式PID控制算法进行阶跃响应,取=0.2,死区参数B=0.1,采用低通滤波器对对象输出信号进行滤波,滤波器为。 仿真程序:M=1时,采用一般积分分离式PID控制算法,M=2时采用带死区的积分分离式PID控制算法。 %PID Controler with dead zone clear all; close all; ts=0.001; sys=tf(4.205e005,[1,47.35,1.047e004,0]); dsys=c2d(sys,ts,'z');
10、 [num,den]=tfdata(dsys,'v'); u_1=0;u_2=0;u_3=0;u_4=0;u_5=0; y_1=0;y_2=0;y_3=0; yy_1=0; error_1=0;error_2=0;ei=0; sys1=tf([1],[0.02,1]); %Low Freq Signal Filter dsys1=c2d(sys1,ts,'tucsin'); [num1,den1]=tfdata(dsys1,'v'); f_1=0; %M=1选择普通积分分离式PID,M=2选择带死区的积分分离式PID算法 disp('M=1--Usi
11、ng common integration seperation PID Controler ,M=2-- Using integration seperation PID Controler with dead zone') M=input('whether or not use integration seperation PID Controler with dead zone:'); for k=1:1:2000 time(k)=k*ts; rin(k)=1; %Step Signal %Linear model yout(k)=-den(2)*y_1-d
12、en(3)*y_2-den(4)*y_3+num(2)*u_1+... num(3)*u_2+num(4)*u_3; D(k)=0.50*rands(1); %Disturbance signal yyout(k)=yout(k)+D(k); %Low frequency filter filty(k)=-den1(2)*f_1+num1(1)*(yyout(k)+yy_1); error(k)=rin(k)-filty(k); if abs(error(k))<=0.20 ei=ei+error(k)*ts; else
13、 ei=0; end kp=0.50;ki=0.10;kd=0.020; u(k)=kp*error(k)+ki*ei+kd*(error(k)-error_1)/ts; if M==1 u(k)=u(k); elseif M==2 %Using Dead zone if abs(error(k))<=0.10 u(k)=0; end end if u(k)>=10 u(k)=10; end if u(k)<=-10 u(k)=-10; end %----------Return of
14、PID parameters------------ rin_1=rin(k); u_3=u_2;u_2=u_1;u_1=u(k); y_3=y_2;y_2=y_1;y_1=yout(k); f_1=filty(k); yy_1=yyout(k); error_2=error_1; error_1=error(k); end figure(1); subplot(211); plot(time,rin,'r',time,filty,'b'); xlabel('time(s)');ylabel('rin,yout'); subplot(212); p
15、lot(time,u,'r'); xlabel('time(s)');ylabel('u'); figure(2); plot(time,D,'r'); xlabel('time(s)');ylabel('Disturbance signal'); 总结 通过一个学期的学习,我对这门课有了进一步的了解。学习过程中在老师的耐心指导下,有意识的培养和建立了我的思维能力,使我真正建立数据及信息流的概念,以便在控制应用中能够使软件和硬件有机地结合。通过各章例子的讲诉,让我真正的掌握了计算机软件和硬件相结合的设计方法。而当代,随着计算机的高度发展
16、它的应用在人们的工作和日常生活中越来越普遍了。工业过程控制是计算机的一个重要应用领域。现在可以毫不夸张的说,没有计算机的仪器不能乘为先进的仪器,没有计算机的控制系统不能称其为现代控制系统的时代已经到来。计算控制技术正为了适应这一领域的需要而发展起来的一门技术。绝大多数自动控制都是使用计算机来实现的;控制技术的发展,使得以计算机为控制器核心的微机测控装置与系统,渗透到了国民经济的各行各业,已经无时无处不在影响每个现代人的生活。只有态度认真的对待这门学科才能真正掌握其中的精髓。在将来的工作中或许起着至关重要的作用。 不过,计算机控制系统虽然控制规律灵活多样,改动方便;控制精度高,抑制扰动能力
17、强,能实现最优控制;能够实现数据统计和工况显示,控制效率高;控制与管理一体化,进一步提高自动化程度。但是由于经典控制理论主要研究的 对象是单变量常系数线性系统,它只适用于单输入单输出控制系统。系统的数学 模型采用传递函数表示,系统的分析和综合方法主要是基于根轨迹法和频率法。现代控制理论主要采用最优控制、系统辨识和最优估计、自适应控制等分析和设计方法。而系统分析的数学模型主要用状态空间描述。随着要研究的对象和系统 越来越复杂,依赖于数学模型的传统控制理论难以解决复杂系统的控制问题: (一)不确定性的模型传统控制是基于模型的控制,模型包括控制对象和干扰模型。传统控制通常认为模型是已知的或经过辨识可以得到的,对于不确定性的模型,传统控制难以满足要求。 (二)高度非线性在传统的控制理论中,对于具有高度非线性的控制对象,虽然也有一些非线性控制方法可供使用,但总的来说,到201年为止,非线性控制理论还很不成熟,有些方法又过于复杂,无法广泛应用。 (三)复杂的任务要求在传统的控制系统中,控制任务往往要求输出量为定值或者要求输出量跟随期望的运动轨迹,因此控制任务比较单一。但过于复杂的控制任务是传统的控制理论无能为力。 参考文献: 计算机控制技术(第二版) 计算机控制技术实验指导书(matlab版) 10






