Kürzestvorstellung des Programms LabView - univie.ac.at · Kürzestvorstellung des Programms...

15
Kürzestvorstellung des Programms LabView Im nachfolgenden soll anhand eines einfachen Beispiels die Vorgangsweise der Programmerstellung mittels LabView illustriert werden. Zum Unterschied zu einer „klassischen“ Programmerstellung wie Sie sie etwa bei LabWindows vorfinden werden alle notwendigen Arbeiten also auch die eigentliche Programmierung in grafischen „Windows“-fenstern erledigt (LabView gibt es allerdings auch für Unix-systeme). Unter LabWindows haben Sie das Programm als „Quellcode“ 1 Anweisung je Zeile als Text in eine Datei geschrieben. Danach haben Sie eine grafische Benutzeroberfläche gestaltet und durch zusätzliche Instruktionen mit ihrem eigentlichen Programm verbunden. Der „Quellcode“ wurde dann compiliert (in maschinenspezifische Anweisungen übersetzt) und danach das Programm ausgeführt wobei sie lediglich die grafische Benutzeroberfläche zu Gesicht bekamen. Im Gegensatz dazu wird unter LabView grafische Benutzeroberfläche und der „Quellcode“ parallel entwickelt und ist intensiv miteinander verknüpft. Der „Quellcode“ selbst besteht aus einer Reihe von Symbolen die mit ZU- und Ableitungen miteinander verbunden wird. Kennt man die Bedeutung der Symbole so ist das letztendlich entstandene Diagramm eine sehr übersichtliche Darstellung Des Programmablaufs und erleichtert es sehr ein Programm nachzuvollziehen zu ändern oder zu überprüfen. Während der Programmentwicklung und beim ersten Austesten stehen Ihnen eine Reihe von Hilfsmitteln zur Verfügung die die zumindest vom Programmablauf zulässigen Operationen permanent überwachen, Fehler anzeigen und Hilfestellung geben. Hat man den oft ungewohnten Zugang zur Programmiertechnik verstanden, stehen üppige Ressourcen von der Rechnerhardware zur Verfügung und ist es nicht erforderlich auf sehr elementare Weise in die Hardware- und Schnittstellensteuerung einzugreifen so gestaltet sich die Entwicklung eines Meßprogramms mit Kontrolle über externe Meßgeräte sehr einfach und effizient. Für eine Vielzahl von Meßgeräten stehen bereits fertige LabView-routinen zur Verfügung, sodaß sich die Einbindung von Meßgeräten in ein Programm deutlich vereinfacht. Auf der Seite der Datenaufbereitung stellt LabView selbst zahlreiche an der Praxis ausgerichtete vorgefertigte Unterprogramme zur Verfügung. Aufgrund der weiten Verbreitung dieser Software für den Meßtechnikeinsatz gibt es außerdem viele Beispielprogramme die leicht übernommen werden können. Diese Vorteile gegenüber der „klassicshen“ Programmerstellung müssen allerdings durch eine gute Hardwareausstattung erkauft werden und machen es mühsam bis unmöglich „billige“ Komponenten zu verwenden. Das nachfolgende Beispiel ist dazu gedacht, daß Sie es Schritt für Schritt am PC nachvollziehen und im Anschluß eventuell durch eigene Beiträge erweitern.

Transcript of Kürzestvorstellung des Programms LabView - univie.ac.at · Kürzestvorstellung des Programms...

Kürzestvorstellung des Programms LabView

