跳转到内容

串行编程/RS-485

来自维基教科书,开放的书籍,开放的世界

所有书架 > 科学书架 > 计算机科学书架 > 串行通信书架 > RS-485 技术手册

ANSI/TIA/EIA-485,通常称为 RS-485,是定义双线多点通信网络物理层的标准。该标准是 EIA 标准中最容易被误解的标准之一。许多工程师在 RS-485 应用方面工作过,并认为他们的应用能够正常工作,因此他们完全理解该标准是什么。然而,这些工程师中很少有人真正见过该标准,更不用说阅读它了。

RS-232、RS-422 和 RS-485 标准不是全面的通信协议,而是电气层标准,旨在与其他标准一起使用。这些其他标准提供了两个设备传输信息所需的协议和其他要求。仅仅因为一种协议与 RS-232 或 RS-485 的特定实现一起使用,并不意味着它属于该标准的一部分。

RS-485 标准范围的直接引述

本标准未指定其他特性,例如信号质量、定时、协议、引脚分配、电源电压、工作温度范围等,这些特性对于互连设备的正常运行至关重要。

RS-485 标准指出它不包括协议,但人们普遍认为 RS-485 标准包含异步起止通信位协议(通常与“RS-232”串行端口一起使用的 UART 位协议)、“标准”连接器等。

本附录将尝试解释 RS-232、RS-422 和 RS-485 是什么以及它们不是什么;然后讨论 RS-422 和 RS-485 的一种更常见的实现,即使用 UART 的 异步起止 ASCII 通信。

电子工业联盟 (EIA) 曾在其所有标准前加上“RS”(推荐标准)前缀,但 EIA-TIA 正式将“RS”替换为“EIA/TIA”以帮助识别其标准的来源[1](从 198 年开始 [需要引用])。EIA 已正式解散,这些标准现在由 TIA 维护。RS-485 标准已过时,已被 TIA-485 取代,但许多(如果不是大多数)工程师和应用指南仍然使用 RS 指定,即使它已正式更改。

由于 EIA 获得 ANSI 认可,在相关领域协助制定标准,因此这些标准可以描述为 ANSI 标准,例如 ANSI/TIA/EIA-485。

标题:用于平衡多点系统中的发生器和接收器的电气特性
[注意:以下信息被认为是正确的,但需要验证]
开发者:电子工业联盟 (EIA)。工业电子协会。
RS-485A(推荐标准 485 版:A)1983 年。
EIA 485-A 1986 年
TIA/EIA 485-A 1998 年 [批准:1998 年 3 月 3 日]
TIA/EIA 485-A 2003 年 [重申:2003 年 3 月 28 日]

基于 RS-485 标准的国际和国家标准
ISO/IEC 8482(第二版 1993-12-15,当前有效)
ISO 8284(1987 年,已过时)
ITU-T v.11(1996 年,当前有效)
ITU-T v.11(1993 年,已过时)
CCITT v.11(1988 年,已过时)

IHS 标准商店已将所有 232 标准重新标记为 TIA-232。目前尚不清楚每个版本的实际标准名称是什么。[需要帮助(已验证 E 版)]

根据 IHS 标准商店[2],RS-232 的历史如下所示

RS-232?

  • 修订版 - 1960 年版
  • 发布日期 - 1960 年 5 月 1 日
  • 标题 - 数据终端设备与通信信道的互连
  • 页数 - 8
  • 目的和覆盖范围 - 本标准旨在提供一种方法,用于在由不同公司提供的每种情况下互连数据终端设备和数据通信信道。它定义了一种在数据终端设备和数据通信信道之间交换控制信号和二进制串行数据信号的方法,在以下情况下,交换点。

RS-232?

  • 修订版 - 修订版 A
  • 发布日期 - 1963 年 10 月 1 日
  • 标题 - 数据处理终端设备与数据通信设备之间的接口
  • 页数 - 12
  • 目的和覆盖范围 - 本标准适用于数据处理终端设备与数据通信设备的互连。它定义了一种在数据处理终端设备和数据通信设备之间交换控制信号和二进制串行数据信号的方法,在以下情况下,交换点。

RS-232?

  • 修订版 - 修订版 B
  • 发布日期 - 1965 年 10 月 1 日
  • 标题 - 数据处理终端设备与数据通信设备之间的接口
  • 页数 - 12
  • 目的和覆盖范围 - 本标准适用于数据处理终端设备与数据通信设备的互连。它定义了一种在数据处理终端设备和数据通信设备之间交换控制信号和二进制串行数据信号的方法,在以下情况下,交换点。

RS-232?

  • 修订版 - 修订版 C
  • 发布日期 - 1969 年 8 月 1 日
  • 标题 - 使用串行二进制数据交换的數據終端設備與數據通信設備之間的接口
  • 页数 - 34
  • 目的和覆盖范围 - 本标准适用于使用串行二进制数据交换的數據終端設備 (DTE) 与數據通信設備 (DCE) 的互连。它定义了

???-232?

  • 修订版 - 修订版 D
  • 发布日期 - 1986 年 11 月 12 日
  • 标题 - 使用串行二进制数据交换的數據終端設備 (DTE) 与數據电路終端設備 (DCE) 之间的接口
  • 页数 - 53
  • 目的和覆盖范围 - 本标准适用于使用串行二进制数据交换的數據終端設備 (DTE) 与數據电路終端設備 (DCE) 的互连。它定义了

ANSI/EIA/TIA-232-E-1991

  • 修订版 - 修订版 E
  • 发布日期 - 1991 年 1 月 1 日
  • 标题 - 使用串行二进制数据交换的數據終端設備 (DTE) 与數據电路終端設備 (DCE) 之间的接口
  • 页数 - 43
  • 目的和覆盖范围 - 本标准适用于使用串行二进制数据交换的數據終端設備 (DTE) 与數據电路終端設備 (DCE) 的互连。它定义了

ANSI/EIA/TIA-232-F?

  • 修订版 - 修订版 F
  • 发布日期 - 1997 年 10 月 1 日
  • 标题 - 使用串行二进制数据交换的數據終端設備 (DTE) 与數據电路終端設備 (DCE) 之间的接口
  • 页数 - 47
  • 目的和覆盖范围 - 不可用

ANSI/EIA/TIA-232-F?

  • 修订版 - 修订版 F
  • 发布日期 - 1997 年 10 月 1 日
  • 标题 - 使用串行二进制数据交换的 数据终端设备和数据电路终端设备之间的接口(包括所有修正案和变更,直至 2002 年 10 月 11 日的重申通知)
  • 页数 - 51
  • 覆盖范围和目的 - 不可用

TIA-232-F?

  • 修订版 - 修订版 F
  • 发布日期 - 1997 年 10 月 1 日
  • 标题 - 使用串行二进制数据交换的 数据终端设备和数据电路终端设备之间的接口(包括所有修正案和变更,直至 2012 年 12 月 7 日的重申通知)
  • 页数 - 54
  • 覆盖范围和目的 - 不可用

[存根]

文档约定

[编辑 | 编辑源代码]

本文档主要针对 RS-485 的讨论,但也包含有关 RS-232 和 RS-422 的信息。

来自标准之一的直接引文"用固定宽度字体放在引号内"

所有三个标准都有附录。这些附录明确说明它们不是标准的一部分,仅出于信息(信息性)目的而包含在内。本文档讨论了这些附录,但应清楚的是,即使它们包含在标准中,它们也不是标准的一部分。

许多参考文献和示例都提到了“具有 UART 的异步起始-停止通信”或“UART”通信。这是通常与串行端口关联的 7 位或 8 位协议。之所以这样做是因为该协议是一种非常常见的串行通信使用的位格式。这并不意味着该协议是标准的一部分,或者只有该协议才能与 232/422/485 标准一起使用。

术语网络用于定义作为整体系统连接在一起的电线、端接、偏置网络和所有设备。

RS 标准、OSI 模型和串行端口

[编辑 | 编辑源代码]

在 80 年代初期,IBM 推出了 IBM PC。这台计算机的功能有限,键盘和显示器是主要的外设。可以添加一个串行端口,该端口使用一个插入 ISA 扩展槽之一的卡。这种类型的端口需要将数据从打印机、调制解调器或在极少数情况下从鼠标传输到/从鼠标传输数据。串行端口使用 D-sub、B-shell、25 针连接器(通常称为 DB-25)和 RS-232 电气信号电平,这使得它“与 RS-232 兼容”或与 RS-232 标准兼容。术语“与 RS-232 兼容的串行端口”通常缩写为“RS-232 端口”。

原始 PC 升级了硬盘驱动器,变成了 PC/XT。后来它再次升级到 80286 处理器和 16 位 EISA 总线,变成了 PC/AT。当 IBM 推出 PC/AT 时,他们还改变了串行端口连接器的物理格式,改用 D-sub、E-shell、9 针连接器(DE-9 通常被误称为 DB-9)。当 IBM 改变到新的连接器时,他们也改变了电气信号电平。新的 IBM PC/AT 串行端口不再使用 RS-232 25 针连接器或信号电平,但 IBM 确保新的串行端口的电气电平仍然可以使用现有的串行端口外设,只需使用 9 针到 25 针的适配器即可。9 针连接器和电气电平最终在 EIA/TIA-574 中进行了文档记录。该串行端口不再是“与 RS-232 兼容”的串行端口,因为连接器和信号电平不再与 RS-232 标准匹配。但是,由于现有的与 RS-232 兼容的外设仍然可以与它一起工作,因此它仍然经常被称为“RS-232 端口”。

原始的“与 RS-232 兼容”的串行端口使用 UART 来驱动 RS-232 电气信号电平,许多人开始相信 UART 协议是 RS-232 标准的一部分。虽然这是不正确的,但直到今天,许多人仍然相信 RS-232 标准包括诸如波特率和 IBM 串行端口中使用的位流协议之类的东西。

大约在这个时候,OSI 模型 被开发出来。RS-232 标准位于 OSI 模型的第一层,即物理层。物理层可能包括连接器、电线和电气电平,但不包括 UART 的位和帧协议。位和帧协议位于 OSI 模型的第二层。

