7709|14

79

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

RS485通讯 [复制链接]

  谁知道RS485通讯的详细资料???现在急用,谢谢!!!

最新回复

1 在电能表中的应用   由于历史的原因,我国在制定DL/T 614-1997《电子式多功能电能表》及DL/T 645-1997《电子式多功能电能表通讯协议》时将RS-485标准串行通讯接口作为电表的通讯接口,并详细地定义了物理层、链路层、应用层,结束了以前电表厂家规约各不兼容、互相不能抄的尴尬局面。各电表厂家遵循相同的协议标准对电表进行读写操作,简化了电表抄表应用及维护的工作量。使得国内的智能电表基本上可以做到互联互通。但是目前国内的485抄表还存在一些问题,主要是通信成功率低、不能做到即连即通、易损坏等。 2 物理层、链路层及数据传输 2.1 物理层   A)共模输入电压:-7V~+12V。   B)差模输入电压:大于0.2V。   C)三态方式输出。   D)半双工通信方式。   E)驱动能力不小于32个同类接口。   F)总线是无源的,由费率装置或数据终端提供电源。   G)逻辑“1”以A、B两线间的电压差为+(2~6)V表示;逻辑“0”以两线间的电压差为-(2~6)V表示。 2.2 链路层及数据传输   通讯链路的建立与解除由主站发出的信息帧来控制,帧的组成如表: 域        起始符        地址域        起始符        控制码        长度        数据域        校验码        结束码 字节代码        68H        A0        A1        A2        A3        A4        A5        A6        68H        C        L        DATA        CS        16H                                                                                                                 由上表可知,帧由起始符、地址域、控制码、数据长度、数据域、校验码及结束符等7个域组成,每部分由若干字节组成。   DL/T 645-1997规定,在发送帧信息之前,先发送1~4个字节FEH,其目的是预先拉高控制总线,以唤醒接收方,保障帧信息的顺利接收。   DL/T 645-1997规定了主—从结构的半双工通讯方式。每次通讯都是由主站向从站发出请求命令帧开始,从站根据要求作出响应。收到命令帧后的响应延时称作帧间延时Td:20ms≤Td≤500ms。字节之间停顿时间称作字节间延时Tb:Tb≤500ms。如图1所示: 3 RS485在电表通讯中的常见问题及解决方案 3.1 收发时序不匹配   现象1:485通讯不成功,用逻辑分析仪查看,发送的码字正确,电能表返回码字也符合规约。再细看,主站发送的码字的最后一位同电能表应答的数据帧的第一位之间几乎没有停顿。   分析:由于485总线是一个半双工的通讯方式,收和发不能同时进行,从发送完成到变为接收状态,无论是软件的处理抑或是硬件的切换都需要一定的延时,因此DL/T 645规定帧间延时Td:20ms≤Td≤500ms,主要是给发送方一个由发转为收的时间,保证接收方返回的数据能完整的被接收。而有些电能表,尤其是一些早期的多功能表对此考虑不够,在接收到主站的请求命令帧后,未进行帧响应延时,就立刻发送应答帧,而此时主站还处于发送状态,等主站返回到接收状态时,电能表前面的码字已发送完,主站接收到的应答数据帧不完整引起通信失败。   现象2:当主站对某块表连续抄几帧数据时,第一帧通讯成功,第二帧开始电表不回应答帧。   分析:同样的道理,电表的485由发转为收也需要延时,而有的主站软件编程时,没有考虑,接收完一帧数据后没有延时或延时不够就又开始抄下一帧,而此时电表还没有回到接收状态,通讯失败。在这里我们建议通信双方在编程时都必须严格遵守DL/T 645所规定的帧间延时,并留有余量,具体应用时可取一个中间值,如100ms。 3.2 判断帧起始符出错   对于电能表485总线来讲,它是一种数字异步通信方式。异步通信不象同步通信,其没有专门的同步信号进行同步,接收方无法准确判知哪一个字节是一帧数据通信的开始,因此DL/T 645中规定68H作为帧起始符(帧同步码),代表一帧数据的开始。有些主站和电能表在软件编程时考虑得比较理想,接收数据时未按照DL/T 645中规定68H来判定数据帧的开始,而是呆板的以接收到的第一个字符作为帧起始标志;如果电表在此帧数据之前发了几个FEH,其接收到的数据将会出现同步错误。另外,如总线上平时有干扰信号存在,导致485芯片不停地收到诸如FCH、DEH这样杂乱数据;当总线上有正常信号产生时,由于干扰信号比较小的原因,其对通信并无太大的影响,但对接收方来讲,其接收正确数据帧前会混有若干个字节的杂乱数据,由于同步处理不当,通讯也会失败。通常的做法是每接收一个字节都要判是否是68H,若不是则丢掉该字节,然后继续往下判,直到收到68H才启动一帧数据的接收。 3.3 帧奇偶校验位/帧结束符不合理   目前看来,由于这个原因引起485通信不成功占有很大的比例。我们知道,在485通信时,对于接收到的数据一般都会按收、发双方事先约定的奇偶校验方式进行数据检错,并将错误的数据帧剔除,等待发送方重发。这种ARQ的通信方式本身是无可厚非的,但是有的软件人员在编程时考虑问题不够全面,在判断一帧结束处理时,没有根据所收数据帧的长度和结束符“16H”及时地将数据接收任务结束,而是依据多长时间内收不到新的一个字节数据来认为一帧已收完。这种处理方法在下面这种情况下就会导致通信失败。   众所周知,RS485芯片的接收灵敏度为±200mV,即当电压UA—UB≥200mV时,输出逻辑“1”;UA—UB≤-200mV时,输出逻辑“0”。当-200mV<UA—UB<200mV时,输出不确定。这样一来,当总线上所有的485芯片均处于接收状态时,总线处于高阻状态,此时A、B间的压差为0V,芯片输出处于不定状态,可能输出“1”,也可能输出“0”,而且状态会随着时间而变化。如果输出为“0”,在某些时候则会导致通信失败。我们知道,电能表在发送完应答帧后,一般会马上从发送状态转换到接收状态。正常情况应该是:主站的485芯片收完最后一个字节的停止位后继续保持为“1”(波形见图2),而有的485芯片则可能跳变保持为“0”(波形见图3),UART(通用异步收发器)则认为又收到一个字节00H,且很有可能校验和是错的,这样接收软件可能会判断到一个字节校验位出错,而将前面接收完全正确的一帧丢掉,造成通信失败。 3.4 接口电路不合理   由于485在实际使用中存在这样或那样的问题,人们对其接口电路采取了各种保护、滤波措施。如加上保护二极管、热保险丝、电容、上拉电阻等(见图4), 这些措施有的有效,但有的无效甚至有害。   A)485总线的理想介质是双绞线,其等效阻抗约为120Ω,因此为了在长距离、高速通信时做到阻抗匹配,一般在电表的485的A、B线之间加一个120Ω的电阻。此种方式对于一对一的通信是实用的,但一对多时,如果每个电表内部均加一个120Ω的电阻,并在一起整个总线上的负载就很重,这样挂在总线上的485收发器就可能达不到标准的数量32个,且距离也会缩短。因此,只应在网络的起点和终点各加一个。    B)有的产品为了滤波而在A、B线对地加上电容,现在看来这样会带来问题。电容加小了不起作用;加大了,正常的信号会被滤除或造成波形失真。我们曾经做过试验,以1200bps通信时,0.1μF的电容就会影响通信的成功率。如果通信速率达到几百kbps,电容就不能加了。   C)同前面3.3所述,485总线处于悬浮状态时A、B线等电位。为了保证A比B高200mV以上,有的厂家将A、B线分别通过10k电阻上拉到5V、下拉到地,这样在都处于接收状态时,A、B间的电位差约为5V,485芯片的接收端为高,通信不受影响。这个想法是好的,但是实际组网中往往好几个厂家的表连在一起,如别的表中加了120Ω电阻,则上拉电阻、120Ω、下拉电阻之间构成分压关系,A、B线间的电压只有几十毫伏,接收端的电平还是不定。   D)目前国内应用的单片机大部分只有一个UART串口,而电能表一般均需一个485接口和一个红外光接口,受成本所限,有的厂家就将这两个信号通过线与线方式合在一起共用一个UART口。这样就带来一个问题,当红外通信时,485就会不通;另外,当红外收到各种可见光的干扰时,红外口不停地输出干扰信号,由于线与、线或逻辑的原因,485不能通信或485时通时不通。 4 结束语   485接口目前在国内电能计量、数据采集、能量管理系统中应用越来越广,是电能量采集自动化的基础,它的可靠性越来越受到设计人员和用户的重视。我们相信,随着技术的发展、应用的深入,其必将充分展现自身的特点而广为应用。 在MCU之间中长距离通信的诸多方案中,RS-485因硬件设计简单、控制方便、成本低廉等优点广泛应用于工厂自动化、工业控制、小区监控、水利自动报测等领域。但RS-485总线在抗干扰、自适应、通信效率等方面仍存在缺陷,一些细节的处理不当常会导致通信失败甚至系统瘫痪等故障,因此提高RS-485总线的运行可靠性至关重要。 1 RS-485接口电路的硬件设计     1)总线匹配。总线匹配有两种方法,一种是加匹配电阻,如图1a所示。位于总线两端的差分端口VA与VB之间应跨接120Ω匹配电阻,以减少由于不匹配而引起的反射、吸收噪声,有效地抑制了噪声干扰。但匹配电阻要消耗较大电流,不适用于功耗限制严格的系统。      另外一种比较省电的匹配方案是RC 匹配(图2 )利用一只电容C 隔断直流成分,可以节省大部分功率,但电容C的取值是个难点,需要在功耗和匹配质量间进行折衷。除上述两种外还有一种采用二极管的匹配方案(图3),这种方案虽未实现真正的匹配,但它利用二极管的钳位作用,迅速削弱反射信号达到改善信号质量的目的,节能效果显著。     2) RO及DI端配置上拉电阻。异步通信数据以字节的方式传送,在每一个字节传送之前,先要通过一个低电平起始位实现握手。为防止干扰信号误触发RO(接收器输出)产生负跳变,使接收端MCU进入接收状态,建议RO外接10kΩ上拉电阻。     3)保证系统上电时的RS-485芯片处于接收输入状态。对于收发控制端TC建议采用MCU引脚通过反相器进行控制,不宜采用MCU引脚直接进行控制,以防止MCU上电时对总线的干扰,如图4所示。     4)总线隔离。RS-485总线为并接式二线制接口,一旦有一只芯片故障就可能将总线“拉死”,因此对其二线口VA、VB与总线之间应加以隔离。通常在VA、VB与总线之间各串接一只4~10Ω的PTC电阻,同时与地之间各跨接5V的TVS二极管,以消除线路浪涌干扰。如没有PTC电阻和TVS二极管,可用普通电阻和稳压管代替。     5)合理选用芯片。例如,对外置设备为防止强电磁(雷电)冲击,建议选用TI的75LBC184等防雷击芯片,对节点数要求较多的可选用SIPEX的SP485R。 2 RS-485网络配置   1)网络节点数。网络节点数与所选RS-485芯片驱动能力和接收器的输入阻抗有关,如75LBC184标称最大值为64点,SP485R标称最大值为400点。实际使用时,因线缆长度、线径、网络分布、传输速率不同,实际节点数均达不到理论值。例如75LBC184运用在500m分布的RS-485网络上节点数超过50或速率大于9.6kb/s时,工作可靠性明显下降。通常推荐节点数按RS-485芯片最大值的70%选取,传输速率在1200~9600b/s之间选取。通信距离1km以内,从通信效率、节点数、通信距离等综合考虑选用4800b/s最佳。通信距离1km以上时,应考虑通过增加中继模块或降低速率的方法提高数据传输可靠性。   2)节点与主干距离。理论上讲,RS-485节点与主干之间距离(T头,也称引出线)越短越好。T头小于10m的节点采用T型,连接对网络匹配并无太大影响,可放心使用,但对于节点间距非常小(小于1m,如LED模块组合屏)应采用星型连接,若采用T型或串珠型连接就不能正常工作。RS-485是一种半双工结构通信总线,大多用于一对多点的通信系统,因此主机(PC)应置于一端,不要置于中间而形成主干的T型分布。    3 提高RS-485通信效率     RS-485通常应用于一对多点的主从应答式通信系统中,相对于RS-232等全双工总线效率低了许多,因此选用合适的通信协议及控制方式非常重要。     1.总线稳态控制(握手信号)。大多数使用者选择在数据发送前1ms将收发控制端TC置成高电平,使总线进入稳定的发送状态后才发送数据;数据发送完毕再延迟1ms后置TC端成低电平,使可靠发送完毕后才转入接收状态。据笔者使用TC端的延时有4个机器周期已满足要求;     2.为保证数据传输质量,对每个字节进行校验的同时,应尽量减少特征字和校验字。惯用的数据包格式由引导码、长度码、地址码、命令码、数据、校验码、尾码组成,每个数据包长度达20~30字节。在RS-485系统中这样的协议不太简练。推荐用户使用MODBUS协议,该协议已广泛应用于水利、水文、电力等行业设备及系统的国际标准中。 4 RS-485接口电路的电源、接地     对于由MCU结合RS-485微系统组建的测控网络,应优先采用各微系统独立供电方案,最好不要采用一台大电源给微系统并联供电,同时电源线(交直流)不能与RS-485信号线共用同一股多芯电缆。RS-485信号线宜选用截面积0.75mm2以上双绞线而不是平直线。对于每个小容量直流电源选用线性电源LM7805比选用开关电源更合适。当然应注意LM7805的保护:     1.LM7805输入端与地应跨接220~1000μF电解电容;     2.LM7805输入端与输出端反接1N4007二极管;     3.LM7805输出端与地应跨接470~1000μF电解电容和104pF独石电容并反接1N4007二极管;     4.输入电压以8~10V为佳,最大允许范围为6.5~24V。可选用TI的PT5100替代LM7805,以实现9~38V的超宽电压输入。 5 光电隔离     在某些工业控制领域,由于现场情况十分复杂,各个节点之间存在很高的共模电压。虽然RS-485接口采用的是差分传输方式,具有一定的抗共模干扰的能力,但当共模电压超过RS-485接收器的极限接收电压,即大于+12V或小于-7V时,接收器就再也无法正常工作了,严重时甚至会烧毁芯片和仪器设备。     解决此类问题的方法是通过DC-DC将系统电源和RS-485收发器的电源隔离;通过光耦将信号隔离,彻底消除共模电压的影响。实现此方案的途径可分为:     (1)用光耦、带隔离的DC-DC、RS-485芯片构筑电路;     (2)使用二次集成芯片,如PS1480、MAX1480等。 6 RS-485系统的常见故障及处理方法     RS-485是一种低成本、易操作的通信系统,但是稳定性弱同时相互牵制性强,通常有一个节点出现故障会导致系统整体或局部的瘫痪,而且又难以判断。故向读者介绍一些维护RS-485的常用方法。      1)若出现系统完全瘫痪,大多因为某节点芯片的VA、VB对电源击穿,使用万用表测VA、VB间差模电压为零,而对地的共模电压大于3V,此时可通过测共模电压大小来排查,共模电压越大说明离故障点越近,反之越远;      2)总线连续几个节点不能正常工作。一般是由其中的一个节点故障导致的。一个节点故障会导致邻近的2~3个节点(一般为后续)无法通信,因此将其逐一与总线脱离,如某节点脱离后总线能恢复正常,说明该节点故障;      3)集中供电的RS-485系统在上电时常常出现部分节点不正常,但每次又不完全一样。这是由于对RS-485的收发控制端TC设计不合理,造成微系统上电时节点收发状态混乱从而导致总线堵塞。改进的方法是将各微系统加装电源开关然后分别上电;      4)系统基本正常但偶尔会出现通信失败。一般是由于网络施工不合理导致系统可靠性处于临界状态,最好改变走线或增加中继模块。应急方法之一是将出现失败的节点更换成性能更优异的芯片;      5)因MCU故障导致TC端处于长发状态而将总线拉死一片。提醒读者不要忘记对TC端的检查。尽管RS-485规定差模电压大于200mV即能正常工作。但实际测量:一个运行良好的系统其差模电压一般在1.2V左右(因网络分布、速率的差异有可能使差模电压在0.8~1.5V范围内)。   详情 回复 发表于 2009-12-19 11:19
点赞 关注

