Labview ist ein fertiges Programm mit Beschreibung. Verschiedene Programmiertechniken in NI LabVIEW

Hallo Kollegen!

In einem relativ kurzen Artikel möchte ich über die Programmiersprache LabVIEW sprechen. Dieses sehr interessante Produkt erfreut sich leider keiner großen Beliebtheit, und ich möchte die bestehende Lücke ein Stück weit füllen.

Was ist LabVIEW?

LabVIEW ist eines der Flaggschiffprodukte von National Instruments. Zunächst sei darauf hingewiesen, dass LabVIEW eine Abkürzung ist, die für steht Labor Oratorium v virtuell ICH Instrumentierung E Maschinenbau W Orkbank. Bereits im Namen lässt sich die Ausrichtung auf Laborforschung, Messungen und Datenerhebung nachvollziehen. Tatsächlich ist der Aufbau eines SCADA-Systems in LabVIEW etwas einfacher als die Verwendung „herkömmlicher“ Entwicklungstools. In diesem Artikel möchte ich zeigen, dass der mögliche Umfang von LabVIEW etwas größer ist. Dies ist eine grundlegend andere Programmiersprache oder, wenn Sie möchten, eine ganze "Philosophie" der Programmierung. Eine funktionale Sprache, die zum Umdenken anregt und manchmal absolut fantastische Möglichkeiten für den Entwickler bietet. Ist LabVIEW überhaupt eine Programmiersprache? Das ist umstritten – hier gibt es keinen Standard, wie zum Beispiel ANSI C. In engen Entwicklerkreisen sagen wir, dass wir in der Sprache „G“ schreiben. Formal existiert eine solche Sprache nicht, aber das ist das Schöne an diesem Entwicklungstool: Von Version zu Version werden immer mehr neue Konstrukte in die Sprache eingeführt. Es ist schwer vorstellbar, dass in der nächsten Reinkarnation von C beispielsweise eine neue Struktur für die for-Schleife auftauchen wird. Und in LabVIEW ist das durchaus möglich.
Es sollte jedoch beachtet werden, dass LabVIEW in der TIOBE-Bewertung von Programmiersprachen enthalten ist und belegt dieser Moment Platz 30 liegt irgendwo zwischen Prolog und Fortran.

NI LabVIEW - Entstehungsgeschichte

National Instruments wurde 1976 von drei Gründern – Jeff Kodosky, James Truchard und Bill Nowlin – in der US-amerikanischen Stadt Austin, Texas, gegründet. Die Hauptspezialisierung des Unternehmens waren Werkzeuge für Messungen und Automatisierung der Produktion.
Die erste Version von LabVIEW erschien zehn Jahre nach der Firmengründung – 1986 (es war die Version für den Apple Mac). NI-Ingenieure entschieden sich, „traditionelle“ Programmiersprachen herauszufordern und schufen eine vollständig grafische Entwicklungsumgebung. Jeff wurde zum Hauptideologen des grafischen Ansatzes. Jahr für Jahr wurden neue Versionen veröffentlicht. Die erste plattformübergreifende Version (einschließlich Windows) war Version 3, die 1993 veröffentlicht wurde. Die aktuelle Version ist 8.6, die letztes Jahr veröffentlicht wurde.

Bis heute hat das Unternehmen seinen Hauptsitz in Austin. Heute beschäftigt das Unternehmen fast viertausend Mitarbeiter und hat Niederlassungen in fast vierzig Ländern (es gibt auch eine Niederlassung in Russland).

Meine Einführung in LabVIEW

Meine Einführung in LabVIEW geschah vor fast zehn Jahren. Ich habe mit einem neuen Vertrag angefangen zu arbeiten, und mein damaliger Chef hat mir eine Packung CDs mit der Aufschrift "jetzt wirst du daran arbeiten" überreicht. Ich habe LabVIEW installiert (es war die fünfte Version) und nachdem ich eine Weile herumgespielt hatte, sagte ich, dass DARAUF nichts Ernsthaftes getan werden könnte, es ist besser, Delphi „auf die altmodische Weise“ zu verwenden ... Worauf er mir sagte - du hast es einfach nicht geschmeckt. Arbeite ein oder zwei Wochen. Nach einer Weile werde ich verstehen, dass ich auf nichts anderem als LabVIEW schreiben kann. Ich habe mich einfach in diese Sprache verliebt, obwohl es nicht „Liebe auf den ersten Blick“ war.

Generell ist es ziemlich schwierig, grafische und textbasierte Programmiersprachen zu vergleichen. Das ist vielleicht ein Vergleich aus der Kategorie "PC" gegen "MAC" oder "Windows" gegen "Linux" - da kann man beliebig argumentieren, aber das Argument ist absolut sinnlos - jedes System hat seine Daseinsberechtigung und jedes wird sowohl Befürworter als auch Gegner haben, außerdem hat jedes Produkt seine eigene Nische. LabVIEW ist nur ein Werkzeug, wenn auch ein sehr flexibles.

Was ist LabVIEW?

LabVIEW ist eine plattformübergreifende Entwicklungsumgebung für grafische Anwendungen. LabVIEW ist im Grunde eine universelle Programmiersprache. Und obwohl dieses Produkt manchmal eng mit Hardware von National Instruments in Verbindung gebracht wird, ist es dennoch nicht mit einer bestimmten Maschine verbunden. Es gibt Versionen für Windows, Linux, MacOS. Der Quellcode ist portabel und die Programme sehen auf allen Systemen gleich aus. Von LabVIEW generierter Code kann auch in ausgeführt werden Windows Mobil oder PalmOS (fairerweise sei angemerkt, dass der Support für PalmOS eingestellt wurde, aber Palm selbst ist hier eher schuld). Diese Sprache kann erfolgreich zur Erstellung großer Systeme, zur Verarbeitung von Texten, Bildern und zum Arbeiten mit Datenbanken eingesetzt werden.

LabVIEW ist eine sehr hohe Programmiersprache. Nichts hindert Sie jedoch daran, "Low-Level"-Module in LabVIEW-Programme einzubinden. Auch wenn Sie Assembler-Inserts verwenden möchten - das ist auch möglich, Sie müssen nur eine DLL generieren und Aufrufe in den Code einfügen. Auf der anderen Seite ermöglicht Ihnen eine Hochsprache, sehr einfache Operationen mit Daten auszuführen, die in einer regulären Sprache viele Zeilen (wenn nicht Dutzende von Zeilen) Code erfordern könnten. Der Fairness halber sei jedoch angemerkt, dass einige Operationen von Low-Level-Sprachen (z. B. das Arbeiten mit Zeigern) in LabVIEW aufgrund seines "High-Level" nicht so einfach zu implementieren sind. Natürlich enthält die LabVIEW-Sprache grundlegende Steuerungskonstrukte, die Entsprechungen in "traditionellen" Sprachen haben:

  • Variablen (lokal oder global)
  • Verzweigung (Fallstruktur)
  • For - Schleifen mit und ohne Abschlussprüfung.
  • While-Schleifen
  • Gruppieren von Operationen.

LabVIEW - Programm- und Sprachfunktionen

In LabVIEW entwickelt Softwaremodule werden als „Virtuelle Instrumente“ (Virtual Instruments) oder vereinfacht VI bezeichnet. Sie werden in *.vi-Dateien gespeichert. VIs sind die Bausteine, aus denen ein LabVIEW-Programm besteht. Jedes LabVIEW-Programm enthält mindestens ein VI. In Bezug auf die C-Sprache kann man ganz sicher eine Analogie zu einer Funktion ziehen, mit dem einzigen Unterschied, dass in LabVIEW eine Funktion in einer Datei enthalten ist (man kann auch Werkzeugbibliotheken erstellen). Selbstverständlich kann ein VI von einem anderen VI aus aufgerufen werden. Grundsätzlich besteht jedes VI aus zwei Teilen - Blockdiagramm und Frontpanel. Das Blockschaltbild ist Programmiercode(genauer gesagt, eine visuelle grafische Darstellung des Codes), und das Frontpanel ist die Schnittstelle. So sieht ein klassisches Beispiel für „Hello, World!“ aus:

Das Herzstück von LabVIEW ist das Datenflussparadigma. Im obigen Beispiel sind die Konstante und der Indikatoranschluss durch eine Linie verbunden. Diese Leitung heißt Wire. Sie können es "Draht" nennen. Drähte übertragen Daten von einem Element zum anderen. Dieses ganze Konzept wird als Datenfluss bezeichnet. Die Essenz des Blockdiagramms sind die Knoten (Knoten), die Ausgänge einiger Knoten sind mit den Eingängen anderer Knoten verbunden. Der Knoten beginnt erst dann mit der Ausführung, wenn alle für die Arbeit erforderlichen Daten eintreffen. Im obigen Diagramm gibt es zwei Knoten. Einer von ihnen ist eine Konstante. Dieser Knoten ist autark – er beginnt sofort mit der Ausführung. Der zweite Knoten ist ein Indikator. Es zeigt die Daten an, die die Konstante übergibt (aber nicht sofort, sondern sobald die Daten von der Konstante eintreffen).

Hier ist ein bisschen mehr komplexes Beispiel: Addition und Multiplikation zweier Zahlen. In traditionellen Sprachen würden wir so etwas schreiben wie

int a, b, summe, mul;
//...
Summe = a + b;
mul = a*b;

So sieht es in LabVIEW aus:

Beachten Sie, dass Addition und Multiplikation automatisch parallel ausgeführt werden. Auf einem Computer mit zwei Prozessoren werden beide Prozessoren automatisch aktiviert.

Und so sieht while / aus für Schleifen und if / then / else Struktur:

Wie bereits erwähnt, werden alle Elemente parallel ausgeführt. Sie müssen nicht darüber nachdenken, wie Sie eine Aufgabe in mehrere Threads parallelisieren, die parallel auf mehreren Prozessoren ausgeführt werden können. IN letzte Version Sie können sogar explizit angeben, auf welchem ​​der Prozessoren diese oder jene While-Schleife ausgeführt werden soll. Jetzt gibt es Add-Ons für Textsprachen, mit denen Sie ganz einfach Unterstützung erreichen können Multiprozessorsysteme, aber so einfach wie in LabVIEW ist das wohl nirgends implementiert. (naja, ich bin noch in den Vergleich mit Textsprachen gerutscht). Wenn wir schon von Multithreading sprechen, dann sollte auch beachtet werden, dass ein Entwickler eine große Auswahl an Tools zum Synchronisieren von Threads hat - Semaphoren, Warteschlangen, Rendezvous usw.

