PROGRAMOWE METODY POMIARU CZASU W SYSTEMACH OPERACYJNYCH WINDOWS



Podobne dokumenty
Zastosowanie procesorów AVR firmy ATMEL w cyfrowych pomiarach częstotliwości

Laboratorium Komputerowe Systemy Pomiarowe

Metody obsługi zdarzeń

Układy czasowo-licznikowe w systemach 80x86

Ćwicz. 4 Elementy wykonawcze EWA/PP

Instrukcja użytkownika ARSoft-WZ1

Ćwiczenie 7 POMIARY CZĘSTOTLIWOŚCI I INTERWAŁU CZASU Opracowała: A. Szlachta

Państwowa Wyższa Szkoła Zawodowa

Układy czasowo-licznikowe w systemach mikroprocesorowych

U 2 B 1 C 1 =10nF. C 2 =10nF

Wstęp Architektura... 13

Laboratorium Telewizji Cyfrowej

Badanie właściwości tłumienia zakłóceń woltomierza z przetwornikiem A/C z dwukrotnym całkowaniem

Opis ultradźwiękowego generatora mocy UG-500

Liniowe układy scalone. Elementy miernictwa cyfrowego

Szkoła programisty PLC : sterowniki przemysłowe / Gilewski Tomasz. Gliwice, cop Spis treści

Statyczne badanie wzmacniacza operacyjnego - ćwiczenie 7

Funkcje: wejściowe, wyjściowe i logiczne. Konfigurowanie zabezpieczeń.

PROGRAM TESTOWY LCWIN.EXE OPIS DZIAŁANIA I INSTRUKCJA UŻYTKOWNIKA

Przetworniki cyfrowo analogowe oraz analogowo - cyfrowe

Temat ćwiczenia: Przekaźniki półprzewodnikowe

Uśrednianie napięć zakłóconych

POMIAR CZĘSTOTLIWOŚCI I INTERWAŁU CZASU

4. Schemat układu pomiarowego do badania przetwornika

Systemy wbudowane. Uniwersytet Łódzki Wydział Fizyki i Informatyki Stosowanej. Witold Kozłowski

ZASADY DOKUMENTACJI procesu pomiarowego

1 Moduł Diagnostyki Sieci

1. Opis. 2. Wymagania sprzętowe:

POMIAR PRĘDKOŚCI OBROTOWEJ Z UŻYCIEM MIKROKONTROLERA Z RODZINY 8051.

2.2 Opis części programowej

Zaprojektowanie i zbadanie dyskryminatora amplitudy impulsów i generatora impulsów prostokątnych (inaczej multiwibrator astabilny).

Instrukcja do ćwiczenia laboratoryjnego

Certification Request Services

Technika Mikroprocesorowa Laboratorium 5 Obsługa klawiatury

Układy sekwencyjne. Podstawowe informacje o układach cyfrowych i przerzutnikach (rodzaje, sposoby wyzwalania).

Wyznaczanie budżetu niepewności w pomiarach wybranych parametrów jakości energii elektrycznej

Programowanie mikrokontrolerów AVR z rodziny ATmega.

ĆWICZENIE 15 BADANIE WZMACNIACZY MOCY MAŁEJ CZĘSTOTLIWOŚCI

Sygnały DRQ i DACK jednego kanału zostały użyte do połączenia kaskadowego obydwu sterowników.

Budowa Mikrokomputera

Cyfrowy pomiar czasu i częstotliwości Przetwarzanie sygnałów pomiarowych (analogowych)

TECHNIKA CYFROWA ELEKTRONIKA ANALOGOWA I CYFROWA. Układy czasowe

Ćw. 18: Pomiary wielkości nieelektrycznych II

Częstościomierz wysokiej rozdzielczości

Układy zegarowe w systemie mikroprocesorowym

