Academic Company Events NI Developer Zone Support Solutions Products & Services Contact NI MyNI

Document Type: Tutorial
NI Supported: Yes
Publish Date: Oct 29, 2007


Feedback


Yes No

Related Links - Developer Zone

Related Links - Products and Services

Was man bei der Implementierung von LabVIEW Real-Time Treibern beachten sollte

0 ratings | 0.00 out of 5
Print | PDF

Overview

Dieses Dokument richtet sich an alle, die einen Real-Time-Treiber für ein PXI-, CompactPCI- oder PCI-Gerät eines Drittherstellers implementieren möchten. Es soll Anwender dabei unterstützen, die optimale Implementierungsmethode für die jeweilige individuelle Situation auszuwählen.

Hintergrund

Die Implementierungsmethoden, die hier empfohlen werden, basieren auf der VISA-Programmierschnittstelle  (Application Programming Interface, API).

Bei VISA handelt es sich um eine Reihe offener Standards, die von über 50 führenden Unternehmen im Bereich der Herstellung, Anwendung und Systemintegration von Mess- und Prüftechnik entwickelt und gewartet werden. Die VISA-Standards wurden ins Leben gerufen, um Mess- und Prüfsysteme verschiedener Anbieter effizienter integrieren zu können. Dies gilt für Systeme, die auf VXI- oder VME-Hardwareplattformen basieren oder über kabelgebundene Schnittstellen des Typs IEEE 488 (GPIB ) oder RS232/422 gesteuert werden.

Die Implementierung der VISA-Software durch National Instruments nennt sich NI-VISA. Neben den oben aufgezählten Gerätetypen ist NI-VISA auch mit CompactPCI- und PXI-Geräten auf den Plattformen Windows und LabVIEW Real-Time  kompatibel. Über die NI-VISA-API lassen sich Gerätesteuerung/Status aufzeichnen, Lese- und Schreiboperationen durchführen, Interrupt-Handling betreiben und gemeinsamer Speicher für den direkten Speicherzugriff (Direct Memory Access, DMA) zuweisen. Mit NI-VISA können mittels der in Abbildung 2 dargestellten Architektur auch Treiber für Geräte von Drittherstellern entwickelt werden.

 

Abbildung 1: Architektur eines LabVIEW-Real-Time-Gerätetreibers

Lizenzen für NI-VISA sind bei Systemsteuerungs- und Messhardware von NI sowie bei NI LabVIEWLabWindows/CVI, Measurement Studio und anderen Werkzeugen von NI zur Anwendungsentwicklung im Lieferumfang enthalten. Lizenzen für NI-VISA sind auch separat erhältlich.

Komplexität von Geräten

Zur Evaluierung der optimalen Strategie für die Treiberimplementierung müssen ein paar wichtige Eigenschaften des jeweiligen Geräts beachtet werden. Die Komplexität des Treibers steht meist im direkten Zusammenhang mit der Komplexität des Geräts, die stark variieren kann.

Manche Geräte sind sehr einfach in ihrer Funktion, wie z. B. ein Schaltmodul, bei dem ein Treiber direkt den Status jedes Relais steuert, indem er einzelne Bits in seinem Gerätesteuerungs-/Status-Register setzt/rücksetzt. Ein Treiber für ein solches Gerät kann meist ohne viel Aufwand implementiert werden.

Andere Geräte besitzen kompliziertere Registerabbilder, die nicht genau der Funktionalität entsprechen, die in einer typischen Anwendung gewünscht wird. Beispielsweise könnten Konfiguration, Status und Dateninformationen für eine einzige I/O-Funktion verschiedenen Registern zugeordnet sein. Andersherum können mehrere I/O-Funktionen mehreren Bit-Feldern innerhalb eines einzigen Registers zugeordnet werden. Ein Treiber für ein solches Gerät muss die von der API zur Verfügung gestellte Funktionalität in die Programmierlogik übertragen, die von den Hardwareregistern gefordert wird.

Geräte, die asynchrone Ereignisse erzeugen oder große Datenmengen übertragen, bedienen sich oftmals Interrupts oder DMA, um die Auslastung des Prozessors zu reduzieren. Diese Funktionen erfordern einen noch komplexeren Treiber.

Kurz gesagt muss der Treiber mit steigender Komplexität des Geräts mehr leisten, um die Treiber-API-Funktionen in Sequenzen von Registeroperationen umzuwandeln.

Hinweis: Für wichtige I/O-Schnittstellen (Tastatur, Maus, Video, Datenspeicherung, Netzwerke, serieller Anschluss, Druckeranschluss etc.) bietet das Betriebssystem eine Softwareinfrastrukur, die Standardprotokolle und APIs bewältigt. Unter VISA kommuniziert ein Treiber mit dem Gerät. VISA bietet keinen Zugriff auf das Gerät über Standardschnittstellen wie Datei-I/O oder TCP/IP. Deshalb eignen sich solche I/O-Schnittstellen meist nicht sehr gut für die VISA-basierte Treiberentwicklung.

