• Nie Znaleziono Wyników

Michał Maćkowski, dr inż. Maciej Wawrzyniak Programowe metody pomiaru czasu w systemach operacyjnych Windows.Sesja: Nowe obszary badań systemów i sieci telekomuniacyjnych.Politechnika Poznańska, Instytut Elektroniki i Telekomunikacji

N/A
N/A
Protected

Academic year: 2021

Share "Michał Maćkowski, dr inż. Maciej Wawrzyniak Programowe metody pomiaru czasu w systemach operacyjnych Windows.Sesja: Nowe obszary badań systemów i sieci telekomuniacyjnych.Politechnika Poznańska, Instytut Elektroniki i Telekomunikacji"

Copied!
5
0
0

Pełen tekst

(1)www.pwt.et.put.poznan.pl. Michał Maćkowski, Maciej Wawrzyniak Politechnika Poznańska, Instytut Elektroniki i Telekomunikacji 60-965 Poznań, ul Piotrowo 3A mmackow@et.put.poznan.pl; mwawrz@et.put.poznan.pl. 2005. Poznańskie Warsztaty Telekomunikacyjne Poznań 8 - 9 grudnia 2005. PROGRAMOWE METODY POMIARU CZASU W SYSTEMACH OPERACYJNYCH WINDOWS Streszczenie: W artykule opisano sposób wykorzystania zegara programowego Windows oraz zegara wysokiej rozdzielczości do odmierzania zadanych odcinków czasu. Przedstawiono wyniki pomiarów rozdzielczości tych zegarów w zależności od konfiguracji sprzętowej i programowej komputera. Opisano i wyznaczono podstawowe błędy pomiaru czasu odmierzanego za pomocy tych zegarów.. 1. WPROWADZENIE Obecnie wiele systemów kontrolno – pomiarowych wykorzystuje komputery klasy PC z systemami operacyjnymi z rodziny Windows. Do podstawowych zadań komputerów w systemach pomiarowych, poza archiwizacją danych, należy kontrola procesów pomiarowych i sterujących, między innymi, przez wydawanie instrukcji przetwornikom pomiarowym i urządzeniom wykonawczym w ściśle określonych odstępach czasu. Systemy operacyjne z rodziny Windows są systemami wielozadaniowymi. Windows umożliwia równoległą pracę kilku aplikacjom, wykorzystującym wspólne zasoby sprzętowe, posługując się, między innymi, mechanizmem kolejkowania komunikatów. Wszystkie zdarzenia zachodzące w komputerze, generowane przez pracujące aplikacje oraz podzespoły komputera, są traktowane przez system operacyjny jako komunikaty i wprowadzane do systemowej kolejki komunikatów. Dalej komunikaty są przesyłane do kolejek komunikatów poszczególnych aplikacji, gdzie oczekują na obsługę przez pętlę komunikatów danej aplikacji. Systemy Windows nie są systemami czasu rzeczywistego i nie gwarantują pracującym aplikacjom odczytu zegara czasu rzeczywistego RTC (ang. Real Time Clock). Aplikacje pracujące w Windows są informowane przez system operacyjny o upływie czasu za pomocą zegara (stopera) programowego w postaci komunikatów WM_TIMER. Rozdzielczość zegara programowego jest zależna od wersji systemu Windows, dla rodziny Windows 98, 98SE oraz Me wynosi 54,9 ms, z kolei dla systemów z rodziny NT (Windows 2000, XP) wynosi 10 ms [1]. Komunikaty te mają niski priorytet i dlatego mogą być obsłużone z pewnym opóźnieniem w zależności od obciążenia systemu operacyjnego. Szybkość działania dowolnej aplikacji, pracującej w środowisku Windows, zależy od wielu czynników. Do. PWT 2005 - POZNAŃ 8-9 GRUDNIA 2005. najważniejszych należą konfiguracja sprzętowa komputera (typ i szybkość procesora, pojemność i rodzaj pamięci operacyjnej RAM, typ płyty głównej, liczba działających kart rozszerzeń, itp.) oraz od rodzaju i liczby zainstalowanych i pracujących aplikacji. Wpływa to również na rozdzielczość i stabilność zegara programowego. Różnorodność konfiguracji sprzętowej i programowej komputera wymusza na projektancie systemu doświadczalne określenie stabilności zegara programowego. Niestabilność zegara może powodować błędne działanie systemu podczas analizy szybkozmiennych sygnałów lub wydłużać czas regulacji regulatorów PID. Może mieć krytyczne znaczenie dla systemu w przypadku powstania sytuacji awaryjnych (np. przekroczenie wartości granicznych). Znajomość tych danych jest niezbędna dla projektantów systemów kontrolno – pomiarowych, których działanie odbywa się według określonych zależności czasowych. 2. POMIAR CZASU TRWANIA IMPULSU Na rysunku 1 przedstawiono schemat blokowy układu do pomiaru czasu trwania TX napięciowego sygnału prostokątnego U(t).. Rys. 1. Schemat blokowy układu do pomiaru czasu trwania Tx sygnału prostokątnego. Narastające zbocze mierzonego sygnału U(t) powoduje otwarcie bramki (Start) i licznik zlicza okresy z generatora częstotliwości wzorcowej. Zliczanie jest kontynuowane do chwili zamknięcia bramki (Stop) przez opadające zbocze sygnału U(t).. 1/5.

