资源描述
科 技 学 院
课程设计报告
( 2013 -- 2014年度 第 2 学期)
名 称: 计算机控制系统A
题 目:
院 系: 动力工程系
班 级: 自动化11K×班
学 号:
学生:
指导教师:
设计周数: 1周
成 绩:
日期: 2014 年 7 月 11 日
基于Smith-PID电阻炉温度控制系统
一、课程设计(综合实验)的目的与要求
设计目的
用SMITH-PID控制器控制电阻炉。避免因为延时过大造成的控制误差过大
设计要求
设计一个基于闭环直接数字控制算法的电阻炉温度控制系统具体化技术指标如下:
1.电阻炉温度控制在0~500℃;
2. 加热过程中恒温控制,误差为±2℃;
3. LED实时显示系统温度,用键盘输入温度,精度为1℃;
4. 采用Smith-PID数字控制算法,要求误差小,平稳性好;
5. 温度超出预置温度±5℃时发出报警。
2方案设计
本系统是一个典型的温度闭环控制系统,需要完成的功能是温度设定、检测与显示以与温度控制、报警等。温度的设定和显示功能可以通过键盘和显示电路部分完成;温度检测可以通过热电阻、热电偶或集成温度传感器等器件完成;温度超限报警可以利用蜂鸣器等实现;温度控制可以采用可控硅电路实现。
系统采用89C51作为系统的微处理器来完成对炉温的控制和键盘显示功能。8051片除了128KB的RAM外,片又集成了4KB的ROM作为程序存储器,是一个程序不超过4K字节的小系统。系统程序较多时,只需要外扩一个容量较小的程序存储器,占用的I/O口减少,同时也为键盘、显示等功能的设计提供了硬件资源,简化了设计,降低了成本。因此89C51可以完成设计要求。
系统建模和数字控制器的设计
PID调节是连续系统术最成熟的、应用最广泛的一种控制算方法。它结构灵活,不仅可以用常规的PID调节,而且可以根据系统的要求,采用各种PID的变型,如PI、PD控制与改进的PID控制等。它具有许多特点,如不需要求出数学模型、控制效果好等,特别是在微机控制系统中,对于时间常数比较大的被控制对象来说,数字PID完全可以代替模拟PID调节器,应用更加灵活,使用性更强。所以该系统采用PID控制算法。系统的结构框图如图3-1所示:
3.2数字控制器的设计
具有一阶惯性纯滞后特性的电阻炉系统,其数学模型可表示为:
采用离散Smith预估控制系统。该系统框图如下
设包括零阶保持器在的广义被控对象传递函数为
式中:T为采样周期,并设m=(取整数)。
纯滞后补偿器的传递函数为
采用由传递函数直接求差分方程式的方法进行计算,其步骤如下。
(1) 计算外反馈回路偏差e1(n),即
式中:y(n)为被控量第n次采样时的数值;R(n)为给定值,在定值控制系统中为常数。
(2) 计算纯滞后补偿器的输出y1(n),即
化为微分方程式,则可写成:
用差分代替微分,则有
在计算第n次采样的z(n)值时,p(n)尚未计算,因而用p(n-1)和p(n-2)代替p(n)和p(n-1)。经移项整理后得
其中;;;
纯滞后补偿器的输出为
(3) 计算反馈回路偏差e2(n),即
(4) 计算数字控制器输出p(n),控制器采用PID控制规律,则
式中:为控制器的比例系数;为积分系数,;为微分系数,。
P(n)即为计算机的控制输出,用以控制执行机构的信号。若有需要还可用此p(n)重新计算z(n),作为下一个采样周期的z(n-1)值。
返回
z(n)~z(n-m)
z(n-1)~z(n-m-1)
P(n)P(n-1)
P(n-1)P(n-2)
……
P1(n)P1(n-1)
……
重算z(n)
计算p(n)
数字滤波
输出P1(n)
Pmp1(n)
P1(n)>Pm
计算p1(n)
计算e2(n)
计算y1(n)
计算z(n)
计算e1(n)
有效性检查
读入y1(n)
Smith预估补偿控制程序流程框图如下
三、 硬件设计
系统的硬件电路包括微控制器部分(主机)、温度检测、温度控制、人机对话(键盘/显示/报警)4个主要部分
温度检测部分
1. 本次设计采用的是89C51单片机
人机对话部分
89C51
热电阻
变送器
A/D转换器
温度显示
键盘
温度控制部分
电炉
可控硅调功器
驱动器
光耦
声音报警
电热阻控制系统结构框图
2.温度检测电路。温度检测电路包括温度传感器、变送器和A/D转换器三部分。温度传感器和变送器的类型选择与被控温度的围与精度等级有关。型号为WZB-003的铂热电阻适合于0~500的温度测量围,可以满足本系统的要求。变送器将电阻信号转换成与温度成正比的电压,当温度在0~500时变送器输出0~4.9V左右的电压。
A/D转换器件的选择主要取决于温度的控制精度。本系统要求温度控制误差,采用8位A/D转换器,其最大量化误差为,能够满足精度要求。因此,本系统采用ADC0809作为A/D转换器。电路设计好后,调整变送器的输出,使的温度变化能对应于0~4.9V的输出,则A/D转换对应的数字量为00H~FAH,即0~250,转换结果乘以2正好是温度值。用这种方法一方面可以减少标度变换的工作量,另一方面还可以避免标度变换带来的计算误差,
3.温度控制电路。控制电路采用可控硅来实现,双向可控硅SCR和电炉电阻丝串接在交流220V的电回路中,单片机P1.7口的信号通过光电隔离器和驱动电路送到可控硅的控制端,由P1.7口的高低电平来控制可控硅的导通与断开,从而控制电阻丝的通电加热时间。
4.人机对话电路。这部分包括键盘、显示和报警三部分电路。
本系统设有3位LED数码显示器,用于显示电阻炉的设定温度和实际温度。采用串行口扩展的静态显示电路作为显示接口电路。
为使系统简单紧凑,键盘只设置3个功能键,分别是“百位”、“十位”和“个位”键,由P1口低3位作为键盘接口。利用数字键可以分别对预置温度的百位、十位和个位进行的温度设置,并在LED上显示当前设置值。另外,还设置了系统复位键。
5. 报警功能由蜂鸣器实现。当由于意外因素导致电阻炉温度高于设置温度时,P1.6口送出低电平经反相器驱动蜂鸣器鸣叫报警。
四、 软件设计
系统的操作过程和工作过程在程序的设计过程中起着很重要的指导作用,因此在软件设计之前应首先分析电阻炉的工作原理。
1. 工作流程
电阻炉在上电复位后先处于停止加热状态,这时可以用数字键设定预置温度并显示出来;温度设定后,就可以按启动键启动系统工作。温度检测系统不断定时检测当前温度,并送往显示器显示,达到预定值后停止加热并显示当前温度;当温度下降到下限时再启动加热。这样不断重复上述过程,使温度保持在预定温度围之。启动后可以修改预置温度。
2.功能模块
根据对工作流程的分析,系统软件可以分为以下几个功能模块:
(1) 键盘管理。实现键盘扫描与处理功能,接收温度预置,启动系统工作。
(2) 显示。显示设置温度与当前温度。
(3) 温度检测与温度值变换。实现A/D转换与数字滤波功能。
(4) 温度控制。根据检测到的温度控制电炉的工作状态。
(5) 报警。当预置温度或当前检测的炉温越限时,输出报警信号。
3.资源分配
在编程前,首先要对89C51的资源进行分配。它包括显示单元(6位)、预置温度单元(2位)、当前检测温度(2位)、BCD码显示缓冲区(3位)、二进制码显示缓冲区(3位)、报警允许标志、堆栈区等。然后,还需要对键盘输入和报警、控制电路的端口地址进行分配。
地址
功能
名称
初始化值
50H~51H
当前检测温度,高位在前
TEMP1~TEMP0
00H
52H~53H
预置温度,高位在前
ST1~ST0
00H
54H~56H
温度BCD码显示缓冲区(百位、十位、个位)
T100,T10,T
00H
57H~58H
二进制显示缓冲区,高位在前
BT1,BT0
00H
59H~7FH
堆栈区
PSW.5
报警允许标志
F0=0时禁止报警;F0=1时允许报警
FO
O
单片机89C51存的资源分配可以利用伪指令进行定义。数据存储器的分配与定义如下表。
P1.0~P1.3为键盘输入接口,P1.6和P1.7分别为报警控制和电路控制接口。ADC0809输入通道INO~IN7的地址为7FF8H~7FFFH,本系统使用IN0通道。
4. 程序总体结构设计
系统程序设计采用模块化设计方法,程序由主程序、中断服务子程序和各功能模块程序等组成,各功能模块可直接调用。
主程序完成系统的初始化、温度预置与其合法性检测、预置温度的显示与定时器T0的初始化设置等。T0中断服务程序是温度控制体系的主体,用于温度检测、控制和报警(包括启动A/D转换、读入采样数据、数字滤波、越限温度报警和越限处理、输出可控硅的控制脉冲等)。中断由T0产生,根据需要每隔15S中断一次,即每15S采样控制一次。由于系统采用6MHZ晶振,最大定时为130ms,为实现15S定时,另行设计了一个软件计数器。主程序和中断服务子程序如下。
TEMP1 EQU 50H ;当前检测温度(高位)
TEMP2 EQU 51H ;当前检测温度(低位)
ST1 EQU 52H ;预置温度(高位)
ST1 EQU 53H ;预置温度(低位)
T100 EQU 54H ;温度BCD码显示缓冲区(百位)
T10 EQU 55H ;温度BCD码显示缓冲区(十位)
T1 EQU 56H ;温度BCD码显示缓冲区(个位)
BT1 EQU 57H ;温度二进制显示缓冲区(高位)
BT2 EQU 58H ;温度二进制显示缓冲区(低位)
ADINO EQU 7FF8H ;ADC0809通道IN0的端口地址
F0 BIT PSW.5 ;报警允许标志
TEMP1 DB 00H,00H,00H,00H,00H,00H,00H,00H ;50H~58H`单元初始化(清零)
ORG 0000H
AJMP MAIN ;转主程序
ORG OOOBH
AJMP PT0 ;转PTO中断服务子程序
ORG 0030H
MAIN: MOV SP,#59H ;设堆栈指针
CLR F0 ;报警标志清零
MOV TMOD,#01H ;定时器0初始化(方式1)
MOV TL0,#0B0H ;定时器100ms定时常数
MOV TH0,#3CH
MOV R7,#150 ;置15s计数器初值
SETB ETO ;允许定时器0中断
SETB EA ;开中断
SETB TR0 ;启动定时器0
MAIN1: ACALL KIN ;调键盘管理子程序
ACALL DISP ;调显示子程序
SJMP MAIN1
;定时器0中断服务子程序PT0:
PT0: MOV TL0,#0B0H
MOV TH0,#3CH ;重置定时器初值
DJNZ R7,BACK ;检测是否到达15S
MOV R7,#150 ;重置计数器初值
ACALL TIN ;温度检测
MOV BT1,TEMP1 ;当前温度送显示缓冲区
MOV BT0,TEMP2
ACALL DISP ;显示当前温度
ACALL CONT ;温度控制
ACALL ALARM ;温度越限报警
BACK: RETI
开始
保护现场
重置定时器0初值
开定时器0中断
定时器0、软定时器、各数据缓冲区、
个标志位初始化
调用显示子程序
调用键盘管理子程序
定义堆栈区
开始
软定时器减1
中断返回
调报警子程序
调用温度控制子程序
当前温度送显示缓冲区
调用温度检测子程序
重置软定时器0初值
调显示子程序
15s到?
主程序
中断服务程序
系统程序总体结构框图
5. 功能软件设计
(1) 键盘管理模块。上电或复位后系统处于键盘管理状态,其功能是键盘的扫描和处理,接收温度预置和启动键。程序设有预置温度合法检测报警,当预置温度超过。键盘管理子程序和流程图如下。
先设置预置温度合法性检测子程序CHK(用双字节减法比较预置温度是否大于,对应的数字量为01F4H)
CHK: MOV A,#0F4H ;预置温度上限低8位送A
CLR C ;清零C
SUBB A,STO ;低8位减,借位送CY
MOV A,#01H ;预置温度上限高8位送A
SUBB A,ST1 ;高8位带借位减
JC OUTA ;预置温度越界,转报警
MOV A,#00H ;预置温度合法标志
CHR: RET
OUTA: MOV ST1,#01H ;将500写入预置温度数据区
MOV ST0,#0F4H
CLR P1.6 ;发报警信号
ACALL DELAY ;调用延迟子程序
SETB P1.6 ;停止报警
SJMP CHKR
DELAY: MOV R5,#100H ;延时1s程序
DEL1: MOV R6,#10
DEL2: MOV R7,#7DH
DEL3: DJNZ R7,DEL3
DJNZ R6,DEL2
DJNZ R5,DEL1
RET
利用+1按键可以分别对预置温度的百位、十位和个位进行加1设置,以下是程序
KEY: MOV BT0,ST0 ;预置温度送显示缓冲区
MOV BT1,ST1
ACALL DISP ;显示预置温度
KEY0: ACALL KEY1 ;读按键值
JZ KEY0 ;无键按下循环,直到有键按下
LCALL DISP
LCALL DISP ;两次调用显示子程序延时去抖动
ACALL KEY1 ;再检测有无键按下
JZ KEY0 ;无键按下重新检测
ACC.0,K10
MOV A,#100 ;百位键按下
LJMP KEY3
K10: ACC.1,K1
MOV A,#10 ;十位键按下
LJMP KEY2
K1: ACC.2,KEY0
MOV A,#01 ;个位键按下
KEY2: ADD A,ST0 ;预置温度按键+1
MOV STO,A
KEY3: LCALL KEY1 ;判断闭合键释放
JNZ KEY3 ;未释放继续判断
LJMP KEY ;闭合键释放继续扫描键盘
RET ;返回
KEY1: MOV A,P1 ;读键值子程序
CPL A
ANL A,#0FH
RET
开始
P1.0=1?
预置温度合法检查
百位键+1
P1.1=1?
预置温度→显示缓冲区
十位键+1
有键闭合?
个位键+1
P1.2=1?
保存新的温度预置值
调用显示子程序
返回
启动加热
有键闭合?
键盘管理子程序流程图
(2) 显示模块。显示子程序的功能是将显示缓冲区57H和58H的二进制数据先转换成3个BCD码,分别存入百位、十位和个位显示缓冲区(54H、55H和56H)单元,然后通过串行口送出显示。
显示子程序DISP:
DISP: ACALL HTB ;调用将显示数据转换成BCD码的子程序
MOV SCON,#00H ;置串行口为方式0
MOV R2,#03H ;显示位数送R2
MOV R0,#T100 ;显示缓冲区首地址送R0
LD: MOV DPTR,#TAB ;指向字符码表首地址
MOV A,R0 ;取显示数据
MOVC A,A+DPTR ;查表
MOV SBUF,A ;字符码送串行口
WAIT: C TI,NEXT ;发送结束转下一个数据并清中断标志
SJMP WAIT ;发送未完等待
NEXT: INC R0 ;修改显示缓冲区指针
DJNZ R2,LD ;判断3位显示是否完成,未完继续
RET
TAB: C0H F9H A4H B0H 99H 92H 82H F8H 80H 90H
HTB: MOV A,57H ;取二进制显示数据
MOV A,58H
MOV B,#100 ;除以100,确定百位数
DIV A,B
MOV 54H,A ;百位数送54H单元
MOV A,#10 ;除以10,确定十位数以与个位数
XCH A,B
DIV A,B
MOV 55H,A ;十位数送55H单元
MOV 56H,B ;个位数送56H单元
RET ;返回
(3) 温度检测模块。A/D转换采用查询方式。为提高数据采样的可靠性,对采样温度进行数字滤波。数字滤波的算法很多,这里采用4次采样取平均值的方法。如前所述,本系统A/D转换结果乘以2正好是温度值,因此,4次采样的数字量之和除以2就是检测的当前温度。检测结果高位存入50H,低位存入51H。
开始
()-1→
()=0?
返回
检测结果缓冲区清零采样次数4→R2
4次累加结果除以2→
检测结果缓冲区
累加采样结果
结果低8位→51H
高8位→50H
转换结束?
启动A/D转换
温度检测子程序流程图
程序如下:
MOV 51H,#00H ;清检测温度缓冲区
MOV 50H,#00H
MOV R2,#04H ;取样次数送R2
MOV DPTR,#7FF8H ;指向A/D转换器0通道
TADC0:MOVX DPTR,A ;启动转换
TADC1:JNB IE1,TADC1 ;等待结束
MOVX A,DPTR ;读转换结果
ADDC A,51H ;累加
MOV 51H,A
DJNZ R2,TADC0 ;4次采样是否完成,未完继续
CLR C ;累加结果除以2
MOV A,51H
RRC A
MOV R5,A
ORL A,#0FH ;高8位放50H低8位放51H
MOV 51H,A
ORL R5,#0F0H
MOV 50H,R5
RET
(4) 温度控制模块。将当前温度与预置温度比较,当前温度小于预置温度时,继电器闭合,接通电阻丝加热;当前温度大于预置温度,继电器断开,停止加热;当两者相等时电炉保持原来状态;当前温度降低到比预置温度低时,再重新启动加热;当前温度超出报警上下限时将启动报警,并停止加热。
温度控制子程序:
CONT: MOV A,51H ;当前温度→A
CLR C ;清零
SUBB A,53H ;当前温度-预置温度
JNC CONT1 ;无借位,表示当前温度≥预置温度,转CONT1
JNB F0,CONT0 ;当前温度<预置温度,判断是否超过预置温度
CLR C
SUBB A,#02H ;若超过预置温度,判断二者差值是否大于2
JNC ACC.7,CONT1 ;差值不大于2,转CONT1
CONT0: CLR P1.7 ;开电炉
SJMP CONT2 ;返回
CONT1: SETB F0 ;设置允许报警标志
SETB P1.7 ;关电炉
CONT2: RET
开始
当前温度与预置温度比较
置允许报警标志
关电炉
返回
开电炉
当前温度<预置温度-2?
当前温度<预置温度?
温度控制流程图
(5)温度超限报警模块。报警上限温度值为预置温度,即当前温度上升到高于预置温度时报警,并停止加热;报警下限温度值设为预置温度,即在当前温度下降到低于预置温度,且允许报警,这是为了防止开始从较低温度加温时报警。报警的同时关闭电炉。
程序如下
ALARM: MOV A,51H ;读取当前温度
CLR C ;清零
SUBB A,53H ;当前温度-预置温度→A
JC ALARM0 ;有借位,当前温度小于预置温度转ALARM0
SETB F0 ;当前温度≥预置温度,允许报警
AJMP ALARM1
ALARM0:MOV A,53H ;预置温度→A
CLR C ;清零
SUBB A,51H ;预置温度-当前温度→A
ALARM1:CLR C ;清零
SUBB A,#05H ;温度差再减5
JC ALARM2 ;相减结果小于5,不报警返回
JNB F0,ALARM2 ;相减结果≥5,判断是否允许报警,不允许则返回
CLR P1.6 ;启动报警
SETB P1.7 ;关电炉
ACALL DELAY ;报警延时
SETB P1.6 ;关报警
ALARM2:RET ;返回
DELAY: MOV R5,#100H ;延时1s程序
DEL1: MOV R6,#10
DEL2: MOV R7,#7DH
DEL3: DJNZ R7,DEL3
DJNZ R6,DEL2
DJNZ R5,DEL1
RET
返回
当前温度≤预置温度
开报警器,关电炉
允许报警?
温差>
置允许报警标志
预置温度-当前温度
当前温度-预置温度
开始
报警子程序流程图
三、 课程设计(综合实验)总结或结论
=
四、 参考文献
[1] 广弟, 朱月秀. 单片机基础. 航空航天大学, 第三版. 2007.6
[1] 凌玉华, 连浩.单片机原理与应用系统设计. 中南大学, 第一版. 2006.4
[1] 居义, 晓琴. 单片机课程设计指导. 清华大学.2009.09
展开阅读全文