Labview je gotov program sa opisom. Razne tehnike programiranja u NI LabVIEW

Zdravo kolege!

U relativno kratkom članku, želio bih govoriti o programskom jeziku LabVIEW. Ovaj vrlo zanimljiv proizvod nažalost ne uživa široku popularnost, a ja bih želio donekle popuniti postojeću prazninu.

Šta je LabVIEW?

LabVIEW je jedan od vodećih proizvoda kompanije National Instruments. Prije svega, treba napomenuti da je LabVIEW skraćenica koja označava Lab govorništvo V virtuelno I instrumentacija E inženjering W orkbench. Već u nazivu se može pratiti orijentacija na laboratorijska istraživanja, mjerenja i prikupljanje podataka. Zaista, izgradnja SCADA sistema u LabVIEW-u je nešto lakša od upotrebe "tradicionalnih" razvojnih alata. U ovom članku želim pokazati da je mogući opseg LabVIEW-a nešto širi. Ovo je suštinski drugačiji programski jezik, ili ako želite čitavu "filozofiju" programiranja. Funkcionalni jezik koji vas tjera da razmišljate drugačije i ponekad pruža apsolutno fantastične mogućnosti za programera. Da li je LabVIEW programski jezik uopšte? Ovo je kontroverzno pitanje - ovdje nema standarda, kao, na primjer, ANSI C. U uskim krugovima programera kažemo da pišemo na "G" jeziku. Formalno, takav jezik ne postoji, ali u tome je ljepota ovog razvojnog alata: iz verzije u verziju, sve više i više novih konstrukcija se uvodi u jezik. Teško je zamisliti da će se u sljedećoj reinkarnaciji C-a, na primjer, pojaviti nova struktura for-petlje. A u LabVIEW-u je to sasvim moguće.
Međutim, treba napomenuti da je LabVIEW uključen u TIOBE ocjenu programskih jezika, zauzimajući ovog trenutka trideseto mjesto je negdje između Prologa i Fortrana.

NI LabVIEW - istorija stvaranja

National Instruments su 1976. godine osnovala tri osnivača - Jeff Kodosky, James Truchard i Bill Nowlin u američkom gradu Austinu u Teksasu. Osnovna specijalizacija kompanije bili su alati za merenje i automatizaciju proizvodnje.
Prva verzija LabVIEW-a objavljena je deset godina nakon osnivanja kompanije - 1986. (bila je to verzija za Apple Mac). NI inženjeri su odlučili da izazovu "tradicionalne" programske jezike i stvorili su potpuno grafičko razvojno okruženje. Jeff je postao glavni ideolog grafičkog pristupa. Nove verzije izlazile su iz godine u godinu. Prva verzija za više platformi (uključujući Windows) bila je verzija 3 objavljena 1993. godine. Trenutna verzija je 8.6, koja je objavljena prošle godine.

Sjedište kompanije je i danas u Austinu. Danas kompanija zapošljava skoro četiri hiljade ljudi, a kancelarije se nalaze u skoro četrdeset zemalja (postoji i kancelarija u Rusiji)

Moj uvod u LabVIEW

Moje upoznavanje sa LabVIEW dogodilo se prije skoro deset godina. Počeo sam da radim po novom ugovoru, a moj tadašnji šef mi je dao pakovanje CD-a sa natpisom "sad ćeš raditi na ovome". Instalirao sam LabVIEW (bila je to peta verzija), i nakon što sam se malo poigravao, rekao sam da se na OVOM ništa ozbiljno ne može uraditi, bolje je koristiti Delphi “na starinski način”... Na šta mi je on rekao - jednostavno nisi probao. Radite nedelju ili dve. Nakon nekog vremena, shvatit ću da neću moći pisati ni na čemu drugom osim na LabVIEW-u. Jednostavno sam se zaljubila u ovaj jezik, iako to nije bila "ljubav na prvi pogled".

Uopšteno govoreći, prilično je teško uporediti grafičke i tekstualne programske jezike. Ovo je, možda, poređenje iz kategorije "PC" protiv "MAC" ili "Windows" protiv "Linuxa" - možete se raspravljati koliko god želite, ali argument je apsolutno besmislen - svaki sistem ima pravo na postojanje i svaki će imati i pristalice i protivnike, osim toga, svaki proizvod ima svoju nišu. LabVIEW je samo alat, iako vrlo fleksibilan.

Dakle, šta je LabVIEW?

LabVIEW je multi-platformsko okruženje za razvoj grafičkih aplikacija. LabVIEW je u osnovi univerzalni programski jezik. I iako je ovaj proizvod ponekad usko povezan sa hardverom National Instruments, on ipak nije povezan sa određenom mašinom. Postoje verzije za Windows, Linux, MacOS. Izvorni kod je prenosiv, a programi će izgledati isto na svim sistemima. Kod generiran od strane LabVIEW također se može izvršiti Windows Mobile ili PalmOS (pravedno rečeno, treba napomenuti da je podrška za PalmOS ukinuta, ali je tu više kriv sam Palm). Ovaj jezik se može uspešno koristiti za kreiranje velikih sistema, za obradu tekstova, slika i rad sa bazama podataka.

LabVIEW je jezik veoma visokog nivoa. Međutim, ništa vas ne sprečava da uključite module "niskog nivoa" u LabVIEW programe. Čak i ako želite koristiti asemblerske umetke - to je također moguće, samo trebate generirati DLL i ubaciti pozive u kod. S druge strane, jezik visokog nivoa vam omogućava da lako izvodite vrlo netrivijalne operacije sa podacima, koji u redovnom jeziku mogu zauzeti mnogo redova (ako ne i desetine redova) koda. Međutim, radi poštenja, treba napomenuti da neke operacije jezika niskog nivoa (na primjer, rad s pokazivačima) nije tako lako implementirati u LabVIEW zbog njegovog "visokog nivoa". Naravno, jezik LabVIEW uključuje osnovne kontrolne konstrukcije koje imaju analoge u "tradicionalnim" jezicima:

  • varijable (lokalne ili globalne)
  • grananje (struktura slučaja)
  • For - petlje sa i bez provjere završetka.
  • while petlje
  • Operacije grupisanja.

LabVIEW - programske i jezičke karakteristike

U LabVIEW, razvijen softverski moduli nazivaju se "Virtualni instrumenti" (Virtualni instrumenti) ili na jednostavan način VI. Oni se čuvaju u *.vi fajlovima. VI su gradivni blokovi koji čine LabVIEW program. Svaki LabVIEW program sadrži najmanje jedan VI. Što se tiče jezika C, možete sasvim sigurno povući analogiju sa funkcijom, s jedinom razlikom što je u LabVIEW-u jedna funkcija sadržana u jednom fajlu (možete kreirati i biblioteke alata). Podrazumeva se da se jedan VI može pozvati iz drugog VI. U osnovi svaki VI se sastoji od dva dijela - blok dijagrama i prednjeg panela. Blok dijagram je programski kod(tačnije, vizuelni grafički prikaz koda), a Front Panel je interfejs. Evo kako izgleda klasičan primjer Hello, World!:

U srcu LabVIEW-a je paradigma protoka podataka. U gornjem primjeru, konstanta i terminal indikatora su povezani linijom. Ova linija se zove Žica. Možete to nazvati "žicom". Žice prenose podatke od jednog elementa do drugog. Cijeli ovaj koncept se zove protok podataka. Suština blok dijagrama su čvorovi (čvorovi), izlazi nekih čvorova su povezani sa ulazima drugih čvorova. Čvor će početi da se izvršava tek kada stignu svi podaci potrebni za rad. Na dijagramu iznad postoje dva čvora. Jedna od njih je konstanta. Ovaj čvor je samodovoljan - počinje da se izvršava odmah. Drugi čvor je indikator. Prikazaće podatke koje konstanta prosledi (ali ne odmah, već čim podaci stignu iz konstante).

Evo još malo složen primjer: sabiranje i množenje dva broja. Na tradicionalnim jezicima bismo napisali nešto slično

int a, b, sum, mul;
//...
zbroj = a + b;
mul = a*b;

Evo kako to izgleda u LabVIEW-u:

Imajte na umu da se sabiranje i množenje automatski izvode paralelno. Na mašini sa dva procesora, oba procesora će biti automatski omogućena.

A evo kako izgleda dok / for loops i if / then / else struktura:

Kao što je već spomenuto, svi elementi će se izvršavati paralelno. Ne morate razmišljati o tome kako paralelizirati zadatak u više niti koje se mogu izvoditi paralelno na više procesora. IN najnovije verzije možete čak i eksplicitno odrediti na kojem od procesora treba izvršiti ovu ili onu dok-petlju. Sada postoje dodaci za jezike teksta koji vam omogućavaju da lako dobijete podršku višeprocesorski sistemi, ali tako jednostavno kao u LabVIEW-u, ovo vjerovatno nigdje nije implementirano. (pa, ipak sam skliznuo u poređenje sa jezicima teksta). Ako već govorimo o multithreadingu, onda treba napomenuti i da programer ima širok izbor alata za sinkronizaciju niti - semafori, redovi, susreti itd.