(2) www.pwt.et.put.poznan.pl. Czas trwania TX sygnału prostokątnego U(t) można obliczyć na podstawie zależności:. Tx = n ⋅ Tw. (1). gdzie: n – liczba zliczeń licznika, TW – okres generatora częstotliwości wzorcowej. Względny błąd pomiaru czasu tą metodą można obliczyć na podstawie zależności:. ∆Tx 1 ∆Tw ∆Tb = + + Tx n Tw Tb. (2). gdzie: 1/n = TW/TW - względny błąd zliczania (Δn = ±1), ΔTW - bezwzględny błąd okresu generatora częstotliwości wzorcowej, ΔTb - bezwzględny błąd bramkowania wynikający z różnych czasów otwierania i zamykania bramki. W metodach programowych pomiaru czasu generator częstotliwości wzorcowej jest realizowany poprzez licznik zdefiniowany w pamięci operacyjnej komputera. Licznik taki może być zdefiniowany przez system operacyjny, kompilator użyty do kompilacji lub programistę wewnątrz pisanego programu. Zdefiniowany licznik jest inkrementowany z ustalonym okresem TW. W celu pomiaru czasu pomiędzy dwoma zdarzeniami należy dwukrotnie odczytać stan licznika w chwilach początku pomiaru (Start) i końca pomiaru (Stop). Wartość mierzonego czasu można obliczyć na podstawie zależności:. Tx = ( nStop − nStart ) ⋅ Tw. (4). Jeżeli odczytane wartości spełniają zależność:. nStart > nStop. (5). to nastąpiło przepełnienie licznika. W tym przypadku wartość mierzonego czasu należy obliczyć na podstawie zależności:. Tx = ( nmax − nStart + nStop + 1) ⋅ Tw. (6). gdzie: nmax - maksymalna wartość, która może być wpisana do licznika. Metoda ta może służyć do pomiaru czasów TX < nmax·TW. Względny błąd pomiaru programowej metody pomiaru czasu można opisać także zależnością (2). Liczbę zliczeń n należy obliczyć na podstawie zależności:. n = nStop − nStart. (7). lub w przypadku przepełnienia licznika na podstawie zależności:. n = nmax − nStart + nStop + 1. (8). Generator wzorcowy jest realizowany poprzez inkrementację licznika zrealizowanego w pamięci. PWT 2005 - POZNAŃ 8-9 GRUDNIA 2005. operacyjnej komputera. Wiąże się to z wywołaniem odpowiedniego fragmentu kodu programu. Wywołanie tego fragmentu kodu programu w systemach wielozadaniowych może być opóźnione przez system operacyjny i głównie z tego opróżnienia wynika błąd generatora częstotliwości wzorcowej ΔTw. Podobnie odczyt licznika w chwilach "Start" i "Stop" wiąże się z wywołaniem odpowiednich fragmentów kodu programu. Wywołania tych fragmentów kodu programu będą także opóźniane przez system operacyjny. Błąd bramkowania ΔTb będzie wynikał z różnicy opóźnień wprowadzanych przez system operacyjny przy realizacji odczytu licznika w chwili "Start" i chwili "Stop". 3. PROGRAMOWY POMIAR CZASU Z WYKORZYSTANIEM ZEGARÓW WINDOWS W systemach operacyjnych Windows występuje mechanizm nazywany zegarem programowym. Służy on do informowania aplikacji o upływie zadanego odcinka czasu. Aby aplikacja mogła skorzystać z mechanizmu zegara programowego system operacyjny musi przydzielić zegar aplikacji. Przydzielenie zegara następuje po wywołaniu funkcji API "UINT SetTimer (HWND hWnd, UINT nIDEvent, UINT uElapse, TIMERPROC lpTimerFunc);". Parametrami wywołania funkcji są: – hWnd - uchwyt okna, którego procedura będzie otrzymywała komunikat Windows WM_TIMER, – nIDEvent - identyfikator zegara, – uElapse - długość odmierzanego odcinka czasu w ms, – lpTimerFunc - wskaźnik do funkcji zwrotnej. Po przydzieleniu zegara programowego do kolejki komunikatów aplikacji, której został przydzielony zegar programowy, będzie wstawiany komunikat Windows WM_TIMER. Częstotliwość wstawiania tego komunikatu będzie wynosiła 1/uElapse. Mechanizm okresowego uruchamiania funkcji obsługi komunikatu WM_TIMER może posłużyć do implementacji generatora częstotliwości wzorcowej. W tym celu w pamięci operacyjnej komputera należy zrealizować licznik a w każdym wywołaniu funkcji obsługi komunikatu WM_TIMER należy inkrementować zrealizowany licznik. Pomiar czasu pomiędzy dwoma zdarzeniami będzie polegał na odczycie zawartości licznika w chwilach "Start" i "Stop" i obliczeniu szukanego odcinka czasu na podstawie zależności (4) lub (6) podstawiając za TW wartość parametru uElapse. Parametr uElapse może przyjmować wartości od 1 ms do 4 294 967 295 milisekund. Rozdzielczość wstawiania komunikatu WM_TIMER jest większa od 1 ms i wynosi 54,9 ms dla systemu operacyjnego Windows 98 oraz 10 ms dla systemów operacyjnych Windows 2000 i Windows XP. W celu weryfikacji tych danych wykonano pomiary odcinka czasu pomiędzy dwoma wywołaniami funkcji obsługującej komunikat WM_TIMER dla różnych nastaw parametru TZ = uElapse. Do pomiarów okresu pomiędzy wywołaniami funkcji obsługującej komunikat WM_TIMER wykorzystano specjalny program oraz zewnętrzny, 24– bitowy licznik taktowany przebiegiem o wzorcowej. 2/5.

