Sie sind auf Seite 1von 18

Serial Programming/RS-485

All bookshelves > Science bookshelf > Computer Science bookshelf > Serial communications bookshelf > RS-485 Technical Manual
NOTE: You may want to check out wikipedia:RS-485 or wikipedia:RS-232 for more information.
Contents
1 Introduction
2 History
3 Document Conventions
4 The RS standards, the OSI model, and the serial port
5 RS-232, RS-422, and RS-485
5.1 RS-232
5.2 RS-422
5.3 RS-485
6 Physical Layer
6.1 The Wires
6.2 Line Length and Bit Rate
6.3 Grounds and Grounding
6.4 Voltages
6.4.1 RS-232
6.4.2 RS-422
6.4.3 RS-485
6.5 [That Pesky] Polarity
6.6 Termination
6.7 Biasing
6.8 Pinouts [Common Application - Not Part of the Standard]
7 Handshaking
8 Legacy
9 RS-485 in the Real World
9.1 Applications
9.2 Nonstandard Connectors and Wiring
9.3 Physical Limitations in Practice
9.3.1 Differences between RS-232 and full-duplex RS-485
9.3.2 Differences between RS-232 and half-duplex RS-485
9.3.3 Differences between RS-232 and both kinds of RS-485
9.4 Alternatives to ASCII UARTs that drive RS-485 signal levels
9.5 further reading
Introduction
ANSI/TIA/EIA-485, commonly called RS-485, is a standard defining the physical layer of a two wire multipoint communications network.
This standard is one of the more misunderstood of EIAs standards. Many engineers have worked on an RS-485 application and think that
since their application worked, they understand exactly what the standard is. Yet few of these engineers have ever seen the standard, let
alone read it.
The RS-232, RS-422, and RS-485 standards are not comprehensive communications protocols, but are electrical layer standards that are
intended to be used in conjunction with other protocols. These other protocols, or OSI layers, are needed for two devices to transfer
information and are not included in these standards. Just because these protocols are used in a particular implementation of RS-232 or
RS-485, does not mean they are part of the standard.
A direct quote from the RS-485 standards scope:
This Standard does not specify other characteristics, such as signal quality, timing, protocol, pin
assignments, power supply voltage, operating temperature range, etc., that are essential for proper
operation of interconnected equipment.
The RS-485 standard states that it does not include protocol, but a common belief is that the RS-485 standard includes the asynchronous
start-stop communication bit protocol (the UART bit protocol commonly used with a "RS-232" serial port), a standard connector, etc.
This appendix will attempt to explain what RS-232, RS-422, and RS-485 are and are not; then discuss one of the more common
implementations of RS-422 and RS-485, asynchronous start-stop communication with a UART.
Serial Programming/RS-485 - Wikibooks, open books for an open world http://en.wikibooks.org/wiki/Serial_Programming/RS-485
1 of 18 6/1/2014 7:59 PM
History
The EIA once labeled all its standards with the prefix "RS" (Recommended Standard), but the EIA-TIA officially replaced "RS" with
"EIA/TIA" to help identify the origin of its standards.
[1]
The EIA has officially disbanded and the standard is now maintained by the TIA.
The RS-485 standard is obsolete and has been superseded by TIA-485, but many engineers and applications guides continue to use the RS
designation even though it has officially changed.
Title: Electrical Characteristics of Generators and Receivers for Use in Balanced Multipoint Systems
[Note: The following information is is believed to be correct but verification is needed]
Developer: Electronics Industries Association (EIA). Association of Industrial Electronics.
RS-485A (Recommended Standard 485 Edition: A) 1983.
EIA 485-A 1986
TIA/EIA 485-A 1998 [Approved: March 3, 1998]
TIA/EIA 485-A 2003 [Reaffirmed: March 28, 2003]
International and national standards based on the standard RS-485
ISO/IEC 8482 (Second edition 1993-12-15, current)
ISO 8284 (1987, obsolete)
ITU-T v.11 (1996, current)
ITU-T v.11 (1993, obsolete)
CCITT v.11 (1988, obsolete)
ANSI/TIA-485-A (1998, unknown)
Document Conventions
This document is primarily directed at discussion of RS-485 but also includes information about RS-232 and RS-422.
Direct quotations from one of the standards are shown "inside quotation marks in a fixed width font"
All three standards have annexes. These annexes clearly state that they are not a part of the standard, and are included for informational
(informative) purposes only. These annexes are discussed in this document but it should be clear that they are not a part of the standard
even though they are included in the standard.
Many references and examples are made to "asynchronous start-stop communication with a UART" or "UART" communications. This is
the 7 or 8-bit protocol commonly associated with serial ports. This was done since this protocol is a very common bit format used with
serial communications. It does not mean that this protocol is part of the standards or that only this protocol may be used with the
232/422/485 standards.
The term network is used to define the wires, terminations, bias networks, and all devices connected as a whole system.
The RS standards, the OSI model, and the serial port
In the early 80s IBM introduced the IBM PC. This computer had limited functionality with a keyboard and monitor as the primary
peripherals. A serial port could be added with a card that plugged into one of the ISA expansion slots. This type of port was needed to
transfer data from/to a printer, modem, or in rare cases a mouse. The serial port used a D-sub 25-pin connector and RS-232 electrical signal
levels, or was "RS-232 compatible". The term "RS-232 compatible serial port" was often shortened to "RS-232 port".
The original PC was upgraded with a hard drive and became the PC/XT. Later it was upgraded again to a 80286 processor and became the
PC/AT. When IBM introduced the PC/AT they also changed the physical format of the serial port connector to a D-sub 9-pin connector.
When IBM changed to the new connector they also changed the electrical signal levels and the new IBM PC/AT serial port no longer used
the RS-232 25-pin connector or signal levels. But, IBM took care to ensure that the new serial ports electrical levels would still work with
existing serial port peripherals, requiring only a 9-pin to 25-pin adapter. The 9-pin connector and electrical levels were eventually
documented in EIA/TIA-574. This serial port was no longer a "RS-232 compatible" serial port since the connector no longer matched the
RS-232 standard. But, since existing RS-232 compatible peripherals still functioned with it, it was still regularly called an "RS-232 port".
The original "RS-232 compatible" serial port used a UART to drive the RS-232 electrical signal levels and many came to believe that the
UART protocol was a part of the RS-232 standard. While this is incorrect, many to this day still believe that the RS-232 standard includes
things such as baud rate and the bit stream protocol used in the IBM serial port.
Somewhere around this time the OSI model was developed. The RS-232 standard resides in layer one of the OSI model, or the physical
layer. The physical layer may include a connector, wires, and electrical levels, but does not include the bit and framing protocol of the
UART. Bit and framing are in layer two of the OSI model.
The RS-232 standard does not include a line length limit, but practical limits of the electrical signal levels prevent long lengths. The RS-485
standard specifies a differential signaling scheme that will operate over a much longer line length than RS-232. Converters that changed the
RS-232 electrical levels to RS-485 levels were developed which allow the IBM serial port to transfer data over much longer distances than
Serial Programming/RS-485 - Wikibooks, open books for an open world http://en.wikibooks.org/wiki/Serial_Programming/RS-485
2 of 18 6/1/2014 7:59 PM
the RS-232 levels allowed. Again many thought that the UART protocol used in the IBM serial port were part of this standard, but the
RS-485 standard contains even less of the OSI model layer one than RS-232 does and also does not include any of the OSI model layer two.
The RS-485 standard does not include a connector which the RS-232 standard does.
In summary, the EIA/TIA standards (which are usually miscalled RS standards) are the physical layer which include electrical signal levels
and may include the connector. Layer two of the OSI model includes the bit and framing protocol. Layer two is outside of the EIA/TIA
standards.
RS-232, RS-422, and RS-485
RS-232
The RS-232 standard title is "Interface Between Data Terminal Equipment and Data Circuit Terminating Equipment
Employing Serial Binary Data Interchange". This standard is for up to 21 circuits on a 25 pin DB-25 connector. A circuit is a full
definition of a signal from the transmitting device to the receiving device, but many now think of these definitions as pin labels. One circuit
(signal Common) is required for all interface types. RS-232 defines 13 "standard" interface types lettered A through M, none of which
match IBM's implementation of its serial port. A fourteenth interface type, lettered Z, is reserved for applications not covered by types A
through M. All of the circuits on interface type Z are optional and are to be specified by the supplier.
RS-232 network. One driver and one receiver per circuit. Signal Common is
required for all interface types. Only Tx Data and Rx Data are shown. The
DB-25 connector is not shown.
In addition to the 21 circuits, the shield may be connected to pin 1, pins 9 and 10 are "Reserved for Testing", and pin 11 is
"unassigned". This defines all 25 pins of the connector.
An interesting point is that the serial data is transmitted from the Data Terminal Equipment [DTE] to the Data Circuit Terminating
Equipment [DCE] on pin 2, and this pin is defined as "Transmitted Data" for both the transmitter and the receiver. RS-232 only defines
connecting DTE to DCE, so when two computers are connected together this is outside of the standard.
Many engineers think the RS-232 standard completely defines the IBM PC serial port, but this is incorrect. The IBM PC serial port is only
partially described by the RS-232 standard. A common and incorrect assumption is that the RS-232 standard defines the bit protocol of the
data being transferred asynchronously through the UART. When configuring an IBM PCs serial port, the parity, number of data bits, and
number of stop bits must be set; therefore, many think this must be part of the RS-232 standard. But, the RS-232 standard allows for
synchronous communications, which is not compatible with the IBM PC serial port, as well as asynchronous communications, which can
be. It cant be denied that the UART IBM selected for its implementation of the serial port is considered by many as the definition of
RS-232, but these parts are not in the RS-232 standard.
Another example of misunderstanding the RS-232 standard is the 9-pin connector. RS-232 specifies two connectors, a 25-pin (DB-25) and
an alternate 26-pin connector (pin 26 is "No Connection"). The 9-pin RS-232 connector used for the IBM PC-AT serial port is not
specified in RS-232. EIA/TIA-561 and EIA/TIA-574 are standards for 8-pin and 9-pin connectors that are commonly used with serial ports.
The RS-232 standard defines the connector, the function of each of the pins in the connector (called circuits), and the electrical
characteristics of the signals that are on the circuits. For example, one of the circuits is AB. Circuit AB is on pin 7 and is described as
Signal Common. This is a rather convoluted way of saying pin 7 of the DB-25 connector is used as a signal common. Two circuits are for
transmitting and receiving the serial data, circuit BA (TX data on pin 2) and BB (RX data on pin 3). A number of circuits are for
handshaking and other functions. The RS-232 standard includes secondary serial data circuits (secondary TX data, and secondary RX
data), three clocks (timing elements) for synchronous serial data transfer, Signal Quality Detector, and more. Clearly not all of these circuits
or signals are included in IBMs implementation (very few implementations use secondary data lines or many of the other circuits). RS-232
provides a list of circuits and says if you use a circuit; this is what it must do and it must be on this pin of the connector.
Serial Programming/RS-485 - Wikibooks, open books for an open world http://en.wikibooks.org/wiki/Serial_Programming/RS-485
3 of 18 6/1/2014 7:59 PM
RS-232 defines the voltages of these circuits, and the polarity of the logic generating the voltage. When a binary 0 is being transmitted (i.e.
when the UART is transmitting a zero), the voltage on the TX data circuit is more positive than +3V, and when a binary 1 is being
transmitted, the voltage must be more negative than -3V. Voltages between -3V and +3V are undefined by the standard. There are other
electrical characteristics in the standard, but you should be getting the idea that RS-232 specifies the connector, signals, and electrical
characteristics. It does not specify bit protocols.
RS-232 allows for both a transmit and receive circuit. If both are implemented then the connection is full-duplex. If only one circuit is
implemented then the connection is one way. Half-duplex RS-232 implementations exist but require all of the hardware and wires that a
full-duplex network requires. Half-Duplex RS-232 is usually limited by an additional communications device between the two farthest ends
that are communicating. For example; Two computers communicating with each other over an older modem. The modem may be limited to
half-duplex communications, and therefore the link between the two computers is half-duplex. But, the RS-232 connection from the
computer to the modem would still be full-duplex. Other reasons that some RS-232 ports were half-duplex: some very old UARTs may be
half-duplex limiting the system, and some very old computers drove the RS-232 drivers directly from the processor without a UART. These
old and slow microprocessors did not always have the horsepower to monitor the timing of both the incoming and outgoing bits, limiting the
system to half-duplex.
The UART connected to the RS-232 driver/receiver controls the protocol of the bits being transferred. This protocol may include things like
the start bit, number of data bits, parity and stop bit(s). This protocol is not part of the RS-232 standard, even though many engineers think
of this protocol as RS-232.
RS-422
The RS-422 standard title is "Electrical Characteristics of Balanced Voltage Digital Interface Circuits". This standard is
for a network of two balanced pairs of wires for a total of four wires.
RS 422 network. May have multiple receivers. Only one driver per pair of
wires is allowed.
One pair is used for the interface generator (driver) to talk to the other device(s) on the RS-422 network, and the second pair is the
interface receiver used to listen to the other device (not devices, only one driver can be on this pair of wires) on the network. RS-422
includes the voltage levels of the two wires when a binary 0 or 1 is on the RS-422 lines, but specifically excludes the logic function of the
generator or receiver. There are other things specified, but they are all electrical values. Any bit protocol such as that from a UART is
specifically NOT included. RS-422 is inherently full-duplex. I.e. the two devices on an RS-422 network can talk to each other at the same
time. RS-422 allows for multiple receivers on each pair, but only one driver. This means that in a master/slave configuration, a master can
talk to multiple slaves, but only one slave can talk back to the master. This limits most RS-422 bidirectional networks to two devices that
talk to each other. RS-422 does not specify any connector.
Since the driver and receiver are differential circuits, the input and output voltages are specified as differential, but are also referenced to a
circuit common. See the section on grounding for a discussion of this extra wire.
RS-485
The RS-485 standard title is "Electrical Characteristics of Generators and Receivers for Use in Balanced Digital
Multipoint Systems". This standard is for a network of a single balanced pair of wires.
Serial Programming/RS-485 - Wikibooks, open books for an open world http://en.wikibooks.org/wiki/Serial_Programming/RS-485
4 of 18 6/1/2014 7:59 PM
RS 485 network. Multiple nodes. Includes a branch line which is not recommended.
Both the generator (driver) and the receiver of all devices on the network are connected to the two wires. A third interface is defined as a
transceiver, which has both a generator and receiver. All of the drivers and transceivers must be able to be made passive or effectively
disconnected from the network to allow other drivers to transmit. The RS-485 standard includes the voltage levels of the two wires when a
binary 0 or 1 is on the two RS-485 wires, but specifically excludes the logic function of the generator or receiver. There are other things
specified, but they are all electrical values. Any bit protocol such as that from a UART is specifically NOT included. RS-485 is inherently
half-duplex. I.e. only one device can talk to the other devices on the RS-485 network at a time. RS-485 allows for multiple devices on the
two wires. This means that in a master/slave configuration, a master can talk to multiple slaves, all of the slaves can talk back to the master,
and every device on the network can hear every other device. Implementing this requires a higher level addressing scheme so the data
being transmitted goes to the correct device. RS-485 does not specify any protocol, addressing scheme, or connector.
Since the driver and receiver are differential circuits, the input and output voltages are specified as differential, but are also referenced to a
circuit common. See the section on grounding for a discussion of this extra wire.
Please note that a RS-485 network is a single pair of wires, but there is nothing in the RS-485 standard that prevents more than one RS-485
network from being used by each device. One RS-485 network can be used for the master to talk to all of the slaves on the network, and a
different RS-485 network can be used for all of the slaves to talk back to the master. This particular implementation of two RS-485
networks is often called 4-wire or full-duplex RS-485. This implementation is very similar to a single RS-422 network. The most significant
difference is that more than one slave can talk back to the master. Another implementation of two RS-485 networks is BitBus, which uses
one of the RS-485 networks for bidirectional SDLC data communications (very different from asynchronous start-stop communications
with a UART), and a second, optional, RS-485 network for RTS (direction control if a repeater is used).
There is no collision detection in RS-485. If multiple devices start to talk at the same time, the data will be corrupted. RS-485 does not
define a way for a device to detect that the data it transmitted has been corrupted. This means that a higher-level protocol is usually used to
verify that the data has been sent. A simple example is a query/response protocol. A master asks a slave for data. The slave responds to the
request providing the master with the information. If the master does not receive the requested information, it asks for the information
again. If either the query or response is lost through a collision or other error mechanism, the data will end up being retransmitted. Other
error detection mechanisms can be used. A CRC or checksum can be added to the end of the data being transmitted. A receipt response
verifying valid data received can be sent back to the master. None of these protocols are part of the RS-485 standard, and implementation is
up to the engineer writing the software.
Physical Layer
The Wires
RS-232 has one requirements:
Maximum circuit capacitance of 2500pF
Its annex also states "desirable ... the DC wire resistance shall not exceed 25 per conductor" Any cable that meets the
capacitance requirement can be used. For long cables, heavier gauge wire may be needed to reduce resistance. Shielded cable increases the
capacitance between wires and reduces the total cable length.
RS-422 & RS-485 have one requirement
"balanced interconnecting media" - "The characteristics of the interconnecting cable are not specified."
Then the standards go on to say things that the cable should have/do:
Serial Programming/RS-485 - Wikibooks, open books for an open world http://en.wikibooks.org/wiki/Serial_Programming/RS-485
5 of 18 6/1/2014 7:59 PM
RS-485 Driver
RS-485 Figure 1
Shows A and B
connected to a
receiver, but does
not show a
connection to C
Data Rate / Line Length chart from
RS-422 Annex A
(This chart is not in RS-485)
"paired cable with metallic conductors should be employed." [yup, both standards really say the wire should be made of
metal]
The performance of the cable should work for the application. - "maintain the necessary signal quality required for the
specific application"
Shielded cable may be used. (RS-422 only - The RS-485 annex says shielded cable may be needed for RFI/EMI or other purpose, but
the standard does not mention the word shield)
120 nominal. (RS-485 only)
Other impedance cable may be used such as 100 nominal. (RS-485 only)
Note that the RS-422/485 standards call for "balanced interconnecting media", not twisted pair. In reality, the only viable option is twisted
pair, but the standards do not require it.
RS-485 calls out TSB-89 for guidelines on TIA/EIA-485-A. TSB-89 discusses wire types and effects, but TSB-89 also says "The designer
should empirically determine the performance of the media in these regards."
Unlike RS-232, which has a "transmit wire", a "receive wire" and a "signal common wire", RS-485 has a single pair
of wires that both the transmitter and receiver are connected to. The data is sent down the wires differentially, or
when one wire has a high, the other wire has a low and vice versa. In the RS-485 standard, one wire is labeled "A"
and the other is labeled "B", and the wires are twisted together (a "twisted pair"). This allows RS-485 to transmit over
longer distances than RS-232. Due to the confusion of polarity, some commercial device manufacturers have labeled
the wire connections "+" and "-", TX(+) and TX(-), etc. See the section [That Pesky] Polarity for more information.
The RS-485 standard has a diagram (RS-485 figure 1 [not shown for copyright concerns]) showing the cable as being
two wires. In this diagram the driver has two leads and connects to the wires at points "A" and "B". A third point on
the driver shown as "C" is labeled as a common, but is not shown connecting to any wire. A figure in the annex
(which is not considered to be part of the standard) discusses connecting the "Green Wire Ground of Power
System" or "Protective Ground or Frame Ground" to "Circuit Common or Circuit Ground" and SC (signal
common). The annex says this connection can be wired directly or made through a 100 resistor. This "third wire" is
not officially part of the standard and is discussed further in the grounds and grounding section.
The primary difference between RS-422 and RS-485 is that RS-422 requires 4 wires in two pairs and RS-485 requires
two wires in a single pair. However, the specifications are different in many other places. The annexes (which are not
a formal part of the specification, but are included for information purposes only) are also different. RS-422's annex
has a chart of empirical data using 24 AWG copper UTP telephone cable. POTS telepnone cable's impedance is much
less controlled impedance than CAT cable and can vary from 600 to less than 100 at different frequencies.
In the end, the cable you use needs to work for the application where you use it. The cable's length, impedance, terminations, stub lengths,
and data rate will all have an impact on signal quality. 120 cable should provide the best performance, but the 100 CAT-X cable may
you have laying around may also work. Even POTS telephone wire may work for many applications. Low capacitance cable becomes
important when pushing line length and data rates to the maximum.
Line Length and Bit Rate
The legends, folklore, and flat out wrong information that has grown around the line length and data rate limits inherent in RS-485 are truly
astounding. Articles, application notes, even data sheets from semiconductor manufacturers discuss both the data rate and line length limits
in RS-485, but sadly neither of these limits are in the RS-485 standard.
The graph at right, which is often shown in these app-notes, shows a limit of 1200 meters/DC at one
end and 15 meters/10 Mbit at the other. This graph is not in RS-485, the graph is from annex A of
RS-422. (This annex specifically states that it is not a formal part of the standard.) Even worse is the
fact that annex A states that this graph is a conservative guide based on empirical data of 24AWG
telephone cable. The annex also discusses the fact that many applications can handle greater
amplitude and timing distortion, and practical experience has show that the cable length can be
extended to several kilometers at lower data rates. The graph in RS-422's annex A is not an absolute
limit, but a guide to what should always work with cheap telephone wire.
RS-485 has even less to say. The forward to RS-485 references TSB-89 which has topics including
data signaling rate vs. cable length, stub length, etc. RS-485 also has some information in its annex
(again, which is not considered to be part of the standard) RS-485's annex states: "consideration
should be given to some of the problems that may be encountered due to system
configuration, data signaling rate vs. cable length, stub length, and grounding
arrangements." "High data signaling rates and long cable lengths are possible, however, they are mutually
exclusive. High data signaling rate applications should be limited to short cable lengths, while low data
signaling rate applications may employ long cable lengths." Low data rates are primarily limited by the DC resistance of the
cable and high data rates are limited by the AC effects of the cable on signal quality. There is no graph of cable length vs. data rate in
RS-485 or its annex.
RS-485 discusses that it is used for circuits up to 10Mbit/S, then says they need not be limited to 10Mbps. It also states that "the upper
bound is beyond the scope of this Standard".
Serial Programming/RS-485 - Wikibooks, open books for an open world http://en.wikibooks.org/wiki/Serial_Programming/RS-485
6 of 18 6/1/2014 7:59 PM
All of the application guides and data sheets that say RS-485 has a limit of 1200 meters or 10Mbit are flat out wrong.
That being said, what is the practical line length limit? It depends on many factors. Data rate is usually the primary factor. Since the
majority of RS-485 applications are driven by a USART (by a serial port), the data rate is usually below 100kbit. In this case, POTS
telephone wire should work for quite a long line. If you are pushing the data rate above 100kbit or the line length above 1000 meters, you
may want to use a better grade of wire. Many cable manufacturers can recommend a 120 cable intended to work with RS-422 or RS-485.
How fast can you go? Maxim has an app note that says speeds of 50Mbps
[2]
are possible with the right drivers. (and the right cable,
terminations, receivers, etc.) Linear Technology claims 52Mbps with their LTC1695
[3]
If your intention is to push the cable length or bit rate to extremes, you should pay careful attention to the cable, drivers, and installation. A
conversation with the cable manufacturer can help to define the best available cable for your application. There are many different drivers,
receivers, and transceivers available. Not all will provide the same performance. The RS-485 standard requires a minimum performance,
but many drivers exceed this performance and some have quirks such as slew rate limiting. Slew rate limiting reduces the maximum bit rate,
but will improve signal quality on networks with poor characteristics. And, of course, the installation can make or break the network
performance. Stub length, termination, and biasing resistors can have a significant impact on the performance of the network. A higher
value termination resistor will reduce the DC losses associated with extreme line lengths, allowing for much longer line lengths at the cost
of ringing on the wires. The ringing occurs when the data transitions, and will eventually damp out. This means that low data rates can
handle an improperly terminated (or even unterminated) cable better than high data rates.
Some thought should be given to changing the technology for long line lengths. A kilometer of POTS cable can cost hundreds of dollars,
two kilometers could be over a thousand, plus the cost of pulling the cable. A gateway that converts the RS-485 data to run over an existing
network may be less expensive in the end than running a kilometer of cable.
RS-485 gives limits for rise and fall times as 0.3 of the unit interval. This is a ratio of rise/fall time to bit width. There are no limits given in
time units, so there is no minimum or maximum bit rate associated with RS-485.
Grounds and Grounding
Grounding of the RS-485 hardware is another contentious issue. The reason for this is that different installations have different grounding
requirements. No one solution will fit all installations.
The ground between RS-485 devices is often called a "Third Wire". This Chipkin article
[4]
has some good information on this "third wire",
but notice in the comments how there is disagreement on exactly when this wire is needed.
The RS-485 standard has very little to say about grounding. The standard defines the common-mode voltage as being referenced to ground,
it defines a term "ground potential difference" as the difference in the signal ground between the driver and receiver, but it does not
say that this is earth ground or just a a third wire common. It shows a diagram of the driver and receiver with two wires connecting them,
and a third point "C" that is called a common. There is no wire shown connecting this third point between driver and receiver. Then the
annex states that consideration should be given to various things including grounding arrangements. Section A.4 of the annex defines two
optional grounding arrangements. The first is to connect the signal common of the driver/receiver circuit to "protective or frame
ground" through a 100 resistor. This frame ground is shown as being connected to the "green wire ground of power system", more
commonly called earth ground. The second optional grounding arrangement is to connect the circuit common directly to the frame ground
without a resistor. The annex also says that certain applications may cause the resistor to fail so the installation must allow access for
inspection and replacement. I.e., you should be able to change the resistor when it goes up in smoke.
Since the annex admits that the installation can cause physical damage to components, it is not surprising that grounding is a contentious
subject. Anyone who has been bitten by a destroyed device, is likely to be very vehement on how to, and how not to wire grounds. The
problem with this is that a particular method of grounding may be required for one installation to function and cause damage at another.
RS-485 requires the driver and receiver to function if the common mode voltage is shifted against circuit common (see the section on
voltages for more information). If the circuit common is truly isolated from earth ground, then scuffing your feet on carpet (to pick up an
ESD charge) and touching the wires can cause the wires to shift potential several thousand volts. In practice this type of isolation is rare. It
would require an isolated power supply and optically isolated drivers. Or a couple of laptops running on battery power and sitting on an
insulated surface.
Consider three different installations.
The first is a desktop computer talking to a laptop. The desktop is connected to earth ground and the RS-485 port is referenced to the earth
ground. The laptop is battery powered and has no connection to earth ground. An ESD shock to the laptop could cause the two RS-485
wires to increase in potential against the earth ground to several thousand volts. This far exceeds the RS-485 voltage of +12V and -7V. If
the desktop's port is ESD protected damage may not occur, but there is no guarantee. This installation should have a third wire connecting
the earth ground/circuit common from the desktop PC to the laptop's RS-485 port circuit common. Since the laptop has no connection to
earth ground, there will normally be little current through this third wire.
A second installation has two desk top PC's sitting very close to each other. The RS-485 circuit common is connected to earth ground in
both PC's. Since the PC's are sitting near each other, they are on the same power circuit,the difference in the earth ground between the two
computers is very small. This installation does not require a third wire, but including one will not hurt.
Serial Programming/RS-485 - Wikibooks, open books for an open world http://en.wikibooks.org/wiki/Serial_Programming/RS-485
7 of 18 6/1/2014 7:59 PM
RS-485 communications between two
computers. One computer is a desktop
and one is a battery powered laptop.
RS-485 communications between two
computers. The computers are close to
each other and the earth grounds have
little potential difference between
them.
RS-485 communications between two
computers. The computers are
separated by a long distance of wire
and one of the computers has a ARC
furnace near it creating a significant
ground potential difference.
The third installation uses the same two computers as the second example, but they are separated by
several thousand feet of wire, and one of the computers is sitting next to an arc furnace that draws
several thousand amps when operating. The difference in earth ground potentials between these two
computers may be tens or even hundreds of volts. This difference in earth ground may be high
enough to cause damage to the RS-485 devices, but connecting a third wire between their circuit
commons/earth grounds would try to bypass the power earth common (this is often called a ground
loop) causing excessive current in the third wire. The current could cause damage to the wire, or the
RS-485 port. This third example would be a good place to use an isolating RS-485 transceiver.
Isolated transceivers are available in IC packages, modules, and gateways.
A shielded cable may be used. A shield is sometimes used to reduce EMI in twisted pair, but will reduce the maximum RS-485 operational
line length. The annex of RS-485 states that "When employed, the shield shall be connected only to frame ground at either
or both ends depending on the specific application." Shields usually have a lot more copper (and/or aluminum) than a single
wire and can therefore carry a lot more current. A thousand feet of 24 AWG wire is in the 26 range. This helps to limit the current
through the "third" wire. A 10V difference in earth ground potential would only have less than 0.4 amps of current
A shield could have less than 1 of resistance causing 10+ amps with a 10V difference. Beware of ground loops when using the shield as
the third wire.
Voltages
RS-232
RS-232 typically has a transmit wire, receive wire and signal common wire. It may also have flow control signal wires. The voltages are
measured at the signal wire and are referenced to signal common. The driver must be able to handle an open circuit, or a short to any other
conductor in the cable. The receiver is designed to handle voltages between 3 and 15V in magnitude (i.e. both positive and negative
voltages) but must be able to handle an input of 25V without damage. The driver must not be able to output more than 25V.
When a binary 1 is transmitted, the signal is spacing, the the voltage on the wire must be more negative than -3V. When a binary 0 is
transmitted, the signal is marking, the the voltage on the wire must be more positive than +3V. The region between -3V and +3V is
undefined. The driver is designed to output between 5V and 15V into a load of 3k to 7k.
Older driver IC's commonly used +12V and -12V as the voltage sources. This limited the open circuit voltage to 12V. Lower voltage
Serial Programming/RS-485 - Wikibooks, open books for an open world http://en.wikibooks.org/wiki/Serial_Programming/RS-485
8 of 18 6/1/2014 7:59 PM
drivers are now available to allow operation from battery powered devices and the open circuit voltages may be lower than 12V.
Note that the logic function of the driver and receiver are defined. When the driver is transmitting a 1 (from the UART for example), then
the voltage on the wire must be less than -3V. This is considered "inverting" logic by many engineers.
RS-422
RS-422 has two pair of wires. The signals appear differentially on two wires of each pair. Each device has two wires to which the driver is
always connected, and two more wires to which the receiver is always connected. When the driver increases the voltage on one of the
wires, it simultaneously decreases the voltage on the other wire. When 5V drivers are used, the driver typically pulls one wire to circuit
common, and the other wire to 5V (and vice-versa). This does not mean the voltages will reach 0V or 5V on these wires. The exact voltages
will depend on the driver, the loading, biasing, termination, and any shift in ground potential between the driver and receiver.
RS-422 voltages are referenced differentially from one wire to the other, but are also referenced to circuit common. This means the
specification has a differential voltage requirement, and a common mode voltage requirement.
The driver produces a differential voltage between 2 and 10V into a loaded/terminated cable. The driver must present a low impedance to
the cable of 100 or less. The driver must not exceed 10V differential, or 6V common mode. The driver's output current when shorted to
circuit common must be limited to 150mA.
The receiver must have an input impedance of greater than 4k and function over a common mode voltage range of -7V to +7V. The
receiver must recognize a differential voltage of greater than 200mV as a binary value. Voltages of less than 200mV are undefined. The
receiver may recognize any voltage between -200mV and +200mV as a binary value, but different manufacturers can set the threshold
where ever they want. The maximum voltage between either of the wires and circuit common must not exceed 10V absolute magnitude,
and voltages up to 10V cannot cause damage to the receiver.
The driver has the capability of driving 10 receivers of 4k impedance, but the actual number that can be driven depend on the actual input
impedance, bit rate, wire, stub lengths, biasing and termination of the network.
The logic function of the driver and receiver are not defined, only the binary state of the differential voltages on the wires. A binary 1 may
(or may not) be inverted by the driver before it is output. See the section on polarity for more information.
RS-485
RS-485 has a single pair of wires. The signals appear differentially on these two wires. For each device interface, the the driver and receiver
are both connected to these two wires. The driver must be electrically disconnected or "made passive" when it is not transmitting. When the
driver increases the voltage on one of the wires, it simultaneously decreases the voltage on the other wire. When 5V drivers are used, the
driver typically pulls one wire to common, and the other wire to 5V (and vice-versa). This does not mean the voltages will reach 0V or 5V
on these wires. The exact voltages will depend on the driver, the loading, biasing, termination, and any shift in ground potential between the
driver and receiver.
RS-485 voltages are referenced differentially from one wire to the other, but are also referenced to circuit common. This means the
specification has a differential voltage requirement, and a common mode voltage requirement.
The driver produces a differential voltage between 1.5 and 5V into a loaded/terminated cable. The driver's impedance (when active) is not
specified, but the driver needs to be capable of driving 60 . The driver must not exceed 6V differential, or 6V common mode. The driver's
output must be limited to 250mA peak output current, but may be limited to much less. The driver must not be damaged when the outputs
are shorted together, or to any voltage between -7 and +12V.
The receiver's input impedance is specified in terms of a "unit load" where a unit load is specified as input current in mA at a voltage
referenced to ground. It is commonly considered that a 12k resistance is 1 unit load, but unit load is more complex than than a single
resistance. The receiver must function with common mode input voltages [referenced to circuit common] over the range of -7V to +12V.
The receiver must recognize a differential voltage of greater than 200mV as a binary value. Voltages of less than 200mV are undefined. The
receiver may recognize any voltage between -200mV and +200mV as a binary value, but different manufacturers can set the threshold
where ever they want.
The driver has to be capable of driving 32 unit loads. Since a receiver may have a loading of less than one, the actual number of receiver
that can be connected depend on the unit load rating of the receivers, the wire, bit rate, stub lengths, biasing and termination of the
network. The maximum number of receivers may be much greater than 32.
The RS-485 driver must be disabled [effectively disconnected from the wires] when it is not transmitting to allow other devices to transmit.
This means there will be times when no driver is connected to the wires. With no driver connected, the differential voltage on the wires will
depend on the termination resistor and biasing. If there is no biasing resistors on the wires, they will effectively be at 0V differential, which
is in the undefined region between -200mV and +200mV. This can cause a problem if the RS-485 network is using a UART to transmit data.
The UART should function correctly if the receiver considers the undriven voltage on the wires to be the idle condition. However, if the
receiver considers the undriven wires to be a binary 0, when the driver is turned on and set to transmit a start bit, which is also a binary 0,
the receiver will not see a transition, and therefore will not see the start bit. For this application to work, the driver must transmit an idle
(binary 1) after the driver is enabled, for some period of time before the start bit is transmitted.
Some manufacturers get around this problem by setting their receivers input threshold to a slightly biased value, such as -50mV, instead of
Serial Programming/RS-485 - Wikibooks, open books for an open world http://en.wikibooks.org/wiki/Serial_Programming/RS-485
9 of 18 6/1/2014 7:59 PM
RS-485 Driver
RS-485 Signaling Waveforms
exactly at 0V. When the wire pair is not driven, the receiver will see the input as an idle condition (binary 1). If the transmitter is turned on
at the exact same time as the edge of the start bit, the receiver will see the voltage change from idle to start so the UART will always see the
first start bit transmitted. This problem can also be fixed by adding bias resistors to force the line to idle condition when a driver is not
connected, but this has to be done on a network basis, not a device basis. Adding the biasing resistor to every device on the network can
cause termination problems. See the sections on termination and biasing for more information.
The logic function of the driver and receiver are not defined, only the binary state of the differential voltages on the wires. A binary 1 may
(or may not) be inverted by the driver before it is output. See the section on polarity for more information.
[That Pesky] Polarity
Before we discuss polarity lets take a look at logic levels and binary states.
Logic IC's don't output a precision voltage. As a general rule when the voltage measured (with respect to circuit common) is "high" the
binary state is considered to be a 1 and when the voltage is low the state is 0. There are exceptions to this rule (such as differential logic and
negative logic), but for the purpose of this discussion we'll talk about normal logic. When you turn a switch ON for a lamp, the a voltage is
applied to the light bulb and the bulb is on, therefore a voltage is ON and no voltage is OFF. Digital logic usually uses the same convention
(but not the same voltage) as the lamp example. The exact voltage level that a logic device considers ON or OFF varies by logic type, but
when the voltage is high (usually but not always approaching the IC's supply voltage), a binary 1 is on the wire, and when the voltage is
approaching 0 a binary 0 is on the wire.
In logic a binary 0 is usually considered OFF and a binary 1 is ON. All three of the standards, RS-232, RS-422, and RS485, reverse this
convention. This can create some confusion.
RS-485 has two interface connection points [wires] labeled "A" and "B". The third point C is discussed in the section on grounding.
The RS-485 standard clearly shows that when a binary 0 (ON) is on the wires, the voltage on wire "A" is positive with respect to "B" and
conversely, when a binary 1 (OFF) is on the wires, the voltage on wire "A" is negative with respect to "B". It also very clearly states "The
logic function of the generator and the receiver is beyond the scope of this Standard, and therefore is not
defined." However, if you look at the symbol you should notice that the "A" output is the non-inverting output and the "B" output is
inverting (thats the bubble on "B"). Yet the signaling waveforms show that when a 1 is on the wires "A" is low and "B" is high. In other
words, to make the symbol match the waveform, the input to the symbol would have to be inverted.
This brings up "inverting" and "non-inverting" outputs. When the input of an RS-485 driver goes high, one of the outputs will go high in
reference to circuit common and the other will go low. The exact voltage of high and low are not usually specified, rather a voltage
difference between the two outputs is specified. But, since one of outputs goes high when the input goes high, it is often called the
"non-inverting" output, often designated with a "+". Conversely, the output that goes low when the input goes high is often called the
"inverting" output designated with a "-". RS-485 does not use the terms inverting or non-inverting nor have the "+" or "-" label on the
interface points. RS-485 simply defines the interface connection points as "A" and "B" and shows the voltage relationship between "A" and
"B" for the binary states of the two wires, not the binary state of the input to the driver.
Stating that the logic function of the generator and receiver are not defined, then showing a symbol and signaling waveform of the wires
that are inverted, adds more confusion.
RS-232 states that when a binary 0 (aka ON or Spacing) is being transmitted (from the logic such as a UART) the voltage on the TXData
wire is greater than +3V (referenced to the signal common wire). When a binary 1 (aka OFF or marking) is being transmitted the voltage on
TXData must be less than -3V. Some consider this to be inverting since a 0 is the highest voltage and a 1 is the lowest voltage. This is not
technically correct since RS-232 requires the use of voltages outside those of normal logic, but the input and output of an RS-232 driver
look inverted on an oscilloscope, and most data sheets show the driver as an inverter.
If the RS-485 driver is driven directly from a UART with no added inversion, you would expect the "A" and "B" wires to match the
voltages in the RS-485 standard for the voltages on the wires, but they will not (unless the driver inverts its input). They will be exactly
backwards. If both the driver and receiver receiver have no inversion, then the A and B lines of both devices should be connected together.
But some manufacturers match their A and B labels to the symbol (no inversion), and some match to the signaling waveform (inverted). If
an RS-232 to RS-485 converter is used, things start to get even more murky. If the voltage on the RS-232 line is positive or high, the signal
Serial Programming/RS-485 - Wikibooks, open books for an open world http://en.wikibooks.org/wiki/Serial_Programming/RS-485
10 of 18 6/1/2014 7:59 PM
LTC2850/MAX483 Schematic Symbol
Waveforms for a LTC2850 RS-485
driver. These waveforms are based on a
scope capture in the IC's datasheet
showing propagation delay with a
20MBit signal.
is a binary 0. Should this signal be inverted back to a low? See the instructions on the converter you are using. You may not have the
polarity you expect.
Finally there is confusion from the IC manufacturers. The datasheet for Linear Technology's LTC2850
[5]
shows that when pin 4 (DI - the
driver's input pin) is high, the output voltage on pin 6 (The A output) will be positive with respect to pin 7 (the B output).
This is exactly backwards from what is expected based on the RS-485 standard for the "A" and "B" signaling waveform (inverted) because
this driver does not invert its input. Many other IC manufacturers make a drop in replacement for this IC and many of them (such as the
MAX483) use the same labeling. Some manufacturers have avoided this confusion by changing the name of the output pins to X and Y.
There are two things to be noted about this so called "pin mislabeling". The first is that RS-485 denies any control of the logic function of
the generator and receiver. The other is that the IC's datasheets never state that pin A is the same thing as RS-485's wire "A". While it may
seem quite rational to assume that an RS-485 driver IC pin that is labeled A matches the RS-485 standard's wire "A", this is actually an
assumption and is in fact not the case. The designer has to define the logic function of the driver and receiver.
So how do you know what pin is "A" and what is "B"? Well if you paid attention to the previous discussion, there is no way. The result of
this is that many RS-232 to RS-485 converters have changed the labeling of their devices to (+)/(-), or TD+/TD-, etc. The good news is that
you won't damage the device if you connect it backwards. If you are running asynchronous start/stop communications (a UART) across the
RS-485 wires, it simply will not work if the polarity is backwards. It is usually a fairly simple matter to reverse the wires and test the
communications again. This is a good first step if the communications are not working. Of course, many other problems can cause a
communications failure and these will be addressed in the troubleshooting section.
For those designing or documenting a system, it is a bit more complicated than simply swapping pins. The "pin mislabeling" discussed above
is a good starting point. Even though the logic function of the generator and receiver are not defined by RS-485, it makes sense to many
engineers to have a binary 1 appear on the RS-485 wires when a binary 1 is being transmitted. You can design the system to accomplish this
if you pay careful attention to logic function of the driver being used, as well as the labeling of the terminal on the device. Don't assume
that the A and B pins of an IC match the "A" and "B" of the RS-485 standard because they can't. The standard does not define the logic
function of the driver or receiver, and the symbol in RS-485 is inverted compared to the output signaling waveforms.
Termination
Termination is a less controversial subject than a misunderstood subject.
To understand how to terminate a network (the wires) you must first understand transmission lines. This is too complicated a subject to go
into depth here but a basic tutorial using oversimplified concepts may help.
[Note that the diagrams below do not take into account phase shift or the ringing that can be induced from the inductance and capacitance
of the wires, but this is an oversimplified tutorial and the basic concepts hold.]
A wire has both inductance and resistance. How much of each depends on the wire. A pair of wires has capacitive coupling and a very
small amount of resistance between the wires. How much of each depends on the wires and the insulation. The inductance, resistance, and
capacitance of the wires are modeled below.
Balanced Transmission Line, LCR Model
Since inductance and capacitance can both be expressed as resistance (actually impedance - not including phase shift), the previous
Serial Programming/RS-485 - Wikibooks, open books for an open world http://en.wikibooks.org/wiki/Serial_Programming/RS-485
11 of 18 6/1/2014 7:59 PM
diagram can be redrawn as a purely resistive diagram.
Transmission Line, Balanced, Resistive Model
It should be noted that this model is only valid for one frequency. Increasing the frequency will increase the inductive reactance, thereby
increasing the series resistance in this model. Increasing the frequency will decrease the capacitive reactance, thereby decreasing the
parallel resistance in this model. For example; at a higher frequency the model's series resistance could increase from 0.5 to 1 (per
wire) and the parallel resistance could decrease from 14.52k to 7.32k . None of these values are an absolute, they are going to change
with frequency.
Another thing is that different cables have different characteristic impedances at different frequencies. POTS telephone cable varies from
600 at audio frequencies (say 1kHz) to 100 at 1MHz, while CAT-5 cable is around 100 over a wider frequency range.
There are a number of other things to note with this model. The first is that if the line is long enough, an AC "ohmmeter" connected to the
input of the model will see the "resistance" of the wires as 120 . How long the lines have to be for this to occur depends of the values of
the series and parallel resistances (and therefore the frequency being input). The second thing is that this is effectively an infinite voltage
divider. The longer the wires are, the less signal there will be at the end. Again the amount of loss depends of the values of the series and
parallel resistance and the loss will increase with frequency. This is why long cables and high frequencies are incompatible.
A final thing to note is that this model falls apart if the lines are not of infinite length. A signal traveling down the wires will reach the end
and "reflect" off of it (at the receiver's end). It then travels back to the source and will reflect off of it (at the driver's end). Since the signal
is attenuated as it travels, the "reflected" signal decreases in amplitude until its level stabilizes. This phenomenon will appear as ringing on
the edges of the signal. If the data bit is sampled while there is ringing it may be sampled as an incorrect value. This means that it is
necessary to wait until the signal has stabilized before the bit can be sampled.
Adding a resistor to the end of the cable that matches the value of the cable's impedance will absorb the signal traveling down the line and
reduce or prevent reflection. This will decrease the amount of time to wait for the signal to stabilize, increasing the possible bit rate. This
resistor will also make any length of cable, even a short length, look like the characteristic impedance of the cable (120 in the model) to
the driver. This resistor is called a termination resistor, designated as Rterm in the following diagrams.
Transmission Line, Balanced, LCR Model, Terminated At One End
Since the RS-485 driver is "made passive" (disconnected from the wires) when not transmitting, and the other end of the cable can then
drive the network, a termination resistor needs to be added to both ends. The result of this looks like two 120 resistors in parallel (60 )
to either end or to any point on the cable. So it does not matter where the driver is connected on the cable, it "sees" a 60 load.
Transmission Line, Balanced, Resistive Model, Terminated At Both Ends
This is why RS-485 states "The use of a cable termination is normally required"..
RS-422 drivers are always connected and act as their own termination at the driver's end of the wire. This will reduce the reflections on
RS-422 wires to some extent, but RS-422 also suggests termination resistors at the receiver's end of the wires (well sort of, depending on
the "data rate" or the "signal rise time at the load end of the cable").
Any receiver connected at some point in the cable will change the impedance of the cable at that point on the cable. This will cause
Serial Programming/RS-485 - Wikibooks, open books for an open world http://en.wikibooks.org/wiki/Serial_Programming/RS-485
12 of 18 6/1/2014 7:59 PM
reflections both back to the driver and forward to other receivers on the cable. Termination resistors will reduce the amplitude of this
reflection back from the ends which will improve the signal quality.
A few other things to consider are:
Faster rise times will result in greater ringing amplitude. Slew rate limiting drivers will reduce the rise time and decrease the ringing of
an unterminated line.
The signal will eventually stabilize (until the next bit transition) so the slower the bit rate the more time the signal will have to
stabilize before it is sampled (usually by the UART). This means that the lower the bit rate the less termination resistors are needed.
Branching the cable to a receiver will cause secondary reflections which will cause more and unpredictable ringing of the signal.
Branching on an RS-485 network is always a bad idea, the cable should be daisy chained from device to device.
Longer cables take longer for the signal to get to the end (and back and forth ...) so longer cables result in longer periods of ringing on
the wires, and longer periods of time for the signal to stabilize. The longer the unterminated wires are the slower the bit rate needs to
be. Therefore the longer the cable length, the more important the termination resistor is to improve signal quality.
The longer the cable length, the more effect the termination resistor has on the signal level. Therefore the longer the cable length is
the more the termination resistor decreases signal amplitude.
If you've been paying attention, you may notice that the last two points are contradictory. This is why some engineers try to ignore the need
for termination resistors. A termination resistor can increase the signal's quality (reduce ringing), but it will also reduce the signal's
amplitude. There is no way to say that a termination resistor will always increase the line length the network.
A final note on transmission lines is that the termination resistor should match the characteristic impedance of the cable. If CAT-5 (100
cable) cable is used, the termination resistors should be 100 , not the 120 suggested in the standard and the above examples. However,
an incorrect value termination resistor will usually improve the signal quality compared to an unterminated network. A 120 termination
resistor can cause enough loss with very long cables to stop the network from functioning. In this case a 500 or even a 1k termination
resistor may improve the signal quality with out causing too much signal loss. The value will have to be determined empirically for the
individual network.
So are termination resistors required? Per RS-485 it is "normally" required. In practice it is often not required. Lower data rates have more
time for the ringing to stabilize so the lower the data rate the less needed this resistor is. The ringing will also stabilize faster in shorter
cables. If you run a data rate of less than 30kBit and don't need long cables, the termination resistors are probably not required. The higher
the data rate and the longer the cable the more likely it will be that you have to add termination resistors.
There are a number of termination techniques, all of which may work great under a narrow range of conditions.
Bob Perrin lists the 4 most popular techniques
[6]
:
Unterminated: This is the simplest system, but only works if both the data rate and length are low enough. A rule of thumb is that if
the propagation delay of the data line is much less than one bit width, termination is not needed.
[7]
Slew rate limited drivers will
improve signal quality significantly with an unterminated network. An unterminated network may improve signal quality where a star
bus topology has to be used.
[8]
. But, it should be noted that the network running in the reference was running at 300 baud and had
other tweaks such as isolated transceivers and high resistance bias resistors on every node. It also had over 10 miles of wire (WOW).
This length of cable would be expected to have significant DC losses if termination resistors were used.
One-way resistor termination: RS-422 networks should only have one resistor at the receiver end. Should also be used on RS-485
networks if the driver is always enabled.
Two-way resistor termination: Works best on a linear bus, with transmitters anywhere along the bus.
[6]
AC termination: While AC termination may work well on backplanes
[9]
, others discourage its use on RS-485 lines: "In practice, I
have never seen [AC termination] do anything except butcher signal integrity."
[6]
Biasing
Biasing has a number of uses on a RS-485 network, but first lets look at what RS422 and RS-485 have to say.
Biasing, sometimes called fail-safe biasing, is discussed briefly in the RS-422 and RS-485 specifications. But biasing is discussed as an
internal receiver characteristic, not an external biasing network. In RS-485, the receiver's internal biasing will be such that the "receiver
will remain in the intended binary state when a differential voltage (V
R3
) of 0.40 V is applied through
matched resistors equal to 1500/nUL 1/2 to each input terminal, as shown in figure 13, with the input voltages
VR1 and VR2 (and resulting VR3) to achieve any allowed input condition.". RS-422's requirement is very similar except the
resistors are specified as 499 rather than a ratio of UL. This is not external biasing resistors, but a receiver characteristic of limiting
induced differential noise due to imbalance of the inputs.
Fail-safe is mentioned twice in RS-485. The first time is in the total load limit stating that the total load limit of the network including
fail-safe provisions, should be no less than 54. This implies that the fail-safe provisions are resistance external to the receiver. RS-422 is
similar (except they leave the hyphen out) Both standards have a section defining why you may want fail-safe operation, but neither discuss
how to implement it.
RS-422 and RS-485 state that some fault conditions that can be detected with fail-safe include:
generator(s) in power-off condition
Serial Programming/RS-485 - Wikibooks, open books for an open world http://en.wikibooks.org/wiki/Serial_Programming/RS-485
13 of 18 6/1/2014 7:59 PM
RS-485 Biasing. 5V DC, but may be
other voltages
RS-485 Biasing. Thevenin equivelant.
receiver not connected with the cable
open-circuited interconnecting cable
short-circuited interconnecting cable
input signal to the load remaining within the transition region (200 mV) for an abnormal period of time (application dependent)
Which fault conditions are to be detected and what is to be done when a fault is detected is application-dependent. Like much of the
RS-485 standard, fail-safe operation is left wide open and implementation is not part of the standard.
So why do you need to bias the network? Detecting the faults listed above is one reason, but biasing by itself cannot not detect all of them.
Nor can it differentiate between them.
For example: An RS-422 network has an always active driver and receiver. If the driver is transmitting asynchronous start stop data (from a
UART and no inversion of the driver's input) the idle condition of the two wires will be a 1. If you bias the network at the receiver so that
the receiver see's a 1, you could not tell when the driver was disconnected (without additional hardware) If you bias the network to force
the two wires to a 0 (when the transmitter is not connected), the receiver will see a 1 on the wires (when the receiver and the driver are
connected without an open in the wires). The receiver can monitor the wires and indicate a fault if a 0 is detected on the wires for an
extended period of time. Determining which fault has occurred would take additional hardware.
This example of biasing would be a bad thing on an equivalent RS-485 network. As mentioned above in the Voltages section; On the
RS-485 network there will be times when the two wires are not driven by a transmitter. The UART should function correctly if the receiver
considers the undriven voltage on the wires to be the idle condition. However, if the receiver considers the undriven wires to be a binary 0,
when the driver is turned on and set to transmit a start bit, which is also a binary 0, the receiver will not see a transition, and therefore will
not see the start bit. Forcing the wires to the idle condition when no driver is active is the most common reason to need biasing on the
network.
Biasing will also improve noise rejection. RS-485 puts the voltage between -200mV and +200mV as undefined, but the IC manufacturer
can put the threshold for a 0 and a 1 anywhere they want. They will usually add some hysteresis to the receiver to reduce its sensitivity to
noise, but biasing will decrease the receivers noise sensitivity.
The following example is to bias the network to 200mV. You may want to bias the network to a higher differential voltage to improve the
noise margin.
This figure shows biasing applied to the termination network. Normally you will want to use a
pull-up voltage that matches the driver's supply voltage. 5V is shown in the figure since many
drivers are powered by 5Vdc. Other pull-up voltages can be used and it is not an absolute
requirement that the pull-up voltage match the driver's supply voltage.
The bias and terminations resistors form a voltage divider and several process can be used to
calculate the resistor values. In the following example the desired result is to get 0.2V of bias across
R
term
, and R
term
is 120. It should also be noted that this example ignores any current from or to
the drivers and receivers.
The ratio of resistance will match the ratio of voltage. Since the total voltage is 5V and the desired
voltage across R
term
is 0.2, that leaves 4.8V across the bias resistors
The ratio of voltage across the bias resistors to the voltage across the termination resistor is
( )
24 times the 120 termination resistor is 2880. Half of this resistance is in each bias resistor, so each bias resistor should be 1440. So if
R
bias+
and R
bias-
are 1440 and R
term
is 120 there will be 0.2V of bias across the termination resistor.
However the bias resistors effect the total termination resistance.
The next figure shows the AC Thevinin equivalent of the bias resistors with the termination resistor.
The 5V supply is going to have capacitors on its output. These capacitors will act as a short to AC
signals. Therefore the total bias resistance is effectively in parallel with the termination resistor as a
load to the cable. The bias resistance needs to be taken into account when selecting the termination
resistor.
The total load resistance can be calculated as
Using the values from the previous example the total termination resistance with the bias resistors is
115.2:

This is within 10% of 120 and these values could be used, or you could tweak the termination resistance to 125 which would give you a
Serial Programming/RS-485 - Wikibooks, open books for an open world http://en.wikibooks.org/wiki/Serial_Programming/RS-485
14 of 18 6/1/2014 7:59 PM
total termination resistance of 119.8. Changing the termination resistance would change the bias voltage across the termination resistor
but it would only increase to 0.208V.
In practice you will probably use 5% resistors. Available 5% values for the bias and termination resistors would limit you to 120 and
1.5k. This would result in a total termination resistance of 115.4 and a bias voltage of 0.192V. Or you could use 130 and 1.5k. This
would result in a total termination resistance of 124.6 and a bias voltage of 0.208V.
Even if you use 1% resistors, the standard values would be 127 and 1.47k. This would result in a total termination resistance of 121.7
and a bias voltage of 0.207V. Since the tolerance of the resistors means that you will never get the ideal calculated values, don't sweat it. If
you can get within 10%, you can expect it to work.
These examples are for bias resistors that just barely meet the 0.2V differential voltage. Lowering the bias resistor values will increase the
bias voltage which will increase the noise immunity at the cost of increased current from the 5V supply.
Another thing to note is that biasing may not be required. Just because RS-485 says the voltage between +0.2V and -0.2V is undefined does
not mean the engineer designing the receiver cannot define the exact voltage that switches from a received 0 to a 1. Some RS-485 IC
manufacturers such as Maxim
[10]
and Analog Devices
[11]
have set the threshold of some of their receivers so that 0V differential on the
two wires results in a 1 being detected. This provides some noise immunity as well as resolves the problem of missing the start bit, but only
for the receivers that implement this internal biasing. Other receivers on the wires that do not have this internal biasing may require that
external bias resistors added to the network.
A final note is that RS-485 receivers commonly switch at the +0.2V and -0.2V levels. When the differential voltage into the receiver goes
above +0.2V the receivers output switches to a 1 and when the voltage goes below -0.2V the receivers output switches to a 0. (or vice versa
if there is inversion on the receiver) Since the last bit from a UART will be the stop bit (1), then the transmitter is turned off (the differential
voltage goes to 0V, but not having gone less than -0.2V), this should leave the receiver with a 1 being output to the receiving UART. The
first bit a UART transmits is the start bit (0) and the receiving UART should see this transition. But this is only true if there is no ringing or
noise on the line that switches the receiver back to a 0 at the end of the stop bit. A termination resistor may reduce the ringing on the wires
enough that biasing resistors are not required.
Pinouts [Common Application - Not Part of the Standard]
(stub)
Handshaking
There is no hardware handshaking in the RS-485 standard and in most cases it is no longer needed.
The purpose of handshaking is to tell the transmitting device to "shut up, I'm full of data and will lose anything more you send me". This
stopped the data flow to the receiving end and allowed the receiver to process the data in its buffer. When it was able to receiver more data,
the receiver would signal the transmitter that it was OK to send more data.
When the microprocessor in the computer was very slow, it was so horsepower limited that this was necessary. The stop sending / OK to
send lines would toggle on and off with every byte sent. When the microprocessor's in the computers and peripheral's ran at a blistering
1MHz, it was still necessary, but the stop sending / OK to send lines would toggle less often. The advent of UARTs with buffers helped even
more. The processor could check the level of the buffer and only had to stop the data when the buffer was too full. Modern processors are
fast enough that handshaking is rarely needed.
If handshaking is required, it can be attempted using using X-On / X-Off handshaking protocol, but it is unlikely to work. Since RS-485 is
half-duplex, it is difficult for the receiver to tell the transmitter to "shut up" when it can't get a byte into the incoming data.
Some RS-232 to RS-485 transceivers originally used the handshaking signals such as RTS to control the enable of the RS-485 transmitter.
The software would set the pin from the serial port active before it would stuff a byte into the UART's transmit buffer. When the transmitter
was empty it would set the pin inactive to allow other devices on the RS-485 network to transmit. There are advantages and disadvantages
to this. An advantage is that this allows the software (if properly written) to take control of the network and hold it for a short time before
transmitting the data. This would ensure that the network has a period of marking before the start bit was transmitted, eliminating the need
for a bias resistor to force the network to a marking state. A couple of disadvantages are that the network is being driven without data on it
so contention is more likely, and software complexity increases.
Another RS-232 to RS485 scheme is to monitor the data stream going into the the RS-485 transmitter and trigger a one-shot timer when an
edge occurs. The RS-485 driver's enable is controlled by the timer. This scheme will automatically take control of the network when a byte
is transmitted, but there will not be any guaranteed marking time so bias resistors may be required. Another problem with this scheme is
that the transmitter needs to stay enabled during the transmission of all of the data, and if a 0 is transmitted this means the timer has to keep
the driver enabled long enough to transmit 8-bits with no edges to be detected. Since data rates on a PC serial port can vary from 300 baud
(26mS for 8-bits) up to over 100k baud (0.08mS for 8-bits), the timer will have to either be limited in the baud rates that it can work with,
or keep control of the RS-485 network for much longer than it needs. The latter significantly increases the probability of collisions.
The entire subject of handshaking is obsolete with modern USB to RS-485 adapters since the PC's driver's and/or hardware handle driver
enabling, and a modern PC can handle data rates much faster than can be transmitted over an RS-485 network.
Serial Programming/RS-485 - Wikibooks, open books for an open world http://en.wikibooks.org/wiki/Serial_Programming/RS-485
15 of 18 6/1/2014 7:59 PM
see the 4 wires in the socket? Localtalk
only uses the outer pair.
USB to serial converters come with ADDC (Automatic Data Direction Control) to automatically sense and control data direction, making
the handshaking control method obsolete.
[12]
[editors note, the preceding paragraph is legacy and the reference is unclear on a number of things and may not be a good citation]
Hardware handshaking can be used by adding extra hardware, software, and wires, but this is outside the RS-485 standard. If this is
required, it can be accomplished by any means desired including RS-485 drivers on an additional network, RS-232 drivers on extra wires,
TTL levels, or really anything you can dream up since it won't work with any other RS-485 network except the one you are designing.
Legacy
[All information below this point is legacy and very questionable. It has been left in at this time to provide a starting point for future
expansion of this article (and to show just how misunderstood RS-485 is)]
RS-485 is the physical layer for many higher-level protocols, including Profibus and other fieldbus systems, SCSI-2, SCSI-3, and BitBus.
[13]
Some RS-485 implementations (in particular, some Ethernet configurations) (also some Macintosh GPIO socket) use 4 wires (2 pairs) for
point-to-point communication. One of the pairs is dedicated to PC-to-peripheral communication. The other pair is dedicated to
peripheral-to-PC communication. Each pair can transmit at full speed whether or not the other pair is transmitting (full-duplex).
Typically the bit sequence is generated by a UART inside a microcontroller, which is wired to a RS-485 interface IC (also called a "RS485
Line Driver/Receivers" or "RS-485/RS422 Transceiver"). Many manufacturers make such interface chips
[14]
. From there the RS-485
signaling typically travels over CAT-5 cable
[15]
. At the other end of the cable is (typically) the same thing -- the connectors, the RS-485
interface IC, and a UART inside a microcontroller.
RS-485 in the Real World
Now being used commonly in the pro audio industry to control digital audio and signal processors such as the DBX driverack and other
manufacturers equivalent products. Preferred to RS232 due to cheaper cabling run costs and the common availability of cables (similar to
RJ-45).
When wiring a RS-485 network, always connect "A" to "A", "B" to "B", and "G" to "G".
[16]
Many people recommend writing prototype software as if it will be connected to a half-duplex RS-485 network. Then the software will
work unchanged when connected to a full-duplex RS-485 network, a RS-232 network, and a variety of other communication media.
Many people recommend wiring things up on a prototype with Category 5 cable connected as point-to-point full-duplex RS-485. The
CAT-5 cable allows you to relatively quickly switch -- to half-duplex RS-485, or the 3 wires of RS-232, or a variety of other communication
protocols -- without pulling any new cables. The point-to-point full-duplex RS-485 network allows you to get the complete prototype
system fully operational quickly, since it is easier to debug and more immune to certain common problems on other systems (noise problems
on RS-232, turn-around problems on half-duplex RS-485, etc.).
Applications
Applications
Nonstandard Connectors and Wiring
The LocalTalk network uses RS-485-compatible differential signaling on standard 4-wire RJ11
telephone connectors and cable. LocalTalk only connects to the next-outermost pair of wires (the
"outer pair" on a standard 4-wire cable).
The innermost pair of wires is ignored by LocalTalk, so the inner pair is often used for standard
analog telephones.
(Is there a similar standard for RS-485 on a RJ45?)
RJ45 connections are used for RS-485 frequently, due to the ease of using the modular connectors
and availability of cables and connectors. A RS-485 interface will usually use pins 7 and 8 for the
two data lines, since they comprise a twisted pair. This avoids conflict with both Ethernet (Pins 1-3,
6) and analog phone (Pins 4-5). Grounding can be problematic depending on the application. Often, use of shielded CAT5/6 cable can give
an adequate signal ground, although this is not recommended.
Physical Limitations in Practice
Serial Programming/RS-485 - Wikibooks, open books for an open world http://en.wikibooks.org/wiki/Serial_Programming/RS-485
16 of 18 6/1/2014 7:59 PM
(stub)
Differences between RS-232 and full-duplex RS-485
(stub)
From a software point of view, full-duplex RS-485 looks very similar to RS-232. With 2 pairs of wires -- a dedicated "transmit" pair and a
dedicated "receive" pair (similar to some Ethernet hardware), software can't tell the difference between RS-485 and RS-232.
From a hardware point of view, full-duplex RS-485 has some major advantages over RS-232 -- it can communicate over much longer
distances at higher speeds.
Alas, a long 3-conductor cable intended for RS-232 can not be switched to full-duplex RS-485, which requires 5 conductors.
RS-232 is only defined for point-to-point connections, so you need a separate cable for each sensor connected to a host CPU. RS-485
allows a host CPU to talk to a bunch of sensors all connected to the same cable.
Differences between RS-232 and half-duplex RS-485
But a lot of RS-485 hardware uses only 1 pair of wires (half-duplex). In that case, the major differences are
Each RS-485 node, including the host CPU, must "turn off the transmitter" when done transmitting a message, to allow other devices
their turn using the shared medium
The RS-485 hardware generally receives on the receiver every byte that was transmitted by every device on the shared medium,
including the local transmitter. So software should ignore messages sent by itself.
A long 3-conductor cable intended for RS-232 can often be switched to half-duplex RS-485, allowing communication at higher speeds and
at higher external noise levels than the same cable used with RS-232 signaling.
RS-232 is only defined for point-to-point connections, so you need a separate cable for each sensor connected to a host CPU. RS-485
allows a host CPU to talk to a bunch of sensors all connected to the same cable.
Alas, half-duplex RS-485 networks are often more difficult to debug when things go wrong than RS-232 networks, because
When a "bad message" shows up on the cable, it is more difficult (but not impossible) to figure out which node(s) transmitted that
message when you have a shared-medium with a dozen nodes connected to the same single cable, compared to a point-to-point
medium with only 2 nodes connected to any particular cable.
Transmitting data bidirectionally over the same wire(s), rather than unidirectional transmission, requires a turn-around delay. The
turn-around delay should be proportional to the baud rate -- too much or too little turn-around delay may cause timing problems that
are difficult to debug
[16]
Differences between RS-232 and both kinds of RS-485
RS-485 signal levels are typically 0 to +5 V relative to the signal ground.
RS-232 signal levels are typically -12 V to +12 V relative to the signal ground.
RS-232 uses point-to-point unidirectional signal wires: There are only two devices connected to a RS-232 cable. The TX output of a first
device connected to the RX input of a second device, and the TX output of the second device connected to the RX input of the first device.
In a RS-232 cable, data always flows in only one direction on any particular wire, from TX to RX.
RS-485 typically uses a linear network with bidirectional signal wires: There are typically many devices along a RS-485 shared cable. The
"A" output of each device is connected to the "A" output of every other device. In a RS-485 cable, data typically flows in both directions
along any particular wire, sometimes from the "A" of the first device to the "A" of the second device, and at a later time from the "A" of
the second device to the "A" of the first device.
Alternatives to ASCII UARTs that drive RS-485 signal levels
I've been told that 10BASE-T Ethernet and SCSI cables use a bunch of RS-485 pairs -- is that right ? In the case of 8 bit SCSI this is not the
case, the drivers are single wire with a 220/330 terminator at each end of the buss. Half of the conductors in a 50 way cable are ground
return wires. This applies to the 8 bit version of the original 50 way SCSI interface. Ultrawide SCSI does use differential drive but whether it
is RS485 compatible, I don't know.
further reading
"Trim-the-fat-off-RS-485-designs". EE Times. 2000. http://www.eetimes.com/document.asp?doc_id=1224773. 1.
Serial Programming/RS-485 - Wikibooks, open books for an open world http://en.wikibooks.org/wiki/Serial_Programming/RS-485
17 of 18 6/1/2014 7:59 PM
"How Far and How Fast Can You Go with RS-485?". Maxim IC. 2006. http://www.maximintegrated.com/app-notes/index.mvp
/id/3884.
2.
"LTC1685 - 52Mbps, Precision Delay, RS485 Fail-Safe Transceiver". Linear Technology. 1997. http://www.linear.com/product
/LTC1685.
3.
"RS485 Cables Why you need 3 wires for 2 (two) wire RS485" (http://www.chipkin.com/articles/rs485-cables-why-you-need-3-
wires-for-2-two-wire-rs485)
4.
"LTC2850 Datasheet". Linear Technology. 2007. http://www.linear.com/docs/19198. 5.

a

b

c
"The art and science of RS-485: Termination". Circuit Cellar. 1999. http://www.canarysystems.com/nsupport
/ArtScienceRS485.pdf.
6.
"RS-422 And RS-485 Applications Ebook". B&B Electronics. 2010. http://www.bb-elec.com/Learning-Center/All-White-Papers
/Serial/RS-422-and-RS-485-Applications-eBook/RS-422-RS-485-eBook-graphics-embedded.pdf.
7.
PicList Thread: "Reflections in RS485 PIC Network?" 1998 (http://www.piclist.com/techref/postbot.asp?by=time&id=piclist\1998
\09\19\012858a.txt).
8.
Bus Terminations (http://www.analogconsultants.com/hints.htm#BusTerminations) 9.
"Guidelines for Proper Wiring of an RS-485 (TIA/EIA-485-A) Network". Maxim Integrated. 2001.
http://www.maximintegrated.com/app-notes/index.mvp/id/763.
10.
"RS-485/RS-422 Circuit Implementation Guide". Analog Devices. 2008. http://www.analog.com/static/imported-
files/application_notes/AN-960.pdf.
11.
"Selecting the Right USB to Serial adapter" (http://www.usconverters.com/index.php?main_page=page&id=62&chapter=0) 12.
http://interfacebus.com/Design_Connector_RS485.html 13.
"EIA-458 Bus Interface IC Manufacturers" (http://www.interfacebus.com/Design_Connector_RS485.html) 14.
"Cable Selection for RS-422 and RS-485 Systems" (http://www.bb-elec.com/tech_articles/cable_selection.asp) 15.

a

b
"Basics of the RS-485 Standard" (http://www.bb-elec.com/Learning-Center/All-White-Papers/Serial/Basics-of-the-RS-485-
Standard.aspx)
16.
RS485/RS422 pinouts for DB-9 Male and 10-Position Modular Jack (http://zone.ni.com/devzone/cda/tut/p/id/2895)
Retrieved from "http://en.wikibooks.org/w/index.php?title=Serial_Programming/RS-485&oldid=2658360"
This page was last modified on 21 May 2014, at 00:51.
Text is available under the Creative Commons Attribution-ShareAlike License.; additional terms may apply. By using this site, you
agree to the Terms of Use and Privacy Policy.
Serial Programming/RS-485 - Wikibooks, open books for an open world http://en.wikibooks.org/wiki/Serial_Programming/RS-485
18 of 18 6/1/2014 7:59 PM

Das könnte Ihnen auch gefallen