Im nachfolgenden soll anhand eines einfachen Beispiels die Vorgangsweise der Programmerstellung mittels LabView ill ustriert werden. Zum Unterschied zu einer„klassischen“ Programmerstellung wie Sie sie etwa bei LabWindows vorfinden werden alle notwendigen Arbeiten also auch die eigentliche Programmierung ingrafischen „Windows“-fenstern erledigt (LabView gibt es allerdings auch für Unix-systeme). Unter LabWindows haben Sie das Programm als „Quellcode“ 1Anweisung je Zeile als Text in eine Datei geschrieben. Danach haben Sie eine grafische Benutzeroberfläche gestaltet und durch zusätzliche Instruktionen mit ihremeigentlichen Programm verbunden. Der „Quellcode“ wurde dann compili ert (in maschinenspezifische Anweisungen übersetzt) und danach das Programm ausgeführtwobei sie lediglich die grafische Benutzeroberfläche zu Gesicht bekamen. Im Gegensatz dazu wird unter LabView grafische Benutzeroberfläche und der„Quellcode“ parallel entwickelt und ist intensiv miteinander verknüpft. Der „Quellcode“ selbst besteht aus einer Reihe von Symbolen die mit ZU- und Ableitungenmiteinander verbunden wird. Kennt man die Bedeutung der Symbole so ist das letztendlich entstandene Diagramm eine sehr übersichtliche Darstellung DesProgrammablaufs und erleichtert es sehr ein Programm nachzuvollziehen zu ändern oder zu überprüfen. Während der Programmentwicklung und beim erstenAustesten stehen Ihnen eine Reihe von Hil fsmitteln zur Verfügung die die zumindest vom Programmablauf zulässigen Operationen permanent überwachen, Fehleranzeigen und Hil festellung geben. Hat man den oft ungewohnten Zugang zur Programmiertechnik verstanden, stehen üppige Ressourcen von der Rechnerhardwarezur Verfügung und ist es nicht erforderlich auf sehr elementare Weise in die Hardware- und Schnittstellensteuerung einzugreifen so gestaltet sich die Entwicklungeines Meßprogramms mit Kontrolle über externe Meßgeräte sehr einfach und eff izient. Für eine Vielzahl von Meßgeräten stehen bereits fertige LabView-routinenzur Verfügung, sodaß sich die Einbindung von Meßgeräten in ein Programm deutlich vereinfacht. Auf der Seite der Datenaufbereitung stellt LabView selbstzahlreiche an der Praxis ausgerichtete vorgefertigte Unterprogramme zur Verfügung. Aufgrund der weiten Verbreitung dieser Software für den Meßtechnikeinsatzgibt es außerdem viele Beispielprogramme die leicht übernommen werden können. Diese Vorteile gegenüber der „klassicshen“ Programmerstellung müssenallerdings durch eine gute Hardwareausstattung erkauft werden und machen es mühsam bis unmöglich „billi ge“ Komponenten zu verwenden.

Das nachfolgende Beispiel ist dazu gedacht, daß Sie es Schritt für Schritt am PC nachvollziehen und im Anschluß eventuell durch eigene Beiträge erweitern.

Falls das Fenster Controlsnicht am Bildschirm zusehen ist, anklicken.

Falls das Fenster Toolsnicht am Bildschirm zu

sehen ist, anklicken.

Aufruf von LabView zum Aufbau eines einfachen Programms um eine Einsichtin die Arbeitsweise mit dieser Anwendung zu bekommen. Im Folgenden werdendie einzelnen Schritte zur Programmierung ill ustriert.

Ein neues „virtual instrument“ (VI) soll erzeugt werden. Damit werden alleausführbaren Programmroutinen bezeichnet ohne Einschränkung auf reale odervrtuelle Geräte.

Wie oben zu sehen erscheinen mehrere Fenster. Die zunächst für die weiterenArbeiten entsprechend angeordnet werden. Die meisten Anweisungen sind imMenüpunkt „Windows“ zu finden.

Soferne die beiden kleinen Fenster „Controls“ (links) und „Tools“ (rechts) nichtam Bildschirm zu sehen sind öffnen Siediese durch anklicken. Um die beidenArbeitsflächen (großen Fenster) nebeneinander darzustellen führen Sie denBefehl „Tileleft/right“ aus.

Der Bildschirm hat jetzt etwa folgendes Aussehen. Benötigt man weiteres dasFenster mit einer kontextspezifischen Hil fe muß diese durch das Drücken derTastenkombination <Ctrl>+<H> (bzw. <Strg>+<H>) geöffnet werden Imnächsten Bild als mittleres kleines Fenster zu erkennen.

Das große linke Fenster ist die graphische Oberfläche wie sie während derProgrammausführung erscheint. In ihm werden Eingabe- und Ausgabeelementeaus der Palette „Controls“ (kleines Fenster links) plaziert Das große Fensterrechts dient zur Erstellung des Programms mittels grafischem Diagramm. Dasrechte kleine Fenster „Tools“ enthält Werkzeuge zur Programmerstellung bzw.zum Programmablauf.

„Finger“ , Zur Daten-eingabe während derProgrammausführung

„Zeiger“ , zurPositionierung

und Markierung

AlphanumerischeEingabe während der

Programmierung

Verbindungswerkzeug im Flußdiagramm

In der Palette „Controls“ wurde das Feld „numeric“ (linkes oberstes) angewähltDarauf erscheint eine Auswahl verschiedener numerischer Anzeigen(Datenausgabe) und Eingaben. Es wird das erste Element „Digital Control“(Eingabe) mit dem Zeiger(werkzeug) gewählt und im Programm-ausführungsfenster (links) positioniert. Elemente aus der „Controls“ -palettekönnen nur im Programmausführungsfenster positioniert werden.

Durch Drücken der rechten Maustaste erscheint ein Bearbeitungsmenü. Es wirdder Eintrag „Representation“ gewählt und aus der Auswahl an Zahlenformatenim kleinen Fenster (vorne) die Einstellung „ I16“ für eine Ganzzahlvariable mit16 Bit Breite festgelegt. Das Eingabeelement ist rechts oben im Programm-ausführungsfenster erkennbar.

