智能水温控制系统的设计_第1页
智能水温控制系统的设计_第2页
智能水温控制系统的设计_第3页
智能水温控制系统的设计_第4页
智能水温控制系统的设计_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

智能水温控制系统的设计摘要:近年来随着科技的飞速发展,单片机的应用正在不断地走向深入,同时带动传统控制检测日新月异更新。本文给出了一个基于AT89C51单片机控制的水温智能控制系统。重点阐述了系统的硬件构成,各部分的主要作用及系统软件的设计过程。设计方案的核心部件是80C51,通过硬件及软件的合理设计,使系统能满足控制模型中不同阶段的要求。系统的采集模块采用了AD590温度传感器作为测温元件,而控制模块则通过控制可控硅的导通和截止,从而控制加热电压的通与断,使控制具有灵敏、可靠、抗干扰能力强等优点。水温直接由人工设定,并能在环境温度变化时实现自动调整以保持设定的温度基本不变,实测水温用十进制数码管显示输出。关键词:智能控制;水温控制;数据采集;温度传感器ADesignOfWaterTemperatureBrainpower

ControllingSystemAbstract:ThepapermaindesignabrainpowercontrollingsystemofwatertemperaturebasedonMCS-51.Itexpoundsemphaticallythehardwarestructureofthesystem,themainfunction,andtheprocessofthesystemsoftwaredesign.ThecoreofthedesignisMCS-51.Throughreasonabledesignofhardwareandsoftwaretomakethesystemmeetthedemandsofdifferentphasesofthecontrolmodel,thecollectionmoduleofthesystemusesAD590astheelementofthetemperaturemeasurement,andthecontrolmoduleusestheopticalshutter.Theheatingvoltageiscontrolledbyopticalshutter,thecontrolhastheadvantagesofsensitiveanddependableandstrongabilityofresistingdisturbance.Thewatertemperaturemaybesetatsomedegreebymanpowerandauto-adjustedasenvironmentiscool,sothewatertemperaturekeepsconstantlyandisdisplayedindecade.KeyWords:Brainpowercontrolling,watertemperaturecontrolling,datecollection,temperaturesensor目录摘要错误!未定义书签。TOC\o"1-5"\h\z\o"CurrentDocument"绪论3\o"CurrentDocument"一、总体设计3\o"CurrentDocument"1.1电路实现的功能及特点3\o"CurrentDocument"1.2原理方框图及说明4\o"CurrentDocument"1.3总体方案论证5\o"CurrentDocument"二、硬件设计5\o"CurrentDocument"2.1电源模块5\o"CurrentDocument"2.2主机控制部分论证7\o"CurrentDocument"2.3温度采集模块论证7\o"CurrentDocument"2.4后向温度控制模块论证8\o"CurrentDocument"2.5键盘显示模块论证8三、软件设计错误!未定义书签。\o"CurrentDocument"3.1主程序设计9\o"CurrentDocument"3.2温度设定、传送和显示子程序22\o"CurrentDocument"PWM电压输出子程序25\o"CurrentDocument"PID计算子程序27\o"CurrentDocument"四、设计总结36参考文献38致谢错误!未定义书签。附录错误!未定义书签。绪论随着社会的发展和科技的进步以及测温仪器在各个领域的应用,智能化是现代温控系统发展的主流方向,特别是今年来,温度控制系统已应用到生活的各个方面,但是温度控制一直是一个未开发的领域,是与人们息息相关的一个问题。针对这种实际情况,设计一个温度控制系统,具有广泛的应用前景和实际意义。温度是科学技术中最基本的物理量之一。温度常常是表征对象和过渡状态的重要物理量。各行各业对温度的要求越来越高,可见温度的测量和控制是非常重要的。单片机在电子产品中的应用已经越来越广泛,在很多的电子产品中也用到了温度检测和温度控制。本文主要介绍单片机温度控制系统的设计过程,其中涉及系统结构设计、元器件的选取、程序的调试和系统参数的整定。在系统构建时选取了AT89c51芯片作为该控制系统的核心,温度信号由新型的可编程温度传感器(DS18B20)提供。通过软件实现对水温的控制,使用继电器作执行部件。水温可以在一定范围内由人工设定,并能在环境温度降低时实现自动控制,以保持设定的温度基本不变,具有较好的快速性与较小的超调。该系统为一实验系统,要求系统有控制能力,实现对主要可变参数的实时监控。使用软件编程既减少了系统设计的工作量,又提高了系统开发的速度,使用软件还可以提高所设计系统的稳定性,避免了因个人设计经验不足而产生过多的系统缺陷。一、总体设计1.1电路实现的功能及特点一个水温控制系统,对象为一升净水,加热器为1KW的电炉。设计拟达到的主要要求:1)水温由人工设定,范围:40—90°C,最小区分度为1°C,并能在环境温度变化时实现自动调整,以保持设定的温度基本不变;2)控制精度:温度控制的静态误差小于1C;3)用十进制数码显示实际水温;该系统的特点是采用适当的控制方法,当设定温度突变(由40°C提高到60°C)时,减小系统的调节时间和超调量。能在环境温度降低时实现自动调整,以保持设定的温度基本不变。1.2原理方框图及说明采用AT89C51单片机为核心,配合温度传感器,信号处理电路,显示电路,输出控制电路组成,软件选用汇编语言编程。单片机可将温度传感器检测到的水温模拟量转换成数字量,显示于数码管上。原理方框图如图1-1所示图1-1水温控制原理方框图1.3总体方案论证依据课题要求,提出三种方案方案一此方案是传统的一位式模拟控制方案,选用模拟电路,用电位器设定给定值,反馈的温度值和设定值比较后,决定加热或不回热。系统受环境影响大,不能实现复杂的控制算法,不能用数码显示,不能用键盘设定。方案二此方案是传统的二位式模拟控制方案,其基本思想与方案一相同,但由于采用上下限比较电路,所以控制精提高。这种方法还是模拟控制方式,因此也不能实现复杂的控制算法使控制精度做得较高,而且仍不能用数码显示和键盘设定方案三此方案采用89C51单片机系统来实现。单片机软件编程灵活、自由度大,可用软件编程实现各种控制看法和逻辑控制。可实现数码显示和键盘设定等多种功能,系统电路框图如图2-1所示:图2-1系统电路框图方案一和方案二是传统的模拟控制方式,而模拟控制系统难以实现复杂控制规律,控制方案的修改也较麻烦。而方案三是采用以89C51为控制核心的单片机控制系统,尤其对温度控制,它可达到模拟控制所达不到的控制效果,并且可实现显示、键盘设定等多种功能,又易于扩展,大大提高了系统的智能化,也使得系统所测结果精度大大提高。故选择方案三。二、硬件设计2.1电源模块在本设计中,用于控制和运算的单片机以及数码管显示器都需要在+5V直流