RS-232 标准不包括线路长度限制,但电气信号电平的实际限制会阻止长长度。RS-485 标准要求采用差分信号方案,该方案可在比 RS-232 更长的线路长度上运行。开发了将 RS-232 电气电平转换为 RS-485 电平的转换器,这使得串行端口可以传输数据,其距离比 RS-232 电平允许的距离长得多。同样,许多人认为串行端口中使用的 UART 协议是 RS-485 标准的一部分,但 RS-485 标准包含的 OSI 模型第一层内容比 RS-232 还要少。连接器位于 OSI 模型的第一层,而 RS-232 包含连接器。RS-485 不包含任何连接器。这两个标准都不包含 OSI 模型的第二层,即位帧协议所在的层。

总之,EIA/TIA 标准(通常被误称为 RS 标准)是物理层,包括电气信号电平,而 RS-232 包含连接器。OSI 模型的第二层包括位和帧协议,该协议不在这些 EIA/TIA 标准中。

RS-232、RS-422 和 RS-485

[编辑 | 编辑源代码]

RS-232 标准的标题是"使用串行二进制数据交换的 数据终端设备和数据电路终端设备之间的接口". 该标准适用于 25 针 DB-25 连接器上的最多 21 个电路。电路是对从发送设备到接收设备的信号的完整定义,但现在许多人认为这些定义是针脚标签。所有接口类型都需要一个电路(信号公共)。RS-232 定义了从 A 到 M 的 13 种“标准”接口类型。这些接口类型都没有与 IBM 对其串行端口的实现相匹配。第 14 种接口类型(字母 Z)保留给 A 到 M 类型未涵盖的应用。Z 型接口类型上的所有电路(信号公共除外)都是可选的,由供应商指定。

RS-232 网络。每个电路一个驱动器和一个接收器。所有接口类型都需要信号公共。仅显示了 Tx 数据和 Rx 数据。未显示 DB-25 连接器。

除了 21 个电路之外,屏蔽还可能连接到第 1 针,第 9 针和第 10 针是"保留用于测试",而第 11 针是"未分配". 这定义了连接器的所有 25 个针脚。

RS232 标准的一个有趣的点是,串行数据从数据终端设备 [DTE] 传输到数据电路终端设备 [DCE],位于第 2 针,并且该针脚定义为两端的“传输数据”。RS-232 仅定义了将 DTE 连接到 DCE,因此当两台计算机相互连接时,这超出了标准范围。

许多人认为 RS-232 标准完全定义了 IBM PC 串行端口,但这是不正确的。IBM PC 串行端口仅由 RS-232 标准部分描述。一个常见的错误假设是,RS-232 标准定义了通过 UART 异步传输的数据的位协议。在配置 IBM PC 的串行端口时,必须设置奇偶校验、数据位数和停止位数;因此,许多人认为这必须是 RS-232 标准的一部分。但是,RS-232 标准允许同步通信(与 IBM PC 串行端口不兼容),以及异步通信(可以兼容)。不可否认,IBM 为其串行端口实现选择的 UART 被许多人视为 the 对 RS-232 的定义,但这些部分不在 RS-232 标准中。

另一个误解 RS-232 标准的例子是 9 针连接器。RS-232 指定了两个连接器,一个 25 针(DB-25)和一个备用 26 针连接器(第 26 针是"无连接"). IBM PC-AT 串行端口使用的 9 针“RS-232”连接器未在 RS-232 中指定。EIA/TIA-574 是 9 针连接器的标准,而 EIA/TIA-561 是 8 针连接器的标准,这些连接器通常与串行端口一起使用。

RS-232 标准定义了 DB-25 和 26 针备用连接器,连接器中每个针脚的功能(称为电路),以及“电路”上信号的电气特性。例如,电路之一是“AB”。电路 AB 位于第 7 针,并被描述为“信号公共”。这是一种相当复杂的说法,意思是 DB-25 连接器的第 7 针用作信号公共。两个电路用于传输和接收串行数据,电路“BA”(第 2 针上的 TX 数据)和“BB”(第 3 针上的 RX 数据)。许多电路用于握手和其他功能。RS-232 标准包括次级串行数据电路(次级 TX 数据和次级 RX 数据)、三个时钟(用于同步串行数据传输的定时元素)、信号质量检测器等等。显然,IBM 的实现中并不包含所有这些电路或信号(很少有实现使用次级数据线或许多其他电路)。RS-232 提供了电路列表,并说明如果您使用了一个电路;这就是它必须做的,它必须位于连接器的这个针脚上。

RS-232 标准定义了这些电路的电压和产生电压的逻辑极性。当传输二进制 0 时(即当 UART 传输 0 时),TX 数据电路上的电压高于 +3V,而当传输二进制 1 时,电压必须低于 -3V。标准没有定义 -3V 和 +3V 之间的电压。该标准中还有其他电气特性,但您应该了解 RS-232 规范了连接器、信号和电气特性。它不指定位协议。

RS-232 允许同时进行传输和接收电路。如果同时实现了这两者,则连接是全双工的。如果只实现了一个电路,则连接是单工或单向的。半双工 RS-232 实现存在,但需要全双工网络所需的所有硬件和线路。半双工 RS-232 通常受两个最远通信端点之间的额外通信设备限制。例如,两台计算机通过较旧的调制解调器相互通信。调制解调器可能限于半双工通信,因此两台计算机之间的链路是半双工的。但是,从计算机到调制解调器的 RS-232 连接仍然是全双工的。一些 RS-232 端口是半双工的原因:一些非常老式的 UART 可能是半双工的,限制了系统,而一些非常老式的计算机直接从处理器驱动 RS-232 驱动器,没有 UART。这些老式且速度慢的微处理器并不总是有足够的处理能力来监控进出位的时序,从而限制了系统为半双工。

连接到 RS-232 驱动器/接收器的 UART 控制着传输位的协议。该协议可能包括诸如起始位、数据位数、奇偶校验和停止位(s) 之类的内容。同样,即使许多工程师将该协议视为“RS-232”,但该协议也并非 RS-232 标准的一部分。

RS-422 标准的标题是"平衡电压数字接口电路的电气特性". 该标准指定了一对线路上单个发射器和最多十个接收器的电气特性。RS-422 不指定线路上信号的功能,因此信号可以是数据、时钟、握手等。

RS-422 指定了一对线路上一个发射器到一个或多个接收器的电气电平。典型的 UART 与 RS-422 设备的通信,在一对平衡线路上使用发射器和接收器,总共四根线。其他标准,如 EIA-530,引用 RS-422 的电气信号电平,并在多对线路上包含多个信号。EIA-530 信号包括传输、接收、握手和时钟,需要全部 25 根线。并非所有 EIA-530 信号都使用 RS-422 电平。

RS 422 网络。可能有多个接收器。每对线上只允许一个驱动器。

当使用两对线进行全双工通信时,一对用于接口生成器(驱动器)与 RS-422 网络上的其他设备(s) 通信,而第二对用于接口接收器,用于监听网络上的另一个设备(而不是设备,因为在这对线上只能有一个驱动器)。RS-422 包括当 RS-422 线路上有二进制 0 或 1 时两根线的电压电平,但明确排除了生成器或接收器的逻辑功能。RS-422 指定了许多其他内容,但它们都是电气值。任何位协议(例如来自 UART 的位协议)都没有包含在内。RS-422 在每对线路上本质上是单工的。当使用两对线组成的网络时,如示意图所示,网络是全双工的。即,RS-422 网络上的两个设备可以同时互相通信。RS-422 允许每对线上有多个接收器,但只有一个驱动器。这意味着在主从配置中,主设备可以与多个从设备通信,但只有一个从设备可以回复主设备。这将大多数 RS-422 双向网络限制为两个相互通信的设备。

RS-422 没有指定任何连接器。EIA-530 和 EIA-449 是指定连接器、引脚分配和 RS-422 电气电平的标准。

由于驱动器和接收器是差分电路,因此输入和输出电压被指定为差分,但这些电压也参考电路共用。有关此“额外线路”的讨论,请参见关于接地的部分。

RS-485 标准的标题是"用于平衡数字多点系统中的生成器和接收器的电气特性". 该标准适用于一对平衡线路的网络。

RS 485 网络。多个节点。该图包括一个不推荐的支线。所有节点都显示为收发器,但节点可以是生成器、接收器或收发器。

网络上所有设备的生成器(驱动器)和接收器都连接到两根线上。第三个接口定义为收发器,它同时具有生成器和接收器。所有驱动器和收发器都必须能够"被动"或有效地与网络断开连接,以允许其他驱动器传输。RS-485 标准包括当两根 RS-485 线路上有二进制 0 或 1 时两根线的电压电平,但明确排除了生成器或接收器的逻辑功能。RS-485 指定了许多其他内容,但它们都是电气值。任何位协议(例如来自 UART 的位协议)都没有包含在内。RS-485 本质上是半双工的。即,一次只有一个设备可以与 RS-485 网络上的其他设备通信。RS-485 允许两根线路上有多个设备。这意味着在主从配置中,主设备可以与多个从设备通信,所有从设备都可以回复主设备,并且网络上的每个设备都可以听到其他所有设备。实现这一点需要更高级的寻址方案,以便传输的数据到达正确的设备。RS-485 没有指定任何协议、寻址方案或连接器。

由于驱动器和接收器是差分电路,因此输入和输出电压被指定为差分,但这些电压也参考电路共用。有关此“额外线路”的讨论,请参见关于接地的部分。

请注意,RS-485 网络是一对线,但 RS-485 标准中没有规定阻止每个设备使用多个 RS-485 网络。一个 RS-485 网络可用于主设备与网络上的所有从设备通信,而另一个 RS-485 网络可用于所有从设备回复主设备。这种两个 RS-485 网络的特定实现通常称为 4 线或全双工 RS-485。这种实现非常类似于 4 线 RS-422 网络。最显着的区别是,多个从设备可以回复主设备。另一个两个 RS-485 网络的实现是 BitBus,它使用一个 RS-485 网络进行双向 SDLC 数据通信(与使用 UART 的异步起始-停止通信非常不同),以及第二个可选的 RS-485 网络用于 RTS(如果使用中继器,则为方向控制)。