LabVIEW uključuje bogat skup elemenata za izgradnju korisničkih interfejsa. Interfejsi u Delphiju su brzo "napadnuti" na šta, au LabVIEW-u je ovaj proces još brži.

Standardna isporuka LabVIEW-a uključuje i blokove za rad sa ini fajlovima, registrator, funkcije za rad sa binarnim i test fajlovima, matematičke funkcije, moćne alate za crtanje (a gde bez toga u laboratoriji), a pored već pomenute mogućnosti od DLL poziva, LabVIEW vam omogućava rad sa ActiveX komponentama i .net-om. Počevši od osme verzije, podrška za klase je dodana u LabVIEW - jezik je postao objektno orijentisan. Implementirana podrška se ne može nazvati potpunom, ali glavne karakteristike objektno orijentiranih jezika - nasljeđivanje i polimorfizam su prisutne. Takođe, funkcionalnost jezika se može proširiti dodatnim modulima, kao što je NI Vision Toolkit – za obradu slike i mašinski vid i dr. A uz pomoć modula Application Builder, možete generirati izvršnu exe datoteku. Sa Internet Toolkit-om možete raditi ftp serveri, koristeći Database Connectivity Toolkit - sa bazama podataka, itd.

Često možete čuti mišljenje da grafički kod loše čitamo. Zaista, iz navike, obilje ikona i dirigenta je pomalo šokantno. Takođe, programeri početnici kreiraju "sheet" programe i "špagete" programe. Međutim, iskusni LabVIEW programer nikada neće kreirati dijagrame veće od veličine ekrana, čak i ako se program sastoji od stotina modula. Dobro osmišljen program je zapravo "samodokumentirajući" jer je već zasnovan na grafičkom prikazu.

Prilično dugo, dok sam programirao u LabVIEW-u, bio sam potpuno uvjeren da je LabVIEW interpreter i da se blok dijagrami konstantno tumače od strane kernela. Nakon razgovora sa NI inženjerima, pokazalo se da to nije slučaj. LabVIEW je kompajler (kvalitet generisanja koda, međutim, ostavlja mnogo da se poželi). Ali kompilacija se odvija "u hodu" - u svakom trenutku tokom razvoja, program je uvijek spreman za pokretanje. Takođe, LabVIEW kod se može kompajlirati u potpunu izvršnu datoteku koja se može pokrenuti na računaru bez instaliranog LabVIEW-a (iako zahteva LabVIEW Run-Time). Također možete kompajlirati instalacioni paket-installer, uslužni programi trećih strana tip InstallShield nije potreban.

Dalji i detaljniji opis karakteristika paketa je izvan okvira ovog članka, ali samo predlažem da ga isprobate (linkovi su dati ispod). Kao što su velikani rekli "...jedini način da se savlada novi jezik programiranje - pisati programe na njemu. Pa, iskusni programeri će moći ekstrapolirati stečeno znanje na svoje potrebe.

Gotovo svi programeri uređaja na mikrokontrolerima, bilo amateri ili profesionalci, prije ili kasnije moraju povezati mikrokontrolerski uređaj sa svojim „velikim bratom“, odnosno PC-om. Tada se postavlja pitanje koji softver koristiti za razmjenu sa mikrokontrolerom, analizu i obradu podataka dobijenih od njega? Često, za razmjenu MK-a sa računarom, koriste RS232 sučelje i protokol - stari dobri COM port u jednoj ili drugoj implementaciji.

Na strani računara koriste se različiti terminalski programi kojih ima na stotine. Ali ovi programi obezbeđuju samo prijem i prenos informacija. Teško ga je obraditi i vizualizirati u vizualnom obliku.

Neki ljudi sami pišu takav softver u nekom programskom jeziku (Delphi, C ++), dajući im potrebnu funkcionalnost. Ali ovaj zadatak nije lak, potrebno je znati, osim samog jezika, i uređaj operativni sistem, načini rada s komunikacijskim portovima, mnoge druge tehničke suptilnosti koje odvlače pažnju od glavne stvari - implementacije algoritma programa. Općenito, usput budite Windows/Unix programer.

Na pozadini ovih pristupa, koncept virtuelnih instrumenata (vi) oštro se razlikuje. Ovaj članak će govoriti o softverski proizvod LabView od Nationals Instruments. Tek počinjem da savladavam ovaj divan proizvod, tako da mogu praviti netačnosti i greške. Stručnjaci će ispraviti :-)) Zapravo, šta je LabView?

LabView je razvojno okruženje i platforma za izvršavanje programa napisanih u grafičkom programskom jeziku National Instruments G.

razgovor običan jezik, LabView - Ovo je okruženje za kreiranje aplikacija za zadatke prikupljanja, obrade, vizualizacije informacija iz različitih instrumenata, laboratorijskih objekata itd. I za kontrolu tehnoloških procesa i uređaja. Međutim, uz pomoć LabView-a možete kreirati sasvim običan aplikativni softver. Nije mi svrha detaljno opisivati ​​ovaj proizvod i raditi s njim. LabView ima hiljade stranica odlične dokumentacije i stotine knjiga. Internet je pun resursa vezanih za LabView gdje možete pronaći odgovore na sva vaša pitanja.

