Tutorial: Schemat Blokowy Tutorial: Block Diagram PRZEGLĄD (Overview) W tym wprowadzeniu do Block Diagram (Schematu Blokowego), badamy koncepcję tego narzędzia, jak również relację Block Diagram (Schematu Blokowego) z Front Panel (Panelem Przednim). Odkrywamy również jak otworzyć Block Diagram, jak znaleźć obiekty w palecie Functions (Funkcji) i umieścić je na Block Diagram (Schemacie Blokowym), oraz jak używać różnych ikon paska narzędzi. Ponadto dowiadujemy się, jak zbudować prosty schemat blokowy, aby zilustrować wagę pomysłu stworzenia kodu graficznego w oprogramowaniu LabVIEW firmy National Instruments. Schemat blokowy zawiera graficzny kod źródłowy programu LabVIEW. Koncepcją schematu blokowego jest oddzielenie graficznego kodu źródłowego od interfejsu użytkownika w logiczny i prosty sposób. Obiekty Front Panel (Panelu Przedniego) pojawiają się jako terminale na schemacie blokowym. Terminale na schemacie blokowym odzwierciedlają zmiany wprowadzone do odpowiadających im obiektów front panel panelu przedniego i vice versa. OKNO SCHEMATU BLOKOWEGO (Block Diagram Window) Podczas tworzenia lub otwierania nowych VI, panel przedni otwierany jest automatycznie. Aby utworzyć schemat blokowy wybierz z paska menu: Window>>Show Block Diagram (Okno>>Pokaż Schemat Blokowy). Dodatkowo można przełączać się między schematem blokowym oraz panelem przednim naciskając <Ctrl-E>. OBIEKTY I ŚRODOWISKO SCHEMATU BLOKOWEGO (Block Diagram Objects and Environment) Obiekty schematu blokowego obejmują: terminale, subvis, funkcje, stałe, struktury, oraz przewody które umożliwiają transfer danych pomiędzy innymi obiektami schematu blokowego. Możesz użyć narzędzi LabVIEW do tworzenia, modyfikacji i usuwania usterek VI. Narzędziem jest specjalny tryb operacyjny myszy, tak aby tryb pracy kursora odpowiadał ikonie wybranego narzędzia. LabVIEW wybiera, które narzędzie dobrać w oparciu o aktualną pozycję myszy. Można ręcznie wybrać potrzebne narzędzie poprzez wybranie go z palety Tools (Narzędzia) (na pasku menu wybierz View>>Tools Palette (Widok>>Paleta Narzędzi). Teraz możesz wybrać żądane narzędzie, pozostaje ono włączone do czasu wyboru innego z Tools Palette (Palety Narzędzi). str. 1
By umieścić obiekt na schemacie blokowym, po prostu przeciągnij je z Functions palette (paleta Funkcji). Functions palette (paleta Funkcji) pojawia się automatycznie, gdy klikniesz prawym klawiszem myszy w dowolnym miejscu obszaru roboczego (workspace) schematu blokowego. Zawiera funkcje, stałe, struktury oraz niektóre subvis. Zwróć uwagę na dwa przyciski na górze palety Functions (Funkcje). Tumb Thack (Pinezka) przypina paletę Functions (Funkcje) do schematu blokowego. Przycisk Search (Wyszukaj) otwiera okno dialogowe wyszukiwania, które można użyć by wyszukać funkcję przez jej nazwę. Kliknij przycisk Search (Wyszukaj), aby uruchomić funkcje wyszukiwarki (serach engine). Uruchomienie może zająć kilka chwil. str. 2
Możesz użyć tego narzędzia by wyszukać funkcję przez jej nazwę, jeśli masz problem z jej znalezieniem. Gdy zauważysz żądaną funkcję, kliknij na nią dwukrotnie - w tedy LabVIEW przeskoczy do miejsca w palecie Functions (Funkcje) gdzie możesz znaleźć tą funkcję. Uwaga: Wykonaj kolejne kroki w celu zmiany podpalet (subpalettes) widocznych na palecie Functions (Funkcje). str. 3
1. Użyj tumb thuck (pinezki) by przypiąć paletę Functions (Funkcje) na schemacie blokowym. 2. Zauważ, że przycisk View (Widok) pojawia się po przypięciu palety Functions (Funkcje) do schematu blokowego. 3. Wybierz View (Widok), a z menu skrótów (shortcut menu) wybierz Change Visible Categories (Zmień Widoczne Kategorie). 4. W oknie dialogowym Change Visible Categories (Zmień Widoczne Kategorie) możesz wybrać Paletts (Palety), których używasz najczęściej, lub kliknij Select All (Wybierz Wszystkie) by uwzględnić wszystkie Paletts (Palety). str. 4
Aby zmienić wygląd schematu blokowego, wybierz Tools>>Options (Narzędzia>>Opcje) z paska menu. W oknie dialogowym Options (Opcje) wybierz kategorię Block Diagram (Schemat Blokowy). Tu możesz dostosować wygląd schematu blokowego. Aby zaoszczędzić miejsce na schemacie blokowym odznacz Place front panel terminal as icons (Umiejscawiaj terminale na panelu przednim jako ikony). TERMINALE (Terminals) Terminale tworzą obrazy obiektów schematu blokowego na panelu przednim. Ponadto są to porty wejścia i wyjścia, służące wymianie informacji pomiędzy panelem przednim a schematem blokowym. Analogicznie do parametrów i stałych w tekstowych językach programowania, są dwa różne rodzaje terminali: control (sterownik) lub indicator terminals (wskaźnik) oraz node terminals (węzły). Control terminal i indicator terminal należą do elementów sterowania i wskaźników panelu przedniego. str. 5
W powyższym przykładzie dane wprowadzone w sterownikach panelu przedniego a i b wprowadzone są do schematu blokowego poprzez odpowiadające im sterowniki a i b. Dane następnie wprowadzone zostają do funkcji Add and Substract (Dodaj i Odejmij). Gdy funkcja Add and Substract (Dodaj i Odejmij) zakończy obliczenia, wytwarzają nowe wartości danych. Wartości danych przepływają do indicator terminals (terminali wskaźników) gdzie aktualizują wskaźniki front panelu a+b i a-b. STEROWNIKI, WSKAŹNIKI I STAŁE (Controls, Indicators, and Constants) Sterowniki (controls), wskaźniki i stałe działają jako wejścia i wyjścia algorytmu schematu blokowego. Sterowniki (controls) odbierają z front panelu wartości i przekazują je do innych obiektów schematu blokowego. Wskaźniki odbierają dane od logicznego schematu blokowego (block diagram logic) i przekazują je od schematu blokowego do panelu przedniego. Stałe przekazują dane do obiektu z którym są połączone. Rozważmy algorytm obliczania pola trójkąta. Możesz otrzymać następujący panel przedni i odpowiadający mu schemat blokowy. Stała Triangular Multiplier (Mnożnik Trójkątny) niekoniecznie pojawi się w oknie panelu przedniego jedynym powodem była by dokumentacja algorytmu. Po prostu przekaże wartość 0.5 do mnożenia funkcji (multiply function). Zauważ, że Base (cm) (podstawa) i Height (cm) (wysokość) schematu blokowego wyglądają inaczej niż terminal Area (cm^2) (powierzchnia). str. 6
Istnieją dwie cechy wyróżniające sterowniki i wskaźniki na schemacie blokowym. Pierwszym z nich jest strzałka na terminalu, która wskazuje kierunek przepływu danych. Sterowniki mają strzałki pokazujące dane opuszczające terminal, podczas gdy wskaźniki mają strzałki wskazujące dane wchodzące do terminalu. Drugą cechą różniącą jest obramowanie wokół terminala. Sterowniki mają grube obramowanie a wskaźniki cienkie. Możesz stworzyć sterowniki i wskaźniki zarówno ze schematu blokowego jak i panelu przedniego. Ten tutorial pokazuje to w dalszej części. WĘZŁY SCHEMATU BLOKOWEGO (Block Diagram Nodes) Węzły to obiekty na schemacie blokowym, które mają wejścia i/lub wyjścia i wykonują operacje kiedy działa VI. Są analogiczne do statements (deklaracji), operatorów, funkcji i podprogramów w tekstowych językach programowania. Węzłami mogą być funkcje, subvis, lub struktury. Struktury są to elementy sterowania procesami, takimi jak struktura przypadku, pętla for, pętla while, które są zawarte w dalszej części tutoriala. Obrazek poniżej ukazuje niektóre przykłady węzłów schematu blokowego. FUNKCJE (Functions) Funkcje są podstawowymi elementami operacyjnymi LabVIEW. Funkcje nie mają okna panelu przedniego ani okna schematu blokowego, ale mają terminale wejścia i wyjścia do przesyłania danych z i do podobnie do sterowników i wskaźników. Możesz sprawdzić czy obiekt schematu blokowego jest funkcją przez bladożółte tło jego ikony. Paleta Functions (Funkcje) posiada funkcje ułożone w grupy na podstawie rodzaju czynności, które wykonują. Spójrz na podpaletę Numeric (Numeryczne) dla funkcji wykonujących operacje numeryczne. Istnieje wiele różnych rodzajów funkcji. Pamiętaj, że funkcja ma bladożółte tło jak funkcje pokazane poniżej. str. 7
SubVIs SubVIs to VI, które są tworzone do użytku wewnątrz innego VI lub które są udostępniane na palecie Functions (Funkcje). Wszelkie VI mogą być potencjalnie stosowane jako subvi. Kiedy klikniesz dwa razy na subvi, która jest na schemacie blokowym, pojawia się jej okno panelu przedniego i masz dostęp do jej schematu blokowego. Niektóre przykłady subvis można znaleźć w przedstawionej poniżej palecie Functions (Funkcje). STRUKTURY (Structures) Struktury, w tym pętle for, struktury przypadku (case structure), pętle while są używane do sterowania procesem. Są przedstawionew dalszej części tutorialu. Możesz otworzyć podpaletę Structures (Struktury) z palety Functions (Funkcje) pod Programming (Programowanie). Poniżej przedstawione są różne rodzaje struktur oraz to jak wyglądają na schemacie blokowym. Teraz stwórz schemat blokowy pokazany poniżej postępując zgodnie z krokami: str. 8
1. Otwórz pusty VI z paska narzędzi. Wybierz File»New VI (Plik>>Nowy VI). 2. Wstaw dwa mnożenia funkcji (multiply functions) na schemacie blokowym, przeciągając je na schemacie blokowym z podpalety Numeric (Numeryczne) pod Programming (Programowanie). Powtórz aby umieścić drugi mnożnik funkcji (multiply function) na schemacie blokowym. Wskazówka: Aby skopiować obiekt na schemacie blokowym, przytrzymaj <ctrl> w czasie gdy klikniesz kursorem na obiekt i przeciągasz go. 3. Umieść kursor myszy nad najbardziej wysuniętą z lewej strony funkcją mnożenia aby wyświetliły się terminale wejścia i wyjścia. Jeśli trzymasz kursor nad jednym z terminali, pojawia się symbol szpulki przewodów wraz z nazwą terminalu. Aby utworzyć sterownik dla terminalu y, po prostu umieść kursor myszy nad nim i kliknij prawym przyciskiem myszy. Zrób to samo dla terminalu x na najbardziej na lewo wysuniętej funkcji mnożenia, dzięki temu masz sterownik dla każdego wejścia terminalu. 4. Połącz wyjście terminalu lewej funkcji mnożenia do wejścia x prawej funkcji mnożenia trzymając kursor nad terminalem wyjścia. Kiedy kursor zmieni się w szpulkę, kliknij i przytrzymaj podczas przeciągania przewodu do żądanego wejścia. str. 9
5. Utwórz Triangular Multiplier (Mnożnik Trójkątny) stałą 0.5, poprzez kliknięcie prawym klawiszem na wejściu y terminalu najbardziej na prawo wysuniętej funkcji mnożenia i wybierz Create»Constant (Utwórz>>Stała). Możesz zmienić wartość stałej poprzez dwukrotne kliknięcie, by wyróżnić tekst i wpisać jej nową wartość. Wpisz 0.5 i naciśnij <enter>. 6. Teraz kliknij prawym przyciskiem myszy na wyjście prawej funkcji mnożenia i wybierz Create»Indicator (Utwórz>>Wskaźnik) aby utworzyć wskaźnik który przekazuje wartości ze schematu blokowego logicznego do panelu przedniego. Wskazówka: Możesz tworzyć komentarze do schematu blokowego lub do panelu przedniego poprzez dwukrotne kliknięcie schematu blokowego i wpisanie swojego komentarza do automatycznie wyświetlonego pola tekstowego. Możesz zmienić nazwę wskaźników, sterowników i stałych, klikając dwukrotnie etykietę i wpisując żądaną nazwę. Jeśli etykieta (label) nie pojawiła się, kliknij prawym klawiszem na żądanym obiekcie i wybierz Visible Items»Label (Widoczne Elementy>>Etykieta). 7. Teraz spójrz na panel przedni wygenerowany z Twojej pracy na schemacie blokowym klikając <ctr-e> lub wybierając Window»Show Front Panel (Okno>>Pokaż Panel str. 10
Przedni). Zauważ że dwa sterowniki Base (cm) i Height (cm) oraz wskaźnik Area (cm^2) zostały automatycznie wygenerowane i umieszczone na panel przednim. Uruchomisz ten program jak tylko nauczysz się o ikonach paska zadań. PASEK ZADAŃ OKNA SCHEMATU BLOKOWEGO (Block Diagram Window Toolbar) Kiedy uruchamiasz VI, na schemacie blokowym pojawia się poniższy pasek zadań. Możesz użyć niektórych przycisków na pasku zadań schematu blokowego by debugować VI. Te przyciski są opisane w dalszej części tutorialu. Kliknij przycisk Run (Uruchom) by uruchomić swój VI. Nie potrzebujesz kompilować swojego kodu; LabVIEW kompiluje go automatycznie. Możesz uruchomić swój VI jeśli przycisk Run (Uruchom) wygląda jak solidna biała strzałka, pokazana po lewej. Przycisk Run (Uruchom) wygląda jak przełamana strzałka kiedy VI który stworzyłeś lub edytowałeś zawiera błędy. Jeśli przycisk Run (Uruchom) wciąż tak wygląda po zakończeniu przez Ciebie łączenia schematu blokowego, VI jest uszkodzony i nie może działać. Kliknij ten przycisk by wyświetlić okno listy błędów Error List (Lista Błędów), które wyświetli wszystkie błędy i ostrzeżenia. Kliknij Run Continuously (Ciągłe Działanie) by uruchomić VI dopóki nie odwołasz lub zatrzymasz wykonania polecenia. Możesz także nacisnąć przycisk ponownie aby wyłączyć Ciągłe Działanie. Kiedy VI działa, pojawia się przycisk Abort Execution (Zatrzymaj Wykonanie). Wciśnij ten klawisz by zatrzymać VI natychmiast, jeśli jest to jedyny sposób by zatrzymać VI. Jeśli więcej niż jeden działający najwyższego poziomu (top-level) VI używa VI przycisk jest przyciemniony. Uwaga: Przycisk Abort Execution (Zatrzymaj Wykonanie) zatrzymuje VI natychmiast przed zakończeniem bieżących iteracji. Zatrzymanie pracy VI używającego zewnętrznych źródeł, takich jak dyski zewnętrzne, może pozostawić źródło w nieznanym stanie przez niezrestartowanie go lub niewłaściwe ustawienie. Projektuj VI z przyciskiem stop by uniknąć tego problemu. Kliknij Pause (Pauza) by wstrzymać działanie VI. Kiedy wciśniesz przycisk Pause (Pauza), LabVIEW zaznaczy na schemacie blokowym położenie gdzie wstrzymałeś wykonanie a przycisk Pause (Pauza) stanie się czerwony. Kliknij przycisk Pause (Pauza) ponownie by kontynuować działanie VI. Wybierz rozwijane menu Text Settings (Ustawienia tekstu) by zmienić ustawienia czcionki dla wybranych części Twojego VI, włączając jej rozmiar, styl i kolor. Kliknij rozwijane menu Align Objects (Wyrównywanie Obiektów) w celu dostosowania obiektów wzdłuż osi, pionowo, wzdłuż krawędzi i lewej strony. str. 11
Kliknij rozwijane menu Distribute Objects (Rozmieszczenie Obiektów) by sprowadzić rozmiar wielu obiektów panelu przedniego do tego samego rozmiaru. Kliknij rozwijane menu Reorder (Uporządkuj) kiedy obiekty są nieuporządkowane, a chcesz zdefiniować który obiekt jest przed lub za innym obiektem. Wybierz jeden z nich Positioning tool (narzędziem pozycjonowania) a następnie wybierz z Move Forward (Przesuń do przodu), Move Backward (Przesuń do tyłu), Move To Front (Przenieś na przód), lub Move To Back (Przenieś na koniec). Kliknij przycisk Show Context Help Window (Pokaż Okno Pomocy Kontekstowej) aby przełączyć wyświetlanie okna pomocy kontekstowej. Enter text (Wstaw Tekst) pojawia się by przypomnieć, że nowa wartość jest dostępna by zastąpić starą wartość. Przycisk Enter text (Wstaw Tekst) znika kiedy na niego klikniesz, naciśnij klawisz <Enter> lub kliknij na panelu przednim lub schemacie blokowym. URUCHAMIANIE VI PRZEZ SCHEMAT BLOKOWY (Running a VI from the Block Diagram) Ostatecznie kliknij przycisk Run Continuously (Ciągłe działanie) na VI, który stworzyłeś i zmień wartości na panelu przednim. Obserwuj jak zmiana wartości sterowników a i b wpływa na wartość wskaźnika a*b. Wartości wstawione do sterowników na panelu przednim są przesyłane do schematu blokowego, a rezultat obliczony przez logiczny schemat blokowy jest przesyłany z powrotem do wskaźnika na panelu przednim. Kliknij przycisk Abort Execution (Zatrzymaj Wykonanie) by zatrzymać VI. Zapisz i zamknij VI wybierając z paska menu File>>Save (Plik>>Zapisz), a następnie kliknij przycisk Close (Zamknij)w prawym górnym rogu okna panelu przedniego. Schemat blokowy jest najbardziej podstawowym aspektem jakiegokolwiek wirtualnego narzędzia/instrumentu. Kontroluje wszystko, od przepływu danych do przesyłania danych z i do panelu przedniego. Jest to najważniejsze dla programujących w LabVIEW by mieć jasność i w pełni zrozumieć jak działa schemat blokowy. str. 12