1 - CERN

advertisement
UNIWERSYTET JAGIELLOŃSKI
Instytut Fizyki im. Mariana Smoluchowskiego
Sterowanie regulatorem napięcia z poziomu systemu
PVSSII poprzez magistralę przemysłową CAN-bus
Dawid Szymański
Praca magisterska wykonana
w Instytucie Fizyki Jądrowej
im. Henryka Niewodniczańskiego
pod kierunkiem Dr Zbigniewa Hajduka
KRAKÓW 2006
SPIS TREŚCI
1 Wstęp......................................................................................................................................2
2 Podstawy fizyczne, główne cele i zastosowanie wielkich eksperymentów fizyki
cząstek ....................................................................................................................................3
2.1
Podstawy fizyczne ......................................................................................................3
2.2
Główne cele i zastosowanie wielkich eksperymentów ...............................................5
3 Podstawowe informacje na temat eksperymentu ATLAS ................................................8
4 Detektor TRT w eksperymencie ATLAS..........................................................................11
5 Budowa, zasada działania, system kontroli i monitorowania TRT ................................13
5.1
Budowa detektora TRT .............................................................................................13
5.2
Zasada działania detektora TRT ...............................................................................17
5.3
System kontroli i monitorowania detektora TRT .....................................................19
5.4
Narzędzie PVSS II ....................................................................................................22
6 ELMB i jej funkcjonalności ...............................................................................................24
6.1
CAN-bus ...................................................................................................................26
7 Schematyczny opis systemu zasilania LV .........................................................................28
8 Protokół komunikacji z DTMROC ...................................................................................31
9 Opis układu testowego ........................................................................................................32
10 Opis programu ................................................................................................................35
10.1
Funkcjonalności ........................................................................................................35
10.2
Pomiary prędkości ....................................................................................................47
11 Podsumowanie .................................................................................................................52
Bibliografia ..............................................................................................................................53
DODATEK ...........................................................................................................................56
1
1 Wstęp
Do przeprowadzenia eksperymentów w fizyce cząstek budowane są detektory
mające na celu pomiar wielkości fizycznych pozwalających na opis i identyfikacje
produktów oddziaływania. Obecnie przeprowadzane jak i planowane eksperymenty
stawiają
wysokie
wymagania
niezwykle
zawansowanym
detektorom
oraz
akceleratorom. Chęć zbadania niezwykle rzadkich procesów występujących przy bardzo
wysokich energiach zmusiła do budowy akceleratorów przyśpieszających cząstki do
coraz większych energii. Przełomowym momentem było stworzenie akceleratorów
zderzających wiązki przeciwbieżne. Pozwoliło to na osiągnięcie dwukrotnie większych
energii zderzenia.
W Europejskie Laboratorium Fizyki Cząstek (CERN) budowany jest akcelerator
cząstek LHC (Large Hadron Collider - Wielki Zderzacz Hadronów) przyspieszający
wiązki do energii 7 TeV, będący obecnie największym akceleratorem na świecie. Do
badania zjawisk zachodzących przy zderzeniach, których energie sięgają 14 TeV
budowane są cztery detektory. Jednym z tych detektorów jest ATLAS, którego celem
jest potwierdzenie teorii przewidującej zachowania się cząstek nazywanej Modelem
Standardowym jak również poszukiwanie zjawisk wykraczających poza ten model.
Praca opisuje bibliotekę dll napisaną jako uzupełnienie systemu PVSS II oraz
wyniki uzyskane dzięki jej użyciu w systemie kontroli zasilaczy niskiego napięcia.
Poniższa praca zawiera również opis układu służącego do sterowania regulatorami oraz
sposób jego działania.
2
2 Podstawy fizyczne, główne cele i zastosowanie wielkich
eksperymentów fizyki cząstek
2.1 Podstawy fizyczne
Przeprowadzone w ostatnich latach eksperymenty potwierdzają słuszność teorii
cząstek elementarnych opracowanej w latach siedemdziesiątych XX wieku przez
Glashowa, Weinberga i Salama zwanej Modelem Standardowym. To potężne narzędzie
opisuje oddziaływania silne (opisane przez chromodynamikę kwantową, która określa
oddziaływanie
teoriopolowym
kwarków
i
modelem
gluonów)
i
oddziaływania
Salama–Weinberga,
elektrosłabe
unifikujący
(opisane
oddziaływania
elektromagnetyczne i słabe). Teoria opisująca materie oraz wszystkie siły we
wszechświecie (z wyjątkiem grawitacji) [1].
W Modelu Standardowym zakłada się, że istnieją dwa rodzaje cząstek
elementarnych: cząstki, które są materią oraz cząstki, które przenoszą oddziaływania.
Zgodnie z tym modelem cała materia zbudowana jest z 12 fundamentalnych cząstek [2].
Model Standardowy opisuje również trzy oddziaływania z odpowiednimi bozonami
pośredniczącymi: oddziaływania elektromagnetyczne (foton  ), oddziaływania słabe
(bozony W  , W  i Z ), oddziaływania silne (gluon g ) [3]. Przewiduje on również
istnienie tzw. cząstek Higgsa. Cząstki te nie zostały jeszcze zaobserwowane, ale według Modelu Standardowego - muszą istnieć, gdyż w innym przypadku w gruzach
ległaby cała teoria. Cząstki Higgsa są odpowiedzialne za to, że bozony pośredniczące
W+, W- i Z posiadają masę, a jednocześnie pozwala teorii opisującej te pola zachować
wewnętrzną spójność (gdyby cząstki Higgsa nie istniały, model nie posiadałby
fundamentalnej własności zwanej renormalizowalnością). Cząstka ta jest ostatnim
elementem
składowym
Modelu
Standardowego,
który
nie
został
jeszcze
zaobserwowany. Z przeprowadzonych dotychczas eksperymentów wiadomo, że jej
masa spoczynkowa musi być większa niż 77 GeV / c 2 , w wyniku przeprowadzonych, w
ostatnim czasie doświadczeń granica ta została przesunięta do około 95 GeV / c 2 .
Okazuje się ponadto, że jeśli cząstka Higgsa jest elementarna, czyli nie składa się z
mniejszych składników, jej masa nie może przekraczać 800 GeV / c 2 [4].
Model Standardowy jest teorią niekompletną, nie można opisać za jej pomocą
wszystkich zjawisk i zachowań cząstek. Nie opisuje ona również oddziaływania
3
grawitacyjnego, co jest główną praktyczną przyczyna poszukiwania uogólnienia
Modelu Standardowego. Oprócz poszukiwań całkowicie nowej teorii do oddziaływań w
dalszym ciągu rozszerza się Model Standardowy dołączając teorie opisujące przypadki
nieuwzględnione w Modelu Standardowym np: model Kaluzy – Kleina, wprowadzenie
Supersymetrii, wprowadzenie elementarnych strun i superstruny, i innych.
Istnieje wiele modeli, które dążą do opisania wszystkich oddziaływań za pomocą
jednej
wielkiej
teorii
np:
model SU(5), model 11-wymiarowej
kwantowej
supergrawitacja, model 10-wymiarowej superstruny itd. Potrafią one z większą lub
mniejszą dokładnością opisać oddziaływania, ale żaden z nich nie został potwierdzony
doświadczalnie [1].
4
2.2 Główne cele i zastosowanie wielkich eksperymentów
Model Standardowy jest wciąż podstawowym modelem mikroświata, mimo ze
bozon Higgsa nie został dotychczas zaobserwowany oraz mimo braku wyjaśnienia
widma mas fermionów i parametrów ich mieszania. Wydaje się, że pozwala on opisać
„wszystkie” zjawiska w fizyce cząstek elementarnych (uwzględnienia wymaga
oczywiście odkrycie oscylacji i mas neutrin). O tym, czy w przyrodzie istnieją jakieś
nowe cząstki lub nowe oddziaływania poza Modelem Standardowym, przekonamy się
dzięki dalszym doświadczeniom przy konstruowanych obecnie akceleratorach cząstek
naładowanych o wielkiej energii. Zaproponowano liczne modele teoretyczne, które
takie nowe cząstki i oddziaływania przewidują. Jeśli zostaną one odkryte, będzie to
początek Nowej Fizyki [3].
Obecnie w CERN (Europejskie Laboratorium Fizyki Cząstek) budowany jest
największy na świecie akcelerator cząstek LHC (Large Hadron Collider - Wielki
Zderzacz Hadronów). W kołowym tunelu o obwodzie 27 km (w którym mieścił się
akcelerator LEP) będą przyspieszane protony i ciężkie jony do energii 7 TeV (takiej,
jaką uzyskałby elektron przyspieszony napięciem 7 bilionów woltów) [5]. LHC jest
zderzaczem wiązek przeciwbieżnych, więc energia zderzeń będzie wynosiła 14 TeV.
Przy energiach tego rzędu możliwe jest obserwowanie niezwykle rzadkich procesów
zachodzących z częstością na poziomie 10-4 – 10-13. Dla tak rzadkich zjawisk
wymagana jest duża świetlność akceleratora – dla LHC wynosić będzie ok. 1034 cm-2s-1.
Przekroje czynne dla niektórych procesów zachodzących w zderzeniach proton – proton
dla
energii
osiąganych
na
akceleratorze
LHC
zostały
przedstawione
na
rysunku (rys. 2.1).
5
Rysunek 2.1: Przekroje czynne dla różnych procesów w zderzeniach proton – proton
(czerwona linia przerywana – energia osiągana na LHC) [6].
W każdej sekundzie dojdzie średnio do pół miliarda zderzeń biegnących
naprzeciw siebie protonów. Cząstki powstałe w wyniku wyzwolonej w ten sposób
energii będą rejestrowane przez cztery detektory: Alice, Atlas, CMS i LHCb. Każdy
detektor to urządzenie wielkości kilkupiętrowego bloku (rys. 2.2), naszpikowane
nowoczesną elektroniką [5].
Rysunek 2.2 Porównanie wymiarów detektora ATLAS z kilkupiętrowym budynkiem
laboratorium w CERN – Europejskim Centrum Fizyki Cząstek w Genewie [7].
6
Budowane detektory mają różne przeznaczenia. Dwa mniejsze: ALICE i LHCb
konstruowane są do ściśle określonych celów, pozostałe ATLAS i CMS – jako
detektory ogólnego przeznaczenia. Detektor ATLAS budowany jest dla kilku celów,
potwierdzeniu eksperymentalnemu prawdziwości Modelu Standardowego, czyli:
•
poszukiwanie cząstki Higgs’a - ostatniej brakującej cegiełki
Modelu
Standardowego,
•
precyzyjny pomiar masy bozonu W,
•
precyzyjny pomiar masy oraz właściwości najcięższego kwarku – top,
•
bogaty program fizyki b (łamanie parzystości CP, etc.),
jak również zjawiska wykraczające poza Model Standardowy:
•
poszukiwanie cząstek supersymetrycznych (SUSY…),
•
poszukiwanie supersymetrycznych cząstek Higgs’a (h, H, A, H),
•
anomalne sprzężenia W, Z, ,
•
ciężkie bozony gauge (W’, Z’),
•
i innych [8].
Dzięki zaawansowanej technice, w jaką zostanie wyposażony detektor ATLAS,
będziemy w stanie odpowiedzieć na wiele pytań stawianych obecnie przez naukę.
Potwierdzić lub zanegować prawdziwość Modelu Standardowego, a tym samym podać
dane doświadczalne dla modyfikacji opisu teoretycznego zjawisk obserwowanych w
eksperymentach.
7
3 Podstawowe informacje na temat eksperymentu ATLAS
ATLAS jest to układ detektorowy o długości około 46 m, średnicy około 25 m i
wadze prawie 7000 ton (rys. 3.1), który musi sprostać niezwykłym wymaganiom.
Rysunek 3.1 Przekrój detektora ATLAS (kolor niebieski – detektory mionowe,
kolor szary – zewnętrzny magnes toroidalny w kształcie walca z end cap-ami,
kolor czerwony – kalorymetry hadronowe, kolor zielony – kalorymetry elektromagnetyczne,
kolor żółty solenoid z detektorem wewnętrznym) [9].
W centralnym punkcie detektora będą zachodziły zderzenia przeciwbieżnych paczek
protonów co 25 ns o energii zderzeń 14 TeV. Cząstki powstałe w zderzeniach,
rozbiegające się na wszystkie strony, muszą zostać zmierzone jak najdokładniej w
czasie wystarczająco krótkim, aby nie pomylić ich z produktami następnego zderzenia,
które zachodzi, gdy jeszcze najszybsze nawet produkty poprzedniego nie zdołały
opuścić detektora [9].
W każdej sekundzie, w detektorze zachodzić będzie około 40 milionów zderzeń
paczek protonów, co da około miliard oddziaływań (109), z których każde produkować
będzie średnio 1400 cząstek naładowanych. Informacje o cząstkach oddziałujących w
detektorze zbierane są i przesyłane do wielostopniowych układów filtrujących zderzenia
na podstawie zadanych kryteriów (układ wyzwalania, trigger) i decydujących o zapisie
interesujących przypadków (Data Acquisition - DAQ). Odczytać trzeba około 200
milionów kanałów elektronicznej rejestracji danych i jeśli zawierają one informacje
różne od zera, przesłać do komputerów na zewnątrz detektora [9]. W komputerach
8
zapisywane zostanie już tylko około 100 przyp./s, a jeden przypadek będzie miał
objętość około 1 Mega byte. Czas naświetlania w ciągu roku wyniesie około 107 s, co
przez rok pracy pozwoli na zebranie 2 Peta byte surowych danych i około 1 Peta byte
danych Monte Carlo. Oczekuje się, że detektor ATLAS będzie pracował od 10 do 15 lat
[6].
ATLAS zbudowany jest z kilku detektorów o określonych funkcjach połączonych
ze sobą. Cechą charakterystyczną układu detekcyjnego ATLAS jest ogromny toroidalny
magnes zapewniający bardzo wysoką precyzję pomiaru pędu cząstek naładowanych
(przede wszystkim mionów) o energiach rzędu 1 TeV (rys. 3.1). Centralna część
detektora (tzw. Detektor Wewnętrzny - Inner Detector) znajduje się także w polu
magnetycznym wytworzonym przez nadprzewodzący magnes solenoidalny o indukcji 2
T. Mierzące energię cząstek kalorymetry znajdują się poza polem magnetycznym.
Najbliżej
punktu
oddziaływania
znajdują
się
krzemowe
detektory
półprzewodnikowe: najpierw "mozaikowe" a później „paskowe”. Pierwsza z trzech
warstw detektora mozaikowego znajduje się już 5 cm od miejsca zderzeń protonów, a
dwie następne są w odległości odpowiednio 9 i 12 cm. Detektor mozaikowy posiada
około 140 milionów kanałów odczytu i zapewnia bardzo dobrą rozdzielczość w
pomiarze wierzchołka oddziaływania i parametru zderzenia. Trudne warunki radiacyjne
tak blisko punktu oddziaływania sprawiają, że detektor mozaikowy jest zaprojektowany
jako moduł wymienialny.
Kolejny detektor, krzemowy detektor paskowy (SCT - SemiConductor Tracker)
jest zaprojektowany tak, aby zapewnić 4 pomiary toru cząstki przez niego
przechodzącej, przyczyniając się do pomiaru pędu, położenia wierzchołka i parametru
zderzenia. Całkowita powierzchnia SCT to przeszło 55 m2, prawie 2 rzędy wielkości
więcej niż detektory krzemowe eksperymentów LEP-u. Liczba kanałów odczytu to
około 6.2 miliona.
Dalej od punktu oddziaływania, ciągle w obszarze Detektora Wewnętrznego,
umieszczony jest Detektor Promieniowania Przejścia (Transition Radiation Tracker TRT). Detektor ten, zbudowany z gazowych komór proporcjonalnych w kształcie
słomek o średnicy 4 mm, wypełnia przestrzeń między SCT a kriostatem. TRT mierzy
ślady cząstek, oraz dodatkowo, dzięki efektowi tzw. promieniowania przejścia, pozwala
na odróżnianie lekkich cząstek naładowanych (elektrony) od hadronów.
Na zewnątrz detektorów śladów znajduje się kriostat z ciekłym argonem
zawierający kalorymetr elektromagnetyczny. Absorberem w kalorymetrze jest ołów a
9
elektrody są wykonane z warstw miedzianych naniesionych na kapton. Aby osiągnąć
symetrię w kącie i hermetyczność kalorymetru, czyli zlikwidować możliwe szczeliny w
pokryciu przestrzeni, zastosowano ciekawą geometrię elektrod nazywaną "accordionshaped", nazywanych tak z racji swego podobieństwa do akordeonu.
W tym samym kriostacie, wewnątrz kalorymetru, znajduje się nadprzewodzący
centralny solenoid zapewniający silne pole magnetyczne (2 T) w detektorze
wewnętrznym. Za kalorymetrem elektromagnetycznym znajduje się kalorymetr
hadronowy z żelaznym absorberem poprzedzielanym płytkami scyntylatora. Ciekawe są
konstrukcje kalorymetrów hadronowych w „denkach” (ang. end-caps), czyli
fragmentach detektora zamykających go od strony wiązek, gdzie poziom radiacji
wymaga zastosowania specjalnych technologii. Kalorymetr hadronowy w denku
wykorzystuje miedź jako absorber i umieszczony jest w ciekłym argonie podobnie jak
kalorymetr elektromagnetyczny, natomiast w tzw. Kalorymetrze do przodu (ang.
Forward Calorimeter), umieszczonym blisko rury próżniowej i szczególnie narażonym
na wysokie dawki promieniowania, stosuje się wolfram jako absorbent, uformowany w
matryce z wydrążonymi okrągłymi otworami, w których umieszczone są elektrody.
Komory mionowe tworzą zewnętrzną warstwę ATLAS-a. Są to detektory gazowe
zapewniające precyzyjne pomiary pędu mionów szczególnie ważne w kanałach takich
jak "złoty kanał" w poszukiwaniu bozonu Higgsa: HZZ(*)4 . Z czterech rodzajów
komór dwa służą systemowi wyzwalania detektora, a dwa pozostałe precyzyjnym
pomiarom torów. Osiem nadprzewodzących magnesów toroidalnych wytwarza silne (4
T) pole magnetyczne w tej części detektora. Cały system mionowy zapewnia
precyzyjne pomiary mionów niezależnie od detektora wewnętrznego, co pozwala na
zbieranie interesujących danych nawet przy najwyższych świetlnościach, kiedy dane z
Detektora Wewnętrznego mogą być trudne do analizy [9].
10
4 Detektor TRT w eksperymencie ATLAS
TRT - detektor promieniowania przejścia to jeden z subdetektorów ATLAS-a, jest
detektorem gazowym. Jego geometria została zaprojektowana tak, aby w pełni otaczał
punkt zderzeń przeciwbieżnych wiązek. TRT mierzy ślady cząstek za pomocą efektu
jonizacji ośrodka, oraz pozwala odróżnić lekkie cząstki naładowane (elektrony) od
hadronów, dzięki efektowi promieniowania przejścia [10].
Cząstki naładowane przechodząc przez ośrodek przekazują mu energię kinetyczną
(w sposób pośredni i bezpośredni) w procesach jonizacji lub wzbudzania atomów.
Proces jonizacji przebiega w dwóch etapach. Pierwszy to jonizacja pierwotna, która jest
wywoływana przez naładowaną cząstkę, przechodzącą przez dany ośrodek. Drugi etap
to jonizacja wtórna wywoływana przez elektrony o najwyższych energiach wybite z
atomów ośrodka podczas tego procesu, które mogą same jonizować dalej ośrodek.
Przez jonizacje wtórną całkowita liczba jonów jest 3 - 4 razy większa od liczby jonów
powstałych podczas jonizacji pierwotnej [2].
Większość oderwanych elektronów znajduje się w odległości mniejszej niż 1 μm
od toru cząstki, co oznacza, że teoretycznie możliwe jest osiągnięcie takiej dokładności
pomiaru położenia. W rzeczywistości udało się otrzymać taką dokładność tylko dla
małego detektora krzemowego oraz dla pomiarów w emulsjach jądrowych. W
śladowych detektorach gazowych typowa dokładność pojedynczego pomiaru cząstki
wynosi około 100 μm. Zjawisko jonizacji wykorzystywane jest przede wszystkim w
gazowych i półprzewodnikowych detektorach śladowych (służących do pomiaru
położenia cząstek). Średnia energia potrzebna do jonizacji pojedynczego atomu gazu
wynosi około 30 eV [11].
Drugim zjawiskiem występującym w detektorze TRT jest efekt promieniowania
przejścia. Efekt ten polega na emisji promieniowania elektromagnetycznego przy
przejściu cząstki między ośrodkami o różnej wartości stałej dielektrycznej (ε). Wartość
wypromieniowanej energii dla pojedynczego przejścia naładowanej cząstki przez
granicę ośrodków o różnej wartości ε jest proporcjonalna do czynnika Lorentza:
1
S   z 2  p 
3
gdzie:
ħω – energia plazmy (ang. plasma energy) dla powszechnie stosowanych plastikowych
radiatorów wynosi około 20 [eV].
11
Promieniowanie
proporcjonalny do
elektromagnetyczne
1

