计算机控制技术课程设计数字PID控制系统设计.docx
《计算机控制技术课程设计数字PID控制系统设计.docx》由会员分享,可在线阅读,更多相关《计算机控制技术课程设计数字PID控制系统设计.docx(16页珍藏版)》请在冰点文库上搜索。
计算机控制技术课程设计数字PID控制系统设计
课程设计报告
题目:
数字PID控制系统设计(II)
课程:
计算机控制技术课程设计
专业:
电气工程与其自动化
班级:
姓名:
学号:
第一部分
任
务
书
《计算机控制技术》课程设计任务书
一、课题名称
数字PID控制系统设计(II)
二、课程设计目的
课程设计是课程教学中的一项重要内容,是达到教学目标的重要环节,是综合性较强的实践教学环节,它对帮助学生全面牢固地掌握课堂教学内容、培养学生的实践和实际动手能力、提高学生全面素质具有很重要的意义。
《计算机控制技术》是一门实用性和实践性都很强的课程,课程设计环节应占有更加重要的地位。
计算机控制技术的课程设计是一个综合运用知识的过程,它需要控制理论、程序设计、硬件电路设计等方面的知识融合。
通过课程设计,加深对学生控制算法设计的认识,学会控制算法的实际应用,使学生从整体上了解计算机控制系统的实际组成,掌握计算机控制系统的整体设计方法和设计步骤,编程调试,为从事计算机控制系统的理论设计和系统的整定工作打下基础。
三、课程设计内容
设计以89C51单片机、ADC、DAC等电路和运放电路组成的被控对象构成的单闭环反馈控制系统。
1.硬件电路设计:
89C51最小系统加上模入电路ADC0809和模出电路TLC7528;由运放构成的被控对象。
2.控制算法:
增量梯形积分型的PID控制算法。
3.软件设计:
主程序、定时中断程序、A/D转换程序、滤波程序、D/A输出程序、PID控制程序等。
四、课程设计要求
1.模入电路能接受双极性电压输入(-5V~+5V),模出电路能输出双极性电压(-5V~+5V)。
2.被控对象每个同学选择不同:
3.PID参数整定,根据情况可用扩充临界比例度法,扩充响应曲线法。
4.定时中断可在10-50ms中选取,采样周期取采样中断的整数倍,可取30-150ms,由实验结果确定。
5.滤波方法可选择平均值法,中值法等。
有关的设计要求可参考《计算机控制实验指导书》的相关内容。
五、课程设计实验结果
1.系统正确运行
2.正确整定PID参数后,系统阶跃响应超调<10%,调节时间尽量短。
六、进度安排
序号
内容
天数
1
布置任务,查阅资料
0.5
2
总体方案确定,硬件电路设计
1.5
3
熟悉实验箱与C语言开发环境,研读范例程序,
1
4
控制算法设计
1
5
软件编程,调试
1
6
实验
1
7
总结,撰写课程设计报告
1
七、课程设计报告内容:
总结设计过程,写出设计报告,设计报告具体内容要求如下:
1.课程设计的目和设计的任务。
2.课程设计的要求。
3.控制系统总框图与系统工作原理。
4.控制系统的硬件电路连接图(含被控对象),电路的原理。
5.软件设计流程图与其说明。
6.电路设计,软件编程、调试中遇到的问题与分析解决方法。
7.实验结果与其分析。
8.体会。
第二部分
课
程
设
计
报
告
1课题简介
根据偏差的比例(P)、积分(I)、微分(D)进行控制(简称PID控制),是控制系统中应用最为广泛的一种控制规律。
实际运行的经验和理论的分析都表明,运用这种控制规律对许多工业控制过程进行控制时,都能得到满意的效果。
不过,用计算机实现PID控制,不是简单的把模拟PID控制规律化,而是进一步与计算机的逻辑判断功能结合,使PID控制更加灵活,更能满足生产过程提出的要求。
比例控制能迅速反应误差,从而减少误差,但比例控制不能消除稳态误差;积分的作用是,只要系统存在误差,积分控制作用就不断的积累,输出控制量以消除误差,因而只要有足够的时间,积分控制将完全消除误差,积分作用太强会使系统超调加大,甚至使系统出现震荡;微分控制可以减少超调量,克服震荡,使系统稳定性更高,同时加快系统的响应速度,减少调整时间,从而改善系统的动态性能。
(格式:
宋体5号,首行缩进2格,单倍行距,下同)
2方案设计
2.1***********
2.2***********
3硬件电路设计
3.1硬件总图
3.2被控对象
被控对象选择为
,硬件设计图如下:
3.3译码电路图
此处用到了锁存器和3-8译码器,先对低八位地址锁存,然后对低八位中的P0.6和高八位中的P2.1,P2.2进行译码,由Y3和Y7引出,分别接至模数转换单元的ENABLE和数模转单元的/OE接口,从而实现地址0600和0640对两转换单元的片选。
当地址为0600时CBA输入信号为011,Y3输出低电平片选模数转换单元;当地址0640为CBA输入信号为111,Y7输出为低电平,片选了数模转换单元。
4控制算法设计
4.1模拟PID调节器
控制规律为:
4.2数字PID增量梯形积分型控制算法
其中有如下近似:
计算可得:
5软件编程设计
5.1流程图
5.2软件程序
#include
#include
#include
/*****************************************
宏定义
*****************************************/
#defineucharunsignedchar
#defineuintunsignedint
#defineADC_7XBYTE[0x0600]//定义模数转换IO地址
#defineDAC_1XBYTE[0x0640]//定义D/A第一路的IO地址
/*****************************************
全局变量定义
*****************************************/
sbitstr=P1^7;//定义A/D启动信号
sbitDIN0=P1^0;//声明同步信号
uintdatatime;//声明变量,用于定时
uchardatat0_h,t0_l;//用于存储定时器0的初值
charTK=5;//声明采样周期变量,//采样周期=TK*10ms
charTC;//TK的变量
floatkp=1.8;//比例系数
uintti=80;//积分系数
chartd=2;//微分系数
charIBAND=120;//积分分离值
charEK;//当前采样的偏差值
charEK_1;//上一次采样的偏差值
charAEK;//偏差的变化量
charUK;//当前时刻的D/A输出
charAEK_1;
charBEK;
charCEK;
floatZEK;
/*****************************************
主函数
*****************************************/
voidmain(void)
{
TMOD=0x01;
time=10;//定时10ms
t0_h=(65536-1000*time)/256;//计算定时器0初值
t0_l=(65536-1000*time)%256;
t0_l=t0_l+70;//修正因初值重装而引起的定时误差
TH0=t0_h;
TL0=t0_l;
IT1=1;//边沿触发中断
EX1=1;//开外部中断1
ET0=1;//开定时中断0
TR0=1;//启动定时器
TC=1;
DAC_1=0x80;//D/A清零
EK=EK_1=0;//变量清零
AEK=BEK=AEK_1=CEK=UK=0;
ZEK=0;
str=1;
EA=1;//开总中断
while
(1);
}
/**********************************************
函数名:
INT1
功能:
1号外部中断服务程序
参数:
无*
返回值:
无*
***********************************************/
voidint1()interrupt2using2
{
floatP,D,I,TEMP,TEMP1;
DIN0=1;//读取输入前,先输出高电平
if(DIN0)//判同步信号到否
{
EK=EK_1=0;//变量清零
UK=AEK=BEK=CEK=AEK_1=0;
ZEK=0;
DAC_1=0x80;//D/A输出零
TC=1;
}
else
{
TC--;//判采样周期到否
if(TC==0)
{
EK=ADC_7-128;//采样当前的偏差值,并计算偏差的变化量
AEK=EK-EK_1;
BEK=(EK+EK_1)/2;
CEK=AEK-AEK_1;
EK_1=EK;
AEK_1=AEK;
if(abs(EK)>IBAND)I=0;//判积分分离值
else
{
ZEK=EK+ZEK;
I=BEK*TK;
I=I/ti;
}
P=AEK;
D=CEK*td;//计算微分项
D=D/TK;
TEMP=(P+I+D)*kp;//计算比例项
TEMP1=(EK_1+ZEK*TK/ti+AEK_1*td/TK)*kp;
TEMP=TEMP+TEMP1;
if(TEMP>0)//判控制量是否溢出,溢出赋极值
{
if(TEMP>=127)
UK=127;
else
UK=(char)TEMP;
}
else
{
if(TEMP<-128)
UK=-128;
else
UK=(char)TEMP;
}
DAC_1=UK+128;//D/A输出控制量
TC=TK;//采样周期变量恢复
}
}
}
/**********************************************
函数名:
Timer0
功能:
定时器0中断服务程序
参数:
无
返回值:
无
***********************************************/
voidTimer0()interrupt1using1
{
TH0=t0_h;//重新装入初值
TL0=t0_l;
str=0;
str=1;//产生A/D启动信号
}
6实验结果与分析
6.1实验波形
6.2结果分析
经过对PID参数的调节,最终实现的波形较好的实现了控制的要求,使得阶跃超调小于10%,而且相应时间较快,控制算法与程序是可靠的。
7小结与体会
参考文献
(列出你所利用的参考文献。
格式参见下。
)
[1]于海生主编,微型计算机控制技术,北京:
清华大学出版社,1999
[2]张艳兵等编著,计算机控制技术,北京:
国防工业出版社,2008
[3]张毅刚主编,单片机原理与应用,北京:
高等教育出版社,2004
[4]陈涛编著,单片机应用与C51程序设计,北京:
机械工业出版社,2008
[5]楼然苗,李光飞编著,单片机课程设计指导,北京:
北京航空航天大学出版社,2007
[7]控制、电子技术类杂志、报刊