毕业设计(论文)远程温度监控系统设计_第1页
毕业设计(论文)远程温度监控系统设计_第2页
毕业设计(论文)远程温度监控系统设计_第3页
毕业设计(论文)远程温度监控系统设计_第4页
毕业设计(论文)远程温度监控系统设计_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

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

文档简介

1、 摘 要本论文对远程温度数据的采集与控制温度进行了详细的阐述。主要讲述了一个在计算机远程控制下,利用单片机对远程温度进行采集显示并控制温度的增长。同时通过pc机对pwm波输出进行pid调整。并给出其软硬件设计及调试。在论文完成过程中,主要进行了以下工作:1 对系统要求进行分析,并设计系统的整体结构2 把整体细分化,对每个模块进行详细设计3 绘制原理图和pcb图,并制成实验板4 按照硬件电路,编写软件程序5 调试阶段,调试各软、硬件模块,编写测试程序,验证系统的可用性,最后制成系统样机。 本论文主要对远程温度采集与控制系统进行了较详细的阐述。软件的三大模块:采集模块、pid控制、上下位机通讯,并

2、对主要芯片的使用做了说明。对硬件电路的数据采集、数据设定及显示部分作较详细的阐述。介绍了整体硬件的实现方案。另外,在本文中,还介绍了在绘制原理图和pcb图时所用的工具及需要注意的问题。例如,电源线、地线等问题,及检查pcb图时所用的高亮度显示的方法。 关键词:温度采集 pid控制 上下位机通信 abstract : this study will discuss how to gather three temperature data .this system use the temperature sensor of 7109 .it could gather and keep temper

3、ature data . the computer sets temperature by communicating with scm.after gathering the temperature date ,it can display the data on the computer . in the completion of the thesis, i mainly carry through hereinafter job:1. analyze the requirement of the system, and design the whole structure of the

4、 system.2. subdivide the whole, and design each module in particular3. protract schematic plot and pcb plot, and crank out experiment board4. write software procedure according to hardware circuit5. in debugging moment, debug each software and hardware module, write testing procedure, validate the u

5、sability of the system, and finally crank out the system samplethis thesis will discuss the part of long-distance temperature s gathering and contron. the software is set by three part :1.the part of temperature gatering 2.the pid contron munication between computer andscm in addition, in the text,

6、it also introduces the tools used in protracting schematic plot and pcb plot and the problems required attendant. such as, power supply wire、ground wire and so on, and the way of highlight display in examining the pcb plot. i hope everybody can present criticisms and point out mistakes so that i can

7、 correct in the thesis, hereon, thank especially the tutor who help me accomplish my graduate design.keywords: temperature gather pid contron communication between compuer and scm 目 录中英文摘要 (1)第一章 概述(3)1.1 本课题研究背景及意义.(4)1.2 本课题的可行性分析 .(4)1.3 设计要求.(5)1.4 预期研究成果 .(5)第二章 系统简介 .(6) 2.1 系统总体方案设计.(6) 2.2 硬

8、件各模块的设计 .(6) 第三章 软件开发与调试 .(9)3.1 软件设计.(9)3.2 测量模块程序及框图.(9) 3.2.1 数据采集子程序 .(11) 3.2.2 温度参数计算子程序 .(12)3.2.3 pwm波生 .(15)3.2.4 下位机通信子程序 .(16)3.2.5 状态子程序.(18) 3.3 上位机程序设计 (20)第四章 调试中出现的问题 .(26)结束语.(27)注释、参考文献.(28)附录.(29) 第一章 概 述1.1 本课题研究背景及意义现代工业设计、工程建设及日常生活中常常需要用到温度控制,早期温度控制主要应用于工厂中,例如钢铁的水溶温度,不同等级的钢铁要通过

