32 Kanal Digital Eingangskarte fuer RS232

background image

die direkt auf einen lokalen Bus des
Rechners zugreifen, wie zum Beispiel
ISA, EISA, PCI und so weiter.
Bei dem hier beschriebenen Projekt
handelt es sich um eine Karte mit 32
digitalen Eingängen zum Anschluss an
die serielle Schnittstelle (RS232) eines
(IBM-kompatiblen) PCs.

Serielle Verbindung

Die serielle Schnittstelle wird
hauptsächlich für die Verbindung
zwischen zwei Computern oder
zwischen Computer und Peripherie wie
Modem und Maus verwendet. Hinter
diesem Port steckt fast immer ein UART
(Universal Asynchronous Receiver
Transmitter), der als integrierter Baustein
auf der Hauptplatine des PCs zu finden
ist. Die Hauptaufgabe ist Umwandlung
der Daten von serieller nach paralleler
Übertragung und umgekehrt, von
parallel nach seriell.
Ein PC kann mit bis zu vier seriellen Ports
(COM1 to COM4) ausgestattet sein,
wobei jeder Port acht Plätze im I/O-
Speicherbereich belegt (siehe
Tabelle 1).
Die vom UART verwendeten Haupt-
Signalleitungen für das serielle Senden
und Empfangen sind TxD und RxD.
Weitere Signalleitungen (DCD, DSR, RTS,
CTS, DTR, RI) werden für
unterschiedliche Modi der seriellen
Übertragung benötigt.

X-2 - 3/2000 Elektor

EXTRA

——————————————————— PC-P

LUS

Der wesentliche Unterschied zwischen diesem Entwurf und
anderen Datenerfassungskarten am seriellen PC-Port liegt
darin, dass die Karte ohne Mikrocontroller oder UART
für die serielle Kommunikation auskommt. Die Karte
greift stattdessen für die Seriell/Parallel-Wandlung direkt
auf die Register des UARTs im PC zu.

BUFFER #4

INPUTS 24...31

8

MUX #4

COM DRIVER / RECEIVER

8

3

BUFFER #3

INPUTS 16...23

8

COM PORT

3

4

002012 - 11

MUX #3

8

3

BUFFER #2

INPUTS 08...15

8

MUX #2

8

3

BUFFER #1

INPUTS 00...07

8

MUX #1

8

3

1

1

1

1

32-Kanal-Digital-
Eingangskarte
für RS232

Datenerfassung einmal anders

Bild 1. Blockschaltbild der 32-Kanal-D/I-Karte

Die digitale Erfassung und Verarbeitung
von Messdaten durch einen Computer
gibt es im Prinzip schon so lange, wie es
mittlere und kleine Rechner gibt. Erste
Anwendungen gab es schon in den
60er-Jahren, vor allem in der Militär-
und Raumfahrttechnik. Mit der
Erfindung des Mikrocomputers und

dem Siegeszug des PCs hat die digitale
Datenverarbeitung in den gesamten
Bereich der industriellen Mess-, Steuer-
und Regeltechnik Einzug gehalten. Für
die Verbindung zwischen dem Rechner
und der Außenwelt sorgen dabei
spezielle Interfacekarten und Module.
Besonders verbreitet sind dabei Karten,

Spezifikationen:

Anzahl der Eingänge:

32

Art der Eingänge:

TTL kompatibel

(”0” = 0 V, ”1” = 5 V)

Ausgang:

RS232 (für seriellen PC-Port)

Kommunikation:

Direct-access auf

UART-Register

Power Supply:

9 -15 V Gleichspannung

Entwurf von George Vastianos

background image

