RS485三线制和两线制差别

RS-485是一种应用十分广泛的通信协议。其显著特点是信号采用“差分”的方式传输,因此抗干扰能力很强,通信距离也比RS-232远得多。RS-485通信一般是半双工的,仅需要2根信号线,也可以是全双工的,需要4根信号线。

如何解读差分方式传输?

差分传输是一种信号传输的技术,区别于传统的一根信号线一根地线的单端信号传输,差分传输在这两根线上都传输信号,这两个信号的振幅相同,相位相反。在这两根线上的传输的信号就是差分信号。信号接收端比较这两个电压的差值(这样获得幅值翻倍的信号)来判断发送端发送的逻辑状态。在电路板上,差分走线必须是等长、等宽、紧密靠近、且在同一层面的两根线。

差分信号与传统的一根信号线一根地线(即单端信号传输)走线的做法相比,其优缺点分别是:

优点:

抗干扰能力强。干扰噪声一般会等值、同时的被加载到两根信号线上,而其差值为0,即,噪声对信号的逻辑意义不产生影响。

能有效抑制电磁干扰(EMI)。由于两根线靠得很近且信号幅值相等,这两根线与地线之间的耦合电磁场的幅值也相等,同时他们的信号极性相反,其电磁场将相互抵消。因此对外界的电磁干扰也小。

时序定位准确。差分信号的接收端是两根线上的信号幅值之差发生正负跳变的点,作为判断逻辑0/1跳变的点的。而普通单端信号以阈值电压作为信号逻辑0/1的跳变点,受阈值电压与信号幅值电压之比的影响较大,不适合低幅度的信号。

RS485收发控制方法

RS485属于半双工总线,在实际使用时一般采用主机轮询或令牌传递的方法来分配总线控制权,RS485设备需要进行发送和接收的方向转换。比较通用的做法是,每个RS485设备在平时均处于接收状态,只有在自己有数据要发送时才转换到发送状态,数据发送完毕后再次切换回接收状态。

第一种:程序换向控制(三线制)

最常用的RS485收发换向方法是程序换向,即由MCU的一个I/O端口控制RS485收发器件的收发使能引脚,在平时使RS485收发器件处于接收状态,当有数据需要发送时,MCU将RS485收发器件引脚置于发送状态,完成数据发送后,再把RS485收发器件切回接收状态。

这种方式简单易行,不需增加额外成本,这种方法很多人都会知道并且基本上都用的方法。

硬件发送完成后最好上报一个发送完成的中断出来,这样便于切换到接收状态(应用层的数据发送完毕了,只代表应用层将数据搬运到硬件数据寄存器了,不代表硬件上也发送出去了,如果没有等待硬件发送完成中断,则可能导致最后一个字节发送失败)。如果硬件没有上报硬件中断的机制,那么就只能靠驱动层根据波特率做延时,否则立即切换到接收状态可能会导致最后一个字节没有被发送。

通常情况下,发送驱动器A、B之间的正电平在+2~+6V,是一个逻辑状态,负电平在-2~-6V,是另一个逻辑状态。另有一个信号地C,在RS-485中还有一“使能”端,使能端是用于控制发送驱动器与传输线的切断与连接。当使能端起作用时,发送驱动器处于高阻状态,称作第三态,即它是有别于逻辑1和0的第三态。

接收器也做与发送端相对的规定,收、发端通过平衡双绞线将AA与BB对应相连,当在接收端AB之间有大于+200mV的电平时,输出正逻辑电平,小于-200mV时,输出负逻辑电平。接收器接收平衡线上的电平范围通过在200mV至6V之间。

TTL是Transistor-Transistor Logic的缩写,逻辑门电路。

第二种:自动换向(两线制)

但是,当我们采用某种硬件平台的工控主板或核心板进行二次开发时,由于工控主板或核心板上没有预留出足够的I/O端口,使得RS485收发的程序换向方法无法实现。在某些特定的情况下,开发平台的底层驱动未对外开放,难以对底层进行二次开发,这种情况下即便有足够的I/O端口也无法实现程序换向。为此,我们需要采用另外一种换向技术,即自动换向技术。自动换向其实就是对使能引脚不需要单独的I/O口来控制,而是由发送引脚发送数据时候顺便控制了