回复
举报

70

帖子

0

TA的资源

一粒金砂(初级)

推荐
 
1 在电能表中的应用
  由于历史的原因,我国在制定DL/T 614-1997《电子式多功能电能表》及DL/T 645-1997《电子式多功能电能表通讯协议》时将RS-485标准串行通讯接口作为电表的通讯接口,并详细地定义了物理层、链路层、应用层,结束了以前电表厂家规约各不兼容、互相不能抄的尴尬局面。各电表厂家遵循相同的协议标准对电表进行读写操作,简化了电表抄表应用及维护的工作量。使得国内的智能电表基本上可以做到互联互通。但是目前国内的485抄表还存在一些问题,主要是通信成功率低、不能做到即连即通、易损坏等。

2 物理层、链路层及数据传输
2.1 物理层
  A)共模输入电压:-7V~+12V。
  B)差模输入电压:大于0.2V。
  C)三态方式输出。
  D)半双工通信方式。
  E)驱动能力不小于32个同类接口。
  F)总线是无源的,由费率装置或数据终端提供电源。
  G)逻辑“1”以A、B两线间的电压差为+(2~6)V表示;逻辑“0”以两线间的电压差为-(2~6)V表示。
2.2 链路层及数据传输
  通讯链路的建立与解除由主站发出的信息帧来控制,帧的组成如表:
域        起始符        地址域        起始符        控制码        长度        数据域        校验码        结束码
字节代码        68H        A0        A1        A2        A3        A4        A5        A6        68H        C        L        DATA        CS        16H
                                                                                                               
由上表可知,帧由起始符、地址域、控制码、数据长度、数据域、校验码及结束符等7个域组成,每部分由若干字节组成。
  DL/T 645-1997规定,在发送帧信息之前,先发送1~4个字节FEH,其目的是预先拉高控制总线,以唤醒接收方,保障帧信息的顺利接收。
  DL/T 645-1997规定了主—从结构的半双工通讯方式。每次通讯都是由主站向从站发出请求命令帧开始,从站根据要求作出响应。收到命令帧后的响应延时称作帧间延时Td:20ms≤Td≤500ms。字节之间停顿时间称作字节间延时Tb:Tb≤500ms。如图1所示:
3 RS485在电表通讯中的常见问题及解决方案
3.1 收发时序不匹配
  现象1:485通讯不成功,用逻辑分析仪查看,发送的码字正确,电能表返回码字也符合规约。再细看,主站发送的码字的最后一位同电能表应答的数据帧的第一位之间几乎没有停顿。
  分析:由于485总线是一个半双工的通讯方式,收和发不能同时进行,从发送完成到变为接收状态,无论是软件的处理抑或是硬件的切换都需要一定的延时,因此DL/T 645规定帧间延时Td:20ms≤Td≤500ms,主要是给发送方一个由发转为收的时间,保证接收方返回的数据能完整的被接收。而有些电能表,尤其是一些早期的多功能表对此考虑不够,在接收到主站的请求命令帧后,未进行帧响应延时,就立刻发送应答帧,而此时主站还处于发送状态,等主站返回到接收状态时,电能表前面的码字已发送完,主站接收到的应答数据帧不完整引起通信失败。
  现象2:当主站对某块表连续抄几帧数据时,第一帧通讯成功,第二帧开始电表不回应答帧。
  分析:同样的道理,电表的485由发转为收也需要延时,而有的主站软件编程时,没有考虑,接收完一帧数据后没有延时或延时不够就又开始抄下一帧,而此时电表还没有回到接收状态,通讯失败。在这里我们建议通信双方在编程时都必须严格遵守DL/T 645所规定的帧间延时,并留有余量,具体应用时可取一个中间值,如100ms。
