Startseite » Allgemein »

Messkarten einfach ansteuern

LabVIEW-Anwendungen für PC-Messkarten
Messkarten einfach ansteuern

Mittlerweile gibt es eine Unzahl von PC-Messkarten auf dem Markt, mit denen sich fast jede komplexe Mess-, Steuer- sowie Datenerfassungsaufgabe lösen lässt. Leider ist man mit dem Kauf der Hardware alleine nicht aus dem Schneider. Das größte Problem stellt für die meisten Anwender die softwaremäßige Anbindung der Messkarte an den PC dar. Auch wenn im Lieferumfang der Karten System-Treiber und DLLs für die verschiedenen Betriebssysteme enthalten sind, bleibt die Ansteuerung der Karte und die Ausgabe der Visualisierungsdaten, zum Beispiel über Programmiersprachen wie Delphi, Visual Basic, C oder C++ , im Allgemeinen den Spezialisten vorbehalten.

Hans Koerfer, Kolter Electronic, Erftstadt

Abhilfe schaffen hier spezielle Software-Lösungen, die den Anwendern einfach zu handhabende Werkzeuge zur Verfügung stellen, um eine schnelle und effiziente Umsetzung von komplexen Mess- und Steueraufgaben zu ermöglichen. Neben Programmierumgebung wie ProfiLab-Expert und HP-Vee (jetzt Agilent VEE) ist LabView von National Instruments eine der Anwendungen, die dazu geeignet sind die Ansteuerung der Karten und die Ausgabe der Visualisierungsdaten zu vereinfachen. Voraussetzung für den Einsatz dieser Programmierumgebungen ist, dass für die betreffenden Mess- und- und Steuerkarte eine DLL (Funktionsbibliothek) existiert, die diese Programme unterstützt. Eine entsprechende DLL könnte eventuell selbst geschrieben werden, was allerdings relativ intime Kenntnisse der Messkarte und der Treiberprogrammierung voraussetzt. Besonders Interessant wird der Einsatz der oben genannten Programmierumgebungen, wenn die DLLs von den jeweiligen Karten-Entwicklern bereits mitgeliefert werden. So wird bei der Firma KOLTER ELCTRONIC schon seit langem der Weg beschritten dem Kunden die Entwicklung der Anwendungssoftware so einfach wie möglich zu machen und die Bibliothek der mitgelieferten System-Treiber und DLLs ständig zu erweitern.
Was macht eigentlich eine DLL?
Eine DLL ist eine Programmbibliothek in der Funktionen implementiert sind, die erst zur Laufzeit eines Anwendungsprogramms hinzugeladen werden. Die DLL stellt das Bindeglied zwischen der Anwendung und den betriebssystemabhängigen Systemtreibern dar. Vereinfacht gesagt ist es ihre Aufgabe aus verschiedenen Funktionsaufrufen der Anwendung einen eindeutig gekennzeichneten Handle zu generieren. Dieser Handle liefert über den entsprechenden Funktionsaufruf einen Rückgabewert. Dies geschieht im Allgemeinen über einen Open-Befehl. Ist der Handle abgearbeitet sorgt ein Close-Befehl für die Beendigung des Handles.
In der obigen Beschreibung klingt schon das Problem an, das die Einbindung einer Programmierumgebung wie LabView mit Standard-DLLs oft erschwert. Müssen mehrere Funktionsaufrufe nacheinander gestartet werden, was bei komplexen Mess- Steuer- oder Datenerfassungsaufgaben normalerweise immer der Fall ist, würden, wegen der erforderlichen mehrfachen Funktionsaufrufe innerhalb der Anwendung, der Open-Befehl mehrmals gegeben, ohne das zuvor der Handle ordnungsgemäß mit einem Close abgeschlossen ist. Zu lösen ist dieses Problem nur, indem jeder partielle Funktionsaufruf in einen Open- und Close-Zyklus eingebettet wird.
Virtuelle Instrumente (VI) für Windows
LabVIEW von National Instruments ist eine grafische Programmierumgebung, die auf einer symbolischen Darstellung beruht. Beispielsweise wird ein Signalschaltplan quasi als Blockdiagramm „verdrahtet“ und in einem zweiten Fenster auf einer Art Frontplatte mit entsprechenden Bedienungs- und Anzeige-Symbolen verknüpft, um Schaltzustände und Messwerte zu visualisieren. Dies geschieht, indem die einzelnen VIs per Drag and Drop in das Blockdiagramm des Entwicklungsprogramm gezogen werden, wobei aus einer großen Bibliothek von Anwendungs- und Darstellungsfunktionen ausgewählt werden kann. Anschließend werden noch die einzelnen Funktionsblöcke über einen Eigenschaften-Dialog konfiguriert.
Zweck ist es, Mess- und Steuerhardware in Aussehen und Funktion möglichst praxisnah zu emulieren und dabei komplexe Aufgaben in Kürze zu lösen. Zudem können in LabVIEW auch Funktions-DLLs und implementierbarer C-Code eingebunden werden. LabVIEW wurde in erster Linie darauf abgestimmt, zeitkontinuierliche technische Prozesse zu überwachen und/oder aktiv zu steuern. Die virtuellen Instrumente, sogenannte VIs, dienen beispielsweise zur Darstellung von erfassten Messwerten (zum Beispiel von Sensoren) oder zur Steuerung einer realen, komplexen Industrieanlage. Mit entsprechenden LabVIEW-Treibern bzw. offenen VIs werden Mess- und Steuersignale der I/O-Hardware freigeschaltet. Sie lassen sich zudem über eine schier unendliche Vielfalt an Funktionen mit den virtuellen Steuer- und Anzeigeelementen beliebig, verdrahtungsorientiert verknüpfen. Dabei können recht komplexe Funktions-Hierarchien entstehen.
Nach erfolgreicher Programmierung können mit einer zusätzlichen Software, dem Application Builder, auch Anwendungen als Stand-Alone-EXE erzeugt werden. Für die Einbindung von 8/16-bit Digital-I/O-Karten, ob ISA oder PCI, können LabView-interne VISA-Module oder implementierbarer Code genutzt werden. Beides lässt die direkte Ansteuerung als 8,16 und 32-bit Read/Write-Operation innerhalb der VIs über Port-I/O-Zugriffe zu. Auch Schaltungen, die mit dem legendären 8255-PPI arbeiten, können über mehrere VI-Funktionen direkt adressiert werden. Beispiele dazu finden Sie auf der LabView-CD unter: examplesdaqdigitaldigital.h. Gleiches gilt für den 8253/-54 Counter-Baustein, zu dem ebenfalls I/O-Funktionsblöcke (in der ICTR-Gerätesteuerung) vorhanden sind, die im VI-Refernzhandbuch zu LabView ausführlich beschrieben werden.
Interessante Informationen, wie man unter Linux zu Zuge kommt, finden Sie unter: http://www.linux-magazin.de.
Eigene DLL einbinden und Hardware ansteuern
Natürlich besteht die Möglichkeit, dass Sie eine eigene DLL programmieren und deren Funktionen in LabVIEW aufrufen. Oder dass über ein Hardware-Tool (AccessHW.DLL), mit Befehlen wie In Port.vi und Out Port.vi, beliebige PC-Hardware auch manuell an LabVIEW angebunden werden kann. Dies ist besonders für ISA-Karten mit festen I/O-Adressen sehr nützlich. Einen Installationsbericht finden Sie dazu auf der Internetseite von National Instruments unter: http://sine.ni.com.
Im Folgenden finden Sie einige praktische Beispiele, die veranschaulichen wie sich die Ansteuerung von Messkarten über Virtuelle Instrumente realisieren lässt.
Einfaches VI-Beispiel mit Bit 0 Steuerung
Die erste Anwendung zeigt wie das erste Bit von Byte 1 einer I/O-Karte gesetzt wird. Der Übersichtlichkeit halber wird hier nur Bit 0 verwendet. Zudem wird in diesem Beispiel nur das erste Output-Byte verwendet, wodurch sofort die ermittelte Basisadresse verwendet werden kann. Ein Offset-Wert muss daher nicht hinzuaddiert werden. Es können selbstverständlich noch weitere Bits, I/O-Ports und PCI-Karten angesteuert und eingebunden werden, wie wir in den nächsten Beispielen zeigen.
KlibDrv2.DLL-Treiberanbindung für LabVIEW
Zuerst wollen wir uns ansehen wie der Hardware-Port einer I/O-Karte initialisiert wird und unter Windows 2000/XP mit LabVIEW 6i, unter Anbindung externer Bibliothekaufrufe, verwendet werden kann. Das VI-Beispiel ist exemplarisch und gilt auch für viele andere PCI-I/O-Karten, da sie über einen ähnlichen Registeraufbau verfügen.
PCI-Karten arbeiten mit einer dynamischen Basisadresse. Das heißt, dass zunächst die gültige Basisadresse über einen Funktionsaufruf ermittelt werden muss. Als Eingangs-Parameter wird in unserem Beispiel ein Wert für den Treiber und einer für die Kartennummer fest vorgegeben.
Das Anklicken des VI-Funktionsblocks im Diagramm öffnet einen Eigenschaften-Dialog, in dem der Funktionsaufruf ausgewählt und die entsprechenden Einstellungen vorgenommen werden.
Der Kippschalter wird als TRUE/FALSE-Element (TF) im Blockdiagramm dargestellt. Mittels solcher TF-Elemente werden übrigens auch die Kontrollleuchten realisiert, wie sie in den folgenden Anwendungsbeispielen implementiert sind.
Der TF-Wert des Schalters wird zunächst in einen Byte-Wert gewandelt und zusammen mit dem Adresswert an den nachfolgenden VI-Funktions-Block übergeben, der dann das entsprechende Ausgangsbit setzt.
Funktion: Bit auf dem Ausgabe-Port setzen
Eingabe : 8-bit Adresse des zu schreibenden Registers, Byte (0..255)
Funktionsprototyp: void outb_kolter(unsigned long ioadress, unsigned char value);
VI-Beispiel zur Ansteuerung einer 16-bit I/O-Karte
Das nächste VI-Beispiel ist etwas umfangreicher und zeigt, wie eine PCI-Karte mit 16 digitalen Ein- und Ausgängen byteweise angesteuert wird. Neben den Funktionsaufrufen getpci_ und outb_ wird dazu der Aufruf inb_ zum Einlesen der beiden Input-Register benötigt. Die zusätzlichen Funktionen check_ , boards_ und close dienen der Fehlerüberwachung beziehungsweise zur Kontrolle der Anwendung.
Hier sehen wir auch, dass im Allgemeinen zur Basisadresse noch ein Offsetwert hinzuaddiert werden muss, um mehrere Funktionsblöcke definiert ansprechen zu können. Die Summe dieses Adresswertes wird abschließend dem entsprechenden Funktionsaufruf übergeben. Beispiel:
Basisadresse + 0 = OUTPUT Register 1, Data 0…7,
Basisadresse + 1 = OUTPUT Register 2, Data 8…15,
Basisadresse + 4 = INPUT Register 1, Data 0…7,
Basisadresse + 5 = INPUT Register 2, Data 8…15.
Ansteuerung einer A/D-D/A-Wandlerkarte
Das nachfolgende Beispiel zeigt, wie alle Funktionen der PCI-ADxx-DAC4 Karte mit VIs unter Windows 2000/XP angesprochen werden.
Die Funktionen sind im einzelnen:
  • vier D/A-Wandler ± 10 Volt
  • ein 16-Kanal-D/A-Wandler ± 10 Volt
  • acht digitale Eingänge
  • acht digitale Ausgänge
