计算机控制技术课程设计基于PID电阻炉温度控制系统Word文件下载.docx
- 文档编号:19553459
- 上传时间:2023-01-07
- 格式:DOCX
- 页数:24
- 大小:125.87KB
计算机控制技术课程设计基于PID电阻炉温度控制系统Word文件下载.docx
《计算机控制技术课程设计基于PID电阻炉温度控制系统Word文件下载.docx》由会员分享,可在线阅读,更多相关《计算机控制技术课程设计基于PID电阻炉温度控制系统Word文件下载.docx(24页珍藏版)》请在冰豆网上搜索。
f1%)1
1
gxl-严)
设包括零阶保持器在内的广义被控对象传递函数为
h(s)G(s)二Go(s)e「s
式中:
T为采样周期,并设m=f(取整数)。
纯滞后补偿器的传递函数为
引1-e「s]
£
s1
Ts
G°
(s)[「es「
s
采用由传递函数直接求差分方程式的方法进行计算,其步骤如下。
(1)计算外反馈回路偏差e1(n),即
q(n)=R(n)-y(n)
y(n)为被控量第n次采样时的数值;
R(n)为给定值,在定值控制系统中为常数。
(2)计算纯滞后补偿器的输出y1(n),即
Z(s)
P(s)
Go(s)二
匕(1eTs)
s(=s1)
化为微分方程式,则可写成:
T1
d2z(t)
dt2
dz(t)
dt
k』P(t)P(tT)]
用差分代替微分,则有
[z(n)-2z(n-1)z(n-2)]〒[z(n)-z(n-1)Pk,p(n)-p(n-1)]
在计算第n次采样的z(n)值时,p(n)尚未计算,因而用p(n-1)和p(n-2)代替p(n)和p(n-1)。
经移项整理
后得
z(n)=Az(n-1)-A,z(n~2)B1p(n-1)-B2p(n-2)
其中A1=
2T1T
T1T
;
A2=
k1T2
B2=
纯滞后补偿器的输出为
%(n)二z(n)-z(n「m)
(3)计算内反馈回路偏差e2(n),即
ez(npu(n)-y1(n)
p(n)=p(n-1)p(n)
=P(n-1)心⑥⑺-珈n-1)]gg
Kd6(n)-2珈n-1)e2(n-2)]
「tKpTKpTd
Kp为控制器的比例系数;
Ki为积分系数,Ki—;
Kd为微分系数,Kd匕-。
TiT
P(n)即为计算机的控制输出,用以控制执行机构的信号。
若有需要还可用此p(n)重新计算z(n),
作为下一个采样周期的z(n-1)值。
Smith预估补偿控制程序流程框图如下
三、硬件设计
系统的硬件电路包括微控制器部分(主机)、温度检测、温度控制、人机对话(键盘/显示/报警)4
个主要部分
电热阻控制系统结构框图
2•温度检测电路。
温度检测电路包括温度传感器、变送器和A/D转换器三部分。
温度传感器和变
送器的类型选择与被控温度的范围及精度等级有关。
型号为WZB-003的铂热电阻适合于0~500的温
度测量范围,可以满足本系统的要求。
变送器将电阻信号转换成与温度成正比的电压,当温度在0~500
时变送器输出0~4.9V左右的电压。
A/D转换器件的选择主要取决于温度的控制精度。
本系统要求温度控制误差乞-20C,采用8位
AA
A/D转换器,其最大量化误差为-丄(」500°
C)二-10C,能够满足精度要求。
因此,本系统采用
2255
ADC0809作为A/D转换器。
电路设计好后,调整变送器的输出,使0~500°
C的温度变化能对应于
0~4.9V的输出,贝UA/D转换对应的数字量为00H~FAH,即0~250,转换结果乘以2正好是温度值。
用这种方法一方面可以减少标度变换的工作量,另一方面还可以避免标度变换带来的计算误差,
3•温度控制电路。
控制电路采用可控硅来实现,双向可控硅SCR和电炉电阻丝串接在交流220V
的电回路中,单片机P1.7口的信号通过光电隔离器和驱动电路送到可控硅的控制端,由P1.7口的高
低电平来控制可控硅的导通与断开,从而控制电阻丝的通电加热时间。
4.人机对话电路。
这部分包括键盘、显示和报警三部分电路。
本系统设有3位LED数码显示器,用于显示电阻炉的设定温度和实际温度。
采用串行口扩展的静态显示电路作为显示接口电路。
为使系统简单紧凑,键盘只设置3个功能键,分别是“百位”、“十位”和“个位”键,由P1口低3位作为键盘接口。
利用数字键可以分别对预置温度的百位、十位和个位进行0〜500°
C的温度设
置,并在LED上显示当前设置值。
另外,还设置了系统复位键。
5•报警功能由蜂鸣器实现。
当由于意外因素导致电阻炉温度高于设置温度时,P1.6口送出低电平
经反相器驱动蜂鸣器鸣叫报警。
四、软件设计
系统的操作过程和工作过程在程序的设计过程中起着很重要的指导作用,因此在软件设计之前应
首先分析电阻炉的工作原理。
1•工作流程
电阻炉在上电复位后先处于停止加热状态,这时可以用数字键设定预置温度并显示出来;
温度设定后,就可以按启动键启动系统工作。
温度检测系统不断定时检测当前温度,并送往显示器显示,达到预定值后停止加热并显示当前温度;
当温度下降到下限时再启动加热。
这样不断重复上述过程,使温度保持在预定温度范围之内。
启动后可以修改预置温度。
2•功能模块
根据对工作流程的分析,系统软件可以分为以下几个功能模块:
(1)键盘管理。
实现键盘扫描与处理功能,接收温度预置,启动系统工作。
(2)显示。
显示设置温度及当前温度。
(3)温度检测及温度值变换。
实现A/D转换及数字滤波功能。
(4)温度控制。
根据检测到的温度控制电炉的工作状态。
(5)报警。
当预置温度或当前检测的炉温越限时,输出报警信号。
3•资源分配
在编程前,首先要对89C51的资源进行分配。
它包括显示单元(6位)、预置温度单元(2位)、
当前检测温度(2位)、BCD码显示缓冲区(3位)、二进制码显示缓冲区(3位)、报警允许标志、堆栈区等。
然后,还需要对键盘输入和报警、控制电路的端口地址进行分配。
单片机89C51内存的资源分配可以利用伪指令进行定义。
数据存储器的分配与定义如下表。
P1.0〜P1.3为键盘输入接口,P1.6和P1.7分别为报警控制和电路控制接口。
ADC0809输入通道
地址
功能
名称
初始化值
50H~51H
当前检测温度,高位在前
TEMPI〜TEMP0
00H
52H~53H
预置温度,高位在前
ST1〜ST0
54H~56H
温度BCD码显示缓冲区(百位、十位、个位)
T100,T10,T
57H~58H
二进制显示缓冲区,咼位在前
BT1,BT0
59H~7FH
堆栈区
PSW.5
报警允许标志
F0=0时禁止报警;
F0=1时允许报警
FO
O
INO〜IN7的地址为7FF8H〜7FFFH,本系统使用IN0通道。
4•程序总体结构设计
系统程序设计采用模块化设计方法,程序由主程序、中断服务子程序和各功能模块程序等组成,各功能模块可直接调用。
主程序完成系统的初始化、温度预置及其合法性检测、预置温度的显示及定时器TO的初始化设
置等。
TO中断服务程序是温度控制体系的主体,用于温度检测、控制和报警(包括启动A/D转换、
读入采样数据、数字滤波、越限温度报警和越限处理、输出可控硅的控制脉冲等)。
中断由TO产生,
根据需要每隔15S中断一次,即每15S采样控制一次。
由于系统采用6MHZ晶振,最大定时为130ms,为实现15S定时,另行设计了一个软件计数器。
主程序和中断服务子程序如下。
TEMP1
EQU50H
TEMP2
EQU51H
ST1
EQU52H
EQU53H
T100
EQU54H
T10
EQU55H
EQU56H
BT1
EQU57H
BT2
EQU58H
ADINO
EQU7FF8H
F0
BITPSW.5
当前检测温度(高位)
当前检测温度(低位)
预置温度(高位)
预置温度(低位)
温度BCD码显示缓冲区(百位);
温度BCD码显示缓冲区(十位);
温度BCD码显示缓冲区(个位);
温度二进制显示缓冲区(高位);
温度二进制显示缓冲区(低位)
ADC0809通道IN0的端口地址
TEMPIDB00H,00H,00H,00H,00H,00H,00H,00H;
50H~58H'
单元初始化(清零)
ORG0000H
AJMP
MAIN
转主程序
ORG
OOOBH
PT0
转PTO中断服务子程序
0030H
MAIN:
MOVSP,#59H
设堆栈指针
CLRF0
;
报警标志清零
MOVTMOD,#01H
定时器0初始化(方式1)
MOVTL0,#0B0H
定时器100ms定时常数
MOVTH0,#3CH
MOVR7,#150
置15s计数器初值
SETBETO
允许定时器0中断
SETBEA
开中断
SETBTR0
启动定时器0
MAIN1:
ACALLKIN
调键盘管理子程序
ACALLDISP
调显示子程序
SJMPMAIN1
淀时器
0中断服务子程序PT0:
PT0:
重置定时器初值
DJNZR7,BACK
检测是否到达15S
重置计数器初值
ACALLTIN
温度检测
MOVBT1,TEMP1
当前温度送显示缓冲区
MOVBT0,TEMP2
显示当前温度
ACALLCONT
ACALLALARM
BACK:
RETI
温度控制
温度越限报警
开始
重置定时器0初值
软定时器减1
重置软定时器0初值
调用温度检测子程序
主程序
调报警]
子程序
r
L-1
中断返回
调用温度控制子程序
中断服务程序
系统程序总体结构框图
5•功能软件设计
(1)键盘管理模块。
上电或复位后系统处于键盘管理状态,其功能是键盘的扫描和处理,接收温度
预置和启动键。
程序设有预置温度合法检测报警,当预置温度超过500°
C。
键盘管理子程序和流程
图如下。
先设置预置温度合法性检测子程序
CHK(用双字节减法比较预置温度是否大于500OC,对应的
数字量为01F4H)
CHK:
MOVA,#0F4H;
预置温度上限低8位送A
CLRC;
清零C
SUBBA,STO;
低8位减,借位送CY
MOVA,#01H
SUBBA,ST1
JCOUTA
MOVA,#00H
CHR:
RET
OUTA:
MOVST1,#01H
MOVST0,#0F4H
CLRP1.6
ACALLDELAY
SETBP1.6
预置温度上限高8位送A
高8位带借位减
预置温度越界,转报警
预置温度合法标志
将500写入预置温度数据区
发报警信号
调用延迟子程序
停止报警
DELAY:
MOV
R5,
#100H
DEL1:
R6,
#10
DEL2:
R乙
#7DH
DEL3:
DJNZ
R7,DEL3
R6,DEL2
R5,DEL1
RET
SJMPCHKR
延时1s程序
利用+1按键可以分别对预置温度的百位、十位和个位进行加1设置,以下是程序
KEY:
MOVBT0,ST0
MOVBT1,ST1
KEY0:
ACALLKEY1
JZ
KEY0
LCALLDISP
JB
ACC.0,K10
A,#100
LJMP
KEY3
K10:
ACC.1,K1
A,#10
KEY2
K1:
ACC.2,KEY0
预置温度送显示缓冲区
显示预置温度
读按键值
无键按下循环,直到有键按下
两次调用显示子程序延时去抖动
再检测有无键按下
无键按下重新检测
百位键按下
十位键按下
A,#01
个位键按下
KEY2:
ADD
A,ST0
预置温度按键+1
STO,A
KEY3:
LCALLKEY1
判断闭合键释放
JNZ
未释放继续判断
KEY
闭合键释放继续扫描键盘
返回
KEY1:
A,P1
读键值子程序
CPL
A
ANL
A,#0FH
P1.0=1?
P1.1=1?
P1.2=1?
有键闭合?
预置温度t显示缓冲区
调用显示子程序
预置温度合法检查
个位键+1
启动加热
百位键+1
十位键+1
保存新的温度预置值
键盘管理子程序流程图
(2)显示模块。
显示子程序的功能是将显示缓冲区57H和58H的二进制数据先转换成3个BCD码,
分别存入百位、十位和个位显示缓冲区(54H、55H和56H)单元,然后通过串行口送出显示。
显示子程序DISP:
DISP:
ACALL
HTB
调用将显示数据转换成BCD码的子程序
SCON,#00H
置串行口为方式0
R2,#03H
显示位数送R2
RO,#T100
显示缓冲区首地址送R0
LD:
MOV
DPTR,#TAB
指向字符码表首地址
A,@R0
取显示数据
MOVC
A,@A+DPTR
查表
SBUF,A
字符码送串行口
WAIT:
JBC
TI,NEXT
发送结束转下一个数据并清中断标志
SJMP
WAIT
发送未完等待
NEXT:
INC
RO
修改显示缓冲区指针
R2,LD
判断3位显示是否完成,未完继续
TAB:
C0H
F9HA4HB0H
99H92H82HF8H80H90H
HTB:
A,57H
取二进制显示数据
A,58H
B,#100
除以100,确定百位数
DIV
A,B
54H,A
百位数送54H单元
除以10,确定十位数以及个位数
XCH
55H,A
十位数送55H单元
56H,B
个位数送56H单元
(3)温度检测模块。
A/D转换采用查询方式。
为提高数据采样的可靠性,对采样温度进行数字滤波。
数字滤波的算法很多,这里采用4次采样取平均值的方法。
如前所述,本系统A/D转换结果
乘以2正好是温度值,因此,4次采样的数字量之和除以2就是检测的当前温度。
检测结果高位存入50H,低位存入51H。
温度检测子程序流程图
并停止
程序如下:
51H,#00H
清检测温度缓冲区
50H,#00H
R2,#04H
取样次数送R2
DPTR,#7FF8H
指向A/D转换器0通道
TADC0
:
MOVX
@DPTR,A
启动转换
TADC1
JNB
IE1,TADC1
等待结束
A,@DPTR
读转换结果
ADDC
A,51H
累加
51H,A
R2,TADC0
4次采样是否完成,未完继续
CLR
C
累加结果除以2
RRC
R5,A
ORL
高8位放50H低8位放51H
R5,#0F0H
50H,R5
(4)温度控制模块。
将当前温度与预置温度比较,当前温度小于预置温度时,继电器闭合,接通电阻丝加热;
当前温度大于预置温度,继电器断开,停止加热;
当两者相等时电炉保持原来状态;
当前温度降低到比预置温度低2oC时,再重新启动加热;
当前温度超出报警上下限时将启动报警,加热。
温度控制子程序:
CONT:
当前温度tA
清零
SUBB
A,53H
当前温度-预置温度
JNC
CONT1
无借位,表示当前温度》预置温度,转CONT1
F0,CONT0
当前温度<预置温度,判断是否超过预置温度
A,#02H
若超过预置温度,判断二者差值是否大于2
ACC.7,CONT1
差值不大于2,转CONT1
CONT0:
P1.7
开电炉
CONT2
CONT1:
SETB
设置允许报警标志
关电炉
CONT2:
」-J
当前温度与预置温度比较
(5)温度超限报警模块。
报警上限温度值为预置温度_5°
C,即当前温度上升到高于预置温度
5oC时报警,并停止加热;
报警下限温度值设为预置温度-5°
C,即在当前温度下降到低于预置温
度-5°
C,且允许报警,这是为了防止开始从较低温度加温时报警。
报警的同时关闭电炉。
程序如下
ALARM:
读取当前温度
当前温度-预置温度tA
JC
ALARM0
有借位,当前温度小于预置温度转
当前温度》预置温度,允许报警
ALARM1
ALARMO
预置温度tA
预置温度-当前温度ta
A,#05H
温度差再减5
ALARM2
相减结果小于5,不报警返回
FO,ALARM2
相减结果》5,判断是否允许报警,
不允许则返回
P1.6
启动报警
报警延时
关报警
R5,#100H
R6,#10
R7,#7DH
DJNZR6,DEL2
DJNZR5,DEL1
三、课程设计(综合实验)总结或结论
四、参考文献
[1]李广弟,朱月秀,单片机基础•北京航空航天大学出版社,第三版•2007.6
[1]凌玉华,刘连浩单片机原理及应用系统设计•中南大学出版社,第一版•2006.4
[1]杨居义,杨晓琴,单片机课程设计指导•清华大学出版社.2009.09
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机控制 技术 课程设计 基于 PID 电阻炉 温度 控制系统