LabView Podprogramy. Jakub Gliński



Podobne dokumenty
Układy VLSI Bramki 1.0

ZROZUMIENIE MODUŁOWOŚCI (Understanding Modularity)

PROE wykład 2 operacje na wskaźnikach. dr inż. Jacek Naruniec

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

Informacje ogólne. Karol Trybulec p-programowanie.pl 1. 2 // cialo klasy. class osoba { string imie; string nazwisko; int wiek; int wzrost;

Lab. 3 Typy danych w LabView, zapis do pliku

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

Robert Barański, AGH, KMIW MathScript and Formula Nodes v1.0

I Tworzenie prezentacji za pomocą szablonu w programie Power-Point. 1. Wybieramy z górnego menu polecenie Nowy a następnie Utwórz z szablonu

TEMAT : KLASY DZIEDZICZENIE

e-wsparcie Barbara Muszko Aktualizacja Twojej witryny internetowej tak prosta, jak obsługa Worda

Ekonometria. Regresja liniowa, współczynnik zmienności, współczynnik korelacji liniowej, współczynnik korelacji wielorakiej

Lab 9 Podstawy Programowania

Wykład 3 Składnia języka C# (cz. 2)

PROE wykład 3 klasa string, przeciążanie funkcji, operatory. dr inż. Jacek Naruniec

Programowanie proceduralne INP001210WL rok akademicki 2018/19 semestr letni. Wykład 6. Karol Tarnowski A-1 p.

Język C++ zajęcia nr 2

Temat: Organizacja skoroszytów i arkuszy

Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227 WYKŁAD 7 WSTĘP DO INFORMATYKI

C++ - przeciążanie operatorów. C++ - przeciążanie operatorów. C++ - przeciążanie operatorów. C++ - przeciążanie operatorów

Rozdział ten zawiera informacje o sposobie konfiguracji i działania Modułu OPC.

Tworzenie prezentacji w MS PowerPoint

Ćwiczenia nr 4. Arkusz kalkulacyjny i programy do obliczeń statystycznych

XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery

etrader Pekao Podręcznik użytkownika Strumieniowanie Excel

Programowanie w języku C++ Grażyna Koba

Programowanie obiektowe

Metody Metody, parametry, zwracanie wartości

Język ludzki kod maszynowy

Pierwsze kroki z easy Soft CoDeSys Eaton Corporation. All rights reserved.

WYKONANIE APLIKACJI OKIENKOWEJ OBLICZAJĄCEJ SUMĘ DWÓCH LICZB W ŚRODOWISKU PROGRAMISTYCZNYM. NetBeans. Wykonał: Jacek Ventzke informatyka sem.

Funkcje. Spotkanie 5. Tworzenie i używanie funkcji. Przekazywanie argumentów do funkcji. Domyślne wartości argumentów

Opracował: mgr inż. Marcin Olech

EKSPLOATACJA SYSTEMÓW TECHNICZNYCH - LAB. Wprowadzenie do zajęć

Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 3. Karol Tarnowski A-1 p.

Programowanie w języku Python. Grażyna Koba

Instrukcja użytkownika ARSoft-WZ3

Część 3 - Konfiguracja

Podstawy programowania. Wykład 6 Złożone typy danych: struktury, unie. Krzysztof Banaś Podstawy programowania 1

Przewodnik... Tworzenie Landing Page

Język C zajęcia nr 11. Funkcje

Technologie informacyjne - wykład 12 -

Instrukcja użytkowania

Reprezentacja zmiennych numerycznych

Ogranicz listę klasyfikacji budżetowych do powiązanych z danym kontem księgowym

Aplikacje w środowisku VBA. Visual Basic for Aplications

koniec punkt zatrzymania przepływów sterowania na diagramie czynności

Podstawy programowania. Wykład 6 Wskaźniki. Krzysztof Banaś Podstawy programowania 1

Strona główna. Strona tytułowa. Programowanie. Spis treści. Sobera Jolanta Strona 1 z 26. Powrót. Full Screen. Zamknij.

Języki i techniki programowania Ćwiczenia 2

SYSTEM ZARZĄDZANIA RELACJAMI Z KLIENTEM CRM7

Kadry Optivum, Płace Optivum

1.3. Tworzenie obiektów 3D. Rysunek 1.2. Dostępne opcje podręcznego menu dla zaznaczonego obiektu