Die Dateneingabe erscheint auch im rechten Fenster als blaues Rechteck mitgleicher Bezeichnung. Bei Wechsel vom Programmausführungsfenster zu demAblaufdiagrammfenster schließt sich die „Controls“ -palette und automatischwird die „Functions“ -palette rechts neben dem Hilfefenster angezeigt. Die hiergezeigten Elemente können nur im Diagrammfenster verwendet werden. Es wirddas erste Feld „Structures“ ausgewählt.

Es erscheint ein neues (Unter)fenster mit mehreren Programmstrukturen. Eswird das 3. Element „For loop“ ausgesucht. Das entspricht im Basic derAnweisung for i=1 to N ........ Next i.

Im Diagrammfenster kann jetzt ein Rechteck beliebiger Größe positioniertwerden wie oben zu sehen. Alle Elemente die innerhalb des Rechtecks plaziertwerden werden während des Schleifendurchlaufs ausgeführt (Ananlog zu allenBasicanweisungen zwischen der for und der next Zeile).

Nach dem Wechsel ins Programmausführungsfenster ändert sich die „Function“ -palette wieder zur „Controls“ -palette. Aus dieser wird unter dem Punkt„numeric“ aus der Auswahl das 2. Element „digital indicator“ gewählt DiesesElement dient nur zur Datenanzeige und erlaubt keine Eingabe.

Wie vorhin wird das Zahlenformat mit dem Element „ I16“ festgelegt nachdemdas Menü durch betätigen der rechten Maustasteund darauf der Menüpunkt„Representation“ gewählt wurde. Die Zahlenanzeige ist auch imDiagrammfenster als oranges Rechteck erkennbar. Die Farbe kennzeichnet denDatentyp. (orange entspricht einer reelen Zahl, blau einer Ganzzahl) daherändert sich die Farbe nach der Ausführung der Formatanweisung.

Im Diagrammfenster Wird das blaue Symbol für die Datenausgabe in dasRechteck der „For loop“ -struktur verschoben. Beachten Sie, daß imProgrammausführungsfenster der Hintergrund des 1. Elements (numeric) weißist (=Eingabemöglichkeit) und das 2. Element (numeric 2) einen grauenHintergrund zeigt (Anzeige OHNE Eingabemöglichkeit).

Aus der „Tools“ -palette wird das Verbindungswerkzeug gewählt Damit könnenim Diagramm die Datenströme festgelegt werden. In diesem Beispiel wollen wirzunächst die Schleifenvariable (blaues i im Rechtek des „For loop“s) zurAnzeige (numeric 2) bringen.

Das Cursorsymbol wird zunächst über dem blauen Rechteck für „numeric 2“positioniert. Danach wird die linke Maustaste solange gedrückt bis diestrichlierte Linie im Feld um die Schleifenvariable i endet. Danach wird dieMaustaste losgelassen. Der Weg kann beliebig sein.

Die Verbindung erscheint jetzt als blaue Linie und zeigt an, daß sie zulässig ist.Sollte eine Verbindung nicht zulässig sein bleibt sie schwarz strichliert.Beachten Sie das durch die Pfeile markierte Symbol in denLeisten desProgrammausführungs und des Diagrammfensters. Es zeigt einen grauenunterbrochenen Pfeil und sagt aus, daß das Programm bis jetzt noch nichtausführbar wäre.

Nachdem im Diagrammfenster mit dem Verbindungswerkzeug auch der Index Nim „For loop“ - Rechteck mit dem Eingabeelement „numeric“ (blaues oberesRechteck) verbunden wurde (blauer Linienzug) ändert sich das bezeichneteLeistensymbol zu einer weißen durchgezogenen Pfeilspitze. Das Programm istsomit ausführbar.

Wir wechseln in das Programmausführungsfenster und wählen aus der „Tools“ -palette das „Finger“symbol.

Bevor das Programm ausgeführt wird, wird das Eingabefeld („numeric“ )angeklickt und eine Zahl (im Beispiel 5) eingegeben. Damit legen wir fest wieoft der „For loop“ durchlaufen werden soll .

Bevor das Programm ausgeführt wird wechseln wir nochmals in dasDiagrammfenster und betätigen das Symbol „Highlight Execution“ . DieserModus verlangsamt die Programmausführung derart, daß die einzelnenDatenströme während des Ablaufs grafisch im Diagramm angezeigt undmitverfolgt werden können. Dies kann während der Entwicklung sehr hil freichsein.

Durch anklicken des weißen Pfeilsymbols in einem der beiden Fenster beginntdie Programmausführung. Im Diagramm können Sie jetzt den Programmablaufmit verfolgen.

Das weiße Pfeilsymbol hat Form und Farbe geändert und zeigt so an, daß dasProgramm abgearbeitet wird. Im Ausgabefeld „numeric 2“ können Sie denaktuellen Wert der Laufzeitvariablen i mit verfolgen. In unserem Beispielvariiert er zwischen 0 und 4.

Symbol um dasProgramm abzubrechen

Symbol um das Programmanzuhalten/fortzusetzen

