您好,欢迎来到爱go旅游网。
搜索
您的当前位置:首页毕业论文基于RS485的远程采集与控制系统的设计说明

毕业论文基于RS485的远程采集与控制系统的设计说明

来源:爱go旅游网
 .

南华大学

毕业设计(论文)

题 目 基于RS485的远程采 集与控制器设计

专业名称 通 信 工 程

毕业设计(论文)原创性声明和使用授权说明

原创性声明

本人重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作与取得的成果。尽我所知,除文中特别加以标注和致的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得与其它教育机构的学位或学历而使用过的材

.

料。对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了意。

作 者 签 名: 日 期: 指导教师签名: 日 期:

使用授权说明

本人完全了解大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部容。

作者签名: 日 期:

学位论文原创性声明

本人重声明:所呈交的论文是本人在导师的指导下进行研究所取得的研究成果。除了文中特别加以标注引用的容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律后果由本人承担。

作者签名: 日期: 年 月 日

2 / 82

.

学位论文使用授权书

本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权大学可以将本学位论文的全部或部分容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。

涉密论文按学校规定处理。

作者签名: 日期: 年 月 日

导师签名: 日期: 年 月 日

指导教师评阅书

3 / 82

.

指导教师评价: 一、撰写(设计)过程 1、学生在论文(设计)过程中的治学态度、工作精神 □ 优 □ 良 □ 中 □ 与格 □ 不与格 2、学生掌握专业知识、技能的扎实程度 □ 优 □ 良 □ 中 □ 与格 □ 不与格 3、学生综合运用所学知识和专业技能分析和解决问题的能力 □ 优 □ 良 □ 中 □ 与格 □ 不与格 4、研究方法的科学性;技术线路的可行性;设计方案的合理性 □ 优 □ 良 □ 中 □ 与格 □ 不与格 5、完成毕业论文(设计)期间的出勤情况 □ 优 □ 良 □ 中 □ 与格 □ 不与格 二、论文(设计)质量 1、论文(设计)的整体结构是否符合撰写规? □ 优 □ 良 □ 中 □ 与格 □ 不与格 2、是否完成指定的论文(设计)任务(包括装订与附件)? □ 优 □ 良 □ 中 □ 与格 □ 不与格 三、论文(设计)水平 1、论文(设计)的理论意义或对解决实际问题的指导意义 □ 优 □ 良 □ 中 □ 与格 □ 不与格 2、论文的观念是否有新意?设计是否有创意? 4 / 82

.

□ 优 □ 良 □ 中 □ 与格 □ 不与格 3、论文(设计说明书)所体现的整体水平 □ 优 □ 良 □ 中 □ 与格 □ 不与格 建议成绩:□优 □良 □中 □与格 □不与格 (在所选等级前的□画“√”) 指导教师: (签名) 单位: (盖章) 年 月 日

5 / 82

.

评阅教师评阅书

评阅教师评价: 一、论文(设计)质量 1、论文(设计)的整体结构是否符合撰写规? □ 优 □ 良 □ 中 □ 与格 □ 不与格 2、是否完成指定的论文(设计)任务(包括装订与附件)? □ 优 □ 良 □ 中 □ 与格 □ 不与格 二、论文(设计)水平 1、论文(设计)的理论意义或对解决实际问题的指导意义 □ 优 □ 良 □ 中 □ 与格 □ 不与格 2、论文的观念是否有新意?设计是否有创意? □ 优 □ 良 □ 中 □ 与格 □ 不与格 3、论文(设计说明书)所体现的整体水平 □ 优 □ 良 □ 中 □ 与格 □ 不与格 建议成绩:□优 □良 □中 □与格 □不与格 (在所选等级前的□画“√”) 评阅教师: (签名) 单位: (盖章) 年 月 日

.

教研室(或答辩小组)与教学系意见

教研室(或答辩小组)评价: 一、答辩过程 1、毕业论文(设计)的基本要点和见解的叙述情况 □ 优 □ 良 □ 中 □ 与格 □ 不与格 2、对答辩问题的反应、理解、表达情况 □ 优 □ 良 □ 中 □ 与格 □ 不与格 3、学生答辩过程中的精神状态 □ 优 □ 良 □ 中 □ 与格 □ 不与格 二、论文(设计)质量 1、论文(设计)的整体结构是否符合撰写规? □ 优 □ 良 □ 中 □ 与格 □ 不与格 2、是否完成指定的论文(设计)任务(包括装订与附件)? □ 优 □ 良 □ 中 □ 与格 □ 不与格 三、论文(设计)水平 1、论文(设计)的理论意义或对解决实际问题的指导意义 □ 优 □ 良 □ 中 □ 与格 □ 不与格 2、论文的观念是否有新意?设计是否有创意? □ 优 □ 良 □ 中 □ 与格 □ 不与格 3、论文(设计说明书)所体现的整体水平 .