Svrha članka je da pokaže kako lako i praktično, u poređenju sa tradicionalnim programiranjem, možete kreirati aplikacije za PC i kakvu snagu LabView nosi. (Zapravo, to je diskutabilno, jer u tradicionalnom programiranju, na istom Delphiju, to nije teže uraditi. A što se tiče efikasnosti, teško da je lošije, ako ne i bolje. Ali za ovo je potrebno mnogo duže učiti Delphi. Sve u svemu. je brzo i jasno skoro odmah "Proučio sam par priručnika i napred da ogradim svakakve brojčanike. Znači za programere je to kao pseća peta noga, ali za takve drugove koliko sam ja daleko od kompjutera, to je to. Jednom, za pola sata, kada sam prvi put vidio LabView, napravio sam brutalni sistem koristeći tanku ručnu kontrolu navodnjavanja i grijanja za staklenik konoplje. Sa svim vrstama PID kontrolera. Donio sam potenciometre i senzore laboratorijskog postolja koji je bio u naš tehničar i pokrenuo ovu paklenu jedinicu. I sve je radilo odmah, bez otklanjanja grešaka. Usput, sva oprema hadronskog sudarača radi na LabView-u, kao i puno naučne opreme. Napomena DI HALT) Na kraju krajeva, većini inženjera elektronike nije programiranje za PC, zar ne? To je ono što pokušavamo popraviti. Kako ne bismo proučavali sferne vakuumske konje, postavili smo se i implementirali jednostavan zadatak. Zadatak je zaista jednostavan, ali na osnovu njega možete razumjeti osnovne principe programiranja u LabView-u. Koristit ćemo LabView verziju 2010. Za ostale verzije, razlike će biti minimalne.

Zadatak
Imamo ploču sa AVR mikrokontrolerom povezanu sa računarom preko RS232. Kontroler je napunjen firmverom, prema kojem kontroler mjeri vrijednost napona na jednom od ADC ulaza, te prenosi ADC kod (od 0 do 1023) do računara putem serijskog kanala. Potrebno je napisati PC program koji će primati tok podataka od ADC-a, prikazati ADC kod, pretvoriti ADC kod u vrijednost napona u voltima, prikazati vrijednost napona u voltima, iscrtati promjenu napona tokom vremena.

Pa, vjerovatno dosta stihova, hajde da počnemo možda!

Dakle, šta nam je potrebno za rad:

  • Zapravo sam LabView. Probnu verziju možete preuzeti sa NI web stranice: http://www.ni.com/trylabview/. Također gugla bez problema piratska verzija. Inače, na rutracker.org, osim ponora piratskih, postoji i Linux verzija za koju se čini da uopće nije potrebna registracija. NI je odlučio upoznati open source?
  • Takođe morate preuzeti NI VISA komponentu. Bez ovog programa, LabView neće "vidjeti" COM port na računaru. VISA sadrži funkcije za rad sa komunikacijskim portovima i još mnogo toga. Možete ga preuzeti sa joule.ni.com. Instalirajte LabView i VISA. Instalacija ovog softvera je standardna, nema nikakve posebne karakteristike.

Prije svega, moramo se uvjeriti da je VISA pronašla COM port u sistemu i da radi ispravno s njim. Ovo možete provjeriti na sljedeći način: pokrenite program Measurement & Automation. Dolazi sa LabView-om. Ako nije instaliran, možete ga instalirati ručno. Na disku (ima ga slika sa LabView-om).

Dobijamo nešto ovako:


Pa šta imamo. Radni prostor se sastoji od dva velika panela prednjeg panela i blok dijagrama. Na prednjoj ploči ćemo sastaviti interfejs našeg programa koristeći kontrole sa panela Kontrole. Ovi elementi su ručke nama poznatih varijabilnih otpornika, LED diode, dugmad, pokazivački uređaji, ekran osciloskopa itd. Služe za unos informacija u program i prikaz rezultata izvršenja. Na panelu blok dijagrama, programski kod se nalazi direktno. Ovdje se moramo malo vratiti i objasniti princip programiranja u LabView-u. Mali primjer. Uobičajeno je da se rad na programu počne sa dizajnom interfejsa, a zatim implementacijom algoritma rada na blok dijagramu. Napravimo najjednostavniji program za množenje dva broja. Da bismo to uradili, postavićemo na prednji panel prevlačenjem tri kontrole, recimo elementa dugmeta i numeričkog indikatora za prikaz rezultata.

Ok, sada moramo implementirati stvarno množenje. Idite na panel blok dijagrama i vidite da je za svaku od naših kontrola kreirana odgovarajuća ikona. Najbolje je odmah prebaciti način prikaza u obliku terminala. Dijagram neće biti tako pretrpan. Osim toga u terminalima je vidljiva vrsta podataka s kojima ova ili ona kontrola radi. Da biste to uradili, kliknite desnim tasterom miša na ikonu i poništite opciju Prikaži kao ikonu. Na vrhu ekrana kontrola je u obliku terminala, pri dnu i desno u obliku ikone. Da biste konfigurirali prikaz na blok dijagramu kao terminale prema zadanim postavkama, trebate odabrati stavku menija Alati->Opcije, odabrati Blok dijagram na lijevoj strani i poništiti Postavi terminale prednjeg panela kao ikone. Vrlo korisno za prikaz kontekstne pomoći. Možete ga prikazati kombinacijom Ctrl + H. Ovaj prozor prikazuje informacije o objektu na koji je kursor trenutno prekriven. Mega zgodna stvar.

Najvažniji koncept u LabView programiranju je koncept DataFlow. Zaključak je sljedeći: Za razliku od imperativnih programskih jezika, gdje se naredbe izvršavaju uzastopnim redoslijedom, u LabView funkcije rade samo ako postoje informacije o svim ulazima funkcije (svaka funkcija ima ulazne i izlazne vrijednosti). Tek tada funkcija implementira svoj algoritam, a rezultat se šalje na izlaz koji može koristiti druga funkcija. Dakle, unutar istog VI, funkcije mogu raditi nezavisno jedna od druge.

Sada, da bismo oživjeli naš primjer, moramo slijediti ovaj koncept i dati funkcijskom ulazu numeričke vrijednosti koje smo postavili kontrolama, te dobiti rezultat iz izlaza i prikazati ga.

Za povezivanje elemenata na blok dijagramu koristite alat Connect Wire sa panela Alati. Odaberite ga i nacrtajte naše veze.

Kao što vidite, čini se da nema ništa komplikovano. Ali u isto vrijeme, LabView vam omogućava rješavanje problema bilo koje složenosti! Ept, na njemu je napravljen sistem upravljanja TANK! Tako da.

Pa, hajde sada da radimo još zanimljivije stvari, naime, napravit ćemo naš najjednostavniji voltmetar o kojem sam govorio na samom početku.

Dakle, šta treba da radimo. Prvo morate konfigurirati i inicijalizirati serijski port. Započnite beskonačnu petlju. U petlji koristimo funkciju za čitanje sa porta i primanje informacija. Pretvorimo informacije za prikaz na grafikonu, preračunamo ADC kod u vrijednost napona u voltima. Prilikom izlaska iz petlje zatvaramo port.
Dakle, u interfejsu našeg programa neće biti kontrolnih elemenata osim dugmeta Stop, već će biti samo prikaz rezultata, uradićemo ovo: prvo ćemo kreirati blok dijagram, a zatim dodati elemente koji nedostaju u prednju ploču. Iako morate učiniti suprotno! Ali u ovom slučaju, to je zgodnije.

Na panelu blok dijagrama postavljamo element While Loop iz palete Strukture, ovo je naša beskonačna petlja. Zaokružujemo područje okvirom ciklusa, dovoljnim da stane unutar algoritma. U donjem desnom uglu nalazi se crvena tačka, kliknite desnim tasterom miša na nju i izaberite Kreiraj kontrolu. Dugme Stop će se odmah pojaviti na prednjoj ploči. Kada kliknete na njega, naš program će se završiti.

Morate kreirati kontrole za funkciju inicijalizacije porta. Dva su nam dovoljna - brzina porta i naziv porta. Na isti način kao što smo kreirali konstantu za funkciju čitanja, kreiramo i kontrole. RMB na potrebnim ulazima funkcije inicijalizacije i stavke

Kreiraj->Kontrola.

Kreiraj->Kontrola.

Zainteresovani smo za dva inputa: Naziv Visa resursa I Baud Rate(zadano 9600). Sada idemo na prednju ploču i dodajmo potrebne komponente, odnosno ekran za crtanje grafikona i oznake za prikaz ADC koda i napona u voltima.
U skladu s tim, ovo su elementi Waveform Chart iz palete Graph i dva Numeric Indicator elementa iz Numeric palete.

Vratimo se na blok dijagram i pomerimo elemente koji su se pojavili unutar petlje. Pri kraju smo! Jedina stvar je da još uvijek trebamo konvertirati niz znakova koji dolaze iz izlaza funkcije Read u format koji će naši indikatori probaviti. I također implementirati najjednostavniju matematiku za prevođenje ADC koda u volte. Ispod su snimci ekrana prednje ploče i blok dijagrama ovoj fazi:



Da bismo pretvorili niz, koristit ćemo funkciju Scan from string iz palete String. Stavili smo ga unutar petlje. Sada matematika. Da biste ADC kod pretvorili u vrijednost napona u voltima, trebate pomnožiti kod sa vrijednošću referentnog napona (u mom slučaju to je pet volti) i rezultujuću vrijednost podijeliti sa 1023 (pošto ADC ima 10-bitni kapacitet). Potrebne funkcije množenja i dijeljenja, kao i konstante (5 i 1023) bit će smještene u petlju. Neću praviti screenshot svake veze, jer već postoje dofiga slike. Dat ću završni ekran svih veza. Tamo je sve krajnje jednostavno.


Mislim da je sve jasno, ako imate pitanja pitajte u komentarima. Hajde da to zajedno shvatimo :-))) U međuvremenu, program je spreman.

Pređimo na naš interfejs i malo podesimo graf. Odaberite donju vrijednost na Y osi i postavite je na 0. Odaberite gornju vrijednost i postavite je na 5. Dakle, naša skala na Y osi je u rasponu od 0-5 volti. Pa, odabiremo COM port, unosimo tečaj, pokrećemo naš program pomoću gumba sa strelicom i nasilno uvijamo otpornik na ploči, dok promatramo rezultat našeg rada na ekranu. Kliknite na dugme Stop da zaustavite program.

Također možete kombinirati dijelove u funkcionalne blokove kako ne bi zatrpali krug.

Gotovo svi programeri uređaja na mikrokontrolerima, bilo amateri ili profesionalci, prije ili kasnije moraju povezati mikrokontrolerski uređaj sa svojim „velikim bratom“, odnosno PC-om. Tada se postavlja pitanje koji softver koristiti za razmjenu sa mikrokontrolerom, analizu i obradu podataka dobijenih od njega? Često, za razmjenu MK-a s računarom, koriste RS232 interfejs i protokol - stari dobri COM port u jednoj ili drugoj implementaciji.

Na strani računara koriste se različiti terminalski programi kojih ima na stotine. Ali ovi programi obezbeđuju samo prijem i prenos informacija. Teško ga je obraditi i vizualizirati u vizualnom obliku.

Neki ljudi sami pišu takav softver u nekom programskom jeziku (Delphi, C ++), dajući im potrebnu funkcionalnost. Ali ovaj zadatak nije lak, morate znati, pored samog jezika, uređaj operativnog sistema, kako raditi s komunikacijskim portovima i mnoge druge tehničke suptilnosti koje odvlače pažnju od glavne stvari - implementacije programa algoritam. Općenito, usput budite Windows/Unix programer.

Na pozadini ovih pristupa, koncept virtuelnih instrumenata (vi) oštro se razlikuje. Ovaj članak će se fokusirati na softverski proizvod Nationals Instruments LabView. Tek počinjem da savladavam ovaj divan proizvod, tako da mogu praviti netačnosti i greške. Stručnjaci će ispraviti :-)) Zapravo, šta je LabView?