Obwohl einige dieser zusätzlichen
Leitungen als Eingänge und andere als
Ausgänge arbeiten, lässt sich jede
Leitung (mit Ausnahme von RxD) durch
ein Bit des UART-Registers steuern.
Tabelle 2 gibt eine Übersicht über die
Pinbelegung der Schnittstelle und die
I/O-Adressen.
Die an der seriellen Schnittstelle
verwendeten Logikpegel (RS232-Pegel)
unterscheiden sich von TTL: Ein logische
1 wird durch eine Spannung von –12V,
eine logische 0 durch +12V dargestellt.

Die Hardware

Im Blockschaltbild der Schaltung (Bild 1)
sind die verfügbaren Eingänge in vier
Gruppen zu je acht Eingängen unterteilt
(00-07, 08-15, 16-23, 24-31), alle sind mit
der Buffer Unit verbunden. Die Ausgänge

der Buffer Unit sind mit der Multiplexers
Unit verbunden, die aus jeder Gruppe
jeweils nur eine Leitung auswählt. Die
vier ausgewählten Leitungen
durchlaufen die COM-
Treiber/Empfänger-Einheit, in der die
Umsetzung von 5-V-Logik auf die RS232-
Pegel erfolgt, so dass die Signale an vier
Pins der seriellen PC-Schnittstelle
angelegt werden können (CTS, DSR, RI,
DCD). Zur Steuerung der Auswahl Signale

durch die Multiplexer Unit werden drei
Ausgänge des seriellen Ports
herangezogen (TXD, DTR, RTS). Über die
COM Driver/Receiver Unit (hier wird von
RS232- auf TTL-Pegel gewandelt)
gelangen die drei Signale an die
Adresseingänge des Multiplexers.

Puffer
Im Schaltplan Bild 2 sind die 32
Eingänge für eine einfachere

PC-P

LUS

——————————————————

Elektor

EXTRA

X-3 - 3/2000

Bild 2. Schaltbild der Puffereinheit.

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

26

27

28

29

30

31

32

33

34

K1

74HC541

IC1

11

12

13

14

15

16

17

18

19

EN

2

3

4

7

8

9

5

6

&

1

74HC541

IC2

11

12

13

14

15

16

17

18

19

EN

2

3

4

7

8

9

5

6

&

1

8x 10k

1

2

3

4

5

6

7

8

9

R1

5V

8x 10k

1

2

3

4

5

6

7

8

9

R2

5V

CH0

CH1

CH2

CH3

CH4

CH5

CH6

CH7

CH8

CH9

CH10

CH11

CH12

CH13

CH14

CH15

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

26

27

28

29

30

31

32

33

34

K2

8x 10k

1

2

3

4

5

6

7

8

9

R4

8x 10k

1

2

3

4

5

6

7

8

9

R3

74HC541

IC3

11

12

13

14

15

16

17

18

19

EN

2

3

4

7

8

9

5

6

&

1

74HC541

IC4

11

12

13

14

15

16

17

18

19

EN

2

3

4

7

8

9

5

6

&

1

CH16

CH17

CH18

CH19

CH20

CH21

CH22

CH23

CH24

CH25

CH26

CH27

CH28

CH29

CH30

CH31

002012 - 12

5V

5V

IC1

20

10

C1

100n

5V

IC2

20

10

C2

100n

5V

IC3

20

10

C3

100n

IC4

20

10

C4

100n

Tabelle 1.

Transmit/Receive Buffer

3F8h

2F8h

3E8h

2E8h

Interrupt Enable Register

3F9h

2F9h

3E9h

2E9h

Interrupt Identification Register

3FAh

2FAh

3EAh

2EAh

Line Control Register

3FBh

2FBh

3EBh

2EBh

Modem Control Register

3FCh

2FCh

3ECh

2ECh

Line Status Register

3FDh

2FDh

3EDh

2EDh

Modem Status Register

3FEh

2FEh

3EEh

2Eeh

Tabelle 2.

Pin-Name

Pin #

Pin #

COM1

COM2

COM3

COM4

Bit

I/O

25-Pin Konnector

9-Pin Konnector

TxD

2

3

3FBh

2FBh

3EBh