jest
emitowane
pod
kątem,
który
jest
(kierunek emisji jest bliski kierunkowi cząstki). Wykorzystanie
tego zjawiska umożliwia identyfikacje naładowanych cząstek poprzez pomiar
zdeponowanej energii w detektorze TRT.
12
5 Budowa,
zasada
działania,
system
kontroli
i
monitorowania TRT
5.1 Budowa detektora TRT
Detektor TRT o długości 6,8 m i średnicy 2,06 m oraz wadze ok.1500 kg wchodzi
w skład detektora wewnętrznego, który umieszczony jest wewnątrz nadprzewodzącego
magnesu solenoidalnego wytwarzającego pole 2 T. Geometria detektora została
zaprojektowana tak, aby w pełni otaczał on punkt zderzeń wiązek. Detektor TRT
zbudowany jest z części centralnej – cylindra (ang. barrel) oraz korków (ang. end-caps)
(rys. 5.1, 5.2) [12].
Rysunek 5.1 Detektor wewnętrzny detektora ATLAS [13].
Rysunek 5.2 Detektor TRT z uwidocznionym podziałem na części
(kolor niebieski ciemny - barrel (cylinder), kolor czerwony – end caps – wheel A (koła typy A),
kolor jasno-niebieski – end caps – wheel B (koła typy B), kolor różowy – end
caps – wheel C (koła typy C), kolor zielony – rama konstrukcyjna [13].
13
Cylinder (Barrel) zbudowany jest z trzech warstw o grubościach: pierwsza warstwa 137
mm, druga warstwa 167 mm, trzecia warstwa 206 mm, z których każda jest podzielona
na 32 moduły (rys. 5.3) [14].
Rysunek 5.3 Podział na warstwy detektora TRT z uwidocznionym podziałem na moduły
a) całego cylindra z podziałem na moduły [13],
b) przekrój poprzeczny cylindra [14].
Każdy moduł, w zależności do której warstwy należy, zawiera określoną liczbę
liczników SPT (ang. Straw Proportional Tubes) o długości 144 cm. Składają się z rurek
o średnicy 4 mm i bardzo cienkich ścianach (70 μm) stanowiących katody. Ściany
zbudowane są z kilku warstw (carbon-polyimide - zewnętrznej warstwy ochronnej,
warstwy aluminiowej, warstwy kapton’owej i warstwy poliuretane’owej) (rys. 5.4) [15].
Każda słomka na zewnątrz ma cztery włókna usztywniające (rys. 5.5).
Rysunek 5.4 Przekrój ściany licznika SPT [16].
14
Rysunek 5.5 Licznika SPT (słomka) z wyróżnionymi włóknami usztywniającymi [16]
a) układ włókien usztywniających,
b) przekrój poprzeczny słomki z zaznaczonym układem włókien.
Wewnątrz słomki biegnie drut wolframowy pokryty złotem o grubości 30 μm
jako anoda. Słomki są wypełnione gazem Xe/CO2/O2 w proporcjach 70%Xe + 27%CO2
+
3%O2.
Gaz
Xe
prawdopodobieństwa
(ksenon)
absorpcji
jest
stosowany
miękkiego
dla
uzyskania
promieniowania
X
wysokiego
jakim
jest
promieniowanie przejścia, CO2 (dwutlenek węgla) służy do stabilizacji pracy liczników.
Dzięki tak dobranym proporcjom uzyskuje się robocze wzmocnienie gazowe ok.
2.5104. Przestrzeń pomiędzy słomkami została wypełniona radiatorem, aby umożliwić
zjawisko promieniowania przejścia. Do końców słomek jest przymocowana elektronika
odczytu i zasilania – FE (ang. Front End). Łącznie w całym cylindrze znajduje się 52
544 liczników SPT i 105 088 kanałów elektroniki (rys. 5.6) [16].
Rysunek 5.6 Schemat układu modułów i słomek wewnątrz cylindra [16].
15
End-caps – korki złożone z kół tak jak cylinder są zbudowane z liczników SPT,
ale inaczej ułożonych. Każde koło zostało podzielone na 32 moduły. Liczniki ułożone
są radialnie (rys. 5.8). Ze względu na różnice w budowie kół zostały one podzielone na
trzy typy: A, B i C. Kół typy A jest 12 i znajdują się najbliżej cylindra, po 6 z każdej
strony (rys. 5.2). W kole typu A mamy 16 warstw liczników. Kół typu B jest 16, po
osiem z każdej strony cylindra. Składają się z 8 warstw liczników o długości 39 cm. Kół
typu C jest 8, po cztery z każdej strony cylindra, zbudowane są z 8 warstw liczników o
długości 52 cm. Elektronika odczytu i zasilania jest przymocowana do końców słomek
na zewnątrz kół. We wszystkich kołach zgromadzone zostało 319 488 liczników SPT
[16].
Rysunek 5.7 Złożone koło i układ liczników w kołach
a) koło typu A na stanowisku testowym
b) schemat układu słomek w kołach
W całym detektorze TRT znajduje się 372 032 liczniki SPT oraz około 424 576
kanałów elektroniki, co stawia bardzo trudne wyzwanie przed systemem sterowania i
kontroli tego detektora. [12].
16
5.2 Zasada działania detektora TRT
Gazowy detektor TRT został zaprojektowany i zbudowany do pomiaru toru
cząstek oraz ich identyfikacji wykorzystując do tego efekt jonizacji ośrodka i
promieniowanie przejścia (efekty te zostały opisane w rozdziale 4). Geometria detektora
została zaprojektowana tak, aby cząsteczki wylatujące z punktu zderzenia pod różnymi
kątami miały na swojej drodze do pokonania taką samą (w przybliżeniu) liczbę
liczników SPT. Jak wynika z symulacji każda cząsteczka posiadająca ładunek różny od
zera przelatująca przez TRT pokonuje średnio około 36 słomek.
Każda cząsteczka naładowana przelatująca przez detektor TRT wywołuje w
licznikach SPT, przez które przelatuje, jonizację gazu. Przez przyłożenie napięcia do
drutu i ściany słomki można zebrać ładunek, jaki powstanie podczas jonizacji.. Dzięki
zjawisku wzmocnienia gazowego (rys. 5.9) ładunek docierający do elektroniki może
być stosunkowo łatwo zarejestrowany.
Rysunek 5.8 Propagacja efektu jonizacji w liczniku SPT
a) wybicie elektronu z atomu gazu
b) efekt lawinowy - wzmocnienie gazowe
c) rozdzielanie się jonów i elektronów w gazie
d) powstanie zjonizowanej otoczki wokół anody (drutu)
e) zebranie ładunku ujemnego
Po zebraniu ładunku z gazu jest on przekazywany do elektroniki odczytu umieszczonej
na końcach słomek. Tam zostaje on przetworzony i wysłany do pamięci wraz z
dokładnym czasem rejestracji. Ponieważ TRT jest umieszczony wewnątrz magnesu
cząsteczki naładowane poruszają się po łukach, co pozwala na pomiar pędu cząstki.
Mierząc energię zdeponowaną w licznikach z promieniowania przejścia oraz
zakrzywienie toru ruchu cząsteczki posiadających niezerowy ładunek można
17
zidentyfikować te cząsteczki. Identyfikacja odbywa się przy opracowywaniu danych
uzyskanych z detektora, czyli poza detektorem.
Rysunek 5.9 Rekonstrukcja przypadków w cylindrze z symulacji [17].
(Na powiększeniu po prawej widać tor pionu i pozytonu,
czerwone punkty o miejsca wystąpienia efektu promieniowania przejścia)
Z TRT uzyskujemy tylko informacje, że cząsteczka przeleciała przez licznik, wiemy
który to licznik (znamy jego dokładne położenie w detektorze), czas w którym nastąpił
przelot cząsteczki jak też w jakim czasie jonizacja dotarła do anody oraz energię jaka
została zdeponowana w liczniku. Posiadając dane z całego detektora można wyznaczyć
tor lotu cząsteczki, zidentyfikować ją jak również podać jej pęd (dzięki polu
magnetycznemu) (rys. 5.10).
18
5.3 System kontroli i monitorowania detektora TRT
ATLAS
jest
nowoczesnym
i
skomplikowanym
detektorem
cząsteczek
przyśpieszanych do wysokich energii. Ze względu na duże promieniowanie wewnątrz
hali, w której znajduje się detektor oraz ogromną liczbę kanałów elektroniki nie będzie
możliwe kontrolowanie i monitorowanie bezpośrednie. Ten fakt postawił ogromne
wyzwanie stworzenia zdalnego systemu kontroli i monitorowania detektora (DCS –
ang. Detector Control System). Taki system powinien wypełniać wszystkie zadania
monitorujące, korekcyjne i korelacyjne bez interwencji operatora a w przypadku
stwierdzenia wadliwego działania detektora wyłączyć go. Nowoczesny system DCS
musi być zaprojektowany tak, aby był łatwy i intuicyjny w obsłudze, nie stwarzał
kłopotów przy serwisowaniu sprzętu i oprogramowania (rys. 5.11) [12, 19].
Rysunek 5.10 Schemat systemu DCS dla detektora ATLAS-a [18].
Aby ułatwić stworzenie takiego systemu dla tak złożonego detektora, system ten został
podzielony na autonomiczne podsystemy DCS współpracujące ze sobą. Każdy
podsystem kontroluj jeden subdetektor ATLAS-a monitorując zmiany ważnych dla
detektora parametrów, podejmując akcje korekcyjne i awaryjne w przypadku
wadliwego działania detektora. DCS zarządza wieloma parametrami w zależności od
19
subdetektora, który kontroluje (np.: natężenie prądu, napięcie, temperaturę w
krytycznych punktach, ciśnienie gazu, skład mieszanki gazowej, ciśnienie itp.) [12].
Systemu DCS dla TRT został stworzony tak, aby zapewnić poprawne działanie
jak i niezawodność pracy detektora (rys. 5.12). Analizując system sterowania TRT
można wyróżnić podsystemy, które mogą pracować niezależnie od innych, należą do
nich:

System zasilania – można podzielić na: system sterowania wysokim napięciem
(HV) – zapewnia zasilanie liczników proporcjonalnych (~ 6000 kanałów
sterowania i kontroli, każdy kanał opisany przez kilkanaście parametrów),
system sterowania niskim napięciem (LV) – zapewnia zasilanie elektroniki (~
1800 kanałów, każdy kanał opisany przez około 10 parametrów).

System chłodzenia – wymagane jest usunięcie ciepła wydzielanego przez
elektronikę detektora (wydzielająca w małej objętości ok. 40 KW mocy), system
można podzielić na dwa podsystemy: chłodzenie cieczą (chłodzenie elektroniki,
wymienniki ciepła), chłodzenie gazem (chłodzenie elementów detekcyjnych).

System pomiaru temperatury detektora i serwisów – pomiar ~ 1500 punktów na
detektorze i systemach wspomagających.

System kontroli kaset i stojaków z aparaturą.

System gazowy – jest systemem zamkniętym podzielonym na kilka
podsystemów odpowiedzialnych za: mieszanie gazu, utrzymywanie stałego
składu gazu, przepływ gazu, oczyszczanie z zanieczyszczeń, stabilizację
wzmocnienia [18].
20
Rysunek 5.11 Architektura systemu DCS dla detektora TRT [18].
Dla
eksperymentów
LHC
została
przyjęta
strategia
zastosowania
przemysłowych produktów i narzędzi w tworzeniu systemu oraz użyciu przemysłowych
rozwiązań sprzętowych [20]. Uzyskano w ten sposób gwarancję utrzymania i serwis w
czasie ‘życia’ eksperymentu. Przemysłowe systemy typu SCADA (ang. Supervisory
Control And Data Acquisition) charakteryzują się elastyczną, rozproszoną i otwartą
architekturą spełniając wymagania stawiane wobec systemu DCS eksperymentu
ATLAS. Takim wybranym systemem okazał się PVSS II.
Różnorodność stosowanych urządzeń w detektorze stwarza problemy z dostępem
do sprzętu. Dlatego zastosowano standard OPC (ang. OLE for Process Control), co
pozwoliło zintegrować sprzęt, ponieważ większość z urządzeń jest wyposażone tzw.
„OPC serwer” [12].
21
5.4 Narzędzie PVSS II
Ostatnich kilka lat przyniosło szybki rozwój systemów nadzorowania i
monitorowania procesów przemysłowych - SCADA. Są to systemy projektowania i
realizacji systemów nadzoru komputerowego dla procesów przemysłowych, linii
technologicznych, maszyn i urządzeń, monitorowanych i sterowanych w oparciu o
programowalne sterowniki logicznych (PLC) i inne systemy pomiarowo-kontrolne
różnych producentów. Takim systemem jest PVSS II (skrót z niemieckiego od
„Wizualizacja procesu i system kontroli II”). Jest to zestaw oprogramowania
przeznaczony do automatyzacji w przemyśle. Główne zastosowania znajduje w
obsłudze i nadzorze skomplikowanych instalacji przemysłowych używając stacji
roboczych VDU (ang. Video Display Unit) z pełnymi graficznymi możliwościami.
Oprogramowanie stawia jednak pewne wymagania co do budowy systemu. W dodatku
do wizualizacji stanu procesu musi mieć możliwość transmisji danych i rozkazów do
procesu i swoich urządzeń kontrolnych. Operator może komunikować się z systemem
używając myszy, klawiatury lub innych standardowych urządzeń wejściowych
komputera a odpowiedzi są wyświetlane na ekranie. System zawiera wewnętrzne
funkcje alarmujące operatora o wystąpieniu krytycznego stanu urządzania lub
przekroczeniu przez parametr wartości granicznej dodatkowo zapisując dane do
późniejszej analizy.
PVSS II można określić jako zaawansowane oprogramowanie nadzorujące do
centrum kontroli albo oprogramowanie sterujące maszyną. Jako platformę do systemu
można użyć zwykłego komputera osobistego, serwera lub stacji roboczej. Połączenie
kontroli i regulacji urządzenia w automatyczną platformę (np.: PLC 1, DDC2, RTU3, …)
oraz sensorów i modułów I/O pozwala stworzyć w pełni automatyczny system
sterowania. Architektura systemu pozwala na podział na mniejsze części, programy
(ang. manager - menadżer) odpowiedzialne za konkretne zadania (rys. 5.13) [21].
PLC… ang. Programmable Logic Controller (przemysłowy system komputerowy do cyfrowej kontroli i
obsługi
2
DDC… ang. Direct Digital Control (rodzina urządzeń kontrolnych w budowie usługi zarządzającej)
3
RTU… ang. Remote Terminal Unit, Remote Telemetry Unit (telekomunikacja systemu)
1
22
Rysunek 5.12 Architektura systemu PVSS II [21].
Można wyróżnić między innymi dla skrajnych połączeń menadżera interfejsu
użytkownika UI (ang. User interface menager) odpowiedzialnego za komunikację
użytkownika z systemem i menadżera sterowników D (ang. Drivers menager)
odpowiedzialnego za proces połączenia z urządzeniami. Centralną część systemu, jego
jądro stanowi menadżer zdarzeń EV (ang. Event menager), który jest połączony ze
wszystkimi pozostałymi częściami systemu. Wyróżnić można również:

menadżer kontroli CTRL (ang. CONTROL menager) odpowiedzialny za
kontrole innych procesów sytemu,

menadżer danych DB (ang. DataBase menager) odpowiedzialny za zapisywanie
danych i zmian w procesach,

menadżer
API
(ang
Application
programming
interface)
pozwala
użytkownikowi na wprowadzanie własnych funkcji i algorytmów do systemu
PVSS II i tworzenie własnych menadżerów,

menadżer CON (ang. Connection to other system) pozwala na komunikacje z
innym systemem.
Menadżer API pozwala na tworzenie własnych programów, które można włączyć do
systemu. Dzięki temu system PVSS II jest bardzo elastyczny i otwarty w
dostosowywaniu do potrzeb różnych maszyn, urządzeń, linii produkcyjnych czy
eksperymentów fizyki wysokich energii [22].
23
6 ELMB i jej funkcjonalności
ELMB (ang. Embedded Local Monitor Board) to układ zaprojektowany dla
eksperymentu ATLAS do monitorowania i kontroli parametrów (rys. 6.1, 6.2). ELMB
zostało wyposażone w mikroprocesor ATmega128 posiadający programowalną 8
kilobajtową pamięć EEPROM, w której zapisane są parametry pracy oraz 128
kilobajtowa pamięć operacyjną.
Rysunek 6.1 ELMB [24]
a) widok z góry,
b) widok z dołu
Rysunek 6.2 Diagram blokowy ELMB [24].
Ustawienia zapisane w pamięci EEPROM mogą być zmieniane na dwa sposoby:
wykorzystując funkcję Bootloader (ELMBbl) – przeprogramowując ELMB - poprzez
CANbus4 używając protokołu CANopen5 lub aplikacje CANopen i funkcję ELMBio.
Aby dokonać zmian ustawień w pamięci układu należy pierwsze wprowadzić ELMB w
odpowiedni stan pracy (ten stan to Pre-Operational).. Wszystkie zmiany EEPROM-u
4
5
CANbus – sieć wykorzystująca standard asynchronicznej komunikacji szeregowej, stworzony przez
firmę Bosch z branży elektroniki motoryzacyjnej w 1983r. więcej informacji w rozdziale 5.1
CANopen - protokół rozwinięty na bazie protokołu CAN, specyfikujący wyższe warstwy modelu
ISA/OSI i zapewniający elastyczność konfiguracji
24
dokonywane w ustawieniach parametrów pracy układu muszą być zapisane poprzez
wysłanie rozkazu zapisującego. Jeżeli po zmianie parametrów nie zostaną one zapisane
to po restarcie układu wróci on do starych parametrów pracy.
Każdy układ ELMB jest wyposażony w przetwornik ADC (ang. Analog to Digital
Converter) połączony z multiplekserem umożliwiających czytanie napięcia na 64
kanałach analogowych. W zależności od ustawień EEPROMU możliwe jest
przeczytanie konkretnego kanału lub też wszystkich po wysłaniu do układu sygnału
„SYNC” albo otrzymania sygnału od układu w momencie zmiany napięcia na
dowolnym kanale analogowym.
Dodatkowo układ ELMB został wyposażony w trzy ośmiobitowe porty cyfrowe
A, F i C. Port F zdefiniowany jest jako port wejściowy i transmituje informacje do
mikrokontrolera czytając wartości na poszczególnych bitach. Port C jest portem
wyjściowym. Na porcie A każdy bit może być ustawiony na wejściowy lub wyjściowy
poprzez ustawienie pamięci EEPROM. Sposób odczytania portów wejściowych można
ustawić w EEPROM-ie podobnie jak w przypadku kanałów analogowych.
Przed uruchomieniem ELMB trzeba dokonać ustawień adresu układu (Node-ID)
oraz prędkości transmisji danych na CANbus-ie (CAN baudrate) (rys. 6.3). Prędkości,
jakie można uzyskać na CANbus-ie to: 50, 125, 250 lub 500 kilobitów/sekundę i zależą
od długości kabla, do którego podłączony jest układ. Do ustawienia transmisji służą
dwa pierwsze przełączniki. Należy wybrać odpowiednie ustawienie przełączników tak,
aby ustawić pożądaną wartość. Ponieważ do CANbus-u może być podpięte ponad 100
dowolnych urządzeń jednocześnie każde z nich musi posiadać swój własny,
niepowtarzalny adres, poprzez który urządzenie jest rozpoznawane. Do ustawiania
adresu układu ELMB służy 6 ostatnich przełączników [23].
Rysunek 6.3 Lokalizacja przełączników ustawiających adres ELMB
i transmisji na CANbus-ie [23].
25
6.1 CAN-bus
Do transmisji danych między układem ELMB a systemem została zastosowana
magistrala przemysłowa CAN (ang. Controller Area Network). Jest to standard
asynchronicznej komunikacji szeregowej, stworzony przez firmę Bosch z branży
elektroniki motoryzacyjnej w 1983 r. przeznaczony do komunikacji między czujnikami
i elementami wykonawczymi elektronicznych stacji sterujących w samochodach.
Zastosowanie jej to kolejny przykład standaryzacji przemysłowej eksperymentu
(wykorzystania technologii przemysłowej) [25].
Wysokie wymagania w systemach komunikacji i fakt wykorzystania CAN-bus’u
w seryjnych pojazdach (duża dostępność komponentów, masowa produkcja, niskie ceny
podzespołów) spowodowały rozszerzenie zastosowania poza obszarem samochodu,
jako otwartego systemu komunikacyjnego automatyki. Podstawową właściwością
magistrali CAN jest to, że liczba uczestników jest teoretycznie nieograniczona.
Wysłane informacje mogą zostać odebrana przez wszystkich urządzenia podłączone do
sieci CAN i każde z nich samo rozstrzyga czy ją przyjmie. Kryterium wyboru jest
zawarte w identyfikatorze ramki (Arbitration ID), który przekazywany jest w
komunikacie. Identyfikator ma 11 bitów w standardowej ramce (Standard Frame).
Możliwa jest również opcja z identyfikatorem 29 bitowym (Extended Frame) (rys. 6.4)
[25].
Rysunek 6.4 Format standardowy i rozszerzony ramki CAN [12].
Ponieważ magistrala CAN nie stosuje systemu adresowania poszczególnych
węzłów, nie ma potrzeby informowania systemu o zmianie konfiguracji. Takie
rozwiązanie ma pewne zalety:

dodanie węzła do sieci CAN nie wymaga zmian w oprogramowaniu, sprzęcie, a
także w warstwie aplikacyjnej,
26

każdy węzeł może odebrać i jednocześnie wykorzystać informacje z tego samej
ramki,

sieć CAN gwarantuje, że każda ramka jest jednocześnie akceptowany przez
wszystkie węzły lub zostaje odrzucony;
w ten sposób zapewniona jest zgodność danych w całym systemie [26].
W określonym rozwiązaniu sieci CAN szybkość transmisji jest stała. Transmisji
informacji jest możliwy z szybkością w granicach od 5 kbit/s do 1 Mbit/s. Magistrala
CAN stosuje do przesyłania danych przez przewody dwa różne poziomy logiczne, ale
nie definiuje stanów fizycznych reprezentujących te poziomy. Określa natomiast ich
funkcje logiczne jako poziom dominujący i poziom ustępujący. Służy to uniknięciu
konfliktu przy nadawaniu. Po przygotowaniu komunikatu do nadawania, urządzenie
obserwuje stan magistrali i powstrzymuje transmisję aż do chwili stwierdzenia, że jest
ona wolna.
Pierwszym elementem komunikatu wysyłanego na magistrale CAN jest
identyfikator. Jeżeli w tym samym czasie rozpoczną nadawanie dwa urządzenia, to
identyfikatory nałożą się na siebie. W razie niezgodności nakładających się bitów (0 i 1)
na magistrali ustali się wartość 0. Dzięki temu urządzenie, które nadało 1 (a więc o
niższym priorytecie) może wykryć kolizję i przerwać nadawanie. Urządzenie o
wyższym priorytecie może nadać resztę ramki bez przeszkód. Takie rozwiązanie
powoduje, że ani informacja, ani czas nie są tracone. Gdy dwie różne wiadomości są
inicjowane w tym samym czasie, to zawsze ramka danych o wyższym priorytecie
zostaje wysłana na szynę [25, 26].
27
7 Schematyczny opis systemu zasilania LV
System sterowania niskim napięciem – LV (ang. Low Voltage) – został
stworzony, aby zapewnić zasilanie elektroniki FE napięciami -3V, +3V i +2,5V. Jest on
połączony z DCS, tak jak inne podsystemy detektora TRT za pomocą stacji kontroli „S”
(SCS) znajdujące się pod ziemią (rys. 5.12) [27]. Cały system LV zasilany jest za
pomocą zasilaczy W.Ie.Ne.R Maraton przystosowanych do pracy w środowisku
promieniowania i pola magnetycznego [28]. Ze względu na dużą emisję ciepła oraz
brak miejsca wewnątrz detektora zasilacze zostały umieszczone poza detektorem, w
odległości od 70 do 100 metrów od urządzeń, które zasilają. [27, 8]. Każdy zasilacz
wytwarza napięcie 8 V i może dostarczyć 50 A posiadając 12 kanałów o mocy 300 W.
Zasilacze W.Ie.Ne.R są zdalnie sterowane poprzez magistralę przemysłowej CAN oraz
kontrolowane za pomocą komputera (rys. 7.1) [27].
Rysunek 7.1 Schemat zasilania elektroniki FE
niskim napięciem detektora TRT [29].
Zasilacze
połączone
są
z
dystrybutorami,
które
rozdzielają
prąd
do
poszczególnych obciążeń – poprzez Patch Panel-e (PP) uporządkowane w specjalnych
kasetach (rys. 7.2). Do zasilenia całego detektora TRT potrzebne są 64 kasety z Patch
Panel-ami, każda z nich wymaga doprowadzenia 4 kanałów zasilających, co powoduje
konieczność uzyskania 256 linii zasilających. Aby uzyskać taką liczbę kanałów trzeba
użyć aż 22 zasilaczy W.Ie.Ne.R Maraton. Patch Panel-e połączone są za pomocą
magistrali przemysłowej CAN z komputerami, co umożliwia sterowanie regulatorami
napięcia stanowiącymi elementy wykonawcze dystrybutora oraz odczytywanie innych
28
parametrów pracy układu zasilania. Komputery te połączone są za pomocą sieci z SCS
pozwalając na stałą komunikacje systemu DCS z najmniejszymi częściami TRT [27].
Rysunek 7.2 Architektura systemu zasilania niskim napięciem
(Low Voltage) dla TRT [27].
Każda płyta typu. Patch Panel posiada jeden kontroler ELMB (opisany w rozdziale 6)
podłączony do magistrali CAN.
Kontroler ELMB umieszczony na Patch Panel-u pełni dwie funkcje:

odczytuje wartości napięcia i natężania prądu oraz temperatury płyty za pomocą
kanałów analogowych - zamieniając wartości analogowe na cyfrowe,