RS-485 中没有冲突检测。如果多个设备同时开始通信,数据可能会损坏。RS-485 没有定义设备检测其传输的数据是否已损坏的方法。这意味着通常使用更高级别的协议来验证数据是否已发送。一个简单的示例是查询/响应协议。主设备询问从设备获取数据。从设备响应请求,为主设备提供信息。如果主设备没有收到请求的信息,它会再次询问信息。如果查询或响应因冲突或其他错误机制而丢失,数据最终将被重新传输。可以使用其他错误检测机制。可以将 CRC 或校验和添加到传输数据的末尾。可以将验证接收到的有效数据的收据响应发送回主设备。这些协议都不属于 RS-485 标准,实现由编写软件的工程师决定。

物理层

[编辑 | 编辑源代码]

RS-232 只有一个要求

  • 最大电路电容为 2500pF

其附件还规定"为了在互连电缆上正常工作,建议直流线电阻不超过每根导线 25 Ω 。""任何满足电容要求的电缆都可以使用。对于长电缆,可能需要更粗的线规来降低电阻。屏蔽电缆会增加线之间的电容,并减少总电缆长度。"

RS-422 和 RS-485

[编辑 | 编辑源代码]

"RS-422 和 RS-485 只有一个要求"

  • "平衡互连介质" - "互连电缆的特性未指定。"

"然后这两个标准都接着说电缆应该具备/应该做些什么"

  • "应该采用带有金属导体的双绞线。"[没错,这两个标准确实都说明导线应该是金属制成的]
  • "电缆的性能应该适用于应用。 - ""保持特定应用所需的必要信号质量""
  • "可以使用屏蔽电缆。(仅限 RS-422 - RS-485 附录中说明,屏蔽电缆可能需要用于抗 RFI/EMI 或其他目的,但标准中没有提到屏蔽字样)"
  • "标称 120 Ω。(仅限 RS-485)"
  • "可以使用其他阻抗电缆,例如标称 100 Ω。(仅限 RS-485)"

"请注意,RS-422/485 标准要求“平衡互连介质”,而不是双绞线。实际上,长线路唯一可行的选择是双绞线,但标准并未要求。"

"RS-485 列出了 TIA/EIA-485-A 的 TSB-89 应用指南。TSB-89 讨论了线缆类型和影响,但 TSB-89 还说明""设计人员应该通过实验证明介质在这方面的性能。""

"RS-485 驱动器 RS-485 图 1 显示 A 和 B 连接到接收器,但未显示与 C 的连接"

"RS-485 通常只有一对线,发射器和接收器都连接到这对线上。数据以差分方式通过导线发送,即当一根导线为高电平时,另一根导线为低电平,反之亦然。在 RS-485 标准中,一根导线标记为“A”,另一根标记为“B”,这两根导线相互缠绕在一起(“双绞线”)。这使得 RS-485 能够比 RS-232 在更长的距离上传输。由于极性的混淆,一些商业设备制造商在其线缆连接上标记了“+”和“ - ”、TX(+) 和 TX(-) 等。有关更多信息,请参见[令人讨厌的] 极性部分。"

"RS-485 标准中的图 1 是一个示意图(出于版权原因未显示),它显示了""平衡互连电缆""作为两根导线的传输线。在此图中,驱动器有两根引线,并通过一个短截线连接到“A”和“B”点的传输线上。驱动器上显示的第三个点“C”被标记为共用点,但未显示连接到任何导线。此图中还有两个其他设备(接收器和收发器)以相同的方式连接到传输线上。附录中的另一张图(再次说明,附录不被视为标准的一部分)讨论了连接“""电源系统的绿色线接地""或""保护接地或机架接地""到""电路共用点或电路接地""和""SC 信号共用点"。附录中说明,此连接可以直接接线或通过 100 Ω 电阻连接。此“第三根导线”并非标准的正式组成部分,将在接地和接地部分中进一步讨论。"

"RS-422 和 RS-485 之间的主要区别在于,RS-485 要求在单个双绞线中使用两根导线,所有设备发射器和接收器都连接到这两根导线上,而 RS-422 通常使用两个或多个双绞线,其中只有一台发射器和最多十台接收器连接到单个双绞线上。但是,规格在许多其他地方有所不同。附录也不同。RS-422 的附录中包含一张使用 24 AWG 铜 UTP 电话电缆的经验数据的图表。POTS 电话电缆的阻抗比 CAT 电缆的控制程度更低,在较低的音频频率下可能从 600 Ω 变化到较高频率下低于 100 Ω 。"

"最终,您使用的电缆需要适合您使用它的应用。电缆的长度、阻抗、端接、短截线长度和数据速率都会影响信号质量。120 Ω 电缆应该提供最佳性能,但您可能手头的 100 Ω CAT-X 电缆也可能有效。即使是 POTS 电话线也可能适用于许多应用。如果长度足够短且比特率足够低,则完全不平衡的松散导线就可以工作。当将线路长度和/或数据速率推向最大值时,低电容电缆变得很重要。"

"线路长度和比特率"

[编辑 | 编辑源代码]

"RS-232 很明确地表明它适用于最大比特率为 20kbit/s 的情况。该标准建议对于以更高比特率运行的应用,请参阅 EIA/TIA-530、EIA/TIA-561 和 EIA/TIA-574。第 1.3 节,数据信号速率,规定;此标准适用于最高标称限值为每秒 20,000 位。第 2.1.4 节讨论了过渡时间占单位间隔(比特时间)的百分比,其中单位间隔在 25mS 到 50uS 之间。此单位间隔范围对应于 40bit/s 到 20kbit/s。"

"第 3.2 节明确说明""电缆的最大长度未定义"。然后,它引用了第 2.1.4 节,其中接口点的接收器侧的最大电容(包括电缆)不应超过 2500pF。然后建议查看附录 A 以获取指导(再次说明,附录声明它不是标准的正式部分)。附录讨论了电缆的电容和电阻,然后给出了一个示例计算,其中电缆的电容(每英尺 30pF)乘以电缆的长度,加上接收器的电容(100pF),得到最大电缆长度为 80 英尺。尝试找出正在使用的电缆的电容(以 pF/英尺为单位),然后用 2500 除以它。这应该会为您提供该电缆的近似长度限制(以英尺为单位)。如果您将电缆长度保持在该限制的 70% 或 80%,则应该期望网络能够与真正的 RS-232 驱动器和接收器一起工作。"

"如果您试图让两台老式设备(都使用真正的 RS-232 驱动器和接收器)通过长电缆工作,RS-232 中的电容限制可能会适用,但 RS-232 没有考虑比特率。如果它们无法通信,则降低比特率可能会使这两个设备一起工作。"

"实际上,驱动器或接收器(或两者)将满足更现代的 RS-574 要求,并且 RS-232 的所有限制都不适用。在这种情况下,确定电缆长度的最佳方法是尝试一下。在两个设备之间拉一根电缆,看看它们是否可以互相通信。如果它们无法通信,则尝试降低比特率。如果降低比特率不可行,那么您可以在两端尝试使用 RS-232 到 RS-485 转换器。如果您需要在拉电缆之前确认它能正常工作,那么请获取所需的电缆长度,并将两个设备移到彼此旁边,连接它们,看看它们是否可以通信。这些标准中多次提到了“实验证明”。实验证明意味着尝试一下,看看它是否能正常工作。"

"有很多民间传说声称 RS-232 的距离限制是 50 或 100 英尺。实际上,如果您使用的是相对较新的设备(比如 1990 年或之后)并且使用低波特率,那么线路长度可能达到 1,000 英尺(300 米)或更长。[3]"

RS-422 和 RS-485

[编辑 | 编辑源代码]

"关于 RS-485 中固有的线路长度和数据速率限制的传说、民间传说,以及完全错误的信息,真是令人难以置信。文章、应用说明,甚至来自半导体制造商的数据手册都讨论了 RS-485 中的数据速率和线路长度限制。不幸的是,这些限制都不在 RS-485 标准中。"

"RS-422 附录 A 中的数据速率/线路长度图表"
"(此图表不在 RS-485 中)"

右侧的图表通常在这些应用说明中显示,它显示一端为 1200 米/DC,另一端为 14 米/10 Mbit。此图表不在 RS-485 中。此图表来自 RS-422 的附录 A。(同样,附录明确说明它不是标准的一部分)更糟糕的是,附录 A 指出该图表是基于 24AWG 电话线(POTS)的经验数据得出的保守指南。附录讨论了这样一个事实,即许多应用可以处理更大的幅度和时序失真,并且实际经验表明,在较低的数据速率下,电缆长度可以延长至几公里。RS-422 附录 A 中的图表不是绝对限制,而是对使用廉价电话线始终有效的指导。

RS-485 的信息更少。RS-485 的前言引用了 TSB-89,其中包含数据信号速率与电缆长度、短截线长度等主题。RS-485 的附录中也有一些信息(不视为标准的一部分)RS-485 的附录指出:应考虑由于系统配置、数据信号速率与电缆长度、短截线长度和接地布置等因素可能遇到的问题。" "高数据信号速率和长电缆长度是可能的,但它们是互斥的。高数据信号速率应用应限制在短电缆长度,而低数据信号速率应用可以使用长电缆长度。"

低数据速率主要受电缆直流电阻的限制(如果使用端接电阻,则电缆直流电阻的影响会更严重),而高数据速率受电缆对信号质量的交流影响的限制。RS-485 或其附录中没有电缆长度与数据速率的图表。

RS-485 讨论了它用于高达 10Mbit/S 的设备,然后说它们不必局限于 10Mbps。它还指出:上限超出本标准的范围".

所有声称 RS-485 限制在 1200 米或 10Mbit 的应用指南和数据表都是错误的。

需要注意的是,RS-422 *确实* 限制在 10Mb,满足 RS-422 标准的设备不需要在整个范围内运行。设备可以设计为以较低的数据速率运行,以用于"经济特定的应用".

话虽如此,实际的线路长度限制是多少?它取决于许多因素。数据速率通常是主要因素。由于大多数 RS-485 应用由 UART 驱动,因此数据速率通常低于 100kbit。在这种情况下,POTS 电话线应该可以用于相当长的线路。如果您将数据速率提高到 100kbit 以上,或将线路长度提高到 1000 米以上,您可能需要使用更好的电线。端接电阻对直流损耗有重大影响,因此具有长电缆长度的网络可能会从将端接电阻调整到更高值中获益。许多电缆制造商可以推荐适用于 RS-422 或 RS-485 的 120 Ω 电缆。

