LabVIEW - LabVIEW

LabVIEW
Logo LabVIEW.
Deweloper(zy) Instrumenty narodowe
Pierwsze wydanie 1986 ; 35 lat temu ( 1986 )
Wersja stabilna
LabVIEW NXG 5.1

LabVIEW 2021

/ sierpień 2021 ; 2 miesiące temu ( 2021-08 )
Napisane w C, C++
System operacyjny Wieloplatformowość : Windows , macOS , Linux
Rodzaj Akwizycja danych , kontrola przyrządów , automatyzacja testów , analiza i przetwarzanie sygnałów , sterowanie przemysłowe , projektowanie systemów wbudowanych
Licencja Prawnie zastrzeżony
Strona internetowa www .ni .com / LabVIEW

Laboratory Virtual Instrument Engineering Workbench ( LabVIEW ) to platforma do projektowania systemów i środowisko programistyczne dla wizualnego języka programowania firmy National Instruments .

Język graficzny nosi nazwę „G”; Nie należy tego mylić z G-kodu . Język G dataflow został pierwotnie opracowany przez Labview, LabVIEW jest powszechnie używany do akwizycji danych , sterowania instrumentami i automatyzacji przemysłowej w różnych systemach operacyjnych (OS), w tym Microsoft Windows, a także różnych wersjach Unix , Linux i macOS .

Najnowsze wersje LabVIEW to LabVIEW 2021 (wydany w sierpniu 2021) i LabVIEW NXG 5.1 (wydany w styczniu 2021). Firma NI udostępniła bezpłatne do użytku niekomercyjnego edycje LabVIEW i LabVIEW NXG Community 28 kwietnia 2020 roku.

Programowanie przepływu danych

Paradygmat programowania używany w LabVIEW, czasami nazywany G, opiera się na dostępności danych. Jeśli istnieje wystarczająca ilość danych dostępnych dla subVI lub funkcji, ten subVI lub funkcja zostanie wykonana. Przepływ wykonania jest określony przez strukturę graficznego schematu blokowego (kod źródłowy LabVIEW), na którym programista łączy różne węzły funkcyjne, rysując przewody. Te przewody propagują zmienne i każdy węzeł może wykonać, gdy tylko wszystkie jego dane wejściowe staną się dostępne. Ponieważ może to mieć miejsce w przypadku wielu węzłów jednocześnie, LabVIEW może działać z natury równolegle. Wielu przetwarzanie i wielowątkowości sprzęt jest wykorzystać automatycznie przez wbudowanego harmonogramu, który multipleksy wiele wątków OS ponad węzłów gotowy do realizacji.

Programowanie graficzne

Przykład kodu Labview.png

LabVIEW integruje tworzenie interfejsów użytkownika (zwanych panelami przednimi) z cyklem rozwoju. Programy-podprogramy LabVIEW są nazywane instrumentami wirtualnymi (VI). Każdy VI ma trzy elementy: schemat blokowy, panel przedni i panel złączy. Ostatni służy do reprezentowania VI na schematach blokowych innych, wywołujących VI. Panel przedni zbudowany jest za pomocą kontrolek i wskaźników. Kontrolki są danymi wejściowymi: pozwalają użytkownikowi na dostarczenie informacji do VI. Wskaźniki są danymi wyjściowymi: wskazują lub wyświetlają wyniki w oparciu o dane wejściowe podane do VI. Tylny panel, który jest schematem blokowym, zawiera graficzny kod źródłowy. Wszystkie obiekty umieszczone na panelu przednim pojawią się na panelu tylnym jako terminale. Tylny panel zawiera również struktury i funkcje, które wykonują operacje na elementach sterujących i dostarczają dane do wskaźników. Struktury i funkcje znajdują się na palecie Funkcje i można je umieścić na tylnym panelu. Łącznie kontrolki, wskaźniki, struktury i funkcje są określane jako węzły. Węzły są połączone ze sobą za pomocą przewodów, np. dwie kontrolki i wskaźnik można podłączyć do funkcji dodawania, aby wskaźnik wyświetlał sumę dwóch kontrolek. W ten sposób przyrząd wirtualny może być uruchamiany albo jako program, z panelem przednim służącym jako interfejs użytkownika, albo po upuszczeniu jako węzeł na schemacie blokowym, panel przedni definiuje wejścia i wyjścia dla węzła poprzez panel złączy. Oznacza to, że każdy VI można łatwo przetestować, zanim zostanie osadzony jako podprogram w większym programie.

