您的当前位置:首页正文

基于RS485的远程采集与控制系统的设计设计

来源:个人技术集锦


基于RS485的远程采集与控制系统的设计设计

南华大学

毕业设计(论文)

题 目 基于RS485的远程采 集与控制器设计 专业名称 通 信 工 程 指导教师 指导教师职称 班 级 学 号 学生姓名

年 月 日

南华大学

毕业设计(论文)任务书

专 业: 题 目: 起 止 时 间: 月 日至 年月 日 学 生 姓 名: 班 级: 指 导 老 师: 系/室 主 任:

年 月 日

论文 (设计) 内容及要求: 一、 论文内容 1.完成硬件电路的设计,主要包括处理器最小系统、3路AD/DA采集电路、组继电器控制电路、RS485通信电路等; 2. 完成软件程序的编写,主要包括系统初始化、AD/DA驱动、485通信协议等; 3.所设计的采集与控制器能够通过RS485远程通信采集3路节点信号,并能反馈2路模拟控制量。 二、 论文基本要求 1.了解远程采集与控制器设计的发展动态; 2.了解目前主流有线通信协议,例:RS232、RS485、CAN-BUS等,及各自优缺点; 3.掌握RS485关键通信协议; 4.掌握常用AD/DA电路,以及控制电路的设计方法; 5.掌握利用keil软件进行单片机系统开发; 6.熟练应用C语言编写相关驱动算法; 三、 写作要求 1.阅读和翻译3000 字以上本课题英文资料; 2.完成设计,做出实物并上交论文,论文格

式参照国家相关标准和南华大学毕业设计要求,并提供对应的电子文档; 3.论文字数不少于15000字,A4纸打印(WORD2003排版) 四、 时间要求 ① 2012年12月24日—2013年1月10日 理解设计要求,查阅相关资料; ② 2013年2月12日—2013年4月10日 根据所查阅的资料,完成部分论文初稿; ③ 2013年4月11日—2013年5月10日 完成毕业设计初稿; ④ 2013年5月11日—2013年5月30日 完成完整的毕业设计论文; ⑤ 2013年5月31日—2013年6月8日 准备毕业论文答辩。 ⑥ 2013年6月9日—2013年6月12日 毕业论文答辩。 指导老师:

年 月 日

南华大学船山学院本科生毕业设计(论文)开题报告

设计(论文)题目 设计(论文)题目来源 设计(论文)题目类型 基于RS485通信的远程采集与控制器设计 自选课题 起止时间 2012.12.24~2013.5.30 一、 设计(论文)依据及研究意义: 近年来,大规模集成电路的飞速发展,计算机技术不断地推广应用,传统的仪器仪表、数字测量技术在数据采集方面升华到一个全新的阶段。计算机技术已成为当代数据采集和自动控制的核心技术。而随着科学技术的进步,数据采集与控制系统越来越趋向数字化、智能化、远距离方向发展。串行通信是计算机与外部设备进行数据交换的重要渠道,并且由于其成本低、性能稳定、遵循统一的标准,因而在工程中被广泛应用。目前,有多种接口标准可用于串行通信,包括RS-232、RS-422、RS-423和RS-485。RS-232是最早的串行接口标准,在短距离、较低波特率串行通信中得到了广泛应用。其后发展起来的RS-422、RS-485是平衡传送的电气标准,采用差动的两线发送、两线接收的双向数据总线两线制方式,比起RS-232非平衡的传送方式在电气指标上有了大幅度的提高。在上述的网络系统中,近距离通信可以采用RS-232通信标准实现,通信距离视负载而定,但最多不超过十几米,为了进一步扩大通信距离可以采用RS-485标准通信,其通信有效距离可达1200米。如加中继器可更大幅度地增大有效通信距离。 本文设计的目的是实现基于RS-485总线上的数据通信与远程控制的系统,利用单片机对数

据采集系统进行控制,并且通过RS-485总线做远程传送将采集到的数据通过RS-485接口送入单片机主机机测。本系统设计采用了模块化的思想,主要有硬件设计与软件程序设计两部分。本设计接口简单、使用方便、可靠性好,在温度检测中有较广泛的应用前景,具有较强的使用价值。就其采样频率和分辨率来说属于中速类型,适合对数据采样频率要求不是特别高的应用场合。 二、 设计(论文)主要研究的内容、预期目标:(技术方案、路线) 为实现基于RS-485总线的数据通信与远程控制,首先得设计好RS-485的通信模块;由于是实现单片机主从机之间的数据通信,为达到主机对从机的控制,所以需要设计好继电器控制模块电路;接着,设计出各从机进行数据采集与控制的模块,单片机都按自己的任务进行相关数据采集或者控制。在硬件都设计好后,调试通过,这时要跟据整个系统编制出一定的通信协议,选择最优方案,实现主从机数据通信。这些在程序设计中实现,软件采用Keil编译器编程。主从机机在实现数据通信后,按照拟定的通信协议,提取有用数据信息,从而按照这个信息,进行相关操作,以达到基于RS-485总线上的数据通信与远程控制的目的。 本设计硬件电路的设计,主要包括处理器最小系统、3路AD/DA采集电路、2组继电器控制电路、RS485通信电路、电源稳压电路等;软件程序设计,主要包括系统初始化、AD/DA驱动、485通信协议等。通过以上软件硬件的设计,期望所设计的采集与控制器能够达到通过RS485远程通信采集3路节点信号,并能反馈2路模拟

控制量的预期目标。 三、设计(论文)的研究重点及难点: 数据采集是指将温度、湿度、压力、流量、位移、电压、电流等模拟量采集、经A/D转换器转换成数字量后,再由计算机进行存储、处理、显示的过程。采集到的数据一般都是连续变化的电压或电流信号,需要再通过相应的A/D转换,转换成数字信号后送入单片机。AD/DA采集电路的设计以及如何实现单片机与计算机之间的数据通信,是整个系统能否结合成为一体工作的关键。本设计拟采用C语言编制RS485通信协议下的从机通信与控制程序;硬件上,拟采用RS-485进行长距离、高速的串行异步通信;数据采集部分拟采用AD/DA转换电路将集到的模拟信号转换成计算机能处理的数字信号;从而达到数据通信与远程控制的目的。 四、 设计(论文)研究方法及步骤(进度安排): 第1周 明确课题要求,结合课题调研,收集资料。 第2周 结合课题调研,收集资料。 第3周 阅读和翻译3000 字以上本课题英文资料。 第4周 确定初步技术方案,提交开题报告,开题报告审查。 第5周 RS-485通信接口的学习。 第6周 AD/DA电路设计。 第7周 学习RS-485总线技术。 第8周 单片机接口电路设计。 第9周 通信控制系统主电路设计。 第10周 编程软件学习。

第11周 数据采集的串口通信协议设计。 第12周 单片机的数据采集模块的程序设计。 第13周 整个系统初步调试与分析。 第14周 整个系统调试与分析。 第15周 撰写论文。 第16周 交初稿,修改论文。 第17周 正式交论文及答辩准备。 第18周 答辩。 五、 进行设计(论文)所需条件: 六、 指导教师意见: 签名: 年月日

南华大学船山学院毕业设计(论文)

基于RS485通信的远程采集与控制器设计

摘 要:在一些环境条件恶劣、异常危险的环境中,如深井、对人体危害极大强辐射空间、人体活动不便的空间,要做到现场数据综合分析并做出现场决策,几乎是不可能做到的。在这些环境中,远程数据采集与控制系统有着其巨大优势。还有一些管理分散,数据采集量大的工作条件下,人到现场去采集数据就变得非常繁琐了,这时,远程数据采集就是一种非常简单而且有效的方法。所以本文便提出一种基于RS485通信的远程数据采集与控制的方法。

本文设计的目的是实现3路数据采集处理,2路数据反馈装置,2路继电器控制远程控制。本文首先对涉及的RS485协议进行介绍,其次会给出远程数据采集与控制系统的硬件设计方案,硬件设计中包括单片机应用电路、电源稳压电路、AD采集电路、DA电路、RS485接口电路、继电器控制电路几个部分的硬件电路设计。最后给出切实可行的软件设计方案,在这个方案中会给出通信协议、整体设计与实现、系统的初始化、RS485总线程序、继电器控制程序、DA输出控制程序、AD采集程序的设计。本设计的的采集模块不局限某一单一用途,可以完成温度、湿度、压力、流量、位移、电压、电流等模拟量的采集。系统接口简单可靠,用途多样,具有一定灵活性。

关键词:RS485;远程通信;数据采集;远程控制

i

南华大学船山学院毕业设计(论文)

Design of the Remote Acquisition and Controller

based on RS485 Communication

Abstract: In some poor and very dangerous conditions, such as deep well, strong radiation space which do harm to human beings and the space which is inconvenient for human's activities, it's almost impossible to make on-the-spot comprehensive data analysis and decisions. In these conditions, remote data acquisition and control system has its great advantage. In some other conditions whose management is decentralized and data collection is large, to make on-the-spot data acquisition becomes very complicated, so remote data acquisition is a good and convenient way.

This article will put forward a remote data acquisition and control method that is based on RS485 communication.Its purpose of the design is to realize three-channel data acquisition processing, two-channel data feedback device, two-channel way relay control remote control. First, this article will introduce the RS485 protocol.Then, this article will give the hardware design scheme of remote data acquisition and control system. The hardware design includes microcontroller application circuit, power supply voltage regulator circuit, AD sampling circuit and DA circuit, RS485 interface circuit and relay control circuit part es

the overall design and implementation, system initialization, RS485 bus, relay control, DA output control program, the AD acquisition program design.

of

the

hardware

circuit

design.

Finally, practical software design scheme will be given.This design scheme includ

Collection module of this design is not limited, and not just for a single use, it can complete many collection, for example, temperature, humidity, pressure, flow, displacement, analog quantities voltage, and current .The system interface is simple and reliable, and its uses is various and flexible.

Keywords: RS485; remote communications; data acquisition and control

ii

南华大学船山学院毕业设计(论文)

目 录

1 绪 论 ................................................................................................................... 1

1.1 研究的背景与意义 ................................................................................... 1 1.2 国内外研究现状 ....................................................................................... 2 1.3 本文主要工作内容 ................................................................................... 3 1.4 系统分析 ................................................................................................... 4

1.4.1任务要求 .................................................................................... 4 1.4.2 设计方案论证 ........................................................................... 4 1.4.3 总体设计 ................................................................................... 6

1.5 本文章节安排 ........................................................................................... 7 2.1 RS-232/422/485 标准 ............................................................................... 8

2.1.1 RS-232 标准 ............................................................................. 9 2.1.2 RS-422/485 标准 ...................................................................... 9

2.2 RS-485 通讯协议 .................................................................................... 12

2.2.1 ModBus 协议(RTU 模式) .................................................... 12 2.2.2 多功能电能表通讯规约(DL/T645-1997) ............................. 15

2.3 RS-485 应用要点 .................................................................................... 16 2.4 本章小结 ................................................................................................. 16

3 基于RS485通信远程采集与控制器的硬件设计 ................................................ 17

3.1 硬件系统总体设计 ................................................................................. 17 3.2 单片机应用电路 ..................................................................................... 18 3.3 电源模块电路 ......................................................................................... 20 3.4 主从机RS485接口电路设计 ................................................................ 21 3.5 继电器控制电路 ..................................................................................... 24 3.6 2路DA转换电路 ................................................................................... 25

3.6.1 TLC5615简介 ........................................................................ 25 3.6.2 TLC5615功能框图 ................................................................ 25

iii

南华大学船山学院毕业设计(论文)