你能走多快?Maxim 有一份应用说明,其中指出使用正确的驱动器可以实现 50Mbps[4] 的速度。(以及合适的电缆、端接、接收器等)Linear Technology 声称使用他们的 LTC1695[5] 可以实现 52Mbps。

如果您打算将电缆长度或比特率推向极限,您应该仔细注意电缆、驱动器和安装。与电缆制造商的对话有助于确定最适合您应用的可用电缆。除了使用最佳电缆外,还有许多不同的驱动器、接收器和收发器可用。并非所有都提供相同的性能。RS-485 标准要求最低性能,但许多驱动器超过此性能,并且一些驱动器具有诸如斜率限制之类的怪癖。斜率限制会降低最大比特率,但会改善具有不良特性的网络的信号质量。当然,安装也会使网络性能成败。短截线长度、端接和偏置电阻会对网络性能产生重大影响。较高的端接电阻会减少与极端线路长度相关的直流损耗,从而在牺牲线路上振铃的代价下实现更长的线路长度。振铃发生在数据转换时,最终会衰减。这意味着低数据速率比高数据速率能更好地处理未端接(甚至无端接)的电缆。

对于非常长的线路长度,应该考虑改变技术。一公里 POTS 电缆的成本可能很高,两公里则要贵一倍。加上铺设电缆的成本,长网络的成本可能非常高。最终,将 RS-485 数据转换为现有网络运行的网关的成本可能低于铺设一公里电缆的成本。

RS-485 将上升时间和下降时间的限制设定为单位间隔的 0.3。这是上升/下降时间与比特宽度的比率。没有给出时间单位的限制,因此与 RS-485 相关的最小或最大比特率没有限制。

接地和接地

[edit | edit source]

RS-485 硬件的接地是另一个有争议的问题。造成这种情况的原因是不同的安装有不同的接地要求。没有一种解决方案适合所有安装。

RS-485 设备之间的接地通常被称为“第三条线”。这篇 Chipkin 文章[6] 提供了一些关于这条“第三条线”的有用信息,但请注意评论中对何时需要这条线的意见分歧。

RS-485 标准对接地几乎没有说明。该标准将共模电压定义为参考接地,它定义了一个术语"接地电位差" 作为驱动器和接收器之间信号地之间的差异,但它没有说明这是大地还是仅仅是第三条公共线。它显示了驱动器和接收器图,它们之间有两条线,第三个点“C”被称为公共点。没有显示连接驱动器和接收器之间的第三个点的线。然后,附录指出,应考虑各种事项,包括接地布置。附录的 A.4 节定义了两种可选的接地布置。第一种是通过一个 100 Ω 电阻将驱动器/接收器电路的信号公共点连接到"保护接地或框架接地"。此框架接地显示为连接到"电源系统的绿色线接地",更常见的是称为大地。第二种可选接地布置是将电路公共点直接连接到框架接地,不使用电阻。附录还指出,某些应用可能会导致电阻失效,因此安装必须允许进行检查和更换。也就是说,电阻冒烟时,您应该能够更换它。

由于附录承认安装可能会对元器件造成物理损坏,因此接地是一个有争议的话题也就不足为奇了。任何见过设备冒烟的人,都可能对如何接地以及如何不接地非常坚定。问题在于,一种特定的接地方法可能需要在一种安装中才能正常工作,而在另一种安装中却会导致损坏。

RS-485 要求驱动器和接收器在共模电压相对于电路公共点偏移时能正常工作(有关更多信息,请参见电压部分)。如果电路公共点真正与大地隔离,那么用脚在地毯上摩擦(拾取静电荷)并触摸电线会导致电线相对于大地电位偏移数千伏。在实践中,这种类型的隔离很少见。这将需要隔离电源和光学隔离驱动器。或者两台笔记本电脑使用电池供电,并放在绝缘表面上。

考虑三种不同的安装。

两台计算机之间的 RS-485 通信。一台计算机是台式机,另一台是电池供电的笔记本电脑。

第一种情况是台式机与笔记本电脑通信。台式机连接到大地,RS-485 端口参考大地。笔记本电脑使用电池供电,没有连接到大地。对笔记本电脑的静电冲击会导致两条 RS-485 电线相对于大地电位升高数千伏。这远远超过了 RS-485 允许的 +12V 和 -7V 电压。如果台式机端口具有静电保护,则可能不会发生损坏,但没有保证。此安装应有一条第三条线,将台式机 PC 的大地/电路公共点连接到笔记本电脑的 RS-485 端口电路公共点。由于笔记本电脑没有连接到大地,因此通常这条第三条线上的电流很小。

两台计算机之间的 RS-485 通信。计算机彼此靠近,并且大地之间的电位差很小。

第二种安装有两台台式机彼此非常靠近。两台 PC 的 RS-485 电路公共点都连接到大地。由于 PC 彼此靠近,因此它们位于同一个电源电路中,两台计算机之间大地的电位差非常小。此安装不需要第三条线,但包含一条不会造成伤害。

两台计算机之间的 RS-485 通信。计算机之间相隔很远的电线,并且其中一台计算机附近有一个电弧炉,产生了明显的接地电位差。

第三种安装使用与第二种示例相同的两台计算机,但它们之间相隔数千英尺的电线,其中一台计算机位于一台电弧炉旁边,该电弧炉在运行时会消耗数千安培的电流。这两台计算机之间大地电位的差异可能达到数十伏甚至数百伏。这种大地电位差可能足以损坏 RS-485 设备,但是,在它们的电路公共点/大地之间连接第三条线会尝试绕过电源大地公共点(这通常被称为接地回路),从而导致第三条线上的电流过大。电流可能会损坏电线或 RS-485 端口。此第三个示例适合使用隔离 RS-485 收发器。隔离收发器可用于 IC 封装、模块和网关。

可以使用屏蔽电缆。屏蔽有时用于减少双绞线的 EMI,但会降低最大 RS-485 工作线路长度。RS-485 的附录指出:使用时,屏蔽应仅连接到一端或两端的框架接地,具体取决于特定应用。" 屏蔽通常比单根电线具有更多的铜(或铝),因此可以承载更多的电流。一千英尺 24 AWG 电线的电阻在 26Ω 范围内。这有助于限制“第三条”线上的电流。大地电位差为 10V 仅会产生小于 0.4 安培的电流。

屏蔽层的电阻可能小于1Ω。使用屏蔽层连接两个接地可能会导致10V的电压差产生10安培以上的电流。注意使用屏蔽层作为第三条线时可能会产生的接地回路。

RS-232通常具有发送线、接收线和信号公共线。它也可能具有流量控制信号线。电压是在信号线上测量的,并以信号公共线为参考。

驱动器必须在3kΩ到7kΩ的负载下输出幅度为5V到15V的电压。当驱动器短路到电缆中的任何其他导体时,驱动器不能输出超过100mA的电流,不能输出超过25V的电压,并且必须能够处理开路或短路到电缆中的任何其他导体。

接收器设计用于在幅度为3V到15V的电压下工作(即正负电压),但必须能够处理25V的输入而不会损坏。

当传输二进制1时,信号为间隙,导线上的电压必须低于-3V。当传输二进制0时,信号为标记,导线上的电压必须高于+3V。-3V和+3V之间的区域是未定义的。

较旧的驱动器IC通常使用+12V和-12V作为其电压源。这将开路电压限制在±12V。现在有低电压驱动器可用,允许从电池供电的设备工作,并且开路电压可能低于±12V。如果是这样,这些驱动器可能是RS-232,也可能是EIA/TIA-574。

请注意,驱动器和接收器的逻辑功能是**定义**的。当驱动器传输1(例如来自UART)时,导线上的电压必须小于-3V。许多工程师将此视为“反相”逻辑。

RS-422有一对或多对线。每对线都有两条线,分别连接到一个驱动器和一个或多个接收器。信号在每对线中的两条线上以差分方式出现。当驱动器增加其中一条线的电压时,它会同时降低另一条线的电压,从而导致两条线之间产生差分电压。当使用5V驱动器时,驱动器通常将一条线拉至电路共用地,而将另一条线拉至5V(反之亦然,用于相反的数据)。但这并不意味着这些导线上的电压会达到0V或5V。确切的电压将取决于驱动器、负载、偏置、端接以及驱动器和接收器之间任何地电位偏移。

RS-422电压以差分方式从一根线到另一根线进行参考,但也以电路共用地进行参考。这意味着规范具有差分电压要求和共模电压要求。

驱动器必须在负载/端接电缆中产生2V到10V之间的差分电压。驱动器必须对电缆提供100Ω或更小的低阻抗。驱动器不得超过10V差分或6V共模(输出相对于电路共用地)。驱动器短路至电路共用地的输出电流必须限制在150mA。

接收器必须具有大于4kΩ的输入阻抗,并且在-7V到+7V的共模电压范围内工作。接收器必须识别大于±200mV的差分电压作为二进制值。小于200mV的电压未定义。接收器可以识别-200mV到+200mV之间的任何电压作为二进制值,但不同的制造商可以在他们想要的地方设置阈值。滞后通常包含在接收器中以提高噪声容限,但不是必需的。两条线中的任意一条与电路共用地之间的最大电压不得超过10V的绝对幅度,并且高达10V的电压不会损坏接收器。

驱动器能够驱动10个阻抗为4k的接收器,但实际可以驱动的数量取决于接收器的实际输入阻抗、比特率、导线、支路长度、偏置和网络的端接。

驱动器和接收器的逻辑功能**未**定义,仅定义导线上差分电压的二进制状态。驱动器在输出之前可能(也可能不)反转二进制1。有关更多信息,请参阅极性部分。

RS-485有一对线。信号以差分方式出现在这两条线上。对于每个设备接口,驱动器和接收器都连接到这两条线上。驱动器必须在"被动"不传输时断开电气连接。当驱动器增加其中一条线的电压时,它会同时降低另一条线的电压,从而导致两条线之间产生差分电压。当使用5V驱动器时,驱动器通常将一条线拉至共用地,而将另一条线拉至5V(反之亦然,用于相反的数据)。但这并不意味着这些导线上的电压会达到0V或5V。确切的电压将取决于驱动器、负载、偏置、端接以及驱动器和接收器之间任何地电位偏移。

