rs485总线通讯协议.docx
《rs485总线通讯协议.docx》由会员分享,可在线阅读,更多相关《rs485总线通讯协议.docx(11页珍藏版)》请在冰点文库上搜索。
rs485总线通讯协议
竭诚为您提供优质文档/双击可除
rs485总线通讯协议
篇一:
Rs485通讯协议说明
摘要:
阐述了Rs-485总线规范,描述了影响Rs-485总线通信速率和通信可靠性的三个因素,同时提出了相应的解决方法并讨论了总线负载能力和传输距离之间的具体关系。
关键词:
Rs-485现场总线信号衰减信号反射
当前自动控制系统中常用的网络,如现场总线can、profibus、inteRbus-s以及aRcnet的物理层都是基于Rs-485的总线进行总结和研究。
一、eiaRs-485标准
在自动化领域,随着分布式控制系统的发展,迫切需要一种总线能适合远距离的数字通信。
在Rs-422标准的基础上,eia研究出了一种支持多节点、远距离和接收高灵敏度的Rs-485总线标准。
Rs-485标准采有用平衡式发送,差分式接收的数据收发器来驱动总线,具体规格要求:
接收器的输入电阻Rin≥12kΩ
驱动器能输出±7V的共模电压
输入端的电容≤50pF
在节点数为32个,配置了120Ω的终端电阻的情况下,驱动器至少还能输出电压1.5V(终端电阻的大小与所用双绞线的参数有关)
接收器的输入灵敏度为200mV(即(V+)-(V-)≥0.2V,表示信号“0”;(V+)-(V-)≤-0.2V,表示信号“1”)
因为Rs-485的远距离、多节点(32个)以及传输线成本低的特性,使得eiaRs-485成为工业应用中数据传输的首选标准。
二、影响Rs-485总线通讯速度和通信可靠性的三个因素
1、在通信电缆中的信号反射
在通信过程中,有两种信号因导致信号反射:
阻抗不连续和阻抗不匹配。
阻抗不连续,信号在传输线末端突然遇到电缆阻抗很小甚至没有,信号在这个地方就会引起反射,如图1所示。
这种信号反射的原理,与光从一种媒质进入另一种媒质要引起反射是相似的。
消除这种反射的方法,就必须在电缆的末端跨接一个与电缆的特性阻抗同样大小的终端电阻,使电缆的阻抗连续。
由于信号在电缆上的传输是双向的,因此,在通讯电缆的另一端可跨接一个同样大小的终端电阻,如图2所示。
从理论上分析,在传输电缆的末端只要跨接了与电缆特性阻抗相匹配的终端电阻,就再也不会出现信号反射现象。
但是,在实现应用中,由于传输电缆的特性阻抗与通讯波特率等应用环境有关,特性阻抗不可能与终端电阻完全相等,因此或多或少的信号反射还会存在。
引起信号反射的另个原因是数据收发器与传输电缆之间的阻抗不匹配。
这种原因引起的反射,主要表现在通讯线路处在空闲方式时,整个网络数据混乱。
信号反射对数据传输的影响,归根结底是因为反射信号触发了接收器输入端的比较器,使接收器收到了错误的信号,导致cRc校验错误或整个数据帧错误。
在信号分析,衡量反射信号强度的参数是RaF(RefectionattenuationFactor反射衰减因子)。
它的计算公式如式
(1)。
RaF=20lg(Vref/Vinc)
(1)
式中:
Vref—反射信号的电压大小;Vinc—在电缆与收发器或终端电阻连接点的入射信号的电压大小。
具体的测量方法如图3所示。
例如,由实验测得2.5mhz的入射信号正弦波的峰-峰值为+5V,反射信号的峰-峰值为+0.297V,则该通讯电缆在2.5mhz的通讯速率时,它的反射衰减因子为:
RaF=20lg(0.297/2.5)=-24.52db
要减弱反射信号对通讯线路的影响,通常采用噪声抑制和加偏置电阻的方法。
在实际应用中,对于比较小的反射信号,为简单方便,经常采用加偏置电阻的方法。
在通讯线路中,如何通过加偏置电阻提高通讯
可靠性的原理,后面将做详细介绍。
2、在通讯电缆中的信号衰减
第二个影响信号传输的因素是信号在电缆的传输过程中衰减。
一条传输电缆可以把它看出由分布电容、分布电感和电阻联合组成的等效电路,如图4所示。
电缆的分布电容c主要是由双绞线的两条平行导线产生。
导线的电阻在这里对信号的影响很小,可以忽略不计。
信号的损失主要是由于电缆的分布电容和分布电感组成的lc低通滤波器。
pRoFibus用的lan标准型二芯电感(西门子为dp总线选用的标准电缆),在不同波特率时的衰减系数如表1所示。
表1电缆的衰减系数
3、在通讯电缆中的纯阻负载
影响通讯性能的第三个因素是纯阻性负载(也叫直流负载)的大小。
这里指的纯阻性负载主要由终端电阻、偏置电阻和Rs-485收发器三者构成。
在叙述eiaRs-485规范时曾提到过Rs-485驱动器在带了32个节点,配置了150Ω终端电阻的情况下,至少能输出1.5V的差分电压。
一个接收器的输入电阻为12kΩ,整个网络的等效电路如图5所示。
按这样计算,Rs-485驱动器的负载能力为:
Rl=32个输入电阻并联||2个终端电阻=((12000/32)×(150/2))/(12000/32)+(150/2))≈51.7Ω现在比较常用的Rs-485驱动器有max485、ds3695、max1488/1489以及和利时公司使用的sn75176a/d等,其中有的Rs-485驱动器负载能力可以达到20Ω。
在不考虑其它诸多因素的情况下,按照驱动能力和负载的关系计算,一个驱动器可带节点的最大数量将远远大于32个。
在通讯波特率比较高的时候,在线路上偏置电阻是很有必要的。
偏置电阻的连接方法如图6。
它的作用是在线路进入空闲状态后,把总线上没有数据时(空闲方式)的电平拉离0电平,如图7。
这样一来,即使线路中出现了比较小的反射信号或干扰,挂接在总线上的数据接收器也不会由于这些信号的到来而产生误动作。
通过下面后例子了,可以计算出偏置电阻的大小:
终端电阻Rt1=Rr2=120Ω;
假设反射信号最大的峰-峰值Vref≤0.3Vp-p,则负半周的电压Vref≤0.15V;终端的电阻上由反射信号引起的反射电流iref≤0.15/(120||120)=2.5ma。
一般Rs-485收发器(包括sn75176)的滞后电压值(hysteresisvalue)为50mV,即:
(ibias-iref)×(Rt1||Rt2)≥50mV
于是可以计算出偏置电阻产生的偏置电流ibias≥3.33ma
+5V=ibias(R上拉+R下拉+(Rt1||Rt2))
(2)
通过式2可以计算出R上拉=R下拉=720Ω
在实际应用中,Rs-485总线加偏置电阻有两种方法:
(1)把偏置电阻平衡分配给总线上的每一个收发器。
这种方法给挂接在Rs-485总线上的每一个收发器加了偏置电阻,给每一个收发器都加了一个偏置电压。
(2)在一段总线上只用一对偏置电阻。
这种方法对总线上存在大的反射信号或干扰信号比较有效。
值得注意的是偏置电阻的加入,增加了总线的负载。
三、Rs-485总线的负载能力和通讯电缆长度之间的关系
在设计Rs-485总线组成的网络配置(总线长度和带负载个数)时,应该考虑到三个参数:
纯阻性负载、信号衰减和噪声容限。
纯阻性负载、信号衰减这两个参数,在前面已经讨论过,现在要讨论的是噪声容限(noisemargin)。
Rs-485总线接收器的噪声容限至少应该大于200mV。
前面的论述者是在假设噪声容限为0的情况下进行的。
在实际应用中,为了提高总线的抗干扰能力,总希望系统的噪声容限比eiaRs-485标准中规定的好一些。
从下面的公式能看出总线带负载的多少和通讯电缆长度之间的关系:
Vend=0.8(Vdriver-Vloss-Vnoise-Vbias)(3)
其中:
Vend为总线末端的信号电压,在标准测定时规定为0.2V;Vdriver为驱动器的输出电压(与负载数有关。
负载数在5~35个之间,Vdriver=2.4V;当负载数小于5,Vdriver=2.5V;当负载数大于35,
Vdriver≤2.3V);Vloss为信号在总线中的传输过程中的损耗(与通讯电缆的规格和长度有关),由表1提供的标准电缆的衰减系数,根据公式衰减系数b=20lg(Vout/Vin)可以计算出Vloss=Vin-Vout=0.6V(注:
通讯波特率为9.6kbps,电缆长度1km,如果特率增加,Vloss会相应增大);Vnoise为噪声容限,在标准测定时规定为0.1V;Vbias是由偏置电阻提供的偏置电压(典型值为0.4V)。
篇二:
Rs485串行通信协议及其应用
Rs-485串行数据通信协议及其应用
概述
串行数据通信的协议从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和Fieldbus[2]总线主要用于工业设备,是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的应用笔记#977[3]所介绍的方法进行测量。
测量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的收发器具有对称的输出边沿和较低的输入电容,性能良好。
采用上述测试对两款驱动器进行比较。
当数据速率较高、电缆较长时,maxim驱动器的性能更出色。
图5给出点对点网络中maxim器件的传输速率和距离的估计值。
根据经验,所产生的误码大致符合50%抖动极限的要求。
各方研究数据
在工业领域,通常可接受的传输距离和数据速率的最大值分别为4000英尺和10mbps,当然这两个值不能同时满足。
然而,利用最新器件和精细的系统设计,可在较长的电缆下实现较高的数据吞吐率。
预加重[5]是一种改善数据速率与距离间关系的技术,可用于Rs-485通信(图6)。
采用1700英尺电缆,工作在1mbps固定数据速率,没有预加重驱动器或均衡接收器的Rs-485收发器通常具有10%的抖动。
在相同速率下,增加驱动器预加重可使距离加倍,达到3400英尺,而且不会提高抖动。
同样,距离一定时采用预加重能提高数据速率。
速率为400kbps,电缆长度为4000英尺时,无预加重的驱动器通常具有10%的抖动。
而采用预加重可使该距离下的传输速率提升至800kbps。
篇三:
rs485通信协议
Rs485主从式多机通讯协议
一、数据传输协议
此协议定义了一个控制器能认识使用的消息结构,而不管它们是经过何种网络进行通信的。
它描述了一控制器请求访问其它设备的过程,如何回应来自其它设备的请求,以及怎样侦测错误并记录。
它制定了消息域格局和内容的公共格式。
1、数据在网络上转输
控制器通信使用主—从技术,即仅一设备(主设备)能初始化传输(查询)。
其它设备(从设备)根据主设备查询提供的数据作出相应反应。
主设备可单独和从设备通信,也能以广播方式和所有从设备通信。
如果单独通信,从设备返回一消息作为回应,如果是以广播方式查询的,则从设备不作任何回应。
协议建立了主设备查询的格式:
设备(或广播)地址、功能代码、所有要发送的数据、一错误检测域。
从设备回应消息也由协议构成,包括确认要行动的域、任何要返回的数据、和一错误检测域。
如果在消息接收过程中发生一错误(无相应的功能码),或从设备不能执行其命令,从设备将建立一错误消息并把它作为回应发送出去。
2、在对等类型网络上转输
在对等网络上,控制器使用对等技术通信,故任何控制都能初始和其它控制器的通信。
这样在单独的通信过程中,控制器既可作为主设备也可作为从设备。
在消息位,本协议仍提供了主—从原则,尽管网络通信方法是“对等”。
如果一控制器发送一消息,它只是作为主设备,并期望从设备得到回应。
同样,当控制器接收到一消息,它将建立一从设备回应格式并返回给发送的控制器。
3、查询—回应周期
(1)查询
查询消息中的功能代码告之被选中的从设备要执行何种功能。
数据段包含了从设备要执行功能的任何附加信息。
错误检测域为从设备提供了一种验证消息内容是否正确的方法。
(2)回应
如果从设备产生一正常的回应,在回应消息中的功能代码是在查询消息中的功能代码的回应。
数据段包括了从设备收集的数据。
如果有错误发生,功能代码将被修改以用于指出回应消息是错误的,同时数据段包含了描述此错误信息的代码。
错误检测域允许主设备确认消息内容是否可用。
二、传输方式
控制器能设置传输模式为Rs485串行传输,通信参数为9600,n,8,1。
在配置每个控制器的时候,在一个网络上的所有设备都必须选择相同的串口参数。
地址功能代码数据数量数据1…….数据ncRc字节
每个字节的位
·1个起始位
·8个数据位,最小的有效位先发送
·1个停止位
错误检测域
·cRc(循环冗余码校验)
三、消息帧
1.帧格式
传输设备将消息转为有起点和终点的帧,这就允许接收的设备在消息起始处开始工作,读地址分配信息,判断哪一个设备被选中(广播方式则传给所有设备),判知何时信息已完成。
错误消息也能侦测到并能返回结果。
消息发送至少要以10ms时间的停顿间隔开始。
传输的第一个域是设备地址。
网络设备不断侦测网络总线,包括停顿间隔时间内。
当第一个域(地址域)接收到,每个设备都进行解码以判断是否发往自己的。
在最后一个传输字符之后,一个至少10ms时间的停顿标定了消息的结束。
一个新的消息可在此停顿后开始。
整个消息帧必须作为一连续的流转输。
如果在帧完成之前有超过5ms时间的停顿时间,接收设备将刷新不完整的消息并假定下一字节是一个新消息的地址域。
同样地,如果一个新消息在小于5ms的时间内接着前个消息开始,接收的设备将认为它是前一消息的延续。
这将导致一个错误,因为在最后的cRc域的值不可能是正确的。
一典型的消息帧如下所示:
起始间隔设备地址功能代码数据数量及数据cRc校验结束
2、地址域
消息帧的地址域包含一个字符8bit。
可能的从设备地址是0…247(十进制)。
单个设备的地址范围是1…247。
主设备通过将要联络的从设备的地址放入消息中的地址域来选通从设备。
当从设备发送回应消息时,也把自己的地址放入回应的地址域中,以便主设备知道是哪一个设备作出回应。
地址0是用作广播地址,以使所有的从设备都能认识。
3、如何处理功能域
消息帧中的功能代码域包含了一个字符8bits。
可能的代码范围是十进制的1…255。
当然,有些代码是适用于所有控制器,有此是应用于某种控制器,还有些保留以备后用。
当消息从主设备发往从设备时,功能代码域将告之从设备需要执行哪些行为。
例如去读取当前检测参量的值或开关状态,读从设备的诊断状态,允许调入、记录、校验在从设备中的程序等。
当从设备回应时,它使用功能代码域来指示是正常回应(无误)还是有某种错误发生(称作异议回应)。
对正常回应,从设备仅回应相应的功能代码。
对异议回应,从设备返回一等同于正常代码的代码,但功能代码的最高位为逻辑1。
例如:
一从主设备发往从设备的消息要求读一组保持寄存器,将产生如下功能代码:
00000011(十六进制03h)
对正常回应,从设备仅回应同样的功能代码。
对异议回应,它返回:
10000011(十六进制83h)
除功能代码因异议错误作了修改外,从设备将一独特的代码放到回应消息的数据域中,这能告诉主设备发生了什么错误。
主设备应对程序得到异议的回应后,典型的处理过程是重发消息,或者诊断发给从设备的消息并报告给操作员。
4、数据域
从主设备发给从设备消息的数据域包含附加的信息:
从设备用于进行执行由功能代码所定义的行为所必须的数据。
如果没有错误发生,从设备返回的数据域包含请求的数据。
如果有错误发生,此域包含一异议代码,主设备应用程序可以用来判断采取下一步行动。
在某种消息中数据域可以是0长度。
例如,主设备要求从设备回应通信事件记录,从设备回应不需任何附加的信息。
数据域最长为70字节。
5、错误检测域
错误检测域包含一字节8bits。
错误检测域的内容是通过对消息内容进行循环冗长检测方法得出的。
cRc域附加在消息的最后,故cRc字节是发送消息的最后一个字节。
四、错误检测方法
1、超时检测
用户要给主设备配置一预先定义的超时时间间隔,这个时间间隔要足够长,以使任何从设备都能作为正常反应。
如果从设备检测到一传输错误,消息将不会接收,也(rs485总线通讯协议)不会向主设备作出回应。
这样超时事件将触发主设备来处理错误。
发往不存在的从设备的
地址也会产生超时。
2、cRc检测
cRc域是一个字节,检测了整个消息的内容。
它由传输设备计算后加入到消息中。
接收设备重新计算收到消息的cRc,并与接收到的cRc域中的值比较,如果两值不同,则有误,从设备对本消息不作回应。
通讯网络只设有一个主机,所有通信都由他发起。
网络可支持254个之多的远程从属控制器,但实际所支持的从机数要由所用通信设备决定。