3.2 判断帧起始符出错
  对于电能表485总线来讲,它是一种数字异步通信方式。异步通信不象同步通信,其没有专门的同步信号进行同步,接收方无法准确判知哪一个字节是一帧数据通信的开始,因此DL/T 645中规定68H作为帧起始符(帧同步码),代表一帧数据的开始。有些主站和电能表在软件编程时考虑得比较理想,接收数据时未按照DL/T 645中规定68H来判定数据帧的开始,而是呆板的以接收到的第一个字符作为帧起始标志;如果电表在此帧数据之前发了几个FEH,其接收到的数据将会出现同步错误。另外,如总线上平时有干扰信号存在,导致485芯片不停地收到诸如FCH、DEH这样杂乱数据;当总线上有正常信号产生时,由于干扰信号比较小的原因,其对通信并无太大的影响,但对接收方来讲,其接收正确数据帧前会混有若干个字节的杂乱数据,由于同步处理不当,通讯也会失败。通常的做法是每接收一个字节都要判是否是68H,若不是则丢掉该字节,然后继续往下判,直到收到68H才启动一帧数据的接收。
3.3 帧奇偶校验位/帧结束符不合理
  目前看来,由于这个原因引起485通信不成功占有很大的比例。我们知道,在485通信时,对于接收到的数据一般都会按收、发双方事先约定的奇偶校验方式进行数据检错,并将错误的数据帧剔除,等待发送方重发。这种ARQ的通信方式本身是无可厚非的,但是有的软件人员在编程时考虑问题不够全面,在判断一帧结束处理时,没有根据所收数据帧的长度和结束符“16H”及时地将数据接收任务结束,而是依据多长时间内收不到新的一个字节数据来认为一帧已收完。这种处理方法在下面这种情况下就会导致通信失败。
  众所周知,RS485芯片的接收灵敏度为±200mV,即当电压UA—UB≥200mV时,输出逻辑“1”;UA—UB≤-200mV时,输出逻辑“0”。当-200mV<UA—UB<200mV时,输出不确定。这样一来,当总线上所有的485芯片均处于接收状态时,总线处于高阻状态,此时A、B间的压差为0V,芯片输出处于不定状态,可能输出“1”,也可能输出“0”,而且状态会随着时间而变化。如果输出为“0”,在某些时候则会导致通信失败。我们知道,电能表在发送完应答帧后,一般会马上从发送状态转换到接收状态。正常情况应该是:主站的485芯片收完最后一个字节的停止位后继续保持为“1”(波形见图2),而有的485芯片则可能跳变保持为“0”(波形见图3),UART(通用异步收发器)则认为又收到一个字节00H,且很有可能校验和是错的,这样接收软件可能会判断到一个字节校验位出错,而将前面接收完全正确的一帧丢掉,造成通信失败。
