Die Unterpalette LabVIEW GPIB 488 enthält folgende Funktionen, die für das serielle Polling in LabVIEW unerlässlich sind:
GPIB Serial Poll (ibrsp in NI-488) führt einen seriellen Poll durch und gibt den Wert des Statusbytes von einem Gerät aus. Das Programm muss das RQS-Bit im Statusbyte manuell überprüfen, um festzustellen, ob das Gerät einen Dienst angefordert hat.
GPIB Wait (ibwait in NI-488) wartet auf den Zustand, der durch eine bestimmte Statuswortmaske in einem bestimmten GPIB-Bus angezeigt wird. Das Statuswort ist eine globale Variable (16 Bit), die unter anderem den Zustand der SRQ-Leitung (Bit 12, SRQI) und ob ein Gerät einen Dienst angefordert hat (Bit 11, RQS) enthält. Wenn der übergebene Vektor 0 ist, wartet er auf keinen Case und aktualisiert ibsta oder das Statuswort. Wenn die Maske jedoch auf Bit 12 (SRQI) prüft, wartet die Funktion, bis diese bestimmte Leitung für eine bestimmte GPIB-Karte bestätigt wird, deren Adresse in GPIB: Warten angegeben ist.
Das
Warten auf GPIB RQS (ibwait in NI-488, mit Maske für Bit 11) ähnelt der Verwendung der GPIB-Wartefunktion mit Maske für Bit 11, jedoch unter Verwendung der GPIB-Adresse der jeweiligen Geräteadresse anstelle der Adresse der GPIB-Karte (beim Warten auf Bit 12). Diese Funktion wartet darauf, dass ein bestimmtes Gerät einen Service anfordert, und nicht darauf, dass eine Karte (mit der mehrere Geräte verbunden sein könnten) eine Serviceanfrage empfängt. Diese Funktion wartet, bis entweder das RQS-Bit aktiviert oder das Timeout überschritten wird.
In den folgenden Beispielen wird gezeigt, wie mit Hilfe von LabVIEW GPIB-Funktionen SRQs bedient und Geräte seriell abgefragt werden.
In LabVIEW Beispiel 1 (Abbildung 3) wird ein Befehl an einen NI-Gerätesimulator übertragen. Der Befehl enthält Anweisungen für das Gerät, eine Service Request (SRQ) zu erzeugen, wenn ein Ereignis des Typs Operation Completed im Ereignisstatusregister (ESR) registriert ist. Die ersten beiden Befehle schreiben diese Anweisungen an das Service Request Enable Register und das Event Status Enable Register (IEEE-488.2). Der dritte Befehl fordert den Gerätesimulator auf, eine Sinusschwingung zu erzeugen; der letzte Befehl erzeugt ein Ereignis des Typs Operation abgeschlossen. Der folgende Programmabschnitt wartet darauf, dass der SRQ durch Prüfen des Bits 12 des Statusworts erzeugt wird. Nachdem es erzeugt wurde, wird ein serieller Poll am Gerätesimulator durchgeführt, um das Statusbyte zu lesen und den Grund für die Erzeugung eines SRQ zu erfahren. Wenn Bit 5 (aus dem Ereignisstatusregister mit dem Bit Operation Complete) und Bit 6 (RQS, das Gerät hat den Dienst angefordert) gesetzt ist, liest die Steuereinheit die Daten vom Gerätesimulator zurück. Beachten Sie, dass das ESR-Register gelöscht werden muss. Dadurch wird verhindert, dass das Gerät unerwünschte Serviceanfragen erzeugt.
Abbildung 3: LabVIEW Beispiel 1
LabVIEW Beispiel 2 (Abbildung 4) zeigt eine andere Möglichkeit, auf eine Serviceanfrage zu warten. Im letzten Beispiel hält der Prozessor jedoch an und wartet, ohne weitere Operationen durchzuführen. Im ersten Beispiel könnten andere Operationen parallel ausgeführt worden sein, während das Gerät auf eine Serviceanfrage gewartet hat.
Abbildung 4: LabVIEW Beispiel 2