LabVIEW enthält eine Vielzahl von Elementen zum Erstellen von Benutzeroberflächen. Schnittstellen in Delphi wurden schnell auf was „angegriffen“, und in LabVIEW ist dieser Prozess noch schneller.

Die Standardlieferung von LabVIEW umfasst auch Blöcke für die Arbeit mit INI-Dateien, die Registrierung, Funktionen für die Arbeit mit Binär- und Testdateien, mathematische Funktionen, leistungsstarke Tools zum Plotten (und wo ohne es im Labor) und zusätzlich zu den bereits erwähnten Möglichkeiten von DLL-Aufrufen ermöglicht Ihnen LabVIEW die Arbeit mit ActiveX-Komponenten und .net. Ab der achten Version wurde LabVIEW um die Unterstützung von Klassen erweitert – die Sprache wurde objektorientiert. Die implementierte Unterstützung kann nicht als vollständig bezeichnet werden, aber die Hauptmerkmale objektorientierter Sprachen - Vererbung und Polymorphie - sind vorhanden. Außerdem kann die Funktionalität der Sprache mit zusätzlichen Modulen erweitert werden, wie z. B. NI Vision Toolkit – für Bildverarbeitung und maschinelles Sehen und andere. Und mit Hilfe des Application Builder-Moduls können Sie eine ausführbare Exe-Datei generieren. Mit dem Internet Toolkit können Sie arbeiten FTP-Server, mit dem Database Connectivity Toolkit - mit Datenbanken usw.

Das hört man oft grafischer Code wir lesen schlecht. In der Tat ist die Fülle an Ikonen und Dirigenten aus Gewohnheit etwas schockierend. Außerdem erstellen unerfahrene Entwickler "Blatt"-Programme und "Spaghetti"-Programme. Ein erfahrener LabVIEW-Entwickler wird jedoch niemals Diagramme erstellen, die größer als die Bildschirmgröße sind, selbst wenn das Programm aus Hunderten von Modulen besteht. Ein gut gestaltetes Programm ist eigentlich „selbstdokumentierend“, weil es bereits auf einer grafischen Darstellung basiert.

Beim Programmieren in LabVIEW war ich lange Zeit fest davon überzeugt, dass LabVIEW ein Interpreter ist und Blockdiagramme ständig vom Kernel interpretiert werden. Nach Gesprächen mit NI-Ingenieuren stellte sich heraus, dass dies nicht der Fall war. LabVIEW ist ein Compiler (die Qualität der Codegenerierung lässt allerdings zu wünschen übrig). Die Kompilierung erfolgt jedoch „on the fly“ – zu jedem Zeitpunkt der Entwicklung ist das Programm jederzeit lauffähig. Außerdem kann LabVIEW-Code in eine vollwertige ausführbare Datei kompiliert werden, die auf einem Computer ausgeführt werden kann, auf dem LabVIEW nicht installiert ist (obwohl LabVIEW Run-Time erforderlich ist). Sie können auch den Installationspaket-Installer kompilieren, Dienstprogramme von Drittanbietern der InstallShield-Typ ist nicht erforderlich.

Eine weitere und detailliertere Beschreibung der Funktionen des Pakets würde den Rahmen dieses Artikels sprengen, aber ich schlage nur vor, es auszuprobieren (Links sind unten angegeben). Wie die Großen sagten: "... the only way to master neue Sprache Programmierung - Programme darauf schreiben. Nun, erfahrene Programmierer werden in der Lage sein, die gewonnenen Erkenntnisse auf ihre eigenen Bedürfnisse zu extrapolieren.

Fast alle Entwickler von Geräten auf Mikrocontrollern, ob Amateure oder Profis, müssen früher oder später ein Mikrocontroller-Gerät an seinen „großen Bruder“, nämlich einen PC, anschließen. Da stellt sich die Frage, mit welcher Software man die von ihm empfangenen Daten mit dem Mikrocontroller austauscht, analysiert und weiterverarbeitet? Um den MK mit einem Computer auszutauschen, verwenden sie häufig die RS232-Schnittstelle und das Protokoll - das gute alte COM-Port in der einen oder anderen Implementierung.

Auf der Computerseite kommen verschiedene Terminalprogramme zum Einsatz, von denen es Hunderte gibt. Diese Programme bieten jedoch nur den Empfang und die Übertragung von Informationen. Es ist schwierig, es in einer visuellen Form zu verarbeiten und zu visualisieren.

Einige Leute schreiben solche Software selbst in einer Programmiersprache (Delphi, C ++) und statten sie mit der erforderlichen Funktionalität aus. Aber diese Aufgabe ist nicht einfach, Sie müssen neben der Sprache selbst auch das Gerät kennen Betriebssystem, Arbeitsweisen mit Kommunikationsports, viele andere technische Feinheiten, die von der Hauptsache ablenken - der Implementierung des Programmalgorithmus. Im Allgemeinen sollten Sie nebenbei ein Windows/Unix-Programmierer sein.

Vor dem Hintergrund dieser Ansätze unterscheidet sich das Konzept virtueller Instrumente (vi) stark. Dieser Artikel wird darüber sprechen Softwareprodukt LabView von Nationals Instruments. Ich fange gerade erst an, dieses wunderbare Produkt zu beherrschen, daher kann ich Ungenauigkeiten und Fehler machen. Spezialisten werden es korrigieren :-)) Was ist eigentlich LabView?

LabView ist eine Entwicklungsumgebung und Plattform zum Ausführen von Programmen, die in der grafischen Programmiersprache G von National Instruments geschrieben sind.

reden einfache Sprache, LabView - Dies ist eine Umgebung zum Erstellen von Anwendungen für die Aufgaben des Sammelns, Verarbeitens und Visualisierens von Informationen von verschiedenen Instrumenten, Laboreinrichtungen usw. Und auch für die Steuerung von technologischen Prozessen und Geräten. Mit Hilfe von LabView können Sie jedoch ganz gewöhnliche Anwendungssoftware erstellen. Es ist nicht meine Absicht, dieses Produkt im Detail zu beschreiben und damit zu arbeiten. LabView hat Tausende von Seiten mit ausgezeichneter Dokumentation und Hunderte von Büchern. Das Internet ist voll von LabView-bezogenen Ressourcen, in denen Sie Antworten auf alle Ihre Fragen finden können.