正是因为传统的串口转RS485设计增加了一个GPIO的消耗,因此网上有了一个取巧的设计,设计图如下:

这个图的R46和R47是绝对不可缺的。对于R48,若mcu的RX没有上拉输入功能,这个电阻也是不可以少,终端120欧电阻一般不添加。为什么R46和R47是绝对不可缺的,我们先分析一下它的工作原理;

1,当TX为高电平,RS/DE引脚为低,此时RE有效,此时485A和485B由于上下拉电阻的作用,485A为高,485B为低,485芯片处理发送高电平状态或者处于接收状态;(A高B低,芯片处于发送高电平状态,处于接收状态)

2,当tx为低电平,RS/DE引脚为高,此时DE有效,485处于发送状态,因为DI引脚接地,因此485芯片输出低电平。

现在会发现,当TX为高的时候,485输出电平是由485的AB相的上下拉电阻来完成的,串口的收发恰好可以和485的高低电平对应上,因此这个自动收发串口转RS485设计是可以使用的。

上拉电阻:就是把口线通过一个电阻拉到正极电压上。一个作用就是保持信号不被干扰,稳定在高电平,也可以起到电压转换,两个不同电压芯片通讯,可以输出高时,通过上拉实现。

在某信号线上,通过电阻与一个固定的高电平VCC相接,使其电压在空闲状态保持在VCC电平,此时电阻被称为上拉电阻。

下拉电阻:就是把口线接一个电阻到负极电压上。将某信号线通过电阻接在固定的低电平GND上,使其空闲状态保持GND电平,此时的电阻被称为下拉电阻。

简单概括为:电源到器件引脚上的电阻叫上拉电阻,作用是平时使该引脚为高电平,地到器件引脚上的电阻叫下拉电阻,作用是平时使该引脚为低电平。低电平在IC内部与GND相连接;高电平在IC内部与超大电阻相连接。上拉就是将不确定的信号通过一个电阻钳位在高电平,电阻同时起限流作用,下拉同理。

上拉是对器件注入电流,下拉是输出电流;强弱只是上拉或下拉电阻的阻值不同,没有什么严格区分。

自动收发串口转RS485设计优缺点

优点:最主要是节省IO,同时还捎带的降低了程序编写的工作量。

缺点

  • 通信速度慢

三极管有电容效应,导致关断时间较长,导致RS/DE从低到高电平变化出现比较大的斜坡,同时485输出高电平,是依靠上下拉电阻来完成的,会导致上升沿不够迅速,因此上下拉的阻值选择也是影响速度的关键。

  • 驱动能力弱

由于当tx为高,485电平是由其上拉电阻完成的,因此若提供驱动能力,就要减小电阻,由于485芯片驱动能力有限,电阻太小会导致tx为低的时候,465芯片无法将485总线拉低,因为总线上所有上所有上拉电阻的并联值不应该小于375欧。还有当接入120欧的终端电阻的时候,AB两相的电压差由终端电阻和上下拉分压得到,会导致两相的电压差变小,因此自动收发串口转RS485设计不适合添加终端电阻。

二极管:二极管是最常见的电子元件之一,它最大的特性就是单向导电,也就是电流只可以从二极管的一个方向流过。首先二极管可以做开关元件,二极管在正向电压作用下电阻很小,相当于一只接通的开关,在反向电压作用下电阻很大,如同一只断开的开关,利用二极管的开关特性,可以组成各种电路。

三极管:三极管具有电流放大作用,能以基极电流微小的变化量来控制集电极电流较大的变化量,也用作无触点开关。逻辑取反,如下图所示,使用NPN三极管进行取反,十分方便,输入为高电平时,输出为低;输入为低电平时,输出为高(5V)

总述

总的来说,485芯片处于高电平时为接收状态,处于低电平时为发送状态。三线制的情况下,AB两条线上的信号只表示数据传输。

