通信工程专业毕业论文--基于89C52RC的MODBUS通信程序设计.doc_第1页
通信工程专业毕业论文--基于89C52RC的MODBUS通信程序设计.doc_第2页
通信工程专业毕业论文--基于89C52RC的MODBUS通信程序设计.doc_第3页
通信工程专业毕业论文--基于89C52RC的MODBUS通信程序设计.doc_第4页
通信工程专业毕业论文--基于89C52RC的MODBUS通信程序设计.doc_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

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

文档简介

通信工程专业毕业论文-基于89C52RC的MODBUS通信程序设计 摘 要单片机具有体积小,功能强,成本低,应用面广等优点,目前的温度控制系统多采用单片机进行系统设计。基于89C52RC的MODBUS通信程序设计就是针对于温度控制系统进行的设计。在这里主要使用AT89C52芯片和AD590温度传感器,实现温度的检测和显示功能,再通过MODBUS通信协议实现单片机与PC的连接程序设计,通过PC对被控现场的温度实现调节和控制。在这里有两方面设计,硬件电路设计和软件程序设计。硬件电路设计包括人机互换模块包括按键模块和数码显示模块。按键模块用来输入设定的温度,数码管显示模块用来显示当前测得的温度。温度传感器模块包括A/D转换模块和传感器模块。加热控制模块用来给水加热。上位机通信模块通过串口和PC建立通信渠道。软件设计包括温度检测模块,加热器控制模块,按键模块,数码管显示模块和串口驱动模块。温度检测模块通过A/D转换器将温度值转换成数字值存放,加热器控制模块控制加热器开关的通断,按键模块用于设定温度值;数码管模块用于显示检测到的温度值和设定的温度值,串口驱动模块用于从上位机收发数据。关键词:AT89C52 ;MODBUS通信协议;温度控制ABSTRACTThe MCU has the advantages of small size,low cost, wide range of applications; temperature control systems use a single-chip system design. 89C52RC MODBUS communication program is designed for the temperature control system. Mainly use AT89C52 chip AD590 temperature sensor, temperature detection and display functions and programming of MCU and PC connection, and then through the MODBUS protocol to regulate and control the PC charged with the temperature of the scene. There are two aspects of design, hardware circuit design and software programming. The hardware circuit design, including the man-machine interchangeable modules including key module and digital display module. The key module is used to enter the set temperature; the digital display module is used to display the current measured temperature. The temperature sensor module consists of the A / D converter module and sensor module. Heating control module is used for water heating. The host computer communication module through the serial port and PC to establish communication channels.The software design includes temperature detecting module, the heater control module, keyboard module, digital tube display module and serial port driver module. Temperature detection module temperature values by the A / D converter to convert the numeric value stored, the heater control module controls the heater switches off, the button module is used to set the temperature value; the digital control module is used to display the detected temperature value and the temperature set value, the serial port driver module used to send and receive data from the host computer.Key words:AT89C52 ,Modbus protocol ,Temperature control目 录前 言1第1章 绪论2第1.1节 选题背景2第1.2节 选题简介2第2章 总体设计的技术分析3第2.1节 AT89C52单片机3 单片机的发展3 芯片的选择4 AT89C52功能简介5第2.2节AD590温度传感器9第2.3节 AD0804模数转换原理10第2.4节 MODBUS协议11 通讯传送方式12 通讯规约12 Modbus帧描述13第2.4节RS232简介14第3章 硬件设计16第3.1节 系统结构16第3.2节 单片机AT89C52基础电路16 复位操作和复位电路16 振荡电路和时钟17第33节 信号的采样及处理18第3.4节 人机交互与串口通信单元设计20 数码管显示电路20 加热器控制电路20 串口通信电路21第4章 软件设计23第4.1节 设计思路、主程序流程图23第4.2节 数码管显示程序24第4.3节 按键程序24第4.4节 加热器控制程序25第4.5节 串口收发程序26第4.6节 MODBUS协议帧格式程序26 MODBUS协议帧格式组装26 CRC校验27 MODBUS数据帧的拆包29结 论31参考文献32致 谢35附 录136附 录237前 言温度是工业对象中主要的被控参数之一,它目前应用于很多方面,例如水温的控制,锅炉的温度控制,大棚的温度控制等,在这里是对地铁消防管道的的温度控制。从中就可以看出温度对于当今世代的重要性。温度过高或过低会影响工业过程中的很多方面,它会影响工具的使用,影响器具的承受能力等。对象温度往往要求严格控制,温度控制器的引入,对提高控制精度意义重大,并已经在诸多工程设施方面得到了广泛的应用。目前多采用单片机设计温度控制系统,单片机具有体积小,功能强,成本低,应用面广等优点,它最早是被用在工业控制领域。早期的单片机都是8位或4位的。其中最成功的是INTEL的8031,因为简单可靠而性能不错获得了很大的好评。当代单片机系统已经不再只在裸机环境下开发和使用,大量专用的嵌入式操作系统被广泛应用在全系列的单片机上。而在作为掌上电脑和手机核心处理的高端单片机甚至可以直接使用专用的Windows和Linux操作系统。温度控制系统是通过采用单片机控制,使温度能够在设定值及变化范围内变化。采用单片机来实现温度控制不仅具有控制方便、简单、灵活等优点,而且可以大幅度提高被控温度的技术指标。MODBUS协议的应用为实时性和可靠性要求比较高的系统提供了一种很好的通讯方案,它最大限度地节约了成本、降低开发风险、提高系统的兼容性和可移植性。采用MODBUS协议实现了上、下位机之间的通信,很好地满足了工业现场的要求,更好的适应了现代企业需要。在这里有两方面设计,硬件电路设计和软件程序设计。硬件电路设计包括人机互换模块包括按键模块和数码显示模块。按键模块用来输入设定的温度,数码管显示模块用来显示当前测得的温度。温度传感器模块包括A/D转换模块和传感器模块。加热控制模块用来给水加热。上位机通信模块通过串口和PC建立通信渠道。软件设计包括温度检测模块,加热器控制模块,按键模块,数码管显示模块和串口驱动模块。温度检测模块通过A/D转换器将温度值转换成数字值存放,加热器控制模块控制加热器开关的通断,按键模块用于设定温度值;数码管模块用于显示检测到的温度值和设定的温度值,串口驱动模块用于从上位机收发数据。第1章 绪论第1.1节 选题背景温度是工业对象中主要的被控参数之一1,它目前应用于很多方面,在这里是对地铁消防管道的的温度控制,对象温度往往要求严格控制2,温度控制器的引入,对提高控制精度意义重大,并已经在诸多工程设施方面得到了广泛的应用。本文是基于89C52RC的MODBUS通信程序的温度控制器的硬件电路和软件程序的设计。由于通信方式多样化,更需要有通信协议来进行规范3。MODBUS 协议是由Modicon 公司开发且已是工业领域全球最流行的协议4-5。此协议支持传统的RS-232、RS-422、RS-485AT89C52开发的系统性能可靠、成本较低、软件设计灵活简单、硬件接口功能丰富,具有扩展性好、通用性强等优点6。 本文是基于89C52RC的MODBUS通信程序设计,利用单片机89C52和MODBUS通信程序设计温度控制器,使温度在工业中能够被跟好的控制。第1.2节 选题简介在该温度控制系统中,单片机作为核心部件进行检测控制,增强了设计的通用性,适时性。地铁消防管道温度控制系统使用AT89C52控制器和AD590温度传感器,实现温度的检测功能和显示功能,然后能够通过上位机(PC)是指上下线温度,并且能够对被控制现场的温度实现智能的调节,来保持被控制现场的温度的基本恒定。序进行说明,包括控制算法,偏差计算等。控制是否升温或降温。第2章 总体设计的技术分析第2.1节 AT89C52单片机 单片机的发展随着大规模集成电路的出现及其发展,将计算机的CPU、RAM、ROM、定时/计数器和多种I/O接口集成在一片芯片上,形成芯片级的计算机,因此单片机早期的含义称为单片微型计算机,直译为单片机 。 单片机7现在可以说是百花齐放,百家争鸣的时期,世界上各大芯片制造公司都推出了自己的单片机,从8位、16位到32位,数不胜数,应有尽有,有与主流C51系列兼容的,也有不兼容的,但它们各具特色,互成互补,为单片机的应用提供了广阔的天地。纵观单片机的发展过程,可以预示单片机的发展趋势,大致有: 1 微型单片化现在常规的单片机普遍都是将中央处理器(CPU)8、随机存取数据存储(RAM)、只读程序存储器(ROM)、并行和串行通信接口,中断系统、定时电路、时钟电路集成在一块单一的芯片上,增强型的单片机集成了如A/D转换器、PMW(脉宽调制电路)、WDT(看门狗)、有些单片机将LCD(液晶)驱动电路都集成在单一的芯片上,这样单片机包含的单元电路就更多,功能就越强大。甚至单片机厂商还可以根据用户的要求量身定做,制造出具有自己特色的单片机芯片。此外,现在的产品普遍要求体积小、重量轻,这就要求单片机除了功能强和功耗低外,还要求其体积要小。现在的许多单片机都具有多种封装形式,其中SMD(表面封装)越来越受欢迎,使得由单片机构成的系统正朝微型化方向发展。 2 低功耗CMOS化MCS-51系列9的8031推出时的功耗达630mW,而现在的单片机普遍都在100mW左右,随着对单片机功耗要求越来越低,现在的各个单片机制造商基本都采用了CMOS(互补金属氧化物半导体工艺)。像80C51就采用了HMOS(即高密度金属氧化物半导体工艺)和CHMOS(互补高密度金属氧化物半导体工艺)。CMOS虽然功耗低,但由于其物理特征决定其工作速度不够高,而CHMOS则具备了高速和低功耗的特点,这些特征,更适合于要求低功耗像电池供电的应用场合。所以这种工艺将是今后一段时期单片机发展的主要途径。 3 主流与多品种共存现在虽然单片机的品种繁多,各具特色,但仍以80C51为核心的单片机占主流,兼容其结构和指令系统的有PHILIPS公司的产品,ATMEL公司10的产品和中国台湾的Win bond系列单片机。所以80C51占据了半壁江山。而Microchip公司的PIC精简指令集合(RISC)也有着强劲的发展势头,中国台湾的HOLTEX公司近年的单片机产量与日俱增,与其底价质优的优势,占据一定的市场份额。此外还有MOTOROLA公司的产品,日本几大公司的专用单片机。在一定的时期内,这种情形将得以延续,将不存在某个单片机一统天下的垄断局面,走的是依存互补、相辅相成、共同发展的道路。九十年代以后,单片机在结构上采用双CPU或内部流水线,CPU位数有8位、16位、32位,时钟频率高达20MHZ,片内带有PWM输出、监视定时器WDT、可编程计数器阵列PCA、DMA传输、调制解调器等。芯片向高度集成化、低功耗方向的发展,使得单片机在大量数据的实时处理、高级通信系统、数字信号处理、复杂工业过程控制、高级机器人以及局域网等方面得到大量应用。这类单片机有NEC公司的MPD7800,MITSUBISHI公司的M337700,REVKWELL公司的R6500。 芯片的选择温度控制系统是通过采用单片机控制,使温度能够在设定值及变化范围内变化。采用单片机来实现温度控制不仅具有控制方便、简单、灵活等优点,而且可以大幅度提高被控温度的技术指标。根据学校毕业设计要求本系统选用ATMEL公司的AT89系列单片机11。AT89系列有AT89C51,AT89C52等。89C5212与89C51的区别是内存大小不同,C51的是4K,C52是8K,并且根据节点所需实现功能的复杂程度和技术需要,在这个系统中采用89C5213芯片。AT89C52 单片机是ATMEL公司的51系列单片机。AT89C52 单片机是一款高性能CMOS 8 位单片机,片内含8KB 可反复擦写的Flash 只读程序存储器和256B随机存取数据存储器(RAM),器件采用ATMEL 公司的高密度、非易失性存储技术生产,兼容标准MCS51 指令系统, 片内置通用8 位中央处理器和Flash 存储单元,AT89C52 单片机可提供较复杂系统控制应用场合。系统使用AT89C52控制器和AD590温度传感器,实现温度的检测和显示功能,能够通过上位机设置上下限温度,并且能够对被控现场的温度实现智能调节,以保持被控现场的温度基本恒定。 AT89C52功能简介AT89C52是51系列的一个型号,它是ATMEL公司生产的。AT89C52是一个低电压,高性能CMOS 8位单片机,片内含8k bytes的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,功能强大的AT89C52单片机可为您提供许多较复杂系统控制应用场合。AT89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,AT89C52可以按照常规方法进行编程,但不可以在线编程 S系列的才支持在线编程 。其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。AT89C52兼容MCS51指令系统8k可反复擦写 1000次)Flash ROM 32个双向I/O口 256x8bit内部RAM 3个16位可编程定时/计数器中断 时钟频率0-24MHz 2个串行中断可编程UART串行通道 2个外部中断源共6个中断源 2个读写中断口线 3级加密位 低功耗空闲和掉电模式 软件设置睡眠和唤醒功能 (或GND)(20脚):接地端。 (40脚):接电源。正常操作及对Flash ROM 编程和验证时接+5V电源。 2 外接晶体引脚XTAL1和XTAL2XTAL1(19脚):接外部晶体和微调电容的一端。在AT89C52单片机内,它是振荡电路反向放大器的输入端及内部时钟发生器的输入端,振荡电路的频率就是晶体的固有频率。当采用外部振荡器时,此引脚输入外部时钟脉冲。XTAL2(18脚):接外部晶体和微调电容的另一端。在AT89C52单片机片内,它是振荡电路反相放大器的输出端。在采用外部振荡器时,此引脚应悬浮。 3 控制信号引脚RST、ALE/、和/RST(9脚):复位信号输入端,高电平有效。当振荡器工作时,在此引脚上出现两个机器周期以上的高电平,就可以使单片机复位。ALE/(30脚):地址锁存允许信号。当AT89C52单片机上电正常工作后,ALE端不断向外输出正脉冲信号,此信号频率为振荡器频率的1/6。AT89C52单片机在并行扩展外部存储器(包括并行扩展I/O接口)时,P0口用于分时传送低8位地址和数据信号。当ALE信号有效时,P0口传送的是低8位地址信号;ALE信号无效时,P0口传送的是8位数据信号。在ALE信号的下降沿,锁定P0口传送的低8位地址信号,这样可以实现低8位地址与数据的分离。ALE信号可以用作对外输出的时钟或定时信号。需注意的是每当访问外部数据存储器时,将跳过一个ALE脉冲。ALE端可以驱动(吸收或流出电流)8个TTL门电路。在对AT89C52单片机片内8KB Flash ROM编程(固化)时,此引脚用于输入编程脉冲。(29脚):外部程序存储器的读选通信号。当AT89C52单片机由外部程序存储器取指令(或常数)时,每个机器周期内两次有效输出。当访问外部数据存储器时,这两次有效的信号将不出现,端同样可以驱动8个TTL们电路。/(31脚):内部/外部ROM选择端。当端接高电平时,CPU访问并执行内部程序存储器的指令;但当PC(程序计数器)值超过8KB(1FFFH)时,将自动转去执行外部程序存储器中的程序。当端接低电平时,CPU只访问并执行外部程序存储器中的指令,而不管是否有内部程序存储器。需要注意的是,如果保密位LB1被编程,复位时在内部会锁存端的状态。在对AT89C52单片机片内Flash ROM编程(固化)时,此引脚用于实施编程电源。高电压编程时,为+12V,低电压编程时,为+5V。 4 输入和输出引脚P0口、P1口、P2口、P3口P0 口:P0 口是一组8 位漏极开路型双向I/O 口, 也即地址/数据总线复用口。作为输出口用时,每位能吸收电流的方式驱动8 个TTL逻辑门电路,对端口P0 写“1”时,可作为高阻抗输入端用。在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8 位)和数据总线复用,在访问期间激活内部上拉电阻。在Flash 编程时,P0 口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。P1 口:P1 是一个带内部上拉电阻的8 位双向I/O 口, P1 的输出缓冲级可驱动(吸收或输出电流)4 个TTL 逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流 IIL 。与AT89C51 不同之处是,P1.0 和P1.1 还可分别作为定时/计数器2 的外部计数输入(P1.0/T2)和输入(P1.1/T2EX),P2 口:P2 是一个带有内部上拉电阻的8 位双向I/O 口,P2 的输出缓冲级可驱动(吸收或输出电流)4 个TTL 逻辑门电路。对端口P2 写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流 IIL 。在访问外部程序存储器或16 位地址的外部数据存储器(例如执行MOVX DPTR 指令)时,P2 口送出高8 位地址数据。在访问8 位地址的外部数据存储器(如执行MOVX RI 指令)时,P2 口输出P2 锁存器的内容。Flash 编程或校验时,P2亦接收高位地址和一些控制信号。P3 口:P3 口是一组带有内部上拉电阻的8 位双向I/O 口。P3 口输出缓冲级可驱动(吸收或输出电流)4 个TTL 逻辑门电路。对P3 口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口。此时,被外部拉低的P3 口将用上拉电阻输出电流(IIL)。P3 口除了作为一般的I/O 口线外,更重要的用途是它的第二功能。此外,P3 口还接收一些用于Flash 闪速存储器编程和程序校验的控制信号。AT89C52 20共有6 个中断向量:两个外中断(INT0 和INT1),3 个定时器中断(定时器0、1、2)和串行口中断。所有这些中断源如图9 所示。这些中断源可通过分别设置专用寄存器IE 的置位或清0 来控制每一个中断的允许或禁止。IE 也有一个总禁止位EA,它能控制所有中断的允许或禁止。注意表5 中的IE.6 为保留位,在AT89C51 中IE.5 也是保留位。程序员不应将“1”写入这些位,它们是将来AT89 系列产品作为扩展用的。定时器2 的中断是由T2CON 中的TF2 和EXF2 逻辑或产生的,当转向中断服务程序时,这些标志位不能被硬件清除,事实上,服务程序需确定是TF2 或EXF2 产生中断,而由软件清除中断标志位。定时器0 和定时器1 的标志位TF0 和TF1 在定时器溢出那个机器周期的S5P2 状态置位,而会在下一个机器周期才查询到该中断标志。然而,定时器2 的标志位TF2 在定时器溢出的那个机器周期的S2P2 状态置位,并在同一个机器周期内查询到该标志。AT89C52内部结构图如下图1?1所示。图1?1 AT89C52内部结构图第2.2节AD590温度传感器AD590是美国模拟器件公司生产的单片集成两端感温电流源。 1 主要特性流过器件的电流(mA)等于器件所处环境的热力学温度(开尔文)度数,即: A/K 2?1 式中: 流过器件(AD590)的电流,单位为mA;T热力学温度,单位为K。 AD590的测温范围为-55+150。 AD590的电源电压范围为4V30V。电源电压可在4V6V范围变化,电流 变化1mA,相当于温度变化1K。AD590可以承受44V正向电压和20V反向电压,因而器件反接也不会被损坏。 输出电阻为710MW。 精度高。AD590共有I、J、K、L、M五档,其中M档精度最高,在-55+150AD590的引脚共有3个,查各种资料里,只用了两个引脚 即+ - 第三个脚可以不用,是接外壳做屏蔽用的测量温度是把整个器件放到需要测温度的地方。 AD590的输出电流值说明如下: 其输出电流是以绝对温度零度(-273)为基准,每增加1,它会增加1A输出电流,因此在室温25时,其输出电流Iout (273+25) 298A。 AD590注意事项Vo的值为Io乘上10K,以室温25而言,输出值为10K298A 2.98V测量Vo时,不可分出任何电流,否则测量值会不准。?2所示图2?2 AD0804管脚图第2.4节 MODBUS协议MODBUS是OSI模型第7层上的应用层报文传输协议,它在连接至不同类型总线或网络的设备之间提供客户机/服务器通信。自从1979年21出现工业串行链路的事实标准以来,MODBUS使成千上万的自动化设备能够通信。目前,继续增加对简单而雅观的MODBUS22结构支持。互联网组织能够使TCP/IP栈上的保留系统端502 访问MODBUS。MODBUS 是一个请求/应答协议23,并且提供功能码规定的服务。MODBUS 功能码是MODBUS请求/应答PDU 的元素。这里描述MODBUS 事务处理框架内使用的功能码。 通讯传送方式通讯传送分为独立的信息头,和发送的编码数据。以下的通讯传送方式定义也与MODBUS RTU通讯规约相兼容:地址码:地址码为通讯传送的第一个字节。这个字节表明由用户设定地址码的从机将接收由主机发送来的信息。并且每个从机都有具有唯一的地址码,并且响应回送均以各自的地址码开始。主机发送的地址码表明将发送到的从机地址,而从机发送的地址码表明回送的从机地址。功能码:通讯传送的第二个字节。M通讯规约定义功能号为1到127。作为主机请求发送,通过功能码告诉从机执行什么动作。作为从机响应,从机发送的功能码与从主机发送来的功能码一样,并表明从机已响应主机进行操作。如果从机发送的功能码的最高位为 比如功能码大与此同时127 ,则表明从机没有响应操作或发送出错。数据区:数据区是根据不同的功能码而不同。数据区可以是实际数值、设置点、主机发送给从机或从机发送给主机的地址。通讯规约当通讯命令发送至仪器时,符合相应地址码的设备接通讯命令,并除去地址码,读取信息,如果没有出错,则执行相应的任务;然后把执行结果返送给发送者。返送的信息中包括地址码、执行动作的功能码、执行动作后结果的数据以及错误校验码。如果出错就不发送任何信息。?1所示。表2?1 信息帧结构地址码功能码数据区错误校验码8位8位N 8位16位地址码:地址码是信息帧的第一字节 8位 ,从0到255。这个字节表明由用户设置地址的从机将接收由主机发送来的信息。每个从机都必须有唯一的地址码,并且只有符合地址码的从机才能响应回送。当从机回送信息时,相当的地址码表明该信息来自于何处。 功能码:主机发送的功能码告诉从机执行什么任务。表2?2列出的功能码都有具体的含义及操作。2?2 功能码含义及操作代码含义操作03读取数据读取当前寄存器内一个或多个二进制值06重置单一寄存器把设置的二进制值写入单一寄存器数据区:数据区包含需要从机执行什么动作或由从机采集的返送信息。这些信息可以是数值、参考地址等等。例如,功能码告诉从机读取寄存器的值,则数据区必需包含要读取寄存器的起始地址及读取长度。对于不同的从机,地址和数据信息都不相同。错误校验码:主机或从机可用校验码进行判别接收信息是否出错。有时,由于电子噪声或其它一些干扰,信息在传输过程中会发生细微的变化,错误校验码保证了主机或从机对在传送过程中出错的信息不起作用。这样增加了系统的安全和效率。错误校验采用CRC-16校验方法。Modbus帧描述Modbus 26应用协议定义了简单的独立于其下面通信层的协议数据单元 PDU - Protocol Data Unit :图2?1 Modbus 协议数据单元在不同总线或网络的Modbus27 协议映射在协议数据单元之外引入了一些附加的域。发起Modbus 事务处理的客户端构造Modbus PDU,然后添加附加的域以构造适当的通信PDU。图2?2 串行链路上的Modbus 帧在Modbus 串行链路,地址域只含有子节点地址。如前文所述,合法的子节点地址为十进制0-247。每个子设备被赋予1-247范围中的地址。主节点通过将子节点的地址放到报文的地址域对子节点寻址。当子节点返回应答时, 它将自己的地址放到应答报文的地址域以让主节点知道哪个子节点在回答。功能码指明服务器要执行的动作。功能码后面可跟有表示含有请求和响应参数的数据域。错误检验域是对报文内容执行冗余校验 的计算结果。根据不同的传输模式 RTU or ASCII 使用两种不同的计算方法28。第2.4节RS232简介RS-23229是个人计算机上的通讯接口之一,由电子工业协会 Electronic Industries Association,EIA 所制定的异步传输标准接口。通常RS-232接口以9个接脚 DB-9 或是25个接脚 DB-25 的型态出现,一般个人计算机上会有两组RS-232接口,分别称为COM1和COM2。RS-232-C 是美国电子工业协会EIA(Electronic Industry Association)制定的一种串行物理接口标准。RS 是英文“推荐标准”的缩写,232为标识号,C 表示修改次数。RS-232-C 总线标准设有25条信号线,包括一个主通道和一个辅助通道。在多数情况下主要使用主通道,对于一般双工通信,仅需几条信号线就可实现,如一条发送线、一条接收线及一条地线。RS-232-C 标准规定的数据传输速率为每秒50、75、100、150、300、600、1200、2400、4800、9600、19200波特。RS-232-C 标准规定,驱动器允许有2500pF 的电容负载,通信距离将受此电容限制,例如,采用150pF/m 的通信电缆时,最大通信距离为15m;若每米电缆的电容量减小,通信距离可以增加。传输距离短的另一原因是RS-232属单端信号传送,存在共地噪声和不能抑制共模干扰等问题,因此一般用于20m 以内的通信。串行通信接口标准经过使用和发展,目前已经有几种。但都是在RS-232标准的基础上经过改进而形成的30。所以,以RS-232C 为主来讨论。RS-323C 标准是美国EIA 电子工业联合会)与BELL等公司一起开发的1969年公布的通信协议。它适合于数据传输速率在020000b/s 范围内的通信。这个标准对串行通信接口的有关问题,如信号线功能、电器特性都作了明确规定。由于通行设备厂商都生产与RS-232C 制式兼容的通信设备,因此,它作为一种标准,目前已在微机通信接口中广泛采用。在讨论RS-232C 接口标准的内容之前,先说明两点:首先,RS-232-C 标准最初是远程通信连接数据终端设备DTE Data Terminal Equipment 与数据通信设备DCE(Data Communication Equipment 而制定的。因此这个标准的制定,并未考虑计算机系统的应用要求。但目前它又广泛地被借来用于计算机(更准确的说,是计算机接口)与终端或外设之间的近端连接标准。显然,这个标准的有些规定及和计算机系统是不一致的,甚至是相矛盾的。有了对这种背景的了解,我们对RS-232C 标准与计算机不兼容的地方就不难理解了。其次,RS-232C 标准中所提到的“发送”和“接收”,都是站在DTE 立场上,而不是站在DCE 的立场来定义的。由于在计算机系统中,往往是CPU 和I/O 设备之间传送信息,两者都是DTE,因此双方都能发送和接收。第3章 硬件设计第3.1节 系统结构地铁管道温度控制系统使用AT89C52控制器和AD590温度传感器,实现温度的检测和显示功能,能够通过上位机设置上下限温度,并且能够对现场的温度实现智能调节,以保持被控现场温度的基本恒定。温度控制系统旨在检测水温并对其进行控制。图3?1所示是系统总体构架。其中电源模块为单片机提供5V电压,为温度传感器AD590提供标准的15V电压。人机互换模块包括按键模块和数码显示模块。按键模块用来输入设定的温度,数码管显示模块用来显示当前测得的温度。温度传感器模块包括A/D转换模块和传感器模块。加热控制模块用来给水加热。上位机通信模块通过串口和PC建立通信渠道。第3.2节 单片机AT89C52基础电路 复位操作和复位电路 1 复位操作AT89C52的RST引脚是复位信号的输入端口,高电平有效。在时钟振荡稳定工作的情况下,该引脚若有低电平上升到高电平并持续两个机器周期(若晶振频率选12MHz,则2个机器周期为2),系统将实现一次复位操作。单片机在RST高电平有效后的第二个机器周期开始执行复位操作,并在RST变为低电平前的每个机器周期重复执行内部复位操作。 2 复位电路复位操作分为手动复位和上电自动复位。在这里采用上电自动复位电路,图3?2为一种上电自动复位电路。网络标号RST连接单片机AT89C52的9管脚。图3?2 上电自动复位电路在复位电路上电瞬间,RC电路充电,由于电容上电压不能突变,所以RST引脚出现高电平。RST引脚出现的高电平竟会随着对电容C的充电过程而逐渐回落,为了保证RST引脚出现的高电平持续两个机器周期以上的时间,需要合理地选择电阻和电容的参数值,而电阻和电容参数的取值随着时钟频率的不同而变化,时钟频率越低电阻和电容的取值越大。 振荡电路和时钟在AT89C52单片机芯片内部,有一个振荡电路和时钟发生器,引脚XTAL1和XTAL2之间接入晶体振荡器和电容后构成内部时钟方式。也可以使用外部振荡器,由外部振荡器产生的信号直接加载到振荡器的输入端,作为CPU的时钟源,称为外部时钟方式。大多数单片机均采用内部时钟的方式。图3?3为片内振荡器接法。图3?3 片内振荡器接法在AT89C52单片机内部,引脚XTAL2和XTAL1连接着一个高增益反向放大器,XTAL1引脚是反向放大器的输入端,XTAL2引脚是反向放大器的输出端。芯片内的时钟发生器是一个2分频触发器,振荡器的输出为其输入,输出为两相的时钟信号(状态时钟信号),频率为振荡器输出信号频率的1/2。状态时钟经3分频后为低字节地址锁存信号ALE,频率为振荡器输出信号频率的1/6,经6分频以后为机器周期信号,频率为/12。、一般取2030pF的陶瓷电容器。晶振一般选择12MHz。如果安装12MHz的晶振片,单片机的时钟信号频率为6MHz,机器周期信号的频率为1MHz,机器周期为1。大多数指令在2个机器周期完成,即使用12MHz的晶振片时,单片机执行一条指令大约为2,据此便可以实现程序延时子程序的编写。第3.3节 信号的采样及处理要想用单片机AT89C52控制地铁消防管道的温度恒定,必须通过温度传感器对外界温度信号进行采集,再经信号转换电路对外界信号进行转换,然后送入单片机进行处理,并进行相应的控制。外界系统的信号采样和转换电路主要由温度传感器AD590和A/D转换电路ADC0804组成。系统首先通过温度传感器采样外部模拟信号,再将信号由ADC0804进行模数转换,最后将处理后的信号送入单片机AT89C52。图3?4的下面部分是AD590用于测量热力学温度的基本应用电路。因为流过AD590的电流与热力学温度成正比,当电阻R1和电位器R2的电阻之和为1kW时,输出电压随温度的变化为1mV/K。但由于AD590的增益有偏差,电阻也有误差,因此应对电路进行调整。ADC0804是8位全MOS中速A/D 转换器、它是逐次逼近式A/D 转换器,片内有三态数据输出锁存器,可以和单片机直接接口。单通道输入,转换时间大约为100us。Vcc接输入芯片电源,CLK是时钟信号输入端,CLKR外接电阻之间串联一个10 电阻,接一个150pF电容到地。ADC0804 转换时序是:当CS0 许可进行A/D 转换。WR由低到高时,A/D开始转换,一次转换一共需要6673 个时钟周期。CS与WR同时有效时启动A/D转换,转换结束产生INTR 信号(低电平有效),可供查询或者中断信号。在CS和RD 的控制下可以读取数据结果。信号采样处理模块的硬件设计如图3?4所示。图3?4 信号采样处理模块第3.4节 人机交互与串口通信单元设计在该系统中,人机交互技术主要应用在恒定温度与偏差温度的设置,以及当前温度与设置温度的显示;串口通信技术应用在对温度的采集。 数码管显示电路系统通过两片锁存器74HC573控制6位数码管的显示。先由74HC573对单片机AT89C52输出的信号进行锁存,然后由数码管进行显示。六个数码管中前三个用于显示PC发送来的温度预置值,后三个用于显示传感器检测到的温度值。如图3?5所示。图3?5 数码管显示模块 加热器控制电路加热器控制电路主要由光电耦合器MOC3041组成。采用脉宽调制输出控制电炉与电源的接通与断开比例,以通断控制调压法控制电炉的输入功率。MOC3041光电耦合器常用做大功率可控硅的光电隔离触发器,且是即时触发的,其耐压值为400V,通过单片机P2.1管脚发出控制信号,当单片机给低电平时,光电隔离器导通,加热器加热。加热模块如图3?6所示。图3?6 加热控制模块 串口通信电路串口又叫做串行接口,现在的PC一般有两个串行口COM1和COM2.串行口与并行口的不同之处在于它的数据与控制信息是一位接一位地传送出去的。虽然这样速度会慢一些,但传送距离较并行口长,因此,若要进行较长距离的通信时,应使用串行口。通常COM1使用的是9针的D形连接器,其也称为RS-232接口。COM2有的使用的是老式的DB25针连接器,其也称为RS-433接口,不过目前已经很少使用。这里是RS232串口通信电路,这里RS232的11管脚和12管脚分别接单片,RS232的13管脚和14管脚分别接9针的D形连接器的6管脚和7管脚。该电路提供与PC的通信连接。上位机可以通过该串口发送命令进行控制,如图3?7所示。图3?7串口通信模块第4章 软件设计第4.1节 设计思路、主程序根据所学知识,实现本系统的软件设计部分,由于系统采用闭环控制策略控制温度,因此软件部分包括温度检测模块,加热器控制模块,按键模块,数码管显示模块和串口驱动模块。温度检测模块通过A/D转换器将温度值转换成数字值存放在temp_value中,加热器控制模块根据PID控制算法得到的Flag_temp控制加热器开关的通断,按键模块用于设定温度值;数码管模块用于显示检测到的温度值和设定的温度值,串口驱动模块用于从上位机收发数据。系统主程序流程图如图4?1所示。图4?1主程序流程图第4.2节 数码管显示程序数码管显示部分通过两片锁存器74HC573进行数码管段位控制,数码管的8为数据位和单片机的P0口相连,控制线是位线和段线,其分别和单片机的P2.7,P2.6连接。程序将检测到得温度值和上位机发送的温度值在数码管上显示。数码管显示程序流程图如图4?2所示。图4?2 数码管显示程序第4.3节 按键程序系统的按键部分由4个按键组成,分别是温度设定键,温度调大键,温度调小键和确认键。它们分别与单片机的P2.2P2.5连接,按键程序定义了一个变量Key_temp用于存放设定的温度值,初始值位0。通过改变该值来确定按键设定的温度值。按键程序流程图如图4?3所示。图4?3 按键程序第4.4节 加热器控制程序系统通过控制开关的通断时间来控制加热器的平均电压,从而控制地铁消防管道的温度。系统控制线接单片机AT89C52的P2.1,通过对P2.1赋高低电平来控制加热器的开关的通断。通过PID算法得到开关通断标志Flag_ctr,Flag_ctr的值为1,则打开加热开关,否则关闭加热开关。加热控制程序流程图如图4?4所示。图4?4 加热控制程序第4.5节 串口收发程序系统串口部分通过232芯片对232电平和TTL电平进行转换,该部分控制线是串口读写信号线,分别接单片 。串口收发程序流程图如图4?5所示。图4?5 串口收发程序第4.6节 MODBUS协议帧格式程序 MODBUS协议帧格式组装在Modbus通信协议的RTU传输模式下,由发送设备将Modbus 报文构造为带有已知起始和结束标记的帧。这使设备可以在报文的开始接收新帧,并且知道何时报文结束。不完整的报文必须能够被检测到而错误标志必须作为结果被设置。在 RTU 模式,报文帧由时长至少为3.5 个字符时间的空闲间隔区分。在后续的部分,这个时间区间被称作t3.5。MODBUS协议帧格式组装流程如图4?6所示。图4?6 MODBUS协议帧格式组装 CRC校验 在RTU 模式包含一个对全部报文内容执行的,基于循环冗余校验 CRC 算法的错误检验域。CRC 域检验整个报文的内容。不管报文有无奇偶校验,均执行此检验。CRC 包含由两个8 位字节组成的一个16 位值。CRC 域作为报文的最后的域附加在报文之后。计算后,首先附加低字节,然后是高字节。CRC高字节为报文发送的最后一个子节。附加在报文后面的CRC 的值由发送设备计算。接收设备在接收报文时重新计算CRC 的值,并将计算结果于实际接收到的CRC 值相比较。如果两个值不相等,则为错误。CRC 的计算, 开始对一个16 位寄存器预装全1。然后将报文中的连续的8 位子节对其进行后续的计算。只有字符中的8个数据位参与生成CRC 的运算,起始位,停止位和校验位不参与CRC计算。CRC 的生成过程中, 每个 8位字符与寄存器中的值异或。然后结果向最低有效位 LSB 方向移动 Shift 1位,而最高有效位 MSB 位置充零。然后提取并检查LSB:如果LSB 为1, 则寄存器中的值与一个固定的预置值异或;如果LSB 为 0, 则不进行异或操作。这个过程将重复直到执行完8 次移位。完成最后一次(第8 次)移位及相关操作后,下一个8位字节与寄存器的当前值异或,然后又同上面描述过的一样重复8 次。当所有报文中子节都运算之后得到的寄存器忠的最终值,就是CRC。当 CRC 附加在报文之后时,首先附加低字节,然后是高字节。CRC校验过程如下图4?7所示。图4?7 CRC校验流程图 MODBUS数据帧的拆包采用MODBUS通信协议的RTU传输模式,协议的报文格式如表4?1所示。表4?1 协议的报文格式起始位地址码功能码数据域CRC校验结果结束位3.5字符8位16位3.5字符?8所示。图4?8 数据帧的拆包 结 论在设计该系统的过程中我充分应用了在课堂上所学的相关理论知识,当把理论知识通过自己的双手变成实际后,使我对电路设计有了更多的了解,同时又产生了更浓厚的兴趣。本系统主要使用AT89C52芯片和AD590温度传感器,实现温度的检测和显示功能,再通过MODBUS通信协议实现单片机与PC的连接程序设计,通过PC对被控现场的温度实现调节和控制。在这次的设计中,我学习了AT89C52芯片和modbus协议的相关知识,应用

温馨提示

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

评论

0/150

提交评论