3.6.3 TLC5615引脚功能 ................................................................ 26 3.6.4 TLC5615推荐工作条件 ........................................................ 26 3.6.5 TLC5615的时序 .................................................................... 27 3.6.6 TLC5615的两种工作方式 .................................................... 27 3.6.7 DA电路 ................................................................................... 28

3.7 3路AD转换电路 ................................................................................... 28 3.8 本章小结 ................................................................................................. 29

4 基于RS485通信远程采集与控制器的软件设计 ................................................ 30

4.1 通信协议的设计 ..................................................................................... 30 4.2 主程序流程 ............................................................................................. 32

4.2.1 主机主程序流程 ..................................................................... 32 4.2.2 从机主程序流程 ..................................................................... 36

4.3系统初始化 .............................................................................................. 41

4.3.1 主机系统初始化 ..................................................................... 41 4.3.2 从机系统初始化 ..................................................................... 43

4.4 RS485总线的程序设计 .......................................................................... 45 4.5 继电器控制程序的设计 ......................................................................... 46 4.6 2路DA输出控制程序设计 ................................................................... 46 4.7 3路AD采集程序设计 ........................................................................... 47 4.8 本章小结 ................................................................................................. 50

5 总结与展望 ............................................................................................................. 51

5.1 总结 ......................................................................................................... 51 5.2 展望 ......................................................................................................... 51

谢 辞 ......................................................................................................................... 53 参考文献 ..................................................................................................................... 54 附件一 电路原理图 ................................................................................................... 56 附件二 PCB图 .......................................................................................................... 59

iv

南华大学船山学院毕业设计(论文)

1 绪 论

1.1 研究的背景与意义

数据采集与控制技术是信息科学的重要分支之一,它研究数据的采集、存储、处理以及控制等问题。其任务是对生产现场各种参数进行采集,然后送入计算机,根据不同的需要由计算机进行相应的计算和处理,得到所需的数据。与此同时,将计算得到的数据按要求进行显示并判断作出决定,以便实现对某些物理量的监视控制。

在一些环境条件恶劣、异常危险的环境中,如深井、对人体危害极大强辐射空间、人体活动不便的空间,要做到现场数据综合分析并做出现场决策,几乎是不可能做到的。在这些环境中,远程数据采集与控制系统有着其巨大优势。还有一些管理分散,数据采集量大的工作条件下,人到现场去采集数据就变得繁重而繁琐了,这时,远程数据采集就是一种非常简单而且有效的方法[1]。由此可见,对远程数据的采集和控制方面的研究是非常有必要的。

近年来,大规模集成电路的飞速发展,计算机技术不断地推广应用,传统的仪器仪表、数字测量技术在数据采集方面升华到一个全新的阶段[2]。而随着科学技术的进步,数据采集与控制系统越来越趋向数字化、智能化、远距离方向发展。远程数据采集技术,广泛用于工业生产和民用生活,特别是智能化小区水、电、气、暖的抄表监控以及工业测量仪表的数据采集和监控等方面的应用非常普遍。它结合了计算机、网络通信和自动化管理等现代化技术,并不断融合更多更新的通信技术[3,4]。远程数据采集技术发展时间不长,其发展也是伴随着相关技术的进步才逐渐实用化,不过这一技术的应用很快发展成为一个潜力巨大、市场广阔的产业[5]。

目前国内外采用的数据采集方案和运行方式多种多样,其所达到的目的和要求也不同。远程数据采集并没有规定一个固有的模式,包括其内容和形式都不断发展和变化。远程数据采集技术在国内外应用普遍,研究成果很多,数据采集形式和技术各异,所达到的目标和要求也不同[6]。由于形式复杂和多样,问题和实用性也比较多,许多技术目的单一,并不成系统。

1 页 共 59页

南华大学船山学院毕业设计(论文)

论文的目标是设计一个当前在国内的实际状况下通用、开放的系统,因此采用了通用的标准去设计方案。本文设计的目的是实现基于RS-485总线上的数据通信与远程控制的系统,利用单片机对数据采集系统进行控制。可采集脉冲或电压、电流、温度等信号,即采集现场各种仪表数据信号,送给单片机的处理。单片机根据采集的数据通过继电器开关再对外部装置进行控制。

1.2 国内外研究现状

数据采集系统(DataAcquisitionSysteln)简称DAS系统,是对工业过程数据进行运算、显示、储存及各种控制的装置。在很多行业都有较广应用。过程对象需检测的参数经转换元件转换成可测数字信号,再经转换器变换成单片机、计算机能处理的信号,再送入系统的I/O模块,I/O模块也可设计成直接接收现场来的电压、电流、电阻或脉冲信号,经过A/D转换器转换成数字信号由中央处理器处理。DAS系统在硬件配置上的独特要求,在进行具体结构设计时应综合考虑各种因素以满足用户的需求[7,8]。

软件功能则更丰富,根据用户需要,可编制控制和服务程序,如操作指导、统计分析等、实现实时或即时打印或通信[9]。

20世纪90年代至今,由于集成电路制造技术的不断提高,出现了高性能、高可靠性的单片数据采集系统DAS。数据采集系统发生了极大的变化。工业计算机、单片机和大规模集成电路的组合,用软件管理,使系统的成本降低,体积减小,功能成倍增加,数据处理能力大大加强。出现了高性能、高可靠性的单片数据采集系统[10]。

目前数据采集技术已经成为一种专门的技术,在工业领域得到了广泛的应用,数据采集系统采用更先进的模块式结构,根据不同的应用要求,通过简单的增加和更改模块,并结合系统编程,就可扩展或修改系统,迅速地组成一个新的系统[11,12]。

现阶段并行总线数据采集系统向高速、模块化和即插即用方向发展。串行总线数据采集系统向分布式系统结构和智能化方向发展。可靠性不断提高,数据采集系统物理层通信,由于采用RS485、双绞线、电力载波、无线和光纤,所以其技术得到了不断发展和完善。其在工业现场数据采集和控制等众多领域得

2 页 共 59页

南华大学船山学院毕业设计(论文)

到了广泛的应用[13]。

远程数据采集技术在国内外应用普遍,研究成果很多,数据采集形式和技术各异,所达到的目标和要求也不同。由于形式复杂和多样,问题和实用性也比较多,且许多技术目的单一,并不成系统。

国外起步较早,某些地区在此领域己制订了相关行业数据采集标准,技术也较先进,并不断地开发新技术。国外应用比较先进,普遍的主要数据采集技术有电力线载波系统、手持或车载式无线遥读遥控方式、电话线数据采集系统、GSM(GPRS)无线数据采集等[14,15],但国外此行业的许多技术和运行方式在国内并不适用。一些采用新技术的方案也仅仅限于理论探讨,实际的市场实用性并不大。

国内自九十年代初开始研制远程数据系统,由于中国的实际国情,长期一直没有相应的行业标准。远程数据采集产品市场广阔,发展潜力很大,到现在各种产品种类繁多,形式复杂,缺少一个统一的规范。

在目前国内现有技术和现状的情况下,参照了欧洲类似的行业标准(ModBus),制订了远程数据采集的一些要求和规范,该标准规定了计量仪表数据传输的基本原则、接口形式及物理性能、数据链路、数据标识及数据安全和数据表达格式的要求,对技术的采用并没有提出太多限制[16]。就目前国内的远程数据采集技术来说,大多是采用国外此行业类似技术和芯片,或采用一些成熟的数据通讯技术,并根据国内需求定制和发展,许多新技术不断出现和尝试,可以说这个行业正处于一个不断发展并完善的阶段。

1.3 本文主要工作内容

本论文的是对基于RS485通信的数据采集与控制器设计的研究,因此要用一个章节介绍RS485同信协议。数据采集与控制的核心部件单片机是软硬件配合工作的,在系统硬件电路设计好以后还要分别设计配合主从机使用的软件。其中硬件电路的说明应分模块功能不同详细说明,对于其中用到的芯片,也要加以介绍。软件设计部分则根据硬件模块用C语言编写进行面向数据采集与控制过程的配套程序。程序设计为硬件服务,说明时画出流程图,以增强程序可读性。

3 页 共 59页

南华大学船山学院毕业设计(论文)

工作安排流程图如下:

开阅读资料,可系统整体硬件设计 硬件各部分软件整体软件各部分软硬件调试 结 图1.1 工作安排流程图

1.4 系统分析

1.4.1任务要求

(1)研究RS485总线技术的运用,即如何进行通信协议的设计; (2)采集3路节点信号;

(3)反馈2路模拟控制量(最大输出电压能达到10V); (4)2路继电器远程控制。

4 页 共 59页

南华大学船山学院毕业设计(论文)

1.4.2 设计方案论证

论文设计的是一个通用、开放的系统方案,设计充分考虑实际应用和对现有设备的兼容性,设计的的采集模块可以完成温度、湿度、压力、流量、位移、电压、电流等模拟量的采集。系统接口简单可靠,用途多样,具有一定灵活性。 在计算机技术,微电子技术和网络技术等的迅速发展下,远程数据采集方案也层出不穷。各种方案都有其特点,有其相适应的应用环境和存在的条件,不能一概而论,甚至在特殊情况下还需要将其结合在一起,扬长避短可发挥出更大的优势。对于以上方案,应该说是各有优势,并不能对比否决某种技术方案,论文方案的选择也仅仅是特定条件下的技术应用,以下对上述几种方案进行分析。

1 主机部分方案论证

根据系统的要求,主机需要完成的功能是读取从机采集回来信息,并且对从机的外设进行控制,设计了以下三个方案。

方案(一): 以ARM处理器为控制核心,优点是系统外设丰富,可以节省大量的外围设备及布线面积。缺点是只能采用贴片的封装,但是由于工艺的原因,需要花费大量的时间在硬件电路的制作上。

方案(二): 以PC机为控制核心,由上位机来统一控制信息的采集,优点是可以实现丰富的控制功能。缺点是PC体积都较大,且成本很高。

方案(三): 以52系列单片机为控制核心,优点是系统结构简单,利于各部分功能,且成本较低、体积较小,方便安装等。缺点是功能较少,如需要增加其它功能需要加入相应的硬件,但根据本系统的要求,以52单片机为核心,再加上DS18B20等信息转换模块就完成系统要求的功能

综合以上三个主机方案,最终选择以52单片机为控制核心,来完成系统对信息的采集。

2 通讯总线接口方案论证

系统的要求是一台主机,多台从机,这就需要将主机和所有的从机全部都要连到一根总线,以满足主机读取从机的信息要求,至于通信方式是全双工还是半双工没关系,只要主机能读取从机采集回来的信息即可,根据以上要求,设计了以下两个方案。

5 页 共 59页

南华大学船山学院毕业设计(论文)

方案(一):采用RS-232标准,优点实现简单,模块设计相当成熟,且成本也较低。非常适合点对点的通讯。缺点是:接口的信号电平值较高,易损坏接口电路的芯片,又因为与TTL 电平不兼容故需使用电平转换电路方能与TTL 电路连接;传输速率较低,在异步传输时,波特率为20Kbps。现在由于采用新的UART 芯片16C550 等,波特率达到115.2Kbps;接口使用一根信号线和一根信号返回线而构成共地的传输形式, 这种共地传输容易产生共模干扰,所以抗噪声干扰性弱;传输距离有限,最大传输距离标准值为50 米,实际上也只能用在15米左右。

方案(二):采用RS-485标准,它采用平衡发送和差分接收方式实现通信:发送端将串行口的TTL电平信号转换成差分信号A、B两路输出,经过线缆传输之后在接收端将差分信号还原成TTL电平信号。由于传输线通常使用双绞线,又是差分传输,所以又极强的抗共模干扰的能力,总线收发器灵敏度很高,可以检测到低至200mV电压,最高的通讯高达2.5Mbps。故传输信号在千米之外都是可以恢复,而且RS-485允许最大的从机数量达到128台,具强大的扩展能力。

