Laboratorium wirtualne 1/Moduł 3 - ćwiczenie 3: Różnice pomiędzy wersjami
Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
m Zastępowanie tekstu – „,</math>” na „</math>,” |
m Zastępowanie tekstu – „\</math>” na „\ </math>” |
||
Linia 80: | Linia 80: | ||
{| border="0" cellpadding="5" width="100%" | {| border="0" cellpadding="5" width="100%" | ||
|valign="top" width="500px"|[[Grafika:LW1_M3_Slajd04.png]] | |valign="top" width="500px"|[[Grafika:LW1_M3_Slajd04.png]] | ||
|valign="top"|Z katalogu \cviXX\instr\ (XX - zastępuje numer wersji środowiska np.: 70 lub 80) skopiować do katalogu zadania pliki: '''scope.c, scope.h, scope.fp'''. Jeśli jest ustawiony atrybut ''Read Only'' to należy go usunąć. Oryginalny sterownik przesyła bufory z danymi o rozmiarze 100. Celową jest modyfikacja (dotyczy ona funkcji sterownika '''scope_read_waveform'''), dzięki której możliwe będzie uzyskanie wektora o rozmiarze <math>2^n\</math>, - w dalszym ciągu będzie to rozmiar wynoszący 1024 elementy. | |valign="top"|Z katalogu \cviXX\instr\ (XX - zastępuje numer wersji środowiska np.: 70 lub 80) skopiować do katalogu zadania pliki: '''scope.c, scope.h, scope.fp'''. Jeśli jest ustawiony atrybut ''Read Only'' to należy go usunąć. Oryginalny sterownik przesyła bufory z danymi o rozmiarze 100. Celową jest modyfikacja (dotyczy ona funkcji sterownika '''scope_read_waveform'''), dzięki której możliwe będzie uzyskanie wektora o rozmiarze <math>2^n\ </math>, - w dalszym ciągu będzie to rozmiar wynoszący 1024 elementy. | ||
Włączyć pliki: '''*.c, *.uir, *.h''' oraz '''scope.fp''' do projektu. Nazwać i zapisać projekt. | Włączyć pliki: '''*.c, *.uir, *.h''' oraz '''scope.fp''' do projektu. Nazwać i zapisać projekt. | ||
Linia 208: | Linia 208: | ||
Etykieta: '''Kanał 1''' '''Kanał 2''' | Etykieta: '''Kanał 1''' '''Kanał 2''' | ||
Wartość: <math>\begin{matrix}\,\,\,\,\,\,\,\,\,\ 1 & \,\,\,\,\,\,\,\,\,\,2 \end{matrix}\</math>, | Wartość: <math>\begin{matrix}\,\,\,\,\,\,\,\,\,\ 1 & \,\,\,\,\,\,\,\,\,\,2 \end{matrix}\ </math>, | ||
Wartości te są zgodne z podanymi w pomocy do funkcji '''scope_config'''. | Wartości te są zgodne z podanymi w pomocy do funkcji '''scope_config'''. | ||
Linia 251: | Linia 251: | ||
y - parametr wyjściowy zawierający część urojoną widma Fouriera. | y - parametr wyjściowy zawierający część urojoną widma Fouriera. | ||
n - liczba elementów, która musi spełniać zależność <math>2^n\</math>,. | n - liczba elementów, która musi spełniać zależność <math>2^n\ </math>,. | ||
Linia 263: | Linia 263: | ||
|valign="top" width="500px"|[[Grafika:LW1_M3_Slajd14.png]] | |valign="top" width="500px"|[[Grafika:LW1_M3_Slajd14.png]] | ||
|valign="top"|Wartości widma zwracane są we współrzędnych kartezjańskich, a pożądaną postacią są współrzędne biegunowe, gdyż poszukiwana jest bezpośrednia postać widma amplitudowego. | |valign="top"|Wartości widma zwracane są we współrzędnych kartezjańskich, a pożądaną postacią są współrzędne biegunowe, gdyż poszukiwana jest bezpośrednia postać widma amplitudowego. | ||
Symbole na slajdzie: <math>A\</math>, - wektor widma amplitudowego, <math>\Phi\</math>, - wektor widma fazowego. | Symbole na slajdzie: <math>A\ </math>, - wektor widma amplitudowego, <math>\Phi\ </math>, - wektor widma fazowego. | ||
|} | |} | ||
Linia 299: | Linia 299: | ||
|valign="top"|Operację przeskalowania opisuje równanie przedstawione na slajdzie gdzie: | |valign="top"|Operację przeskalowania opisuje równanie przedstawione na slajdzie gdzie: | ||
:<math>widmo_{log}\</math>, - wynikowe widmo w skali logarytmicznej; | :<math>widmo_{log}\ </math>, - wynikowe widmo w skali logarytmicznej; | ||
:<math>widmo_{lin}\</math>, - widmo w skali liniowej (wektor '''mag'''); | :<math>widmo_{lin}\ </math>, - widmo w skali liniowej (wektor '''mag'''); | ||
:<math>maksimum(widmo_{lin})\</math>, - wartość maksymalna widma liniowego. | :<math>maksimum(widmo_{lin})\ </math>, - wartość maksymalna widma liniowego. | ||
:<math>log_{10})\</math>, - w programie należy wykorzystać funkcję '''log10'''. | :<math>log_{10})\ </math>, - w programie należy wykorzystać funkcję '''log10'''. | ||
UWAGA!! Aby uniknąć błędów pojawiających się przy próbie wyznaczania logarytmu dla argumentów: 0 oraz n/0 można dokonać sztucznego „zaszumienia” sygnału wejściowego w dziedzinie czasu. Poziom szumów niech wynosi do 1% amplitudy tego sygnału. | UWAGA!! Aby uniknąć błędów pojawiających się przy próbie wyznaczania logarytmu dla argumentów: 0 oraz n/0 można dokonać sztucznego „zaszumienia” sygnału wejściowego w dziedzinie czasu. Poziom szumów niech wynosi do 1% amplitudy tego sygnału. | ||
Linia 312: | Linia 312: | ||
{| border="0" cellpadding="5" width="100%" | {| border="0" cellpadding="5" width="100%" | ||
|valign="top" width="500px"|[[Grafika:LW1_M3_Slajd18.png]] | |valign="top" width="500px"|[[Grafika:LW1_M3_Slajd18.png]] | ||
|valign="top"|Do wyświetlenia widma warto użyć funkcji '''PlotWaveform'''. W funkcji tej w pozycji '''Initial X''' należy wstawić wartość 0 (składowa stała). W pozycji '''X Increment''', korzystając ze znajomości okresu próbkowania <math>t_{pr}\</math>, należy wyznaczyć i umieścić wartość rozdzielczości widmowej: <math>r = f_{pr}/N</math>; (<math>f_{pr}\</math>, -częstotliwość próbkowania, <math>N\</math>, - liczba próbek w widmie). Argument '''Plot Style''' należy ustawić na '''vertical bar'''. | |valign="top"|Do wyświetlenia widma warto użyć funkcji '''PlotWaveform'''. W funkcji tej w pozycji '''Initial X''' należy wstawić wartość 0 (składowa stała). W pozycji '''X Increment''', korzystając ze znajomości okresu próbkowania <math>t_{pr}\ </math>, należy wyznaczyć i umieścić wartość rozdzielczości widmowej: <math>r = f_{pr}/N</math>; (<math>f_{pr}\ </math>, -częstotliwość próbkowania, <math>N\ </math>, - liczba próbek w widmie). Argument '''Plot Style''' należy ustawić na '''vertical bar'''. | ||
UWAGA!! Ponieważ dla sygnałów rzeczywistych widmo jest symetryczne należy wyświetlać jedynie jego połowę | UWAGA!! Ponieważ dla sygnałów rzeczywistych widmo jest symetryczne należy wyświetlać jedynie jego połowę | ||
Linia 363: | Linia 363: | ||
|valign="top"|Dysponując odczytem pozycji 2 kursorów na ekranie z przebiegiem czasowym można uzyskać powiększenie wybranego fragmentu. Fragment ten określony jest przez odpowiednie współrzędne kursorów. | |valign="top"|Dysponując odczytem pozycji 2 kursorów na ekranie z przebiegiem czasowym można uzyskać powiększenie wybranego fragmentu. Fragment ten określony jest przez odpowiednie współrzędne kursorów. | ||
Na rysunku przedstawiono przykładową sytuację. Obszarem zainteresowania (przeznaczonym do powiększenia) jest czerwony prostokąt, ograniczony kursorami (niebieskim i zielonym). Prostokąt ten można opisać dwiema parami współrzędnych: <math>(X_{min}, Y_{min})\</math>, oraz <math>(X_{min}, Y_{min})\</math>, oznaczonych odpowiednio zielonymi kółkami. Dysponując współrzędnymi kursorów: pierwszego <math>(X_1,Y_1)\</math>, oraz drugiego <math>(X_2,Y_2)\</math>, należy wyznaczyć: <math>X_{min}\</math>, , <math>X_{max}\</math>, , <math>Y_{min}\</math>, oraz <math>Y_{max}\</math>, . Będą one potrzebne do przeskalowania osi <math>X\</math>, oraz <math>Y\</math>, ekranu z przebiegiem czasowym. Włączaniem i wyłączaniem powiększenia niech steruje przełącznik typu '''Binary Switch'''. Jeżeli <math>X_1=X_2</math> lub <math>Y_1=Y_2</math> wtedy należy dezaktywować przełącznik powiększenia. W funkcji CALLBACK tego przełącznika trzeba obsłużyć dwa przypadki: włączenie i wyłączenie powiększenia. W obu należy wykorzystać funkcję: | Na rysunku przedstawiono przykładową sytuację. Obszarem zainteresowania (przeznaczonym do powiększenia) jest czerwony prostokąt, ograniczony kursorami (niebieskim i zielonym). Prostokąt ten można opisać dwiema parami współrzędnych: <math>(X_{min}, Y_{min})\ </math>, oraz <math>(X_{min}, Y_{min})\ </math>, oznaczonych odpowiednio zielonymi kółkami. Dysponując współrzędnymi kursorów: pierwszego <math>(X_1,Y_1)\ </math>, oraz drugiego <math>(X_2,Y_2)\ </math>, należy wyznaczyć: <math>X_{min}\ </math>, , <math>X_{max}\ </math>, , <math>Y_{min}\ </math>, oraz <math>Y_{max}\ </math>, . Będą one potrzebne do przeskalowania osi <math>X\ </math>, oraz <math>Y\ </math>, ekranu z przebiegiem czasowym. Włączaniem i wyłączaniem powiększenia niech steruje przełącznik typu '''Binary Switch'''. Jeżeli <math>X_1=X_2</math> lub <math>Y_1=Y_2</math> wtedy należy dezaktywować przełącznik powiększenia. W funkcji CALLBACK tego przełącznika trzeba obsłużyć dwa przypadki: włączenie i wyłączenie powiększenia. W obu należy wykorzystać funkcję: | ||
'''int status = SetAxisScalingMode (int panelHandle, int controlID, int axis, int axisScaling, double min, double max);''' | '''int status = SetAxisScalingMode (int panelHandle, int controlID, int axis, int axisScaling, double min, double max);''' |
Aktualna wersja na dzień 12:03, 5 wrz 2023
wersja beta
LABORATORIUM WIRTUALNE 1
Ćwiczenie 3 - Projekt wirtualnego oscyloskopu w środowisku LabWindows/CVI
![]() |
|
![]() |
Stworzyć nowy projekt i wybrać File -> New -> *.uir. |
![]() |
Po uruchomieniu program będzie wyglądał podobnie jak na ilustracji poniżej. |