RS-485电压以差分方式从一根线到另一根线进行参考,但也以电路共用地进行参考。这意味着规范具有差分电压要求和共模电压要求。

驱动器必须在负载/端接电缆中产生1.5V到5V之间的差分电压。驱动器阻抗(处于活动状态时)未指定,但驱动器需要能够驱动32个单位负载以及低至60Ω的端接电阻。[如果单位负载真的是12kΩ,那么这将得出51.72Ω,但第4.5.3节将总负载限制设置为54Ω]。驱动器不得超过6V差分或6V共模。驱动器的输出必须限制在250mA峰值输出电流,但可能限制在更小的电流。当输出短路在一起或短路至-7V到+12V之间的任何电压时,驱动器不得损坏。

接收器的输入阻抗以“单位负载”的形式指定,其中单位负载定义为以参考地电压的毫安表示的输入电流。通常认为12k电阻为1个单位负载,但单位负载比单个电阻更复杂。接收器必须在-7V到+12V范围内的共模输入电压[以参考电路共用地]下工作。接收器必须识别大于±200mV的差分电压作为二进制值。小于200mV的电压未定义。接收器可以识别-200mV到+200mV之间的任何电压作为二进制值,但不同的制造商可以在他们想要的地方设置阈值。

驱动器必须能够驱动32个单位负载。由于接收器可能具有小于1的负载,因此实际可以连接的接收器数量取决于接收器的单位负载额定值,以及导线、比特率、支路长度、偏置和网络的端接。接收器的最大数量可能远大于32。

RS-485驱动器必须在不传输时禁用[实际上断开与导线的连接],以允许其他设备传输。这意味着有时没有驱动器连接到导线。当没有驱动器连接时,导线上的差分电压将取决于端接电阻和偏置。如果导线上没有偏置电阻,它们实际上将处于0V差分,这在-200mV到+200mV之间的未定义区域。如果RS-485网络使用UART传输数据,则这可能会导致问题。如果接收器将导线上未驱动的电压视为空闲状态,则UART应正常工作。但是,如果接收器将未驱动的导线视为二进制0,当驱动器打开并设置为传输起始位(也是二进制0)时,接收器将不会看到转换,因此也不会看到起始位。为了使此应用程序正常工作,驱动器必须在使能驱动器后传输一个空闲位(二进制1),在传输起始位之前持续一段时间。

一些制造商通过将其接收器输入阈值设置为略微偏置的值(例如-50mV)来解决此问题,而不是正好在0V。当线对未驱动时,接收器将输入视为空闲状态(二进制1)。如果发射器在起始位的边缘同时打开,接收器将看到电压从空闲状态变为起始状态,因此UART将始终看到传输的第一个起始位。添加偏置电阻以强制线路在驱动器未连接时处于空闲状态也可以解决此问题,但这必须在网络级别进行,而不是在设备级别进行。在网络上的每个设备上添加偏置电阻会导致端接问题。有关更多信息,请参阅端接和偏置部分。

驱动器和接收器的逻辑功能**未**定义,仅定义导线上差分电压的二进制状态。驱动器在输出之前可能(也可能不)反转二进制1。有关更多信息,请参阅极性部分。

[令人讨厌的] 极性

[编辑 | 编辑源代码]

在我们讨论极性之前,让我们先看看逻辑电平 和二进制状态。

逻辑 IC 不会输出精确的电压。作为一般规则,当测量的电压(相对于电路公共点)为“高”时,二进制状态被认为是 1,而当电压为低时,状态为 0。此规则有一些例外(例如差分逻辑和负逻辑),但为了讨论的目的,我们将讨论正常的逻辑。当你打开灯的开关时,电压被施加到灯泡,灯泡就亮了,因此电压是开,没有电压是关。数字逻辑通常使用与灯泡示例相同的约定(但电压不同)。逻辑器件认为开或关的精确电压电平因逻辑类型而异,但当电压很高(通常但并非总是接近 IC 的电源电压)时,输出为开,二进制 1 在导线上,而当电压接近 0 时,输出为关,二进制 0 在导线上。

在大多数数字逻辑中,二进制 0 通常被认为是关,而二进制 1 被认为是开。RS-232、RS-422 和 RS485 这三种标准都反转了这种约定。这可能会造成一些混淆。

逻辑器件可能具有“反相”和/或“非反相”输出。对于正常逻辑,当驱动器的输入为 1 或高电平时,非反相输出将变为高电平。当输入为低电平或 0 时,非反相输出将变为低电平。反相输出的情况正好相反。当输入为高电平时,反相输出变为低电平,而当输入为低电平时,反相输出变为高电平。反相输出通常在其上显示一个气泡,而非反相输出没有气泡。反相输出有时用“ - ”表示,非反相输出有时用“ + ”表示。

当 RS-485 驱动器的输入变为高电平时,其中一个输出相对于电路公共点变为高电平,另一个变为低电平。高电平与低电平的精确电压通常没有指定,而是指定了两个输出之间的电压差。但是,由于其中一个输出在输入变为高电平时变为高电平,因此它通常被称为“非反相”输出。相反,在输入变为高电平时变为低电平的输出通常被称为“反相”输出。RS-485 不使用反相或非反相这些术语,也不在接口点上添加“+”或“ - ”标签。RS-485 只将接口连接点定义为“A”和“B”,并显示“A”和“B”之间的电压关系,以表示两条导线的二进制状态,而不是驱动器输入的二进制状态

RS-485 驱动器
RS-485 信号波形

RS-485 图 2 显示了一个具有两个标记为“A”和“B”的接口连接点的生成器(驱动器)。第三个点 C 在接地部分讨论。图 1 还显示了输出信号波形,这里为了清晰起见,以颜色重新绘制。它还非常明确地说明"生成器和接收器的逻辑功能超出本标准的范围,因此没有定义。"

现在看看驱动器原理图符号,你会注意到“A”输出是非反相输出,“B”输出是反相输出。你会认为这意味着当传输 1 时,“A”将为高电平,“B”将为低电平。然而,RS-485 标准的图 1 中的信号波形清楚地表明,当导线上存在二进制 0(开)时,导线“A”上的电压相对于“B”为正,反之亦然,当导线上存在二进制 1(关)时,导线“A”上的电压相对于“B”为负。换句话说,为了使符号与波形匹配,原理图符号的输入必须在输入端反转或反相。还要注意,符号没有显示输入。这是因为"生成器和接收器的逻辑功能超出本标准的范围,因此没有定义。"

声明生成器和接收器的逻辑功能没有定义,然后显示一个符号和导线的反相信号波形,会增加混淆。

当 RS-485 驱动器直接从 UART(没有添加反相)获取数据时,你可能会预期“A”和“B”导线的电压与 RS-485 标准中关于导线电压的规定相匹配,但实际上并非如此(除非驱动器反相其输入)。它们将完全相反。

如果网络上设备的驱动器和接收器都没有反相(或者如果网络上设备的驱动器和接收器都反相),则设备的 A 线和 B 线应该连接在一起。但是,一些设备制造商将其 A 和 B 标签与符号(无反相)匹配,而另一些则与信号波形(反相)匹配。

RS-232 指出,当传输二进制 0(也称为开或间距)(来自逻辑,例如 UART)时,TXData 导线上的电压大于 +3V(参考信号公共线)。当传输二进制 1(也称为关或标记)时,TXData 导线上的电压必须小于 -3V。有些人认为这是反相,因为 0 是最高电压,而 1 是最低电压。这在技术上并不正确,因为 RS-232 需要使用超出正常逻辑范围的电压,但RS-232 驱动器的输入和输出在示波器上看起来是反相的,大多数数据手册显示驱动器为反相器。

如果使用 RS-232 到 RS-485 转换器,情况会变得更加复杂。如果 RS-232 线上的电压为正或高电平,则信号为二进制 0。此信号应该反转回低电平吗?请参阅你使用的转换器的说明。你可能没有预期的极性。

最后,IC 制造商也造成了混淆。Linear Technology 的 LTC2850 的数据手册[7] 显示,当引脚 4(DI - 驱动器的输入引脚)为高电平时,引脚 6(A 输出)上的输出电压相对于引脚 7(B 输出)为正。

LTC2850/MAX483 原理图符号
LTC2850 RS-485 驱动器的波形。这些波形基于 IC 数据手册中显示的具有 20MBit 信号的传播延迟的示波器捕获。

这与 RS-485 图 1 的符号完全一致,与 RS-485 图 1 的信号波形预期结果完全相反,因为此驱动器不会反相其输入。许多其他 IC 制造商生产此 IC 的直接替代品,其中许多(例如 MAX483)使用相同的标签。一些制造商通过更改输出引脚标签的名称为 X 和 Y 来避免这种混淆。关于这种所谓的“引脚标签错误”,有两点需要注意。首先,RS-485 否认对生成器和接收器的逻辑功能有任何控制。另一个是 IC 制造商的数据手册从不说明 IC 引脚 A 与 RS-485 的导线“A”相同。虽然假设标记为 A 的 RS-485 驱动器 IC 引脚与 RS-485 标准的导线“A”匹配似乎相当合理,但实际上这是一个假设,而且实际上并非如此。设计人员必须定义驱动器和接收器的逻辑功能。

那么如何知道哪个引脚是“A”,哪个是“B”呢?如果你注意到了之前的讨论,你就没有办法。结果是,许多 RS-232 到 RS-485 转换器已经更改了其设备的标签,改为 (+)/(-),或 TD+/TD- 等。好消息是,即使你反向连接也不会损坏设备。如果你在 RS-485 导线上运行异步起始/停止通信(UART),如果极性相反,它将无法正常工作。如果通信无法正常工作,通常只需反转导线并再次测试通信即可。如果通信无法正常工作,这是一个很好的第一步。当然,许多其他问题会导致通信故障,这些问题将在故障排除部分进行讨论。

对于那些设计或记录系统的用户来说,这比简单地交换引脚要复杂一些。上面讨论的“引脚标签错误”是一个很好的起点。即使 RS-485 没有定义生成器和接收器的逻辑功能,许多工程师认为在传输二进制 1 时,RS-485 导线上出现二进制 1 是合理的。如果你仔细注意所用驱动器的逻辑功能以及设备端子的标签,就可以设计系统来实现这一点。不要假设 IC 的 A 和 B 引脚与 RS-485 标准的“A”和“B”匹配,因为它们不可能匹配。该标准没有定义驱动器或接收器的逻辑功能。并且 RS-485 图 1 中的符号与图 1 中的输出信号波形相反。