LabView je razvojno okruženje i platforma za izvršavanje programa napisanih u grafičkom programskom jeziku National Instruments G.

Jednostavno rečeno, LabView je okruženje za kreiranje aplikacija za zadatke prikupljanja, obrade, vizualizacije informacija iz različitih instrumenata, laboratorijskih postavki itd. I za kontrolu tehnoloških procesa i uređaja. Međutim, uz pomoć LabView-a možete kreirati sasvim običan aplikativni softver. Nije mi svrha detaljno opisivati ​​ovaj proizvod i raditi s njim. LabView ima hiljade stranica odlične dokumentacije i stotine knjiga. Internet je pun resursa vezanih za LabView gdje možete pronaći odgovore na sva vaša pitanja.

Svrha članka je da pokaže kako lako i praktično, u poređenju sa tradicionalnim programiranjem, možete kreirati aplikacije za PC i kakvu snagu LabView nosi. (Zapravo, to je diskutabilno, jer u tradicionalnom programiranju, na istom Delphiju, to nije teže uraditi. A što se tiče efikasnosti, teško da je lošije, ako ne i bolje. Ali za ovo je potrebno mnogo duže učiti Delphi. Sve u svemu. brzo i jasno skoro odmah proucio sam par uputstava i napred da ogradim svakakve brojcanike.Tako da je programerima kao pseca peta noga,ali za takve drugove daleko od kompjutera kao sto sam ja to je to.Jednom u pola sat, kada sam prvi put vidio LabView, napravio sam brutalni sistem koristeći tanku ručnu kontrolu navodnjavanja i grijanja za staklenik konoplje. Sa svim vrstama PID kontrolera. Donio sam potenciometre i senzore laboratorijskog stalka koji je bio u našem tehničaru i pokrenuo ovu paklenu jedinicu. I sve je radilo odmah, bez otklanjanja grešaka. Usput, sva oprema hadronskog sudarača radi na LabView, kao i puno naučne opreme. Napomena DI HALT) Na kraju krajeva, većini inženjera elektronike nije programiranje za PC, zar ne? To je ono što pokušavamo popraviti. Kako ne bismo proučavali sferne vakuumske konje, postavili smo se i implementirali jednostavan zadatak. Zadatak je zaista jednostavan, ali na osnovu njega možete razumjeti osnovne principe programiranja u LabView-u. Koristit ćemo LabView verziju 2010. Za ostale verzije, razlike će biti minimalne.

Zadatak
Imamo ploču sa AVR mikrokontrolerom povezanu sa računarom preko RS232. Kontroler je napunjen firmverom, prema kojem kontroler mjeri vrijednost napona na jednom od ADC ulaza, te prenosi ADC kod (od 0 do 1023) do računara putem serijskog kanala. Potrebno je napisati PC program koji će primati tok podataka od ADC-a, prikazati ADC kod, pretvoriti ADC kod u vrijednost napona u voltima, prikazati vrijednost napona u voltima, iscrtati promjenu napona tokom vremena.

Pa, vjerovatno dosta stihova, hajde da počnemo možda!

Dakle, šta nam je potrebno za rad:

  • Zapravo sam LabView. Probnu verziju možete preuzeti sa NI web stranice: http://www.ni.com/trylabview/. Također, piratska verzija se lako progugla. Inače, na rutracker.org, osim ponora piratskih, postoji i Linux verzija za koju se čini da uopće nije potrebna registracija. NI je odlučio upoznati open source?
  • Takođe morate preuzeti NI VISA komponentu. Bez ovog programa, LabView neće "vidjeti" COM port na računaru. VISA sadrži funkcije za rad sa komunikacijskim portovima i još mnogo toga. Možete ga preuzeti sa joule.ni.com. Instalirajte LabView i VISA. Instalacija ovog softvera je standardna, nema nikakve posebne karakteristike.

Prije svega, moramo se uvjeriti da je VISA pronašla COM port u sistemu i da radi ispravno s njim. Ovo možete provjeriti na sljedeći način: pokrenite program Measurement & Automation. Dolazi sa LabView-om. Ako nije instaliran, možete ga instalirati ručno. Na disku (ima ga slika sa LabView-om).

Na lijevoj strani prozora vidimo hardver koji se nalazi u sistemu. Između ostalog, nalazimo i naš COM port. Na desnoj strani nalazi se dugme Open Visa test panel. Pomoću njega možete testirati odabrani uređaj. U slučaju COM porta, tamo možete poslati ili primiti podrazumevani ili proizvoljni niz znakova. Ako je sve u redu sa portom, možete nastaviti direktno na kreiranje našeg programa.

Pokrećemo LabView. U prozoru Getting Started izaberite Blank Vi, što znači novi virtuelni instrument.

Dobijamo nešto ovako:

Pa šta imamo. Radni prostor se sastoji od dva velika panela prednjeg panela i blok dijagrama. Na prednjoj ploči ćemo sastaviti interfejs našeg programa koristeći kontrole sa panela Kontrole. Ovi elementi su ručke nama poznatih varijabilnih otpornika, LED diode, dugmad, pokazivački uređaji, ekran osciloskopa itd. Služe za unos informacija u program i prikaz rezultata izvršenja. Na panelu blok dijagrama, programski kod se nalazi direktno. Ovdje se moramo malo vratiti i objasniti princip programiranja u LabView-u. Mali primjer. Uobičajeno je da se rad na programu počne sa dizajnom interfejsa, a zatim implementacijom algoritma rada na blok dijagramu. Napravimo najjednostavniji program za množenje dva broja. Da bismo to uradili, postavićemo na prednji panel prevlačenjem tri kontrole, recimo elementa dugmeta i numeričkog indikatora za prikaz rezultata.

Interfejs ćemo formirati kako nam srce želi, na primjer ovako:

Ok, sada moramo implementirati stvarno množenje. Idite na panel blok dijagrama i vidite da je za svaku od naših kontrola kreirana odgovarajuća ikona. Najbolje je odmah prebaciti način prikaza u obliku terminala. Dijagram neće biti tako pretrpan. Osim toga u terminalima je vidljiva vrsta podataka s kojima ova ili ona kontrola radi. Da biste to uradili, kliknite desnim tasterom miša na ikonu i poništite opciju Prikaži kao ikonu. Na vrhu ekrana kontrola je u obliku terminala, pri dnu i desno u obliku ikone. Da biste konfigurirali prikaz na blok dijagramu kao terminale prema zadanim postavkama, trebate odabrati stavku menija Alati->Opcije, odabrati Blok dijagram na lijevoj strani i poništiti Postavi terminale prednjeg panela kao ikone. Vrlo korisno za prikaz kontekstne pomoći. Možete ga prikazati kombinacijom Ctrl + H. Ovaj prozor prikazuje informacije o objektu na koji je kursor trenutno prekriven. Mega zgodna stvar.

Sada moramo dodati funkciju množenja blok dijagramu. Desnom tipkom miša kliknite blok dijagram i odaberite funkciju Multiply iz Numeričke palete. Stavimo to na dijagram. Vrijedi napomenuti da LabView ima samo ogroman skup funkcija. Ovo uključuje različitu matematiku, statistiku, analizu signala, PID kontrolu, obradu videa, zvuka i slike. Ne možete sve nabrojati.

Najvažniji koncept u LabView programiranju je koncept DataFlow. Zaključak je sljedeći: Za razliku od imperativnih programskih jezika, gdje se naredbe izvršavaju uzastopnim redoslijedom, u LabView funkcije rade samo ako postoje informacije o svim ulazima funkcije (svaka funkcija ima ulazne i izlazne vrijednosti). Tek tada funkcija implementira svoj algoritam, a rezultat se šalje na izlaz koji može koristiti druga funkcija. Dakle, unutar istog VI, funkcije mogu raditi nezavisno jedna od druge.

Sada, da bismo oživjeli naš primjer, moramo slijediti ovaj koncept i dati funkcijskom ulazu numeričke vrijednosti koje smo postavili kontrolama, te dobiti rezultat iz izlaza i prikazati ga.

Za povezivanje elemenata na blok dijagramu koristite alat Connect Wire sa panela Alati. Odaberite ga i nacrtajte naše veze.

To je sve, možete pokrenuti ovaj glupi program za ciklično izvršavanje i okretati dugmad, promatrajući rezultat množenja.

Kao što vidite, čini se da nema ništa komplikovano. Ali u isto vrijeme, LabView vam omogućava rješavanje problema bilo koje složenosti! Ept, na njemu je napravljen sistem upravljanja TANK! Tako da.