□ 优 □ 良 □ 中 □ 与格 □ 不与格 评定成绩:□优 □良 □中 □与格 □不与格 (在所选等级前的□画“√”) 教研室主任(或答辩小组组长): (签名) 年 月 日 教学系意见: 系主任: (签名) 年 月 日

ii / 82

.

论文 (设计) 容与要求: 一、 论文容 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日 毕业论文答辩。 指导老师: 年 月 日 iii / 82

.

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

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

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

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

i / 82

.

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 of the hardware circuit

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

the overall design and implementation, system initialization, RS485 bus, relay control, DA output control program, the AD acquisition program design.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.

ii / 82

.

Keywords: RS485; remote communications; data acquisition and control

iii / 82

.

目 录

1 绪 论1

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

1.4.1任务要求5 1.4.2 设计方案论证6 1.4.3 总体设计8 1.5 本文章节安排9 2.1 RS-232/422/485 标准10

2.1.1 RS-232 标准11 2.1.2 RS-422/485 标准11 2.2 RS-485 通讯协议14

2.2.1 ModBus 协议(RTU 模式)15

2.2.2 多功能电能表通讯规约(DL/T5-1997)18 2.3 RS-485 应用要点19 2.4 本章小结20

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

3.1 硬件系统总体设计20

iv / 82

.

3.2 单片机应用电路21 3.3 电源模块电路24

3.4 主从机RS485接口电路设计25 3.5 继电器控制电路29 3.6 2路DA转换电路30

3.6.1 TLC5615简介30 3.6.2 TLC5615功能框图30 3.6.3 TLC5615引脚功能31 3.6.4 TLC5615推荐工作条件32 3.6.5 TLC5615的时序32 3.6.6 TLC5615的两种工作方式33 3.6.7 DA电路33 3.7 3路AD转换电路34 3.8 本章小结34

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

4.1 通信协议的设计35 4.2 主程序流程37

4.2.1 主机主程序流程37 4.2.2 从机主程序流程42 4.3系统初始化47

4.3.1 主机系统初始化47 4.3.2 从机系统初始化49

v / 82

.

4.4 RS485总线的程序设计51 4.5 继电器控制程序的设计52 4.6 2路DA输出控制程序设计53 4.7 3路AD采集程序设计53 4.8 本章小结56 5 总结与展望56

5.1 总结56 5.2 展望57 辞58 参考文献58

附件一 电路原理图60 附件二 PCB图63

vi / 82

.

1 绪 论

1.1 研究的背景与意义

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

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

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

1 / 82

.

进步才逐渐实用化,不过这一技术的应用很快发展成为一个潜力巨大、市场广阔的产业[5]。

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

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

1.2 国外研究现状

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

软件功能则更丰富,根据用户需要,可编制控制和服务程序,如操作指导、统

2 / 82

.

计分析等、实现实时或即时打印或通信。

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

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

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

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

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

[9]

3 / 82

.

采用新技术的方案也仅仅限于理论探讨,实际的市场实用性并不大。

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

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

1.3 本文主要工作容

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

4 / 82

.

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

1.4 系统分析

1.4.1任务要求

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

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

5 / 82

.

1.4.2 设计方案论证

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

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

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

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

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

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

6 / 82

.

信息的采集。

2 通讯总线接口方案论证

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

方案(一):采用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为系统的通信总线,这符合本系统的点对多点的非平衡通讯模式和远距离传输模式。

7 / 82

.

1.4.3 总体设计

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

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

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

8 / 82

.

1.5 本文章节安排

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

第一章:介绍远程数据采集与控制技术研究的额背景与意义, 国外数据采集研究现状,本文主要工作容。然后根据本文任务要求对系统方案进行论证。 第二章:介绍RS485通信协议,主要分3个方面进行介绍:RS485标准、RS485通讯协议、RS485应用要点。

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

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

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