Dies ist das Ende der Entwicklung eines einfachenProgramms unter LabView. Läuft das Programmzufriedenstellen kann die „Highlight“ -funktion abgeschaltetwerden um die Ausführung mit normaler Geschwindigkeitzu starten. Auf der nachfolgenden Seite finden Sie einekurze Zusammenstellung welcheder häufiger gebrauchtenFunktionen und Ein- Ausgabekontrollen Sie wo findenkönnen. Außerdem ein kurzer Hinweis was zu tun ist umeinen Fehler zu erkennen und welche Hil fen Sie zu dessenBehebung LabView anbietet.

Hinter jedem Symbol steht in derRegel ein Auswahlmenue das zumTeil in weitere Untermenuesaufgeteilt i st. Um zur nächsthöherenMenüebene zurückzukehren wirddieses Feld angeklickt.

Numerische Felder,Armaturen,

Schieberegler,Zeiger ..

Schalter, LEDs

Textfelder

XY- oder XT darstellungen

Steuerung vonProgrammabläufen

Numerik, Mathematik,Konversionen (verbunden

mit numerischenKontroll feldern).

Logische Verknüpfungen(verbunden mit Schalter, LEDs)

Textwerkzeuge (verbunden mitText-“controls“ )

Vergleichsfunktionenliefern WAHR/FALSCH

Timing werkzeugefürProgrammablausteuerung

Datenspeicherung

Kurvenanalyse, Filter ...

Schnittstellenhandling,COM, GPIB ...

Einbindung externer „virtualinstruments“ (Programmteilen),

Eigenentwicklung,Instrumentetreiber ...

Das ursprüngliche Beispielprogramm wurde um 2 Elemente erweitert:Eine Vergleichsoperation und einer LED-anzeige („boolean“) die„ leuchten“ soll wenn die Zählervariable i des „For loop“s einenbestimmten Wert erreicht hat. Das links gezeigte Diagramm zeigt wiediese Elemente eingebaut und angeschlossen worden sind. DasProgrammausführungssymbol zeigt den unterbrochenen Pfeil in grau undsignalisiert, daß wenigstens ein Fehler existiert. Wird dieses Symbolangeklickt öffnet sich das „Error“ -femnster (im rechten Bildteilerkennbar). Inder mittleren Liste werden alle Fehler aufgelistet. ImBeispiel 1 Fehler ( = 1 Listeneintrag).

Wird ein Fehler aus der Liste mit der Maus angeklickt, so erscheint in deruntersten Liste eine kurze Beschreibung des Fehlers und wenn möglichein Hinweis wie dieser behoben werden kann. In unserem Fall wird einefehlende Verbindung beanstandet. Die Beschreibung schlägt vor, daß Siesich in der kontextspezifischen Hil fe (siehe mittleres Fenster) ansehenwie das Element, das diesen Fehler verursacht hat angeschlossen seinmuß um den Fehler zu beheben. Wenn Sie sich das Diagramm genauanschauen wird Ihnen auffallen, daß zu dem Vergleichsoperator nur eineZuleitung existiert, verglichen werden aber stets 2 Variablen (d.h. es mußanalog zu dem Beispiel im Hil fefenster aussehen: die Variablen x und ywerden verglichen das Resultat ist „WAHR“ oder „FALSCH“ durch diegrün gefärbte Verbindung gekennzeichnet). In diesem einfachen Beispielerkennt man die Lage des Fehlers recht rasch. Sie haben aber dieMöglichkeit durch Anklicken des Feldes „Show Error“ das mit diesemFehler behaftete Element im Diagramm anzeigen zu lassen und sich erstdanach an der dazugehörenden Hil festellung zu orientieren.