Der Zweck des Artikels ist es zu zeigen, wie einfach und bequem Sie im Vergleich zur herkömmlichen Programmierung Anwendungen für einen PC erstellen können und welche Leistungsfähigkeit LabView bietet. (Eigentlich ist es umstritten, denn in der traditionellen Programmierung ist es auf demselben Delphi nicht schwieriger. Und in Bezug auf die Effizienz ist es kaum schlechter, wenn nicht sogar besser. Aber dafür müssen Sie Delphi viel länger studieren. Alles ist fast sofort schnell und klar "Ich habe ein paar Handbücher studiert und vor mir alle möglichen Zifferblätter eingezäunt. Also für Programmierer ist es wie das fünfte Bein eines Hundes, aber für solche Kameraden, die so weit vom Computer entfernt sind wie ich, das war's. Einmal, In einer halben Stunde, als ich LabView zum ersten Mal sah, baute ich ein brutales System mit einer dünnen manuellen Bewässerungs- und Heizungssteuerung für ein Hanfgewächshaus. Mit allen Arten von PID-Reglern. Ich brachte die Potentiometer und Sensoren des Laborständers mit, der darin war unser Technikfreak und startete diese höllische Einheit. Und alles funktionierte auf Anhieb, ohne Debugging. Übrigens funktioniert die gesamte Ausrüstung des Hadron Colliders auf LabView, ebenso wie eine Menge wissenschaftlicher Ausrüstung. Anmerkung DI HALT) PC-Programmierung ist den meisten Elektronikern schließlich fremd, oder? Das versuchen wir zu beheben. Um keine kugelförmigen Vakuumpferde zu studieren, haben wir uns eine einfache Aufgabe gestellt und umgesetzt. Die Aufgabe ist wirklich einfach, aber darauf basierend können Sie die Grundprinzipien der Programmierung in LabView verstehen. Wir verwenden LabView Version 2010. Bei anderen Versionen sind die Unterschiede minimal.

Aufgabe
Wir haben ein Board mit einem AVR-Mikrocontroller, der über RS232 mit einem Computer verbunden ist. Der Controller wird mit Firmware geladen, wonach der Controller den Spannungswert an einem der ADC-Eingänge misst und den ADC-Code (von 0 bis 1023) über einen seriellen Kanal an den Computer überträgt. Es ist notwendig, ein PC-Programm zu schreiben, das einen Datenstrom vom ADC empfängt, den ADC-Code anzeigt, den ADC-Code in einen Spannungswert in Volt umwandelt, den Spannungswert in Volt anzeigt und die Spannungsänderung über die Zeit aufzeichnet.

So, wohl genug der Texte, fangen wir vielleicht an!

Also, was wir brauchen, um zu arbeiten:

  • Eigentlich LabView selbst. Sie können eine Testversion von der NI-Website herunterladen: http://www.ni.com/trylabview/. Googlet auch ohne Probleme Raubkopien. Übrigens gibt es auf rutracker.org neben dem Abgrund der Raubkopien auch eine Linux-Version, für die scheinbar überhaupt keine Registrierung erforderlich ist. NI hat sich für Open Source entschieden?
  • Außerdem müssen Sie die NI VISA-Komponente herunterladen. Ohne dieses Programm „sieht“ LabView den COM-Port des Computers nicht. VISA enthält Funktionen zum Arbeiten mit Kommunikationsports und vieles mehr. Sie können es von joule.ni.com herunterladen. Installieren Sie LabView und VISA. Die Installation dieser Software ist Standard, sie weist keine Besonderheiten auf.

Zunächst müssen wir sicherstellen, dass VISA einen COM-Port im System gefunden hat und damit korrekt arbeitet. Sie können dies wie folgt überprüfen: Führen Sie das Programm „Measurement & Automation“ aus. Es kommt mit LabView. Wenn es nicht installiert ist, können Sie es manuell installieren. Auf der Festplatte (das Image mit LabView hat es).

Wir bekommen so etwas:


Also was haben wir. Der Arbeitsbereich besteht aus zwei großen Panels Frontpanel und Blockdiagramm. Auf dem Frontpanel werden wir die Schnittstelle unseres Programms mit Steuerelementen aus dem Controls-Panel zusammenstellen. Diese Elemente sind die uns bekannten Griffe von variablen Widerständen, LEDs, Tasten, Zeigergeräten, einem Oszilloskopbildschirm usw. Sie dienen der Eingabe von Informationen in das Programm und der Anzeige der Ausführungsergebnisse. Auf dem Blockdiagramm-Panel befindet sich direkt der Programmcode. Hier müssen wir etwas zurücktreten und das Prinzip der Programmierung in LabView erläutern. Ein kleines Beispiel. Es ist üblich, mit der Arbeit am Programm mit dem Design der Schnittstelle und dann mit der Implementierung des Arbeitsalgorithmus im Blockdiagramm zu beginnen. Lassen Sie uns das einfachste Programm zum Multiplizieren zweier Zahlen erstellen. Dazu platzieren wir auf dem Frontpanel durch Ziehen drei Bedienelemente, sagen wir die Elemente Knob und Numeric Indicator, um das Ergebnis anzuzeigen.

Ok, jetzt müssen wir die eigentliche Multiplikation implementieren. Gehen Sie zum Blockdiagramm-Panel und sehen Sie, dass für jedes unserer Steuerelemente ein entsprechendes Symbol erstellt wurde. Schalten Sie am besten sofort den Anzeigemodus in Form von Terminals um. Das Diagramm wird nicht so überladen sein. Außerdem ist in den Terminals der Typ der Daten sichtbar, mit denen diese oder jene Kontrolle arbeitet. Klicken Sie dazu mit der rechten Maustaste auf das Symbol und deaktivieren Sie Als Symbol anzeigen. Am oberen Bildschirmrand befindet sich die Steuerung in Form eines Terminals, unten und rechts in Form eines Icons. Um die Ansicht auf dem Blockdiagramm standardmäßig als Klemmen zu konfigurieren, müssen Sie den Menüpunkt Extras->Optionen auswählen, links Blockdiagramm auswählen und Frontpanel-Anschlüsse als Symbole platzieren deaktivieren. Sehr nützlich, um die Kontexthilfe anzuzeigen. Sie können es mit der Kombination Strg + H anzeigen. Dieses Fenster zeigt Informationen über das Objekt an, auf dem sich der Cursor gerade befindet. Mega praktischer Artikel.

Das wichtigste Konzept bei der LabView-Programmierung ist das DataFlow-Konzept. Die Quintessenz lautet: Im Gegensatz zu imperativen Programmiersprachen, in denen Anweisungen in sequentieller Reihenfolge ausgeführt werden, funktionieren in LabView Funktionen nur, wenn Informationen zu allen Funktionseingaben vorhanden sind (jede Funktion hat Eingabe- und Ausgabewerte). Erst dann implementiert die Funktion ihren Algorithmus, und das Ergebnis wird an einen Ausgang gesendet, der von einer anderen Funktion verwendet werden kann. Somit können Funktionen innerhalb desselben VIs unabhängig voneinander arbeiten.

Um unser Beispiel wiederzubeleben, müssen wir diesem Konzept folgen und der Funktionseingabe die numerischen Werte geben, die wir als Steuerelemente festlegen, und das Ergebnis aus der Ausgabe abrufen und anzeigen.

Um Elemente in einem Blockdiagramm zu verbinden, verwenden Sie das Werkzeug „Verbindung verbinden“ im Bedienfeld „Werkzeuge“. Wählen Sie es aus und zeichnen Sie unsere Verbindungen.

Wie Sie sehen können, scheint es nichts Kompliziertes zu geben. Aber gleichzeitig ermöglicht Ihnen LabView, Probleme beliebiger Komplexität zu lösen! Ept, darauf ist die TANK-Steuerung aufgebaut! So dass.

Nun, jetzt machen wir interessantere Dinge, nämlich, wir werden unser einfachstes Voltmeter bauen, über das ich ganz am Anfang gesprochen habe.

Was müssen wir also tun? Zuerst müssen Sie die serielle Schnittstelle konfigurieren und initialisieren. Starten Sie eine Endlosschleife. In der Schleife verwenden wir die Funktion, um vom Port zu lesen und Informationen zu erhalten. Lassen Sie uns die Informationen für die Anzeige im Diagramm umwandeln und den ADC-Code in den Spannungswert in Volt umrechnen. Beim Verlassen der Schleife schließen wir den Port.
In der Oberfläche unseres Programms gibt es also keine anderen Steuerelemente als die Schaltfläche Stopp, sondern nur eine Anzeige des Ergebnisses. Wir werden dies tun: Zuerst erstellen wir ein Blockdiagramm und fügen dann die fehlenden Elemente hinzu die Frontplatte. Obwohl Sie das Gegenteil tun müssen! Aber in diesem Fall ist es bequemer.

Auf dem Blockdiagramm-Panel platzieren wir das While-Loop-Element aus der Strukturen-Palette, das ist unsere Endlosschleife. Wir umkreisen den Bereich mit einem Zyklusrahmen, der ausreicht, um in den Algorithmus zu passen. In der unteren rechten Ecke befindet sich ein roter Punkt, klicken Sie mit der rechten Maustaste darauf und wählen Sie Steuerung erstellen. Die Stopp-Taste erscheint sofort auf der Frontplatte. Wenn Sie darauf klicken, endet unser Programm.

Sie müssen Steuerelemente für die Port-Initialisierungsfunktion erstellen. Uns reichen zwei - die Portgeschwindigkeit und der Portname. Genauso wie wir eine Konstante für die Lesefunktion erstellt haben, erstellen wir Steuerelemente. RMB auf die erforderlichen Eingaben der Initialisierungsfunktion und des Elements

Erstellen->Kontrolle.

Erstellen->Kontrolle.

Uns interessieren zwei Inputs: Visa-Ressourcenname Und Baudrate(Standard 9600). Gehen wir nun zum Frontpanel und fügen die notwendigen Komponenten hinzu, nämlich den Grafikzeichnungsbildschirm und Beschriftungen zur Anzeige des ADC-Codes und der Spannung in Volt.
Dementsprechend sind dies Waveform Chart-Elemente aus der Graph-Palette und zwei Numeric Indicator-Elemente aus der Numeric-Palette.

Lassen Sie uns zum Blockdiagramm zurückkehren und die Elemente verschieben, die innerhalb der Schleife erschienen sind. Wir stehen kurz vor der Fertigstellung! Die einzige Sache ist, dass wir die Zeichenkette, die aus der Ausgabe der Read-Funktion kommt, noch in ein Format konvertieren müssen, das unsere Indikatoren verarbeiten können. Und auch die einfachste Mathematik zum Übersetzen des ADC-Codes in Volt zu implementieren. Unten sind Screenshots der Frontplatte und Blockdiagramm auf diese Phase:



Um einen String zu konvertieren, verwenden wir die Funktion Scan from string aus der String-Palette. Wir legen es in die Schleife. Jetzt Mathe. Um den ADC-Code in einen Spannungswert in Volt umzuwandeln, müssen Sie den Code mit dem Wert der Referenzspannung (in meinem Fall sind es fünf Volt) multiplizieren und den resultierenden Wert durch 1023 teilen (da der ADC eine 10-Bit-Kapazität). Die notwendigen Funktionen Multiplikation und Division sowie Konstanten (5 und 1023) werden in eine Schleife gelegt. Ich werde keine Screenshots von jeder Verbindung machen, da es bereits Dofiga-Bilder gibt. Ich werde den letzten Bildschirm aller Verbindungen geben. Da ist alles ganz einfach.


Ich denke, alles ist klar, wenn Sie Fragen haben, stellen Sie sie in den Kommentaren. Finden wir es gemeinsam heraus :-))) Inzwischen ist das Programm fertig.

Gehen wir weiter zu unserer Benutzeroberfläche und optimieren den Graphen ein wenig. Wählen Sie den unteren Wert auf der Y-Achse und setzen Sie ihn auf 0. Wählen Sie den oberen Wert und setzen Sie ihn auf 5. Somit liegt unsere Skala auf der Y-Achse im Bereich von 0-5 Volt. Nun, wir wählen den COM-Port aus, geben den Wechselkurs ein, starten unser Programm über die Schaltfläche mit dem Pfeil und drehen heftig am Widerstand auf der Platine, während wir das Ergebnis unserer Arbeit auf dem Bildschirm beobachten. Klicken Sie auf die Schaltfläche Stop, um das Programm zu stoppen.

Und Sie können Teile auch zu Funktionsblöcken kombinieren, damit sie die Schaltung nicht überladen.

Fast alle Entwickler von Geräten auf Mikrocontrollern, ob Amateure oder Profis, müssen früher oder später ein Mikrocontroller-Gerät an seinen „großen Bruder“, nämlich einen PC, anschließen. Da stellt sich die Frage, mit welcher Software man die von ihm empfangenen Daten mit dem Mikrocontroller austauscht, analysiert und weiterverarbeitet? Um den MK mit einem Computer auszutauschen, verwenden sie häufig die RS232-Schnittstelle und das Protokoll - den guten alten COM-Port in der einen oder anderen Implementierung.

Auf der Computerseite kommen verschiedene Terminalprogramme zum Einsatz, von denen es Hunderte gibt. Diese Programme bieten jedoch nur den Empfang und die Übertragung von Informationen. Es ist schwierig, es in einer visuellen Form zu verarbeiten und zu visualisieren.

Einige Leute schreiben solche Software selbst in einer Programmiersprache (Delphi, C ++) und statten sie mit der erforderlichen Funktionalität aus. Aber diese Aufgabe ist nicht einfach, Sie müssen neben der Sprache selbst das Gerät des Betriebssystems kennen, wie man mit Kommunikationsports arbeitet, und viele andere technische Feinheiten, die von der Hauptsache ablenken - der Implementierung des Programms Algorithmus. Im Allgemeinen sollten Sie nebenbei ein Windows/Unix-Programmierer sein.

