Array - ZAOiOS - Politechnika Warszawska
Transkrypt
Array - ZAOiOS - Politechnika Warszawska
Prof. Krzysztof Jemielniak [email protected] http://www.cim.pw.edu.pl/kjemiel ST 107, tel. 234 8656 PRZYRZĄDY WIRTUALNE Część 6 Macierze, klastry, wzory Politechnika Warszawska, Wydział Inżynierii Produkcji, Instytut Technik Wytwarzania Zakład Automatyzacji, Obrabiarek i Obróbki Skrawaniem Macierze (Arrays) • Zbiór elementów tego samego typu • Jeden lub więcej wymiarów, do 2 wymiar 31 elementów na • Dostęp do poszczególnych elementów przez indeks • Pierwszy element ma indeks 0 indeks Macierz 10-elementowa 0 1 2 3 4 5 6 7 8 9 1.2 3.2 8.2 8.0 4.8 5.1 6.0 1.0 2.5 1.7 0 1 2 3 4 5 6 Macierz 2D 0 1 2 3 4 5 wierszy, 7 kolumn: macierz o 35 elementach Politechnika Warszawska, Wydział Inżynierii Produkcji, Instytut Technik Wytwarzania Zakład Automatyzacji, Obrabiarek i Obróbki Skrawaniem Wstawianie macierzy na panelu czołowym Z palety Controls >> All Controls >> Array and Cluster wybierz Array Zrzuć „skorupę” na panel Politechnika Warszawska, Wydział Inżynierii Produkcji, Instytut Technik Wytwarzania Zakład Automatyzacji, Obrabiarek i Obróbki Skrawaniem Wstawianie macierzy na panelu czołowym (cd.) Umieść odpowiedni obiekt (np. zadajnik numeryczny Numeric Control) w „skorupie” Dodawanie wymiaru macierzy Politechnika Warszawska, Wydział Inżynierii Produkcji, Instytut Technik Wytwarzania Zakład Automatyzacji, Obrabiarek i Obróbki Skrawaniem Tworzenie stałej macierzowej (diagram) 1. Wybierz skorupę Array Constant z palety Array 2. Umieść potrzebny obiekt w skorupie (tu stała boolowska) Politechnika Warszawska, Wydział Inżynierii Produkcji, Instytut Technik Wytwarzania Zakład Automatyzacji, Obrabiarek i Obróbki Skrawaniem Tworzenie macierzy przy pomocy pętli • • Pętle domyślnie kumulują macierze (auto indeksowanie) Auto indeksowanie można wyłączyć Politechnika Warszawska, Wydział Inżynierii Produkcji, Instytut Technik Wytwarzania Zakład Automatyzacji, Obrabiarek i Obróbki Skrawaniem Tworzenie macierzy 2D Politechnika Warszawska, Wydział Inżynierii Produkcji, Instytut Technik Wytwarzania Zakład Automatyzacji, Obrabiarek i Obróbki Skrawaniem Działania na macierzach Array Size Index Array Replace Array Subset Insert Into Array Delete From Array Initialize Array Build Array Array Subset Rotate 1D Array Reverse 1D Array Search 1D Array Split 1D Array Sort 1D Array Array Max & Min Transpose 2D Array Interpolate 1D Array Threshold 1D Array Interleave 1D Arrays Decimate 1D Array Array Constant Array To Cluster Cluster To Array Reshape Array Politechnika Warszawska, Wydział Inżynierii Produkcji, Instytut Technik Wytwarzania Zakład Automatyzacji, Obrabiarek i Obróbki Skrawaniem Wymiar macierzy, dostęp do elementu lub części macierzy Array Size Index Array, Array Subset Politechnika Warszawska, Wydział Inżynierii Produkcji, Instytut Technik Wytwarzania Zakład Automatyzacji, Obrabiarek i Obróbki Skrawaniem Tworzenie macierzy Inicjalizacja macierzy Budowanie macierzy Politechnika Warszawska, Wydział Inżynierii Produkcji, Instytut Technik Wytwarzania Zakład Automatyzacji, Obrabiarek i Obróbki Skrawaniem Inne działania na macierzach Replace Array Subset – zastąp część macierzy Insert Into Array – wstaw do macierzy Delete From Array – usuń z macierzy Array Subset – fragment macierzy Rotate 1D Array – obróć macierz 1D Reverse 1D Array – odwróć macierz 1D Politechnika Warszawska, Wydział Inżynierii Produkcji, Instytut Technik Wytwarzania Zakład Automatyzacji, Obrabiarek i Obróbki Skrawaniem Pozostałe działania na macierzach Search 1D Array – przeszukaj macierz Split 1D Array – podziel macierz Sort 1D Array – posortuj elementy macierzy Array Max & Min – maksymalny i minimalny element macierzy Transpose 2D Array – obróć macierz Interpolate 1D Array – interpoluj macierz Threshold 1D Array – znajdź przekroczenie progu Interleave 1D Arrays – spleć macierze Decimate 1D Array – przerzedź macierz Reshape Array – zmień kształt macierzy Politechnika Warszawska, Wydział Inżynierii Produkcji, Instytut Technik Wytwarzania Zakład Automatyzacji, Obrabiarek i Obróbki Skrawaniem Polimorfizm • Wszystkie funkcje LabVIEW są polimorficzne • Wejścia funkcji mogą być różnych typów Kombinacja wynik 5 2 Skalar+skalar 1 4 2 macierz+ skalar 2 macierz+macierz 3 2 5 1 4 2 macierz+macierz 1 4 2 3 2 5 7 7 skalar 3 6 4 macierz 4 6 7 macierz 4 6 7 macierz Polimorfizm nie oznacza, że np. gdy na wejściach funkcji mnożenie są dwie macierze 2D, funkcja realizuje mnożenie macierzy! Otrzymamy iloczyny poszczególnych elementów macierzy parami. macierz*macierz 1 4 2 3 2 5 7 3 8 10 macierz Politechnika Warszawska, Wydział Inżynierii Produkcji, Instytut Technik Wytwarzania Zakład Automatyzacji, Obrabiarek i Obróbki Skrawaniem Ćwiczenie: skalowanie, fragment macierzy Napisać program tworzący losową macierz 10-elementową, skalujący ją i wyjmujący fragment Politechnika Warszawska, Wydział Inżynierii Produkcji, Instytut Technik Wytwarzania Zakład Automatyzacji, Obrabiarek i Obróbki Skrawaniem Ćwiczenie: wybór opcji – 6 keys.vi Napisać program stwierdzający, który z sześciu klawiszy został naciśnięty i przekazujący na wyjście jego numer. Użyj funkcji: • Build Array • Boolean To (0,1) • Search 1D Array Zapisz jako 6 keys.vi Politechnika Warszawska, Wydział Inżynierii Produkcji, Instytut Technik Wytwarzania Zakład Automatyzacji, Obrabiarek i Obróbki Skrawaniem Wywoływanie subVI z widocznym panelem czołowym Jeśli subVI ma swój panel czołowy, z którego użytkownik ma korzystać, musi się on po wywołaniu pokazać. Najczęściej po zakończeniu działania, powinien się schować. Kliknij jego ikonę na diagramie programu głównego i ustaw opcje jego zachowania: Politechnika Warszawska, Wydział Inżynierii Produkcji, Instytut Technik Wytwarzania Zakład Automatyzacji, Obrabiarek i Obróbki Skrawaniem Ćwiczenie: Przegląd.VI Opracuj Przegląd.VI, który będzie wywoływał na życzenie jeden z VI: • • • • • Sygnal losowy.vi MultiWaveformChart.vi Ruchoma średnia.vi Przebieg ruchomej średniej.vi Nadzor sredniej.vi Politechnika Warszawska, Wydział Inżynierii Produkcji, Instytut Technik Wytwarzania Zakład Automatyzacji, Obrabiarek i Obróbki Skrawaniem Klastry (Clusters) • Struktura grupująca dane różnych typów, analogiczna do record w Pascalu lub struct w C. • Klaster zawiera same zadajniki (controls) lub wskaźniki (indicators). • Klaster można porównać do kabla złożonego z wielu różnych przewodów Politechnika Warszawska, Wydział Inżynierii Produkcji, Instytut Technik Wytwarzania Zakład Automatyzacji, Obrabiarek i Obróbki Skrawaniem Tworzenie klastra na panelu czołowym 1. Z palety Controls >> All Controls >> Array and Cluster wybierz Cluster 2. Zrzuć „skorupę” na panel 3. Umieść pożądane obiekty w skorupie Politechnika Warszawska, Wydział Inżynierii Produkcji, Instytut Technik Wytwarzania Zakład Automatyzacji, Obrabiarek i Obróbki Skrawaniem Tworzenie stałej klastrowej na diagramie a) Wybierz skorupę Cluster Constant z palety Cluster, po czym umieść potrzebne obiekty w skorupie b) Kliknij prawym klawiszem myszy na istniejący klaster i wybierz Create > Constant Politechnika Warszawska, Wydział Inżynierii Produkcji, Instytut Technik Wytwarzania Zakład Automatyzacji, Obrabiarek i Obróbki Skrawaniem Kolejność elementów w klastrze Elementy w klastrze są uporządkowane logicznie (od 0) W celu zmiany uporządkowania kliknij prawym klawiszem na jego granicy i wybierz Reorder Controls in Cluster... Politechnika Warszawska, Wydział Inżynierii Produkcji, Instytut Technik Wytwarzania Zakład Automatyzacji, Obrabiarek i Obróbki Skrawaniem Wykorzystanie klastrów do przekazywania danych do SubVIs • Umożliwia przekazanie wielu danych do jednego terminala • Umożliwia obejście limitu 28 wejść/wyjść do subVI • Upraszcza połączenia Politechnika Warszawska, Wydział Inżynierii Produkcji, Instytut Technik Wytwarzania Zakład Automatyzacji, Obrabiarek i Obróbki Skrawaniem Działania na klastrach Funkcje umożliwiające działania na klastrach: Functions>All functions>Cluster Można je uzyskać także klikając prawym klawiszem na terminal klastra Unbundle (rozpakuj) Bundle (spakuj) Unbundle By Name (rozpakuj wg nazwy) Bundle By Name (spakuj wg nazwy) Politechnika Warszawska, Wydział Inżynierii Produkcji, Instytut Technik Wytwarzania Zakład Automatyzacji, Obrabiarek i Obróbki Skrawaniem Działania na klastrach: pakowanie Spakuj Bundle Tworzy klaster z indywidualnych elementów. Konieczne jest podłączenie wszystkich terminali w takiej samej Etykiety terminali kolejności jak elementy w klastrze odzwierciedlają wyjściowym (output cluster) typ danych Można wykorzystać do zmiany istniejącego klastera przez podłączenie go do środkowego terminala klastra wejściowego (input cluster). Wtedy nie jest konieczne podłączenie wszystkich elementów, lecz wszystkie muszą być. Politechnika Warszawska, Wydział Inżynierii Produkcji, Instytut Technik Wytwarzania Zakład Automatyzacji, Obrabiarek i Obróbki Skrawaniem Działania na klastrach: pakowanie wg nazwy Spakuj wg nazwy Bundle By Name Zmienia zawartość istniejącego klastra, podłączonego (koniecznie) do środkowego terminala. Można zmieniać dowolne elementy w dowolnej kolejności, wybierane z menu po nazwie Etykiety terminali odzwierciedlają nazwy własne danych Politechnika Warszawska, Wydział Inżynierii Produkcji, Instytut Technik Wytwarzania Zakład Automatyzacji, Obrabiarek i Obróbki Skrawaniem Działania na klastrach: rozpakowywanie Rozpakuj Unbundle Stosuj gdy potrzebujesz dostępu do wszystkich elementów klastra. Funkcja musi mieć dokładnie tą samą liczbę terminali co liczba elementów w klastrze wejściowym. Politechnika Warszawska, Wydział Inżynierii Produkcji, Instytut Technik Wytwarzania Zakład Automatyzacji, Obrabiarek i Obróbki Skrawaniem Działania na klastrach: rozpakowywanie wg nazwy Rozpakuj wg nazwy Unbundle By Name Stosuj gdy potrzebujesz dostępu do wybranych elementów klastra, wybieranych z menu Politechnika Warszawska, Wydział Inżynierii Produkcji, Instytut Technik Wytwarzania Zakład Automatyzacji, Obrabiarek i Obróbki Skrawaniem Ćwiczenie: działania na klastrach Opracuj VI w którym klaster ustawień początkowych będzie modyfikowany (użyj Bundle By Name) zadajnikami i przekazywany na wyjście jako ustawienia zmienione. Ponadto przekaż na wyjście klaster zawierający wybrane zmienne (użyj Bundle) . Klastry niedostępne i poszarzałe: Zadajnik Czujnik w stanie False: Program działa w pętli do naciśnięcia klawisza OK Politechnika Warszawska, Wydział Inżynierii Produkcji, Instytut Technik Wytwarzania Zakład Automatyzacji, Obrabiarek i Obróbki Skrawaniem Klaster błędów Klaster błędów błędów zawiera następujące informacje : –Boolean wskazuje czy wystąpił błąd –Integer wskazuje kod błędu –String podaje opis błędu Politechnika Warszawska, Wydział Inżynierii Produkcji, Instytut Technik Wytwarzania Zakład Automatyzacji, Obrabiarek i Obróbki Skrawaniem Ćwiczenie: obsługa klastra błędów •Algorytm: if (liczba >= 0) then pierwiastek = SQRT (liczba) else pierwiastek = -99999 Wskaż błąd klastrem błędów end if Politechnika Warszawska, Wydział Inżynierii Produkcji, Instytut Technik Wytwarzania Zakład Automatyzacji, Obrabiarek i Obróbki Skrawaniem Automatyczna obsługa błędów • Szczególnie ważna przy wszelkich operacjach wejścia/wyjścia (operacje na plikach, kartach DAQ itp.) • Prawie wszystkie funkcje obsługujące we/wy zwracają informacje o błędach (klaster błędów) • Informacje o błędach mogą być przekazywane z jednego subVI do następnego • Jeśli w jednym subVI wystąpi błąd, następne subVI bogą być wykonywane w inny sposób • Do automatycznej obsługi błędów służą funkcje w palecie Time & Dialog, z których najważniejsze to: Prosta obsługa błędów (Simple Error Handler) oraz Ogólna obsługa błędów (General Error Handler) Politechnika Warszawska, Wydział Inżynierii Produkcji, Instytut Technik Wytwarzania Zakład Automatyzacji, Obrabiarek i Obróbki Skrawaniem Funkcje do automatycznej obsługi błędów Ogólna obsługa błędów (General Error Handler) Wskazuje czy błąd wystąpił, a jeśli tak zwraca jego opis i wyświetla opcjonalne okno dialogowe. Prosta obsługa błędów (Simple Error Handler) Działa podobnie jak General Error Handler ma jednak mniej opcji. Typy dialogu: 0 Bez dialogu – Użyteczne gdy chcesz błędy obsługiwać programowo. 1 OK (default) — Wyświetla okno dialogowe z klawiszem Continue. Po kliknięciu klawisza program kontynuuje działanie. 2 Kontynuacja lub zatrzymanie — Wyświetla okno dialogowe z klawiszami continue i stop – użytkownik może wybrać kontynuację programu lub zatrzymanie go. 3 OK z ostrzeżeniem — Wyświetla okno dialogowe z klawiszem Continue i komunikatem ostrzegającym. Po kliknięciu klawisza program kontynuuje działanie. 4 Kontynuacja lub zatrzymanie z ostrzeżeniem — Wyświetla okno dialogowe z klawiszami continue i stop oraz komunikatem ostrzegającym. Użytkownik może wybrać kontynuację programu lub zatrzymanie go. Politechnika Warszawska, Wydział Inżynierii Produkcji, Instytut Technik Wytwarzania Zakład Automatyzacji, Obrabiarek i Obróbki Skrawaniem