Opublikowane na Sonel S.A. - Przyrządy pomiarowe, kamery termowizyjne (

STEROWANIE ROBOTEM MOBILNYM TYPU LINE-FOLLOWER

Laboratorium Podstaw Pomiarów

Diagnostyka pamięci RAM

Laboratorium LAB1. Moduł małej energetyki wiatrowej

LABORATORIUM PRZEMYSŁOWYCH SYSTEMÓW STEROWANIA

SYSTEMY OPERACYJNE: STRUKTURY I FUNKCJE (opracowano na podstawie skryptu PP: Królikowski Z., Sajkowski M. 1992: Użytkowanie systemu operacyjnego UNIX)

Temat: Projektowanie i badanie liczników synchronicznych i asynchronicznych. Wstęp:

Przerwania, polling, timery - wykład 9

PC 3 PC^ TIMER IN RESET PC5 TIMER OUT. c 3. L 5 c.* Cl* 10/H CE RO WR ALE ADO AD1 AD2 AD3 AD4 A05 A06 LTJ CO H 17 AD7 U C-"

Zastosowania mikrokontrolerów w przemyśle

Ćwiczenie 23. Cyfrowe pomiary czasu i częstotliwości.

LABORATORIUM PROCESORY SYGNAŁOWE W AUTOMATYCE PRZEMYSŁOWEJ. Przetwornik ADC procesora sygnałowego F/C240 i DAC C240 EVM

WFiIS CEL ĆWICZENIA WSTĘP TEORETYCZNY

UKŁADY SEKWENCYJNO CZASOWE I SPECJALNE

Instrukcja użytkownika ARsoft-CFG WZ1 4.0

Przetwarzanie AC i CA

STEROWNIKI PROGRAMOWALNE OBSŁUGA AWARII ZA POMOCĄ STEROWNIKA SIEMENS SIMATIC S7

Politechnika Gdańska WYDZIAŁ ELEKTRONIKI TELEKOMUNIKACJI I INFORMATYKI. Katedra Metrologii i Optoelektroniki. Metrologia. Ilustracje do wykładu

TEMAT: PROJEKTOWANIE I BADANIE PRZERZUTNIKÓW BISTABILNYCH

Spis treœci. Co to jest mikrokontroler? Kody i liczby stosowane w systemach komputerowych. Podstawowe elementy logiczne

Automatyka i pomiary wielkości fizykochemicznych. Instrukcja do ćwiczenia VI Dobór nastaw regulatora typu PID metodą Zieglera-Nicholsa.

Adresowanie obiektów. Adresowanie bitów. Adresowanie bajtów i słów. Adresowanie bajtów i słów. Adresowanie timerów i liczników. Adresowanie timerów

Podstawy elektroniki i metrologii

Uniwersytet Pedagogiczny im. Komisji Edukacji Narodowej w Krakowie

Rejestr HKEY_LOCAL_MACHINE

Zespół Szkół Technicznych w Suwałkach. Pracownia Systemów Komputerowych. Ćwiczenie Nr 13 ARCHITEKTURA SYSTEMU WINDOWS. Opracował Sławomir Zieliński

Pamięci półprzewodnikowe w oparciu o książkę : Nowoczesne pamięci. Ptc 2013/

LABORATORIUM. TIMERY w mikrokontrolerach Atmega16-32

XXXII Olimpiada Wiedzy Elektrycznej i Elektronicznej. XXXII Olimpiada Wiedzy Elektrycznej i Elektronicznej

STEROWANIE MASZYN I URZĄDZEŃ I. Laboratorium. 4. Przekaźniki czasowe

ANALIZA JAKOŚCI ENERGII ELEKTRYCZNEJ ANALIZA WARUNKÓW ZASILANIA

Prezentacja systemu RTLinux

LABORATORIUM. TIMERY w mikrokontrolerach Atmega16-32

1 Moduł Modbus ASCII/RTU

2. Narysuj schemat zastępczy rzeczywistego źródła napięcia i oznacz jego elementy.

Algorytm. a programowanie -

Ćwiczenie 23. Cyfrowe pomiary czasu i częstotliwości.

ARCHI 9000 CYFROWY SYSTEM REJESTRACJI

Zapoznanie się z podstawowymi strukturami liczników asynchronicznych szeregowych modulo N, zliczających w przód i w tył oraz zasadą ich działania.

WYKORZYSTANIE WEWNĘTRZNYCH GENERATORÓW RC DO TAKTOWANIA MIKROKONTROLERÓW AVR

WPROWADZENIE Mikrosterownik mikrokontrolery

Przetworniki AC i CA

ćw. Symulacja układów cyfrowych Data wykonania: Data oddania: Program SPICE - Symulacja działania układów liczników 7490 i 7493

CYFROWE PRZETWARZANIE SYGNAŁU PRZETWORNIKA OBROTOWO-IMPULSOWEGO

EGZAMIN POTWIERDZAJĄCY KWALIFIKACJE W ZAWODZIE Rok 2013 CZĘŚĆ PRAKTYCZNA

Instytut Fizyki Politechniki Łódzkiej Laboratorium Metod Analizy Danych Doświadczalnych Ćwiczenie 3 Generator liczb losowych o rozkładzie Rayleigha.

OPIS PROGRAMU OBSŁUGI STEROWNIKÓW INTECONT >> WAGMASTER << >> INTECONT <<

Funkcje: wejściowe, wyjściowe i logiczne. Konfigurowanie zabezpieczeń.

MODEL SYSTEMU DO AUTOMATYCZNEGO BADANIA MODUŁÓW ELEKTRONICZNYCH STOSOWANYCH W ZAPALNIKACH CZASOWYCH

PRZETWORNIK ADC w mikrokontrolerach Atmega16-32

Parametryzacja przetworników analogowocyfrowych

LABORATORIUM ELEKTRONICZNYCH UKŁADÓW POMIAROWYCH I WYKONAWCZYCH. Badanie detektorów szczytowych

Charakterystyka amplitudowa i fazowa filtru aktywnego

1 Moduł Modbus ASCII/RTU 3

Transkrypt:

Michał Maćkowski, Maciej Wawrzyniak olitechnika oznańska, Instytut Elektroniki i elekomunikacji 6-965 oznań, ul iotrowo 3A mmackow@et.put.poznan.pl; mwawrz@et.put.poznan.pl 25 oznańskie Warsztaty elekomunikacyjne oznań 8-9 grudnia 25 ROGRAMOWE MEODY OMIARU CZASU W SYSEMACH OERACYJNYCH WINDOWS Streszczenie: W artykule opisano sposób wykorzystania zegara programowego oraz zegara wysokiej rozdzielczości do odmierzania zadanych odcinków czasu. rzedstawiono 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. WROWADZENIE Obecnie wiele systemów kontrolno pomiarowych wykorzystuje komputery klasy C z systemami operacyjnymi z rodziny. 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 są systemami wielozadaniowymi. 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 nie są systemami czasu rzeczywistego i nie gwarantują pracującym aplikacjom odczytu zegara czasu rzeczywistego RC (ang. Real ime Clock). Aplikacje pracujące w są informowane przez system operacyjny o upływie czasu za pomocą zegara (stopera) programowego w postaci komunikatów WM_IMER. Rozdzielczość zegara programowego jest zależna od wersji systemu, dla rodziny, SE oraz Me wynosi 54,9 ms, z kolei dla systemów z rodziny N ( 2, X) wynosi 1 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, zależy od wielu czynników. Do 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 Różnorodność konfiguracji sprzętowej i programowej komputera wymusza na projektancie systemu doświadczalne określenie stabilności zegara Niestabilność zegara może powodować błędne działanie systemu podczas analizy szybkozmiennych sygnałów lub wydłużać czas regulacji regulatorów ID. 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. OMIAR CZASU RWANIA IMULSU Na rysunku 1 przedstawiono schemat blokowy układu do pomiaru czasu trwania X napięciowego sygnału prostokątnego U(t). Rys. 1. Schemat blokowy układu do pomiaru czasu trwania 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). W 25 - OZNAŃ 8-9 GRUDNIA 25 1/5