2 RS-485 协议规

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

9 / 82

.

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 的停止位。基于PC 的RS-232、RS-422 与RS-485标准均采用同样的通讯协议。

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

表 2.1 RS-232、RS-422、RS-485 的区别 标准 工作方式 RS232 单端 10 / 82

RS 422 差分 RS 485 差分 .

节点数 最大传输电缆长度 最大传输速率 最大驱动输出电压 发送器输出信号电平 (负载最小值) 发送器输出信号电平 (空载最大值) 负载 空载 1收、1发 50英尺 20Kbps +/25V +/5V~+/15V 1发、10收 4000英尺 10Mbps 0.25V~+6V ±2.0V 1发、32收 4000英尺 10Mbps 7V~+12V ±1.5V +/25V 3K~7K 30V/μs ±15V ±3V 3K~7K -- -- ±6V 100 N/A -10V~+10V ±200mV 4K(最小) -3V~+3V -7V~+7V ±6V N/A -7V~+12V ±200mV ≥12K -1V~+3V -7V~+12V 发送器负载阻抗(Ω) 摆率(最大值) 接收器输入电压围 接收器输入门限 接收器输入电阻(Ω) 发送器共模电压 接收器共模电压 2.1.1 RS-232 标准

RS-232 被定义为一种在低速率、近距离串行通讯的单端标准。RS-232 采取不平衡传输方式,即所谓单端通讯。

RS-232 的电气标准

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

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

2.1.2 RS-422/485 标准

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

11 / 82

.

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

对于接收发送器,也作出与发送发送器相对的规定,收、发端通过平衡双绞线将A-A与B-B 对应相连。当在接收端A-B 之间有大于+200mV 的电平时,输出为

12 / 82

.

正逻辑电平;小于-200mV 时,输出为负逻辑电平。在接收发送器的接收平衡线上,电平围通常在200mV至6V 之间。参见图2.2 所示。

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

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

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

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

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

13 / 82

.

间。

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 层结构)都不一样;这些设备之间并不可以直接连接通讯。

比如,很多具有RS-485 接口电路的用户设备采用自己制定的简单通讯协议,或是直接取自ModBus 协议(AscII/RTU 模式)中的一部分功能;在电力通讯领域,

14 / 82

.

当前国家现在执行的行业标准中,颁布有按设备分类的各种通讯规约,如CDT、SC-1801、u4F、DNP3.0 规约和1995 年的IEC60870-5-101 传输规约、1997 年的国际101 规约的国版本DL/T634-1997规约;在电表应用中,国大多数地区的厂商采用多功能电能表通讯规约(DL/T5-1997)。

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

2.2.1 ModBus 协议(RTU 模式)

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

1. 查询—响应周期

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

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

响应:

如果从设备产生一正常的响应,在响应消息中的功能代码是在查询消息中的

15 / 82

.

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

主设备的查询消息 设备地址 功能代码 数 据 错误检测 设备地址 功能代码 数 据 错误检测 从设备回应消息

图 2.3 ModBus 协议的“查询—响应”模式

2. RTU 模式

RTU 模式的格式:

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

代码系统:

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

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

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

1 个停止位(有校验时),2 个Bit(无校验时)

16 / 82

.

错误检测域:CRC(循环冗长检测) 3. RTU 帧

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

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

表2.3 RTU 消息帧

起始位 T1-T2-T3 -T4 设备地址 8Bit 功能代码 8Bit 数据 n 个8Bit CRC校验 16Bit 结束符 T1-T2-T3-T4 4. 地址

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

当从设备响应时,它使用功能代码域来指示是正常响应(无误)还是有某种错误发生(称作异议响应)。对正常响应,从设备仅响应相应的功能代码。对异议

17 / 82

.

响应,从设备返回一等同于正常代码的代码,但最重要的位置为逻辑1。

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

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

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

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

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

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

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

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

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

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

1.通讯字节格式 0 D0 D1 D2 D3 D4 D5 D6 D7 P 1 18 / 82

.

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

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

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

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

前导字节:在发送信息之前,发送1 个或多个字节FEH,以唤醒接收方。 数据域:发送时数据加33H,接收时数据减33H。

2.3 RS-485 应用要点

1 合理选用芯片

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

2 终端匹配电阻

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

19 / 82

.

120Ω,因此,RS-485 总线上的两个端点也应各安装1 个120Ω的终端匹配电阻。