3.4 接口电路不合理
  由于485在实际使用中存在这样或那样的问题,人们对其接口电路采取了各种保护、滤波措施。如加上保护二极管、热保险丝、电容、上拉电阻等(见图4), 这些措施有的有效,但有的无效甚至有害。
  A)485总线的理想介质是双绞线,其等效阻抗约为120Ω,因此为了在长距离、高速通信时做到阻抗匹配,一般在电表的485的A、B线之间加一个120Ω的电阻。此种方式对于一对一的通信是实用的,但一对多时,如果每个电表内部均加一个120Ω的电阻,并在一起整个总线上的负载就很重,这样挂在总线上的485收发器就可能达不到标准的数量32个,且距离也会缩短。因此,只应在网络的起点和终点各加一个。
   B)有的产品为了滤波而在A、B线对地加上电容,现在看来这样会带来问题。电容加小了不起作用;加大了,正常的信号会被滤除或造成波形失真。我们曾经做过试验,以1200bps通信时,0.1μF的电容就会影响通信的成功率。如果通信速率达到几百kbps,电容就不能加了。
  C)同前面3.3所述,485总线处于悬浮状态时A、B线等电位。为了保证A比B高200mV以上,有的厂家将A、B线分别通过10k电阻上拉到5V、下拉到地,这样在都处于接收状态时,A、B间的电位差约为5V,485芯片的接收端为高,通信不受影响。这个想法是好的,但是实际组网中往往好几个厂家的表连在一起,如别的表中加了120Ω电阻,则上拉电阻、120Ω、下拉电阻之间构成分压关系,A、B线间的电压只有几十毫伏,接收端的电平还是不定。
  D)目前国内应用的单片机大部分只有一个UART串口,而电能表一般均需一个485接口和一个红外光接口,受成本所限,有的厂家就将这两个信号通过线与线方式合在一起共用一个UART口。这样就带来一个问题,当红外通信时,485就会不通;另外,当红外收到各种可见光的干扰时,红外口不停地输出干扰信号,由于线与、线或逻辑的原因,485不能通信或485时通时不通。
