计算机控制技术课程设计整理版.docx
《计算机控制技术课程设计整理版.docx》由会员分享,可在线阅读,更多相关《计算机控制技术课程设计整理版.docx(28页珍藏版)》请在冰豆网上搜索。
计算机控制技术课程设计整理版
电阻加热炉温度控制系统设计
1、摘要
温度是工业对象中主要的被控参数之一。
尤其是在冶金、化工、机械各类工业中,广泛使用各种加热炉、热处理炉、反应炉等。
由于炉子的种类不同,所采用的加热方法及燃料也不相同,如煤气、天然气等。
但就控制系统本身的动态特性而言,均属于一阶纯滞后环节,在控制算法上基本相同,可采用PID控制或其他纯滞后补偿算法。
但对于电阻加热炉来说,当其温度一旦超调就无法用控制手段使其降温,因而很难用数学方法建立精确模型和确定参数。
而传统PID控制是一种建立在经典控制理论基础上的控制策略,其设计依赖于被控对象的数学模型,因此对于加热炉这类控制对象采用传统PID的控制方案很难达到理想的控制效果。
为了保证生产过程正常安全地进行,提高产品的质量和数量,以及减轻工人的劳动强度,节约能源,对加热用的各种电炉要求在一定条件下保持恒温,不能随电源电压波动或炉内物体而变化,或者有的电炉的炉温根据工艺要求按照某个指定的升温或保温规律而变化,等等。
因此,在工农业生产或科学实验中常常对温度不仅要不断地测量,而且要进行控制。
在电阻炉温度控制系统的设计中,应尽量考虑到如何有效地避免各种干扰因素而采用一个较好的控制方案,选择合适芯片及控制算法是非常有必要的本设计要用单片机设计一个电阻炉温度控制系统。
电阻炉的类型根据其热量产生的方式不同,可分为间接加热式和直接加热式两大类。
间接加热式电阻炉,就是在炉子内部有专用的电阻材料制作的加热元件,电流通过加热元件时产生热量,再通过热的传导、对流、辐射而使放置在炉中的炉料被加热。
直接加热式电阻炉,是将电源直接接在所需加热的材料上,让强大的电流直接流过所需加热的材料,使材料本身发热从而达到加热的效果。
工业电阻炉,大部分采用间接加热式,只有一小部分采用直接加热式。
由于电阻炉具有热效率高、热量损失小、加热方式简单、温度场分布均匀、环保等优点,应用十分广泛。
2、总体方案设计
1、设计任务:
电阻加热炉用于合金钢产品热力特性实验,电加热炉用电炉丝提供功率,使其在预定的时间内将炉内温度稳定到给定的温度值。
本控制对象电阻加热炉功率为8KW,由220V交流电源供电,采用双向可控硅进行控制。
2、工艺要求:
按照规定的曲线进行升温和降温,温度控制范围为50~350℃,升温和降温阶段的温度控制精度为±5℃,保温阶段温度控制精度为±2℃。
3、基本功能:
微机自动调节:
正常工况下,系统投入自动。
模拟手动操作:
当系统发生异常,投入手动控制。
微机监控功能:
显示当前被控量的设定值、实际值,控制量的输出值,参数报警时有灯光报警。
4、对象分析:
本次设计中,要求电阻炉炉内的温度按照上图所示的规律变化:
从室温开始到50℃为自由升温阶段,当温度到达50℃时,进入系统调节阶段,当温度到达350℃时,进入保温阶段。
要始终在系统控制下,以保证所需的炉内温度的精度。
加工结束,要进行降温控制。
保温阶段的时间为600~1800s。
过渡过程时间:
即从开始控制到进入保温阶段的时间要小于600s。
在保温段当温度高于352℃或低于348℃时要报警,在升温和降温阶段也要进行控制,使炉内温度按照曲线的斜率升或降。
5、系统整体设计:
采用MCS—51单片机作为控制器,ADC0809模数转换芯片为模拟量输入,DAC0832数模转换芯片为模拟量输出,铂电阻为温度检测元件,运算放大器和可控硅作为功率放大,电阻炉为被控对象,组成电阻炉炉温控制系统,另外,系统还配有数字显示,以便显示和记录生产过程中的温度和输出值。
6、系统模型:
3、硬件设计与实现
1.计算机选型和系统总线:
1)单片机:
MCS—51系列8031
2)系统总线:
PC总线
2.外围电路设计:
1)矩阵键盘技术:
图1为4×8矩阵组成的32键盘与微机接口电路。
图中8255端口C为行扫描口,工作于输出方式,端口A工作于输入方式,用来读入列值。
图中I/O口地址必须满足=0,才能选中相应的寄存器。
在每一行与列的交叉点接一个按键,故4×8共32个键。
图1:
应用8255接口的4×8键盘矩阵
2)温度输出显示技术:
LED静态显示接口技术,所谓静态显示,即CPU输出显示值后,由硬件保存输出值,保持显示结果。
图2为6位BCD码静态显示电路原理图。
图中74LS244为总线驱动器,6位数字显示共用同一组总线,每个LED显示器均配有一个锁存器(74LS377),用来锁存待显示的数据。
当被显示的数据从数据总线经74LS244传送到各锁存器的输入端后,到底哪一个锁存器选通,取决于地址译码器74LS138各输出位的状态。
总线驱动器74LS244由IOW和A9控制,当IOW和A9同时为低电平时,74LS244打开,将数据总线上的数据传送到各个显示器的锁存器74LS377上。
技术特点:
占用机时少,显示可靠,但使用元件多,线路复杂,成本高。
图2:
用锁存器连接的6位静态显示电路
3)报警电路设计:
正常运行时绿灯亮,在保温阶段,一旦炉内温度超出系统允差范围,就要进行报警。
报警时,红灯亮,电笛响,同时发送中断信号至CPU进行处理。
图3:
加热炉报警系统
3.模拟量输入通道设计:
因为所控的实际温度在50~350℃,350-50=300.所以选用8位A/D转换器,其分辨率约为1.5℃/字,再加放大器偏置措施实现(通过调整放大器的零点来实现偏置)。
这里采用一般中速芯片ADC0809。
ADC0809是带有8位A/D转换器,8路多路开关以及微型计算机兼容的控制逻辑的CMOS组件,其转换方法为逐次逼近型。
8路的模拟开关由地址锁存器和译码器控制,可以在8个通道中任意访问一个通道的模拟信号。
这种器件无需进行零位和满量程调整。
由于多路开关的地址输入部分能够进行锁存和译码,而且其三态TTL输出也可以锁存,所以它易于与微型计算机接口。
其具有较高的转换速度和精度,受温度影响较小,能较长时间保证精度,重现性好,功耗较低,故用于过程控制是比较理想的器件。
图4:
ADC0809应用接线图
4.模拟量输出通道设计:
据其实际情况,D/A转换器的位数可低于A/D转换器的位数,因为一般控制系统对输出通道分辨率的要求比输入通道的低,所以这里采用常用的DAC0832芯片。
DAC0832是8位D/A转换器,与微处理器完全兼容。
期间采用先进的CMOS工艺,因此功耗低,输出漏电流误差较小。
它的内部具有两级输入数据缓冲器和一个R-2RT型电阻网络,因DAC0832电流输出型D/A转换芯片,为了取得电压输出,需在电流输出端接运算放大器,Rf为为运算放大器的反馈电阻端。
双极性电压输出的D/A转换电路通常采用偏移二进制码、补码二进制码和符号一数值编码。
只要在单极性电压输出的基础上再加一级电压放大器,并配以相关电阻网络就可以构成双极性电压输出。
在图5中,运算放大器A2的作用是把运算放大器A1的单向输出电压转变为双向输出。
图5:
DAC0832双极性电压输出电路
5.元器件的选择:
1)传感器的选择:
铂铑10—铂热电偶,S型,正极性,量程0—1300℃,使用温度小于等于600℃,允差±1.5℃。
2)执行元件的选择:
电阻加热炉采用晶闸管(SCR)来做规律控制,结合电阻炉的具体要求,为了减少炉温的纹波,对输出通道采用较高的分辨率的方案,因此采用移相触发方式,并且由模拟触发器实现移相触发。
3)变送器的选择:
因为系统要求有偏置,又需要对热电偶进行冷端补偿,所以采用常规的DDZ系列温度变送器。
4)控制元件:
采用双向可控硅进行控制,其功能相当于两个单向可控硅反向连接,具有双向导通功能,其通断状态有控制极G决定。
在控制极加上脉冲可使其正向或反向导通。
图6:
可控硅加热炉控制原理图
4、数字控制器设计
1)控制算法:
整个闭环系统可用一个带纯滞后的一阶惯性环节来近似,所以其控制算法采用大林算法。
电阻加热炉温度控制系统模型为:
其广义的传递函数为:
大林算法的设计目标是设计一个合适的数字控制器,使整个闭环系统的传递函数相当于一个带有纯滞后的一阶惯性环节,即:
通常认为对象与一个零阶保持器相串联,相对应的整个闭环系统的脉冲传递函数是:
2)计算过程:
连同零阶保持器在内的系统广义被控对象的传递函数:
系统闭环传递函数:
数字控制器:
消除振铃现象后的数字控制器:
离散化:
U(Z)—U(Z)Z—1=1.279E(Z)—1.226E(Z)Z—1
U(K)—U(K—1)=1.279E(K)—1.226E(K—1)
最终得:
U(K)=U(K—1)+1.279E(K)—1.226E(K—1)
图7:
电阻加热炉温度控制系统框图
5、软件设计
1)程序流程图:
a、系统主程序框图:
b、A/D转换子程序流程图:
c、LED显示流程图:
d、报警程序流程图:
e、数字控制算法子程序流程图:
2)源程序:
ORG0000H
AJMPMAIN
ORG0003H
AJMPKEYS
ORG000BH
AJMPPIT0
ORG001BH
AJMPPIT1;中断入口及优先级
MAIN:
MOVSP,#00H
CLR5FH;清上下限越限标志
MOVA,#00H
MOVR7,#09H
MOVR0,#28H
LP1:
MOV@R0,A
INCR0
DJNZR7,LP1
MOVR7,#06H
MOVR0,#39H
LP2:
MOV@R0,A
INCR0
DJNZR7,LP2
MOVR7,#06H
MOVRO,#50H
LP3:
MOV@R0,A
INCR0
DINZR7,LP3;清显示缓冲区
MOV33H,#00H
MOV34H,#00H;赋KP高低字节
MOV35H,#00H
MOV36H,#00H;赋KI高低字节
MOV37H,#00H
MOV38H,#00H;赋KD高低字节
MOV42H,#00H
MOV43H,#00H;赋K高低字节
MOVTMOD,#56H;T0方式2,T1方式1计数
MOVTLO,#06H
MOVTHO,#06H
MOV25H,#163H;设定值默认值350
SETBTR0;键盘高优先级
SETBET0
SETBEX0
SETBEA;开键盘T0。
T1中断
LOOP:
MOVR0,#56H
MOVR1,#55H
LCALLSCACOV;标度转化
MOVR0,#53H
LCALLDIR
NOP
LCALLDLY10MS
NOP
LCALLDLY10MS
AJMPLOOP;等中断
;键盘子程序
KEYS:
CLREX0
CLREA
PUSHPSW
PUSHACC;关中断
LCALLDLY10MS;消抖
CC:
JBP3.2AA
SETB5DH;置“显示设定值温度值标志”
MOVA,25H;取运算位的值
MOVB,#10H;BCD码转化
DIVAB
MOV52H,A
MOVA,B
MOV51H,A
MOVR0,#50H
LCALLDIR;显示设定温度
NOP
LCALLDLY10MS
NOP
LCALLDLY10MS
JBP1.7,BB
MOVR1,#25H
LCALLDAAD1
NOP
LCALLDLY10MS
AJMPCC
BB:
JBP1.6CC
MOVR1,#25H
LCALLDEEC1
NOP
LCALLDLY10MS
AJMPCC
AA:
POPACC
POPPSW
SETBEX0
SETBEA;出栈
RETI
;显示子程序
DIR:
MOVSCON,#00H;置串行口移位寄存器状态
SETBP1.4;开显示
JB5DH,DL1;显示设定温度
DL2:
MOVDPTR,#SEGT
DL0:
MOVA,@R0
MOVCA,@A+DPTR
MOVSBUF,A
LOOP1:
JNBTI,LOOP1
CLRTI
INCR0
MOVA,@R0
MOVCA,@A+DPTR
ANLA,#7FH;使数带小数点
MOVSBUF,A
LOOP2:
JNBTI,LOOP2
CLRTI
INCR0
MOVA,@R0
MOVCA,@A+DPTR
MOVSBUF,A
LOOP3:
JNBTI,LOOP3
CLRTI
CLRP1.4
CLR5DH
RET
DL1:
MOV50H,#0AH;小数位黑屏
AJMPDL2
SEGT:
DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH
;加一子程序
DAAD1:
MOVA,#00H
ORLA,@R1
ADDA,#01H
CJNEA,#30H,DAAD2;超过48度了吗?
DAAD3:
MOV@R1,A
DAA:
RET
DAAD2:
JCDAAD3
MOV@R1,#15EH;超过48则转回到355
AJMPDAA
;减一子程序
DEEC1:
MOVA,@R1
DECA
CJNEA,#15EH,DEEC2;低于355度了吗?
DEEC3:
MOV@R1,A
DEE:
RET
DEEC2:
JNCDEEC3
MOV@R1,#30H;低于355则转回到48
AJMPDEE
;T0中断子程序
PTT0:
CLREA
PUSHACC
PUSHPSW
PUAHDPL
PUSHDPH
SETBEA;压栈后开中断响应键盘
PPP:
LCALLSMAP;采样数据
LCALLFILTER;数字滤波
MOVA,2AH;取采样值
CJNEA,#07H,AAA;下限48比较
AJMPBBB
AAA:
JCCCC;小于48度转
CJNEA,#0FEH,DDD;上限355比较
AJMPBBB;转至48~355正常范围处理
DDD:
JCBBB
CLRP1.2;大于355黄灯亮
SETB5EH
CLRP1.1;置标志启动风扇
AJMPPPP
CCC:
CLRP1.3;小于48红灯亮
SETB5FH
BBB:
CLRP1.0;置标志启动电炉
AJMPPPP
SETBP1.0
SETBP1.1
SETBP1.2
SETBP1.3
CLR5EH
CLR5FH;50~350之间正常
LCALLPID
JNB20H,EEF;设定温度小于实际值转到风扇
MOVA,29H
LCALLFFF
CLRP1.0
LOOP10:
MOVR0,#56H;存放相乘结果的首址
MOVR1,#55H;赋显示缓冲区最高位地址
LCALLSCACOV;标度转化
MOVR0,#53H;赋显示首址
CLRDIR
JBD5H,LOOP10;等待T1中断
CLREA
POPDPH
POPDPL
POPPSW
SETBEA
POPACC
RETI
EEE:
MOVA,28H;风扇处理
LCALLFFF
CLRP1.1
AJMPLOOP10
FFF:
CRLA;根据PID结果计算T1初值
INCA
MOVTL1,A
MOVTH1,#0FFH
SETBPI1
SETBTR1
SETBET1
RET
;标度转化
SCACOV:
PROCNEAR
MOVDX,0
MOVDATA1,#258H
MOVDATA2,#708H
MOVDATA3,#960H
PROCNEAR
MOVDX,0
MOVAX,DATAP;取采样时间
CMPAX,DATA3;时间大于2400?
JAEQ3DOR
CMPAX,DATA2
JAEQ3-Q2;1800<时间<2400
CMPAX,DATA3
JAEQ2-Q1;600<时间<1800
Q0:
MOVBX,0.8H;<600SQ=50+t/2
MULBX
ADCDX,0
JMPDONE
Q2-Q1:
MOVAX,#15EH;Q=350
Q3-Q2:
SUBAX,DATA2;Q=350-(t-1800)/2
MOVBX,0.8H
MULBX
MOVAX,#15EH
SUBAX,BX
MOV@R1,A
PP:
RET
;采样子程序
SWAP:
MOVR0,#20H
MOVR1,#03H
SAW1:
MOVDPTR,#7FF8H
MOVX@DPTRA;A/D转化
MOVR2,#20H
DLY:
DJNZR2,DLY;延时
HERE:
JBP3.3,HERE
MOVDPTR,#7FF8H
MOVXA,@DPTR;读转化结果
MOV@R0,A
INCR0
DJNZR1,SAM1
RET
;数字滤波
FILTER:
MOVA,20H
CJNEA,2DHCMP1
AJMPCMP2
CMP1:
JNCCMP2
XCHA,2DH
XCHA,2CH
CMP2:
MOVA,2DH
CJNEA,22EH,CMP3
MOV2AH,A
AJMPRR
CMP3:
JCCMP4
MOV2AH,A
AJMPRR
CMP4:
MOVA,2EH
CJNEA,2CH,CMP5
MOV2AH,A
AJMPRR
CMP5:
JCCMP6
XCHA,2CH
CMP6:
MOV2AH,A
RR:
RET
;T1中断
PIT1:
CLR00H
JB20H,GGG
SETBP1.0;关闭电炉
GG:
CLRPT1
RETI
GGG:
SETBP1.1;关闭风扇
CLR20H
AJMPGG
;延时10MS子程序
DLY10MS:
MOVR7,#0A0H
DLOO:
MOVR6,#0FFH
DL11:
DJNZR6,DL11
DJNZR7,DL00
RET
;数字PID算法子程序
PID:
MOVR5,#00H
MOVR4,2DH;取NX值
MOVR3,#00H
MOVR2,#32H;取50
LCALLCPL1
LCALLDSUM;求(NX-32H)值
MOVR0,#5AH;赋乘法算法运算暂存单元地址首址
MOVR5,#05H
MOVR4,#1CH;赋参数
LCALLMULT;调无符号数乘法
MOV31H,5BH
MOV32H,5AH;存放结果有效值
MOVR5,31H
MOVR4,32H;取双字节UR(设定)
MOVR3,2AH
MOVR2,#00H;取双字节实测值
ACALLCPL1;取U(K)补码
ACALLDSUM;计算E(K)
MOV39H,R7
MOV3AH,R6;存E(K)
MOVR5,35H
MOVR4,36H;取KI参数
MOVR0,#4AH
ACALLMULT1;计算PI=KI*E(K)
MOVR2,39H
MOVR4,3AH;取E(K)
MOVR3,3BH
MOVR2,3CH;取E(K-1)
MOVR5,33H
MOVR4,34H;取KP参数
MOVR0,#46H
ACALLMULT1;KP*[E(K)-E(K-1)]
MOVR5,49H
MOVR4,48H
MOVR3,4DH
MOVR2,4CH
LCALLDSUM;KP*[E(K)-E(K-1)]+KI*E(K)
MOV4AH,R7
MOV4BH,R6;保存上式之和
MOVR5,39H
MOV3CH,3AH;存E(K)到E(K-1)
MOVA,31H;取设定值
CJNEA,2AH,AA2;比较设定值与实测值
AA3:
CLR20H;清电炉标志
AA1:
RET
AA2JNCAA3
SETB20H;清风扇标志位
MOVR3,39H
MOVR2,3AH
LCALLCPL1
MOVA,R3
MOVR7,A
MOVA,R2
MOVR6,A
MOVR5,42H
MOVR4,43H;取K1风扇标志
MOVR0,#5AH
ACALLMULT1;计算P=K*E(K)且结果存在51H,50H单元中
MOV28H,5BH;取8位有效值存在28H单元
AJMPAA
DSUM:
MOVA,R4;双字节加法子程序(R5R4)+(R3R2)(R7R6)
ADDA,R2
MOVR6,A
MOVA,R5
ADDCA,R3
MOVR7,A
RET
;双字节求补
CPL1:
MOVA,R2
CPLA
ADDA,#01H
MOVR2,A
MOVA,R3
CPLA
ADDCA,#00H
MOVR3,A
RET
;乘法被乘数R7R6乘数R5R4
MULT1:
MOVA,R7
RLCA
MOV5CH,C;被乘数符号C15CH位
JNCPOS1;为正数则转
MOVA,R1;为负数求补
CPLA
ADDA,#01H
MOVR6,A
MOVA,R7
CPLA
ADDCA,#00H
MOVR7,A
POS1:
M