Erstellung eines nativen LabVIEW-Treibers

Ein Gerätetreiber kann mithilfe der NI-VISA-API für LabVIEW in nativen LabVIEW Code implementiert werden. Für einfache Geräte lässt sich ein Treiber eventuell schon mithilfe des Hardwarehandbuchs erstellen, das der Gerätehersteller mitliefert.

Komplexe Geräte erfordern jedoch die Unterstützung des Herstellers. Bestehender Treiberquellcode ist eine nützliche Referenz, obwohl er in LabVIEW umgeschrieben wird.

National Instruments bietet standardisierten Support für die Fehlerbehebung von LabVIEW-Code in der LabVIEW-Real-Time-Umgebung auf Quellcodeebene.

Portierung eines bestehenden Treibers in LabVIEW

Anstatt den Treiber in LabVIEW neu zu erstellen, ist es u. U. effizienter, einen bestehenden Treiber aus C von seiner ursprünglichen Plattform in VISA zu importieren und dann Wrapper-VIs um die API-Funktionsaufrufe zu erstellen. Diese Methode erfordert einige Geduld und gute technische Unterstützung vom Gerätehersteller, ist allerdings nützlich, wenn der bestehende Treiber neben der Kommunikation mit dem Gerät viel mehr Funktionalität bietet. Da die Implementierung all dieser Funktionalität in LabVIEW kompliziert und zeitaufwändig wäre, ist es effizienter, den bestehenden Treiber zu portieren.

Hinweis: Zum Zeitpunkt der Entstehung dieses Dokuments ist die Ausführungsumgebung LabVIEW Real-Time nicht in der Lage, mit Fehlerbehebung für C-Code auf Quellcodeebene umzugehen. Standardmäßig bietet National Instruments keinen Support für diese Methode. C-Code kann in LabVIEW portiert, danach unter Windows auf Fehler untersucht werden und dann auf dem Real-Time-Zielsystem ausgeführt werden. Da NI-VISA sowohl mit Windows als auch mit LabVIEW Real-Time kompatibel ist, sollte sich der Treiber, nachdem Fehler in Windows behoben wurden, ohne Änderungen unter LabVIEW Real-Time ausführen lassen. Aufgrund der Unterschiede in den Umgebungen Windows und LabVIEW Real-Time gibt es jedoch keine Garantie, dass diese Methode funktioniert, auch wenn damit bereits zahlreiche komplexe Treiber erfolgreich implementiert wurden.

Determinismus

Die Implementierung von LabVIEW Real-Time Systemen geschieht oft, weil deterministische Ausführung notwendig ist. Bei zunehmender Komplexität eines Treibers wird es auch immer schwieriger, den Einfluss, den er auf diese Eigenschaft haben wird, vorauszusagen oder zu charakterisieren.

Nur Treiber, die den Prozessor regelmäßig freigeben, eignen sich für LabVIEW Real-Time Anwendungen. Beim Design eines LabVIEW Real-Time Treibers muss sichergestellt werden, dass der Treiber den Hauptprozessor freigibt, so dass andere Aufgaben fertiggestellt werden können.

Bei der Portierung eines C-basierten Treibers ist es erforderlich, das bestehende Design zu untersuchen und erforderliche Änderungen vorzunehmen.

Die nächsten Schritte

Dieses Dokument konnte hoffentlich einen guten Eindruck von der Treiberimplementierung vermitteln. Weitere Informationen zur Entwicklung von Treibercode steht in folgenden Dokumenten bereit:

Configuring the Real-Time Environment to Recognize a Third Party Device “ beschreibt, wie NI-VISA so konfiguriert werden kann, dass ein PCI-Gerät erkannt wird.

Mehr darüber, wie ein LabVIEW-basierter Treiber geschrieben wird, steht in der Application Note „Developing a LabVIEW Real-Time Driver for a PXI or Compact PCI Device “.

Die Application Note „Porting a Windows Device Driver to LabVIEW Real-Time “stellt Informationen über die Portierung eines bestehenden Windows-Gerätetreibers in die Real-Time-Umgebung bereit.

0 ratings | 0.00 out of 5
Print | PDF

Legal
This tutorial (this "tutorial") was developed by National Instruments ("NI"). Although technical support of this tutorial may be made available by National Instruments, the content in this tutorial may not be completely tested and verified, and NI does not guarantee its quality in any way or that NI will continue to support this content with each new revision of related products and drivers. THIS TUTORIAL IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND AND SUBJECT TO CERTAIN RESTRICTIONS AS MORE SPECIFICALLY SET FORTH IN NI.COM'S TERMS OF USE (http://ni.com/legal/termsofuse/unitedstates/us/).