终止

[edit | edit source]

终止是一个不那么有争议的话题,而是一个被误解的话题。

要了解如何终止网络(导线),你首先必须了解传输线。这是一个过于复杂的话题,这里无法深入探讨,但使用过于简化的概念的基本教程可能会有所帮助。

[注意,下面的图表没有考虑相移或导线的电感和电容可能引起的振铃,但这只是一个过于简化的教程,基本概念仍然适用。]

导线既有电感又有电阻。每种有多少取决于导线。一对导线具有电容耦合,导线之间具有有限的(通常非常高的)电阻。每种有多少取决于导线和绝缘。导线的电感、电阻和电容在下面建模。

平衡传输线,LCR 模型

由于电感和电容都可以表示为电阻(实际上是阻抗 - 不包括相移),因此前面的图表可以重新绘制为纯粹的电阻图。

传输线,平衡,电阻模型

需要注意的是,此模型仅对一个频率有效。增加频率将增加感抗,从而增加此模型中的串联电阻。增加频率将降低容抗,从而降低此模型中的并联电阻。例如;在更高的频率下,模型的串联电阻可能从 0.5 Ω 增加到 1 Ω(每根导线),而并联电阻可能从 14.52k Ω 降低到 7.32k Ω。这些值都不是绝对的,它们会随频率变化。

另一个需要注意的是,不同的电缆在不同频率下具有不同的特性阻抗。POTS 电话线在音频频率(例如 1kHz)下从 600 Ω 变化到 1MHz 下的 100 Ω,而 CAT-5 电缆在更宽的频率范围内大约为 100 Ω。

这个模型还有其他一些需要注意的地方。首先,如果线路足够长,连接到模型输入端的交流“欧姆表”将看到电线的“电阻”为 120 Ω。线路需要多长才能发生这种情况取决于串联和并联电阻的值(以及因此输入的频率)。第二件事是,这实际上是一个无限的电压分配器。电线越长,末端的信号就越少。同样,损耗量取决于串联和并联电阻的值,并且损耗会随着频率的增加而增加。这就是为什么长电缆和高频不兼容的原因。

最后需要注意的是,如果线路不是无限长,这个模型就会失效。沿电线传播的信号将到达末端并"反射"(在接收器端)。然后它返回到源头并在源头处反射(在驱动器端)。由于信号在传输过程中会衰减,“反射”信号的幅度会减小,直到其电平稳定。这种现象将表现为振铃在信号的边缘。如果在振铃时对数据位进行采样,则可能会将其采样为不正确的值。这意味着在对位进行采样之前,需要等待信号稳定下来。

在电缆末端添加一个与电缆阻抗值匹配的电阻将吸收沿线路传播的信号并减少或防止反射。这将减少等待信号稳定所需的时间,从而提高可能的比特率。这个电阻还将使任何长度的电缆(即使是短长度)看起来像电缆的特性阻抗(模型中的 120 Ω)到驱动器。这个电阻称为终端电阻,在下图中标记为 Rterm。

传输线,平衡,电阻模型,一端接地

由于 RS-485 驱动器在不传输时处于“被动”状态(与电线断开),并且电缆的另一端可以驱动网络,因此应在两端添加终端电阻。这样做的结果看起来像是两个 120 Ω 电阻并联(60 Ω)连接到电缆的任一端 _或任何点_。因此,驱动器连接到电缆的哪个位置无关紧要,它“看到”的是 60 Ω 负载。

传输线,平衡,电阻模型,两端接地

这就是为什么 RS-485 规定"通常需要使用电缆终端"。.

RS-422 驱动器始终处于连接状态,并在电线的驱动器端充当其自身的终端。这将在一定程度上减少 RS-422 网络上的反射,但 RS-422 也建议在电线的接收器端添加一个终端电阻(实际上是建议,取决于"数据速率""电缆负载端的信号上升时间")。终端电阻应等于电缆的特性阻抗。

连接在电缆中某个点的任何接收器都会改变电缆在 _该点_ 的阻抗。这将导致反射,既反射回驱动器,也反射到电缆上的其他接收器。终端电阻将减少从末端反射回来的这种反射的幅度,从而改善信号质量。

还需要考虑其他一些因素:

  • 更快的上升时间会导致更大的振铃幅度。斜率限制驱动器会降低上升时间并减少未端接线路的振铃。
  • 信号最终会稳定下来(直到下一个比特转换),因此比特率越低,信号在被采样(通常由 UART 采样)之前稳定所需的时间就越多。这意味着比特率越低,越不需要终端电阻。
  • 将电缆分支到接收器会引起二次反射,这会导致信号产生更多且不可预测的振铃。在 RS-485 网络上分支始终是一个坏主意,电缆应该从设备到设备依次连接。
  • 更长的电缆需要更长的时间才能让信号到达末端(以及来回...),因此更长的电缆会导致电线上更长时间的振铃,以及信号稳定所需的时间更长。未端接电线越长,比特率需要越低。因此,电缆长度越长,终端电阻对提高 _信号质量_ 就越重要。
  • 电缆长度越长,终端电阻对信号电平的影响就越大。因此,电缆长度越长,终端电阻降低 _信号幅度_ 就越大。

如果你一直在注意,你可能会注意到最后两点是矛盾的。这就是为什么一些工程师试图忽略对终端电阻的需求。终端电阻可以提高信号质量(减少振铃),但它也会降低信号幅度。无法说终端电阻总是会增加网络的线路长度。

关于传输线的最后一点是,终端电阻 _应该_ 与电缆的特性阻抗相匹配。如果使用 CAT-5(100 Ω 电缆)电缆,则终端电阻应为 100 Ω。不幸的是,RS-485 第 4.5.3 节规定,“A”和“B”之间的总负载不应小于 54 Ω。这限制了负载端接,并且是反对使用 100 Ω 电缆的一个论点。但是,与未端接网络相比,不正确值的终端电阻通常会改善信号质量。100 Ω 电缆上的 120 Ω 电阻与无端接相比将大大减少振铃。而且,由于 120 Ω 终端电阻在极长的 120 Ω 电缆上会导致足够的信号损耗以停止网络运行,因此 500 Ω 甚至 1kΩ 终端电阻可能会在没有导致太多信号损耗的情况下,足够改善信号质量,从而使网络运行。如果你要突破任何限制,则必须针对单个网络通过实验确定终端电阻值。一台与接地隔离的不错的示波器(电池供电或由未插入电源的 UPS 供电(如果你对示波器足够了解,也可以从通道 1 减去通道 2 以查看差分波形,或者使用差分探头等等))可以成为非常有用的故障排除工具。

那么终端电阻是必需的吗?根据 RS-485,它是"通常"必需的。在实践中,它通常不是必需的。较低的数据速率有更多时间让振铃稳定下来,因此数据速率越低,对这个电阻的需求就越少。振铃在较短的电缆中也会更快地稳定下来。如果你运行的数据速率小于 30kBit 并且不需要长电缆,那么可能不需要终端电阻。数据速率越高,电缆越长,就越有可能需要添加终端电阻。

有很多终端技术,所有这些技术在狭窄的条件范围内可能都能很好地工作。

Bob Perrin 列出了 4 种最流行的技术[8]

  • 未端接:这是最简单的系统,但只有在数据速率和长度都足够低的情况下才能使用。一个经验法则是,如果数据线的传播延迟远小于一个比特宽度,则不需要端接。[9] 斜率限制驱动器将显著改善未端接网络的信号质量。在必须使用星形总线拓扑的地方,未端接网络可能会改善信号质量。[10]。但是,应该注意的是,该网络在参考中运行的速率为 300 波特,并且还有其他调整,例如隔离的收发器和每个节点上的高电阻偏置电阻。它还拥有超过 10 英里的电线(哇)。如果使用终端电阻,这段电缆的长度预计会有明显的直流损耗。
  • 单向电阻端接:RS-422 网络应该只在接收器端有一个电阻。如果驱动器始终处于启用状态,也应该在 RS-485 网络上使用。
  • 双向电阻端接:最适合线性总线,发射器位于总线上的任何位置。[8]
  • 交流端接:虽然交流端接在背板上可能效果很好[11],但其他人不建议将其用于 RS-485 线路:“在实践中,我从未见过[交流端接]除了破坏信号完整性之外的其他作用。”[8]

偏置

[edit | edit source]

偏置在 RS-485 网络上有很多用途,但首先让我们看看 RS422 和 RS-485 有什么要说的。

偏置,有时称为失效安全偏置,在 RS-422 和 RS-485 规范中简要讨论过。但偏置被讨论为内部接收器特性,而不是外部偏置网络。在 RS-485 中,接收器的内部偏置将使得"当 ±0.40 V 的差分电压 (VR3) 通过等于 1500/nUL 1/2 的匹配电阻分别应用于每个输入端时,接收器将保持在预期的二进制状态,如图 13 所示,输入电压 VR1 和 VR2(以及由此产生的 VR3)实现任何允许的输入条件。"。。RS-422 的要求非常相似,只是电阻被指定为 499Ω 而不是 UL 的比率。这并非外部偏置电阻,而是接收器特性,用于限制由于输入不平衡而引起的差分噪声。

RS-485 中两次提到了失效安全。第一次是在总负载限制中,说明包括失效安全措施在内的网络总负载限制不应小于 54Ω。这意味着失效安全措施是接收器外部的电阻。RS-422 类似(只是它们省略了连字符)这两个标准都有一个部分定义了可能需要失效安全操作的原因,但都没有讨论如何实现它。

RS-422 和 RS-485 指出,失效安全可以检测到的一些故障条件包括

  • 发生器处于断电状态
  • 接收器未连接到电缆
  • 连接电缆开路
  • 连接电缆短路
  • 负载的输入信号在异常时间内(应用相关)保持在过渡区域(±200 mV)内。

需要检测哪些故障条件以及在检测到故障时该怎么做取决于应用程序。与 RS-485 标准的大部分内容一样,安全操作留有很大的空间,实现并不属于标准的一部分。