4 结束语
  485接口目前在国内电能计量、数据采集、能量管理系统中应用越来越广,是电能量采集自动化的基础,它的可靠性越来越受到设计人员和用户的重视。我们相信,随着技术的发展、应用的深入,其必将充分展现自身的特点而广为应用。


在MCU之间中长距离通信的诸多方案中,RS-485因硬件设计简单、控制方便、成本低廉等优点广泛应用于工厂自动化、工业控制、小区监控、水利自动报测等领域。但RS-485总线在抗干扰、自适应、通信效率等方面仍存在缺陷,一些细节的处理不当常会导致通信失败甚至系统瘫痪等故障,因此提高RS-485总线的运行可靠性至关重要。
1 RS-485接口电路的硬件设计
    1)总线匹配。总线匹配有两种方法,一种是加匹配电阻,如图1a所示。位于总线两端的差分端口VA与VB之间应跨接120Ω匹配电阻,以减少由于不匹配而引起的反射、吸收噪声,有效地抑制了噪声干扰。但匹配电阻要消耗较大电流,不适用于功耗限制严格的系统。     
另外一种比较省电的匹配方案是RC 匹配(图2 )利用一只电容C 隔断直流成分,可以节省大部分功率,但电容C的取值是个难点,需要在功耗和匹配质量间进行折衷。除上述两种外还有一种采用二极管的匹配方案(图3),这种方案虽未实现真正的匹配,但它利用二极管的钳位作用,迅速削弱反射信号达到改善信号质量的目的,节能效果显著。
    2) RO及DI端配置上拉电阻。异步通信数据以字节的方式传送,在每一个字节传送之前,先要通过一个低电平起始位实现握手。为防止干扰信号误触发RO(接收器输出)产生负跳变,使接收端MCU进入接收状态,建议RO外接10kΩ上拉电阻。
    3)保证系统上电时的RS-485芯片处于接收输入状态。对于收发控制端TC建议采用MCU引脚通过反相器进行控制,不宜采用MCU引脚直接进行控制,以防止MCU上电时对总线的干扰,如图4所示。
    4)总线隔离。RS-485总线为并接式二线制接口,一旦有一只芯片故障就可能将总线“拉死”,因此对其二线口VA、VB与总线之间应加以隔离。通常在VA、VB与总线之间各串接一只4~10Ω的PTC电阻,同时与地之间各跨接5V的TVS二极管,以消除线路浪涌干扰。如没有PTC电阻和TVS二极管,可用普通电阻和稳压管代替。
    5)合理选用芯片。例如,对外置设备为防止强电磁(雷电)冲击,建议选用TI的75LBC184等防雷击芯片,对节点数要求较多的可选用SIPEX的SP485R。