LabView Grundlagen IIm ersten Beispiel konnten Sie weitestgehend auf vorhandene VIs zurückgreifen und durch einfache Änderungender Problemstellung anpassen. Bei weitergehenden Anwendungen müssen Sie unter Umständen umfangreichereErgänzungen hinzufügen. Dazu ist ein Verständnis des zeitlichen Ablaufs der Programmabarbeitung unterLabView notwendig um sicherzustellen, daß die Ansteuerung und Abfrage der Meßgeräte der Aufgabenstellungentsprechend ausgeführt werden. Um Meßgeräte in Ihr Programm problemlos integrieren zu können ist eingenerelles Verständnis des Aufbaus von Instrumententreibern (VIs) notwendig.Programmausführung unter LabViewAls Illustration wie LabView mehrere VIs die im Block-diagramm eingezeichnet sind abarbeitet versuchen Siedie in folgenden Abbildungen gezeigten Programmedurch praktische Übung nachzuvollziehen. Die ersteAbbildung zeigt ein lauffähiges VI, das aus drei Funktio-nen (WHILE Schleife, zeitliche Verzögerung, Anzeigeder abgelaufenen Zeit). Um zu sehen welche Änderun-gen sich in der Programmabarbeitung ergeben dient dieAnzeige der Zeit (Indicator im Programmfenster). Inter-aktiv können Sie die STOP-Taste (Control im Pro-grammfenster) zu verschiedenen Zeitpunkten nach demStart des Programms betätigen, die den Programmablaufbeenden soll. Sie werden erkennen können daß das Pro-gramm unterschiedlich schnell auf den Tastendruckreagiert. Um die Abarbeitung zu visualisieren könnenSie den Debug-modus („Lämpchen“ in der Menüleiste)aktivieren. So wie in Abb. 1 gezeigt stehen diese dreiFunktionen in keinem Zusammenhang miteinander. Ihregrafische Anordnung kann beliebig im Diagrammfenstersein. Nach dem Start des Programms wird begonnen die dreiFunktionen simultan (theoretisch gleichzeitig) abzuarbeiten.D.h. die zeitliche Verzögerung wird in dem gezeigten Bei-spiel nach 5000 ms beendet sein, die Anzeige der abgelaufe-nen Zeit praktisch unmittelbar nach dem Aufruf und wirdeine Zahl anzeigen. Die WHILE Schleife wird dann beendetsobald die „STOP“-Taste gedrückt wird. Außer der Abfragedes logischen Zustands der STOP-Taste wird innerhalb derWHILE-Schleife nichst ausgeführt. Der am längsten dau-ernde Prozeß bestimmt das Ende des Programms. Die An-zeige der abgelaufenen Zeit (millisecond timer value) ändertsich kurz nach dem Start des Programms und bleibt für denRest der Programmausführung unverändert. In Abb. 2 wurdedie Funktion Anzeige der abgelaufenen Zeit in die WHILE-Schleife gelegt. Die beiden Prozesse laufen jetzt nicht mehrunabhängig voneinander ab. Innerhalb eines Durchlaufs derWHILE-Schleife wird jetzt jedesmal diese Funktion aufge-rufen und der Schleifendurchlauf erst beendet nachdem alleFunktionen (Zeitmessung und Statusabfrage) beendet wordensind. In der Anzeige ändert sich in diesem Fall bei jedemSchleifendurchgang die Zeit. Im nächsten Schritt (Abb. 3)wurde auch die Verzögerung in die WHILE-Schleife gelegt.Das bewirkt, daß beide Funktionen bei jedem Schleifen-durchlauf abgearbeitet werden. Innerhalb derSchleifenstruktur werden beide Prozesse „gleichzeitig“begonnen. Der Durchlauf einer Schleife wird aber erst nachdem beenden aller aufgerufenen Funktionen beendet. D.h. indem Beispiel dauert ein Schleifendurchlauf etwas mehr als5000 ms (=Verzögerungszeit). Die Anzeigen der Zeit wirdjetzt nur alle 5000 ms erneuert. Die nächste Änderung in derAnordnung der Symbole ist in den Abb. 4a und 4b gezeigt. Indiesem Fall wurde das Programm um eine Sequenz (imzeitlichen Sinn) mit zwei Rahmen (frames) erweitert. Die Sequenz hilft Ihnen ein zeitliche Reihenfolge in derAbarbeitung von unabhängigen Programmabschnitten (vgl. Abb. 1) festzulegen. Ähnlich einem Film aus Einzel-

Abb. 1: Demonstration der "gleichzeitigen"Abarbeitung mehrere Funktionen.

Abb. 2: Verknüpfung zweier Funktionenzur periodischen Zeitabfrage.

Abb. 3: Zwei unabhängige Prozesse wer-den in einer Schleifenstruktur abgearbei-tet.

bildern die nacheinander auf die Leinwand projiziert werden, werden die Rahmen einer Sequenz zeitlich nach-einander abgearbeitet. In diesem Beispiel soll die zeitliche Verzögerung vor der Schleifenabarbeitung ausgeführtund beendet werden. Sie wird daher in Rahmen 0 (der Sequenz) abgelegt (Abb. 4a). Im darauffolgenden Rahmen(Abb. 4b) wird die WHILE-Schleife mit der Zeitanzeige ausgeführt. Diese Anordnung ist jener in Abb. 2 ähn-lich. Allerdings beginnt diesmal anders als vorhin die Zeitanzeige erst nach dem Beenden der Verzögerungszeitsich (rasch) zu ändern.Sind Elemente oder VIs durch Ein- und/oder Ausgaben (Verbindungsleitungen) miteinander verknüpft wirddadurch „automatisch“ die sequentielle Reihenfolge der Programmausführung festgelegt. Diesen Umstand habenSie bereits bei dem Beispiel-VI für das Digitalmultimeter HP34401A gesehen. Die Abarbeitung hat mit der imDiagramm am weitesten links dargestellten Funktion begonnen und ist dann im Diagramm nach rechts verlaufen.In diesem Fall ist es nicht erforderlich eigenen Sequenzrahmen um jede Funktion zu definieren. Als kleinesBeispiel wird das letzte VI aus Abb. 4 dahingehend verändert, daß der Zeitindikator aus der WHILE-Schleifeund dem Sequenzrahmen nach (rechts) außen im Diagramm verschoben wird (Abb. 5). Dadurch ändert sich derProgrammablauf dahingehend, daß nicht mehr periodich die Zeitanzeige während des WHILE-Schleifendurch-laufs aktualisiert dargestellt wird sondern die Anzeigeaktualisierung findet erst nach dem Verlassen des Se-quenzrahmens und zeigt den letzten Wert während des Schleifenabarbeitung.