Czas trwania X sygnału prostokątnego U(t) można obliczyć na podstawie = n (1) w gdzie: n liczba zliczeń licznika, W okres generatora częstotliwości wzorcowej. Względny błąd pomiaru czasu tą metodą można obliczyć na podstawie 1 = + n w w + b b (2) gdzie: 1/n = W/ W - względny błąd zliczania (Δn = ±1), Δ W - bezwzględny błąd okresu generatora częstotliwości wzorcowej, Δ b - 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 W. 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 ( nstop nstart ) w = (4) Jeżeli odczytane wartości spełniają zależność: n Start > n Stop (5) to nastąpiło przepełnienie licznika. W tym przypadku wartość mierzonego czasu należy obliczyć na podstawie ( n nstart + nstop + ) w = 1 ma (6) gdzie: n ma - maksymalna wartość, która może być wpisana do licznika. Metoda ta może służyć do pomiaru czasów X < n ma W. 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 n = n Stop n Start (7) lub w przypadku przepełnienia licznika na podstawie n n n Start + n (8) = ma Stop +1 Generator wzorcowy jest realizowany poprzez inkrementację licznika zrealizowanego w pamięci 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 Δ w. odobnie 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 Δ b będzie wynikał z różnicy opóźnień wprowadzanych przez system operacyjny przy realizacji odczytu licznika w chwili "Start" i chwili "Stop". 3. ROGRAMOWY OMIAR CZASU Z WYKORZYSANIEM ZEGARÓW WINDOWS W systemach operacyjnych 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. rzydzielenie zegara następuje po wywołaniu funkcji AI "UIN Setimer (HWND hwnd, UIN nidevent, UIN uelapse, IMERROC lpimerfunc);". arametrami wywołania funkcji są: hwnd - uchwyt okna, którego procedura będzie otrzymywała komunikat WM_IMER, nidevent - identyfikator zegara, uelapse - długość odmierzanego odcinka czasu w ms, lpimerfunc - wskaźnik do funkcji zwrotnej. o przydzieleniu zegara programowego do kolejki komunikatów aplikacji, której został przydzielony zegar programowy, będzie wstawiany komunikat WM_IMER. Częstotliwość wstawiania tego komunikatu będzie wynosiła 1/uElapse. Mechanizm okresowego uruchamiania funkcji obsługi komunikatu WM_IMER 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_IMER należy inkrementować zrealizowany licznik. omiar 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 W wartość parametru uelapse. arametr uelapse może przyjmować wartości od 1 ms do 4 294 967 295 milisekund. Rozdzielczość wstawiania komunikatu WM_IMER jest większa od 1 ms i wynosi 54,9 ms dla systemu operacyjnego oraz 1 ms dla systemów operacyjnych 2 i X. W celu weryfikacji tych danych wykonano pomiary odcinka czasu pomiędzy dwoma wywołaniami funkcji obsługującej komunikat WM_IMER dla różnych nastaw parametru Z = uelapse. Do pomiarów okresu pomiędzy wywołaniami funkcji obsługującej komunikat WM_IMER wykorzystano specjalny program oraz zewnętrzny, 24 bitowy licznik taktowany przebiegiem o wzorcowej W 25 - OZNAŃ 8-9 GRUDNIA 25 2/5

