Der IEC-625-Bus ist die internationale Normbezeichnung für einen externen parallelen Datenbus, der vorrangig zur Verbindung von Messgeräten und Peripheriegeräten wie Plottern und Druckern mit einem Computer eingesetzt wird, wobei bis zu 15 Geräte angeschlossen werden können. Die maximale Geschwindigkeit der Standardausführung beträgt 1 MByte/s.
Inhaltsverzeichnis |
Der Bus wurde in den 1960er Jahren von der Firma Hewlett-Packard (HP) als HP-IB entwickelt, und von dieser Ende der 1970er Jahre zur IEEE-Standardisierung eingereicht. 1975 erfolgte die Standardisierung als IEEE-488-1975. 1978 wurde der Standard überarbeitet und als IEEE-488-1978 veröffentlicht (später umbenannt zu IEEE 488.1, 2004 umbenannt zu IEEE 60488.1:2004). HP-IB entspricht diesem Standard. ANSI übernahm den Standard als ANSI Standard MC 1.1. Die IEC übernahm den Standard als IEC-625.
1987 verabschiedete das IEEE eine Ergänzung, IEEE 488.2 (alias IEEE 60488.2:2004), die den Originalstandard erweitert, nicht ersetzt. Der Originalstandard definierte keine Datenübertragungsprotokolle oder Gerätekommandos. Um den Wildwuchs von Herstellerlösungen einzudämmen, wurde 1990 IEEE 488.2 um eine standardisierte Kommandosprache SCPI erweitert. Viele Geräte erfüllen auch heute noch nicht den IEEE488.2-Standard. Im Rahmen einer Studienarbeit der BA Mannheim (PC-Messkarte) wurde 1992 eine weitere Ergänzung der IEEE 488.2 vorgenommen, wodurch insbesondere im Bereich der Datenübertragungsprotokolle neue Erkenntnisse eingearbeitet wurden.
Schnellere Varianten sind z. B. als HS488 bekannt, welcher 2003 als IEEE 488.1-2003 standardisiert wurde. Ältere Geräte sind jedoch teilweise nicht in der Lage, das HS488-Protokoll zu verarbeiten. Bei einer Mischbestückung muss dies daher entsprechend berücksichtigt werden.
Der Bus ist ein paralleler 8-Bit-Bus, mit dem bis zu 15 Geräte verbunden werden können. Es können zwar 30 Geräte adressiert werden, die physikalische Spezifikation gestattet jedoch nur den Anschluss von 15 Geräten pro Bus. Der Bus enthält 16 Signalleitungen, davon acht Datenleitungen, drei zur Steuerung der Datenübertragung (handshake), und fünf Signale zum Bus-Management.
Den angeschlossenen Geräten muss einmal von Hand eine der 30 möglichen Adressen zugewiesen werden. Klassischerweise erfolgt dies am Gerät mit einem DIP-Switch. Moderne Geräte erlauben gelegentlich auch, die Adresse in der Firmware des Gerätes einzustellen.
Von den angeschlossenen Geräten darf zu einem Zeitpunkt maximal eines Daten senden (das Gerät, das zuvor als talker definiert wurde), allerdings können die Daten zu mehreren der anderen angeschlossenen Geräte gesendet werden, da alle nicht-sendenden Geräte gleichzeitig vom Bus lesen dürfen (genaugenommen müssen aktiv lesende Geräte zuvor als listener definiert werden).
Durch ein 3-Phasen-Handshake (Bereit/Daten gültig/Daten akzeptiert) bestimmt das langsamste Gerät am Bus die Geschwindigkeit der Übertragung. Daher ist es ungünstig, Geräte mit deutlich unterschiedlichen Geschwindigkeiten an einem Bus zu mischen, es sei denn, der Geschwindigkeitsverlust kann toleriert werden.
Der Standard definiert verschiedene logische Funktionen von Geräten (z. B. Source Handshake (SH), Acceptor Handshake (AH), Service Request (SR), oder Control (C), wobei eine nachgestellte Ziffer die implementierte (Sub-)Funktionalität angibt (0 = keine Funktion). Auf Geräten bzw. in Handbüchern sind diese "Fähigkeiten" (capabilities) der Schnittstelle in zusammengefasster Form angegeben, z. B. "SH1 AH1 T6 L4 SR0 RL1 PP0 DC1 DT0 C0". Der Bus benötigt im Gegensatz zu moderneren Standards wie USB nicht unbedingt einen Controller — so kann z. B. ein auf talk only eingestelltes Messgerät direkt mit einem auf listen only eingestellten Drucker zur Protokollierung verbunden werden.
IEEE-488-1 definiert nur die Übertragung von Daten, nicht die Kommandos zum Steuern von Peripheriegeräten. Dafür wird ein zusätzliches Protokoll benötigt, z. B. verwendet HP ein Protokoll names CS-80 (Command Set 80) für die eigene Peripherie.
Gruppe | Signalname | Bezeichnung | Beschreibung |
---|---|---|---|
Daten | DIO1–DIO8 | Daten | |
Handshake | NRFD | Not Ready for Data | Listeners teilen mit diesem Signal mit, dass sie das Datenbyte auf DIO1-8 noch nicht verarbeitet haben. |
DAV | Data Valid | Die Daten auf DIO1-DIO8 sind gültig. Dieses Signal wird vom Talker eine kurze Zeit nach dem Anlegen der Daten aktiviert. | |
NDAC | Not Data Accepted | Mit NDAC teilen die Listener mit, dass sie das Datenbyte auf den DIO-Leitungen noch nicht verarbeitet haben. | |
Protokoll | ATN | Attention | ATN zeigt an, dass die Datenleitungen ein Kommandobyte (z. B. Adresse) enthalten. Wird zusammen mit EOI für Parallelabfragen (parallel poll) verwendet. |
EOI | End or Identify | Wird zusammen mit dem letzten Byte einer Nachricht aktiviert, um deren Ende anzuzeigen. | |
IFC | Interface Clear | Der Systemcontroller kann mit dieser Leitung den Bus zurücksetzen und sich als aktiver Controller etablieren. | |
REN | Remote Enable | Wird vom Controller aktiviert, um den Remote-Modus der Busteilnehmer freizugeben. Wird REN deaktiviert, gehen alle Teilnehmer zurück in den Lokalmodus. | |
SRQ | Service Request | Busteilnehmer können über dieses Signal dem aktiven Controller mitteilen, dass sie bedient werden wollen – etwa die Funktion einer Interrupt-Leitung bei einem Mikroprozessor. |
+ | --- | ---+ DIO1 | 1 13 | DIO5 DIO2 | 2 14 | DIO6 DIO3 | 3 15 | DIO7 DIO4 | 4 16 | DIO8 EOI | 5 17 | REN DAV | 6 18 | GND (verdrillt mit DAV) NRFD | 7 19 | GND (verdrillt mit NRFD) NDAC | 8 20 | GND (verdrillt mit NDAC) IFC | 9 21 | GND (verdrillt mit IFC) SRQ | 10 22 | GND (verdrillt mit SRQ) ATN | 11 23 | GND (verdrillt mit ATN) SHIELD | 12 24 | Signal GND | ---+ | ---/ +/
Platinenkerbe Platinenkerbe 1 - DIO1 9 - IFC E - REN | | 2 - DIO2 10 - SRQ F - GND 1 1 1 3 - DIO3 11 - ATN H - GND 1 2 3 4 5 6 7 8 9 0 1 2 4 - DIO4 12 - GND J - GND = = = = = = = = = = = = 5 - EOI A - DIO5 K - GND ###### ################### ######### 6 - DAV B - DIO6 L - GND = = = = = = = = = = = = 7 - NRFD C - DIO7 M - GND A B C D E F H J K L M N 8 - NDAC D - DIO8 N - GND
Der Bus ist heute in Laboratorien zur Steuerung und Kontrolle von Messgeräten noch weit verbreitet. Jedoch ist er nicht auf diese Verwendung beschränkt, er ist ein general purpose (für allgemeine Verwendung vorgesehener) Bus, der lange Zeit auch als Standard-Anschluss für Plotter und Drucker diente. Auch Massenspeicher, von Disketten-Laufwerken über Bandlaufwerke bis hin zu Festplatten, wurden über IEEE-488 angeschlossen, z. B. bei HP-Workstations der 1970er und 1980er Jahre.
Der Commodore PET/CBM besaß ebenfalls diesen Bus und nutzte ihn vor allem für Diskettenlaufwerke und Drucker. Die späteren Commodore-Modelle vom VC-20 bis zum C128 verwendeten die proprietäre serielle Variante CBM-Bus.