综合以上两个方案,本系统最终选择RS-485为系统的通信总线,这符合本系统的点对多点的非平衡通讯模式和远距离传输模式。

1.4.3 总体设计

本系统选择RS-485为系统的通信总线,以52单片机为控制核心,设计的目的是实现基于RS-485总线上的数据通信与远程控制。整个系统分为两个部分:主机部分与从机部分。根据系统的要求,主机部分需要完成的功能是读取并显示从机采集回来的实时数据信息,并且对从机的外设进行控制。从机部分需要完成的功能是负责采集相关信息传回给主机,并等待主机的控制命令。处于设计与使用的方便考虑,主机硬件电路跟从机硬件电路采用相同的电路,只是在软件设计上加以区分。这样,在不通过RS485总线的情况下系统也能进行2路继电器开关控制、反馈2路本地模拟控制量和采集3路本地节点信号的工作,只是无法远程通信。主从机系统框图如下:

6 页 共 59页

南华大学船山学院毕业设计(论文)

图2.1 远程采集与控制器的系统框图

主机单片机发送信号通过RS485总线传给从机,从机判断主机发过来信息再通过继电器控制电路控制AD电路和DA电路工作,最后又通过RS485总线传回信息给主机。如此循环,达到主机对从机的控制功能。

1.5 本文章节安排

根据研究目标,将本文分为五章,内容作如下安排:

第一章:介绍远程数据采集与控制技术研究的额背景与意义, 国内外数据采集研究现状,本文主要工作内容。然后根据本文任务要求对系统方案进行论证。

第二章:介绍RS485通信协议,主要分3个方面进行介绍:RS485标准、RS485通讯协议、RS485应用要点。

第三章:系统的硬件设计,其中包括:单片机应用电路、AD采集电路、DA电路、RS485接口电路、继电器控制电路的设计。

第四章:系统的软件设计,其中包括:通信协议的设计、整体程序流程、系统初始化、RS485总线程序设计、继电器控制程序设计、DA输出控制程序设计、AD采集程序设计。

第五章:对全文进行总结,分析文章的创新之处与不足之处,最后提出继续完善本设计的研究方向。

7 页 共 59页

南华大学船山学院毕业设计(论文)

2 RS-485 协议规范

通常的微处理器都集成有 1 路或多路硬件UART 通道,可以非常方便地实现串行通讯。在工业控制、电力通讯、智能仪表等领域中,也常常使用简便易用的串行通讯方式作为数据交换的手段。但是,在工业控制等环境中,常会有电气噪声干扰传输线路,使用RS-232 通讯时经常因外界的电气干扰而导致信号传输错误;另外,RS-232 通讯的最大传输距离在不增加缓冲器的情况下只可以达到15 米。为了解决上述问题,RS-485/422 通讯方式就应运而生了。本章将详细介绍485 标准、通讯规约、应用要点。

2.1 RS-232/422/485 标准

RS-232、RS-422 与RS-485 最初都是由电子工业协会(EIA)制订并发布的。RS-232在1962 年发布,命名为EIA-232-E,作为工业标准,以保证不同厂家产品之间的兼容。RS-422是由RS-232 发展而来,它是为弥补RS-232 之不足而提出的。为改进RS-232 通信距离短、速率低的缺点,RS-422 定义了一种平衡通信接口,将传输速率提高到10Mbps,传输距离延长到4000 英尺(速率低于100kbps 时),并允许在一条平衡总线上连接最多10 个接收器。RS-422 是一种单机发送、多机接收的单向、平衡传输规范,被命名为TIA/EIA-422-A 标准。为扩展应用范围,EIA 又于1983 年在RS-422 基础上制定了RS-485 标准,增加了多点、双向通信能力,即允许多个发送器连接到同一条总线上,同时增加了发送器的驱动能力和冲突保护特性,扩展了总线共模范围,后命名为TIA/EIA-485-A 标准。由于EIA 提出的建议标准都是以“RS”作为前缀,所以在通讯工业领域,仍然习惯将上述标准以RS 作前缀称谓。RS-232、RS-422 与RS-485 标准只对接口的电气特性做出规定,而不涉及接插件、电缆或协议,在此基础上用户可以建立自己的高层通信协议。但由于PC 上的串行数据通讯是通过UART 芯片(较老版本的PC 采用I8250 芯片或Z8530 芯片)来处理的,其通讯协议也规定了串行数据单元的格式(8-N-1 格式):1 位逻辑0 的起始位,6/7/8 位数据位,1 位可选择的奇(ODD)/偶(EVEN)校验位,1/2 位逻辑1 的停止位。

8 页 共 59页

南华大学船山学院毕业设计(论文)

基于PC 的RS-232、RS-422 与RS-485标准均采用同样的通讯协议。

表格 2.1 列出了RS-232、RS-422、RS-485 通讯方式的区别。

表 2.1 RS-232、RS-422、RS-485 的区别 标准 工作方式 节点数 最大传输电缆长度 最大传输速率 最大驱动输出电压 发送器输出信号电平 (负载最小值) 发送器输出信号电平 (空载最大值)

RS232 单端 RS 422 差分 RS 485 差分 1收、1发 1发、10收 1发、32收 50英尺 20Kbps +/25V 4000英尺 4000英尺 10Mbps 0.25V~+6V 10Mbps 7V~+12V 负载 +/5V~+/15V ±2.0V ±1.5V 空载 +/25V ±6V ±6V 9 页 共 59页

南华大学船山学院毕业设计(论文)

发送器负载阻抗(Ω) 摆率(最大值) 接收器输入电压范围 接收器输入门限 接收器输入电阻(Ω) 发送器共模电压 接收器共模电压 2.1.1 RS-232 标准

3K~7K 30V/μs ±15V 100 N/A -10V~+10V 54 N/A -7V~+12V ±200mV ≥12K ±3V 3K~7K -- -- ±200mV 4K(最小) -3V~+3V -1V~+3V -7V~+7V -7V~+12V RS-232 被定义为一种在低速率、近距离串行通讯的单端标准。RS-232 采取不平衡传输方式,即所谓单端通讯。

RS-232 的电气标准

电平为逻辑“0”时:+3V~+15V; 电平为逻辑“1”时:-3V~-15V;

未定义区:-3V~+3V。在此区域内的信号处理将由通讯接口的RS-232 收发器决定。

10 页 共 59页

南华大学船山学院毕业设计(论文)

2.1.2 RS-422/485 标准

RS-422/485 标准的全称为TIA/EIA-422-B 和TIA/EIA-485 串行通讯标准。RS-422/485标准与RS-232 标准不一样,数据信号采用差分传输方式(Differential Driver Mode),也称作平衡传输。

由于RS-422/485 标准在电气特性上非常相近,在传输方式上有所区别;为便于理解,下面将主要介绍应用比较普遍的RS-485 标准,并简单介绍RS-422 标准与RS-485 标准的区别。

电子工业协会(EIA)于1983 年制订并发布RS-485 标准,并经通讯工业协会(TIA)修订后命名为TIA/EIA-485-A,习惯地称之为RS-485 标准。

RS-485 标准是为弥补RS-232 通信距离短、速率低等缺点而产生的。RS-485 标准只规定了平衡发送器和接收器的电特性,而没有规定接插件、传输电缆和应用层通信协议。RS-485 标准与RS-232 不一样,数据信号采用差分传输方式(Differential Driver Mode),也称作平衡传输,它使用一对双绞线,将其中一线定义为A,另一线定义为B,如图 2.1所示。

图 2.1 RS-485 发送器的示意图 图 2.2 RS-485 接收器的示意图

通常情况下,发送发送器A、B 之间的正电平在+2~+6V,是一个逻辑状态;负电平在-2~-6V,是另一个逻辑状态。另有一个信号地C。在RS-485 器件中,

11 页 共 59页

南华大学船山学院毕业设计(论文)

一般还有一个“使能”控制信号。“使能”信号用于控制发送发送器与传输线的切断与连接,当“使能”端起作用时,发送发送器处于高阻状态,称作“第三态”,它是有别于逻辑“1”与“0”的第三种状态。

对于接收发送器,也作出与发送发送器相对的规定,收、发端通过平衡双绞线将A-A与B-B 对应相连。当在接收端A-B 之间有大于+200mV 的电平时,输出为正逻辑电平;小于-200mV 时,输出为负逻辑电平。在接收发送器的接收平衡线上,电平范围通常在200mV至6V 之间。参见图2.2 所示。

定义逻辑1(正逻辑电平)为B>A 的状态,逻辑0为A>B 的状态,A、B 之间的压差不小于200mV。TIA/EIA-485 串行通讯标准的性能如表格 2.2 所示:

表 2.2 TIA/EIA-485 通讯方式的性能参数

规格 传输模式 电缆长度@10Mbps 数据传输速度 最大差动输出 最小差动输出 接收器敏感度 发送器负载(欧姆) 最大发送器数量 最大接收器数量 TIA/EIA485 平衡 50 ft(15m) 10 Mbps ± 6V ± 1.5V ±0.2 V 60Ω 32 单位负载 32 单位负载 电缆长度@90Kbps 4000 ft(1200m) RS-485 标准的最大传输距离约为1219 米,最大传输速率为10Mbps。 通常,RS-485 网络采用平衡双绞线作为传输媒体。平衡双绞线的长度与传输速率成反比,只有在20kbps 速率以下,才可能使用规定最长的电缆长度。只

12 页 共 59页

南华大学船山学院毕业设计(论文)

有在很短的距离下才能获得最高速率传输。一般来说,15 米长双绞线最大传输速率仅为1Mbps。

注意:并不是所有的RS-485 收发器都能够支持高达10Mbps 的通讯速率。如果采用光电隔离方式,则通讯速率一般还会受到光电隔离器件响应速度的限制。

RS-485 网络采用直线拓朴结构,需要安装2 个终端匹配电阻,其阻值要求等于传输电缆的特性阻抗(一般取值为120Ω)。在矩距离、或低波特率波数据传输时可不需终端匹配电阻,即一般在300 米以下、19200bps 不需终端匹配电阻。终端匹配电阻安装在RS-485 传输网络的两个端点,并联连接在A-B 引脚之间。

RS-485 标准通常被用作为一种相对经济、具有相当高噪声抑制、相对高的传输速率、传输距离远、宽共模范围的通信平台。同时,RS-485 电路具有控制方便、成本低廉等优点。

在过去的20 年时间里,建议性标准RS-485 作为一种多点差分数据传输的电气规范,被应用在许多不同的领域,作为数据传输链路。目前,在我国应用的现场网络中,RS-485半双工异步通信总线也是被各个研发机构广泛使用的数据通信总线。但是基于在RS-485 总线上任一时刻只能存在一个主机的特点,它往往应用在集中控制枢纽与分散控制单元之间[17]。

2.2 RS-485 通讯协议

RS-485 标准只对接口的电气特性做出规定,而不涉及接插件、电缆或协议;因此,用户需要在RS-485 应用网络的基础上建立自己的应用层通信协议。由于RS-485 标准是基于PC 的UART 芯片上的处理方式,因此,其通讯协议也规定了串行数据单元的格式(8-N-1 格式):1 位逻辑0 的起始位,6/7/8 位数据位,1 位可选择的奇(ODD)/偶(EVEN)校验位,1/2 位逻辑1 的停止位。