Podejście graficzne pozwala również osobom nie będącym programistami na tworzenie programów poprzez przeciąganie i upuszczanie wirtualnych reprezentacji sprzętu laboratoryjnego, z którym są już zaznajomieni. Środowisko programistyczne LabVIEW, wraz z dołączonymi przykładami i dokumentacją, ułatwia tworzenie małych aplikacji. Jest to korzyść z jednej strony, ale istnieje również pewne niebezpieczeństwo niedoceniania wiedzy fachowej potrzebnej do wysokiej jakości programowania G. W przypadku złożonych algorytmów lub kodu na dużą skalę ważne jest, aby programista posiadał rozległą wiedzę na temat specjalnej składni LabVIEW i topologii zarządzania pamięcią. Najbardziej zaawansowane systemy programistyczne LabVIEW oferują możliwość budowania samodzielnych aplikacji. Co więcej, możliwe jest tworzenie aplikacji rozproszonych, które komunikują się w modelu klient-serwer , a tym samym są łatwiejsze do wdrożenia ze względu na z natury równoległy charakter G.

Powszechnie akceptowane wzorce projektowe

Aplikacje w LabVIEW są zwykle projektowane przy użyciu dobrze znanych architektur, znanych jako wzorce projektowe . Najpopularniejsze wzorce projektowe dla graficznych aplikacji LabVIEW są wymienione w poniższej tabeli.

Wspólne wzorce projektowe dla aplikacji LabVIEW
Wzór projektu Cel, powód Szczegóły dotyczące wdrożenia Przypadków użycia Ograniczenia
Funkcjonalna zmienna globalna Wymieniaj informacje bez używania zmiennych globalnych Rejestr przesuwny pętli while służy do przechowywania danych, a pętla while wykonuje tylko jedną iterację w wirtualnym instrumencie „non-reentrant” (VI) Wymieniaj informacje z mniejszą ilością okablowania Wszystkie posiadane instrumenty wirtualne (VI) są przechowywane w pamięci.
Maszyna stanowa Kontrolowane wykonanie, które zależy od przeszłych wydarzeń Struktura Case wewnątrz pętli while przekazuje wyliczoną zmienną do rejestru przesuwnego, reprezentującego następny stan; złożone maszyny stanowe można projektować za pomocą modułu Statechart • Interfejsy użytkownika
• Złożona logika
• Protokoły komunikacyjne
Wszystkie możliwe stany muszą być znane z góry.
Interfejs użytkownika sterowany zdarzeniami Bezstratne przetwarzanie działań użytkownika Zdarzenia GUI są przechwytywane przez kolejkę struktury zdarzeń wewnątrz pętli while; pętla while jest zawieszana przez strukturę zdarzeń i wznawiana dopiero po przechwyceniu żądanych zdarzeń Graficzny interfejs użytkownika Tylko jedna struktura zdarzenia w pętli.
Mistrz-niewolnik Uruchom niezależne procesy jednocześnie Kilka równoległych pętli while, z których jedna działa jako „master”, kontrolując pętle „slave” Prosty graficzny interfejs użytkownika do akwizycji i wizualizacji danych Wymagana jest uwaga i zapobieganie warunkom wyścigu .
Producent-konsument Asynchroniczne wielowątkowe wykonywanie pętli Pętla główna kontroluje wykonanie dwóch pętli podrzędnych, które komunikują się za pomocą powiadomień, kolejek i semaforów; pętle niezależne od danych są automatycznie wykonywane w osobnych wątkach Próbkowanie i wizualizacja danych Kolejność wykonania nie jest oczywista do kontroli.
Maszyna stanów w kolejce z kierowaną zdarzeniami producent-konsument Wysoce responsywny interfejs użytkownika dla aplikacji wielowątkowych Interfejs użytkownika sterowany zdarzeniami jest umieszczony wewnątrz pętli producenta, a maszyna stanów jest umieszczona w pętli konsumenta, komunikując się za pomocą kolejek między sobą a innymi równoległymi VI Złożone aplikacje

