基于RS-485总线的数据通信与远程控制.pdf
武汉理工大学本科学生毕业设计(论文)开题报告武汉理工大学本科学生毕业设计(论文)开题报告 1、设计目的及意义(含国内外的研究现状分析)设计的目的:设计的目的:近年来,大规模集成电路的飞速发展,计算机技术不断地推广应用,传统的仪器仪表、数字测量技术在数据采集方面升华到一个全新的阶段。计算机技术已成为当代数据采集和自动控制的核心技术。而随着科学技术的进步,数据采集与控制系统越来越趋向数字化、智能化、远距离方向发展。在这样的系统中通常采用多个单片机独立构成子系统作为前端测控核心,即主要负责数据采集及控制执行等,而整个系统的协调与分工则是由计算机来完成的。其中单片机优越的性价比和灵活的功能配置而被广泛应用于控制领域。因此,结合两者组成了数据采集与控制的网络系统。串行通信是计算机与外部设备进行数据交换的重要渠道,并且由于其成本低、性能稳定、遵循统一的标准,因而在工程中被广泛应用。目前,有多种接口标准可用于串行通信,包括 RS-232、RS-422、RS-423 和 RS-485。RS-232 是最早的串行接口标准,在短距离、较低波特率串行通信中得到了广泛应用。其后发展起来的 RS-422、RS-485 是平衡传送的电气标准,采用差动的两线发送、两线接收的双向数据总线两线制方式,比起RS-232 非平衡的传送方式在电气指标上有了大幅度的提高。在上述的网络系统中,近距离通信可以采用 RS-232 通信标准实现,通信距离视负载而定,但最多不超过十几米,为了进一步扩大通信距离可以采用 RS-485 标准通信,其通信有效距离可达 1200 米。如加中继器可更大幅度地增大有效通信距离。本文设计的目的是实现基于 RS-485 总线上的数据通信与远程控制的网络系统。设计的意义(理论或实际):设计的意义(理论或实际):通过应用数据采集与控制的网络系统技术,可以稳定和优化生产工艺、提高产品质景,降低能源和原材料消耗,降低生产成本。更为重要的是通过应用数据采集与控制的网络系统技术还可以降低劳动者的生产强度,并且提高管理水平,从而带来极大的社会效益。正因为如此,数据采集与控制的网络系统技术得到了迅速的发展,并广泛地应用于工业、农业、交通、环保、军事、楼宇、医疗等领域。相信在不久的将来还会进入家庭,成为一种与每个人密切相关的技术。2、设计任务、重点研究内容、技术方案及进度安排 设计的任务:设计的任务:为实现基于 RS-485 总线的数据通信与远程控制,首先得设计好 RS-485 的通信模块;由于是实现计算机与单片机之间的数据通信,两者的接口标准不一样,所以需要设计好计算机与单片机接口转换的电路,即设计 RS-232/RS-485 转换器;接着,设计出各从机进行数据采集与控制的模块,这样在没有控制或者给定控制量时,从机都按自己的任务进行相关数据采集或者控制。在硬件都设计好后,调试通过,这时要跟据整个系统编制出一定的通信协议,选择最优方案,实现计算机与单片机数据通信。这些在程序设计中实现,计算机主机程序主要通过学习 VC.NET 语言而编制,单片机从机程序主要由 C 语言编制。计算机与单片机在实现数据通信后,按照拟定的通信协议,提取有用数据信息,从而按照这个信息,进行相关操作,以达到基于 RS-485 总线上的数据通信与远程控制的目的。设计需要重点解决的问题:设计需要重点解决的问题:如何实现单片机与计算机之间的数据通信,是整个系统能否结合成为一体工作的关键。本设计利用 VC.NET 语言编制了自定义协议下主机的控制程序,用 C 语言编制了这种协议下的从机通信与控制程序,硬件上,计算机通过其 RS-232 接口与标准的RS-232/RS-485 转换器后,经 RS-485 总线与单片机从机连接,成功的实现了这一关键,达到了数据通信与远程控制的目的。设计的进度安排是:设计的进度安排是:第 1 周 毕业实习,明确课题要求,结合课题调研,收集资料。第 2 周 毕业实习,结合课题调研,收集资料。第 3 周 RS-485 通信接口的学习。第 4 周 确定初步技术方案,提交开题报告,开题报告审查。第 5 周 学习 RS-485 总线技术。第 6 周 学习 VC.NET 编程软件。第 7 周 编程软件学习(STEP2)。第 8 周 英文翻译。第 9 周 编程软件学习(STEP3)。第 10 周 通信控制系统主电路设计。第 11 周 从机系统硬件设计。第 12 周 主机系统程序设计。第 13 周 从机系统程序设计。第 14 周 整个系统调试。第 15 周 撰写论文。第 16 周 交初稿,修改论文。第 17 周 正式交论文及答辩准备。第 18 周 答辩。报告人签字:年 月 日 3、指导教师意见 结论:导教师签名:年 月 日 注:注:1开题报告应根据教师下发的毕业设计(论文)任务书,在教师的指导下由学生独立撰写,在毕业设计开始后两周内完成。2“设计的目的及意义”至少 800 字,“设计任务、重点研究内容及进度计划”至少 600 字。3指导教师意见:应从选题的理论或实际价值出发,阐述学生利用的知识、原理、建立的模型正确与否?学生的论证充分否?通过学生的努力,能否完成课题,达到预期的目标?课题及报告的难度、深度、综合性、创造性等是否达到本科生应该具有的要求。4结论:是否同意进入设计(论文)阶段。武 汉 理 工 大 学 毕 业 论 文(设 计)目录 中文摘要.Abstract.绪 论.1 1.系统组成结构.2 1.1 RS-232/RS-485 转换器.2 1.2 RS-485 总线.3 1.3 单片机从机.3 1.4 系统通信设置.4 1.5 计算机主机用户界面.4 2.系统硬件设计.6 2.1 RS-485 通信原理与设计.6 2.1.1 总线匹配问题.6 2.1.2 引出线问题.7 2.1.3 地线与接地问题.7 2.1.4 总线负载能力与通讯电缆长度之间的关系.8 2.1.5 RS-485 常规接线电路.9 2.1.6 RS-485 零延时接线电路.9 2.2 RS-232/RS-485 转换器.11 2.3 温度采集与显示从机设计.12 2.3.1 温度采集与显示从机的单片机最小系统.12 2.3.2 温度采集与显示从机的数据显示电路.12 2.3.3 温度采集与显示从机的温度采集电路.13 2.3.4 温度采集与显示从机的 RS-485 通信电路.13 2.4 多路开关控制从机设计.14 2.4.1 多路开关控制从机的单片机最小系统.14 2.4.2 多路开关控制从机的开关控制电路.14 3.系统程序设计.16 3.1 计算机与单片机通信程序设计.16 3.1.1 通信协议的编制原则.16 3.1.2 本系统通信协议编制.17 武 汉 理 工 大 学 毕 业 论 文(设 计)3.2 计算机主机界面程序设计.21 3.3 计算机主机串口 API 编程步骤.23 3.4 温度采集与显示从机程序设计.24 3.5 多路开关控制从机程序设计.24 3.6 数据校验.25 3.6.1 奇偶校验.25 3.6.2 求和校验.25 3.6.3 循环冗余码校验.25 4.系统调试.27 4.1 硬件调试.27 4.2 通信调试.27 4.3 远程控制调试.29 结束语.30 致 谢.31 参考文献.32 附 录.33 武 汉 理 工 大 学 毕 业 论 文(设 计)I 摘 要 本文主要在 RS-485 总线和测控系统原理基础上介绍了基于 RS-485 总线的数据 通 信 与 远 程 控 制 系 统,整 个 系 统 包 括 一 台 计 算 机 主 机 和 多 台 AT89S51、AT89C2051 单片机从机。主机主要处理数据并分配从机工作任务,从机按其功能分为测量采集数据从机和控制多路开关从机。主机经过 RS-232/RS-485 转换器与从机进行数据通信,将从机附近的信息传到主机,经过主机综合处理各从机数据,从而控制从机进行相关操作控制多路开关,达到远程控制的目的。而如何实现单片机与计算机之间的通信是整个系统结合成为一体工作的关键。关键词:RS-485;数据通信;远程控制 武 汉 理 工 大 学 毕 业 论 文(设 计)II Abstract On the base of RS-485 bus and monitoring system principles,this paper introduces the data communications based on RS-485 bus and Remote control system.The entire system includes one computer master and several AT89S51、AT89C2051 Single Chip Machines as the guests.Master processes of data and assigns tasks to the guest.Guest includes measurement collection data guest and multipart control switch guest in terms of its function.Master communicates with guest by RS-232/RS-485 converters.It transfers the information near the guest to the master.And then during the master integrated treatments the data from the guests,it controls multipart control switches,at last it makes the remote controlling come true.How to make the communication between the Single Chip Machines and computer master come true is the key of the whole system.Keywords:RS-485;digitial communication;Remote control 武 汉 理 工 大 学 毕 业 论 文(设 计)1 绪 论 近年来,大规模集成电路的飞速发展,计算机技术不断地推广应用,传统的仪器仪表、数字测量技术在数据采集方面升华到一个全新的阶段。计算机技术已成为当代数据采集和自动控制的核心技术。而随着科学技术的进步,数据采集与控制系统越来越趋向数字化、智能化、远距离方向发展。在这样的系统中通常采用多个单片机独立构成子系统作为前端测控核心,即主要负责数据采集及控制执行等,而整个系统的协调与分工则是由计算机来完成的。其中单片机优越的性价比和灵活的功能配置而被广泛应用于控制领域。因此,结合两者组成了数据采集与控制的网络系统。通过应用数据采集与控制的网络系统技术,可以稳定和优化生产工艺、提高产品质量,降低能源和原材料消耗,降低生产成本。更为重要的是通过应用数据采集与控制的网络系统技术还可以降低劳动者的生产强度,并且提高管理水平,从而带来极大的社会效益。正因为如此,数据采集与控制的网络系统技术得到了迅速的发展,并广泛地应用于工业、农业、交通、环保、军事、楼宇、医疗等领域。相信在不久的将来还会进入家庭,成为一种与每个人密切相关的技术。串行通信是计算机与外部设备进行数据交换的重要渠道,并且由于其成本低、性能稳定、遵循统一的标准,因而在工程中被广泛应用。目前,有多种接口标准可用于串行通信,包括 RS-232、RS-422、RS-423 和 RS-485。RS-232 是最早的串行接口标准,在短距离、较低波特率串行通信中得到了广泛应用。其后发展起来的 RS-422、RS-485 是平衡传送的电气标准,采用差动的两线发送、两线接收的双向数据总线两线制方式,比起 RS-232 非平衡的传送方式在电气指标上有了大幅度的提高。在上述的网络系统中,近距离通信可以采用 RS-232 通信标准实现,通信距离视负载而定,但最多不超过十几米,为了进一步扩大通信距离可以采用 RS-485标准通信,其通信有效距离可达 1200 米。如需更远距离只需加中继器即可。本文正设计的是基于 RS-485 总线上的数据通信与远程控制的网络系统。那么,如何实现单片机与计算机之间的通信,是整个系统能否结合成为一体工作的关键。本系统利用 VC.NET 语言编制了自定义协议下主机的控制程序,通过计算机的 RS-232 接口与标准的 RS-232/RS-485 转换器,成功的实现了这一关键,达到了数据通信与远程控制的目的。武 汉 理 工 大 学 毕 业 论 文(设 计)2 1.系统组成结构 本系统主要由一台计算机主机,多台 AT89S51、AT89C2051 单片机从机,以及RS-232/RS-485 转换器构成。如图 1-1 所示为系统原理图,主机经过 RS-232/RS-485转换器后与从机由 RS-485 总线连接以进行数据通信与远程控制。图 1-1 系统原理图 1.1 RS-232/RS-485 转换器 由于计算机上的 COM1、COM2 接口都是 RS-232C 接口,单片机是 TTL 电平,因此两者之间通信电平需要转换。这是因为 RS-232C 标准对电器特性、逻辑电平和各种信号线功能都作了规定。对于数据,逻辑“0”的电平高于-3V,逻辑“1”的电平低于+3V;对于控制信号,接通状态(ON)即信号有效的电平高于+3V,断开状态(OFF)即信号无效的电平低于-3V。也就是当传输电平的绝对值大于 3V时,电路可以有效地检查出来,介于-3V+3V 之间的电压无意义,低于-15V 或高于+15V 的电压也认为无意义,因此,实际工作时,应保证电平在(315)V 之间。而单片机工作在 TTL 电平,即逻辑“0”对应电平 0V,逻辑“1”对应电平+5V。这里使用 MAX232C 芯片能很方便的解决该问题1。另外在比较复杂的控制和数据采集系统中,近距离的通信计算机可以通过MAX232 电平转换后可直接与单片机通信,但是这样最多不超过十几米,因此在远距离通信中采用 RS-485 标准,即采用 RS-232/RS-485 转换器,可以大大提高通信距离。这是由 RS-485 总线的特性所实现的。武 汉 理 工 大 学 毕 业 论 文(设 计)3 1.2 RS-485 总线 RS-485 总线是工业领域广泛应用的 LSO/OSI 模型物理层标准协议之一,采用平衡式发送、差分式接收的数据收发器来驱动总线。具体规格要求如下:(1)机械特性。采用 RS-232/RS-485 连接器将计算机串口 RS-232 信号转换成 RS-485 信号,或接入 TTL/RS-485 转换器将 I/O 接口芯片 TTL 电平信号转换成 RS-485 信号,进行远距离高速双向串行通信。(2)电气特性。信号负逻辑,+2+6V 表示“0”,-6-2V 表示“1”,二线双端半双工差分电平发送与接收,无公共地线,能有效克服共模干扰、抑制线路噪声,传输距离 1.2km,最高数据传输速率可达 10Mb/s。(3)功能与规程特性。网络媒体采用双绞线、同轴电缆或光纤;每条总线上的节点数可达 128 个,如果节点数大于 128,须加中继器(每个中继器可延长线路 1.2km)。RS-485 总线的数据链路协议,除有的采用符合 ISO 高级数据链路控制协议(HDLC)的数据链路处理器件或专有接口器件执行外,多数是参照 HDLC 或其他一些标准自行定义而成。而开发 RS-485 总线数据链路协议较好的方案一般以字节式异步通信为基础。1.3 单片机从机 由于本文主要是基于 RS-485 的数据通信与远程控制,那么实现单片机与计算机之间的通信是整个系统结合成为一体工作的关键,所以计算机与单片机只需传输有用的数据即可。该数据在事先约定好一定的格式,即达成一定的协议后,进行通信,以达到数据各自代表的意义。因此单片机从机做了以下几种工作任务:第一种:温度采集与显示工作任务。该从机主要由 AT89C2051 单片机最小系统、共阳极数码管显示模块、MAX485 通信模块、DS1820 数字式温度传感器构成,以完成温度采集与显示的任务,并及时将当前温度值存入发送数据块中。主机发出读取该从机当前温度命令时,该从机立即做出响应并将当前存入的温度数据块发送给主机。第二种:开关状态控制的工作任务。该从机主要由 AT89S51 单片机最小系统、8 个发光二极管模块、MAX485 通信模块构成,以完成控制发光二极管导通的任务。主机发出控制该从机开关状态命令后,该从机立即做出响应并接收发送来的开关状态数据,及时控制发光二极管导通状态。另外其它多种工作任务可以根据需求而设置,在此就不再述说。武 汉 理 工 大 学 毕 业 论 文(设 计)4 1.4 系统通信设置 在本系统中,计算机主机选用了 COM1 串行进行数据通信,波特率为 4800bps,校验位为 MARK,数据位为 8,停止位为 1。这里除串口可以不受限制的任何选择,即只要计算机上有空余的 COM 串口都可选择外,其余并不是随便选择的,这是由于单片机从机的晶振都选择了 12MHz,为了减少误码率,慎重选择了 4800bps 的波特率。根据单片机计算初值的计算公式(1-1):波特率=384)2(256modsfoscX (1-1)当波特率为 4800bps 时,3024302.132564800384)2(120000002561xFX=,小数值最小,误码率相对较小。这样单片机从机计算值为 0 xF3。在多机通信中,单片机的通信,一般为 11 位为一帧的异步通信方式,即一个起始位、9 个数据位和 1 个停止位,而 9 个数据位中前 8 个数据为一字节数据,第9 个数据为地址校验码。这种工作方式中,当 SM2=1 时,只有当接收到的第 9 位数据(RB8)为“1”,才将接收到的前 8 位数据送入 SBUF,并置位 RI 产生中断请求;否则,将接收到的前 8 位数据丢弃。而当 SM2=0 时,则不论第 9 位数据为“0”还是为“1”,都将前 8 位数据装入 SBUF 中,并产生中断请求。这样所有单片机从机平时待机时 SM2 都置“1”,即只有当接收到了数据第 9 位为“1”时,才将接收到的前 8 位数据送入 SBUF,并置位 RI 产生中断请求。计算机主机首先发送要通信的从机地址,并置第 9 位数据为“1”,所有从机都将接收到数据,并进入中断程序以检验所接收到的数据地址是否与本机地址相同,如果相同,则立即置 SM2 为“0”,并发送本机地址以做回应。这样,其它从机接收到第 9 位数据为“0”,都将前 8 位数据丢弃,不予理睬。而主机接收到该从机地下数据回应后,也将第 9 位置“0”,进入数据通信阶段。这样确保了线路中只有计算机主机与所叫从机进行数据通信,而其它从机都不会收发数据而扰乱其通信。计算机主机的第 9 位数据设置可以通过 API 串口编程中的结构 DCB 中的PARITY 设置来得到,当 PARITY 为 MARK 时,第 9 位数据始终输出“1”,当 PARITY为 SPACE 时,第 9 位数据始终输出“0”。1.5 计算机主机用户界面 计算机主机用户界面,主要为用户提供了简单、方便的控制界面。用户不需要关心主机与从机之间的底层通信数据,只需要选择相关功能,即可进行远程控制。武 汉 理 工 大 学 毕 业 论 文(设 计)5 该计算机主机用户界面,由 VC.NET 语言开发编制,Visual Studio.NET 是一套完整的可视化软件开发工具,可以用来开发桌面的和基于团队的企业级 Web 应用程序。Visual Studio.NET 继承了老版本 Visual Studio 的优良特性,并在此基础上更前进了步,增加了许多新的特性,更加方便了软件开发人员的使用。举一个简单的例子:过去要在菜单上增加一个小图标,实现的方法还是比较复杂的。而在Visual Studio.NET 的 MFC7.0 的 CMenu 类就为此功能提供了一个成员函数。除了生成高性能的桌面应用程序之外还可以使用 Visual Studio.NET 基于组件的强大开发工具和其他技术,设计、开发和部署企业级的解决方案,以实现分布式计算系统的软件开发。另外,Visual Studio.NET 还提供了对团队开发的强有力支持,可以协助软件开发人员对解决方案、项目和文件进行管理。Visual Studio.NET 中提供的核心语言有:Visual Basic.NET、Visual C+.NET、Visual C#.NET2。Visual C+.NET 是 Visual C+6.0 的新版本。Visual C+.NET 对老版本进行了改进,并增加了许多新的特性。与 Visual C+6.0 相比,Visual C+.NET 的变化是非常大的:Visual C+.NET 集成开发环境(IDE)改变了很多,对 C+语言进行了扩展,提供了属性化编程,编译器、链接器和标准 C+库的更新,应用程序的发布,对一些库进行了更新和升级。最后选定 Visual C+.NET 作为计算机主机程序开发语言。武 汉 理 工 大 学 毕 业 论 文(设 计)6 2.系统硬件设计 2.1 RS-485 通信原理与设计 在设计 RS-485 模块的接线电路时,从设备选择上看,实现 RS-485 总线通讯相当简单,但是对于它在实际应用中的一些具体问题没有深入广泛的认识和积极有效的处理措施,会影响到整个系统的性能。下面就几个实际应用中常被忽视的问题进行相关说明。2.1.1 总线匹配问题 首先是总线匹配问题。是否对 RS-485 总线进行终端匹配取决于数据传输速率、电缆长度及信号转换速率。当考虑终端匹配时,有多种方案可以选择。在长线信号传输时,一般为了避免信号的反射和回波,需要在接收端接入终端匹配电阻,如图 2-1(a)所示。其终端匹配电阻值取决于电缆的阻抗特性,与电缆的长度无关。RS-485/RS-422 一般采用双绞线(屏蔽或非屏蔽)连接,终端电阻一般在 100140 之间,典型值为 120。在实际配置时,在电缆的两个终端节点上,即最近端和最远端,各接入一个终端电阻,而处于中间部分的节点则不能接入终端电阻,否则将导致通讯出错。这种匹配方法简单有效,但有一个缺点,匹配电阻要消耗较大功率,对于功耗限制比较严格的系统不太适合。另外一种比较省电的匹配方式是 RC 匹配,如图 2-1(b)。利用一只电容 C 隔断直流成分可以节省大部分功率。但电容 C 的取值是个难点,需要在功耗和匹配质量间进行折衷。除上述两种外,还有一种采用二极管的匹配方案,如图 2-1(c)。这种方案虽未实现真正的“匹配”,但它利用二极管的钳位作用迅速削弱反射信号,达到改善信号质量的目的,节能效果显著3。图 2-1 几种终端匹配方案 信号反射对数据传输的影响,归根结底是因为反射信号触发了接收器输入端的武 汉 理 工 大 学 毕 业 论 文(设 计)7 比较器,使接收器收到了错误的信号,导致 CRC 校验错误或整个数据帧错误。在信号分析中,衡量反射信号强度的参数是 RAF(Refection Attenuation Factor 反射衰减因子)。它的计算公式如式(2-1):RAF=20lg(Vref/Vinc)(2-1)式中:Vref 反射信号的电压大小;Vinc 在电缆与收发器或终端电阻连接点的入射信号的电压大小。具体测量方法如图 2-2 所示。例如,由实验测得 6MHz的入射信号正弦波的峰-峰值为+5V,反射信号的峰-峰值为+0.496V,则该通讯电缆在 6MHz 的通讯速率时,它的反射衰减因子为式(2-2):RAF=20lg(0.496/6)=-21.63 dB (2-2)图 2-2 测量反射信号的大小 要减弱反射信号对通讯线路的影响,通常采用噪声抑制和加匹配电阻的方法。在实际应用中,对于比较小的反射信号,为简单方便,经常采用加匹配电阻的方法。2.1.2 引出线问题 其次是引出线问题。RS-485 总线上的每个收发器通过一段引出线接入总线,引出线过长时,由于信号在引出线中的反射,也会影响总线上的信号质量。和前面的讨论一样,系统所能允许的引出线长度也和信号的转换时间、数据速率有关。下面的经验公式可以用来估算引出线的最大长度为式(2-3):Lmax=(tRISE 0.2 m/ns)/10 (2-3)对应于 150ns 的上升/下降时间,总线允许的最大引出线长度约为 3 m。从以上的分析可以看出,在敷设 RS-485 连接线时应考虑引出线长度的要求,应尽量减小引出线长度以满足相关要求。2.1.3 地线与接地问题 第三是地线与接地的问题。尽管是差分传输,对于 RS-485 网络来讲,一条低阻的信号地还是必不可少的,这是因为一是共模干扰问题,收发器在共模电压超武 汉 理 工 大 学 毕 业 论 文(设 计)8 出一定范围(-7V 至+12V)时就会影响通信的可靠性,直至损坏接口。二是电磁辐射(EMI)问题。驱动器输出信号中的共模部分需要一个返回通路,如果没有一个低阻的返回通道(信号地),就会以辐射的形式返回源端,整个总线就会像一个巨大的天线向外辐射电磁波。一条低阻的信号地将两个接口的工作地连接起来,使共模干扰电压被短路。这条信号地可以是额外的一对线(非屏蔽双绞线)、或者是屏蔽双绞线的屏蔽层。值得注意的是,这种做法仅对高阻型共模干扰有效,当共模干扰源内阻较低时,会在接地线上形成较大的环路电流,影响正常通信,此时可以采取在接地线上加限流电阻限制干扰电流,或采用浮地技术、隔离接口等措施。2.1.4 总线负载能力与通讯电缆长度之间的关系 最后介绍 RS-485 总线的负载能力和通讯电缆长度之间的关系。在设计 RS-485总线组成的网络配置(总线长度和带负载个数)时,应该考虑到 3 个参数:纯阻性负载、信号衰减和噪声容限。从下面的公式能看出总线带负载的多少和通讯电缆长度之间的关系为式(2-4):Vend=0.8(Vdriver-Vloss-Vnoise Vbias)(2-4)其中:Vend 为总线末端的信号电压,在标准测定时规定为 0.2V;Vdriver 为驱动器的输出电压(与负载数有关,负载个数在 535 个之间,Vdriver=2.4V;当负载数小于 5 时,Vdriver=2.5V;当负载数大于 35 时,Vdriver 2.3 V);Vloss 为信号在总线中的传输过程的损耗(与通讯电缆的规格和长度有关),由标准电缆衰减系数,根据公式衰减系数 b=20lg(Vout/Vin)可以计算出 Vloss=Vin-Vout=0.6 V(注::通讯波特率为 9.6 kbps,电缆长度 1km,如波特率增加,Vloss 会相应增大);Vnoise 为噪声容限,标准测定时规定为 0.1 V;Vbias 是由偏置电阻提供的偏置电压(其典型值为 0.4V)。上式中乘以 0.8 是为了使通信电缆不进入满载状态。从上式可以看出,Vdriver 的大小和总线上带负载数的多少成反比,Vloss 的大小和总线长度成反比,其它几个参数只和用的驱动器类型有关。因此,在选定了驱动器的 RS-485 总线上,在通信波特率一定的情况下,负载数的多少与信号传输的最大距离是直接相关的。具体关系是:在总线允许的范围内,带负载数越多,信号能传输的距离就越小;带负载数越少,信号能传输的距离就越远。RS-485 标准定义了一个极为坚固和可靠的通信链路,具有高噪声抑制、宽共模范围、长传输距离、冲突保护等特性,但只有在采取合理的布局和周全的保护措施等条件下,才能建立一个真正可靠的 RS-485 网络。因此这就为本系统的RS-485 模块的设计及总线长度的选定提供了坚实的理论基础。武 汉 理 工 大 学 毕 业 论 文(设 计)9 2.1.5 RS-485 常规接线电路 如图 2-3 所示为 RS-485 常规接线电路图。由于 RS-485 是半双工通信方式,所以任何时刻只允许线路处于接收信号状态,或者处于输出信号状态。平时在无数据传输的情况下,一般将 RS-485 置于接收信号状态下工作,这样一旦有数据传输过来,能及时收到。因此通常将接收信号使能端与输出信号使能端并接在一块,由单片机一个 I/O 口经反相器控制其使能,以保证由于 RS-485 通信正常。另外在从接收信号到输出信号,或者从输出信号到接收信号的转换过程中,存在一定的延时,即 RS-485 的信号接收状态从原来一种状态转换到另一种状态时,需要加入一定的延时,否则信号接发可能发生错误。RXDTXDRO1RE2DE3DI4GND5A6B7VCC8U26MAX487VCCGNDR2610KVCC56U10C74LS04D6D7D5GNDP1.0R412012JP1JUMPERD4 图 2-3 RS-485 常规接线电路图 2.1.6 RS-485 零延时接线电路 上述电路在信号切换时存在一定的延时,可以用如图 2-4 所示接线电路图,以自动进行收发转换过程。由于单片机晶振一般在 24MHz 以下,因此这种接线方法甚至达到零延时的转换,从而也减少程序的控制量。那么在一个简单的 RS-485 收发装置中,可以采用低功率 RS-485 收发器MAX485 加以外围电路即可完成。然而当信号在一根长电缆上传输或具有很高的传输速率时,电缆将会呈现传输线的特性。在这种情况下,必须按其特性阻抗进行终端匹配。按照 RS-485 总线的电气特性,在 RS-485 串行接口系统实现的过程中,假如接收器同向输入(A)电平比接收器反向输入(B)电平高出 200mV 或更高,则 RS-485 串行接口的接收器输出为“1”,反之 B 比 A 高出 200 mV 或更高,则输出为“0”。在一个半双工的 RS-485 串行接口网络中,主机的收发器给从机发完一组信息后将总线置为三态,没有任何信号驱动总线,使 A 和 B 之间的电平差武 汉 理 工 大 学 毕 业 论 文(设 计)10 趋于 0,此时接收器的输出状态不定。假如总线上有干扰,使得接收器的输出为“0”,从机则将把其解释为一个新的数据起始位并且试图读取后续的数据位。由于永远不会有停止位,这便会产生一帧错误结果,也就不会再有设备请求总线,网络将陷于瘫痪状态。RXDTXDRO1RE2DE3DI4GND5A6B7VCC8U5MAX48712JP1JUMPERVCCR4300R35.1kQ99014R25.1kR20120R51kR7100R61k 图 2-4 RS-485 电路接线图 解决的方法是在硬件上将总线进行偏置,如图 2-4 所示为 RS-485 电路接线图。在 A 端增加上拉电阻 R5,在 B 端增加下拉电阻 R7,AB 间并入一个电阻 R6,(典型值 R5=1k;R2=1k;R3=100),这样当总线上没有数据传输时,AB 间电压差大约为 238mV,即使总线上没有数据传输时,也很难出现数据的起始位“0”,这样也就增加总线的抗干扰能力。在软件上则是在通信协议的设计上加以注意,一般在 RS-485 多机主从异步通信中多采用数据包通信方式,每包数据都有引导码、长度码、地址码、命令码、内容数据、检验码及结束码等部分组成。在协议中,以引导码来区分数据的发送或接收,地址码用于区分各个从机,每个从机被分配一个唯一的地址。主机向从机发送信息时,以命令字节来控制是否有数据码,同时命令码还可能包括其他控制信息。一般仅用命令码来传递控制信息,这样整个数据包长度为 4 个字节。通讯过程中,从机处于从属地位,从机接到数据包时,检查数据包中的地址码是否与本地址相符,不相符则抛弃该数据包,相符则继续检查命令码。若命令码指示有数据,则接受数据码并发送应答;若命令码为状态查询,则发送仅包含状态码的应答数据包;若命令码为数据查询,则发送仅含数据码的应答数据包;若命令码为广播的控制信号,则根据控制信号运行而不做应答。另外在实际 RS-485 通信试验中,通过监测总线得知在 RS-485 收发装置接收和发送功换时会有数据 0 出现,因此在主机数据包中的命令应避免数据 0 的出现。武 汉 理 工 大 学 毕 业 论 文(设 计)11 2.2 RS-232/RS-485 转换器 如何实现单片机与计算机之间的通信是整个系统能否结合成为一体工作的关键。那么在硬件上,RS-232/RS-485 转换器就正是整个系统结合成为一体工作的硬件基础。如图 2-5 所示为 RS-232/RS-485 转换器接线电路图。RXDTXDC1+1V+2C1-3C2+4C2-5V-6T2out7R2in8R2out9T2in10T1in11R1out12R1in13T1out14GND15Vcc16U7MAX232C121uC161uC151uC141uC131uVCC162738495U25PCCOMD3LEDR21120RO1RE2DE3DI4GND5A6B7VCC8U5MAX48712JP1JUMPERVCCR4300R35.1kQ99014R25.1kR20120R51kR7100R61k 图 2-5 RS-232/RS-485 转换器接线电路图 该电路的 RS-232C 电平转换电路采用了 MAX232 集成电路,RS-485 电路采用了前面选定的 MAX485 集成电路模块。计算机的 COM 口,第 2 脚为信号接收,第 3 脚为信号输出,第 5 脚为地线,图中只要将这 3 条线连接即可正常工作了。RS-232C 标准规定:当误码率小于 4%时,要求导线的电容值应小于 2500pF。对于普通导线,其电容值约为 170pF/M。则允许距离 L=2500pF/(1700pF/M)=15M。这一距离的计算,是偏于保守的,不过在实际应用中,当使用 9600bps,普通双绞屏蔽线时,距离也只可以达到 30 米35 米4。所以要求 1000 米的远距离通信时,只用 RS-232C 通信是无法达到的,因此在 RS-232C 后加入 RS-485 标准,形成了武 汉 理 工 大 学 毕 业 论 文(设 计)12 RS-232C/RS-485 转换器,可以实现远程通信了。为确保线路连接正确,特在 RS-232C 的 TTL 电平的信号接收端接入一个发光二极管,不仅能检测线路连通的情况,而且在数据通信过程中,随着数据的传输出而闪烁,起到了美观的作用。2.3 温度采集与显示从机设计 在温度采集与显示的从机模块中,用到了 DS1820 数字式温度传感器。而DS1820 数字式温度传感器只有三个引脚,第一引脚为电源+5V 输入,第三引脚为地线,只有中间第二引脚为数据传输线。因为只有一根数据线,数据的传输需要严格按照规定传输,因此在程序设计中与 DS1820 通信的程序块必需按照 DS1820数据通信协议编辑5。2.3.1 温度采集与显示从机的单片机最小系统 由于只做温度采集与显示以及通信的任务,该从机 I/O 口的使用数量很少,因此处理器选择了 I/O 数量较少,而体积相对更小的 AT89C2051 单片机。如图 2-6所示为 AT89C2051 单片机最小系统图。单片机晶振选用了 12MHz。VCC20P1.719P1.618P1.517P1.416P1.315P1.214P1.113P1.012P3.711RST1RXD2TXD3X14X25INT06INT17T08T19GND10U189C2051Y112MHzC133pFC233pFR11KC322uFS1+5RXDTXDP3.2P3.3P3.4P3.5VCC 图 2-6 AT89C2051 单片机最小系统图 2.3.2 温度采集与显示从机的数据显示电路 DS1820 的温度采集范围为-40C125C,因此,在显示温度时,只需 4 位 LED就可以显示包括一位小数在内的完整数据了。即前三位显示在温度为正时,直接显示整数值,第四位为显示小数值;而当温度为负时,第一位只显