Konfigurieren des GPIB-Treibers für Ihr System

Überblick

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.


Inhalt

GPIB-Konfigurationsoptionen

Zum Ändern der Standardkonfigurationsoptionen Ihres Systems gibt es drei Methoden mit der NI-488-Software. Sie lauten wie folgt:

  • Starten Sie das Konfigurationsprogramm IBCONF.
  • Führen Sie eine spezielle Batch-Datei (*.BAT) aus, die die IBCONF-Datei dynamisch ändert.
  • Verwenden Sie spezielle Konfigurationsfunktionen in Ihrem Anwendungsprogramm.


In den folgenden Abschnitten werden die Methoden zum Ändern der Treiberkonfigurationsmerkmale und die Vorteile jeder Methode erläutert.

 

Methode 1: Das Konfigurationsprogramm IBCONF


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:

  • Ein symbolischer Name (z. B. DEV5, PLOTTER oder METER).
  • Eine primäre GPIB-Adresse und, falls verwendet, eine sekundäre Adresse.
  • Eine bei der Ausführung bestimmter Funktionen festgelegte Zeitbegrenzung. Diese Zeitbegrenzung stellt sicher, dass Übertragungen den GPIB nicht unbegrenzt aufhängen.
  • Datenabschlussmethode bei Geräteaufrufen – durch ein EOS-Zeichen (End Of String), ein EOI-Signal (End Or Identify) und/oder eine Byte-Anzahl.
  • Ein Parameter zum Aktivieren oder Deaktivieren der Wiederholungsadressierung für Back-to-Back-Funktionsaufrufe eines Geräts.


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:

  • Ein symbolischer Name (entweder GPIB0 oder GPIB1).
  • Eine primäre GPIB-Adresse und, falls verwendet, eine sekundäre Adresse.
  • Kapazität, die als System-Controller der Geräte auf seinem Bus festgelegt werden soll, und spezifische Aktionen, die als System-Controller ausgeführt werden sollen.
  • Eine Zeitbegrenzung bei der Ausführung bestimmter Funktionen.
  • Eine GPIB-Datenabschlussmethode bei der Ausführung von Kartenfunktionen (EOS-Zeichen, EOI-Signal und/oder Byte-Anzahl).
  • Eine Interrupt-Leitung, die von der Karte verwendet wird.
  • Ein DMA-Kanal, den die Karte verwendet, sofern vorhanden.
  • Timing-Geschwindigkeit (T1-Verzögerung) bei der Datenübertragung.


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.

 

Methode 2: IBCONF-Batch-Modus


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:

ibconf -b Dateiname<Enter>


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).

Tabelle 1: Batch-Modus-Befehlspaare
Erstes Objekt
Zweites Objekt
Kurzform
Erklärung
Wert
suchenKarte oder Gerät suchenKarte oder Gerät
Padprimäre GPIB-AdresseZahl
SadSekundäre GPIB-AdresseZahl
ZeitTimeout-EinstellungenZahl oder Mnemonik
EOSEOS-ByteZahl
ReosLesen bei EOS beendenJa oder Nein
xeosBeim Schreiben EOI mit EOS aktivierenJa oder Nein
IntervallVergleichsart auf EOS7-Bit oder 8-Bit
EotEOI mit letztem Schreibbyte festlegenJa oder Nein
scSystem-Controller (nur Karte)Ja oder Nein
NurREN aktivieren, wenn SC (nur Karte)Ja oder Nein
PollAutomatisches serielles Polling aktivieren (nur Karte)Ja oder Nein
ZeitTiming (nur Karte)2usec, 500ns,
350ns
e488_2488.2-Protokolle aktivieren (nur Karte)Ja oder Nein
cic_protCIC-Protokoll (nur Karte)Ja oder Nein
intInterrupt-Einstellung (nur Karte)Zahl
PortBasis-I/O-Adresse (nur Karte)Zahl
dmaDMA-Kanal (nur Karte)Zahl
RaddrAdressierung wiederholen (nur Gerät)Ja oder Nein
nameGerät umbenennen (nur Gerät)Gerätename
VerbindenGerät mit Karte verbinden (nur Gerät)Karte#
TrennenGerät von Karte trennen (nur Gerät)Kein Wert
TypWechseln der aktuellen Karte in den PC2- oder PC2A-Moduspc2 oder pc2a



Das folgende Beispiel ist eine Beispielkonfigurationsdatei mit einer schrittweisen Erklärung jedes Eintrags.

Beispiel: Beispielkonfigurationsdatei scanner.cfg

Voraussetzungen:

  1. Ändern Sie den Namen des ersten Geräts in Scanner.
  2. Ändern Sie den Namen des dritten Geräts in Anwendungsbereich.
  3. Ändern Sie die Konfiguration von board0 (gpib0).
    • Primäradresse nach 2 (Pad 2)
    • Timeout-Einstellung auf T30s (tmo T30s)
    • EOS Byte nach Hexadezimal 1E (eos 0x1E)
    • System-Controller-Fähigkeit auf NEIN (sc nein)
    • Vergleichsart auf EOS mit 8 Bit (Bin 8 Bit)
    • GPIB-Bus-Timing-Geschwindigkeit bis 350 ns (tmng 350 ns)


Konfigurationsdatei:

 

Methode 3: Spezielle Konfigurationsfunktionen

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

IblnAufrufen(dev%, i%, sad%, listen%)

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.

WENN Listen% = 1 DANN
Gerät%(cnt%) = i%
cnt% = cnt% + 1
END, WENN

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

 

Zusammenfassung


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.

 

Was this information helpful?

Yes

No