数字PID控制器仿真一、实验目的1、学习数字PID算法的基本原理;2、掌握利用Matlab软件进行PID算法仿真的基本方法。二、实验原理及内容1、实验原理计算机控制是一种采样控制,它只能根据采样时刻的偏差值计算控制量。因此连续PID控制算法不能直接使用,需要采用离散化方法。在计算机PID控制中,使用的是数字PID控制器。按模拟PID控制算法,以一系列的采样时刻点kT代表连续时间t,以矩形法数值积分近似代替积分,以一阶后向差分近似代替微分,可得离散PID位置式表达式:kjdipkjDIpkekjekkekkekeTTjeTTkekku00)()()())1()(()()()(式中,TTkkTTkkDpdIpi/,,e为误差信号(即PID控制器的输入),u为控制信号(即控制器的输出)。对应控制器的脉冲传递函数:)1(11)()()(11zkZkkzEzUzDdip同样,可采用离散PID增量式,对应表达式如下:)2()(211kkkdkikkpkeeekekeekukkkuuu12、实验内容已知某计算机控制系统如图1所示。采样周期为T=0.1s,分别采用不同的调节器进行MATLAB控制仿真。(1)若只采用比例控制,即D(z)=Kp,分别令Kp=1;Kp=2;Kp=5计算稳态误差、超调量及调节时间,并记录阶跃响应曲线。(2)采用PI控制,即111)(ZKKzDip,令Kp=1,调整Ki数值观察稳态误差、超调量及调节时间变化过程,记录阶跃响应曲线。(3)采用PID控制,即)1(11)(11zKZKKzDdip,令Kp=1,Ki=1;调整Kd的数值,观察稳态误差、超调量及调节时间,记录阶跃响应曲线。三、实验要求1、根据附录例子完成实验内容。2、思考如何采用m函数实现增量式位置PID控制算法。附录:1、Simulink仿真数字PID的MATLAB仿真被控过程的原理方框图,见图2所示。图1系统对应系统广义z变换传递函数为:)819.0)(905.0()904.0(0453.0)(zzzzHG图2数字PID的MATLAB仿真原理方框图2、m函数仿真参考:假设有一直流电机模型对象,传递函数为:D(z)sesT1)2)(1(10ssR(s)Y(s)E(z)U(z)TTTT=0.1s图1带数字PID调节器的计算机控制系统4902526521051.000204.041.51/1)()(222sssssTsTTCsusymmae利用Matlab建立传递函数方法为:sys=tf(2652,[1,25,490])当采样间隔为ts=0.01s时,则其z变换(离散)传递函数为:dsys=c2d(sys,ts,'z')Matlab输出为(Transferfunction):0.1217z+0.112----------------------z^2-1.736z+0.7788获得分子和分母的函数为:[num,den]=tfdata(dsys,'v')如果电机输入电压状态为uk,输出转速状态为yk。则2121)3()2()3()2(kkkkkunumunumydenydeny可得完整参考程序如下:clearall;closeall;ts=0.01;%采样时间=0.001ssys=tf(2652,[1,25,490]);%建立被控对象传递函数dsys=c2d(sys,ts,'z');%把传递函数离散化[num,den]=tfdata(dsys,'v');%离散化后提取分子、分母e_1=0%上一偏差Ee=0;%偏差累计u_1=0.0;%上一控制器输出u_2=0.0;y_1=0;%上一状态输出y_2=0;kp=;%PID参数自己确定ki=;%;kd=;%;fork=1:100time(k)=k*ts;%时间参数r(k)=500;%给定值y(k)=-1*den(2)*y_1-den(3)*y_2+num(2)*u_1+num(3)*u_2;e(k)=r(k)-y(k);%偏差u(k)=kp*e(k)+ki*Ee+kd*(e(k)-e_1);ifu(k)220u(k)=220;endifu(k)=0u(k)=0;endEe=Ee+e(k);u_2=u_1;u_1=u(k);y_2=y_1;y_1=y(k);e_2=e_1;e_1=e(k);endholdon;plot(time,r,'r',time,y,'b');