częstotliwości 2 MHz. Uproszczony algorytm działania tego programu przedstawiono na rysunku 2. Licznik był otwierany opadającym zboczem sygnału RS, a zamykany narastającym. Otwieranie następowało w funkcji obsługującej k-ty komunikat WM_IMER, a zamykanie w funkcji obsługującej komunikat k+1. Błąd spowodowany czasem ustawienia poziomu linii RS był na poziomie pojedynczych mikrosekund. 2, entium 4 2,66 oraz entium 4 H 2,8. Zauważono, że rozdzielczość i błąd nastawy zegara dla starszych komputerów (AMD K6-2 3 i 466 - komputery A) były bardzo zbliżone. odobnie zachowywały się zegary programowe w nowszych komputerach ( 2, entium 4 2,66 oraz entium 4 H 2,8 - komputery B). Na rysunkach 4 i 5 przedstawiono odpowiednio: wyniki pomiarów okresu zegara programowego oraz względny błąd nastawy. 8 7 S [ms] 6 5 4 3 Komputery A Komputery B 2 1 Z [ms] 1 2 3 4 5 6 7 8 Rys. 2. Uproszczony algorytm programu wykorzystywanego w pomiarach. omiary okresu zegara programowego powtórzono 1 razy dla każdej nastawy okresu Z tego zegara z przedziału od 1 do 25 ms dla oraz od 1 do 6 ms dla 2 i X. Dla każdej nastawy okresu obliczono wartość średnią S. Na rysunku 3 przedstawiono względny błąd ustawienia zegara programowego δ w funkcji Z,. omiary wykonano na komputerze z procesorem AMD K6-2 3 MHz. Błąd względny δ obliczano z zależności (9). 1 9 8 7 6 5 4 3 2 1 δ[%] Z S δ = 1% (9) S Win Win2 WinX Z [ms] 5 1 15 2 25 Rys. 3 Względny błąd ustawienia okresu zegara Względny błąd ustawienia zegara programowego oraz jego rozdzielczość zależą również od konfiguracji sprzętowej komputera. orównano wyniki pomiarów dla kilku różnych komputerów z systemem operacyjnym X. Badano komputery zbudowane w oparciu o procesory: AMD K6-2 3 MHz, 466 MHz, Rys. 4. Wyniki pomiarów okresu zegara 5 45 4 35 3 25 2 15 1 δ[%] Komputery A Komputery B 5 Z[ms] 1 2 3 4 5 6 7 8 Rys. 5. Względny błąd ustawienia okresu zegara W tabeli 1 przedstawiono uśrednione wartości rozdzielczości zegara programowego R dla badanych komputerów. abela 1. Rozdzielczość zegara Zestaw komputerowy R [ms] AMD K6-2 3 1. 466 9.99 2 15.55 4 2.66 15.49 4 H 2,8 15.54 Komunikat WM_IMER jest komunikatem 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_IMER przez aplikację, zmierzono okres pomiędzy 2 wywołań funkcji obsługującej ten komunikat dla różnych nastaw zegara. Na W 25 - OZNAŃ 8-9 GRUDNIA 25 3/5