2.4 本章小结

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

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

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

3.1 硬件系统总体设计

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

20 / 82

.

的控制。AD电路负责3路节点信号的采集工作,DA电路负责2路模拟控制量的反馈工作。图3.1为硬件设计系统框图。

图3.1硬件设计系统框图

电源稳 压电路 3组AD 采集电路 单片机 应用电路 RS485接口电路 2组继电器控制电路 2组DA反馈电路 3.2 单片机应用电路

本系统的设计是以STC12C10AD单片机为核心部件,STC12C10系列单片机是由宏晶科技生产的单时钟/机器周期(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。

21 / 82

.

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℃。

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

22 / 82

.

图3.2 STC12C10AD单片机封装

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

STC12C10AD 带 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使用的口需先将其设置为高阻输入或开漏模式。

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

23 / 82

.

通道外接一个稳定的参考电压源,来计算出此时的工作电压Vcc,再计算出其他几路 A/D转换通道的电压。

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

图3.3 STC12C10AD单片机最小系统

3.3 电源模块电路

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

24 / 82

.

图 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所示 。

25 / 82

.

图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Ω的电阻。

26 / 82

.

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

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

表3.1 MAX485收发器逻辑功能表

收发器发送逻辑功能 输入 RE DE DI 1 1 1 1 1 0 1 0 ____收发器接收逻辑功能 输入 RE DE 0 0 0 0 ____输出 A 1 0 B 0 1 输出 RO 1 0 1 高阻 A-B ≥+0.2V ≤-0.2V X 高阻 高阻 0 1 0 输入开路 0 X 从信号通路来说,AD变换之前是模拟电路,之后是数字电路。模拟电路和AD变换电路决定了系统的信噪比,而这是评价采集系统优劣的关键参数。为了提高信噪比,抑制系统中噪声对模拟和AD电路的干扰,本系统的MAX485接口电路中单片机串行数据接收端RXD、单片机串行数据发送端TXD与MAX485使能端RS485E分别先连接到6N137光耦合器上。

高速光电耦合器6N137 由磷砷化镓发光二极管和光敏集成检测电路组成。具有温度、电流和电压补偿功能,高的输入输出隔离,LSTTL/TTL兼容,高速(典型为10MBd),5mA的极小输入电流。通过光敏二极管接收信号并经部高增益线性放大器把信号放大后,由集电极开路门输出。6N137引脚图和部结构图如图3-7

27 / 82

.

所示。该光电器件高、低电平传输延迟时间短,典型值仅为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输入,发光二极管发光,经片光通道传到光敏二极管,反向偏置的光敏管光照后导通,经电流-电压转换后送到与门的一个输入端,与门的另一个输入为使能端,当使能端为高时与门输出高电平,经输出三极管反向后光电隔离器输出低电平。当输入信号电流小于触发阈值或使能端为低时,输出高电平,但这个逻辑高是集电极开路的,可针对接收电路加上拉电阻或电压调整电路。

28 / 82

.

3.5 继电器控制电路

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

图3.8 2路继电器控制电路

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

29 / 82

.

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 电路;

30 / 82

.

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

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

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

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

3.6.3 TLC5615引脚功能

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

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

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

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

31 / 82

.

 VDD ,正电源电压端。

3.6.4 TLC5615推荐工作条件

 VDD ,4.5~5.5V ,通常取5V ;  高电平输入电压:不得小于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

32 / 82

.

图3.11 TLC5615 工作时序如图

3.6.6 TLC5615的两种工作方式

从图3-9可以看出, 16位移位寄存器分为高4位虚拟位、低2位填充位以与10位有效位。在单片TLC561工作时, 只需要向16位移位寄存器按先后输入10位有效位和低2位填充位, 2位填充位数据任意,这是第一种方式,即12位数据序列。第二种方式为级联方式, 即16位数据序列, 可以将本片的DOUT接到下一片的DIN, 需要向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的基准电压,D3、 2D4为保护二极管。由于系统要求能提供最大10V的输出反馈,而单片机最大只能输

33 / 82

.

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

3.7 3路AD转换电路

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

图3.13 3路AD转换电路

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

3.8 本章小结

本章设计了以STC12C10AD单片机为核心的基于RS485通信的远程数据采集与控制器,根据系统要求确立了3路数据采集电路、2路数据反馈电路、2路

34 / 82

.

继电器控制电路。并且在不通过RS485总线的情况下系统也能进行2路继电器开关控制、反馈2路本地模拟控制量和采集3路本地节点信号的工作。

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

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

4.1 通信协议的设计

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

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

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

(4)从机复位后,将等待主机发送指令,并根据具体的指令容做出应答。 本系统的数据传输有以下特点:

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

35 / 82

.

率。

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

表4.1 基于RS485总线的远程采集与控制系统接收帧格式表

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

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

表4.2 基于RS485总线的远程采集与控制系统发送帧格式表

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

地址字节实际上存放的是从机对应的设备号,此设备号在一开始就由拨码开关组S3予以设置。由于只用了一个字节作为地址位,因此地址围为0~255。当从机数量大于256台时,可考虑用几个字节作为地址位(虽然RS485通信允许的最大从机数为32台,但使用特殊的RS485收发器芯片可突破此,比如,本

36 / 82

.

设计采用的MAX485芯片,最大从机数可达到256台)。在工作时,每一个设备都按规定设置好,一般不会改动,改动时重新设置开关即可得到,但要注意设置时应该避免地址重复。

主从机通信时,主机先判断S3开关是否按下,按下说明主机已准备好发送数据,这时主机才开始接向从机发送数据。从机发来的数据帧中前2字节分别为起始字节,从机地址(即发送数据给哪台从机)。由于DAC输出数据为10位,而一字节只有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总线为发送状态时主机才向从

37 / 82

.

机发送控制命令,因此整个数据发送阶段分为了准备发送阶段和发送阶段。只有总线为发送状态时主机才向从机发送数据,因此从机发送过来的数据应先存放在临时数据存放区,判断RS485总线为发送状态时才送到从机进行数据处理。从机发过来的数据也是先放在临时数据存放区,判断满足通信协议后才接收。

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

否为准备接收状态,最后接收数据。图4.1为主机系统主程序流程图:

38 / 82

.

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

主要的程序代码如下:

39 / 82

.

voidmain() { uchari;

ucharData_buf[Rcv_Lenth];//存放从从机接收的数据 ucharJiDian1=0,JiDian2=0;//继电器开

uintAIN1=55,AIN2=66,AIN3=77,DAC1=128,DAC2=255; i=0;

RS485_Rcv_Mode();

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

RS485_Rcv_Mode(); while(1) {

if(S3==0) {

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

/*DAC输出控制,由于DAC输出数据为10位,而一字节只有8位,为此DAC输出的高八位与低2位分开存放,从机接收时再去相应位去取出还原*/ 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; elseJiDian1=0;

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

send[12]=0x55;//结束字节 RS485_Send_Flag=1; delay_ms(150);//按键去抖 }

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

40 / 82

.

if(Rflag==0) {

Max485_send_data(send); RS485_Send_Flag=0; } }

if(Rflag==1) {

delay_ms(13);

for(i=0;iData_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]; }

elseif(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]; } } } } }