电压下才能工作,运算放大电路需要在土12V直流电压下工作。因此,这里需要一个能输出+5V和±12V的直流电压源。电压源的选择也有两个方案。方案一:直接用干电池供电。此方法不用焊接电路,简单方便,但是由于它提供的4.5V的电压,电压不够,提供12V电压时需要8节干电池连接,而且供电不稳定,带负载能力不强。因此,此方案不可取。方案二:自制一个直流稳压电源。直流稳压电源一般由电源变压器,整流电路,滤波电路和稳压电路四部分组成。其基本原理框图如图2-2:变压电路整流

电路滤波电路稳压电路TUWuT:~VCLTA缶LIN三LM78U5CT1枷F2MuFr::w:-:HUSEMREEVDLTA3E■■■LIKE^CLTAGE图2-2变压电路整流

电路滤波电路稳压电路TUWuT:~VCLTA缶LIN三LM78U5CT1枷F2MuFr::w:-:HUSEMREEVDLTA3E■■■LIKE^CLTAGE如图2-2所示直流电源的输入为220V的电网电压,所需直流电压的数值和电网电压的有效值相差较大,因而需要通过电源变压器降压。再通过整流电路将正弦波电压转换为单一方向的脉动电压。为了减小电压的脉动,需通过低通滤波电路滤波,使输出电压平滑。理想情况下是可以将交流分量全部滤掉,但是因为受负载影响,加之滤波电路并不能达到理想效果。还需要加入稳压电路,使输出直流电压基本不受电网电压波动和负载电阻变化的影响。2.2主机控制部分论证方案1:采用8031芯片,其内部没有程序存储器,需要进行外部扩展,这给电路增加了复杂度。方案2:本方案的CPU模块采用2051芯片,其内部有2KB单元的程序存储器,不需外部扩展程序存储器。但由于系统用到较多的I/O口,因此此芯片资源不够用。方案3:采用AT89C51单片机,其内部有8KB单元的程序存储器,不需外部扩展程序存储器,而且它的I/O口也足够本次设计的要求。比较这3种方案,综合考虑单片机的各部分资源,因此此次设计选用方案3。2.3温度采集模块论证方案1:采用热敏电阻,可满足35°C--95°C的测量范围,但热敏电阻精度、重复性和可靠性都比较差,对于检测精度小于1°C的温度信号是不适用的。方案2:采用单总线可编程温度传感器测温度。DS18B20数字可编程温度传感器可测温范围一55C〜+125C,在-10〜+85C时精度为±0.5C。可编程的分辨率为9〜12位,对应的可分辨温度分别为0.5°C、0.25°C、0.125°C和0.0625C,可实现高精度测温。在9位分辨率时最多在93.75ms内把温度转换为数字,12位分辨率时最多在750ms内把温度值转换为数字,速度更快。测量结果直接输出数字温度信号,以〃一线总线〃串行传送给CPU,同时可传送CRC校验码,具有极强的抗干扰纠错能力。但是由于其编写程序过程复杂,价格也较一般传感器昂贵,所以在这里我们并不采用。方案3:采用温度传感器AD590。:AD590具有体积小、质量轻、线形度好、性能稳定等优点。其测量范围在-50C--+150C,满刻度范围误差为±0.3C,当电源电压在5—10V之间,稳定度为1%时,误差只有土0.01C,其各方面特性都满足此系统的设计要求。此外AD590是温度-电流传感器,对于提高系统抗干扰能力有很大的帮助。经上述比较,方案3明显优于方案1和2选用方案3。