9、不同温度的铁水来实现,这样就可能有效的利用温度控制来掌握所需要的产品了。在现代社会中,温度控制不仅应用在工厂生产方面,其作用也体现到了各个方面,随着人们生活质量的提高,酒店厂房及家庭生活中都会见到温度控制的影子,温度控制将更好的服务于社会。 在电子产品广泛应用的时代。传统的温度控制系统目前发展到了电子智能温度控制系统。它在一定程度上提高了温度控制的精度,减低了现场工作人员的工作强度,提高了工作效率。此外电子智能温度控制系统还可以与微机组成通讯系统。极大的方便的现场工作人员对系统的管理。本文详细地介绍远程温度控制的整个过程。1.2本课题的可行性分析温度是工业生产中常见的工艺参数之一,任何物理变化

10、和化学反应过程都与温度密切相关,因此温度控制是生产自动化的重要任务。对于不同生产情况和工艺要求下的温度控制,所采用的加热方式,燃料,控制方案也有所不同。例如冶金、机械、食品、化工等各类工业生产中广泛使用的各种加热炉、热处理炉、反应炉等;燃料有煤气、天然气、油、电等;控制方案有pid控制,直接数字控制(ddc),推断控制,预测控制,模糊控制(fuzzy),专家控制(expert control),鲁棒控制(robust control),推理控制等。 本文介绍了一种pid水温控制系统。该系统利用单片机可以方使地实现对pid参数的选择与设定;也可以通过计算机与单片机的串行通讯,实现工业过程中的交互

11、式pid控制。它是用温度传感器将检测到的实际炉温a/d转换,送入计算机中,与设定值进行比较,得出偏差。对此偏差按pid算法进行修正,求得对应的控制量控制可控硅驱动器,调节电炉的加热功率,从而实现对炉温的控制。因此采集的炉温数据精度至关重要。利用at89c51单片机实现温度智能控制,能自动完成数据采集、处理、缓冲、转换、并进行pid实施控制和键盘终端处理及显示,因个人设计的重点不同,我将在软件上有详细的论述,由于实验条件和器材的限制,本系统只能实现对单点温度控制。1.3 设计要求以计算机为控制器,以单片机为采集器,完成对远程的温度量的检测,并对该信号有控制的作用。 技术指标:1)实现对远程温度量

12、的采集,远程距离在50米;2)采集温度量的精度在0.2;3) 实现对温度量的控制;4)温度量的控制精度在0.55)编制软件调试完成上述功能1.4 预期研究成果以单片机为控制器,完成对远程的温度量的检测,并对该信号有控制的作用。 技术指标:1)实现对远程温度量的采集,远程距离在50米;2)采集温度量的精度在0.2;3) 实现对温度量的控制;4)温度量的控制精度在0.55)编制软件调试完成上述功能第二章 系 统 简 介2.1系统总体方案设计该系统主要由五大部分组成:测温电路、a/d转换电路,测量模块(单片机),pwm输出控制电路和以pc机为核心的上位机.其中测量模块是以at89c51单片机为核心进

13、行设计的,这里充分利用了单片机的数据处理及实时检测能力,并结合可编程控制器的逻辑控制能力,对炉温信号进行实时检测.电炉温度信号是由灵敏度高、测量准确、性能可靠的热敏型测温电缆提供的,通过测量模块处理后的信号,由上位机选通后经信号转换器传输给上位机.上位机采用vb语言进行编程,将其所接收的信号转换成直观的立体图形、曲线、表格,清晰明了地显示出电炉水温状况,操作人员可以调整pid参数来控制水温加热状况,使操作人员的工作方式得到改进,提高了水温控制的管理水平。此系统可以扩展到多路温度控制,通过上位机可以多路控制,并急时的调整各个设备的温度控制情况。对出现的异常情况会发出警告,让操作人员可以及早的发现

14、在问题解决问题。此系统还可以根据实际需要对此系统进行适当的扩展,如加入测烟度、测湿度等其他功能,以更好地客户的需要.2.2 硬件各模块的设计 系统的硬件电路包括主机(8051)、温度检测、温度控制、人机对话(键盘/显示/报警)4个主要部分。图2.1为系统的结构图。温度显示键盘主机a/d转换器变送器传感器光耦驱动器可控硅调功器电炉温度检测部分温度控制部分 图2.1 系统的结构模块图下面对各部分电路分述如下: 1)主机课题通过单片机来实现对温度的采集与控制,由于单片机是按工业测控环境要求设计的,抗干扰能力强,环境要求不高,可适应的温度范围宽,灵活性好,体积轻,可以降低系统的成本获得较好的性能。89