Pa, hajde sada da radimo još zanimljivije stvari, naime, napravit ćemo naš najjednostavniji voltmetar o kojem sam govorio na samom početku.

Dakle, šta treba da radimo. Prvo morate konfigurirati i inicijalizirati serijski port. Započnite beskonačnu petlju. U petlji koristimo funkciju za čitanje sa porta i primanje informacija. Pretvorimo informacije za prikaz na grafikonu, preračunamo ADC kod u vrijednost napona u voltima. Prilikom izlaska iz petlje zatvaramo port.
Dakle, u interfejsu našeg programa neće biti kontrolnih elemenata osim dugmeta Stop, već će biti samo prikaz rezultata, uradićemo ovo: prvo ćemo kreirati blok dijagram, a zatim dodati elemente koji nedostaju u prednju ploču. Iako morate učiniti suprotno! Ali u ovom slučaju, to je zgodnije.

Na panelu blok dijagrama postavljamo element While Loop iz palete Strukture, ovo je naša beskonačna petlja. Zaokružujemo područje okvirom ciklusa, dovoljnim da stane unutar algoritma. U donjem desnom uglu nalazi se crvena tačka, kliknite desnim tasterom miša na nju i izaberite Kreiraj kontrolu. Dugme Stop će se odmah pojaviti na prednjoj ploči. Kada kliknete na njega, naš program će se završiti.

Sada, izvan petlje, moramo postaviti funkcije za inicijalizaciju i zatvaranje porta. Inicijalizacija lijevo, zatvaranje desno. Opet, kliknite desnim tasterom miša i izaberite funkcije Konfigurisanje porta, čitanje i zatvaranje. Ove funkcije se nalaze u paleti Instrument I/O –> Serial. Funkcija čitanja je smještena unutar petlje. Povezujemo izlaze i ulaze funkcija pomoću zavojnice sa žicama. Za funkciju Read, moramo specificirati broj bajtova koje će prihvatiti. Desnom tipkom miša kliknemo na srednji ulaz funkcije Read i izaberemo Kreiraj-> Konstanta, unesemo vrijednost, na primjer 200. U ovoj fazi bi trebalo ispasti kao na snimku ekrana.

Morate kreirati kontrole za funkciju inicijalizacije porta. Dvije su nam sasvim dovoljne - brzina porta i naziv porta. Na isti način kao što smo kreirali konstantu za funkciju čitanja, kreiramo i kontrole. RMB na potrebnim ulazima funkcije inicijalizacije i stavke

Kreiraj->Kontrola.

Zainteresovani smo za dva inputa: Naziv Visa resursa I Baud Rate(zadano 9600). Sada idemo na prednju ploču i dodajmo potrebne komponente, odnosno ekran za crtanje grafikona i oznake za prikaz ADC koda i napona u voltima.
U skladu s tim, ovo su elementi Waveform Chart iz palete Graph i dva Numeric Indicator elementa iz Numeric palete.

Vratimo se na blok dijagram i pomerimo elemente koji su se pojavili unutar petlje. Pri kraju smo! Jedina stvar je da još uvijek trebamo konvertirati niz znakova koji dolaze iz izlaza funkcije Read u format koji će naši indikatori probaviti. I također implementirati najjednostavniju matematiku za prevođenje ADC koda u volte. Ispod su snimci ekrana prednje ploče i blok dijagrama u ovoj fazi:

Da bismo pretvorili niz, koristit ćemo funkciju Scan from string iz palete String. Stavili smo ga unutar petlje. Sada matematika. Da biste ADC kod pretvorili u vrijednost napona u voltima, trebate pomnožiti kod sa vrijednošću referentnog napona (u mom slučaju to je pet volti) i rezultujuću vrijednost podijeliti sa 1023 (pošto ADC ima 10-bitni kapacitet). Potrebne funkcije množenja i dijeljenja, kao i konstante (5 i 1023) bit će smještene u petlju. Neću praviti screenshot svake veze, jer već postoje dofiga slike. Dat ću završni ekran svih veza. Tamo je sve krajnje jednostavno.

Mislim da je sve jasno, ako imate pitanja pitajte u komentarima. Hajde da to zajedno shvatimo :-))) U međuvremenu, program je spreman.

Pređimo na naš interfejs i malo podesimo graf. Odaberite donju vrijednost na Y osi i postavite je na 0. Odaberite gornju vrijednost i postavite je na 5. Dakle, naša skala na Y osi je u rasponu od 0-5 volti. Pa, odabiremo COM port, unosimo tečaj, pokrećemo naš program pomoću gumba sa strelicom i nasilno uvijamo otpornik na ploči, dok promatramo rezultat našeg rada na ekranu. Kliknite na dugme Stop da zaustavite program.

Kao što vidite, sve je prilično jednostavno. Ovaj primjer je samo mali dio svih mogućnosti LabView-a. Ako ovaj članak nekome pomogne, bit će mi drago. Samo ne udarajte jako u komentarima, nisam profesionalac. Još jedan mali trik. Ako dijagram izgleda kao Cthulhu, možete pokušati koristiti dugme CleanUp Diagram. To će dovesti dijagram u više-manje božanski oblik, ali ga treba koristiti oprezno. Evo rezultata njenog rada

Također možete kombinirati dijelove u funkcionalne blokove kako ne bi zatrpali krug.

Zdravo kolege!

U relativno kratkom članku, želio bih govoriti o programskom jeziku LabVIEW. Ovaj vrlo zanimljiv proizvod nažalost ne uživa široku popularnost, a ja bih želio donekle popuniti postojeću prazninu.

Šta je LabVIEW?

LabVIEW je jedan od vodećih proizvoda kompanije National Instruments. Prije svega, treba napomenuti da je LabVIEW skraćenica koja označava Lab govorništvo V virtuelno I instrumentacija E inženjering W orkbench. Već u nazivu se može pratiti orijentacija na laboratorijska istraživanja, mjerenja i prikupljanje podataka. Zaista, izgradnja SCADA sistema u LabVIEW-u je nešto lakša od upotrebe "tradicionalnih" razvojnih alata. U ovom članku želim pokazati da je mogući opseg LabVIEW-a nešto širi. Ovo je suštinski drugačiji programski jezik, ili ako želite čitavu "filozofiju" programiranja. Funkcionalni jezik koji vas tjera da razmišljate drugačije i ponekad pruža apsolutno fantastične mogućnosti za programera. Da li je LabVIEW programski jezik uopšte? Ovo je kontroverzno pitanje - ovdje nema standarda, kao, na primjer, ANSI C. U uskim krugovima programera kažemo da pišemo na "G" jeziku. Formalno, takav jezik ne postoji, ali u tome je ljepota ovog razvojnog alata: iz verzije u verziju, sve više i više novih konstrukcija se uvodi u jezik. Teško je zamisliti da će se u sljedećoj reinkarnaciji C-a, na primjer, pojaviti nova struktura for-petlje. A u LabVIEW-u je to sasvim moguće.
Međutim, treba napomenuti da je LabVIEW uključen u TIOBE rang listu programskih jezika, trenutno zauzima trideseto mjesto - negdje između Prologa i Fortrana.

NI LabVIEW - istorija stvaranja

National Instruments su 1976. godine osnovala tri osnivača - Jeff Kodosky, James Truchard i Bill Nowlin u američkom gradu Austinu u Teksasu. Osnovna specijalizacija kompanije bili su alati za merenje i automatizaciju proizvodnje.
Prva verzija LabVIEW-a objavljena je deset godina nakon osnivanja kompanije - 1986. (bila je to verzija za Apple Mac). NI inženjeri su odlučili da izazovu "tradicionalne" programske jezike i stvorili su potpuno grafičko razvojno okruženje. Jeff je postao glavni ideolog grafičkog pristupa. Nove verzije izlazile su iz godine u godinu. Prva verzija za više platformi (uključujući Windows) bila je verzija 3 objavljena 1993. godine. Trenutna verzija je 8.6, koja je objavljena prošle godine.

Sjedište kompanije je i danas u Austinu. Danas kompanija zapošljava skoro četiri hiljade ljudi, a kancelarije se nalaze u skoro četrdeset zemalja (postoji i kancelarija u Rusiji)

Moj uvod u LabVIEW

Moje upoznavanje sa LabVIEW dogodilo se prije skoro deset godina. Počeo sam da radim po novom ugovoru, a moj tadašnji šef mi je dao pakovanje CD-a sa natpisom "sad ćeš raditi na ovome". Instalirao sam LabVIEW (bila je to peta verzija), i nakon što sam se malo poigravao, rekao sam da se na OVOM ništa ozbiljno ne može uraditi, bolje je koristiti Delphi “na starinski način”... Na šta mi je on rekao - jednostavno nisi probao. Radite nedelju ili dve. Nakon nekog vremena, shvatit ću da neću moći pisati ni na čemu drugom osim na LabVIEW-u. Jednostavno sam se zaljubila u ovaj jezik, iako to nije bila "ljubav na prvi pogled".