目前,RS-485 在国内有着非常广泛的应用,许多领域,比如工业控制、电力通讯、智能楼宇等都经常可以见到具有RS-485 接口电路的设备。但是,这些设备采用的用户层协议(术语参考自OSI 的7 层结构)都不相同;这些设备之间并不可以直接连接通讯。

13 页 共 59页

南华大学船山学院毕业设计(论文)

比如,很多具有RS-485 接口电路的用户设备采用自己制定的简单通讯协议,或是直接取自ModBus 协议(AscII/RTU 模式)中的一部分功能;在电力通讯领域,当前国家现在执行的行业标准中,颁布有按设备分类的各种通讯规约,如CDT、SC-1801、u4F、DNP3.0 规约和1995 年的IEC60870-5-101 传输规约、1997 年的国际101 规约的国内版本DL/T634-1997规约;在电表应用中,国内大多数地区的厂商采用多功能电能表通讯规约(DL/T645-1997)。

下面将分别对ModBus 协议(RTU 模式)、多功能电能表通讯规约(DL/T645-1997)进行简单介绍。

2.2.1 ModBus 协议(RTU 模式)

以下资料摘录于Modbus 协议(RTU 模式)的一部分,介绍了Modbus RTU 协议的基本构成、主要特点、参数规定;便于我们理解一个通讯协议的基本模式与要求[18]。关于详细的ModBus 协议,用户可以从ModBus-IDA 协会 (www.modbus.org) 网站下载具体的内容。 1. 查询—响应周期

ModBus 协议遵循“查询—响应”模式,如图 2.3 所示。 查询:

查询消息中的功能代码告之被选中的从设备要执行何种功能。数据段包含了从设备要执行功能的任何附加信息。例如功能代码03 是要求从设备读保持寄存器并返回它们的内容。数据段必须包含要告之从设备的信息:从何寄存器开始读及要读的寄存器数量。错误检测域为从设备提供了一种验证消息内容是否正确的方法。

响应:

如果从设备产生一正常的响应,在响应消息中的功能代码是在查询消息中的功能代码的响应。数据段包括了从设备收集的资料:象寄存器值或状态。如果有错误发生,功能代码将被修改以用于指出响应消息是错误的,同时数据段包含了描述此错误信息的代码。错误检测域允许主设备确认消息内容是否可用。

14 页 共 59页

南华大学船山学院毕业设计(论文)

主设备的查询消息 设备地址 功能代码

设备地址 功能代码 数 据 图 2.3 ModBus 协议的“查

数 据 询—响应”模式 2. RTU 模式

RTU 模式的格式: 错误检测 错误检测 从设备回应消息 地功能数据数据... 数CRCCRC址 代码 数量 1 据n 高字低字节 节 当控制器设为在Modbus 网络上以RTU(远程终端单元)模式通信,在消息中的每个8Bit 字节包含两个4Bit 的十六进制字符。这种方式的主要优点是:在同样的波特率下,可比ASCII 方式传送更多的数据。

代码系统:

8 位二进制,十六进制数0...9,A...F

消息中的每个8 位域都是一个两个十六进制字符组成 每个字节的位: 1 个起始位

8 个数据位,最小的有效位先发送 1 个奇偶校验位,无校验则无

1 个停止位(有校验时),2 个Bit(无校验时) 错误检测域:CRC(循环冗长检测) 3. RTU 帧

使用RTU 模式,消息发送至少要以3.5 个字符时间的停顿间隔开始。在网络波特率下多样的字符时间,这是最容易实现的(如图 1-24 的T1-T2-T3-T4 所示)。传输的第一个域是设备地址。可以使用的传输字符是十六进制的0...9,A...F。网络设备不断侦测网络总线,包括停顿间隔时间。当第一个域(地址域)接收到,每个设备都进行译码以判断是否发往自己的。在最后一个传输字符之后,一个至少3.5 个字符时间的停顿标定了消息的结束。一个新的消息可在此停顿后

15 页 共 59页

南华大学船山学院毕业设计(论文)

开始。

整个消息帧必须作为一连续的流转输。如果在帧完成之前有超过1.5 个字符时间的停顿,接收设备将刷新不完整的消息并假定下一字节是一个新消息的地址域。同样地,如果一个新消息在小于3.5 个字符时间内开始,接收的设备将认为它是前一消息的延续。这将导致一个错误,因为在最后的CRC 域的值不可能是正确的。一典型的消息帧如下表2.3 所示:

表2.3 RTU

消息帧

起始位 设备地址 能码 T1-T2-8Bit 8Bit T3 -T4 4. 地址

地址0 是用作广播地址,以使所有的从设备都能认识。当Modbus 协议用于更高水平的网络,广播可能不允许或以其它方式代替。 5. 响应

当从设备响应时,它使用功能代码域来指示是正常响应(无误)还是有某种错误发生(称作异议响应)。对正常响应,从设备仅响应相应的功能代码。对异议响应,从设备返回一等同于正常代码的代码,但最重要的位置为逻辑1。

例如:从一个主设备发往从设备的消息要求读一组保持寄存器,将产生

如下功能代码:0 0 0 0 0 0 1 1 (十六进制03H)

对正常响应,从设备仅响应同样的功能代码。对异议响应,它返回:

1 0 0 0 0 0 1 1 (十六进制83H)

除功能代码因异议错误作了修改外,从设备将一独特的代码放到响应消息的数据域中,这能告诉主设备发生了什么错误。

功数CRC校验 结束符 代据 n 个16Bit T1-T2-T3-T4 8Bit 16 页 共 59页

南华大学船山学院毕业设计(论文)

主设备应用程序得到异议响应后,典型的处理过程是重发消息,或者诊断发自从设备的消息并报告给操作员。

从主设备发给从设备消息的数据域包含附加的信息:从设备必须用于进行执行由功能代码所定义的行为。这包括了象不连续的寄存器地址,要处理项的数目,域中实际数据字节数。

例如,如果主设备需要从设备读取一组保持寄存器(功能代码03),数据域指定了起始寄存器以及要读的寄存器数量。如果主设备写一组从设备的寄存器(功能代码10 十六进制),数据域则指明了要写的起始寄存器以及要写的寄存器数量,数据域的数据字节数,要写入寄存器的数据。

2.2.2 多功能电能表通讯规约(DL/T645-1997)

国内江苏、浙江、上海地区的电表厂商采用多功能电能表通讯规约(DL/T645-1997)作为电表的远程控制通讯协议;这是一个在RS-485 网络中实现应用的行业标准[19-20]。

1.通讯字节格式 0 D0 D1 D2 D3 D4 D5 D6 D7 P 1 起始位0 8位数据D0~D7 偶校验位 停止位1

传送方向从低到高位,一个起始位、一个停止位、一个偶校验位、8 位数据位,总共11位。 2.通讯帧格式

帧起始符 (68H)地址域 (A0~A5)帧起始符 命令码 (C)数据长度 (L)数据域校验码 结束符 (68H) (DATA) (CS) (16H) 地址域 A0~A5:当地址位999999999999H 时,为广播地址,同时当从控制器接收到一帧数据时,地址域相同时应响应命令,取得总线控制权,当响应命令之后,应把总线控制权归还给主控器。

命令码:执行操作的依据。

校验码:帧开始各个字节二进制算术和,不计溢出值。

前导字节:在发送信息之前,发送1 个或多个字节FEH,以唤醒接收方。

17 页 共 59页

南华大学船山学院毕业设计(论文)

数据域:发送时数据加33H,接收时数据减33H。

2.3 RS-485 应用要点

1 合理选用芯片

合理地选择一个高效、合适的RS-485 收发器型号,可以有效减少电路设计、网络维护等后续阶段的工作量。

2 终端匹配电阻

为了匹配网络的通讯阻抗,减少由于不匹配而引起的反射、吸收噪声,有效抑制噪声干扰,提高RS-485 通讯的可靠性,需要在RS-485 网络的2 个端点各安装1 个终端匹配电阻。终端匹配电阻的大小由传输电缆的特性阻抗所决定。例如,RS-485 网络通常采用双绞线或屏蔽双绞线作为传输介质,其特性阻抗为120Ω,因此,RS-485 总线上的两个端点也应各安装1 个120Ω的终端匹配电阻。

2.4 本章小结

本章围绕RS485标准、通信规约、应用要点几个方面,详细介绍RS485

协议规范。其中RS485标准介绍了从RS232到RS485的演变由来及它们的区别,通信规约部分则介绍了多功能电能表通讯规约(DL/T645-1997)和ModBus 协议(RTU 模式),应用要点则是从芯片选择和终端电阻匹配两方面进行介绍的。接下来的系统软件设计和硬件设计都是基于RS485通信协议设计的。

18 页 共 59页

南华大学船山学院毕业设计(论文)

3 基于RS485通信远程采集与控制器的硬件设计

本章介绍了主从机硬件电路部分的设计,主要从单片机应用电路、电源稳压电路、AD采集电路、DA电路、RS485接口电路、继电器控制电路几个部分的硬件设计进行介绍。

3.1 硬件系统总体设计

系统硬件电路主要由单片机应用电路、电源稳压电路、AD采集电路、DA电路、RS485接口电路、继电器控制电路组成。其中单片机应用电路为整个系统的核心,整个系统的控制由单片机进行处理。在该系统中,单片机是整个系统的核心,整个系统运行的控制由单片机进行处理。它即协调整机工作,又是数据处理器,是软硬件系统连接的桥梁。将编译好的程序通过下载接口烧录到单片机后,而单片机连接外部各个器件,统一处理接收到的数据和传送指令到各个器件以便执行相关程序。继电器控制电路作为开关与RS485接口电路配合负责主机对从机的控制。AD电路负责3路节点信号的采集工作,DA电路负责2路模拟控制量的反馈工作。图3.1为硬件设计系统框图。

图3.1

电源稳 硬件设计系统框图 压电路 第

19 页 共 59页 单片机 应用电路 RS485接口电路 3组AD 南华大学船山学院毕业设计(论文)

3.2 单片机应用电路

本系统的设计是以

STC12C5410AD单片机为核心部件,STC12C5410

系列单片机是由宏晶科技生产的单时钟/机器周期(1T)的兼容8051内核单片机,是高速/低功耗的新一代8051单片机,全新的流水线/精简指令集结构,内部集成MAX810专用复位电路。其主要性能特点如下:

1.增强型1T流水线/精简指令集结构8051CPU。

2.工作电压:5.5V~3.4V(5V单片机)/3.8V~2.0V(3V单片机)。 3.工作频率范围:0~35MHz,相当于普通8051的0~420MHz。 4.用户应用程序空间12K/10K/8K/6K/4K/2K字节。 5.片上集成512字节RAM。

6.通过I/O口(27/23个),复位后为:准双向口/弱上拉(普通8051传统I/O口)可设置成四种模式:准双向口/弱上拉,推挽/强上拉,仅为输入/高阻,开漏。

7.ISP(在系统可编程)/ASP(在应用可编程),无需专用编程器可通过串口(P3.0/P3.1)直接下载用户程序,数秒即可完成一片。

8.EPROM功能。 9.看门狗。

10.内部集成MAX810专用复位电路(外部晶振20M以下时,可省外部复位电路)。

11.时钟源:外部高精度晶体/时钟,内部R/C振荡器 用户在下载用户程序时,可选择是使用内部R/C振荡器还是外部晶体/时钟 常温下内部R/C振荡器频率为:5.65MHz~5.95MHz精度不高时,可选择使用内部时钟,但因为有温漂,应认为是5MHz~6.5MHz。

12.共2个16位定时器/计数器。