Delphi Laboratorium 3

UNIWERSYTET RZESZOWSKI KATEDRA INFORMATYKI


Zawartość. Wstęp. Moduł Rozbiórki. Wstęp Instalacja Konfiguracja Uruchomienie i praca z raportem... 6

Wykład 4: Klasy i Metody

Dodawanie grafiki i obiektów

znajdowały się różne instrukcje) to tak naprawdę definicja funkcji main.

Laboratorium Technologii Informacyjnych. Projektowanie Baz Danych

LABORATORIUM 8,9: BAZA DANYCH MS-ACCESS

OBIEKTY TECHNICZNE OBIEKTY TECHNICZNE

Rys. 1. Rozpoczynamy rysunek pojedynczej części

Rejestr Personelu Medycznego

Menu Narzędzia w Edytorze symboli i Edytorze Widoku aparatów

Część XVII C++ Funkcje. Funkcja bezargumentowa Najprostszym przypadkiem funkcji jest jej wersja bezargumentowa. Spójrzmy na przykład.

Elektroniczny Urząd Podawczy

Programowanie Obiektowe GUI

Podstawy tworzenia prezentacji w programie Microsoft PowerPoint 2007

Technologie obiektowe

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 6

Podstawy Informatyki Systemy sterowane przepływem argumentów

Nowy interfejs w wersji 11.0 C8 BETA

Podstawy programowania. Wykład 7 Tablice wielowymiarowe, SOA, AOS, itp. Krzysztof Banaś Podstawy programowania 1

Wykład 5: Klasy cz. 3

Kod składa się z kodu głównego oraz z odpowiednich kodów dodatkowych (akcesoriów). Do kodu można przyłączyć maksymalnie 9 kodów dodatkowych.

Obiekt klasy jest definiowany poprzez jej składniki. Składnikami są różne zmienne oraz funkcje. Składniki opisują rzeczywisty stan obiektu.

R o g e r A c c e s s C o n t r o l S y s t e m 5. Nota aplikacyjna nr 016 Wersja dokumentu: Rev. A. obecności w VISO

Papyrus. Papyrus. Katedra Cybernetyki i Robotyki Politechnika Wrocławska

Wykład 8: klasy cz. 4

Przejrzystość, intuicyjny charakter i łatwość oprogramowania sterowników FATEK.

Podstawy informatyki. Informatyka stosowana - studia niestacjonarne. Grzegorz Smyk. Wydział Inżynierii Metali i Informatyki Przemysłowej

Podręcznik użytkownika Obieg dokumentów

Podręcznik Użytkownika LSI WRPO

BeeOffice. Konfiguracja i obsługa modułu Urządzenia

MODUŁ OFERTOWANIE INSTRUKCJA OBSŁUGI

Podstawy Programowania C++

Analiza mechanizmu korbowo-suwakowego

PROGRAM TESTOWY LCWIN.EXE OPIS DZIAŁANIA I INSTRUKCJA UŻYTKOWNIKA

Język programowania PASCAL

System wizyjny OMRON Xpectia FZx

Laboratorium nr 9. Temat: Wskaźniki, referencje, dynamiczny przydział pamięci, tablice dynamiczne. Zakres laboratorium:

Pętle i tablice. Spotkanie 3. Pętle: for, while, do while. Tablice. Przykłady

Typy złożone. Struktury, pola bitowe i unie. Programowanie Proceduralne 1

Robert Barański, AGH, KMIW State Machine v1.0. Maszyna stanów (State Machine)

Zaawansowane programowanie w języku C++ Funkcje uogólnione - wzorce

Materiał Typy zmiennych Instrukcje warunkowe Pętle Tablice statyczne Wskaźniki Tablice dynamiczne Referencje Funkcje

Cash Flow System Instrukcja

Transkrypt:

LabView Podprogramy. Jakub Gliński

Programowanie proceduralne; Podprogram. Programowanie proceduralne to zasada programowania zalecająca dzielenie kodu na procedury, czyli fragmenty wykonujące ściśle określone operacje. Podprogram (inaczej funkcja lub procedura) to wydzielona część programu wykonująca określone operacje. Podprogramy stosuje się, aby uprościć program główny i zwiększyć czytelność kodu. Definicja podprogramu oprócz jego kodu obejmuje też deklarację argumentów jego wywołania. Podprogram dysponuje argumentami wejściowymi i wyjściowymi. Argumenty wejściowe dostarczają dane z miejsca wywołania do podprogramu. Void my_function ( int arg1, float arg2, double *ptr1, int *ptr2 ) Argumenty wyjściowe zapewniają zwrócenie danych wynikowych do procedury wywołującej dany podprogram.