+J2VGNDIMU1MM<XJI+J2VGNDIMU1MM<XJIUH2—DBI&B&.GNDRDWR[NTRCLKRDB7CtXINDRfiDR5DB4VINADB3VtN-DB2DB1VkEF/2DAflAGNDDGND20TGND.ADCIJS04LCN2.4后向温度控制模块论证20TGND.ADCIJS04LCN方案1:采用电磁式继电器驱动电路控制,它采用较小的电流去控制较大电流,达到一种“自动开关”在电路中起着自动调节、安全保护、转换电路等作用。电磁式继电器利用在线圈加上一定的电压,线圈中会流过一定的电流,产生电磁效应,衔铁就会在电磁力作用下对触点簧片吸合、释放,从而达到了在电路中的导通、切断的目的.其优点为抗干扰能力强,过压过流大,以及电路的简洁,简单.作为工控产品好.方案2:温控电路要由光电耦合器MOC3041和双向可控硅BTA12组成.由于可控硅只有导通和关断两种工作状态,所以它具有开关特性。采用脉宽调制输出控制电炉与电源的接通和断开比例,以通断控制调压法控制电炉的输入功率。但由于采用继电器控制继电器的寿命比不上可控硅,而且电路过于简单,不能控制电炉的输入功率.因此采用方案2.2.5键盘显示模块论证方案1:使用液晶显示屏显示水温。液晶显示屏(LED)具有轻薄短小,低耗电量,无辐射危险,平面直角显示以及影像稳定不闪烁等优势,可视面积大,画面效果好,分辨率高,抗干扰能力强等特点。但是由于只需显示温度这样的数字,信息量比较少,且由于液晶是以点阵的模式显示各种符号,需要利用控制芯片创建字符库,编程工作量大,控制器的资源占用比较多,而且其成本也比较高。方案2:采用可编程控制器8279与传统数码管及地址译码器74LS138组成,可编程/显示器件8279实现对按键的扫描、消除抖动、提供LED的显示信号,并对LED显示控制。用8279和键盘组成的人机控制平台,能够方便的进行控制单片机的输出。方案3:采用单片机AT89C51与地址译码器74LS138组成控制和扫描系统,并用74LS164的译码器接受片机AT89C51通过串行口输出的BCD串行码经译码输出为BCD码,这种方案既能很好的控制键盘及显示,又为主单片机大大的减少了程序的复杂性,而且具有体积小,价格便宜的特点。对比两种方案可知,方案2虽然也能很好的实现电路的要求,但考虑到电路设计的成本和电路整体的性能,我们采用方案3。三、软件设计3.1软件设计主要完成以下的几部分任务:初始化,设定各参数的初始值,设定各中断及定时器。⑴⑵接收/发射数据此部分程序主要完成数据的控制及显示,其主要通过89C51单片机的全双工串行口完成和键盘部分的双向通信。温度采集和数值转换子程序,此部分程序主要完成将AD590中传送过来的数据进行各种数值的转换及数值的运算(如十进制转换成十六进制、双字节与单字节的除法运算等等)。PID和PWM子程序,此部分程序主要完成控制电炉加温的作用。本系统采用的是循环查询方式[4]来显示和控制温度的。3.1主程序设计主程序流程图如图4-1所示

图4-1总流程图ORG0000HLJMPMAINORG0003HLJMPINT0ORG0030HMAIN:MOVSP,#70H;置初值CLRP1.7MOVR0,#40HSETBPSW.4SETBPSW.3SETBIT0SETBEASETBEX0MOVTMOD,#20H;波特率9600MOVTH1,#0FDHMOVTL1,#0FDHSETBTR1MOVSCON,#50HSETBTICLR30HCLR01HSETBP1.7CLRP1.6CLRP1.5MOVDPTR,#0BFFFHMOVA,#00HMOV2EH,#0MOV2DH,#0ORGMAIN:MOV2CH,#0MOV2BH,#0MOV2AH,#0MOV29H,#0MOV62H,#0LOOP:MOVDPTR,#0BFFFHMOVX@DPTR,A;启动A/D转换CLR00HWAIT:LCALLXUANCHAXUN:JNBP1.3,LOOP1;调整JNBP1.4,LOOP2JNB00H,GG;判断是否再启动LJMPLOOPGG:LJMPWAIT===========上限温度调整===========LOOP1:CLREX0LCALLDELAY1JNBP1.3,$MOV62H,2EHMOV61H,2DHMOV60H,2CHJBP1.2,M2MOVA,2EHADDA,#01DAAMOV2EH,ACJNEA,#10H,M1MOV2EH,#00M1:JNBP1.2,$

M2:JBP1.1,M4MOVA,2DHADDA,#01HDAAMOV2DH,ACJNEA,#10H,M3MOV2DH,#00M3:JNBP1.1,$M4:JBP1.0,M5MOVA,2CHADDA,#01DAAMOV2CH,ACJNEA,#10H,M5MOV2CH,#00M5:JNBP1.0,$SETB30H;是否显示第一位的标志位MOV63H,#11H;显示“上”MOV62H,2EHMOV61H,2DHMOV60H,2CHLCALLDELAYJNBP1.3,TUI;再次中断时,退出LJMPLOOP1==========下限温度调整===========LOOP2:CLREX0JNBP1.3,$MOV62H,2BHMOV61H,2AH

L1:L2:L3:L4:L5:MOV60H,29HJBP1.2,L2MOVA,2BHADDA,#01DAAMOV2BH,ACJNEA,#10H,L1L1:L2:L3:L4:L5:JNBP1.2,$JBP1.1,L4MOVA,2AHADDA,#01HDAAMOV2AH,ACJNEA,#10H,L3MOV2AH,#00JNBP1.1,$JBP1.0,L5MOVA,29HADDA,#01DAAMOV29H,ACJNEA,#10H,L5MOV29H,#00JNBP1.0,$SETB30H;是否显示第一位的标示位MOV63H,#0FH;显示“下”MOV62H,2BHMOV61H,2AH

MOV60H,29HLCALLDELAYJNBP1.4,TUI;再次中断时,退出LJMPLOOP2TUI:MOVA,2BHCLRCCJNEA,2EH,AA;比较上限是否低于下限MOVA,2AHCJNEA,2DH,AAMOVA,29HCJNEA,2CH,AALJMPXXX;正常AA:JNCERRO;上限低于下限,跳转XXX:SETBEX0MOVA,@R0LCALLXUANLJMPWAITERROR:MOV63H,#0EH;显示“ERROR“MOV62H,#15HMOV61H,#15HMOV60H,#0HSETB30HSETB01HEEEE:LCALLDELAYJNBP1.3,XX1;是否重新调整JNBP1.4,XX2LJMPEEEEXX1:LJMPLOOP1XX2:LJMPLOOP2;==========显示数据转换=========Xian:MOVA,@R0MOVB,#100MULABMOVR3,AMOVA,BMOVB,#10DIVABMOVR1,#62HMOV@R1,ADECR1MOV@R1,BMOVA,R3MOVB,#10MULABDECR1MOV@R1,BCLR30HACALLDELAYMOVA,2EHCJNEA,62H,E1MOVA,2DHCJNEA,61H,E1MOVA,2CHCJNEA,60H,E1LJMPE2E1:JCSHANG_BAOLJMPE2;======超上限温度======SHANG_BAO:SETBP1.7SETBP1.6CLRP1.5LJMPX2E2:CLRP1.5CLRP1.6CLRP1.7X1:MOVA,2BHCJNEA,62H,E3MOVA,2AHCJNEA,61H,E3MOVA,29HCJNEA,60H,E3LJMPE4E3:JNCXIA_BAOLJMPE4;======低于下限温度======XIA_BAO:SETBP1.7SETBP1.5CLRP1.6LJMPX2E4:CLRP1.5CLRP1.6CLRP1.7X2:CLR30HACALLDELAY;========串口通信=========MOVR3,#30H;转ASCII码MOVA,62HADDA,R3DAAMLP3:JBCTI,MLP2;当TI为1时清0SJMPMLP3MLP2:MOVSBUF,AMOVA,61HADDA,R3DAAMLP5:JBCTI,MLP4SJMPMLP5MLP4:MOVSBUF,AMOVA,#46;小数点MLP8:JBCTI,MLP9SJMPMLP8MLP9:MOVSBUF,AMOVA,60HADDA,R3DAAMLP7:JBCTI,MLP6SJMPMLP7MLP6:MOVSBUF,AMOVA,#32MLP10:JBCTI,MLP11SJMPMLP10MLP11:MOVSBUF,ARET;=========二延时加显示=========

DELAY:MOVR3,#0A0HD00:ACALLDISPLAYDJNZR3,D00RETDISPLAY:JNB30H,DDMOV30H,#40MOVDPTR,#TAB0MOVA,63HMOVCA,@A+DPTRMOVDPTR,#0F8FFHD0:MOVX@DPTR,ADJNZ30H,D0;千位DD:MOV30H,#40MOVDPTR,#TAB0MOVA,62HMOVCA,@A+DPTRMOVDPTR,#0F9FFHD1:MOVX@DPTR,ADJNZ30H,D1;百位MOV30H,#40MOVDPTR,#TAB0MOVA,61HMOVCA,@A+DPTRJB01H,TTADDA,#80HTT:MOVDPTR,#0FAFFHD2:MOVX@DPTR,ADJNZ30H,D2;十位MOV30H,#40MOVDPTR,#TAB0MOVA,60HMOVCA,@A+DPTRMOVDPTR,#0FBFFHD3:MOVX@DPTR,ADJNZ30H,D3;个位RETTAB0:DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,;012345677FH,6FH,77H,7CH,39H,5EH,79H,71H;89ABCDEFDB76H,78H,38H,6EH,00H,77H,;HKLY无RDELAY12:MOVR4,00HMOVR5,00HD3:X3:DJNZR4,$DJNZR5,X3RET;中断0服务程序INT0:PUSHAPUSHPSWMOVDPTR,#0BFFFHMOVXA,@DPTR;读A/D转换结果MOV2FH,#0FFHCLRCY;程序调整高低位RLCAJCN1CLR78H

N1:RLCAJCN2CLR79HN2:RLCAJCN3CLR7AHN3:RLCAJCN4CLR7BHN4:RLCAJCN5CLR7CHN5:RLCAJCN6CLR7DHN6:RLCAJCN7CLR7EHN7:RLCAJCN8CLR7FHN8:MOVA,2FHMOV@R0,ASETB00HPOPPSWPOPARETI=======延时=二=====DELAY1:MOVR6,#60DE1:MOVR7,#248MOVR7,$DJNZR6,DE1RETEND;显示区地址分别为63H,62H,61H,60H;上限温度地址分别为2EH,2DH,2CH;下限温度地址分别为2BH,2AH,29H;用到的位地址有00H,01H,30H3.2温度设定、传送和显示子程序编程序,实现温度设定、传送和显示

图4-2温度设定程序流程图具体程序编写如下SW0:MOVR6#00HJNBP1.6XHJNBP1.7QHXH:MOVR7#07MOVDPTR#TABMOVA#00HXH1:MOVCAA+DPTRRLAMOVP3.0CDJNZR7HX1INCDPTRAJMPSW1QH:MOVA#00HCJNER6#00HQH1CLRP2.7CLRP2.6ADDA#01HMOVR6AAJMPXHQH1:CJNER6#01HQH2SETBP2.7CLRP2.6ADDA#01HMOVR6AAJMPXHQH2:CJNER6#02HQH3CLRP2.7SETBP2.6ADDA#01HMOVR6AAJMPXHQH3:CJNER6#03HSW0SETBP2.7SETBP2.6AJMPSW0TAB:C00F90A40B09992800F880983.3PWM电压输出子程序编写程序实现PWM电压自动可调宽度脉冲波输出。事*复位outbit置位outbit图4-3自动可调宽度脉冲波输出流程图POUTEQUP1.0OUTBITEQU7FHORG0000HAJMPMAINORG000BHAJMPCTC_INTORG0030HMAIN:MOVTMOD,#01HMOVTH0,#3CHMOVTL0,#0B0HSETBESETBET0WAIT:SJMPWAITCTC_INT:PUSHACCPUSHPSWCLRTR0JNBOUTBIT,OUT0SETBPOUTCLRCMOVA,#0FFHMOVA,#0FFHSETBTR0MOVTL0,AMOVA,#0FFHSUBBA,#0FHMOVTH0,ACLROUTBITSJMPCTC_OUTOUT0:CLRPOUTCLRCMOVA,#0FFHSUBBA,#0FFHMOVTL0,AMOVA,#0FFHSUBBA,#1FSUBBA,0FFHMOVTH0,AMOVA,TL0ADDA,#0FFHMOVTL0,AMOVA,TH0ADDCA,#0FHMOVTH0,ASETBOUTBITCTC_OUT:SETBTRPOPPSW0POPACCRETI3.4PID计算子程序PID调节规律的基本输入输出关系可用微分方程表示为:TOC\o"1-5"\h\z\o"CurrentDocument"u()=Ke(t)+—/e(t)dt+T^^(4-1)PTDdt1-I0」式中e(t)为调节器的输入误差信号,且\o"CurrentDocument"e(t)=r(t)-C(t)(4-2)

其中:r(t)为给定值,C(t)为被控变量;u(t)为调节器的输出控制信号;Kp为比例系数;T为积分时间常数;ITD微分时间常数。计算机只能处理数字信号,若采样周期为T第n次采样的输入误差为e〃,TOC\o"1-5"\h\z且e=r(n)=C(n),输出为u(n),PID算法用的微分空由差分%一%』代替,积ndtT分le(t)dt由£eKT代替,于是得到0u=Ke+—£T+Te—匕一1(4-3)nPnTDTLIi=0写成递推形式为/△u=u-u\o"CurrentDocument"一e)+—(£e-£e)+^-d(e—2e+e)nn-1TiiTnn-1-显然,PID计算△七只需要保留现时刻e.以及以前的两个偏差量e.1和匕2。初始化程序初值匕1=e.2=0通过采样并根据参数Kp、Kd、K以及e、e1和e计算△u。(4-3)=K(epTn-en-1)+Tn=K(epTn-en-1)+TnITe+手(e-2e+e)-e)+K—e