Uopšteno govoreći, prilično je teško uporediti grafičke i tekstualne programske jezike. Ovo je, možda, poređenje iz kategorije "PC" protiv "MAC" ili "Windows" protiv "Linuxa" - možete se raspravljati koliko god želite, ali argument je apsolutno besmislen - svaki sistem ima pravo na postojanje i svaki će imati i pristalice i protivnike, osim toga, svaki proizvod ima svoju nišu. LabVIEW je samo alat, iako vrlo fleksibilan.

Dakle, šta je LabVIEW?

LabVIEW je multi-platformsko okruženje za razvoj grafičkih aplikacija. LabVIEW je u osnovi univerzalni programski jezik. I iako je ovaj proizvod ponekad usko povezan sa hardverom National Instruments, on ipak nije povezan sa određenom mašinom. Postoje verzije za Windows, Linux, MacOS. Izvorni kod je prenosiv, a programi će izgledati isto na svim sistemima. Kod koji generiše LabVIEW takođe se može pokrenuti na Windows Mobile ili PalmOS-u (da budemo pošteni, podrška za PalmOS je odbačena, iako je sam Palm ovde više kriv). Ovaj jezik se može uspešno koristiti za kreiranje velikih sistema, za obradu tekstova, slika i rad sa bazama podataka.

LabVIEW je jezik veoma visokog nivoa. Međutim, ništa vas ne sprečava da uključite module "niskog nivoa" u LabVIEW programe. Čak i ako želite koristiti asemblerske umetke - to je također moguće, samo trebate generirati DLL i ubaciti pozive u kod. S druge strane, jezik visokog nivoa vam omogućava da lako izvodite vrlo netrivijalne operacije sa podacima, koji u redovnom jeziku mogu zauzeti mnogo redova (ako ne i desetine redova) koda. Međutim, radi poštenja, treba napomenuti da neke operacije jezika niskog nivoa (na primjer, rad s pokazivačima) nije tako lako implementirati u LabVIEW zbog njegovog "visokog nivoa". Naravno, jezik LabVIEW uključuje osnovne kontrolne konstrukcije koje imaju analoge u "tradicionalnim" jezicima:

  • varijable (lokalne ili globalne)
  • grananje (struktura slučaja)
  • For - petlje sa i bez provjere završetka.
  • while petlje
  • Operacije grupisanja.

LabVIEW - programske i jezičke karakteristike

U LabVIEW-u, softverski moduli koji se razvijaju nazivaju se "Virtualni instrumenti" (Virtualni instrumenti) ili jednostavno VI. Oni se čuvaju u *.vi fajlovima. VI su gradivni blokovi koji čine LabVIEW program. Svaki LabVIEW program sadrži najmanje jedan VI. Što se tiče jezika C, možete sasvim sigurno povući analogiju sa funkcijom, s jedinom razlikom što je u LabVIEW-u jedna funkcija sadržana u jednom fajlu (možete kreirati i biblioteke alata). Podrazumeva se da se jedan VI može pozvati iz drugog VI. U osnovi svaki VI se sastoji od dva dijela - blok dijagrama i prednjeg panela. Blok dijagram je programski kod (tačnije, vizuelni grafički prikaz koda), dok je prednji panel interfejs. Evo kako izgleda klasičan primjer Hello, World!:

U srcu LabVIEW-a je paradigma protoka podataka. U gornjem primjeru, konstanta i terminal indikatora su povezani linijom. Ova linija se zove Žica. Možete to nazvati "žicom". Žice prenose podatke od jednog elementa do drugog. Cijeli ovaj koncept se zove protok podataka. Suština blok dijagrama su čvorovi (čvorovi), izlazi nekih čvorova su povezani sa ulazima drugih čvorova. Čvor će početi da se izvršava tek kada stignu svi podaci potrebni za rad. Na dijagramu iznad postoje dva čvora. Jedna od njih je konstanta. Ovaj čvor je samodovoljan - počinje da se izvršava odmah. Drugi čvor je indikator. Prikazaće podatke koje konstanta prosledi (ali ne odmah, već čim podaci stignu iz konstante).

Evo malo složenijeg primjera: sabiranje i množenje dva broja. Na tradicionalnim jezicima bismo napisali nešto slično

int a, b, sum, mul;
//...
zbroj = a + b;
mul = a*b;

Evo kako to izgleda u LabVIEW-u:

Imajte na umu da se sabiranje i množenje automatski izvode paralelno. Na mašini sa dva procesora, oba procesora će biti automatski omogućena.

A evo kako izgledaju while / for petlje i if / then / else struktura:

Kao što je već spomenuto, svi elementi će se izvršavati paralelno. Ne morate razmišljati o tome kako paralelizirati zadatak u više niti koje se mogu izvoditi paralelno na više procesora. U novijim verzijama možete čak i eksplicitno odrediti na kojem od procesora treba izvršiti ovu ili onu dok-petlju. Sada postoje dodaci za tekstualne jezike koji vam omogućavaju da lako postignete podršku za višeprocesorske sisteme, ali to vjerovatno nigdje nije implementirano tako jednostavno kao u LabVIEW-u. (pa, ipak sam skliznuo u poređenje sa jezicima teksta). Ako već govorimo o multithreadingu, onda treba napomenuti i da programer ima širok izbor alata za sinkronizaciju niti - semafori, redovi, susreti itd.

LabVIEW uključuje bogat skup elemenata za izgradnju korisničkih interfejsa. Interfejsi u Delphiju su brzo "napadnuti" na šta, au LabVIEW-u je ovaj proces još brži.

Standardna isporuka LabVIEW-a uključuje i blokove za rad sa ini fajlovima, registrator, funkcije za rad sa binarnim i test fajlovima, matematičke funkcije, moćne alate za crtanje (a gde bez toga u laboratoriji), a pored već pomenute mogućnosti od DLL poziva, LabVIEW vam omogućava rad sa ActiveX komponentama i .net-om. Počevši od osme verzije, podrška za klase je dodana u LabVIEW - jezik je postao objektno orijentisan. Implementirana podrška se ne može nazvati potpunom, ali glavne karakteristike objektno orijentiranih jezika - nasljeđivanje i polimorfizam su prisutne. Takođe, funkcionalnost jezika se može proširiti dodatnim modulima, kao što je NI Vision Toolkit – za obradu slike i mašinski vid i dr. A uz pomoć modula Application Builder, možete generirati izvršnu exe datoteku. Koristeći Internet Toolkit, možete raditi sa ftp serverima, koristeći Database Connectivity Toolkit - sa bazama podataka itd.

Često se može čuti mišljenje da je grafički kod loše čitljiv. Zaista, iz navike, obilje ikona i dirigenta je pomalo šokantno. Takođe, programeri početnici kreiraju "sheet" programe i "špagete" programe. Međutim, iskusni LabVIEW programer nikada neće kreirati dijagrame veće od veličine ekrana, čak i ako se program sastoji od stotina modula. Dobro osmišljen program je zapravo "samodokumentirajući" jer je već zasnovan na grafičkom prikazu.

Prilično dugo, dok sam programirao u LabVIEW-u, bio sam potpuno uvjeren da je LabVIEW interpreter i da se blok dijagrami konstantno tumače od strane kernela. Nakon razgovora sa NI inženjerima, pokazalo se da to nije slučaj. LabVIEW je kompajler (kvalitet generisanja koda, međutim, ostavlja mnogo da se poželi). Ali kompilacija se odvija "u hodu" - u svakom trenutku tokom razvoja, program je uvijek spreman za pokretanje. Takođe, LabVIEW kod se može kompajlirati u potpunu izvršnu datoteku koja se može pokrenuti na računaru bez instaliranog LabVIEW-a (iako zahteva LabVIEW Run-Time). Također možete napraviti instalacioni paket-instalater, pomoćni programi treće strane kao što je InstallShield nisu potrebni.

Dalji i detaljniji opis karakteristika paketa je izvan okvira ovog članka, ali samo predlažem da ga isprobate (linkovi su dati ispod). Kao što su velikani rekli, "... jedini način da naučite novi programski jezik je pisanje programa na njemu." Pa, iskusni programeri će moći ekstrapolirati stečeno znanje na svoje potrebe.



NI LabVIEW - Streaming okruženje grafičko programiranje. Prilikom pisanja programa u LabVIEW, korisnik specificira redoslijed operacija za transformaciju toka podataka koristeći blok dijagram. Na blok dijagramu su postavljene slike funkcionalnih čvorova, povezanih provodnicima, duž kojih tok podataka prolazi od jednog čvora do drugog. Takođe, LabVIEW ima niz alata koji krše paradigmu stream programiranja, međutim, omogućavajući u velikoj mjeri proširiti funkcionalnost aplikacija razvijenih u njemu.

