System diagnostyczny detektora BAC w eksperymencie ZEUS

Transkrypt

System diagnostyczny detektora BAC w eksperymencie ZEUS
System diagnostyczny detektora BAC w eksperymencie ZEUS.
mgr inż. Tomasz Jeżyński
Instytut Systemów Elektronicznych PW
ul. Nowowiejska 15/19 Warszawa
[email protected]
1. Wstęp.
W celu prowadzenia badań struktury protonu w Ośrodku Niemieckiego Synchrotronu
Elektronowego (DESY, Hamburg) w 1990 r. powstał kołowy akcelerator
przeciwbieżnych wiązek elektronów (lub pozytonów) i protonów HERA, osiągający
energię zderzenia w środku masy przekraczającą 300GeV. Poszukuje się bardzo
rzadkich oddziaływań, dlatego w celu uzyskania dostatecznej statystyki, przeciwsobne
pakiety cząstek są zderzane ze sobą co 96 ns. Metody badawcze oparte są na rejestracji
obrazów poszczególnych zderzeń cząstek w pełnym kącie bryłowym. Do tego celu służą
wielofunkcyjne detektory pozwalające na rejestrowanie produktów zderzeń. Jednym z
czterech tego typu urządzeń pracujących na akceleratorze HERA jest detektor ZEUS [2]
zbudowany w ramach współpracy międzynarodowej. W jego konstrukcję zaangażowany
był między innymi Instytut Fizyki Doświadczalnej Uniwersytetu Warszawskiego oraz
Akademia Górniczo-Hutnicza z Krakowa. W ramach współpracy został zaprojektowany
i wykonany kalorymetr uzupełniający BAC (Backing Calorimeter) stanowiący integralną
część detektora ZEUS. Istotny wkład w projekt i budowę układów systemu akwizycji
danych wnieśli elektronicy z Instytutu Systemów Elektronicznych oraz Wydziału Fizyki
Politechniki Warszawskiej.
Część elektroniczna systemu akwizycji danych detektora BAC jest rozmieszczona
wewnątrz detektora ZEUS (elektronika front-end) oraz na zewnątrz w 22 kasetach
VME [3]. Sterownikiem każdej kasety jest jednostka centralna wyposażona w
transputer[4]. Strukturę tego systemu przedstawiono na rys. 1.
Rys. 1. Struktura warstwy elektronicznej systemu akwizycji danych detektora BAC.
Detektor BAC jest wyposażony w duży, rozproszony elektroniczny system pomiarowy i
akwizycyjny. Jego komponenty rozmieszczone są w wielu miejscach detektora, długości
połączeń dochodzą do 100 m. Dane otrzymywane z komór gazowych detektora [5]
odczytywane są przez 2200 kanałów analogowych i ok. 40 000 kanałów cyfrowych. Ciągły
nabór informacji z tych kanałów odbywa się dla każdego potencjalnego zderzenia cząstek,
czyli co 96ns.
Wszystkie transputery połączone są bezpośrednimi łączami komunikacyjnymi zwanymi
„linkami transputerowymi” [4] tworząc sieć typu drzewo połączoną w wierzchołku do
komputera VAX pracującego pod systemem VMS. Przez ten komputer możliwy jest dostęp
do transputerów umieszczonych w kasetach VME. Komputer VAX podłączony jest do sieci
TCPIP. Poglądowy schemat struktury blokowej przedstawiono na rys. 2 (szczegóły zawarto w
[6]).
Sieć
transputerów
Link transputerowy
Centrum
komputerowe
DESY
TCPIP
C
A
P
L
I
N
Komputer VAX
system VMS
Program
nadzorujący
akwizycję danych
Rys. 2. Struktura warstwy programistycznej systemu akwizycji danych detektora BAC.
Na sieci transputerów pracuje oprogramowanie napisane w języku programowania
równoległego OCCAM [7], zadaniem którego jest sterowanie i kontrolowanie pracą
wszystkich płyt elektronicznych umieszczonych w kasecie VME oraz pobieranie i
gromadzenie w buforach pamięciowych danych obrazu zderzenia. Na komputerze VAX
pracuje program napisany w języku C oraz FORTRAN, zadaniem którego jest pełny
nadzór nad warstwą elektroniczną, siecią transputerów i procesem naboru danych.
Na etapie projektowania detektora BAC nie przewidziano układów diagnostyki dla
poszczególnych płyt elektronicznych. Założono, że ocena jakości zbieranych danych
dokonywana będzie na podstawie analizy danych fizycznych. Kilkuletnia eksploatacja
detektora wykazała, że system taki jest niewystarczający. Analiza danych fizycznych nie
daje dokładnej odpowiedzi na pytanie, która część detektora i w jakim stopniu jest
niesprawna. Jednocześnie nie jest możliwe jednoznaczne określenie, który element z
całego toru pomiarowego jest uszkodzony, co skutkuje niemożnością szybkiej naprawy.
Poszczególne bloki systemu pomiarowego wymagają także okresowych kalibracji co w
posiadanym systemie jest bardzo czasochłonne i wymaga doświadczenia eksperckiego.
Wynikające stąd wnioski stały się punktem wyjścia do opracowania niezależnego
systemu diagnostycznego, który zadania funkcjonalne obejmują:
•
•
•
•
•
•
•
•
•
•
•
wykonanie testów:
o całego detektora,
o poszczególnych bloków detektora,
o dedykowanych procesów testowych,
badanie ciągłości toru analogowego,
poszukiwanie kanałów nie spełniających specyfikacji,
badanie liniowości toru analogowego,
raportowanie wykrytych nieprawidłowości,
generowanie pliku konfiguracyjnego dla akwizycji danych z uwzględnieniem stanu
detektora,
kalibrację wzmacniaczy w odczycie energetycznym,
ustawianie progów komparatorów w odczycie pozycyjnym,
zapisanie danych z testu do późniejszej analizy,
informowanie o miejscu zainstalowania bloku zakwalifikowanego przez program jako
działającego nieprawidłowo,
kalibracja trygera.
2. Struktura funkcjonalna systemu diagnostycznego detektora BAC
Jak wspomniano we wstępie, sterowanie elektronicznym systemem pomiarowym i
akwizycyjnym detektora BAC odbywa poprzez programy działającego na transputerach i
interfejsy VME zainstalowane we wszystkich 22 kasetach. Komunikację z transputerami
poprzez sieć linków zapewnia komputer VAX. Wykorzystanie języka OCCAM i środowiska
VMS było podporządkowane celom eksperymentu natomiast są w praktyce nieefektywne dla
tworzenia otwartego, dynamicznie konfigurowalnego oprogramowania diagnostycznego. W
związku z tym opracowano koncepcję otwartej, rozproszonej platformy programistycznej
zaprezentowanej na rys. 2. Składa się ona z:
• programu sterującego interfejsem VME na transputerach,
• serwera komunikacyjnego TCPIP umieszczonego na komputerze VAX,
• klienckiego oprogramowania diagnostycznego realizowanego w środowisku PC,
• serwera bazy danych udostępnionego poprzez sieć komputerową.
Program sterujący VME – zadaniem tej części systemu jest zapewnienie wykonania
następujących operacji VME poprzez oprogramowanie wykonywane na transputerze:
• zapis i odczyt rejestru
• zapis i odczyt bloku pamięci
• obsługa przerwań
• wykonywanie operacji specjalizowanych dostępów VME
Program pracujący na transputerach został napisany w języku OCCAM. Realizuje polecenia
przekazywane siecią linków z serwera TCPIP zainstalowanego na komputerze VAX. Dane
będące rezultatem wykonania polecenia wysyłane są z powrotem do serwera.
TRANSPUTER
link
EVB
server
Hala eksperymentu ZEUS
TCPIP
PC
System
diagostyczny
Baza danych
Rys.2. Propozycja systemu diagnostycznego dla detektora BAC.
Serwer TCPIP – jego zadaniem jest odbiór przez sieć TCPIP żądań od klienckiego
oprogramowania diagnostycznego i przekazywanie ich siecią linków do transputerów.
Odwrotną drogą są zwracane rezultaty operacji. Serwer został napisany w języku „C” pod
systemem operacyjnym VMS i jest wykonywany na komputerze typu VAX.
Klienckie oprogramowanie diagnostyczne – jest to główne oprogramowanie nadzorujące
wykonywanie procesów diagnostycznych detektora BAC. Jego zadaniem jest zestawienie
połączenia z serwerem, załadowanie odpowiedniego oprogramowania do sieci transputerów,
rejestrację błędów odwołań do magistrali VME. Program diagnostyczny pracuje na
komputerach PC. W związku z tym dalszym funkcjonalny i strukturalny rozwój
oprogramowania testowego nie wymaga dokonywania zmian ani w oprogramowaniu
sterującym VME na transputerach, ani w programie serwera TCPIP. Bazową strukturę
oprogramowania zaprojektowano w sposób modułowy, co umożliwia dalszy rozwój systemu
diagnostycznego i jego dystrybucję na inne platformy systemowe. Jako narzędzie
programowania wybrano produkt firmy Borland Builder C++, głównie z uwagi na przyjazne i
dobrze udokumentowane środowisko programistyczne oraz narzędzia dostępu do bazy danych
ORACLE. Wykorzystanie właściwości języka „C++” umożliwia łatwe przeniesienie
poszczególnych modułów na inne platformy systemowe, takie jak np. Linux. Istnieje również
możliwość tworzenia nowych specjalistycznych testów jako osobnych programów.
Baza danych – przechowuje dane o całej strukturze detektora, o topologii sieci, wzajemnych
połączeniach poszczególnych bloków elektroniki detektora oraz adresy bazowe VME
wszystkich płyt elektronicznych. Baza przetrzymuje również dane konfiguracyjne dla testów
systemu i jest miejscem przechowywania wyników testów przeprowadzonych przez system
diagnostyczny. Stanowi także interfejs dla grupy niezależnych programów satelickich
przeznaczonych do analizy zgromadzonych danych testowych. Dla celów projektu
wykorzystano bazę danych ORACLE 8.0. Łączność z bazą zapewnia protokół TCPIP.
3. Budowa Systemu Diagnostycznego
W niniejszym rozdziale przedstawiono budowę systemu diagnostycznego w oparciu o jego
podział na podstawowe bloki strukturalne. W poniższych podrozdziałach zamieszczono opis
oprogramowania sieci transputerów, budowy aplikacji serwera funkcji VME oraz programu
diagnostycznego.
3.1 Program transputerów.
Transputery połączone są w sieć typu drzewo przedstawioną na rysunku 3. Każdy transputer
(node) posiada swój unikalny numer z przedziału od 1 do 22, któremu odpowiada
jednoznacznie mnemonik.
EVB
VAX
EQC
TOP
SP1
ST1
ST2
SP2
CTG
SP3
BEN
NP3
SWT
BHI
NP1
SH1
SH2
NT1
NP2
NWT
NT2
NH1
NH2
Rys. 3 Topologia sieci transputerowej.
Dane wysyłane linkiem transputerowym z komputera VAX do sieci transputerów muszą mieć
format zgodny ze specyfikacją oprogramowania pracującego na transputerach. Zakłada ona,
że ramka danych przychodzących linkiem transputerowym ma postać jak na rysunku 4.
NODE TASK FUNC BODY_size BODY[0]
gdzie:
-
...
BODY[BODY_size-1]
NODE – numer transputera w sieci
TASK – numer procesu wykonywanego na transputerze
FUNC - numer identyfikacyjny funkcji
BODY_size – długość „ciała” funkcji w długich słowach (w słowach 4 bajtowych)
BODY – dla ramki wysyłanej: „ciało” funkcji zależne od rodzaju funkcji
dla ramki powrotnej: wynik wykonania funkcji dla ramki powrotnej
Rys. 4. Postać ramki dla sieci transputerów.
Ramka danych składa się ze stałego nagłówka o długości 16 bajtów, tworzonego przez pola
NODE, TASK, FUNC, BODY_size. Każdy z tych obiektów jest liczbą czterobajtową (długie
słowo) oraz z opcjonalnego „ciała” funkcji. Jeżeli funkcja nie posiada „ciała”, wtedy
BODY_size = 0. Dla każdej funkcji mającej dostęp do magistrali VME w najmłodszym bajcie
pierwszego słowa BODY zawarta jest kopia rejestru statusowego płyty transputera,
zawierająca informacje o błędach szyny VME. Na każdym z 22 transputerów pracuje
funkcjonalnie identyczny program, różniący się jedynie częścią router’a, realizującą
transmisję pakietów pomiędzy transputerami. Składa się z następujących procesów
równoległych omówionych poniżej: statycznego, dynamicznego, obsługi przerwań, routera.
Proces statyczny – realizuje wszystkie typy dostępu do magistrali VME. Używany jest do
programowania i testów urządzeń wyposażonych w interfejs VME. Poniżej przedstawiono
klika funkcji, które może wykonać ten proces.
nazwa funkcji
vme_get_status(...)
vme_read_mem(...)
vme_write_mem(...)
vme_verify_mem(...)
vme_test_mem(...)
opis funkcji
pobranie rejestru statusowego
odczyt bloku pamięci
zapis bloku pamięci
zapis z weryfikacją bloku pamięci
testy bloku pamięci
Proces ten umożliwia zapis, odczyt, zapis z weryfikacją, test pojedynczych rejestrów, grupy
rejestrów (dane typu para adres – dana), grupy bloków pamięci. Funkcje, w których opisie
występuje słowo test, działają na zasadzie dokonywania wpisu wartości losowej i porównania
jej z wartością odczytaną. Jako ich wynik zwracana jest funkcja XOR z danych zapisanych i
odczytanych.
Proces dynamiczny – zapewnia pełną obsługę odczytu danych inicjalizowaną wystąpieniem
przerwania wystawianego przez urządzenia na magistralę VME. Zawiera specjalizowane
funkcje pozwalające zautomatyzować procesy naboru danych dla zadeklarowanych urządzeń,
np. odczytuje określone dane z pamięci buforowej urządzenia i wysyła je na zewnątrz sieci
transputerów. Dostępne funkcje zamieszczono poniżej:
nazwa funkcji
vme_declare_boards(...)
vme_activate_readout(...)
vme_deactivate_readout(...)
opis funkcji
jako ciało funkcji podaje się zbiór płyt do odczytu
aktywacja procesu automatycznego odczytu
deaktywacja procesu automatycznego odczytu
Proces obsługi przerwań – proces ten całkowicie obsługuje procedurę przerwania
sprzętowego na magistrali VME i przekazuje informację o jego wystąpieniu do
oprogramowania klienckiego. Dostępne funkcje w tym procesie są zamieszczone w tabeli:
nazwa funkcji
vme_irq_service(…);
vme_irq_config(…);
vme_irg_ack();
vme_irq_reset();
opis funkcji
określenie sposobu obsługi przerwania
wskazanie , z których płyt mają być obsługiwane przerwania
wymuszenie sygnału ACK ma magistrali VME
zakończenie obsługi przerwania
Ostatnie dwie funkcje wykorzystywane są w modzie kontroli obsługi przerwań przez
oprogramowanie klienckie. Funkcja vme_irg_ack() umożliwia wykonanie cyklu ACK
potwierdzającego przyjęcie przerwania, natomiast funkcja vme_irq_reset() zakończyć obsługę
przerwania w trybie RORA poprzez cykl odczytu dedykowanego rejestru w urządzeniu
zgłaszającym przerwanie.
Proces router - proces realizuje transmisję pakietów do transputerów. Dokonuje przyjęcia
pakietu o numerze zgodnym z numerem transputera lub przekierowania do odpowiedniego
podrzędnego nodu sieci transputerowej.
3.2.
Aplikacja serwera
Zadaniem serwera pracującego na komputerze VAX jest zapewnienie przekazywania danych
pomiędzy aplikacją serwera a programem pracującym na transputerach. Program serwera
napisano w języku C-VAX. Program serwera jest aplikacją nasłuchującą na ustalonym porcie
TCPIP. Dane przychodzące do serwera mają postać przedstawioną na rysunku 5.
frame_length count kind check
gdzie:
-
BODY_TR
frame_length – całkowita długość ramki danych w bajtach
count – numer kolejnej ramki wysłanej z aplikacji klienta
kind – miejsce przeznaczenia danych,
check – suma kontrolna po wszystkich bajtach ramki danych
BODY_TR – dane
Rysunek 5 Ramka danych przesyłana przez sieć TCPIP do serwera.
Pola frame_length, count, kind, check tworzą stały nagłówek ramki danych. Są to pola
czterobajtowe. Dane reprezentuje pole BODY_TR. Może mieć ono różną długość zależną od
typu przesyłanych informacji. Powrotna ramka danych posiada taką samą strukturę.
Uproszczony algorytm działania serwera funkcji VME przedstawia rysunek 6.
TCPIP
HADER
N
ERROR
DANE
HADER DANE z transputerów
Czy suma
kontrolna
OK ?
T
Czy dane
T
do transputerów ?
N
DANE
Wyślij DANE
do sieci
transputerów
Interpretuj
dane
DANE z transputerów
Obliczenie długości,
dodanie liczb kontrolnych
Sieć
transputerów
Rysunek 6. Uproszczony algorytm działania aplikacji serwera funkcji VME.
Po przyłączeniu się klienta do serwera może nastąpić transmisja danych. Rozróżnia się dwa
rodzaje danych:
• dane przeznaczone do sieci transputerów
• dane przeznaczone dla serwera – konfiguracja modu pracy serwera
Pole kind decyduje dla kogo są przeznaczone dane, czy dla serwera, wtedy są to dane
konfiguracyjne, czy dla sieci transputerów. Ramkę danych przeznaczoną dla sieci
transputerów przedstawia rysunek 7.
frame_length count kind check
NODE TASK FUNC BODY_size BODY[0]
BODY_TR
...
BODY[BODY_size-1]
Rys. 7 Ramka danych przychodząca do serwera funkcji VME.
Dane przesyłane do serwera to następujące polecenia:
• podłączenia do linku transputerowego
• odłączenia od linku transputerowego
• ładowanie sieci transputerów wskazanym plikiem binarnym
• włączenia podglądu transmitowanych danych
• zakończenia połączenia
Każda funkcja wykonana na transputerach zwraca jako wynik przynajmniej informacje o
błędach operacji na magistrali VME. Inne funkcje, np. vme_read_reg() oprócz informacji o
stanie magistrali VME zwracają wynik operacji czytania. Gdy na linku transputerowym są
dane z sieci transputerów, serwer wykonuje operację odwrotną niż przy odbieraniu danych
tzn. buduje nagłówek ramki, dołącza do niego dane, oblicza całkowitą długość ramki, wylicza
sumę kontrolną i odsyła ramkę do aplikacji klienta.
3.3 Obiektowy opis bloków układów elektronicznych detektora BAC
Przyjęta struktura programowania diagnostycznego pozwala na jej użycie zarówno w
rzeczywistym środowisku detektora BAC jak i na stanowisku laboratoryjnym. W celu
spełnienia tych wymagań opracowano dwie dedykowane biblioteki: tb.lib i bac.lib. Biblioteka
tb.lib zawiera funkcje umożliwiające dostęp do magistrali VME, a biblioteka bac.lib jest
obiektowym opisem zadań funkcjonalnych poszczególnych bloków elektronicznych detektora
BAC. Zostały one scharakteryzowane w poniższych rozdziałach.
3.3.1 Biblioteka tb.lib
Konstrukcja oprogramowania pozwala wybrać w łatwy sposób rodzaj sterowania
magistralą VME. W praktycznym rozwiązaniu zastosowano trzy rodzaje sterowników:
1) w detektorze BAC sterownikiem kaset VME jest transputer połączony linkiem
transputerowym z komputerem VAX pracującym z systemem operacyjnym VMS,
2) na stanowisku laboratoryjnym w ośrodku DESY sterownikiem kasety jest transputer
połączony linkiem transputerowym z komputerem PC pracującym w środowisku
Windows,
3) na stanowisku laboratoryjnym UW w Warszawie sterownikiem kasety jest karta firmy
BIT3 współpracująca z komputerem PC pracującym w środowisku Windows.
Biblioteka ta zawiera wirtualną klasę TVME definiującą wszystkie funkcje potrzebne do
obsługi magistrali VME. Jest to klasa – przodek dla innych klas, będących implementacją dla
konkretnego środowiska. Zawiera ona m.in. następujące metody:
nazwa funkcji
void Reset()
void Write(…)
unsigned long Read(…)
unsigned long WriteRead(…)
void ReadBlock(…)
opis funkcji
wymuszenie sygnału RESET na magistrali VME
zapis danej, pod adres wskazany argumentem funkcji
odczyt danej spod adresu wskazanego w argumencie funkcji
zapis danej a następnie jej odczyt
odczyt bloku pamięci, adresu początku i krok podawany w
ciele funkcji
Na bazie klasy TVME powstały klasy potomne dziedziczące wszystkie funkcje klasy TVME
oraz metody charakterystyczne dla konkretnych realizacji. Zależności pomiędzy klasą bazową
i powstałymi klasami potomnymi przedstawia rysunek 8.
TVME
virtual
TVMEExtBac
virtual
TVMEZeusNet
TVMEManager
virtual
TVMEZeusNetManager
TVMEZeusNetExtBac
Rys. 8 Klasy i zależności między nimi w bibliotece tb.lib.
Dla realizacji w środowisku detektora istnieją m.in. następujące klasy:
• TVMEZeusNetManager – klasa odpowiedzialna za tworzenie obiektów i zarządzanie
nimi, zawiązywanie połączenia z serwerem funkcji VME.
• TVMEZeusNet – klasa dziedzicząca wszystkie metody klasy TVME i definiująca
funkcje charakterystyczne dla środowiska eksperymentu- zawiera implementacje
funkcji zadeklarowanych w klasie TVME,.
• TVMEExtBac klasa zawierająca funkcje możliwe tylko do zaimplementowania w
DESY Jest ona używana tylko przy pracy z detektorem BAC, nie implementowana do
pozostałych miejsc.
• TVMEZeusNetExtBac – klasa dziedzicząca po klasie TVMEZeusNet oraz
TVMEExtBac zawierająca wszystkie funkcje niezbędne do sterowania układami
elektronicznymi detektora BAC.
Rozwiązanie takie uniezależnia funkcje zdefiniowane w klasie TVME od środowiska w jakim
one są wykorzystywane.
3.3.2 Biblioteka bac.lib
Celem zbudowania tej biblioteki było stworzenie obiektów reprezentujących rzeczywiste
urządzenia realizujące określone funkcje np.: pobieranie rejestru statutowego urządzenia.
Wykonanie funkcji ma spowodować takie sterowanie magistralą VME, aby w efekcie
wywołania funkcji otrzymać żądane informacje. Odpowiadają one rzeczywistym płytom
elektronicznym, posiadają metody służące do czytania i pisania ich wszystkich rejestrów i
przestrzeni pamięciowych. W całym systemie akwizycji danych detektora BAC wykorzystuje
się w sumie kilkadziesiąt różnych typów płyt elektronicznych. Posiadają one jednak pewne
cechy wspólne, m.in. każda z płyta umieszczona jest w kasecie VME i ma dostęp do jej
magistrali. Część z nich posiada dodatkowe cechy: może to być np. płyta generująca
przerwania lub płyta odczytująca dane z detektora. W związku z tym w obiektowym opisie
powstały następujące klasy (rysunek 9):
- IBoard - klasa bazowa dla typowych obiektów. Obiekt ten zapewnia dostęp do magistrali
VME, przez metody dostarczone przez klasę TVME z biblioteki tb.lib. Na bazie tej
klasy zbudowano przykładowo obiekt TPulser zarządzający urządzeniem
generującym programowalne pulsy testowe.
- IInterupterBoard – klasa dziedzicząca wszystkie metody po klasie IBoard. Posiada
zaimplementowane funkcje do obsługi przerwań. Klasa ta jest przodkiem obiektów
TScanner, TDistributor będących odpowiednikiem programistycznym płyt Scanner i
Dystrybutor, których zadaniem jest sterowanie akwizycją danych.
- IReadoutBoard - klasa dziedzicząca wszystkie metody po klasie IBoard. Posiada
zaimplementowane funkcje odczytu danych z detektora. Obiektami dziedziczącymi po
niej są m.in.: TFadc, TWtt, TStt, TBmbac, TEmbac, THitbox. Są to obiektowe
odpowiedniki płyt elektronicznych realizujących różnego rodzaju nabór danych
fizycznych z detektora BAC pod kontrolą płyt Scanner i Dystrybutor jak wspomniano
wyżej.
IBoard
IReadBoard
IInterupterBoard
TDistributor
TScanner
TPulser
TFadc
TStt
TBmbac
TEmbac
TWtt THitbox
Rys.9. Zależności pomiędzy klasami różnych obiektów.
Poniżej przedstawiono bardziej szczegółowo wybrany przykład budowy obiektu TScanner.
Scanner [8] jest urządzeniem nadzorującym nabór danych z przetworników analogowocyfrowych do pamięci buforowej w celu ich dalszej analizy komputerowej. Zakończenie
procesu akwizycji danych sygnalizowane jest wystawieniem przez płytę przerwania na
magistrali VME.
Wirtualny obiekt TScanner opisujący to urządzenie posiada następujące metody:
nazwa funkcji
void Reset()
void SetParams(TParams* params)
TParams* GetParams(…)
TStatus* GetStatus(…)
TControl* GetControl(…)
void GetNoAcceptAndInterrupt(int
&no_accept,int &no_interrupt);
opis funkcji
wymuszenie resetu płyty
ustawienie rejestrów
odczytanie wszystkich rejestrów
pobranie rejestru statutowego
pobranie rejestru kontrolnego
pobranie liczby zgłoszonych przerwań i zliczonych
sygnałów ACCEPT
Obiekt ten dziedziczy po klasie IInterrupreBoard. Funkcje te umożliwiają: sprzętową
inicjalizację płyty, ustawienie wszystkich parametrów, pobranie aktualnej wartości ustawień
rejestrów, pobranie rejestru statutowego, kontrolnego, aktualnie zliczonej liczby żądań
przeprowadzenia naboru danych przez eksperyment ZEUS oraz zgłoszonych przez tę płytę
przerwań w odpowiedzi na wykonanie procesów akwizycji.
Wywołanie funkcji np.: Reset() powoduje wykonanie sprzętowej inicjalizacji płyty. Fizyczne
odpowiada to wykonaniu na szynie magistrali VME kasety, w której umieszczony jest
Scanner, cyklu odczytu danej z określonego adresu. W implementacji funkcji Reset()
wykorzystywane są funkcje dostarczone przez bibliotekę tb.lib. W związku z tym obiekt
TScanner nie zależy od środowiska w jakim pracuje płyta ponieważ wywołuje te same
funkcje z biblioteki tb.lib. Adres bazowy Scanera nadawany jest w momencie tworzenia
nowego obiektu i odzwierciedla rzeczywisty adres sprzętowy w przestrzeni adresowej VME.
Jest to analogia nadawania adresu sprzętowego płycie w momencie włączenia jej do kasety
VME.
Biblioteka bac.lib wyposażona jest również w obiekt TCrate, odpowiadającemu rzeczywistej
kasecie VME. Posiada on metody umożliwiające umieszczenie w kasecie wszystkich
stworzonych obiektów płyt elektronicznych detektora oraz metody służce do odwołania się do
obiektu umieszczonego w kasecie, np.:
nazwa funkcji
Insert()
SetScanner()
SetDistributor()
SetGfltbi()
GetScanner()
GetDistributor()
GetHitbox()
opis funkcji
umieszcza obiekt (THitbox, TPulser, THitbox, TController itd.)
metody służące do umieszczenia pojedynczych obiektów
metody służące do odwołania się do obiektu umieszczonego w
kasecie
Na rysunku 10 przedstawione są trzy przykładowe kasety VME. Zawierają one różnego
rodzaju płyty elektroniczne (Controler, Pulser, 16FADC, Scanner1). W obiektowym opisie
przedstawionego środowiska, występują również trzy obiekty TCrate. Wskazane są w nich
metody, jakie muszą być wywołane, celem wypełnienia wirtualnego odpowiednika tych kaset.
1
Szczegółowe omówienie przeznaczenia tych płyt wykracza poza ramy niniejszej pracy
Detektor
BAC
Detektor BAC
S
C
A
N
N
E
R
P
U
L
S
E
R
P
U
L
S
E
R
P
U
L
S
E
R
P
U
L
S
E
R
1
6
F
A
D
C
1
6
F
A
D
C
1
6
F
A
D
C
S
C
A
N
N
E
R
TCrate[1]
1
6
F
A
D
C
1
6
F
A
D
C
1
6
F
A
D
C
1
6
F
A
D
C
1
6
F
A
D
C
1
6
F
A
D
C
C
O
N
T
R
O
L
E
R
TCrate[2]
SetScanner(new TScanner)
Insert(new TPulser(1) )
Insert(new TPulser(2) )
Insert(new TPulser(3) )
Insert(new TPulser(4) )
D
I
S
T
R
I
B
U
T
O
R
D
I
S
T
R
I
B
U
T
O
R
D
I
S
T
R
I
B
U
T
O
R
P
U
L
S
E
R
P
U
L
S
E
R
P
U
L
S
E
R
TCrate[3]
SetController(new TController)
Insert(new TDistributor(1) )
Insert(new TDistributor(2) )
Insert(new TDistributor(3) )
Insert(new TPulser(1) )
Insert(new TPulser(2) )
Insert(new TPulser(3) )
SetScanner(new TScanner)
Rys. 10. Klasa TCrate, przykładowa zawartość kasety.
Osobną klasą zawartą w bibliotece bac.lib jest klasa Ttest i jej klasy potomne. Rysunek 11
przedstawia zależności pomiędzy klasami.
TTest
TScannerTest
TDistributorTest
TFadcTest
TSttTest
TPulserTest
TWttTest
Rys. 11. Biblioteka testów.
Klasa TTest zawiera metody które muszą być zaimplementowane w każdym teście.
Najważniejsze z nich to początek testu, koniec testu, miejsce przeznaczenia wyniku (ekran,
baza danych), częstość powtórzenia testu. Dla każdego urządzenia stworzony jest proces
testowy, dziedziczący po klasie bazowej TTest. Biblioteka ta zawiera dla każdego urządzenia
testy o różnym stopniu złożoności. Daje to możliwość przeprowadzenia np. szybkich ale
przez to mniej dokładnych procesów testowych lub długoczasowych dokładnych testów.
Możliwe jest konstruowanie procesów testowych całych torów pomiarowych detektora.
Zastosowanie biblioteki testów umożliwia tworzenie ich nowych wariantów bez konieczności
zmiany oprogramowania systemu diagnostycznego.
3.3.2. System diagnostyczny.
Oprogramowanie systemu diagnostycznego powstało z wykorzystaniem wyżej
przedstawionych bibliotek. Informacja o rozmieszczeniu poszczególnych bloków
elektronicznych i ich adresach pobierana jest z bazy danych. Na tej podstawie budowana jest
lista aktualnie dostępnego sprzętu. Rysunek 12 przedstawia przykład wypełnienia kasety
VME (o nazwie SH1) w płyty elektroniczne.
Rys. 12. Widok drzewa reprezentującego rozmieszczenie poszczególnych
bloków elektronicznych.
Również z bazy danych pobierane są wszystkie niezbędne informacje jakie służą do
inicjalizacji poszczególnych płyt elektronicznych. Program systemu diagnostycznego pełni
także funkcję interfejsu graficznego dla obiektów stworzonych w bibliotece bac.lib.
4. Wyniki działania systemu diagnostycznego.
System diagnostyczny pozwala na szybki, wygodny i interaktywny dostęp do wewnętrznej
przestrzeni adresowania płyt elektronicznych podzielonej na rejestry, flagi i pamięci. Możliwe
jest odczytywanie danych oraz ich modyfikacja. System zapewnia możliwość obserwowania
zmian poszczególnych rejestrów w czasie obsługi przerwań przez wybrane płyty. Na rys. 13
zamieszczono przykład panelu kontrolnego dla obiektu TScanner.
Rys. 13. Panel obiektu TScanner.
Jednym z podstawowych celów budowy systemu diagnostycznego było zapewnienie
wykonania testów znacznej części lub całego systemu naboru danych detektora BAC, a
następnie prezentacji ich wyników. Rysunek 14 przedstawia rezultat wykonania testu na
urządzeniu o nazwie Controler [9] o adresie bazowym 0x100000 umieszczonym w kasecie
SH1. Urządzenie to ma charakter rozproszony, ponieważ częściowo jest umieszczony na
detektorze ZEUS, a częściowo w kasecie VME oraz modułowy, gdyż Controler może
zawierać do 15 Hitboxów [9], a każdy Hitbox do 15 Pipeline’ów [9]. Informacja o aktualnej
strukturze Controler’a zawarta jest w bazie danych. Prezentowany wynik testu pokazuje
elementy niesprawne i ich pozycję.
Rys. 14. Rezultat wykonania testu kontrolera.
Kolejnym ważnym zadaniem stawianym przed systemem diagnostycznym było umożliwienie
czasowej analizy danych, np. w celu strojenia układu trygera detektora BAC. W takim
wypadku system musi dostarczać w sposób zsynchronizowany dane pochodzące różnych
miejsc detektora. Na rysunku 15 przedstawione są w formie przykładu dwa wykresy czasowe:
stan poszczególnych sygnałów wyjściowych z płyty BMBAC oraz wykres energii mierzonej
przez płytę EMBAC. Widoczna jest korelacja pomiędzy rejestrowaną energią a podejmowaną
decyzją trygerową. Wykres ten umożliwia dobranie wartości poszczególnych rejestrów, celem
zestrojenie układu wyzwalania detektora.
Rys. 15. Przebiegi czasowe zarejestrowane przez system diagnostyczny.
5. Podsumowanie
Opracowany system diagnostyczny umożliwia wykonanie dokładnych testów detektora BAC.
Wyniki testów zapisywane są w bazie danych, co umożliwia późniejszą analizę
zarejestrowanych informacji oraz porównanie ich z danymi otrzymanymi we wcześniejszych
pomiarach. Można także dokonać dokładniejszych analiz numerycznych w trybie off-line.
Zapisane dane mogą być również wykorzystywane do poszukiwania korelacji pomiędzy
występującymi awariami sprzętu. Aktualnie system diagnostyczny detektora BAC umożliwia:
• testowanie całego detektora
• testowanie poszczególnych bloków elektronicznych
• strojenie układu trygera
• uruchomienie automatycznych testów określonej grupy sprzętu
Ponadto system diagnostyczny umożliwia badanie ciągłości toru analogowego, wykrywa
zaistniałe nieprawidłowości, np. kanały o odwróconej polaryzacji lub nieprawidłowym
wzmocnieniu.
Na podstawie przeprowadzanych testów system diagnostyczny generuje pliki konfiguracyjne
dla systemu akwizycji danych detektora BAC, m.in. ustala automatycznie poziom progów
komparatorów w torze odczytu pozycyjnego, blokuje nieprawidłowo działające kanały itp.
Zaproponowana koncepcja i przyjęte rozwiązania realizacji systemu diagnostycznego w
formie obiektowego i modułowego oprogramowania pozwoliły na zbudowanie niezawodnego
i łatwego w rozbudowie o nowe funkcje systemu.
Bibliografia
[1] http:\\www.desy.de
[2] Z E U S C o l l a b o r a t i o n : The ZEUS Detector Status Report, 1993
[3] W. Petersen “The VMEbus Handbook”
[4] I N M O S L t d : Transputer Reference Manual, Prentice Hall 1988.
[5] G. Grzelak i in. „System odczytu i układ wyzwalania kalorymetru wspomagającego BAC
dla detektora ZEUS”, Kwartalnik Elektroniki i Telekomunikacji tom 48, zeszyt 2, 2002
[6] T. Jeżyński i in. „Obiektowo i bazodanowo zorientowany system diagnostyczny dla
kalorymetru uzupełniającego BAC eksperymentu ZEUS, Kwartalnik Elektroniki i
Telekomunikacji tom 48, zeszyt 2, 2002
[7] Dick Pountain, David May, „A tutorial introduction to occam programming”
[8] “GFLT signals testing and distribution within the BAC sysyem” ZESU Note 96-116
[9] Poźniak K.: HIT-READOUT – pomiarowy system odczytu pozycyjnego dla detektora BAC
w eksperymencie ZEUS, Krajowy Kongres Metrologii, Gdańsk, wrzesień 1998

Podobne dokumenty