那么,为什么要对网络进行偏置呢?检测上面列出的故障是一个原因,但偏置本身无法检测所有故障。它也不能区分它们。

例如:RS-422 网络有一个始终处于活动状态的驱动器和接收器。如果驱动器正在传输异步起始停止数据(来自 UART 并且驱动器输入没有反转),则两根线的空闲状态将为 1。如果您在接收器处对网络进行偏置,以便接收器看到 1,那么您将无法确定驱动器何时断开连接(没有额外的硬件)。如果您对网络进行偏置以强制两根线为 0(当发射器未连接时),接收器将在线路上看到 1(当接收器和驱动器连接但线路上没有断开时)。接收器可以监控线路,并在线路上的 0 持续一段时间后指示故障。确定发生的是哪种故障将需要额外的硬件。

此偏置示例对于等效的 RS-485 网络来说将是一件坏事。如上所述的电压部分中所述;在 RS-485 网络上,有时两根线不会由发射器驱动。如果接收器认为线路上未驱动的电压为空闲状态,则 UART 应该正常工作。但是,如果接收器认为未驱动的线路为二进制 0,则当驱动器打开并设置为传输起始位(也是二进制 0)时,接收器将不会看到转换,因此将不会看到起始位。当没有驱动器处于活动状态时,将线路强制为空闲状态是网络上需要偏置的最常见原因。

偏置还将改善抗噪性。RS-485 将 -200mV 到 +200mV 之间的电压定义为未定义,但 IC 制造商可以在他们想要的任何地方设置 0 和 1 的阈值。他们通常会在接收器上添加一些滞后以降低其对噪声的敏感性,但偏置会降低接收器的噪声敏感性。

以下示例是对网络进行偏置至 200mV。您可能希望将网络偏置到更高的差分电压以提高噪声裕度。

RS-485 偏置。5V 直流电,但也可能是其他电压

此图显示了应用于端接网络的偏置。通常,您需要使用与驱动器供电电压匹配的上拉电压。图中显示了 5V,因为许多驱动器由 5Vdc 供电。可以使用其他上拉电压,并且上拉电压与驱动器供电电压匹配不是绝对要求。

偏置和端接电阻构成一个分压器,可以使用几种方法来计算电阻值。在以下示例中,期望的结果是在 Rterm 上获得 0.2V 的偏置,而 Rterm 为 120Ω。还应注意,此示例忽略了驱动器和接收器上的任何电流。

电阻的比例将与电压的比例匹配。由于总电压为 5V,并且 Rterm 上的期望电压为 0.2,因此偏置电阻上的电压为 4.8V

偏置电阻上的电压与端接电阻上的电压之比为
()
120Ω 端接电阻的 24 倍为 2880Ω。此电阻的一半在每个偏置电阻中,因此每个偏置电阻应为 1440Ω。因此,如果 Rbias+ 和 Rbias- 为 1440Ω,而 Rterm 为 120Ω,则端接电阻上将有 0.2V 的偏置。

但是,偏置电阻会影响总端接电阻。

RS-485 偏置。戴维宁等效。

下一张图显示了偏置电阻与端接电阻的交流戴维宁等效电路。5V 电源将在其输出端具有电容器。这些电容器将对交流信号起短路作用。因此,总偏置电阻实际上与端接电阻并联,作为电缆的负载。在选择端接电阻时,需要考虑偏置电阻。

总负载电阻可以计算为

使用前面示例中的值,带有偏置电阻的总端接电阻为 115.2Ω

Ω

这在 120Ω 的 10% 之内,可以使用这些值,或者您可以将端接电阻调整为 125Ω,这将使您获得 119.8Ω 的总端接电阻。改变端接电阻会改变端接电阻上的偏置电压,但它只会增加到 0.208V。

在实践中,您可能使用 5% 电阻。偏置和端接电阻的可用 5% 值将限制您使用 120Ω 和 1.5kΩ。这将导致 115.4Ω 的总端接电阻和 0.192V 的偏置电压。或者,您可以使用 130Ω 和 1.5kΩ。这将导致 124.6Ω 的总端接电阻和 0.208V 的偏置电压。

即使您使用 1% 电阻,标准值也将为 127Ω 和 1.47kΩ。这将导致 121.7Ω 的总端接电阻和 0.207V 的偏置电压。由于电阻的容差意味着您永远无法获得理想的计算值,所以不要担心。如果您能在 10% 之内,那么可以预期它能够正常工作。

这些示例适用于仅勉强满足 0.2V 差分电压的偏置电阻。降低偏置电阻值将提高偏置电压,这将提高抗噪性,但代价是来自 5V 电源的电流增加。

这些示例适用于单个 120 Ω 端接。对于这些值,在网络的每一端都需要偏置电阻。如果电阻减半至 720 Ω,则可以在网络的一端使用一组偏置电阻。为了增加一点额外的噪声裕度,使用 680 Ω 电阻,您就拥有了 RS-485 网络上最常见的偏置网络之一。

需要注意的另一件事是,可能不需要偏置。仅仅因为 RS-485 说 +0.2V 和 -0.2V 之间的电压是未定义的,并不意味着设计接收器的工程师不能定义从接收到的 0 到 1 切换的确切电压。一些 RS-485 IC 制造商,如 Maxim[12] 和 Analog Devices[13],已经设置了他们的一些接收器的阈值,以便两根线上的 0V 差分会导致检测到 1。这提供了一些抗噪性,并且解决了丢失起始位的问题,但仅限于实现这种内部偏置的接收器。网络上没有这种偏移接收阈值的其它接收器可能需要在网络上添加外部偏置电阻。

最后一点是,RS-485 接收器通常在 +0.2V 和 -0.2V 水平切换。当进入接收器的差分电压超过 +0.2V 时,接收器的输出切换到 1,当电压低于 -0.2V 时,接收器的输出切换到 0。(或者反之,如果接收器上有反转)由于来自 UART 的最后一位将是停止位 (1),然后发射器关闭(差分电压变为 0V,但没有低于 -0.2V),这应该使接收器保持输出 1 到接收 UART。UART 传输的第一位是起始位 (0),接收 UART 应该看到此转换。但这只有在线路没有振铃或噪声,导致接收器在停止位的末尾切换回 0 时才为真。端接电阻可能会减少网络上的振铃,从而使不需要偏置电阻。

引脚分配

[edit | edit source]

RS-422 和 RS-485 [常见应用 - 不属于标准的一部分]

[编辑 | 编辑源代码]

RS-422 和 RS-485 标准不包含连接器。许多连接器和引脚分配存在,但没有标准。显然,需要与信号的物理连接。连接从插入裸线的螺丝端子到连接器(例如 DE-9)不等。具有相同连接器但来自不同制造商的设备可能无法直接互连。查看每个制造商的数据手册以确定哪个引脚上是什么信号,以及两个设备是否可以直接或通过适配器连接。

其他标准可能会定义连接器和连接器引脚上的信号。例如;EIA-449 和 EIA-530 是参考 RS-422 电气级别的连接器标准。来自不同制造商的两个符合 EIA-449 标准的设备应该能够直接连接在一起。但波特率和比特帧也必须匹配。

[待办事项:添加来自 NI、B&B、ADAM 等制造商的连接器和引脚。志愿者?]

RS-232 和 EIA-574

[编辑 | 编辑源代码]

下表列出了常用的 RS-232/EIA-574 信号和引脚分配。RS-232 没有定义协议,但几乎总是通过这些连接器传输的协议是异步起始-停止 ASCII(来自 UART 的数据)。

信号 来源 DB-25
(RS-232)
DE-9
(TIA-574)
名称 典型用途 缩写 DTE DCE
数据终端就绪 指示 DTE 存在于 DCE。 DTR 20 4
数据载波检测 DCE 连接到电话线。 DCD 8 1
数据设备就绪 DCE 已准备好接收命令或数据。 DSR 6 6
振铃指示器 DCE 在电话线上检测到传入振铃信号。 RI 22 9
请求发送 DTE 请求 DCE 准备好接收数据。 RTS 4 7
清除发送 指示 DCE 已准备好接收数据。 CTS 5 8
发送数据 从 DTE 传输数据到 DCE。 TxD 2 3
接收数据 从 DCE 传输数据到 DTE。 RxD 3 2
共地 GND 公共 7 5
保护地 PG 公共 1

信号的命名是从 DTE 的角度出发的。接地信号是所有信号的公共返回。DB-25 连接器在引脚 1 上包含第二个“保护地”。

RS-485 标准中没有硬件握手,在大多数情况下它不再需要。

握手的目的是让接收器告诉发送设备“闭嘴,我充满了数据,会丢失你发送的任何更多数据”。这停止了数据流到接收端,允许接收器处理其缓冲区中的数据。当它能够接收更多数据时,接收器将使用握手线向发送器发出信号,表明它可以发送更多数据。

当计算机中的微处理器速度非常慢时,它是如此的马力有限,以至于这是必要的。停止发送/可以发送线将在发送的每个字节上打开和关闭。当计算机和外设中的微处理器速度提高到惊人的 1MHz 时,握手仍然是必要的,但停止发送/可以发送线会更少地切换。带有缓冲区的 UART 的出现更是锦上添花。处理器可以检查缓冲区的级别,并且只有在缓冲区太满时才需要停止数据。现代处理器速度很快,握手很少需要。

如果需要握手,可以使用 X-On/X-Off 握手协议进行尝试,但它不太可能有效。由于 RS-485 是半双工的,因此接收器很难在无法将字节放入传入数据时告诉发送器“闭嘴”。RS-422 是全双工的,因此如果需要,它可以使用 X-On/X-Off 协议。

一些 RS-232 到 RS-485 转换器最初使用握手信号(例如 RTS)来控制 RS-485 发送器的使能。软件将在将字节填充到 UART 的发送缓冲区之前设置来自串行端口的 RTS 引脚处于活动状态。当发送器为空时,它将设置 RTS 引脚处于非活动状态以禁用或“使被动” RS-485 发送器。这允许 RS-485 网络上的其他设备进行传输。这样做有优点和缺点。一个优点是,这允许软件(如果编写正确)控制网络并将其保持一小段时间,然后传输数据。这将确保网络在发送起始位之前有一段标记时间,从而消除了需要偏置电阻来强制网络进入标记状态。几个缺点是,网络在没有数据的情况下被驱动,因此冲突的可能性更大,并且软件复杂性增加。

