RS-485 Polarity: Difference between revisions
No edit summary |
No edit summary |
||
(12 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
RS-485 comprises two signals, one that 'tracks' the UART logic levels (high voltage == 1, low voltage == 0). The other signal does the opposite. The meaning of these two signals has been polluted by chip and box vendors, which leads to a lot of confusion. A lot of further confusion arises when one considers the UART logic levels vs signal levels and labels. This article attempts to resolve the status, hopefully without adding to the confusion. | RS-485 comprises two signals, one that 'tracks' the UART logic levels (high voltage == 1, low voltage == 0). The other signal does the opposite. The meaning of these two signals has been polluted by chip and box vendors, which leads to a lot of confusion. A lot of further confusion arises when one considers the UART logic levels vs signal levels and labels. This article attempts to resolve the status, hopefully without adding to the confusion. | ||
'''Basic Rule from the specification (and I have the actual specification) | |||
* A > B means "binary 0 on the bus" or "ON". | |||
* A < B means "binary 1 on the bus" or "OFF". | |||
And A is non-inverting (and thus B is inverting) | |||
'''Identifying 'A' and 'B' signals''' | '''Identifying 'A' and 'B' signals''' | ||
Line 18: | Line 23: | ||
|+ Nominal Terminology | |+ Nominal Terminology | ||
|- | |- | ||
! Our Terminology !! Description !! Terminonlogy !! Data (UART) Representation | ! Our Terminology !! Description !! Terminonlogy !! Data (UART) Representation !! When Idle | ||
|- | |- | ||
| A || Tracking UART value || Non-Inverting || A is high when UART emitting 1, A is low when UART emitting 0 | | A || Tracking UART value || Non-Inverting || A is high when UART emitting 1, A is low when UART emitting 0 || High | ||
|- | |- | ||
| B || Non-tracking || Inverting || B is low when UART emitting 1, B is high when UART emitting 0 | | B || Non-tracking || Inverting || B is low when UART emitting 1, B is high when UART emitting 0 || Low | ||
|} | |} | ||
Line 30: | Line 35: | ||
|+ Manufacturer's Labeling | |+ Manufacturer's Labeling | ||
|- | |- | ||
! | ! Non-inverting !! Inverting !! Class !! Manufacturer examples !! | ||
|- | |- | ||
| A || B || Nominal || BITS, FieldServer | |||
|- | |- | ||
| || | | + || - || Symbol || BACnet Specification || The non-inverting input of the | ||
EIA-485 transceiver is designated in this specification as "plus" or "+" | |||
|- | |- | ||
| | | RT+ || RT- || || EnOcean SmartServer IoT | ||
|- | |- | ||
| | | + || - || Symbol || FT-Click, BASRouter LX, Onicon F-4300 | ||
|- | |- | ||
| | | B+ || A- || || MBS UBR-01 Mk II | ||
|- | |- | ||
| | | 485+ || 485- || Symbol || FieldServer | ||
|- | |- | ||
| U+ || U- || || [https://en.wikipedia.org/wiki/RS-485#Waveform_example Wikipedia] | |||
|- | |- | ||
| B || A || || [https://en.wikipedia.org/wiki/RS-485#Signals Wikipedia. See, what a fiasco] | |||
|- | |- | ||
| A+ || B- || || [https://www.waveshare.com/product/iot-communication/wired-comm-converter/usb-to-rs485.htm Waveshare USB to RS-485] | |||
|- | |- | ||
| A || B || || [https://e2e.ti.com/cfs-file/__key/telligent-evolution-components-attachments/13-143-00-00-00-26-49-60/RS485-_2D00_-Polarity-Conventions.pdf TI Polarity Conventions] | |||
|} | |} | ||
The BACnet Specification (135 - 9.2.2) says: The non-inverting input of the | |||
EIA-485 transceiver is designated in this specification as "plus" or "+" and the inverting input as "minus" or "-". It is recommended, but not required, that the black or red insulated wire of the twisted pair be designated as "plus" and the white, clear, or green insulated wire be designated as "minus." | |||
TI has a very definitive [https://e2e.ti.com/cfs-file/__key/telligent-evolution-components-attachments/13-143-00-00-00-26-49-60/RS485-_2D00_-Polarity-Conventions.pdf document], but one that has to be read carefully in terms of terminology. Read this document with the following table in mind. Note, according to TI (and our opinion), the [https://en.wikipedia.org/wiki/RS-485 Wikipedia article] on bus states is WRONG ! : | TI has a very definitive [https://e2e.ti.com/cfs-file/__key/telligent-evolution-components-attachments/13-143-00-00-00-26-49-60/RS485-_2D00_-Polarity-Conventions.pdf document], but one that has to be read carefully in terms of terminology. Read this document with the following table in mind. Note, according to TI (and our opinion), the [https://en.wikipedia.org/wiki/RS-485 Wikipedia article] on bus states is WRONG ! : | ||
Line 59: | Line 67: | ||
|+ RS-485 Bus State Terminology | |+ RS-485 Bus State Terminology | ||
|- | |- | ||
! UART | ! UART input/output !! A vs B !! Legacy !! RS-485 Bus State !! RS-485 Bus Binary state | ||
|- | |- | ||
| 1 || | | 1 || A > B|| Mark/Idle || On || Logic 0 | ||
|- | |- | ||
| 0 || | | 0 || A < B || Space || Off || Logic 1 | ||
|} | |} |
Revision as of 06:46, 1 July 2025
RS-485 comprises two signals, one that 'tracks' the UART logic levels (high voltage == 1, low voltage == 0). The other signal does the opposite. The meaning of these two signals has been polluted by chip and box vendors, which leads to a lot of confusion. A lot of further confusion arises when one considers the UART logic levels vs signal levels and labels. This article attempts to resolve the status, hopefully without adding to the confusion.
Basic Rule from the specification (and I have the actual specification)
- A > B means "binary 0 on the bus" or "ON".
- A < B means "binary 1 on the bus" or "OFF".
And A is non-inverting (and thus B is inverting)
Identifying 'A' and 'B' signals
Remember that UARTs output a logic '1' (high voltage) for idle state! This signal will go to 0v for the start bit.
The A signal is the wire that, when in the idle state, is at a slightly higher voltage than the 'B' signal. This difference in voltage measurements is the result of the biasing and termination resistors of the circuit. See Wikipedia
Identifying 'Mark/Idle' and 'Space'
Look at the data bits. The idle condition is always the 'mark' condition. The start bit is always a 'space'. Drawings on the internet are in conflict with each other and cannot be relied upon.
Our Terminology | Description | Terminonlogy | Data (UART) Representation | When Idle |
---|---|---|---|---|
A | Tracking UART value | Non-Inverting | A is high when UART emitting 1, A is low when UART emitting 0 | High |
B | Non-tracking | Inverting | B is low when UART emitting 1, B is high when UART emitting 0 | Low |
Non-inverting | Inverting | Class | Manufacturer examples | |
---|---|---|---|---|
A | B | Nominal | BITS, FieldServer | |
+ | - | Symbol | BACnet Specification | The non-inverting input of the
EIA-485 transceiver is designated in this specification as "plus" or "+" |
RT+ | RT- | EnOcean SmartServer IoT | ||
+ | - | Symbol | FT-Click, BASRouter LX, Onicon F-4300 | |
B+ | A- | MBS UBR-01 Mk II | ||
485+ | 485- | Symbol | FieldServer | |
U+ | U- | Wikipedia | ||
B | A | Wikipedia. See, what a fiasco | ||
A+ | B- | Waveshare USB to RS-485 | ||
A | B | TI Polarity Conventions |
The BACnet Specification (135 - 9.2.2) says: The non-inverting input of the EIA-485 transceiver is designated in this specification as "plus" or "+" and the inverting input as "minus" or "-". It is recommended, but not required, that the black or red insulated wire of the twisted pair be designated as "plus" and the white, clear, or green insulated wire be designated as "minus."
TI has a very definitive document, but one that has to be read carefully in terms of terminology. Read this document with the following table in mind. Note, according to TI (and our opinion), the Wikipedia article on bus states is WRONG ! :
UART input/output | A vs B | Legacy | RS-485 Bus State | RS-485 Bus Binary state |
---|---|---|---|---|
1 | A > B | Mark/Idle | On | Logic 0 |
0 | A < B | Space | Off | Logic 1 |