2EBh

6

O

DTR

20

4

3FCh

2FCh

3ECh

2ECh

0

O

RTS

4

7

3FCh

2FCh

3ECh

2ECh

1

O

CTS

5

8

3FEh

2FEh

3EEh

2EEh

4

I

DSR

6

6

3FEh

2FEh

3EEh

2EEh

5

I

RI

22

9

3FEh

2FEh

3EEh

2EEh

6

I

DCD

8

1

3FEh

2FEh

3EEh

2EEh

7

I

background image

Gestaltung der Platine in zwei Gruppen
zu 16 aufgeteilt, die über Steckverbin-
der K1 und K2 angeschlossen werden.
Die Zuordnung der Anschlüsse ist in
Tabelle 3 angegeben.
Alle Eingänge sind mit Pull-up-
Widerständen beschaltet R1-R4 (10-k

Ω-

Arrays), damit auch offene Eingänge
auf definiertem Pegel liegen. Für die
Pufferung sorgen IC1-IC4 (74HC541).
Die vier Kondensatoren C1-C4 (100 nF)
dienen als Entkoppelkondensatoren.
Die Steuereingänge (Output Enable,
Pin 1 und 19) der ICs 74HC541 liegen
an Masse, so dass die Puffer
kontinuierlich arbeiten.

Multiplexer
Wie Bild

3

zeigt, bestehen die

Multiplexer aus vier 74HC151s (IC5-IC8)
mit vier 100-nF-Kondensatoren (C5-C8)
zur Entkopplung. Der Output-Enable-
Steuereingang (Pin 7) eines jeden
74HC151 liegt an Masse, so dass auch
die Multiplexer kontinuierlich arbeiten.
Die A-, B-, und C-Adresseingänge aller
74HC151 sind miteinander verbunden,
um alle 32 Eingänge selektieren zu
können.

COM-Treiber/Empfänger
Dieser Schaltungsteil enthält mit IC10
(7805) auch einen Spannungsregler, so
dass die Karte mit einer unstabilisierten
Spannung versorgt werden kann,
wobei D1 für einen Verpolschutz sorgt.
In der Schaltung in Bild 4 ist IC9
(MAX237) der RS232-Sende-Empfangs-
baustein, der über drei Kanäle zur
Umwandlung von RS232- nach TTL-
Pegel und 5 Kanäle zur TTL- nach
RS232-Konversion. Die Erzeugung der
Spannungen für die RS232-Pegel
erfolgt durch Spannungsverdopplung
mit Hilfe von fünf Kondensatoren (C9-
C13: 1

µ/35V).

Der MAX237 beinhaltet für jeden Kanal
einen Inverter. Da aber die vier
invertierten Ausgänge der vier
74HC151 verwendet werden, ergibt
sich eine zweifache Invertierung und
damit keine Invertierung.

Die Steuersoftware

Das Programm für die Kommunikation
mit der Karte wurde in QBASIC
geschrieben. Diese Kommunikations-
routine CARD32DI ist im Listing 1
angegeben. Beim Aufruf der Routine
(von jedem in Qbasic geschriebenen
Programm aus) ist die folgende Syntax
einzuhalten:

CALL CARD32DI (COMADDRESS,
CHANNEL (), DATA0, DATA1,
DATA2, DATA3)

X-4 - 3/2000 Elektor

EXTRA

——————————————————— PC-P

LUS

C5

100n

C7

100n

CH0

74HC151

IC5

MUX

11

10

12

13

14

15

EN

16

7

3

2

1

6

5

9

4

3

2

1

0

2

0

7

6

5

4

G

0
7

8

74HC151

IC7

MUX

11

10

12

13

14

15

EN

16

7

3

2

1

6

5

9

4

3

2

1

0

2

0

7

6

5

4

G

0
7

8

C6

100n

C8

100n

74HC151

IC6

MUX

11

10

12

13

14

15

EN

16

7

3