podstawie wyników pomiarów wyznaczono histogramy. Na rys. 6 przedstawiono histogram dla Z = 1 ms ( 466). rezentowany rozkład jest zbliżony do rozkładu normalnego, dlatego dla powyższych nastaw mechanizm okresowego uruchamiania funkcji obsługi komunikatu WM_IMER może być wykorzystany jako generator częstotliwości wzorcowej dla pomiarów odpowiednio długich odcinków czasu.,6,5,4,3,2,1 [ms] 9,85 9,9 9,95 1 1,5 1,1 1,15 Rys. 6. Histogram dla czasu Z = 1 ms ( 466). Odpowiednio na rysunkach 7 i 8 przedstawiono dwa histogramy zmierzone dla komputera z procesorem 4 H 2,8, dla nastaw Z = 1 ms oraz Z = 46 ms. Dla tych przypadków mechanizm okresowego uruchamiania funkcji obsługi komunikatu WM_IMER nie może być wykorzystany jako generator częstotliwości wzorcowej. W pierwszym przypadku dla nastawy 1 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.,7,6,5,4,3,2,1 [ms] 15,45 15,5 15,55 15,6 15,65 15,7 15,75 15,8 Rys. 7. Histogram dla czasu Z = 1 ms (4 H 2,8).,4,35,3,25,2,15,1,5 Z[ms] 46,61 46,74 46,86 46,99 62,21 62,34 62,46 62,59 Rys. 8. Histogram dla czasu Z = 46 ms (4 H 2,8). 4. ROGRAMOWY OMIAR CZASU Z WYKORZYSANIEM ZEGARA WYSOKIEJ ROZDZIELCZOŚCI Systemy 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 AI: QueryerformanceFrequency(), QueryerformanceCounter(). ierwsza funkcja: BOOL QueryerformanceFrequency(LARGE_INEGER *lpfrequency ); jako argument przekazuje wskaźnik lpfrequency do struktury LARGE_INEGER, 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 C. Układ programowalnego licznika znajduje się w układzie chiset u komputera C. 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 i różnych procesorów. abela 2. Zestawienie częstotliwości zegarów WR rocesor 466 MHz 1 1,7 2 entium 4 2,66 System operacyjny Częstotliwość zegara WR [Hz] 119318 2 1193182 X 1193182 119318 2 3579545 X 3579545 119318 2 3579545 X 3579545 119318 2 3579545 X 3579545 119318 2 3579545 X 3579545 Druga funkcja BOOL QueryerformanceCounter (LARGE_INEGER *lperformancecount); 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 lperformancecount do struktury LARGE_INEGER, w której zostanie zapisana aktualna wartość licznika w chwili wywołania funkcji. W 25 - OZNAŃ 8-9 GRUDNIA 25 4/5

