跳转到内容

串行编程/RS-485

来自 Wikibooks,开放的书籍,开放的世界

所有书架 > 科学书架 > 计算机科学书架 > 串行通信书架 > 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 标准包括异步起停通信位协议(UART 位协议,通常与“RS-232”串行端口一起使用)、“标准”连接器等。

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

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

由于 EIA 被 ANSI 授权在其领域帮助制定标准,这些标准可以被描述为 ANSI 标准,例如 ANSI/TIA/EIA-485

标题:用于平衡多点系统中的发射器和接收器的电气特性
[注意:以下信息被认为是正确的,但需要验证]
开发人员:美国电子工业联盟 (EIA)。工业电子协会。
RS-485A (Recommended Standard 485 Edition: 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 日
  • 标题 - 使用串行二进制数据交换的数据终端设备和数据电路终端设备之间的接口
  • 页数 - 53
  • 目的和范围 - 本标准适用于使用串行二进制数据交换的数据终端设备 (DTE) 和数据电路终端设备 (DCE) 的互连。它定义了

ANSI/EIA/TIA-232-E-1991

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

ANSI/EIA/TIA-232-F?

  • 修订 - F 修订版
  • 发布日期 - 1997 年 10 月 1 日
  • 标题 - 使用串行二进制数据交换的数据终端设备和数据电路终端设备之间的接口
  • 页数 - 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 定义了 13 种“标准”接口类型,从 A 到 M。这些类型都不匹配 IBM 对其串行端口的实现。第十四种接口类型 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”(TX 数据在第 2 针上)和“BB”(RX 数据在第 3 针上)。许多电路用于握手和其他功能。RS-232 标准包含辅助串行数据电路(辅助 TX 数据和辅助 RX 数据)、三个时钟(用于同步串行数据传输的定时元件)、信号质量检测器等等。显然,并非所有这些电路或信号都包含在 IBM 的实现中(很少有实现使用辅助数据线或许多其他电路)。RS-232 提供了一个电路列表,并指出如果您使用了一个电路,这就是它必须做的事情,它必须位于连接器的这个引脚上。

RS-232 定义了这些电路的电压,以及产生电压的逻辑极性。当传输二进制 0 时(即 UART 传输零时),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

[edit | edit source]

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

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

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

当使用两对线进行全双工通信时,一对用于接口生成器(驱动器)与 RS-422 网络上的其他设备通信,而第二对用于接口接收器用于监听网络上的其他设备(不是设备,因为此对线上只能有一个驱动器)。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

[edit | edit source]

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 标准的一部分,实现由编写软件的工程师决定。

物理层

[edit | edit source]

RS-232

[edit | edit source]

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”,被标注为公共点,但没有显示连接到任何导线上。此图中还有两个其他设备(接收器和收发器)以相同的方式连接到传输线上。附录中的另一个图表(同样,附录不被视为标准的一部分)讨论了连接"电源系统的地线" 或 "保护地或机架地" 到 "电路公共点或电路地""信号公共点"。附录说明该连接可以直连或通过一个 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 m)或更长。[3]

RS-422 和 RS-485

[编辑 | 编辑源代码]

围绕 RS-485 的线路长度和数据速率限制所产生的传说和民间传说,以及完全错误的信息,令人叹为观止。文章、应用说明,甚至半导体制造商的数据手册都讨论了 RS-485 中的数据速率和线路长度限制。遗憾的是,这些限制都没有出现在 RS-485 标准中。

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

右侧的图表通常出现在这些应用说明中,它显示了 1200 米/直流电的一端和 14 米/10 兆比特的另一端。此图表不在 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 要求驱动器和接收器在共模电压相对于电路共用点偏移时才能正常运行(有关更多信息,请参见电压部分)。如果电路共用点与接地真正隔离,那么在毯子上摩擦您的脚(以拾取 ESD 电荷)并接触导线会导致导线相对于接地电位偏移几千伏。在实践中,这种隔离非常少见。它将需要一个隔离的电源和光隔离的驱动器。或者几台笔记本电脑,使用电池供电并放置在绝缘表面上。

考虑三种不同的安装。

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

第一个是台式计算机与笔记本电脑通信。台式机连接到接地,RS-485 端口参考接地。笔记本电脑使用电池供电,与接地没有连接。对笔记本电脑的 ESD 冲击会导致两根 RS-485 导线相对于接地电位升高到几千伏。这远远超过了 RS-485 允许的 +12V 和 -7V 电压。如果台式机的端口具有 ESD 保护,则可能不会造成损坏,但不能保证。此安装应有一根第三根线将台式机 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 安培以上的电流。当使用屏蔽作为第三根线时,请注意接地回路。

电压

[edit | edit source]

RS-232

[edit | edit source]

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

驱动器必须输出 5V 到 15V 的幅度电压,负载为 3kΩ 到 7kΩ。当驱动器短路到电缆中的任何其他导体时,其输出电流不得超过 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 Ω 的端接电阻。[如果单位负载确实是 12 kΩ,那么这将得出 51.72 Ω,但第 4.5.3 节将总负载限制设置为 54 Ω]。驱动器不得超过 6V 差分电压或 6V 共模电压。驱动器的输出必须限制在 250mA 峰值输出电流,但可以限制在更低的值。当输出短路在一起或短路到 -7 到 +12V 之间的任何电压时,驱动器不得损坏。

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