Der Versuchsaufbau des 2. Experiments erfordert, daß sie zeitlich hintereinander zuerst den Strom Ihrer Leucht-diode einstellen und dann den aktuellen Wert des Sensorsignals einlesen. Programmtechnisch könnten Sie diesebeiden Aktionen unabhängig voneinander ähnlich dem 1. Beispiel betreiben, d.h. beide VIs (Setzen der Strom-quelle, Einlesen des DMM) laufen „parallel“ zueinander. Da Sie hierbei nicht sicher sein können, daß das ein-gelesene Sensorsignal vom DMM erst nach dem Umschalten des Stroms durch die LED registriert wird könnenSie mit einem derartigen Programmaufbau keine physikalisch relevante Abhängigkeit zwischen Strom durch dieLeuchtdiode und emittierter Lichtintensität bestimmen. D.h. um der experimentellen Vorgabe zu genügen müs-sen Sie Ihrem Programm eine sequentielle Abarbeitung „aufzwingen“.

Abb. 5: Bestimmung der Abarbeitungsreihenfolge durch Verknüpfen der Programmelemente (Ver-bindungslinien im Ablaufdiagramm).

Abb. 4: Verwendung einer Sequenz zur Steuerung des zeitlichen Ablaufs der Programmausführung.

Integration von Meßgeräten unter LabViewIm ersten Beispiel haben Sie bereits den Measurement- und Automation eXplorer (MAX) kennengelernt. Er isteine wesentliche Voraussetzung, daß LabView beim Start sowohl Schnittstellen- als auch GerätespezifischeFunktionen lädt und deren Verwendung zuläßt. Die Darstellung in Abb. 6 illustriert das Zusammenspiel derbeiden Programme. D.h. Sie sollten vor dem Aufruf von LabView immer den MAX ablaufen lassen. Durchbetätigen der „F5“ – Taste kontrol-liert er (neben anderem) welcheSchnittstellen (seriell, parallel,GPIB ... ) im PC vorhanden und„schaltet“ deren Verwendung fürLabView frei. Wollen Sie kontrol-lieren ob und welche externenGeräte an diese Schnittstellen ange-schlossen sind, wählen Sie dieentsprechende Schnittstelle an. ImFall des im Seminar verwendetenGPIB-Buses müssen Sie einen„Scan for Instruments“ starten umalle angeschlossenen Geräte zuerfassen. Im MAX können dann fürdie Geräte VISA-Resourcen fürdiese Geräte wie z.B. symbolischeName festgelegt werden, die vonLabView-VIs verwendet werdenkönnen aber keine Voraussetzungfür den Betrieb des Gerätes dar-stellen. Um diese Bemerkung ver-ständlich zu machen möchte ich andieser Stelle kurz Idee und Aufbauder Virtual Instruments System Architecture (VISA) beschreiben. Die Zielsetzung ist, daß in einem komplexenMeßsystem, das über eine Vielzahl von Schnittstellen und folglich übertragungsprotokollen die angeschlossenenGeräte in der Entwicklungssoftware (In unserem Fall LabView) einheitlich zu verwalten und zu bedienen ohneschnittstellenspezifische Charakteristika berücksichtigen zu müssen. Ein gute Beispiel ist das Digitalmultimeter

HP 34401A das wie bereits geschehen über dem GPIB Bus fern-gesteuert werden kann. Das gleiche Gerät kann aber auch übereine serielle Schnittstelle (COM) ferngesteuert werden. ObwohlFunktionsumfang und Befehlssyntax für das Gerät in beiden Fäl-len ident ist muß ein Anwenderprogramm ohne VISA Unterstüt-zung im ersten Fall ein GPIB spezifisches Datenprotokoll verwen-den um die Fernsteuerung durchzuführen im zweiten Fall muß esdie Konventionen der seriellen Schnittstelle behandeln. D. h. fürdie gleiche Problemstellung müssen Sie 2 individuelle Programmeentwickeln. Bedienen Sie sich hingegen der VISA Möglichkeitenerstellen Sie nur ein Anwendungsprogramm, das auf das „VISA-Gerät“ (DMM) zugreift ohne sich darum kümmern zu müssen obdas DMM am GPIB oder am seriellen Bus „hängt“. Die Umset-zung der jeweils schnittstellenspezifischen Datenübertragung wirdvon der VISA-programmroutine übernommen. In Abb. 7 ist derAufbau der einzelnen Ebenen im Zusammenspiel von Anwender-software und Meßgeräten skizziert. Zur reibungslosen Anwendungder VISA-Ebene müssen (1) MAX die entsprechenden Verknüp-fungen zwischen VISA-Gerät und Art der Schnittstelle an dasAnwenderprogramm (LabView) übergeben und (2) der spezifischeInstrumententreiber die VISA optionen unterstützen. Da viele