rzed pomiarem czasu z wykorzystaniem zegara WR należy określić częstotliwość tego zegara poprzez wywołanie funkcji QueryerformanceFrequency() i obliczyć okres w. omiar czasu pomiędzy dwoma zdarzeniami będzie polegał na dwukrotnym wywołaniu funkcji QueryerformanceCounter() w chwilach "Start" i "Stop" w celu odczytu zawartości licznika (n Start i n Stop) 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). onieważ 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 QueryerformanceCounter() w chwili Start i Stop. W celu wyznaczenia tego rozrzutu 1 6 razy zmierzono czas wywołania funkcji QueryerformanceCounter() i wyznaczono histogram. Na podstawie histogramu dla poziomu ufności =,99 wyznaczono błąd bramkowania Δ b. Wyniki pomiarów i obliczeń zamieszczono w tabeli 3. W kolumnie 4 tabeli 3 zestawiono także zarejestrowano najgorsze wartości Δ bnw. rawdopodobieństwo wystąpienia tych wartości wyniosło = 1-6. W systemach operacyjnych 2 i X wielkość najgorszy wartości Δ b można znacznie zredukować poprzez nadanie aplikacji wywołującej funkcje QueryerformanceCounter() priorytetu czasu rzeczywistego. Wyniki pomiarów najgorszej wartości Δ bnw po nadaniu aplikacji priorytetu czasu rzeczywistego (Δ bnwr) zestawiono w kolumnie 5 tabeli 3. abela 3. Wyniki pomiarów i obliczeń błędów bramkowania Δ b. rocesor 466 MHz 1 entium 4 2,66 System operacyjny 2 X 2 X 2 X Δ b ( =,99) Δ bnw ( = 1-6 ) Δ bnwr ( = 1-6 ) 1,676 433-1,676 19 111 1,676 1594 184,838 643 -,558 326 62,8,279 59 169,838 359 -,279 38 35,2,279 64 14 5. ODSUMOWANIE 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 maleje rozdzielczość okresu obsługi komunikatów WM_IMER z 1 na 15,5 ms (dla systemów operacyjnych z rodziny N, czyli 2 oraz X). omiary uzupełniono, powtarzając je na komputerach z procesorami 1 oraz 1,7. Dla tych komputerów rozdzielczość wystawienia komunikatów WM_IMER wynosiła średnio 1 ms ( 2 i X). Możliwy spadek rozdzielczości powoduje, że programista, po inicjalizacji zegara, nie zna częstotliwości wstawiania komunikatów WM_IMER do kolejki komunikatów aplikacji. omiary czasu wykorzystujące programowy zegar mogą mieć charakter szacunkowy. Generator częstotliwości wzorcowej oparty na funkcji obsługującej komunikat WM_IMER 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. 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 można użyć także funkcję AI: GetickCount() oraz w kompilatorach C funkcji clock(). Rozdzielczość pomiarów czasu z wykorzystaniem tych funkcji jest na poziomie rozdzielczości okresu zegara programowego. Najlepszym mechanizmem programowego pomiaru czasu dostępnym w systemach rodziny jest zegar wysokiej rozdzielczości. Jeżeli jest on niewystarczający należy użyć systemu czasu rzeczywistego np. QNX. SIS LIERAURY [1] C. etzold, rogramowanie, Wydawnictwo RM, Warszawa 1999. [2] Leinecker R. C., Archer., Visual C++6. Helion, Gliwice 2. [3] http://www.msdn.microsoft.com [4] Intel 82443MX CIset, http://www.intel.com W 25 - OZNAŃ 8-9 GRUDNIA 25 5/5