13.PWM(4位)/PCA(可编程计数器阵列),也可用来在实现4个定时器。 14.ADC,10位精度ADC,共8路。 15.通用异步串行口(UART)。 16.SPI同步通信口,主模式/从模式。 17.工作温度范围:0~75℃/-40~+85℃。

20 页 共 59页

南华大学船山学院毕业设计(论文)

18.封装:PDIP-28,SOP-28,PDIP-20,SOP-20,PLCC-32,TSSOP-20(超小封状 6.4mm× 6.4mm,定货)本系统采用的是POSP-28封装单片机。

3.2

STC12C5410AD单片机封装

STC12C5410AD单片机中包含中央处理器、程序存储器(Flash)、数

据存储器(RAM)、EEPROM、定时/计数器、I/O接口、UART接口和中断系统、SPI接口、高速A/D转换模块、PWM(或捕捉/比较单元)以及硬件看门狗、电源监控、片内RC振荡器等模块。可以说STC12C5410AD单片机几乎包含了数据采集和控制中所需的所有单元模块,可称得上一个片上系统(SOC),可以很容易地构成典型的测控系统。

STC12C5410AD 带 A/D 转换的单片机在 P1 口,有 8 路 10 位高速 A/D 转换器, 速度可达 100KHz。P1.7 - P1.0 共 8 路电压输入型 A/D,可做温度检测、电池电压检测、按键扫描、频谱检测等。上电复位后 P1 口为弱上拉型 I/O 口,用户可以通过软件设置将 8 路中的任何一路设置为 A/D 转换,不需作为 A/D 使用的口可继续作为 I/O口使用。需作为 A/D使用的口需先将其设置为高阻输入或开漏模式。

STC12C5410AD单片机的参考电压源是输入工作电压Vcc,所以一般不用外接参考电压源。如7805 的输出电压是 5V,但实际电压可能是 4.88V 到 4.96V,用户需要精度要求比较高的话,可在出厂时将实际测出的工作电压值记录在单片机内部的 EEPROM 里面,以供计算。如果有些用户的Vcc不固定,如电池供电,电池电压在 5.3V-4.2V 之间漂移,则Vcc不固定,就需要在 8 路 A/D转换的一个通道外接一个稳定的参考电压源,来计算出此时的工作电压Vcc,再计算出其他几路 A/D转换通道的电压。

21 页 共 59页

南华大学船山学院毕业设计(论文)

图3.3为STC12C5410AD单片机的最小系统:

图STC12C5410AD单片机最小系统

3.3 电源模块电路

能否给单片机提供稳定可靠的电源是影响单片机工作的一个重要因素,由于本设计对检测的精度要求较高,因此需要设计一个稳定可靠的电源以使单片机正常稳定的工作。此模块将日常常见的12V电源转化为适合单片机的5V电源。电源模块电路如图3.4所示。

3.3

22 页 共 59页

南华大学船山学院毕业设计(论文)

图 3.4 电源模块电路

该电源电路的设计应用到了LM7805,LM7805是一个三端正5V稳压器(1A),三端稳压器是一种标准化、系列化的通用线性稳压电源集成电路,以其体积小、成本低、性能好、工作可靠性高、使用简捷方便等特点,成为目前稳压电源中应用最为广泛的一种单片式集成稳压器件。LM7805能提供固定的输出电压,应用范围广,内含过流、过热和过载保护电路。带散热片时,输出电流可达 1A。虽然是固定稳压电路,但使用外接元件,可获得不同的电压和电流。

图3-4所示电路为输出电压+5V的稳压电源,图中C8、C10用来实现频率补偿,防止稳压器产生高频自激震荡和抑制电路引入的高频干扰。C9为电解电容,以减少稳压电源输出端由输入电源引入的低频干扰。D17是保护二极管,当输入短路时,给输出电容器C9一个通路,防止稳压器件损坏。电路的工作原理为:12V接入后,在固定式三端稳压器LM7805的IN和GND两端形成一个并不十分稳定的直流电压。此直流电压经过LM7805的稳压和C9的滤波便在稳压电源的输出端产生了精度高、稳定度好的直流输出电压,为单片机的正常工作提供可靠的保证。

3.4 主从机RS485接口电路设计

本系统使用的串行通信总线标准接口是RS-485串行接口,RS-485接口电路用到的发送器、接收器芯片是MAX485,发送器的A、B引脚和接收器的A、B引脚是对应连接的,在收发器中会出现这种情况,它只能用于半双工通信。具体的电路连接图见图3.5所示 。

23 页 共 59页

南华大学船山学院毕业设计(论文)

图3.5 RS485接口电路

本系统采用的MAX485接口芯片是Maxim公司的一种RS485芯片。该

芯片采用单一电源+5V工作,额定电流为300uA,采用半双工通讯方式。它完成将TTL电平转换为RS485电平的功能。其引脚结构图见图3.6所示。从图中可以看出,MAX485芯片的结构和引脚都非常简单,内部包含有一个驱动器和接收器,RO和DI端分别为接收器的输出和驱动器的输入端,与单片机连接时只需分别与单片机的RXD和TXD相连即可;RE和DE端分别为接收和发送的使能端,当RE为逻辑0时,器件处于接收状态;当DE为逻辑1时,器件处于发送状态,因为MAX485工作在半双工状态,所以只需用单片机的一个管脚控制这两个引脚即可;A端和B端分别为接收和发送的差分信号端,当A引脚的电平高于B时,代表发送的数据为1;当A引脚的电平低于B时,代表发送的数据为0。在与单片机连接时接线非常简单,只需要一个信号控制MAX485的接收和发送即可,同时将A和B端之间加匹配电阻,一般可选100Ω的电阻。本系统选用的是120Ω的电阻。

_____

_____

24 页 共 59页

南华大学船山学院毕业设计(论文)

图3.6 MAX485引脚图和典型工作电路

表3.1为MAX485接口芯片的收发器的逻辑真值表,它们便于半双工的通信接口电路使用。半双工的通信方式可以实现多节点的对等通信网络。需要注意的是,收发器的发送器和接收器共用总线,所以接收信号和输出信号都用A和B表示。

表3.1 MAX485收发器逻辑功能表

收发器发送收发器接收逻辑功能 逻辑功能 输入 输出 输入 输出 RED DA B RED A-B RE I E O 1 1 1 1 0 0 0 ≥+0.1 2V 1 1 0 0 1 0 0 ≤-0.0 2V 1 0 X 高高0 0 输入1 阻 阻 开路 1 0 X 高阻 ______从信号通路来说,AD变换之前是模拟电路,之后是数字电路。模拟电路和AD变换电路决定了系统的信噪比,而这是评价采集系统优劣的关键参数。为了提高信噪比,抑制系统中噪声对模拟和AD电路的干扰,本系统的MAX485接

25 页 共 59页

南华大学船山学院毕业设计(论文)

口电路中单片机串行数据接收端RXD、单片机串行数据发送端TXD与MAX485使能端RS485E分别先连接到6N137光耦合器上。

高速光电耦合器6N137 由磷砷化镓发光二极管和光敏集成检测电路组成。具有温度、电流和电压补偿功能,高的输入输出隔离,LSTTL/TTL兼容,高速(典型为10MBd),5mA的极小输入电流。通过光敏二极管接收信号并经内部高增益线性放大器把信号放大后,由集电极开路门输出。6N137引脚图和内部结构图如图3-7所示。该光电器件高、低电平传输延迟时间短,典型值仅为45ns ,已接近TTL 电路传输延迟时间的水平。具有10Mbps的高速性能,因而在传输速度上完全能够满足隔离总线的要求。内部噪声防护装置提供了典型10kV/μs的共模抑制功能。除此之外,6N137 还具有一个控制端,通过对该端的控制, 可使光耦输出端呈现高阻状态。

图3.7 6N137光耦合器

的内部结构、管脚如图

6N137管脚说明如下:2脚和3脚为输入端:2:Anode(阳极),3:Cathode(阴极)。5脚为接地端。6脚为输出端 Output(Open collector开路集电极);7脚为Enable(使能端);8脚电源端。

信号从脚2和脚3输入,发光二极管发光,经片内光通道传到光敏二极管,反向偏置的光敏管光照后导通,经电流-电压转换后送到与门的一个输入端,与门的另一个输入为使能端,当使能端为高时与门输出高电平,经输出三极管反向后光电隔离器输出低电平。当输入信号电流小于触发阈值或使能端为低时,输出高电平,但这个逻辑高是集电极开路的,可针对接收电路加上拉电阻或电压调整电路。

26 页 共 59页

南华大学船山学院毕业设计(论文)

3.5 继电器控制电路

系统中主机从机数据采集的控制是通过2路继电器控制电路实现的,继电器控制电路在本系统中起着“开关”作用:主机信号通过主机部分的485总线传输给从机,从机根据接收到的主机信号进行数据采集和反馈工作。本系统的2路继电器控制电路如图3.8所示

图3.8 2路继电器控制电路

其中的TLP521-2为光电隔离器,光耦合器的结构相当于把发光二极管和光敏(三极)管封装在一起。发光二极管把输入的电信号转换为光信号传给光敏管转换为电信号输出,由于没有直接的电气连接,这样既耦合传输了信号,又有隔离干扰的作用。使电路之间的信号传输,前端与负载完全隔离,目的在于增加安全性,减小电路干扰,优化电路设计。当JiDian1脚(单片机上的P24脚)为低电平时二极管导通发光,接着三极管导通,这是7脚输出高电平,致使T1导通,此后开关K1合上并且指示灯亮,从而控制AD/DA电路的数据采集与反馈工作。D19是保护二极管。

27 页 共 59页

南华大学船山学院毕业设计(论文)

3.6 2路DA转换电路

3.6.1 TLC5615简介

本系统的2路DA转化电路都用到了TLC5615芯片,TLC5615是一个串行10 位DAC芯片,性能比早期电流型输出的DAC要好。只需要通过3根串行总线就可以完成10位数据的串行输入,易于和工业标准的微处理器或微控制器(单片机) 接口,适用于电池供电的测试仪表、移动电话,也适用于数字失调与增益调整以及工业控制场合。其主要特点如下:

 单5V 电源工作;  3线串行接口;  高阻抗基准输入端;

 DAC 输出的最大电压为2倍基准输入电压;  上电时内部自动复位;

 微功耗,最大功耗为1.75mW ;  转换速率快,更新率为1.21MHz ;

小型(D) 封装TL C5615CD 和塑料DIP(P) 封装TLC5615CP的工作温度范围均为0℃~70℃;而小型(D)封装TL C5615ID和塑料DIP(P) 封装TLC5615IP的工作温度在-40 ℃~85℃的范围内。

3.6.2 TLC5615功能框图

TLC5615 的内部功能框图如图3.9所示,它主要由以下几部分组成:

(1) 10 位DAC 电路;

(2) 一个16 位移位寄存器, 接受串行移入的二进制数,并且有一个级联的数据输出DOUT ;

(3) 并行输入输出的10 位DAC 寄存器, 为10位DAC 电路提供待转换的二进制数据;

(4) 电压跟随器为参考电压端REFIN 提供很高的输入阻抗,大约10MΩ; (5) 2 电路提供最大值为2 倍于REFIN 的输出;

28 页 共 59页

南华大学船山学院毕业设计(论文)

(6) 上电复位电路和控制电路。

图3.9 TLC5615 的内部功能框图 3.10 TLC5615 的TLC5615 的引脚分布图3.6.3 TLC5615引脚功能

8 脚直插式TLC5615 的引脚分布如图3.10 所示。 各引脚功能如下:

 DIN ,串行二进制数输入端;  SCLK ,串行时钟输入端;  CS ,芯片选择,低有效;

 DOUT ,用于级联的串行数据输出;  GND ,模拟地;

 REFIN ,基准电压输入端;  OUT ,DAC 模拟电压输出端;  VDD ,正电源电压端。