(3) www.pwt.et.put.poznan.pl. częstotliwości 20 MHz. Uproszczony algorytm działania tego programu przedstawiono na rysunku 2. Licznik był otwierany opadającym zboczem sygnału RTS, a zamykany narastającym. Otwieranie następowało w funkcji obsługującej k-ty komunikat WM_TIMER, a zamykanie w funkcji obsługującej komunikat k+1. Błąd spowodowany czasem ustawienia poziomu linii RTS był na poziomie pojedynczych mikrosekund.. Celeron 2 GHz, Pentium 4 2,66 GHz oraz Pentium 4 HT 2,8 GHz. Zauważono, że rozdzielczość i błąd nastawy zegara dla starszych komputerów (AMD K6-2 300 i Celeron 466 - komputery A) były bardzo zbliżone. Podobnie zachowywały się zegary programowe w nowszych komputerach (Celeron 2 GHz, Pentium 4 2,66 GHz oraz Pentium 4 HT 2,8 GHz - komputery B). Na rysunkach 4 i 5 przedstawiono odpowiednio: wyniki pomiarów okresu zegara programowego oraz względny błąd nastawy. 80 70. TS [ms]. 60 50 40. Komputery A Komputery B. 30 20 10. TZ [ms]. 0 0. δ[%]. Win2000. 60. WinXP. 40 30 20 10. TZ [ms]. 0 150. 70. 200. 250. Rys. 3 Względny błąd ustawienia okresu zegara programowego. Względny błąd ustawienia zegara programowego oraz jego rozdzielczość zależą również od konfiguracji sprzętowej komputera. Porównano wyniki pomiarów dla kilku różnych komputerów z systemem operacyjnym Windows XP. Badano komputery zbudowane w oparciu o procesory: AMD K6-2 300 MHz, Celeron 466 MHz,. PWT 2005 - POZNAŃ 8-9 GRUDNIA 2005. 80. Komputery A Komputery B. 40 35 30 25 20 15 10 5. TZ[ms] 10. 20. 30. 40. 50. 60. 70. 80. Rys. 5. Względny błąd ustawienia okresu zegara programowego.. Tabela 1. Rozdzielczość zegara programowego.. 50. 100. 60. W tabeli 1 przedstawiono uśrednione wartości rozdzielczości zegara programowego TR dla badanych komputerów.. Win98. 70. 50. 50. 45. 0. (9). 90. 0. 40. 0. TZ − TS ⋅ 100% TS. 80. 30. δ[%]. 50. Pomiary okresu zegara programowego powtórzono 1000 razy dla każdej nastawy okresu TZ tego zegara z przedziału od 1 do 250 ms dla Windows 98 oraz od 1 do 60 ms dla Windows 2000 i XP. Dla każdej nastawy okresu obliczono wartość średnią TS. Na rysunku 3 przedstawiono względny błąd ustawienia zegara programowego δ w funkcji TZ,. Pomiary wykonano na komputerze z procesorem AMD K6-2 300 MHz. Błąd względny δ obliczano z zależności (9).. 100. 20. Rys. 4. Wyniki pomiarów okresu zegara programowego.. Rys. 2. Uproszczony algorytm programu wykorzystywanego w pomiarach.. δ=. 10. Zestaw komputerowy AMD K6-2 300 Celeron 466 Celeron 2 GHz P4 2.66 GHz P4 HT 2,8 GHz. TR [ms] 10.00 9.99 15.55 15.49 15.54. Komunikat WM_TIMER jest komunikatem Windows o niskim priorytecie, dlatego obsługa tego komunikatu może być zakłócona przez inne procesy pracujące w systemie. W celu wyznaczenia niestabilność okresu obsługi komunikatu WM_TIMER przez aplikację, zmierzono okres pomiędzy 2000 wywołań funkcji obsługującej ten komunikat dla różnych nastaw zegara Windows. Na. 3/5.