n-1pti一2en-1+en-2)K(ep+K(eD-2en-1+en-2)=Pp+P+Pd其中:P=K(eP-e-i)=Ke2en-1+en-2)=Kd(4-4)(4-5)(4-6)(4-7)根据输出控制增量△un,可求出本次控制输出为u-u+△u=u+P+P+P(4-8)由于电阻炉一般是属于一阶对象和滞后的一阶对象,所以式中Kp、Kd、妇的选择取决于电阻炉的阶跃响应曲线和实际经验,工程上已经积累了不少行之的参数整定方法。本设计采用Ziegler-Nichols提出的PID归一调整法,调整参数,主要是为了减少在线整定参数的数目,常常人为假定约束条件⑸,以减少独立变量的个数,令:T=0.1TUT=0.5TTd=0.125孔式中Tu称为临界周期⑹。在单纯比例作用下(比例增益由小到大),是系统产生等幅振荡的比例增益Ku,这时的工作周期为临界周期Tu⑺,则可以得到△u=Kpke-e1)+0.2e+1.25(e-2e】+e2)]=Kp(e-e1)+0.2Ke+1.25Kp(e-2e】+e2)=Kp(e-e1)+Ke+K。(e-2e】+e2)(4-9)式中K,=0.2Kp,Kd=1.25Kp[8]从而可以调节的参数只有一个。可设计一个调整子程序,通过键盘输入改变Kp值,改变运行参数,使系统满足要求。下面对PID运算加以说明:1、所有的数都变成定点纯小数进行处理。2、算式中的各项有正有负,以最高位作为符号位,最高位为0表示为正数,为1表示负数。正负数都是补码表示,最后的计算以原码输出。3、双精度运算,为了保证运算精度,把单字节8位输入采样值C〃和给定值r都变成双字节16位进行计算,最后将运算结果取成高8位有效值输出。4、输出控制量七的限幅处理⑻。为了便于实现对晶闸管⑼的通断处理,PID的输出现在在0〜250之间。大于250或小于0的控制量七都是没有意义的,因在算法上对u进行限幅,即n5、uu<uminnminu=<uu<u<u(4-10)"ulax^^u皿PID的计算公式采用位置式算法,计算公式为u=u+K(e—e)+Ke+K(e—2e+e)=u+P+P+P(4-11)n—1PID图4-4PID计算程序的流程图参照流程图4-4编写程序,程序如下:MOVR5,31H

