Politechnika Warszawska, Wydział Inżynierii Produkcji, Instytut Technologii Maszyn
prof. dr hab. Krzysztof Jemielniak
PRZYRZĄDY
PRZYRZĄDY
WIRTUALNE
WIRTUALNE
Część 8
Techniki
programowania
http://www.cim.pw.edu.pl/labview
wg Greg McKaskle "Programming Techniques – The Good, the Bad, and the Ugly"
k.jemielniak@wip.pw.edu.pl
http://www.cim.pw.edu.pl/kjemiel
ST 149, tel. 660 8656
Politechnika Warszawska, Wydział Inżynierii Produkcji, Instytut Technologii Maszyn
Panel czołowy: dobry czy zły?
Politechnika Warszawska, Wydział Inżynierii Produkcji, Instytut Technologii Maszyn
Dobre, złe czy paskudne?
• Niedoskonałe, ale znacznie bardziej profesjonalne
• Wzorowane na przyrządzie tradycyjnym
(sprzętowym)
Politechnika Warszawska, Wydział Inżynierii Produkcji, Instytut Technologii Maszyn
Wskazówki podstawowe
• Najczęstsza skarga użytkowników: panel czołowy
wygląda nieprofesjonalnie. Dlaczego?
•
Programiści (my) nie mają doświadczenia w projektowaniu
paneli, przygotowania plastycznego
• Sami musimy krytycznie spojrzeć na swoje projekty!
• Skąd się tego nauczyć?
•
Od profesjonalistów!
•
kopiujmy przykłady, rzeczywiste przyrządy, urządzenia (TV,
magnetowid, DVD, oscyloskop, deska rozdzielcza w
samochodzie itd.)
•
nie starajmy się stworzyć czegoś „atrakcyjnego”
•
więcej uwagi skupmy na funkcjonalności panelu
Politechnika Warszawska, Wydział Inżynierii Produkcji, Instytut Technologii Maszyn
Przykład 1: co tu jest źle?
• Jaskrawe kolory:
•
czemu tak dużo?!
•
czemu tak jaskrawe?!
• Za dużo etykiet
•
czy muszą być przy każdym obiekcie?!
Politechnika Warszawska, Wydział Inżynierii Produkcji, Instytut Technologii Maszyn
Po pierwsze usuńmy kolory
No tak, chyba lepiej, ale w dalszym ciągu mamy tu chaos!
Politechnika Warszawska, Wydział Inżynierii Produkcji, Instytut Technologii Maszyn
Usuńmy etykiety!
Uporządkowanie wskaźników i zadajników, usunięcie etykiet
pomogło znacznie! Oczywiście pokrętła są teraz za małe
Politechnika Warszawska, Wydział Inżynierii Produkcji, Instytut Technologii Maszyn
Umieśćmy elementy ciaśniej
•
Zamiana gałek na suwaki,
•
Zgrupowanie elementów tematycznie, wskaźniki z lewej,
zadajniki z prawej (lub odwrotnie)– to dobry ogólny obyczaj
Politechnika Warszawska, Wydział Inżynierii Produkcji, Instytut Technologii Maszyn
Inna możliwość
•
Czasem warto użyć kolorów do identyfikacji obiektów.
•
Używaj raczej kolorów tła lub ramki niż samych obiektów.
•
Kolory tła mogą np. odpowiadać kolorom urządzeń
Politechnika Warszawska, Wydział Inżynierii Produkcji, Instytut Technologii Maszyn
Skojarzenia
• Najważniejsza technika organizacji
panelu czołowego
• Umożliwia logiczne zgrupowanie i
oddzielenie od siebie obiektów
• Zastosuj:
• kolory
• ramki
• rozmieszczenie
• łączenie powyższych
Politechnika Warszawska, Wydział Inżynierii Produkcji, Instytut Technologii Maszyn
Skojarzenia – kolor
• Nie najlepszy sposób
• Najczęściej nadużywany:
• podejście agresywne, brutalne
• „nieprofesjonalne” na pierwszy rzut oka
• Stosować, gdy nie da się użyć innych
technik np.:
• w
y
r
ó
żn
ia
j
ą
c s
a
m
o
gł
o
sk
i
w zd
a
n
i
u
• przebiegi na wykresie
Politechnika Warszawska, Wydział Inżynierii Produkcji, Instytut Technologii Maszyn
Skojarzenia – ramki
• Linie, ramki, gradienty (jak na brzegach tego
slajdu), tła
• Używane często w mediach (czasem nadużywane)
• Ich grubość, kolor winny być dopasowane do
obiektu
TRELE
•
trele morele
•
trele
•
trele morele rym cym cym
•
trele trele
•
morele
Politechnika Warszawska, Wydział Inżynierii Produkcji, Instytut Technologii Maszyn
Skojarzenia – rozmieszczenie
• Najdoskonalsza technika
• Książki, klawiatura komputerowa, panele
czołowe programów użytkowych, pilot TV –
oparte są na grupowaniu przez
rozmieszczenie (odstępy)
Móz gludz kiman ie zwyk łązdo
l
n ość d
o
k o j
a
r
z
e
n
i
a
liter
w
s
ł
o
wa, naw tj
e
ś lisą
n
i
e
up
orz
ą
d
ko wane
Ale znaczniej łatwiej się czyta, gdy są zgrupowane w
słowa, a spacje są umieszczone we właściwych
miejscach
Politechnika Warszawska, Wydział Inżynierii Produkcji, Instytut Technologii Maszyn
Skojarzenia – łączenie technik
• Kombinacje różnych technik kojarzenia
obiektów:
• popatrz jak fachowcy stosują każdą z technik
• dopiero potem próbuj je łączyć
• Ucz się na przykładach z codziennego
świata: gazeta, sprzęt stereo, klawiatura,
drukarka, xero kopiarka itd.
• Poproś kolegę o krytyczne uwagi
Politechnika Warszawska, Wydział Inżynierii Produkcji, Instytut Technologii Maszyn
Kolory – jak dużo jest za dużo?
• Są tylko dwa typy kolorów:
• neutralne, do barwienia dużych obiektów, tła
• jaskrawe
do
barwienia
małych
obiektów,
wykresów, strzałek, przycisków wyjścia
ostatnio używane
Kolory neutralne
Kolory jaskrawe
selektor kolorów
systemowych
Kolor przeźroczysty
(transparent)
Politechnika Warszawska, Wydział Inżynierii Produkcji, Instytut Technologii Maszyn
Daltonizm
Politechnika Warszawska, Wydział Inżynierii Produkcji, Instytut Technologii Maszyn
Daltonizm
Nie wiesz, czy zastosowane
przez ciebie kolory będą
widoczne dla każdego?
Wydrukuj na drukarce laserowej (czarno-białej) lub
zamień kolory na skalę szarości:
Nie widać? No to masz problem!
Politechnika Warszawska, Wydział Inżynierii Produkcji, Instytut Technologii Maszyn
Fonty – kilka wskazówek
• Używaj bardzo niewielu fontów na panelu
czołowym
• dwa, trzy to raczej maksimum
• najczęściej jeden – to najlepszy wybór
• raczej zmieniaj wymiar, styl (bold, italic itd.)
• Używaj fontów z szeryfami do tekstów
drukowanych (np. Times New Roman)
• Używaj fontów bez szeryfów do
wyświetlana na ekranie (Tahoma, Arial)
Politechnika Warszawska, Wydział Inżynierii Produkcji, Instytut Technologii Maszyn
Optymalizacja kodu źródłowego
Politechnika Warszawska, Wydział Inżynierii Produkcji, Instytut Technologii Maszyn
Optymalizacja kodu źródłowego
• Zrozumieć i zlokalizować problemy z
działaniem programu
• Zrozumieć obszary w LabVIEW
mające wpływ na działanie
• kopie pamięci
• odtwarzanie panelu czołowego
• wybór typu przyrządów
• zamiany typów zmiennych
Politechnika Warszawska, Wydział Inżynierii Produkcji, Instytut Technologii Maszyn
Kroki do udoskonalenia działania
programu
1. Uruchom swój VI
najlepiej, żeby działał możliwie przez cały czas
tworzenia
2. Uruchom analizator wydajności
programu
Performance Profiler
3. Popraw działanie w kluczowych
obszarach
nie warto udoskonalać wszystkiego
Politechnika Warszawska, Wydział Inżynierii Produkcji, Instytut Technologii Maszyn
Dlaczego stosować analizator
wydajności?
• Reguła Pareto dla wydajności programu:
• 20% kodu zajmuje 80% czasu działania programu
• Udoskonalenia programu są najbardziej
efektywne w odniesieniu do 20% kodu
• Wskazanie o które 20% chodzi, nie jest
łatwe!
Politechnika Warszawska, Wydział Inżynierii Produkcji, Instytut Technologii Maszyn
Przykład zastosowania
•
Wybierz:
Tools>>Advanced>>Profile Vis
•
Kliknij Start
•
Uruchom program
•
Zatrzymaj program
•
Kliknij Stop
Politechnika Warszawska, Wydział Inżynierii Produkcji, Instytut Technologii Maszyn
Podstawowe problemy z wydajnością
programu
• Źle napisany program
dotyczy wszystkich języków
• Niepotrzebne powtórzenia
ponowne przeliczanie zamiast pamiętania
• Wykorzystaj dobrze czas pracy komputera
nie wykonuj operacji za wcześnie ani za późno
Politechnika Warszawska, Wydział Inżynierii Produkcji, Instytut Technologii Maszyn
Zarządzanie pamięcią
• Języki konwencjonalne (C, C++, Pascal) –
• programista sam przydziela i zwalnia pamięć
• przyczyna wielu błędów, i problemów
• LabVIEW robi to automatycznie
• programista nie musi przydzielać i zwalniać
pamięci
• programista ma mniejszą kontrolę nad
zarządzaniem pamięcią
Politechnika Warszawska, Wydział Inżynierii Produkcji, Instytut Technologii Maszyn
Dane robocze
• Dane przekazywane na diagramie to dane robocze
• LabVIEW stara się minimalizować ilość używanej
pamięci
•
Funkcje, które tylko czytają dane, nie muszą ich
kopiować
•
Ten program wykorzystuje jedynie 4K pamięci
Politechnika Warszawska, Wydział Inżynierii Produkcji, Instytut Technologii Maszyn
Dane robocze, cd.
• Funkcje które tylko czytają dane są (o ile to
możliwe) wykonywane przed tymi, które
modyfikują dane
• Kolejność działań wybierana przez LabVIEW jest
dobra, ale nie doskonała
1
2
Politechnika Warszawska, Wydział Inżynierii Produkcji, Instytut Technologii Maszyn
Tworzenie macierzy i stringów
• Przepisywanie (realokacja) pamięci jest
bardzo kosztowna, gdy wykonuje się ją
często.
• Należy unikać używania funkcji
przepisujących pamięć w wielokrotnie
powtarzalnych pętlach:
Build Array
Concatenate Strings
Politechnika Warszawska, Wydział Inżynierii Produkcji, Instytut Technologii Maszyn
Zły sposób na budowanie macierzy
• Tu funkcja Build Array zmienia wymiar macierzy w
każdej iteracji
• Można stosować, gdy nie w każdej iteracji
dodawany jest nowy element
Politechnika Warszawska, Wydział Inżynierii Produkcji, Instytut Technologii Maszyn
Lepszy sposób budowania macierzy
• Tu LabVIEW czyta zadajnik w każdej iteracji, stąd
nie może z góry zarezerwować pamięci, bo nie wie
ile iteracji wykona
• Zamiast tego można powiększać macierz dużymi
krokami, by nie robić tego w każdej iteracji
Politechnika Warszawska, Wydział Inżynierii Produkcji, Instytut Technologii Maszyn
Dobry sposób budowania macierzy
•
Tu LabVIEW rezerwuje pamięć z góry, a w iteracjach wymienia
elementy macierzy na właściwe
•
to wymienianie jest jednak gorsze niż auto indeksowanie
•
Co jeśli nie znasz z góry liczby iteracji?
•
użyj While Loop zamiast For Loop
•
rezerwuj pamięć krokami, np. po 1000 elementów
•
po zakończeniu zredukuj macierz do właściwego wymiaru
Politechnika Warszawska, Wydział Inżynierii Produkcji, Instytut Technologii Maszyn
Najlepszy sposób budowania macierzy
• Jeśli znasz z góry liczbę iteracji, użyj For
Loop
• LabVIEW odczyta zadajnik raz i
zarezerwuje właściwą ilość pamięci z góry
Politechnika Warszawska, Wydział Inżynierii Produkcji, Instytut Technologii Maszyn
Konwersja typu danych
• W LabVIEW są dwa typy konwersji danych:
• jawne w Numeric>>Converision palette
• ukryte, wymuszone – w kropkach na drutach
• Konwersja typu jest kosztowna
• ogranicz liczbę konwersji przez stosowanie tego
samego typu danych
• dbaj o to tylko w przypadkach często
wykonywanych operacji
Politechnika Warszawska, Wydział Inżynierii Produkcji, Instytut Technologii Maszyn
Unikaj kropek wymuszonej konwersji
Politechnika Warszawska, Wydział Inżynierii Produkcji, Instytut Technologii Maszyn
Unikaj kropek wymuszonej konwersji
Wyniki porównania poprzednich dwóch VI
Politechnika Warszawska, Wydział Inżynierii Produkcji, Instytut Technologii Maszyn
Wolne VI wysokiego poziomu
• Wiele operacji można wykonać przyrządami
wysokiego poziomu (Express, easy)
•
Łatwiejsze programowanie nie znaczy wydajniejszy kod!
• VI wysokiego poziomu wykonują wiele operacji nie
koniecznie potrzebnych w danym przypadku
•
DAQ Easy I/O wykonują rekonfigurację karty przy każdym
wywołaniu
•
Np. „Write characters to file” wykonuje wiele operacji:
•
Open file, Seek file, Write block of characters, Close file
•
Może być do 70 razy wolniejsze niż proste „Write File”
• Nie stosować w często powtarzanych pętlach
Politechnika Warszawska, Wydział Inżynierii Produkcji, Instytut Technologii Maszyn
Wydajność matematyczna
• Kompilator LabVIEW generuje wydajniejszy
kod dla prostych operacji niż dla pętli:
• np. proste operacje na macierzach są szybsze niż
wykonywanie ich w pętli
Jest szybsze niż ->
Politechnika Warszawska, Wydział Inżynierii Produkcji, Instytut Technologii Maszyn
Odświeżanie interfejsu użytkownika
• Rysowanie na ekranie to najczęściej nie
doceniana przyczyna spowolnienia programu
• Kosztowność obliczeń czy wywołań wydaje się
bardziej oczywista niż kosztowność wykresów
• Podobnie jak przy zarządzaniu pamięcią
LabVIEW stara się optymalizować to rysowanie,
ale nie spodziewajmy się cudów!
Politechnika Warszawska, Wydział Inżynierii Produkcji, Instytut Technologii Maszyn
UI Thread
Front panel updates occur in the UI thread
Execution takes place in other threads
Shared data must be protected, so
LabVIEW creates an extra copy, called a
transfer buffer
Politechnika Warszawska, Wydział Inżynierii Produkcji, Instytut Technologii Maszyn
Dane panelu czołowego i diagramu
• Wskaźniki i zadajniki panelu czołowego
potrzebują własnych kopii wyświetlanych
danych, zwanych „danymi operacyjnymi”
• Ten VI wykorzystuje 8 KB jeśli panel czołowy
jest otwarty, i jedynie 4 KB gdy jest zamknięty
• W systemie wielowątkowych potrzebne jest
jeszcze dodatkowe 4KB na transmisję danych
Politechnika Warszawska, Wydział Inżynierii Produkcji, Instytut Technologii Maszyn
Kiedy zadajniki przetrzymują kopie danych?
• Wskaźniki i zadajniki przechowują „dane
operacyjne” dopóki panel czołowy jest w
pamięci
• Panel czołowy jest w pamięci gdy:
• jest otwarty
• VI nie został zapisany (po zmianie)
• diagram używa węzłów właściwości (property
nodes)
Politechnika Warszawska, Wydział Inżynierii Produkcji, Instytut Technologii Maszyn
Kiedy zadajniki przetrzymują kopie danych?
• Zmienne lokalne czytają i zapisują w
danych operacyjnych
• Wskaźniki i zadajniki, do których
odnoszą się zmienne lokalne również
przetrzymują kopie ich danych
operacyjnych
Politechnika Warszawska, Wydział Inżynierii Produkcji, Instytut Technologii Maszyn
Zarządzanie interfejsem użytkownika
• Aktualizuj wskaźniki tylko tak często jak ich
potrzebujesz
• więcej niż 10 razy na sekundę to na pewno za
dużo!
• Zrozum kopie danych wskaźników:
• dane są kopiowane z drutu do bufora
przejściowego za każdym razem gdy odświeżasz
wskaźnik
• dane są następnie kopiowane do wskaźnika przy
każdym odświeżeniu
Politechnika Warszawska, Wydział Inżynierii Produkcji, Instytut Technologii Maszyn
Odświeżanie wskaźników
• Jeśli wskaźnik znajduje się w pętli,
powinieneś kontrolować częstość
odświeżania
• można odświeżać zawartość wskaźnika co pewną
liczbę obiegów pętli
• Wskaźniki SubVI nie powinny być
umieszczane (odświeżane) w pętli
• SubVI nie ma interfejsu użytkownika, wystarczy
wystawić wartości końcowe na konektor