Pomoc dla użytkowników systemu asix 6 i 7. Drajwer Bufor. Dok. Nr PLP6021 Wersja:

Podobne dokumenty
asix4 Podręcznik użytkownika BUFOR - drajwer protokołu uniwersalnego Podręcznik użytkownika

asix4 Podręcznik użytkownika CtMus04 - drajwer do wymiany danych z urządzeniami sterującymi MUS-04 firmy ELEKTORMETAL S.A.

asix4 Podręcznik użytkownika MUPASZ - drajwer protokołu sterownika MUPASZ Podręcznik użytkownika

asix5 Podręcznik użytkownika CZAZ - drajwer do komunikacji z urządzeniami CZAZ-U oraz CZAZ-UM

asix5 Podręcznik użytkownika Strategia buforowa

asix4 Podręcznik użytkownika SRTP - drajwer protokołu SRTP Podręcznik użytkownika

Pomoc dla użytkowników systemu asix 6. Strategia buforowa

asix4 Podręcznik użytkownika PROTRONICPS - drajwer protokołu regulatorów PROTRONICPS Podręcznik użytkownika

asix4 Podręcznik użytkownika S7_TCPIP - drajwer do wymiany danych ze sterownikami SIMATIC poprzez Ethernet

asix4 Podręcznik użytkownika DSC - drajwer protokołu sterownika DSC Podręcznik użytkownika

asix4 Podręcznik użytkownika Drajwer protokołu ADAM Podręcznik użytkownika

asix4 Podręcznik użytkownika CtSNPX - drajwer protokołu SNPX sterowników GE Fanuc Podręcznik użytkownika

asix4 Podręcznik użytkownika AS511 - drajwer protokołu AS511 dla SIMATIC Podręcznik użytkownika

asix4 Podręcznik użytkownika CAN_AC_PCI - drajwer protokołu CANBUS dla karty CAN_ACx_PCI Podręcznik użytkownika

asix4 Podręcznik użytkownika FILE2ASIX - drajwer importu danych do systemu asix Podręcznik użytkownika

asix4 Podręcznik użytkownika COMLI - drajwer protokołu COMLI Podręcznik użytkownika

asix4 Podręcznik użytkownika CtTwinCAT - drajwer protokołu ADS systemu TwinCAT Podręcznik użytkownika

asix4 Podręcznik użytkownika CtZxD400 - drajwer protokołu liczników energii serii ZxD400 f-my Landys & Gyr Podręcznik użytkownika

asix4 Podręcznik użytkownika FP drajwer protokołu mierników firmy METRONIC Kraków Podręcznik użytkownika

asix4 Podręcznik użytkownika DXF351 - drajwer protokołu urządzeń Compart DXF351 Podręcznik użytkownika

asix4 Podręcznik użytkownika AS512 - drajwer protokołu AS512 dla SIMATIC S5 Podręcznik użytkownika

Pomoc dla użytkowników systemu asix. CtEQABP - Drajwer liczników energii elektrycznej EQABP firmy POZYTON

asix4 Podręcznik użytkownika DMS500 - drajwer protokołu analizatorów DURAG DMS 500 Podręcznik użytkownika

asix4 Podręcznik użytkownika OMRON drajwer protokołu HOSTLINK dla sterowników OMRON Podręcznik użytkownika

asix4 Podręcznik użytkownika Drajwer DDE Podręcznik użytkownika

asix4 Podręcznik użytkownika SAPIS7 - drajwer protokołu SAPIS7 Podręcznik użytkownika

asix4 Podręcznik użytkownika CtAK - drajwer protokołu AK dla analizatorów MLT2 f-my Emerson Podręcznik użytkownika

asix4 Podręcznik użytkownika NetLink - drajwer protokołu MPI/Profibus dla SIMATIC S7 przy wykorzystaniu modułu NetLink Lite SYSTEME HELMHOLZ

asix4 Podręcznik użytkownika MSP1X - drajwer protokołu łącza szeregowego sterowników MSP-1x ELMONTEX Podręcznik użytkownika

