计算机控制技术温度控制系统设计.docx
《计算机控制技术温度控制系统设计.docx》由会员分享,可在线阅读,更多相关《计算机控制技术温度控制系统设计.docx(21页珍藏版)》请在冰豆网上搜索。
计算机控制技术温度控制系统设计
学号:
00424
课程设计
题目
温度控制系统设计
学院
自动化学院
专业
自动化专业
班级
自动化1004班
姓名
邓智斌
指导教师
陈静教授
2013
年
6
月
29
日
课程设计任务书
学生姓名:
邓智斌专业班级:
自动化1004班
指导教师:
陈静教授工作单位:
自动化学院
题目:
温度控制系统设计
要求完成的主要任务:
被控对象为电炉,采用热阻丝加热,利用大功率可控硅控制器控制热阻丝两端所加的电压大小,来改变流经热阻丝的电流,从而改变电炉炉内的温度。
可控硅控制器输入为0-5伏时对应电炉温度0-300℃,温度传感器测量值对应也为0-5伏,对象的特性为二阶惯性系统,惯性时间常数为T1=20秒。
1)设计温度控制系统的计算机硬件系统,画出框图;
2)编写积分分离PID算法程序,从键盘接受Kp、Ti、Td、T及β的值;
3)通过数据分析β改变时对系统超调量的影响。
4)撰写设计说明书。
时间安排:
6月26日查阅和准备相关技术资料,完成整体方案设计
6月27日—6月28日完成硬件设计
6月29日—6月30日编写调试程序
7月1日—7月4日撰写课程设计说明书
7月5日提交课程设计说明书、图纸、电子文档
指导教师签名:
年月日
系主任(或责任教师)签名:
年月日
摘要
温度是工业生产中常见的工艺参数之一,任何物理变化和化学反应过程都与温度密切相关,因此温度控制是生产自动化的重要任务。
对于不同生产情况和工艺要求下的温度控制,所采用的加热方式,燃料,控制方案也有所不同。
随着集成电路技术的发展,单片微型计算机的功能也不断增强,许多高性能的新型机种不断涌现出来。
本文主要介绍了利用8051为主控制电路实现的炉温调节控制系统,详细阐述了系统的功能,硬件组成以及软件设计,利用热电偶采集温度信号经A/D转换器转化后与给定信号送入微机系统,系统分析控制算法,信号再经D/A转换后控制调节可控硅控制器来改变炉内的温度。
另外,还需要用到MATLAB这一个功能强大的软件,而且需要编写一定的程序语句,可以通过程序的运行,将被控系统离散化。
再通过PID算法计算出使系统达到稳定所用时间最短,超调最小的Ki,Kp,Kd,β的值。
然后通过β的变化观察系统的动态性能。
关键字:
8051;PID;二阶系统;积分分离;仿真
目录
1设计任务及要求
被控对象为电炉,采用热阻丝加热,利用大功率可控硅控制器控制热阻丝两端所加的电压大小,来改变流经热阻丝的电流,从而改变电炉炉内的温度。
可控硅控制器输入为0-5伏时对应电炉温度0-300℃,温度传感器测量值对应也为0-5伏,对象的特性为二阶惯性系统,惯性时间常数为T1=20秒。
1)设计温度控制系统的计算机硬件系统,画出框图;
2)编写积分分离PID算法程序,从键盘接受Kp、Ti、Td、T及β的值;
3)通过数据分析β改变时对系统超调量的影响。
4)撰写设计说明书。
2方案比较论证
本次设计是对电炉的温度控制,而电炉的温度是通过放在其中的热阻丝来控制的,而热阻丝的电流由可控硅控制器控制热阻丝两端所加电压来控制。
对电炉温度的控制是个动态的过程,不可能一下子就达到我们想要的温度,需要用到一些仪器比如热电偶来测量电路的温度,通过传感器将炉温转换成电压信号,送入A/D转换器,通过采样和模数转换,所检测到的电压信号和炉温给定值的电压信号送入计算机程序中作比较,得出给定值与实际值之间的偏差,单片机对偏差进行运算,将运算结果送给晶闸管调压器来调节热阻丝的电流,以此来调节电电炉的温度。
电炉的温度控制是个动态的控制过程,需要借助计算机,单片机等很多器件的硬件连接来实现。
而电炉温度的直接控制是通过热阻丝的加热来实现的,热阻丝的加热是由流经热阻丝的电流来控制的,而热阻丝的电流是通过可控硅控制器控制热阻丝两端所加电压来控制,电压的调节是通过可控制硅控制。
需要用到热电偶时刻监测电炉的温度,通过传感器将温度信号转化为电压信号,而电压信号通过模数转换送入到计算机进行控制,计算机将转换结果送到晶闸管来控制加到热阻丝两端的电压,这样达到调节电炉温度的目的。
电炉温度控制的硬件连接图如图1所示
图1系统结构框图
3系统硬件设计
炉温信号T通过温度检测及变送,变成电信号,与温度设定值进行比较,计算温度偏差e和温度的变化率de/dt,再由智能控制算法进行推理,并得控制量u,可控硅输出部分根据调节电加热炉的输出功率,即改变可控硅管的接通时间,使电加热炉输出温度达到理想的设定值。
3.1系统硬件结构
ADC0809的INT0端口所连接的电阻起到给定预定值的作用,通过调节滑动变阻器划片的位置,改变INT0端口的电压,该电压通过0809转换为数字量被计算机读取。
将一个0-5V的电压表连接到可变电阻上,测量其电压,再将其表盘改装为温度表盘,即将原来的0-5V的刻度均匀分为300份,每一份代表1℃,则可以读取预定的温度值。
ADC0809的INT1端口与热电偶相连。
由8051构成的核心控制器按智能控制算法进行推算,得出所需要的控制量。
由单片机的输出通过调节可控硅管的接通时间,改变电炉的输出功率,起到调温的作用。
3.2系统硬件的选择
微型计算机的选择:
选择8051单片机构成炉温控制系统。
它具有8位CPU,32根I/O线,4kB片内ROM存储器,128kB的RAM存储器。
8051对温度是通过可控硅调节器实现的。
在系统开发过程中修改程序容易,可以大大缩短开发周期。
同时,系统工作过程中能有效地保存一些数据信息,不受系统掉电或断电等突发情况的影响。
8051单片机内部有128B的RAM存储器,不够本系统使用,因此,采用6264(8kB)的RAM作为外部数据存储器。
热电偶的选择:
本设计采用热电偶--镍络-铜硅热电偶(线性度较好,热电势较大,灵敏度较高,稳定性和复现性较好,抗氧化性强,价格便宜)对温度进行检测。
镍铬-铜镍热电偶在300℃时的热点势21.033mV,为满足0-5V的要求,需将其放大238倍,再通过0809将其转换为数字量被计算机读取,通过软件程序对数据进行处理,将处理的结果经0832输出,输出量控制可控硅控制器,从而改变电阻丝两端的电压,使炉温得到控制。
3.3系统硬件连接图
综合以上分析,可以得出系统的硬件连接图如图2所示:
4系统软件设计
4.1确定程序流程
在微分控制中,控制器的输出与输入误差信号的微分(即误差的变化率)成正比关系。
自动控制系统在克服误差的调节过程中可能会出现振荡甚至失稳。
其原因是由于存在有较大惯性组件(环节)或有滞后组件,具有抑制误差的作用,其变化总是落后于误差的变化。
解决的办法是使抑制误差的作用的变化“超前”,即在误差接近零时,抑制误差的作用就应该是零。
这就是说,在控制器中仅引入“比例”项往往是不够的,比例项的作用仅是放大误差的幅值,而目前需要增加的是“微分项”,它能预测误差变化的趋势,这样,具有比例+微分的控制器,就能够提前使抑制误差的控制作用等于零,甚至为负值,从而避免了被控量的严重超调。
所以对有较大惯性或滞后的被控对象,比例+微分(PD)控制器能改善系统在调节过程中的动态特性。
在一般的PID控制中,当有较大的扰动或大幅度改变给定值时,由于此时有较大的偏差,以及系统有惯性和滞后,故在积分项的作用下,往往会产生较大的超调和长时间的波动。
特别对于温度等变化缓慢的过程,这一现象更为严重,为此,可采用积分分离措施,即偏差
较大时,取消积分作用;当偏差较小时才将积分作用投入。
亦即
当
时,采用PD控制;
当
时,采用PID控制。
积分分离阈值
应根据具体对象及控制要求。
若
值过大时,则达不到积分分离的目的;若
值过小,则一旦被控量
无法跳出个积分分离区,只进行PD控制,将会出现残差,为了实现积分分离,编写程序时必须从数字PID差分方程式中分离出积分项,进行特殊处理。
根据设计要求及所选硬件,程序流程如图3所示:
图3程序的主流程图
4.2程序控制算法介绍
由以上分析,本次设计采用的是积分分离PID控制算法,PID调节时连续系统中技术中最成熟的,应用广泛的一种调节控制方式。
在模拟控制系统中,PID算法的表达为:
u:
调节器的输出信号;
e:
偏差信号;
K:
调节器的比例系数;
TI:
调节器的积分时间;
TD:
调节器的微分时间。
在计算机控制中,为实现数字控制,必须对式上式进行离散化处理。
用数字形式的差分方程代替连续系统的微分方程。
设系统的采样周期为T,在t=kT时刻进行采样,
式中e(k):
根据本次采样值所得到的偏差;
e(k-1):
由上次采样所得到的偏差。
由以上可得:
式中,T为采样时间,
项为积分项的开关系数
积分积分分离PID控制算法程序框图如图4所示:
图4积分分离PID控制算法程序框图
5系统仿真
被控对象为:
采用simulink仿真,通过simulink模块实现积分分离PID控制算法。
选择合适的Kp,Ki,Kd是系统的仿真效果趋于理想状态。
MATLAB编写程序如下:
clearall;
closeall;
ts=2;%采样时间2s
sys=tf([1],[400,40,1]);
dsys=c2d(sys,ts,'zoh');%将sys离散化
[num,den]=tfdata(dsys,'v');%求sys多项式模型参数
kp=10;
ki=0.25;
kd=5;
Simulink仿真图如下:
图6Simulink仿真图
经仿真后,当β=0.02时的仿真图如下所示:
图7β=0.02时的仿真图
当β=0.05时的仿真图如下所示:
图8β=0.05时的仿真图
当β=1.0时的仿真图如下所示:
图9β=1.0时的仿真图
综上可得,当β值过大时,达不到积分分离的目的,若β值过小,则一旦被控量无法跳出各积分分离区,只进行PD控制,将会出现残差。
6心得与体会
本次计算机课程设计我做的是温度控制系统,是通过计算机,单片机,一些控制算法,等等的对电炉的温度进行控制,使得电炉的温度达到任何我们想要达到的温度。
刚拿到题目的时候,感觉这个题目涉及到了很多东西,包括自动控制原理、计算机控制技术和微机原理。
首先得从题目所给的条件中分析得到系统的传递函数,然后进行PID算法的控制技术,最后撰写汇编语言的控制程序。
在做第二个步骤的时候,由于计控书上对PID积分分离算法只做了一个笼统的介绍,并没有相关的举例,所以我很难在只有书本知识的情况下轻松的把PID控制部分分析出来。
在参阅了大量的资料后,我才对积分分离算法有了一个较清晰的概念,并完成了算法的控制部分。
在本次设计中还涉及到了Matlab仿真部分,对我们是否熟练掌握了这个强大的仿真软件进行了考验。
同时也让我们对Matlab软件进行了复习,也为我们再次熟练运用Matlab打下了基础。
参考文献
[1]李建忠.单片机原理及应用.西安:
西安电子科技大学出版社,2001.
[2]潘新民.王燕芳.微型计算机控制技术.北京:
高等教育出版社,2001.
[3]何立民.单片机应用系统设计.北京:
北京航空航天大学出版社,2000.
[4]韩志军,沈晋源,王振波.单片机应用系统设计.北京:
机械工业出版社,2005.
[5]周航慈.单片机程序设计基础.北京:
北京航空航天大学出版社,2000.
附录1芯片资料
ADC0809芯片
图ADC0809芯片
ADC0809各脚功能如下:
D7-D0:
8位数字量输出引脚。
IN0-IN7:
8位模拟量输入引脚。
VCC:
+5V工作电压。
GND:
地。
REF(+):
参考电压正端。
REF(-):
参考电压负端。
START:
A/D转换启动信号输入端。
ALE:
地址锁存允许信号输入端。
(以上两种信号用于启动A/D转换)
EOC:
转换结束信号输出引脚,开始转换时为低电平,当转换结束时为高电平。
OE:
输出允许控制端,用以打开三态数据输出锁存器。
CLK:
时钟信号输入端(一般为500KHz)。
A、B、C:
地址输入线。
DAC0832芯片:
图DAC0832芯片
DAC0832芯片为20引脚,双列直插式封装。
其引脚排列如图6所示。
(1)数字量输入线D7~D0(8条)
(2)控制线(5条)
(3)输出线(3条)
(4)电源线(4条)
DAC0832的技术指标
(1)分辨率:
8位
(2)电流建立时间:
1µS
(3)线性度(在整个温度范围内)8、9或10位
(4)增益温度系数:
0.0002%FS/℃
(5)低功耗:
20mW
(6)单一电源:
+5~+15V
附录2程序清单
积分分离PID控制算法子程序:
START:
MOV68H,KP;分别将KP,TI,TD,T,β送入指定的存储单元
MOV54H,TI
MOV55H,TD
MOV56H,T
MOV57H,β
MOVA,68H;计算KI=KP*T/TI
MOVB,56H
MULAB
MOVB,54H
DIVAB
MOV69H,A
MOVA,68H;计算KD=KP*TD/T
MOVB,55H
MULAB
MOVB,56H
DIVAB
MOV6AH,A
LOOP0:
MOVDPTR#7FF0H;读取预定温度值,送ADC0809的IN0口地址
MOV@DPTR,A;启动A/D转换
LOOP1JBP3.3,LOOP1;等待转换数据
MOVXA,@DPTR;读取ADC0809的IN0口转换后的数据
MOV5CH,A;将预定值数据放入指定的存储单元
MOVDPTR,#7FF1H;读取采样温度值,送ADC0809的IN1口地址
MOVX@DPTR,A;启动A/D转换
LOOP2:
JBP3.3,LOOP2;等待转换数据
MOVXA,@DPTR;读取ADC0809的IN1口转换后的数据
MOV49H,A;将采样值数据放入指定的存储单元
MOVA,5CH;计算e(i),先取温度给定值
CLRC
SUBBA,50H;温度给定值-采样值
JNCAA0;判断e(i)的正负,如果为正,跳至AA0
CPLA;e(i)为负,下两条指令求补
ADDA,#01H
AA0:
MOVR0,57H
SUBBA,57H;|e(i)|-β
JNCAA1;|e(i)|>β跳至AA1
SJMPAA2;|e(i)|<β跳至AA2
AA1:
LCALLPD;调用PD算法
AA2:
LCALLPID;调用PID算法
MOVA,7CH;将△Ui通过DAC0832输出
MOVDPTR,#7FF2H
MOVX@DPTR,A
INCDPTR
MOVX@DPTR,A
LCALLDELAY;调用延时子程序,等待下一次采样计算
SJMPLOOP0;进入下一次控制计算
DELAYPROCNEAR
DL0:
MOVR6,#FFH
DL1:
MOVR7,#FFH
DL2:
MOVR5,#FFH
DLS:
DJNZR5,DLS
DJNZR7,DL2
DJNZR6DL1
RET
DELAYENDP
PIDPROCNEAR
PID:
MOVA,5CH;计算e(i),先取温度给定值
CLRC
SUBBA,50H;温度给定值-温度检测值
JNCPID1;判断e(i)正负,如果为正,跳至PID1
CPLA;e(i)为负,下两条指令求补
ADDA,#01H
SETB30H;e(i)为负,符号位置1
SJMPPID2
PID1:
CLR30H;e(i)为正,符号位置0
PID2:
MOV6BH,A;e(i)值存放在6BH单位元中
MOVR1,6BH;计算ei-ei-1,先将ei值,送R1
MOVC,30H;将ei的符号位值送20H位
MOV20H,C
MOVR2,6CH;将ei-1值送R2
MOVC,31H;将ei-1的符号位值送21H位
MOV21H,C
LCALLDJF;调用单字节带符号的减法子程序
MOV6EH,R3;将差值ei-ei-1送6EH单元
MOVC,22H;将差值ei-ei-1的符号位送33H位
MOV33H,C
MOVR1,6CH;计算ei-1-ei-2,先将ei-1值送R1
MOVC,31H;将ei-1符号位送20H位
MOV20H,C
MOVR2,6DH;将ei-2的值送R2
MOVC,32H;将ei-2的符号位值送21H位
MOV21H,C
LCALLDJF;调用单字节带符号的减法子程序
MOV6FH,R3;将差值ei-1-ei-2送6FH单元
MOVC,22H;将差值ei-1-ei-2的符号位送34H位
MOV34H,C
MOVR1,6EH;计算(ei-ei-1)-(ei-1-ei-2),将ei-ei-1值送R1
MOVC,33H;将ei-ei-1符号位送20H位
MOV20H,C
MOVR2,6FH;将ei-1-ei-2值送R2
MOVC,34H;将ei-1-ei-2符号位送21H位
MOV21H,C
LCALLDJF;调用单字节带符号的减法子程序
MOV70H,R3;将差值(ei-ei-1)-(ei-1-ei-2)送70H单元
MOVC,22H;将差值(ei-ei-1)-(ei-1-ei-2)的符号位值送35H位
MOV35H,C
MOVA,68H;计算Kp*(ei-ei-1),将Kp值送A
MOVB,6EH;将ei-ei-1值送B
MULAB;两数相乘
MOV71H,B;Kp*(ei-ei-1)值存71H,72H单元
MOV72H.A
MOVA,69H;计算KI*ei,将KI值送A
MOVB,6BH;将ei值送B
MULAB;两数相乘
MOV73H,B;KI*ei值存73H,74H单元
MOV74H,A
MOVA,6AH;计算KD*[(ei-ei-1)-(ei-1-ei-2)],将KD送A
MOVB,70H;将(ei-ei-1)-(ei-1-ei-2)值送B
MULAB;两数相乘
MOV75H,B;KD*[(ei-ei-1)-(ei-1-ei-2)]值存75H,76H单元
MOV76H,A
MOVR1,71H;计算Kp*(ei-ei-1)+KI*ei,将Kp*(ei-ei-1)值送R1,R2
MOVR2,72H
MOVC,33H;将Kp*(ei-ei-1)的符号位值送23H位
MOV23H,C
MOVR3,73H;将KI*ei值送R3,R4
MOVR4,74H
MOVC,30H;将KI*ei值的符号位懂24H位
MOV24H,C
LCALLSJF;调用双字节带符号加法子程序
MOV77H,R5;将Kp*(ei-ei-1)+KI*ei值送77H,78H
MOV78H,R6
MOVC,25H;将Kp*(ei-ei-1)+KI*ei值的符号位送36H位
MOV36H,C
MOVR1,77H;计算△Ui,将将Kp*(ei-ei-1)+KI*ei值送R1,R2
MOVR2,78H
MOVC,36H;将Kp*(ei-ei-1)+KI*ei值的符号位送23H位
MOV23H,C
MOVR3,75H;将KD*[(ei-ei-1)-(ei-1-ei-2)]的值送R3,R4
MOVR4,76H
MOVC,35H;将KD*[(ei-ei-1)-(ei-1-ei-2)]的符号位送23H位
MOV24H,C
LCALLSJF;调用双字节带符号加法子程序
MOV79H,R5;将△Ui值送79H,7AH
MOV7AH,R6
MOVC,25H;将△Ui值的符号位送37H
MOV37H,C
MOVR1,7DH;计算Ui,将Ui-1值送R1,R2
MOVR2,7EH
CLR23H;Ui-1值的符号位值恒为0
MOVR3,79H;将△Ui值送R3,R4
MOVR4,7AH
MOVC,37H;将△Ui值的符号位送24H
MOV24H,C
LCALLSJF;调用双字节带符号加法子程序
JNB25H,PID3;判断计算结果是否为负
MOV7BH,#00H;如果是负数,则输出电压为0
MOV7CH,#00H
SJMPPID4
PID3:
MOV7BH,R5;否则,将计算得到的Ui值置7BH,7CH
MOV7CH,R6
PID4:
MOV6DH,6CH;数据迭代,ei-1值送ei-2存储单元
MOV6CH,6BH;ei值送ei-1存储单元
MOV7DH,7BH;Ui值送Ui-1存储单元
MOV7EH,7CH
RET
PIDENDP
PDPROCNEAR
PD:
MOVA,5CH;计算ei,先取温度给定值
CLRC
SUBBA,50H;温度给定值-温度检测值
JNCPD1;判断ei正负,如果为正,跳至PID1
CPLA;ei为负,下两条指令求补
ADDA,#01H
SETB30H;ei为负,符号位置1
SJMPPD2
PD1:
CLR30H;ei为正,符号位置0
PD2:
MOV6BH,A;ei值存放在6BH单位元中
MOVR1,6BH;计算ei-ei-1,先将ei值,送R1
MOVC,30H;将ei的符号位值送20H位
MOV20H,C;
MOVR2,6CH;将ei-1值送R2
MOVC,31H;将ei-1的符号位值送21H位
MOV21H,C
LCALLDJF;调用单字节带符号的减法子程序
MOV6EH,R3;将差值ei-ei-1送6EH单元
MOVC,22H;将差值ei-ei-1的符号位送33H位
MOV33H,C
MOVR1,6CH;计算ei-1-ei-2,先将ei-1值送R1
MOVC,31H;将ei-1符号位送20H位
MOV20H,C
MOVR2,6DH;将ei-2的值送R2
MOVC,32H;将ei-2的符号位值送21H位
MOV21H,C
LCALLDJF;调用单字节带符号的减法子程序
MOV6FH,R3;将差值ei-1-ei-2送6FH单元
MOVC,22H;将差值ei-1-ei-2的符号位送34H位
MOV34H,C
MOVR1,6EH;计算(ei-ei-1)-(ei-1-ei-2),将ei-ei-1值送R1
MOVC,33H;将ei-ei-1符号位送20H位
MOV20H,C
MOVR2,6FH;将ei-1-ei-2值送R2
MOVC,34H;将ei-1-ei-2符号位送21H位
MOV21H,C
LCALLDJF;调用单字节带符号的减法子程序
MOV70H,R3;将差值(ei-ei-1)