驱动器必须能够驱动 32 个单位负载。由于接收器的负载可能小于一个单位,因此实际可以连接的接收器数量取决于接收器的单位负载额定值,以及线缆、比特率、短截线长度、网络的偏置和端接。接收器的最大数量可能远大于 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(ON)时,导线“ A ”上的电压相对于“ B ”为正,反之亦然,当导线上为二进制 1(OFF)时,导线“ A ”上的电压相对于“ B ”为负。换句话说,为了使符号与波形匹配,原理图符号的输入必须在符号的输入处反转或反相。还要注意,符号没有显示输入。这是因为“发生器和接收器的逻辑功能不在本标准的范围内,因此未定义。”

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

当 RS-485 驱动器直接从 UART 获取数据(没有额外反相)时,您会期望“ A ”和“ B ”导线匹配 RS-485 标准中导线上的电压,但它们不会(除非驱动器反相其输入)。它们将完全相反。

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

RS-232 规定,当传输二进制 0(又名 ON 或 Spacing)(来自逻辑,例如 UART)时,TXData 导线上的电压大于 +3V(参考信号公共导线)。当传输二进制 1(又名 OFF 或 Marking)时,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 ”相同。虽然假设 RS-485 驱动器 IC 引脚标记为 A 与 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 中,接收器的内部偏置应使“当通过等于 1500/nUL 1/2 的匹配电阻将 ±0.40 V 的差分电压 (VR3) 应用于每个输入端时,接收器将保持在预期的二进制状态,如图 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.2V,因此偏置电阻上的电压为 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),这应该使接收器输出到接收 UART 的 1 保持不变。UART 传输的第一个位是起始位 (0),接收 UART 应该看到这个转换。但只有在线路上没有使接收器在停止位结束时切换回 0 的振铃或噪声的情况下,这才是正确的。终端电阻可能会减少网络上的振铃,从而不需要偏置电阻。

引脚分配

[编辑 | 编辑源代码]

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针上包含一个第二个“保护接地”。

握手

[edit | edit source]

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 位为 26mS)到超过 100k 波特(8 位为 0.08mS)之间变化,因此定时器必须要么限制其可以使用的波特率,要么比实际需要的时间更长时间地控制 RS-485 网络。后者大大增加了发生冲突的可能性。

由于 PC 的驱动程序和/或硬件处理驱动器使能,而现代 PC 可以处理比 RS-485 网络上传输速度快得多的数据速率,因此整个握手问题在现代 USB 到 RS-485 适配器中已经过时。

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

[编辑说明,上一段是遗留内容,引用在许多方面不清楚,可能不是一个好的引用]

可以通过添加额外的硬件、软件和电线来为 RS-485 网络添加硬件握手,但这超出了 RS-485 标准。如果需要,可以通过任何所需的方式实现,包括额外网络上的 RS-485 驱动器、额外电线上的 RS-232 驱动器、TTL 电平,或者你想到的任何东西,因为它不会与你设计的网络以外的任何其他 RS-485 网络一起使用。

遗留

[edit | edit source]

[以下所有信息都是遗留内容,非常值得怀疑。目前保留是为了为本文的未来扩展提供一个起点(并表明 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

[edit | edit source]

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

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

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

许多人建议使用连接为点对点全双工 RS-485 的 5 类电缆在原型上进行布线。5 类电缆允许您相对快速地切换——到半双工 RS-485 或 RS-232 的 3 根电线,或各种其他通信协议——而无需拉任何新的电缆。点对点全双工 RS-485 网络允许您快速使完整的原型系统完全运行,因为它更容易调试并且对其他系统上的一些常见问题(RS-232 上的噪声问题、半双工 RS-485 上的转向问题等)更具抵抗力。


应用

[edit | edit source]

应用

非标准连接器和布线

[edit | edit source]
看到插座上的 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 具有几个重大优势 - 它可以在更长的距离上以更高的速度进行通信。

然而,一根长 3 线的 RS-232 线缆无法直接切换到全双工 RS-485,后者需要 5 根线缆。

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

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

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

  • 每个 RS-485 节点,包括主机 CPU,在传输完消息后必须“关闭发射器”,以允许其他设备使用共享媒介进行轮流传输。
  • RS-485 硬件通常在接收器上接收所有由共享媒介上的每个设备发送的字节,包括本地发射器。因此,软件应该忽略自己发送的消息。

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

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

然而,半双工 RS-485 网络在出现故障时通常比 RS-232 网络更难调试,因为

  • 当线缆上出现“错误消息”时,与一个点对点媒介(只有 2 个节点连接到任何特定线缆)相比,在共享媒介上(有十几个节点连接到同一根线缆)要更难(但并非不可能)确定哪个节点发送了该消息。
  • 在同一根线缆上双向传输数据,而不是单向传输数据,需要一个转换延迟。转换延迟应该与波特率成正比 - 过多或过少的转换延迟可能会导致难以调试的计时问题[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 IC. 2006.
  5. "LTC1685 - 52Mbps,精确延迟,RS485 故障安全收发器". Linear Technology. 1997.
  6. "RS485 线缆 - 为什么需要 3 根线缆用于 2 根(两根)线 RS485"
  7. "LTC2850 数据表". Linear Technology. 2007.
  8. a b c "RS-485 的艺术与科学:端接" (PDF). 电路地下室. 1999.
  9. "RS-422 和 RS-485 应用电子书" (PDF). B&B 电子公司. 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 标准基础"
华夏公益教科书