Instrumententreiber nicht von National Instruments (Hersteller von LabView und MAX) sondern vom Geräte-hersteller entwickelt werden kann die 2. Bedingung unter Umständen nicht erfüllt sein. In diesem Fall muß dasGerät über schnittstellenspezifische Funktionen betrieben werden. Ein typisches im 2. Experiment zu findendesBeispiel ist die Stromquelle Keithley 224. Obwohl Sie im MAX diesem Gerät einen symbolischen Namen zu-ordnen können, müssen Sie unter LabView bei der Verwendung des Instrumententreibes die GPIB Adresse (Zahlzwischen 1 und 30) angeben anstelle aus der Liste der zur Verfügung stehenden VISA-Geräten „Ihr“ Gerät aus-wählen zu können.

Abb. 6: Zusammenwirken der Programme MAX und LabView.

Abb. 7: Zusammenspiel zwischenMeßgeräten, Schnittstellen und An-wendungsprogramm (Eclipse, Lab-View ... ) unter Verwendung einerVISA Ebene.

LabView Grundlagen IIBei komplexeren Aufgabenstellungen wird zum einen die Darstellung des gesamten Programmablaufs in einemFlußdiagramm rasch unübersichtlich. Zum anderen werden einige Aufgaben in gleicher oder ähnlicher Formmehrmals in der Programmabarbeitung benötigt. In beiden Fällen ist es vorteilhaft Programmteile in separaterstellten „Sub“ - VIs anzulegen, die dann vom eigentlichen (Hauptprogramm) VI aufgerufen werden. Ein sehrgutes Beispiel für den Einsatz von Sub-VIs ist das Einlesen und Skalieren von Kurven mehrerer DSO Kanäle.Das Verfahren ist für jeden Kanal das gleiche: (1) Das Oszilloskop liefert die Spannungswerte (Y-Achse amDSO Bildschirm) als Ganzzahlfeld wobei der Feldindex mit der Zeit (X-Achse) korreliert. (2) Diese Rohdatenmüssen entsprechend der Beziehung Y (in Volt) = F x (YROH – YOFFSET) skaliert werden. Im nachfolgenden wirdein VI erstellt, daß als Eingabe (1) Das Ganzzahlfeld YROH, (2) den Multiplikationsfaktor F und (3) einenGanzzahlwert YOFFSET erwartet die Rechenoperationen ausführt und ein Feld aus Reellen Zahlen, Y ausgibt.Begonnen wird mit dem Erstellen eines neuen VIs wie es in Abb. 1 zu sehen ist. Beachten Sie, daß der

Defaultwert für die Skalierung auf Eins und für den Offset auf Null gestellt wurde. Dieses VI ist auch alleineabarbeitbar. D.h. Sie können Werte in die Eingabefelder eintragen und dann das Programm abarbeiten. Umdieses VI innerhalb eines anderen VIs abrufen zu können müssen Sie im nächsten Schritt Die Ein- undAusgabefelder in einem Anschlußdiagramm festlegen. Dazu verfahren Sie wie folgt: Führen Sie den Mauszeiger

im Eingabepanel zu dem quadratischenSymbol im weißen Feld rechts oben.Betätigen Sie die rechte Maustaste. Eserscheint die in Abb. 2 gezeigteListenauswahl. Wählen Sie den Eintrag„Show Connector“. Das Symbol ändert

daraufhin sein Aussehen zu der in Abb. 3 gezeigten Form. DerMauszeiger ändert seine Form zum „Verbindungswerkzeug“.Bewegen Sie die Maus zum 1. Eingabefeld im Panel und „klicken“sie dieses an. Danach bewegen Sie die Maus in das 1. (kleine)Rechteck links oben in ihrem Anschlußsymbol und „klicken“erneut. Danach ändert das Rechteck seine Farbe wie in Abb. 4 gezeigt. Ordnen Sie analog den anderen Ein-

Abbildung 1: VI zum Skalieren eines Ganzzahldatenfeldes.

Abbildung 2: Auswahl der Anschlußbelegung.

Abbildung 3: Die 4 rechtek-kigen weißen Flächen inner-halb des Quadrats symboli-sieren noch nicht definierteAnschlüsse des VIs.