15、c51是一个低功耗、高性能的含有4k字节快擦写可编程/擦除只读存储器的8位cmos单片机,时钟频率可达20mhz,与8031的指令和引脚完全兼容。芯片上的eeprom允许在线(+5v)电擦除、电写入或采用通用的非易失存储编程器对程序存储器重复编程。一般专为 atmel at89cx 做的编程器均带有这些功能,种单片机对开发设备的要求很低,开发时间也大大缩短。写入单片机内的程序还可以进行加密。这些都是其他机种不能拟的,所以我们选用89c51。 2)温度检测这部分包括温度传感器、变送器和a/d转换器三部分。传感器可采用电流型传感器,其随着温度的变化输出响应的线形变化的电流,该电流通过一定的电阻转换

16、成响应的电压送入变送器。变送器可采用一定放大倍数的放大器,放大倍数以能输出适合单片机处理的信号为宜。然后变送器输出信号进入a/d转换器,因为系统控制精度在0.5 ,所以采用双积分型a/d转换器。 3)人机对话这部分包括键盘、显示、和报警三部分电路。本系统设有3位led数码显示器,停止加热时显示设定温度,启动加热时显示当前加热炉温度。采用串行口扩展的动态显示电路作为显示接口电路。键盘设12个功能键,分别是09、复位键、启动键。输入的数字顺序分别为为十位,个位,小数位,按复位键使显示器清零,按启动键使加热炉按输入的温度工作。报警功能由蜂鸣器实现。当由于意外原因导致加热炉温度高于设置温度时,p1.6

17、口送出的低电平经反向器驱动蜂鸣器鸣叫报警。4)温度控制执行输出通道 电炉控制采用可控硅来实现,双向可控硅和电炉电阻丝串接在交流220v市电回路中。为了简化通道的硬件结构,考虑到加热系统具有较大的热惯性,本系统采用脉冲宽度调制的控制方法。单片机的p1.7口通过光电隔离器和驱动器送到可控硅的控制端,输出高电平时,使双向可控硅导通,电热丝通电;输出低电平时,双向可控硅截止,电热丝断电5)其它可扩展电路对于要求更高的系统,在现有电路的基础上,我们还可以视需要自行扩展以下接口电路:(1) 时时钟电路:连接实时时钟芯片ds12887可以获得长的采样周期,显示年、日、时、分、秒,而起片内带有的114b非易失

18、性ram,可以来存入需长期保存但有时也需变更的数据。如采样周期、pid控制算法的系数kp、ki、kd等。(2) “看门狗”电路:连接集成监控芯片max705可实现对主电源vcc的监控,提高系统的可靠性。第三章 软件设计3.1软件设计 软件设计的成功与否关系到整个系统能否具有使用灵活。操作简便,可靠性强等优点,而设计良好胡软件能够做到在较少地改变硬件电路的情况下,方便地改进系统的功能,这就对软件的设计提供了较高的要求。 遵循“自顶向下,逐步求精“的结构化设计原则,先将任务层次化,然后对每一层再逐步细化,每一层实现的功能尽量是独立的,彼此之间互相影响应该较少,然后按照与划分相反的过程编写,调试程序

19、,待所有子程序都编写设计通过后,依它们之间的逻辑顺序组合起来,构成完整的程序软件。采用这种方法,不仅使软件可读性好,维护方便且易于修改移植。如用户有特殊要求需要改动软件时,则只需修改或替换某子任务所对应的子程序即可,从而加快了系统研制进度,缩短了软件开发周期。 本系统要完成的任务有两大部分:测量模块任务和上位机监管任务。测量模块任务又分为数据采集,数据计算,串行通讯等子任务:上位机监管任务分为实时显示,曲线浏览,串行通讯及pid参数调整等任务。系统软件设计任务如图3-1所示。3.2 测量模块程序框图 测量模块任务又包括数据采样,数据计算,串行通信,pwm输出等子任务。测量模块的主程序流程框图3

