微型计算机控制技术课程方案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
微型计算机控制技术课程
设计
----电阻加热炉温度控制
学院:
专业班级:
姓名:
学号:
指导教师:
目录
一、摘要 (2)
二、总体方案设计 (2)
设计任务
1、设计内容及要求 (2)
2、工艺要求 (2)
3、要求实现的系统基本功能 (3)
4、对象分析 (3)
5、系统功能设计 (3)
三、硬件的设计和实现 (4)
四、数字控制器的设计 (7)
五、软件设计 (9)
1、系统程序流程图 (9)
2、程序清单 (11)
六、完整的系统电路图 (21)
七、系统调试 (21)
八、设计总结 (21)
九、参考文献 (22)
一、摘要
温度是工业对象中主要的被控参数之一。
特别是在冶金、化工、机械各类工业中,广泛使用各种加热炉、热处理炉、反应炉等。
由于炉子的种类不同,所采用的加热方法及燃料也不相同,如煤气、天然气等。
但就控制系统本身的动态特性而言,均属于一阶纯滞后环节,在控制算法上基本相同,可采用PID控制或其他纯滞后补偿算法。
为了保证生产过程正常安全地进行,提高产品的质量和数量,以及减轻工人的劳动强度,节约能源,对加热用的各种电炉要求在一定条件下保持恒温,不能随电源电压波动或炉内物体而变化,或者有的电炉的炉温根据工艺要求按照某个指定的升温或保温规律而变化,等等。
因此,在工农业生产或科学实验中常常对温度不仅要不断地测量,而且要进行控制。
二、总体方案设计
设计任务
用一台计算机及相应的部件组成电阻炉炉温的自动控制系统,并使系统达到工艺要求的性能指标。
1、设计内容及要求
电阻加热炉用于合金钢产品热力特性实验,电加热炉用电炉丝提供功率,使其在预定的时间内将炉内温度稳定到给定的温度值。
在本控制对象电阻加热炉功率为8KW,有220V交流电源供电,采用双向可控硅进行控制。
系统模型:
2、工艺要求
按照规定的曲线进行升温和降温,温度控制范围为50—350℃,升温和降温阶段的温度控制精度为+5℃,保温阶段温度控制精度为+2℃。
3、要求实现的系统基本功能
微机自动调节:正常工况下,系统投入自动。
模拟手动操作:当系统发生异常,投入手动控制。
微机监控功能:显示当前被控量的设定值、实际值,控制量的输出值,参数报警时有灯光报警。
4、对象分析
在本设计中,要求电阻炉炉内的温度,按照上图所示的规律变化,从室温开始到50℃为自由升温阶段,当温度一旦到达50℃,就进入系统调节,当温度到达350℃时进入保温段,要始终在系统控制下,一保证所需的炉内温度的精度。
加工结束,要进行降温控制。
保温段的时间为600—1800s。
过渡过程时间:即从开始控制到进入保温阶段的时间要小于600s。
在保温段当温度高于352℃或低于348℃时要报警,在升温和降温阶段也要进行控制,使炉内温度按照曲线的斜率升或降。
采用MCS—51单片机作为控制器,ADC0809模数转换芯片为模拟量输入,DAC0832数模转换芯片为模拟量输出,铂电阻为温度检测元件,运算放大器和可控硅作为功率放大,电阻炉为被控对象,组成电阻炉炉温控制系统,另外,系统还配有数字显示,以便显示和记录生产过程中的温度和输出值。
5、系统功能设计
计算机定时对炉温进行测量和控制一次,炉内温度是由一铂电阻温度计来进行测量,其信号经放大送到模数转换芯片,换算成相应的数字量后,再送入计算机中进行判别和运算,得到应有的电功率数,经过数模转换芯片转换成模拟量信号,供给可控硅功率调节器进行调节,使其达到炉温变化曲线的要求。
三、硬件的设计和实现
1、计算机机型:MCS—51 8031<不包含ROM、EPROM)
系统总线:PC总线
2、设计支持计算机工作的外围电路
矩阵键盘技术:
温度输出显示技术:
LED静态显示接口技术,所谓静态显示,即CPU输出显示值后,由硬件保存输出值,保持显示结果.
特点:占用机时少,显示可靠.但元件多,线路复杂、成本高,功耗大。
报警电路设计:正常运行时绿灯亮,在保温阶段炉内温度超出系统允差范围,就要进行报警。
报警时报警灯亮,电笛响,同时发送中断信号至CPU进行处理。
3、设计输入输出通道
输入通道:因为所控的实际温度在50 ~350℃左右,即<350-50)=300所以选用8位A/D转换器,其分辨率约为1.5℃/字,再加放大器偏置措施实现。
<通过调整放大器的零点来实现偏置)这里采用一般中速芯片ADC0809。
ADC0809是带有8位A/D转换器,8路多路开关以及微型计算机兼容的控制逻辑的CMOS组件,其转换方法为逐次逼近型。
8路的模拟开关由地址锁存器和译码器控制,可以在8个通道中任意访问一个通道的模拟信号。
输出通道:据其实际情况,D/A转换器的位数可低于A/D转换器的位数,因为一般控制系统对输出通道分辨率的要求比输入通道的低,所以这里采用常用的DAC0832芯片
DAC0832是8位D/A转换器,与微处理器完全兼容。
期间采用先进的CMOS工艺,因此功耗低,输出漏电流误差较小。
因DAC0832电流输出型D/A转换芯片,为了取得电压输出,需在电流输出端接运算放大器,Rf为为运算放大器的反馈电阻端。
4、元器件的选择
传感器的选择:铂铑10—铂热电偶,S型,正极性,量程0—1300C,使用温度小于等于600C,允差+1.5C。
执行元件的选择:电阻加热炉采用晶闸管<SCR)来做规律控制,结合电阻炉的具体要求,为了减少炉温的纹波,对输出通道采用较高的分辨率的方案,因此采用移相触发方式,并
且由模拟触发器实现移相触发。
变送器的选择:因为系统要求有偏置,又需要对热电偶进行冷端补偿,所以采用常规的DDZ系列温度变送器。
控制元件:采用双向可控硅进行控制,其功能相当于两个单向可控硅反向连接,具有双向导通功能,其通断状态有控制极G决定。
在控制极加上脉冲可使其正向或反向导通。
四、数字控制器的设计
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)
五、软件设计
1、系统程序流程图
a、系统主程序框图
b、A/D转换子程序流程图
c、LED显示流程图
d、数字控制算法子程序流程图
2、程序清单
ORG 0000H
AJMP MAIN
ORG 0003H
AJMP KEYS
ORG 000BH
AJMP PIT0
ORG 001BH
AJMP PIT1 ;中断入口及优先级MAIN: MOV SP,#00H
CLR 5FH :清上下限越限标志
MOV A,#00H
MOV R7,#09H
MOV R0,#28H
LP1:MOV @R0,A
INC R0
DJNZ R7,LP1
MOV R7,#06H
MOV R0,#39H
LP2:MOV @R0,A
INC R0
DJNZ R7,LP2
MOV R7,#06H
MOV RO,#50H
LP3:MOV @R0,A
INC R0
DINZ R7,LP3 ;清显示缓冲区
MOV 33H,#00H
MOV 34H,#00H ;赋KP高低字节
MOV 35H,#00H
MOV 36H,#00H ;赋KI高低字节
MOV 37H,#00H
MOV 38H,#00H ;赋KD高低字节
MOV 42H,#00H
MOV 43H,#00H ;赋K高低字节
MOV TMOD,#56H ;T0方式2,T1方式1计数
MOV TLO,#06H
MOV THO,#06H
MOV 25H,#163H ;设定值默认值350
SETB TR0 ;键盘高优先级
SETB ET0
SETB EX0
SETB EA ;开键盘T0。
T1中断
LOOP:MOV R0,#56H
MOV R1,#55H
LCALL SCACOV ;标度转化
MOV R0,#53H
LCALL DIR
NOP
LCALL DL Y10MS
NOP
LCALL DL Y10MS
AJMP LOOP ;等中断
键盘子程序
KEYS:CLR EX0
CLR EA
PUSH PSW
PUSH ACC ;关中断
LCALL DL Y10MS ;消抖
CC:JB P3.2 AA
SETB 5DH ;置“显示设定值温度值标志”
MOV A,25H ;取运算位的值
MOV B,#10H ;BCD码转化
DIV A B
MOV 52H,A
MOV A, B
MOV 51H, A
MOV R0,#50H
LCALL DIR 。
显示设定温度
NOP
LCALL DL Y10MS
NOP
LCALL DL Y10MS
JB P1.7 ,BB
MOV R1,#25H
LCALL DAAD1
NOP
LCALL DL Y10MS
AJMP CC
BB: JB P1.6 CC
MOV R1,#25H
LCALL DEEC1
NOP
LCALL DL Y10MS
AJMP CC
AA: POP ACC
POP PSW
SETB EX0
SETB EA 。
出栈
RETI
显示子程序
DIR: MOV SCON ,#00H 。
置串行口移位寄存器状态
SETB P1.4 。
开显示
JB 5DH,DL1 。
显示设定温度
DL2: MOV DPTR,#SEGT
DL0: MOV A,@R0
MOVC A,@A+DPTR
MOV SBUF ,A
LOOP1: JNB TI, LOOP1
CLR TI
INC R0
MOV A,@R0
MOVC A,@A+DPTR
ANL A, #7FH :使数带小数点
MOV SBUF ,A
LOOP2: JNB TI,LOOP2
CLR TI
INC R0
MOV A,@R0
MOVC A,@A+DPTR
MOV SBUF,A
LOOP3: JNB TI,LOOP3
CLR TI
CLR P1.4
CLR 5DH
RET
DL1: MOV 50H,#0AH 。
小数位黑屏
AJMP DL2
SEGT: DB 0C0H ,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH 加一子程序
DAAD1: MOV A,#00H
ORL A,@R1
ADD A,#01H
CJNE A,#30H,DAAD2 。
超过48度了吗?
DAAD3: MOV @R1,A
DAA: RET
DAAD2: JC DAAD3
MOV @R1,#15EH 。
超过48则转回到355
AJMP DAA
减一子程序
DEEC1: MOV A,@R1
DEC A
CJNE A,#15EH,DEEC2 。
低于355度了吗?
DEEC3: MOV @R1,A
DEE : RET
DEEC2: JNC DEEC3
MOV @R1,#30H 。
低于355则转回到48
AJMP DEE
T0中断子程序
PTT0: CLR EA
PUSH ACC
PUSH PSW
PUAH DPL
PUSH DPH
SETB EA 。
压栈后开中断响应键盘PPP: LCALL SMAP :采样数据
LCALL FILTER 。
数字滤波
MOV A,2AH 。
取采样值
CJNE A,#07H,AAA 。
下限48比较
AJMP BBB
AAA: JC CCC 。
小于48度转
CJNE A,#0FEH ,DDD 。
上限355比较
AJMP BBB 。
转至48~355正常范围处理DDD: JC BBB
CLR P1.2 。
大于355黄灯亮
SETB 5EH
CLR P1.1 。
置标志启动风扇
AJMP PPP
CCC: CLR P1.3 。
小于48红灯亮
SETB 5FH
BBB: CLR P1.0 。
置标志启动电炉
AJMP PPP
SETB P1.0
SETB P1.1
SETB P1.2
SETB P1.3
CLR 5EH
CLR 5FH 。
50~350之间正常
LCALL PID
JNB 20H,EEF 。
设定温度小于实际值转到风扇
MOV A,29H
LCALL FFF
CLR P1.0
LOOP10: MOV R0,#56H 。
存放相乘结果的首址
MOV R1,#55H 。
赋显示缓冲区最高位地址
LCALL SCACOV 。
标度转化
MOV R0,#53H 。
赋显示首址
CLR DIR
JB D5H,LOOP10 。
等待T1中断
CLR EA
POP DPH
POP DPL
POP PSW
SETB EA
POP ACC
RETI
EEE: MOV A,28H 。
风扇处理
LCALL FFF
CLR P1.1
AJMP LOOP10
FFF: CRL A 。
根据PID结果计算T1初值INC A
MOV TL1,A
MOV TH1,#0FFH
SETB PI1
SETB TR1
SETB ET1
RET
标度转化
SCACOV :PROC NEAR
MOV DX,0
MOV DATA1,#258H
MOV DATA2,#708H
MOV DATA3,#960H
PROC NEAR
MOV DX,0
MOV AX,DATAP 。
取采样时间
CMP AX,DATA3 。
时间大于2400?
JAE Q3DOR
CMP AX,DATA2
JAE Q3-Q2 。
1800<时间<2400
CMP AX,DATA3
JAE Q2-Q1 。
600<时间<1800
Q0: MOV BX,0.8H 。
<600S Q=50+t/2 MUL BX
ADC DX,0
JMP DONE
Q2-Q1: MOV AX,#15EH 。
Q=350
Q3-Q2: SUB AX,DA TA2 。
Q=350-(t-1800>/2
MOV BX,0.8H
MUL BX
MOV AX,#15EH
SUB AX,BX
MOV @R1,A
PP: RET
采样子程序
SWAP: MOV R0,#20H
MOV R1,#03H
SAW1: MOV DPTR,#7FF8H
MOVX @DPTR A 。
A/D转化
MOV R2,#20H
DL Y: DJNZ R2,DL Y 。
延时
HERE: JB P3.3 ,HERE
MOV DPTR,#7FF8H
MOVX A,@DPTR 。
读转化结果
MOV @R0,A
INC R0
DJNZ R1,SAM1
RET
数字滤波
FILTER: MOV A, 20H
CJNE A,2DH CMP1
AJMP CMP2
CMP1: JNC CMP2
XCH A,2DH
XCH A,2CH
CMP2: MOV A,2DH
CJNE A,22EH,CMP3
MOV 2AH,A
AJMP RR
CMP3: JC CMP4
MOV 2AH,A
AJMP RR
CMP4: MOV A,2EH
CJNE A,2CH,CMP5
MOV 2AH ,A
AJMP RR
CMP5: JC CMP6
XCH A,2CH
CMP6: MOV 2AH,A
RR: RET
T1中断
PIT1: CLR 00H
JB 20H, GGG
SETB P1.0 。
关闭电炉
GG: CLR PT1
RETI
GGG: SETB P1.1 。
关闭风扇
CLR 20H
AJMP GG
延时10MS子程序
DL Y10MS: MOV R7,#0A0H
DLOO: MOV R6,#0FFH
DL11: DJNZ R6,DL11
DJNZ R7,DL00
RET
数字PID算法子程序
PID: MOV R5,#00H
MOV R4,2DH 。
取NX值
MOV R3,#00H
MOV R2,#32H 。
取50
LCALL CPL1
LCALL DSUM 。
求(NX-32H>值
MOV R0,#5AH 。
赋乘法算法运算暂存单元地址首址
MOV R5,#05H
MOV R4,#1CH 。
赋参数
LCALL MULT 。
调无符号数乘法
MOV 31H ,5BH
MOV 32H ,5AH 。
存放结果有效值
MOV R5,31H
MOV R4,32H 。
取双字节UR(设定>
MOV R3,2AH
MOV R2,#00H 。
取双字节实测值
ACALL CPL1 。
取U(K>补码
ACALL DSUM 。
计算E(K>
MOV 39H, R7
MOV 3AH,R6 。
存E(K>
MOV R5,35H
MOV R4,36H 。
取KI参数
MOV R0,#4AH
ACALL MULT1 。
计算PI=KI*E(K>
MOV R2,39H
MOV R4,3AH 。
取E(K>
MOV R3,3BH
MOV R2,3CH 。
取E(K-1>
MOV R5,33H
MOV R4,34H 。
取KP参数
MOV R0,#46H
ACALL MULT1 。
KP*[ E(K>- E(K-1>]
MOV R5,49H
MOV R4,48H
MOV R3,4DH
MOV R2,4CH
LCALL DSUM 。
KP*[ E(K>- E(K-1>]+ KI*E(K>
MOV 4AH, R7
MOV 4BH,R6 。
保存上式之和
MOV R5,39H
MOV 3CH,3AH 。
存E(K>到E(K-1>
MOV A,31H 。
取设定值
CJNE A,2AH,AA2 。
比较设定值与实测值AA3: CLR 20H 。
清电炉标志
AA1: RET
AA2 JNC AA3
SETB 20H 。
清风扇标志位
MOV R3,39H
MOV R2,3AH
LCALL CPL1
MOV A,R3
MOV R7,A
MOV A,R2
MOV R6,A
MOV R5,42H
MOV R4,43H 。
取K1风扇标志
MOV R0,#5AH
ACALL MULT1 。
计算P=K*E(K>且结果存在51H,50H单元中MOV 28H,5BH 。
取8位有效值存在28H单元
AJMP AA
DSUM: MOV A,R4 。
双字节加法子程序(R5R4>+(R3R2> (R7R6> ADD A,R2
MOV R6,A
MOV A,R5
ADDC A,R3
MOV R7,A。