《计算机控制系统课设报告数字温度PID控制器的设计.doc》由会员分享,可在线阅读,更多相关《计算机控制系统课设报告数字温度PID控制器的设计.doc(18页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、计算机控制系统A课程设计任 务 书一、 目的与要求1、 通过本课程设计教学环节,使学生加深对所学课程内容的理解和掌握;2、 结合工程问题,培养提高学生查阅文献、相关资料以及组织素材的能力;3、 培养锻炼学生结合工程问题独立分析思考和解决问题的能力;4、 要求学生能够运用所学课程的基本理论和设计方法,根据工程问题和实际应用方案的要求,进行方案的总体设计和分析评估;5、 报告原则上要求依据相应工程技术规范进行设计、制图、分析和撰写等。二、 主要内容1、 数字控制算法分析设计;2、 现代控制理论算法分析设计;3、 模糊控制理论算法分析设计;4、 过程数字控制系统方案分析设计;5、 微机硬件应用接口电
2、路设计;6、 微机应用装置硬件电路、软件方案设计;7、 数字控制系统I/O通道方案设计与实现;8、 PLC应用控制方案分析与设计;9、 数据通信接口电路硬件方案设计与性能分析;10、 现场总线控制技术应用方案设计;11、 数控系统中模拟量过程参数的检测与数字处理方法;12、 基于嵌入式处理器技术的应用方案设计;13、 计算机控制系统抗干扰技术与安全可靠性措施分析设计;14、 计算机控制系统差错控制技术分析设计;15、 计算机控制系统容错技术分析设计;16、 工程过程建模方法分析;三、 进度计划序号设计内容完成时间备注1选择课程设计题目,查阅相关文献资料7月13日2文献资料的学习,根据所选题目进
3、行方案设计7月14日3讨论设计内容,修改设计方案7月15日4撰写课程设计报告7月16日5课程设计答辩7月17日四、 设计成果要求1、 针对所选题目的国内外应用发展概述;2、 课程设计正文内容包括设计方案、硬件电路和软件流程,以及综述、分析等;3、 课程设计总结或结论以及参考文献;4、 要求设计报告规范完整。五、 考核方式 通过系统设计方案、总结报告、图文质量和学习与设计态度综合考评,并结合学生的动手能力,独立分析解决问题的能力和创新精神等。计算机控制系统课程设计成绩评定依据如下:1、 撰写的课程设计报告;2、 独立工作能力及设计过程的表现;3、 答辩时回答问题的情况。优秀:设计认真,设计思路新
4、颖,设计正确,功能完善,且有一定的独到之处,打印文档规范;良好:设计认真,设计正确,功能较完善,且有一定的独到之处,打印文档规范;及格:设计基本认真,设计有个别不完善,但完成基本内容要求,打印文档较规范;不及格:设计不认真,未能完成设计任务,打印文档较乱或出现抄袭现象者。说明: 同学选择题目要尽量分散,并且多位同学选同一个题目时,要求各自独立设计,避免相互参考太多,甚至抄袭等现象。 学生姓名:苏印广 指导教师:李士哲 2015年7月 17日一、课程设计(综合实验)的目的与要求 1.1设计目的(1)加深对控制算法设计的认识,学会控制算法的应用。(2) 掌握A/D转换电路的应用、掌握51单片机、8
5、253可编程定时器/计数器的应用、掌握温度采集及控制方法。(3)了解计算机控制系统的整体设计及调试的方法, 锻炼和培养由各个子模块功能单元构筑完整的微机控制系统的能力。1.2设计要求(1) 系统的被控对象为温箱系统,被测参数为温箱的温度,测温范围为0-300,误差不超过0.1。(2)设计以89C51单片机和ADC、DAC等电路、有运放电路实现的被控对象构成的计算机单闭环反馈控制系统。 (3)控制算法:增量型数字PID控制(4) 软件设计:主程序、中断程序、A/D转换程序、滤波程序、PID控制程序、D/A输出程序等。二、设计(实验)正文1:总体方案设计本系统是一个典型的温度闭环控制系统,需要完成
6、的功能是温度设定、检测与显示以及温度控制、报警等。温度的设定和显示功能可以通过键盘和显示电路部分完成;温度检测可以通过热电阻、热电偶或集成温度传感器等器件完成;温度超限报警可以利用蜂鸣器等实现; 温度控制可以采用可控硅电路实现。系统采用89C51作为系统的微处理器来完成对炉温的控制和键盘显示功能。8051片内除了128KB的RAM外,片内又集成了4KB的ROM作为程序存储器,是一个程序不超过4K字节的小系统。系统程序较多时,只需要外扩一个容量较小的程序存储器,占用的I/O口减少,同时也为键盘、显示等功能的设计提供了硬件资源,简化了设计,降低了成本。因此89C51可以完成设计要求2:控制系统的建
7、模和数字控制器的设计2.1:温箱的数学模型和控制算法的选择根据实际测量,温箱是一个近似一阶惯性环节。以加热功率为输入,箱内温度为输出,其传递函数表达为 (2.1)其中:时间常数=300;放大系数=20;滞后时间=102.2:数字控制器的设计2.2.1 模拟PID控制系统结构图+ -+ +c(t)u(t)e(t)r(t)比例积分微分被控对象图1模拟PID控制系统结构图它主要由PID控制器和被控对象所组成。而PID控制器则由比例、积分、微分三个环节组成。它的数学描述为: (2.2)式中,K为比例系数T;为积分时间常数;T为微分时间常数.下面把PID控制分成三个环节来分别说明:A. 比例调节(P调节
8、) (2.3)式中为比例系数,为控制常量,即偏差为零时的控制变量。偏差。偏差一旦产生,比例调节立即产生控制作用,使被控制的过程变量向使偏差减小的方向变化。比例调节能使偏差减小,但不能减小到零,有残存的偏差(静差)。加大比例系数可以提高系统的开环增益,减小静差,从而提高系统的控制精度。但当过大时,会使动态质量变差,导致系统不稳定。B. 积分调节(I调节)在积分调节中,调节器输出信号的变化速度du/dt与偏差成正比,即 或 (2.4) 其中 为积分常数,越大积分作用越弱。I调节的特点是无差调节,与P调节的有差调节形成鲜明对比。上式表明,只有当被调节量偏差为零时,I调节器的输出才会保持不变。I调节的
9、另一个特点是它的稳定作用比P调节差。采用I调节可以提高系统的型别,有利于系统稳态性能的提高,但积分调节使系统增加了一个位于原点的开环极点,使信号产生90的相角迟后,对系统的稳定性不利。C. 微分调节(D调节)在微分调节中,调节器的输出与被调节量或其偏差对于时间的导数正比,即 (2.5) 其中 为积分常数,越大微分作用越强。由于被调节量的变化速度(包括其大小和方向)可以反映当时或稍前一些时间设定值r与实际输出值y之间的不平衡情况,因此调节器能够根据被调节量的变化速度来确定控制量u,而不要等到被调节量已出现较大的偏差后才开始动作,这样等于赋予调节器以某种程度的预见性。2.2.2 数字PID控制系统
10、结构图在计算机控制系统中,使用的是数字PID控制器,数字PID控制算法通常又分为位置式HD控制算法和增量式PID控制算法。A:位置式PID控制算法 由于计算机控制是一种采样控制,它只能根据采样时刻的偏差值计算控制量,故对式(2-1)中的积分和微分项不能直接使用,需要进行离散化处理。按模拟PID控制算法的算式(2-1),现以一系列的采样时刻点kT代表连续时间t,以和式代替积分,以增量代替微分,则可以作如下的近似变换: (2-6)显然,上述离散化过程中,采样周期T必须足够短,才能保证有足够的精度。为了书写方便,将e(kT)简化表示成e(k)等,即省去T。将式(2.6)代入式(2.1),可以得到离散
11、的PID表达式为: (2-7)中式:k 采样序列号;u(k) 第k次采样时刻的计算机输出值;e(k)第k次采样时刻输入的偏差值;e(k-1) 第k-1次采样时刻输入的偏差值;K 积分系数,K/T 微分系数,/。我们常称式(2.7)为位置式PID控制算法。对于位置式PID控制算法来说,位置式PID控制算法示意图如图2所示,由于全量输出,所以每次输出均与过去的状态有关,计算时要对误差进行累加,所以运算工作量大。而且如果执行器(计算机)出现故障,则会引起执行机构位置的大幅度变化,而这种情况在生产场合不允许的,因而产生了增量式PID控制算法。+-r(t)e(t)uc(t)PID位置算法调节阀被控对象图
12、2位置型控制示意图B:增量式PID控制算法所谓增量式PID是指数字控制器的输出只是控制量的增量(k)。增量式PID控制系统框图如图3所示。当执行机构需要的是控制量的增量时,可以由式(2-7)导出提供增量的PID控制算式。根据递推原理可得: (2-8)用式(2-7)减去式(2-8),可得: (2-9)式(2-9)称为增量式PID控制算法。增量式控制算法的优点是误动作小,便于实现无扰动切换。当计算机出现故障时,可以保持原值,比较容易通过加权处理获得比较好的控制效果。但是由于其积分截断效应大,有静态误差,溢出影响大。所以在选择时不可一概而论。+-r(t)e(t)uc(t)PID增量算法调节阀被控对象
13、图3增量型控制示意图3:硬件的设计和实现 系统的硬件电路包括微控制器部分(主机)、温度检测、温度控制、人机对话(键盘/显示/报警)4个主要部分图4电热阻控制系统结构框图3.1微控制器本设计要求采用51内核的单片机。AT89C51是一种带4K字节Flash可编程可擦除的高性能CMOS8位微处理器,俗称单片机。单片机的可擦除只读存储器可以反复擦除100次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的89C51是一种高效微控制器。综合考虑,本设计选择AT89C51单片机为核心控制器
14、。AT89C51单片机的引脚图如图5所示。图5 AT89C51引脚图3.2:温度检测电路。温度检测电路包括温度传感器、变送器和A/D转换器三部分。温度传感器和变送器的类型选择与被控温度的范围及精度等级有关。型号为WZB-003的铂热电阻适合于0500的温度测量范围,可以满足本系统的要求。变送器将电阻信号转换成与温度成正比的电压,当温度在0500时变送器输出04.9V左右的电压。A/D转换器件的选择主要取决于温度的控制精度。本系统要求温度控制误差C02,采用8位A/D转换器,其最大量化误差为CCo1)5002551(210,能够满足精度要求。因此,本系统采用ADC0809作为A/D转换器。电路设
15、计好后,调整变送器的输出,使Co5000的温度变化能对应于04.9V的输出,则A/D转换对应的数字量为00HFAH,即0250,转换结果乘以2正好是温度值。用这种方法一方面可以减少标度变换的工作量,另一方面还可以避免标度变换带来的计算误差,图6 由LM331实现A/D转换器的框图图7温度传感器连接电路3.3:温度控制电路。控制电路采用可控硅来实现,双向可控硅SCR和电炉电阻丝串接在交流220V的电回路中,单片机P1.7口的信号通过光电隔离器和驱动电路送到可控硅的控制端,由P1.7口的高低电平来控制可控硅的导通与断开,从而控制电阻丝的通电加热时间。3.4:人机对话电路。这部分包括键盘、显示和报警
16、三部分电路。其中LED采用共阴极方式,4个显示器的段选码由8155的PB口提供,位选码由8155的PA口提供,矩阵式键盘的行线由PC提供。LED采用动态扫面方式,而键盘采用中断的工作方式。因为系统已经使用了和,所以采用定时器T0作为外部中断源。可以选择设置T0工作在方式2外部计数方式,定时器TH0,TL0初值为0FFH,并允许T0中断,这样当T0引脚上发生负跳变时,TL0加1,产生溢出,置“1”TF0向CPU发出中断申请,同时TH0的内容0FFH送TL0,即TL0恢复初值0FFH,然后CPU去执行键盘扫描,还设置了系统复位键。报警功能由蜂鸣器实现。当由于意外因素导致电阻炉温度高于设置温度时,P
17、1.6口送出低电平经反相器驱动蜂鸣器鸣叫报警。四、软件设计 系统的操作过程和工作过程在程序的设计过程中起着很重要的指导作用,因此在软件设计之前应首先分析电阻炉的工作原理。1.工作流程电阻炉在上电复位后先处于停止加热状态,这时可以用数字键设定预置温度并显示出来;温度设定后,就可以按启动键启动系统工作。温度检测系统不断定时检测当前温度,并送往显示器显示,达到预定值后停止加热并显示当前温度;当温度下降到下限时再启动加热。这样不断重复上述过程,使温度保持在预定温度范围之内。启动后可以修改预置温度。2.功能模块 根据对工作流程的分析,系统软件可以分为以下几个功能模块:(1)键盘管理。实现键盘扫描与处理功
18、能,接收温度预置,启动系统工作。(2)显示。显示设置温度及当前温度。(3)温度检测及温度值变换。实现A/D转换及数字滤波功能。(4)温度控制。根据检测到的温度控制电炉的工作状态。(5)报警。当预置温度或当前检测的炉温越限时,输出报警信号。3.资源分配在编程前,首先要对89C51的资源进行分配。它包括显示单元(6位)、预置温度单元(2位)、当前检测温度(2位)、BCD码显示缓冲区(3位)、二进制码显示缓冲区(3位)、报警允许标志、堆栈区等。然后,还需要对键盘输入和报警、控制电路的端口地址进行分配。单片机89C51内存的资源分配可以利用伪指令进行定义。数据存储器的分配与定义如下表。P1.0P1.3
19、为键盘输入接口,P1.6和P1.7分别为报警控制和电路控制接口。ADC0809输入通道图9 地址单元及其功能INOIN7的地址为7FF8H7FFFH,本系统使用IN0通道。4.程序总体结构设计 系统程序设计采用模块化设计方法,程序由主程序、中断服务子程序和各功能模块程序等组成,各功能模块可直接调用。 主程序完成系统的初始化、温度预置及其合法性检测、预置温度的显示及定时器T0的初始化设置等。T0中断服务程序是温度控制体系的主体,用于温度检测、控制和报警(包括启动A/D转换、读入采样数据、数字滤波、越限温度报警和越限处理、输出可控硅的控制脉冲等)。中断由T0产生,根据需要每隔15S中断一次,即每1
20、5S采样控制一次。由于系统采用6MHZ晶振,最大定时为130ms,为实现15S定时,另行设计了一个软件计数器。主程序和中断服务子程序如下。TEMP1EQU50H;当前检测温度(高位)TEMP2EQU51H;当前检测温度(低位)ST1EQU52H;预置温度(高位)ST1EQU53H;预置温度(低位)T100EQU54H;温度BCD码显示缓冲区(百位)T10EQU55H;温度BCD码显示缓冲区(十位)T1EQU56H;温度BCD码显示缓冲区(个位)BT1EQU57H;温度二进制显示缓冲区(高位)BT2EQU58H;温度二进制显示缓冲区(低位)ADINOEQU7FF8H;ADC0809通道IN0的端
21、口地址 F0BITPSW.5;报警允许标志TEMP1DB00H,00H,00H,00H,00H,00H,00H,00H;50H58H单元初始化(清零)主程序: ORG0000HAJMPMAIN;转主程序ORGOOOBHAJMPPT0;转PTO中断服务子程序ORG0030HMAIN:MOVSP,#59H;设堆栈指针 CLRF0;报警标志清零 MOVTMOD,#01H;定时器0初始化(方式1) MOVTL0,#0B0H;定时器100ms定时常数 MOVTH0,#3CH MOVR7,#150;置15s计数器初值 SETBETO;允许定时器0中断 SETBEA;开中断 SETBTR0;启动定时器0MA
22、IN1:ACALLKIN;调键盘管理子程序 ACALLDISP;调显示子程序 SJMPMAIN1 ;定时器0中断服务子程序PT0:PT0:MOVTL0,#0B0HMOVTH0,#3CH;重置定时器初值DJNZR7,BACK;检测是否到达15SMOVR7,#150;重置计数器初值ACALLTIN;温度检测MOVBT1,TEMP1;当前温度送显示缓冲区MOVBT0,TEMP2ACALLDISP;显示当前温度ACALLCONT;温度控制ACALLALARM;温度越限报警BACK:RETI18 / 18开始定义堆栈区定时器0、软定时器、各数据缓冲区、个标志位初始化开定时器0中断调用键盘管理子程序调用显
23、示子程序图10主程序开始保护现场重置定时器0初值定时器减1当前温度送显示缓存重置定时器初值调用显示子程序调用温度检测系统调用报警子程序调用温度子程序中断返回定时15s到?图11中断服务子程序(2)显示模块。显示子程序的功能是将显示缓冲区57H和58H的二进制数据先转换成3个BCD码,分别存入百位、十位和个位显示缓冲区(54H、55H和56H)单元,然后通过串行口送出显示。显示子程序DISP:DISP:ACALLHTB;调用将显示数据转换成BCD码的子程序 MOVSCON,#00H;置串行口为方式0 MOVR2,#03H;显示位数送R2 MOVR0,#T100;显示缓冲区首地址送R0LD:MOV
24、DPTR,#TAB;指向字符码表首地址 MOVA,R0;取显示数据 MOVCA,A+DPTR;查表 MOVSBUF,A;字符码送串行口WAIT:JBCTI,NEXT;发送结束转下一个数据并清中断标志 SJMPWAIT;发送未完等待NEXT:INCR0;修改显示缓冲区指针 DJNZR2,LD;判断3位显示是否完成,未完继续 RETTAB:C0HF9HA4HB0H99H92H82HF8H80H90HHTB:MOVA,57H;取二进制显示数据 MOVA,58H MOVB,#100;除以100,确定百位数 DIVA,B MOV54H,A;百位数送54H单元 MOVA,#10;除以10,确定十位数以及个
25、位数 XCHA,B DIVA,B MOV55H,A;十位数送55H单元 MOV56H,B;个位数送56H单元 RET;返回(3)温度检测模块。A/D转换采用查询方式。为提高数据采样的可靠性,对采样温度进行数字滤波。数字滤波的算法很多,这里采用4次采样取平均值的方法。如前所述,本系统A/D转换结果乘以2正好是温度值,因此,4次采样的数字量之和除以2就是检测的当前温度。检测结果高位存入50H,低位存入51H。图12温度检测流程图程序如下: MOV51H,#00H;清检测温度缓冲区 MOV50H,#00H MOVR2,#04H;取样次数送R2 MOVDPTR,#7FF8H;指向A/D转换器0通道TA
26、DC0:MOVXDPTR,A;启动转换TADC1:JNBIE1,TADC1;等待结束 MOVXA,DPTR;读转换结果 ADDCA,51H;累加 MOV51H,A DJNZR2,TADC0;4次采样是否完成,未完继续 CLRC;累加结果除以2 MOVA,51H RRCAMOVR5,AORLA,#0FH;高8位放50H低8位放51HMOV51H,AORLR5,#0F0H MOV50H,R5 RET(4)温度控制模块。将当前温度与预置温度比较,当前温度小于预置温度时,继电器闭合,接通电阻丝加热;当前温度大于预置温度,继电器断开,停止加热;当两者相等时电炉保持原来状态;当前温度降低到比预置温度低Co
27、2时,再重新启动加热;当前温度超出报警上下限时将启动报警,并停止加热。温度控制子程序:CONT:MOVA,51H;当前温度A CLRC;清零 SUBBA,53H;当前温度-预置温度 JNCCONT1;无借位,表示当前温度预置温度,转CONT1 JNBF0,CONT0;当前温度预置温度,判断是否超过预置温度 CLRC SUBBA,#02H;若超过预置温度,判断二者差值是否大于2 JNCACC.7,CONT1;差值不大于2,转CONT1CONT0:CLRP1.7;开电炉 SJMPCONT2;返回CONT1:SETBF0;设置允许报警标志 SETBP1.7;关电炉CONT2:RET(5)温度超限报警
28、模块。报警上限温度值为预置温度Co5,即当前温度上升到高于预置温度Co5+时报警,并停止加热;报警下限温度值设为预置温度Co5,即在当前温度下降到低于预置温度Co5,且允许报警,这是为了防止开始从较低温度加温时报警。报警的同时关闭电炉。程序如下ALARM:MOVA,51H;读取当前温度 CLRC;清零 SUBBA,53H;当前温度-预置温度A JCALARM0;有借位,当前温度小于预置温度转ALARM0 SETBF0;当前温度预置温度,允许报警 AJMPALARM1ALARM0:MOVA,53H;预置温度A CLRC;清零 SUBBA,51H;预置温度-当前温度AALARM1:CLRC;清零
29、SUBBA,#05H;温度差再减5 JCALARM2;相减结果小于5,不报警返回 JNBF0,ALARM2;相减结果5,判断是否允许报警,不允许则返回CLRP1.6;启动报警SETBP1.7;关电炉 ACALLDELAY;SETBP1.6;关报警ALARM2:RET;返回DELAY:MOVR5,#100H;延时1s程序DEL1:MOVR6,#10DEL2:MOVR7,#7DHDEL3:DJNZR7,DEL3 DJNZR6,DEL2 DJNZR5,DEL1 RET三、课程设计(综合实验)总结或结论通过这一次的课程设计,我不仅学到了很多理论知识,更使我懂得要认真做每一件事。这次课程设计让我明白了理
30、论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到了很多问题,发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固等。也有很多收获:让我学会了各种查阅资料以及整理所需材料的能力,锻炼了自己解决实际问题的能力,为我以后工作学习打下了良好的基础。四、参考文献1李大中,周黎辉,焦嵩鸣.计算机控制技术与系统.中国电力出版社,2009年7月第一版.20092马平,姚万业,王炳谦.微机原理及应用.中国电力出版社,2002年8月3金以慧. 过程控制. 清华大学出版社,19934于海生.计算机控制技术.机械工业出版社,20105沈美明,温冬婵. IBM-PC汇编语言程序设计.清华大学出版社