Der Standard IEEE 1284 definiert eine parallele Schnittstelle zur bidirektionalen Übertragung von Daten zwischen Personal Computern und unterschiedlichen Peripheriegeräten (Drucker, Fax, Scanner, Laufwerke, auch CNC-Maschinen). Er wurde 1994 verabschiedet[1] und löste damit offiziell die weitverbreitete Centronics-Schnittstelle[2] aus den 1970er Jahren ab, die bis dahin nur ein Quasi-Standard war. Der Standard definiert die elektrischen Eigenschaften der Schnittstellen, die zu verwendenden Hardware-Protokolle und die zugehörigen Kabel. Für die übergeordneten Software-Protokolle wird auf die entsprechenden Substandards verwiesen. Teile der Substandards betreffen Protokolle, die unabhängig von der Hardware-Schnittstelle sind und – neben der Parallel-Schnittstelle – z. B. auch USB vorsehen (TIP/SI).
Der Standard sieht für die elektrischen Schnittstellen von Rechner (Host) und Peripheriegerät (Peripheral) zwei Stufen der Kompatibilität vor:
Produkte mit „Level 1“-Schnittstelle sind mit „IEEE 1284 I“, solche mit „Level 2“-Schnittstelle mit „IEEE 1284 II“ bezeichnet.
Die IEEE 1284 definiert ein doppelt geschirmtes 36-adriges „Twisted Pair“-Kabel mit 18 Adernpaaren.
Drei mögliche Steckertypen werden verwendet:
Typ A | |
---|---|
Der 25-polige D-Sub-Stecker. Er wurde 1981 von IBM mit dem PC aus Platzgründen eingeführt. Gegenüber dem bis dahin verwendeten 36-poligen „Centronics-Stecker“ ist der Hauptnachteil, dass nicht für jede Signalleitung eine korrespondierende Masseleitung (Twisted Pair Return) vorhanden ist. | |
Typ B | |
Der 36-polige „Centronics“-Stecker (offizieller, aber selten verwendeter Name „Micro Ribbon Connector“). Vor Einführung des IBM-PCs wurde ausschließlich dieser Steckertyp verwendet, der bereits in den 1940er Jahren von der Firma Amphenol eingeführt worden war. | |
Typ C | |
Eine elektrisch verbesserte und kompaktere Variante des Centronics-Steckers, ebenfalls 36-polig mit „Schnappverriegelung“, auch „Mini Centronics“ genannt. Dieser Typ hat sich jedoch nicht durchgesetzt. |
Jede Kombination dieser Steckverbinder ist möglich, ebenso die Verwendung von Steckern oder Buchsen am Kabel. Nach IEEE-1284-Terminologie ist beispielsweise ein „AB-Kabel“ das klassische „IBM-Druckerkabel“. Ein „AC-Kabel“ hat rechnerseitig einen 25-poligen D-SUB-Stecker und druckerseitig den neuen „Mini Centronics“-Stecker. Eine andere (nicht offizielle) Schreibweise unterscheidet zusätzlich zwischen Buchse und Stecker. Dabei steht „M“ für male (Stecker) und „F“ für female (Buchse). Ein „AMAF-Kabel“ ist somit ein Verlängerungskabel mit 25-poligem D-Sub-Stecker und 25-poliger D-Sub-Buchse.
Der IEEE-1284-Standard gibt dabei die Belegung der unterschiedlichen Kabel vor. Denn es ist wichtig, auch bei 25-poligen Steckern die Masseadern der Adernpärchen auf beiden Seiten zu erden, um die gewünschten elektrischen Eigenschaften zu erzielen.
Die elektrischen Eigenschaften werden im Standard IEEE 1284 spezifiziert. Die (unsymmetrisch betriebenen) Signal-Adern haben eine Impedanz von 62 Ohm. Es gibt zwar für jedes Signal eine getrennte Masse-Rückleitung, die Signalübertragung ist jedoch nicht symmetrisch, obwohl der twisted-pair-Aufbau das nahelegt. Das Übersprechen zwischen den Adernpaaren muss beim vorgesehenen Einsatz kleiner als 10 % sein. Ebenso werden die Signal-Laufzeit und Laufzeit-Unterschiede zwischen den Adernpaaren definiert. Der doppelte Schirm besteht aus Kupfergeflecht (min. 85 % Abdeckung) plus Folie. Ein Kabelmaterial, das diese Eigenschaften erfüllt, darf den Aufdruck „IEEE Std 1284-1994 Compliant“ tragen.
Die Schnittstelle ist für wenige Meter Kabellänge vorgesehen. Während die Centronics-Kabel typisch 2…3 m (max. 3,6 m) lang waren, sind nun bis 7,6 m empfohlen (max. 9,8 m).
Die maximal mögliche Kabellänge errechnet sich mit den Worst-Case-Spezifikationen des Kabels und des Timings mit „Level 2“-Schnittstelle auf theoretisch etwa 12 Meter. In der Praxis lassen die Hersteller von Druckern und Rechnern beim Timing deutliche Sicherheitsreserven. Damit vergrößert sich die maximale Länge. Mit „Level 1“-Schnittstellen sollten Längen bis 6 Meter bei durchschnittlichen Kabeln nicht überschritten werden.
Die moderne parallele Schnittstelle nach IEEE 1284 unterstützt folgende Modi:
Die ersten vier Modi (Varianten) waren zum Zeitpunkt der Definition der IEEE 1284 schon weit verbreitet. Die ECP-Variante stand vor der Verbreitung. Eine wesentliche Aufgabe der IEEE 1284 war, eine drohende Kompatibilitätskrise abzuwenden und weitgehende Rückwärtskompatibilität zu sichern – z. B. durch Aushandeln (Negotiation) des gemeinsamen Übertragungsmodus zwischen Rechner und Peripheriegerät.
Der IEEE 1284-Standard hat gegenüber der klassischen Centronics-Schnittstelle folgende Erweiterungen:
Ein Gerät darf sich dann „IEEE 1284 Std Compliant“ nennen, wenn es:
Erstmals in der Geschichte des IEEE wurde ein Gütesiegel „IEEE 1284 Std Compliant“ eingeführt. Der für entsprechende Methoden der „Compliance Tests“ zuständige IEEE 1284.2-Substandard wurde nie verabschiedet. Auf Kabelmaterial wird jedoch das betreffende Gütesiegel aufgedruckt.
Die von PC und Peripheriegerät gemeinsam beherrschten Modi werden ausgehandelt. Beide Geräte starten im Compatibility Mode. In einer vom PC ausgelösten Kommunikation im Nibble-Mode identifiziert sich das Peripheriegerät mit Herstellername, Gerätetyp, beherrschten Modi und anderen Informationen. Vor jeder Übertragung wird der zu verwendende Modus nochmals ausgehandelt. Reagiert das Peripheriegerät nicht auf Anfragen im „Nibble Mode“, so nimmt der PC an, dass es sich hier um einen alten Drucker („Legacy Printer“) handelt. Dann ist nur Drucken im Compatibility Mode möglich.
Die Centronics-Schnittstelle und auch die Nachfolger (EPP, ECP) erlauben es nur, einen Computer mit einem Peripheriegerät zu verbinden. Der Substandard IEEE 1284.3 sollte die Erweiterung auf bis zu 64 Peripheriegeräte ermöglichen. Zwei Methoden waren vorgesehen:
Die Centronics-Schnittstelle entstand Ende der 1960er Jahre bei den Wang Laboratories, von denen sich kurz danach der Druckerhersteller Centronics abspaltete. Diese Schnittstelle war einfach und für Rechnerhersteller mit geringem Bauteileaufwand leicht zu implementieren. In der Geschwindigkeit war sie den bei großen Anwendungen eingesetzten, viel teureren Schnittstellen fast ebenbürtig und der bei kleineren Anwendungen üblichen V.24/RS232 deutlich überlegen und darüber hinaus sehr unkompliziert zu installieren. Darum wurde die Centronics-Schnittstelle von den Herstellern kleinerer Rechner zügig implementiert und schnell zu einem De-facto-Standard, so dass auch andere Druckerhersteller mitzogen, insbesondere die neu auf den Markt drängenden Japaner (z. B. OKI).
Obwohl Centronics die eigenen Spezifikationen stets offenlegte, fehlte es an einer verbindlichen Vorgabe für die Rechnerseite. So entwickelten sich sehr skurrile Auslegungen der elektrischen Eigenschaften, des Protokolls und der Kabelbelegung. Anfang der 1980er konnte es passieren, dass der Drucker durch die Spannungen der Schnittstelle des Rechners überlastet wurde.
Mit dem IBM PC entstand nach 1982 erstmals eine breit akzeptierte Plattform, welche die Centronics-Schnittstelle unterstützte.[5] Im Protokoll nicht ganz kompatibel (das Signal BUSY wurde anfangs ignoriert) und elektrisch nicht sehr vorteilhaft – vom Stecker her aus Platzgründen von 36 auf 25 Pins abgespeckt – brachte die PC-Variante doch eine wesentliche Vereinheitlichung.
Die allererste Generation paralleler IBM-Schnittstellenkarten für den IBM PC war 8-bit-bidirektional ausgelegt, jedoch wurde diese Funktionalität schon bei Revisionen – wohl aus Kompatibilitätsgründen mit dem Centronics-Standard – fallengelassen, das zugehörige Port-Bit wurde nur noch als „reserved“ dokumentiert und hatte keine Funktion mehr. Die Bidirektionalität konnte jedoch mit einem einfachen Hardware-Patch reaktiviert werden. Da sich Klon-Karten zum Teil bis auf Gatterebene an das Vorbild von IBM hielten, war diese Modifikation auch auf viele Fremdkarten übertragbar, trotzdem wurde diese Möglichkeit nur von wenigen Programmen unterstützt. Erst mit der Einführung von „PS/2“ führte IBM den 8-Bit-Bidirektionalbetrieb wieder ein, diesmal aber über spezielle, separat ansprechbare PS/2-Konfigurationsregister abgesichert, so dass der Modus nicht versehentlich von der Software aktiviert werden konnte. Auf diese Weise sollte der Austausch von Daten zwischen PCs erlaubt werden (sog. Migration Kit). Die dabei verwendete „Open-collector-Technik“ war konträr zur Spezifikation der Centronics-Schnittstelle und führte schnell zu vehementen Problemen mit bestehenden Druckerinstallationen.
In der zweiten Hälfte der 1980er Jahre wuchs das Bedürfnis, neben Druckern auch andere Peripheriegeräte anzuschließen: Externe (CD-)Laufwerke, Streamer etc. Dafür fehlte die Schnittstelle – SCSI war zu aufwändig. In einem Schnellschuss entwickelten Intel, Zenith, Xircom und andere EPP (Enhanced Parallel Port) – eine bidirektionale Variante der Centronics-Schnittstelle mit höherer Geschwindigkeit. Sie erforderte spezielle Hardware. Etwa zeitgleich hatten Travelling Software und HP Methoden entwickelt, über die alte Centronics-Schnittstelle Daten rückwärts zu lesen (IEEE 1284-Terminologie: Reverse Channel). Travelling Software brauchte das für den Datentransfer zwischen Notebook und PC, HP für ein komfortableres Management seiner Drucker und nannte es „Bitronics“.
1992 suchte Microsoft nach einer „universalen“ Schnittstelle zur Anbindung peripherer Geräte und entwickelte ECP (Extended Capabilities Port)[6] – ein über EPP weit hinausgehendes Konzept einer bidirektionalen Hochgeschwindigkeitsschnittstelle, die immer noch rückwärtskompatibel zu Centronics sein sollte.
Diese Definition beseitigt eines der großen Probleme der Centronics-Schnittstelle, die Unklarheit über das richtige Timing. So war es beispielsweise unklar, ob die Aktivierung oder die Deaktivierung des Strobe die Datenübergabe (und damit die Aktivierung des Busy-Signals) auslösen sollte. Mit der zweiten Variante konnte es zum Verlust von Zeichen kommen. Ebenso war unklar, in welcher Reihenfolge die Busy- und Ack-Signale die Datenübernahme quittieren sollten.
Es gab drei Varianten:
Daraus resultierte eine Vielzahl von Kompatibilitätsproblemen zwischen Rechnern und Druckern unterschiedlicher Hersteller. Noch verwirrender wurde das Problem mit den BIOS-Versionen der ersten IBM PCs: Sie ignorierten das Busy-Signal und beachteten nur das Ack-Signal – mit der Folge, dass das erste Zeichen eines Druckjobs verloren gehen konnte. Im nur informativen Anhang C des IEEE 1284-Standard wird diese Problematik ausgiebig erläutert.
Die Centronics-Schnittstelle ermöglicht eine Übertragungsgeschwindigkeit von höchstens 150 kBd pro Sekunde (SPP-Modus) und eine Kabellänge von maximal etwa 3,5 Metern. (Bis zu fünf Meter bei hochwertigem Kabel, bestenfalls mit acht Masse-Leitungen.) Ein Standard-Centronics-Stecker besitzt 36 Pins, davon werden 17 für Daten und Handshake genutzt, die anderen liegen an Masse. Auf der Computerseite werden stattdessen seit den 1980er Jahren zunehmend 25-polige D-Sub-Stecker eingesetzt. Beim ersten IBM PC geschah das als Notlösung, da die Standard-Centronics-Buchse zu groß war, um mit einer RS-232-Buchse zusammen auf eine Steckkarte zu passen. So wurden dann beide Buchsen durch verkleinerte Varianten ersetzt; jedoch entwickelte sich diese Steckerform in der Folge zum Quasi-Standard. Auf der Drucker-Seite wird aber bis heute der 36-polige Stecker genutzt.
Pin | Name | Richtung(1) | Funktion |
---|---|---|---|
1 | STROBE | > | Strobe, zeigt gültige Daten an |
2 | D0 | > | Data Bit 0 |
3 | D1 | > | Data Bit 1 |
4 | D2 | > | Data Bit 2 |
5 | D3 | > | Data Bit 3 |
6 | D4 | > | Data Bit 4 |
7 | D5 | > | Data Bit 5 |
8 | D6 | > | Data Bit 6 |
9 | D7 | > | Data Bit 7 |
10 | ACK | < | Acknowledge, Anzeige des Druckers über Empfang der Daten |
11 | BUSY | < | Busy, zeigt Bereitschaft des Druckers zur Datenübernahme an |
12 | PE | < | Paper End, Papierende |
13 | SEL | < | Select, zeigt Druckerstatus (on- oder offline) an |
14 | AUTOFD | > | Autofeed, veranlasst nach Carriage Return (CR) einen Zeilenumbruch (LF) |
15 | ERROR | < | Error |
16 | INIT | > | Druckerreset |
17 | SELIN | > | Select In, teilt dem Drucker mit, dass er angesprochen ist |
18 | GND | – | Signal Ground |
19 | GND | – | Signal Ground |
20 | GND | – | Signal Ground |
21 | GND | – | Signal Ground |
22 | GND | – | Signal Ground |
23 | GND | – | Signal Ground |
24 | GND | – | Signal Ground |
25 | GND | – | Signal Ground |
Pin | Name | Richtung(1) | Funktion |
---|---|---|---|
1 | STROBE | > | Strobe |
2 | data0 | <> | Address, Data or RLE Data Bit 0 |
3 | data1 | <> | Address, Data or RLE Data Bit 1 |
4 | data2 | <> | Address, Data or RLE Data Bit 2 |
5 | data3 | <> | Address, Data or RLE Data Bit 3 |
6 | data4 | <> | Address, Data or RLE Data Bit 4 |
7 | data5 | <> | Address, Data or RLE Data Bit 5 |
8 | data6 | <> | Address, Data or RLE Data Bit 6 |
9 | data7 | <> | Address, Data or RLE Data Bit 7 |
10 | ACK | < | Acknowledge |
11 | BUSY | < | Busy |
12 | PError | < | Paper End |
13 | Select | < | Select |
14 | AutoFd | > | Autofeed |
15 | Fault | < | Error |
16 | Init | > | Initialize |
17 | SelectIn | > | Select In |
18 | GND | – | Signal Ground |
19 | GND | – | Signal Ground |
20 | GND | – | Signal Ground |
21 | GND | – | Signal Ground |
22 | GND | – | Signal Ground |
23 | GND | – | Signal Ground |
24 | GND | – | Signal Ground |
25 | GND | – | Signal Ground |
(1): > bedeutet vom PC zum Gerät, < bedeutet vom Gerät zum PC, <> bedeutet bidirektionale Signalleitung. Datenflussrichtung wird ausgehandelt; –: Masseleitung (ohne Datenflussrichtung)
Die Datenübertragung erfolgt nach folgendem Protokoll:
Für eine ohne differenzierte Rückmeldungsmöglichkeit funktionierende Datenübertragung in einer Richtung reicht auch eine abgespeckte Schnittstelle mit 8 Datenleitungen, Strobe sowie Ack oder Busy. Eine solche Mini-Centronics wurde häufig beim Commodore 64 eingesetzt. Dieser verwendete eine proprietäre Schnittstelle für die firmeneigenen Drucker, bot daneben aber noch eine frei programmierbare Mehrzweck-Schnittstelle, den sogenannten Userport. Die Mini-Centronics bot eine Möglichkeit, Nicht-Commodore-Drucker auch ohne teure Schnittstellen-Adapterbox betreiben zu können. Stattdessen reichte ein Flachbandkabel mit passenden Steckern, ein sog. Userport-Kabel. Am Userport befanden sich nur 10 nutzbare Ein- bzw. Ausgabeleitungen, so dass eine volle Centronics-Schnittstelle nicht möglich war. Allerdings funktionierte das nur mit einem modifizierten Kernel, der einen Konverter von der hauseigenen Schnittstelle auf Centronics beinhaltete (viele Floppy-Speeder) oder mit Programmen, die diese Betriebsart explizit beherrschten, da es auf dem C64 erst mit GEOS anwendungsunabhängige Gerätetreiber gab.