1. Trang chủ
  2. » Công Nghệ Thông Tin

PC Werkstatt Ausgabe 2000- P51 pot

15 226 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 15
Dung lượng 264,41 KB

Nội dung

751 Programmlisting: Serial Bit program Serial_Bit; const COM1 = $3F8;{Basisadressen, maximal 4 serielle Schnittstellen} COM2 = $2F8; COM3 = $3E8; COM4 = $2E8; COM=COM2; Benutzte Schnittstelle(COM1 COM4) hier festlegen} Modem_Ctrl=COM+4; {Modem-Control-Register} Modem_Status=COM+6;{Modem-Statusregister} {*************************************************************} procedure write_bit_RTS(bit:boolean); {Setzt die RTS-Leitung auf 1 oder 0} begin if bit then port[Modem_Ctrl]:=port[Modem_Ctrl] or 2 {1 senden} else port[Modem_Ctrl]:=port[Modem_Ctrl] and $FD; {0 senden} end; {write_bit_RTS} {*************************************************************} function read_bit_CTS:boolean; {Liest Bit von der CTS-Leitung} var bit:boolean; begin if (port[Modem_Status] and 16)>0 then bit:=true else bit:=false; read_bit_CTS:=bit; end; {read_bit_CTS} {*************************************************************} var Bit:boolean; begin {Beispiel-Hauptprogramm} {Nicht vergessen: verwendeten COM-Port oben in der Konstante COM einstellen!} write_bit_RTS(true); {Setzt RTS-Leitung auf 1} write_bit_RTS(false); {Setzt RTS-Leitung auf 0} Bit:=read_bit_CTS; {Liest CTS-Leitung} write(‘Zustand der CTS-Leitung: ‘); if Bit then writeln(‘1’) else write(‘0’); end. Das zweite Beispielprogramm ist schon etwas komplexer, denn hier wird eine komplette Initiali- sierung der Schnittstelle vorgenommen, wozu einige Hilfsroutinen im Programm implementiert sind. Danach können im Hauptprogramm Datenbytes über die TD-/RD-Leitungen gesendet und empfangen werden. Parallele und serielle Schnittstellen Teil 5 · Interfaces und Peripherie 752 Programmlisting: Serial Byte program Serial_Byte; const COM1 = $3F8; {Basisadressen, maximal 4 serielle Schnittstellen} COM2 = $2F8; COM3 = $3E8; COM4 = $2E8; COM=COM2;{Benutzte Schnittstelle (COM1 COM4) hier einstellen} Oszillatorfrequenz=1843200; {Oszillatorfrequenz in Hertz} int_enable=COM+1; {Interrupt-Enable-Register} FIFO_Ctrl=COM+2; {FIFO-Buffer-Control-Register} Line_Ctrl=COM+3; {Line-Control-Register} Line_Status=COM+5; {Line-Statusregister} {*************************************************************} function hbyte(Zahl:word):byte; {Gibt das High-Byte der Zahl zurueck} var erg: byte; begin Zahl:=Zahl shr 8; {High-Byte (obere 8 Bits) in Low-Byte schieben} hbyte:=Zahl; {verschobenes High-Byte als Ergebnis zurueckgeben} end; {*************************************************************} function lbyte(Zahl:word):byte; {Gibt das Low-Byte der Zahl zurueck} var erg : byte; begin Zahl:=Zahl and $00ff; {High-Byte loeschen} lbyte:=Zahl; {verbleibendes Low-Byte als Ergebnis zurueckgeben} end; {*************************************************************} 753 procedure Baudrate_einstellen(Baudrate:longint); var Wert : byte; Teilwert : word; begin if Baudrate<4 then begin writeln(‘Baudrate ‘,Baudrate,’ ist zu klein!’); exit; {Prozedur wegen falscher Baudrate beenden} end; Wert:=port[Line_Ctrl]; {Line-Control-Register lesen} Wert:=Wert or $80; {Bit 7 (Divisor Latch Bit) setzen} port[Line_Ctrl]:=Wert; { und wieder in Line-Control-Register schreiben} Teilwert:=Oszillatorfrequenz div (16*Baudrate); port[COM] :=lbyte(Teilwert); {niederwertiges Byte schreiben} port[COM+1]:=hbyte(Teilwert); {hoeherwertiges Byte schreiben} Wert:=port[Line_Ctrl]; {Line-Control-Register lesen} Wert:=Wert and $7F; {Bit 7 (Divisor Latch Bit) loeschen} port[Line_Ctrl]:=Wert; { und wieder in Line-Control-Register schreiben} end; {Baudrate_einstellen} {*************************************************************} procedure init(Datenbits:byte; Stoppbits:boolean; Parity:boolean; even_Parity:boolean; Sticky_Parity:boolean); {Datenbits:Anzahl Datenbits, 5 8 moeglich} {Stoppbits:Anzahl Stoppbits, false:1 Stoppbit,true:2 Stoppbits} {beim 16550 bei 5 Datenbits: true: 1.5 Stoppbits} {Parity: Paritaetsbit einschalten} {even_Parity: true: gerade Paritaet, false: ungerade Paritaet} {Sticky_Parity: true: Paritaetsbit low-aktiv (?)} var Wert:byte; Parallele und serielle Schnittstellen Teil 5 · Interfaces und Peripherie 754 begin port[int_enable]:=0; {Interrupts abschalten, d.h. der UART soll keine Interrupts generieren} port[FIFO_ctrl]:=0; {FIFO-Buffer (wenn vorhanden) ausschalten} if Datenbits>8 then Datenbits:=8; {maximal 8 Datenbits moeglich} {Jetzt Wert fuer Line-Control-Register berechnen:} Wert:=Datenbits-5; {Bits 0,1: Anzahl der Datenbits-5} if Stoppbits then Wert:=(Wert or 4); {Bit 2: Anzahl Stoppbits (s.o.)} if Parity then Wert:=(Wert or 8); {Bit 3: Parity einschalten} if even_Parity then Wert:=(Wert or 16); {Bit 4: 1:even Parity, 0:odd P.} if Sticky_Parity then Wert:=(Wert or 32); {Bit 5: Sticky-Parity-Bit (s.o.)} {Bit 6: Break-Bit, unterbricht Verbindung} {Bit 7: Divisor-Latch-Bit, nur gleich 1 fuer Einstellung der Baudrate(s. Prozedur Baudrate_einstellen)} port[Line_Ctrl]:=Wert; {Wert in Line-Control-Register schreiben} end; {*************************************************************************} procedure write_byte(Wert : byte); {Sendet Byte ueber die TD-Leitung (Transmit Data) mit der eingestellten Baudrate und den Einstellungen von Prozedur init} var Send_buffer_empty : byte; begin repeat {Warten, bis Datenbyte gesendet werden kann:} Send_buffer_empty:=port[Line_Status] and 32; until Send_buffer_empty>0; port[COM]:=Wert; {Datenbyte senden} end; {write_byte} {*************************************************************************} 755 function read_byte : byte; {Empfaengt Byte ueber die RD-Leitung (Receive Data)mit der eingestellten Baudrate und den Einstellungen der Prozedur init} var Data_in_receiver : byte; begin repeat {Warten, bis Datenbyte vorhanden:} Data_in_receiver:=port[Line_Status] and 1; until Data_in_receiver>0; read_byte:=port[COM]; {Datenbyte lesen} end; {read_byte} {*************************************************************************} {Nicht vergessen: verwendeten COM-Port oben in der Konstante COM festlegen und Oszillatorfrequenz der Schnittstelle oben in der Konstante Oszillator- frequenz einstellen, denn dort steht jetzt ein Standardwert)} begin {Beispiel-Hauptprogramm} init(8,false,false,false,false); {8 Datenbits, 1 Stoppbit, kein Parity} Baudrate_einstellen(115200); {115200 Baud einstellen} write_byte(67); {als Beispiel Zahl 67 ausgeben} end. 9.4.5 Andere serielle Schnittstellen – RS422, RS423, RS485, TTY Für längere Kabelverbindungen (bis zu mehreren km) und störungssicherere Daten- verbindungen, als sie die RS232-Schnittstelle bietet, werden verschiedene andere serielle Schnittstellen eingesetzt, für die es entsprechende Einsteckkarten gibt. Diese Karten sind jedoch meist nicht im typischen PC-Handel zu erwerben, sondern meist bei Firmen, die sich mit der Industrieautomatisierung und/oder der PC-Mess- technik beschäftigen. Die folgende Tabelle zeigt ein paar Beispiele. In diesem Zusammenhang ist es besonders wichtig, daran zu denken, ob von den Herstellern auch entsprechende (Treiber-)Programme für die beabsichtigte Anwen- dung geliefert werden, falls man nicht selbst programmieren möchte. Oft ist es jedoch auch möglich, diese spezielleren Schnittstellenkarten programmtechnisch wie eine Standard-RS232-Schnittstelle anzusteuern. Es werden dann automatisch die entsprechenden Adressen und Interrupts verwendet, wie sie für die RS232- Schnittstelle gelten. Parallele und serielle Schnittstellen Teil 5 · Interfaces und Peripherie 756 Typ Bus Schnittstellen Besonderheiten Hersteller COM-422 PC RS232/RS422 TTY Keithley µCOM-422 MCA RS232/RS422 per Software Keithley konfigurierbar DUAL-422 PC 2 * RS422 Keithley COM485 PC RS485 Keithley TTY-2 PC TTY für SPS-S5 Kolter ME-90 PC RS422/RS485 eigene CPU Meilhaus ME-91 PC RS232,RS422 per Software Meilhaus TTY konfigurierbar PC-48 PC RS232,RS422 2 Schnittstellen Meilhaus RS485 gleichzeitig PCL-845 PC TTY Spectra PCL-743 PC 2 * RS422/RS485 Spectra PCL-745 PC 2 * RS422/RS485 galvanische Trennung Spectra Tabelle 9.15: Einsteckkarten für optionale serielle PC-Schnittstellen Die RS422-Schnittstelle Die Spezifikation EIA-RS422-A aus dem Jahre 1975 definiert eine symmetrische Schnittstelle. Sie weist ein verbessertes Störverhalten gegenüber RS232 auf, da hier mit Differenz- statt mit asymmetrischen (auf Masse bezogenen) Spannungen gearbeitet wird, was im Kapitel über den SCSI-Bus genauer erläutert ist. Die maximale Übertragungsgeschwindigkeit ist mit 10 Mbit/s (RS232: 20 000 Bit/s) festgelegt und es können Systeme mit bis zu 10 Empfängern (Simplex) aufgebaut werden. Eine typische Anwendung ist die Datenübertragung von einem Computer zu mehreren Peripherie-Einheiten wie beispielsweise verteilten Messsystemen. Die RS423-Schnittstelle Eine einfachere Ausführung der RS422-A-Schnittstelle stellt die RS423-A-Schnitt- stelle dar. Sie ist im Prinzip mit RS422 identisch, mit dem wichtigen Unterschied allerdings, dass sie wie die RS232-Schnittstelle asymmetrisch ausgeführt ist, je- doch mit einer Übertragungsgeschwindigkeit von bis zu 100 Kbit/s arbeiten kann. Die Treiber- und Empfängerbausteine müssen hierfür explizit ausgelegt worden sein. 757 Die RS485-Schnittstelle Die bisher erläuterten seriellen Schnittstellen erlauben lediglich einen Sender pro Schnittstellensystem. In EIA-RS485-A aus dem Jahre 1983, einer Erweiterung der RS422-A-Schnittstelle, sind die elektrischen Eigenschaften einer busfähigen bidirektionalen Schnittstelle festgelegt. Bild 9.38: Der beispielhafte Aufbau einer RS485-Übertragungsstrecke Mit Hilfe dieser Schnittstelle lassen sich bis zu 32 Teilnehmer verbinden, die so- wohl als Sender als auch als Empfänger arbeiten können (Half Duplex). Die Realisie- rung von Mini-LANs, beispielsweise zwischen einem Zentral-Computer und diversen Kassensystemen, wie sie in Supermärkten zu finden sind, ist eine typische Anwen- dung. Des Weiteren ist die RS485-Schnittstelle in der Industrieautomatisierung besonders verbreitet und wird als Interface für verschiedene Feldbussysteme einge- setzt. Die TTY-Schnittstelle Eine der ältesten seriellen Schnittstellen, die ursprünglich für die Ansteuerung mechanischer Fernschreiber (TeleTYpe) konzipiert wurde und der Schnittstelle da- mit auch ihren Namen gab, ist die TTY-Schnittstelle. Sie wird auch als Linienstrom- oder 20-mA-Schnittstelle bezeichnet und häufig dort eingesetzt, wo eine Potential- trennung der zu koppelnden Geräte notwendig ist, wie etwa in der Medizintech- nik. Vielfach wird sie auch zur Steuerung einer Speicher-Programmierbaren-Steue- rung (SPS) mittels eines PC verwendet. Die TTY-Schnittstelle arbeitet in der Regel mit zwei Stromschleifen in 4-Draht- Technik. Der Strom beträgt normalerweise 20 mA, aber auch 40 und 60 mA sind möglich. Fließt der Strom, entspricht diese Information einer »1«, kein Strom be- deutet demnach »0« (Space). Die Übertragung erfolgt ohne Handshake und es wer- den lediglich eine Sende- und eine Empfangsleitung plus jeweiliger Rückführungs- leitung verwendet. Übliche Übertragungsgeschwindigkeiten sind 110, 300, 1200 und 2400 Bit/s, und die Entfernung zwischen den beiden Geräten darf maximal 1 km betragen. Parallele und serielle Schnittstellen Teil 5 · Interfaces und Peripherie 758 Bild 9.39: Die Kopplung zweier DEEs (Computer) über die TTY-Schnittstelle Die in den Fernschreibern enthaltenen Hubmagnete (Relais) werden direkt über die Stromschleifen angesteuert. Eine Stromschleife versorgt den »Empfangsmagneten«, die andere den »Sendemagneten«. Dabei erfolgt die Speisung der Schleifen in der Regel allein von dem aktiven Gerät der Datenstrecke aus, wobei der Fernschreiber als passiv zu verstehen ist. Diese Form der TTY-Schnittstelle ist mittlerweile veral- tet und auch nicht zur Kopplung zweier aktiver Geräte (DEE-DEE) geeignet. Daher werden statt der Relais Optokoppler verwendet, wie es im Bild 9.39 gezeigt ist. EIA-Norm RS232-C RS423-A RS422-A RS485-A CCITT/ITU- Empfehlung V.24/V.28 V.10/X.26 V.11/X.27 V.11/X.27 ISO-Norm 2110 4902/4903 4902/4903 4902/4903 Stecker 25-polig 37/15-polig 37/15-polig 37/15-polig Übertragungsart asymmetrisch asymmetrisch symmetrisch symmetrisch maximale Kabellänge 15 m 1200 m 1200 m 1200 m maximale Datenrate 20 Kbit/s 100 Kbit/s 10 Mbit/s 10 Mbit/s 759 Parallele und serielle Schnittstellen Fortsetzung der Tabelle EIA-Norm RS232-C RS423-A RS422-A RS485-A Empfänger maximale Anzahl 1 10 10 32 maximale Eingangsspannung ± 15 V ± 12 V ± 7 V - 7 12 V Pegelzuordnung 1 = MARK ≤ 0,3 V ≤ 3 V ≤ 0,3 V ≤ 3 V 0 = SPACE ≥ 0,3 V ≥ 0,3 V ≥ 0,3 V ≥ 0,3 V Eingangswiderstand 3 7 kΩ 4 kΩ 4 kΩ 12 kΩ Sender maximale Anzahl 1 1 1 32 maximale Treiberspannung ± 25 V ±6 V - 0,25 6 V -7 12 V Signal ohne Last ± 15 V ± 6V ± 5 V ± 5 V Signal mit Last ± 5 V ± 3,6 V ± 2 V ± 1,5 V Lastwiderstand 3 7 kΩ > 450O Ω 100O Ω 54O Ω Tabelle 9.16: Die wichtigsten seriellen Schnittstellen im Vergleich [...]... einem PC zur Anbindung von Peripherie, sei es auf einer Einsteckkarte (z.B ISA, PCI) oder als externes Gerät (z.B USB), zum Einsatz kommen 10.1 PC- Bussystemübersicht Für die Verbindung der PC- Einsteckkarten mit der Mainboard-Elektronik sind je nach PC- Typ verschiedene Steckplätze (Slots) auf dem Mainboard vorgesehen, die die Signale des jeweiligen Bussystems führen Mit dem ursprünglichen Original -PC der... entsprechenden PCs realisiert wurden Der SCSI-Bus nimmt im PC- Bereich eine Sonderstellung ein, da er nicht als alleiniges Bussystem implementiert ist, sondern zusätzlich zu den genannten zu verwenden ist Die verschiedenen SCSI-Bus-Versionen sind ausführlich im Teil 3 beschrieben Mit dem Intel-OR840-Chipsatz und dem dazu passenden 64-Bit-PCI-Controller (82806) wird der 64-Bit-PCI-Bus verfügbar, der zum 32-Bit-PCI-Bus... derjenige Mode automatisch aktiviert wird, mit dem die langsamste PCI-Karte noch umgehen kann Die folgende Tabelle zeigt die hier möglichen Kombinationsmöglichkeiten Eine PCI-X-Karte kann, wie es auch die Tabelle zeigt, in einem bisher gebräuchlichen PCI-Slot verwendet werden, wobei sie sich dementsprechend wie eine übliche PCI-Karte verhält Das PCI-X-Protokoll ist zu existierenden Treibern und Betriebssystemen... 486-Prozessor-Interface Für die Implementierung des VLB müssen die für einen ISA -PC verwendeten Chips nur minimal modifiziert werden Der VLB versteht sich auch lediglich als Ergänzung zum ISA-Bus und es existieren keine PCs, die ausschließlich über VLB-Slots verfügen Prinzipiell sind auch PCs mit Pentium-CPU und mit VLB denkbar, doch hat sich hier der PCI-Bus durchgesetzt und den VESALocal-Bus recht schnell verdrängt,... 9 TByte Datentransferrate in Mbyte 1 4-5 40/64 (Burst) 40 (Burst) 33 (Burst) 132/264 (Burst) Tabelle 10.1: Die wichtigsten Daten der verschiedenen PC- Bussysteme in der Übersicht Die PC- Industrie denkt schon eine Zeit lang über PC- Bussysteme nach, die die PCIBus-Nachfolge antreten sollen, denn schließlich gibt es dieses System schon seit 1993 und es stellt sich für einige Techniken (z.B Gigabit-Ethernet,... gibt es auch hier wieder verschiedene Vorschläge konkurrierender Unternehmen Es kündigen sich dabei zwei »radikale« und eine PCI-abwärtskompatible Lösung an Zunächst hat sich die Firma Compaq im September 1999 von der PCI SIG (PCI Special Interest Group) das abwärtskompatible PCI-X absegnen lassen Firmen wie IBM und Hewlett-Packard waren an der Entwicklung ebenfalls beteiligt und andere wie 3COM oder... und auch Workstations auf PCI-X-Basis fertig haben will Diese zum konventionellen PCI-Bus abwärtskompatible Lösung arbeitet mit einem maximalen Bustakt von 133 MHz und in einer Datenbreite von 64 Bit, was somit zu einer Datenübertragungsrate von 1 Gbyte/s führen kann PCI-X definiert verschiedene Betriebsarten (auch 32 Bit, 66 MHz und 100 MHz sind möglich), wobei – wie bei PCI-64 – derjenige Mode automatisch... Modem- und Soundkarten in der PCI-Ausführung erst relativ spät auf den Markt gekommen sind Des Weiteren gibt es durchaus ISA-Karten, für die bisher noch keine PCI-Pendants existierten, wobei dies aber eher speziellere Typen sind, wie sie häufig in der PC- gestützten Mess-, Steuer- und Regelungstechnik zum Einsatz kommen In der Tabelle 10.1 sind die wesentlichen Merkmale der PC- üblichen Bussysteme angegeben... PCI-X-Protokoll ist zu existierenden Treibern und Betriebssystemen kompatibel, was einen relativ einfachen Übergang von PCI zu PCI-X ermöglicht Die an PCI-X beteiligen Firmen sehen diesen neuen Standard jedoch nur als Übergangslösung für eine völlig neue Architektur an, die nicht mit PCI kompatibel ist 765 ... zu müssen und um damit wieder eine Vormachtstellung auf dem PC- Sektor einnehmen zu können, denn für MicroChannel-PCs sind entsprechende Lizenzgebühren an IBM zu zahlen Der MicroChannel und die dazugehörige Hardware auf dem Mainboard sind gänzlich anders aufgebaut als bei einem ISA-System, so dass die »alten« Karten nicht mehr in einem MCA -PC verwendet werden können Dies war sicher auch einer der Gründe, . Meilhaus ME-91 PC RS232,RS422 per Software Meilhaus TTY konfigurierbar PC- 48 PC RS232,RS422 2 Schnittstellen Meilhaus RS485 gleichzeitig PCL-845 PC TTY Spectra PCL-743 PC 2 * RS422/RS485 Spectra PCL-745 PC. Hersteller COM-422 PC RS232/RS422 TTY Keithley µCOM-422 MCA RS232/RS422 per Software Keithley konfigurierbar DUAL-422 PC 2 * RS422 Keithley COM485 PC RS485 Keithley TTY-2 PC TTY für SPS-S5 Kolter ME-90 PC RS422/RS485. einem PC zur Anbindung von Peripherie, sei es auf einer Einsteckkarte (z.B. ISA, PCI) oder als externes Gerät (z.B. USB), zum Einsatz kommen. 10.1 PC- Bussystemübersicht Für die Verbindung der PC- Einsteckkarten

Ngày đăng: 03/07/2014, 14:20