asix4 Podręcznik użytkownika Drajwer OPC Podręcznik użytkownika

asix4 Podręcznik użytkownika LUMBUS - drajwer regulatorów firmy LUMEL Podręcznik użytkownika

asix4 Podręcznik użytkownika FESTO - drajwer protokołu interfejsu diagnostycznego sterowników FESTO Podręcznik użytkownika

asix4 Podręcznik użytkownika S700 - drajwer protokołu analizatorów gazowych firmy MAIHAK Podręcznik użytkownika

asix4 Podręcznik użytkownika MELSECA - drajwer dedykowanego protokołu sterowników MITSUBISHI Podręcznik użytkownika

asix4 Podręcznik użytkownika MicroSmart - drajwer do wymiany danych ze sterownikami MicroSmart firmy IDEC

asix4 Podręcznik użytkownika CtPmc drajwer centrali przeciwpożarowej POLON 4800 wg protokołu PMC-4000 Podręcznik użytkownika

asix4 Podręcznik użytkownika CtBASKI - drajwer systemu imisji BASKI Podręcznik użytkownika

asix4 Podręcznik użytkownika Drajwer Aggregate Podręcznik użytkownika

Ogólne zasady zestawiania połączeń modemowych pomiędzy sterownikami serii PCD firmy SAIA- Burgess Electronics oraz komputerem systemu asix

asix4 Podręcznik użytkownika BAZA - drajwer dostępu do baz danych Podręcznik użytkownika

asix4 Podręcznik użytkownika S-BUS - drajwer protokołu S-BUS łącza szeregowego sterowników SAIA-Burgess Electronics Podręcznik użytkownika

NIEZAWODNE ROZWIĄZANIA SYSTEMÓW AUTOMATYKI

NIEZAWODNE ROZWIĄZANIA SYSTEMÓW AUTOMATYKI

asix4 Podręcznik użytkownika Drajwer protokołu M-BUS Podręcznik użytkownika

Asix.Evo - Uruchomienie aplikacji WWW

asix4 Podręcznik użytkownika MODBUS_TCPIP - drajwer protokołu MODBUS_TCP/IP wg standardu OPEN MODBUS/TCP Podręcznik użytkownika

Konfiguracja przeglądarek do pracy z aplikacjami Asix.Evo Instalacja i konfiguracja dodatku IE Tab

Serwer Sieci Web (IIS)

NIEZAWODNE ROZWIĄZANIA SYSTEMÓW AUTOMATYKI. asix. Aktualizacja pakietu asix 4 do wersji 5 lub 6. Pomoc techniczna

NIEZAWODNE ROZWIĄZANIA SYSTEMÓW AUTOMATYKI. Asix.Evo. Przeglądarkowa wersja aplikacji Asix.Evo znane problemy. Pomoc techniczna

asix Autoryzacja dostępu do zasobów WWW systemu asix (na przykładzie systemu operacyjnego Windows 2008)

Pomoc dla użytkowników systemu Asix 8. Asix.Evo Harmonogramy. Dok. Nr PLP8E016 Wersja:

asix4 Podręcznik użytkownika CtLG - drajwer dedykowanego protokołu sterowników LG Master-K i Glofa GM Podręcznik użytkownika

Serwer Sieci Web (IIS)

Asix. Konfiguracja serwera MS SQL dla potrzeb systemu Asix. Pomoc techniczna NIEZAWODNE ROZWIĄZANIA SYSTEMÓW AUTOMATYKI

Serwer Sieci Web (IIS)

Serwer Sieci Web (IIS)

asix4 Podręcznik użytkownika CtSi400 - drajwer do komunikacji z centralą alarmową Sintony SI 400 firmy SIEMENS

Asix Konfiguracja systemu Asix dla usługi Pulpitu zdalnego Remote Desktop Services, (Terminal Services)

NIEZAWODNE ROZWIĄZANIA SYSTEMÓW AUTOMATYKI. MSDE 2000 A Instrukcja instalacji. Pomoc techniczna