3.6.4 TLC5615推荐工作条件

 VDD ,4.5~5.5V ,通常取5V ;

29 页 共 59页

南华大学船山学院毕业设计(论文)

 高电平输入电压:不得小于2.4V ;  低电平输入电压,不得高于0.8V ;

 基准输入电压: 2V~ (VDD - 2) ,通常取2.048V ;  负载电阻:不得小于2kΩ。

3.6.5 TLC5615的时序

TLC5615 工作时序如图3. 11所示。可以看出,只有当片选CS 为低电平时, 串行输入数据才能被移入16 位移位寄存器。当CS 为低电平时,在每一个SCL K 时钟的上升沿将DIN 的一位数据移入16位移寄存器。注意, 二进制最高有效位被导前移入。接着,CS 的上升将16 位移位寄存器的10 位有效数据锁存于10 位DAC 寄存器, 供DAC 电路进行转换; 当片选CS 为高电平时,串行输入数据不能被移入16 位移位寄存器。注意, CS 的上升和下降都必须发生在SCL K 为低电平期间。从图中可以看出,最大串行时钟速率为:

f( sclk ) max =1/ tw ( CH ) + tw( CS )≈14MHz

图3.11 TLC5615 工作时序如图

3.6.6 TLC5615的两种工作方式

从图3-9可以看出, 16位移位寄存器分为高4位虚拟位、低2位填充位以及10位有效位。在单片TLC561工作时, 只需要向16位移位寄存器按先后输入10位有效位和低2位填充位, 2位填充位数据任意,这是第一种方式,即12位数据序列。第二种方式为级联方式, 即16位数据序列, 可以将本片的DOUT接到下一片的DIN,

30 页 共 59页

南华大学船山学院毕业设计(论文)

需要向16位移位寄存器按先后输入高4位虚拟位、10位有效位和低2位填充位, 由于增加了高4位虚拟位, 所以需要16个时钟脉冲。无论工作在哪一种方式,输出电压为:

VOU = VREFIN ×N / 1024

其中, VREFIN是参考电压, N 为输入的二进制数。

3.6.7 DA电路

图3.12是本系统的两路DA转换电路及两路稳压电路图:

图3.12 两路DA转换电路及两路稳压电路

其中电压源VCC(最大5V)经过电阻的分压后变为

1VCC的基准电压,2D3、

D4为保护二极管。由于系统要求能提供最大10V的输出反馈,而单片机最大只能输出5V电压,因此稳压电路中用到LM358运放。LM358里面包括有两个高增益、独立的、内部频率补偿的双运放,适用于电压范围很宽的单电源,而且也适用于双电源工作方式,它的应用范围包括传感放大器、直流增益模块和其他所有可用单电源供电的使用运放的地方使用。从INN1+输入的最大5V的信号Vi1经过2倍放大后从OUT1输出(此时输出最大为10V),OUT1脚与INT2+相连在此段经过1:1放大,最终从OUT2输出最大10V的信号。

31 页 共 59页

南华大学船山学院毕业设计(论文)

3.7 3路AD转换电路

图3.13为系统的AD转换电路:

图3.13 3路AD转换电路

由于STC12C5410AD 带有 8 路 10 位高速 A/D 转换器,因此不再另用AD转换芯片,直接用单片机的P10、P11、P12采集3路节点信号。AD转换电路同样用到了LM358双运算放大器,两组信号分别送入U8处理,剩下的一组送入U9处理,最后经过电阻的分压把输出电压降为原电压的一半,在送入单片机处理。

3.8 本章小结

本章设计了以STC12C5410AD单片机为核心的基于RS485通信的远程数据采集与控制器,根据系统要求确立了3路数据采集电路、2路数据反馈电路、2路继电器控制电路。并且在不通过RS485总线的情况下系统也能进行2路继电器开关控制、反馈2路本地模拟控制量和采集3路本地节点信号的工作。

32 页 共 59页

南华大学船山学院毕业设计(论文)

4 基于RS485通信远程采集与控制器的软件设计

本章主要介绍主机和从机的软件设计,整个系统软件采用模块化和结构化设计方法。本章从软件的角度论述远程采集与控制器系统的实现,论述的内容包括软件系统的通信协议、整体设计与实现、系统的初始化、RS485总线程序、继电器控制程序、DA输出控制程序、AD采集程序的设计。

4.1 通信协议的设计

对于任何涉及数据接收和发送的系统,通信协议的设计都是软件设计的前提和关键。对于协议设计而言,最重要的就是数据帧结构的设计。除了数据帧结构的定义外,整个系统的通信还需要遵守下面的规则:

(1)主机主导整个通信过程。由主机判断从机是否按下发送准备好按键,从机发送准备好信号后,主机要求这些从机提交其相对应设备的状态信息。 (2)主机在发送完准备好命令后,进入接收状态。

(3)主机接收到从机的返回命令帧后,发送“等待接收”指令,进入接收状态。

(4)从机复位后,将等待主机发送指令,并根据具体的指令内容做出应答。

本系统的数据传输有以下特点:

(1) AD采样部分,采用10位ADC,DA输出部分,采用10位DAC。 (2)数据统一使用9600波特率,若传输距离超过200米,可考虑降低波特率。

(3)接收数据帧:一共15字节,包括起始字节、结束字节、地址、两路DAC输出数据等。模块接收数据帧格式如表4.1所示:

表4.1 基于RS485总线的远程采集与控制系统

接收帧格式表

数据位置(第n字节) 0 1 2 3 4 5 6 7

33 页 共 59页

南华大学船山学院毕业设计(论文)

功能 起始字节 数据位置(第n字节) 功能 8 预留字节 发送控制 10 预留字节 1路DA输出值高2位 11 继电器控制 1路DA输出值低8位 12 结束字节 2路DA输出值高2位 2路DA输出值低8位 预留空间 地址 9 预留字节 预留字节表示为以后功能扩展准备的空间,为无效数据。

(4)发送数据帧:模块将测得的数据发送给主机,3~7字节是发送当前该模块的输出值,以供主机读取。数据的详细格式,如表4.2所示:

表4.2 基于RS485总线的远程采集与控制系

统发送帧格式表

数据位置 功能 起始字节固定0Xaa 地址 起始字节 固定0X00 0 1 2 3 1路DA输出值高2位 4 1路DA输出值低8位 5 2路DA输出值高2位 6 2路DA输出值低8位 17 路ADC测量值高2位 15 数据位置 功能 8 1路ADC测量值低89 2路ADC测量值高 10 2路ADC测量值低位 11 3路 12 3路ADC测量值低8 13 1个或多个按键按 14 结束字节固定0X55 ADC测量值高2位 位 2位 8位 下的键值 起始字节定义为“0xaa”,结束字节定义为“0x55”当起始字节跟结束字节有误时,从机都收不到数据。

地址字节实际上存放的是从机对应的设备号,此设备号在一开始就由拨码开关组S3予以设置。由于只用了一个字节作为地址位,因此地址范围为0~255。当从机数量大于256台时,可考虑用几个字节作为地址位(虽然RS485通信允许的最大从机数为32台,但使用特殊的RS485收发器芯片可突破此限制,比如,本设计采用的MAX485芯片,最大从机数可达到256台)。在工作时,每一个设备都按规定设置好,一般不会改动,改动时重新设置开关即可得到,但要注意设置时应该避免地址重复。

主从机通信时,主机先判断S3开关是否按下,按下说明主机已准备好发送数据,这时主机才开始接向从机发送数据。从机发来的数据帧中前2字节分别为起始字节,从机地址(即发送数据给哪台从机)。由于DAC输出数据为10位,

34 页 共 59页

南华大学船山学院毕业设计(论文)

而一字节只有8位,为此DAC输出的高八位与低2位分开存放,从机接收时再去相应位去取出还原。

主机发送数据程序语句如下:

send[3]=DAC1/0xff; // send[3]存放DAC1高8位 send[4]=DAC1%0xff; // send[4]存放DAC1低2位 send[5]=DAC2/0xff; // send[5]存放DAC2高8位 send[6]=DAC2%0xff; // send[6]存放DAC2低2位

从机接收数据程序语句如下:

DAC1 = Data_buf[3]*4+Data_buf[4];// 取Data_buf[3]作为DAC1的高8位,Data_buf[4] 作为DAC1的低2位

DAC2 = Data_buf[5]*4+Data_buf[6]; // 取Data_buf[5]作为DAC1的高8位,Data_buf[6] 作为DAC1的低2位

4.2 主程序流程

4.2.1 主机主程序流程

主机端软件主要是进行通信接口部分和数据采集和控制部分的设计。主机一边侦察从机是否有数据发送过来,一边向从机发送控制命令。每按下一次S3按键主机就像从机发送一次控制命令。当没有按键按下时,主机一直侦察从机是否有数据发送过来。只有S3按键按下,并且RS485总线为发送状态时主机才向从机发送控制命令,因此整个数据发送阶段分为了准备发送阶段和发送阶段。只有总线为发送状态时主机才向从机发送数据,因此从机发送过来的数据应先存放在临时数据存放区,判断RS485总线为发送状态时才送到从机进行数据处理。从机发过来的数据也是先放在临时数据存放区,判断满足通信协议后才接收。

主要的流程是:首先对相关参数及函数的设定,设置各个缓冲区。一开始RS485总线设置为接收模式,进行系统初始化,设置串行中断为高优先级,然后进入死循环。判断准备发送按键是否按下,再发送数据,数据发送后判断总线是否为准备接收状态,最后接收数据。图4.1为主机系统主程序流程图:

35 页 共 59页

南华大学船山学院毕业设计(论文)

开始设置总线为接收状态系统初始化设置串口中断为高优先级LED灯亮按键是否按下Y准备发送数据N发送数据N是否为接收状态YN是否满足通信协议Y从机识别接收数据

图4.1 主机系统主程序流程图

主要的程序代码如下:

void main () {

36 页 共 59页

南华大学船山学院毕业设计(论文)

uchar i;

uchar Data_buf[Rcv_Lenth]; uchar JiDian1=0,JiDian2=0;

//存放从从机接收的数据 //继电器开

uint AIN1=55, AIN2=66, AIN3=77, DAC1=128, DAC2=255;

i=0;

RS485_Rcv_Mode();

System_Init(); //系统初始化 PS=1;//PSH=1;// 优先级设置 LED1=0; LED2=0; while (1) {

if(S3==0) {

send[0] = 0xaa; //起始字节 send[1] = 0x2b; //地址 send[2] = 0xff; //起始字节

RS485_Rcv_Mode();

/*DAC输出控制,由于DAC输出数据为10位,而一字节只有8位,为此DAC输出的高

}

// 发送数据出去 if(RS485_Send_Flag) {

if(Rflag==0)

{

DAC1+=20; DAC2+=40;

if(DAC1>=1023)DAC1=1023; if(DAC2>=1023)DAC2=1023;

send[3]=DAC1/0xff;// send[3]存放DAC1高8位 send[4]=DAC1%0xff;// send[4]存放DAC1低2位 send[5]=DAC2/0xff; send[6]=DAC2%0xff; // 继电器输出

if(JiDian1==0) JiDian1 = 1; else JiDian1 = 0;

send[11] = 1<<4|JiDian1; //起始字节 // RS485发送数据

send[12] = 0x55; //结束字节 RS485_Send_Flag=1; delay_ms(150);

// 按键去抖

八位与低2位分开存放,从机接收时再去相应位去取出还原*/

37 页 共 59页

南华大学船山学院毕业设计(论文)

}

}

