05 / Teil B / Seite 01. 05.002.06. Teil B: Serielle Schnittstellen. Serielle
Schnittstelle RS 232 C / V.24. Serielle Schnittstelle RS 485. 20mA
Stromschnittstelle.
Serielle Datenübertragung Teil B: Daten werden nacheinander (d.h. in Serie) übertragen.
Serielle Schnittstellen
Gemeint ist i. d. R. bitseriell. Serielle Schnittstelle RS 232 C / V.24
Anwendungsbeispiele:
20mA Stromschnittstelle
Verbindung PC - Modem (RS 232 C)
Serielle Schnittstelle RS 485
Infrarotschnittstelle IrDA ISDN Netzwerk über Ethernet Videotext Morsecode 05.005.04
05.002.06
Serielle Datenübertragung Minimalverkabelung
Serielle Datenübertragung Bedeutungsgleiche Normen
Festzulegen: Datenleitung
Wer sendet? Wer empfängt? Wann beginnt eine Übertragung?
Betriebserde
Was ist eine '1'?
RS 232 C
US-amerikanische EIA Norm
V.24
CCITT Norm (heute ITU Norm)
DIN 66020
Deutsche Norm
ISO 2110
Internationale Norm
EIA: Electronics Industries Association CCITT: Comité Consultatif International Télégrafique et Téléphonique ITU: International Telecommunications Union DIN: Deutsche Industrienorm ISO: International Standards Organization
Was ist eine '0'? Bitrate? 05.005.05
05 / Teil B / Seite 01
05.005.06
RS 232 C / V.24 Anschlüsse
RS 232 C / V.24 Ausführung am PC
Es sind zwei Typen gebräuchlich: 25-polig 13
Buchse 1
25 9-polig
Stift / Pin 9-pol 25-pol 1 8 2 3 3 2 4 20 5 7 6 6 7 4 8 5 9 22
Stecker
14
1
13
14
25
Buchse 5 1
Stecker 1 5
9
6
6
9
Signal DCD Empfangsdaten Sendedaten DTR Betriebserde DSR RTS CTS RI 05.005.01
05.005.07
RS 232 C / V.24 Anschlußkabel
RS 232 C / V.24 Grundregeln Datenübertragung Regeln:
25-polig
1.
Während Übertragungspausen hält der Sender die Datenleitung auf logisch '1'.
2.
Der Sender beginnt die Übertragung jedes Zeichens mit einem Startbit (logisch '0').
3.
Der Sender beendet die Übertragung jedes Zeichens mit einer vordefinierten Zahl von Stopbits (logisch '1').
9-polig
05.005.08
05 / Teil B / Seite 02
05.005.09
RS 232 C / V.24 Synchronisation
RS 232 C / V.24 Synchronisation
Beispiele:
Beispiel: Übertragung von zweimal 7 Bit, alle Bits = '0': 1 Rahmen (Frame)
log. '1'
Nutzdaten
log. '0'
Startbit log. '1' log. '0'
Stopbit
log. '0'
1 Rahmen (Frame)
1 Rahmen (Frame)
Nutzdaten
Nutzdaten
Startbit
Stopbit
1. Rahmen
log. '1'
Startbit
0 0 0 0 0 0 0 Startbit Stopbit
2. Rahmen 0 0 0 0 0 0 0 Startbit Stopbit
Stopbit 05.005.11
05.005.10
RS 232 C / V.24 Synchronisation
RS 232 C / V.24 Signalpegel Datenleitung
Beispiel: Übertragung von zweimal 7 Bit, alle Bits = '1':
log. '1'
1. Rahmen 1 1 1 1 1 1 1
Spannung [V]
größer 3V = log. '0'
2. Rahmen 1 1 1 1 1 1 1
12
log. '0' Startbit
Stopbit
Startbit
Stopbit
Das Startbit garantiert, dass der Beginn des 2. Rahmens klar zu erkennen ist.
3 0 -3
Zeit
-12
05.005.12
05 / Teil B / Seite 03
kleiner -3V = log. '1' Anstieg mind. 6 V / ms
undefinierter Bereich 05.005.13
RS 232 C / V.24 Signalpegel Steuerleitungen
RS 232 C / V.24 Bitraten 1 Rahmen (Frame)
Spannung [V]
größer 3V = 'ON' 12 3 0 -3
Startbit
Stopbit
Zeitraster
Zeit
t0 t1 t2 t3 t4 t5 t6 t7 t8 t9 t10
-12 kleiner -3V = 'OFF' undefinierter Bereich
Zeit
Zeit pro Bit = tb = ti - ti-1 [s] = const Bitrate = 1 / tb [Baud] 05.005.15
05.005.14
RS 232 C / V.24 Gebräuchliche Bitraten Bitrate [Baud]
Zeit pro Bit [µs]
Verwendung
300
3333
2.400
416
Modem
9.600
104
Fax
14.400
69
Fax
28.800
34
Modems nach V.34
56.000
18
115.200
9
RS 232 C / V.24 Reihenfolge der Datenbits Regel: Das niederwertigste Bit wird als erstes übertragen.
Akustikkoppler
Beispiel: Übertragen werden soll $58 = 010110002 log. '1' 0 0 0 1 1 0 1 0 Startbit
Modems nach V.90
log. '0' b0 b1 b2 b3 b4 b5 b6 b7 Stopbit
Maximum Standard-PC 05.005.16
05 / Teil B / Seite 04
05.005.17
RS 232 C / V.24 Übertragungsprotokolle
Gerät A: große Datenmenge
Datenleitung
RS 232 C / V.24 XON - XOFF - Protokoll Gerät A: sendet Daten, bis es XOFF empfängt;
Gerät B: kleiner Puffer
Datenleitungen
Gerät B: Sendet XOFF, wenn es eine Pause braucht;
Betriebserde
schnelle Verarbeitung
Betriebserde
langsame Verarbeitung
Gerät B steuert den Datenfluß mit einem Übertragungsprotokoll.
sendet XON, wenn es wieder bereit ist.
pausiert, bis es ein XON empfängt. XON = ASCII-Code $11 XOFF = ASCII-Code $13
X steht für Transmission 05.005.19
05.005.18
RS 232 C / V.24 ETX - ACK - Protokoll Gerät A: sendet ETX und wartet auf ACK; sendet einen Datenblock, danach ein ETX.
Datenleitung
RS 232 C / V.24 Hardware - Handshake Gerät B: antwortet mit ACK, falls es bereit ist;
Betriebserde
ETX = ASCII-Code $03 ACK = ASCII-Code $06
ETX = End of Text ACK = Acknowledge
Prinzip: Gerät A: sendet Daten, solange die Steuerleitung das Signal ON führt.
Datenleitung Steuerleitung 'Bereit' Betriebserde
Gerät B: setzt die Steuerleitung auf OFF, wenn keine Daten angenommen werden können.
Einzelheiten sind den Gerätehandbüchern zu entnehmen! 05.005.20
05 / Teil B / Seite 05
05.005.21
RS 232 C / V.24 Einfache PC-PC-Kopplung
RS 232 C / V.24 Schnittstellenkonfiguration
Nullmodem: Sendedaten Pin 3 Empfangsdaten Pin 2 Betriebserde Pin 5 1. PC
Dos:
Empfangsdaten Pin 2
MODE COMn:baud,parity,databits,stopbits
Sendedaten Pin 3 Betriebserde Pin 5
n:
Schnittstellen-Nr. (1, 2, 3 oder 4)
2. PC
baud:
Baudrate (110 ... 19200)
parity:
Parität (gerade, ungerade, keine, ..)
databits: Datenbits pro Rahmen (7 oder 8) stopbits: Anzahl Stopbits (1 oder 2) 05.005.23
05.005.22
RS 232 C / V.24 Schnittstellenkonfiguration
RS 232 C / V.24 Schnittstellenkonfiguration
Windows: CMD.EXE (Windows NT 4.0): MODE COMm[:] [BAUD=b] [PARITY=p] [DATA=d] [STOP=s] [to=on|off] [xon=on|off] [odsr=on|off] [octs=on|off] [dtr=on|off|hs] [rts=on|off|hs|tg] [idsr=on|off]
m:
Schnittstellen-Nr. (1, 2, 3 oder 4)
BAUD:
Baudrate (110 ... 19200)
PARITY:
Parität (gerade, ungerade, keine, ..)
DATA:
Datenbits pro Rahmen (7 oder 8)
STOP:
Anzahl Stopbits (1 oder 2)
05.005.24
05 / Teil B / Seite 06
05.005.33
RS 232 C / V.24 Schnittstellenkonfiguration
RS 232 C / V.24 Schnittstellenkonfiguration
CMD.EXE (Windows NT 4.0):
CMD.EXE (Windows NT 4.0):
MODE COMm[:] [BAUD=b] [PARITY=p] [DATA=d] [STOP=s] [to=on|off] [xon=on|off] [odsr=on|off] [octs=on|off] [dtr=on|off|hs] [rts=on|off|hs|tg] [idsr=on|off]
MODE COMm[:] [BAUD=b] [PARITY=p] [DATA=d] [STOP=s] [to=on|off] [xon=on|off] [odsr=on|off] [octs=on|off] [dtr=on|off|hs] [rts=on|off|hs|tg] [idsr=on|off]
to:
Zeitüberschreitungen verarbeiten
dtr:
Signal an Pin DTR festlegen
xon:
XON - XOFF - Protokoll benutzen
rts:
Signal an Pin RTS festlegen
odsr:
DSR-Handshake benutzen (beim Senden)
idsr:
DSR-Handshake benutzen (beim Empf.)
octs:
CTS-Handshake benutzen (beim Senden)
Angaben aus der Hilfedatei zu Windows NT 4.0, Stichwort "mode, Befehl" 05.005.35
05.005.34
RS 232 C / V.24 NS 16550A
NS 16550A Direkte Programmierung
Schnittstellenbaustein NS 16550A
Jede RS232C-Schnittstelle belegt acht Adressen im Ein/Ausgabe-Adressraum des Prozessors:
ist für die RS232C-Schnittstellen eines PCs zuständig; Basisadresse
früher ein eigenständiger Baustein; heute im Chipsatz (Southbridge) enthalten; kann zur hardwarenahen Steuerung der RS232CSchnittstellen direkt angesprochen werden.
+1
+2
+3
+4
+5
+6
+7
$2F8
$2F9 $2FA $2FB $2FC $2FD $2FE $2FF
$3F8
$3F9 $3FA $3FB $3FC $3FD $3FE $3FF
Die acht Adressen werden Register 0, 1, .., 7 genannt. Relativ zur Basisadresse $3F8 bzw. $2F8 haben die Register die gleiche Bedeutung. 05.005.55
05 / Teil B / Seite 07
05.005.56
NS 16550A Direkte Programmierung
NS 16550A Direkte Programmierung
RTS-Leitung:
Baudrate:
Register 4, Bit 1: Pegel des RTS-Signals
Register 3, Bit 7: Freigabe der Baudrateneinstellung
Bit = 0
Leitung führt -12 V
Bit = 0
Baudrate nicht änderbar
Bit = 1
Leitung führt +12 V
Bit = 1
Baudrate änderbar
Programmierung:
Programmierung:
port[badr+4] := port[badr+4] and $FD;
port[badr+3] := port[badr+3] and $7F;
port[badr+4] := port[badr+4] or $02;
port[badr+3] := port[badr+3] or $80;
05.005.58
05.005.57
NS 16550A Direkte Programmierung
NS 16550A Direkte Programmierung
Baudrate:
Datenbits:
Register 0: Kennung1 der Baudrate
Register 3, Bit 0 und 1: Einstellung der Datenbits
Register 1: Kennung2 der Baudrate mögl. Baudraten u.a.: 50, 600, 1200, 2400, .., 128000 Programmierung: port[badr+3] port[badr+0] port[badr+1] port[badr+3]
:= := := :=
Bit1 = 0, Bit1 = 0, Bit1 = 1, Bit1 = 1,
Bit0 = 0 Bit0 = 1 Bit0 = 0 Bit0 = 1
5 Datenbits 6 Datenbits 7 Datenbits 8 Datenbits
Programmierung:
port[badr+3] or $80; 192 mod 256; 192 div 256; port[badr+3] and $7F;
port[badr+3] := port[badr+3] and $FC; port[badr+3] := port[badr+3] or $03; 05.005.59
05 / Teil B / Seite 08
05.005.60
NS 16550A Direkte Programmierung
NS 16550A Direkte Programmierung
Stopbits:
Parität:
Register 3, Bit 2: Einstellung der Stopbits
Register 3, Bit 3: Nutzung eines Paritätsbits
Bit = 0
1 Stopbit
Bit = 0
keine Parität
Bit = 1
2 Stopbits
Bit = 1
mit Parität
Programmierung:
Programmierung:
port[badr+3] := port[badr+3] and $FB;
port[badr+3] := port[badr+3] and $F7;
port[badr+3] := port[badr+3] or $04;
port[badr+3] := port[badr+3] or $08;
05.005.62
05.005.61
NS 16550A Direkte Programmierung
NS 16550A Direkte Programmierung
Parität:
Daten eingetroffen:
Register 3, Bit 4: Art der Parität
Register 5, Bit 0: Daten empfangen und bereit
Bit = 0
ungerade Parität
Bit = 0
keine Daten
Bit = 1
gerade Parität
Bit = 1
Daten stehen bereit
Programmierung:
Programmierung:
port[badr+3] := port[badr+3] and $EF;
if (port[badr+5] and $01) = $01 then ...
port[badr+3] := port[badr+3] or $10;
Dieses Bit kann nur gelesen werden.
05.005.63
05 / Teil B / Seite 09
05.005.64
NS 16550A Direkte Programmierung
NS 16550A Direkte Programmierung
Daten abholen:
Sendebereitschaft:
Register 0: Puffer der empfangnen Daten
Register 5, Bit 5: bereit zum Senden
Programmierung:
Bit = 0
nicht sendebereit
Bit = 1
sendebereit
var b : byte;
Programmierung:
begin if (port[badr+5] and $01) = $01 then b := port[badr+0]; end;
if (port[badr+5] and $20) = $20 then ...
Dieses Bit kann nur gelesen werden.
05.005.66
05.005.65
NS 16550A Direkte Programmierung
RS 232 C / V.24 Zusammenfassung
Daten wegschicken: Punkt-zu-Punkt Verbindung;
Register 0: Puffer der zu sendenden Daten
eine gemeinsame Masseleitung für alle Signale; Programmierung:
Kabellänge begrenzt Übertragungsrate; (bis 15 m: 38.400 Baud; bis 900 m: 1.200 Baud)
var b : byte;
relativ leicht durch elektro-magnetische Felder zu stören.
begin b := chr('A'); if (port[badr+5] and $20) = $20 then port[badr+0] := b; end;
05.005.67
05 / Teil B / Seite 10
05.005.26
Serielle Datenübertragung 20 mA - Linienstrom-Schnittstelle
Serielle Datenübertragung 20 mA - Linienstrom-Schnittstelle
Datenleitungen
Galvanische Tennung mit Optokopplern
+ -
senden
senden
20 mA
+ -
Optokoppler empfangen
empfangen 05.005.27
Optokoppler wandelt - Strom in Licht im Senderstromkreis, - Licht in Strom im Empfängerstromkreis. Damit elektrische Entkopplung der Geräte.
20 mA - Linienstrom-Schnittstelle Signalpegel Datenleitungen
05.005.53
20 mA - Linienstrom-Schnittstelle Zusammenfassung
Strom [mA]
Übertragungsrahmen wie bei RS 232 C / V.24; Übertragungsprotokolle wie bei RS 232 C / V.24;
log. '1'
20
Punkt-zu-Punkt Verbindung; keine gemeinsame Masseleitung; unempfindlich gegenüber elektro-magnetischen Störfeldern;
log. '0'
4
Leitungsunterbrechungen leicht erkennbar.
0
Zeit
0 mA = Leitungsunterbrechung
Übertragungsraten 300 - 9600 Baud. Geringere Standardisierung.
05.005.28
05 / Teil B / Seite 11
05.005.29
RS 485 (Halbduplex) Signalpegel Datenleitung
Serielle Datenübertragung RS 485 (Halbduplex) Spannung A - B [V]
Datenleitungen, als Bus ausgeführt A B
größer 1.5V = log. '0' 5
Gerät A
Gerät B
Gerät C
1.5 0 -1.5
...
Zeit
-5 kleiner -1.5V = log. '1' undefinierter Bereich
Signal = Spannung zwischen A und B 05.005.30
05.005.31
RS 485 (Halbduplex) Gleichtaktunterdrückung
RS 485 (Halbduplex) Zusammenfassung
Datenleitungen werden paarweise verdrillt. A B Gerät A
Gerät B
Gerät C
Übertragungsrahmen wie bei RS 232 C / V.24; Übertragungsprotokolle wie bei RS 232 C / V.24;
...
busfähige Verbindung; keine gemeinsame Masseleitung;
Störspannungen wirken damit auf beide Adern gleich. Leiter A gegen Masse
Leiter B gegen Masse
Leiter A gegen Leiter B
unempfindlich gegenüber elektro-magnetischen Störfeldern; hohe Übertragungsraten (bis 200 m: 500 kBaud; bis 1200 m: 94 kBaud)
Zeit
Zeit
Zeit 05.005.54
05 / Teil B / Seite 12
05.005.32