基于现场总线的温度测控系统设计ABSTRACTIn this paper , a fieldbus-based temperature control system is designed based on fieldebus, in accordance with the agreement of FF and equipment requirements, with DS1820 digital temperature sensor for temperature acquisition through AT89S52 chip temperature input, display, control. Then FB3050 P89V51RD2 complete communications and CPU control, and RS-485 communication with the agreement with the PC communication. The system is simple in structure, low cost, performance and reliability advantages.Keywords: Temperature; FF fieldbus; LCD; determinant keyboard; AT89S52; Communication摘 要本文以FF总线(Foundation fieldbus,基金会现场总线)为基础,根据FF协议和FF设备的要求,用DS1820数字温度传感器进行温度采集,通过AT89S52芯片进行温度输入、显示、控制等。然后通过FB3050和CPU P89V51RD2完成通讯控制,并用RS-485通信协议与上位机PC通信,设计了一个基于现场总线的温度测控系统。该系统具有结构简单、成本低廉、性能可靠等优点。
关键词:温度;FF总线;LCD;行列式键盘;AT89S52;通信
目录摘要 IABSTRACT II第1章 引言 11.1设计目的与意义 11.2国内外研究状况 1第2章 现场总线 22.1现场总线概述 22.1.1现场总线简介 22.1.2现场总线特点 22.2基金会现场总线 32.2.1简介 32.2.2功能 32.3基金会现场总线各层关系及其特点 42.3.1物理层 52.3.2数据链路层 72.3.3应用层 92.3.4用户层 10第3章 基于现场总线的温度测控系统整体设计 103.1方案确定 103.2总体设计概述 11第4章 系统单元电路设计 124.1数据采集单元 124.1.1传感器概述 124.1.2传感器的选择 134.2键盘电路 164.2.1行列式键盘的输入原理 164.2.2按键与相应键码定义 174.2.3 温度输入电路 174.3报警电路 184.4温度反馈控制电路 184.5 通讯电路 194.5.1 FB3050介绍 194.5.2 RS-485通信总线 274.6 MAU电路 294.7 LCD显示电路 314.8基于现场总线的温度测控系统整体电路 32第5章 系统软件设计 345.1软件流程 345.1.1键盘扫描软件流程 345.1.2 DS1820数据采集软件流程 345.1.3温度控制和蜂鸣器软件流程 355.1.4液晶控制软件流程 365.2 程序编译 365.3电路仿真 37第6章 结束语 40致谢 41参考文献 42附录(程序) 305
基于现场总线的温度测控系统设计第1章 引言1.1设计目的与意义改革开放以来,人们生活水平越来越高,城市农村建设迅猛发展,农业、工业发展迅速,在城市里人们需要更多的园林建设来美化城市,改善生态环境,因此需要一个良好的温室系统来培育优良的苗木和花草,在农村,用温室种植蔬菜、花草等。在其它很多地方也会用到温室系统,如粮库需要一个好的温、湿度环境,让粮食不至于在长时间里变质。因此一个良好的智能温室系统,会给人们生活带来很大的帮助!温室系统是一个多方面智能监控系统,如温度系统、湿度系统、灌溉系统、阳光系统、通风系统等。本次设计的是蔬菜种植智能温度测控系统,通过该系统对温室进行温度测量,将数据实时显示和监控,要求系统温度偏差小于5℃,这样才能更加准确的提供一个良好的温度环境,从而适合蔬菜生长。当温度过高或者过低时,系统采取相应措施进行即时处理,恢复所要的理想温度范围。1.2国内外研究状况在国内,将计算机应用于温室控制开始于20世纪70年代中期,自70年代末起,在吸收国外发达国家高科技温室生产技术的基础上,我国科研工作人员进行了温室内部温度、湿度、光照、CO2浓度等环境因子控制技术的综合研究。目前国内单因子监测控制较多,控制主要采用传统的一些方法,精度和稳定性方面与国外还有一定差距。在国外,目前,荷兰、以色列、美国等发达国家可以根据温室作物的要求和特点,对温室内光照、温度、水、气、肥等诸多因子进行自动调控,美国和荷兰还利用温室管理技术,实现对花卉、果蔬等产品的开花和成熟期进行控制,以满足生产和市场的需要。而目前现场总线控制系统是一个以智能传感器、自动控制、计算机、通信、网络技术为主要内容的多学科交叉的新兴技术,在过程自动化、制造自动化,电力等领域都有广泛的应用前景。目前国内的现场智能仪表中,可连接于FF总线系统的产品还没有得到推广。而国外进口产品价格较高,维修不方便。因此,对于此次设计的,可以和现有常规产品连接的系统是很有必要的。第2章 现场总线2.1现场总线概述[1-4]2.1.1现场总线简介现场总线是当今自动化领域技术发展的热点之一,被誉为自动化领域的计算机局域网。它的出现,给自动化领域带来了一次革命。基于现场总线及智能化仪表的控制系统FCS (现场总线控制系统)将逐步取代传统DCS(集散式控制系统)。DCS系统被称为集散式控制系统,它打破了计算机控制系统发展初期由单台计算机统管整个车间甚至工厂的集中控制模式,把整个生产过程分解多个子系统,由多台计算机共同协作完成自控系统功能,每台计算机或微处理器独立承担其中某一部分功能,并广泛采用冗余结构提高安全性。这种系统的优点是避免集中控制模式中危险集中的弊端。FCS是在DCS的基础上发展起来的,FCS顺应了自动控制系统的发展潮流,它必将替代DCS。美国仪表协会于1984年开始制订现场总线标准,在欧洲有德国的PROFIBUS和法国的FIP等,各种现场总线标准陆续形成。其中主要的有:基金会现场总线FF(Foundation Fieldbus,基金会现场总线)、CAN(Controller Area Network,控制局域网络)、LonWorks(Local Operating Network,局部操作网络)、PROFIBUS(Process Field Bus,过程现场总线)和HART协议(Highway Addressable Remote Transducer,可寻址远程传感器数据通路)等。2.1.2现场总线特点•开放性:用户可以购置不同制造商的现场总线产品,把他们集中在一个控制系统中,并进行相互的信息交换。•智能化:现场总线仪表把微处理器引入仪表,使仪表本身成为网络的一个站并参与通信,表明现场总线采用数字通信。•互操作性:其包括设备的可互换性和可互操作性。可互换性是指不同厂商的设备在功能上设备可互换,可互操作性指不同厂商设备可相互通信。•环境适应性:现场总线专门为现场现场应用而设计。表现为通信可采用双绞线、同轴电缆等,电磁抗干扰强。•分散控制:现场总线使控制分散到现场级,从而真正实现分散控制。现场总线是3C技术(计算机、通讯、控制)的融合。其技术的特点是:信号输出全数字、控制功能全分散、标准统一全开发。2.2基金会现场总线2.2.1简介现场总线是全数字化分布式底层控制网络,自他产生后,就引起控制领域的科研人员的广泛关注。但是,长期以来由于各个大组织在大型跨国公司的支持下,为制定统一的国际标准造成了巨大的阻力,形成了各大总线共存的局面。经过有关各方的共同努力和协商妥协,FF总线、LonWorks总线、PROFIBUS总线、CAN总线、HART总线等7种现场总线在1999年年底的投票表决中获得通过,FF现场总线也成为了一种极有发展前景的现场总线。基金会现场总线分为低速H1和高速H2两种通信速率。H1的传输速率为31.25kbps,通信距离可达1900m(可加中继器延长),可支持总线供电,支持本质安全防爆环境。H2的传输速率可为1 Mbps和2.5 Mbps两种,其通信距离分别为750m和500m。物理传输介质可支持双绞线、光缆和无线发射。其物理媒介的传输信号采用曼彻斯特编码。2.2.2功能•在生产过程中完成过程参数的检测,变送和显示功能;•在现场完成过程参数的控制运算和其它所需的计算;•当生产过程参数超过规定数值时,提供警告和报警信息,并指导操作人员进行紧急处理和自动出发连锁系统;•具有自诊断功能;•满足生产过程实时性要求;基金会现场总线将控制分散到现场,从而将危险分散,使控制系统能够安全,稳定状态下长期运行。2.3基金会现场总线各层关系及其特点基金会现场总线的核心技术之一是控制网络的数字通信。为了实现通信系统的开放性,其通信模型参考了ISO/OSI(国际化标准组织)参考模型,并在此基础上根据自动化系统的特点简化后得到的。这是因为工业生产现场存在大量传感器、控制器、执行器等,它们通常零散地分布在一个较大范围内。如果按照七层的参考模型,由于层间操作与转换的复杂性,网络接口的造价与时间开销会过高。为满足实时性要求,也为了实现工业网络的低成本,基金会现场总线的参考模型只具备ISO/OSI参考模型7层中的3层,即物理层、数据链路层和应用层。FF H1现场总线协议由物理层、数据链路层、应用层以及考虑到现场装置的控制功能和具体应用而增加的用户层组成。省去中间的3~6层,即不具备网络层、传输层、会话层与表示层,结构如图 2-1所示。物理层规定了信号如何发送;数据链路层规定如何在设备间共享网络和调度通信, 数据链路层负责实现链路活动调度、数据的接收发送、活动状态的响应、总线上各设备间的链路时间同步等。这里,总线访问控制采用链路活动调度器方式,链路活动调度器拥有总线上所有设备的清单,由它负责总线段上各设备对总线的操作。
基于现场总线的温度测控系统设计|免费论文图2-1 OSI模型与现场总线通信模型的对应关系应用层规定了在设备间交换数据、命令、事件信息以及请求应答中的信息格式;现场总线用户层具有标准功能块和装置描述功能。标准规定32种功能块,现场装置使用这些功能块完成控制策略。不过,在相应的软硬件开发过程中,往往又把除去最下端的物理层和最上端的用户层之后的中间部分作为一个整体,统称为通信栈。现场总线应用层由现场总线访问子层和现场总线报文规范子层构成。现场总线访问子层提供发布者/预订者、客户机/服务器和报告分发三种模式的报文服务。现场总线报文规范子层提供对象字典服务、变量访问服务和事件服务等。2.3.1物理层物理层用于将信息编码。低速现场总线上发送的信号是31.25KBps速率的电流信号,它被叠加在一个供电的支流电源信号上。1 功能物理层用于实现现场物理设备与总线之间的连接,为现场设备与通信传输媒体的连接提供机械和电气接口标准。物理层作为电气接口,一方面接受来自数据链路层的信息,把它转换为物理信号,并传送到现场总线的传输媒体上,起到发送驱动器的作用;另一方面把来自传输媒体的物理信号转换为信息送往数据链路层,起到接收器的作用。2 信号编码基金会现场总线的信号通信由以下几种信号编码组成。前导码:这是为置于通信信号最前端而特别规定的8位数字信号:10101010,即一个字节,一般情况下,它是8位的一个字节长度。收信端的接收器利用这一信号,对正接收的现场总线信号同步其内部时钟。数据格式如表2-1:表2-1 基金会现场总线数据帧格式前导码 帧起始定界符 编码数据 终止符帧前定界码:它标明了现场总线信息的起点,其长度为8个时钟周期,也就是一个8位的字节。帧前定界码由特殊的N+码和N-码和正负跳变脉冲按规定的顺序组成。在FF总线的物理信号中,N+码和N-码具有自己的特殊性。它不像数据编码那样在每个时钟周期的中间都必然会存在一次电平的跳变,N+码在整个时钟周期都保持高电平,N-码在整个时钟周期都保持低电平,即它们在时钟周期的中间不存在电平的跳变。收信端的接收器利用帧前定界码信号来找到现场总线信息的起点。
图2-2 FF总线传输数据的波形帧结束码:帧结束码标志着现场总线信息的终止,其长度为8个时钟周期,或称一个字节。像起始码那样,帧结束码也是由特殊的N+码和N-码和正负跳变脉冲按规定的顺序组成,当然,其组合顺序不同于起始码。帧前定界码和帧结束码分别为一个字节的编码,帧前定界码和帧后定界码相当于一对括弧,将一帧信息括起来。按曼切斯特编码规则,N+码和N-码既非“0"也非“1",因此在正常数据中是不可能的,以此来实现数据的透明传输。 前导码、帧前定界码、帧结束码都是由物理层的硬件电路生成并加载到物理信号上的。这几种编码形成如图2-2所示的编码序列。作为发送端的发送驱动器,要把前导码、帧前定界码、帧结束码增加发送序列之中;而接收端的信号接收器则要从所接收的信号序列中把前导码、帧前定界码、帧结束码除掉。2.3.2数据链路层数据链路层的操作由链路活动调度器控制和执行。1 链路活动器的竞争现场总线上可挂接多个链路主设备。链路主设备需经过竞争成为具有链路活动调度器功能的链路设备,其他的链路设备有基本设备和网桥。竞争规则如下:•节点地址最低的链路主设备胜出;•在网段上一旦有一个链路主设备或得链路活动调度器的功能,这时如果有节点地址更低的新设备接入,则新设备不能获得链路活动调度的功能;•网桥或H1现场总线接口模块具有优先权(较低地址)来获得链路活动调度器功能。2 链路活动调度器的功能和工作过程(1)周期通信:把根据链路活动调度器的链路活动调度表,需要进行周期通信的数据称为报文。周期通信的操作过程为:链路活动调度器想需要发送报文的设备发出强制数据令牌的调度命令,如图2-3所示。该设备收到强制数据令牌命令后就可发送数据传输,广播或发送报文到现场总线上,通信按照发布方/预约接收方的方式进行,有关的接收设备收到该设备发送的报文后,就可在内部解装和转换为用户层可使用的信号。周期通信的特点:由于报文的接收方是预先确定的,因此,报文传输不需建立连接和拆装连接,也不需要数据缓冲区。(2)非周期通信:在周期通信的间隔,可以在现场总线上发送非周期通信的报文。这些非周期通信的报文包括操作员改变控制回路的设定值,切、换手自动操作模式等。链路活动调度器有两个令牌:强制数据令牌和传输令牌。只有获得令牌的设备才能够在现场总线上发送数据。一个总线段在一个时刻只能有一个设备拥有令牌。强制数据令牌用于周期通信,在规定的周期时间内,强制数据令牌就会发送到有关的现场总线设备。传输令牌用于非周期通信,在周期通信的时间间隔,链路活动调度器发送传输令牌到现场总线设备,该设备接收传输令牌后,就获得控制权,并发送非周期报文,直到报文发送完毕或拥有令牌的最大时间到达,然后将令牌返回链路活动调度器,如图2-4所示。非周期通信特点:非周期通信的接收方是随机的,因此,非周期通信的数据传输是有向连接的传输。(3)连接活动调度表的维护:链路活动调度器维护链路活动调度表。链路活动调度表是一个时间表,用于确定有哪些现场总线设备要列入链路活动调度表,并对未在活动表的设备进行探询,对探询有响应的设备被列入活动表,就会周期的获得强制数据令牌,并能够强制的发送数据。链路活动调度器在周期通信和非周期通信的间隙时间,可发送探询节点的报文到没有列入链路活动调度表的节点地址,如果该地址有一个现场总线设备存在,则该设备接收探询节点的报文,并返回一个探询响应报文,链路活动调度器接收到该探询响应,就将该设备添加到链路活动调度表,并将该变化广播告知在线的所有现场总线设备,使每个设备获得当前链路活动调度表的备份。
基于现场总线的温度测控系统设计图2-3 发送强制数据令牌及应答图2-4 发送传输令牌和非周期通信链路活动调度器在每次轮流对链路活动调度表的设备发送传输令牌后,会至少对一个未在当前链路活动调度表中的节点地址进行探询。3 数据帧的格式数据帧提供数据链路的协议控制信息。协议控制信息由三部分组成。第一部分是帧控制信息,它只有一个8位字节,指明了该数据帧的种类、地址长度、优先权等。第二部分是数据链路地址,包括目的地址与源地址,当然并非所有种类的数据帧都具有目的地址与源地,有些类别的数据帧只有源地址,没有目的地址。第三部分则指明了该类数据帧的参数。数据帧格式如表2-2所示。表2-2 数据帧结构
协议信息 帧控制字节 数据链路地址 单数 用户数据
目的地址 源地址 第二源地址 字节数 1 4 4 4 2 n 2.3.3应用层应用层(第7层)是互连参考模型的最高层,是用户使用互连参考模型功能的唯一窗口。其功能是实现应用进程(如用户程序,终端操作员等)之间的信息交换,同时,还具有一系列业务处理所需要的服务功能。现场总线的应用层由总线访问子层和总线报文规范层一起构成。2.3.4用户层用户层是ISO/OSI(国际标准化组织)模型的第七层之上在增加新的一层,即用户层,因此模型理解为四层。是使现场总线控制系统具有开放与可互操作性的关键。用户层定义了从现场装置中读、写信息和向网络中其它装置分派信息的方法,即规定了供用户组态的标准“功能模块”。通过用户层,熟悉其它控制系统的用户也可以方便的使用FF总线系统。
第3章 基于现场总线的温度测控系统整体设计3.1方案确定针对农村蔬菜培植温室,设计一个基于现场总线的温度测控系统。通过此系统,给温室提供一个合适的温度环境,适合蔬菜生长。要求设计方案简单,便于维护,系统经济,扩展性高。温度测控系统的方案设计,可以选择PLC,通过采用侦温棒检测温室温度,在温室回风口和出风口加风扇进行散热,但这样设计成本太高。因此温度采集选择方便扩展的,且不需A/D转换的数字温度传感器DS1820,它能直接将温度在DS1820内部转换为数字信号,送往单片机进行后续控制。温度输入,只用数字键和功能键,因此选择4*4行列式键盘,可让系统更经济。检测的温度用液显LCD1602显示,方便用户查看当前系统温度。与上位机显示通信,采用RS-485通讯,因为它具有传输距离远的优点。通过软、硬件电路相结合来控制系统温度。在设计中,蜂鸣器判断温室温度偏差,当异常时,蜂鸣器会产生报警信号,通知相关人员进行处理。通信协议采用目前自动化领域流行的现场总线,采集模块和通信模块采用UART总线进行通讯,通信模块用RS-485通信与上位机通信,由于由通信模块转换的现场总线信号很弱,驱动能力不强,必须通过MAU电路(Medium Attachment Unit,接口附属电路),将现场总线信号放大、滤波,使接收和发送的数据具有抗干扰能力和驱动能力。由FB3050发送的FF信号用于系统功能扩展。3.2总体设计概述本次针对蔬菜培植温室,设计一个智能温度测控系统,采用现场总线实施通信,从而节省硬件数量投资,提高系统可靠性。通过该系统提供一个良好的温度范围,适合蔬菜生长。当温度高于温度上限时,通过风机提供冷风,进行适当降温;而当低于某一个温度时,用加热炉进行升温。当风机和加热炉某一个不能进行正常工作时,此时温度会一直上升或者下降,不能实现自动化智能控制,此时温度高于某一个极限或者温度低于某一个极限时,采用蜂鸣器自动报警,通知相关人员进行其故障维修。通过该系统给蔬菜培植温室提供良好的温度环境。基于现场总线的温度测控系统,实现了对温室的温度采集,智能控制,将温度实时显示和上位机通讯,其结构分为2个层次:(1)操作监控层:主要完成运行状态的监控。能为现场控制器设定值调节功能,使控制器保持最优控制,并对过程数据实现显示。操作监控层在PC机中实现。该层通过RS-485通信协议与现场控制层的总线主节点连接,对现场信号监控,实现人机接口,可作为现场操作站。(2)现场控制层:由控制器、通讯模块、传感器、执行器等装置构成。现场控制层向下与被控对象相接,向上与现场优化控制层的PC机相连,可向上层系统发送数据。现场总线控制系统中采用数字信号替代模拟信号,因而可在一条总线上传输多个节点信号参数、设备状态、故障信息等。现场设备以外不需要再另外设置A/D、D/A转换部件,从而简化系统结构。随着智能化、多变量的、具有自诊断功能的现场设备越来越多地应用于过程控制系统。对现场测量和控制设备的要求也随之提高,不仅要求现场设备能提供过程测量信息,而且还应该能提供许多附加信息,包括设备自身及过程的诊断信息、管理信息等。这些功能在FF系统中都能实现。本系统中分温控器和通讯两部分。温控器采用ATMEL公司的微处理器
基于现场总线的温度测控系统设计T89S52,通过与传感器和控制电路连接,组成控制模块。该模块可实现自治功能,即使发生总线通讯的中断,没有操作监控层的参与也可使现场设备进入相对安全的状态。通讯采用PHILIPS公司的微处理器P89V51RD2完成通讯协议处理。基金会现场总线网络系统的实现,涉及国际标准化组织通信参考模型中的三层:物理层、数据链路层、应用层。其中数据链路层以上的部分是通过软件编程来实现的,而数据链路层及物理层所需要的总线驱动、数据编码、时钟同步和帧检验等工作,则需要软件和硬件的结合来完成。
第4章 系统单元电路设计4.1数据采集单元4.1.1传感器概述 [5-6] 本次要求对温度数据信息进行现场采集,传送到单片机进行温度处理,实现自动化智能控制,因此设计到温度传感器的选择问题。温度传感器,使用范围广,数量多,居各种传感器之首。温度传感器的发展大致经历了以下3个阶段:1 传统的分立式温度传感器——热电偶传感器热电偶传感器是工业测量中应用最广泛的一种温度传感器,它与被测对象直接接触,不受中间介质的影响,具有较高的精度,测量范围广,可从-50~1600℃进行连续测量,特殊的热电偶如金铁——镍铬,最低可测到-269℃,钨——铼最高可达2800℃。2 模拟集成温度传感器 集成传感器是采用硅半导体集成工艺制成的,因此亦称硅传感器或单片集成温度传感器。模拟集成温度传感器的主要特点是功能单一(仅测量温度)、测温误差小、价格低、响应速度快、传输距离远、体积小、微功耗等,适合远距离测温,不需要进行非线性校准,外围电路简单。3 智能温度传感器智能温度传感器(亦称数字温度传感器)是在20世纪90年代中期问世的。智能温度传感器内部包含温度传感器、A/D传感器、信号处理器、存储器(或寄存器)和接口电路。有的产品还带多路选择器、中央控制器(CPU)、随机存取存储器(RAM)和只读存储器(ROM)。智能温度传感器能输出温度数据及相关的温度控制量,适配各种微控制器(MCU),并且可通过软件来实现测试功能,即智能化取决于软件的开发水平。4.1.2传感器的选择随着科学技术的不断进步与发展,温度传感器的种类日益繁多,数字温度传感器更因适用于各种微处理器接口组成的自动温度控制系统具有可以克服模拟传感器与微处理器接口时需要信号调理电路和A/D转换器的弊端等优点,被广泛应用于工业控制、电子测温计、医疗仪器等各种温度控制系统中。其中,比较有代表性的数字温度传感器有DS1820、MAX6575、DS1722、MAX6635等。1 本次选择DS1820数字温度传感器。DS1820是美国DALLAS公司生产的单线数字温度传感器,它具有微型化、低功耗、高性能、抗干扰能力强、易配微处理器等优点,特别适合于构成多点温度测控系统,可直接将温度转化成串行数字信号供微机处理,而且每片DS1820都有唯一的产品号并可存入其ROM中,以使在构成大型温度测控系统时在单线上挂任意多个DS1820芯片。从DS1820读出或写入DS1820信息仅需要一根口线,共读写及温度变换功率来源于数据总线,该总线本身也可以向所挂接的DS1820供电,而无需额处电源。DS1820能提供九位温度读数,它无需任何外围硬件即可方便地构成温度检测系统。DS1820采用3脚TO-92封装或8脚SO封装,本次采用的是8脚SO封装,DS1820引脚功能如表4-1所示。表4-1 DS1820引脚功能12678 NC 空引脚,不连接外部信号3 VDD 接电源引脚,电源供电3.0 ~5.5V4 DQ 数据的输入和输出引脚5 GND 接地2 DS1820中的单总线技术问题达拉斯半导体公司突出的单总线技术,该技术与同步串行二线方式和同步串行三线方式不同,它采用单根信号线,既可传输时钟,又能传输数据,而且数据传输是双向的,这种单总线技术具有线路简单,硬件开销少,成本低廉,便于总线扩展和维护等优点。由于它们是主从结构,只有主机呼叫从机时,从机才能应答,因此主机访问单总线器件都必须严格遵守单总线命令序列,即初始化,ROM,命令功能命令。如果出现序列混乱,单总线器件将不响应主机。3 DS1820的温度测量原理DS1820测量温度时使用特有的温度测量技术。其测量电路框图如图4-1所示。DS1820内部的低温度系数振荡器能产生稳定的频率信号f0,高温度系数振荡器则将被测温度转换成频率信号f。当计数门打开时,DS1820对f0计数,计表4-2 DS1820温度数字对应关系表温度℃ 输出的二进制码 对应的十六进制码+125 0000000011111010 00FAH+25 0000000000110010 0032H+1/2 0000000000000001 0001H0 0000000000000000 0000H-1/2 1111111111111111 FFFFH-25 1111111111001110 FFCEH-55 1111111110010010 FF92H数门开通时间由高温度系数振荡器决定。芯片内部还有斜率累加器,可对频率的非线性予以被偿。测量结果存入温度寄存器中。一般情况下的温度值应为9位(符号点1位),但因符号位扩展成高8位,故以16位被码形式读出。表4-2给出了温度和数字量的关系。
图4-1 DS1820内部结构图4 高速暂存器它由便笺式RAM和非易失性电擦写 EERAM组成,后者用于存储TH、TL值。数据选写入RAM,经校验后再传给EERAM。便笺式EAM点9个字节,包括温度信息(第1、2字节)、TH和TL值(3、4字节)、计数寄存器(7、8字节)、CRC(第9字节)等,第5、6字节不用。暂存器的命令共6条,见表4-3所示。表4-3 DS1820控制命令指 令 说 明温度转换(44H) 启动在线DS1820做温度A/D转换读数据(BEH) 从高速荽嫫鞫?bits温度值和CRC值写数据(4EH) 将数据写入高速暂存器的第2和第3字节中复制(48H) 将高速暂存器中第2和第3字节复制到EERAM读EERAM(B8H) 将EERAM内容写入高速暂存器中第2和第3字节读电源供电方式(B4H) DS1820供电方式在正常测温情况下,DS1820的测温分辨力为0.5℃,可采用下述方法获得高分辨率的温度测量结果:首先用DS1820提供的读暂存器指令(BEH)读出以0.5℃为分辨率的温度测量结果,然后切去测量结果中的最低有效位,得到所测实际温度的整数部分Tz,然后现用BEH指令取计数器1的计数剩余值Cs和每度计数值CD。考虑到DS1820测量温度的整数部分以0.25℃、0.75℃为进位界限的关系,实际温度Ts可用公式3-1计算:Ts=(Tz-0.25℃)+(CD-Cs)/CD (3-1)5 多个DS1820温度传感器扩展(多路采集扩展)本次设计的是一个智能温室监控系统,在设计中用一个温度传感器完成对一个温室房间进行温度采集,当我们要对多个温室采集和控制时,则需要在单片机上挂接多DS1820温度传感器,用模拟开关将多个传感器连接,分别进行采集控制传输。因其连接方便,且当多个DS1820温度传感器工作时,由于各个温度传感器序列号不一样,对其进行编号,方便进行控制,只是在输出电路需要相应
基于现场总线的温度测控系统设计
基于现场总线的温度测控系统设计增加控制电路即可。6 数据采集单元电路设计由DS1820实现的数据采集单元电路如图4-2所示。 图4-2 数据采集单元电路图4.2键盘电路当此系统当前工作于一个温度范围,而此温度范围不再适合时,因此需要重新设置一个温度范围,让系统重新按照新设置的温度范围进行智能控制,在设计中,当用户输入“*”号时,输入温度下限值,输入“#”号时,输入温度上限值。在本次温度输入中,只用到数字键和功能键,采用4*4行列式键盘,从而可以降低成本。4.2.1行列式键盘的输入原理[7]行列式键盘由行线和列线组成,列线通过电阻接正电源,并将行线所接的单片机I/O口作为输出端,而列线所接的I/O口作为输入。当按键没按下时所有的输出都是高电平,代表无按键下。行线输出的是低电平,一旦有按键按下时,则输入线被拉低,通过读输入线的状态就可得知是否有按键下。在实际电路中,列线接单片机AT89S52 P2.0~P2.3引脚,行线直接接到AT89S52 P2.4~P2.7脚。通过以上所述画出原理电路图如图4-3所示。 图4-3 4*4行列式键盘与单片机连接原理图4.2.2按键与相应键码定义系统中使用的4*4行列式键盘上16个按键的功能与相应的键码如表4-4所示。表4-4 按键功能与相应键码键号 功能 键码0 1 7EH1 2 BEH2 3 DEH3 M EEH4 4 7DH5 5 BDH6 6 EDH7 M2 EDH8 7 7BH9 8 BBH10 9 DBH11 M3 EBH12 * 77H13 0 B7H14 # D7H15 M4 E7H
4.2.3 温度输入电路 通过上述行列式键盘原理,画出实际电路图如图4-4所示。 图4-4 键盘连接电路图4.3报警电路在本次设计中,如大气变化将会产生较大的温度偏差,因此采用智能报警电路进行现场监控。如温度超过一个温度范围,而风机和加热炉未能及时进行处理,或者设备已坏,则此系统将智能报警,让人员查找故障,在实际电路中,蜂鸣器接在P0.5脚,当正常时此引脚置低电平,当温度异常时或者传感器未能检测到信号不能传输至单片机处理,则此引脚置高电平,蜂鸣器鸣叫,通知相关人员进行即时处理,提供一个全自动化智能报警系统。要求温室温度失调范围小于5℃。蜂鸣器报警电路图如图4-5所示。 图4-5 蜂鸣器报警电路图4.4温度反馈控制电路在实际的系统中,用DS1820数字温度传感器进行温室温度检测将温度传至单片机进行现场处理,但检测的温度不一定是所要的理想温度,或者因大气的变化等,温度发生偏差,温度过高或者过低将采取相应措施进行即时处理。在此次设计中用以下电路进行控制。单片机输出的控制量输入到P0.7脚,在实际中,当电路和温度正常的情况下,此引脚被置为高电平,则此时光电耦合器件TLP521不导通,CMOS截止,因而继电器J1断点,常开触点断开,从而不会输出220V电压,而此继电器将接在风机和加热炉交流电源输入端,因而不会对其进行加温和冷却。相反,当出现异常时,此信号为低电平,则光电耦合器件导通,使CMOS三极管导通,从而继电器通电,常开触点闭合,输出220V电压;否则,输出0V电压。相应的控制在软件中实现。图中二极管D1用来保护继电器,防止电源电压过高损坏继电器。因加热电路和冷却电路一样,所以在图中只画了一路,当我们需要进行多个温室控制时,则需要相应的增加控制电路,当需要多路控制单片机引脚不够时,用8155可编程并行接口芯片进行扩展。加热控制电路如图4-6所示。 图4-6 加热控制电路图4.5 通讯电路4.5.1 FB3050介绍总线通信控制器是基金会现场总线网络实现的基础,本设计中选用SMAR公司的FB3050,通讯部分的设计都是基于该控制器来实现的,它可用作总线主、
基于现场总线的温度测控系统设计从设备的通信接口。总线控制器要实现以下功能:•总线上信号驱动和接收:为实现基金会现场总线的标准,从电气上,对通信接口线路的要求可以归结为三点:其一是发送时要有足够的驱动能力,保证接收端的信号强度;其二是接收时应能正确接收信号,并具有一定的抗噪声能力;其三是能适应不同供电方式,支持电源线上信号载波。•传输数据的串、并转换:现场总线采用的是串行数据通信方式,而CPU采用的是并行数据,通信控制器作为CPU与总线的接口,很重要的工作就是对所传输数据进行的串、并转换工作。串行数据的编码和解码,基金会现场总线采用的是两线制同步数据通信方式。采用同步通信方式时,发/收方必须采用频率和相位相同的时钟,通信方可进行,因此发信方需要在发送数据的同时将自己的时钟也一同发往接收方。同步通信有四线制和两线制两种,四线制采用一对线传输数据信息,另一对线传输时钟信息。为节省电缆,本设计采用两线制则使用同一对线同时传输数据和时钟信息。为此,发送方必须采用适当的数据编码的方式,将时钟信息隐藏在数据中发送出去,接收方将接收到的信号解码,还原出时钟信号。基金会现场总线采用的是曼切斯特编码和解码技术。其最大特点是每个数据在发送时钟的中部都必然发生一次变化,因此接收方在每个时钟周期内总能得到一次时钟信息。也就是说传输的数据流中包含了充分的时钟信息。采用曼切斯特编码的另一个重要优点在于,对任意的数据流,传输数据的正负脉冲总是对称的,便于在MAU电路中采用变压器隔离。•信息帧的打包和解包:总线的信息是采用分层打包方式进行包装的,总线通信控制器在收到来自数据链路层的数据包后,还要加上网上传输所必需的附加码才能用于传输。在每一帧的起始部分,发送方都要发送一到几个字节的前导码,设置前导码的目的是使接收方跟发送方进行时钟同步。由于采用的是两线制同步数据传输,接收方和发送方一般是采用各的时钟来进行接收和发送,而双方时钟在频率和相位上是不可能完全一致的,基金会现场总规定,各站的时钟频率误差应在士0.2%以内。收方为了能从接收信号中解码出和发送时钟基本同步的时钟,一般接收线路中都采用锁相环技术,锁相环线路采用内部16倍于数据速率的时钟来驱动,产生和发送用于时钟同步的时钟信号,用于数据接收。锁相环根据接收数据中跳变沿出现的时间,逐步调整自己的计数值,以使自己产生的时钟和发送方基本同步。发送方在每帧前都发送前导码,就是为训练接收方的锁相环线路,目的是在双方通信正式数据之前,使接收方有足够的调整时钟相位的时间,以便能与发送方时钟同相。前导码是一组“1”和“0”相互交替的序列,当总线上使用了一个或几个中继器时,需要多个字节的前导码,使发方、中继器和收方的时钟顺序逐级同步。1 FB3050特点FB3050是SMAR公司推出的第三代基金会现场总线通信控制芯片,用作总线主、从设备的通信接口。芯片设计时考虑了和各种流行的微处理器接口问题。FB3050内部有信号极性识别和矫正电路,因此允许总线网络的两根线无极性任意连接。其数据总线宽度为8位,地址可采用复用方式。FB3050通信控制器内部包含两个DMA(Direct Memory Access,存储器直接存取方式)电路,可不需要CPU参与直接访问存储器。从而可直接将存储器中数据发送出去,或直接将数据帧接收到存储器中。DMA控制下的数据接收和发送是在不中断CPU的正常程序执行的情况下进行的,对可能出现的CPU和DMA两者争用存储器总线的情况,DMA用PO_READY信号使CPU进入等待状态,直到DMA完成。为了使网络通信系统可靠,FB3050内部设置了禁止“闲谈”的功能,保证本节点不会无限制地占用网络,从而保证了网络的可靠性。即通过一个定时器,当某个节点在非正常情况下,比如软件死锁,为防止其长期占用网络的发送权,使整个网络通信瘫痪,在通信控制器内设置一个定时器,从本节点占有发送权开始计时,当超过规定时间仍然不交出发送权的话定时器将强制剥夺本节点的发送权。 为实现以DMA方式运行FB3050,减小主CPU开销,外挂32K SRAM作为与主CPU的共享存储器。在存储器中保留连续两个4K空间,分别作为DMA读写缓冲区。并在内部设计了数据链路层地址及帧的自动识别处理器,提供了一套自动识别帧控制字和帧目的地址的逻辑机制,加上DMA电路。FB3050在很少CPU干预的情况下就能从网上正确接收属于本节点的信息帧。FB3050内部还提供了三个定时器,供数据链路层编程使用,它们分别是字节传输时间定时器、1 /32ms定时器和lms定时器。所有三个定时器都用做自由运行和暂停时间和相关的中断,当一个定时器用做自由运行时,中断将被溢出,当他做时间溢出时,值被写到响应的比较寄存器,定时器的值也相应的增加,当计数值达到相应比较器的值时,中断将产生。FB3050有地址识别功能,有了此功能,它能够侦察出接受进来信息的地址并能够辨别当前状态是否需要用此信息,所有的侦察功能独自FB3050完成,不会有CPU的干涉,地址识别机制依赖于信息的模式。2 FB3050常用引脚介绍见表4-5:表4-5 FB3050常用引脚 Pin 引脚 Function 功能 Remark 描述PO_MADDR[15:0] 16位存储地址线 仅能在低32Bytes中使用PO_MDATA[7:0] 双线存储数据线 PO_MRAM_I 用做RAM芯片引脚的选择 PI_ADDR[15:0] 微控制器FB3050控制器的控制地址线 复合地址线时用0:7脚PB_CDATA[7:0] 微控制器FB3050控制器的控制数据线 PI_CSMEM 允许存储器低32BYTES地址线通过FB3050的信号 PI_MOE 允许存储器输出数据的信号 PI_CS 当存储器地址是复合数据线时的控制制器的探针信号 当不是复合地址模式时,此脚接电源VCCRD/ 微控制器的读控制信号 WR/ 微控制器的写控制信号 PO_READY 微控制器控制输出准备信号 PO_TACT 此信号允许外部驱动依靠此设备接口 PO_PHDPU 当空闲时传送数据信号 3 FB3050与CPU 电路的连接(1) CPU选择及相应功能本次选择的CPU是PHILIPS公司的新产品P89V51RD2单片机,主要完成通讯功能。P89V51RD2是一款8位80C51单片机的派生产品。它在完全保留80C51指令系统和硬件结构的大框架外,作了很多的加强和扩展。其将原有的对外部数据和程序存储器的16位寻址机制加以应用,把片上的RAM扩展到1024字节,片上Flash EPROM扩展到64kB,满足本系统中用C语言编程对片上大存储器容量的需要。 P89V5IRD2的典型特性是它的X2方式选项。利用该特性,设计者可使应用程序以传统的80C51时钟频率(每个机器周期包含12个时钟)或X2方式(每个机器周期包含6个时钟)的时钟频率运行,选择X2方式可在相同时钟频率下获得2倍的速度。这样可将时钟频率减半并保持特性不变,这种方式运行可以降低EMI。采用Flash程序存储器,可支持并行和串行 ISP(In System Program, 在系统编程),ISP允许CPU不离开系统,在软件控制下对成品中的器件进行重复编程,使调试变得方便。P89V51RD2也可采用在运行中编程,允许随时对Flash程序存储器重新配置,即使应用程序正在运行时也不例外。这很适合系统中的不停机修改。UART(通用异步/接受发送器):在系统中要利用P89V51RD2的UART通讯功能。P89V51RD2除可工作在所有的标准模式之外,还包含一些标准80C51 UART的增强特性,如帧错误检测和自动地址识别。接收时当检测到Rxd端电平负跳变时启动,CPU对Rxd不断采样,采样速率为波特率的16倍。当检测到负跳变时,16分频计数器立即复位来将其翻转值按接收到的位时间为边界进行分配。16个计数状态把每个位时间分成16份,在每P个位时间的第7、 8、 9计数状态时,位检测器对Rxd端的值进行采样。取值为三个采样值中取多数(至少2个)作为读入值,这样做是为了抑制噪声。如果在第一个位时间所接收的位不为0,接收电路复位并等待另一个负跳变的到来。这样可以防止错误的起始位。如果起始位被证明是有效的,则被移入输入移位寄存器,并开始接收这一帧剩余的位。仅当产生的最后一位移位脉冲满足下列条件:RI=0, SM2=0,或接收到的停止位为11停止位就进入RB8,而8位数据则进入SBUF(串行口缓冲寄存器),并且RI置位。如这几个条件中的任何一个不满足,所接收到的数据帧都会丢失
基于现场总线的温度测控系统设计多机通信功能:UART模式2及模式3有一个专门的功能用于多机通信。在这些模式,发送及接收均为9位数据,接收时第9位数据存入RB8。UART可编程为:接收到停止位时,仅当RB8=1时串口中断才激活。可通过置位SCON(串行口控制寄存器)内SM2位来使能这一特性。自动地址识别功能:自动地址识别是这样一种特性,它允许UART使用硬件进行比较,从串行数据流中识别出特定的地址。这样就不必花费大量软件资源去检查每一个从串口输入的串行地址。将SCON内SM2(多机通信控制位)置位可使能该特性。在9位UART模式(模式2和模式3)下,如果接收的字节中包含“给定”地址或“广播”地址,接收中断标志(RI)将自动置位。在9位模式下要求第9个信息位为1以表明该信息内容是地址而非数据。 (2) P89V51RD2 特点•支持12时钟(默认)或6时钟模式;•串行外围接口和增强型UART; •可编程计数器阵列,具有捕获/比较功能;•4 个8位I/O 口,含有3个高电流P1 口(每个I/O口的电流为16mA); •3 个16位定时器/计数器;•可编程看门狗定时器; •8 个中断源,4个中断优先级;•2 个DPTR寄存器;•低EMI 方式; •兼容TTL 和CMOS 逻辑电平;•掉电检测;•低功耗模式;•DIP40封装;(3) FB3050与CPU 通讯电路CPU与FB3050接口电路包括三部分:系统总线接口,控制总线接口和存储总线接口,P89VS1RD2与FB3050系统总线都采用8位数据总线,16位地址总线,并运行于数据、地址复用方式,即FB3050的高8位地址线和P89VS1RD2的高8位地址双向I/O口P2相连,FB3050的数据线与P89V51RD2的数据双向I/O口PO相连。而FB3050的低8位地址线接地,利用数据总线在读写操作的地址周期和数据周期,分别传输低8位地址和数据信息。FB3050与P89V51RD2连接于同一个时钟电路,由主CPU提供系统复位信号。控制总线包括地址锁存信号PI_ CAS与ALE连接,锁存地址信号。读信号RD与P3.6,写信号WR与P3.7相连,等待信号PO_ READY与P3.0之间连接。当FB3050的DMA操作与CPU争用存储器总线时,指示CPU插入等待状态协调二者操作。P89V51RD2通过存储器总线接口实现对FB3050内部存储器及共享存储器寻址,以实现对内部寄存器组和共享存储器数据收发缓冲区的读写操作。外接16K存储器地址空间8000H-AFFFH,将CPU 端口P2.6( A14地址线)与FB3050输入引脚PI_ CSMEM相接,产生选通信号,通过FB3050对共享存储器读写。FB3050内部包含有两个DMA电路,这是指一种高速的数据传输操作,允许在外部设备和存储器之间直接读写数据,既不通过CPU,也不需要CPU干预。整个数据传输操作在一个称为"DMA控制器"的控制下进行的。CPU除了在数据传输开始和结束时做一点处理外,在传输过程中CPU可以进行其他的工作。这样,在大部分时间里,CPU和输入输出都处于并行操作。因此,使整个计算机系统的效率大大提高。通过内部的寄存器组,用户可以方便地写入控制字,对FB3050进行组态和操作。用户也可以容易地读到FB3050内部的状态。FB3050控制器内部有一套灵活的中断机制,本设计中CPU通过读FB3050内部的中断状态寄存器就能确定中断源。总线上的许多变化条件都可以作为中断源。此外,FB3050内部的定时器也可以产生中断申请,所有的中断源都是可屏蔽和可识别的。FB3050与CPU P89V51RD2连接电路如图 4-7所示。 图4-7 FB3050与CPU P89V51RD2连接电路(4 ) FB3050与SRAM电路设计本次设计中采用的是友联实业公司的WS62256芯片,它是一个低电压低功率,32*8位CMOS静态存储器,有2.4V~ 5.5V的宽电压范围选择,先进的CMOS工艺和电路技术提供一个高速和低功率特点,该CMOS器件有0.01A电流和工作于3V时的最大存储时间为70ns。WS62256器件有自动功率下降功能,当芯片没选择使用时,相应的减少功率消耗。该SRAM片选引脚CS与FB3050外部RAM选通引脚PO_ MRAM_I相联,读引脚OE与读选能引脚PO_ MOE连接,写引脚WR与写选能引脚PO_ MWR连接。CPU通过FB3050访问RAM可与FB3050共享一部分数据区。(1) SRAM特点:•宽电压选择范围:2.4V~5.5V;•低功率消耗:20MA最大操作电流,•高速存储时间:在3V时为-70NS~70NS;•芯片自动功率下降功能;•数据保持电压在1.5V以下;•有CE/、OE/,方便扩展;(2) FB3050引脚功能真值表如表4-6:表4-6 SRAM引脚功能真值表MODE WE/ CE/ OE/ I/O操作未选择 H 高输出状态无输出 H L H 高输出状态读 H L L 数据输出写 L L 数据输入(3) FB3050与SRAM 通讯电路RAM WS62256可与FB3050共享一部分数据区。实际电路如图4-8所示。 4-8 FB3050与SRAM 电路4.5.2 RS-485通信总线1 EIA(电子工业协会) RS-485串行总线标准在自动化领域,随着分布式控制系统的发展,迫切需要一种总线能适合远距离的数字通信。在RS-422标准的基础上,EIA研究出了一种支持多节点、远距离和接收高灵敏度的RS-485总线标准。RS-485标准采有用平衡式发送,差分式接收的数据收发器来驱动总线。接收器的输入灵敏度为200mV(即(V+)-(V-) >0. 2V,表示信号“0”;(V+)- (V-) <-0.2V,表示信号“1”)因为RS-485的远距离、多节点(32个)以及传输线成本
基于现场总线的温度测控系统设计低的特性,使得EIA RS-485成为工业应用中数据传输的首选标准。它具有以下特点:•RS-485的电气特性:逻辑“1”以两线间的电压差为+(2-6) V表示;逻辑“0”以两线间的电压差为-(2-6) V表示。接口信号电平比RS-232降低了,就不易损坏接口电路的芯片,且该电平与TTL电平兼容,可方便与TTL电路连接。•RS-485的传输距离最多可达1.2km,传输速度快可高达l0bit/s。•RS-485总线采用一对平衡差分信号传输信号,工作于半双工方式。同一对信号线上在同一时间内只允许一个驱动器工作。因RS-485接口具有良好的抗噪声干扰性,长的传输距离和多站能力等上述优点就使其成为首选的串行接口。RS-485接口组成的半双工网络,一般只需二根连线,所以RS-485接口均采用屏蔽双绞线传输。RS-485接口连接器采用DB-9的9芯插头座,与智能终端RS-485接口采用DB-9(孔)。当前自动控制系统中常用的网络,如现场总线CAN, Profibus, INTERBUS-S以及ARCNet的物理层都是基于RS-485的总线进行总结和研究。2 RS-485器件介绍在与上位机通讯电路中,采用通讯器件Maxim公司的Max485芯片,它能完成RS-485与TTL电平的双向的转换,Max485芯片引脚相应功能如表4-7所示。表4-7 Max485引脚功能B 反向接收器输入和反向驱动器输出A 同向接收器输入和同向驱动器输出RE 接收器输出使能端DE 驱动器输出使能端RO 接收器输出端------若A比B大200MV,RO为高,反之为低DI 驱动器输出端-----DI为低,则迫使输出为低,反之为高3 RS-485通讯电路RS-485总线将TTL电平转换为差分信号的双向转换,通过DB-9接头与上位机连接,实际电路如图4-9所示。 4-9 RS-485通讯电路4.6 MAU电路FB3050通信控制器发送和接收模块中,分别包含有曼切斯特编码和解码器,可以对发送和接收的数据进行曼切斯特编码和解码。根据标准物理层要求,所有从FB3050发送的数据都要通过MAU (Medium Attachment Unit)模拟信号接口向总线网络发送数据。MAU电路如图 4-10所示。缓冲器:由于从FB3050产生出的数字信号传输器不能直接为电路提供足够的驱动电流,因此必须通过缓冲器为发送器增加信号强度。总线驱动采用四通道三态门缓冲器74HC126来增加电流输出能力,74HC126的输入引脚接FB3050的PO_HPDU输出的信号,74HC126的使能端接FB3050的控制信号PO _TACT信号,电阻R15为200Ω,是限流电阻。 图4-10 MAU电路电压参考点设置:为了能使有足够的电流使参考电压不会受到现场噪声的影响,设计中只提供单级电源,所有信号都以VCC/2为参考电压。为获得稳定的VCC/2电压参考点,设计了电阻分压,加并联电容使输入电压更加稳定。参考点连接于运算放大器27M2同相输入端,反馈连接到反相输入端,这样可提供一个较低的输出阻抗来驱动所有参考点。接收波传输过滤器:总线模拟接口中接收信号用5V单电源运算放大器27M2来完成,滤波器为一个带通滤波器,调整电阻电容的参数,可调节通频值。此过滤器目的是滤除主机接收波中的噪声和干扰,并且保证相对平稳信号频带在10~40KHz之间,来保证准确对数据的重建和时钟定时信号的恢复。这个接收波传输过滤器也保证为FB3050提供无干扰方形波数字信号。传输的曼彻斯特编码在理想状态下应为31 .25KHz,本滤波电路的通频带保持在较宽的范围。低频滤波器通带截止频率根据线路特性来确定。高频滤波器通带截止频率应低于所有电源电路或附近的晶振所产生的开关噪声。比较器:而信号整形则是用一个带施密特(Schmidt)触发器的电压比较器完成的,其由电路中的R/C值决定回滞值。比较器输出一个整形后的数字信号给FB3050的PI_PHPDU引脚。限压器:在MAU电路中,加一对串联的二级管来保证总线上峰峰电压不要超过1.25V,无论是产生的输出值或收到的值都应该在这个限值内。隔离电路:电路中变压器选用开关变压器,用于电气隔离,变压器绕线比率为1:1。在FF总线端,一对串接的22uF电容用于隔直和限速,使有用信号输入变压器。接口处加一个250mA的保险丝,用来避免过度电流和大的失误对网卡造成损坏。如通讯线长度超过300m,需在总线两端接终端电阻,消除总线中产生的反射,阻值等于传输电缆的特性阻抗。74HC126四路三态缓冲器特点:•高速;•低功耗(25℃时最大电流为4UA);•输出能力强(可驱动15个LSTTL负载);•高输出电压范围(工作电压范围为2-6V);4.7 LCD显示电路在本次设计中,为了能显示正常的温度,此次采用LCD1602液晶显示器,它的一些参数和和操作时序如下:1 技术参数见表4-8所示:表4-8 技术参数读状态:输入:RS=L,RW=H,E=H 输出D0 D7=状态字写指令:输入:RS=L,RW=L,D0 D7=状态字 E=高脉冲 输出:无读数据:输入:RS=H,RW=H,E=H 输出:D0 D7=数据写数据:输入:RS=H,RW=L,D0 D7=数据 E=高脉冲 输出:无2 显示模式设置参数见表4-9所示:表4-9 显示模式参数指令码 功能0 0 1 1 1 0 0 0 设置16*2显示,5*7点阵,8位数据接口3 指令码对应功能见表4-10所示:表4-10 LCD指令指令码 功能01H 显示清屏:1.数据指针清零 2.所有显示清零02H 显示回车:数据指针清零06H 显示光标移动位置08H 显示关闭0CH 显示开及光标位置38H 显示模式设置4 LCD显示电路通过液晶显示器,将传感器采集的温度送到此显示器上,方便用户查看温室温度。实际电路如图4-11所示。
基于现场总线的温度测控系统整体电路在此次设计中,首先通过DS1820数字温度传感器从蔬菜培植温室中采集温度,因为此传感器能直接将温度在内部转换数字信号送往单片机AT89S52,不再另加A/D转换器件。在AT89S52外围中,有温度输入、显示,智能报警,加热和冷却控制外围电路,通过这些外围电路,给温室提供一个良好的温度环境。在AT89S52接收到温度信号后,与第三代现场总线通讯通讯控制器FB3050进行通讯,采用UART协议完成数据传输。防止CPU与FB3050产生竞争问题,将FB3050串接一个存储芯片WS62256,CPU可通过FB3050访问RAM可与FB3050共享一部分数据区,FB3050也可自己访问存储芯片,不需CPU干预。由FB3050产生的FF信号很弱,通过MAU电路将信号放大,电气隔离,滤波等。因为在本次设计传输距离较远,设计中采用RS-485协议完成与上位机通讯。FB3050可以将内部数据从MAU电路发送出去,通过双绞线完成与上位机进行实施通讯。或者将外部数据通过MAU电路接收到FB3050进行数据打包和解包,通过RS-485完成与上位机通信。此部分用于系统功能扩展。整机电路图如4-12所示。 第5章 系统软件设计在此次设计中,系统功能通过软、硬件电路结合来实现,如温度采集程序,控制程序,以及用LCD显示温度等,软件编程,采用强大数据处理能力的单片机C语言,首先列出各个模块程序流程图,然后再以此流程图来编写程序,采用模块化设计,分别实现各个模块功能。5.1软件流程5.1.1键盘扫描软件流程在此次设计中,用行列式键盘来输入用户要求的理想温度范围值,其软件流程如图5-1所示。 图5-1 键盘扫描软件流程
5.1.2 DS1820数据采集软件流程DS1820数字温度传感器用来采集温度,转换为数字信号传输给单片机进行控制,软件流程如图5-2所示。 图5-2 DS1820数据采集软件流程5.1.3温度控制和蜂鸣器软件流程通过温度控制来实现温度加热和冷却,提供一个良好的温室环境,然后通过蜂鸣器来判断温度的偏差,软件流程分别如图5-3、5-4所示。 图5-3 温度控制软流程 图5-4 报警电路软件流程5.1.4液晶控制软件流程在设计中,通过液晶显示模块进行温度显示,液晶温度显示软件流程如图5-5所示。 图5-5 温度显示软件流程5.2 程序编译[8-9]通过前面各功能模块描述,分别写出各单元模块程序。采用模块化设计,总程序可参见附录所示。通过Keil uVision2软件编译、调试,在调试好程序后,生成一个Intel HEX文件,将此文件下载到EPROM或编程器中,实现系统功能。首先运行Keil uVision2软件,创建一个项目文件载入项目。然后,从Project中Select Device Target选项为项目选择单片机P89V51RD2,如图5-6所示。 图5-6 单片机选择完成单片机选择后,为该项目创建一个新的源文件,输入程序的源代码,因此次采用单片机C语言模块化编程,因此用后缀*.C保存。经编译无误后,注
基于现场总线的温度测控系统设计意必须在Build处理前将Options for Target-output中使能Creat HEX File,才可生成Intel HEX格式进行下载,同时方便后面电路仿真时单片机AT89S52使用程序生成的HEX文件,完成系统功能。流程如图5-7,5-8所示。 图5-7为组添加文件 图5-8 程序编译结果5.3电路仿真通过上述电路设计和程序的编译,基本实现设计要求。为了证明DS1820从单片机输出的数字信号,能正确的送往液晶显示器显示当前温室温度值,以及能正确的从DB-9串口把温度送往上位机显示和存取温度,因此通过PROTEUS电路仿真软件,模拟电路工作原理。PROTEUS主要完成大型设计的部分仿真。PROTEUS 组合了高级原理布图、混合模式SPICE 仿真,PCB设计以及自动布线来实现一个完整的电子设计系统。针对主要单片机程序的电路仿真软件,目前支持MCS51以及ARM7等芯片的仿真以及对Keil编译软件的联接。用户可以实时采用诸如LED/LCD、键盘、RS232 终端等动态外设模型来对设计进行交互仿真。首先打开PROTEUS原理图编辑窗口,绘制本次设计部分仿真电路。在调用软件时,可通过Library工具中选择 Pick Device/Symbol—选项,从库中调用元件,如DS1820,单片机AT89S52等电路元件。当没有现有的元件时,可通过两种方法添加元件,一是从PROTEUS VSM SDK开发仿真模型并制作元件,另一个是从已有的元件基础上改造元件,画出整机电路如图5-9所示。 图5-9 仿真电路原理图LCD电源连线不需考虑,采用默认连接。在画好原理图后,将添加仿真文件,在出现如图5-10中Program Files选项时,找到Keil调试好的HEX文件,在Clock Frequency中选择时钟频率为12MHz。 图5-10 添加仿真文件在做好上面步骤后,可以进行仿真了, DS1820数字温度传感器可以设置温度下、上限,通过单片机读取温度值,送入LCD进行温度显示,如图5-11所示。 图 5-11 LCD温度显示
第6章 结束语本次设计的是一个智能温度测控系统,采用现场总线实现,因为现场总线在自动化仪表和控制系统方面具有很多优点。目前国内的现场智能仪表中,可连接于FF总线系统的产品还没有得到推广,而国外进口产品价格较高,且维修不方便。因此,设计一种能实际应用的、可以和现有常规产品连接的系统是很有必要的。本文选用SMAR公司的FB3050通讯芯片,主CPU选用51系列的P89V51RD2,这样设计可降低成本,并且实现了较好的通讯功能。为满足基金会现场总线数据链路层和物理层的要求,进行了一些基本硬件框架的设计,为软件提供一个运行环境。系统以现场温度作为被控制信号进行测试,实现最大温度失调<5℃,可满足温度控制要求,基本实现了设计的功能,为实际应用建立了良好的基础。控制方面通过软、硬电路相结合,系统对现场温度的判断是否实现进行加热和冷却控制,在电路中通过脉冲的改变来控制光耦的通断来控制串接在交流电源输入端的继电器,从而实现控制。用户可以通过键盘随时更改系统温度监控范围,实现系统功能,通过LCD显示温室温度,方便观察。设计方面基本实现设计的要求。在设计中,对于FF总线的各层协议,有大致的了解,能够简单运用。对于温度数据采集,显示,控制方面设计还比较成功,只是FB3050通讯部分还欠佳,所编写的程序也应进一步优化。由于能力及时间有限,整个系统的功能还需要继续完善。论文难免存在不足之处,望批评指正。致谢本人在这里向所有在生活和学习中关心过我、指导过我、帮助过我的老师和同学致以最诚挚的感谢!首先我要感谢我的导师罗*老师,感谢罗老师在百忙之中抽出时间为我指导、审阅和修改论文,并且耐心地解答我遇到的问题,指出我的研究方法的不足,严格地督促我的课题进展。其次,我要感谢我的同学在完成此论文中给予我的帮助。最后,我要深深感谢我的家人,他们一直给我最无私的关心,爱护和帮助,才能使我顺利完成学业。
基于现场总线的温度测控系统设计参考文献(主要及公开发表的文献)[1]王慧锋,何衍庆. 现场总线控制系统的原理与应用[M]. 北京:化学工业出版社,2005,03.[2]阳宪慧. 现场总线技术及其应用[M]. 北京:清华大学出版社,2001,03.[3]李正军. 现场总线及其应用技术[M]. 北京:机械工业出版社,2005, 01.[4] 刘媛媛等.FF现场总线技术中基本类设备的最小实现[J]. 仪器仪表学报,2003,8:53~56.[5]朱蕴璞,孔德仁,王芳. 传感器原理及应用[M]. 北京:国防工业出版社,2005,03.[6]谢嘉奎,宣月清,冯军. 电子线路[M]. 北京:高等教育出版社,2004,02.[7]求是科技. 单片机典型模块设计实例导航[M]. 北京:人民邮电出版社,2004,05.[8]谭浩强. C语言程序设计(第二版)[M]. 北京:清华大学出版社,1999,12.[9]马忠梅等. 单片机C语言Windows环境编程宝典[M]. 北京:航空航天大学出版社,2003,06.[10]赵晶. Protel 99高级应用[M]. 北京:人民邮电出版社,2000,11.[11]高鹏,安涛,蔻怀成. Protel 99 入门与提高[M]. 北京:人民邮电出版社,2004,04.[12]J Berge. Fieldbuses or Process Control. Engineering,Operation, and Maintenance[J]. ISA,2002,0.[13]Fisher-Rosemount Fieldbus Installations in a Delta V Automation System[M].D00003X102,2002,03.[14]Saward P R,FINCO takes FISCO into hazardous areas[M]. Control Engineering,Nov.,2003,02.[15]朱国军,唐新伟,李肇. 一种带热滞回功能的过热保护电路[J]. 北京:中国期刊方阵2006,01:62~96.
基于现场总线的温度测控系统设计系统程序
#include
#include #include #include #include #define uchar unsigned char#define uint unsigned int
sbit LCD_RS = P0^2; //LCD数据/指令通道选择sbit LCD_RW = P0^1; //LCD读写选择信号sbit LCD_EN = P0^0; //LCD势使能sbit P0_5=P0^5; //蜂鸣器引脚sbit P0_6=P0^6; //冷却电路输入端sbit P0_7=P0^7; //加热电路输入端sbit P3_5=P3^5; //传感器数据接入脚uchar code seg7code[]={0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; //16位键码码uchar TEMP; // 温度值的变量;uchar flag1; // 结果为负和正的标志位。 uchar k; //K为按键键值段码顺序uchar M; //键盘扫描值uchar E; //E为温度范围下限侄uchar F; //F为温度范围上限值
void delay (uint count) //延时程序{ uint i; while (count) { i =200; while (i>0) i--; count--; }}
Getch ( ) //键盘扫描程序{ uchar X,Y,Z; P2=0xff; P2=0x0f; //先对P2置数 行扫描 if(P2!=0x0f) //判断是否有键按下 {delay(25); //延时,软件去干扰 延时10MS if(P2!=0x0f) //确认按键按下X = P2; { X=P2; //保存行扫描时有键按下时状态 P2=0xf0; //列扫描 Y=P2; //保存列扫描时有键按下时状态 Z=X|Y; //取出键值 switch ( Z ) //判断键值(那一个键按下) { case 0xee: k=0; break; //对键值赋值 case 0xde: k=1; break; case 0xbe: k=2; break; case 0x7e: k=3; break; case 0xed: k=4; break; case 0xdd: k=5; break; case 0xbd: k=6; break; case 0x7d: k=7; break; case 0xeb: k=8; break; case 0xdb: k=9; break; case 0xbb: k=10;break; case 0x7b: k=11;break; case 0xe7: k=12;break; case 0xd7: k=13;break; case 0xb7: k=14;break; case 0x77: k=15;break; } M=seg7code[k]; return(M); } }}
void tmreset (void) // 发送复位和初始化{ uint i; P3_5 = 0; i = 103;lwfree.cn }
bit tmpread (void) // 读取数据的一位{ uint i; bit dat; P3_5 = 0; i++; P3_5 = 1; i++; i++; //延时 dat = P3_5; i = 8; while (i>0) i--; // 延时 return (dat);}
uchar tmpread2 (void) //读一个字节{ uchar i,j,dat; dat = 0; for (i=1;i<=8;i++) {
基于现场总线的温度测控系统设计 j = tmpread (); dat = (j << 7) | (dat >> 1); } return (dat);}
void tmpwrite (unsigned char dat) //写一个字节{ uint i; uchar j; bit testb; for (j=1;j<=8;j++) { testb = dat & 0x01; dat = dat >> 1; if (testb) { P3_5 = 0; // 写0 i++; i++; P3_5 = 1; i=8; while (i>0) i--; } else { P3_5 = 0; // 写0 i=8; while (i>0) i--; P3_5 = 1; i++; i++; } }}
void tmpchange(void) // ds1820 开始转换{ tmreset (); // 复位 //tmpre (); // 等待存在脉冲 delay (1); // 延时 tmpwrite (0xcc); // 跳过序列号命令 tmpwrite (0x44); // 发转换命令 44H, }
void tmp (void) // 读取温度{ uchar a,b; tmreset (); // 复位 delay (1); // 延时 tmpwrite (0xcc); // 跳过序列号命令 tmpwrite (0xbe); // 发送读取命令 a=tmpread2 (); // 读取低位温度 b=tmpread2 (); //读取高位温度 flag1=b; //若b为1则为负温 if(flag1) { TEMP=~a+1; //如果为负温则去除其补码 } else { TEMP=a; }}
rom() // 读取器件序列号子程序{ tmreset (); //复位 delay (1); //延时 tmpwrite(0x33); //发送读序列号子程序}
fengmingqi() //温度判断函数{ P0_5=0; //蜂鸣器正常不鸣叫 do{if((TEMP<=(E-0X0A))&&(TEMP>=(F|0X0A))&&(P3_5==0))// X-0X0AH为所要的温度减5度B|0X0AH为所要的温度加5度 P0_5=1; //蜂鸣器异常 }while(1);}
wendushuru() //键盘设置理想温度{uchar KEY1,KEY2,KEY3,i=1; P2=0xff; KEY1=Getch(); i++; KEY2=Getch(); i++; KEY3=Getch(); i++; if((i=2)&&(KEY2=='*')) //*号表示输入温度下限值 E=KEY1; if((k=3)&&(KEY3=='*')) E=M*KEY1+KEY2; i=1; if((i=2)&&(KEY2=='#')) //#号表示输入温度上限值 F=KEY1; if((k=3)&&(KEY3=='#')) F=M*KEY1+KEY2; }
temp_control(){ P0_6=0; //接风机 P0_7=0; // 接加热炉 Getch(); if(TEMPE) P0_6=1; //当温度高于温度上限时,进行降温}
bit lcd_busy() //检查LCD 忙状态//lcd_busy 为1 时,忙,等待。lcd-busy 为0 时,闲,可写指令与数据{bit result;LCD_RS = 0;LCD_RW = 1;LCD_EN = 1;_nop_();_nop_();_nop_();_nop_();result = (bit)(P0&0x80);LCD_EN = 0;return result;}
void lcd_wcmd(uchar cmd) //写指令数据到LCD//RS=L,RW=L,E=高脉冲,D0-D7=指令码。{while(lcd_busy());LCD_RS = 0;LCD_RW = 0;LCD_EN = 0;_nop_();_nop_();P0 = cmd;_nop_();_nop_();_nop_();_nop_();LCD_EN = 1;_nop_();_nop_();_nop_();_nop_();LCD_EN = 0;
基于现场总线的温度测控系统设计|免费论文void lcd_wdat(uchar dat) //写显示数据到LCD//RS=H,RW=L,E=高脉冲,D0-D7=数据。{while(lcd_busy());LCD_RS = 1;LCD_RW = 0;LCD_EN = 0;P1 = dat;_nop_();_nop_();_nop_();_nop_();LCD_EN = 1;_nop_();_nop_();_nop_();_nop_();LCD_EN = 0;}
void lcd_pos(uchar pos) // 设定显示位置
{lcd_wcmd(pos|0x80); //数据指针=80+地址变量}
void lcd_init() //LCD 初始化设定{delay(15); //等待LCD 电源稳定lcd_wcmd(0x38); //16*2 显示,5*7点阵,8 位数据delay(5);lcd_wcmd(0x38);delay(5);lcd_wcmd(0x38);delay(5);lcd_wcmd(0x0c); //显示开,关光标delay(5);lcd_wcmd(0x06); //移动光标delay(5);lcd_wcmd(0x01); //清除LCD 的显示内容delay(5);}
void lcd_clr() // 清屏子程序{lcd_wcmd(0x01); //清除LCD 的显示内容delay(5);}
void flash() // 闪动子程序{delay(600); //控制停留时间lcd_wcmd(0x08); //关闭显示delay(200); //延时lcd_wcmd(0x0c); //开显示delay(200);lcd_wcmd(0x08); //关闭显示delay(200); //延时lcd_wcmd(0x0c); //开显示delay(200);}
void intsvr0(void) interrupt 0 using 1 //温度输入中断级优先{wendushuru();}
main() //主程序{ uchar i; EA=1; PT0=1;ET1=1;IT0=1;IT1=1;EX0=1;EX1=1;TMOD=0X20; //波特率为9600的定时器1TL1=-5000/256; //定时器1的初值TH1=-5000%256;SCON=0xe8; //设置串行口,可多机通信PCON=0X00;TR1=1;do{ rom(); tmpchange(); // 开始温度转换 delay(200); // 读取延时 tmp(); //读取温度 wendushuru(); temp_control(); delay(10); lcd_init(); //初始化LCD
while(1) {lcd_clr(); lcd_pos(0x10); //设置显示位置为第一行第17 列 do { //显示字符" " lcd_wdat(TEMP); }while(1);
for(i=0;i<16;i++) //向左移动16 格 { lcd_wcmd(0x18); //字符同时左移一格 delay(100); //控制移动时间 } flash(); //闪动二次 } }while(1); }