(4) www.pwt.et.put.poznan.pl. podstawie wyników pomiarów wyznaczono histogramy. Na rys. 6 przedstawiono histogram dla TZ = 10 ms (Celeron 466). Prezentowany rozkład jest zbliżony do rozkładu normalnego, dlatego dla powyższych nastaw mechanizm okresowego uruchamiania funkcji obsługi komunikatu WM_TIMER może być wykorzystany jako generator częstotliwości wzorcowej dla pomiarów odpowiednio długich odcinków czasu. 0,06. P. 0,05 0,04 0,03 0,02 0,01 0 9,85. T [ms] 9,9. 9,95. 10. 10,05. 10,1. 10,15. Rys. 6. Histogram dla czasu TZ = 10 ms (Celeron 466). Odpowiednio na rysunkach 7 i 8 przedstawiono dwa histogramy zmierzone dla komputera z procesorem P4 HT 2,8 GHz, dla nastaw TZ = 10 ms oraz TZ = 46 ms. Dla tych przypadków mechanizm okresowego uruchamiania funkcji obsługi komunikatu WM_TIMER nie może być wykorzystany jako generator częstotliwości wzorcowej. W pierwszym przypadku dla nastawy 10 ms wartość maksymalna rozkładu przypada dla 15,62 ms. W drugim przypadku, dla nastawy 46 ms, na histogramie pojawiły się dwa rozkłady wokół 46,9 ms i 62,5 ms. 0,07. 4. PROGRAMOWY POMIAR CZASU Z WYKORZYSTANIEM ZEGARA WYSOKIEJ ROZDZIELCZOŚCI Systemy Windows posiadają także inny mechanizm, który można wykorzystać do pomiaru czasu pomiędzy dwoma zdarzeniami. Jest to zegar wysokiej rozdzielczości (WR). Wykorzystanie mechanizmu zegara WR opiera się na zastosowaniu dwóch funkcji API: – „QueryPerformanceFrequency()”, – „QueryPerformanceCounter()”. Pierwsza funkcja: „BOOL QueryPerformanceFre­ quency(LARGE_INTEGER *lpFrequency );” jako argument przekazuje wskaźnik „lpFrequency” do struktury LARGE_INTEGER, w której w czasie wywołania zostanie zapisana częstotliwość zegara WR [3]. Mechanizm zegara WR do zliczania wykorzystuje układ licznika 8253/8254 lub następców w zależności od konfiguracji sprzętowej komputera PC. Układ programowalnego licznika znajduje się w układzie chiset’u komputera PC. Np. w układzie Intel 82443MX znajduje się układ 82C54 taktowany z częstotliwością 14,31818 MHz [5]. Zazwyczaj pełna częstotliwość taktowania nie jest dostępna w mechanizmie zegara WR. W tabeli 2 zestawiono częstotliwości zegarów WR dostępne dla programisty dla różnych procesorów i różnych systemów operacyjnych. Zazwyczaj pełna częstotliwość taktowania nie jest dostępna dla mechanizmu zegara WR. W tabeli 2 zestawiono częstotliwości zegarów WR, dostępne dla programisty, dla różnych systemów operacyjnych Windows i różnych procesorów. Tabela 2. Zestawienie częstotliwości zegarów WR. P. Procesor. 0,06 0,05. Celeron 466 MHz. 0,04 0,03. Celeron 1 GHz. 0,02 0,01 T [ms] 0 15,45. 15,5. 15,55. 15,6. 15,65. 15,7. 15,75. 15,8. Rys. 7. Histogram dla czasu TZ = 10 ms (P4 HT 2,8). 0,4. P. 0,35. Celeron 2 GHz Pentium 4 2,66 GHz. 0,3 0,25 0,2 0,15 0,1 0,05 0 46,61. Celeron 1,7 GHz. TZ[ms] 46,74. 46,86. 46,99. 62,21. 62,34. 62,46. 62,59. Rys. 8. Histogram dla czasu TZ = 46 ms (P4 HT 2,8).. PWT 2005 - POZNAŃ 8-9 GRUDNIA 2005. System operacyjny Windows 98 Windows 2000 Windows XP Windows 98 Windows 2000 Windows XP Windows 98 Windows 2000 Windows XP Windows 98 Windows 2000 Windows XP Windows 98 Windows 2000 Windows XP. Częstotliwość zegara WR [Hz] 1193180 1193182 1193182 1193180 3579545 3579545 1193180 3579545 3579545 1193180 3579545 3579545 1193180 3579545 3579545. Druga funkcja „BOOL QueryPerformanceCounter (LARGE_INTEGER *lpPerformanceCount);” służy do odczytu stanu licznika zegara WR, który jest zaimplementowany w pamięci operacyjnej komputera przez system operacyjny. Argument wywołania funkcji jest wskaźnik „lpPerformanceCount” do struktury „LARGE_INTEGER”, w której zostanie zapisana aktualna wartość licznika w chwili wywołania funkcji.. 4/5.