Šta je tehnika programiranja

Termin "tehnika programiranja" obuhvata izbor različitih programskih jezika, računarskih modela, nivoa apstrakcije, metoda rada sa kodom i algoritama za predstavljanje. Tokom godina, National Instruments je evoluirao LabVIEW funkcionalnost kako bi podržao više tehnika programiranja.


Možete predstaviti kod napisan različitim tehnikama na blok dijagramu, kao i striming G koda, a LabVIEW će sastaviti instrukcije za odgovarajuće ciljne uređaje (normalne desktop računare, RTOS platforme, FPGA, mobilnih uređaja, ARM-bazirani ugrađeni uređaji)

Fig.1. Širok spektar platformi i tehnika programiranja u LabVIEW-u



Prijenos podataka između sekcija koda napisanih različitim pristupima organiziran je u LabVIEW-u prilično jednostavno - tok podataka je veza između različitih računarskih modela i jezika. U jeziku G, unos/izlaz informacija se vrši korišćenjem specijalizovanog korisničkog interfejsa (prednja ploča), mrežnih interfejsa, biblioteka za analizu, baza podataka i drugih alata.

G Programiranje
Pojava stream programiranja 1986. bila je zaista inovativna. Redoslijed izvođenja operacija s podacima u G jeziku nije određen redoslijedom kojim se pojavljuju, već prisustvom podataka na ulazima ovih čvorova. Naredbe koje nisu povezane protokom podataka izvode se paralelno proizvoljnim redoslijedom.

Čvorovi dijagrama su jednostavne instrukcije ili njihovi skupovi - funkcije, virtuelni instrumenti (VI). Izvršavanje instrukcija čvora događa se tek nakon što se podaci pojave na svim ulaznim terminalima čvora. Nakon izvršenja instrukcija, njen rezultat se prenosi preko izlaznih terminala čvora na ulaze sljedećih čvorova.


Fig.2. U ovom primjeru, A i B se zbrajaju, rezultirajuća suma se množi sa C, a rezultat se prikazuje


Na slici 2 prikazan je primjer matematičkog izraza u jeziku G. Dijagram se sastoji od dva čvora (sabiranje i množenje) i tri ulaza (A, B i C). Prvo se sabiraju A i B. Kod čvora množenja se ne izvršava sve dok oba njegova ulazna terminala ne prime podatke, pa stoga čeka rezultat čvora sabiranja. Čim rezultat sabiranja stigne na prvi ulaz čvora množenja, izvršit će se njegov kod (A+B)*C.

Iako vam jezik G omogućava da eksplicitno navedete tip podataka, jedna od značajnih razlika ovog jezika od drugih je prisustvo vodiča koji obavljaju funkcije varijabli. Umjesto prosljeđivanja varijabli između funkcija, prijenos podataka je definiran žičanim vezama. S druge strane, G jezik također ima standardne konstrukcije za druge jezike, kao što su uvjetne petlje, kontra petlje, strukture izbora, povratni pozivi i logičke funkcije.

Interaktivno podešavanje kao osnova programiranja
Godine 2003. National Instruments je objavio NI LabVIEW 7 Express, koji je bio pionir Express VI tehnologije, tehnologije dizajnirane da dodatno pojednostavi proces razvoja aplikativnih algoritama. Za razliku od konvencionalnih VI, Express VI su apstraktne jezičke strukture koje implementiraju tehniku ​​programiranja zasnovanu na interaktivnoj konfiguraciji komponenti.


Fig.3. Express VI paleta, postavljanje Express VI na blok dijagram i prikazivanje Express VI u Thumbnail modu


Ekspresni VP možete razlikovati od redovnog VP po velikoj plavoj ikoni. Kada prvi put postavite Express VI na blok dijagram, pojavljuje se odgovarajući dijalog za podešavanje. Nakon što je prilagođavanje završeno, LabVIEW automatski generiše kod na osnovu generisane konfiguracije Express VI. Možete pogledati i urediti ovaj kod ili promijeniti postavke Express VI tako što ćete ponovo otvoriti dijaloški okvir dvostrukim klikom na ikonu Express VI.

Kao primjer, razmotrite problem unosa podataka za njihovu programsku analizu. LabVIEW olakšava interakciju sa različitim hardverom, jer uključuje drajvere za hiljade uređaja. Zadatak prikupljanja podataka može se implementirati ne samo sa dizajnom nekoliko VI, već i sa jednostavnijom opcijom - ekspresnim VI.

Jednostavno odredite kanale za čitanje/pisanje u postavkama DAQ Assistance Express VI i konfigurirajte parametre kao što su brzina uzorkovanja, skaliranje, tajming i okidači. Osim toga, Express VI pruža mogućnost prethodnog prikupljanja podataka sa uređaja kako bi se provjerilo da li su odabrane postavke prikupljanja podataka ispravne.


Fig.4. DAQ Assistant Express VI uvelike pojednostavljuje podešavanje vremena okidanja i parametara kanala



Fig.5. G kod ekvivalentan DAQ Assistant Express VI


Uprkos svim svojim prednostima, Express VI-ovi ne pružaju kontrolu niskog nivoa i konfiguraciju režima rada uređaja, koji se implementira pomoću konvencionalnih VI-ova. Korisnici koji su novi u LabVIEW-u mogu koristiti ugrađenu funkciju koja pretvara prethodno konfigurirani Express VI u niz regularnih VI-ova. Ovo može pomoći početnicima da nauče niskorazinski kod. Dovoljno je odabrati liniju Open Front Panel in kontekstni meni express VI na blok dijagramu. Imajte na umu da se bilo koji Express VI može zamijeniti kombinacijom nekoliko regularnih VI-ova, a LabVIEW Professional Development System izdanje vam omogućava da kreirate vlastite Express VI-ove.

Skript support.m fajlovi
Sa LabVIEW MathScript RT modulom, možete uvoziti, uređivati ​​i izvršavati *.m datoteke skripte koje se tradicionalno koriste u matematičkom modeliranju i analizi, obradi signala i složenim matematičkim proračunima. Možete ih koristiti sa G kodom za kreiranje samostalnih aplikacija za desktop ili hardver u realnom vremenu.

Postoji nekoliko načina rada sa MathScript-om u LabVIEW-u. Za interaktivni rad sa skriptama, koristite prozor MathScript prikazan na Sl. 6


Fig.6. Interaktivni razvoj tekstualnih algoritama u prozoru MathScript


Da biste koristili *.m skripte u LabVIEW aplikaciji i kombinirali snagu tekstualnog i grafičkog programiranja, koristite čvor MathScript prikazan na slici 7. Korišćenje MathScript čvora omogućava vam da ugradite tekstualne algoritme u VI kod i koristite grafičke mogućnosti interfejsa za kontrolu parametara skripte (dugmad, klizači, kontrole, grafike i drugi elementi).


Fig.7. Čvor MathScript olakšava korištenje scripts.m u G kodu


LabVIEW MathScript RT modul ima vlastiti *.m skriptni mehanizam i ne zahtijeva instalaciju treće strane softver. Korišćenje čvora MathScript vam omogućava da kombinujete prednosti tekstualnih algoritama u jednoj aplikaciji, visok stepen integracija LabVIEW-a sa hardverom, interaktivnim korisničkim interfejsom i drugim tehnikama programiranja o kojima se govori u ovom članku.

Objektno orijentirano programiranje
Objektno orijentirano programiranje jedna je od najpopularnijih vrsta programiranja. Ovaj pristup vam omogućava da kombinujete mnoge različite komponente u programu u klase pojedinačnih objekata. Definicija klase sadrži karakteristike objekta i opis radnji koje objekt može izvršiti, a koje se obično nazivaju svojstva i metode. Klase mogu imati djecu koja nasljeđuju svojstva i metode i mogu ih nadjačati ili dodati nove.


Fig.8. Objektno orijentirani pristup je baziran na klasama (primjer na slici) i pripadajućim svojstvima i funkcijama VI


Upotreba OOP-a u LabVIEW-u je moguća od verzije 8.2

Glavne prednosti ovog pristupa su:

  • . Enkapsulacija: Enkapsulacija je kombinacija podataka i metoda u klasi tako da im se može pristupiti samo preko VI-ova koji su članovi klase. Ovaj pristup vam omogućava da izolujete delove koda i osigurate da njihova promena ne utiče na kod ostatka programa.
  • . Nasljeđivanje: Nasljeđivanje omogućava da se postojeće klase koriste kao osnova za opisivanje novih klasa. Kada se kreira nova klasa, ona nasljeđuje tipove podataka i VI članove klase i tako implementira svojstva i metode roditeljske klase. Također je moguće dodati prilagođene VI-ove za promjenu funkcionalnosti klase.
  • . Dinamičko dispečiranje: Metode se mogu definirati korištenjem nekoliko VI-ova istog imena u hijerarhiji klasa. Ova metoda se zove dinamičko dispečiranje, jer se odluka o tome koji VI će biti pozvan donosi u trenutku izvršavanja programa.