Max485_send_data(send); RS485_Send_Flag=0;

if(Rflag == 1) {

delay_ms(13);

for(i=0;i}

{ Data_buf[i]=receive[i];

} Rnum=0; Rflag = 0;

if((Data_buf[0] == 0xaa) && (Data_buf[14] == 0x55))//若满足通信协议

{ LED2=~LED2;

/*判断从机编号 if(Data_buf[1]==1) {

DAC1 = Data_buf[3]*4+Data_buf[4]; DAC2 = Data_buf[5]*4+Data_buf[6]; AIN1 = Data_buf[7]*4+Data_buf[8]; AIN2 = Data_buf[9]*4+Data_buf[10]; AIN3 = Data_buf[11]*4+Data_buf[12];

}

else if(Data_buf[1]==2)

{ DAC1 = Data_buf[3]*4+Data_buf[4]; DAC2 = Data_buf[5]*4+Data_buf[6];

AIN1 = Data_buf[7]*4+Data_buf[8]; AIN2 = Data_buf[9]*4+Data_buf[10]; AIN3 = Data_buf[11]*4+Data_buf[12];

}

} }

38 页 共 59页

南华大学船山学院毕业设计(论文)

4.2.2 从机主程序流程

从机端软件包括数据采集和RS-485总线通信程序,其中数据采集部分可以设计成一个函数,在主程序中调用即可。从机接收主机发送过来的控制信息,再根据控制信息进行数据采集工作。与主机主程序不同的是从机向主机发送数据第一次是通过按键方式,以后的每次都是通过定时器中断。只有S3按键按下或是定时器中断到来时,并且RS485总线为发送状态时主机才向主机发送数据,因此整个数据发送阶段分为了准备发送阶段和发送阶段。只有满足通信协议并且接收地址为本机地址时从机才接收主机发送过来的控制信息,因此主机发送过来的控制信息应先存放在一临时数据存放区,判断满足通信协议后才送到单片机进行数据处理。

从机总的流程是:首先对相关参数及函数的设定,设置各个缓冲区。一开始RS485总线设置为接收模式,进行系统初始化,设置串行中断为高优先级,然后进入死循环。判断准备发送按键是否按下,发送数据,判断总线是否为准备接收状态,接收数据,判断为那路继电器开关,继电器开或关操作。下图为主机系统主程序流程图:从机所控制的主程序流程图如图4.2所示。

39 页 共 59页

南华大学船山学院毕业设计(论文)

开始设置总线为接收状态系统初始化设置串口中断为高优先级LED灯亮读取3通道AD值并处理按键是否按下Y准备发送数据N发送数据N是否为接收状态YN是否满足通信协议YN是否本机地址Y接收数据继电器识别继电器开关操作

40 页 共 59页

南华大学船山学院毕业设计(论文)

图4.2 从机主程序流程图

主要的程序代码如下:

void main () {

LED1=0; LED2=0; abc = 255; dac_5615_1(abc); dac_5615_2(abc);

//TLC芯片自带程序,功能是完成abc的数模转换

unsigned int abc=0; uchar i;

uint DAC1=128, DAC2=255; INT16U ADC_10bit; ADC_10bit = 0; RS485_Rcv_Mode();

System_Init(); //系统初始化

i=0;

/*单片机每次上电都给一初始值,使其完成两路变换*/

// 读取所有通道AD值,并进行数据处理 Read_All_ADC(); P1M1 = 0x07; P1M0 = 0x07; {

if(key_Flag)

{

delay_ms(50); key_Flag=0; LED2=!LED2;

send[0] = 0xaa; //起始字节 send[1] = MY_ADD; //地址 send[2] = 0x00; //起始字节 send[3] = DAC1>>2; //存入ADC值 send[4] = DAC1&0x03; send[5] = DAC2>>2; send[6] = DAC2&0x03;

send[7] = AIN1>>2; //存入ADC值 send[8] = AIN1&0x03; send[9] = AIN2>>2;

RS485_Rcv_Mode(); while (1)

Read_All_ADC();

41 页 共 59页

南华大学船山学院毕业设计(论文)

send[10] = AIN2&0x03; send[11] = AIN3>>2; send[12] = AIN3&0x03; send[13] = key; key = 0;

send[14] = 0x55;// 结束字节

Max485_send_data(send); }

if(Times50ms_Flag==1) {

send[0] = 0xaa; //起始字节 send[1] = MY_ADD; //地址 send[2] = 0x00; //起始字节 send[3] = DAC1>>2; //存入ADC值

send[4] = DAC1&0x03;// send[3]存放DAC1高8位,send[4]存放send[5] = DAC2>>2; send[6] = DAC2&0x03;

send[7] = AIN1>>2; //存入AIN值 send[8] = AIN1&0x03; send[9] = AIN2>>2; send[10] = AIN2&0x03; send[11] = AIN3>>2; send[12] = AIN3&0x03; send[13] = key; key = 0;

send[14] = 0x55;// 结束字节

LED3 = !LED3; times_1s = 0; Times50ms_Flag = 0;

// 读取所有通道AD值,并进行数据处理 Read_All_ADC();

delay_ms(50);

flag_sec = 0;

/*把两路主机发来的DA信号再发给主机*/

DAC1高2位

/*把3路从机机采集的AD信号发给主机*/

if(Rflag==0) {

if(senddata_EN==1) {

Max485_send_data(send);

LED1 = ~LED1;

42 页 共 59页

南华大学船山学院毕业设计(论文)

} } }

}

if(Rflag == 1) { { } }

LED2 = !LED2; // 首先判断地址

if(receive[1] == MY_ADD) { }

DAC1 = receive[3]<<2 + receive[4]; DAC1 = receive[5]<<2 + receive[6]; dac_5615_1(abc); dac_5615_2(abc); // 2路继电器控制 if(receive[11] == 0x11) {

Relay1 = 0; }

else if(receive[11] == 0x10) {

Relay1 = 1; }

if(receive[11] == 0x21) {

Relay2 = 0; }

else if(receive[11] == 0x20) {

Relay2 = 1; }

delay_ms(13); Rnum=0; Rflag = 0;

//若满足通信协议

}

if((receive[0] == 0xaa) && (receive[12] == 0x55))

//接收主机发的两路10位信号

43 页 共 59页

南华大学船山学院毕业设计(论文)

4.3系统初始化

4.3.1 主机系统初始化

主机系统初始化模块包括延时1ms函数、定时器0初始化函数、外部中断0

初始化函数、MAX485初始化函数、串口中断初始化函数、串口中断定义函数等几个小函数。系统初始化流程图如图4.3所示:

开按键标初始两 初始2路 MAX485初始化 定时器0初始化 外部中断0初始 结束

图4.3 主机系统初始化流程图

主要程序代码如下: void System_Init(void)

{

key_Flag = 0; LED1 = 1; LED2 = 1;

Relay1 = 1; Relay2 = 1;

//初始化继电器关 //初始化继电器关

Max485_Init(); //MAX485初始化 Time0_Init(); //定时器0初始化 EINT0_Init(); //外部中断1初始化

44 页 共 59页

南华大学船山学院毕业设计(论文)

}

//定时器初始化 void Time0_Init(void) { }

// 外部中断初始化,下降沿触发 void EINT0_Init(void) {

EX0=1; //外部中断0开 IT0 = 1; // 下降沿触发 EA=1; }

void serial(void) interrupt 4 using 1 //定义串口中断 {

EA=0; if(TI == 1) TI = 0; if(RI == 1) {

Rflag = 1; RI = 0;

receive[Rnum++] = SBUF; if(receive[0]==0xaa) {

if(Rnum >= Rcv_Lenth) Rnum=0; } else { Rflag = 0; Rnum=0; } } EA=1; }

void Time0_interrupt(void) interrupt 1 using 1 {

TH0=(65536-50000)/256; //定时器0定时50ms TL0=(65536-50000)%256;

EA=1; //开启中断总开关 ET0=1; //开启定时器0中断开关 TMOD=0x21;

//选择定时器工作方式二

TH0=(65536-50000)/256; //定时器0定时50ms TL0=(65536-50000)%256;

TR0=1; //开启定时器

45 页 共 59页

南华大学船山学院毕业设计(论文)

{ } }

times_50ms++;

if(times_50ms == 20) //1s times_50ms = 0;

flag_sec = 1; times_1s ++;

SYS_SEC++;

4.3.2 从机系统初始化

从机机系统初始化模块大体跟主机系统初始化一样,也包括延时1ms函数、定时器0初始化函数、外部中断0初始化函数、MAX485初始化函数、串口中断初始化函数、串口中断定义函数等几个小函数,只是最后多了AD转换初始化。系统初始化流程图如图4.4所示:

46 页 共 59页

南华大学船山学院毕业设计(论文)

开按键标志初始两 初始2路继MAX485初定时器0外部中断打开AD转设置AD采样IO结图4.4 从机系统初始化流程图

主要程序代码如下:

void System_Init(void) {

key_Flag = 0; LED1 = 1; LED2 = 1;

Relay1 = 1; //初始化继电器关 Relay2 = 1; //初始化继电器关 Max485_Init(); //MAX485初始化 Time0_Init(); //定时器0初始化 EINT0_Init(); //外部中断1初始化 PS=1;

ADC_CONTR |= 0x80; //1000,0000 打开 A/D 转换电源 P1M1 = (1<<0) | (1<<2) | (1<<3); // 设置AD采样 IO口为高阻输出 P1M1 = 0x07; P1M0 = 0x07; }

47 页 共 59页

南华大学船山学院毕业设计(论文)

4.4 RS485总线的程序设计

本系统设计的RS485总线的程序设计是为主程序数据的发送和接收服务的。主机RS485总线的程序设计部分跟从机程序RS485总线的程序设计部分相同。RS485总线程序包括以下独立函数:设置485总线接受和发送状态函数、发送位数据函数、发送数据函数。函数代码如下:

/*设置485总线为接受状态*/ void RS485_Rcv_Mode(void) {

Max485_EN = 0; }

/*设置485总线为接受状态*/ void RS485_Send_Mode(void) {

Max485_EN = 1; }

/*发送1位数据*/

void Max_485_ByteSend(unsigned char dat) {

ES=0; //设定发送数据不进中断 }

/*发送Send_Lenth位数据*/

void Max485_send_data(unsigned char *buf) { int i;

RS485_Send_Mode(); }

for(i=0;iMax_485_ByteSend(buf[i]); }

TI=0;

SBUF = dat; //单片机发送数据

while(!TI); //等待数据发送,完缓冲区为空时TI由硬件置1,才退出循环 TI=0;

ES=1; //禁止串行中断

RS485_Rcv_Mode();

48 页 共 59页

南华大学船山学院毕业设计(论文)

4.5 继电器控制程序的设计

由于硬件中加入了2路继电器控制电路,因此在数据发送时把数据帧的第11位作为继电器控制位,在主从机接收和发送数据时通过对第11位进行特定的处理就可以实现远程控制功能。表4.3为继电器控制字节功能代码表:

表4.3 继电器控制字节功能代码表 代码 功能 代码 功能 0x10 0x11 继电器节点继电器节点开关1导通 开关1断开 0x20 0x21 继电器节点继电器节点开关2导通 开关2断开 在主机的发送数据时其程序语句如下:

send[11] = 1<<4|JiDian1;//1为从机地址,左移4位再与上继电器开关控制位 在从机的判断接收数据时其程序语句如下: if(receive[11] == 0x10) {

JiDian1 = 0;//地址1左移4为位或上0后刚好为0x10 }

else if(receive[11] == 0x11) {

JiDian1 = 1; //地址1左移4为位或上1后刚好为0x11 }

if(receive[11] == 0x20) {

JiDian2 = 0; //地址2左移4为位或上0后刚好为0x20 }

else if(receive[11] == 0x20) {

JiDian2 = 1; //地址2左移4为位或上1后刚好为0x21

}

49 页 共 59页

南华大学船山学院毕业设计(论文)

4.6 2路DA输出控制程序设计

硬件电路的2路DA输出反馈是有TLC5615芯片处理的,对应的程序设计部分应有TLC5615驱动程序。

其程序代码如下:

void dac_5615_1(uint data_in) { uchar i;

data_in <<= 6; /* 精度10位,所以左移6位 */ CS_1 = 0; SCLK_1 = 0;

//片选DA芯片

/* 逐位传递12次,由于10位传完需要传送2位0 */

/* data_in&0x8000相当于取data_in的从右边数第十个二进制位*/ for (i=0;i<12;i++) {

DIN_1 = (bit)(data_in&0x8000); SCLK_1 = 1;

data_in <<= 1; //下一位移到最高位

SCLK_1 = 0; //SCLK_1从1变为0,说明下降沿DA输出 }

CS_1 = 1; SCLK_1 = 0;

_nop_(); //延时程序 }

//片选DA芯片禁止

这段代码执行了12个循环,就是把data_in中的数字量转换为时间连续信号, data_in 0x8000相当于取data_in da的从右边数第十个二进制位,正好对应最大输出电压是基准电压值的两倍。

此程序的功能是向TLC5615写入数字信号,输出模拟信号。

4.7 3路AD采集程序设计

系统的AD采集功能是由单片机的P0口完成的,单片机对数据的AD转换是不断进行的,而且其转换结果会在一定范围波动,因此程序设计上应对其做专门的调整。其对应的程序流程图如下:

50 页 共 59页

南华大学船山学院毕业设计(论文)

开始 AD采集模块初始化 AD转换开始 获取AD转换结果 对AD转换结果采样 取AD转换结果中间值的最终结果 结束

图4.5 AD采集程序流程图

/*3路AD转换*/

INT16U get_AD_result(INT8U channel) {

ADC_DATA = 0;

channel &= 0x07; //0000,0111 清0高5位 ADC_CONTR = AD_SPEED;

ADC_CONTR = 0xE0; //1110,0000 清 ADC_FLAG, ADC_START 位和低 3 位

ADC_CONTR |= channel; //选择 A/D 当前通道 delay_ADC(1); //使输入电压达到稳定

ADC_CONTR |= 0x08; //0000,1000 令 ADCS = 1, 启动A/D转换, while (1) //等待A/D转换结束 {

if (ADC_CONTR & 0x10) //0001,0000 测试A/D转换结束否 { break; } }

ADC_CONTR &= 0xE7; //1111,0111 清 ADC_FLAG 位, 关闭A/D转换

return (ADC_DATA<<2) | ADC_LOW2; //返回 A/D 10 位转换结果 }

/*取得3路AD转换结果*/

INT16U GET_AD_Channel(INT8U channel) {

ADCtemp=0;

51 页 共 59页

南华大学船山学院毕业设计(论文)

if(channel==1) }

/*分别对3路AD转换取样,每得到8个数据,再对8个数据排序,最后取排序后的中间值,得到最终较准确的结果*/ void Read_All_ADC(void) {

for(i=0;iif(tmptab1[j]>tmptab1[j+1]) { }

if(tmptab2[j]>tmptab2[j+1]) { }

temp = tmptab2[j];

tmptab2[j] = tmptab2[j+1]; tmptab2[j+1] = temp; temp = tmptab1[j];

tmptab1[j] = tmptab1[j+1]; tmptab1[j+1] = temp;

{

for(j=0;j// 对三组数据排序 for(i=0;itmptab1[i] = GET_AD_Channel(1); tmptab2[i] = GET_AD_Channel(2); tmptab3[i] = GET_AD_Channel(3); { } {

ADCtemp=get_AD_result(1); } {

ADCtemp=get_AD_result(2); }

return ADCtemp;

ADCtemp=get_AD_result(0);

else if(channel==2)

else if(channel==3)

52 页 共 59页

南华大学船山学院毕业设计(论文)

}

}

}

if(tmptab3[j]>tmptab3[j+1]) { }

temp = tmptab3[j];

tmptab3[j] = tmptab3[j+1]; tmptab3[j+1] = temp;

// 取排序后的数据的中间值

AIN1 = tmptab1[ADC_paixu_num/2]; AIN2 = tmptab2[ADC_paixu_num/2]; AIN3 = tmptab3[ADC_paixu_num/2];

4.8 本章小结

本章根据上一章的硬件电路设计及系统功能要求,设计了系统的软件部分。

主要有两个软件模块,这两个模块又有着其各自的小模块,他们作为一个整体构成了系统的软件部分。软件与硬件配套,实现了系统的远程数据采集及控制功能。

53 页 共 59页

南华大学船山学院毕业设计(论文)

5 总结与展望

5.1 总结

通过本次研究,得到了部分结果,现总结如下:

(1)分析国内外远程数据采集和控制技术的发展现状,提出了一种切实可行的远程数据采集和控制器设计方案。

(2)设计了以STC12C5410AD单片机为核心的基于RS485通信的远程数据采集与控制器,根据系统要求确立了3路数据采集电路、2路数据反馈电路、2路继电器控制电路。并且在不通过RS485总线的情况下系统也能进行2路继电器开关控制、反馈2路本地模拟控制量和采集3路本地节点信号的工作。

(3)利用C语言分别完成了主机和从机的软件设计,包括对主程序模块、采集模块、数据控制模块的设计。

本系统的创新之处表现在:

(1)通信协议设计中地址字节实际上存放的是从机对应的设备号,此设备号在一开始就由拨码开关予以设置。在工作时,每一个设备都按规定设置好,通信时通过地址位识别从机 。这种方法简单有效,一般不出出现设备识别错误,并且可以通过增加地址位来增加系统最大支持的从机数量。

(2)单个主机或从机亦可完成3路本地数据采集,2路继电器开关控制工作。这在不增加设计成本的情况下,扩展了设计的应用范围。

5.2 展望

本系统所设计的远程数据采集与控制器只能完成远程数据采集与控制的基本功能,单系统设计的较简单,且软件设计部分通信协议部分只能通过从机按键主动向从机发送数据,离真正远程数据采集有一定差距。因此,今后应在以下几个方面充实和完善本设计:

(1)对现有数据采集电路进行扩充。本文在以STC12C5410AD单片机为

54 页 共 59页

南华大学船山学院毕业设计(论文)

核心的基于RS485通信的远程数据采集与控制器中,只采集到3路信号,STC12C5410AD单片机却提供了8个数据采集通道(P3口的8个脚),可以再此电路上继续增加采集电路来使系统有更多功能。

(2)设计完整的主从机通信协议。主机通过设置轮询时间片,获取从机节点设备状态变化。而不是主机一直等待少数的几台从机主动发来发回节点信号。增加数据校验,提高通信可靠性。

55 页 共 59页

南华大学船山学院毕业设计(论文)

谢 辞

为期差不多一个学期的毕业设计在紧张而忙碌中结束了,回顾这段时间,收获良多。毕业设计是对大学所学知识的一个综合考查,是对所学知识综合应用能力的一次最后检测。通过本次毕业设计我从中体会到了所学知识在实际生活中的作用,明白不光要有理论知识,而且要能把所学知识应用到实践中。掌握了初步设计的方法,为以后的学习和工作打下了良好的基础。

此次的设计是在指导老师王超老师的精心指导下认真完成的,指导老师给我答疑解惑时耐心的态度,严谨认真的工作风格给我留下了深刻的映像。并且我从指导老师那学到的对工作的态度,及做事的方法在无疑会给我今后的生活产生良好的影响。整个设计过程中,遇到了很多疑点和难点,这些问题都基本能在老师的耐心指导下一一解决。老师给我提供的本论文的设计思路,是我能顺利完成论文的关键因素,并且在写论文时其他老师和同学也给与了帮助,最终才使得本设计得以顺利完成。在此向指导老师表示衷心的感谢,并向其他老师和同学献上我真诚的谢意。

56 页 共 59页

南华大学船山学院毕业设计(论文)

参考文献

[1] 冯小平.基于 DDS 技术的雷达波形发生器的研究.西安电子科技大学硕士论文,2004:35~37.

[2] 朱希志.基于Niosll的DDS信号发生器的研究与实现[D].浙江:浙江工业大学,2007. [3] 刘亮.基于RS485的上位机与单片机数据传输系统设计.科技信息计算机网络,2011. [4] 王传军.基于RS485和LAN的远程抄表系统的应用.科技创新与应用, 2011.12:36. [5] 朱伟.基于RS-485网络的单片机远程系统

升级功能设计. 电子世界.2012.09:26~27 . [6] 宋素华. VxWorks下基于RS485串口的光学瞄准设备控制系统的设计与实现.电子工程技术.2012.07:82~84.

[7] 郭克. 计算机与多台单片机的串行通信方案实现.价值工程.2012:171~172.

[8] 张小贝.基于嵌入式控制器和RS485的智能家居系统.电子测量技术.2012.8:62~65. [9] 王永杰.基于RS485总线照明电路系统设计.数字技术与应用.2012.07:148~149.

57 页 共 59页

南华大学船山学院毕业设计(论文)

[10] 张云翔. 基于RS485总线的远程温度监测系统.科技信息.201133期:53~54.

[11] 朱政. 基于RS485总线的分布式PLC监控系统通信设计.自动化与仪器仪表.2012第一期:51~56.

[12] 黄波. 基于RS485总线的PC与单片机多机通信系统设计. 自动化与仪器仪表.2012第一期:31~35.

[13] 马庆功.电子世界基于RS485多机通信系统设计.2012.01:132~133. [14] Satoshi

Teramukai.

Crossbow

Japan

Introduces Next Generation RS485 Wireless Mesh Network System. JCN Newswire - Japan Corporate News Network. 2010. [15] Keiichi Yamamoto, Shigemi Matsumoto. A Data Capture System for Outcomes Studies that Integrates with Electronic Health Records: Development and Potential Uses. Journal of Medical Systems, 2008, Vol.32 (5). [16] Richard

Churchill,Daniel

Lorence.

Advanced Data Capture in the Assisted

58 页 共 59页

南华大学船山学院毕业设计(论文)

Medical Home: A Model for Distributed and Multimedia Technologies. [17] Michael

Richards.Signal

Converter

facilitates RS485 device communication. Product News Network. 2008.

[18] Mark Lindberg. A review of designs for capture–mark–recapture studies in discrete time.[J].Journal

of

Ornithology.

2010.Vol.152 (2)Springer.

[19] 吴桂林.RS485上下位机多机通信网络系统设计.微计算机信息.2008第24卷12-3期.112~113

[20] 刘萍先.基于RS232_485协议的多机通信系统的设计.南昌工程学院学报.2008.12.第27卷第27期.89~92.

59 页 共 59页

南华大学船山学院毕业设计(论文)

附件一 电路原理图

单片机最小系统

电源稳压电路

60 页 共 59页

南华大学船山学院毕业设计(论文)

2路继电器控制电路

61 页 共 59页

南华大学船山学院毕业设计(论文)

2DA反馈电路

62 页 共 59页

南华大学船山学院毕业设计(论文)

3路AD采集电路

63 页 共 59页

南华大学船山学院毕业设计(论文)

附件二 PCB图

64 页 共 59页

南华大学船山学院毕业设计(论文)

PCB图

65 页 共 59页

因篇幅问题不能全部显示,请点此查看更多更全内容