(5) www.pwt.et.put.poznan.pl. Przed pomiarem czasu z wykorzystaniem zegara WR należy określić częstotliwość tego zegara poprzez wywołanie funkcji „QueryPerformanceFrequency()” i obliczyć okres Tw. Pomiar czasu pomiędzy dwoma zdarzeniami będzie polegał na dwukrotnym wywołaniu funkcji „QueryPerformanceCounter()” w chwilach "Start" i "Stop" w celu odczytu zawartości licznika (nStart i nStop) i obliczeniu szukanego odcinka czasu na podstawie zależności (4) lub (6). Względny błąd pomiaru czasu z wykorzystaniem zegara wysokiej rozdzielczości można wyznaczyć na podstawie zależności (2). Ponieważ metoda ta wykorzystuje do taktowania zegar sprzętowy błąd generatora częstotliwości wzorcowej można pominąć. Na wielkość błędu będą wpływały tylko błąd zliczania i błąd bramkowania. Wartość błędu bramkowania będzie wynikała z różnicy opóźnień wprowadzanych przez system operacyjny przy wywołaniu funkcji „QueryPerformanceCounter()” w chwili „Start” i „Stop”. W celu wyznaczenia tego rozrzutu 106 razy zmierzono czas wywołania funkcji „QueryPerformanceCounter()” i wyznaczono histogram. Na podstawie histogramu dla poziomu ufności P = 0,99 wyznaczono błąd bramkowania ΔTb. Wyniki pomiarów i obliczeń zamieszczono w tabeli 3. W kolumnie 4 tabeli 3 zestawiono także zarejestrowano najgorsze wartości ΔTbnw. Prawdopodobieństwo wystąpienia tych wartości wyniosło P = 10-6. W systemach operacyjnych Windows 2000 i Windows XP wielkość najgorszy wartości ΔTb można znacznie zredukować poprzez nadanie aplikacji wywołującej funkcje „QueryPerformanceCounter()” priorytetu czasu rzeczywistego. Wyniki pomiarów najgorszej wartości ΔTbnw po nadaniu aplikacji priorytetu czasu rzeczywistego (ΔTbnwr) zestawiono w kolumnie 5 tabeli 3. Tabela 3. Wyniki pomiarów i obliczeń błędów bramkowania ΔTb. Procesor. Celeron 466 MHz. Celeron 1 GHz. Pentium 4 2,66 GHz. System operacyjny. Windows 98 Windows 2000 Windows XP Windows 98 Windows 2000 Windows XP Windows 98 Windows 2000 Windows XP. ΔTb (P = 0,99) [μs]. ΔTbnw (P = 10-6) [μs]. ΔTbnwr (P = 10-6) [μs]. 1,676. 40303. -. 1,676. 1090. 111. 1,676. 1594. 184. 0,838. 643. -. 0,558. 326. 62,8. 0,279. 590. 169. 0,838. 359. -. 0,279. 308. 35,2. 0,279. 640. 104. PWT 2005 - POZNAŃ 8-9 GRUDNIA 2005. 5. PODSUMOWANIE Analizując wyniki pomiarów zawarte w punkcie 3 zauważono, że dla komputerów wyposażonych w procesory pracujące z częstotliwością powyżej 2 GHz maleje rozdzielczość okresu obsługi komunikatów WM_TIMER z 10 na 15,5 ms (dla systemów operacyjnych z rodziny NT, czyli Windows 2000 oraz XP). Pomiary uzupełniono, powtarzając je na komputerach z procesorami 1 GHz oraz 1,7 GHz. Dla tych komputerów rozdzielczość wystawienia komunikatów WM_TIMER wynosiła średnio 10 ms (Windows 2000 i XP). Możliwy spadek rozdzielczości powoduje, że programista, po inicjalizacji zegara Windows, nie zna częstotliwości wstawiania komunikatów WM_TIMER do kolejki komunikatów aplikacji. Pomiary czasu wykorzystujące programowy zegar Windows mogą mieć charakter szacunkowy. Generator częstotliwości wzorcowej oparty na funkcji obsługującej komunikat WM_TIMER będzie się charakteryzował dużymi niestabilnościami. Znacznie lepszym zegarem programowym, który można wykorzystać do pomiaru czasu, jest zegar wysokiej rozdzielczości. W przypadku wykorzystania tego mechanizmu głównym składnikiem błędu pomiaru będzie błąd bramkowania. Z wyników pomiarów przedstawionych w punkcie 4 wynika, że wartość tego błędu będzie zależna od konfiguracji sprzętowej komputera oraz wersji systemu Windows. Wykorzystanie zegarów programowych do odmierzania odcinków czasu w systemach kontrolno – pomiarowych, wiąże się z koniecznością ich wcześniejszej weryfikacji w celu określenia ich rozdzielczości oraz stabilności. Do pomiarów czasu w systemach Windows można użyć także funkcję API: „GetTickCount()” oraz w kompilatorach C funkcji clock(). Rozdzielczość pomiarów czasu z wykorzystaniem tych funkcji jest na poziomie rozdzielczości okresu zegara programowego Windows. Najlepszym mechanizmem programowego pomiaru czasu dostępnym w systemach rodziny Windows jest zegar wysokiej rozdzielczości. Jeżeli jest on niewystarczający należy użyć systemu czasu rzeczywistego np. QNX. SPIS LITERATURY [1] C. Petzold, Programowanie Windows, Wydawnictwo RM, Warszawa 1999. [2] Leinecker R. C., Archer T., Visual C++6. Helion, Gliwice 2000. [3] http://www.msdn.microsoft.com [4] Intel 82443MX PCIset, http://www.intel.com. 5/5.

(6)

Cytaty

Powiązane dokumenty

Rozdział jest uzupełniony bibliografią książek (bibliografia artykułów znaj­ duje się w Scientific Books) z zakresu ogólnej historii nauki z uwzględnieniem

'Cieszy mnie i kolegów flisaków, że spraw ą naszych dłubanek zajął się pan magister M ieczysław Boczar, gdyż dotychczas n a próżno szukałem takich ludzi,

As discussed in the introduction, H attachment com- petes with Eley–Rideal-type abstraction reactions (see Eq. In the previous section, we have shown that multiple hydrogen

18(a) show the comparison of cogging torque waveforms under static and dynamic angular misalignment calculated by the proposed method and 3D FEM model, respectively..

A continuous wave 24 GHz radar module is used to capture the first contributions to the Dop- NET database and classi fication results based on discriminating these hand gestures

Wiąże się to ze szczególnym nasileniem we współczesnej biologii prac z zakresu ewolucjonizmu, zarówno teoretycznych, jak warsztatowych, jak również z

Stołyhwo w ZSRR zwiedził wiele muzeów w Leningradzie i Moskwie, znanych z bogatych materiałów naukowych. Jego spotkania z uczonymi radzieckimi były bardzo