Vor dem Hintergrund dieser Ansätze unterscheidet sich das Konzept virtueller Instrumente (vi) stark. Dieser Artikel konzentriert sich auf das Softwareprodukt LabView von Nationals Instruments. Ich fange gerade erst an, dieses wunderbare Produkt zu beherrschen, daher kann ich Ungenauigkeiten und Fehler machen. Spezialisten werden es korrigieren :-)) Was ist eigentlich LabView?

LabView ist eine Entwicklungsumgebung und Plattform zum Ausführen von Programmen, die in der grafischen Programmiersprache G von National Instruments geschrieben sind.

Einfach ausgedrückt ist LabView eine Umgebung zum Erstellen von Anwendungen für die Aufgaben des Sammelns, Verarbeitens und Visualisierens von Informationen von verschiedenen Instrumenten, Laboreinstellungen usw. Und auch für die Steuerung von technologischen Prozessen und Geräten. Mit Hilfe von LabView können Sie jedoch ganz gewöhnliche Anwendungssoftware erstellen. Es ist nicht meine Absicht, dieses Produkt im Detail zu beschreiben und damit zu arbeiten. LabView hat Tausende von Seiten mit ausgezeichneter Dokumentation und Hunderte von Büchern. Das Internet ist voll von LabView-bezogenen Ressourcen, in denen Sie Antworten auf alle Ihre Fragen finden können.

Der Zweck des Artikels ist es zu zeigen, wie einfach und bequem Sie im Vergleich zur herkömmlichen Programmierung Anwendungen für einen PC erstellen können und welche Leistungsfähigkeit LabView bietet. (Eigentlich ist es umstritten, denn in der traditionellen Programmierung ist es auf demselben Delphi nicht schwieriger. Und in Bezug auf die Effizienz ist es kaum schlechter, wenn nicht sogar besser. Aber dafür müssen Sie Delphi viel länger studieren. Alles ist schnell und klar, fast sofort habe ich ein paar Handbücher studiert und alle möglichen Zifferblätter eingezäunt. Also für Programmierer ist es wie das fünfte Bein eines Hundes, aber für solche Kameraden, die weit von einem Computer entfernt sind, wie ich, das war's. Einmal, in einer halben Stunde, als ich LabView zum ersten Mal sah, baute ich ein brutales System mit einer dünnen manuellen Bewässerungs- und Heizungssteuerung für ein Hanfgewächshaus. Mit allen möglichen PID-Reglern. Ich brachte die Potentiometer und Sensoren des Laborständers mit, der in unserem Technikfreak stand startete diese höllische Einheit. Und alles funktionierte sofort, ohne Debugging. Übrigens funktioniert die gesamte Ausrüstung des Hadron Colliders auf LabView, ebenso wie viele wissenschaftliche Geräte. Anmerkung DI HALT) PC-Programmierung ist den meisten Elektronikern schließlich fremd, oder? Das versuchen wir zu beheben. Um keine kugelförmigen Vakuumpferde zu studieren, haben wir uns eine einfache Aufgabe gestellt und umgesetzt. Die Aufgabe ist wirklich einfach, aber darauf basierend können Sie die Grundprinzipien der Programmierung in LabView verstehen. Wir verwenden LabView Version 2010. Bei anderen Versionen sind die Unterschiede minimal.

Aufgabe
Wir haben ein Board mit einem AVR-Mikrocontroller, der über RS232 mit einem Computer verbunden ist. Der Controller wird mit Firmware geladen, wonach der Controller den Spannungswert an einem der ADC-Eingänge misst und den ADC-Code (von 0 bis 1023) über einen seriellen Kanal an den Computer überträgt. Es ist notwendig, ein PC-Programm zu schreiben, das einen Datenstrom vom ADC empfängt, den ADC-Code anzeigt, den ADC-Code in einen Spannungswert in Volt umwandelt, den Spannungswert in Volt anzeigt und die Spannungsänderung über die Zeit aufzeichnet.

So, wohl genug der Texte, fangen wir vielleicht an!

Also, was wir brauchen, um zu arbeiten:

  • Eigentlich LabView selbst. Sie können eine Testversion von der NI-Website herunterladen: http://www.ni.com/trylabview/. Auch eine Raubkopienversion ist leicht zu googeln. Übrigens gibt es auf rutracker.org neben dem Abgrund der Raubkopien auch eine Linux-Version, für die scheinbar überhaupt keine Registrierung erforderlich ist. NI hat sich für Open Source entschieden?
  • Außerdem müssen Sie die NI VISA-Komponente herunterladen. Ohne dieses Programm „sieht“ LabView den COM-Port des Computers nicht. VISA enthält Funktionen zum Arbeiten mit Kommunikationsports und vieles mehr. Sie können es von joule.ni.com herunterladen. Installieren Sie LabView und VISA. Die Installation dieser Software ist Standard, sie weist keine Besonderheiten auf.

Zunächst müssen wir sicherstellen, dass VISA einen COM-Port im System gefunden hat und damit korrekt arbeitet. Sie können dies wie folgt überprüfen: Führen Sie das Programm „Measurement & Automation“ aus. Es kommt mit LabView. Wenn es nicht installiert ist, können Sie es manuell installieren. Auf der Festplatte (das Image mit LabView hat es).

Auf der linken Seite des Fensters sehen wir die im System gefundene Hardware. Unter anderem finden wir unseren COM-Port. Auf der rechten Seite befindet sich die Schaltfläche Open Visa Test Panel. Damit können Sie das ausgewählte Gerät testen. Bei einem COM-Port können Sie dort eine vorgegebene oder beliebige Zeichenfolge senden oder empfangen. Wenn mit dem Port alles in Ordnung ist, können Sie direkt mit der Erstellung unseres Programms fortfahren.

Wir starten LabView. Wählen Sie im Fenster Erste Schritte Blank Vi aus, was ein neues virtuelles Instrument bedeutet.

Wir bekommen so etwas:

Also was haben wir. Der Arbeitsbereich besteht aus zwei großen Panels Frontpanel und Blockdiagramm. Auf dem Frontpanel werden wir die Schnittstelle unseres Programms mit Steuerelementen aus dem Controls-Panel zusammenstellen. Diese Elemente sind die uns bekannten Griffe von variablen Widerständen, LEDs, Tasten, Zeigergeräten, einem Oszilloskopbildschirm usw. Sie dienen der Eingabe von Informationen in das Programm und der Anzeige der Ausführungsergebnisse. Auf dem Blockdiagramm-Panel befindet sich direkt der Programmcode. Hier müssen wir etwas zurücktreten und das Prinzip der Programmierung in LabView erläutern. Ein kleines Beispiel. Es ist üblich, mit der Arbeit am Programm mit dem Design der Schnittstelle und dann mit der Implementierung des Arbeitsalgorithmus im Blockdiagramm zu beginnen. Lassen Sie uns das einfachste Programm zum Multiplizieren zweier Zahlen erstellen. Dazu platzieren wir auf dem Frontpanel durch Ziehen drei Bedienelemente, sagen wir die Elemente Knob und Numeric Indicator, um das Ergebnis anzuzeigen.

Wir werden die Schnittstelle nach Herzenslust gestalten, zum Beispiel so:

Ok, jetzt müssen wir die eigentliche Multiplikation implementieren. Gehen Sie zum Blockdiagramm-Panel und sehen Sie, dass für jedes unserer Steuerelemente ein entsprechendes Symbol erstellt wurde. Schalten Sie am besten sofort den Anzeigemodus in Form von Terminals um. Das Diagramm wird nicht so überladen sein. Außerdem ist in den Terminals der Typ der Daten sichtbar, mit denen diese oder jene Kontrolle arbeitet. Klicken Sie dazu mit der rechten Maustaste auf das Symbol und deaktivieren Sie Als Symbol anzeigen. Am oberen Bildschirmrand befindet sich die Steuerung in Form eines Terminals, unten und rechts in Form eines Icons. Um die Ansicht auf dem Blockdiagramm standardmäßig als Klemmen zu konfigurieren, müssen Sie den Menüpunkt Extras->Optionen auswählen, links Blockdiagramm auswählen und Frontpanel-Anschlüsse als Symbole platzieren deaktivieren. Sehr nützlich, um die Kontexthilfe anzuzeigen. Sie können es mit der Kombination Strg + H anzeigen. Dieses Fenster zeigt Informationen über das Objekt an, auf dem sich der Cursor gerade befindet. Mega praktischer Artikel.

Jetzt müssen wir die Multiplikationsfunktion zum Blockdiagramm hinzufügen. Klicken Sie mit der rechten Maustaste auf das Blockdiagramm und wählen Sie die Multiplizieren-Funktion aus der Numerischen Palette. Lassen Sie es uns in einem Diagramm darstellen. Es ist erwähnenswert, dass LabView nur eine riesige Auswahl an Funktionen hat. Dazu gehören verschiedene Mathematik, Statistik, Signalanalyse, PID-Regelung, Video-, Ton- und Bildverarbeitung. Sie können nicht alles auflisten.

Das wichtigste Konzept bei der LabView-Programmierung ist das DataFlow-Konzept. Die Quintessenz lautet: Im Gegensatz zu imperativen Programmiersprachen, in denen Anweisungen in sequentieller Reihenfolge ausgeführt werden, funktionieren in LabView Funktionen nur, wenn Informationen zu allen Funktionseingaben vorhanden sind (jede Funktion hat Eingabe- und Ausgabewerte). Erst dann implementiert die Funktion ihren Algorithmus, und das Ergebnis wird an einen Ausgang gesendet, der von einer anderen Funktion verwendet werden kann. Somit können Funktionen innerhalb desselben VIs unabhängig voneinander arbeiten.

Um unser Beispiel wiederzubeleben, müssen wir diesem Konzept folgen und der Funktionseingabe die numerischen Werte geben, die wir als Steuerelemente festlegen, und das Ergebnis aus der Ausgabe abrufen und anzeigen.

Um Elemente in einem Blockdiagramm zu verbinden, verwenden Sie das Werkzeug „Verbindung verbinden“ im Bedienfeld „Werkzeuge“. Wählen Sie es aus und zeichnen Sie unsere Verbindungen.

Das ist alles, Sie können dieses dumme Programm zur zyklischen Ausführung ausführen und an den Knöpfen drehen, um das Ergebnis der Multiplikation zu beobachten.

Wie Sie sehen können, scheint es nichts Kompliziertes zu geben. Aber gleichzeitig ermöglicht Ihnen LabView, Probleme beliebiger Komplexität zu lösen! Ept, darauf ist die TANK-Steuerung aufgebaut! So dass.

Nun, jetzt machen wir interessantere Dinge, nämlich, wir werden unser einfachstes Voltmeter bauen, über das ich ganz am Anfang gesprochen habe.

Was müssen wir also tun? Zuerst müssen Sie die serielle Schnittstelle konfigurieren und initialisieren. Starten Sie eine Endlosschleife. In der Schleife verwenden wir die Funktion, um vom Port zu lesen und Informationen zu erhalten. Lassen Sie uns die Informationen für die Anzeige im Diagramm umwandeln und den ADC-Code in den Spannungswert in Volt umrechnen. Beim Verlassen der Schleife schließen wir den Port.
In der Oberfläche unseres Programms gibt es also keine anderen Steuerelemente als die Schaltfläche Stopp, sondern nur eine Anzeige des Ergebnisses. Wir werden dies tun: Zuerst erstellen wir ein Blockdiagramm und fügen dann die fehlenden Elemente hinzu die Frontplatte. Obwohl Sie das Gegenteil tun müssen! Aber in diesem Fall ist es bequemer.

Auf dem Blockdiagramm-Panel platzieren wir das While-Loop-Element aus der Strukturen-Palette, das ist unsere Endlosschleife. Wir umkreisen den Bereich mit einem Zyklusrahmen, der ausreicht, um in den Algorithmus zu passen. In der unteren rechten Ecke befindet sich ein roter Punkt, klicken Sie mit der rechten Maustaste darauf und wählen Sie Steuerung erstellen. Die Stopp-Taste erscheint sofort auf der Frontplatte. Wenn Sie darauf klicken, endet unser Programm.

Jetzt müssen wir außerhalb der Schleife die Funktionen zum Initialisieren und Schließen des Ports platzieren. Links initialisieren, rechts schließen. Klicken Sie erneut mit der rechten Maustaste und wählen Sie die Funktionen Configure Port, Read und Close aus. Diese Funktionen finden Sie in der Palette Instrument I/O –> Serial. Die Lesefunktion wird innerhalb der Schleife platziert. Wir verbinden die Ausgänge und Eingänge von Funktionen mit einer Spule mit Drähten. Für die Read-Funktion müssen wir die Anzahl der Bytes angeben, die sie akzeptiert. Wir klicken mit der rechten Maustaste auf den mittleren Eingang der Read-Funktion und wählen Create-> Constant, geben einen Wert ein, zum Beispiel 200. An dieser Stelle sollte es wie im Screenshot aussehen.

Sie müssen Steuerelemente für die Port-Initialisierungsfunktion erstellen. Uns reichen zwei völlig aus - die Portgeschwindigkeit und der Portname. Genauso wie wir eine Konstante für die Lesefunktion erstellt haben, erstellen wir Steuerelemente. RMB auf die erforderlichen Eingaben der Initialisierungsfunktion und des Elements

Erstellen->Kontrolle.

Uns interessieren zwei Inputs: Visa-Ressourcenname Und Baudrate(Standard 9600). Gehen wir nun zum Frontpanel und fügen die notwendigen Komponenten hinzu, nämlich den Grafikzeichnungsbildschirm und Beschriftungen zur Anzeige des ADC-Codes und der Spannung in Volt.
Dementsprechend sind dies Waveform Chart-Elemente aus der Graph-Palette und zwei Numeric Indicator-Elemente aus der Numeric-Palette.

Lassen Sie uns zum Blockdiagramm zurückkehren und die Elemente verschieben, die innerhalb der Schleife erschienen sind. Wir stehen kurz vor der Fertigstellung! Die einzige Sache ist, dass wir die Zeichenkette, die aus der Ausgabe der Read-Funktion kommt, noch in ein Format konvertieren müssen, das unsere Indikatoren verarbeiten können. Und auch die einfachste Mathematik zum Übersetzen des ADC-Codes in Volt zu implementieren. Unten sind Screenshots der Frontplatte und des Blockdiagramms in dieser Phase:

Um einen String zu konvertieren, verwenden wir die Funktion Scan from string aus der String-Palette. Wir legen es in die Schleife. Jetzt Mathe. Um den ADC-Code in einen Spannungswert in Volt umzuwandeln, müssen Sie den Code mit dem Wert der Referenzspannung (in meinem Fall sind es fünf Volt) multiplizieren und den resultierenden Wert durch 1023 teilen (da der ADC eine 10-Bit-Kapazität). Die notwendigen Funktionen Multiplikation und Division sowie Konstanten (5 und 1023) werden in eine Schleife gelegt. Ich werde keine Screenshots von jeder Verbindung machen, da es bereits Dofiga-Bilder gibt. Ich werde den letzten Bildschirm aller Verbindungen geben. Da ist alles ganz einfach.

Ich denke, alles ist klar, wenn Sie Fragen haben, stellen Sie sie in den Kommentaren. Finden wir es gemeinsam heraus :-))) Inzwischen ist das Programm fertig.

