RS-232 Digital I/O Module
Model 232SDD16
Documentation Number 232SDD16-1005
pn#3604-r1
This product
Designed and Manufactured
In Ottawa, Illinois
USA
of domestic and imported parts by
B&B Electronics Mfg. Co. Inc.
707 Dayton Road -- P.O. Box 1040 -- Ottawa, IL 61350
PH (815) 433-5100 -- FAX (815) 433-5104
Internet:
1995 B&B Electronics -- Revised February 2005
232SDD16-1005 Manual
Cover Page
B&B Electronics -- PO Box 1040 -- Ottawa, IL 61350
PH (815) 433-5100 -- FAX (815) 433-5104
Chapter 1- Introduction
232SDD16 Features
The 232SDD16 is a general purpose control module that is
connected to your computer’s RS-232 serial port. The 232SDD16
offers 16 discrete digital I/O lines. With these features, the module
can be used to sense external ON/OFF conditions and to control a
variety of devices.
The digital outputs are CMOS/TTL compatible. The digital inputs
are CMOS/TTL compatible. The digital I/O lines are available
through a DB-25S (female) connector.
The 232SDD16 connects to your computer’s RS-232 serial port
through a DB-25S connector. The unit automatically detects baud
rates from 1200 to 9600. A data format of 8 data bits, 1 stop bit and
no parity is used.
Configuration parameters are stored in non-volatile memory.
The configuration parameters consists of I/O definitions, and output
power-up states.
Figure 1.2 - Simplified Block Diagram
Packing List
Examine the shipping carton and contents for physical damage.
The following items should be in the shipping carton:
1. 232SDD16 unit
The unit may be powered by setting RTS and DTR high on the
serial port. If the 232SDD16 cannot be powered using the
handshake lines, it may be powered with +12Vdc through the 2.5mm
jack or through the DB-25 I/O connector.
2. Software
3. This instruction manual
If any of these items are damaged or missing contact B&B
Electronics immediately.
NOTE: When using an external supply, the supply should be
connected only to specifically labeled power inputs (power
jack, terminal block, etc.). Connecting an external power supply
to the handshake lines may damage the unit. Contact technical
support for more information on connecting an external power
supply to the handshake lines.
Figure 1.1 - 232SDD16 Module
232SDD16-1005 Manual
1
2
232SDD16-1005 Manual
B&B Electronics -- PO Box 1040 -- Ottawa, IL 61350
PH (815) 433-5100 -- FAX (815) 433-5104
B&B Electronics -- PO Box 1040 -- Ottawa, IL 61350
PH (815) 433-5100 -- FAX (815) 433-5104
232SDD16 Specifications
I/O Lines
Total:
16 (Factory default = inputs)
Digital Inputs
Voltage Range:
Low Voltage:
0 Vdc to 5 Vdc
1.0 Vdc max.
2.0 Vdc min.
High Voltage:
Leakage Current:
1 microamp max.
Digital Outputs
Low Voltage:
High Voltage:
0.6 Vdc @ 8.3 milliamps (Sink)
4.3 Vdc @ -3.1 milliamps (Source)
Power Supply
Input Voltage:
External power:
Port power:
8 Vdc to 16 Vdc
35 milliamps* @ 12Vdc
15 milliamps* (The RS-232 RTS
and DTR lines must be high to port
power unit.)
Doesn’t include the power consumption of external devices.
Communications
Standard:
Baud Rate:
Format:
RS-232 (unit is DCE)
1200 to 9600 (automatic detection)
8 data bits, 1 stop bit, no parity
DB25S (female)
Connector:
Size
0.7" x 2.1" x 4.7"
232SDD16-1005 Manual
3
4
232SDD16-1005 Manual
B&B Electronics -- PO Box 1040 -- Ottawa, IL 61350
PH (815) 433-5100 -- FAX (815) 433-5104
B&B Electronics -- PO Box 1040 -- Ottawa, IL 61350
PH (815) 433-5100 -- FAX (815) 433-5104
Table 2.1 - 232SDD16 I/O Port Pinout
Chapter 2 - Connections
DB-25S
Pin #
DB-25S
Pin #
Function
Function
I/O #15
This chapter will cover the connections required for the
232SDD16. There are three sets of connections: digital I/O, serial
port, and power supply. Do not make any connections to the
232SDD16 until you have read this chapter.
1
2
3
4
5
6
7
8
9
10
11
12
13
No connection
No connection
No connection
No connection
No connection
No connection
Ground
+12Vdc Input
I/O #0
I/O #1
14
15
16
17
18
19
20
21
22
23
24
25
I/O #14
I/O #13
I/O #12
I/O #11
I/O #10
No connection
I/O #9
I/O #8
I/O #7
I/O #6
I/O #5
Digital I/O Connections
Connections to the I/O lines are made through the DB25S
(female) I/O port connector. Refer to Table 2.1. See Chapter 5 for
I/O interfacing examples.
Digital Inputs
I/O #2
I/O #3
The digital input lines are CMOS/TTL compatible and can handle
voltages from 0Vdc to +5Vdc.
I/O #4
Digital Outputs
The digital output lines have a maximum voltage of +5Vdc and
are CMOS/TTL compatible.
Serial Port Connections
In order to communicate to the 232SDD16 module it must be
connected to an RS-232 serial port. The unit automatically detects
baud rates from 1200 to 9600. A data format of 8 data bits, 1 stop
bit and no parity is used. The 232SDD16 is configured as a DCE
device (See Table 2.2). If your communications equipment is
configured as a DTE device, such as a standard IBM PC serial port,
the 232SDD16 should be connected using a “straight through” DB-
25 cable or a standard DB-9 to DB-25 cable adapter as shown in
Table 2.3. If your communications equipment is configured as a
DCE device, such as a modem, the 232SDD16 should be connected
using a “null modem” cable (See Table 2.4).
Ground
The pin should be connected to your external digital devices
ground.
232SDD16-1005 Manual
5
6
232SDD16-1005 Manual
B&B Electronics -- PO Box 1040 -- Ottawa, IL 61350
PH (815) 433-5100 -- FAX (815) 433-5104
B&B Electronics -- PO Box 1040 -- Ottawa, IL 61350
PH (815) 433-5100 -- FAX (815) 433-5104
Power Supply Connections
Table 2.2 - RS-232 Connector Pinout
Power to the 232SDD16 can be supplied by the RS-232 serial
port handshake lines (RTS, DTR) or by an external power supply
through the 2.5mm power jack or from the I/O connector. Most serial
ports can provide enough power to supply the 232SDD16’s 15
milliamp requirement. If you plan to use this method to power the
unit, your software must set the RS-232 RTS and DTR lines to the
high state. An external power supply must be able to supply 8 to 16
Vdc at 35ma.
Signal
Direction at
232SDD16
DB-25S
Pin #
Signal
Notes
2
3
4
Transmit Data (TD)
Receive Data (RD)
Request to Send
(RTS)
Signal Ground (SG)
Data Terminal
Ready (DTR)
Input
Output
Input
Connection is required.
Connection is required.
May be used to power
unit if kept high.
Connection is required.
May be used to power
unit if kept high.
7
20
Input
NOTE: Power requirements of the module does not include the
power consumption of any external devices connected to the
module. Therefore, any current that is sourced by the digital outputs
must be added to this value and the current must not exceed the
maximum output source current. Refer to the 232SDD16
Specification Section of this manual.
Table 2.3 - 232SDD16 To DTE Connections
232SDD1
6 Pin #
DTE DB-
25
DTE DB-9
Connection
Signal
Connection
2
3
4
7
20
Transmit Data (TD)
Receive Data (RD)
Request to Send (RTS)
Signal Ground (SG)
Data Terminal Ready (DTR)
2
3
4
7
20
3
2
7
5
4
Table 2.4 - 232SDD16 To DCE Connections
232SDD16
DCE DB-25 DCE DB-9
Connection Connection
Pin #
Signal
2
3
4
7
20
Transmit Data (TD)
Receive Data (RD)
Request to Send (RTS)
Signal Ground (SG)
Data Terminal Ready
(DTR)
3
2
5
7
6
2
3
8
5
6
232SDD16-1005 Manual
7
8
232SDD16-1005 Manual
B&B Electronics -- PO Box 1040 -- Ottawa, IL 61350
PH (815) 433-5100 -- FAX (815) 433-5104
B&B Electronics -- PO Box 1040 -- Ottawa, IL 61350
PH (815) 433-5100 -- FAX (815) 433-5104
Table 3.2 - Equivalent Values
ASCII Decimal Hexadecimal
Chapter 3 - Commands
There are only two commands required to control the 232SDD16:
set output lines, and read I/O lines. Three additional commands are
used for configuring the module: define I/O lines, set power-up
states, and read configuration. Command strings are from four to
six bytes in length; the “!” character, the “0” (zero) character, two
command characters, and one or two data bytes, if required. (See
Table 3.1).
!
0
33
48
67
68
79
82
83
21h
30h
43h
44h
4Fh
52h
53h
C
D
O
R
S
Table 3.1 - 232SDD16 Commands
Syntax
Function
Command
Response
Command strings consists of four to six bytes. The first byte is
the start of message byte. The start of message byte is always the
ASCII “!” character. The second byte is the address byte. This byte
allows each unit to have a unique address (useful in RS-485
networks). Since the 232SDD16 uses RS-232 communications, this
byte is always the ASCII “0” character and can not be changed. The
next two bytes are the command characters. These bytes are ASCII
characters and used to specify which command will be executed by
the module. Some commands require an argument field. This field
contains the fifth and sixth data byte, a Most Significant and a Least
Significant data byte respectively.
Set Output Lines
Read I/O Lines
Define I/O Lines
!0SO{I/O msb}{I/O lsb} no response
!0RD
{I/O msb}{I/O lsb}
!0SD{I/O msb}{I/O lsb} no response
Set Power-up States !0SS{I/O msb}{I/O lsb} no response
I/O Definitions
Read Configuration !0RC
{I/O msb}{I/O lsb}
Power-up States
{I/O msb}{I/O msb}
Symbols: {...} represents one byte
<...> represents a numeric value
Command Syntax: !
0
|
|
|
|
_
|
|
|
|
_
|
|
_
|
|
_
|
|
|
|
|
|
|
Before going into the specifics of each command, it is important
to understand that a byte has a numeric value from 0 to 255. The
byte's value can be represented in decimal (0 -255) format,
hexadecimal (00 - FF) format, binary (00000000 - 11111111) format
or as an ASCII character. The fixed bytes of each command will be
represented as ASCII characters, for example: “!0RD”. Refer to
Table 3.1. However, it is important to remember that an ASCII
character has a numeric value. Example: the ASCII “0” (zero) does
not have a value of zero but has a value of 48. The decimal and
hexadecimal equivalents of some ASCII characters are shown in
Table 3.2. Some commands require additional data bytes to
complete the command. These data bytes may be represented in
any of the formats listed above. Refer to Appendix A for more ASCII
and decimal equivalents.
6th Data Byte
|
5th Data Byte
2nd Command Byte
|
1stCommand Byte
Address Byte
Start of Message Byte
I/O Data Bytes
When constructing commands to manipulate outputs lines or
when reading the state of the I/O lines it is necessary to know how
to select and interpret the I/O data bytes. The sixteen I/O lines are
represented by two data bytes. The Most Significant data byte
represents I/O lines #15 through #8 and the Least Significant data
byte represents I/O lines #7 through #0. The Most Significant byte is
always sent and received first followed by the Least Significant byte.
232SDD16-1005 Manual
9
10
232SDD16-1005 Manual
B&B Electronics -- PO Box 1040 -- Ottawa, IL 61350
PH (815) 433-5100 -- FAX (815) 433-5104
B&B Electronics -- PO Box 1040 -- Ottawa, IL 61350
PH (815) 433-5100 -- FAX (815) 433-5104
A byte represents an eight-bit binary number (11111111),
therefore each byte can represent eight I/O lines. Each bit is
assigned a bit position and a weight (value). Refer to Table 3.3.
Read I/O Lines Command
The Read I/O Lines command returns two data bytes that reflect
the state of the I/O lines. The first data byte contains the most
significant I/O lines (15 - 8). The second data byte contains the
least significant I/O lines (7 - 0). If a bit is a "0" then the state of that
I/O line is LOW. If a bit is a "1" then the state of that I/O line is HIGH.
Table 3.3 - Bit Assignments for I/O Lines
MOST SIGNIFICANT I/O BYTE
I/O Line #
Bit Position
Hex Weight
15
7
80
14
6
40
13
5
20
32
12
4
10
16
11
3
8
8
10
2
4
4
9
1
2
2
8
0
1
1
Command: !0RD
Argument: none
Dec. Weight 128 64
Response: the state of the 16 I/O lines in two 8 bit bytes (shown in
bold face)
ASCII Example:!0RDÈR
Dec. Example: !0RD<200><82>
Hex. Example: !0RD<C8><52>
Bin. Example: !0RD<11001000><01010010>
Description: the first byte indicates that I/O lines #15, 14, & 11 are
HIGH and I/O lines # 13, 12, 10, 9, & 8 are LOW; the second byte
indicates that I/O lines # 6, 4, & 1 are HIGH and I/O lines # 7, 5, 3, 2,
& 0 are LOW.
LEAST SIGNIFICANT I/O BYTE
I/O Line #
Bit Position
Hex Weight
7
7
80
6
6
40
5
5
20
32
4
4
10
16
3
3
8
8
2
2
4
4
1
1
2
2
0
0
1
1
Dec. Weight 128 64
To set an output to a HIGH state the corresponding bit position
must be set to a "1". Conversely to set an output LOW the
corresponding bit position must be set to a "0". When reading I/O
lines, any bit set to a "0" indicates the corresponding I/O line is in
the LOW state and any bit set to a "1" indicates the corresponding
I/O line is in the HIGH state.
Set Output Lines Command
The Set Output Lines command is used to set the states of the
output lines. This command requires two data bytes. These data
bytes specify the output state of each output line. The first data byte
represents the most significant I/O lines (15 - 8). The second data
byte represents the least significant I/O lines (7 - 0). If a bit position
is set to a "0" then the state of that output line will be set LOW. If a
bit position is set to a "1" then the state of that output line will be set
HIGH.
Example 3.1 - To set outputs 15, 8, 1, and 0 to a HIGH state, and all
other outputs to a LOW state (shown in bold face) -
MS Byte
10000001
129
LS Byte
00000011
3
Shown in binary -
Shown in decimal -
(128+1)
81
(2+1)
3
Shown in hexadecimal -
(80h+1h)
(2h+1h)
Example 3.2 - Reply from Read I/O command (shown in bold face) -
NOTE: Refer to the "Define I/O Lines" command to define an I/O line
as an output.
MS Byte
11001000
200
LS Byte
01010010
82
Shown in binary -
Shown in decimal -
(128+64+8)
C8
(64+16+2)
52
Shown in hexadecimal -
(80h+40h+8h)
(40h+10h+2h)
I/O lines #15, 14, 11, 6, 4, 1 are HIGH. All other I/O lines are LOW.
232SDD16-1005 Manual
11
12
232SDD16-1005 Manual
B&B Electronics -- PO Box 1040 -- Ottawa, IL 61350
PH (815) 433-5100 -- FAX (815) 433-5104
B&B Electronics -- PO Box 1040 -- Ottawa, IL 61350
PH (815) 433-5100 -- FAX (815) 433-5104
Command: !0SO
Argument: {I/O msb}{I/O lsb}
Set Power-up States Command
Response: none
ASCII Example:!0SOUA
Dec. Example: !0SO<85><65>
Hex. Example: !0SO <55><41>
Bin. Example: !0SO<01010101><01000001>
Description: the first byte sets output lines #14, 12, 10, & 8 HIGH
and output lines #15, 13, 11, & 9 LOW; the second byte sets output
lines #6, & 0 HIGH and output lines # 7, 5, 4, 3, 2, & 1 LOW. Note: If
any of these lines are defined as inputs the bit settings are ignored.
The Set Power-up States command is used to set the states of
output lines when the module's power is recycled. This command
requires two data bytes. These data bytes specify the output state
of each output line. The first data byte represents the eight most
significant I/O lines (15 - 8). The second data byte represents the
eight least significant I/O lines (7 - 0). If a bit position is set to a "0"
then the state of that output line will be set LOW. If a bit position is
set to a "1" then the state of that output line will be set HIGH.
Define I/O Lines Command
Command: !0SS
The Define I/O Lines command is used to define each of the 16
I/O lines as either an input or an output. This command requires two
data bytes. Each data byte defines eight I/O lines. The first data
byte defines the eight most significant I/O lines (15 - 8). The second
data byte defines the eight least significant digital I/O lines (7 - 0). If
a bit position is set to a "0" then the I/O line will defined as an input.
If a bit position set to a "1" then the I/O line will be defined as an
output.
Argument: {I/O msb}{I/O lsb}
Response: none
ASCII Example:!0SSÛ@
Dec. Example: !0SS<219><64>
Hex. Example: !0SS<DB><40>
Bin. Example: !0SS<11011011><10000000>
Description: the first byte sets output lines #15, 14, 12, 11, 9, & 8
HIGH and output lines #13, & 10 LOW at power-up; the second byte
sets output line #7 HIGH and output lines #6, 5, 4, 3, 2, 1, & 0 LOW
at power-up. Note: If any of these lines are defined as inputs the bit
settings are ignored.
Command: !0SD
Argument: {I/O msb}{I/O lsb}
Response: none
ASCII Example:!0SDUA
Dec. Example: !0SD<85><65>
Read Configuration Command
Hex. Example: !0SD<55><41>
The Read Configuration command returns the module's I/O
definitions and the outputs power-up state. Four data bytes are
returned. The first two data bytes contain the definition of the eight
most significant I/O lines (15 - 8) and the eight least significant I/O
lines (7 - 0) respectively. If a bit position is set to a "0" the I/O line is
defined as an input, if set to a "1" the I/O line is defined as an output.
The second two data bytes contain the power-up states of the most
significant output lines (15 - 8) and the least significant output lines
(7 - 0) respectively. If a bit position is set to a "0" the power-up state
of the output will be LOW, if set to a "1" the output will be HIGH.
Bin. Example: !0SD<01010101><01000001>
Description: the first byte define I/O lines #14, 12, 10, & 8 as
outputs and I/O lines #15, 13, 11, & 9 as inputs; the second byte
define I/O lines #6, & 0 as outputs and I/O lines #7, 5, 4, 3, 2, & 1 as
inputs.
232SDD16-1005 Manual
13
14
232SDD16-1005 Manual
B&B Electronics -- PO Box 1040 -- Ottawa, IL 61350
PH (815) 433-5100 -- FAX (815) 433-5104
B&B Electronics -- PO Box 1040 -- Ottawa, IL 61350
PH (815) 433-5100 -- FAX (815) 433-5104
Command: !0RC
Argument: none
Response: definition of the sixteen I/O lines in two 8 bit bytes, and
the power-up states in two 8 bit bytes. (shown in bold face)
ASCII Example:!0RCUAP@
Dec. Example: !0RC<85><65><80><64>
Hex. Example: !0RC<55><41><50><40>
Bin. Example: !0RC<01010101><01000001><01010000><01000000>
Description: the first byte (MSB of I/O definitions) - I/O lines #14, 12,
10, & 8 are outputs and I/O lines #15, 13, 11, & 9 are inputs; the
second byte (LSB of I/O definitions) - I/O lines #6, & 0 are outputs
and I/O lines #7, 5, 4, 3, 2, & 1 are inputs; the third byte (MSB of
output power-up states) - output lines #14, & 12 HIGH and output
lines #10, & 8 LOW at power-up; the fourth byte (LSB of output
power-up states) - output line #6 HIGH and output line #0 LOW at
power-up.
232SDD16-1005 Manual
15
16
232SDD16-1005 Manual
B&B Electronics -- PO Box 1040 -- Ottawa, IL 61350
PH (815) 433-5100 -- FAX (815) 433-5104
B&B Electronics -- PO Box 1040 -- Ottawa, IL 61350
PH (815) 433-5100 -- FAX (815) 433-5104
Chapter 4 - I/O Interfacing
This chapter will explain "HIGH" and "LOW" states and show
some general examples of how to interface to the I/O lines. Caution
must be taken not to exceed 232SDD16 specifications listed in
Chapter 1 when interfacing to external devices. Failure to stay
within these specifications could result in damage to the unit and will
void warranty.
Digital Inputs
As stated earlier, digital input lines are CMOS/TTL compatible
and can only handle voltages from 0Vdc to +5Vdc.
Figure 4.2 - Solid State Input
Digital inputs are used to sense a HIGH or a LOW state. This
can be accomplished via switch closures, contact closures, or a
solid state digital signal. When an I/O line, defined as an input,
senses a voltage level above +2.0Vdc it will be considered "HIGH"
and its input state will be read as a "1". Conversely, when an input
senses a voltage level below +1.0Vdc it will be considered "LOW"
and its input state will be read as a "0".
Inputs can also be used to sense AC voltages by using
mechanical or solid state relays. Solid state relays are available
from many manufacturers.
Figures 4.1 - 4.4 show examples of some typical input interfaces.
Figure 4.3 - Isolated Mechanical Input
Figure 4.1 - Switch Input
232SDD16-1005 Manual
17
18
232SDD16-1005 Manual
B&B Electronics -- PO Box 1040 -- Ottawa, IL 61350
PH (815) 433-5100 -- FAX (815) 433-5104
B&B Electronics -- PO Box 1040 -- Ottawa, IL 61350
PH (815) 433-5100 -- FAX (815) 433-5104
Figure 4.4 - Isolated Solid State Input
Digital Outputs
Figure 4.6 - Isolated Solid State Output
Digital outputs are used to turn external devices on or off. Digital
outputs are CMOS/TTL compatible and operate between 0Vdc and
+5Vdc. Outputs can be used to control solid state output modules,
CMOS and TTL logic circuits. Caution must be taken not to exceed
the power capability of the outputs. Refer to the output
specifications in Chapter 1.
Setting an output line to a "1" forces the output HIGH, and setting
an output line to a "0" forces the output LOW.
Figures 4.5 - 4.6 show examples of some typical output
interfaces.
Figure 4.5 - Solid State Output
232SDD16-1005 Manual
19
20
232SDD16-1005 Manual
B&B Electronics -- PO Box 1040 -- Ottawa, IL 61350
PH (815) 433-5100 -- FAX (815) 433-5104
B&B Electronics -- PO Box 1040 -- Ottawa, IL 61350
PH (815) 433-5100 -- FAX (815) 433-5104
Example 5.1 - Determining the status of I/O lines #2 & #10
mask = &H4
Chapter 5 - Software
Cmnd$ = "!0RD"
PRINT #1, Cmnd$;
MSIO$ = INPUT$(1,#1)
LSIO$ = INPUT$(1,#1)
MSIO = ASC(MSIO$)
LSIO = ASC(LSIO$)
This chapter will be divided into two sections. The first section
covers programming techniques for constructing a command string,
receiving data and manipulating data in QuickBASIC. The second
section discusses how to install and run the demonstration program
on an IBM PC or compatible.
MSstatus = MSIO AND mask
LSstatus = LSIO AND mask
Programming Techniques
If LSstatus equals zero then I/O line #2 is LOW. If LSstatus is not
equal to zero then I/O line #2 is HIGH. If MSstatus equals zero then
I/O line #10 is LOW. If MSstatus is not equal to zero then I/O line
#10 is HIGH.
This section shows steps and examples of programming the
232SDD16 in QuickBasic. If you are programming in another
language, this section can be helpful as a guideline for programming
the 232SDD16.
Table 5.1 - Digital I/O Mask Values
Read I/O States Command
Step 1 - Constructing the command string:
Cmnd$ = "!0RD"
Mask Values
I/O Line #
Hexadecimal
Decimal
Step 2 - Transmitting the command string:
PRINT #1, Cmnd$;
Step 3 - Receiving the data:
MSIO$ = INPUT$(1,#1)
LSIO$ = INPUT$(1,#1)
Step 4 - Manipulating the data:
MSIO = ASC(MSIO$)
LSIO = ASC(LSIO$)
Step 5 - Determining an I/O's status:
MSstatus = MSIO AND mask
0 & 8
1 & 9
1H
2H
4H
1
2
4
2 & 10
3 & 11
4 & 12
5 & 13
6 & 14
7 & 15
8H
8
10H
20H
40H
80H
16
32
64
128
Read Configuration Command
Step 1 - Constructing the command string:
Cmnd$ = "!0RC"
Step 2 - Transmitting the command string:
PRINT #1, Cmnd$;
Step 3 - Receiving the data:
MSdefs$ = INPUT$(1,#1)
LSdefs$ = INPUT$(1,#1)
LSstatus = LSIO AND mask
By "ANDing" the value of MSIO or LSIO with the appropriate
mask of an I/O line, the status of the I/O line can be determined.
If the status is equal to zero the I/O line is LOW. If the status is
not equal to zero the I/O line is HIGH. Table 5.1 shows the mask
values for each I/O line.
Step 6 - Repeat Step 5 until the status of each I/O line has been
determined.
MSpups$ = INPUT$(1,#1)
LSpups$ = INPUT$(1,#1)
Step 4 - Manipulating the data:
MSdefs = ASC(MSdefs$)
LSdefs = ASC(LSdefs$)
MSpups = ASC(MSpups$)
LSpups = ASC(LSpups$)
232SDD16-1005 Manual
21
22
232SDD16-1005 Manual
B&B Electronics -- PO Box 1040 -- Ottawa, IL 61350
PH (815) 433-5100 -- FAX (815) 433-5104
B&B Electronics -- PO Box 1040 -- Ottawa, IL 61350
PH (815) 433-5100 -- FAX (815) 433-5104
Step 5 - Determining the I/O line definitions:
MSdefs = MSdefs AND mask
If LSdefs equals zero then I/O line #2 is an INPUT and if not equal
to zero then I/O line #2 is an OUTPUT. If MSdefs equals zero then
I/O line #10 is an INPUT and if not equal to zero then I/O line #10 is
an OUTPUT. If LSpups equals zero then Output line #2's power-up
state is LOW and if not equal to zero then Output line #2's power-up
state is HIGH. If MSpups equals zero then Output line #10's power-
up state is LOW and if not equal to zero then Output line #10's
power-up state is HIGH.
LSdefs = LSdefs AND mask
By "ANDing" the value of MSdefs or LSdefs with the appropriate
mask of an I/O line, the I/O line definition can be determined. If
the status is equal to zero the I/O line is an INPUT. If the status is
not equal to zero the I/O line is an OUTPUT. Table 5.1 shows
the mask values for each I/O line.
Step 6 - Repeat Step 5 until the status of each I/O line has been
determined.
Set Output States Command
Step 7 - Determining an OUTPUT's Power-up state:
MSpups = MSpups AND mask
Step 1a - Construct the command string:
Set appropriate outputs HIGH
LSpups = LSpups AND mask
MSstates = MSstates OR mask
By "ANDing" the value of MSpups or LSpups with the
appropriate mask of an Output line, the Output line definition can
be determined. If the status is equal to zero the Output power-up
state will be LOW. If the status is not equal to zero the Output
power-up state will be HIGH. Table 5.1 shows the mask values
for each I/O line.
LSstates = LSstates OR mask
By "ORing" the current states with the appropriate mask of a
digital output line, the output's bit will be set to a "1" (HIGH).
Step 1b - Set appropriate outputs LOW
MSstates = MSstates AND (NOT(mask))
LSstates = LSstates AND (NOT(mask))
By "ANDing" the current states with the complement of the
appropriate mask of a digital output line, the output's bit will be
set to a "0" (LOW).
Step 8 - Repeat Step 7 until the power-up state of each Output line
has been determined.
Example 5.2 - Determining the definition and power-up state of I/O
lines #2 & #10
Step 1c - Completing the command string:
Cmnd$ = "!0SO" + CHR$(MSstates) + CHR$(LSstates)
Step 2 - Transmitting the command string:
Print #1, Cmnd$;
mask = &H4
Cmnd$ = "!0RC"
PRINT #1, Cmnd$;
MSdefs$ = INPUT$(1,#1)
LSdefs$ = INPUT$(1,#1)
MSpups$ = INPUT$(1,#1)
LSpups$ = INPUT$(1,#1)
MSdefs = ASC(MSdefs$)
LSdefs = ASC(LSdefs$)
MSpups = ASC(MSpups$)
LSpups = ASC(LSpups$)
MSdefs = MSdefs AND mask
LSdefs = LSdefs AND mask
MSpups = MSpups AND mask
LSpups = LSpups AND mask
Example 5.3 - Set Output #0 HIGH and Output #14 LOW.
'Set bit 0 of LSstates to make Output #0 HIGH.
LSstates = LSstates OR &H1
'Clear bit 4 of MSstates to make Output #14 LOW.
MSstates = MSstates AND (NOT(&H40))
Cmnd$ = "!0SO" + CHR$(MSstates) + CHR$(LSstates)
PRINT #1, Cmnd$;
MSIO$ = INPUT$(1,#1)
Output #0 will be set HIGH and output #14 will be set LOW. All
other output setting will not be changed.
232SDD16-1005 Manual
23
24
232SDD16-1005 Manual
B&B Electronics -- PO Box 1040 -- Ottawa, IL 61350
PH (815) 433-5100 -- FAX (815) 433-5104
B&B Electronics -- PO Box 1040 -- Ottawa, IL 61350
PH (815) 433-5100 -- FAX (815) 433-5104
Define I/O Lines Command
Step 1a - Construct the command string:
Define an I/O line as Output
Step 1b - Set appropriate outputs power-up states LOW
MSpups = MSpups AND (NOT(mask))
LSpups = LSpups AND (NOT(mask))
MSdefs = MSdefs OR mask
LSdefs = LSdefs OR mask
By "ORing" the current definitions with the appropriate I/O line
mask, the I/O line's data bit will be set to a "1" (HIGH) and the I/O
line will be defined as an Output.
By "ANDing" the current power-up states with the complement of
the appropriate mask of a digital output line, the power-up state's
data bit will be set to a "0" (LOW).
Step 1c - Completing the command string:
Cmnd$ = "!0SS" + CHR$(MSpups) + CHR$(LSpups)
Step 2 - Transmitting the command string:
Print #1, Cmnd$;
Step 1b - Define an I/O line as an Input
MSdefs = MSdefs AND (NOT(mask))
LSdefs = LSdefs AND (NOT(mask))
By "ANDing" the current definitions with the complement of the
appropriate I/O line mask the I/O line's data bit will be set to a "0"
(LOW) and the I/O line will be defined as an Input.
Step 1c - Completing the command string:
Cmnd$ = "!0SD" + CHR$(MSdefs) + CHR$(LSdefs)
Step 2 - Transmitting the command string:
Print #1, Cmnd$;
Example 5.5 - Set Output line #5's power-up state HIGH and Output
line #13's power-up state LOW.
'Set bit 0 of LSpups to make Output #5's power-up state HIGH.
LSpups = LSpups OR &H20
'Clear bit 4 of MSpups to make Output #13's power-up state LOW.
MSpups = MSpups AND (NOT(&H20))
Cmnd$ = "!0SS" + CHR$(MSpups) + CHR$(LSpups)
Print #1, Cmnd$;
Example 5.4 - Define I/O line #7 as an Output (HIGH) and I/O line #8
as an input (LOW).
'Set bit 7 of LSdefs to make I/O line #7 an Output (HIGH).
LSdefs = LSdefs OR &H80
MSIO$ = INPUT$(1,#1)
Output #5's power-up state will be set HIGH and output #13's
power-up state will be set LOW. All other output power-up states
will not be changed.
'Clear bit 0 of MSdefs to make I/O line #8 an Input (LOW).
MSdefs = MSdefs AND (NOT(&H1))
Cmnd$ = "!0SD" + CHR$(MSdefs) + CHR$(LSdefs)
Print #1, Cmnd$;
MSIO$ = INPUT$(1,#1)
I/O #7 will be defined as an Output (HIGH) and I/O line #8 will be
defined as an Input (LOW). All other I/O definitions will not be
changed.
Set Power-up States Command
Step 1a - Construct the command string:
Set appropriate outputs power-up states HIGH
MSpups = MSpups OR mask
LSpups = LSpups OR mask
By "ORing" the current power-up states with the appropriate
mask of a digital output line, the power-up state's data bit will be
set to a "1" (HIGH).
232SDD16-1005 Manual
25
26
232SDD16-1005 Manual
B&B Electronics -- PO Box 1040 -- Ottawa, IL 61350
PH (815) 433-5100 -- FAX (815) 433-5104
B&B Electronics -- PO Box 1040 -- Ottawa, IL 61350
PH (815) 433-5100 -- FAX (815) 433-5104
Demonstration Program
The 232SDD16 Demonstration (SDD16) Program (IBM PC or
Compatible) provides the user with examples of how to receive and
transmit commands to the 232SDD16. The SDD16.EXE is the
executable program, the SDD16.BAS file is the source code in
QuickBASIC. The source code provides an illustration of how to
send and receive commands from the 232SDD16.
NOTE: This is a demonstration program only and not intended for
system applications.
Running Demonstration Program
Before you can run the demonstration program you must run the
install program in the Hard Drive Installation section. If you are
running Windows, exit Windows to DOS.
To run the program follow these steps from the DOS prompt:
1.
2.
Type CD \232SDD16 and press the <Enter> key.
Type SDD16 and press the <Enter> key.
232SDD16-1005 Manual
27
28
232SDD16-1005 Manual
B&B Electronics -- PO Box 1040 -- Ottawa, IL 61350
PH (815) 433-5100 -- FAX (815) 433-5104
B&B Electronics -- PO Box 1040 -- Ottawa, IL 61350
PH (815) 433-5100 -- FAX (815) 433-5104
DECIMAL to HEX to ASCII CONVERSION TABLE
DEC HEX ASCII KEY DEC HEX ASCII DEC HEX ASCII DEC HEX ASCII
0
1
NUL ctrl @ 32
20
21
22
23
24
25
26
27
28
29
2A
2B
2C
2D
2E
2F
30
31
32
33
34
35
36
37
38
39
3A
3B
3C
3D
3E
3F
SP
!
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
40
41
42
43
44
45
46
47
48
49
4A
4B
4C
4D
4E
4F
50
51
52
53
54
55
56
57
58
59
5A
5B
5C
5D
5E
5F
@
A
B
C
D
E
F
G
H
I
96
60
61
62
63
64
65
66
67
68
69
6A
6B
6C
6D
6E
6F
70
71
72
73
74
75
76
77
78
79
7A
7B
7C
7D
7E
7F
`
a
b
c
d
e
f
0
1
SOH
STX
ETX
EOT
ENQ
ACK
BEL
BS
ctrl A
ctrl B
ctrl C
ctrl D
ctrl E
ctrl F
ctrl G
ctrl H
ctrl I
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
97
2
2
“
98
3
3
#
$
%
&
'
99
4
4
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
5
5
6
6
7
7
g
h
i
8
8
(
9
9
HT
)
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
A
LF
ctrl J
ctrl K
ctrl L
ctrl M
ctrl N
ctrl O
ctrl P
ctrl Q
ctrl R
ctrl S
ctrl T
ctrl U
ctrl V
*
J
j
B
VT
+
,
K
L
k
l
C
FF
D
CR
-
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
[
m
n
o
p
q
r
E
SO
.
F
SI
/
10
11
12
13
14
15
16
17
18
19
1A
1B
1C
1D
1E
1F
DLE
DC1
DC2
DC3
DC4
NAK
SYN
0
1
2
3
4
5
6
7
8
9
:
APPENDIX A
ASCII Character Codes
s
t
u
v
w
x
y
z
{
ETB ctrl W
CAN
EM
ctrl X
ctrl Y
ctrl Z
ctrl [
SUB
ESC
FS
;
ctrl \
<
=
>
?
\
|
GS
ctrl ]
]
}
RS
ctrl ^
ctrl _
^
~
DEL
US
_
232SDD16-1005 Manual
Appendix A
B&B Electronics -- PO Box 1040 -- Ottawa, IL 61350
PH (815) 433-5100 -- FAX (815) 433-5104
A-1
A-2
Appendix A
232SDD16-1005 Manual
B&B Electronics -- PO Box 1040 -- Ottawa, IL 61350
PH (815) 433-5100 -- FAX (815) 433-5104
The decimal (base 10) numbering system represents each
position in successive powers of 10, with each decimal symbol
having a value from 0 to 9. The hexadecimal (base 16) numbering
system represents each position in successive powers of 16 with
each hex symbol having a value of 0 to 15. Since each hex position
must have a single symbol, the symbols "A" through "F" are
assigned to values 10 through 15 respectively. Refer to Table 1.
The information and examples to follow will explain how to convert
from a decimal number to a hexadecimal number and vice versa.
Table 1.
Decimal
Hexadecimal
Value
Symbol
0
1
0
1
2
2
3
3
4
4
5
5
6
6
7
7
8
9
8
9
APPENDIX B
Hexadecimal/Decimal Conversions
10
11
12
13
14
15
A
B
C
D
E
F
232SDD16-1005 Manual
Appendix B
B&B Electronics -- PO Box 1040 -- Ottawa, IL 61350
PH (815) 433-5100 -- FAX (815) 433-5104
B-1
B-2
Appendix B
232SDD16-1005 Manual
B&B Electronics -- PO Box 1040 -- Ottawa, IL 61350
PH (815) 433-5100 -- FAX (815) 433-5104
Hexadecimal to Decimal Conversion:
Decimal = (1st Hex digit x 4096) +
(2nd Hex digit x 256) +
(3rd Hex digit x 16) +
(4th Hex digit)
Each "Hex digit" is the decimal equivalent value of the
hexadecimal symbol.
Example: Convert 10FC hexadecimal to decimal.
1
0
15
12
x
x
x
x
4096
256
16
=
=
=
=
4096
0
240
12
1
4348
10FC hex equals 4348 decimal.
Decimal to Hexadecimal Conversion:
Example: Convert 4348 decimal to hexadecimal.
4096 4348
4096
=
=
=
=
1
0
=
=
=
=
1
0
(1st Hex digit)
(2nd Hex digit)
(3rd Hex digit)
(4th Hex digit)
256
16
1
252
0
252
240
12
12
0
15
12
F
C
4348 decimal equals 10FC hexadecimal.
232SDD16-1005 Manual
Appendix B
B&B Electronics -- PO Box 1040 -- Ottawa, IL 61350
PH (815) 433-5100 -- FAX (815) 433-5104
B-3
B-4
Appendix B
232SDD16-1005 Manual
B&B Electronics -- PO Box 1040 -- Ottawa, IL 61350
PH (815) 433-5100 -- FAX (815) 433-5104
DTB25
The DTB25 connects to the SDD16 models to provide easy
access to the available I/O lines. The DTB25 plugs directly into the
SDD16's DB25S I/O Port connector. Each of the twenty-five pins on
the connector is brought out to a terminal block. Refer to Table C.1.
Dimensions: 0.5" x 2.1" x 4.3". An enclosure for the DTB25 is
available.
APPENDIX C
Interface Modules for SDD16 Models
Figure C.1 - DTB25 Outline Drawing
Before connecting any external devices to the DTB25 make sure
the SDD16 module has been properly configured (I/O lines defined,
power-up states set). This will avoid possible damage to the module
and to the external devices. Make sure not to exceed the voltage
and current limits of the SDD16 module, failure to do so could result
in damage to the module and will void the warranty. Refer to the
Specification Section of this Manual.
232SDD16-1005 Manual
Appendix C
C-1
C-2
Appendix C
232SDD16-1005 Manual
B&B Electronics -- PO Box 1040 -- Ottawa, IL 61350
PH (815) 433-5100 -- FAX (815) 433-5104
B&B Electronics -- PO Box 1040 -- Ottawa, IL 61350
PH (815) 433-5100 -- FAX (815) 433-5104
Table C.1 - DTB25 Connections
DBM16
DB-25P
Pin #
T.B. DB-25P
T.B.
#
The DBM16 module provides buffering and increased power
Function
Unused.
#
Pin #
Function
I/O #15
handling for all the sixteen I/O lines of the SDD16 models. Each of
the I/O lines can be programmed as an input or as an output by
setting a jumper on the board. The DBM16
plugs directly into the SDD16's DB25S I/O Port connector.
Terminal blocks are provided for all I/O line, power, and ground
connections. Refer to Table C.2. An enclosure for the DBM16 is
available.
1
2
3
4
5
6
7
8
9
10
11
12
13
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
14
15
16
17
18
19
20
21
22
23
24
25
Unused.
Unused.
Unused.
Unused.
Unused.
Ground
+12Vdc Input
I/O #0
I/O #1
I/O #2
I/O #3
I/O #4
I/O #14
I/O #13
I/O #12
I/O #11
I/O #10
Unused.
I/O #9
I/O #8
I/O #7
I/O #6
I/O #5
Table C.2 - DBM16 I/O Connections
T.B.1
Label
T.B.2
Label
Function
Function
I/O7 I/O Line #7
GND Ground
I/O8 I/O Line #8
GND Ground
I/O6 I/O Line #6
I/O5 I/O Line #5
GND Ground
I/O9 I/O Line #9
I/O10 I/O Line #10
GND Ground
I/O4 I/O LIne #4
I/O3 I/O Line #3
GND Ground
I/O11 I/O LIne #11
I/O12 I/O Line #12
GND Ground
I/O2 I/O LIne #2
I/O1 I/O Line #1
GND Ground
I/O13 I/O LIne #13
I/O14 I/O Line #14
GND Ground
I/O0 I/O LIne #0
GND Ground
I/O15 I/O LIne #15
+12 +12Vdc Input
ITS Inductive-load
Transient
Suppression
232SDD16-1005 Manual
Appendix C
C-3
C-4
Appendix C
232SDD16-1005 Manual
B&B Electronics -- PO Box 1040 -- Ottawa, IL 61350
PH (815) 433-5100 -- FAX (815) 433-5104
B&B Electronics -- PO Box 1040 -- Ottawa, IL 61350
PH (815) 433-5100 -- FAX (815) 433-5104
DBM16 Interfacing
This section will show some general examples of how to
interface the DBM16 I/O lines to external devices. Caution must be
taken not to exceed the DBM16 specifications, failure to do so could
result in damage to the DBM16 and will void the warranty.
Before connecting the DBM16 to the SDD16 module and
connecting any external device to the DBM16 determine which I/O
lines on the SDD16 module are inputs and which are outputs. Once
the inputs and outputs are known, set the jumpers on the DBM16
accordingly. Refer to Figure C.2.
Figure C.3 - Switch Input
Figure C.2 - DBM16 Outline Drawing
Figure C.4 - Solid State Input
Inputs
Digital inputs are used to sense "HIGH" and "LOW" states based
on voltage levels. This is accomplished via switch closures, contact
closures or a solid state digital signals. Each DBM16 input is pulled
up through a resistor and will be read as a logic "1" (HIGH) by the
SDD16 module. When an input on the DBM16 is grounded (below
+1.5Vdc), a logic "0" (LOW) will be read by the SDD16 module.
Figures C.3 - C.6 show examples of some typical input interfaces.
Figure C.5 - Isolated Mechanical Input
232SDD16-1005 Manual
Appendix C
C-5
C-6
Appendix C
232SDD16-1005 Manual
B&B Electronics -- PO Box 1040 -- Ottawa, IL 61350
PH (815) 433-5100 -- FAX (815) 433-5104
B&B Electronics -- PO Box 1040 -- Ottawa, IL 61350
PH (815) 433-5100 -- FAX (815) 433-5104
Figure C.6 - Isolated Solid State Input
Figure C.8 - Isolated Mechanical Output
Outputs
Digital outputs are used to turn "ON" or turn "OFF" external
devices. Outputs can be used to control solid state output modules,
logic circuits, and relays. Caution must be taken not to exceed the
power capability of the outputs. Refer to the DBM16 output
specifications.
Setting the SDD16 module's output line to a "1" turns "ON" the
DBM16's output line. Setting the SDD16 module's output line to a
"0" turns "OFF" the DBM16's output driver. The DBM16 outputs are
open collector current sinking drivers. Figures C.7 - C.9 show
examples of some typical output interfaces.
Figure C.9 - Isolated Solid State Output
Figure C.7 - Solid State Output
232SDD16-1005 Manual
Appendix C
C-7
C-8
Appendix C
232SDD16-1005 Manual
B&B Electronics -- PO Box 1040 -- Ottawa, IL 61350
PH (815) 433-5100 -- FAX (815) 433-5104
B&B Electronics -- PO Box 1040 -- Ottawa, IL 61350
PH (815) 433-5100 -- FAX (815) 433-5104
DBM16 Specifications
I/O Lines
Total:
16 (Factory default - set to inputs)
Inputs
Voltage range:
Low Voltage:
High Voltage:
Internal pull-up current:
Outputs
0Vdc to +50Vdc
0Vdc to +1.5Vdc
+2.5Vdc to +50Vdc
0.5 ma
Output Voltage:
Output current:
+50Vdc max.
350 ma max. - only 1 output on
100 ma max. - all outputs on
50 micro amp max.
Output leakage current:
Output saturation voltage: 1.1Vdc max. @ 100ma
CAUTION: Total output power cannot exceed 2 watts for I/O's #0-
7 and 2 watts for I/O #8-15 @ 25 degrees C.
Power Supply
Input Voltage:
8Vdc to 16Vdc @ 10milliamps
(Doesn't include the power
consumption of external devices.)
Terminal Blocks
Connections:
Size
0.5" x 2.1" x 4.5"
Figure C.10 - DBM16 Schematic
232SDD16-1005 Manual
Appendix C
C-9
C-10
Appendix C
232SDD16-1005 Manual
B&B Electronics -- PO Box 1040 -- Ottawa, IL 61350
PH (815) 433-5100 -- FAX (815) 433-5104
B&B Electronics -- PO Box 1040 -- Ottawa, IL 61350
PH (815) 433-5100 -- FAX (815) 433-5104
232SDD16-1005 Manual
Appendix C
C-11
B&B Electronics -- PO Box 1040 -- Ottawa, IL 61350
PH (815) 433-5100 -- FAX (815) 433-5104
With serial communications in a laboratory environment, the
possibility of a communication error occurring is minimal. However,
in a harsh or an industrial environment the possibility increases. A
communication error occurs when a bit transmitted as a “1” is
received as a “0” or vice versa. If the 232SDD16 receives a error in
one or more of the first four command characters (“!0xx”), the unit
will not execute the command. However, if the 232SDD16 receives
an communication error on a data byte (I/O byte for Read Digital
command or state byte for Set Output State command), the
command will be executed since the unit has no way of knowing that
there was an error.
To provide the 232SDD16 with a way of detecting errors in the
data fields, an additional set of commands can be used. This set of
commands begins with the “#” (23h) character, instead of the “!”
(21h) character. Refer to Table D-1. With these commands every
data byte that is transmitted or received is followed by it’s
complement. For example: To read I/O lines:
Command syntax:
#0RD
Response syntax:
{I/O msb}{~ I/O msb}{I/O lsb} {~ I/O lsb}
Where “~” is used to indicate the “complement of.” If I/O has a
reading of 1, the following would be received:
Appendix D
Adding Data Field Confirmation
{00}{FF}{01}{FE}
Where FFh is the complement of 0 and FEh is the complement of
1. The complement of number “x” can be calculated in QuickBasic
as follows:
comp = (NOT x) AND &HFF
232SDD16-1005 Manual
Appendix D
B&B Electronics -- PO Box 1040 -- Ottawa, IL 61350
PH (815) 433-5100 -- FAX (815) 433-5104
D-1
D-2
Appendix D
232SDD16-1005 Manual
B&B Electronics -- PO Box 1040 -- Ottawa, IL 61350
PH (815) 433-5100 -- FAX (815) 433-5104
Table D-1 Extended Commands
Function
Command
Response
Read I/O Lines
#0RD
{I/O msb}{~I/O msb}{I/O
lsb}{~I/O lsb}
Set Output Lines
Define I/O Lines
#0SO{I/O
msb}{~I/O
msb}{I/O
lsb}{~I/O lsb}
#0SD{I/O
msb}{~I/O
msb}{I/O
msb}{~I/O msb}
#0SS{I/O
msb}{~I/O
msb}{I/O
no response
no response
no response
Set Power-up
States
lsb}{~I/O lsb}
Read
Configuration
#0RC
{I/O msb}{~I/O msb}{I/O
lsb}{~I/O lsb}{I/O powerup
msb states}{~I/O powerup
msb states}{I/O powerup
lsb states}{~I/O powerup
lsb}
Where “x” is the required data byte and “~” signifies the complement
of the specified byte.
232SDD16-1005 Manual
Appendix D
D-3
D-4
Appendix D
232SDD16-1005 Manual
B&B Electronics -- PO Box 1040 -- Ottawa, IL 61350
PH (815) 433-5100 -- FAX (815) 433-5104
B&B Electronics -- PO Box 1040 -- Ottawa, IL 61350
PH (815) 433-5100 -- FAX (815) 433-5104
|