Podprogram w LabView (analogia do języka C) Definicja funkcji w języku C: Void Unit_RC (DUT Enum, float Freq_in, float C, float R, double &Ku, double &Freq_out ) {...... } Złącze wraz z elementami kontrolnymi pulpitu definiuje wejścia i wyjścia subvi. Ikona unikalny obrazek identyfikujący węzeł podprogramu w diagramie wykorzystującym ten subvi. Unikalność graficzna tylko dla zapewnienia rozróżnialności i opisu przeznaczenia węzła podczas edycji kodu diagramu lub jego analizy.

Technika kreowania podprogramu LabView 1. Zbudowanie programu VI realizującego algorytm podprogramu. Powstaje samodzielny program wykonujący zadania przewidziane dla podprogramu, złożony z pulpitu i diagramu. Program zostaje zachowany w postaci pliku VI o unikalnej nazwie. Każdy program VI jest potencjalnie podprogramem. 2. Edycja ikony reprezentującej podprogram w diagramach innych programów. Obrazek identyfikujący węzeł podprogramu w innych diagramach powinien być unikalny, aby zapewnić jednoznaczność odczytu kodu programu. Środowisko wykonawcze do rozpoznania subvi wykorzystuje nazwę pliku VI a nie ikonę. 3. Definicja argumentów podprogramu. Obejmuje: Wytypowanie wejść i wyjść danych ( elementy kontrolne i wskaźnikowe pulpitu podprogramu). Określenie budowy złącza i przypisanie konkretnych wejść i wyjść do końcówek złącza. Określenie statusu wejść. 4. Zdefiniowanie własności podprogramu. 5. Utworzenie informacji pomocniczych (wspomagających programistę). 6. Zapisanie dokonanych zmian projektu ( plik o nazwie ustalonej w pkt 1).

Buduje się go tak jak każdy program VI. Różnica może dotyczyć wyłącznie projektu pulpitu, głównie w zakresie formy wizualnej. Program VI z przeznaczeniem na podprogram. Najczęściej użytkownik aplikacji widzi i posługuje się jej pulpitem. Pulpity zastosowanych podprogramów zwykle nie są uwidaczniane. Jeśli podprogram ma spełniać typowe funkcje podprogramów forma jego pulpitu powinna być możliwie prosta.? Można określić własności subvi tak, aby jego pulpit był widoczny. Wtedy forma graficzna pulpitu oraz własności obiektów kontrolnych są istotne (np. format wyświetlanych wartości numerycznych, kolory itp. ).

Każdy obiekt nastawczy pulpitu stanowi wejście danych i może być użyty jako argument wejściowy podprogramu, czyli wejście danych subvi. Rola elementów pulpitu w podprogramie. Każdy obiekt wskaźnikowy pulpitu stanowi wyjście danych i może być użyty jako argument wyjściowy podprogramu, czyli wyjście danych subvi. Nadanie obiektom pulpitu statusu wejść i wyjść następuje poprzez zdefiniowanie złącza podprogramu (subvi connector), które polega na powiązaniu poszczególnych pól złącza z obiektami pulpitu. Złącze subvi. Powiązanie wykonuje się za pomocą narzędzia szpulki, zaznaczając wybrane pole złącza a następnie obiekt pulpitu. Pola bez powiązania z obiektem pulpitu mają kolor biały. Powiązane przyjmują kolory odpowiadające typom danych.

Edycję złącza można wykonać wyłącznie w oknie edytora pulpitu wykorzystując menu podręczne pola Ikona/Złącze. Edycja złącza subvi. Wejście do edycji złącza podprogramu. Edycja postaci złącza liczba, rozkład pól, wzorce,... itd.

Liczba wejść i wyjść podprogramu. Maksymalna liczba wejść i wyjść podprogramu jest podyktowana dopuszczalną liczbą pól złącza (28). Przy dużej liczbie prostych danych wejściowych i wyjściowych można je grupować w typy złożone struktury. Powiązane logicznie dane można w ten sposób grupować zmniejszając liczbę osobnych wejść/wyjść podprogramu lub zapewnić dostarczenie więcej niż 28 prostych danych. Przykład: 30 danych zgrupowanych w 7 strukturach, np. wejście specyfikacji filtru FIR jest klastrem złożonym z siedmiu prostych danych. Liczba osobnych wejść i wyjść a także sposób grupowania prostych danych decyduje o wygodzie użycia podprogramu.