Gehen wir weiter zu unserer Benutzeroberfläche und optimieren den Graphen ein wenig. Wählen Sie den unteren Wert auf der Y-Achse und setzen Sie ihn auf 0. Wählen Sie den oberen Wert und setzen Sie ihn auf 5. Somit liegt unsere Skala auf der Y-Achse im Bereich von 0-5 Volt. Nun, wir wählen den COM-Port aus, geben den Wechselkurs ein, starten unser Programm über die Schaltfläche mit dem Pfeil und drehen heftig am Widerstand auf der Platine, während wir das Ergebnis unserer Arbeit auf dem Bildschirm beobachten. Klicken Sie auf die Schaltfläche Stop, um das Programm zu stoppen.

Wie Sie sehen können, ist alles ganz einfach. Dieses Beispiel ist nur ein kleiner Teil der Möglichkeiten von LabView. Wenn dieser Artikel jemandem hilft, freue ich mich. Nur nicht hart in den Kommentaren zuschlagen, ich bin kein Profi. Ein weiterer kleiner Trick. Wenn das Diagramm wie Cthulhu aussieht, können Sie es mit der Schaltfläche „Diagramm bereinigen“ versuchen. Es wird das Diagramm in eine mehr oder weniger göttliche Form bringen, aber es muss mit Vorsicht verwendet werden. Hier ist das Ergebnis ihrer Arbeit

Und Sie können Teile auch zu Funktionsblöcken kombinieren, damit sie die Schaltung nicht überladen.

Hallo Kollegen!

In einem relativ kurzen Artikel möchte ich über die Programmiersprache LabVIEW sprechen. Dieses sehr interessante Produkt erfreut sich leider keiner großen Beliebtheit, und ich möchte die bestehende Lücke ein Stück weit füllen.

Was ist LabVIEW?

LabVIEW ist eines der Flaggschiffprodukte von National Instruments. Zunächst sei darauf hingewiesen, dass LabVIEW eine Abkürzung ist, die für steht Labor Oratorium v virtuell ICH Instrumentierung E Maschinenbau W Orkbank. Bereits im Namen lässt sich die Ausrichtung auf Laborforschung, Messungen und Datenerhebung nachvollziehen. Tatsächlich ist der Aufbau eines SCADA-Systems in LabVIEW etwas einfacher als die Verwendung „herkömmlicher“ Entwicklungstools. In diesem Artikel möchte ich zeigen, dass der mögliche Umfang von LabVIEW etwas größer ist. Dies ist eine grundlegend andere Programmiersprache oder, wenn Sie möchten, eine ganze "Philosophie" der Programmierung. Eine funktionale Sprache, die zum Umdenken anregt und manchmal absolut fantastische Möglichkeiten für den Entwickler bietet. Ist LabVIEW überhaupt eine Programmiersprache? Das ist umstritten – hier gibt es keinen Standard, wie zum Beispiel ANSI C. In engen Entwicklerkreisen sagen wir, dass wir in der Sprache „G“ schreiben. Formal existiert eine solche Sprache nicht, aber das ist das Schöne an diesem Entwicklungstool: Von Version zu Version werden immer mehr neue Konstrukte in die Sprache eingeführt. Es ist schwer vorstellbar, dass in der nächsten Reinkarnation von C beispielsweise eine neue Struktur für die for-Schleife auftauchen wird. Und in LabVIEW ist das durchaus möglich.
Allerdings ist anzumerken, dass LabVIEW im TIOBE-Ranking der Programmiersprachen derzeit auf Platz 30 liegt – irgendwo zwischen Prolog und Fortran.

NI LabVIEW - Entstehungsgeschichte

National Instruments wurde 1976 von drei Gründern – Jeff Kodosky, James Truchard und Bill Nowlin – in der US-amerikanischen Stadt Austin, Texas, gegründet. Die Hauptspezialisierung des Unternehmens waren Werkzeuge für Messungen und Automatisierung der Produktion.
Die erste Version von LabVIEW erschien zehn Jahre nach der Firmengründung – 1986 (es war die Version für den Apple Mac). NI-Ingenieure entschieden sich, „traditionelle“ Programmiersprachen herauszufordern und schufen eine vollständig grafische Entwicklungsumgebung. Jeff wurde zum Hauptideologen des grafischen Ansatzes. Jahr für Jahr wurden neue Versionen veröffentlicht. Die erste plattformübergreifende Version (einschließlich Windows) war Version 3, die 1993 veröffentlicht wurde. Die aktuelle Version ist 8.6, die letztes Jahr veröffentlicht wurde.

Bis heute hat das Unternehmen seinen Hauptsitz in Austin. Heute beschäftigt das Unternehmen fast viertausend Mitarbeiter und hat Niederlassungen in fast vierzig Ländern (es gibt auch eine Niederlassung in Russland).

Meine Einführung in LabVIEW

Meine Einführung in LabVIEW geschah vor fast zehn Jahren. Ich habe mit einem neuen Vertrag angefangen zu arbeiten, und mein damaliger Chef hat mir eine Packung CDs mit der Aufschrift "jetzt wirst du daran arbeiten" überreicht. Ich habe LabVIEW installiert (es war die fünfte Version) und nachdem ich eine Weile herumgespielt hatte, sagte ich, dass DARAUF nichts Ernsthaftes getan werden könnte, es ist besser, Delphi „auf die altmodische Weise“ zu verwenden ... Worauf er mir sagte - du hast es einfach nicht geschmeckt. Arbeite ein oder zwei Wochen. Nach einer Weile werde ich verstehen, dass ich auf nichts anderem als LabVIEW schreiben kann. Ich habe mich einfach in diese Sprache verliebt, obwohl es nicht „Liebe auf den ersten Blick“ war.