2 RS-485网络配置
  1)网络节点数。网络节点数与所选RS-485芯片驱动能力和接收器的输入阻抗有关,如75LBC184标称最大值为64点,SP485R标称最大值为400点。实际使用时,因线缆长度、线径、网络分布、传输速率不同,实际节点数均达不到理论值。例如75LBC184运用在500m分布的RS-485网络上节点数超过50或速率大于9.6kb/s时,工作可靠性明显下降。通常推荐节点数按RS-485芯片最大值的70%选取,传输速率在1200~9600b/s之间选取。通信距离1km以内,从通信效率、节点数、通信距离等综合考虑选用4800b/s最佳。通信距离1km以上时,应考虑通过增加中继模块或降低速率的方法提高数据传输可靠性。
  2)节点与主干距离。理论上讲,RS-485节点与主干之间距离(T头,也称引出线)越短越好。T头小于10m的节点采用T型,连接对网络匹配并无太大影响,可放心使用,但对于节点间距非常小(小于1m,如LED模块组合屏)应采用星型连接,若采用T型或串珠型连接就不能正常工作。RS-485是一种半双工结构通信总线,大多用于一对多点的通信系统,因此主机(PC)应置于一端,不要置于中间而形成主干的T型分布。
  
3 提高RS-485通信效率
    RS-485通常应用于一对多点的主从应答式通信系统中,相对于RS-232等全双工总线效率低了许多,因此选用合适的通信协议及控制方式非常重要。
    1.总线稳态控制(握手信号)。大多数使用者选择在数据发送前1ms将收发控制端TC置成高电平,使总线进入稳定的发送状态后才发送数据;数据发送完毕再延迟1ms后置TC端成低电平,使可靠发送完毕后才转入接收状态。据笔者使用TC端的延时有4个机器周期已满足要求;
    2.为保证数据传输质量,对每个字节进行校验的同时,应尽量减少特征字和校验字。惯用的数据包格式由引导码、长度码、地址码、命令码、数据、校验码、尾码组成,每个数据包长度达20~30字节。在RS-485系统中这样的协议不太简练。推荐用户使用MODBUS协议,该协议已广泛应用于水利、水文、电力等行业设备及系统的国际标准中。
4 RS-485接口电路的电源、接地
    对于由MCU结合RS-485微系统组建的测控网络,应优先采用各微系统独立供电方案,最好不要采用一台大电源给微系统并联供电,同时电源线(交直流)不能与RS-485信号线共用同一股多芯电缆。RS-485信号线宜选用截面积0.75mm2以上双绞线而不是平直线。对于每个小容量直流电源选用线性电源LM7805比选用开关电源更合适。当然应注意LM7805的保护:
    1.LM7805输入端与地应跨接220~1000μF电解电容;
    2.LM7805输入端与输出端反接1N4007二极管;
    3.LM7805输出端与地应跨接470~1000μF电解电容和104pF独石电容并反接1N4007二极管;
    4.输入电压以8~10V为佳,最大允许范围为6.5~24V。可选用TI的PT5100替代LM7805,以实现9~38V的超宽电压输入。