Korzyści

Łączenie z urządzeniami

LabVIEW zawiera obszerne wsparcie dla połączeń z urządzeniami takimi jak instrumenty, kamery i inne urządzenia. Użytkownicy łączą się ze sprzętem albo pisząc bezpośrednie polecenia magistrali (USB, GPIB, szeregowy) albo używając wysokopoziomowych, specyficznych dla urządzenia sterowników, które zapewniają natywne węzły funkcyjne LabVIEW do sterowania urządzeniem.

LabVIEW zawiera wbudowaną obsługę platform sprzętowych NI, takich jak CompactDAQ i CompactRIO , z dużą liczbą bloków specyficznych dla takiego sprzętu, zestawów narzędzi Measurement and Automation eXplorer (MAX) i Virtual Instrument Software Architecture (VISA).

National Instruments udostępnia tysiące sterowników urządzeń do pobrania w sieci NI Instrument Driver Network (IDNet).

Kompilacja kodu

LabVIEW zawiera kompilator, który tworzy natywny kod dla platformy CPU. Kod graficzny jest konwertowany na Dataflow Intermediate Representation, a następnie tłumaczony na fragmenty wykonywalnego kodu maszynowego przez kompilator oparty na LLVM . Silnik wykonawczy wywołuje te porcje, co zapewnia lepszą wydajność. Składnia LabVIEW jest ściśle egzekwowana podczas procesu edycji i kompilowana w wykonywalnym kodzie maszynowym, gdy jest to wymagane do uruchomienia lub podczas zapisywania. W tym drugim przypadku plik wykonywalny i kod źródłowy są łączone w jeden plik binarny. Wykonanie jest sterowane przez LabVIEW run-time silnika, który zawiera pewne pre-kompilowany kod do wykonywania typowych zadań, które są zdefiniowane przez język G. Silnik wykonawczy zarządza przepływem wykonywania i zapewnia spójny interfejs dla różnych systemów operacyjnych, systemów graficznych i komponentów sprzętowych. Użycie środowiska uruchomieniowego sprawia, że ​​pliki kodu źródłowego są przenośne na obsługiwanych platformach. Programy LabVIEW są wolniejsze niż odpowiedniki skompilowanego kodu C, chociaż, podobnie jak w innych językach, optymalizacja programu często pozwala złagodzić problemy z szybkością wykonywania.

Duże biblioteki

Wiele bibliotek z dużą liczbą funkcji do akwizycji danych, generowania sygnałów, matematyki, statystyki, kondycjonowania sygnałów, analizy itp., a także liczne funkcje, takie jak integracja, filtry i inne wyspecjalizowane możliwości zwykle związane z przechwytywaniem danych z czujników sprzętowych jest ogromny. Ponadto LabVIEW zawiera komponent programowania tekstowego o nazwie MathScript z dodatkowymi funkcjami przetwarzania sygnałów, analizy i matematyki. MathScript można zintegrować z programowaniem graficznym za pomocą węzłów skryptów i używa składni, która jest ogólnie zgodna z MATLAB .

Programowanie równoległe

LabVIEW jest z natury językiem współbieżnym , więc bardzo łatwo jest zaprogramować wiele zadań, które są wykonywane równolegle poprzez wielowątkowość. Na przykład można to łatwo zrobić, rysując dwie lub więcej równoległych pętli while i łącząc je z dwoma oddzielnymi węzłami. Jest to wielka korzyść dla automatyzacji systemu testowego, gdzie powszechną praktyką jest równoległe uruchamianie procesów, takich jak sekwencjonowanie testów, rejestracja danych i interfejs sprzętowy.