2

1

6

5

9

4

3

2

1

0

2

0

7

6

5

4

G

0
7

8

74HC151

IC8

MUX

11

10

12

13

14

15

EN

16

7

3

2

1

6

5

9

4

3

2

1

0

2

0

7

6

5

4

G

0
7

8

002012 - 13

CH1

CH2

CH3

CH4

CH5

CH6

CH7

CH16

CH17

CH18

CH19

CH20

CH21

CH22

CH23

CH8

CH9

CH10

CH11

CH12

CH13

CH14

CH15

CH24

CH25

CH26

CH27

CH28

CH29

CH31

CH30

D0

D1

D2

D3

A0

A1

A2

5V

5V

5V

5V

MAX237

R1OUT

R2OUT

T1OUT

T2OUT

R3OUT

T4OUT

T3OUT

T5OUT

IC1

T1IN

T2IN

R1IN

R2IN

T3IN

T4IN

T5IN

R3IN

C1–

C1+

C2+

C2–

12

10

V+

V-

23

22

13

14

11

15

17

18

19

21

16

24

20

7

5

6

4

2

8

9

3

1

C9

C10

C12

C11

C13

K3

1

2

3

4

5

6

7

8

9

D0

D1

D2

D3

A0

A1

A2

5V

LM7805CT

IC10

C14

100n

C15

330n

K4

D1

1N4001

C9 ....C13 = 1µ / 35V

5V

002012 - 14

Bild 3. Schaltung des Multiplexers.

Bild 4. Schaltbild der COM-Treiber/Empfänger-Einheit und der Stromversorgung.

background image

Darin sind:

COMADDRESS:

Integer-Variable,

welche (vor dem Aufruf) die
Basisadresse des seriellen Ports
enthalten müssen. Zulässige Werte
dieser Variablen sind &H3F8 (für COM1),
&H2F8 (für COM2), &H3E8 (für COM3),
&H2E8 (für COM4).

CHANNEL (): Matrix-Integer-Variable (mit
Pointern von 0 to 31), die (nach dem
Aufruf) den logischen Zustand eines
jeden Kanals enthält (Werte 1 oder 0).

DATA0, DATA1, DATA2 & DATA3: Integer
Variablen, die (nach Aufruf) den
arithmetischen Wert einer jeden
Gruppe von 8 Kanälen (00-07, 08-15,
16-23 und 24-31). Die logischen
Zustände aller 32 Kanäle ergeben ein
doppeltes Wort (32 bit) mit Ch0 als LSB
und Ch31 als MSB. Dieses doppelte
Wort kann durch die vier Bytes DATA0,
DATA1, DATA2 & DATA3 ausgedrückt
werden, wobei DATA0 das LS-Byte und
DATA3 das MS Byte ist. Diese Variablen
sind in den Fällen zu verwenden, in
denen man die Logikzustände aller
Kanäle in einer Datei speichern
möchte. Diese “Kompression” erlaubt
es, mit nur 4 Bytes (anstelle von 32)
auszukommen. Für den Test der 32-
Kanal-D/I-Karte wurde ein Demonstra-
tionsprogramm entwickelt (siehe Bild 5).
Um die Adresse des seriellen Ports zu
ändern, werden einfach die Tasten
<1> bis <4> verwendet. Das
Verlassen des Programms erfolgt mit
<Esc>.

Bezugsquellen
Der Quellkode der Kommunikations-
routine (CARD32DI.SUB) und das
D e m o n s t r a t i o n s p r o g r a m m
(32DICARD.BAS) mit einer Exe-Version
des Demonstrationsprogramms
(32DICARD.EXE) sind über folgende
Internetadresse erhältlich:
http://members.xoom.com/robofreak/
download/32dicard.htm
die für den tatsächlichen Download auf
die Website des Autors führt:

http://www.robofreak.xs3.com

Der Autor selbst ist via E-Mail zu
erreichen: sebastian@mail.kapatel.gr

