- 1、本文档共12页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
PID控制的讨论
PID控制的讨论
一、实验目的及内容
对一系统加入PID控制、A/D、D/A等环节,用matlab进行仿真,并更改A/D、D/A的精度,得到响应曲线的变化。
实验方案
1)一阶系统的传递函数为
化为差分方程为
设k=1,T=5
2)变量的说明
设H为模拟量转换的上限,L为模拟量转换的下限,kp、ki、kd为PID的参数,r为给定值,e为PID的输入量,u为PID的输出量,y为系统的输出,y0为系统的初始状态,u1为D/A接收到的数字量,u2为D/A输出的模拟量,du为偏移量。
3)定点数的说明
kp、ki、kd(ki和kd中已含仿真时间dt)是用16位二进制数来表示,用12位数表示误差值e,相乘的结果用32位二进制数来表示,以定点数的形式可表示为0xXX.XXXXXX。而小数点后三位的XXX是12位D/A需要采集的数字量,若0xXXXXXXXX大于2^24,则令其等于0xFFFFFF,若小于0,则令其等于0x000000。最后右移12位,就能得到终值。
部分主要源代码如下:
for i=1:lp1
e=r0-y0;
xp=e/dta;
xi=xi+ts*e/dta/ti;
xd=td/dta*(e-e0)/ts;
u=xp+xi+xd;
u1=u+r1;
if u10
u1=0;
end
if u14096
u1=4096;
end
u2=(u1-r1)/4096*(H-L)+L;
e0=e;
for j=1:lp2
y=y+dt*(-y+k*u2)/T;
t=t+1;
Y(t)=y+r2;
R(t)=r;
tt(t)=t*dt;
O(t)=u1;
P(t)=u;
end
y0=(y+r2-L)/(H-L)*4096;
End
for j=1:lp2
y=y+dt*(-y+k*u3)/T;
y1=int32((y+y0-L)/(H-L)*jd);
n=n+1; %
Y(n)=y+y0;
t(n)=n*dt;
if y1jd-1
y1=jd;
end
if y10
y1=0;
end
Yad(n)=double(y1)/jd;
ad1(n)=u2;
Xi1(n)=xi;
end
end
D/A的输出精度的改变对响应曲线的影响
改变精度的方法:由于PID的参数仍为16位定点数,PID的输出为8位的整数部分和N位的取值部分和12位的小数尾部,所以限幅后将结果右移12位,即可得到需要采集的N位数。做实验时仅需更改精度变量jd就能改变转换精度。源代码如下:
D/A的输出精度为10位
b)D/A的输出精度为8位
c)D/A的输出精度为6位
d)D/A的输出精度为4位
输入值与给定值的正负变化情况
1.u=300,r=200
2.u= 100,r=200
两位式:当u0.5 y=1.0
当u0.5 y=0.0
精度为12位
精度为10位
精度为8位
精度为6位
精度为4位
文档评论(0)