Ekosystem

Ze względu na długowieczność i popularność języka LabVIEW oraz możliwość rozszerzania jego funkcji przez użytkowników, dzięki wkładowi społeczności powstał duży ekosystem dodatków stron trzecich. Ten ekosystem jest dostępny w sieci LabVIEW Tools Network, która jest miejscem sprzedaży zarówno darmowych, jak i płatnych dodatków LabVIEW.

Społeczność użytkowników

Istnieje niedroga wersja LabVIEW Student Edition przeznaczona dla instytucji edukacyjnych w celach edukacyjnych. Istnieje również aktywna społeczność użytkowników LabVIEW, którzy komunikują się za pośrednictwem kilku elektronicznych list mailingowych (grup e-mail) i forów internetowych .

Home Bundle Edition

National Instruments dostarcza niedrogie oprogramowanie LabVIEW Home Bundle Edition.

Wydanie społecznościowe

National Instruments udostępnia darmową wersję do użytku niekomercyjnego o nazwie LabVIEW Community Edition. Ta wersja zawiera wszystko w profesjonalnych edycjach LabVIEW, nie ma znaków wodnych i zawiera moduł sieciowy LabVIEW NXG do użytku niekomercyjnego. Z edycji tych mogą korzystać także szkoły podstawowe i ponadpodstawowe.

Krytyka

LabVIEW jest autorskim produktem National Instruments . W przeciwieństwie do popularnych języków programowania, takich jak C lub Fortran , LabVIEW nie jest zarządzany ani określany przez komisję normalizacyjną innej firmy, taką jak Amerykański Narodowy Instytut Normalizacyjny (ANSI), Instytut Inżynierów Elektryków i Elektroników (IEEE), Międzynarodowa Organizacja Normalizacyjna (ISO).

Nietekstowe

Ponieważ język G nie jest językiem tekstowym, narzędzia programowe, takie jak wersjonowanie, porównywanie side-by-side (lub diff) oraz śledzenie zmian wersji kodu nie mogą być stosowane w taki sam sposób, jak w przypadku tekstowych języków programowania. Istnieje kilka dodatkowych narzędzi do porównywania i łączenia kodu z narzędziami do kontroli kodu źródłowego (wersjonowania), takimi jak subversion, CVS i Perforce.

Brak funkcji powiększania

Nie ma możliwości zbliżenia (lub powiększenia) wirtualnego instrumentu (VI), który trudno będzie zobaczyć na dużym monitorze o wysokiej rozdzielczości. Jednak do LabVIEW NXG dodano możliwość powiększania.

Historia wydań

W 2005 roku, począwszy od LabVIEW 8.0, główne wersje zostały wydane około pierwszego tygodnia sierpnia, co zbiega się z doroczną konferencją National Instruments NI Week, a następnie w lutym następnego roku zostanie wydana wersja z poprawkami błędów.

W 2009 roku National Instruments zaczęło nazywać wydania po roku, w którym zostały wydane. Poprawka błędu jest nazywana dodatkiem Service Pack, na przykład dodatek Service Pack 1 2009 został wydany w lutym 2010 roku.

W 2017 roku firma National Instruments przeniosła coroczną konferencję na maj i wydała LabVIEW 2017 wraz z całkowicie przeprojektowanym LabVIEW NXG 1.0 opartym na Windows Presentation Foundation (WPF).