(002012-1e)

PC-P

LUS

——————————————————

Elektor

EXTRA

X-5 - 3/2000

Bild 5. Screendump des Demo-

Programms.

REM **************************************
REM * 32 Channel D/I Card *
REM * CARD32DI Communication Routine *
REM * Copyright (c) April 1999 *
REM * by George Vastianos *
REM * email:robofreak@technologist.com *
REM * http://members.xoom.com/robofreak/ *
REM **************************************

SUB CARD32DI (COMADDRESS, CHANNEL(), DATA0, DATA1, DATA2, DATA3)

DATA0 = 0: DATA1 = 0: DATA2 = 0: DATA3 = 0

FOR BIT = 0 TO 7

IF (BIT AND 1) = (INP(COMADDRESS + 4) AND 1) THEN

OUT (COMADDRESS + 4), INP(COMADDRESS + 4) XOR 1

END IF
IF (BIT AND 2) = (INP(COMADDRESS + 4) AND 2) THEN

OUT (COMADDRESS + 4), INP(COMADDRESS + 4) XOR 2

END IF
IF (BIT AND 4) = (INP(COMADDRESS + 3) AND 64) / 16 THEN

OUT (COMADDRESS + 3), INP(COMADDRESS + 3) XOR 64

END IF

OUT COMADDRESS + 1, 0
OUT COMADDRESS + 2, 0

INDATA = INP(COMADDRESS + 6) AND 240

CHANNEL(BIT) = (INDATA AND 16) / 16
CHANNEL(BIT + 8) = (INDATA AND 32) / 32
CHANNEL(BIT + 16) = (INDATA AND 64) / 64
CHANNEL(BIT + 24) = (INDATA AND 128) / 128

DATA0 = DATA0 + CHANNEL(BIT) * 2 ^ BIT
DATA1 = DATA1 + CHANNEL(BIT + 8) * 2 ^ BIT
DATA2 = DATA2 + CHANNEL(BIT + 16) * 2 ^ BIT
DATA3 = DATA3 + CHANNEL(BIT + 24) * 2 ^ BIT

NEXT BIT

END SUB

Tabelle 3.

K1 K2

Kanal

Pin-Nummer

Kanal

Pin-Nummer

00

33

16

33

01

31

17

31

02

29

18

29

03

27

19

27

04

25

20

25

05

23

21

23

06

21

22

21

07

19

23

19

08

15

24

15

09

13

25

13

10

11

26

11

11

9

27

9

12

7

28

7

13

5

29

5

14

3

30

3

15

1

31

1


Wyszukiwarka

Podobne podstrony:
8 Kanal digital in fuer RS232
8 Kanal digital out fuer RS232
PC gesteuerter 32 Kanal Dimmer Luxus Regler fuer ohmsche und induktive Lasten
Model kartonowy Digital Card Model 2001 Nieuport RNAS School 1 32
Model kartonowy Digital Card Model 2002 Spad 7 SPA 124 Lufbery (1 32)
Model kartonowy Digital Card Model 2002 Spad 7 SPA 99 (1 32)
Model kartonowy Digital Card Model 2001 O 1Tummelisa (1 32)
Model kartonowy Digital Card Model 2002 Coanda 1 1 32
Jaki jest schemat kabla Rs232 Null Modem Ferguson Digital Multimedia Technology
Model kartonowy Digital Card Model 2001 Spad 7 10 Sqn Belge (1 32)
Model kartonowy Digital Card Model 2002 Spad 7 SPA 81 (1 32)
Model kartonowy Digital Card Model 2002 Spad 7 23 Sqn RFC (1 32)
AM FM Empfaenger fuer digitales Tuning
Model kartonowy Digital Card Model 2001 Spad VII SPA 65 (1 32)
Model kartonowy Digital Card Model 2000 Spad VII of SPA 48 (1 32)

więcej podobnych podstron