20、-2所示 。测量模块程序是一个闭环程序,除初始化程序外,程序在采样,计算,串行数据发送pwm输出四个过程之间循环运行。测量模块对输入温度信号同时数据采集,采样5个周期(100ms)。利用平均算法对采样数据进行处理,得到温度测量结果,此后通过串行口将测量结果以一定的格式发送给信号转换器.总任务上位监督任务测量模块任务实时显示曲线浏览串行通讯串行通讯数据计算数据采集 图 3.1 系统软件实现下位机主程序框图:初始化返回调用led显示子程序调用bcd码转化子程序调用温度检测子程序开t0,t1,外部中断,串行中断 图 3.2主程序框图 在本程序中总共使用了t0,t1中断,外部中断0及串口中断,t0中断

21、用产生pwm波,t1用于产生波特率为9600hz,外部中断0用键盘输入,串口中断用于接收上位机数据. 3.2.1数据采集子程序流程框图 数据处理采集子程序框图如 图3-3所示.1. 采样前首先对采样保持器发出保持信号,然后等待a/d转.换完结束标志2. 读取ad12位数据,存入内存.程序中变量定义:j7109l #9fffh 7109低位数据地址j7109h #0afffh 7109 高位数据地址temptestl #3ah 温度低八位数据temptesth #3bh 温度高四位数据a/d温度检测子程序:等待a/d转换标志位dptr指向低位地址读取低位数据dptr指向高位地址读取高位数据结 束

22、 图3.3数据采集子程序流程框图程序代码: temptest: movdptr,#j7109l;取7109低位数据地址 here:jnbie0,here;等待ad转换完毕 movxa,dptr ;读低8位数据结果 movtemptestl,a;存入temptestl内存地址(3ah) nop nop movdptr,#j7109h;取7109高位数据地址 movxa,dptr;读高8位数据结果 movtemptesth,a;存入temptesth内存地址(3bh) ret;结束 3.2.2温度参数计算子程序流程框图 温度参数计算子程序框图如图3-4所示.1. 测温点温度信号经过三运放电路把信号

23、放大传给 xxxxx的a/d转换器进行转换.2. cpu经过计算后将所得温度数字结果传给上位机.3. 程序询问是否结束,如结束则返回和程序. 程序中变量定义: led0 #30h led数据显示0位 led1 #31h led数据显示1位 led2 #32h led数据显示2位bcd码转换子程序:读取低位数据转化为相应温度值读取高位数据转化为相应温度值结束 图3-4温度参数计算 程序代码:bcd: mov led0,#00h;清显示数据为0mov led1,#00hmov led2,#00hmov a,temptestl;先转低八位数据mov b,#29h ;1度的十六进制值29h div a

24、bmov led1,a;得到温度个位值mov a,#04h;0.1度的十六进制值04hxch a,bdiv abmov led0,a;得到温度小数值mov a,bclr csubb a,#02h;四舍五入jc temph;转化完转入转换高四位mov a,led0;四舍五入inc amov led0,atemph: ;高位不为0相当于100h,转换为温度6.2度,有多少个子就只要加6.2度即可mov a,temptesthmov r1,amov b,#02h;小数位加2div abmov b,amov a,led0add a,bmov b,asubb a,#0ah;判断大于10,大于则清零,高一

25、位加一jc goonmov led0,amov a,led1inc asubb a,#0ahjz incled2mov led1,ajmp goon1incled2:mov a,led2inc amov led2,asjmp goon1goon:mov a,bmov led0,agoon1:cjne a,#00h,temlprettemlp: ;高位不为0相当于100h,转换为温度6.2度,有多少个子就只要加6.2度即可mov a,#02h add a,led0mov b,aclr csubb a,#0ahjc llrmov led0,amov a,#01hadd a,led1mov b,as