5 光电隔离
    在某些工业控制领域,由于现场情况十分复杂,各个节点之间存在很高的共模电压。虽然RS-485接口采用的是差分传输方式,具有一定的抗共模干扰的能力,但当共模电压超过RS-485接收器的极限接收电压,即大于+12V或小于-7V时,接收器就再也无法正常工作了,严重时甚至会烧毁芯片和仪器设备。
    解决此类问题的方法是通过DC-DC将系统电源和RS-485收发器的电源隔离;通过光耦将信号隔离,彻底消除共模电压的影响。实现此方案的途径可分为:
    (1)用光耦、带隔离的DC-DC、RS-485芯片构筑电路;
    (2)使用二次集成芯片,如PS1480、MAX1480等。
6 RS-485系统的常见故障及处理方法
    RS-485是一种低成本、易操作的通信系统,但是稳定性弱同时相互牵制性强,通常有一个节点出现故障会导致系统整体或局部的瘫痪,而且又难以判断。故向读者介绍一些维护RS-485的常用方法。
     1)若出现系统完全瘫痪,大多因为某节点芯片的VA、VB对电源击穿,使用万用表测VA、VB间差模电压为零,而对地的共模电压大于3V,此时可通过测共模电压大小来排查,共模电压越大说明离故障点越近,反之越远;
     2)总线连续几个节点不能正常工作。一般是由其中的一个节点故障导致的。一个节点故障会导致邻近的2~3个节点(一般为后续)无法通信,因此将其逐一与总线脱离,如某节点脱离后总线能恢复正常,说明该节点故障;
     3)集中供电的RS-485系统在上电时常常出现部分节点不正常,但每次又不完全一样。这是由于对RS-485的收发控制端TC设计不合理,造成微系统上电时节点收发状态混乱从而导致总线堵塞。改进的方法是将各微系统加装电源开关然后分别上电;
     4)系统基本正常但偶尔会出现通信失败。一般是由于网络施工不合理导致系统可靠性处于临界状态,最好改变走线或增加中继模块。应急方法之一是将出现失败的节点更换成性能更优异的芯片;
     5)因MCU故障导致TC端处于长发状态而将总线拉死一片。提醒读者不要忘记对TC端的检查。尽管RS-485规定差模电压大于200mV即能正常工作。但实际测量:一个运行良好的系统其差模电压一般在1.2V左右(因网络分布、速率的差异有可能使差模电压在0.8~1.5V范围内)。
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
没有什么资料,因为是半双工,注意发送接收时的方向控制就行了
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
其实就是串口通讯,不过是半双工的
 
 
 

回复

83

帖子

0

TA的资源

一粒金砂(初级)

4
 
百度百科,很详细了.
 
 
 

回复

64

帖子

0

TA的资源

一粒金砂(初级)

5
 
线间压差200mv以上,线上电压+2 ~+5 V之间。半双工发送接收。两对485可以结成422的方式。地线可以接,如果场合要求不严格,也可以不接。
 
 
 

回复

65

帖子

0

TA的资源

一粒金砂(中级)

6
 
   接收4楼观点,但是能不能更加详细一点,用单片机如何通过rs485和上位机通讯呢?
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

7
 
网上搜索一下会有很多的  应该不是罕见的问答题
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

8
 
可以在百度上搜索,,很详细的。。
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

9
 
  我用的是Atmega16 AVR系列的单片机,怎样使用rs485和pc通信呢?
  具体要怎么做? 请问有没有源代码给我参考? 论坛的各位高手帮帮忙!!!
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

10
 
Google一下吧 都能找到对应的程序  给你个连接参考 是485的资料 把原理搞清楚 在看代码
http://hi.baidu.com/easy_mcu_room/blog/item/b4e5ca7aec9baefe0bd18775.html
 
 
 

回复

65

帖子

0

TA的资源

一粒金砂(初级)

11
 
R485通信程序和串口通信时一样的啊
只不过是不能同时收发而已了啊
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

12
 
和串口类似,呵呵。
 
 
 

回复

61

帖子

0

TA的资源

一粒金砂(初级)

13
 
  接收9楼的观点,我会认真去看的,谢谢啦!
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

14
 
买个485转232,就和232差不多了
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表