LabVIEW B. Transformarea unui proiect ntr-un instrument virtual LabVIEW C. Tehnici de tratare a erorilor D. Arhitecturi de programare LabVIEW A. Planificarea i proiectarea aplicaiilor LabVIEW ETAPE Definirea cerinelor Proiectarea Dezvoltarea codurilor Testarea TOP - DOWN BOTTOM - UP A. Planificarea i proiectarea aplicaiilor LabVIEW Procesul de dezvoltare a unei aplicaii LabVIEW Definirea proiectului Proiectarea organigramei generale Implementarea VI-urilor Testarea subVI- urilor Integrarea subVI- urilor n proiect Testarea i elaborarea produsului final Feedback din partea clientului TOP - DOWN BOTTOM - UP A. Planificarea i proiectarea aplicaiilor LabVIEW Elaborarea organigramei generale a proiectului contribuie la vizualizarea modului de funcionare global a programului; stabilete ierarhia general n cadrul proiectului; elaborat corespunztor nc de la nceput, poate economisi din timpul alocat dezvoltrii aplicaiei. A. Planificarea i proiectarea aplicaiilor LabVIEW Recomandri: Definire cu precizie a cerinelor sistemului; Determinare clar a ateptrilor clientului (utilizatorul); Documentare asupra operaiilor pe care trebuie s le realizeze aplicaia; Sistem deschis - permite viitoare modificri sau adugri. B. Procesul de implementare Dup realizarea procesului de planificare, are loc implementarea aplicaiei, prin dezvoltarea de sub VI-uri ce corespund organigramei generale. Definirea clar a ierarhiilor n cadrul cerinelor aplicaiei Modularizarea aplicaiei (utilizarea subVI-urilor): Permite testarea separat a diverselor pri ale aplicaiei i combinarea lor ulterioar; Avantaj fa de varianta elaborrii aplicaiei dintr-o singur diagram bloc, n care, pentru testare, este nevoie de dezvoltarea ntregii aplicaii; la acest moment poate fi extrem de dificil s se identifice i corecteze eventualele probleme ce pot aprea n funcionare; Permite identificarea facil a eventualelor greeli n modulele de programe i corectarea lor nainte de a investi timp n implementarea lor; Ajut la meninerea controlului asupra codului surs i asupra stadiului proiectului n orice moment; Permite implementarea ulterioar, mult mai facil, a eventualelor modificri/ actualizri/ mbuntiri ale programului. C. Tehnici de tratare a erorilor Trecerea informaiei ntre funcii i subVI-uri cu ajutorul clustere-lor error in i error out; Clusterele de eroare conin trei tipuri de informaii: boolean: indic starea valoarea TRUE pentru o eroare; numeric: indic numrul erorii; caracter (string): afieaz care funcie sau subVI a generat eroarea. Pentru extragerea acestor categorii de informaii se poate utiliza una din funciile Unbundle sau Unbundle By Name (din paleta de funcii, meniul Cluster). Exemplu de utilizare a conceptelor error in / error out: Fiierul I/O al VI-ului i funciile asociate utilizeaz clusterele de eroare pentru a trece informaia de la o operaie la alta. Pentru anunarea utilizatorului despre condiiile de apariie a erorilor se pot utiliza opiunile din meniul Programming / Dialog & User Interface. C. Tehnici de tratare a erorilor Simple Error Handler Preia eroarea n cluster sau valoarea codului erorii i, n cazul n care apare o eroare, deschide o fereastr de dialog care descrie eroarea i prezint posibilele motive ale apariiei acesteia. Se poate modifica tipul ferestrei de dialog cu urmtoarele variante: afiarea ferestrei de dialog; neafiarea ferestrei de dialog; afiarea ferestrei de dialog cu posibilitatea din partea utilizatorului de a alege s continue sau s opreasc rularea VI-ului. C. Tehnici de tratare a erorilor General Error Handler accept eroarea n cluster sau valoarea codului erorii i, n cazul n care apare o eroare, deschide o fereastr de dialog care descrie eroarea i prezint posibilele motive ale apariiei acesteia; n plus, se pot stabili liste cu excepii de eroare, astfel nct erorile menionate n aceste liste sunt terse sau dimpotriv, prezentate, n momentul n care ele apar. Aceast opiune se poate folosi i pentru a aduga erori n tabelul de descriere a erorilor interne, altele dect cele prevzute de LabVIEW. C. Tehnici de tratare a erorilor Merge Errors VI combin mai multe clustere de eroare n unul singur; se utilizeaz n cazul n care exist mai multe succesiuni de operaii care ruleaz n paralel, fiecare operaie avnd clusterul de eroare propriu; Aceast opiune analizeaz clusterele de eroare de la intrare sau tablourile (array) cu clustere de eroare i afieaz, la ieire, prima eroare identificat. Dac nu apar erori, LabVIEW returneaz primul mesaj de atenionare, codul de eroare avnd valoare pozitiv. n caz contrar, nu se returneaz nici o eroare. C. Tehnici de tratare a erorilor Includerea comenzilor de tratare a erorilor n aplicaii Este util n cazul n care o aplicaie ampl este divizat n mai multe subVI-uri, pentru a prentmina rularea unui subVI n cazul n care apare o eroare. n acest caz, cluster-ul de eroare se poate conecta la o structur Case, pentru controlul cazurilor de Eroare i, respectiv, Non Erorare. Aa cum se prezint n exemplul urmtor, codul ce de dorete a rula se plaseaz n fereastra No Error a structurii Case, apoi se definete valoarea error out. C. Tehnici de tratare a erorilor Exemplu: C. Tehnici de tratare a erorilor Aplicaie: Dezvoltarea unui VI care: genereaz o funcie sinus afectat de zgomot, calculeaz caracteristica n frecven a acesteia i reprezint grafic funcia n domeniul timpului i n domeniul frecvenei. VI-ul include clustere de eroare pentru monitorizarea corespunztoare a condiiilor de apariie a erorilor. Front panel Block diagram D. Arhitecturi de programare LabVIEW Simple General Parallel loops Multiple cases State Machine D. Arhitecturi de programare LabVIEW Arhitectura simpl - Simple VI Se utilizeaz pentru aplicaii reduse, simple, de exemplu: calcule, msurtori rapide, afiarea de rezultate sau nregistrarea lor pe disc; De obicei nu necesit o aciune de start/ stop din partea utilizatorului, putnd fi iniiat la simpla apsare a butonului Run; Pe lng utilizarea n aplicaii simple, aceast arhitectur se utilizeaz pentru componentele funcionale ale aplicaiilor mai complexe; Simple VI se pot converti n subVI-uri, folosite ulterior ca module n aplicaii ample. Exemplu: conversia din grade Celsius n grade Faranheit VI-ul realizeaz o singur operaie conversia din grade Celsius n grade Faranheit poate fi ns folosit n alte aplicaii n care este nevoie de aceast conversie, fr a fi nevoie de scrierea ecuaiei asociate. D. Arhitecturi de programare LabVIEW Arhitectura general - General VI Proiectarea unei aplicaii presupune, n general, parcurgerea a trei etape: STARTUP: iniializarea hardware-ului, citirea informaiilor de configurare din fiiere; APLICAIA PRINCIPAL (MAIN APPLICATION): const din parcurgerea cel puin a unei bucle, ce se repet pn utilizatorul decide s ias din program, sau programul se termin din alte motive; SHUTDOWN: presupune nchiderea fiierelor, scrierea informaiilor de configurare pe disc sau resetarea I/O la starea implicit; Exemplu: diagrama bloc ilustreaz aceast arhitectur general. Pentru aplicaii simple, bucla aplicaiei principale poate fi direct; pentru interfee mai complexe sau evenimente multiple, aceast seciune devine mai complicat. Observaii: 1. Bucla While nu poate ncepe s ruleze pn cnd Startup VI nu a terminat rularea i returneaz un cluster de eroare. n continuare, Shutdown VI nu poate rula pn cnd aplicaia principal, n bucla While, nu se termin i rezult clusterul de eroare asociat. 2. Funcia Wait este necesar n majoritatea buclelor, mai ales cnd acestea monitorizeaz datele de intrare din panoul frontal. Fr acest funcie, bucla ar putea continua s ruleze la infinit, epuiznd resursele calculatorului. Funcia Wait foreaz bucla s ruleze asincron, chiar dac perioada de ateptare este apropiat de zero milisecunde; de regul, un interval de ateptare de 100-200 ms este potrivit, deoarece majoritatea utilizatorilor nu vor sesiza ntrzierea ntre apsarea butonului din panoul frontal i execuia evenimentului urmtor. D. Arhitecturi de programare LabVIEW Arhitectura paralel Parallel Loop VI Potrivit pentru aplicaiile n care exist evenimente ce se desfoar simultan. O modalitate de proiectare a aplicaiei principale este asocierea unei bucle diferite pentru fiecare eveniment n parte. Avantaj: evenimentele/ procesele pot fi gestionate foarte bine n paralel, independent unul fa de cellalt. Dezavantaj: coordonarea i comunicarea ntre bucle diferite poate fi deficitar. n exemplul urmtor: butonul STOP al celei de-a doua bucle reprezint o variabil local. Nu se pot folosi conexiuni pentru trecerea datelor de la o bucl la alta (aceasta ar mpiedica rularea n paralel). Prin urmare, trebuie folosite tehnici globale de trecere a informaiei de la un proces la altul, ceea ce poate conduce la rezultate incompatibile i dificil de depanat. Exemplu: D. Arhitecturi de programare LabVIEW Arhitectura multiple case Multiple Case Structure VI Potrivit pentru aplicaiile n care trebuie gestionate evenimente multiple, cu trecerea datelor de la un eveniment la altul. n locul utilizrii mai multor bucle, se poate utiliza una singur, ce conine structuri Case separate pentru gestionarea fiecrui eveniment n parte. Acest tip de arhitectur se utilizeaz, de asemenea, n situaia n care pe panoul frontal exist mai multe butoane, fiecare iniiind un eveniment diferit. Avantaj: se pot utiliza conexiuni (wires) pentru trecerea datelor ntre evenimente. Aceasta reduce necesitatea utilizrii datelor globale, mbuntind calitatea rezultatelor. Se pot utiliza regitri de transfer (shift register) pentru reinerea valorilor de la o iteraie la alta. Exemplu: Dezavantaje: Pot rezulta diagrame bloc complexe, dificil de citit, editat i depanat. Deoarece toate evenimentele sunt n aceeai bucl, fiecare dintre ele este gestionat n serie; n consecin, dac un eveniment ia un timp mai ndelungat, bucla nu poate gestiona alte evenimente n acel timp; Aceasta genereaz o alt problem conex: evenimentele sunt rulate cu aceeai vitez, deoarece nici unul dintre ele nu se poate repeta nainte ca ntreaga bucl While s fie parcurs. D. Arhitecturi de programare LabVIEW Arhitectura State Machine State Machine VI Potrivit pentru obinerea unor diagrame bloc mai compacte, prin utilizarea unei singure structuri Case pentru gestionarea evenimentelor din cadrul unei aplicaii. Aceast arhitectur reprezint o metod foarte util pentru VI-urile ce pot fi uor divizate n sarcini mai simple. Se poate genera State Machine n LabVIEW cu o bucl While, o structur Case i un registru de transfer (shift register). Fiecare stare a State Machine reprezint un caz n structura Case. Registrul de transfer memoreaz starea ce trebuie executat n cadrul urmtoarei iteraii a buclei. Exemplu: Stri posibile: startup, idle, event 1, event 2 i shutdown Fiecare din strile definite n VI are cazul su (n cadrul structurii Case). n timp ce este rulat o stare, se determin starea urmtoare pe baza rezultatului curent; starea ce urmeaz s ruleze se memoreaz n registrul de transfer. Cnd apare o eroare, indiferent de stare, se aplic shutdown. Avantaje: Reducerea dimensiunii diagramei bloc, ceea ce o face mai uor de citit, editat i depanat. Dezavantaje: Exist posibilitatea pierderii (neexecuiei) unor evenimente: dac dou evenimente apar n acelai timp, se va gestiona doar primul, iar cel de-al doilea se va pierde. Aceasta poate conduce la erori dificil de depanat. Variantele mai complexe ale arhitecturilor de tip State machine conin coduri suplimentare care genereaz o list de ateptare pentru evenimente/ stri, astfel nu se pierde execuia unora dintre acestea.