26、ubb a,#0ah jz inc1mov a,bmov led1,asjmp add6inc1:mov led1,#00hmov a,led2inc amov led2,asjmp add6llr:mov a,bmov led0,a clr cadd6: ;个位加6mov a,#06hadd a,led1mov b,asubb a,#0ah;大于10否,大于则清零,高一位加1jc rrhmov led1,amov a,led2inc amov led2,asjmp toutrrh:mov a,bmov led1,atout:djnz r1,temlp ;转换完否,是则结事,否则继续 ret

27、3.2.3 内部时钟t0产生pwm波框图pwm波产生器框图如图3-41.pwm波用于后向通道,控制温度加热程度.通过t0的定时器中断来产生一定占空比的pwm波,此pwm波可通过上位机的pid计算产生pwm波参数.2. pwm周期一般选择一个足够小的采样周期,通常应小于对象的纯延迟时间t的十分之一.估算可知:用1kw电炉加热1l水并使水温上升1度所需时间大于4s,因此可取t=0.4s.gate c/t m1 m0 gate c/t m1 m03. at89c52单片机内有三个可编程的定时计数器,它们具有两种工作模式(计数模式和定时模式)及4种工作方式(方式0,方式1,方式2和方式3)。其工作方式

28、控制寄存器格式如下:t1方式字段 t0方式字段程序中变量定义: pwml #45h pwm波低位参数 既tl0 pwmh #46hpwm波高位参数 既th0 t0中断子程序框图:关中断,入堆栈p3.5(pwm输出口) 取反取出pwm波参数,送th0,tl0开中断,出堆栈结束图3-4 t0中断 程序代码:intt0: clr ea;关总中断,clr tr0;关t0clr et0mov b,apush psw;入堆栈push dplpush dphpush bcpl p3.5;pwm口反mov a,pwmlmov b,amov a,#0ffh;产生pwm波的占空比subb a,bmov pwml,

29、a;占空比由pwml,和pwmh决定mov a,#0ffhsubb a,pwmhmov pwmh,amov tl0,pwmlmov th0,pwmhpop b出堆栈pop dphpop dplpop pswmov a,bsetb ea;开中断setb tr0setb et0reti3.2.4 下位机通信子程序串行接收子程序如图3.51. 此程序用于接收上位机发送的数据,主要是pwm参数2. mcs-51单片机内部的串行口,有两个物理上独立地接收,发送缓冲器sbuf,可同时发送,接收数据,发送缓冲器只能写入不能读出,接收缓冲器只能读出不能写入,两个缓冲器共用一个子节地址(99h).3. 串行口控

30、制寄存器scon sm0 sm1 sm2 ren tb8 rb8 ti ri 位地址 9fh 9eh 9dh 9ch 9bh 9ah 99h 98h串行中断子程序框图:程序变量定义:buff #50h sbuf 暂存数据地址关中断,入堆栈从sbuf读出数据调用状态判断子程序开中断,出堆栈结 束图3.5下位机通信此串口通信的波特率是9600hz,由t1产生,方式1,公式:波特率=2smod/32*定时器1的溢出率,计算得,tl1:fah,th1:fah程序代码:comm: clr ea;关中断clr esclr ripush acc;入堆栈push pswpush dplpush dphmov

31、a,sbuf;从sbuf取数据mov buff,a;放入暂存器clr esmov sbuf,a ;收到上位机的信息后发送反馈信确定收到数据?wait:jnb ti,waitclr tisetb eslcall judger;判断当前通信状态既接收数据还是命令字pop dph;出堆栈pop dplpop pswpop accseb es;重新开中断setb eareti3.2.5通信时判断当前状态子程序通信时判断当前状态子程序如图3.6 1. 此子程序在下位机接收到数据时,判断当前接收数据的状态2. 确定当前数据是接收pwm的低位还是高位程序变量定义: point #25h 高低位数据标志位通信

32、时判断当前状态子程序:读取状态标志接收数据?yyyyyesys 低位数据?yes yes数据存入pwml退 出数据存入pwmh退 出图3.6通信时判断当前状态程序代码:judger:mov a,#55h;判断当前是否接收cjnea,state,next;mova,buff;movstate,aret next:movdptr,#station mova,state;当前接收状态 movb,a rla adda,b mova,#00h ; jmpa+dptr station: ljmp stab0;pwm参数接收 ljmp stab1 ljmp stab2 ;. stab0:;pwm参数接收 m

