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