Ove OOP karakteristike vam omogućavaju da učinite kod razumljivijim i skalabilnijim, kao i, ako je potrebno, ograničite pristup VI.

Modeliranje i simulacija
Modeliranje i simulacija fizičkih sistema je popularan pristup razvoju sistema koji se opisuju diferencijalnim jednačinama. Proučavanje modela omogućava otkrivanje karakteristika dinamičkih sistema i razvoj upravljačke jedinice sa potrebnim ponašanjem.

Slika 9 prikazuje Control & Simulation Loop, koja rešava diferencijalnu jednačinu koristeći algoritame ugrađene u LabVIEW u realnom vremenu tokom određenog vremenskog perioda. Ovaj pristup programiranju je takođe baziran na protoku podataka, poput G jezika, ali se obično naziva protok signala. Kao što je prikazano na slici 9, možete kombinovati tehnike matematičkog modeliranja sa drugim tehnikama kao što su G tokovi podataka i MathScript čvor.


Rice. 9. Simulacijski dijagram prikazuje širenje signala, I/O hardver i MathScript čvor.


Kontrolna i simulacijska petlja podržava funkcije koje se koriste za implementaciju linearnih modela. stacionarni sistemi na uređajima sa instaliranim operativnim sistemom u realnom vremenu. Možete koristiti ove funkcije za definiranje diskretnih modela specificiranjem prijenosna funkcija, pol-nula dijagrami i sistemi diferencijalnih jednadžbi. Alati za analizu vremenskog i frekventnog domena kao što su odziv u vremenskom koraku ili funkcije Bode plot-a omogućavaju vam da interaktivno analizirate ponašanje otvorenih i zatvorenih kontrolnih/simulacijskih petlji. Također možete koristiti ugrađene alate za konverziju modela razvijene u programskom okruženju The MathWorks, Inc. Simulink®, koji će im omogućiti da se koriste u LabVIEW okruženju. Ovi dinamički sistemi se mogu instalirati na uređaje sa operativnim sistemom u realnom vremenu bez prolaska kroz različite korake konverzije programa zahvaljujući funkcionalnosti biblioteke LabVIEW Real-Time Module, koja je odlična za razvoj prototipova sistema upravljanja i aplikacija za simulaciju.

Dijagrami stanja
NI LabVIEW Statechart Module pruža programeru mogućnost da opiše funkcionalnost sistema na najapstraktniji mogući način koristeći grafikone stanja. Integracija LabVIEW koda u stanja dijagrama omogućava vam da kreirate virtuelnu radnu specifikaciju za vašu aplikaciju. NI LabVIEW Statechart Module dodaje hijerarhijsko ugniježđenje i paralelno izvršavanje konvencionalnoj funkcionalnosti grafikona stanja. Treba napomenuti da dijagrami stanja omogućavaju da opišete reakciju sistema na događaje, što ih čini veoma pogodnim alatom za razvoj reaktivnih sistema, kao što su ugrađeni uređaji, kontrolni sistemi i složena korisnička sučelja.


Rice. 10. Modul LabVIEW Statechart opisuje sistem zasnovan na grafikonu stanja.


Često se grafikoni stanja koriste za podelu aplikacije na podsisteme, kao što su prikupljanje podataka, izlaz podataka, mrežna komunikacija, evidentiranje podataka i upravljanje korisničkim interfejsom. U ovom slučaju, dijagrami stanja određuju koje informacije se prenose između stanja (podsistema) i kojim redoslijedom funkcionišu.

Arhitektura aplikacije zasnovana na dijagramima stanja omogućava vam da efikasnije razvijate kompleks softverski sistemi, posebno sistemi vođeni događajima kao što su dinamički sistemski kontroleri, složeni korisnička sučelja i digitalnih komunikacijskih protokola.

VHDL za FPGA
LabVIEW FPGA modul vam omogućava da koristite G jezik za pisanje koda za FPGA. Međutim, kao i kod drugih razvojnih tehnika, možete koristiti unaprijed napisani kod ili jednostavno imati izbor načina na koji se program implementira. Većina FPGA je programirana korištenjem VHDL tekstualnog programskog jezika toka. Umjesto ponovnog pisanja postojećih G IP blokova, možete uvesti VHDL kod koristeći IP (CLIP) čvor na razini komponente. Obično vam je potrebna CLIP XML datoteka da biste postavili sučelje između elemenata blok dijagrama, ali LabVIEW obezbjeđuje CLIP Import Wizard da to uradi automatski. On navodi ulaze i izlaze IP bloka, koji se mišem mogu prevući na blok dijagram i koristiti u aplikaciji, kao što je prikazano na Sl. jedanaest.


Rice. jedanaest. CLIP čvor.


Pošto NI koristi Xilinix FPGA i Xilinx softverski alat u LabVIEW FPGA modulu, možete koristiti Xilinx Core Generator za kreiranje kompatibilnog jezgra. Također možete koristiti Xilinx Embedded Development Kit za kreiranje bilo kojeg softverskog mikroprocesora. I na kraju, mnogi programeri trećih strana nude Razne vrste IP blokovi za upravljanje magistralom, obradu signala i specifične jezgre.

Integracija C-like koda
Možete koristiti sekvencijalni tekstualni kod u VI-ovima blok dijagrama na nekoliko načina. Prvi način je čvor Formule, koji podržava sintaksu nalik C, sa definicijama varijabli i tačkom i zarezom na kraju redaka.

Inline C čvor je sličan čvoru Formule i pruža dodatne funkcije programiranje niskog nivoa i podrška datotekama zaglavlja bez dodatnih troškova poziva procedura. Možete koristiti Inline C čvor da ugradite bilo koji C kod, uključujući naredbe #defines koji su sintaktički zatvoreni u zagradama u C kodu.

Interakcija sa izvršnim fajlovima
Prilikom programiranja u LabVIEW okruženju, često je potrebno pristupiti kompajliranim datotekama i bibliotekama iz aplikacije napisane u LabVIEW okruženju za ponovo koristiti algoritmi prethodno razvijeni u drugim okruženjima. Također, prilikom kreiranja projekta potrebno je pristupiti aplikacijama napisanim na LabVIEW jeziku iz drugih aplikacija.

Da bi riješio ove probleme, LabVIEW nudi širok spektar različitih alata. Prvo, LabVIEW može pozvati DLL funkcije kao i koristiti ActiveX i .NET interfejse.

Drugo, aplikacija napisana u LabVIEW jeziku može pružiti svoju funkcionalnost drugoj aplikaciji kao DLL ili koristeći ActiveX alate.

U slučaju da jesi izvor C koji želite da koristite u svojoj LabVIEW aplikaciji, možete kompajlirati DLL i uključiti ga pomoću čvora Call Library Function. Na primjer, možete organizirati paralelno računanje koristeći algoritme napisane u C, dok će program napisan u LabVIEW upravljati paralelno pokrenutim nitima. Da bi se pojednostavio rad sa eksternim bibliotekama, LabVIEW ima čarobnjak za uvoz deljene biblioteke koji vam omogućava da automatski kreirate ili ažurirate omot za pozivanje odgovarajućih biblioteka (Windows . dll fajl, Mac OS .framework fajl ili Linux .so fajl).

Također, koristeći System Exec.vi, možete koristiti sučelje komandna linija operativni sistem.

Kombinacija nekoliko programskih tehnika u jednom razvojnom okruženju omogućava ponovnu upotrebu algoritama razvijenih na drugim jezicima. Osim toga, programer može kombinirati operacije visokog i niskog nivoa u jednoj aplikaciji, čineći kod fleksibilnijim i vizualnijim. Različiti nivoi apstrakcije omogućavaju vizualizaciju složenih algoritama uz održavanje kontrole aplikacija i hardvera na niskom nivou. Uz čvrstu hardversku integraciju, možete koristiti oba pristupa za obradu signala na platformama sa višejezgarnim procesorima, FPGA i ugrađenim procesorima.

Problemi obično imaju više rješenja, a programsko okruženje LabVIEW je dovoljno fleksibilno da vam omogući da odaberete metodu rješenja koja vam najbolje odgovara.

Simulink® je registrovani zaštitni znak kompanije The MathWorks, Inc.

ARM, Keil i µVision su zaštitni znaci i registrovani zaštitni znaci ARM Ltd ili njegovih podružnica.



Učitavanje...
Top