33、ovc,point;判断是高位数据还是低位数据 jcthll mova,buff movpwmh,a sjmpout0 thll: movpwml,a out0: cplpoint;取完一组数据高低位标志位取反 ret stab1: ret stab2: ret ;结束 3.3 上位机程序设计 随着计算机的日益发展,微机图形监控在各种系统及其自动化方面得到了广泛的应用.用图形来显示被控对象(锅炉,发电厂,调度所)在操作过程中的状态,清晰明了,形象直观,使操作人员的工作方式得到改进,效率得到很大提高.microsoft公司的visual basic 提供了开发windows 应用程序的最迅速,最

34、简捷的方法,利用visual basic 开发应用程序.根据远程温度测控实际情况,为实现其功能,直观立体地显示温度测控的情况,确定上位机软件具体任务图如图3-6所示.上位机的程序是采用vb语言编写的. 上位机控制数据发送pid参数修正曲线显示数据实时显示 图3.7上位机程序设计3.3.1 数据实时显示 实时显示是进入监控系统出现的第一个界面,可以完成对所有测量点的温度显示.就是实时显示图形功能,是根据上位机软件任务要示进行设计的,用户可以清楚看到所测温度变化.可以对温度加热过程中出现问题用闪烁变红报警,温度上限的报警值,用户可自行设定.3.3.2 曲线浏览 曲线浏览可以清楚看到温度变化趋势,对

35、出现异常情况,可提醒操作员采取措施,可以针对性的做出调整.必免出现灾难性的后果 .3.3.3报表及统计表格 是为了特殊要求所设计的,如果需要分析温度加热过程各时段,或对各点温度变化做分析(此系统也可做为多路数据采集系统)3.3.4 串行通信管理在上位机监控程序中,串行通信是实现所有功能的前提.vc利用mscomm控件可以实现串行口通信功能. mscomm控件提供了一毓标准通信命令的使用界面,使用它可以建立与串行口的连接,发出命令并交换数据,以及监视和响应串行连接中发生的事件和错误.3.3.4.1 串行通信 计算机通过自身的串行口与外部设备进行数据传输.当数据从cpu经过串行口发送出去时,字节数

36、据被转换为串行的位.在接收数据时,串行的位将转换为字节数据. 要完成 数据的传输,在上位机一边,windows使用了通信驱动程序 comm.drv,以便使用标隹的windows api 函数发送和接收数据.驱动程序通常由串行设备制造商提供.在使用mscomm 控件,实际上使用了api函数,api函数将被comm.drv解释并传输给设备驱动程序,作为vb程序员,只需要关心communications 控件提供的对windows 通信驱动程序的api 函数的接口,即只需设置和监视mscomm控件的属性和事件.3.3.4.2 建立串行口连接 使用 mscomm控件 的第一步是建立与串行口的连接,建立

37、串行端口连接使用的属性有:1. commport设置或返回通信端口号。利用此属性打开革个串口,但若将该值设置为系统中并在不存在的com端品,将会产生错误。2. settings 以字符串形式设置或返回波特率,奇偶校验指定是否进行数据校验,数据位指定了一个数据块的比特数,停止位指出何时才能接收到一个数据块。3. portopen 设置或返回通信端口的状态,以及打开和关闭端口。在指定要打开的端口,以及如何进行数据通信之后,就可以使用portopen属性建立连接了。它是一个布尔值(取值范围为true或false).3.3.4.3 设置管理接收和发送缓冲区在端口被打开后,就创建了接收和发送缓冲区.为了

38、管理这些缓冲区, mscomm控件提供了一系列属性.1.inbuffersize和outbuffersizeinbuffersize和outbuffersize属性指定了为接收和发送缓冲区分 的内存数,缺省值为1024。这两个值越大,程序中可用的内在就越少,但缓冲区太小,缓冲区容易溢出。2. rthreshold和sthreshold rthreshold和sthreshold属性表示在oncomm事件发生之前,接收缓冲区或发送缓冲区中可以接收的字符数。omcomm事件用来监视和响应通信状态的变化。如果将属性的值设置为0,就可以避免发生oncomm事件。3.inputlen inputlen属

