Eines der häufigsten Probleme, die ein GPIB Software Entwickler hat, ist das Konfigurieren der Software für die Anforderungen jedes Testsystems. Da ein Treiber mit einer Vielzahl von Systemen arbeitet, muss die Konfiguration des Treibers einfach sein. Die NI-488-Software von NI bietet verschiedene Konfigurationsmethoden, so dass Sie die Methode auswählen können, die für Ihre Anwendung am besten geeignet ist. In diesem Dokument werden alle mit der MS-DOS-Software NI-488 verfügbaren Konfigurationsmethoden beschrieben.
Zum Ändern der Standardkonfigurationsoptionen Ihres Systems gibt es drei Methoden mit der NI-488-Software. Sie lauten wie folgt:
In den folgenden Abschnitten werden die Methoden zum Ändern der Treiberkonfigurationsmerkmale und die Vorteile jeder Methode erläutert.
IBCONF.EXE ist ein interaktives Programm, das zwei Gruppen von Funktionen an den Treiber übergibt. Die erste Gruppe besteht aus den Merkmalen der an die GPIB-Schnittstelle angeschlossenen Geräte. Jedes Gerät hat folgende Merkmale:
Die zweite Gruppe besteht aus den Merkmalen jeder GPIB-Schnittstellenkarte im Computer. Der NI-488-Treiber kann bis zu zwei GPIB-Schnittstellenkarten steuern. Jede GPIB-Schnittstellenkarte hat folgende Merkmale:
Die Vorteile beim manuellen Ausführen und Bearbeiten von IBCONF bestehen darin, dass Sie bei der Konfiguration aller Geräte völlig flexibel sind und nicht jedem Anwendungsprogramm Konfigurationscode hinzufügen müssen.
Der IBCONF-Batch-Modus bietet eine alternative Methode zum Ändern der Konfigurationsparameter des NI-488-Treibers. Im Batch-Modus sind die Konfigurationsdaten in einer von Ihnen erstellten Konfigurationsdatei enthalten. Zum Laden der Konfigurationsdaten aus der erstellten Datei geben Sie den folgenden Befehl ein:
wobei Dateiname der Name der Konfigurationsdatei ist, z. B. Beispiel.cfg. Zwischen -b und Dateiname muss mindestens ein Leerzeichen vorhanden sein.
Das IBCONF-Geräte-Map wird nicht angezeigt, aber eine Aufforderung zum Aktualisieren des geladenen GPIB-Treibers im Speicher. Beim Beantworten mit "Ja" muss der Computer nach den Änderungen nicht neu gestartet werden. Sie können die Eingabeaufforderung jedoch eliminieren, so dass der Treiber automatisch aktualisiert wird, indem Sie IBCONF mit der Option -d ausführen. Dadurch wird automatisch die geladene Version des Treibers konfiguriert.
Der Batch-Modus eignet sich sowohl für GPIB-Entwickler, die ausführbare Programme verteilen, als auch für GPIB-Endnutzer. Für Entwickler, die eine installierte Basis von Programmen haben, ist die Verwendung dieses Batch-Modus von IBCONF eine einfache Möglichkeit, eine ordnungsgemäße Konfiguration sicherzustellen, ohne Änderungen an ihren vorhandenen Programmen vornehmen zu müssen. Der Benutzer führt einfach die Batch-Datei aus und die GPIB-Geräte werden automatisch konfiguriert. Programmierer können Batch-Dateien für jedes ihrer Programme entwickeln.
Die Batch-Datei kann mit jedem beliebigen Texteditor bearbeitet werden. Die Batch-Datei ist eine Freiform-Textdatei, die aus Objektpaaren besteht. Jedes Objekt muss durch mindestens ein Leerzeichen oder neues Zeilenzeichen getrennt sein – dies ist die einzige Formateinschränkung. Das erste Objekt eines Paares ist eine Mnemonik, die ein Karten- oder Gerätemerkmal darstellt, oder eine zu konfigurierende Kartenkonfigurationsfunktion (z. B. umbenennen, verbinden, trennen). Das zweite Objekt eines Paars ist der Wert, auf den das erste Objekt (mnemonic) gesetzt werden soll. Um beispielsweise dev8 in der Gerätezuordnung in Scanner umzubenennen, geben Sie die folgende Codezeile in die Batch-Datei ein:
Um das automatische serielle Polling für gpib0 zu aktivieren, geben Sie die folgende Codezeile ein:
Board suchen0 Poll ja
Alle in der eigentlichen IBCONF-Datei gefundenen Merkmale können im Batch-Modus geändert werden, einschließlich der Basis-I/O-Adresse, der Interrupt-Einstellung und des DMA-Kanals. Genau wie mit der IBCONF-Geräteliste können Sie auch Geräte mit den GPIB-Schnittstellenkarten verbinden und trennen. Tabelle 1 enthält eine Liste aller gültigen Konfigurationsobjektpaare. Jeder Wert, der als Zahl eingegeben werden kann, kann im Dezimal- oder Hexadezimalformat eingegeben werden. Hexadezimalzahlen muss 0x vorangestellt werden (z. B. würde Dezimalzahl 64 als 0x40 geschrieben).
|
Erstes Objekt
|
Zweites Objekt
| |
|
Kurzform
|
Erklärung
|
Wert
|
| suchen | Karte oder Gerät suchen | Karte oder Gerät |
| Pad | primäre GPIB-Adresse | Zahl |
| Sad | Sekundäre GPIB-Adresse | Zahl |
| Zeit | Timeout-Einstellungen | Zahl oder Mnemonik |
| EOS | EOS-Byte | Zahl |
| Reos | Lesen bei EOS beenden | Ja oder Nein |
| xeos | Beim Schreiben EOI mit EOS aktivieren | Ja oder Nein |
| Intervall | Vergleichsart auf EOS | 7-Bit oder 8-Bit |
| Eot | EOI mit letztem Schreibbyte festlegen | Ja oder Nein |
| sc | System-Controller (nur Karte) | Ja oder Nein |
| Nur | REN aktivieren, wenn SC (nur Karte) | Ja oder Nein |
| Poll | Automatisches serielles Polling aktivieren (nur Karte) | Ja oder Nein |
| Zeit | Timing (nur Karte) | 2usec, 500ns, 350ns |
| e488_2 | 488.2-Protokolle aktivieren (nur Karte) | Ja oder Nein |
| cic_prot | CIC-Protokoll (nur Karte) | Ja oder Nein |
| int | Interrupt-Einstellung (nur Karte) | Zahl |
| Port | Basis-I/O-Adresse (nur Karte) | Zahl |
| dma | DMA-Kanal (nur Karte) | Zahl |
| Raddr | Adressierung wiederholen (nur Gerät) | Ja oder Nein |
| name | Gerät umbenennen (nur Gerät) | Gerätename |
| Verbinden | Gerät mit Karte verbinden (nur Gerät) | Karte# |
| Trennen | Gerät von Karte trennen (nur Gerät) | Kein Wert |
| Typ | Wechseln der aktuellen Karte in den PC2- oder PC2A-Modus | pc2 oder pc2a |
Das folgende Beispiel ist eine Beispielkonfigurationsdatei mit einer schrittweisen Erklärung jedes Eintrags.
Beispiel: Beispielkonfigurationsdatei scanner.cfg
Voraussetzungen:
Konfigurationsdatei:
Eine dritte Möglichkeit zum Konfigurieren von Geräten besteht darin, diese im Anwendungsprogramm mit Hilfe spezieller Konfigurationsfunktionen dynamisch zu konfigurieren. Wie bereits beschrieben, erfordert die Konfiguration eines GPIB-Systems Kenntnisse über den Bus und die angeschlossenen Geräte. Entwickler von Anwendungssoftware können den Treiber dynamisch konfigurieren, so dass Anfänger IBCONF nicht verstehen oder bearbeiten müssen. Diese Methode ist auch ideal, um viele verschiedene Systemkonfigurationen mit derselben GPIB-Schnittstellenkarte auszuführen. Im Programm vorgenommene Konfigurationsänderungen gelten nur während der Programmausführung. Nach Beendigung werden die Konfigurationsparameter auf ihre ursprünglichen Einstellungen zurückgesetzt. Diese Art der Konfiguration ist nicht nur effizienter, sondern auch sehr einfach, da sie in Form von Unterprogrammfunktionsaufrufen vorliegt.
Die IBCONFIG-Funktion
Mit der leistungsfähigsten Konfigurationsfunktion ibconfig können Sie alle in IBCONF gefundenen Softwareparameter dynamisch konfigurieren, indem Sie einfach ibconfig-Funktionsaufrufe zum Anwendungsprogramm hinzufügen. Sie können sicherstellen, dass der Treiber unabhängig von den Einstellungen in IBCONF ordnungsgemäß konfiguriert ist. Die Konfigurationsparameter von ibconfig können in zwei Gruppen unterteilt werden: Kartenparameter und Geräteparameter. Kartenparameter sind z. B. Hardware-Interrupts oder automatisches serielles Polling. Geräteparameter können die wiederholte Adressierung aktivieren/deaktivieren.
Mit ibconfig können Sie auch primäre und sekundäre Adressierung, Timeout und String-Ende auswählen. Die traditionellen NI-488-Konfigurationsfunktionen ibpad (Primäradresse ändern), ibsad (Sekundäradresse ändern), ibtmo (Timeout-Einstellung ändern), ibeos (Ende-des-Strings setzen) und ibeot (Ende-Beendigungsnachricht setzen) werden jedoch weiterhin unterstützt. Im folgenden Programmabschnitt wird die Verwendung der Funktion ibconfig veranschaulicht.
Beispiel für REM QuickBASIC 4.5
REM Der folgende Programmcode richtet ein Gerät für den GPIB-Betrieb ein.
REM
REM $INCLUDE: 'qbdecl.bas'
ibfind aufrufen ("dev1", dev%)
REM Primäradresse in 7 ändern
option% = IbcPAD:Wert% = 7
ibconfig aufrufen(dev%, option%, value%)
REM Timeout in 10 Sekunden ändern.
option% = IbcTMO:Wert% = 13
ibconfig aufrufen (dev%, option%, value%)
Die IBLN-Funktion
Die Funktion ibln sucht an der angegebenen Adresse nach einem Listener. Dies ist vergleichbar mit der NI-488.2TM-Routine FindLstn, mit dem Unterschied, dass der Parameter eine einzelne Geräteadresse und kein Array aus Adressen ist. ibln ist nützlich, um mehrere Adressen zu scannen, um herauszufinden, welche Listener sich auf dem Bus befinden. Sobald Sie die Adresse kennen, können Sie mit ibconfig die Primäradresse des Geräts im Treiber ändern.
Der folgende Teil des QuickBASIC-Codes sucht an allen GPIB-Primäradressen (ohne Sekundäradressen) auf dem Bus nach Listenern und meldet, welche Geräte gefunden wurden.
REM $INCLUDE: 'qbdecl.bas'
DIM-Gerät%(30)
cnt% = 0
REM
REM Mit dem folgenden Aufruf wird dev1 als allgemeines Gerät geöffnet.
REM Zum Aufrufen von ibln benötigen Sie einen Einheitendeskriptor.
ibfind("dev1", dev%) aufrufen
REM
REM Da Sie keine Sekundäradressen suchen, setzen Sie
REM den traurigen Parameter auf 0. sad% = 0
REM Scannt nun die 30 möglichen Primäradressen. Beachten Sie, dass
REM Sie überprüfen Adresse 0 nicht, da es die Standardeinstellung ist.
REM-Adresse des GPIB-Controllers, die immer
REM-Hören.
FÜR i% = 1 bis 30
REM Prüfen Sie die Antwort, um zu sehen, ob ein Listener am
REM-Adresse angegeben durch i%. Wenn ein Gerät lauscht, speichern
Speichern Sie die Adresse in das Array Device%(), das eine Liste ist.
REM aller aktiven Listener.
REM
REM Inkrementiert den Zählwert, wenn jeder Listener gefunden wird.
Nächste i%
REM Drucken Sie nun die aktiven Adressen aus.
DRUCKEN "Geräte befinden sich unter folgenden Adressen"
FOR j% = 0 bis cnt% - 1
DRUCKEN "Ein Gerät befindet sich an der GPIB-Adresse "; Gerät%(j%)
Weiter j%
Die IBDEV-Funktion
In traditionellen NI-488-Anwendungen wird die Funktion ibfind zum Öffnen von Geräten für die Kommunikation verwendet. ibfind gibt eine Nummer (den Einheitendeskriptor) aus, so dass GPIB-Aufrufe an das Gerät durchgeführt werden können. Zur Verwendung von ibfind muss der Gerätename jedoch in IBCONF vorkonfiguriert sein, da sonst ibfind fehlschlägt. Wie Sie sehen, ist dies ein Manko, wenn Sie den Gerätenamen nicht kennen.
Durch Verwendung der ibdev-Funktion anstelle der ibfind-Funktion können Sie ein Gerät öffnen und initialisieren, ohne seinen Namen zu kennen. ibdev ähnelt ibfind, mit dem Unterschied, dass Sie keinen Gerätenamen als eines der Argumente in der Funktion übergeben. ibdev öffnet einfach das erste vom Benutzer konfigurierbare Gerät, das gefunden wird, und gibt einen Einheitendeskriptor aus, der in ibconfig, ibln und allen anderen Aufrufen auf Geräteebene verwendet wird. Nachdem Sie ibdev aufgerufen haben, um einen Einheitendeskriptor zu erhalten, müssen Sie möglicherweise auch ibconfig aufrufen, um Kommunikationsmerkmale zu konfigurieren, die nicht mit ibdev konfiguriert wurden.
Ein Beispiel für die Verwendung von ibdev ist unten dargestellt.
REM bd.index% ist entweder 0 für gpib0 oder 1 für gpib1.
bd.index% = 0
REM pad% die Primäradresse des Geräts ist,
REM geöffnet. Nehmen Sie an, dass Sie im obigen Programm die
REM, dass an Adresse 7 ein Abhörgerät war.
pad% = Device%(0) : sad% = 0
REM Für die anderen Parameter, die angegeben werden müssen, setzen Sie
REM den Timeout auf 10 Sekunden, aktivieren Sie die END-Nachricht auf
REM schreibt und deaktiviert jeden EOS-Abschluss.
tmo% = 13 : eot% = 1 : eos% = 0
REM Beim Aufruf von ibdev ist der in ud% ausgegebene Wert der
REM-Einheitsdeskriptor.
ibdev(bd.index%, pad%, sad%, tmo%, eot%, eos%, ud%) aufrufen
In diesem Dokument wurden zwei alternative Methoden zum Konfigurieren eines GPIB-Systems beschrieben, die nicht dem traditionellen IBCONF-Verfahren entsprechen: das Batch-Modus-Verfahren und das Programming-Verfahren. Beide neuen Methoden konfigurieren den Treiber transparent mit wenig oder keinem Aufwand des Endnutzers. Im Batch-Modus können Sie eine Batch-Datei erstellen, die die Einstellungen in IBCONF konfiguriert, ohne dass der Endbenutzer die IBCONF-Datei bearbeiten muss. Mit den NI-488-Konfigurationsfunktionen können Sie den Treiber dynamisch konfigurieren, indem Sie dem Programm Funktionen hinzufügen. Drei der leistungsfähigsten NI-488-Konfigurationsfunktionen (ibconfig, ibln und ibdev) können einen bestimmten Listener finden und alle Konfigurationseinstellungen in IBCONF in Ihrem Anwendungsprogramm ändern.