asix4 Podręcznik użytkownika PPI - drajwer protokołu PPI sterowników SIMATIC S7 serii 200 Podręcznik użytkownika

NIEZAWODNE ROZWIĄZANIA SYSTEMÓW AUTOMATYKI. asix. Wymagania programowe systemu asix Pomoc techniczna

A P L I K A C Y J N A

Dok. Nr PLPN006 Wersja:

asix na łączach RAS konfiguracja

asix5 Podręcznik użytkownika AsComm - podręcznik użytkownika

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość

NIEZAWODNE ROZWIĄZANIA SYSTEMÓW AUTOMATYKI. Asix. Instrukcja zmiany licencji systemu Asix. Pomoc techniczna

asix4 Podręcznik użytkownika MACMAT - drajwer protokołu GAZ- MODEM korektorów przepływu gazu MACMAT Podręcznik użytkownika

dokumentacja AsComm asix AsComm Podręcznik użytkownika

dokumentacja Edytor Bazy Zmiennych Edytor Bazy Zmiennych Podręcznik użytkownika

Typy złożone. Struktury, pola bitowe i unie. Programowanie Proceduralne 1

SYSTEMY WIZUALIZACJI. ASIX wspólna platforma wizualizacji paneli operatorskich (HMI) i systemów nadrzędnych (SCADA)

PRZEMYSŁ SPOŻYWCZY. Kraft Foods Polska Olza w Cieszynie. System nadzoru linii produkcji wafli System sterowania myciem linii

AsComm - Zarządzania i monitorowania połączeń dokonywanych przez moduły systemu asix za pomocą portów szeregowych lub modemów

AsLogger - Rejestrator szybkozmiennych serii pomiarowych

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych.

Mikroprocesor Operacje wejścia / wyjścia

TRX API opis funkcji interfejsu

PRZEMYSŁ SPOŻYWCZY. Mlekovita w Wysokim Mazowieckim. System nadzoru linii serowarskiej

A P L I K A C Y J N A

Komunikacja między sterownikami przez protokół ADS

SYSTEMY OCHRONY ŚRODOWISKA. Pakiet ASEMIS

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 6

PRZEMYSŁ SPOŻYWCZY. UNILEVER Katowice. System nadzoru i sterowania liniami produkcji margaryny

SYSTEMY MES SGL CARBON POLSKA S.A. System monitoringu i śledzenia produkcji

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 8. Karol Tarnowski A-1 p.

OPERACJE NA PLIKACH. Podstawowe pojęcia:

asix5 Podręcznik użytkownika Notatnik - podręcznik użytkownika

/* dołączenie pliku nagłówkowego zawierającego deklaracje symboli dla wykorzystywanego mikrokontrolera */ #include <aduc834.h>

asix na łączach RAS konfiguracja Windows NT

asix4 Podręcznik użytkownika DMS285 - drajwer protokołu analizatorów DURAG DMS 285 Podręcznik użytkownika

Wstęp do programowania INP001213Wcl rok akademicki 2018/19 semestr zimowy. Wykład 8. Karol Tarnowski A-1 p.

Podstawy programowania w języku C++

Java. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

Informatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki

FAQ: /PL Data: 09/06/2012. Zastosowanie zmiennych Raw Data Type WinCC v7.0

A P L I K A C Y J N A

2 Przygotował: mgr inż. Maciej Lasota

Transkrypt:

Pomoc dla użytkowników systemu asix 6 i 7 www.asix.com.pl Drajwer Bufor Dok. Nr PLP6021 Wersja: 2012-03-16

ASKOM i asix to zastrzeżone znaki firmy ASKOM Sp. z o. o., Gliwice. Inne występujące w tekście znaki firmowe bądź towarowe są zastrzeżonymi znakami ich właścicieli. Wszelkie prawa zastrzeżone. Nieautoryzowane rozpowszechnianie całości lub fragmentu niniejszej publikacji w j akiejkolwiek p ostaci jest zabronione. Wykonywanie kopii metodą kserograficzną, fotograficzną lub inną powoduje naruszenie praw autorskich niniejszej publikacji. ASKOM Sp. z o. o. nie bierze żadnej odpowiedzialności za jakiekolwiek szkody wynikłe z wykorzystywania zawartych w publikacji treści. Copyright 2010, ASKOM Sp. z o. o., Gliwice ASKOM Sp. z o. o., ul. Józefa Sowińskiego 13, 44-121 Gliwice, tel. +48 (0) 32 3018100, fax +48 (0) 32 3018101, http://www.askom.com.pl, e-mail: office@askom.com.pl