(Control) und Ausgabe- (Indicator)Elementen je ein Rechteck imAnschlußsymbol zu. In der Regelordnen Sie Controls (Eingaben) denlinks angeordneten Flächen undIndicators (Ausgaben) dem oder denrechten Flächen zu so wie Sie dasauch bei den vorgegebenen (Sub-)VIs kennen. Zuletzt sollte IhrAnschlußsymbol wie in Abb. 5gezeigt aussehen. Überschüssige ( =weiß verbliebene) Flächen könnenSie mit der Menüauswahl (grauschattiert in Abb. 2: „remove

Terminal“) entfernen. Sind mehr Elemente zuverbinden als vorhandene Anschlußfelder können Sieauch weitere hinzufügen („Add Terminal“). DieFarben der Rechtecke entsprechen dem Datentyp,Etwa orange für Reele Zahlen (double precision) undblau für Ganze Zahlen. Nachdem Sie alleVerbindungen und (für das Verhalten als Sub-VIwichtig) alle Controlelemente mit „vernünftigen“Vorgaben (Defaultwerten) festgelegt haben speichernSie das VI ab. In unserem Beispiel als „skale.vi“.UmIhnen noch die Funktion dieses Unterprogrammsinnerhalb eines Hauptprogramms zu zeigen wurde

ein Programm wie in Abb. 6 gezeigt aufgebaut. Um zweiDatenfelder mit Ganzzahlwerten zu erzeugen wird die „FOR“ –schleife verwendet und der Index einmal direkt und einmal mitsich selbst multipliziert in zwei Arrays abgelegt.(Abb. 6a).Diese Daten“erzeugung“ dient lediglich zurDemonstration der Wirkungsweise des „sub“-VIs. Danachführen wir unser „sub – VI“ ein um die erzeugten Datenfelderskalieren zu können (Abb. 6b). und stellen sie grafisch dar(Abb. 6c). Im Diagrammfenster können Sie VIs mit Hilfe desFunctionsfensters einbauen. Das entsprechende Feld ist inAbb. 7 markiert. Durch Anklicken öffnet sich einDateidialogfenster, das auf VI.spezifische Dateien maskiert ist.In unserem Fall wählen wir die Datei „skale.vi“ undpositionieren Sie im Diagrammfenster (Abb. 6b). Wie Siesehen können besitzt das VI die (oben definierten) Fadenendenund läßt sich wie bei fertigen Funktionen üblich verbinden.Eingegeben werden in diesem Fall nur das Ganzzahlarraywährend sowohl der Anschluß für die Skalierung als auch derOffset ohne Anschluß bleibt. Die beiden Ausgaben des VIswerden mittels der „Bundle-funktion“ für eine XY-Darstellungaufbereitet. Das Ergebnis eines Programmaufrufs können Sie in

Abb. 8 sehen. Da Skalierung und Offset unbelegt geblieben sind wurden beim Abarbeiten des

Abbildung 6: Beispielprogramm um die Skalierungsfunktion zu zeigen.

a b

c

Abbildung 4: Zuordnen der Anschlüsse eines VIs.

Abbildung 5: Vollständige Anschluß (Terminal)belegung des Beispiel VIs.

Abbildung 7: Aus-wahl eines VIs, dasnicht in den Stan-dardfunktions-gruppen vorhandenist.

Demonstrationsprogramms die beimErstellen des Sub-VIs vorgegebenenStandardeinstellungen (Defaultwerte)übernommen. Das waren 1.00 für dieMultiplikation und 0 für den Offset.Dementsprechend entspricht dasErgebnis den (scheinbar) unskaliertenWerten aus der Datenerzeugung.Werden die Anschlüsse für„skalierung“ und „Offset“ wie inAbb. 9 gezeigt mit Eingabefeldernverbunden so überschreiben die ausdem „aufrufenden“ Programm(Hauptprogramm) dieStandardeinstellungen des „Sub“ – VIsund das Eingabefeld wird entsprechendden Einstellungen in den Control-feldern skaliert ausgegeben. Umfestzustellen welche „Sub-VIs“ ineinem „Main“-VI verwendet werdenund wie sie untereinander verknüpftsind kann im Menü „Browse“ derListeneintrag „Show Hierarchy“aufgerufen werden. Das Ergebnis fürdieses einfache Beispiel ist in Abb. 10dargestellt. Anzumerken wäre noch,daß dieses Baumverzeichnis auch auf in LabVIEW bereits integrierte Funktionen angewendet werden kann umzu sehen aus welchen „sub“-VIs diese zusammengesetzt sind. Mit dieser Methode kann man etwa ein fertigesInstrumententreiber – VI in seine Teilkomponenten „zerlegen“ und diese für eigene Anwendungen neu

zusammensetzen.

Abbildung 8: Ergebnis der Programmausführung (Flußdia-gramm aus Abb. 6c).

Abbildung 9: Erweiterung des Demoprogramms.

Abbildung 10: Baumstruktur aller ver-wendeten "sub"-VIs eines "Haupt"-VIs