• Serial communication channels send data one bit at a time.


• These techniques are often slower, but are essential when transmitting using radio waves, telephone lines, or similar media.


• Serial lines have become one of the most common methods for transmitting data to instruments, and most personal computers now have two serial ports.


• Serial data can be transmitted two ways,

synchronous - all of the data bits are timed between sender and receiver.

asynchronous - the data bits arrive unannounced, without any coordination between sender and receiver. (this is the most common)

RS-232/RS-232C - the most common standard using voltage levels

RS-422a/423a/449 - a current loop standard well suited to noisy conditions

RS-485 - allows multiple talkers and listeners on one serial line (this can be the basis for a network)


• A typical data byte looks like the one below. The voltage/current on the line is turned on/off. The width of the bits determines the possible bits per second (bps). The value shown before is used to transmit a single byte.



• The bits shown correspond to,

before - this is a period where no bit is being sent and the line is high

start - a single bit to help get the systems synchronized

data - this byte could be 7 or 8 bits, but is almost always 8 now. The value shown here is 01001000 binary.

parity - this lets us check to see if the byte was sent properly. The most common choices here are no parity bit (just drop it out), or even parity, or odd parity. In this case there are two bits set. If we are using even parity the bit would be set. If we are using odd parity the bit would be off

stop - the stop bits allow form a natural pause at the end of the data.

after - a period of time where the line is high before the next byte.


• Typical electrical connections look like,




1.4.1 RS-232


• This standard is based on a high being +3 to +15V, and an off being -3 to -15V (+/-12V is commonly used).


• The typical connection scheme is shown below. notice that the lines are crossed between connectors. Also note that in some cases the dsr/dtr lines are not used. (Note: these are the lines used when connecting to a modem)




• The line names are,

TXD/RXD - (transmit data, receive data) these lines pass data one way from sender to receiver.

DSR/DTR - (data set ready, data terminal ready) these handshaking lines indicate when the remote machine is ready to receive data.

COM - a common ground to keep things from blowing up, etc.


• A cable that emulates a modem connection between two devices is shown below and is called a null modem cable.



• There are typically two connectors used for these devices. (Note: the connectors have very fine numbers on them)



• The main pin assignments for the DB-25 are,

Commonly used pins

1 - GND (chassis ground)

2 - TXD (transmit data)

3 - RXD (receive data)

4 - RTS (request to send)

5 - CTS (clear to send)

6 - DSR (data set ready)

7 - COM (common)

8 - DCD ()

20 - DTR (data terminal ready)

Other pins

9 - Positive Voltage

10 - Negative Voltage

11 - not used

12 - Secondary Received Line Signal Detector

13 - Secondary Clear to Send

14 - Secondary Transmitted Data

15 - Transmission Signal Element Timing (DCE)

16 - Secondary Received Data

17 - Receiver Signal Element Timing (DCE)

18 - not used

19 - Secondary Request to Send

21 - Signal Quality Detector

22 - Ring Indicator (RI)

23 - Data Signal Rate Selector (DTE/DCE)

24 - Transmit Signal Element Timing (DTE)

25 - Busy


• The pin assignments for the DB-9 are,

1 - DCD

2 - RXD

3 - TXD

4 - DTR

5 - COM

6 - DSR

7 - RTS

8 - CTS

9 - RI


• There are other settings such as half/full duplex.


• When communicating between two devices the setting must agree baud rate, stop bits, parity, data bits, full/half duplex, etc.


• The figure below shows a PLC connected to a data terminal with a serial line. This is followed by ladder logic to use the serial connection.




 - ASCII Functions


• ASCII functions can be used to interpret and manipulate strings in PLCs.


• These functions include,

ABL(channel, control, )- reports the number of ASCII characters including line endings

ACB(channel, control, ) - reports the numbers of ASCII characters in buffer

ACI(string, dest) - convert ASCII string to integer

ACN(string, string,dest) - concatenate strings

AEX(string, start, length, dest) - this will cut a segment of a string out of a larger string

AIC(integer, string) - convert an integer to a string

AHL(channel, mask, mask, control) - does data handshaking

ARD(channel, dest, control, length) - will get characters from the ASCII buffer

ARL(channel, dest, control, length) - will get characters from an ASCII buffer

ASC(string, start, string, result) - this will look for one string inside another

AWT(channel, string, control, length) - will write characters to an ASCII output


• An example of this function is given below,



• Try the problem below,



1.4.2 ASCII (American Standard Code for Information Interchange)


• While numbers are well suited binary, characters don’t naturally correspond to numbers. To overcome this a standard set of characters and controls were assigned to numbers. As a result, the letter ‘A’ is readily recognized by most computers world-wide when they see the number 65.