dokumentacja drajwer BUFOR Obsługa 1 Kanał Bufor W systemie wizualizacji asix został zaimplementowany uniwersalny kanał transmisji o nazwie BUFOR, który pozwala na wymianę danych pomiędzy menedżerem komunikacyjnym Asmen, a dowolnym programem transmisji danych procesowych opracowanym przez użytkownika. Kanał BUFOR jest realizowany przez dwa programy: - uniwersalny drajwer (zwany dalej BUFOR, dostarczany przez ASKOM) zapewniający komunikację pomiędzy menedżerem komunikacyjnym Asmen i dowolnym programem użytkownika, - drajwer użytkownika (zwany dalej USERDRV), zaimplementowany w postaci procesu działającego w środowisku WINDOWS 95/NT. Wymiana danych pomiędzy przedmiotowymi programami jest realizowana poprzez plik wymiany (ang. memory mapped file). Synchronizacja dostępu do pliku wymiany jest realizowana przy wykorzystaniu obiektu typu mutex. 2 Opis zasobów drajwera użytkownika Plik wymiany wykorzystywany do wymiany danych pomiędzy USERDRV i BUFOR musi być utworzony przez USERDRV. Struktury danych opisujących zmienne procesowe znajdujące się w tym pliku muszą być przygotowane przez USERDRV na etapie inicjacji drajwera i udostępnione poprzez deskryptor UserDesc, umieszczony na początku pliku wymiany. Struktura deskryptora UserDesc podana jest poniżej: struct UserDesc { #define USER_NAME 15 byte name[user_name]; word progmajor word progminor; word major; word minor; word flags; word status; word items; DWORD vardescoffset; HANDLE synchromutex; word globalread; word globalwrite; word rezerwa1; word rezerwa2; }; // nazwa drajwera // numer wersji USERDRV // porządkowy numer wersji USERDRV // główny numer wersji protokołu // porządkowy numer wersji protokołu // charakterystyka sposobu pracy // status drajwera // liczba obsługiwanych zmiennych // (liczba deskryptorów zmiennych w tablicy // VarDesc) // położenie tablicy deskryptorów zmiennych // w pliku wymiany (offset względem początku // pliku wymiany) // uchwyt obiektu synchronizacji typu mutex // globalna flaga odczytu // globalna flaga zapisu ASKOM, Gliwice Styczeń 2010 1

Obsługa dokumentacja drajwer BUFOR Znaczenia poszczególnych pól struktury UserDesc podane są poniżej: Name progmajor progminor major minor flags - znaczenia informacyjne - znaczenia informacyjne - znaczenia informacyjne - dla weryfikacji zgodności wersji BUFOR i USERDRV - dla weryfikacji zgodności wersji BUFOR i USERDRV - określa sposób pracy drajwera USERDRV. Pole ma postać flagi bitowej. Aktualnie zdefiniowane flagi to: BFLAG_USERTIME - USERDRV ustawia czasy odczytu zmiennych. BFLAG_AUTOREFRESH - USERDRV automatycznie odświeża dane bez oczekiwania na sygnał z BUFOR Pozostałe bity pola flags muszą być wyzerowane. Status globalread globalwrite - aktualny stan USERDRV. Sposób użycia pola nie jest jeszcze zdefiniowany. Początkowo powinien być wyzerowany. - flaga służąca do przekazywania zleceń odczytu z BUFOR do USERDRV. Szczegółowy opis użycia przy opisie wykonania operacji odczytu. Pole powinno być inicjowane na wartość 0, - flaga służąca do przekazywania zleceń zapisu z BUFOR do USERDRV. Szczegółowy opis użycia przy opisie wykonania operacji zapisu. Pole powinno być inicjowane na wartość 0, synchromutex - uchwyt obiektu synchronizacj typu mutex, synchronizującego dostęp BUFOR i USERDRV do wspólnego pliku wymiany. rezerwa1 - pole rezerwowe, inicjowane na wartość 0, rezerwa2 - pole rezerwowe, inicjowane na wartość 0. Nazwa programu użytkownika, nazwa pliku wymiany oraz parametry przekazywane do programu użytkownika jako parametry linii komendy są deklarowane przy parametryzacji drajwera BUFOR (w sekcji Asmena w pliku 'ini'). 3 Deskryptory zmiennych procesowych Zmienne procesowe są opisane poprzez deskryptory, umieszczone w tablicy VarDesc. Tablica VarDesc umieszczona jest w pliku wymiany. Położenie tablicy względem początku pliku wymiany określa pole vardescoffset deskryptora UserDesc. Wszystkie operacje realizowane przez BUFOR i USERDRV bazują na zawartości deskryptorów VarDesc. Inicjowanie deskryptorów jest realizowane częściowo przez USERDRV na etapie uruchamiania procesu USERDRV (wpisanie typu, liczby elementów, offsetów buforów odczytu i zapisu), natomiast ich pełne zainicjowanie jest kończone przez BUFOR w fazie tworzenia bazy zmiennych procesowych Asmena. Struktura deskryptora VarDesc podana jest poniżej: typedef struct VarDesc VARD 2 Styczeń 2010 ASKOM, Gliwice

dokumentacja drajwer BUFOR Obsługa struct VarDesc { word type; // typ zmiennej word items; // maksymalna liczba elementów zmiennej (zmienna może // być tablicą) dword period; // liczba sekund pomiędzy odświeżeniami wartości zmiennej /* pola używane przy operacjach odczytu/odświeżania */ DWORD readbuffer; // położenie początku bufora operacji odczytu/odświeżania // względem początku pliku wymiany word readdatastat; // status odczytanej wartości zmiennej word readquery; // status poleceń odczytu/odświeżania word readresponse; // status realizacji poleceń odczytu/odświeżania dword readtime; // czas operacji odczytu przekazywany Asmenowi byte readrez1; // pole rezerwowe word readrez2; // pole rezerwowe /* pola używane przy operacjach zapisu */ DWORD writebuffer; // położenie początku bufora operacji odczytu/odświeżania // względem początku pliku wymiany word writedatastat; // status zapisu wartości zmiennej word writequery; // status poleceń zapisu word writeresponse; // status realizacji poleceń zapisu byte writerez1; // pole rezerwowe word writerez2; // pole rezerwowe }; USERDRV inicjuje następujące pola struktury VARD: Type - używany przez BUFOR w celu sprawdzenia zgodności typu zmiennej oraz typu oczekiwanego przez funkcję przeliczającą zadeklarowaną dla tej zmiennej. Lista typów zmiennych zawarta jest w pliku nagłówkowym bufor.h, Items - maksymalna liczba elementów (dla zmiennych tablicowych), ReadBuffer - położenie bufora, służącego do odczytu zmiennych, względem początku pliku wymiany. Rozmiar bufora powinien być identyczny z rozmiarem zmiennej, writebuffer - położenie bufora, służącego do zapisu zmiennych, względem początku pliku wymiany. Rozmiar bufora powinien być identyczny z rozmiarem zmiennej. Jeśli jest równy NULL, to zapis zmiennej jest zablokowany, readrez1 - pole rezerwowe. Inicjowane na wartość 0, readrez2 - pole rezerwowe. Inicjowane na wartość 0, writerez1 - pole rezerwowe. Inicjowane na wartość 0, writerez2 - pole rezerwowe. Inicjowane na wartość 0, Pozostałe pola są ustawiane przez BUFOR w trakcie budowania listy zmiennych lub są polami synchronizującymi. W każdym przypadku, pola te powinny być początkowo wyzerowane. Znaczenie pól inicjowanych prze BUFOR jest następujące: Period - okres odświeżania w sekundach. Ustawiany przez BUFOR. Ma znaczenie jedynie informacyjne. Asmen ze swojej strony liczy czasy odświeżeń i będzie ASKOM, Gliwice Styczeń 2010 3

Obsługa dokumentacja drajwer BUFOR zlecał operacje odczytu w odpowiednich momentach. Drajwer USERDRV, który wykonuje automatyczne odświeżanie zmiennych może używać pola period do określenia częstości odczytów, ReadTime - USERDRV przekazuje w polu readtime czas odczytu zmiennej w postaci sekund liczonych od 1.1.1980. Drajwer nie musi obsługiwać tego pola jeśli flaga BFLAG_USERTIME w deskryptorze UserDesc nie została ustawiona. readdatastat readquery readresponse - pola synchronizacji operacji odczytu. Znaczenie opisane w punkcie 6, writedatastat writequery writeresponse - pola synchronizacji operacji zapisu. Znaczenie opisane w punkcie 7, 4 Parametryzacja drajwera BUFOR Parametryzacja drajwera BUFOR wymaga podania : nazwy pliku wymiany, który służy do wymiany danych pomiędzy drajwerem BUFOR i drajwerem USERDRV, nazwy programu, który zostanie załadowany przez drajwer BUFOR jako drajwer USERDRV, parametrów linii komendy, które należy przekazać do drajwera USERDRV. Poniżej została podana deklaracja drajwera użytkownika, realizowanego przez program USER.EXE, wymieniającego dane z drajwerem BUFOR poprzez plik wymiany o nazwie PLIK_MMF. Do programu USER.EXE przekazywane są trzy parametry. TEST = BUFOR, PLIK_MMF, USER, PAR1 PAR2 PAR3 Gdzie: TEST - jest nazwą kanału logicznego, wykorzystującego drajwer użytkownika. 5 Deklarowanie zmiennych procesowych Adres symboliczny zmiennej procesowej ma postać : Iindex gdzie: index - indeks danej zmiennej w tablicy deskryptorów zmiennych drajwera (VarDesc). Pierwsza zmienna posiada indeks 1. Pozostałe parametry w deklaracji zmiennej procesowej mają typowe znaczenie. 4 Styczeń 2010 ASKOM, Gliwice

dokumentacja drajwer BUFOR Obsługa 6 Uzyskiwanie dostępu do wspólnych danych Ze względu na niezależną pracę BUFOR i USERDRV konieczne jest zapewnienie synchronizacji dostępu do wspólnych danych w trakcie realizacji wszelkich operacji związanych z odczytem lub zapisem zmiennych procesowych poprzez wspólny plik wymiany. Synchronizacja przedmiotowego dostępu jest realizowana w oparciu o procedury API WIN32 operujące na obiekcie klasy mutex. Zakłada się, że mutex synchronizujący dostęp do wspólnego pliku wymiany będzie tworzony przez USERDRV na etapie jego inicjacji, a jego identyfikator będzie przekazany drajwerowi BUFOR poprzez pole synchromutex deskryptora UserDesc. Poniżej podano przykładowy kod źródłowy realizujący utworzenie mutexa: HANDLE TestMutex; struct UserDesc UserDesc; short UtworzenieSemafora(void) { if (TestMutex = CreateMutex(NULL, FALSE, NULL) == NULL) { /* błąd utworzenia semafora. Powrót z błędem */ return ERROR; } /* przekazanie identyfikatora drajwerowi BUFOR */ up->synchromutex = TestMutex; return OK; } Poniżej podano przykładowy kod realizujący synchronizowany dostęp do wspólnego pliku wymiany : void ObsługaWspólnychDanych(void) { /* oczekiwanie na dostęp do wspólnego pliku wymiany */ WaitForSingleObject(TestMutex,INFINITE); /* bezpieczne działanie na wspólnych danych */ }... /* zwolnienie prawa dostępu do wspólnego pliku wymiany */ ReleaseMutex(TestMutex); ASKOM, Gliwice Styczeń 2010 5

Obsługa dokumentacja drajwer BUFOR 7 Realizacja operacji odczytu W operacjach odczytu zmiennej procesowej biorą udział pola readbuffer, readdatastat, readquery, readresponse, readtime struktury VARD. Pola readtime, readdatastat i bufor readbuffer mogą być zmieniane tylko przez USERDRV. Pola readresponse i readquery są zmieniane przez obie strony. Definicje wszystkich flag użytych w opisie oraz statusy wykonania operacji są zdefiniowane w pliku nagłówkowym bufor.h. Poniższe operacje są wykonywane w przypadku drajwera USERDRV, który nie realizuje automatycznego odświeżania wartości zmiennych procesowych. Sekwencja operacji dla drajwera BUFOR - inicjacja odczytu: 2/ jeżeli bit INREAD w polu readresponse (poprzedni odczyt jest ciągle wyzerowany) to zaniechanie inicjacji odczytu, 3/ wyzerowanie pola readresponse, 4/ ustawienie flagi REQUEST w polu readquery, 5/ powtórzenie kroków 2/, 3/ i 4/ dla wszystkich zmiennych, których odczyt jest inicjowany, 6/ ustawienie pola globalread w deskryptorze UserDesc na wartość READ_REQUEST, 7/ zwolnienie prawa dostępu. Sekwencja operacji dla drajwera USERDRV - inicjacja odczytu na żądanie BUFOR : 1/ sprawdzenie pola globalread w deskryptorze UserDesc. Jeżeli jest niezerowe, to należy je wyzerować, a następnie przejść do przeglądu wszystkich zmiennych według kroków 2/ 7/, 2/ uzyskanie prawa dostępu, 3/ sprawdzenie ustawienia flagi REQUEST w polu readquery. Jeżeli ustawiony to wykonanie kroków 4/ i 5/, 4/ wyzerowanie pola readquery, 5/ wewnętrzna inicjacja fizycznego odczytu i ustawienie flagi INREAD w polu readresponse, 6/ wykonanie kroków 3/, 4/ i 5/ dla wszystkich zmiennych, 7/ zwolnienie prawa dostępu. Sekwencja operacji dla USERDRV - zakończenie odczytu: 2/ wpisanie nowej wartości do bufora readbuffer, ustawienie pola readdatastat oraz pola readtime (jeżeli drajwer USERDRV samodzielnie ustawia czas odczytu), 3/ ustawienie flagi DONE i wyzerowanie flagi INREAD w polu readresponse, 4/ powtórzenie kroków 2/ i 3/ dla wszystkich zmiennych, których odczyt został zakończony, 5/ zwolnienie prawa dostępu. Sekwencja operacji dla BUFOR - zakończenie odczytu: 2/ dla wszystkich zmiennych, których flaga DONE w polu readresponse jest ustawiona, pobranie zawartości bufora readbuffer oraz pól readdatastat i readtime, 6 Styczeń 2010 ASKOM, Gliwice

dokumentacja drajwer BUFOR Obsługa 3/ zwolnienie prawa dostępu. 8 Realizacja operacji zapisu W operacjach zapisu zmiennej procesowej biorą udział pola writebuffer, writedatastat, writequery, writeresponse. Pole writedatastat może być zmieniane tylko przez drajwer USERDRV. Bufor writebuffer jest zmieniany tylko przez drajwer BUFOR. Pola writeresponse i writequery są zmieniane przez obie strony. Definicje wszystkich flag użytych w opisie oraz statusy wykonania operacji są zdefiniowane w pliku nagłówkowym bufor.h. Sekwencja operacji dla BUFOR - inicjacja zapisu: 2/ jeżeli bit INWRITE w polu writeresponse jest ustawiony (poprzedni zapis jest ciągle wykonywany), to zaniechanie inicjacji (status błędu lub ponowienie próby zapisu po pewnym czasie), 3/ wyzerowanie pola writeresponse, 4/ wpisanie do bufora writebuffer nowej wartości, ustawienie flagi REQUEST w polu writequery, 5/ powtórzenie kroków 2/, 3/ i 4/ dla wszystkich zmiennych zapisywanych w danym cyklu pracy drajwera BUFOR, 6/ ustawienie pola globalwrite w deskryptorze UserDesc na wartość WRITE_REQUEST, 7/ zwolnienie prawa dostępu. Sekwencja operacji dla USERDRV - inicjacja zapisu: 1/ sprawdzenie pola globalwrite w deskryptorze UserDesc. Jeżeli jest niezerowe, to należy je wyzerować, a następnie przejść do przeglądu wszystkich zmiennych w sposób opisany poniżej, 2/ uzyskanie prawa dostępu, 3/ jeżeli flaga REQUEST w polu writequery jest ustawiona, to wykonanie kroków 4/ i 5/, 4/ wyzerowanie pola writequery, 5/ wewnętrzna inicjacja fizycznego zapisu i ustawienie flagi INWRITE w polu writeresponse, 6/ powtórzenie kroków 3/, 4/ i 5/ dla wszystkich zmiennych procesowych, 7/ zwolnienie prawa dostępu. Sekwencja operacji dla USERDRV - zakończenie zapisu: 2/ ustawienie pola writedatastat, 3/ wyzerowanie flagi INWRITE i ustawienie flagi DONE w polu writeresponse, 4/ powtórzenie kroków 2/ i 3/ dla wszystkich zmiennych dla których zakończono operacje zapisu, 5/ zwolnienie prawa dostępu. Sekwencja operacji dla BUFOR - zakończenie zapisu: 2/ jeżeli flaga DONE w polu writeresponse jest ustawiona, to pobranie statusu z pola writedatastat, ASKOM, Gliwice Styczeń 2010 7

Obsługa dokumentacja drajwer BUFOR 3/ powtórzenie punktu 2/ dla wszystkich zmiennych, dla których zainicjowano zapis, 4/ zwolnienie prawa dostępu. 9 Plik nagłówkowy bufor.h Definicje wszystkich flag użytych w opisie oraz statusy wykonania operacji są zdefiniowane w pliku nagłówkowym bufor.h. Poniżej podano zawartość tego pliku. #define BFLAG_USERTIME 1 #define BFLAG_AUTOREFRESH 2 /* flaga żądania odczytu lub zapisu */ #define REQUEST 1 /* flagi opisujące stan realizacji operacji odczytu lub zapisu */ #define INREAD 1 #define INWRITE 1 #define DONE 2 /* typy zmiennych procesowych */ #define BTYPE 1 // bajt #define ITYPE 2 // integer #define WTYPE 3 // unsigned integer #define LTYPE 4 // long #define DWTYPE 5 // unsigned long #define FPTYPE 6 // float type /* statusy wykonania operacji zwracane przez drajwer */ #define AVD_GOOD 0 // o.k. #define AVD_BAD 1 // dana nie istnieje #define AVD_FAIR 2 // dana z poprzedniego odczytu. Aktualny // odczyt zakończył się błędem #define AVD_POOR 3 // dana sygnalizowana przez drajwer jako // mało wiarygodna #define AVD_ERROR 4 // dana sygnalizowana przez drajwer jako zła 8 Styczeń 2010 ASKOM, Gliwice

dokumentacja PEdit SPIS TREŚCI Spis treści 1 KANAŁ BUFOR 2 OPIS ZASOBÓW DRAJWERA UŻYTKOWNIKA 3 DESKRYPTORY ZMIENNYCH PROCESOWYCH 4 PARAMETRYZACJA DRAJWERA BUFOR 5 DEKLAROWANIE ZMIENNYCH PROCESOWYCH 6 UZYSKIWANIE DOSTĘPU DO WSPÓLNYCH DANYCH 7 REALIZACJA OPERACJI ODCZYTU 8 REALIZACJA OPERACJI ZAPISU 9 PLIK NAGŁÓWKOWY BUFOR.H 1 1 2 4 4 5 6 7 8 ASKOM, Gliwice Styczeń 2010 9