1、实验报告-微机原理pid仿真 原理图:所有参数:n=12;%仿真精度set=5;%设定值 ymin=40;%最小值ymax=60;%最大值dt=1;%步距k=10;%被控对象kT=1;%被控对象PID参数kp=0.009999555;ki=0.002;kd=0.02;仿真时间: t1=500;1. 仿真计算,pv和set归一化为0.01.0之间的且精度是经过12位A/D变换后的浮点计算。pv归一化过程及12位A/D转化过程k1=(y-ymin)/(ymax-ymin);%归一化y2=k1*2n;y3=floor(y2);%取整,精度丢失k2=y3/2n;pv=k2*(ymax-ymin)+ym
2、in;set的转化过程同上U1仿真曲线Y1仿真曲线2. Kp、Ki、Kd为定点数表示,set与pv(y)是定点数,是12位变换精度。确定的控制量u的小数点位置,将u转化为浮点数0.01.0的值,减去u的偏移值0.5,输出至对象,计算输出y;1) Kp ki kd定点数表示方法:kp=0.009999555;ki=0.002kd=0.02;程序如下:运行结果Z1=0028Z2=0008Z3=0051所以Kp=00.28Ki=00.08Kd=00.512) set pv 定点数表示set pv 定点数表示为0.xxx 16进制下小数点后3位(2进制下小数点后12位)3) e2=(set+50)-y
3、min)/(ymax-ymin)-pv所以e2为0.000-0.FFF之间的数(小数点后3位)u += Kp(e0-e-1) + Ki*e0 + Kd*(e0-e-1)-(e-1-e-2)kp ki kd分别为00.pp 00.ii 00.dde为0.eee 所以u为000.uuuuu 16位下小数点后5位(2进制下小数点后20位)4) u0的定点数表示由于u为16位下小数点后5位(2进制下小数点后20位)所以u0为16位下小数点后5位(2进制下小数点后20位) 5) u与定点数转化为小数dtu=kp1*(e2-e1)+ki1*e2*dt+kd1*(e2+e0-2*e1)/dt; u0=u0+
4、dtu; if (u0pow (2,12+m) u0=pow (2,12+m); if (u0(12+m-v)/pow (2,v);U仿真曲线:Y仿真曲线:3. 选择u的输出不同位数(即D/A的位数),如8位、12位、16位、6位、4位中的两种以上,计算u的浮数值,计算y;u与定点数转化为小数dtu=kp1*(e2-e1)+ki1*e2*dt+kd1*(e2+e0-2*e1)/dt;u0=u0+dtu;if (u0pow (2,12+m)u0=pow (2,12+m);if (u0(12+m-v)/pow (2,v) ; % v保留的位数(2进制下)U仿真曲线(v=8位)Y仿真曲线(8位)u仿真曲线(4位)Y仿真曲线综合图:u1y:总结:保留位数越少,图像越粗糙4. 将控制u进行二位(置)输出,即u=0.5,u=1.0,u0.5,u=0.0,的情况进行仿真,记录u和对象输出有;U仿真曲线Y仿真曲线5. 通过改变set值让输出u或y越界,进行仿真。Set=20(即70)仿真曲线%未限幅UY仿真曲线%限幅UY6. 反方向给定设定值,观察记录u和y,选择2、3情况中的一种即可;Set=-5(即45)U仿真曲线(保留5位)Y仿真曲线(保留5位)