跳轉到內容

序列程式設計/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 標準的基礎"
華夏公益教科書