1.4 SERIAL COMMUNICATIONS
• 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,
• 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)
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,
20 - DTR (data terminal ready)
12 - Secondary Received Line Signal Detector
14 - Secondary Transmitted Data
15 - Transmission Signal Element Timing (DCE)
17 - Receiver Signal Element Timing (DCE)
19 - Secondary Request to Send
23 - Data Signal Rate Selector (DTE/DCE)
24 - Transmit Signal Element Timing (DTE)
• The pin assignments for the DB-9 are,
• 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.
184.108.40.206 - ASCII Functions
• ASCII functions can be used to interpret and manipulate strings in PLCs.
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,
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.