MOVR4,32HMOVR3,2AHMOVR2,#00HLACALLCPL1LCALLDSUMMOV39H,R7MOV3AH,R6MOVR5,35HMOVR4,36HMOVR0,#4AHLCALLMULT1MOVR5,39HMOVR4,3AHMOVR3,3BHMOVR2,3CHLCALLDSUMMOVR5,33HMOVR4,34HMOVR0,#46HLCALLMULT1MOVR5,49HMOVR4,48HMOVR3,4DHMOVR2,4CHLCALLDSUMMOV4AH,R7MOV4BHR6MOVR5,39HMOVR4,3AHMOVR3,3DHMOVR2,3EHLCALLDSUMMOVA,R7MOVR5,AMOVA,R6MOVR4,AMOVR3,3BHMOVR2,3CHLCALLDSUMMOVA,R7MOVR5,AMOVA,R6MOVR4,AMOVR3,3BHMOVR2,3CHLCALLDSUMMOVR5,37HMOVR4,38HMOVR0,#46HLCALLmultiMOVR5,49HMOVR4,48HMOVR3,4AHMOVR2,4BHLCALLDSUMMOVA,R7MOVR3,AMOVA,R6MOVR2,AMOVR5,2FHMOVR4,30HLCALLDSUMMOV2FH,R7MOV30H,R6MOV3DH,3BHMOV3EH,3CHMOV3BH,39HMOV3CH,3AHMOVA,2FHJNBACC.7CONt1MOV45H,#00HRETCONtl:MOVA,30HRLCAMOVA,2FHRLCAMOVR2,ASUBBA,#OFAHJNCCONt2MOV45H,R2RETCONt2:MOV45H,#0FAHRET负数双字节-(R3R2)求补,结果仍存放于R3R2中,其子程序如下:CPL1:MOVA,R2CPLAADDA,#01HMOVR2,AMOVA,R3CPLAADDCA,#00HMOVR3,ARET+(R3R2)r(R7R6)。其子程序如下:双字节加法(R5R4)DSUM:MOVA,R4ADDA,R2MOVR6,AMOVA,R5ADDCA,R3MOVR7,ARET双字节无符号乘法子程序:入口(R7R6)二被乘数;(R5R4)二乘数。出口(R0)二乘积的4字节地址指针。工作寄存器R3,R2。竖式乘法过程表示为:TOC\o"1-5"\h\zR7R6x)R5R4H64L64jR6xR4H74L74jR7XR4H74L74jR5XR6+)H75L75(R0+3)(R0+2)(R0+1)ROj乘积存储单元MULT:MOVA,R6

MOVB,R4MULABMOV@RO,AMOVR3,BMOVA,R4MOVB,R7MULABADDA,R3MOVR3,A

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论