Generell ist es ziemlich schwierig, grafische und textbasierte Programmiersprachen zu vergleichen. Das ist vielleicht ein Vergleich aus der Kategorie "PC" gegen "MAC" oder "Windows" gegen "Linux" - da kann man beliebig argumentieren, aber das Argument ist absolut sinnlos - jedes System hat seine Daseinsberechtigung und jedes wird sowohl Befürworter als auch Gegner haben, außerdem hat jedes Produkt seine eigene Nische. LabVIEW ist nur ein Werkzeug, wenn auch ein sehr flexibles.

Was ist LabVIEW?

LabVIEW ist eine plattformübergreifende Entwicklungsumgebung für grafische Anwendungen. LabVIEW ist im Grunde eine universelle Programmiersprache. Und obwohl dieses Produkt manchmal eng mit Hardware von National Instruments in Verbindung gebracht wird, ist es dennoch nicht mit einer bestimmten Maschine verbunden. Es gibt Versionen für Windows, Linux, MacOS. Der Quellcode ist portabel und die Programme sehen auf allen Systemen gleich aus. Von LabVIEW generierter Code kann auch auf Windows Mobile oder PalmOS ausgeführt werden (um fair zu sein, die PalmOS-Unterstützung wurde eingestellt, obwohl Palm selbst hier mehr Schuld trägt). Diese Sprache kann erfolgreich zur Erstellung großer Systeme, zur Verarbeitung von Texten, Bildern und zum Arbeiten mit Datenbanken eingesetzt werden.

LabVIEW ist eine sehr hohe Programmiersprache. Nichts hindert Sie jedoch daran, "Low-Level"-Module in LabVIEW-Programme einzubinden. Auch wenn Sie Assembler-Inserts verwenden möchten - das ist auch möglich, Sie müssen nur eine DLL generieren und Aufrufe in den Code einfügen. Auf der anderen Seite ermöglicht Ihnen eine Hochsprache, sehr einfache Operationen mit Daten auszuführen, die in einer regulären Sprache viele Zeilen (wenn nicht Dutzende von Zeilen) Code erfordern könnten. Der Fairness halber sei jedoch angemerkt, dass einige Operationen von Low-Level-Sprachen (z. B. das Arbeiten mit Zeigern) in LabVIEW aufgrund seines "High-Level" nicht so einfach zu implementieren sind. Natürlich enthält die LabVIEW-Sprache grundlegende Steuerungskonstrukte, die Entsprechungen in "traditionellen" Sprachen haben:

  • Variablen (lokal oder global)
  • Verzweigung (Fallstruktur)
  • For - Schleifen mit und ohne Abschlussprüfung.
  • While-Schleifen
  • Gruppieren von Operationen.

LabVIEW - Programm- und Sprachfunktionen

In LabVIEW werden entwickelte Softwaremodule als „Virtuelle Instrumente“ (Virtual Instruments) oder einfach VI bezeichnet. Sie werden in *.vi-Dateien gespeichert. VIs sind die Bausteine, aus denen ein LabVIEW-Programm besteht. Jedes LabVIEW-Programm enthält mindestens ein VI. In Bezug auf die C-Sprache kann man ganz sicher eine Analogie zu einer Funktion ziehen, mit dem einzigen Unterschied, dass in LabVIEW eine Funktion in einer Datei enthalten ist (man kann auch Werkzeugbibliotheken erstellen). Selbstverständlich kann ein VI von einem anderen VI aus aufgerufen werden. Grundsätzlich besteht jedes VI aus zwei Teilen - Blockdiagramm und Frontpanel. Das Blockdiagramm ist der Programmcode (genauer gesagt eine visuelle grafische Darstellung des Codes), während das Frontpanel die Schnittstelle ist. So sieht ein klassisches Beispiel für „Hello, World!“ aus:

Das Herzstück von LabVIEW ist das Datenflussparadigma. Im obigen Beispiel sind die Konstante und der Indikatoranschluss durch eine Linie verbunden. Diese Leitung heißt Wire. Sie können es "Draht" nennen. Drähte übertragen Daten von einem Element zum anderen. Dieses ganze Konzept wird als Datenfluss bezeichnet. Die Essenz des Blockdiagramms sind die Knoten (Knoten), die Ausgänge einiger Knoten sind mit den Eingängen anderer Knoten verbunden. Der Knoten beginnt erst dann mit der Ausführung, wenn alle für die Arbeit erforderlichen Daten eintreffen. Im obigen Diagramm gibt es zwei Knoten. Einer von ihnen ist eine Konstante. Dieser Knoten ist autark – er beginnt sofort mit der Ausführung. Der zweite Knoten ist ein Indikator. Es zeigt die Daten an, die die Konstante übergibt (aber nicht sofort, sondern sobald die Daten von der Konstante eintreffen).

Hier ist ein etwas komplexeres Beispiel: Zwei Zahlen addieren und multiplizieren. In traditionellen Sprachen würden wir so etwas schreiben wie

int a, b, summe, mul;
//...
Summe = a + b;
mul = a*b;

So sieht es in LabVIEW aus:

Beachten Sie, dass Addition und Multiplikation automatisch parallel ausgeführt werden. Auf einem Computer mit zwei Prozessoren werden beide Prozessoren automatisch aktiviert.

Und so sehen die while / for-Schleifen und die if / then / else-Struktur aus:

Wie bereits erwähnt, werden alle Elemente parallel ausgeführt. Sie müssen nicht darüber nachdenken, wie Sie eine Aufgabe in mehrere Threads parallelisieren, die parallel auf mehreren Prozessoren ausgeführt werden können. In neueren Versionen können Sie sogar explizit angeben, auf welchem ​​der Prozessoren diese oder jene While-Schleife ausgeführt werden soll. Nun gibt es Add-Ons für Textsprachen, mit denen man auf einfache Weise eine Unterstützung für Multiprozessorsysteme erreichen kann, aber das ist wahrscheinlich nirgendwo so einfach implementiert wie in LabVIEW. (naja, ich bin noch in den Vergleich mit Textsprachen gerutscht). Wenn wir schon von Multithreading sprechen, dann sollte auch beachtet werden, dass ein Entwickler eine große Auswahl an Tools zum Synchronisieren von Threads hat - Semaphoren, Warteschlangen, Rendezvous usw.

LabVIEW enthält eine Vielzahl von Elementen zum Erstellen von Benutzeroberflächen. Schnittstellen in Delphi wurden schnell auf was „angegriffen“, und in LabVIEW ist dieser Prozess noch schneller.

Die Standardlieferung von LabVIEW umfasst auch Blöcke für die Arbeit mit INI-Dateien, die Registrierung, Funktionen für die Arbeit mit Binär- und Testdateien, mathematische Funktionen, leistungsstarke Tools zum Plotten (und wo ohne es im Labor) und zusätzlich zu den bereits erwähnten Möglichkeiten von DLL-Aufrufen ermöglicht Ihnen LabVIEW die Arbeit mit ActiveX-Komponenten und .net. Ab der achten Version wurde LabVIEW um die Unterstützung von Klassen erweitert – die Sprache wurde objektorientiert. Die implementierte Unterstützung kann nicht als vollständig bezeichnet werden, aber die Hauptmerkmale objektorientierter Sprachen - Vererbung und Polymorphie - sind vorhanden. Außerdem kann die Funktionalität der Sprache mit zusätzlichen Modulen erweitert werden, wie z. B. NI Vision Toolkit – für Bildverarbeitung und maschinelles Sehen und andere. Und mit Hilfe des Application Builder-Moduls können Sie eine ausführbare Exe-Datei generieren. Mit dem Internet Toolkit können Sie mit FTP-Servern arbeiten, mit dem Database Connectivity Toolkit mit Datenbanken usw.

Oft hört man die Meinung, der grafische Code sei schlecht lesbar. In der Tat ist die Fülle an Ikonen und Dirigenten aus Gewohnheit etwas schockierend. Außerdem erstellen unerfahrene Entwickler "Blatt"-Programme und "Spaghetti"-Programme. Ein erfahrener LabVIEW-Entwickler wird jedoch niemals Diagramme erstellen, die größer als die Bildschirmgröße sind, selbst wenn das Programm aus Hunderten von Modulen besteht. Ein gut gestaltetes Programm ist eigentlich „selbstdokumentierend“, weil es bereits auf einer grafischen Darstellung basiert.

Beim Programmieren in LabVIEW war ich lange Zeit fest davon überzeugt, dass LabVIEW ein Interpreter ist und Blockdiagramme ständig vom Kernel interpretiert werden. Nach Gesprächen mit NI-Ingenieuren stellte sich heraus, dass dies nicht der Fall war. LabVIEW ist ein Compiler (die Qualität der Codegenerierung lässt allerdings zu wünschen übrig). Die Kompilierung erfolgt jedoch „on the fly“ – zu jedem Zeitpunkt der Entwicklung ist das Programm jederzeit lauffähig. Außerdem kann LabVIEW-Code in eine vollwertige ausführbare Datei kompiliert werden, die auf einem Computer ausgeführt werden kann, auf dem LabVIEW nicht installiert ist (obwohl LabVIEW Run-Time erforderlich ist). Sie können auch ein Installationspaket-Installationsprogramm erstellen, Dienstprogramme von Drittanbietern wie InstallShield sind nicht erforderlich.

Eine weitere und detailliertere Beschreibung der Funktionen des Pakets würde den Rahmen dieses Artikels sprengen, aber ich schlage nur vor, es auszuprobieren (Links sind unten angegeben). Wie die Großen sagten: "... der einzige Weg, eine neue Programmiersprache zu lernen, besteht darin, Programme darin zu schreiben." Nun, erfahrene Programmierer werden in der Lage sein, die gewonnenen Erkenntnisse auf ihre eigenen Bedürfnisse zu extrapolieren.