41 / 82

.

4.2.2 从机主程序流程

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

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

42 / 82

.

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

图4.2 从机主程序流程图

43 / 82

.

主要的程序代码如下:

voidmain() {

unsignedintabc=0; uchari;

uintDAC1=128,DAC2=255; INT16UADC_10bit; ADC_10bit=0; i=0;

RS485_Rcv_Mode();

System_Init();//系统初始化 LED1=0; LED2=0;

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

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

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

if(key_Flag) {

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

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; send[10]=AIN2&0x03;

44 / 82

.

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

send[14]=0x55;//结束字节 Max485_send_data(send); delay_ms(50); }

if(Times50ms_Flag==1) {

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

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

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

/*把两路主机发来的DA信号再发给主机*/ send[3]=DAC1>>2;//存入ADC值

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

/*把3路从机机采集的AD信号发给主机*/ 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;//结束字节

if(Rflag==0) {

if(senddata_EN==1) {

Max485_send_data(send); LED1=~LED1; } }

45 / 82

.

}

if(Rflag==1) {

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

if((receive[0]==0xaa)&&(receive[12]==0x55))//若满足通信协议 {

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

if(receive[1]==MY_ADD) {

DAC1=receive[3]<<2+receive[4];//接收主机发的两路10位信号 DAC1=receive[5]<<2+receive[6]; dac_5615_1(abc); dac_5615_2(abc); //2路继电器控制 if(receive[11]==0x11) {

Relay1=0; }

elseif(receive[11]==0x10) {

Relay1=1; }

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

Relay2=0; }

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

Relay2=1; } } } } } }