Nazwa i wersja Numer kompilacji Data Uwagi
Rozpoczyna się projekt LabVIEW Kwiecień 1983
LabVIEW 1.0 Październik 1986 dla Macintosh
LabVIEW 2.0 styczeń 1990
LabVIEW 2,5 Sierpień 1992 pierwsze wydanie dla Sun i Windows
LabVIEW 3.0 lipiec 1993 Wieloplatformowy
LabVIEW 3.0.1 1994 pierwsze wydanie dla Windows NT
LabVIEW 3.1 1994
LabVIEW 3.1.1 1995 pierwsze wydanie z funkcją "konstruktora aplikacji"
LabVIEW 4.0 Kwiecień 1996
LabVIEW 4.1 1997
LabVIEW 5.0 Luty 1998
LabVIEW RT maj 1999 Czas rzeczywisty
LabVIEW 6.0 (6i) 6.0.0.4005 26 lipca 2000 r
LabVIEW 6.1 6.1.0.4004 12 kwietnia 2001
LabVIEW 7.0 (ekspresowy) 7.0.0.4000 kwiecień 2003
Moduł LabVIEW PDA maj 2003 pierwsze wydanie modułu
Moduł LabVIEW FPGA czerwiec 2003 pierwsze wydanie
LabVIEW 7.1 7.1.0.4000 2004
Wbudowany moduł LabVIEW maj 2005 pierwsze wydanie
LabVIEW 8.0 8.0.0.4005 wrzesień 2005
LabVIEW 8.20 Sierpień 2006 natywne programowanie obiektowe
LabVIEW 8.2.1 8.2.1.4002 21 lutego 2007
LabVIEW 8.5 8.5.0.4002 2007
LabVIEW 8.6 8.6.0.4001 24 lipca 2008
LabVIEW 8.6.1 8.6.0.4001 10 grudnia 2008
LabVIEW 2009 9.0.0.4022 4 sierpnia 2009 32-bitowe i 64-bitowe
LabVIEW 2009 SP1 9.0.1.4011 8 stycznia 2010
LabVIEW 2010 10.0.0.4032 4 sierpnia 2010
LabVIEW 2010 f2 10.0.0.4033 16 września 2010
LabVIEW 2010 SP1 10.0.1.4004 17 maja 2011
LabVIEW dla LEGO MINDSTORMS Sierpień 2011 2010 SP1 z niektórymi modułami
LabVIEW 2011 11.0.0.4029 22 czerwca 2011
LabVIEW 2011 SP1 11.0.1.4015 1 marca 2012
LabVIEW 2012 12.0.0.4029 Sierpień 2012
LabVIEW 2012 SP1 12.0.1.4013 Grudzień 2012
LabVIEW 2013 13.0.0.4047 Sierpień 2013
LabVIEW 2013 SP1 13.0.1.4017 marzec 2014
LabVIEW 2014 14,0 Sierpień 2014
LabVIEW 2014 SP1 14.0.1.4008 Marzec 2015
LabVIEW 2015 15.0f2 Sierpień 2015
LabVIEW 2015 SP1 15.0.1f1 Marzec 2016
LabVIEW 2016 16.0.0 sierpień 2016
LabVIEW 2017 17.0f1 maj 2017
LabVIEW NXG 1.0 1.0.0 maj 2017
LabVIEW 2017 SP1 17.0.1f1 sty 2018
LabVIEW NXG 2.0 2.0.0 sty 2018
LabVIEW 2018 18,0 maj 2018
LabVIEW NXG 2.1 2.1.0 maj 2018
LabVIEW 2018 SP1 18.0.1 wrz 2018
LabVIEW NXG 3.0 3.0.0 lis 2018
LabVIEW 2019 19,0 Maj 2019
LabVIEW NXG 3.1 3.1.0 Maj 2019
LabVIEW 2019 SP1 19.0.1 lis 2019
LabVIEW NXG 4.0 4.0.0 lis 2019
LabVIEW 2020 i
LabVIEW NXG 5.0 Community Edition
Kwiecień 2020 pierwsze wydania
LabVIEW 2021 21,0 Sierpień 2021

Repozytoria i biblioteki

OpenG oraz LAVA Code Repository (LAVAcr) służą jako repozytoria dla szerokiej gamy aplikacji i bibliotek Open Source LabVIEW . SourceForge wymienił LabVIEW jako jeden z możliwych języków, w których można napisać kod.