umożliwia
komunikacje
dwustronną
z
DTMROC-iem
pozwalając
na
kontrolowanie pracy regulatorów napięcia [27].
Na karcie znajduje się również 12 chipów DTMROC6 połączonych z
ośmiobitowym portem cyfrowym A kontrolera. Uzyskane w ten sposób połączenie
umożliwia komunikację dwustronną, wysyłanie danych do DTMROC-a i jego
odczytywanie. Chipy umieszczone na Patch Panel-u posiadają własne rejestry
umożliwiające rozkodowywanie poleceń wysyłanych z ELMB. Poprzez wysłanie
odpowiednich instrukcji można ustawiać napięcie wyjściowe na 4 DAC-ach (ang.
Digital to Analog Converter), którymi można sterować napięcie wyjściowe na
regulatorach napięcia. DTMROC posiada jeszcze 2 wyjściowe porty cyfrowe, za
pomocą których można włączać lub wyłączać regulatory napięcia [30]. Aby zapewnić
pełną kontrole nad regulatorami napięcia i stworzono automatyczny system wyłączający
6
DTMROC – chip opisany w rozdziale 8
29
OCM (ang. Over Current Monitor), uruchamiający się w przypadku zbyt dużego
obciążenia regulatora.
Rysunek 7.3 Płyta Patch Panel-u [27].
W kontrolerze ELMB oprócz portu A został wykorzystany również port C, który
jest cyfrowym portem wyjściowym. Ustawienie na pierwszych 4 bitach tego portu
adresu DTMROC-a ustawia na wyjściu multipleksera informacje czy OCM dla
podłączonego do tego DTMROC-a regulatora włączył się wstrzymując pracę
regulatora. Informacje można odczytać korzystając z portu F kontrolera ELMB, który
jest portem wejściowym. Aby wyłączyć OCM należy użyć 6 lub 8 bitu portu C w
zależności od tego czy mamy do czynienia z OCM dotyczącym części cyfrowej czy
analogowej. Wykorzystując porty cyfrowe ELMB mamy pełną kontrole nad
regulatorami napięcia.. Analogową częścią ELMB (64 kanały) odczytywane są napięcia
i natężenia prądu na wyjściach z regulatorów [24] stwarzając tym samym w pełni
monitorowany system zasilania.
30
8 Protokół komunikacji z DTMROC
DTMROC (ang. Drift Time Measurment ReadOut Chip) jest to chip
zaprojektowanym w 0.25 μm technologii IBM CMOS odpornej na promieniowanie jako
część elektroniki Front End. Został zaprojektowany do odbierania 16 różnych sygnałów
analogowych z 2 chipów ASDBLR (ang. Amplifier/Shaper/Discriminator with Baseline
Restoration) i przetwarzania ich na wysokie lub niskie poziomy sygnałów cyfrowych.
Zapis danych do chipu odbywa się za pomocą linii wejściowej rozkazów
(Command IN) oraz linii zegara (BC). Aby zapisu jeden bit danych należy ustawić
odpowiedni poziom na linii Command IN oraz wysoki poziom na linii BC a następnie
nie zmieniając poziomu na linii wejściowej rozkazów zmienić na linii zegara poziom na
niski. Zapisanie całego rozkazu odbywa się poprzez ustawianie odpowiednich
poziomów na linii Command IN i zmianach poziomów na linii BC.
Dla szybkiego wychwycenia błędu w rozkazie został on podzielony na części
(Field), które są badane i rozkodowywane osobno. Pierwsza część (Field 1) zawiera
tylko 3 bity danych. W przypadku nie rozpoznania pierwszej części rozkazu dekoder nie
czeka na kolejne człony, tylko w danych przychodzących szuka bitów odpowiadających
części pierwszej rozkazu. Gdy pierwsza część rozkazu jest zgodna ze wzorcem
umieszczonym w rejestrze dekoder odczytuje drugą część (Field 2) składającą się z 4
bitów. Po sprawdzeniu, jeżeli zawiera błędy odrzuca dotychczasowe dane rozkazu i
odczytuje następnie 3 bity sprawdzając zgodność z częścią pierwszą (Field 1). W
przypadku zgodności danych z drugiej części (Field 2) odczytuje 8 kolejnych bitów –
część trzecią (Field 3). Sprawdza poprawność odczytanych danych, w przypadku braku
zgodności odczytuje 3 bity w poszukiwaniu części pierwszej rozkazu. Jeżeli dane
odczytane zgadzają się ze wzorcem odczytuje kolejne 6 bity –część czwartą (Field 4) w których ukryty jest adres DTMROC-a. Po sprawdzeniu zgodności adresu odczytuje
część piątą (Field 5) zawierającą 6 bitów danych. W przeciwnym wypadku zaczyna
poszukiwanie części pierwszej rozkazu (Field1). Po odczytaniu części piątej (Field5)
sprawdza jej poprawność i w zależności od wyniku sprawdzenia poprawności
przechodzi do części szóstej (Field 6) lub do części pierwszej. Część szósta zawiera od
6 do 144 bitów danych w zależności od rozkazu [30].
31
9 Opis układu testowego
Układ testowy zawiera chip DTMROC zamocowany na płycie uniwersalnej.
Ponadto posiada również gniazdo do podłączenia zasilania, wyprowadzone wyjścia
DAC-ów umożliwiając pomiar napięcia oraz port do komunikacji z DTMROC-iem.
Komputer z kartą sprzęgu PCI-CAN firmy KVASER (rys. 9.1a), połączono z płytą
Motherboard (rys. 9.1b) za pomocą magistrali przemysłowej CAN. Do płyty
Motherboard wpięty został mikrokontroler. Port cyfrowy A ELMB połączony został z
prototypowym układem zawierającym chip DTMROC (rys. 8.2).
Rysunek 9.1 a) Karta PCI -CAN Kvaser, b) Płyta Motherboard z ELMB
Ponieważ Motherboard jak i prototypowy układ wymagają zasilania zewnętrznego
zostały podłączone do zasilacza. Przed uruchomieniem układu dokonano ustawienia
adresu ELMB7 tak, aby można było nawiązać komunikacje z jednym określonym
mikrokontrolerem podłączonym do magistrali (adres, który został ustawiony do badania
komunikacji to 63 = 0x3f) (rys 6.3). Należy również określić prędkość przesyłania
danych po magistrali CAN i ustawić ją za pomocą przełączników umieszczonych na
mikrokontrolerze (rys. 6.3). Pierwsze próby komunikacji prowadzone były przy
prędkości 125 kbit/s na magistrali. Jak okazało się przy wysyłaniu pojedynczych
rozkazów do DTMROC-a prędkość ta jest odpowiednia. Jednak w przypadku, kiedy
wysłane zostaje kilka rozkazów po sobie lub oprócz rozkazów do chipu DTMROC
wysyłane są rozkazy do części analogowej mikrokontrolera ELMB występują problemy
z wykonywaniem wszystkich wysłanych poleceń - niektóre są tracone lub zawierają
błędy.
7
Ustawianie adresu mikrokontrolera omówione zostało w rozdziale 6.
32
Rysunek 9.2 Schemat układu do komunikacji z chipem DTMROC
Jak sprawdzono problemy występujące przy prędkości transmisji 125 kbit/s
spowodowane były przez kontroler ELMB. Ponieważ prędkość przekazu danych na
magistrali była zbyt duża i nie pozwalała na ich obsłużenie przez kontroler,
powodowało to przepełnienie buforów części odczytującej dane z magistrali. W efekcie
niektóre rozkazy nie mieściły się w buforze ELMB i były tracone. Jeszcze większe
problemy występowały, kiedy oprócz rozkazów do chipu DTMROC wysyłane były
polecenia do części analogowej kontrolera. Poza tym po dokładniejszym zbadaniu
stwierdzono, iż mikroprocesor umieszczony w ELMB w przypadku pracy z częścią
analogową każde polecenie wykonuje dłużej. Brak możliwości poprawienia błędów
komunikacji występujących przy prędkości 125 kbit/s spowodował konieczności
zmniejszenia prędkości transmisji danych do 50 kbit/s.
Po ustawieniu adresu ELMB oraz prędkości na magistrali CAN można włączyć
układ i przejść do ustawienia parametrów pracy kontrolera stosując odpowiednią
aplikację pomocniczą.. Najważniejszymi parametrami, akie trzeba ustawić do
poprawnej pracy ELMB w układzie służącym do komunikacji z chipem DTMROC są:

ustawienie typu transmisji danych z ELMB - trzy możliwości:
a) dane odsyłane po każdej wiadomości SYNC,
b) dane odsyłane po każdym rozkazie odczytania danych,
c) dane odsyłane co każdy cykl zegara (1 s) i po rozkazie odczytania
danych,
(dla usprawnienia komunikacji i nie przeciążania magistrali CAN należy
ustawić transmisje danych po wysłaniu rozkazu odczytania danych)
33

dla części analogowej układu jest zakres pracy oraz polaryzacja konwerterów
ADC (należy ustawić zakres pracy na 1 V oraz tryb pracy bipolarny)