46 / 82

.

4.3系统初始化

4.3.1 主机系统初始化

主机系统初始化模块包括延时1ms函数、定时器0初始化函数、外部中断0初始化函数、MAX485初始化函数、串口中断初始化函数、串口中断定义函数等几个小函数。系统初始化流程图如图4.3所示:

开始 按键标志位置0 初始两 LED灯关 初始2路继电器关 MAX485初始化 定时器0初始化 外部中断0初始结束 图4.3 主机系统初始化流程图

主要程序代码如下:

voidSystem_Init(void) {

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

Relay1=1;//初始化继电器关 Relay2=1;//初始化继电器关 Max485_Init();//MAX485初始化 Time0_Init();//定时器0初始化

47 / 82

.

EINT0_Init();//外部中断1初始化 }

//定时器初始化

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

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

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

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

TR0=1; //开启定时器

48 / 82

.

{ } }

TL0=(65536-50000)%256; 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所示:

49 / 82

.

开始 按键标志位置0 初始两 LED灯关 初始2路继电器关 MAX485初始化 定时器0初始化 外部中断0初始化打开AD转换电源 设置AD采样IO口为高阻输入 结束 图4.4 从机系统初始化流程图

主要程序代码如下:

voidSystem_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; }

50 / 82

.

4.4RS485总线的程序设计

本系统设计的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; //单片机发送数据 TI=0;

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

RS485_Rcv_Mode();

51 / 82

.

}

4.5 继电器控制程序的设计

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

表4.3 继电器控制字节功能代码表

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

send[11]=1<<4|JiDian1;//1为从机地址,左移4位再与上继电器开关控制位

在从机的判断接收数据时其程序语句如下:

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

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

elseif(receive[11]==0x11) {

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

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

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

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

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

}

52 / 82

.

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转换是不断进行的,而且其转换结果会在一定围波动,因此程序设计上应对其做专门的

53 / 82

.

调整。其对应的程序流程图如下:

开始 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;

/ 82

.

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(i=0;ifor(j=0;jtmptab1[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)

55 / 82

.

}

}

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 本章小结

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

5 总结与展望

5.1 总结

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

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

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

56 / 82

.

关控制、反馈2路本地模拟控制量和采集3路本地节点信号的工作。

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

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

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

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

5.2 展望

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

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

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

57 / 82

.

增加数据校验,提高通信可靠性。

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

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

参考文献

[1] 小平.基于 DDS 技术的雷达波形发生器的研究.电子科技大学硕士论文,2004:35~37. [2] 朱希志.基于Niosll的DDS信号发生器的研究与实现[D].:工业大学,2007. [3] 亮.基于RS485的上位机与单片机数据传输系统设计.科技信息计算机网络,2011.

58 / 82

.