VI Package Manager stał się standardowym menedżerem pakietów dla bibliotek LabVIEW. Jest bardzo podobny w celu do Ruby's RubyGems i Perl's CPAN , chociaż zapewnia graficzny interfejs użytkownika podobny do Menedżera pakietów Synaptic . VI Package Manager zapewnia dostęp do repozytorium bibliotek OpenG (i innych) dla LabVIEW.

Istnieją narzędzia do konwersji MathML na kod G.

Powiązane oprogramowanie

National Instruments oferuje również produkt o nazwie Measurement Studio , który oferuje wiele możliwości testowania, pomiaru i kontroli LabVIEW, jako zestaw klas do użytku z Microsoft Visual Studio . Pozwala to programistom na wykorzystanie niektórych mocnych stron LabVIEW w tekstowym .NET Framework . National Instruments oferuje również LabWindows/CVI jako alternatywę dla programistów ANSI C.

Gdy aplikacje wymagają sekwencjonowania, użytkownicy często używają LabVIEW z oprogramowaniem do zarządzania testami TestStand, również od National Instruments.

Ch interpreter jest C / C ++ interpreter, które mogą być wbudowane w LabVIEW dla skryptów.

FlowStone DSP firmy DSP Robotics również wykorzystuje formę programowania graficznego podobną do LabVIEW, ale ogranicza się odpowiednio do branży robotyki.

LabVIEW posiada bezpośredni węzeł z modeFRONTIER , multidyscyplinarnym i wielocelowym środowiskiem do optymalizacji i projektowania, napisanym w celu umożliwienia połączenia z niemal każdym komputerowym narzędziem inżynierskim . Oba mogą być częścią tego samego opisu przepływu pracy procesu i mogą być wirtualnie sterowane przez technologie optymalizacji dostępne w modeFRONTIER.

Zobacz też

Powiązane tytuły oprogramowania
Pakiety darmowe i open-source
  • PWCT — licencja GPL
  • DRAKON — domena publiczna, z niektórymi komponentami open source

Bibliografia

Dalsza lektura

  • Bress, Thomas J. (2013). Efektywne programowanie LabVIEW . [Sl]: NTS Naciśnij. Numer ISBN 978-1-934891-08-7.
  • Blume, Piotr A. (2007). Książka stylów LabVIEW . Upper Saddle River, NJ: Prentice Hall. Numer ISBN 978-0-13-145835-2.
  • Travis, Jeffrey; Kring, Jim (2006). LabVIEW dla każdego : Łatwe i przyjemne programowanie graficzne (wyd. 3). Upper Saddle River, NJ: Prentice Hall. Numer ISBN 0-13-185672-3.
  • Conway, Jon; Watts, Steve (2003). Inżynierskie podejście do oprogramowania LabVIEW . Upper Saddle River, NJ: Prentice Hall PTR. Numer ISBN 0-13-009365-3.
  • Olansen, Jon B.; Rosow, Eric (2002). Wirtualna bioinstrumentacja: aplikacje biomedyczne, kliniczne i medyczne w LabVIEW . Upper Saddle River, NJ: Prentice Hall PTR. Numer ISBN 0-13-065216-4.
  • Beyon, Jeffrey Y. (2001). Programowanie LabVIEW, gromadzenie i analiza danych . Upper Saddle River, NJ: Prentice Hall PTR. Numer ISBN 0-13-030367-4.
  • Travis, Jeffrey (2000). Aplikacje internetowe w LabVIEW . Upper Saddle River, NJ: Prentice Hall PTR. Numer ISBN 0-13-014144-5.
  • Essick, John (1999). Zaawansowane laboratoria LabVIEW . Upper Saddle River, NJ: Prentice Hall. Numer ISBN 0-13-833949-X.

Artykuły dotyczące konkretnych zastosowań

Artykuły o zastosowaniach edukacyjnych

Zewnętrzne linki