39、性为0,那么在使用input属性时,communication控件将读出接收缓冲区中的所有内容。如果读取以定长的数据块的形式格式化了的数据时,则需要将该属性设置为合适的值。4.input和output input属性用来保存和接收缓冲区获取的数据。output属性用来向发送缓冲区发出命令和数据。5.inputmode inputmode 置为如下常数: cominputmodetext或cominpoutmodebinary,即可分别以文本或二进制格式接收传入的数据。对ansi字符集的数据应使用文本格式;面对其它数据使用二进制。 6.inbuffercount和outbuffercount i

40、nbuffercount 属性可用 于获得接收缓冲区中字节的数目,可用oubuffercount属性监视发送缓冲区中的字节数日。将这两个属性值设置为0可分别将接收和发送缓冲区清空。7.oncomm事件和commevent属性 可以使用oncomm事件和commevent属性捕捉并检查通信事件和错误的值。在发生通信事件时,将触发oncomm事件,commevent属性的值将被改变。因此在发生oncomm事件的时候,可以检查commevent属性的值。由于通信是不可预料的,捕捉这此事件和错误将有助于使应用程序对这些情况作出相应的反应。3.4 pid计算一个经典的控制系统是一个反馈控制系统,通常由一

41、个被控对象,一个控制器,一个给定信号,还有传感器组成,通常给定信号要和传感器反馈过来的反馈信号进行比较得到误差作为控制器的输入,而控制器的输出用来控制被控对象,它是被控对象的输入。下面是它的结构简图: 图3.8 一个控制系统的结构简图 而控制器又以 pid 控制器最为经典,一个 pid 控制器的结构图如下: 图3.9 一个控制系统的结构简图 误差信号 = 给定信号 - 反馈信号(对于一个负反馈的系统) 通常给定信号为系统自己产生的,可以是一个常值,或者是正弦等,通常可以用一个函数来获取给定信号, double getdemandsignal(); 反馈信号通常上通过数据采集器采集到的数字信号,

42、然后通过一个比例把它换算成实际对应的数值,同理,可以定义一个函数来获取反馈信号, double getfeedbacksignal(); 这两个函数具体实现根据系统不同而不同,这里不再给出其实现代码了。 增量式pid控制表达式为: u(k)=u(k)-u(k-1)=kce(k)-e(k-1)+kie(k)+kde(k)-2e(k-1)+e(k-2)=kce(k)+kie(k)+kde(k)2而u(k)=u(k-1)+u(k)下面主要讲下 pid 控制的数字算法的伪代码 const double dtimeinterval =0.001;/采样间隔为0.001秒/pid参数,实际使用时根据系统调

43、试double kp =2.5;double ki =5.0;double kd = 1.2;void callback pidcontrol(uint uid,uint umsg,dword dwuser,dword dw1,dword dw2)static double dvalue3;static double dolderror;double doutsignal;/pid控制的输出double derror;double ddemandsignal = getdemandsignal();double dfeedbacksignal = getfeedbacksignal();der

44、ror = ddemandsignal dfeedbacksignal;dvalue0=kp* derror;比例dvalue1= dvalue1+ki* derror*dtimeinterval;/积分dvalue2=kd * (derror-dolderror)/ dtimeinterval;/微分doutsignal = dvalue0+ dvalue1+ dvalue2;sendcontrolsignal(doutsignal);/这个函数是把控制量输出到d/a,然后传送到以后的环节进行控制 第四章 调试中出现的问题 软件的调试在仿真器super ice51s上调试,仿真器提供的单步,断点,跟踪和夭折等功能的支持下对各子程序分别进行调试,将调试完的子程序连接起来再调试,逐步扩大调试范围.调试的过程一般是: 测试程序输入条件或设定程序输入条件 以单步,断点或跟踪方式运行

温馨提示

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

评论

0/150

提交评论