LabVIEW: Programmstrukturen 1. Folge (Sequenz)

Werbung
Carl-Engler-Schule Karlsruhe
LabVIEW: Programmstrukturen
1 (5)
LabVIEW: Programmstrukturen
1.
Folge (Sequenz)
Die Reihenfolge der Abarbeitung hängt von der Anordnung der Schaltungsteile im Diagrammfenster
(rechts) ab. Es werden die Programmobjekte von oben nach unten und von links nach rechts abgearbeitet.
Da dies sehr schnell geschieht, hat man den Eindruck, dass verschiedene (unabhängige) Schaltungsteile
gleichzeitig abgearbeitet werden. Bei Multicore-Prozessoren ist dies tatsächlich der Fall. Sind die
einzelnen Objekte miteinander verdrahtet, wird ein Objekt erst dann ausgeführt, wenn alle notwendigen
Eingangsdaten vorhanden sind. Durch die Verdrahtung kann man gewisse Reihenfolgen erzwingen.
In manchen Fällen ist es notwendig, sicherzustellen, dass eine ganz bestimmte Reihenfolge der Aktionen
eingehalten wird. Z.B. muss eine Geräteeinstellung abgeschlossen sein, bevor eine Messung gestartet wird.
Dies lässt sich mit der Struktur der Sequenz erreichen.
Die Sequenz besteht aus einzelnen Unterrahmen (Frames), die Programmobjekte aufnehmen können. Die
Nummerierung der Frames beginnt bei 0. Klickt man mit der rechten Maustaste auf dem Rand, kann ein
Frame dazugefügt, entfernt oder die Reihenfolge verändert werden.
Ebenso kann eine lokale Variable erzeugt werden, über die Inhalte in die weiteren Frames (über einen
Tunnel) übergeben werden.
Soll eine Variable am Ende der Sequenz noch weiterverarbeitet werden, wird sie einfach an den rechten
Rand des Frames verdrahtet. Eingaben in die Frames erfolgen am linken Rand.
Das vorliegende Programm erzeugt im 1 rahmen (0. Frame) eine Zufallszahl (zwischen 0 und 1) und zeigt
sie in der ersten Anzeige an. Nach 1500ms übernimmt der zweite Rahmen (1. Frame) die Zufallszahl,
multipliziert sie mit 2 und zeigt das Ergebnis in der zweiten Anzeige an. Nach weiteren 1500ms wird die
Sequenz verlassen, zur Zufallszahl 3 addiert, so dass die angezeigte Zahl zwischen 3 und 4 liegt und in der
dritten Anzeige angezeigt.
Die beiden Bilder zeigen dieselbe Schaltung, jedoch mit Blick in die beiden Frames der Stapel-Sequenz.
programmstrukturen.odt
Jan 2012
www.ces.karlsruhe.de/culm/
Seite 1 von 5
Carl-Engler-Schule Karlsruhe
LabVIEW: Programmstrukturen
2 (5)
Beispiel: Einstellungs-Sequenz
Im Beispiel wird für eine Dauer von 2000ms eine Spannung von 5V und ein Strom von 2A eingestellt.
Anschliessend werden 5000ms lang 18V und 070A ausgegeben. Dann werden Strom und Spannung wieder
auf Null gestzt.
Es wird die Programmstruktur "Sequenz" verwendet, bei der die Schritte nacheinander ausgeführt werden.
Im Bild sind die drei Rahmen gestaffelt gezeichnet, die eigentlich übereinander liegen.
Wichtig ist der letzte Rahmen, der Spannung und Strom wieder auf Null setzt, denn ein Gerät bleibt so
lange in seinem letzten Zustand, bis ein Befehl zur Änderung kommt. Auch bei einem Programmabbruch
bleibt die letzte Einstellung erhalten.
2.
Verzweigung
2.1
Einfach-Verzweigung (Auswahl, Alternation)
Bei der Alternative kann auf eine Frage nur mit "ja" oder "nein" geantwortet werden. Für die beiden Fälle
lassen sich unterschiedliche Teilprogramme definieren. Die Frage heißt hier "Schalter eingeschaltet?".
Im Beispiel wurde an den Schalter eine Sonde angehängt, um den Wahrheitswert anzuzeigen. Eine Frage
kann auch mit numerischen Daten oder mit Strings oder mit logischen Verknüpfungen realisiert sein.
2.2
Mehrfach-Verzweigung (Mehrfach-Auswahl, Case)
Statt einer Fragestellung mit den möglichen Antworten "TRUE" bzw. "FALSE" oder den logischen Werten 0
bzw. 1, kann hier eine ganze Liste von möglichen Antworten verwendet werden. Jeder möglichen Antwort
wird ein Frame zugeordnet. Ein eigener Frame für alle sonstigen Antworten (Standard) kann Fehleingaben
abfangen. Im Beispiel werden einzelne Intervalle der Temperatureingabe den Frames zugeordnet.
programmstrukturen.odt
Jan 2012
www.ces.karlsruhe.de/culm/
Seite 2 von 5
Carl-Engler-Schule Karlsruhe
LabVIEW: Programmstrukturen
3 (5)
Einige einfache Problemstellungen lassen sich auch mit dem
Objekt "Wählen" aus der Funktionsgruppe "Vergleich" lösen. Mit
einem Booleschen Wert wird einer von zwei Wegen auf den
Ausgang geschaltet. Es können Boolesche Werte, numerische
Werte oder Strings geschaltet werden.
3.
Schleife (Wiederholung, Iteration)
3.1
Endlosschleife
Die Endlosschleife (WHILE-Loop) wird verwendet, wenn die Anzahl der Schleifendurchläufe unbekannt ist
bzw. während des Schleifenlaufs berechnet wird. Durch eine logische Bedingung (True/False) wird
gesteuert, ob ein erneuter Schleifendurchgang stattfindet oder ein Abbruch erfolgt.
Die Elemente (hier Anzeige) innerhalb der Schleife werden bei jedem Durchgang aktualisiert. Die
Elemente außerhalb der Schleife (hier Tabelle) werden erst nach Abschluß der Schleife aktualisiert. Die
Daten werden über einen Tunnel auf dem Rand ausgegeben. Ein Tunnel der nicht indiziert, gibt nur den
letzten Wert aus. Mit eingeschalteter Indizierung werden alle Daten angesammelt und dann als Array
übergeben.
Um Daten von einem Schleifendurchgang in den nächsten zu übernehmen, werden Schieberegister (siehe
Hilfe) verwendet.
programmstrukturen.odt
Jan 2012
www.ces.karlsruhe.de/culm/
Seite 3 von 5
Carl-Engler-Schule Karlsruhe
LabVIEW: Programmstrukturen
4 (5)
Erzeugung einer Schrittfolge
Mit dem (nicht in LabVIEW enthaltenen) Sub-vi
"steps.vi" wird in einer WHILE-Schleife eine
Folge von Zahlen mit gleichem Abstand
(äquidistant) erzeugt. Anfang, Schrittweite und
Ende der Folge sind Eingangsgrössen für das
Sub-vi. Mit dem Schleifenzähler wird die
Schrittfolge gesteuert. Am Ausgang erscheinen
die Werte der Folge nacheinander. Beim
Erreichen oder Überschreiten des Endwertes
wird der logische Ausgang auf den Wert FALSCH
gesetzt. Mit ihm lässt sich die Schleife
beenden.
Die Schrittfolge kann auch absteigend erzeugt
werden. Dazu muss die Schrittweite einen
negativen Wert erhalten.
Die erzeugten Werte der Folge lassen sich z.B. zur schrittweisen Veränderung der Spannung am Netzgerät
verwenden.
3.2
Zählschleife
Die Zählschleife (FOR-Loop) wird verwendet, wenn die Anzahl der Schleifendurchläufe bekannt ist bzw.
vor dem Schleifenbeginn berechnet werden kann.
Die Variable i beginnt mit dem Wert 0.
Nach n Durchgängen hat i den Wert n-1.
4.
Formeln
4.1
Formel (Ausdrucksknoten)
Den Ausdrucksknoten findet man auf der Kachel „Numerisch“. Mit ihm kann eine einzelne numerische
Eingangsgröße zu einer Ausgangsgröße verrechnet werden. Die Eingangsgröße hat immer die Bezeichnung
x. Alle Standardfunktionen der Mathematik können kombiniert werden. Zu beachten ist, dass hier das
Dezimaltrennzeichen „.“ (Punkt) verwendet werden muss.
4.2
Formelknoten
Den Formelknoten findet man unter den Strukturen. Mit der rechten Maustaste werden auf dem Rand
Anschlüsse für Eingangs- und Ausgangsgrößen angelegt. In diese Anschlusspunkte werden die Namen der
verwendeten Variablen eingetragen. Im Innern des Formelknotens können nun die Berechnungsformeln
programmstrukturen.odt
Jan 2012
www.ces.karlsruhe.de/culm/
Seite 4 von 5
Carl-Engler-Schule Karlsruhe
LabVIEW: Programmstrukturen
5 (5)
eingetragen werden. Jede Formel wird durch ein Semikolon (Strichpunkt) abgeschlossen. Als
Dezimaltrennzeichen muss „.“ (Punkt) verwendet werden.
Neben den Grundoperationen der Algebra und Standardfunktionen sind auch logische Operatoren und
Programmstrukturen wie Verzweigung und Schleife möglich.
5.
Unterprogramm (Aufruf, Modul)
Programmteile, die mehrfach in einem Programm oder in gleicher Weise in verschiedenen Programmen
eingesetzt werden können, lassen sich als Modul (Unterprogramm, sub-vi) einsetzen.
Ein vorbereitetes Modul wird aus dem aktuellen Programm heraus über „VI auswählen“ aus dem Explorer
ins Diagrammfenster geholt (nicht im Explorer starten) oder aus dem Explorer in Diagrammfenster
gezogen.
Module lassen sich aus dem eigenen Programm über „Bearbeiten – Sub VI erstellen“ erzeugen und mit den
entsprechenden Anschlusspunkten versehen.
Beispiel:
Die Pumpe der Eismaschine muss eingeschaltet sein, wenn der Kompressor eingeschaltet wird.
Es stehen nur Taster zur Verfügung.
Es soll wahlweise über AUS1 bzw. AUS2 gestoppt werden können.
Ein RS-Flip-Flop ist im Standardumfang von LabVIEW nicht enthalten. Ein selbst erstelltes Sub-VI lässt sich
wie andere Module in ein Programm einbauen. Dabei greift jeder Aufruf auf den selben Speicherbereich
zu. Wird es mehrfach verwendet, muss jeweils eine eigene Instanz im Speicher gehalten werden. Dies lässt
sich bei den VI-Einstellungen festlegen.
programmstrukturen.odt
Jan 2012
www.ces.karlsruhe.de/culm/
Seite 5 von 5
Herunterladen
Explore flashcards