Die Ausgaben der vier D/A-Kanäle sind in diesem Anwendungsbeispiel jeweils ein 12-bit-Wert, der den Spannungsbereich ±10 Volt repräsentiert. Mithin liegt der Nullpunkt beim Digitalwert 2048. Das VI-Beispiel ist auch mit der LabVIEW®-Demosoftware direkt lauffähig und ebenfalls ohne Passwort abänderbar. Dieses Beispiel ist exemplarisch und gilt generell für alle anderen Analog-/Digital-Messkarten von KOLTER ELECTRONIC (PCI-ADxx-DAC4, PCI-ADxx und PCI-DAC4), da sie über gleiche Registerbelegungen verfügen.
Die DLL zur Anbindung an LabVIEW steht allen Anwendern kostenlos zur Verfügung. Er kann, ebenso wie weitere nützliche Softwaretools über die Internetseite www.kolter.de heruntergeladen werden.
Folgende I/O-Karten von KOLTER ELECTRONIC können ohne zusätzliche Treiber direkt unter Windows 9x/ME mit LabVIEW betrieben werden:
PCI: PROTO-3 /PCI, PCI 1616, PCI-OPTO-RELAIS, OPTO-3 /PCI, PCI-RELAIS
ISA: PROTO-1, Relais-1,2,3, Opto-1,2, OPTO-3 N/P, UNIREL, Timer-2, 48 TTL I/O, PLSI-Karte, ST-1,2,3, Multi-72, I/O-Multi-Schaltkarte
QE 538
Newsletter

Jetzt unseren Newsletter abonnieren

Quality Engineering
Titelbild QUALITY ENGINEERING Control Express 1
Ausgabe
Control Express 1.2024
LESEN
ABO
Webinare & Webcasts

Technisches Wissen aus erster Hand

Whitepaper

Whitepaper zum Thema QS


Industrie.de Infoservice
Vielen Dank für Ihre Bestellung!
Sie erhalten in Kürze eine Bestätigung per E-Mail.
Von Ihnen ausgesucht:
Weitere Informationen gewünscht?
Einfach neue Dokumente auswählen
und zuletzt Adresse eingeben.
Wie funktioniert der Industrie.de Infoservice?
Zur Hilfeseite »
Ihre Adresse:














Die Konradin Verlag Robert Kohlhammer GmbH erhebt, verarbeitet und nutzt die Daten, die der Nutzer bei der Registrierung zum Industrie.de Infoservice freiwillig zur Verfügung stellt, zum Zwecke der Erfüllung dieses Nutzungsverhältnisses. Der Nutzer erhält damit Zugang zu den Dokumenten des Industrie.de Infoservice.
AGB
datenschutz-online@konradin.de