NI LabVIEW – Streaming-Umgebung grafische Programmierung. Beim Schreiben eines Programms in LabVIEW legt der Benutzer die Abfolge der Operationen zum Transformieren eines Datenstroms mithilfe eines Blockdiagramms fest. Auf dem Blockdiagramm werden Bilder von funktionalen Knoten platziert, die durch Leiter verbunden sind, entlang denen der Datenfluss von einem Knoten zum anderen fließt. Außerdem verfügt LabVIEW über eine Reihe von Tools, die gegen das Paradigma der Stream-Programmierung verstoßen, wodurch die Funktionalität der darin entwickelten Anwendungen erheblich erweitert werden kann.

Was ist eine programmiertechnik

Der Begriff „Programmiertechnik“ umfasst eine Auswahl verschiedener Programmiersprachen, Rechenmodelle, Abstraktionsebenen, Methoden der Arbeit mit Code und der Darstellung von Algorithmen. Im Laufe der Jahre hat National Instruments die LabVIEW-Funktionalität weiterentwickelt, um mehr Programmiertechniken zu unterstützen.


Sie können Code, der mit verschiedenen Techniken auf dem Blockdiagramm geschrieben wurde, sowie G-Code streamen, und LabVIEW kompiliert die Anweisungen für die entsprechenden Zielgeräte (normale Desktop-PCs, RTOS-Plattformen, FPGAs, mobile Geräte, ARM-basierte eingebettete Geräte)

Abb.1. Große Auswahl an Plattformen und Programmiertechniken in LabVIEW



Die Übertragung von Daten zwischen Codeabschnitten, die mit unterschiedlichen Ansätzen geschrieben wurden, wird in LabVIEW ganz einfach organisiert – der Datenfluss ist ein Bindeglied zwischen verschiedenen Berechnungsmodellen und Sprachen. In der G-Sprache wird die Eingabe/Ausgabe von Informationen unter Verwendung einer spezialisierten Benutzerschnittstelle (Frontpanel), Netzwerkschnittstellen, Analysebibliotheken, Datenbanken und anderer Werkzeuge ausgeführt.

G-Programmierung
Das Aufkommen der Stream-Programmierung im Jahr 1986 war wirklich innovativ. Die Reihenfolge der Ausführung von Operationen mit Daten in der G-Sprache wird nicht durch die Reihenfolge bestimmt, in der sie erscheinen, sondern durch das Vorhandensein von Daten an den Eingängen dieser Knoten. Anweisungen, die nicht durch einen Datenfluss verbunden sind, werden in beliebiger Reihenfolge parallel ausgeführt.

Diagrammknoten sind einfache Anweisungen oder ihre Sätze - Funktionen, virtuelle Instrumente (VI). Die Ausführung von Knotenbefehlen erfolgt erst, nachdem Daten an allen Eingangsanschlüssen des Knotens erscheinen. Nach Ausführung der Anweisungen wird ihr Ergebnis über die Ausgangsanschlüsse des Knotens an die Eingänge der folgenden Knoten übertragen.


Abb.2. In diesem Beispiel werden A und B addiert, die resultierende Summe mit C multipliziert und das Ergebnis angezeigt


Abbildung 2 zeigt ein Beispiel für einen mathematischen Ausdruck in der Sprache G. Das Diagramm besteht aus zwei Knoten (Addition und Multiplikation) und drei Eingaben (A, B und C). Zuerst werden A und B addiert.Der Code des Multiplikationsknotens wird nicht ausgeführt, bis seine beiden EingangsanschlüsseDaten empfangen haben, und wartet daher auf das Ergebnis des Additionsknotens. Sobald das Ergebnis der Addition am ersten Eingang des Multiplikationsknotens ankommt, wird dessen Code (A+B)*C ausgeführt.

Obwohl die Sprache G es Ihnen erlaubt, den Datentyp explizit anzugeben, ist einer der signifikanten Unterschiede dieser Sprache von anderen das Vorhandensein von Dirigenten, die die Funktionen von Variablen ausführen. Anstatt Variablen zwischen Funktionen zu übergeben, wird die Datenübergabe durch Drahtverbindungen definiert. Andererseits hat die Sprache G auch Standardkonstrukte für andere Sprachen, wie Bedingungsschleifen, Zählerschleifen, Auswahlstrukturen, Callbacks und boolesche Funktionen.

Interaktives Setup als Basis der Programmierung
Im Jahr 2003 veröffentlichte National Instruments NI LabVIEW 7 Express, das den Weg für die Express-VI-Technologie bereitete, eine Technologie zur weiteren Vereinfachung des Entwicklungsprozesses von Anwendungsalgorithmen. Im Gegensatz zu herkömmlichen VIs sind Express-VIs abstrakte Sprachstrukturen, die eine Programmiertechnik implementieren, die auf der interaktiven Konfiguration von Komponenten basiert.


Abb. 3. Express-VI-Palette, Platzieren des Express-VIs im Blockdiagramm und Anzeigen des Express-VIs im Miniaturbildmodus


Sie können die Express-VP von der regulären VP durch das große blaue Symbol unterscheiden. Wenn Sie ein Express-VI zum ersten Mal in einem Blockdiagramm platzieren, wird das entsprechende Setup-Dialogfeld angezeigt. Nach Abschluss der Anpassung generiert LabVIEW automatisch Code basierend auf der generierten Express-VI-Konfiguration. Sie können diesen Code anzeigen und bearbeiten oder die Express-VI-Einstellungen ändern, indem Sie das Dialogfeld erneut öffnen, indem Sie auf das Express-VI-Symbol doppelklicken.

Betrachten Sie als Beispiel das Problem der Dateneingabe für ihre programmatische Analyse. LabVIEW macht es sehr einfach, mit verschiedener Hardware zu interagieren, da es Treiber für Tausende von Geräten enthält. Die Aufgabe, Daten zu sammeln, kann nicht nur mit einem Design mehrerer VIs, sondern auch mit einer einfacheren Option - einem Express-VI - implementiert werden.

Legen Sie einfach Lese-/Schreibkanäle in den Einstellungen des DAQ Assistance Express VI fest und konfigurieren Sie Parameter wie Abtastrate, Skalierung, Timing und Trigger. Darüber hinaus bietet das Express-VI die Möglichkeit, Daten vom Gerät vorab zu erfassen, um zu überprüfen, ob die ausgewählten Datenerfassungseinstellungen korrekt sind.


Abb.4. Das DAQ Assistant Express VI vereinfacht die Einrichtung von Trigger-Timing und Kanalparametern erheblich



Abb.5. G-Code, der dem Express-VI DAQ-Assistent entspricht


Trotz all ihrer Vorteile bieten Express-VIs keine Low-Level-Steuerung und -Konfiguration des Gerätebetriebsmodus, der mit herkömmlichen VIs implementiert wird. LabVIEW-Neulinge können eine integrierte Funktion verwenden, die ein zuvor konfiguriertes Express-VI in eine Folge regulärer VIs umwandelt. Dies kann Anfängern helfen, Low-Level-Code zu lernen. Es genügt, die Zeile Open Front Panel in auszuwählen Kontextmenü VI auf dem Blockdiagramm ausdrücken. Beachten Sie, dass jedes Express-VI durch eine Kombination mehrerer regulärer VIs ersetzt werden kann und dass Sie mit der LabVIEW Professional Development System Edition Ihre eigenen Express-VIs erstellen können.

Skript support.m-Dateien
Mit dem LabVIEW MathScript RT-Modul können Sie *.m-Dateiskripte importieren, bearbeiten und ausführen, die traditionell in der mathematischen Modellierung und Analyse, Signalverarbeitung und komplexen mathematischen Berechnungen verwendet werden. Sie können sie mit G-Code verwenden, um eigenständige Anwendungen für Desktop- oder Echtzeithardware zu erstellen.

Es gibt mehrere Möglichkeiten, mit MathScript in LabVIEW zu arbeiten. Um interaktiv mit Skripten zu arbeiten, verwenden Sie das in Abb. 6


Abb.6. Interaktive Entwicklung von Textalgorithmen im MathScript-Fenster


Um *.m-Skripte in einer LabVIEW-Anwendung zu verwenden und die Leistungsfähigkeit von Text- und Grafikprogrammierung zu kombinieren, verwenden Sie den in Abbildung 7 gezeigten MathScript-Knoten. Mithilfe des MathScript-Knotens können Sie Textalgorithmen in den VI-Code einbetten und die grafischen Funktionen der Benutzeroberfläche verwenden, um Skriptparameter (Schaltflächen, Schieberegler, Steuerelemente, Grafiken und andere Elemente) zu steuern.


Abb.7. Der MathScript-Knoten erleichtert die Verwendung von scripts.m in G-Code


Das LabVIEW MathScript RT-Modul verfügt über eine eigene *.m-Skript-Engine und erfordert keine Installation eines Drittanbieters Software. Durch die Verwendung des MathScript-Knotens können Sie die Vorteile von Textalgorithmen in einer Anwendung kombinieren, ein hohes Maß Integration von LabVIEW mit Hardware, interaktiver Benutzeroberfläche und anderen Programmiertechniken, die in diesem Artikel besprochen werden.

Objekt orientierte Programmierung
Die objektorientierte Programmierung ist eine der beliebtesten Arten der Programmierung. Mit diesem Ansatz können Sie viele unterschiedliche Komponenten in einem Programm zu einzelnen Objektklassen kombinieren. Eine Klassendefinition enthält die Merkmale eines Objekts und eine Beschreibung der Aktionen, die ein Objekt ausführen kann, die allgemein als Eigenschaften und Methoden bezeichnet werden. Klassen können untergeordnete Klassen haben, die Eigenschaften und Methoden erben und diese überschreiben oder neue hinzufügen können.


Abb.8. Der objektorientierte Ansatz basiert auf Klassen (Beispiel im Bild) und zugehörigen Eigenschaften und Funktionen des VIs


Die Verwendung von OOP in LabVIEW ist seit Version 8.2 möglich