[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. [10] 云翔.基于RS485总线的远程温度监测系统.科技信息.201133期:53~.

[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 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期.~92.

59 / 82

.

附件一 电路原理图

单片机最小系统

电源稳压电路

60 / 82

.

2路继电器控制电路

2路DA反馈电路

61 / 82

.

3路AD采集电路

62 / 82

.

附件二 PCB图

PCB图

学位论文原创性声明

本人重声明:所呈交的学位论文,是本人在导师的指导下进行的研究工作所取得的成果。尽我所知,除文中已经特别注明引用的容和致的地方外,本论文不包含任何其他个人或集体已经发表或撰写过的研究成果。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式注明并表示感。本人完全意识到本声明的法律结果由本人承担。

63 / 82

.

学位论文作者(本人签名): 年 月 日

学位论文出版授权书

本人与导师完全同意《中国博士学位论文全文数据库出版章程》、《中国优秀硕士学位论文全文数据库出版章程》(以下简称“章程”),愿意将本人的学位论文提交“中国学术期刊(光盘版)电子杂志社”在《中国博士学位论文全文数据库》、《中国优秀硕士学位论文全文数据库》中全文发表和以电子、网络形式公开出版,并同意编入CNKI《中国知识资源总库》,在《中国博硕士学位论文评价数据库》中使用和在互联网上传播,同意按“章程”规定享受相关权益。

论文密级:

□公开 □(___年__月至__年__月)(的学位论文在解密后应遵守此协议)

作者签名:_______ 导师签名:_______

_______年_____月_____日 _______年_____月_____日

独创声明

本人重声明:所呈交的毕业设计(论文),是本人在指导老师的指导下,进行研究工作所取得的成果,成果不存在知识产权争议。尽我所知,除文中已经注明引用的容外,本设计(论文)不含任何其他个人或集体已经发表或撰写过的作品成果。对本文的研究做出重要贡献的个人和集体均已在文中以明确方式标明。

本声明的法律后果由本人承担。

/ 82

.

作者签名:

二〇一〇年九月二十日

毕业设计(论文)使用授权声明

本人完全了解滨州学院关于收集、保存、使用毕业设计(论文)的规定。

本人愿意按照学校要求提交学位论文的印刷本和电子版,同意学校保存学位论文的印刷本和电子版,或采用影印、数字化或其它复制手段保存设计(论文);同意学校在不以营利为目的的前提下,建立目录检索与阅览服务系统,公布设计(论文)的部分或全部容,允许他人依法合理使用。

(论文在解密后遵守此规定)

作者签名:

二〇一〇年九月二十日

时间飞逝,大学的学习生活很快就要过去,在这四年的学习生活中,收获了很多,而这些成绩的取得是和一直关心帮助我的人分不开的。

首先非常感学校开设这个课题,为本人日后从事计算机方面的工作提供了经验,奠定了基础。本次毕业设计大概持续了半年,现在终于到结尾了。本次毕业设计是对我大学四年学习下来最好的检验。经过这次毕业设计,我的能力有了很大的提高,比如操作能力、分析问题的能力、合作精神、严谨的工作作风等方方

65 / 82

.

面面都有很大的进步。这期间凝聚了很多人的心血,在此我表示由衷的感。没有他们的帮助,我将无法顺利完成这次设计。

首先,我要特别感我的知道郭谦功老师对我的悉心指导,在我的论文书写与设计过程中给了我大量的帮助和指导,为我理清了设计思路和操作方法,并对我所做的课题提出了有效的改进方案。郭谦功老师渊博的知识、严谨的作风和诲人不倦的态度给我留下了深刻的印象。从他身上,我学到了许多能受益终生的东西。再次对周巍老师表示衷心的感。

其次,我要感大学四年中所有的任课老师和辅导员在学习期间对我的严格要求,感他们对我学习上和生活上的帮助,使我了解了许多专业知识和为人的道理,能够在今后的生活道路上有继续奋斗的力量。

另外,我还要感大学四年和我一起走过的同学朋友对我的关心与支持,与他们一起学习、生活,让我在大学期间生活的很充实,给我留下了很多难忘的回忆。

最后,我要感我的父母对我的关系和理解,如果没有他们在我的学习生涯中的无私奉献和默默支持,我将无法顺利完成今天的学业。

四年的大学生活就快走入尾声,我们的校园生活就要划上句号,心中是无尽的难舍与眷恋。从这里走出,对我的人生来说,将是踏上一个新的征程,要把所学的知识应用到实际工作中去。

回首四年,取得了些许成绩,生活中有快乐也有艰辛。感老师四年来对我孜孜不倦的教诲,对我成长的关心和爱护。

学友情深,情同兄妹。四年的风风雨雨,我们一同走过,充满着关爱,给我留下了值得珍藏的最美好的记忆。

在我的十几年求学历程里,离不开父母的鼓励和支持,是他们辛勤的劳作,

66 / 82

.

无私的付出,为我创造良好的学习条件,我才能顺利完成完成学业,感激他们一直以来对我的抚养与培育。

最后,我要特别感我的导师达睿老师、和研究生助教熊伟丽老师。是他们在我毕业的最后关头给了我们巨大的帮助与鼓励,给了我很多解决问题的思路,在此表示衷心的感激。老师们认真负责的工作态度,严谨的治学精神和深厚的理论水平都使我收益匪浅。他无论在理论上还是在实践中,都给与我很大的帮助,使我得到不少的提高这对于我以后的工作和学习都有一种巨大的帮助,感他耐心的辅导。在论文的撰写过程中老师们给予我很大的帮助,帮助解决了不少的难点,使得论文能够与时完成,这里一并表示真诚的感。

67 / 82

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

Copyright © 2019- igat.cn 版权所有 赣ICP备2024042791号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务