Status doprowadzenia danej do wejścia: Status wejścia podprogramu. Wymagane zawsze wymaga doprowadzenia danej; Polecane wejście może pozostać nie podłączone do źródła danych (jest ostrzeżenie); Opcjonalne - wejście może pozostać nie podłączone do źródła danych (brak ostrzeżenia); Wejścia ze statusem innym niż Required (Wymagane) potrzebują zdefiniowania dla nich wartości domyślnych wykorzystywanych przy braku danych zewnętrznych. Analogia do funkcji z argumentami domyślnymi. Przykład: Podprogram oblicza Ku dla zadanych wartości R, C i Freq_in. Wejścia R, C i Freq_in powinny zawsze korzystać z doprowadzonych danych. Nie ma sensownego uzasadnienia dla wartości domyślnych. Wejściom R, C i Freq_in należy przypisać status Required.

Obliczenie transmitancji kaskadowego układu czwórników z wykorzystaniem macierzy A. Przykład projektu subvi :

Układ modelowania dowolnej impedancji. Obliczenie impedancji Zs : Obliczenie impedancji układu równoległego RC. oraz dołączenie składowej indukcyjnej. Realizacja diagramu obliczającego impedancję Zs:

Określenie wartości domyślnej dla wejścia : Układ modelujący impedancje i wartości domyślne jego elementów: Przypisanie wartości domyślnych do elementów kontrolnych ( wejść subvi ): Poprzez dane z wejść R, C i L można praktycznie modelować dowolny rzeczywisty dwójnik. Jeśli wejścia R, C i L otrzymają status Recommended oraz podane wartości domyślne to zapewni się łatwy sposób modelowania różnych impedancji Zs.

Obliczenie macierzy A czwórnika Zs oraz kaskadowego połączenia czwórników: Obliczenie macierzy A czwórnika z impedancją szeregową Zs : Rozszerzenie diagramu w celu obliczenia macierzy A połączonych kaskadowo czwórników: Przykład: subvi/test_matrix_a.vi

Rozplanowanie położenia końcówek subvi: Rozłożenie końcówek powinno zapewnić możliwie proste i czytelne połączenia pomiędzy węzłami, i tak: Końcówki wejściowe powinny znajdować się przy lewej krawędzi obrazu węzła. Jeśli jest ich więcej to należy umieścić je w lewej części węzła. Końcówki wyjściowe powinny znajdować się przy prawej krawędzi obrazu węzła. Jeśli jest ich więcej to należy umieścić je w prawej części węzła. Węzły o podobnym przeznaczeniu umożliwiające kaskadowe przetwarzanie danych (tak jak np.: Unit_Zs i Unit_Zr ) powinny stosować identyczne układy końcówek (połączenia na wprost); Wspólne dane wejściowe dla takich węzłów ( tak jak np.: Freq w Unit_Zs ) powinny mieć odpowiadające im wyjścia co pozwala prowadzić kaskadowe połączenie zamiast gwiazdowego, zapewniając jednocześnie kolejność wykonania wynikającą wprost z przepływu tej danej przez kolejne węzły.

Nazwy wejść i wyjść podprogramu: Obiekty pulpitu stanowiące wejścia i wyjścia subvi powinny otrzymać sensowne nazwy (własność Label obiektów). Powody: Czytelność projektu podprogramu; Help kontekstowy podaje automatycznie opis węzła w zakresie definicji wejść i wyjść. Przy aktywności narzędzia realizacji połączeń pokazywane są ich nazwy. Zastosowanie sensownych opisów będzie istotną pomocą dla programisty. Prosta auto-dokumentacja wskazuje przeznaczenie wejść i wyjść węzła.

Konfigurowanie własności także podprogramu. podprogramu. Wejście do definiowania własności programu VI; Kategorie konfigurowanych własności programu VI. Najistotniejsze: Tryb wykonania Tryb użycia pulpitu Rozmiar i skalowalność pulpitu Dokumentacja pomocnicza Zabezpieczenie i prywatność projektów.