Die Hauptvorteile dieses Ansatzes sind:

  • . Kapselung: Kapselung ist die Kombination von Daten und Methoden in einer Klasse, sodass auf sie nur über VIs zugegriffen werden kann, die Mitglieder der Klasse sind. Mit diesem Ansatz können Sie Codeabschnitte isolieren und sicherstellen, dass sich ihre Änderung nicht auf den Code des restlichen Programms auswirkt.
  • . Vererbung: Durch Vererbung können vorhandene Klassen als Grundlage für die Beschreibung neuer Klassen verwendet werden. Wenn eine neue Klasse erstellt wird, erbt sie die Datentypen und VI-Member der Klasse und implementiert somit die Eigenschaften und Methoden der übergeordneten Klasse. Es ist auch möglich, benutzerdefinierte VIs hinzuzufügen, um die Funktionalität einer Klasse zu ändern.
  • . Dynamisches Dispatching: Methoden können über mehrere gleichnamige VIs in der Klassenhierarchie definiert werden. Diese Methode wird als dynamisches Dispatching bezeichnet, da die Entscheidung, welches VI aufgerufen wird, zum Zeitpunkt der Programmausführung getroffen wird.
Mit diesen OOP-Funktionen können Sie den Code verständlicher und skalierbarer gestalten und bei Bedarf den Zugriff auf das VI einschränken.

Modellierung und Simulation
Die Modellierung und Simulation physikalischer Systeme ist ein beliebter Ansatz zur Entwicklung von Systemen, die durch Differentialgleichungen beschrieben werden. Die Untersuchung des Modells ermöglicht es, die Eigenschaften dynamischer Systeme aufzudecken und ein Steuergerät mit dem erforderlichen Verhalten zu entwickeln.

Abbildung 9 zeigt die Regel- und Simulationsschleife, die eine Differenzialgleichung mithilfe der in LabVIEW integrierten Algorithmen in Echtzeit über einen bestimmten Zeitraum löst. Dieser Programmieransatz ist wie die Sprache G ebenfalls datenflussbasiert, wird aber allgemein als Signalfluss bezeichnet. Wie in Abbildung 9 gezeigt, können Sie mathematische Modellierungstechniken mit anderen Techniken wie G-Datenströmen und dem MathScript-Knoten kombinieren.


Reis. 9. Das Simulationsdiagramm zeigt Signalausbreitung, E/A-Hardware und einen MathScript-Knoten.


Der Control & Simulation Loop unterstützt Funktionen, die zur Implementierung linearer Modelle verwendet werden. stationäre Systeme auf Geräten mit installiertem Echtzeitbetriebssystem. Sie können diese Funktionen verwenden, um diskrete Modelle durch Angabe zu definieren Übertragungsfunktion, Pol-Nullpunkt-Diagramme und Differentialgleichungssysteme. Tools zur Zeit- und Frequenzbereichsanalyse wie Zeitschrittantworten oder Bode-Plot-Funktionen ermöglichen Ihnen die interaktive Analyse des Verhaltens offener und geschlossener Regel-/Simulationsschleifen. Sie können auch integrierte Modellkonvertierungstools verwenden, die in der Programmierumgebung von The MathWorks, Inc. entwickelt wurden. Simulink®, wodurch sie in der LabVIEW-Umgebung verwendet werden können. Diese dynamischen Systeme können dank der Funktionalität der LabVIEW Real-Time Module-Bibliothek, die sich hervorragend für die Entwicklung von Steuerungssystem-Prototypen und Simulationsanwendungen eignet, auf Geräten mit einem Echtzeit-Betriebssystem installiert werden, ohne dass verschiedene Programmkonvertierungsschritte durchlaufen werden müssen.

Zustandsdiagramme
Das NI LabVIEW Statechart Module bietet dem Entwickler die Möglichkeit, die Systemfunktionalität mithilfe von Zustandsdiagrammen so abstrakt wie möglich zu beschreiben. Durch die Integration von LabVIEW-Code in Diagrammzustände können Sie eine virtuelle Arbeitsspezifikation für Ihre Anwendung erstellen. Das NI LabVIEW Statechart Module erweitert die herkömmliche Statechart-Funktionalität um hierarchische Verschachtelung und parallele Ausführung. Es sei darauf hingewiesen, dass Sie mit Zustandsdiagrammen die Reaktion des Systems auf Ereignisse beschreiben können, was sie zu einem sehr bequemen Werkzeug für die Entwicklung reaktiver Systeme wie eingebetteter Geräte, Steuerungssysteme und komplexer Benutzerschnittstellen macht.


Reis. 10. Das LabVIEW Statechart-Modul beschreibt ein System, das auf einem Zustandsdiagramm basiert.


Häufig werden Zustandsdiagramme verwendet, um eine Anwendung in Subsysteme zu unterteilen, wie z. B. Datenerfassung, Datenausgabe, Netzwerkkommunikation, Datenprotokollierung und Verwaltung der Benutzeroberfläche. Dabei legen Zustandsdiagramme fest, welche Informationen zwischen Zuständen (Teilsystemen) übertragen werden und in welcher Reihenfolge sie funktionieren.

Eine auf Zustandsdiagrammen basierende Anwendungsarchitektur ermöglicht eine effizientere Entwicklung komplexer Anwendungen Softwaresysteme, insbesondere ereignisgesteuerte Systeme wie dynamische Systemsteuerungen, komplex Benutzeroberflächen und digitale Kommunikationsprotokolle.

VHDL für FPGA
Mit dem LabVIEW FPGA-Modul können Sie mit der Sprache G Code für FPGAs schreiben. Wie bei anderen Entwicklungsverfahren können Sie jedoch vorgefertigten Code verwenden oder einfach auswählen, wie das Programm implementiert wird. Die meisten FPGAs werden mit der textbasierten Stream-Programmiersprache VHDL programmiert. Anstatt vorhandene G-IP-Blöcke neu zu schreiben, können Sie VHDL-Code mithilfe des Knotens Component-Level IP (CLIP) importieren. Normalerweise benötigen Sie eine CLIP-XML-Datei, um die Schnittstelle zwischen Blockdiagrammelementen einzurichten, aber LabVIEW bietet einen CLIP-Importassistenten, um dies automatisch zu tun. Es listet die Ein- und Ausgänge des IP-Blocks auf, die mit der Maus auf das Blockdiagramm gezogen und in der Anwendung verwendet werden können, wie in Abb. elf.


Reis. elf. CLIP-Knoten.


Da NI das Xilinix-FPGA und das Xilinx-Software-Toolkit im LabVIEW-FPGA-Modul verwendet, können Sie den Xilinx Core Generator verwenden, um einen kompatiblen Kern zu erstellen. Sie können auch das Xilinx Embedded Development Kit verwenden, um einen beliebigen Software-Mikroprozessor zu erstellen. Und schließlich bieten viele Drittanbieter-Entwickler Verschiedene Arten IP-Blöcke für Busmanagement, Signalverarbeitung und spezifische Kerne.

Integration von C-ähnlichem Code
Sie können sequenziellen Textcode in Ihren Blockdiagramm-VIs auf verschiedene Weise verwenden. Der erste Weg ist der Formelknoten, der eine C-ähnliche Syntax mit Variablendefinitionen und Semikolons am Zeilenende unterstützt.

Der Inline-C-Knoten ähnelt dem Formelknoten und bietet Zusatzfunktionen Low-Level-Programmierung und Unterstützung von Header-Dateien ohne den Overhead von Prozeduraufrufen. Sie können den Inline-C-Knoten verwenden, um beliebigen C-Code einzubetten, einschließlich #defines-Anweisungen, die syntaktisch in Klammern in C-Code eingeschlossen sind.

Interaktion mit ausführbaren Dateien
Beim Programmieren in der LabVIEW-Umgebung ist es häufig erforderlich, auf kompilierte Dateien und Bibliotheken aus einer in der LabVIEW-Umgebung geschriebenen Anwendung zuzugreifen Wiederverwendung Algorithmen, die zuvor in anderen Umgebungen entwickelt wurden. Außerdem ist es beim Erstellen eines Projekts erforderlich, von anderen Anwendungen aus auf Anwendungen zuzugreifen, die in der Sprache LabVIEW geschrieben wurden.

Um diese Probleme zu lösen, bietet LabVIEW eine große Auswahl an verschiedenen Werkzeugen. Erstens kann LabVIEW DLL-Funktionen aufrufen sowie die ActiveX- und .NET-Schnittstellen verwenden.

Zweitens kann eine in der LabVIEW-Sprache geschriebene Anwendung ihre Funktionalität einer anderen Anwendung als DLL oder unter Verwendung von ActiveX-Tools zur Verfügung stellen.

Falls ja Quelle C, die Sie in Ihrer LabVIEW-Anwendung verwenden möchten, können Sie die DLL kompilieren und mithilfe des Knotens Call Library Function einbinden. Sie können sich zum Beispiel organisieren paralleles Rechnen Verwenden von in C geschriebenen Algorithmen, während ein in LabVIEW geschriebenes Programm die parallel laufenden Threads verwaltet. Um die Arbeit mit externen Bibliotheken zu vereinfachen, verfügt LabVIEW über einen Assistenten zum Importieren gemeinsam genutzter Bibliotheken, mit dem Sie automatisch einen Wrapper erstellen oder aktualisieren können, um die entsprechenden Bibliotheken (Windows . dll-Datei, Mac OS .framework-Datei oder Linux .so-Datei).

Auch mit System Exec.vi können Sie die Schnittstelle verwenden Befehlszeile Betriebssystem.

Die Kombination mehrerer Programmiertechniken in einer Entwicklungsumgebung ermöglicht die Wiederverwendung von Algorithmen, die in anderen Sprachen entwickelt wurden. Darüber hinaus kann der Entwickler High-Level- und Low-Level-Operationen in einer Anwendung kombinieren, wodurch der Code flexibler und visueller wird. Unterschiedliche Abstraktionsebenen ermöglichen die Visualisierung komplexer Algorithmen bei gleichzeitiger Beibehaltung der Anwendungs- und Hardwaresteuerung auf niedriger Ebene. Mit enger Hardwareintegration können Sie beide Ansätze zur Signalverarbeitung auf Plattformen mit Mehrkernprozessoren, FPGAs und eingebetteten Prozessoren verwenden.

Für Probleme gibt es normalerweise mehrere Lösungen, und die LabVIEW-Programmierumgebung ist flexibel genug, um Ihnen die Auswahl der Lösungsmethode zu ermöglichen, die für Sie am besten geeignet ist.

Simulink® ist eine eingetragene Marke von The MathWorks, Inc.

ARM, Keil und µVision sind Warenzeichen und eingetragene Warenzeichen von ARM Ltd oder seinen Tochtergesellschaften.



Wird geladen...
Spitze