dla części cyfrowej układu:
a) za pomocą Filter Mask Outputs należy ustawić cyfrowy port A tak, aby
czwarty bit portu był bitem wejściowym danych a pozostałe
wyjściowymi (należy wpisać wartość 247)
b) za pomocą Digital Interrupt Enable Mask ustawić przerwania na portach
cyfrowych (należy wpisać wartości 255) [31]
Po wprowadzeniu wyżej wymienionych ustawień i zapisaniu zmian w pamięci EPROM
możliwa jest komunikacja dwukierunkowa z chipem DTMROC poprzez mikrokontroler
ELMB. Taka konfiguracja układu pozwala na komunikację praktycznie bez żadnych
błędów i przeciążenia magistrali CAN. Należy jednak pamiętać, o tym wspomniano już
wcześniej, że pamięć EPROM ma określoną ilość możliwość zapisów, to znaczy, że po
przekroczeniu pewnej skończonej liczby zapisów nie będzie możliwe wprowadzenie na
stałe zmian do pamięci.
34
10 Opis programu
10.1 Funkcjonalności
Po złożeniu układu oraz wprowadzeniu ustawień do kontrolera ELMB możliwa
jest komunikacja z chipem DTMROC za pomocą przygotowanych do tego celu
programów. W krakowskim zespole ATLAS-a została napisana w języku C++
biblioteka dll do systemu PVSS II. Celem stworzenia jej było uzyskanie szybkiego i w
miarę możliwości prostego sterowania regulatorami napięcia. Do wymagań stawianych
tworzonej bibliotece należą przede wszystkim możliwie jak najszybsze ustawianie
regulatorów napięcia, samodzielne działania na jednym z portów karty KVASER oraz
umożliwienie uzyskania pełnej kontroli nad układami Patch Panel wykorzystując
sterowniki sprzęgu CAN-bus. Najważniejszą funkcją, którą zawiera biblioteka jest
funkcja umożliwiająca zapisywanie danych do chipu DTMROC „Write” pozwalająca
na zmianę napięcia na wyjściu z DAC-ów a tym samym ustawienie regulatora napięcia.
Kod tej funkcji został przedstawiony poniżej, jest to już wersja rozwinięta i wzbogacona
o kilka zabezpieczeń przed wystąpieniem błędów lub utratą danych.
//******************************************Write***************************************//
// Syntax: int KlasaI::Write(int handle, int elmbAddress, int dtmrocAddress, int object,
//
int Field6, int portC)
//
// Syntax: int KlasaI::Write(int handle, int elmbAddress, int dtmrocAddress, int object,
//
int Field6, int portC)
//
// Function:
//
//
write data to dedicated dtmroc, in 'object' parameter is set, what to write:
//
//
"object" = 1 -> Configuration Register
//
"object" = 2 -> DAC 0 & DAC 1
//
"object" = 3 -> DAC 2 & DAC 3
//
//
// Input parameters:
//
//
int handle - a handle for KVASER channel;
//
int elmbAddress - address of elmb (from 0 to 63);
//
int dtmrocAddress - address of dtmroc (1-6, 9-14);
//
int object - what to write (see above);
//
int Field6 - data to be written;
//
int portC - a value to be written to port C
//
(port A and C are written with the same command)
//
// Return value:
//
//
0 (canOK) - success
//
<0 - a canlib error code
//
error message is placed in internal class member and can be retrieved
//
with: GetErrorText()
//
int KlasaI::Write(int handle, int elmbAddress, int dtmrocAddress, int object, int Field6, int portC, int
elmbTimeOut)
35
{
int dataClocks;
int commandClocks = 27;
unsigned long Field;
unsigned long dataField;
bool overrun = false;
int status;
int check;
start:
switch (object)
{
case ConfigRegister:
Field = (FIELD_12345_WRITE_CFG | (dtmrocAddress << 6) | CONF_REG) <<
1;
dataClocks = 24;
dataField = (Field6 << 4);
break;
case DAC_01:
Field = (FIELD_12345_WRITE_DAC | (dtmrocAddress << 6) | DAC01_REG) <<
1;
dataClocks = 16;
dataField = (Field6 << 12);
break;
case DAC_23:
Field = (FIELD_12345_WRITE_DAC | (dtmrocAddress << 6) | DAC23_REG) <<
1;
dataClocks = 16;
dataField = (Field6 << 12);
break;
}
#ifdef PRINT_DEBUG
printf ("w");
#endif
do
{
#ifdef PRINT_DEBUG
printf ("b");
#endif
if ((status = Send (handle, commandClocks, elmbAddress, Field, portC)) < 0 )
{
AddToErrorText (" from Read");
return (status);
}
if (elmbTimeOut) Sleep (elmbTimeOut);
if ((overrun = Get_ELMB_CANBufferOverrun (handle, elmbAddress)) == true)
{
if ((status = recoverOverrun(handle, elmbAddress, portC)) < 0 )
{
AddToErrorText (" from Write");
return (status);
}
continue;
}
if ((status = Send (handle, dataClocks, elmbAddress, dataField, portC)) < 0 )
{
AddToErrorText (" from Write");
return (status);
}
if (elmbTimeOut) Sleep (11+elmbTimeOut);
if ((overrun = Get_ELMB_CANBufferOverrun (handle, elmbAddress)) == true)
{
if ((status = recoverOverrun(handle,elmbAddress, portC)) < 0 )
{
AddToErrorText (" from Write");
return (status);
}
continue;
}
if ((status = BC(handle, 2, elmbAddress, portC)) < 0 )
{
AddToErrorText (" from Read");
return (status);
}
if (dtmrocAddress == 0x3F) return status;
36
status = Read (handle, elmbAddress, dtmrocAddress, object, portC, 11, &check);
if (status < 0)
{
AddToErrorText (" from Write");
return status;
}
if (check != Field6)
{
if ((status = recoverOverrun(handle,elmbAddress, portC)) < 0 )
{
AddToErrorText (" from Write");
return (status);
}
BC (handle, 500, elmbAddress, portC);
Sleep (1000);
goto start;
}
}
while (overrun);
return status;
}
Jak można zauważyć funkcja ta podczas swojego działania wywołuje inne funkcje takie
jak: „Send”, „BC”, „Read” itd. Nie wysyła więc samodzielnie rozkazy na magistralę
CAN. Jest to funkcja, która otrzymując odpowiednie parametry z zewnątrz (np.: adres
ELMB = elmbAddress (od 0 do 63), adres DTMROC-a = dtmrocAddress (od 1 do 6 –
część analogowa, od 9 do 14 – część cyfrowa), dane do zapisania = Field6, itd.) i
wykorzystując je przesyła do wywołanej funkcji „Send”, która korzystając z poleceń
zawartych w bibliotece CanLibrary oraz dane otrzymane od funkcji „Write” wysyła
dane do bufora sprzęgu a stamtąd przesyłane są na magistrale CAN. To funkcja „Send”
jest odpowiedzialna za wysyłanie jakichkolwiek danych do karty sprzęgu, jej kod
przedstawiono poniżej.
//******************************************Send***************************************//
//
// Syntax: KlasaI::Send(int handle, int clocks, int elmbAddress, unsigned long Field, int portC);
//
// Function:
//
//
send a message to CANBUS - simulate a serial protocol for dtmroc
//
// Input parameters:
//
//
int handle - a handle for KVASER channel;
//
int clocks - number of clocks needed for requested command
//
int elmbAddress - address of elmb (from 0 to 63);
//
unsigned long Field - 28 bit message to be sent to CanBus
//
int portC - a value to be written to port C
//
(port A and C are written with the same command)
//
// Return value:
//
//
0 (canOK) - success
//
<0 - a canlib error code
//
error message is placed in internal class member and can be retrieved
//
with: GetErrorText()
int KlasaI::Send(int handle, int clocks, int elmbAddress, unsigned long Field, int portC)
{
int licz = 1;
int licznik = 0;
unsigned long bitout;
int ONE = (0x0200 + portC);
37
int ZERO = (0x0000 + portC);
int ONECLK = (0x0300 + portC);
int ZEROCLK = (0x0100 + portC);
canStatus stat;
unsigned long AND= 0x8000000;
do
{
bitout = AND & Field ;
Field = Field << 1;
licz ++;
if (bitout > 0)
{
if ((stat = privCanWrite (handle, cobID_RPDO1|elmbAddress, &ONECLK, 2, 0))
< 0)
{
SetErrorText ("canWrite in Send", stat);
return (int) stat;
}
if ((stat = privCanWrite (handle, cobID_RPDO1|elmbAddress, &ONE, 2, 0)) < 0)
{
SetErrorText ("canWrite in Send", stat);
return (int) stat;
}
if ((stat = privCanWrite (handle, cobID_RPDO1|elmbAddress, &ONECLK, 2, 0))
< 0)
{
SetErrorText ("canWrite in Send", stat);
return (int) stat;
}
}
else
{
if ((stat = privCanWrite (handle, cobID_RPDO1|elmbAddress, &ZEROCLK, 2,
0)) < 0)
{
SetErrorText ("canWrite in Send", stat);
return (int) stat;
}
if ((stat = privCanWrite (handle, cobID_RPDO1|elmbAddress, &ZERO, 2, 0)) <
0)
{
SetErrorText ("canWrite in Send", stat);
return (int) stat;
}
if ((stat = privCanWrite (handle, cobID_RPDO1|elmbAddress, &ZEROCLK, 2,
0)) < 0)
{
SetErrorText ("canWrite in Send", stat);
return (int) stat;
}
}
}
while (licz <= clocks);
return (int)stat;
}
Z kodu funkcji „Write” można wywnioskować, iż poza zapisem rozkazów do
chipu DTMROC dokonuje ona sprawdzenia czy wysłany rozkaz został odczytany i czy
wysłane dane zostały zapisane. Sprawdzenie odbywa się poprzez odczytanie wartości
zapisanej w rejestrze chipu poprzez funkcje „Read” a następnie porównanie jej z
wartością, która została wysłana do DTMROC-a. Wystąpienie różnicy pomiędzy
wartością wysłaną a odczytaną powoduje zwrócenie błędu przez funkcje oraz ponowne
wywołanie funkcji „Write” z takimi samymi parametrami. W przypadku zgodności
danych zapisanych i odczytanych funkcja zapisująca zwraca status zero równoznaczny z
38
prawidłowym działaniem funkcji i poprawnym zapisem. Status informujący o
prawidłowym zadziałaniu funkcji lub błędzie jest zwracany także przez każdą funkcję
pozwalając na pełną kontrole działania napisanej biblioteki. Jak już wspomniano do
odczytywania danych z rejestrów chipu DTMROC służy funkcja „Read”. Można dzięki
niej odczytać między innymi adres chipu zakodowany w głównym rejestrze Command
Status Register. Funkcja ta oprócz statusu zwraca wartość odczytaną, co daje możliwość
przekazania danych odczytanych do innych funkcji, poniżej przedstawiono jej kod.
//******************************************Read***************************************//
//
// Syntax: int KlasaI::Read(int handle, int elmbAddress, int dtmrocAddress, int objecto,
//
int portC, int *value)
//
// Function:
//
//
read data from one dtmroc, in 'object' parameter is set, what do we read:
//
//
"object" = 1 (ConfigRegister) -> Configuration Register
//
"object" = 2 (DAC_01) -> DAC 0 & DAC 1
//
"object" = 3 (DAC_23) -> DAC 2 & DAC 3
//
"object" = 4 (StatusRegister) -> Common Status Register
//
// Input parameters:
//
//
int handle - a handle for KVASER channel;
//
int elmbAddress - address of elmb (from 0 to 63);
//
int dtmrocAddress - address of dtmroc (1-6, 9-14);
//
int objecto - what to write (see above);
//
int portC - a value to be written to port C
//
(port A and C are written with the same command)
//
// Output value:
//
//
int *value - read back data
//
// Return value:
//
//
0 (canOK) - success
//
<0 - a canlib error code
//
error message is placed in internal class member and can be retrieved
//
with: GetErrorText()
int KlasaI::Read(int handle, int elmbAddress, int dtmrocAddress, int object, int portC, int elmbTimeOut, int
*value)
{
int CLKZERO = (0x0000 + portC);
int CLKONE = (0x0100 + portC);
canStatus stat;
int status;
int Field;
int Field6 = 0;
int dataClocks;
int commandClocks = 27;
int bit;
int BufferRead;
unsigned long Time;
unsigned int Length;
unsigned int Flag;
bool overrun;
int repeat;
char text[30];
repeat = 5;
switch (object)
{
case ConfigRegister:
Field = FIELD_12345_READ | (dtmrocAddress << 6) | CONF_REG;
39
dataClocks = 24;
break;
case DAC_01:
Field = FIELD_12345_READ | (dtmrocAddress << 6) | DAC01_REG;
dataClocks = 16;
break;
case DAC_23:
Field = FIELD_12345_READ | (dtmrocAddress << 6) | DAC23_REG;
dataClocks = 16;
break;
case StatusRegister:
Field = FIELD_12345_READ | (dtmrocAddress << 6) | COMM_STAT_REG;
dataClocks = 32;
break;
}
Field = (Field << 1);
#ifdef PRINT_DEBUG
printf ("r");
#endif
do
{
if (!(repeat--))
{
if ((status = recoverOverrunHard(handle, elmbAddress, portC)) < 0 )
{
AddToErrorText (" from Read");
return (status);
}
sprintf (text, "in dtmroc #%d", dtmrocAddress);
SetInternalErrorText (text, kl_DTMROC_INH_Read_Failed);
return kl_DTMROC_INH_Read_Failed;
}
#ifdef PRINT_DEBUG
printf ("p ");
#endif
if ((status = Send (handle, commandClocks, elmbAddress, Field, portC)) < 0 )
{
AddToErrorText (" from Read");
return (status);
}
if ((overrun = Get_ELMB_CANBufferOverrun (handle, elmbAddress)) == true)
{
if ((status = recoverOverrun(handle, elmbAddress, portC)) < 0 )
{
AddToErrorText (" from Read");
return (status);
}
continue;
}
if ((status = BC(handle, 4, elmbAddress, portC)) < 0 )
{
AddToErrorText (" from Read");
return (status);
}
if ((stat = privCanWrite (handle, cobID_RPDO1|elmbAddress, &CLKONE, 2, 0)) < 0)
{
SetErrorText ("canWrite CLKZERO in Read", stat);
return (int) stat;
}
for (bit=1; bit <= dataClocks; bit++)
{
if ((stat = privCanWrite (handle, cobID_RPDO1|elmbAddress, &CLKZERO, 2, 0)) < 0)
{
SetErrorText ("canWrite CLKZERO in Read", stat);
return (int) stat;
}
if ((stat = privCanWrite (handle, cobID_TPDO1|elmbAddress, 0, 2, canMSG_RTR)) < 0)
{
SetErrorText ("canWrite COMMAND in Read", stat);
return (int) stat;
}
if ((stat = privCanWrite (handle, cobID_RPDO1|elmbAddress, &CLKONE, 2, 0)) < 0)
{
SetErrorText ("canWrite CLKONE in Read", stat);
40
return (int) stat;
}
stat = canReadSyncSpecific(handle,cobID_TPDO1|elmbAddress,3000);
if (stat == canERR_TIMEOUT)
{
if (overrun = Get_ELMB_CANBufferOverrun (handle, elmbAddress))
{
break;
}
else
{
SetErrorText ("canReadSyncSpecific in Read", stat);
return (int) stat;
}
}
else
if (stat < 0)
{
SetErrorText ("canReadSyncSpecific in Read", stat);
return (int) stat;
}
if (overrun = Get_ELMB_CANBufferOverrun (handle, elmbAddress))
{
break;
}
stat = canReadSpecificSkip(handle,cobID_TPDO1|elmbAddress, &BufferRead
,&Length, &Flag, &Time);
if (stat < 0)
{
SetErrorText ("canReadSpecificSkip in Read", stat);
if (stat == -2)
{
if (overrun = Get_ELMB_CANBufferOverrun (handle,
elmbAddress)) {
break;
}
}
else
return (int) stat;
}
if (overrun = Get_ELMB_CANBufferOverrun (handle, elmbAddress))
{
break;
}
Field6 = (Field6 <<1) | ((BufferRead & 0x0800) >> 11);
}
if (overrun)
{
Get_ELMB_CANBufferOverrun (handle, elmbAddress) ;
if ((status = recoverOverrun(handle, elmbAddress, portC)) < 0)
{
AddToErrorText (" from Read");
return status;
}
continue;
}
if ((status = BC(handle, 2, elmbAddress, portC)) < 0)
{
AddToErrorText (" from Read");
return status;
}
}
while (overrun);
*value = Field6;
return status;
}
Kolejną ważną funkcja jest „Set_INHIBIT” umożliwiająca włączenie lub
wyłączenie regulatora napięcia. Jej powstanie służy głównie zapobiegnięciu sytuacjom
niebezpiecznym dla detektora. W przypadku stwierdzenia przegrzewania się lub zbyt
41
dużego poboru mocy przez regulator można go w każdej chwili wyłączyć bez potrzeby
wyłączania całego detektora lub pozostawienia włączonej części stwarzającej
zagrożenie. Ta funkcja w znacznym stopniu pozwala na zwiększenie kontroli nad pracą
detektora ułatwiając i rozwiązując problemy związane z serwisem elektroniki. Kod
funkcji „Set_INHIBIT” przedstawiono poniżej.
//***************************************Set_INHIBIT*********************************//
//
// Syntax: int KlasaI::Set_INHIBIT(int handle, int elmbAddress, int dtmrocAddress,
//
int portC, int inhibitNb, int inhibitValue)
//
// Function:
//
//
set requested inhibit (0, 1 or both) in one dtmroc:
//
inhibitNb == 1 -> inhibit0 is set/reset
//
inhibitNb == 2 -> inhibit 1 is set/reset
//
inhibitNb == 3 -> both inhibits are set/reset
//
// Input parameters:
//
//
int handle - a handle for KVASER channel;
//
int elmbAddress - address of elmb (from 0 to 63);
//
int dtmrocAddress - address of dtmroc (1-6, 9-14);
//
int portC - a value to be written to port C
//
(port A and C are written with the same command)
//
int inhibitNb - which inhibit set/reset
//
int inhibitValue - 0 or 1
//
// Return value:
//
//
0 (canOK) - success
//
<0 - a canlib error code
//
error message is placed in internal class member and can be retrieved
//
with: GetErrorText()
int KlasaI::Set_INHIBIT(int handle, int elmbAddress, int address, int portC, int inhibitNb,
int inhibitValue, int elmbTimeOut)
{
int Field6;
int inh1, inh0;
int status;
if ((inhibitNb != 1) && (inhibitNb != 2) && (inhibitNb != 3))
{
SetInternalErrorText ("Set_INHIBIT", kl_DTMROC_INH_BadInhNumber);
return kl_DTMROC_INH_BadInhNumber;
}
if ((inhibitValue != 0) && (inhibitValue != 1))
{
SetInternalErrorText ("Set_INHIBIT", kl_DTMROC_INH_BadInhValue);
return kl_DTMROC_INH_BadInhValue;
}
if ((status = Read(handle, elmbAddress, address, 1, portC, elmbTimeOut, &Field6)) < 0)
{
AddToErrorText (" from Set_INHIBIT");
return (status);
}
inh0 = Field6 & 0x20;
inh0 = inh0 >> 5;
inh1 = Field6 & 0x10;
inh1 = inh1 >> 4;
switch (inhibitNb)
{
case 1:
if (inhibitValue == 0)
Field6 = Field6 & 0xFFDF;
else
Field6 = Field6 | 0x20;
break;
42
case 2:
if (inhibitValue == 0)
Field6 = Field6 & 0xFFEF;
else
Field6 = Field6 | 0x10;
break;
case 3:
if (inhibitValue == 0)
Field6 = Field6 & 0xFFCF;
else
Field6 = Field6 | 0x30;
break;
}
if ((status = Write (handle, elmbAddress, address, 1, Field6, portC, elmbTimeOut)) < 0 )
{
AddToErrorText (" from Set_INHIBIT");
return (status);
}
return status;
}
Jak już wspomniano funkcja „Set_INHIBIT” pozwala włączyć i wyłączyć
regulatory podłączone do chipu DTMROC. Odbywa się to poprzez ustawienie stanu
wysokiego lub niskiego na czwartym lub piątym bicie Configuration Register, które są
cyfrowymi bitami wyjściowymi z chipu. Ponieważ każdy DTMORC posiada cztery
konwertery DAC a tylko dwa bity wyjściowe z Configuration Register, więc regulatory
napięcia muszą być podłączone parami do wyjść cyfrowych chipu. Analizując
dokładnie budowę systemu zasilania niskim napięciem można zauważyć, że niektóre
regulatory łączone są ze sobą równolegle dla dostarczenia większego prądu obciążenia.
W tym przypadku konieczne jest wyłączenie obu regulatorów w przypadku dużego
obciążenia lub przegrzewania się jednego z nich.
Jeżeli dokona się analizy działania funkcji „Set_INHIBIT” okaże się, że
wywołuje ona funkcję czytającą „Read” i odczytuje nią Configuration Register a
następnie sprawdza, jakie wartości mają bity czwarty i piąty. Następnie wstawiane są
nowe wartości tych bitów i zapisany cały rejestr chipu wykorzystując funkcję „Write”.
Zatem włączenie i wyłączenie regulatorów jest możliwe również przy wykorzystaniu
tylko funkcji „Read” i „Write” oraz wykonaniu drobnych obliczeń pozwalających
odczytać wartości czwartego i piątego bitu rejestru.
Kolejną funkcja istotną w działaniu biblioteki jest funkcja „Read_OCM”
umożliwiająca odczytanie wystąpienia sygnału OCM (ang. Over Current Monitor).
Sygnał ten występuje w przypadku przekroczenia zakresu regulacji napięcia oraz zbyt
dużego poboru prądu. W przypadku pojawienia się sygnału OCM następuje
automatyczne wyłączenie regulatora w celu zabezpieczenia przed uszkodzeniem go.
Pojawienie się sygnału można odczytać za pomocą portu F i C mikrokontrolera ELMB.
Na pierwszych czterech bitach portu C należy ustawić adres chipu DTMROC a na
43
jednym z pierwszych trzech (w zależności czy DTMROC reguluje napięcie na
regulatorze dla części cyfrowej, czy analogowej zasilanej napięciem dodatnim czy
ujemnym) portu F odczytać. Kod funkcji odpowiedzialnej za odczytanie OCM
przedstawiono poniżej.
//***************************************Read_OCM**********************************//
//
// Syntax: int KlasaI::Read_OCM(int handle, int elmbAddress, int section,
//
int portC, int *digOCM, int *negativeOCM, int *positiveOCM);
//
// Function:
//
///
read OCM values for one section, e.g. 1 from 12:
//
analog positive, analog negative and digital
//
// Input parameters:
//
//
int handle - a handle for KVASER channel;
/
int elmbAddress - address of elmb (from 0 to 63);
//
int section - 0 - 11 ;
//
int portC - a value to be written to port C
//
(port A and C are written with the same command)
//
// Output value:
//
//
int *digOCM - OCM for digital part: bit set to 1 - Overcurrent occured
//
int *negativeOCM - OCM for analog negative part: bit set to 1 - Overcurrent occured
//
int *positiveOCM - OCM for analog positive part: bit set to 1 - Overcurrent occured
//
// Return value:
//
//
0 (canOK) - success
//
<0 - a canlib error code
//
error message is placed in internal class member and can be retrieved
//
with: GetErrorText()
int KlasaI::Read_OCM(int handle, int elmbAddress, int section, int portC, int *digOCM, int *negativeOCM, int
*positiveOCM)
{
int licznik = 0;
int BufferRead;
int Field6 = 0x0000;
int DIG_OCM;
int NEGATIVE_OCM;
int POSITIVE_OCM;
unsigned long Time;
unsigned int Length = 0x0000;
unsigned int Flag = 0x0000;
int L;
canStatus stat;
int address;
if ((section < 0) || (section > 11))
{
SetInternalErrorText ("Read_OCM", kl_DTMROC_OCM_BadSection);
return kl_DTMROC_OCM_BadSection;
}
address = (section + portC);
if ((stat = privCanWrite (handle, cobID_RPDO1|elmbAddress, &address, 2, 0)) < 0)
{
SetErrorText ("canWrite Address in Read_OCM", stat);
return (int) stat;
}
if ((stat = privCanWrite (handle, cobID_TPDO1|elmbAddress, 0, 2, canMSG_RTR)) < 0)
{
SetErrorText ("canWrite Read Request in Read_OCM", stat);
return (int) stat;
}
stat = canReadSyncSpecific(handle,cobID_TPDO1|elmbAddress,2000);
if (stat < 0)
{
44
SetErrorText ("canReadSyncSpecific in Read_OCM", stat);
return 0;
}
stat = canReadSpecificSkip(handle,cobID_TPDO1|elmbAddress, &BufferRead ,&Length, &Flag,
&Time);
if (stat < 0)
{
SetErrorText ("canReadSpecificSkip in Read_OCM", stat);
return 0;
}
L = (BufferRead >> 8);
DIG_OCM = L & 0x1;
NEGATIVE_OCM = L & 0x2;
POSITIVE_OCM = L & 0x4;
#ifdef _CONSOLE
printf ("\n\n\t\tDIG_OCM = %d",DIG_OCM);
printf ("\n\n\t\tAnalog NEGATIVE_OCM = %d",NEGATIVE_OCM);
printf ("\n\n\t\tAnalog POSITIVE_OCM = %d\n",POSITIVE_OCM);
#endif
*digOCM = DIG_OCM;
*negativeOCM = NEGATIVE_OCM;
*positiveOCM = POSITIVE_OCM;
return (int)stat;
}
Bibliotekę dll do systemu PVSS II stworzono w celu szybkiego ustawiania
regulatorów napięcia. Ponieważ musi działać samodzielnie na porcie karty sprzęgu
zawiera oprócz wyżej wymienionych funkcje inicjalizujące magistralę CAN oraz
ustawiające mikrokontrolery ELMB oraz chipy DTMROC w odpowiedni stan. Obecnie
biblioteka zawiera około 43 funkcje, których spis przedstawiono poniżej.
int Init_CANBus(int channel, int *handle);
int Init_ELMB (int handle, int elmbAddress);
int Init_DTMROC(int handle, int elmbAddress, int portC, int elmbTimeout, char *dtmrocRetAddr);
int InitCanLibrary();
int HardSoftResetDtmrocs(int handle, int elmbAddress, int portC, int elmbTimeOut);
int GetDtmrocState (int handle, int elmbAddress, int dtmrocAddress, int portC, int elmbTimeOut, int *state);
int Set_ELMB_State (int handle, int elmbAddress, int nmtCS);
int Read_ELMB_State (int handle, int elmbAddress, int *state);
bool Get_ELMB_CANBufferOverrun (int handle, int elmbAddress);
unsigned short KlasaI::Get_ELMB_EmergencyError (int handle, int elmbAddress);
int Software_Reset_DTMROC(int handle, int elmbAddress, int portC, int elmbTimeOut);
int Send(int handle, int clocks, int elmbAddress, unsigned long Field, int portC);
int BC(int handle, int clocks, int elmbAddress, int portC);
int Init(int handle, int channel, int elmbAddress, int portC, int elmbTimeOut);
int CloseCan(int handle);
int Write(int handle, int elmbAddress, int dtmrocAddress, int object, int Field6, int portC, int elmbTimeOut);
int WriteDac(int handle, int elmbAddress, int dtmrocAddress, int dacNb, int Field6, int portC, int elmbTimeOut);
int WriteAllDacsWheelA(int handle, int elmbAddress, int portC, int elmbTimeOut, int *values);
int WriteAllDacsWheelB(int handle, int elmbAddress, int portC, int elmbTimeOut, int *values);
int WriteDacBrdc (int handle, int elmbAddress, int dacs, int data, int portC, int elmbTimeOut);
int WriteDacBrdcCheck (int handle, int elmbAddress, int dacs, int Field6, int portC, int elmbTimeOut);
int DacBrdcCheck (int handle, int elmbAddress, int dacs, int Field6, int portC, int elmbTimeOut);
int Hardware_Reset_DTMROC(int handle, int elmbAddress, int portC);
int Read(int handle, int elmbAddress, int dtmrocAddress, int objecto, int portC, int elmbTimeOut, int *value);
int ReadAllDacsWheelA(int handle, int elmbAddress, int portC, int elmbTimeOut, int *values);
int ReadAllDacsWheelB(int handle, int elmbAddress, int portC, int elmbTimeOut, int *values);
void can_Get_Error_Text(char* id, canStatus stat);
char *GetErrorText(void);
int Data_BC(int handle, int clocks, int elmbAddress, int portC);
int Get_INHIBIT(int handle, int elmbAddress, int address, int portC, int elmbTimeOut, int *inhibits);
int GetAllInhibitsWheelA(int handle, int elmbAddress, int portC, int elmbTimeOut, int *values);
int GetAllInhibitsWheelB(int handle, int elmbAddress, int portC, int elmbTimeOut, int *values);
int Set_INHIBIT(int handle, int elmbAddress, int address, int portC, int inhibitNb,
int inhibitValue, int elmbTimeOut);
45
int SetInhBrdc (int handle, int elmbAddress, int portC, int inhibitValue, int elmbTimeOut);
int SetInhBrdcCheck (int handle, int elmbAddress, int portC, int inhibitValue, int elmbTimeOut);
int InhBrdcCheck (int handle, int elmbAddress, int portC, int inhibitValue, int elmbTimeOut);
int Read_OCM(int handle, int elmbAddress, int address, int portC, int *digOCM, int *negativeOCM, int
*PositiveOCM);
int Read_OCM_All (int handle, int elmbAddress, int portC, int *digOCM, int *negativeOCM, int *positiveOCM);
int Clear(int handle, int elmbAddress, int i);
int Write_C(int handle, int elmbAddress, int Port_C);
int D_Level(int handle, int elmbAddress, int portC);
int Write_CMD(int handle, unsigned long Field12345, unsigned long Data, int elmbAddress, int portC);
int Read_CMD(int handle, unsigned long Field12345, int portC, int elmbAddress, int *value);
46
10.2 Pomiary prędkości
Od samego początku powstania pomysłu sterowania regulatorami napięcia za
pomocą napięcia na wyjściach konwerterów DAC z chipu DTMROC zastanawiano się
nad sposobem uzyskaniem jak najkrótszego czasu potrzebnego do ustawienia
wszystkich
regulatorów.
Pierwsze
plany
zakładały
zmianę
oprogramowania
mikrokontrolera ELMB, co pozwoliłoby na uzyskanie częstości pracy 45 kHz i
ustawienie jednego układu Patch Panel w ciągu około 0,04 s. Okazało się jednak, że ten
plan jest bardzo trudny do zrealizowania, ponieważ jakakolwiek zmiana w
oprogramowaniu ELMB spowoduje utratę gwarancji. Producent układu zastrzegł sobie
prawo zerwania gwarancji w przypadku dokonywania zmian w oprogramowaniu i
budowie mikrokontrolera. Wycofanie się producenta spowodowałoby, iż wszystkie
naprawy serwisowe musiałaby przejąć na siebie grupa dokonująca zmiany w układzie.
Ze względu na przewidywany okres pracy detektora ATLAS – od 10 do 15 lat - oraz
ilość mikrokontrolerów rozwiązanie to było trudne do przyjęcia.
Dokonanie przybliżonych pomiarów prędkości pozwoliło na zorientowanie się, w
którym miejscu należy szukać optymalnego rozwiązania, w którym miejscu uzyskane
prędkości są do przyjęcia, a w którym zbyt wolne. Wyniki pomiarów pokazały, że
ustawianie regulatorów z poziomu systemu PVSS II poprzez OPC Server odbywa się z
częstością poniżej 20 Hz, co sprawia, że na ustawienie jednego Patch Panel-a potrzeba
ponad 90 s. Jest to czas nie do przyjęcia, ponieważ ustawienie całego detektora TRT,
czyli 192 Patch Panel-i trwałoby około 1080 s = 18 minut. Inną możliwością było
stworzenie aplikacji w OPC Serwerze, ale różnica w częstości pracy jest niewielka i
ustawienie całego detektora trwałoby 432 s (około 7minut i 12 sekund, ustawienie
jednego Patch Panel-u trwałoby 36 s). Najlepszym rozwiązaniem możliwym do
zaakceptowania okazało się stworzenie biblioteki dll do systemu PVSS II
wykorzystującej sterowniki karty KVASER. Maksymalna częstość wysyłania danych
przez taką bibliotekę to około 2 kHz, co pozwala ustawić regulatory napięcia na Patch
Panel-u w ciągu 0,9 s a cały detektor w 10,8 sekundy (rys. 10.1) [32].
47
Rysunek 10.1 Schemat systemu sterowania LV z uwzględnionymi
pomiarami częstości nadawania [32].
Po napisaniu najbardziej potrzebnych funkcji pozwalających na sprawdzenie
komunikacji z chipem DTMROC oraz działania układu, stworzony został DOS-owy,
który posłużył do przetestowania pierwszych prototypów Patch Panel-i i znajdującego
się tam jednego z kilku układów testowych. Okazało się, że Patch Panel-e zawierają
błędy uniemożliwiające działanie układu. Jednak po poprawieniu tych błędów udało się
nawiązać komunikację i przeprowadzić sprawdzenie sygnałów w różnych miejscach
układu. Stwierdzono również, iż w układach Patch Panel opadające zbocze zegara
zapisuje dane do chipu DTMROC, ponieważ jest odwrócona polaryzacja linii, a nie jak
wcześniej uważano, że jest to narastające zbocze (rys. 10.2, 10.3)
48
Rysunek 10.2 Ekran oscyloskopu z pomiarem trzech linii podczas
wysyłania rozkazu odczytania rejestru do DTMROC-a
z ustawieniem zapisywania danych przez narastające zbocze zegara
Rysunek 10.3 Ekran oscyloskopu z pomiarem trzech linii podczas
wysyłania rozkazu odczytania rejestru do DTMROC-a
z ustawieniem zapisywania danych przez opadające zbocze zegara
Sprawdzono również, że sygnał po przejściu przez optocoupler nie ulega opóźnieniu na
linii ELMB DTMROC zarówno na kanale, na którym nadawany jest zegar jak i kanale
danych (rys. 10.4, 10.5)
49
Rysunek 10.4 Porównanie przebiegu sygnału w trzech punktach:
na wyjściu optocouplera, na wyjściu z ELMB
oraz przy wejściu linii rozkazów do DTMROC-a
Rysunek 10.5 Porównanie przebiegu sygnału w trzech punktach:
na wyjściu optocouplera, na wyjściu z ELMB
oraz przy wejściu linii zegara do DTMROC-a
Pomiary po stworzeniu biblioteki dll do systemu PVSS II różnią się od wcześniej
uzyskanych. Przesłanie jednego bitu z ELMB do DTMROC-a trwa 0,65 ms, a zapisanie
go 1,3 ms (rys. 10.6). Uzyskano w ten sposób częstość wysyłania danych równa 1,5
kHz pozwalającą na ustawienie Patch Panel-u zawierającego 36 konwertery ADC w
50
ciągu około 1 sekund. Aby dokonać ustawienia całego detektora bez sprawdzania
poprawności zapisanych danych potrzebne jest około 12 sekund. Czas ten wydłuża się
w przypadku sprawdzania wartości, jakie zostały zapisane do około 27 sekund.
Uzyskane przez bibliotekę czasy są zadowalające i umożliwiają szybkie ustawianie
regulatorów.
DTMROC
DAC0
ELMB
Clock
Command In
Command Out
LVDS
CANBUS
Digital I/O
Hard Reset
DAC1
DAC2
DAC3
V
R
V
R
V
R
V
R
a)
Operacja
na CANBUS
steruje wyjściem
portu ELMB
T=1.3 ms
b)
Rysunek 10.6 Pomiar czasu zapisu bitu, a) schemat podłączenie oscyloskopu, b) pomiar prędkości
zapisu jednego bitu do DTMROC-a [33]
51
11 Podsumowanie
Celem pracy było napisanie w języku C++ biblioteki dll do systemu PVSS II
umożliwiającej sterowani regulatorami napięcia wykorzystując sterowniki karty sprzęgu
PCI-CAN. Wykorzystując bibliotekę CANlib napisano funkcję pozwalające w pełni
kontrolować pracę regulatorów poprzez magistralę przemysłową CAN. Wszystkie
napięcia na regulatorach dokonywane są za pomocą napięć sterujących wychodzących z
konwerterów DAC chipów DTMROC.
Pierwsze próby i testy komunikacji z chipem DTMROC odbywały się na
prototypowym układzie. Po napisaniu kilku funkcji umożliwiających ustawianie
napięcia na wyjściu konwerterów DAC chipów DTMROC przystąpiono do pomiaru
prędkości przesyłania danych. Po analizie działania podjęto decyzję o zmniejszeniu
prędkości transmisji na magistrali CAN z 125 kbit/s na 50 kbit /s. Krok ten umożliwił
poprawne działanie układu i wyeliminował błędy w przesyłanych danych. Po dokonaniu
pomiarów okazało się, iż ustawienie 36 konwerterów DAC, czyli jednego układu Patch
Panel trwa około 1 s, co oznacza, że ustawienie całego detektora, 192 Patch Panel-i
zajmie 161 s. Uzyskane czasy pozwalają stwierdzić, że dane w tym układzie przesyłane
są z częstością 1,5 kHz i zapisanie jednego bitu danych zajmuje 1,3 ms. Porównując
uzyskane wyniki pomiarów z przewidywaniami można stwierdzić, że różnią się w
nieznacznym stopniu.
Dokonując porównań możliwych rozwiązań sterowania regulatorami napięcia
można powiedzieć, że wybrana metoda jest optymalna i jej rezultaty zadowalające.
Możliwa jest również poprawa wyników osiąganych przez bibliotekę dll, ponieważ jest
ona w dalszym ciągu rozwijana i udoskonalana.
Przedstawiona praca może pomóc zrozumieć działanie systemu sterowania niskim
napięciem jak i działania biblioteki dll stworzonej do systemu PVSS II.
52
Bibliografia
[1]
Jerzy Lukierski „Od Modelu Standardowego do teorii M: Teorie
Wszystkiego”, Instytut Fizyki Teoretycznej, Uniwersytet Wrocławski,
Postępy Fizyki, tom 55 zeszyt 4 rok 2004
[2]
Donald H. Perkins „Wstęp do fizyki wysokich energii”, Wydawnictwo
Naukowe PWN, Warszawa (2004)
[3]
Janusz A. Zakrzewski „Cząstki Modelu Standardowego: co nowego?”,
Instytut Fizyki Doświadczalnej, Uniwersytet Warszawski, Postępy Fizyki
tom 54 zeszyt 4 rok 2003
[4]
Jerzy Kowalski-Glikman „Nadzieja na sukces”, Wiedza i życie, nr
2/1999
http://archiwum.wiz.pl/1999/99022400.asp
[5]
Grzegorz Wrochna „Co się kryje za symetryczną strukturą”, Polski
Serwis Naukowy, 19.03.2002
http://fizyka.servis.pl/model_stand.php
[6]
Michał Turała „Potrzeby komputerowe eksperymentów LHC i światowy
grid LCG dla fizyki” Poznań, 19 maja 2004
[7]
Piotr Malecki „Wielkie akceleratory i eksperymenty fizyki”, Wykład
monograficzny dla specjalności automatyka
WIEiK PK, 4 kwiecień
2005
[8]
Eksperyment ATLAS w CERN-ie
http://atlas.ch/
[9]
Jan Królikowski, Marek Kowalski, Mariusz Sapiński, Mariusz Witek
„Zespoły polskie w eksperymentach przygotowywanych dla zderzacza
LHC”
[10]
C. Gripen „Physics of Particle Detection”, ICFA Instrumentation
School, Turkey, Istanbul, June 28 – July 10 1999
[11]
A. Zalewska „Detektory”, Wykłady z fizyki cząstek elementarnych,
Kraków, 2003
[12]
Z. Hajduk D. Antończyk „System kontroli dla eksperymentu ATLAS w
oparciu o technologie OPC”, Kraków, wrzesień 2002
53
[13]
Anatoli Romaniouk „Development of the Transition Radiation Tracker
(TRT) for the ATLAS LHC Experiment” , Presentation at the TRD
workshop in Bari, 20-23 September 2001
[14]
Chiho Wang „Design and Construction of the ATLAS Barrel TRT” TRD
Conference Bari, September 2003
[15]
Mar Capeans „ATLAS Transition Radiation Tracker” 8th Topical
Seminar on Innovative Particle and Radiation Detectors, Siena (Italy), 21
- 24 October 2002
[16]
Vasiliki A. Mitsou „The ATLAS Transition Radiation Tracker” 8th
ICATPP Conference on Astroparticle, Particle, Space Physics, Detectors
and Medical Physics Applications, Como (Italy), 6-10 October 2003
[17]
Sergei Mouraviev „Design and Construction of the ATLAS End Cap
TRT” Second Workshop on advanced Transition Radiation Detectors for
accelerator and space applications Bari(Italy), September 4-7, 2003
[18]
Z. Hajduk „Detektor TRT i jego system sterowania” Polska Akademia
Nauk, Kraków – Warszawa, 15 – 16 luty 2002
[19]
Z. Hajduk, J. Olszowska „System kontroli i monitorowania detektora
TRT
w
eksperymencie
ATLAS”
Kwartalnik
Elektroniki
i
Telekomunikacji, 2002, 48 z. 2, ss. 285 – 297
[20]
LHC Experiments – Joint Controls Project CERN – JCOP-2000-008
[21]
Beate Briss, Matthias Schagginger, Leo Knipp (all from ETM) „PVSS II
Getting Started – Basics Installation - First steps for beginners” Version
2.0 – English – Microsoft Windows platforms, July 2004
[22]
Firma ETM professional control – producent programu PVSS II
http://www.pvss.com/index_e.asp
[23]
Henk Boterenbrood „CANopen Application Software for the ELMB128
(Embedded Local Monitor Board)” Version 2.2 NIKHEF, Amsterdam 13
January 2005
[24]
ELMB – strona poświęcona budowie i testom układu
http://elmb.web.cern.ch/ELMB/
[25]
CiA (ang. CAN in Automation) – oficjalna strona
http://www.can-cia.org/
[26]
Tadeusz Goszczyński „Magistrala CAN” Elektro instalator, październik
2004
54
http://www.elektroinstalator.com.pl/artyk/2004-10/04_magistrala.htm
[27]
E. Banaś, Z. Hajduk, B. Kisielewski, J. Olszowska „TRT Power
Supplies”, CERN, 12 December 2005
[28]
L. Periale, B. Allongue „Magnetic field behavior of HV and LV systems
for the LHC experiments”, Proceedings of the 9th workshop on
Electronics for LHC Experiments, Amsterdam, 29. Sept. –3. Oct. 2003,
page 346-352
[29]
Jolanta Olszowska, Zbigniew Hajduk, Elżbieta Banaś „TRT DCS status version ‘ALONE’”, CERN - ID week, February 2005
[30]
DSM-DTMROC – ATLAS TRT Technical Note, CERN, 14 November
2003
[31]
Henk Boterenbroog „CANopen application software for the ELMB128
(Embedded Local Monitor Board)”, NIKHEF, Amsterdam, 19 May 2004
[32]
Vladimir Ryjov „ELMB – DTMROC communication studies”, ATLAS
TRT Meeating, CERN, September 2004
[33]
Bartłomiej Kisielewski „Regulatory napięcia LHC4913 i LHC 7913
odporne na promieniowanie w zasilaniu elektroniki FE detektora TRT –
ATLAS”, Prezentacja Zakładowa, Kraków, 13kwiecień 2005
55
DODATEK
Pomiary innych parametrów (zakres zmian napięć)
W układach Patch Panel zostały umieszczone dla części analogowej dwa rodzaje
regulatorów napięcia: LHC4913 do regulacji napięcia dodatniego oraz LHC7913 do
regulacji
napięcia
ujemnego.
Pomiary
pokazały,
że
regulatory
firmy
ST
wyprodukowane w technologii RHBip1 wytrzymują promieniowanie 50 krad. Zaletą
tych układów jest niski pobór mocy oraz maksymalne obciążenie prądowe równe około
3 A, które można zwiększyć łącząc regulatory równolegle. Poniżej przedstawiono
schematy połączenia regulatorów z chipami DTMROC oraz wykresy przedstawiające
zależność napięcia na wyjściu konwerterów DAC do napięcia ustawianego na
regulatorach (rys. 10.7).
lv4913
Vout
R1
Vadj
dtmroc
R3
R2
Vdac
Idac
R5
`
R4
a)
lv7913
Vout (-3.5v to -4.0v)
R1i
-1.2v
R1e
+2.5v
Vadj
R3
R2e
V1
`
R2i
R4
dtmroc
Vdac
Idac
R5
b)
Rysunek 0.1 Schematy połączeń regulatorów i wyniki pomiarów zmian napięć
a) dla regulatora LHC 4913 (regulator napięcia dodatniego)
b) dla regulatora LHC 7913 (regulator napięcia ujemnego) [33].
56
Z uzyskanych wyników pomiarów wynika, iż napięcie na regulatorze LHC
4913, który jest regulatorem napięcia dodatniego, można dokonywać zmian w zakresie
od 3,5 do 4,0 V. Natomiast na regulatorze LHC 7913, który jest regulatorem napięcia
ujemnego, od -3,5 do -4,0 V. Zakres zmian napięcia, jaki jest możliwy do uzyskania na
wyjściu konwerterów DAC to 0 - 1,24 V, co umożliwia pełną kontrolę nad regulatorami
[33].
57
Download