A高B低表示接收状态,此状态发送的电平差值不是固定的1吗?

三线制和两线制总结

UART与RS485

RS485是半双工通信,不能同时收/发,收/发时需要切换。

A B是两条通信线的接线端,通常标有A+,B-,是指电平的高低,并不是正负电压的意思。

多个RS485设备的A B要对应接上,即A对A,B对B的接。

ttl信号就是电平信号,是指用电平值表示的信号。TTL电平信号规定,+5V等价于逻辑“1”,0V等价于逻辑“0”(采用二进制来表示数据时)。这样的数据通信及电平规定方式,被称做TTL(晶体管-晶体管逻辑电平)信号系统。

DATA+ 就是 A

DATA- 就是 B

RS485就是靠这两根线颠倒电平,来传输和识别数据的。

RS485芯片只是把来自数据源UART的0-3.3V或者0-5V的TTL信号变成颠倒翻转的AB线信号。仅此而已。这样做也是为了更好的驱动线缆和增加信号共模抗干扰能力。

RS485地线的作用

很多情况下,连接RS-485通信链路时只是简单地用一对双绞线将各个接口的A/B端连接起来,而忽略了信号地的连接,这种连接方法在许多场合是能正常工作的,但却埋下了很大的隐患,这有二个原因:

  • 共模干扰问题

RS-485接口采用差分方式传输信号,并不需要相对于某个参照点来检测信号,系统只需检测两线之间的电位差就可以了,但人们往往忽视了收发器有一定的共模电压范围,RS485收发器的共模电压范围为-7~+12V,只有满足上述条件,整个网络才能正常工作。当网络线路中共模电压超出此范围时就会影响通信的稳定可靠,甚至损坏接口。(共模干扰指的是干扰电压在信号线及其回线(一般称为信号地线)上的幅度相同,这里的电压以附近任何一个物体(大地、金属机箱、参考地线板等)为参考电位,干扰电流回路则是在导线与参考物体构成的回路中流动。)

  • EMI问题

发送驱动器输出信号中的共模部分需要一个返回通路,如没有一个低阻的返回通道(信号地),就会以辐射的形式放回源端,整个总线就会像一个巨大的天线向外辐射电磁波。

UART与RS485都是异步通信,不需要时钟线,都是异步。同步通信在数据传输过程中,需要一根时钟线同步。

RS232只支持点对点通讯(1:1),不能实现联网通信;RS485支持总线形式通讯(1:N),即可以实现联网通信。

在两个UART之间传输数据只需要两根线。数据从发送UART的Tx引脚流向接收UART的Rx引脚:

而RS485接线是A对A,B对B。

  • 6
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
RS-485是一种串行通信标准,广泛应用于工业自动化和数据采集系统中。它有两种接线方式,即三线两线两线是RS-485最基本的接线方式,它只需要两根传输线,一根用于发送数据,另一根用于接收数据。两根传输线分别为A线和B线,通过正负电压值的变化来传输数据。数据信号通过差分电压的方式传输,其中A线对应高电平,B线对应低电平,两个信号相互抵消,从而减少了噪声的干扰。 而在三线中,除了A线和B线以外,还有一根传输线称为COM线,用于提供电流回路。A和B线依然负责传输数据信号,而COM线则提供共地连接,起到了保护和稳定信号的作用。在RS-485通信中,COM线的电位可以被地线或其他信号引用。 两线三线之间的主要差别在于带宽和信号质量方面。相对而言,两线的带宽较高,可以达到10Mbit/s的传输速率,而三线的带宽相对较低,通常只能达到2.5Mbit/s。而在信号质量方面,两线受到噪声的影响更大,容易受到干扰,而三线的COM线可以提供额外的保护,增强了信号的稳定性和抗干扰能力。 综上所述,两线三线是RS-485通信中常用的接线方式。两线带宽较高,但受到噪声的干扰较大;三线带宽相对较低,但信号质量较好,抗干扰能力强。在实际应用中,根据具体情况选择适合的接线方式。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李小白20200202

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值