单片机RS-485多机通讯的实现.doc_第1页
单片机RS-485多机通讯的实现.doc_第2页
单片机RS-485多机通讯的实现.doc_第3页
单片机RS-485多机通讯的实现.doc_第4页
单片机RS-485多机通讯的实现.doc_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

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

文档简介

单片机RS485多机通讯的实现尹红唐煜摘要本文介绍一种能利用RS485电气特性和简单的结构方式,采用自定义串行通信协议,实现单片机RS485多机通讯的方法和技巧。关键词单片机,RS485总线,总线冲突,串行通信1 简介RS485串行总线接口标准以差分平衡方式传输信号,具有很强的抗共模干扰的能力,允许一对双绞线上一个发送器驱动多个负载设备。工业现场控制系统中一般都采用该总线标准进行数据传输,而且一般采用RS485串行总线接口标准的系统都使用8044芯片作为通信控制器或各分机的CPU。8044芯片内部集成了SDLC,HDLC等通信协议,并且集成了相应的硬件电路,通过硬件电路和标准协议的配合,使系统的通讯准确、可靠、快速。8044在市场上日渐稀少,虽然有8344可替代,但几百元的价位与普通单片机几元至几十元的价位相差甚远,用户在开发一般的单片机应用系统时,都希望能用简单的电路和简单的通信协议完成数据交换。譬如:利用单片机本身所提供的简单串行接口,加上总线驱动器如SN75176等组合成简单的RS485通讯网络。本文所述的方法已成功地应用于工程项目,一台主机与60台从机通讯,通讯波特率达64KBPS。2总线驱动器芯片SN75176常用的RS485总线驱动芯片有SN75174,SN75175,SN75176。SN75176芯片有一个发送器和一个接收器,非常适合作为RS485总线驱动芯片。SN75176及其逻辑如图1所示。图1SN75176芯片及其逻辑关系3RS485方式构成的多机通信原理在由单片机构成的多机串行通信系统中,一般采用主从式结构:从机不主动发送命令或数据,一切都由主机控制。并且在一个多机通信系统中,只有一台单机作为主机,各台从机之间不能相互通讯,即使有信息交换也必须通过主机转发。采用RS485构成的多机通讯原理框图,如图2所示。图2采用RS485构成的多机通讯原理框图在总线末端接一个匹配电阻,吸收总线上的反射信号,保证正常传输信号干净、无毛刺。匹配电阻的取值应该与总线的特性阻抗相当。当总线上没有信号传输时,总线处于悬浮状态,容易受干扰信号的影响。将总线上差分信号的正端A+和+5电源间接一个10K的电阻;正端A+和负端B-间接一个10K的电阻;负端B-和地间接一个10K的电阻,形成一个电阻网络。当总线上没有信号传输时,正端A+的电平大约为3.2V,负端B-的电平大约为1.6V,即使有干扰信号,却很难产生串行通信的起始信号0,从而增加了总线抗干扰的能力。4通信规则由于RS485通讯是一种半双工通讯,发送和接收共用同一物理信道。在任意时刻只允许一台单机处于发送状态。因此要求应答的单机必须在侦听到总线上呼叫信号已经发送完毕,并且没有其它单机发出应答信号的情况下,才能应答。半双工通讯对主机和从机的发送和接收时序有严格的要求。如果在时序上配合不好,就会发生总线冲突,使整个系统的通讯瘫痪,无法正常工作。要做到总线上的设备在时序上的严格配合,必须要遵从以下几项原则:1) 复位时,主从机都应该处于接收状态。SN75176芯片的发送和接收功能转换是由芯片的 RE* ,DE端控制的。RE*=1,DE=1时,SN75176发送状态;RE*=0,DE=0时,SN75176处于接收状态。一般使用单片机的一根口线连接RE*,DE端。在上电复位时,由于硬件电路稳定需要一定的时间,并且单片机各端口复位后处于高电平状态,这样就会使总线上各个分机处于发送状态,加上上电时各电路的不稳定,可能向总线发送信息。因此,如果用一根口线作发送和接收控制信号,应该将口线反向后接入SN75176的控制端,使上电时SN75176处于接收状态。另外,在主从机软件上也应附加若干处理措施,如:上电时或正式通讯之前,对串行口做几次空操作,清除端口的非法数据和命令。2) 控制端RE*,DE的信号的有效脉宽应该大于发送或接收一帧信号的宽度。在RS232,RS422等全双工通讯过程中,发送和接收信号分别在不同的物理链路上传输,发送端始终为发送端,接收端始终为接收端,不存在发送、接收控制信号切换问题。在RS485半双工通讯中,由于SN75176的发送和接收都由同一器件完成,并且发送和接收使用同一物理链路,必须对控制信号进行切换。控制信号何时为高电平,何时为低电平,一般以单片机的TI,RI信号作参考。发送时,检测TI是否建立起来,当TI为高电平后关闭发送功能转为接收功能;接收时,检测RI是否建立起来,当RI为高电平后,接收完毕,又可以转为发送。在理论上虽然行得通,但在实际联调中却出现传输数据时对时错的现象。根据查证有关资料,并在联调中借助存储示波器反复测试,才发现一个值得注意的问题,我们可以查看单片机的时序: 图3串行口模式3时序图单片机在串行口发送数据时,只要将8位数据位传送完毕,TI标志即建立,但此时应发送的第九位数据位(若发送地址帧时)和停止位尚未发出。如果在这是关闭发送控制,势必造成发送帧数据不完整。如果单片机多机通讯采用较高的波特率,几条操作指令的延时就可能超过2位(或1位)数据的发送时间,问题或许不会出现。但是如果采用较低波特率,如9600,发送一位数据需100s左右,单靠几条操作指令的延时远远不够,问题就明显地暴露出来。接收数据时也同样如此,单片机在接收完8个数据位后就建立起RI信号,但此时还未接收到第九位数据位(若接收地址帧时)和停止位。所以,接收端必须延时大于2位数据位的时间(1位数据位时间=1/波特率),再作应答,否则会发生总线冲突。3) 总线上所连接的各单机的发送控制信号在时序上完全隔开。为了保证发送和接收信号的完整和正确,避免总线上信号的碰撞,对总线的使用权必须进行分配才能避免竞争,连接到总线上的单机,其发送控制信号在时间上要完全隔离。总之,发送和接收控制信号应该足够宽,以保证完整地接收一帧数据,任意两个单机的发送控制信号在时间上完全分开,避免总线争端。程序流程框图,参见图4。其中:a)为发送流程图;b)为接收流程图。图4程序流程图注:延时T秒的取值(1) 传送地址帧时,T2X(1/波特率),可以选取T=2.5X(1/波特率)。(2) 传送数据帧时,T1X(1/波特率),可以选取T=1.5X(1/波特率)。作者简介:尹红工程师。主要从事计算机应用和数控产品的研究和开发工作唐煜研究员。主要从事计算机自动化会议系列产品的研究和开发工作作者单位:中国科学院成都计算机应用研究所四川。成都(610041)收稿日期:1998-08-17EIARS-485标准在自动化领域,随着分布式控制系统的发展,迫切需要一种总线能适合远距离的数字通信。在RS-422标准的基础上,EIA研究出了一种支持多节点、远距离和接收高灵敏度的RS-485总线标准。RS-485标准采用平衡式发送,差分式接收的数据收发器来驱动总线,具体规格要求:•接收器的输入电阻RIN12k•驱动器能输出7V的共模电压•输入端的电容50pF•在节点数为32个,配置了120的终端电阻的情况下,驱动器至少还能输出电压1.5V(终端电阻的大小与所用双绞线的参数有关)•接收器的输入灵敏度为200mV(即V+-V-0.2V,表示信号0;V+-V-0.2V,表示信号1)因为RS-485的远距离、多节点(32个)以及传输线成本低的特性,使得EIARS-485成为工业应用中数据传输的首选标准。2影响RS-485总线通讯速度和通信可靠性的三个因素2.1在通信电缆中的信号反射在通信过程中,有两种原因导致信号反射:阻抗不连续和阻抗不匹配。阻抗不连续,信号在传输线末端突然遇到电缆阻抗很小甚至没有,信号在这个地方就会引起反射,如图1所示。这种信号反射的原理,与光从一种媒质进入另一种媒质要引起反射是相似的。消除这种反射的方法,就必须在电缆的末端跨接一个与电缆的特性阻抗同样大小的终端电阻,使电缆的阻抗连续。由于信号在电缆上的传输是双向的,因此,在通讯电缆的另一端也要跨接一个同样大小的终端电阻,如图2所示。从理论上分析,在传输电缆的末端只要跨接了与电缆特性阻抗相匹配的终端电阻,就再也不会出现信号反射现象。但是,在实际应用中,由于传输电缆的特性阻抗与通讯波特率等应用环境有关,特性阻抗不可能与终端电阻完全相等,因此或多或少的信号反射还会存在。引起信号反射的另一个原因是数据收发器与传输电缆之间的阻抗不匹配。这种原因引起的反射,主要表现在通讯线路处在空闲方式时,整个网络数据混乱。信号反射对数据传输的影响,归根结底是因为反射信号触发了接收器输入端的比较器,使接收器收到了错误的信号,导致CRC校验错误或整个数据帧错误。在信号分析中,衡量反射信号强度的参数是RAF(RefectionAttenuationFactor反射衰减因子)。它的计算公式如式(1)。RAF=20lgVref/Vinc1Vref-反射信号的电压大小Vinc-在电缆与收发器或终端电阻连接点的入射信号的电压大小。具体的测量方法如图3所示。例如,由实验测得2.5MHz的入射信号正弦波的峰峰值为+5V,反射信号的峰峰值为+0.297则该通讯电缆在2.5MHz的通讯速率时,它的反射衰减因子为:RAF=20lg0.297/2.5=-24.52dB要减弱反射信号对通讯线路的影响,通常采用噪声抑制和加偏置电阻的方法。在实际应用中,对于比较小的反射信号,为简单方便,经常采用加偏置电阻的方法。在通讯线路中,如何通过加偏置电阻提高通讯可靠性的原理,后面将做详细介绍。2.2在通讯电缆中的信号衰减第二个影响信号传输的因素是信号在电缆的传输过程中衰减。一条传输电缆可以把它看作由分布电容、分布电感和电阻联合组成的等效电路,如图4所示。电缆的分布电容C主要是由双绞线的两条平行导线产生。导线的电阻在这里对信号的影响很小,可以忽略不计。信号的损失主要是由于电缆的分布电容和分布电感组成的LC低通滤波器。PROFIBUS用的LAN标准型二芯电缆(西门子为DP总线选用的标准电缆),在不同波特率时的衰减系数如表1所示。表1电缆的衰减系数通讯波特率 16MHz 4MHz? 38.4kHz 9.6kHz衰减系数1km 42dB 22dB 4dB 2.5dB2.3在通讯电缆中的纯阻性负载影响通讯性能的第三个因素是纯阻性负载也叫直流负载的大小。这里指的纯阻性负载主要是由终端电阻、偏置电阻和RS-485收发器三者构成。在叙述EIARS-485规范时曾提到过RS-485驱动器在带了32个节点,配置了150终端电阻的情况下,至少能输出1.5V的差分电压。一个接收器的输入电阻为12k,整个网络的等效电路如图5所示。按这样计算,RS-485驱动器的负载能力为:RL=32个输入电阻并联2个终端电阻12000/32150/2/12000/32150/251.7现在比较常用的RS-485驱动器有MAX485、DS3695、MAX1488/1489以及和利时公司使用的SN75176A/B等,其中有的RS-485驱动器负载能力可以达到20。在不考虑其它诸多因素的情况下,按照驱动能力和负载的关系计算,一个驱动器可带节点的最大数量将远远大于32个。在通讯波特率比较高的时候,在线路上加偏置电阻是很有必要的。偏置电阻的连接方法如图6。它的作用是在线路进入空闲状态后,把总线上没有数据时(空闲方式)的电平拉离0电平,如图7。这样一来,即使线路中出现了比较小的反射信号或干扰,挂接在总线上的数据接收器也不会由于这些信号的到来而产生误动作。通过下面的例子,可以计算出偏置电阻的大小:终端电阻Rt1=Rt2=120;假设反射信号最大的峰峰值Vref0.3Vp-p,则负半周的电压Vref0.15V;终端电阻上由反射信号引起的反射电流Iref0.15/1201202.5mA。一般RS-485收发器(包括SN75176)的滞后电压值(hysteresisvalue)为50mV,即Ibias-Iref(Rt1Rt2)50mV于是可以计算出由偏置电阻产生的偏置电流Ibias3.33mA+5V=Ibias(R上拉+R下拉+(Rt1Rt2)2通过式2可以计算出上拉=R下拉=720在实际应用中,RS-485总线加偏置电阻有两种方法:(1)把偏置电阻平均分配给总线上的每一个收发器。这种方法给挂接在RS-485总线上的每一个收发器加了偏置电阻,给每一个收发器都加了一个偏置电压。(2)在一段总线上只用一对偏置电阻。这种方法对总线上存在大的反射信号或干扰信号时比较有效。值得注意的是偏置电阻的加入,增加了总线的负载。3RS-485总线的负载能力和通讯电缆长度之间的关系在设计RS-485总线组成的网络配置(总线长度和带负载个数)时,应该考虑到三个参数:纯阻性负载、信号衰减和噪声容限。纯阻性负载、信号衰减这两个参数,在前面已经讨论过,现在要讨论的是噪声容限NOISEMargin。RS-485总线接收器的噪声容限至少应该大于200mV。前面的论述都是在假设噪声容限为0的情况下进行的。在实际应用中,为了提高总线的抗干扰能力,总希望系统的噪声容限比EIARS-485标准中规定的好一些。从下面的公式能看出总线带负载的多少和通讯电缆长度之间的关系:Vend=0.8Vdriver-Vloss-Vnoise-Vbias3其中:Vend为总线末端的信号电压,在标准测定时规定为0.2V;Vdriver为驱动器的输出电压(与负载数有关。负载数在535个之间,Vdriver=2.4V;当负载数小于5,Vdriver=2.5V;当负载数大于35,Vdriver2.3V);Vloss为信号在总线中的传输过程中的损耗(与通信电缆的规格和长度有关)由表1提供的标准电缆的衰减系数,根据公式衰减系数=20lgVout/Vin可以计算出Vloss=Vin-Vout=0.6V注:通讯波特率为9.6kbps,电缆长度为1km,如果波特率增加,Vloss会相应增大Vnoise为噪声容限,在标准测定时规定为0.1V;Vbias是由偏置电阻提供的偏置电压(典型值为0.4V)。式(3)中乘以0.8是为了使通信电缆不进入满载状态。从式3可以看出,Vdriver的大小和总线上带负载数的多少成反比,Vloss的大小和总线长度成反比,其他几个参数只和用的驱动器类型有关。因此,在选定了驱动器的RS-485总线上,在通信波特率一定的情况下,带负载数的多少,与信号能传输的最大距离是直接相关的。具体关系是:在总线允许的范围内,带负载数越多,信号能传输的距离就越小;带负载数越少,信号能传输的距离就越远。4分布电容对RS-485总线传输性能的影响电缆的分布电容主要是由双绞线的两条平行导线产生。另外,导线和地之间也存在分布电容,虽然很小,但在分析时也不能忽视。分布电容对总线传输性能的影响,主要是因为总线上传输的是基波信号,信号的表达方式只有1和0。在特殊的字节中,例如0x01,信号0使得分布电容有足够的充电时间,而信号1到来时,由于分布电容中的电荷,来不及放电,Vin+-Vin-还大于200mV,结果使接受器误认为是0,而最终导致CRC校验错误,整个数据帧传输错误。具体过程如图8所示。由于总线上分布电容的影响,导致数据传输错误,从而使整个网络性能降低。解决这个问题有两种方法:(1)降低数据传输的波特率;(2)使用分布电容小的电缆,提高传输线的质量。串行数据通信的协议从RS-232到千兆位以太网,虽然每种协议都有特定的应用领域,但任何情况下我们都必须考虑成本和物理层(PHY)性能。 本文主要介绍RS-485协议及该协议所适合的应用。同时给出了根据电缆长度、系统设计以及元件选择来优化数据速率的方法。 传输协议 什么是RS-485?Profibus又是什么?与其它串行协议相比,它们的性能如何?适用于哪些应用?为了回答这些问题,我们对RS-485物理层(PHY)、RS-232和RS-422的特性、功能进行了总体比较1(本文中的RS表示ANSIEIA/TIA标准)。 RS-232是一个最初用于调制解调器、打印机及其它PC外设的通讯标准,提供单端20kbps的波特率,后来速率提高至1Mbps。RS-232的其它技术指标包括:标称5V发送电平、3V接收电平(间隔/符号)、2V共模抑制、2200pF最大电缆负载电容、300最大驱动器输出电阻、3k最小接收器(负载)阻抗、100英尺(典型值)最大电缆长度。RS-232只用于点对点通信系统,不能用于多点通信系统,所有RS-232系统都必须遵从这些限制。 RS-422是单向、全双工通信协议,适合嘈杂的工业环境。RS-422规范允许单个驱动器与多个接收器通信,数据信号采用差分传输方式,速率最高可达50Mbps。接收器共模范围为7V,驱动器输出电阻最大值为100,接收器输入阻抗可低至4k。 RS-485标准 RS-485是双向、半双工通信协议,允许多个驱动器和接收器挂接在总线上,其中每个驱动器都能够脱离总线。该规范满足所有RS-422的要求,而且比RS-422稳定性更强。具有更高的接收器输入阻抗和更宽的共模范围(-7V至+12V)。 接收器输入灵敏度为200mV,这就意味着若要识别符号或间隔状态,接收端电压必须高于+200mV或低于-200mV。最小接收器输入阻抗为12k,驱动器输出电压为1.5V(最小值)、5V(最大值)。 驱动器能够驱动32个单位负载,即允许总线上并联32个12k的接收器。对于输入阻抗更高的接收器,一条总线上允许连接的单位负载数也较高。RS-485接收器可随意组合,连接至同一总线,但要保证这些电路的实际并联阻抗不高于32个单位负载(375)。 采用典型的24AWG双绞线时,驱动器负载阻抗的最大值为54,即32个单位负载并联2个120终端匹配电阻。RS-485已经成为POS、工业以及电信应用中的最佳选择。较宽的共模范围可实现长电缆、嘈杂环境(如工厂车间)下的数据传输。更高的接收器输入阻抗还允许总线上挂接更多器件。 Profibus和Fieldbus2总线主要用于工业设备,是RS-485总线的扩展。用于工业环境的传感器测量、激励控制、数据采集/显示以及过程控制系统与传感器、激励源网络之间的数据通信。 注意:老式或现有的工业设备布线架构比较复杂,不可替换。 Profibus和Fieldbus是对系统的整体描述。RS-485支持Profibus和Fieldbus协议的物理层接口标准。Profibus与Fieldbus存在细微的差异,Profibus要求2.0V的最小差分输出电压,54的负载电阻;Fieldbus则要求1.5V的最小差分输出电压,54的负载电阻。Profibus传输速率为12Mbps,Fieldbus的传输速率为500kbps。Profibus应用对摆率和电容容限要求比较严格。 最适合的应用领域? RS-232:用于与调制解调器、打印机及其它PC外设之间的通信。最大电缆长度为100英尺(典型值)。 RS-422:适用于单主机(驱动器)工业环境。典型应用包括:过程自动化(化工、酿造、造纸)、工厂自动化(汽车制造、金属加工)、HVAC、安防、电机控制、运动控制等。 RS-485:适用于多主机/驱动器工业环境。其典型应用与RS-422相似,包括:过程自动化(化工、酿造、造纸)、工厂自动化(汽车制造、金属加工)、HVAC、安防、电机控制、运动控制。 哪些因素限制了RS-485的数据速率? 在指定的传输距离下,下列因素限制了传输速率: 电缆长度:在特定频率下,信号强度会随着电缆长度而衰减。 电缆架构:5类24AWG双绞线是RS-485系统最常用的电缆,屏蔽电缆可大大增强噪声抑制能力,提高了一定距离下的数据传输速率。 电缆特性阻抗:分布电容和分布电感会降低信号的边沿速度,从而降低噪声裕量、补偿“眼图模板”特性。分布电阻直接导致信号电平的衰减。 驱动器输出阻抗:阻抗过高会限制驱动能力。 接收器输入阻抗:阻抗过低会限制与驱动器通信的接收器数量。终端匹配:长电缆可看作传输线。电缆上应接阻值等于电缆特性阻抗的终端匹配电阻,可以降低信号反射,并提高数据速率。 噪声裕量:越大越好。 驱动器摆率:降低边沿速率(降低信号摆率)允许采用较长的电缆进行通信。 经验数据 了解了以上相关的背景知识,接下来我们研究一个实际系统,如图1所示。图中所示电缆是RS-485系统最为常用的一种:EIA/TIA/ANSI5685类双绞线。在长度为300英尺至900英尺的电缆上可以获得的数据速率为1Mbps至35Mbps。 图1.测试装置 系统设计人员经常从两个不同厂商选择驱动器和接收器,多数设计人员最关注的是RS-485驱动器的传输距离和速度。Maxim驱动器(这里指MAX3469)与其它制造商的驱动器性能比较如图2、图3所示。图2.在特定比特率、电缆长度下的抖动特性,抖动是在100mV差分信号下测量的 图3.在特定比特率、电缆长度下的抖动指标,抖动是在0V差分信号下测量的 通过观察驱动器的差分输出信号的完整性,利用示波器确定80mV与-400mV之间的翻转门限(由于接收器具有200mV至-200mV的输入范围和噪声裕量,因此选取这一门限范围)。然后,当脉冲(比特)开始“传送”时,用眼图确定失真度、噪声以及码间干扰(ISI)。 ISI指标限制了比特率,以保证系统能够在脉冲之间识别出传输数据。对图1电路的测试结果表明翻转门限与眼图模板之间具有相关性。该眼图模板存在50%的抖动,按照NationalSEMIconductor的应用笔记#9773所介绍的方法进行测量。测量0V差分信号和100mV差分信号下的抖动,得到图4和图5所示数据。图4.Maxim的MAX3469与其它RS-485驱动器件的眼图对比4 图5.MAX3469的眼图 对于一个点到点通信系统,从100mV差分信号(图4)或0V差分信号(图5)下的测试结果可以看出比特率与电缆长度的关系。+100mV和-100mV门限能够正确切换差分信号大于200mV的信号,因此,该门限值可确保接收器正确接收数据(图5数据仅适用于可在0V差分输入下切换的理想接收器)。 眼图和故障模式 采用340英尺的5类电缆,图2给出了39Mbps传输速率下的驱动器输出眼图,图中,信号从“眼”的中间穿过-这种情况表明可能出现误码。然而,在相同数据速率下,Maxim公司的器件不会出现这种情况(图3)。Maxim的收发器具有对称的输出边沿和较低的输入电容,性能良好。采用上述测试对两款驱动器进行比较。当数据速率较高、电

温馨提示

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

评论

0/150

提交评论