Rozszerzona informacja pomocnicza. Pełny opis pomocniczy można zawrzeć w pliku z tekstem w formacie HLP lub HTML. Odwołanie do niego umieścić w pozycji Help Path. Help kontekstowy automatycznie podaje wówczas odnośnik do pełnej dokumentacji.

Wykorzystanie pulpitu Ẓaznaczenie opcji Dialog oznacza, że podprogramu w aplikacji pulpit podprogramu pojawi się na ekranie i pozostanie na nim do zakończenia działania podprogramu. Podobne własności można uzyskać zaznaczając opcję Custom i w odpowiedni sposób konfigurując własności opcji stosownie do życzeń projektanta. Opcja Dialog posiada szereg specyficznych, ustalonych własności. W opcji Dialog subvi zachowuje się jak okno dialogowe w systemie operacyjnym tak, że w czasie jego aktywności użytkownik nie może współpracować z innymi oknami LabView. Po wywołaniu podprogramu : Pulpit staje się widoczny ; Nie ma belki menu oraz narzędziowej; Użytkownik nie może modyfikować rozmiarów okna, ale może zamknąć okno.

Kreślenie wykresu na bieżąco (w czasie pracy pętli) wymaga budowania tablicy oraz rejestru przesuwnego: Wielokrotne, równoległe wykorzystanie podprogramu. Można uprościć konstrukcję diagramu pętli przez zastosowanie subvi gromadzącego dane ale wystąpi problem, jeśli kilka takich podprogramów będzie pracowało równolegle! Przykład: Reentrant/wykres.vi oraz Reentrant/Reentrant1.vi

Podprogram gromadzący dane: do tablicy i węzła budującego tablicę przez dołączanie. 1. Rozwiązanie z zastosowaniem zmiennej lokalnej: Podprogram gromadzi dostarczane struktury Cluster XY w tablicy Array out. Gdy dana indeksująca Clear ma wartość 0, tworzona jest nawa tablica z jednym elementem XY. Dla wartości indeksujących > 0 elementy XY są dołączane do istniejącej tablicy. Zrealizowano to za pomocą zmiennej lokalnej 2. Rozwiązanie z zastosowaniem rejestru przesuwnego: Pętla wykonuje jedną iterację w każdym wywołaniu podprogramu. Rejestr zachowuje dane pomiędzy kolejnymi wywołaniami podprogramu. Jest zerowany automatycznie dla pierwszej danej ( wejście Clear wartość 0 ).

Sprawność działania programu: Podczas operowania na dużych zbiorach danych są one udostępniane: Przez wykonanie kopii danych Przez przekazanie wskaźnika do miejsca ich zgromadzenia. Operowanie na zmiennych lokalnych to tworzenie nowych kopii zgromadzonych danych. Rejestr przesuwny działa na zaalokowanym obszarze pamięci i w swoim działaniu nie potrzebuje tworzenia kopii swojej zawartości. Tworzenie kopii dużych zbiorów danych jest czasochłonne, dlatego druga wersja podprogramu ( z rejestrem przesuwnym) jest lepszym rozwiązaniem. Pomiar czasu wykonania programu wykorzystującego obie wersje podprogramu gromadzenia danych: Czas wykonania programu z wersją 1 poprogramu t1= 9493 ms Czas wykonania programu z wersją 2 poprogramu t2= 2216 ms t1/t2 = 4.3 Wersja 2 jest około 4 razy szybsza od pierwszej. Przykład: Reentrant/speed.vi

Wspólny obszar dla danych: Dwa wystąpienia subvi w programie korzystają z tego samego zaalokowanego obszaru pamięci. Ponieważ działają współbieżnie, składają na przemian dane z obu torów obliczeniowych w zaalokowanym obszarze. Skutkiem tego jest błędna prezentacja danych. Oba wykresy dostają te same dane. Poprawnie, XY Graph powinien otrzymać punkty odpowiadające dolnej obwiedni wykreślonego kształtu a XY Graph2 punkty górnej obwiedni.

SubVI z możliwością wykorzystania w wielu instancjach. Każdy podprogram, który zapamiętuje dane musi pracować w trybie Reentrant (wielobieżny), aby mógł występować w wielu instancjach. Wtedy każda jego instancja tworzy własny obszar dla danych. Tryb Reentrant wyłączony : Tryb Reentrant włączony : Przykład: Reentrant/Reentrant2.vi