Bloki sygnałowe – propagacja i przetwarzanie sygnałów

Transkrypt

Bloki sygnałowe – propagacja i przetwarzanie sygnałów
Bloki sygnałowe – propagacja i przetwarzanie
sygnałów
1
Cel zadania
Nabycie praktycznej umiej˛etności konstrukcji klas pochodnych oraz wykorzystania metod wirtualnych. Dalsze utrwalenie umiej˛etności korzystania z szablonów list<> i vektor<>.
2
Opis zadania
Odbierany sygnał S(t)można przetwarzać poprzez kaskadowe składanie bloczków realizuja˛
cych elementarne operacje takie jak:
• pot˛egowanie (S(t) ∗ S(t)),
• przesuwanie poziomu (S(t) + ∆s),
• prostowanie (|S(t)|),
Rt
• całkowanie (
0 S(τ)dτ),
• dyskryminacja (1 gdy S(t) > sd i 0 w przypadku przeciwnym, gdzie sd jest progiem
dyskryminacji sygnału).
Przykład takiego złożenia przedstawiony jest poniżej.
Rysunek 1: Przykładowy łańcuch połaczeń
˛
Należy napisać program, który umożliwi tworzenie dowolnie długiego łańcucha wspomnianych wcześniej bloków sygnałowych. Stworzony łańcuch ma realizować przetwarzanie zgodnie
z regułami właściwymi dla poszczególnych bloków. Wartości sygnału wejściowego w kolejnych chwilach czasowych czytane sa˛ z pliku. Zapisywane sa˛ one w parach (czas, wartość) w
osobnych liniach, np.
0.02
0.04
0.06
2.1
0.0628
0.125
0.187
Problemy do rozwiazania
˛
Bazujac
˛ na wcześniej przedstawionych blokach sygnałowych należy:
• zaproponować taka˛ sekwencj˛e bloków, która umożliwi zwi˛ekszenie czterokrotne cz˛estotliwości sygnału sinusoidalnego,
• zaproponować taka˛ sekwencj˛e bloków, która umożliwi zwi˛ekszenie czterokrotne cz˛estotliwości sygnału prostokatnego.
˛
3
Wersja podstawowa
Zakładamy, że program nie udost˛epnia żadnego interfejsu użytkownika. Sekwencje bloków
zadajemy z linii polecenia, np.
./przetworzsygnal
-i sygnal_we.syg -o sygnal_wy.syg
-G -P 1 -S -C -D 0
gdzie
-i sygnal_we.syg — umożliwia podania nazwy pliku, z którego odczytywane sa˛ kolejne
wartości wejściowego sygnału,
-o sygnal_wy.syg — umożliwia podania nazwy pliku, do którego zapisywane sa˛ kolejne
wartości przetworzonego sygnału,
-G — powoduje dodanie bloku pot˛egujacego,
˛
-P wartość_przesuni˛ecia — powoduje dodanie bloku pozwalajacego
˛
przesunać
˛ poziom sygnału o zadana˛ wartość,
-S — powoduje dodanie bloku prostujacego,
˛
-C — powoduje dodanie bloku całkujacego,
˛
-D próg_dyskryminacji — powoduje dodanie bloku dyskryminujacego
˛
sygnał.
Kolejność opcji odpowiadajacych
˛
poszczególnym blokom determinuje kolejność ich łaczenia
˛
(pierwsza opcja od lewej odpowiada pierwszemu blokowi od strony wejścia). Opcje te moga˛
si˛e powtarzać, tak jak powtarzać si˛e moga˛ odpowiadajace
˛ im bloki sygnałowe w strukturze
łańcucha wzajemnych połaczeń.
˛
Zapisane sygnał wyjściowy (jak również wejściowy) można
obejrzeć wykorzystujac
˛ program gnuplot uruchamiajac
˛ go z linii polecenia zgodnie z instrukcja˛ zawarta˛ we wcześniejszym zadaniu.
4
Wersja rozszerzona (nieobowiazkowa)
˛
W wersji rozszerzonej, jeżeli program zostanie wywołany bez żadnej opcji, to powinien udost˛epniać interfejs dla użytkownika, który pozwoli dodać i usunać
˛ blok w dowolne miejsce łańcucha połaczeń.
˛
Powinien umożliwiać również edycj˛e parametrów bloków (dotyczy bloku przesuwania poziomu i bloku dyskryminujacego).
˛
Bardzo wskazane jest, aby program sam zapewniał wizualizacj˛e otrzymanego sygnału poprzez odpowiednie wywołanie programu gnuplot.
5
Wersja bardzo rozszerzona (nieobowiazkowa)
˛
W tej wersji zadania konieczne jest realizacja obsługi parametrów wywołania. Programu musi
zapewnić wizualizacj˛e sygnału (proponuje si˛e wykorzystanie modułu lacze_do_gnuplota).
Ponadto niezb˛edne jest umożliwienia utworzenia dodatkowych bloków:
• wzmacniajacego
˛
(w ∗ S(t)),
• różniczkujacego
˛
( dS
dt (t)),
• sumujacego
˛
(wiele wejść – jedno wyjście → S(t) = ∑ Si (t)).
Rysunek 2: Przykład układu regulacji ze sprz˛eżeniem zwrotnym
Program powinien umożliwić zamodelowanie struktury przedstawionej na rysunku. Jest to
przykład układu regulacji. W układzie tym elementem, który podlega sterowaniu, jest obiekt
reprezentowany przez blok całkujacy
˛ (z pogrubiona˛ ramka).
˛ Pozostałe elementy otoczone kropkowana˛ ramka˛ można utożsamić z regulatorem typu PID. Przykład realizacji programu wraz z
zaimplementowana˛ siecia˛ połaczeń
˛
znajduje si˛e w udost˛epnionych zasobach do zadania.
6
Materiały pomocnicze
Dodatkowe pomocnicze elementy ułatwiajace
˛ rozpocz˛ecie realizacj˛e zadania znaleźć można na
serwerze diablo lub panamint w katalogu ˜bk/edu/po/zad/z7. W katalogu tym znajduja˛
si˛e nast˛epujace
˛ podkatalogi i pliki:
˜bk/edu/po/zad/z7/.
bin.diablo/manipulator
bin.panamint/manipulator
sygnaly/skok_jednostkowy.syg
sygnaly/sinus.syg
sygnaly/prostokat.syg
przyklad_2D/Makefile
przyklad_2D/src/start.cpp
przyklad_2D/src/lacze_do_gnuplota.cpp
przyklad_2D/inc/lacze_do_gnuplota.hh
bin.diablo/blokisygnalowe, bin.panamint/blokisygnalowe Sa˛ to programy binarne. Stanowia˛ one przykład realizacji programu, w wersji najbardziej rozszerzonej. Zawiera zamodelowana˛ struktur˛e układu regulacji. Wszystkie połaczenia
˛
można dowolnie modyfikować, jak też
parametry poszczególnych bloków. Można też dodawać i usuwać bloki. Wspomniany program
został skompilowany odpowiednio na serwerze diablo i na serwerze panamint.
sygnaly Zawiera pliki z przykładowymi przebiegami przykładowych sygnałów. Sa˛ nimi:
skok jednostkowy, sinusoidalny i przebieg prostokatny.
˛
przyklad_2D Katalog zawiera przykład użycia zmodyfikowanej wersji modułu lacze_do_gnuplota
pozwalajacego
˛
uruchomić program gnuplot z poziomu własnego programu i nawiazać
˛
z nim
komunikacj˛e. W przykładzie pokazane jest rysowanie z wykorzystaniem grafiki 2D.