另一种 RS-232 到 RS485 方案是监控进入 RS-485 发送器的数据流,并在出现边沿时触发一个单次定时器。RS-485 驱动器的使能由定时器控制。这种方案将在传输字节时自动控制网络,但不会有任何保证的标记时间,因此可能需要偏置电阻。该方案的另一个问题是,发送器需要在所有数据传输期间保持使能。如果传输 0x00(八个 0 位),则定时器必须使驱动器保持使能足够长的时间才能传输所有 8 位,而没有边沿被检测到。由于 PC 串行端口上的数据速率可以从 300 波特(8 位需要 26 毫秒)到超过 100k 波特(8 位需要 0.08 毫秒)不等,因此定时器要么必须限制它可以工作的波特率,要么必须保持控制 RS-485 网络的时间远远超过需要的时间。后者显着增加了冲突的可能性。

由于 PC 的驱动程序和/或硬件处理驱动器使能,现代 USB 到 RS-485 适配器完全消除了握手问题,现代 PC 可以处理比通过 RS-485 网络传输的数据速率快得多的数据速率。

USB 到串行转换器带有 ADDC(自动数据方向控制)以自动检测和控制数据方向,使握手控制方法过时。[14]

[编辑说明,前一段是遗留的,参考在很多事情上都不清楚,可能不是一个好的引用]

可以通过添加额外的硬件、软件和线缆来向 RS-485 网络添加硬件握手,但这超出了 RS-485 标准。如果需要,可以通过任何想要的方式完成,包括额外网络上的 RS-485 驱动器、额外线缆上的 RS-232 驱动器、TTL 电平,或者你想到的任何东西,因为它将不适用于任何其他 RS-485 网络,除了你正在设计的网络。

[以下所有信息都是遗留的,非常可疑。目前已保留,为本文的未来扩展提供起点(并展示 RS-485 的误解程度)]


RS-485 是许多更高级协议的物理层,包括 Profibus 和其他现场总线系统、SCSI-2、SCSI-3 和 BitBus。[15]

一些 RS-485 实现(特别是某些以太网配置)(以及一些 Macintosh GPIO 插座)使用 4 根线(2 对)进行点对点通信。其中一对用于 PC 到外设通信。另一对用于外设到 PC 通信。每对都可以以全速传输,无论另一对是否正在传输 (全双工)。


通常,位序列由微控制器内部的 UART 生成,UART 连接到 RS-485 接口 IC(也称为“RS485 线路驱动器/接收器”或“RS-485/RS422 收发器”)。许多制造商生产这种接口芯片 [16]。从那里,RS-485 信号通常通过 CAT-5 线缆传输 [17]。在电缆的另一端(通常)是相同的东西 - 连接器、RS-485 接口 IC 以及微控制器内部的 UART。

现实世界中的 RS-485

[编辑 | 编辑源代码]

现在在专业音频行业中普遍用于控制数字音频和信号处理器,例如 DBX driverack 和其他制造商的等效产品。由于更便宜的布线成本和电缆的普遍可用性(类似于 RJ-45),它比 RS232 更受欢迎。

在布线 RS-485 网络时,始终将“A”连接到“A”,“B”连接到“B”,“G”连接到“G”。[18]

许多人建议将原型软件编写为它将连接到半双工 RS-485 网络。然后,软件在连接到全双工 RS-485 网络、RS-232 网络以及各种其他通信媒体时将保持不变。

许多人建议使用 5 类线缆作为点对点全双工 RS-485 在原型上连接东西。CAT-5 线缆允许您相对快速地切换 - 到半双工 RS-485,或 RS-232 的 3 根线,或各种其他通信协议 - 而不必拉任何新线缆。点对点全双工 RS-485 网络允许您快速使完整的原型系统完全运行,因为它更容易调试并且对其他系统上的某些常见问题(例如 RS-232 上的噪声问题、半双工 RS-485 上的转向问题等)具有更强的免疫力。


应用

非标准连接器和布线

[编辑 | 编辑源代码]
看到插座上的 4 根线了吗?Localtalk 仅使用外层一对。

LocalTalk 网络使用标准 4 线 RJ11 电话连接器和电缆上的 RS-485 兼容差分信号。LocalTalk 只连接到最外侧的一对线(标准 4 线电缆上的“外侧对”)。

LocalTalk 忽略最内侧的一对线,因此内侧对通常用于标准模拟电话。

(RJ45 上是否有类似的 RS-485 标准?)

RJ45 连接器经常用于 RS-485,因为模块化连接器易于使用,而且电缆和连接器很常见。RS-485 接口通常使用引脚 7 和 8 用于两条数据线,因为它们构成了一对双绞线。这样可以避免与以太网 (引脚 1-3, 6) 和模拟电话 (引脚 4-5) 冲突。接地可能会根据应用场景而出现问题。通常,使用屏蔽的 CAT5/6 电缆可以提供足够的信号接地,虽然这并不推荐。

实际应用中的物理限制

[编辑 | 编辑源代码]
(stub)
RS-232 和全双工 RS-485 之间的区别
[编辑 | 编辑源代码]

(存根)

从软件的角度来看,全双工 RS-485 看起来非常像 RS-232。对于两对线——专门的“发送”对和专门的“接收”对(类似于某些以太网硬件),软件无法区分 RS-485 和 RS-232。

从硬件的角度来看,全双工 RS-485 与 RS-232 相比具有几个主要优势——它可以在更长的距离上以更高的速度进行通信。

不过,一条用于 RS-232 的长 3 线电缆不能切换到全双工 RS-485,因为后者需要 5 条线。

RS-232 仅为点对点连接定义,因此您需要为连接到主机 CPU 的每个传感器使用单独的电缆。RS-485 允许主机 CPU 与连接到同一条电缆的所有传感器进行通信。

RS-232 和半双工 RS-485 之间的区别
[编辑 | 编辑源代码]

但是很多 RS-485 硬件只使用一对线(半双工)。在这种情况下,主要区别在于

  • 包括主机 CPU 在内的每个 RS-485 节点都必须在完成消息发送后“关闭发射器”,以允许其他设备使用共享介质。
  • RS-485 硬件通常在接收器上接收共享介质上每个设备发送的每个字节,包括本地发射器。因此,软件应忽略自身发送的消息。

一条用于 RS-232 的长 3 线电缆通常可以切换到半双工 RS-485,允许以比使用 RS-232 信号的相同电缆更高的速度和更高的外部噪声电平进行通信。

RS-232 仅为点对点连接定义,因此您需要为连接到主机 CPU 的每个传感器使用单独的电缆。RS-485 允许主机 CPU 与连接到同一条电缆的所有传感器进行通信。

不过,与 RS-232 网络相比,半双工 RS-485 网络在出现问题时通常更难调试,因为

  • 当电缆上出现“错误消息”时,当您有一个共享介质,其中十几个节点连接到同一条电缆时,找出哪个节点发送了该消息比使用点对点介质,其中只有两个节点连接到任何特定电缆时更难(但并非不可能)。
  • 通过同一根线(而不是单向传输)双向传输数据需要一个转换延迟。转换延迟应与波特率成正比——过大或过小的转换延迟可能会导致难以调试的时序问题[18]


RS-232 和两种 RS-485 之间的区别
[编辑 | 编辑源代码]

RS-485 信号电平通常相对于信号接地为 0 到 +5 V。

RS-232 信号电平通常相对于信号接地为 -12 V 到 +12 V。

RS-232 使用点对点单向信号线:RS-232 电缆上只有两个设备连接。第一个设备的 TX 输出连接到第二个设备的 RX 输入,第二个设备的 TX 输出连接到第一个设备的 RX 输入。在 RS-232 电缆中,数据始终仅沿任何特定线在一个方向上传输,从 TX 到 RX。

RS-485 通常使用具有双向信号线的线性网络:RS-485 共享电缆上通常有许多设备。每个设备的“A”输出连接到每个其他设备的“A”输出。在 RS-485 电缆中,数据通常沿任何特定线双向流动,有时从第一个设备的“A”流向第二个设备的“A”,有时从第二个设备的“A”流向第一个设备的“A”。

驱动 RS-485 信号电平的 ASCII UART 的替代方案

[编辑 | 编辑源代码]

我被告知 10BASE-T 以太网和 SCSI 电缆使用一堆 RS-485 对——是吗?在 8 位 SCSI 的情况下,情况并非如此,驱动器是单线,在总线的每端都使用 220/330 Ω 终端。50 线电缆中一半的导线是接地返回线。这适用于原始 50 线 SCSI 接口的 8 位版本。超宽 SCSI 使用差分驱动,但它是否与 RS485 兼容,我不知道。

进一步阅读

[编辑 | 编辑源代码]
  1. "减少 RS-485 设计的冗余". EE Times. 2000.
  2. "TIA 标准存储 - TIA-232 文档历史". TIA. 2016.
  3. Lawrence, Tony (1992). "串行布线". A. P. Lawrence. Retrieved 28 July 2011.
  4. "使用 RS-485 可以达到多远和多快?". Maxim 集成产品. 2006.
  5. "LTC1685 - 52Mbps,精密延时,RS485 故障安全收发器". Linear Technology. 1997.
  6. "RS485 电缆 – 为什么 2 线 RS485 需要 3 根线"
  7. "LTC2850 数据手册". Linear Technology. 2007.
  8. a b c "RS-485 的艺术与科学:终端" (PDF). Circuit Cellar. 1999.
  9. "RS-422 和 RS-485 应用电子书" (PDF). B&B Electronics. 2010.
  10. PicList 线程:"RS485 PIC 网络中的反射?" 1998.
  11. 总线终端
  12. "RS-485 (TIA/EIA-485-A) 网络的正确布线指南". Maxim 集成产品. 2001.
  13. "RS-485/RS-422 电路实现指南" (PDF). Analog Devices. 2008.
  14. "选择合适的 USB 到串行适配器"
  15. http://interfacebus.com/Design_Connector_RS485.html
  16. "EIA-458 总线接口 IC 制造商"
  17. "RS-422 和 RS-485 系统的电缆选择"
  18. a b "RS-485 标准的基础"
华夏公益教科书