09.06.2013 Aufrufe

Entwicklung eines Kontrollsystems für die Strahllagemessung am ...

Entwicklung eines Kontrollsystems für die Strahllagemessung am ...

Entwicklung eines Kontrollsystems für die Strahllagemessung am ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

<strong>Entwicklung</strong> <strong>eines</strong> <strong>Kontrollsystems</strong><br />

<strong>für</strong> <strong>die</strong> <strong>Strahllagemessung</strong> <strong>am</strong><br />

Protonenring des<br />

HERA-Beschleunigers<br />

Meßprinzip und Datennahme<br />

Martin Weber<br />

August 1998<br />

Diplomarbeit in Physik<br />

vorgelegt der<br />

Mathematisch-Naturwissenschaftlichen Fakultät der<br />

Rheinisch-Westfälischen Technischen Hochschule<br />

Aachen<br />

angefertigt im<br />

III. Physikalischen Institut<br />

Lehrstuhl <strong>für</strong> Experimentalphysik IIIA<br />

(Hochschuldozent Dr. J. Tutas)


2 INHALTSVERZEICHNIS<br />

Inhaltsverzeichnis<br />

1 Einleitung und Überblick 5<br />

2 Grundlagen 7<br />

2.1 Teilchenbewegung im Speicherring . . . . . . . . . . . . . . . . 7<br />

2.2 Arbeitspunkt . . . . . . . . . . . . . . . . . . . . . . . . . . . 9<br />

2.3 Luminosität . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10<br />

2.4 Strahlverluste und Quench . . . . . . . . . . . . . . . . . . . . 10<br />

3 Meßprinzip 11<br />

3.1 Messung der Strahllage . . . . . . . . . . . . . . . . . . . . . . 13<br />

3.2 Triggerung der Lagemessung . . . . . . . . . . . . . . . . . . . 18<br />

3.3 Messung des Strahlverlusts . . . . . . . . . . . . . . . . . . . . 19<br />

3.4 Alarme, Strahldump und Freeze . . . . . . . . . . . . . . . . . 21<br />

4 <strong>Entwicklung</strong> des <strong>Kontrollsystems</strong> 22<br />

4.1 Analyse des HERA-Kontrollsystem . . . . . . . . . . . . . . . 22<br />

4.2 Anforderungen . . . . . . . . . . . . . . . . . . . . . . . . . . 23<br />

4.3 Grundlegende Konzepte . . . . . . . . . . . . . . . . . . . . . 24<br />

4.3.1 Modularität . . . . . . . . . . . . . . . . . . . . . . . . 24<br />

4.3.2 Echtzeitfähigkeit . . . . . . . . . . . . . . . . . . . . . 25<br />

4.3.3 Portabilität . . . . . . . . . . . . . . . . . . . . . . . . 27<br />

4.3.4 Nebenläufigkeit . . . . . . . . . . . . . . . . . . . . . . 29<br />

4.3.5 Wartungsfreundlichkeit . . . . . . . . . . . . . . . . . . 31<br />

4.4 Beschleunigung der Datenauslese . . . . . . . . . . . . . . . . 32<br />

5 Das Klassenkonzept 36<br />

5.1 Die Klassen <strong>für</strong> den Feldbus . . . . . . . . . . . . . . . . . . . 36<br />

5.1.1 Simulation <strong>eines</strong> Feldbusses . . . . . . . . . . . . . . . 38<br />

5.1.2 Die SEDAC-Busklasse . . . . . . . . . . . . . . . . . . 39<br />

5.1.3 Anpassung an andere Feldbussysteme . . . . . . . . . . 39<br />

5.2 Module <strong>am</strong> Feldbus . . . . . . . . . . . . . . . . . . . . . . . . 40<br />

5.2.1 Basisklasse . . . . . . . . . . . . . . . . . . . . . . . . . 41<br />

5.2.2 Spezialisierung <strong>für</strong> HERA . . . . . . . . . . . . . . . . 43<br />

5.2.3 Abstraktion von Registerzugriffen . . . . . . . . . . . . 43<br />

5.2.4 Spezialisierung zur Datennahme . . . . . . . . . . . . . 45<br />

5.3 Gruppenverwaltung . . . . . . . . . . . . . . . . . . . . . . . . 46<br />

5.4 Kommunikation mit den Clients . . . . . . . . . . . . . . . . . 48


ABBILDUNGSVERZEICHNIS 3<br />

6 Datennahme 48<br />

6.1 Das Lagekontrollsystem . . . . . . . . . . . . . . . . . . . . . 48<br />

6.1.1 Injektionsbetrieb . . . . . . . . . . . . . . . . . . . . . 48<br />

6.1.2 Speicherbetrieb . . . . . . . . . . . . . . . . . . . . . . 51<br />

6.2 Das Verlustkontrollsystem . . . . . . . . . . . . . . . . . . . . 55<br />

6.3 Alarme, Archivierung . . . . . . . . . . . . . . . . . . . . . . . 56<br />

7 Tests 58<br />

7.1 Messung der Busgeschwindigkeit . . . . . . . . . . . . . . . . . 58<br />

7.2 Testaufbau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64<br />

7.2.1 Das Testprogr<strong>am</strong>m . . . . . . . . . . . . . . . . . . . . 64<br />

7.3 Messungen mit dem Lagekontrollsystem . . . . . . . . . . . . 66<br />

7.3.1 Messung des Orbits . . . . . . . . . . . . . . . . . . . . 67<br />

7.3.2 Untersuchung des zeitlichen Verhaltens . . . . . . . . . 68<br />

7.3.3 Messungen an einer Beule . . . . . . . . . . . . . . . . 69<br />

7.4 Messungen mit dem Verlustkontrollsystem . . . . . . . . . . . 73<br />

7.5 Automatische Archivierung bei Freeze . . . . . . . . . . . . . . 76<br />

7.6 Zus<strong>am</strong>menfassung . . . . . . . . . . . . . . . . . . . . . . . . . 78<br />

A Das Pthread-Interface <strong>für</strong> VxWorks 79<br />

Abbildungsverzeichnis<br />

1 Mitbewegtes Koordinatensystem im Speicherring . . . . . . . 7<br />

2 Position der Elektroden in der Strahlröhre . . . . . . . . . . . 13<br />

3 Prinzip der Strahlankopplung . . . . . . . . . . . . . . . . . . 14<br />

4 Signalverhältnis V1/V2 der Elektroden . . . . . . . . . . . . . . 15<br />

5 Konvertierung Amplitudenverhältnis in Betrag und Phase . . . 15<br />

6 Schematischer Aufbau des PPD-Moduls . . . . . . . . . . . . . 17<br />

7 Das Client-Server Modell . . . . . . . . . . . . . . . . . . . . . 22<br />

8 Die zur DAQ verwendeten Threads . . . . . . . . . . . . . . . 31<br />

9 Übersicht über den HERA-Beschleuniger . . . . . . . . . . . . 32<br />

10 Verschiedene mögliche Netztopologien mit SEDAC . . . . . . . 34<br />

11 SEDAC-Verbindungen des alten und neuen <strong>Kontrollsystems</strong> . 34<br />

12 Übersicht über <strong>die</strong> Klassenstruktur . . . . . . . . . . . . . . . 37<br />

13 Fehler durch nichtabgesicherte Zugriffe . . . . . . . . . . . . . 42<br />

14 Durch Schloßvariablen abgesicherte Zugriffe . . . . . . . . . . 44<br />

15 Datennahme im Injektionsmodus . . . . . . . . . . . . . . . . 50<br />

16 Ablauf der Datennahme im Single-Turn-Modus . . . . . . . . 52<br />

17 Ablauf der Datennahme im Orbit-Modus . . . . . . . . . . . . 54


4 TABELLENVERZEICHNIS<br />

18 Automatische Anpassung der Alarmschwellen . . . . . . . . . 57<br />

19 Das vom DESY zur Verfügung gestellte Testsystem in Aachen 59<br />

20 Durchschnittliche SEDAC-Übertragungsfrequenz . . . . . . . . 63<br />

21 Die grafische Oberfläche des Testprogr<strong>am</strong>ms . . . . . . . . . . 65<br />

22 Ein mit dem neuen Kontrollsystem gemessener Orbit . . . . . 67<br />

23 Zeitliche <strong>Entwicklung</strong> der zuletzt gemessenen Positionsdaten . 68<br />

24 Zeitliche <strong>Entwicklung</strong> von gemittelten Positionsdaten . . . . . 69<br />

25 Beule in der x-Ebene, maximal positive Auslenkung . . . . . . 70<br />

26 Beule in der x-Ebene, maximal negative Auslenkung . . . . . 71<br />

27 Dreidimensionale Darstellung einer Beule in der x-Ebene . . . 71<br />

28 Zeitlicher Verlauf einer Beule in der x-Ebene . . . . . . . . . . 72<br />

29 Dreidimensionale Darstellung einer Beule in der y-Ebene . . . 74<br />

30 Zeitlicher Verlauf einer Beule in der y-Ebene . . . . . . . . . . 74<br />

31 Eine Strahlverlustmessung im Quadranten West . . . . . . . . 75<br />

32 Noch eine Strahlverlustmessung im Quadranten West . . . . . 75<br />

33 Strahlverlustmessung mit dem CERN-Verlustmonitor . . . . . 76<br />

Tabellenverzeichnis<br />

1 Kritische kontinuierliche Proton-Verlustraten . . . . . . . . . . 12<br />

2 Maximale SEDAC-Übertragungsraten (1 Busleitung) . . . . . 58<br />

3 Maximale parallele SEDAC-Übertragungsraten (2 Busleitungen) 61<br />

4 Liste von Monitoren . . . . . . . . . . . . . . . . . . . . . . . 69<br />

5 Unterstütze Funktionen des Pthread-Interface . . . . . . . . . 79


1 Einleitung und Überblick<br />

Neben der Bedeutung der Physik als reine Grundlagenforschung und dem<br />

Nutzen ihrer Ergebnisse zur Erweiterung unseres Weltbildes ist ein markantes<br />

Merkmal der heutigen Physik, daß sie <strong>die</strong> gegebenen technischen Möglichkeiten<br />

nicht nur ausschöpft, sondern sogar erweitert. Um der Natur immer<br />

weitere ihrer vielen Geheimnisse abzuringen, werden z. B. in den Großforschungszentren<br />

der Elementarteilchenphysik wie dem CERN 1 in Genf und<br />

dem DESY 2 in H<strong>am</strong>burg komplexe Theorien mit ausgeklügelten Experimenten<br />

überprüft, deren Ziel darin besteht<br />

Daß ich nicht mehr, mit sauerm Schweiß,<br />

Zu sagen brauche, was ich nicht weiß,<br />

Daß ich erkenne, was <strong>die</strong> Welt<br />

Im Innersten zus<strong>am</strong>menhält,<br />

Schau’ alle Wirkenskraft und S<strong>am</strong>en,<br />

und tu’ nicht mehr in Worten kr<strong>am</strong>en. [8]<br />

Oft werden dabei bisher unbekannte Wege begangen. Neue Impulse <strong>für</strong> Wirtschaft<br />

und Technik sind als “spin-offs” <strong>die</strong>ser Forschungstätigkeit nicht selten.<br />

Man denke z. B. an das WWW 3 , dessen Ursprung <strong>am</strong> CERN liegt und dessen<br />

Siegeszug durch <strong>die</strong> Gesellschaft gerade erst begonnen hat.<br />

Speziell <strong>am</strong> DESY werden seit 1992 im Speicherring HERA 4 Protonen und<br />

Elektronen 5 an zwei Stellen zur Kollision gebracht und <strong>die</strong> Reaktionsprodukte<br />

mit Hilfe der Universaldetektoren H1 und ZEUS untersucht. Zwei Fixed-<br />

Target-Experimente, HERMES und HERA-B, <strong>die</strong> nur Elektronen bzw. Protonen<br />

verwenden, vervollständigen <strong>die</strong> Forschung mit HERA.<br />

Die Aufgaben <strong>die</strong>ser Experimente liegen darin, <strong>die</strong> Vorhersagen der Quantenfeldtheorien<br />

QED 6 , QCD 7 und QFD 8 zu überprüfen, aber auch nach Physik<br />

zu suchen, <strong>die</strong> über <strong>die</strong>se im “Standardmodell der Teilchenphysik” zus<strong>am</strong>mengefaßten<br />

Theorien hinausgeht. Dies alles geschieht bei einer bisher im<br />

e-p-System von anderen Beschleunigern nicht erreichten Schwerpunktsenergie<br />

von ECMS = 300 GeV bei einer Protonenergie von Ep = 820 GeV und<br />

einer Elektronenergie von Ee = 27.5 GeV [17].<br />

1Conseil Européen pour la Recherche Nucléaire<br />

2Deutsches Elektronen- Synchrotron<br />

3World Wide Web<br />

4Hadron-Elektron Ring-Anlage<br />

5bzw. von 1994 bis 1997 deren Antiteilchen, <strong>die</strong> Positronen<br />

6Quantenelektrodyn<strong>am</strong>ik 7 Quantenchromodyn<strong>am</strong>ik<br />

8 Quantenflavordyn<strong>am</strong>ik<br />

5


6 1 EINLEITUNG UND ÜBERBLICK<br />

Die Protonen müssen präzise durch <strong>die</strong> in einem unterirdischen Tunnel untergebrachte,<br />

zu einem Ring geschlossene Strahlröhre geführt werden, d<strong>am</strong>it<br />

sie nicht frühzeitig verloren gehen und möglichst lange <strong>für</strong> <strong>die</strong> Experimente<br />

zur Verfügung stehen. Da<strong>für</strong> müssen viele Par<strong>am</strong>eter von HERA laufend gesteuert<br />

und überwacht werden. Dies ist Aufgabe des HERA-<strong>Kontrollsystems</strong>.<br />

Die vorliegende Diplomarbeit stellt ein neues <strong>Kontrollsystems</strong> <strong>für</strong> <strong>die</strong> Messung<br />

der Strahllage und des Strahlverlustes im Protonring vor. Denn deren<br />

Überwachung ist Grundlage <strong>für</strong> eine gezielte Kollision der Teilchen und eine<br />

sichere Funktion des Beschleunigers. Beide Systeme sind hardwaremäßig so<br />

eng miteinander verbunden, daß eine Neuentwicklung des Lagekontrollsystem<br />

eine gleichzeitige Neuentwicklung des Verlustkontrollsystems mit einschließt.<br />

Die <strong>für</strong> das Verständnis der vorliegenden Diplomarbeit nötigen Grundlagen<br />

werden in Kapitel 2 gelegt. In Kapitel 3 wird das Meßprinzip der Strahllageund<br />

Strahlverlustmessung erläutert. Dann wird nach einer kurzen Analyse<br />

des HERA-<strong>Kontrollsystems</strong> <strong>die</strong> <strong>Entwicklung</strong> des neuen <strong>Kontrollsystems</strong><br />

in Kapitel 4 vorgestellt. In Kapitel 5 wird das zur Realisierung verwendete<br />

Klassenmodell genauer vorgestellt. Kapitel 6 erläutert <strong>die</strong> Datennahme <strong>für</strong><br />

<strong>die</strong> verschiedenen Betriebsarten des <strong>Kontrollsystems</strong>. Abschließend werden<br />

in Kapitel 7 Testergebnisse vorgestellt.<br />

Am Ende der vorliegenden Diplomarbeit befindet sich ein ausklappbares<br />

Glossar, das häufig verwendete Begriffe und Abkürzungen enthält. Die dort<br />

aufgeschlüsselten Abkürzungen werden zwar auch in Fußnoten erklärt, sind<br />

aber im Glossar noch mit einer zusätzlichen Erklärung versehen. Leider mußte<br />

<strong>die</strong> Schriftgröße sehr klein gewählt werden, um alle Begriffe auf einer Seite<br />

unterzubringen.<br />

Danken möchte ich an <strong>die</strong>ser Stelle Hochschuldozent Dr. J. Tutas <strong>für</strong> das<br />

interessante Thema, <strong>für</strong> <strong>die</strong> bereitwillige Hilfe bei Problemen und <strong>für</strong> den<br />

Freiraum, den er mir bei meiner Arbeit gab, Timm Steinbeck und meinen<br />

Eltern <strong>für</strong> viele nützliche Hinweise zur Niederschrift, Manfred Wendt <strong>für</strong> seine<br />

gute Betreuung <strong>am</strong> DESY und <strong>für</strong> seinen Einsatz während der Messungen,<br />

Steve Herb <strong>für</strong> zahlreiche Tips und das mehrfach ausgeborgte VME-Crate,<br />

Matthias Werner <strong>für</strong> <strong>die</strong> zur Verfügung gestellte Grafik, vor allem aber meiner<br />

Frau <strong>für</strong> <strong>die</strong> Unterstützung meiner Arbeit und das geduldige Warten, wenn<br />

mich <strong>die</strong> Arbeit wieder einmal länger als geplant aufhielt, und allen anderen,<br />

<strong>die</strong> bei der <strong>Entwicklung</strong> meiner Diplomarbeit geholfen haben.


2 Grundlagen<br />

2.1 Teilchenbewegung im Speicherring<br />

Die Beschreibung der Protonbewegung im Speicherring erfordert <strong>die</strong> Einführung<br />

von zwei Koordinatensystemen: Eines, in dem der durch <strong>die</strong> Beschleunigerkonstruktion,<br />

d. h. <strong>die</strong> Anordnung der Magnete, vorgegebene Idealweg<br />

durch den Beschleuniger beschrieben wird und ein zweites, das <strong>die</strong>sem<br />

Weg folgt und <strong>die</strong> Abweichung der Protonen gegenüber dem Idealweg angibt<br />

(Abb. 1). Die Wahl der Koordinatenachsen geschieht so, daß der Vek-<br />

x<br />

x<br />

y<br />

y<br />

tatsächliche Teilchenbahn<br />

z<br />

ideale Teilchenbahn<br />

Abbildung 1: Mitbewegtes Koordinatensystem im Speicherring<br />

tor z tangential zur Idealbahn ist und in <strong>die</strong> Flugrichtung des Teilchens<br />

zeigt. Die verbleibenden Vektoren x und y wählt man so, daß y senkrecht<br />

auf der Beschleunigerebene steht und x in <strong>die</strong>ser Ebene liegt. Dabei bilden<br />

(x, y, z) ein rechtshändiges System. Diese Wahl vereinfacht <strong>die</strong> Form der Bewegungsgleichungen.<br />

Die Koordinaten des Protons im mitbewegten System<br />

sind xp = (x, y, 0). Anstatt der zeitlichen Veränderung von x und y betrachtet<br />

man <strong>die</strong> Änderung entlang der dritten Komponente, d. h. <strong>die</strong> Größen dx/dz<br />

und dy/dz.<br />

Ohne Einwirkung einer äußeren Kraft bewegen sich Teilchen stets gleichförmig<br />

und geradlinig. Die Protonen müssen sich in HERA aber stets auf<br />

einer geschlossenen Kreisbahn bewegen. Die da<strong>für</strong> nötige Krümmung erreicht<br />

man mit Hilfe der Lorentzkraft<br />

F = q( E + v × B) (1)<br />

In der Praxis verwendet man zur Bahnkrümmung stets magnetische Felder,<br />

so daß E = 0 gesetzt wird. Um das Kreuzprodukt vereinfachen zu können,<br />

7


8 2 GRUNDLAGEN<br />

wird das Magnetfeld B = (Bx(y), By(x), 0) in einer Multipolentwicklung angenähert:<br />

e<br />

p By(x) = e<br />

p By0 + e<br />

p<br />

e<br />

2! p<br />

d 2 By<br />

dx 2 x 2 + · · ·<br />

dBy 1<br />

x + dx<br />

= − 1<br />

1<br />

+ kx + R 2! mx2 + · · ·<br />

= Dipol + Quadrupol + Sextupol + · · ·<br />

Für <strong>die</strong> Herleitung der Bewegungsgleichungen nimmt man zunächst nur Dipol-<br />

und Quadrupolfelder an. Weiterhin sollen Dipole nur zur Bahnkrümmung<br />

in der Beschleunigerebene y = 0 benutzt werden, das bedeutet Bx0 = 0.<br />

Diese Annahme ist bei HERA (und den meisten anderen Teilchenbeschleunigern)<br />

erfüllt. Die Bewegungsgleichungen9 erhalten dann <strong>die</strong> Form<br />

x ′′ (z) +<br />

<br />

1<br />

R2 <br />

− k(z)<br />

(z)<br />

x(z) =<br />

1 ∆p<br />

R(z) p<br />

(2)<br />

(3)<br />

y ′′ (z) + k(z)y(z) = 0 (4)<br />

Der Faktor ∆p/p gibt <strong>die</strong> relative Impulsabweichung des Protons vom Sollwert<br />

an. Die Bewegungsgleichungen sind Differentialgleichungen zweiter Ordnung,<br />

deren Lösung durch <strong>die</strong> Angabe zweier Konstanten festgelegt ist. Um<br />

<strong>die</strong> einfachste Lösung von (4) zu erhalten, betrachtet man nur Teilchen mit<br />

Sollimpuls, d. h. ∆p = 0, und vernachlässigt den Einfluß der Dipole gegenüber<br />

den Quadrupolen, da10 1/R2 ≪ k. Die Gleichungen <strong>für</strong> <strong>die</strong> horizontale und<br />

vertikale Teilchenbewegung erhalten d<strong>am</strong>it <strong>die</strong> gleiche Form. Da sie einer<br />

Schwingungsgleichung ähnlich sind, macht man den physikalisch motivierten<br />

Ansatz einer Schwingung, deren Amplitude und Phase durch <strong>die</strong> Änderung<br />

von Dipol- und Quadrupolstärke entlang der Teilchenbahn von der Koordinate<br />

z abhängig ist:<br />

x(z) = √ <br />

ɛ β(z) cos(Ψ(z) + ψ0) (5)<br />

Da <strong>die</strong> in der Schwingungsgleichung als ω 2 bekannte Konstante durch eine<br />

Funktion ersetzt wird, erwartet man auch nur eine neue Funktion in der<br />

Lösung. Dementsprechend erhält man durch Einsetzen <strong>für</strong> <strong>die</strong> Phase Ψ(z)<br />

<strong>die</strong> von β(z) abhängige Lösung<br />

Ψ(z) =<br />

z<br />

0<br />

dσ<br />

β(σ)<br />

9 Für eine Herleitung siehe z. B. [22, 24]. Man beachte bei [24], daß ein linkshändiges<br />

Koordinatensystem verwendet wird, bei der Berechnung des Vektorproduktes aber<br />

ein rechtshändiges System zugrundegelegt wird, was zwischenzeitlich zu Vorzeichenfehlern<br />

führt. Die Herleitung in [22] ist korrekt.<br />

10 Bei HERA ist k ≈ 0.033 m −2 , 1/R 2 ≈ 2.9 · 10 −6 m −2 [15]<br />

(6)


2.2 Arbeitspunkt 9<br />

und <strong>für</strong> β(z) <strong>die</strong> Differentialgleichung<br />

2β ′′ (z)β(z) − β ′ (z) − 4k(z) = 0, (7)<br />

<strong>die</strong> nur numerisch gelöst werden kann. Man nennt β(z) <strong>die</strong> Betafunktion oder<br />

Betatron<strong>am</strong>plitude, ψ(z) nennt man Betatronphase. Die Betafunktion wird<br />

durch k(z), also <strong>die</strong> Anordnung der Quadrupolmagnete bei HERA, vorgegeben.<br />

Sie bestimmt <strong>die</strong> maximale Amplitude, <strong>die</strong> <strong>die</strong> Teilchen beim Durchlaufen<br />

der Beschleunigerstruktur haben können. Alle tatsächlich vorkommenden<br />

Teilchenbahnen laufen innerhalb <strong>die</strong>ser Einhüllenden.<br />

2.2 Arbeitspunkt<br />

Eine weitere wichtige Größe <strong>für</strong> den Betrieb von HERA ist der Arbeitspunkt<br />

oder Q-Punkt des Beschleunigers. Er ist eng mit der Betafunktion verknüpft<br />

und definiert durch<br />

Q = 1<br />

2π<br />

dz<br />

β(z)<br />

<br />

1 L dz ∆Ψ<br />

= =<br />

2π 0 β(z) 2π<br />

und entspricht anschaulich der Anzahl von Schwingungen, <strong>die</strong> der Strahl<br />

bei einem Umlauf durch den Beschleuniger um seine Sollbahn ausführt. Sein<br />

Wert ist <strong>für</strong> <strong>die</strong> Stabilität der Teilchenbewegung wichtig. Der Nachkommaanteil<br />

von Q bestimmt, wie sich <strong>die</strong> Betatronphase ψ von Umlauf zu Umlauf<br />

verschiebt. Kommt nach einer Anzahl n von Umrundungen des Beschleunigers<br />

wieder <strong>die</strong>selbe Phasenlage ψ vor, so können sich Magnetfehler, <strong>die</strong> eine<br />

Ablenkung der Teilchen von der Sollbahn bewirken, resonant verstärken. Dadurch<br />

kann der Strahl verloren gehen. Die Resonanzbedingung ist<br />

(8)<br />

n∆ψ = 2π bzw. n∆Q = 1 (9)<br />

Dementsprechend müssen Werte Q = m + 1/n (wobei m und n ganze Zahlen<br />

sind) vermieden werden. Je kleiner n ist, desto mehr verstärken sich <strong>die</strong><br />

Fehler (da bei mehr Umrundungen <strong>die</strong> gleiche Phasenlage vorherrscht). Ideal<br />

wäre als Q-Wert eine irrationale Zahl. Da irrationale Zahlen aber sehr<br />

dicht an Bruchzahlen liegen, versucht man, nur <strong>die</strong> stärksten Resonanzen<br />

(etwa von n = 1..7) zu vermeiden [24]. Die Kenntnis und d<strong>am</strong>it <strong>die</strong> Messung<br />

des Q-Wertes ist d<strong>am</strong>it von entscheidender Bedeutung <strong>für</strong> <strong>die</strong> Stabilität des<br />

Beschleunigers. Eine Möglichkeit, den Arbeitspunkt zu bestimmen, ist <strong>die</strong><br />

Strahllage im Beschleuniger über viele Umläufe zu beobachten und <strong>die</strong> Anzahl<br />

der Nulldurchgänge zu zählen. Um <strong>die</strong>se auflösen zu können, dürfen <strong>die</strong><br />

Lagemonitore maximal 90 ◦ in der Betatronphase auseinanderliegen, denn<br />

sonst können nicht alle Schwingungen rekonstruiert werden. Der Q-Wert von<br />

HERA ist Q = 31.3 sowohl <strong>für</strong> <strong>die</strong> horizontale als auch <strong>die</strong> vertikale Teilchenbewegung.


10 2 GRUNDLAGEN<br />

2.3 Luminosität<br />

Der <strong>für</strong> <strong>die</strong> Experimente wichtigste HERA-Par<strong>am</strong>eter ist <strong>die</strong> Luminosität L,<br />

weil sie <strong>die</strong> Rate der zu untersuchenden Ereignisse über<br />

dN<br />

dt<br />

= σL (10)<br />

bestimmt. Der Wirkungsquerschnitt σ der zu untersuchenden Reaktion ist<br />

durch <strong>die</strong> Natur vorgegeben und wird von den Quantenfeldtheorien vorhergesagt,<br />

d. h. er läßt sich nicht durch <strong>die</strong> Experimentieranordnung verändern.<br />

Um <strong>die</strong> Meßzeiten <strong>für</strong> statistisch signifikante Aussagen gering zu halten, muß<br />

deshalb eine ausreichende Luminosität vorhanden sein. Die Luminosität berechnet<br />

man im Fall von HERA zu<br />

L = 1 fuNpNe<br />

4π σxσy<br />

(11)<br />

mit der Umlauffrequenz fu und den Teilchenzahlen Np und Ne <strong>für</strong> Protonund<br />

Elektronstrahl. Daß bei HERA das Ziel einer Luminosität von 1.5 ·<br />

10 31 cm −2 s −1 mit L = 1.4 · 10 31 cm −2 s −1 fast erreicht wurde, ist nur dem<br />

geringen Strahlquerschnitt von σx = 200 µm und σy = 54 µm an den Wechselwirkungspunkten<br />

von H1 und ZEUS zu verdanken, denn <strong>die</strong> Werte von Np<br />

und Ne blieben hinter dem gesteckten Ziel zurück [17, 25]. Für <strong>die</strong> Zukunft ist<br />

eine Erhöhung der Luminosität geplant, bei der der Strahlquerschnitt weiter<br />

auf σx = 118 µm und σy = 32 µm verkleinert werden soll [17, 25, 34].<br />

Das Erreichen solch kleiner Strahlquerschnitte, d. h. kleiner Betafunktion<br />

β(z), ist nur mit einer exakten Fokussierung durch Quadrupolmagnete möglich.<br />

Da<strong>für</strong> müssen <strong>die</strong> Protonen möglichst genau auf dem “Orbit”, dem durch<br />

<strong>die</strong> Beschleunigerkonstruktion vorgegebenen Idealweg, geführt werden — eine<br />

schwierige Aufgabe. Erst durch <strong>die</strong> Messung der Strahllage (BPM 11 ) können<br />

Abweichungen vom Orbit erkannt werden und der Protonstrahl durch Orbit-<br />

Korrekturen präzise durch <strong>die</strong> Mitte der Quadrupolmagnete geführt werden<br />

[18].<br />

2.4 Strahlverluste und Quench<br />

Um <strong>die</strong> Protonen bei Energien von bis zu Ep = 820 GeV durch den Protonring<br />

zu führen, sind Magnetfelder mit einer Feldstärke von B = 4.68 T<br />

erforderlich, <strong>die</strong> nur durch supraleitende Magnete erzeugt werden können. Bei<br />

HERA werden 1819 supraleitende Magnete verwendet, was weltweit erstmalig<br />

in <strong>die</strong>ser Anzahl geschah [23]. Die Verwendung supraleitender Magnete<br />

11 Be<strong>am</strong> Position Measurement


irgt in sich <strong>die</strong> Gefahr <strong>eines</strong> “Quenches”, d. h. den plötzlichen Übergang<br />

vom supraleitenden in den normalleitenden Zustand [24]. Dieser Übergang ist<br />

nicht nur von der Temperatur abhängig, wie oft fälschlicherweise angenommen<br />

wird, sondern zusätzlich von der magnetischen Feldstärke. Man kann<br />

den Verlauf der Grenzfeldstärke, ab der es zu einem Zus<strong>am</strong>menbruch der<br />

Supraleitung kommt, beschreiben als<br />

<br />

T<br />

Bc(T ) = Bc(T = 0) 1 −<br />

Tc<br />

2 <br />

11<br />

(12)<br />

Bei einer geringen Erhöhung der Temperatur T , <strong>die</strong> dann immer noch unter<br />

der kritischen Temperatur Tc liegen kann, verringert sich <strong>die</strong> kritische<br />

Feldstärke Bc. Liegt <strong>die</strong>se dann unterhalb der im Magneten vorhandenen<br />

Feldstärke B, so kommt es zu einem Zus<strong>am</strong>menbruch der Supraleitung. Dabei<br />

wird der Magnet durch <strong>die</strong> abgegebene ohmsche Wärme erhitzt. Die Wärmeleitung<br />

in eventuell noch nicht gequenchte Teile des Magneten führt zu einer<br />

Ausbreitung des normalleitenden Bereiches. Da bei zu großer Erwärmung der<br />

Magnet zerstört werden kann, ist der Schutz der Magneten vor einem Quench<br />

eine wichtige und sicherheitsrelevante Aufgabe des HERA-<strong>Kontrollsystems</strong>.<br />

Ein Grund, durch den es zu einem Quench kommen kann, sind Verluste<br />

von Protonen und nachfolgende Teilchenschauer in <strong>die</strong> Magnete, <strong>die</strong> dort<br />

Energie deponieren. Beim Betrieb von HERA wird deshalb der Strahlverlust<br />

überwacht und bei Gefahr <strong>für</strong> <strong>die</strong> Magnete der Strahl ejiziert. Dies geschieht<br />

durch <strong>die</strong> Strahlverlustmessung.<br />

Strahlverluste entstehen hauptsächlich an Stellen mit großer Betafunktion<br />

β(z) und an den Kollimatoren, an denen der Durchmesser des Strahles —<br />

z. B. zum Schutz der Universaldetektoren — begrenzt werden soll [28]. Die<br />

bei Ep = 820 GeV im HERA-Protonring gespeicherte Energie beträgt E =<br />

1.8 MJ, wohingegen das Quench-Limit <strong>eines</strong> supraleitenden Magneten bei<br />

etwa Ecrit,quench = 1 mJ/g liegt [16].<br />

Durch <strong>die</strong> Kühlung mit flüssigem Helium kann jedoch bei länger andauernder<br />

Energiedeposition Wärme abgeführt werden. Deshalb kann der Magnet kontinuierliche<br />

Verluste bis hin zu einer kritschen Verlustrate aufnehmen. Erst<br />

bei Überschreitung <strong>die</strong>ser kritischen Verlustrate, <strong>die</strong> von der Protonenergie<br />

abhängig ist, kommt es zu einem Quench. Für einige Energien sind <strong>die</strong> kritischen<br />

Raten <strong>für</strong> kontinuierliche Protonverluste in Tabelle 1 wiedergegeben.<br />

3 Meßprinzip<br />

Der Protonstrahl besteht aus 180 Protonpaketen mit jeweils 7.7 · 10 10 Protonen.<br />

Der zeitliche Abstand zwischen zwei Paketen beträgt 96 ns. Die La-


12 3 MESSPRINZIP<br />

Impuls Kritische Verlustrate<br />

GeV/c Protonen/s<br />

40 320 · 10 11<br />

100 11.2 · 10 11<br />

400 0.48 · 10 11<br />

820 0.032 · 10 11<br />

Tabelle 1: Kritische kontinuierliche Proton-Verlustraten<br />

gemessung ist da<strong>für</strong> ausgelegt, <strong>die</strong> Ablage <strong>eines</strong> einzelnen, frei auswählbaren<br />

Protonpaketes durch den ges<strong>am</strong>ten Beschleuniger zu verfolgen [18]. Das<br />

erfordert ein intelligentes Timing-System, das <strong>die</strong> Messung in genau dem<br />

Augenblick auslöst, in dem das ausgewählte Protonpaket vorbeifliegt.<br />

Außerdem kann <strong>für</strong> jede Stelle, an der <strong>die</strong> Lage gemessen wird, ein Limit<br />

<strong>für</strong> <strong>die</strong> maximale Ablage des Strahles eingestellt werden, bei dessen Überschreitung<br />

ein Alarm ausgelöst wird. Das kann zu einer kontrollierten Ejektion<br />

benutzt werden, bevor der intensive Protonstrahl z. B. in den Magneten<br />

Schaden anrichten kann. Es hat sich jedoch herausgestellt, daß <strong>die</strong> Strahllagemonitore<br />

durch ihre komplexe Elektronik fehleranfällig sind und <strong>die</strong>se Art<br />

der Kontrolle keinen guten Schutz vor einem Quench gewährleisten kann,<br />

weil falsche Alarme erzeugt werden. Deshalb wird <strong>die</strong> Erzeugung von Alarmen<br />

durch <strong>die</strong> Lagemonitore nicht mehr benutzt.<br />

Stattdessen wurden spezielle Strahlverlustmonitore entwickelt, <strong>die</strong> <strong>die</strong>se Aufgabe<br />

übernehmen. Sie sind an den supraleitenden Quadrupolen, an den normalleitenden<br />

Quadrupolen und an den Kollimatoren installiert [16]. Die Strahlverlustmonitore<br />

können — ähnlich wie <strong>die</strong> Lagemonitore — bei Überschreitung<br />

einer wählbaren Verlustschwelle einen Alarm auslösen. Die von den<br />

Verlustmonitoren gemeldeten Alarme werden dazu benutzt, bei zu großen<br />

Verlusten den Protonstrahl zu ejizieren.<br />

Alle <strong>für</strong> <strong>die</strong>se Aufgaben nötigen Geräte wurden auf Basis von NIM-Modulen<br />

entwickelt und <strong>für</strong> <strong>die</strong> Auslese mittels SEDAC 12 , einem DESY-eigenen Feldbussystem,<br />

vorgesehen. Deshalb werden sie häufig als SEDAC-Module bezeichnet.<br />

Die Module zur Lage- und Verlustmessung sind mit dem Modul,<br />

das <strong>die</strong> von ihnen erzeugten Signale registriert und an <strong>die</strong> Alarmzentrale<br />

weiterleitet, jeweils in einem Crate untergebracht. Zusätzlich befindet sich in<br />

jedem solchen Crate ein Crate-Controller, der <strong>die</strong> Kommunikation über eine<br />

SEDAC-Leitung ermöglicht. Die Module müssen deswegen über <strong>die</strong>selbe<br />

SEDAC-Leitung angesprochen werden. Da nur jeweils ein Computer Daten<br />

12 Serial Data Acquisition and Control


3.1 Messung der Strahllage 13<br />

über <strong>die</strong> Leitung senden kann, ist das Lagekontrollsystem auch gleichzeitig<br />

das Verlustkontrollsystem und <strong>für</strong> <strong>die</strong> Auslese des Alarmstatus zuständig.<br />

3.1 Messung der Strahllage<br />

Zur Messung der Strahllage werden Elektroden benutzt, <strong>die</strong> an das elektromagnetische<br />

Feld der vorbeifliegenden Protonpakete koppeln und innerhalb<br />

der Strahlröhre angebracht sind. Ihre Position wird so ausgewählt, daß sie<br />

zum einen zur Berechnung des Q-Werts maximal 90 ◦ in der Betatronphase<br />

auseinanderliegen und zum anderen zur Überprüfung der Fokussierung<br />

durch <strong>die</strong> Quadrupolmagnete stets hinter einem fokussierenden Quadrupol<br />

angebracht sind. Da ein Quadrupol, der in einer Ebene stets fokussiert, stets<br />

in der anderen Ebene defokussiert [24], wechseln sich <strong>die</strong> Meßpositionen von<br />

x- und y-Ablage wechselseitig ab.<br />

Die Abb. 2 zeigt <strong>die</strong> Position der Elektroden in der Strahlröhre <strong>für</strong> eine<br />

Messung der horizontalen bzw. vertikalen Ablage. Es gehören jeweils zwei<br />

Elektroden zus<strong>am</strong>men, sie sind in der Strahlröhre an gegenüberliegenden Positionen<br />

angebracht. Die Elektroden bilden zus<strong>am</strong>men mit dem Strahl einen<br />

Antennen<br />

y y<br />

Aufbau horizontale Messung<br />

Protonstrahl<br />

Vakuumk<strong>am</strong>mer<br />

Antennen<br />

x x<br />

Aufbau vertikale Messung<br />

Abbildung 2: Position der Elektroden in der Strahlröhre<br />

Sechspol. Dabei sind Ein- und Austrittspunkt des Strahles sowie Ein- und<br />

Ausgang der beiden Elektroden jeweils ein Pol. Diese Situation wird in Abb. 3<br />

gezeigt. Die Berechnung der Kopplungskoeffizienten ist kompliziert. Wie in<br />

[11] gezeigt wird, ist das Verhältnis der an den Punkten 1 und 2 abgegriffenen


14 3 MESSPRINZIP<br />

Teilchenstrahl<br />

6 5<br />

Vakuumk<strong>am</strong>mer<br />

3 (Masse)<br />

4 (Masse) Antenne<br />

Abbildung 3: Prinzip der Strahlankopplung<br />

Signalspannungen V1 und V2 näherungsweise durch <strong>die</strong> Funktion<br />

V1<br />

V2<br />

[dB] = 20 log 10<br />

<br />

f(ɛx, −ɛy, φ0) − f(ɛx, −ɛy, −φ0)<br />

f(−ɛx, ɛy, φ0) − f(−ɛx, ɛy, −φ0)<br />

1<br />

2<br />

(13)<br />

gegeben. Dabei sind ɛx = x/R <strong>die</strong> normierte horizontale Position, ɛy = y/R<br />

<strong>die</strong> normierte vertikale Position, R = 27.65 mm der Radius der Vakuumk<strong>am</strong>mer<br />

und φ0 = 0.628 <strong>die</strong> der Elektrodenlänge entsprechende elektrische<br />

Phase. Die Funktion f(ɛx, ɛy, φ0) ist gegeben durch<br />

f(ɛx, ɛy, φ0) = arctan<br />

<br />

((1 + ɛx) 2 + ɛ2 y ) tan(φ0/4)<br />

<br />

+ 2ɛy<br />

1 + ɛ 2 x − ɛ2 y<br />

(14)<br />

Das Signalspannungsverhältnis ist in Abb. 4 dargestellt. Für eine Strahlablage<br />

|x| < 10 mm erhält man angenähert ein lineares Verhältnis. Für größere<br />

Strahlablagen weicht das Verhältnis leicht davon ab. Die von den Elektroden<br />

aufgenommenen Spannungspulse müssen <strong>für</strong> eine Auswertung natürlich noch<br />

weiterverarbeitet werden. Das geschieht durch zwei verschiedene SEDAC-<br />

Module, nämlich durch PPA 13 und PPD 14 . Beide SEDAC-Module enthalten<br />

jeweils zwei Kanäle, <strong>die</strong> an benachbarten Quadrupolen messen. Deshalb mißt<br />

ein Kanal stets <strong>die</strong> x-Ablage und der andere <strong>die</strong> y-Ablage. Der Aufbau der<br />

beiden Kanäle ist dabei identisch.<br />

Das PPA wandelt das Amplitudenverhältnis der Spannungen V1/V2 in Betrag<br />

und Phase um. Die Funktionsweise des Phasenkonverters ist aus Abb. 5<br />

ersichtlich. Dabei ist der Betrag eine Funktion der Intensität (d. h. der Teil-<br />

13 Proton-Position Analog Module<br />

14 Proton-Position Digital Module


3.1 Messung der Strahllage 15<br />

V1/V2 in dB<br />

30<br />

20<br />

10<br />

-20 -10 0<br />

10<br />

x in mm<br />

20<br />

-10<br />

-20<br />

-30<br />

Abbildung 4: Signalverhältnis V1/V2 der Elektroden<br />

✻<br />

☞<br />

✚ ✁<br />

✚✚✚✚✚<br />

|V2|<br />

|r|<br />

φ<br />

|V1|<br />

Abbildung 5: Konvertierung Amplitudenverhältnis in Betrag und Phase<br />


16 3 MESSPRINZIP<br />

chenzahl) des Protonpakets, und <strong>die</strong> Phase eine Funktion der Strahlablage<br />

[11]. Anschließend werden <strong>die</strong> Intensitäts- und Lageinformationen werden mit<br />

einer Auflösung von 8 Bit digitalisiert und an das PPD weitergereicht.<br />

Der analoge Teil der Elektronik (PPA) ist in der Lage, jedes vorbeikommende<br />

Protonpaket zu messen. Das entspricht bei 96 ns Paketabstand einer<br />

Frequenz von etwa 10.4 MHz. Die Digitalelektronik ist mit <strong>die</strong>ser Datenrate<br />

überfordert. Deshalb werden nicht alle Pakete gemessen, sondern alle bei HE-<br />

RA installierten PPD-Module messen dasselbe Paket. Das geschieht mit Hilfe<br />

des HIT 15 -Systems. Alle Positionsmonitore erhalten durch das HIT-System<br />

genau dann einen Trigger, wenn das ausgewählte Protonpaket vorbeifliegt.<br />

D<strong>am</strong>it über den ges<strong>am</strong>ten HERA-Ring ein spezieller Umlauf selektiert werden<br />

kann, wurde das folgende Schema implementiert: In jedem PPD-Modul<br />

befindet sich ein Zähler, der sogenannte SID 16 -Zähler. Er wird bei jedem vom<br />

HIT-System ankommenden Triggersignal erhöht und zählt somit <strong>die</strong> Umläufe<br />

der Protonpakete. Intern werden alle Aktionen auf den Stand <strong>die</strong>ses Zählers<br />

synchronisiert. Werden vom HIT-System <strong>für</strong> eine gewisse Zeit keine Trigger<br />

gesendet, so wird in allen PPD-Modulen der SID-Zähler auf Null zurückgesetzt.<br />

Von da an enthalten alle PPD-Module denselben Zählerstand [11].<br />

Der Aufbau des PPD-Moduls ist in Abb. 6 schematisch wiedergegeben. Es<br />

befindet sich direkt neben dem PPA-Modul in demselben Crate. Es erhält <strong>die</strong><br />

Positions- bzw. Intensitäts-Daten beider Kanäle des PPA-Moduls über den<br />

oberen, normalerweise unbenutzten Stecker an der Rückseite des SEDAC-<br />

Crates. Die Positionsdaten gelangen in einen Ringpuffer, der bis zu 1024<br />

aufeinanderfolgende Positionen abspeichern kann. Dieser Ringpuffer ist <strong>für</strong><br />

<strong>die</strong> Post-Mortem-Analyse nach einer Ejektion des Protonstrahles vorgesehen.<br />

Er kann aber auch dazu verwendet werden, den Arbeitspunkt des Beschleunigers<br />

zu bestimmen.<br />

Ein kleinerer Ringpuffer, der 256 Positionen speichern kann, kann wie der<br />

Post-Mortem-Speicher Daten aufeinanderfolgender Positionen aufnehmen.<br />

Wahlweise können aber auch Mittelwerte von jeweils 128 aufeinanderfolgenden<br />

Umläufen abgespeichert werden, so daß insges<strong>am</strong>t Informationen über<br />

256 · 128 = 32768 Umläufe <strong>eines</strong> Protonpaketes vorliegen. Dies entspricht<br />

einem Zeitraum von 688 ms.<br />

Wie das PPA-Modul, besteht auch das PPD-Modul aus zwei Kanälen. Deshalb<br />

sind <strong>die</strong> Speicher doppelt vorhanden: Einmal <strong>für</strong> <strong>die</strong> Messung der x-<br />

Ablage und einmal <strong>für</strong> <strong>die</strong> Messung der y-Ablage. Beide Kanäle teilen sich<br />

aber eine Steuer- und Kontrolleinheit.<br />

Die Einstellung der verschiedenen Par<strong>am</strong>eter sowie <strong>die</strong> Auslese der Speicher,<br />

15 HERA Integrated Timing<br />

16 Synchrotronic Identification


3.1 Messung der Strahllage 17<br />

Abbildung 6: Schematischer Aufbau des PPD-Moduls. Mit freundlicher Genehmigung<br />

von Manfred Wendt, DESY MKI


18 3 MESSPRINZIP<br />

der Mittelwerte, der Positionsdaten und der Intensität, <strong>die</strong> nicht zwischengespeichert<br />

wird, geschieht durch <strong>die</strong> Steuer- und Kontrolleinheit über SEDAC.<br />

3.2 Triggerung der Lagemessung<br />

Das HIT-System generiert aus der Hochfrequenz von HERA eine zeitliche<br />

Abfolge von Triggerpulsen, <strong>die</strong> über ein Koaxialkabel entlang dem Beschleuniger<br />

propagieren. Für jeden Positionsmonitor ist ein Triggerpuls in <strong>die</strong>ser<br />

Kette gedacht. Da sich <strong>die</strong> Protonen mit nahezu Lichtgeschwindigkeit c bewegen,<br />

elektrische Signale sich aber nur mit etwa v = c/3 übertragen lassen,<br />

werden <strong>die</strong> Pulse gegen <strong>die</strong> Flugrichtung der Protonen losgeschickt. Die<br />

Laufzeiten der Signale sind so berechnet, daß <strong>die</strong> Ankunftszeit <strong>die</strong>ses Pulses<br />

mit dem Vorbeifliegen des ausgewählten Paketes übereinstimmt. Der <strong>für</strong> das<br />

PPA-Modul zugedachte Puls wird von einem im selben Crate untergebrachten<br />

weiteren SEDAC-Modul, dem MTM 17 aus der Triggerkette herausgefiltert.<br />

Wie es jedoch manchmal so geht, wurde nach der Planungsphase <strong>die</strong>ser<br />

Module <strong>am</strong> DESY beschlossen, <strong>die</strong> Anzahl der SEDAC-Crates <strong>für</strong> <strong>die</strong> Lagemessung<br />

um den Faktor zwei zu reduzieren. Statt einem Paar von PPAund<br />

PPD-Modul sind deshalb in den meisten Crates jeweils zwei Paare untergebracht.<br />

Das oben erwähnte Triggerschema funktionierte zwar noch, war<br />

aber sehr unflexibel, da sich <strong>die</strong> Triggerpulse in der vom HIT-System erzeugten<br />

Triggerkette nicht beliebig verschieben lassen und deshalb zusätzliche<br />

Kabel zur Verzögerung eingebaut werden mußten. Deshalb ging man den folgenden<br />

Weg: In jedes <strong>die</strong>ser Crates wurde noch ein zusätzliches Modul, das<br />

DLY 18 -Modul, eingebaut, das aus einem von dem MTM eingehenden Puls<br />

zwei Pulse <strong>für</strong> <strong>die</strong> beiden PPA-Module generiert. Da <strong>die</strong> PPA-Module an<br />

zwei unterschiedlichen Positionen messen, sind <strong>die</strong> Laufzeiten der von den<br />

Elektroden aufgenommenen Signale unterschiedlich. Dementsprechend muß<br />

der von dem MTM herausgefilterte Triggerpuls <strong>für</strong> ein PPA verzögert werden.<br />

Das geschieht über Delays in dem DLY-Modul, <strong>die</strong> sich über SEDAC<br />

auslesen und setzen lassen.<br />

Ein weiteres Modul, das PMST 19 -Modul, ist <strong>für</strong> <strong>die</strong> Triggerung der Lagemonitore<br />

wichtig. Alle vom HIT-System erzeugten Pulsketten passieren das<br />

PMST-Modul, bevor sie zu den Monitor-Trigger-Modulen in den Hallen gelangen.<br />

Das PMST-Modul erlaubt, <strong>die</strong> ansonsten kontinuierliche Folge von<br />

Trigger-Pulsen gezielt zu unterbrechen.<br />

Es kann in zwei Betriebsarten benutzt werden. Der “kontinuierliche Mode”<br />

ist <strong>für</strong> <strong>die</strong> Synchronisation der PPD-Module im Speicherbetrieb gedacht (vgl.<br />

17 Monitor-Trigger-Modul<br />

18 Delay-Modul<br />

19 PM-Bit-Steuerung


3.3 Messung des Strahlverlusts 19<br />

Abschnitt 3.1). Dabei werden alle vom HIT-System übermittelten Pulse standardmäßig<br />

durchgelassen. Mit einem Signal über SEDAC kann <strong>die</strong>se Triggerkette<br />

<strong>für</strong> 100 Pulse unterbrochen werden. Dadurch wird der SID-Zähler in<br />

allen PPD zurückgesetzt, <strong>die</strong> d<strong>am</strong>it synchronisiert sind.<br />

Im “getriggerten Mode” werden standardmäßig keine Triggerpulse durchgelassen.<br />

Erst nachdem ein Signal über SEDAC das PMST-Modul erreicht,<br />

oder eine Injektion von PETRA 20 erfolgt, wird eine genau definierte Anzahl<br />

von Triggerpulsen durchgelassen. Diese Anzahl kann vorher im Bereich von<br />

1-9999 beliebig gesetzt werden. Nachdem <strong>die</strong> gewählte Anzahl Pulse durchgelassen<br />

wurde, werden wieder alle Pulse unterdrückt.<br />

3.3 Messung des Strahlverlusts<br />

Protonen wechselwirken — anders als Elektronen — auch durch <strong>die</strong> starke<br />

Wechselwirkung. Das führt dazu, daß <strong>die</strong> Protonen in inelastischen Reaktionen<br />

beim Zus<strong>am</strong>menstoß mit Atomkernen hadronische Teilchen erzeugen.<br />

Diese wechselwirken in der Materie über verschiedene Mechanismen wie<br />

Spallation und Spaltung und erzeugen einen hadronischen Schauer. Dabei<br />

entstehen auch geladene Teilchen, <strong>die</strong> durch Ionisation Elektronen aus dem<br />

Material auslösen. In nachfolgenden elektromagnetischen Reaktionen werden<br />

Schauer von Photonen und Elektronen erzeugt, <strong>die</strong> sich über Paarbildung,<br />

Comptoneffekt und Photoeffekt immer weiter verzweigen. Eine weitere Quelle<br />

von Photonen sind <strong>die</strong> in hadronischen Reaktionen erzeugten neutralen<br />

Pionen, <strong>die</strong> in zwei Photonen zerfallen. Diese tragen auch zu dem elektromagetischen<br />

Schauer bei.<br />

Die in den Schauern entstehenden Teilchen werden zur Messung des Protonverlustes<br />

benutzt. Die prinzipielle Idee bei ist, <strong>die</strong> durch den Protonverlust<br />

entstandenen Teilchen an einem ausgewählten Ort zu zählen und daraus auf<br />

<strong>die</strong> Ges<strong>am</strong>tanzahl der verlorenen Protonen zurückzuschließen.<br />

Die Schwierigkeit beim Nachweis der Proton-Strahlverluste liegt nun darin,<br />

daß von dem Elektron-Ring, der direkt unter dem Proton-Ring angebracht<br />

ist, ein hoher Synchrotronstrahlungshintergrund von etwa 3.03 · 10 8 Photonen/cm<br />

2 /s ausgeht. Die aus den hadronischen Schauern erzeugten Photonen<br />

sind über <strong>die</strong>sem Untergrund nicht mehr nachzuweisen und können deshalb<br />

nicht zur Messung benutzt werden, allein <strong>die</strong> Anzahl der Elektronen läßt<br />

einen Rückschluß auf den Protonverlust zu.<br />

Demnach können nur solche Detektoren verwendet werden, <strong>die</strong> auf Photonen<br />

nicht sensitiv sind, aber Elektronen mit genügender Empfindlichkeit nach-<br />

20 Positron-Elektron Tandem Ring-Anlage. PETRA ist ein Vorbeschleuniger <strong>für</strong> HERA,<br />

der <strong>die</strong> Protonen bis auf eine Energie von 40 GeV beschleunigen kann.


20 3 MESSPRINZIP<br />

weisen. Bei HERA werden als Verlustdetektoren großflächige PIN 21 -Dioden<br />

verwendet, <strong>die</strong> in Sperrichtung betrieben werden. PIN-Dioden zeichnen sich<br />

durch eine in der Zwischenschicht existierende große Verarmungszone an Ladungsträgern<br />

aus, so daß beim Betrieb der Diode in Sperrichtung nur ein<br />

kleiner Sperrstrom (verglichen zu herkömmlichen Dioden) fließt.<br />

Fliegen Photonen oder ionisierende Teilchen durch <strong>die</strong> Diode, so erzeugen sie<br />

in der Sperrschicht Elektron-Loch-Paare. Diese werden durch <strong>die</strong> Sperrspannung<br />

abgesaugt, so daß ein kurzer Strompuls entsteht.<br />

Die Unterdrückung der Photonen geschieht durch <strong>die</strong> Verwendung zweier<br />

Dioden, <strong>die</strong> nur durch einen hauchdünnen Spalt getrennt und in Koinzidenz<br />

geschaltet sind. Die Photonen bleiben in einer der beiden Dioden stecken,<br />

minimalionsierende Teilchen können jedoch beide Dioden durchqueren [15].<br />

Durch <strong>die</strong> Koinzidenzschaltung werden deshalb nur Pulse durchgelassen, <strong>die</strong><br />

durch Teilchen aus dem Protonverlust ausgelöst werden.<br />

Die von den PIN-Dioden gelieferten Signale werden in TTL-Pulse umgewandelt<br />

und an eine Elektronik weitergereicht, <strong>die</strong> neben der Koinzidenzschaltung<br />

beider Signale auch Einzelpulse beider Dioden verarbeiten kann. Die<br />

Pulse werden jeweils in einem Zeitintervall von 5.208 ms mit 16 Bit breiten<br />

Zählern gezählt und dann in einem Speicher niedergelegt, der 128 Werte<br />

fassen kann.<br />

Neben <strong>die</strong>sem sogenannten “Kurzzeitspeicher” gibt es einen “Langzeitspeicher”,<br />

der gemittelte Werte aufnimmt. Dabei wird jeweils, wenn der Kurzzeitspeicher<br />

gefüllt ist, ein Mittelwert des Kurzzeitspeichers im Langzeitspeicher<br />

abgelegt. Auch der Langzeitspeicher faßt 128 Werte. Der Kurzzeitspeicher<br />

enthält somit Information über einen Zeitraum von 666 ms, der Langzeitspeicher<br />

über 85.3 Sekunden.<br />

Bevor <strong>die</strong> Anzahl der gezählten Pulse im Speicher abgelegt wird, wird sie mit<br />

einer vom Benutzer über SEDAC setzbaren Alarmschwelle verglichen. Wird<br />

<strong>die</strong>se überschritten, wird ein Alarm ausgelöst. Das Alarmsignal wird an ein<br />

Alarm-Modul weitergeleitet, das sich im selben Crate befindet. Es handelt<br />

sich dabei um dasselbe Alarm-Modul, das <strong>die</strong> Alarme von den Lagemonitoren<br />

empfängt.<br />

Jeweils vier <strong>die</strong>ser Zähleinrichtungen sind in einem SEDAC-Modul untergebracht.<br />

Alle vier Kanäle teilen sich gemeins<strong>am</strong> eine Steuer- und Logikeinheit,<br />

auf <strong>die</strong> über SEDAC zugegriffen werden kann.<br />

Die Zuordnung der durch <strong>die</strong> PIN-Dioden gemessenen Rate und der tatsächlichen<br />

Verlustrate der Protonen ist sowohl durch numerische Berechnungen<br />

als auch durch direkte Kalibrierungen erfolgt [15, 16]. Obwohl PIN-Dioden<br />

unterschiedlicher Hersteller <strong>für</strong> Messungen an den supraleitenden und nor-<br />

21 Positive Dotierung, intrinsische Ladungsdichteverteilung, negative Dotierung


3.4 Alarme, Strahldump und Freeze 21<br />

malleitenden Quadrupolen benutzt wurden, kann <strong>die</strong> Anzahl verlorener Protonen<br />

NP rotons durch den einfachen Zus<strong>am</strong>menhang<br />

NP rotons = k<br />

· NDiode<br />

Ep<br />

(15)<br />

beschrieben werden. Dabei bezeichnet k den Kalibrierungsfaktor, der von Diodentyp<br />

und Aufstellungsort abhängig ist, sowie Ep <strong>die</strong> Energie der Protonen.<br />

So ergibt sich z. B. <strong>für</strong> <strong>die</strong> an den supraleitenden Quadrupolen angebrachten<br />

Verlustmonitore<br />

k = 3.3 · 10 8 GeV (16)<br />

3.4 Alarme, Strahldump und Freeze<br />

Die von Lage- und Verlustmonitoren erzeugten Alarmsignale bei Überschreitung<br />

einer voreingestellten maximalen Ablage bzw. Verlustrate werden vom<br />

ALM 22 -Modul, das sich stets im selben Crate befindet, registriert. Alle Alarm-<br />

Module sind untereinander über eine elektrische Leitung miteinander verbunden,<br />

an der eine konstante Spannung von 100 V anliegt. Für jeden Alarm,<br />

der dem Alarm-Modul von BLM oder PPD gemeldet wird, wird ein Widerstand<br />

in <strong>die</strong>se Leitung geschaltet. Durch Messung der Stromstärke in einem<br />

zentralen Gerät, dem A ∗ -Gerät, kann somit <strong>die</strong> Ges<strong>am</strong>tzahl der Alarme festgestellt<br />

werden [1, 32]. Bei Überschreitung einer gewissen Anzahl wird ein<br />

Strahldump ausgelöst. Die ALM-Module erfahren <strong>die</strong>s über den Zus<strong>am</strong>menbruch<br />

der 100 V-Spannung. Dann frieren sie den Speicherinhalt der Lageund<br />

Verlustmonitore ein, so daß keine neuen Daten mehr genommen werden.<br />

In <strong>die</strong>sem Status lassen sich <strong>die</strong> Speicherinhalte der Lage- und Verlustmonitore,<br />

<strong>die</strong> Informationen über <strong>die</strong> Vorgeschichte des Strahldumps enthalten,<br />

auslesen. D<strong>am</strong>it kann systematisch nach der Ursache <strong>für</strong> den Strahldump<br />

gesucht werden kann.<br />

22 Alarm


22 4 ENTWICKLUNG DES KONTROLLSYSTEMS<br />

4 <strong>Entwicklung</strong> des <strong>Kontrollsystems</strong><br />

4.1 Analyse des HERA-Kontrollsystem<br />

Die Struktur des jetzigen HERA-<strong>Kontrollsystems</strong> ist nach dem Prinzip <strong>eines</strong><br />

Client-Server-Modells [10, 12] gestaltet. Die bei HERA benutzte Implementierung<br />

ist in Abb. 7 dargestellt. Dabei ist jeweils ein Server <strong>für</strong> ein spezielles<br />

Stück Hardware, das eine Komponente des Beschleunigers repräsentiert,<br />

zuständig [6]. Diese Server haben zum einen <strong>die</strong> Aufgabe der Steuerung der<br />

Hardware (z. B. Steuerung des HERA Timings, der Hochfrequenz, der Dipolund<br />

Quadrupol-Magnete, des Kühlsystems etc.) als auch <strong>die</strong> Aufgabe der<br />

Überwachung. Als Beispiel <strong>für</strong> letzteres seien z. B. <strong>die</strong> Überwachung der Tunneltemperatur,<br />

der Strahllage, des Strahlverlustes oder auch des Strahlstromes<br />

und der Lebensdauer genannt. Die Server werden im DESY-Sprachjargon<br />

FEC 23 genannt. Die Server verfügen über zwei Kommunikationskanäle. Zum<br />

einen sind sie über einen Feldbus (in der Regel SEDAC) mit der Hardware<br />

verbunden. Über den Feldbus erfolgt <strong>die</strong> Steuerung, Regelung und Datennahme.<br />

Nur ein Server kann somit direkt auf <strong>die</strong> Hardware zugreifen. Zum anderen<br />

sind <strong>die</strong> Server an ein lokales Netz, das auf Ethernet basiert, angeschlossen.<br />

Über das Netz können <strong>die</strong> Clients auf <strong>die</strong> Funktionen des Servers zugreifen.<br />

Die Clients stellen eine grafische Benutzeroberfläche <strong>für</strong> <strong>die</strong> verschiedenen<br />

Hardware<br />

Server<br />

Feldbus<br />

Lokales Netz (Ethernet)<br />

Client 1 Client 2 Client n<br />

Abbildung 7: Das Client-Server Modell<br />

Funktionen der Server zur Verfügung. Mehrere Client-Progr<strong>am</strong>me, <strong>die</strong> auf unterschiedlichen<br />

Computern auf dem ges<strong>am</strong>ten DESY-Gelände laufen können,<br />

dürfen gleichzeitig auf <strong>die</strong> Daten <strong>eines</strong> Servers zugreifen. Die Steuerfunktio-<br />

23 Front-End-Computer


4.2 Anforderungen 23<br />

nen der Front-End-Computer dürfen aber nur von autorisierten Personen wie<br />

den Schichtgängern im Beschleuniger-Kontrollraum benutzt werden.<br />

Die Aufgabenteilung in Clients und Server hat vor allem einen Hintergrund:<br />

Der Server soll ständig <strong>die</strong> Hardware überwachen und Daten nehmen [6].<br />

Wenn ein Client dann einen Datensatz verlangt, muß nicht erst <strong>die</strong> Hardware<br />

ausgelesen werden, sondern es werden <strong>die</strong> vom Server lokal gespeicherten<br />

Daten übertragen, was einen wesentlichen Geschwindigkeitsvorteil bedeutet.<br />

Im Laufe der Jahre ist <strong>am</strong> DESY eine gewachsene Struktur von Servern und<br />

Clients entstanden, <strong>die</strong> unterschiedlichste Computertypen, Betriebssysteme<br />

und Software verbindet. Vorrangige Aufgabe ist es, trotz <strong>die</strong>ser Unterschiede<br />

ein einheitliches Konzept <strong>für</strong> ein Kontrollsystem zu entwickeln. Die Vorteile<br />

<strong>eines</strong> einheitlichen Konzepts sind offensichtlich: Eine Erleichterung der<br />

Wartung, eine schnelle Einarbeitung neuer Mitarbeiter und <strong>die</strong> Möglichkeit,<br />

Änderungen oder Erweiterungen schneller umzusetzen.<br />

Auf Client-Seite wurde mit ACOP 24 [3] in <strong>die</strong>sem und dem letzten Jahr<br />

in Zus<strong>am</strong>menarbeit mit dem CERN ein neues, einheitliches Kontrollsystem<br />

entwickelt. Es wurde beim Anlauf von HERA <strong>die</strong>ses Jahr zum ersten Mal<br />

eingesetzt.<br />

Auf Server-Seite steht ein Schritt in Richtung <strong>eines</strong> einheitlichen <strong>Kontrollsystems</strong><br />

noch aus. Im Rahmen <strong>die</strong>ser Diplomarbeit werden im folgenden Kapitel<br />

Strukturen und Wege aufgezeigt, wie ein einheitliches Kontrollsystem<br />

aussehen könnte.<br />

4.2 Anforderungen<br />

Es ist klar, daß der Entwurf <strong>eines</strong> neuen Konzepts <strong>für</strong> das HERA-Kontrollsystem<br />

nicht unabhängig von dem zur Zeit existierenden geschehen kann. Das<br />

hier entwickelte Kontrollsystem paßt sich deshalb in <strong>die</strong> vorhandene Client-<br />

Server-Struktur ein, ohne eine Änderung auf der Client-Seite nach sich zu<br />

ziehen. Das erfordert eine Kompatibilität im Client-Server-Interface. Dies<br />

wurde durch <strong>die</strong> Benutzung des ACOP-Netz-Kernels [3] in seiner neuesten<br />

Version 3.02 (Juli 1998) erreicht.<br />

Die Lage- und Verlustmessung soll <strong>die</strong> verschiedenen HERA-Betriebsmodi<br />

Injektion, Energie-R<strong>am</strong>ping und Speicherbetrieb unterstützen, indem geeignete<br />

Daten genommen und dem Benutzer (den Clients) zur Verfügung gestellt<br />

werden. Da<strong>für</strong> müssen <strong>die</strong> aus den Verlust- und Lagemonitoren entnommenen<br />

Digitalwerte mit Hilfe von Kalibrationstabellen in eine Ablage bzw. eine Anzahl<br />

verlorener Protonen konvertiert werden. Weiterhin sollen <strong>die</strong> von Lageund<br />

Verlustmonitoren gemeldeten Alarme ausgelesen werden. Kommt es zu<br />

24 Accelerator Component Oriented Progr<strong>am</strong>ming


24 4 ENTWICKLUNG DES KONTROLLSYSTEMS<br />

einem Strahldump, soll <strong>die</strong>ser automatisch erkannt werden und <strong>die</strong> Daten <strong>für</strong><br />

eine Post-Mortem-Analyse abgespeichert werden.<br />

Eine vom DESY gewünschte Änderung ist <strong>die</strong> Erhöhung der Auslesegeschwindigkeit<br />

gegenüber der des vorhandenen <strong>Kontrollsystems</strong>. Eine Untersuchung<br />

des vorhandenen <strong>Kontrollsystems</strong> hat ergeben, daß <strong>die</strong> Auslesegeschwindigkeit<br />

nicht durch eine mangelnde Prozessorleistung des Front-End-<br />

Computers begrenzt ist, sondern durch <strong>die</strong> Transferrate der Daten über den<br />

SEDAC-Feldbus [9]. Mit einer maximalen Transferrate von 4000 Hz, mit der<br />

16 Bit breite Worte gelesen bzw. geschrieben werden können, ist SEDAC verglichen<br />

mit heute üblichen Feldbussystemen langs<strong>am</strong>. Die einfachste Lösung<br />

wäre somit, einen schnelleren Feldbus zur Datennahme zu benutzen. Das ist<br />

aber mit großem technischen Aufwand verbunden, da jeder Crate-Controller<br />

ausgetauscht und zusätzliche Komponenten installiert werden müßten. Deshalb<br />

soll SEDAC noch <strong>für</strong> einige Zeit als Feldbus behalten werden, und es<br />

wurde entschieden, <strong>die</strong> Anzahl der pro Feldbus übertragenen Daten zu verringern.<br />

Da<strong>für</strong> werden vier neue Server statt wie bisher einem benutzt. Trotzdem<br />

soll das System offen <strong>für</strong> einen Wechsel auf ein neues Bussystem sein, der <strong>für</strong><br />

<strong>die</strong> entferntere Zukunft notwendig sein wird.<br />

Außerdem sollte das Kontrollsystem leicht von einer Hardwareplattform auf<br />

eine andere portiert werden können, um an zukünftige Rechnergenerationen<br />

und andere Anforderungen angepaßt werden zu können. Neue Module sollten<br />

sich nicht nur ohne großen Aufwand in das vorhandene System einpassen<br />

lassen, sondern deren Integration sogar erleichtert werden.<br />

4.3 Grundlegende Konzepte<br />

4.3.1 Modularität<br />

Um das Kontrollsystem leicht erweiterbar und offen <strong>für</strong> Änderungen zu machen,<br />

wird es modular entwickelt. Das bedeutet eine Strukturierung in verschiedene<br />

Einheiten (Module), <strong>die</strong> genau definierte Schnittstellen haben. Der<br />

modulare Aufbau wird durch <strong>die</strong> Verwendung des Klassenmodells der objektorientierten<br />

Progr<strong>am</strong>miersprache C++ unterstützt [13]. Eine Klasse faßt<br />

dabei <strong>die</strong> Eigenschaften (Funktionen) <strong>eines</strong> Moduls und <strong>die</strong> dazugehörigen<br />

Daten zus<strong>am</strong>men.<br />

Klassen eignen sich, um logische Einheiten zu schaffen und spiegeln <strong>die</strong> Struktur<br />

des tatsächlichen Aufbaus des <strong>Kontrollsystems</strong> wider. Genauso wie <strong>die</strong><br />

Module in voneinander getrennten Einschüben im Crate untergebracht sind,<br />

sind ihre Daten und Funktionen in getrennten Klassen untergebracht. So<br />

existieren eigene Klassen <strong>für</strong> <strong>die</strong> Lagemonitore, Trigger- und Delaymodule<br />

sowie <strong>die</strong> Verlustmonitore und <strong>die</strong> Alarmmodule. Eine Änderung des Kon-


4.3 Grundlegende Konzepte 25<br />

trollsystems bei entsprechender Änderung an der Hardware ist d<strong>am</strong>it so einfach<br />

(oder schwierig) wie das Hinzufügen oder Entfernen <strong>eines</strong> Einschubs<br />

aus einem Crate. Eine genaue Diskussion des Klassenmodells befindet sich<br />

in Kapitel 5.<br />

Durch <strong>die</strong> Vererbung von gemeins<strong>am</strong>en Eigenschaften der Module läßt sich<br />

der Aufwand <strong>für</strong> das Hinzufügen <strong>eines</strong> neuen Moduls auf <strong>die</strong> Modellierung<br />

der speziellen Fähigkeiten reduzieren. Die “Erfindung des Rades von Neuem”<br />

ist d<strong>am</strong>it nicht mehr notwendig.<br />

Konkretes Beispiel: Alle <strong>für</strong> <strong>die</strong> Lage- und Verlustmessung benutzten Module<br />

kommunizieren über den Feldbus SEDAC. Die Klasse CBusBoard enthält<br />

Routinen, um <strong>die</strong>se Kommunikation abzuwickeln. Durch <strong>die</strong> Vererbung <strong>die</strong>ser<br />

Routinen an spezialisierte Modulklassen haben <strong>die</strong>se automatisch <strong>die</strong><br />

Möglichkeit, über den Bus zu kommunizieren (vgl. Abb. 12).<br />

Die einzelnen Module werden dabei von dem Kontrollsystem als unabhängige<br />

Einheiten akzeptiert, <strong>die</strong> ihre Aufgaben ebenso unabhängig voneinander erledigen.<br />

Sollten z. B. in Zukunft <strong>die</strong> Lage- und Verlustmonitore in getrennten<br />

Systemen untergebracht werden, so kann eine entsprechende Änderung des<br />

Progr<strong>am</strong>mes mit wenig Aufwand erfolgen.<br />

Die Unabhängigkeit der einzelnen Modulklassen voneinander wird durch <strong>die</strong><br />

Client-Server-Struktur erleichtert. Der Server muß keinen Zus<strong>am</strong>menhang<br />

zwischen den verschiedenen Modultypen herstellen. Erst der Client muß <strong>die</strong><br />

nötigen Zus<strong>am</strong>menhänge herstellen. Eine geeignete Anwendung <strong>für</strong> einen Client<br />

wäre z. B. <strong>die</strong> Optimierung der Einstellungen des Delay-Moduls. Dazu<br />

könnte der Client <strong>die</strong> Delaywerte in einem Delay-Modul Schritt <strong>für</strong> Schritt<br />

verändern und anhand der vom PPD-Modul gelieferten Intensitätswerte überprüfen,<br />

welche Verzögerung optimal ist 25 . Dabei ist gleichgültig, ob <strong>die</strong> Daten<br />

von demselben Server oder gar aus demselben Crate kommen oder nicht.<br />

4.3.2 Echtzeitfähigkeit<br />

In verschiedenen Situationen ist es nötig, daß auf ein eingehendes Signal<br />

in bestimmter Zeit reagiert werden muß. Ein echtzeitfähiges Betriebssystem<br />

garantiert bei richtiger Progr<strong>am</strong>mierung eine maximale Antwortzeit. In der<br />

speziellen Situation der Proton-<strong>Strahllagemessung</strong> muß im Speicherbetrieb<br />

von HERA in regelmäßigen Abständen überprüft werden, ob neue Orbit-<br />

Daten vorliegen. Wird ein Datensatz verpaßt, lassen sich <strong>die</strong> Lageinformationen<br />

nicht mehr eindeutig einem bestimmten Umlauf zuordnen, und es<br />

kommt zu Fehlern in der Anzeige der Strahlabweichung. Echtzeitfähigkeit ist<br />

25 Zur Zeit wird <strong>die</strong> Delayoptimierung noch von dem Front-End-Computer durchgeführt.<br />

Der hier vorgestellte Vorschlag ist der vorhandenen Lösung jedoch konzeptionell vorzuziehen.


26 4 ENTWICKLUNG DES KONTROLLSYSTEMS<br />

eine Funktion, <strong>die</strong> vom Betriebssystem des Computers unterstützt werden<br />

muß. Das schränkt <strong>die</strong> Anzahl der Betriebssysteme, auf denen das Kontrollsystem<br />

eingesetzt werden kann, ein. Nicht eingeschränkt wird jedoch <strong>die</strong> zur<br />

Verfügung stehende Hardware, da es Echtzeit-Betriebssysteme <strong>für</strong> nahezu alle<br />

Computertypen gibt. Aktuelle Echtzeit-Betriebssysteme sind unter anderem<br />

LynxOS, QNX, Digital Unix, OSF/1, Solaris, RT-Linux und VxWorks.<br />

Für <strong>die</strong> ersten Schritte der <strong>Entwicklung</strong> wurde ein VME-basierter Real-Time-<br />

PowerPC RTPC-8067 mit dem Betriebssystem LynxOS als <strong>Entwicklung</strong>splattform<br />

verwendet. Die Kommunikation mit den Modulen erfolgte durch<br />

ein SEDAC-IP 26 -Interface abgewickelt, das nicht direkt von dem RTPC 8067<br />

angesprochen werden konnte. Es mußte auf einem IP-Carrier-Boards angebracht<br />

werden, <strong>die</strong>ses konnte dann über VME angesprochen werden. Durch<br />

<strong>die</strong>sen etwas umständlichen Aufbau k<strong>am</strong> es zu einer Hardware-Unverträglichkeit,<br />

so daß eine Übertragung der Daten nur in etwa 10% der Fälle fehlerfrei<br />

erfolgte. Deshalb mußte <strong>die</strong> <strong>Entwicklung</strong> nach drei Monaten abgebrochen<br />

werden. Leider bestand nicht <strong>die</strong> Möglichkeit, ein anderes SEDAC-Interface<br />

zu benutzen, deshalb mußte ein anderer Aufbau entworfen werden.<br />

In Absprache mit den verantwortlichen Personen <strong>am</strong> DESY wurde entschieden,<br />

<strong>für</strong> <strong>die</strong> weitere <strong>Entwicklung</strong> auf Hardware und Betriebssysteme zurückzugreifen,<br />

<strong>die</strong> beim DESY bereits erfolgreich eingesetzt wurden. Deshalb<br />

wurde <strong>für</strong> <strong>die</strong> Implementierung als Hardware-<strong>Entwicklung</strong>splattform eine<br />

MVME-162-12a, eine VME-basierte Motorola-CPU 27 , gewählt. Das SEDAC-<br />

IP-Interface wird direkt auf dem VME-Board befestigt und ist mit <strong>die</strong>sem<br />

Computer bereits erfolgreich eingesetzt worden. Dieser Aufbau funktioniert<br />

auch mit dem in <strong>die</strong>ser Diplomarbeit entwickelten Kontrollsystem einwandfrei.<br />

Die Wahl des Betriebssystems VxWorks wurde hauptsächlich durch <strong>die</strong> zwei<br />

folgenden Argumente entschieden: Einerseits wird zur Zeit <strong>am</strong> DESY verstärkt<br />

mit VxWorks gearbeitet 28 , so daß <strong>die</strong> <strong>am</strong> DESY beschäftigten Personen<br />

den Umgang mit VxWorks gewöhnt sind und sich nicht auf ein neues<br />

Betriebssystem umstellen müssen. Die Verwendung <strong>eines</strong> anderen Betriebssystems<br />

hätte außerdem zusätzliche Kosten <strong>für</strong> Lizenzen verursacht. Für das<br />

hier entwickelte Kontrollsystem konnte eine noch freie Lizenz verwendet werden,<br />

so daß auch finanzielle Gründe <strong>für</strong> <strong>die</strong> Verwendung von VxWorks sprachen.<br />

26 Industry Pack<br />

27 Central Processing Unit<br />

28 Unter anderem wurde das Quench Protection System und <strong>die</strong> Magnetsteuerung auf<br />

VxWorks entwickelt.


4.3 Grundlegende Konzepte 27<br />

4.3.3 Portabilität<br />

Soll das hier <strong>für</strong> Lage- und Verlustmessung entwickelte Kontrollsystem Vorbild<br />

<strong>für</strong> andere Teile des HERA-<strong>Kontrollsystems</strong> sein, so ist aufgrund der<br />

verschiedenen Hardwareplattformen und Betriebssysteme, <strong>die</strong> zur Zeit <strong>am</strong><br />

DESY existieren, auf eine leichte Portierbarkeit zu achten. Spezielle Eigenschaften<br />

bestimmter Hardware oder <strong>eines</strong> Betriebssystems dürfen nur dann in<br />

das Kontrollsystem einfließen, wenn der Zugriff darauf standardisiert ist. Dadurch<br />

läßt sich der Aufwand einer Portierung bei einem Wechsel der Hardware<br />

oder des Betriebssystems beträchtlich reduzieren. Wichtige Institutionen,<br />

<strong>die</strong> solche Standards entwickeln und festschreiben, sind IEEE 29 , ANSI 30 und<br />

das internationale Analogon ISO 31 . Eine hundertprozentige Portabilität läßt<br />

sich jedoch bei komplexen Progr<strong>am</strong>men auch d<strong>am</strong>it nicht erreichen [7]. Durch<br />

<strong>die</strong> Konformität zu Standards läßt sich aber der Aufwand einer Portierung<br />

beträchtlich vermindern.<br />

Es gibt hauptsächlich drei Faktoren, <strong>die</strong> <strong>die</strong> Portabilität <strong>eines</strong> Computerprogr<strong>am</strong>mes<br />

bestimmen, nämlich<br />

1. <strong>die</strong> Hardware,<br />

2. das Betriebssystem, und<br />

3. <strong>die</strong> Progr<strong>am</strong>miersprache.<br />

So bestimmt z. B. <strong>die</strong> Hardware <strong>die</strong> Ausführungsgeschwindigkeit, <strong>die</strong> Zeitauflösung<br />

bei Zeitmessungen, den verfügbaren Speicher, das Byte-Ordering<br />

oder auch den Zugriff auf externe Geräte wie das SEDAC-Interface.<br />

Das Betriebssystem regelt z. B. den Zugriff auf <strong>die</strong>se Ressourcen, bestimmt<br />

das Prozeßmanagement und ermöglicht Prioritätsregelungen bei gleichzeitiger<br />

Ausführung verschiedener Aufgaben.<br />

Mögliche Portierungsprobleme bei der Verwendung einer Progr<strong>am</strong>miersprache<br />

ergeben sich unter anderem aus der unterschiedlichen Implementation<br />

der Datentypen. So kann z. B. in der Progr<strong>am</strong>miersprache “C” der Datentyp<br />

“long” bei der Implementierung auf einer Alpha AXP 64 Bit breite Werte 32 ,<br />

bei einer Implementation auf einem PC jedoch nur 32 Bit breite Werte 33<br />

aufnehmen. Vielfach kann es auch sein, daß eine Progr<strong>am</strong>miersprache nicht<br />

<strong>für</strong> das gewählte Betriebssystem verfügbar ist.<br />

29 The Institute of Electrical and Electronics Engineers, INC.<br />

30 American National Standards Institute<br />

31 International Organisation for Standardisation<br />

32 Das entspricht Zahlen von -9223372036854775808 bis 9223372036854775807<br />

33 Das entspricht Zahlen von -2147483648 bis 2147483647


28 4 ENTWICKLUNG DES KONTROLLSYSTEMS<br />

Alle <strong>die</strong>se Faktoren müssen bei der <strong>Entwicklung</strong> des <strong>Kontrollsystems</strong> berücksichtigt<br />

werden. Durch <strong>die</strong> <strong>am</strong> DESY vorhandenen Rahmenbedingungen und<br />

<strong>die</strong> in Abschnitt 4.3.2 vorgestellte Notwendigkeit der Echtzeitfähigkeit wurde<br />

das Betriebssystem VxWorks und <strong>die</strong> Hardware MVME-162-12a vorgegeben.<br />

Die Verwendung der Progr<strong>am</strong>miersprache C++, mit der <strong>die</strong> <strong>Entwicklung</strong> auf<br />

dem RTPC 8067 begonnen wurde, ist auch unter VxWorks möglich. C++<br />

ist eine sehr weit verbreitete und sowohl durch <strong>die</strong> ANSI als auch durch <strong>die</strong><br />

ISO standardisierte Progr<strong>am</strong>miersprache [2]. Das Lage- und Verlustkontrollsystem<br />

beschränkt sich auf den im ANSI-Standard festgelegten Dialekt [13].<br />

Dieser ist <strong>für</strong> alle oben genannten Betriebssysteme und <strong>für</strong> eine große, weitere<br />

Anzahl von anderen Betriebssystem, wie z. B. DOS, OS/2 und Windows<br />

verfügbar. Neben der Möglichkeit, <strong>die</strong> Fähigkeiten des OOP 34 auszunutzen,<br />

bietet sie auch Zugriff zu standardisierten Echtzeitfähigkeiten der Betriebssysteme,<br />

insbesondere zu POSIX 35 .<br />

In dem Lage- und Verlustkontrollsystem werden <strong>die</strong> Echtzeitfunktionen des<br />

POSIX.4-Standards [7] (definiert durch <strong>die</strong> Option POSIX TIMERS) und <strong>die</strong><br />

Funktion nanosleep, <strong>die</strong> <strong>die</strong> Ausführung des Progr<strong>am</strong>ms <strong>für</strong> kurze Zeit unterbricht,<br />

benutzt. Da <strong>die</strong>se Funktionen teilweise zur Verfügung stehen, auch<br />

wenn andere POSIX-Optionen nicht vorhanden sind, läßt sich mittels einfacher<br />

Konfigurationsdateien das Kontrollsystem an neue Systeme anpassen.<br />

Als Beispiel folgt hier <strong>die</strong> Konfigurationsdatei system/linux.hpp, mit der<br />

das Kontrollsystem auf einem RedHat-Linux-System Version 5.0 lauffähig<br />

wird:<br />

/*<br />

ORGANISATION: RWTH-Aachen<br />

III. Physikalisches Institut<br />

PROJECT: HERA Be<strong>am</strong> Position Measurement (BPM)<br />

BELONGS TO: platform.hpp<br />

DESCRIPTION: This header file is used for the<br />

Linux operating system.<br />

KEYWORDS: platform independency, RedHat Linux<br />

VERSION: 1.0<br />

STATUS: tested ok<br />

MODIFICATION HISTORY:<br />

34Object Oriented Progr<strong>am</strong>ming<br />

35Portable Operating System Interface. Es ist speziell <strong>für</strong> den Einsatz unter UNIXähnlichen<br />

Betriebssystemen gedacht.


4.3 Grundlegende Konzepte 29<br />

05.05.98 mkw created file<br />

*/<br />

#ifndef _linux_hpp<br />

#define _linux_hpp<br />

// Linux has most of the POSIX options, therefore<br />

// include the POSIX header file<br />

#include "posix.hpp"<br />

// Linux has nanosleep, although it<br />

// not defines _POSIX_TIMERS<br />

#define HAVE_NANOSLEEP<br />

#endif /* _linux_hpp */<br />

Ein weiteres Beispiel zur Vermeidung von betriebssystemspezifischen Eigenschaften<br />

ist <strong>die</strong> Nichtbenutzung von Gerätetreibern (“Device drivers”). Die<br />

Einbindung und das Erzeugen von Gerätetreibern, <strong>die</strong> zum Zugriff auf Hardware<br />

<strong>die</strong>nen, ist bei den verschiedenen Betriebssystemen höchst unterschiedlich.<br />

Ein Vorteil von dem in <strong>die</strong>ser Arbeit verwendeten Kontrollsystem ist es,<br />

daß der Zugriff auf <strong>die</strong> Hardware direkt durch das Progr<strong>am</strong>m geschieht (siehe<br />

Kapitel 5.1) und <strong>die</strong> Erzeugung von Gerätetreibern dadurch vermieden wird.<br />

Weiterhin werden in der Datei platform.hpp systemunabhängige Datentypen<br />

geschaffen, durch <strong>die</strong> <strong>die</strong> Inkompatibilität der Standard-Datentypen<br />

umgangen wird.<br />

4.3.4 Nebenläufigkeit<br />

Für den Fall der Lage- und Verlustmessung ist es notwendig, daß das Kontrollsystem<br />

mehrere voneinander quasi unabhängige Aufgaben gleichzeitig<br />

bearbeiten muß. Lage- und Verlustmessung sind zwar logisch unabhängig<br />

voneinander, aber hardwaremäßig miteinander verbunden. Das Kontrollsystem<br />

muß eine sinnvolle Kooperation und Aufgabenteilung ermöglichen, d<strong>am</strong>it<br />

kritische oder sicherheitsrelevante Progr<strong>am</strong>mteile bei der Zuteilung der<br />

Ressourcen eine höhere Priorität als weniger wichtige Progr<strong>am</strong>mteile erhalten.<br />

Alle modernen oder echtzeitfähigen Betriebssysteme unterstützen Nebenläufigkeit<br />

36 , d. h. <strong>die</strong> quasi-gleichzeitige 37 Ausführung von unterschiedlichen<br />

36Bekannter sind sicherlich <strong>die</strong> englischen Ausdrücke “concurrency” bzw. “multithreading”<br />

und “multi-tasking”.<br />

37Quasi-gleichzeitig deshalb, weil bei Vorhandensein nur einer CPU auch immer nur ein


30 4 ENTWICKLUNG DES KONTROLLSYSTEMS<br />

Progr<strong>am</strong>mteilen. Die nebenläufig ausgeführten Progr<strong>am</strong>mteile werden häufig<br />

“Threads” oder “Tasks” genannt. Zumeist liegen dem aber unterschiedliche<br />

Konzepte zugrunde, so z. B. unter Solaris <strong>die</strong> “Solaris-Threads”, während<br />

VxWorks wieder ein anderes Thread-Konzept verwendet.<br />

Wegen der in Abschnitt 4.3.3 vorgestellten Portabilität des <strong>Kontrollsystems</strong><br />

kann nicht auf <strong>für</strong> das jeweilige Betriebssystem spezifische Konzepte eingegangen<br />

werden. Für das Lage- und Verlustkontrollsystem wird deshalb der<br />

seit einigen Jahren existierende und verbreitete Pthread-Standard 38 [14] verwendet.<br />

Implementationen sind z. B. <strong>für</strong> LynxOS, Solaris und Linux verfügbar.<br />

Für VxWorks existiert eine kommerziell erwerbliche Version [33]. Aus finanziellen<br />

Gründen wurde aber gegen deren Einsatz entschieden. Deshalb wurde<br />

in der vorliegenden Diplomarbeit ein eigenes Pthread-Interface entwickelt.<br />

Dieses stellt alle <strong>für</strong> das Kontrollsystem wichtigen Funktionen des Pthread-<br />

Standards <strong>für</strong> VxWorks bereitstellt. Die genaue Implementation und Einbindung<br />

in das VxWorks-Betriebssystem ist in Anhang A beschrieben.<br />

Der Einsatz von Nebenläufigkeit zieht zwangsläufig <strong>die</strong> Notwendigkeit zur<br />

Synchronisation nach sich, <strong>die</strong> mit erhöhtem Aufwand bei der Progr<strong>am</strong>mierung<br />

verbunden ist und sich durch den zusätzlichen Progr<strong>am</strong>mcode auch verlangs<strong>am</strong>end<br />

auf <strong>die</strong> Progr<strong>am</strong>mausführung auswirkt. Zusätzlich benötigt das<br />

Betriebssystem Zeit, um den Wechsel zwischen den verschiedenen Threads<br />

zu ermöglichen.<br />

Zwei Gründe sprechen jedoch <strong>für</strong> Nebenläufigkeit: Überlappende Ein- und<br />

Ausgabe sowie unterschiedliche Prioritäten von Lage- und Verlustmessung.<br />

Beide Gründe werden in [12] als wichtige Voraussetzungen <strong>für</strong> den Einsatz<br />

von Nebenläufigkeit genannt. Die überlappende Ein- und Ausgabe entsteht<br />

bei dem vorliegenden Kontrollsystem dadurch, daß es gleichzeitig über zwei<br />

Feldbusleitungen Daten übertragen muß (vgl. Abschnitt 4.4).<br />

Würde das Kontrollsystem bei der Ein- und Ausgabe auf jeweils einer Leitung<br />

blockieren, so könnten über den anderen Feldbus keine Daten übertragen<br />

werden! Es ist deshalb viel sinnvoller, einen parallelen, nebenläufigen<br />

Zugriff auf beide Feldbusse zuzulassen. Dies sorgt <strong>für</strong> eine Aufteilung der<br />

Datennahme auf zwei DAQ 39 -Threads.<br />

Andererseits bedingen <strong>die</strong> unterschiedlichen Prioritäten der ständigen Datennahme<br />

von Lage-, Verlustmonitoren und Alarmmodulen eine zusätzliche<br />

Aufteilung. In Abb. 8 ist <strong>die</strong>se Aufteilung in einem zweidimensionalen Schema<br />

verdeutlicht. Die Ordnung nach Prioritäten erfolgt durch <strong>die</strong> Wichtigkeit<br />

Befehl nach dem anderen abgearbeitet werden kann. Das Betriebssystem wechselt aber<br />

zwischen den Abarbeitung der unterschiedlichen Aufgaben so schnell, daß es dem Benutzer<br />

wie <strong>die</strong> gleichzeitige Ausführung erscheint.<br />

38 POSIX-Threads<br />

39 Data Acquisition


4.3 Grundlegende Konzepte 31<br />

der Auslese von Alarmen, Verlust und Lage. Die oben angesprochene Aufteilung<br />

in zwei Threads erfolgt aufgrund der überlappenden Ein- und Ausgabe<br />

auf zwei Feldbusleitungen.<br />

Überlappende Ein- / Ausgabe<br />

Bus 0<br />

Bus 1<br />

ALM<br />

Bus 0<br />

ALM<br />

Bus 1<br />

Unterschiedliche Prioriäten<br />

ALM BLM PPD<br />

BLM<br />

Bus 0<br />

ALM<br />

Bus 1<br />

PPD<br />

Bus 0<br />

ALM<br />

Bus 1<br />

Abbildung 8: Anordnung der zur DAQ verwendeten Threads in einem zweidimensionalen<br />

Schema<br />

Daneben existiert noch der Netz-Kernel des ACOP-Systems als eigenständiger<br />

Thread. Dieser erlaubt es den Clients, über RPC 40 eine Funktion des<br />

Servers aufzurufen, als würde <strong>die</strong>se lokal bei dem Client ausgeführt.<br />

4.3.5 Wartungsfreundlichkeit<br />

Soll das Kontrollsystem von vielen verschiedenen Arbeitsgruppen eingesetzt<br />

werden, muß es leicht verständlich sein. Darüberhinaus sollte es auch einfach<br />

zu warten sein. Das ist mit vertretbarem Aufwand nur möglich, wenn<br />

es genügend Informationen über <strong>die</strong> Zus<strong>am</strong>menhänge und den Ablauf des<br />

Systems gibt.<br />

Es versteht sich von selbst, daß der Quelltext des <strong>Kontrollsystems</strong> ausführlich<br />

dokumentiert wird. Zu fast jeder Zeile bzw. logischen Einheit von Zeilen<br />

existiert ein kurzer englischer Kommentar, der wiedergibt, zu welchem<br />

Zweck der Progr<strong>am</strong>mtext <strong>die</strong>nt. Weiterhin sind alle Funktionen mit einer<br />

Kurzbeschreibung dokumentiert, <strong>die</strong> <strong>die</strong> Funktion der Ein- und Ausgabepar<strong>am</strong>eter<br />

erklärt. Um dem Progr<strong>am</strong>mierer das Arbeiten zu erleichtern, werden<br />

hauptsächlich N<strong>am</strong>en <strong>für</strong> Funktionen verwendet, <strong>die</strong> keine Akronyme (z. B.<br />

40 Remote Procedure Call


32 4 ENTWICKLUNG DES KONTROLLSYSTEMS<br />

almrst) sind, sondern beschreiben, was <strong>die</strong> Funktion tatsächlich macht. Als<br />

Beispiele seien Bus.Write, eine Funktion, <strong>die</strong> Daten auf den Feldbus schreibt,<br />

CGroup.ReadInfo, <strong>die</strong> Informationen über eine Gruppe von Modulen aus<br />

einer Datei liest, oder auch CAlarm.ResetFreeze, <strong>die</strong> im Strahllage- und<br />

Strahlverlust-Modul das Einfrieren der Daten aufhebt, genannt.<br />

Der objektorientierte Entwurf des <strong>Kontrollsystems</strong>, das dem Quelltext <strong>die</strong><br />

logische Struktur des <strong>Kontrollsystems</strong> aufprägt, unterstützt das Verständnis<br />

des Progr<strong>am</strong>ms wesentlich.<br />

Zusätzlich ist jede Datei <strong>am</strong> Anfang mit einem Kommentar versehen, der<br />

den Sinn und Zweck der Datei beschreibt sowie Angaben zum Autor, zur<br />

Modifikation, zur aktuellen Version und eine Liste von Schlagwörtern enthält,<br />

nach denen man z. B. mit dem Progr<strong>am</strong>m Grep suchen kann. Beispielhaft<br />

zeigt der in Abschnitt 4.3.3 gezeigte Quellcode einen solchen Kommentar.<br />

4.4 Beschleunigung der Datenauslese<br />

Strahlverlustmonitore und Strahllagemonitore sind etwa gleichmäßig über <strong>die</strong><br />

Beschleunigerstruktur von HERA, <strong>die</strong> als Übersicht in Abb. 9 dargestellt ist,<br />

verteilt. Bei einer Tunnellänge von L = 6.34 km fallen <strong>die</strong> Daten an räumlich<br />

Abbildung 9: Übersicht über den HERA-Beschleuniger<br />

weit entfernten Punkten an. Da aber z. B. <strong>für</strong> <strong>die</strong> Berechnung des Q-Wertes<br />

<strong>die</strong> Daten aller Monitore benötigt werden, müssen <strong>die</strong> Daten an einer Position<br />

ges<strong>am</strong>melt und weiterverarbeitet werden. Natürlich kann man an jedes Modul


4.4 Beschleunigung der Datenauslese 33<br />

ein Kabel anschließen und <strong>die</strong>ses bis zu dem Front-End-Computer legen. Bei<br />

der großen Anzahl von etwa 8000 Modulen [21], <strong>die</strong> <strong>für</strong> HERA installiert worden<br />

sind, entsteht nicht nur ein unübersichtliches Gewirr von Kabeln, sondern<br />

explo<strong>die</strong>ren auch <strong>die</strong> Kosten mit wachsender Entfernung zum Front-End-<br />

Computer. Deshalb ist es viel sinnvoller, <strong>die</strong> Daten seriell über ein Kabel mit<br />

Hilfe <strong>eines</strong> standardisierten Protokolls zu übertragen. Diese Aufgabe erfüllt<br />

ein Feldbus. Er ist da<strong>für</strong> gedacht, mehrere räumlich entfernte Geräte über<br />

eine Leitung miteinander zu verbinden und deren Kommunikation über ein<br />

standardisiertes Protokoll zu ermöglichen. Die Strahllage- und Verlustmonitore<br />

sowie Trigger-, Delay- und Alarm-Module sind über den DESY-Feldbus<br />

SEDAC mit dem Server verbunden. SEDAC ist ein Single-Master-Bus [21].<br />

Das bedeutet, daß an einer SEDAC-Leitung Schreib- und Lesebefehle nur von<br />

einem Server, dem Front-End-Computer, ausgehen können. Da, wie bereits<br />

erwähnt, alle <strong>für</strong> <strong>die</strong> Lage- und Verlustmessung benötigten Module in einem<br />

Crate untergebracht sind, und der Crate-Controller mit dem Computer über<br />

eine SEDAC-Leitung verbunden ist, muß der angeschlossene Server sowohl<br />

Lagemonitore, als auch Verlustmonitore, Delay-Modul, Trigger-Modul und<br />

Alarm-Modul auslesen bzw. steuern.<br />

Die Daten werden über SEDAC in Form von Telegr<strong>am</strong>men verschickt. Dabei<br />

werden 46 Bits übertragen, von denen 16 Bit <strong>die</strong> tatsächlichen Daten<br />

repräsentieren (Die restlichen 30 Bits werden zur Adressierung und Fehlererkennung<br />

benutzt). Die Übertragung <strong>eines</strong> Lese- oder Schreibtelegr<strong>am</strong>ms<br />

dauert 250 µs, wovon aber 66 µs <strong>für</strong> <strong>die</strong> Synchronisation in Form einer Austastlücke<br />

vorgesehen sind [21, 19]. Daraus ergibt sich eine maximale Übertragungsfrequenz<br />

von 4 kHz <strong>für</strong> 16 Bit breite Werte, was einer Datenrate von<br />

64000 bps 41 entspricht.<br />

In Abb. 10 sind einige Beispiele <strong>für</strong> mögliche Netzkonfigurationen dargestellt.<br />

Zunächst unterstützte SEDAC nur eine Reihenschaltung; durch <strong>die</strong><br />

Einführung von Line-Splittern wurde jedoch auch eine Sternschaltung möglich.<br />

Die Kombination von Reihen- und Sternschaltung führt zu einer großen<br />

Anzahl von Möglichkeiten, SEDAC-Module miteinander zu verbinden (sogenannte<br />

“Mix-Topologien”).<br />

Das bisherige Lage- und Verlustkontrollsystem kommuniziert mit den Modulen<br />

über vier SEDAC-Leitungen, <strong>die</strong> von dem Front-End-Computer jeweils<br />

in eine Halle (West, Süd, Ost, Nord) gehen. In jeder Halle splittet sich <strong>die</strong><br />

Leitung auf in eine in den Oktanten rechts und eine in den Oktanten links<br />

(Abb. 11 links).<br />

Die Steigerung der Geschwindigkeit wird erreicht, indem <strong>die</strong> Anzahl der über<br />

den Bus zu übertragenden Daten verringert wird. Man nutzt aus, daß sich<br />

41 bits per second


34 4 ENTWICKLUNG DES KONTROLLSYSTEMS<br />

Abbildung 10: Verschiedene mögliche Netztopologien mit SEDAC. Mit freundlicher<br />

Genehmigung von Matthias Werner, DESY MKI<br />

Injektion<br />

Elektronen<br />

Halle West<br />

(HERA-B)<br />

Halle Nord (H1)<br />

Injektion<br />

Protonen<br />

BPM-FEC<br />

SEDAC<br />

Elektronen<br />

Protonen<br />

Halle Süd (ZEUS)<br />

Halle Ost<br />

(HERMES)<br />

Injektion<br />

Elektronen<br />

Halle West<br />

(HERA-B)<br />

Halle Nord (H1)<br />

BPM-FEC 1<br />

Injektion<br />

Protonen<br />

BPM-FEC 4<br />

BPM-FEC 2<br />

BPM-FEC 3<br />

SEDAC<br />

Elektronen<br />

Protonen<br />

Halle Süd (ZEUS)<br />

Halle Ost<br />

(HERMES)<br />

Abbildung 11: SEDAC-Verbindungen des alten und neuen <strong>Kontrollsystems</strong>. Links<br />

dargestellt ist der bisherige Aufbau, rechts der in <strong>die</strong>ser Diplomarbeit entwickelte<br />

neue Aufbau.


4.4 Beschleunigung der Datenauslese 35<br />

der SEDAC-Feldbus in den Hallen jeweils in zwei Leitungen aufteilt. Durch<br />

<strong>die</strong> Installation <strong>eines</strong> Front-End-Computers in jeder Halle kann man somit<br />

<strong>die</strong> Anzahl der auszulesenden Module pro Bus halbieren und d<strong>am</strong>it auch <strong>die</strong><br />

Zeit, <strong>die</strong> zum S<strong>am</strong>meln der Daten benötigt wird. Denn <strong>die</strong> Prozessorleistung<br />

reicht aus, zwei SEDAC-Leitungen mit nahezu Maximalgeschwindigkeit auszulesen<br />

42 . Diese Situation ist in Abb. 11 auf der rechten Seite dargestellt.<br />

Weiterhin werden, um den Datenfluß über den Feldbus so gering wie möglich<br />

zu machen, so wenig Buszugriffe wie möglich durchgeführt. Das ist bei der<br />

<strong>Entwicklung</strong> des <strong>Kontrollsystems</strong> durch <strong>die</strong> Zwischenspeicherung von Daten<br />

berücksichtigt worden (vgl. Abschnitt 5.2).<br />

42 Meßergebnisse befinden sich in Abschnitt 7.1


36 5 DAS KLASSENKONZEPT<br />

5 Das Klassenkonzept<br />

In <strong>die</strong>sem Kapitel wird das <strong>für</strong> das Kontrollsystem verwendete Klassenkonzept<br />

beschrieben. Einen Überblick über <strong>die</strong> Klassenhierarchie zeigt <strong>die</strong><br />

Abb. 12. Insges<strong>am</strong>t existieren 23 verschiedene Klassen, <strong>die</strong> über 300 verschiedene<br />

Funktionen enthalten. Der ges<strong>am</strong>te Quelltext des <strong>Kontrollsystems</strong><br />

besteht aus mehr als 25.000 Zeilen 43 (ohne das Pthread-Interface und ohne<br />

alle Initialisierungsdateien), so daß es wenig Sinn macht, Klasse <strong>für</strong> Klasse<br />

<strong>die</strong> verschiedenen Funktionen zu erläutern. Stattdessen werden hier <strong>die</strong><br />

wichtigsten Grundzüge erklärt.<br />

5.1 Die Klassen <strong>für</strong> den Feldbus<br />

Der Feldbus wird in dem Strahllage-Kontrollsystem durch <strong>die</strong> Klasse CBus<br />

repräsentiert. Die Klasse stellt dem Benutzer Routinen zum Schreiben und<br />

Lesen von beliebigen Adressen auf dem Bus zur Verfügung. Dabei erfolgt der<br />

Zugriff synchron, d. h. der Progr<strong>am</strong>mablauf wird erst nach dem Erreichen<br />

der Antwort wieder fortgesetzt. Das hat scheinbar den Nachteil, daß viel<br />

Zeit mit dem Warten auf eine Antwort verschwendet wird, wobei doch in<br />

der Zwischenzeit Aufgaben wie das Konvertieren oder Sichern von Daten auf<br />

Datenspeicher oder auch <strong>die</strong> Ausgabe von wichtigen Systeminformationen<br />

<strong>für</strong> den Benutzer durchgeführt werden könnten.<br />

Scheinbar deshalb, weil ja nur <strong>die</strong>ser eine Thread unterbrochen wird. Durch<br />

<strong>die</strong> Nebenläufigkeit können alle anderen Threads weiterarbeiten, sie werden<br />

nicht blockiert, so daß es sich also in Wirklichkeit um keinen Nachteil handelt.<br />

Im Gegenteil, <strong>die</strong> synchrone Abarbeitung in einem Thread hat den Vorteil,<br />

daß eine genaue Fehlerzuordnung möglich ist. So kann unmittelbar nach dem<br />

Aufruf überprüft werden, ob bei der Übertragung ein Fehler entstanden ist.<br />

Die Busklasse definiert einen Fehlertyp (BusError), der verschiedene Fehler,<br />

wie z.B. Prüfsummenfehler (Parity / CRC), einen Timeout (keine Antwort)<br />

oder auch den Status “beschäftigt” beschreiben kann. Der Benutzer der Klasse<br />

kann nach der Übertragung den Fehlerstatus abfragen und eine eventuelle<br />

Neuübertragung auslösen. Um dem Benutzer <strong>die</strong>se Arbeit abzunehmen, wird<br />

in der Busklasse eine Standardfehlerfunktion (DefaultBusErrorFunction)<br />

deklariert, <strong>die</strong> bei Auftreten <strong>eines</strong> Übertragungsfehlers aufgerufen wird. Diese<br />

löst eine Rückübertragung der Daten aus und behebt so den entstandenen<br />

Fehler.<br />

Nur wenn wiederholt Fehler auftreten, wird an das aufrufende Progr<strong>am</strong>m<br />

eine Fehlermeldung weitergegeben. D<strong>am</strong>it wird <strong>die</strong> Benutzung der Busklasse<br />

43 Zum Vergleich: Der TEX-Quelltext <strong>die</strong>ser Diplomarbeit enthält etwa 3000 Zeilen


Abbildung 12: Übersicht über <strong>die</strong> Klassenstruktur. Die verwendete Symbolik wird<br />

zu Beginn des Abschnitts 5.2 beschrieben.<br />

CAlarm<br />

CALMDAQ<br />

CBusBoard<br />

CHERABoard<br />

CBLM CBLMPickup CDelay<br />

CBLMDAQPickup CDLYDAQ<br />

BUS<br />

CMTM<br />

CMTMDAQ<br />

CBusDummy<br />

CSedacIPIO<br />

neuer Bus<br />

CALMGroup CBLMGroup<br />

CDLYGroup<br />

CMTMGroup CPPDGroup<br />

CGroup<br />

CPPD<br />

CPMST<br />

CPPDDAQ CPMSTDAQ<br />

5.1 Die Klassen <strong>für</strong> den Feldbus 37


38 5 DAS KLASSENKONZEPT<br />

sehr einfach, denn es ist nicht mehr nötig, kleinere Fehler abzufangen. Nur<br />

beim Auftreten schwerer Fehler wird <strong>die</strong> aufrufende Funktion benachrichtigt<br />

und kann so geeignete Maßnahmen ergreifen.<br />

D<strong>am</strong>it nicht genug, kann der Benutzer auch <strong>die</strong> Standard-Fehlerprozedur deaktivieren<br />

und eine eigene Fehlerbehandlungsroutine installieren, ohne <strong>die</strong><br />

Busklasse ändern zu müssen. Diese wird dann bei jedem Übertragungsfehler<br />

anstatt der Standardfehlerfunktion aufgerufen und erlaubt, flexibel auf<br />

bestimmte Fehler zu reagieren, ohne direkt <strong>die</strong> ges<strong>am</strong>te Busklasse ändern<br />

zu müssen. Die eigene Fehlerroutine muß dabei der Busklasse mitteilen, wie<br />

auf den Fehler reagiert werden soll: Entweder eine Neuübertragung auslösen<br />

(RETRY), den Fehler ignorieren und fortfahren (IGNORE) oder aber <strong>die</strong> aufrufende<br />

Routine beenden (ABORT).<br />

Neben den Routinen zum Schreiben und Lesen von Daten und zur Fehlerbehandlung<br />

existieren noch weitere Routinen, <strong>die</strong> den Umgang mit einem<br />

Feldbus erleichtern. So überprüft z. B. <strong>die</strong> Routine IsValid, ob eine übergebene<br />

Busadresse auch eine gültige Busadresse darstellt. Das kann dazu<br />

benutzt werden, schon vor dem eigentlichen Buszugriff Fehler zu vermeiden.<br />

Die beiden Routinen UseExclusive und EndExclusive arbeiten Hand in<br />

Hand, um einen exklusiven Buszugriff zu gewährleisten. Grundsätzlich ist<br />

es durch <strong>die</strong> parallele Ausführung verschiedener Threads nämlich nicht gewährleistet,<br />

daß in einem Thread zwei aufeinanderfolgende Schreibbefehle<br />

tatsächlich direkt nacheinander ausgeführt werden können. Stattdessen ist es<br />

möglich, daß ein anderer Thread zwischenzeitlich Daten überträgt. In zeitkritischen<br />

Situationen kann es jedoch möglich sein, daß mehrere Schreibbzw.<br />

Lesebefehle direkt hintereinander ausgeführt werden müssen. Nach einem<br />

Aufruf von UseExclusive kann sich der Thread sicher sein, daß außer<br />

ihm niemand auf den Bus zugreifen kann. Mit EndExclusive kann er den<br />

Feldbus <strong>für</strong> andere Threads wieder freigeben.<br />

5.1.1 Simulation <strong>eines</strong> Feldbusses<br />

Für Testzwecke kann es erforderlich sein, einen Feldbus zu simulieren. Da<strong>für</strong><br />

wurde eine eigene Test-Busklasse entwickelt, <strong>die</strong> Klasse CBusDummy. Sie stellt<br />

das oben beschriebene Interface der Busklasse komplett zur Verfügung, ohne<br />

tatsächlich auf den Bus zuzugreifen. Durch <strong>die</strong> Benutzung <strong>die</strong>ser Klasse<br />

können somit Progr<strong>am</strong>mteile getestet werden, ohne daß das echte Feldbussystem<br />

benutzt werden muß. Das ist nützlich, wenn der Feldbus <strong>für</strong> <strong>die</strong> geplante<br />

Anwendung nicht ununterbrochen zur Verfügung steht, sei es aus Kostengründen,<br />

Platzmangel etc.<br />

Bei der vorliegenden Diplomarbeit konnten nicht alle Progr<strong>am</strong>mfunktionen<br />

an dem Testaufbau in Aachen überprüft werden. Die Busklasse CBusDummy


5.1 Die Klassen <strong>für</strong> den Feldbus 39<br />

hat sich als hervorragendes Mittel, Tests ohne Verfügbarkeit des DESY-<br />

Testaufbaues durchzuführen, herausgestellt. Dabei ist ihre Funktionsweise<br />

sehr einfach: Alle mit ihrer Hilfe geschriebenen Daten verschwinden im Nichts,<br />

ohne jemals einen Fehler zu generieren. Mit ihrer Hilfe gelesene Daten enthalten<br />

als Wert stets <strong>die</strong> Null, auch hier ohne Fehlererzeugung.<br />

5.1.2 Die SEDAC-Busklasse<br />

Für <strong>die</strong> vom DESY zur Verfügung gestellte <strong>Entwicklung</strong>splattform (MVME-<br />

162-12a mit VxWorks und einem SEDAC-IP-Interface, vgl. Abschnitt 4.3.2<br />

und 4.3.3) wurde <strong>die</strong> Busklasse CSedacIPIO entworfen, <strong>die</strong> <strong>die</strong> Ein- und Ausgabe<br />

über SEDAC ermöglicht.<br />

Sie erfüllt alle oben genannten Spezifikationen. Die Standardfehlerfunktion<br />

DefaultBusErrorFunction korrigiert bis zu drei Übertragungsfehler pro Sekunde,<br />

ohne daß ein schwerer Fehler ausgelöst wird. Diese geringe Anzahl<br />

von erlaubten Fehlern ist absichtlich gewählt, d<strong>am</strong>it der Progr<strong>am</strong>mfluß nur<br />

sehr gering (mit SEDAC weniger als 0.1 %) verzögert wird und alle Echtzeitbedingungen<br />

eingehalten werden können.<br />

Dieser Mechanismus funktioniert so gut, daß während aller Tests nur noch<br />

dann schwere Fehler auftraten, wenn <strong>die</strong> Leitung zu den Modulen physikalisch<br />

unterbrochen wurde. Meßergebnisse zur Untersuchung der SEDAC-<br />

Übertragungsrate bei Verwendung der Klasse CSedacIPIO befinden sich in<br />

Abschnitt 7.1.<br />

5.1.3 Anpassung an andere Feldbussysteme<br />

Das vorgestellte Klassensystem ist <strong>für</strong> andere Feldbussysteme offen. Es benutzt<br />

Eigenschaften, <strong>die</strong> nicht nur bei der Verwendung von SEDAC funktionieren,<br />

sondern allgemein <strong>für</strong> Feldbussysteme charakteristisch sind. Soll<br />

<strong>für</strong> eine zukünftige Anwendung ein neuer Feldbus zu dem bestehenden System<br />

hinzugefügt werden, so muß bei der <strong>Entwicklung</strong> einer neuen Busklasse<br />

allerdings darauf geachtet werden, daß alle im oben vorgestellten Interface<br />

beschriebenen Funktionen <strong>für</strong> den Benutzer zur Verfügung gestellt werden.<br />

Die Funktionen müssen so ausgelegt sein, daß sie in einer nebenläufigen Umgebung<br />

andere Threads nicht blockieren. Natürlich muß auch eine geeignete<br />

Standard-Fehlerbehandlungsroutine entworfen werden, <strong>die</strong> kleinere Fehler<br />

abfängt und nur schwere Fehler an das Progr<strong>am</strong>m weiterreicht.<br />

Trotz aller Bemühungen, das Kontrollsystem unabhängig von SEDAC zu<br />

machen, sind einige SEDAC-spezifische Teile vorhanden. Dies geschah vor<br />

allem, um <strong>die</strong> Geschwindigkeit des Buszugriffs zu steigern und <strong>die</strong> Sicherheit<br />

des <strong>Kontrollsystems</strong> zu erhöhen. D<strong>am</strong>it aber ein Wechsel auf ein neues Feld-


40 5 DAS KLASSENKONZEPT<br />

bussystem möglichst problemlos vollzogen werden kann, sind <strong>die</strong> SEDACspezifischen<br />

Teile des Quelltextes mit dem Schlüsselwort SEDAC gekennzeichnet.<br />

Durch eine Suche z. B. mit dem Progr<strong>am</strong>m Grep nach <strong>die</strong>sem Schlüsselwort<br />

können <strong>die</strong> Stellen gefunden werden. Dort befindet sich ein kurzer<br />

Kommentar, der <strong>die</strong> Eigenschaft von SEDAC beschreibt, auf <strong>die</strong> zurückgegriffen<br />

wird. Eine entsprechende Änderung kann dann vorgenommen werden.<br />

5.2 Module <strong>am</strong> Feldbus<br />

Die <strong>für</strong> das Kontrollsystem entwickelte Klassenhierarchie ist in Abb. 12 dargestellt.<br />

Durchgezogenen Linien zeigen <strong>die</strong> Ableitungshierarchie. Gepunktete<br />

Linien bedeuten, daß <strong>die</strong> entsprechende Klasse einen oder mehrere Zeiger<br />

bzw. Referenzen einer anderen Klasse enthält. Letzendlich bedeuten gestrichelte<br />

Linien, daß eine Erweiterung an <strong>die</strong>ser Stelle erfolgen kann.<br />

Da alle Meßsysteme der Strahllage- und Verlustmessung als SEDAC-Module<br />

ausgelegt sind, liegt es nahe, eine Basisklasse CBusBoard zu schaffen, <strong>die</strong><br />

<strong>die</strong> grundlegenden Eigenschaften von Modulen definiert, <strong>die</strong> nur über einen<br />

Feldbus erreichbar sind. Als wichtigstes Element enthält sie eine Referenz auf<br />

<strong>die</strong> Busklasse, mit der <strong>die</strong> Datenübertragung über den Feldbus geschieht.<br />

Ob das in der speziellen Anwendung eine Testklasse (CBusDummy) ist, oder <strong>die</strong><br />

Kommunikation über SEDAC (CSedacIPIO) oder über einen völlig anderen<br />

Bus (anderer Bus) geschieht, ist wegen des einheitlichen Interfaces, das in<br />

Abschnitt 5.1 vorgestellt wurde, gleichgültig.<br />

Von der Basisklasse CBusBoard werden <strong>die</strong> zur Strahllage- und Verlustmessung<br />

nötigen Module in drei Abstraktionsstufen abgeleitet. In der ersten<br />

Stufe wird <strong>die</strong> HERA-spezifische Identifizierung der Module durch <strong>die</strong> Klasse<br />

CHERABoard ermöglicht. In der zweiten Stufe werden <strong>die</strong> <strong>am</strong> HERA-Protonring<br />

verwendeten Module deklariert. Diese stellen nur solche Methoden zur Verfügung,<br />

<strong>die</strong> stets direkt auf <strong>die</strong> Hardware zugreifen.<br />

In der dritten Abstraktionsstufe (der Klassenn<strong>am</strong>e trägt dann <strong>die</strong> Erweiterung<br />

DAQ) werden Funktionen hinzugefügt, <strong>die</strong> speziell <strong>für</strong> <strong>die</strong> Datennahme<br />

geeignet sind.<br />

Natürlich existieren stets mehrere Module des gleichen Typs. Die Klasse<br />

CGroup stellt deshalb Routinen zur Verfügung, <strong>die</strong> zur Verwaltung einer<br />

Gruppe gleichartiger Module gedacht sind. Dies betrifft vor allem <strong>die</strong> Initialisierung,<br />

<strong>die</strong> Steuerung der Datennahme und <strong>die</strong> gegenseitige Synchronisation.<br />

Da immer noch spezielle Eigenschaften der jeweiligen Module berücksichtigt<br />

werden müssen, werden von der Klasse CGroup weiter spezialisierte Klassen<br />

abgeleitet, <strong>die</strong> auf <strong>die</strong>se Eigenschaften eingehen.


5.2 Module <strong>am</strong> Feldbus 41<br />

5.2.1 Basisklasse<br />

Basisklasse <strong>für</strong> alle <strong>die</strong>se Module ist <strong>die</strong> Klasse CBusBoard. Sie enthält einen<br />

Verweis auf <strong>die</strong> Busklasse, mit der <strong>die</strong> Ein- und Ausgabe erfolgt und stellt <strong>die</strong><br />

Routinen Read und Write zur Verfügung, mit der <strong>die</strong> verschiedenen Register<br />

<strong>die</strong>ses Moduls direkt adressiert werden können. Die Basisadresse des Moduls<br />

ändert sich während der Progr<strong>am</strong>mlaufzeit nicht, deshalb wird sie nur einmal<br />

zur Initialisierung der Klasse benutzt. Die Routinen Read und Write berücksichtigen<br />

<strong>die</strong> Basisadresse automatisch, so daß nur noch <strong>die</strong> relative Adresse<br />

angegeben werden muß. Diese ist aber <strong>für</strong> alle Module gleich, was den Zugriff<br />

auf <strong>die</strong> Module transparenter macht.<br />

CBusBoard <strong>die</strong>nt dazu, <strong>die</strong> grundlegenden Funktionen der Module zu vereinheitlichen.<br />

So definiert <strong>die</strong>se Klasse eine Routine Print, <strong>die</strong> den aktuellen<br />

Status des Moduls auf dem Bildschirm ausgibt. Dies ist sehr nützlich zur Fehlersuche,<br />

da <strong>die</strong> Ausgabe als Text erfolgt und <strong>die</strong> Richtigkeit der Angaben so<br />

leicht überprüft werden kann.<br />

Zwei Routinen, Reset und Connect, <strong>die</strong>nen zur Initialisierung. Da beim Start<br />

des Progr<strong>am</strong>mes der Status der Hardware unbekannt ist, gibt es zwei Möglichkeiten<br />

der Initialisierung: Entweder werden <strong>die</strong> Module ausgelesen und <strong>die</strong><br />

Software entsprechend initialisiert (Connect), oder <strong>die</strong> Module werden auf<br />

einen vordefinierten Zustand gebracht (Reset). Letztere Routine ist nötig,<br />

da sich der Status mancher Module (so z. B. bei PPD- und BLM-Modul) gar<br />

nicht oder nicht vollständig auslesen läßt. D<strong>am</strong>it das Progr<strong>am</strong>m stets mit<br />

korrekten Daten arbeitet, wird in allen anderen Funktionen mit Hilfe der<br />

Funktion IsInitialized überprüft, ob das Modul mit Reset oder Connect<br />

initialisiert wurde. Falls nicht, wird das Progr<strong>am</strong>m mit einer entsprechenden<br />

Fehlermeldung beendet. Es liegt dann ein Fehler in der Progr<strong>am</strong>mierung des<br />

<strong>Kontrollsystems</strong> vor, der zu Fehlfunktionen beim HERA-Betrieb führen kann<br />

und behoben werden muß.<br />

Weiterhin wird eine Routine Test definiert. Diese hat <strong>die</strong> Aufgabe, das Modul<br />

zu überprüfen und eine Fehlermeldung auszugeben, wenn es defekt ist.<br />

Denn während des Betriebs von HERA kann es vorkommen, daß ein Modul<br />

wegen <strong>eines</strong> Schadens ausfällt und <strong>für</strong> <strong>die</strong> weitere Benutzung nicht mehr zu<br />

gebrauchen ist. Da HERA dann nicht angehalten werden kann, um das betreffende<br />

Modul auszubauen, muß es in dem Kontrollsystem eine Möglichkeit<br />

geben, defekte Module abzuschalten. Sofern <strong>die</strong> Hardware eine solche Funktion<br />

unterstützt, erledigen <strong>die</strong>se Aufgabe <strong>die</strong> Routinen Disable, Enable und<br />

IsEnabled. Mit Disable wird das Modul in einen solchen Zustand versetzt,<br />

in dem es keine Fehler in noch funktionierender Hardware auslösen kann.<br />

Danach wird jeder Hardwarezugriff auf das Modul mit einer Fehlermeldung<br />

beendet, mit zwei Ausnahmen: Zu Diagnosezwecken dürfen <strong>die</strong> oben genann-


42 5 DAS KLASSENKONZEPT<br />

ten Routinen Print und Test aufgerufen werden.<br />

Um das Kontrollsystem auch bei nebenläufiger Ausführung sicher zu machen,<br />

existieren <strong>die</strong> Routinen Lock und Unlock. In Abb. 13 ist dargestellt,<br />

was passieren kann, wenn zwei Threads auf <strong>die</strong> Routinen <strong>eines</strong> Moduls abwechselnd<br />

zugreifen. Die gezeigte Situation ist in der Fachliteratur als “Race-<br />

Client-Aufruf Datennahme<br />

Disable!<br />

CPU<br />

Thread 1 Thread 2<br />

IsEnabled? -> JA!<br />

Read -> FEHLER<br />

Abbildung 13: Fehler durch nichtabgesicherte Zugriffe<br />

Condition” bekannt [10, 12]. In <strong>die</strong>ser Situation existieren zwei Threads: Ein<br />

Client möchte ein Modul mit Disable abschalten, während <strong>die</strong> Datennahme<br />

das Modul auslesen möchte. Am Anfang wird <strong>die</strong> CPU der Datennahme zugeteilt.<br />

Sie überprüft mit IsEnabled, ob das Modul aktiviert ist, und erhält<br />

eine positive Antwort. Jetzt passiert das Entscheidende: Die Datennahme<br />

wird an <strong>die</strong>ser Stelle unterbrochen und der Aufruf des Clients be<strong>die</strong>nt. Dieser<br />

deaktiviert das Modul mit Disable. Nachdem <strong>die</strong> Datennahme wieder<br />

den Prozessor zugeteilt bekommt, möchte sie das (jetzt deaktivierte) Modul<br />

auslesen. Das führt zu einem Fehler mit Progr<strong>am</strong>mabruch.<br />

D<strong>am</strong>it so etwas nicht passiert und <strong>die</strong> Daten <strong>eines</strong> Moduls stets in einem konsistenten<br />

Zustand sind, werden Schloßvariablen benutzt. Diese werden oft als<br />

“Locks”, manchmal auch als “Semaphoren 44 ” oder “Mutexes 45 ” bezeichnet.<br />

Eine Lösung als Monitor, wie in [10] vorgeschlagen, kann hier nicht verwendet<br />

werden. Ein Monitor sichert jeweils nur einen Funktionsaufruf gegen<br />

<strong>die</strong> gleichzeitige Ausführung <strong>eines</strong> anderen ab. Nicht geschützt werden aber<br />

44 Zur Kommunikation auf hoher See benutzte Signale<br />

45 Mutual exclusion<br />

Zeit


5.2 Module <strong>am</strong> Feldbus 43<br />

aufeinanderfolgende Aufrufe, wie sie hier erfolgen (IsEnabled und Read).<br />

Deshalb existieren <strong>die</strong> Funktionen Lock und UnLock. Vor dem Zugriff auf<br />

<strong>die</strong> Routinen <strong>eines</strong> Moduls muß stets der Zugriff auf das Modul mit einem<br />

Schloß verschlossen werden (Lock), und nachdem alle Aufgaben erledigt wurden,<br />

wird das Schloß wieder geöffnet (Unlock). Der obige Progr<strong>am</strong>mablauf<br />

sieht dann aus wie in Abb. 14. Falls eine Schloßvariable bereits von einem<br />

Thread benutzt wird, so wird der andere angehalten, wenn er versucht, das<br />

Schloß zu schließen. Er darf erst dann das Schloß verschließen, wenn das<br />

Schloß von dem anderen Thread geöffnet wurde. Die Implementation der<br />

Locks geschieht mit den im Pthread-Standard bereitgestellten Funktionen<br />

pthread mutex lock und pthread mutex unlock [12].<br />

5.2.2 Spezialisierung <strong>für</strong> HERA<br />

Das bei HERA benutzte Kontrollsystem ordnete bis zu der erst kürzlich<br />

mit ACOP [3] erschienenen Version jedem Modul <strong>eines</strong> speziellen Typs eine<br />

Nummer, <strong>die</strong> sogenannte “Equipment Number” zu, mit der es identifiziert<br />

wird. Außerdem wurde <strong>für</strong> jedes Modul ein N<strong>am</strong>e vergeben, der <strong>die</strong> Halle,<br />

den Oktanten und Position des Crates, in dem sich das Modul befindet,<br />

angibt. So bezeichnet z. B. der N<strong>am</strong>e WL131 das Modul im Crate Oktant<br />

West links, von der Halle aus gemessen 131 Meter den Tunnel entlang. Der<br />

N<strong>am</strong>e ist nicht eindeutig, da in einem Crate durchaus mehrere Module des<br />

gleichen Typs sein können.<br />

Die Klasse CHERABoard ist abgeleitet von BusBoard, enthält also alle in<br />

CBusBoard beschriebenen Funktionen. Erweitert wird <strong>die</strong> Basisklasse durch<br />

<strong>die</strong> Aufnahme der Identifikationsnummer und den N<strong>am</strong>en des Moduls. Die<br />

Routine Print ruft <strong>die</strong> Ausgabe der Basisklasse auf und gibt zusätzlich <strong>die</strong><br />

Crateposition des Moduls aus.<br />

Die neue Version des <strong>Kontrollsystems</strong> benutzt nur noch Identifikationsn<strong>am</strong>en<br />

wie z. B. “PPD/WL131-1X”. Da aber viele Client-Anwendungen, darunter<br />

auch alle, <strong>die</strong> auf das Strahllage-Kontrollsystem zugreifen, noch mit<br />

Nummern arbeiten, wurde <strong>die</strong> jetzige Implementierung mit Nummern beibehalten.<br />

Für zukünftige Versionen können <strong>die</strong> in CHERABoard enthaltenen<br />

Crate-Positionen jedoch durch eindeutige Zeichenketten ersetzt werden und<br />

so zusätzlich <strong>die</strong> neuen Fähigkeiten von ACOP verwendet werden.<br />

5.2.3 Abstraktion von Registerzugriffen<br />

Die Klassen CAlarm, CBLM, CBLMPickup, CDelay, CMTM, CPPD und CPMST sind<br />

alle von CHERABoard abgeleitet. Diese Klassen definieren Routinen, <strong>die</strong> von<br />

dem speziellen Hardwarezugriff abstrahieren. Die nach außen zur Verfügung


44 5 DAS KLASSENKONZEPT<br />

CPU<br />

Thread 1 Thread 2<br />

Client-Aufruf Datennahme<br />

Lock -> WARTEN<br />

Disable! -> OK<br />

UnLock -> OK<br />

Lock -> OK<br />

IsEnabled? -> JA!<br />

Read -> OK<br />

UnLock -> OK<br />

Abbildung 14: Durch Schloßvariablen abgesicherte Zugriffe<br />

Zeit


5.2 Module <strong>am</strong> Feldbus 45<br />

gestellten Routinen repräsentieren Funktionen des Moduls. So exisitiert z. B.<br />

<strong>die</strong> Routine CAlarm::ResetFreeze, <strong>die</strong> das Einfrieren der Daten der Strahllageund<br />

Verlustmonitore aufhebt, oder <strong>die</strong> Routine CBLM::SetLimit, <strong>die</strong> <strong>die</strong><br />

Schwelle <strong>für</strong> das Erzeugen <strong>eines</strong> Alarms bei zu hohem Strahlverlust setzt, oder<br />

CPMST::InsertGap, <strong>die</strong> <strong>die</strong> vom HIT-System gesendete Triggerkette <strong>für</strong> <strong>die</strong><br />

Synchronisierung der PPD-Module kurz unterbricht, oder auch CDelay::ReadDelay,<br />

<strong>die</strong> den momentan gesetzten Wert <strong>eines</strong> Delays aus dem Delay-Modul ausliest.<br />

Beim Aufruf braucht man nicht in Erinnerung zu haben, daß z. B. im<br />

Falle von CAlarm::ResetFreeze das Register 1 mit dem Wert 255 beschrieben<br />

werden muß.<br />

Die N<strong>am</strong>en der Routinen beginnen mit Set, wenn ein Schreibbefehl an das<br />

Modul gesendet wird, und mit Read, wenn ein Wert aus dem Modul ausgelesen<br />

wird. Es werden keine Daten zwischengespeichert, so daß bei zwei<br />

aufeinanderfolgenden Read- oder Set-Aufrufen immer wieder auf den Bus<br />

zugegriffen wird.<br />

Auf <strong>die</strong>se Art und Weise wird <strong>die</strong> Funktionsweise des Moduls durch <strong>die</strong> Funktionen<br />

der Klasse repräsentiert, <strong>die</strong> Kenntnis der Registerzugriffe ist <strong>für</strong> eine<br />

Benutzung der Klasse nicht mehr notwendig.<br />

5.2.4 Spezialisierung zur Datennahme<br />

In einer weiteren Abstraktionsebene werden weitere, speziell <strong>für</strong> <strong>die</strong> Datennahme<br />

geeignete Funktionen hinzugefügt. Dazu werden <strong>die</strong> in der ersten Abstraktionsstufe<br />

geschaffenen Read- und Set-Routinen erweitert, so daß gelesene<br />

bzw. geschriebene Daten im Arbeitsspeicher des Computer zwischengespeichert<br />

werden. Das ist sinnvoll, da dadurch viele Buszugriffe vermieden<br />

werden können. D<strong>am</strong>it <strong>die</strong>ses Konzept vollständig wird, wird zu jeder der<br />

vorhanden Read-Routinen noch eine Get-Routine entworfen. Die Routinen<br />

Read, Set und Get arbeiten Hand in Hand. Mit der Routine Read werden<br />

<strong>die</strong> Daten aus der Hardware ausgelesen und im Arbeitsspeicher niedergelegt.<br />

Die Routine Set sendet <strong>die</strong> Daten zur Hardware und legt eine Kopie der<br />

gesendeten Daten im Arbeitsspeicher ab. Auf <strong>die</strong>se Art und Weise sind <strong>die</strong><br />

aktuellen Daten stets im Arbeitsspeicher des Computers verfügbar. Mit der<br />

Routine Get können sie aus dem Arbeitsspeicher ausgelesen werden, ohne<br />

daß dazu ein Buszugriff nötig wäre. Das ist besonders <strong>für</strong> das im Abschnitt<br />

4.1 zur Steigerung der Geschwindigkeit Gesagte wichtig.<br />

Der Server wird nämlich in einer Schleife stets Read-Routinen aufrufen, um<br />

<strong>die</strong> Module auszulesen und <strong>die</strong> Daten im Arbeitsspeicher zur Verfügung zu<br />

stellen. Die Clients rufen dann nur noch Get-Routinen auf, <strong>die</strong> nicht mehr<br />

auf <strong>die</strong> Hardware zugreifen.


46 5 DAS KLASSENKONZEPT<br />

5.3 Gruppenverwaltung<br />

Die bisher geschaffenen Klassen repräsentieren stets ein Modul. Von jedem<br />

der oben angesprochenen Module existiert aber nicht nur ein einziges Exemplar,<br />

sondern stets eine ganze Gruppe. Oft muß <strong>für</strong> alle Module eine Aufgabe<br />

wiederholt durchgeführt werden, so z. B. bei der Initalisierung, beim Starten<br />

bzw. Stoppen der Datennahme, beim Setzen <strong>eines</strong> neuen Modus etc.<br />

Die Klasse CGroup ist Basisklasse <strong>für</strong> alle verwendeten Gruppenklassen. Sie<br />

definiert allgemeine Funktionen, <strong>die</strong> <strong>für</strong> <strong>die</strong> Verwendung von Feldbusmodulen<br />

typisch sind. Die Klasse soll verschiedene Modultypen aufnehmen und muß<br />

deshalb als Template entworfen werden [13].<br />

Aufgrund einer Inkompatibilität zwischen dem Compiler und Linker, <strong>die</strong><br />

<strong>für</strong> das Betriebssystem VxWorks mitgeliert wurden, konnten <strong>die</strong> im ANSI-<br />

Standard [2] enthaltenen Templates nicht verwendet werden. Deshalb wurde<br />

eine <strong>für</strong> alle C++-Compiler anwendbare Methode entwickelt, <strong>die</strong> mit Hilfe<br />

des C++-Präprozessors Templates erzeugen kann. Die Instantiierung der<br />

Templates muß aber dann im Quelltext explizit erfolgen. So erzeugt z. B. der<br />

der Datei ClassPPDGroup.hpp entnommene Quelltextauszug<br />

// start with a clean state<br />

#undef CGroup<br />

#undef T<br />

#undef Max<br />

// now we define manually the template values<br />

#define CGroup CGroupCPPDDAQMAX_NUMBER_PPD<br />

#define T CPPDDAQ<br />

#define Max MAX_NUMBER_PPD<br />

eine Gruppenklasse, <strong>die</strong> eine maximale Anzahl Max = MAX NUMBER PPD Module<br />

des Typs T = CPPDDAQ aufnehmen kann. Die Wirkungsweise <strong>die</strong>ser Zeilen<br />

ist identsich zur Instantiierung der Templates im ANSI-Standard, muß aber<br />

stets vor Einbindung der Klasse CGroup in der oben beschriebenen Weise<br />

erfolgen.<br />

Intern werden <strong>die</strong> Module über ein Array verwaltet, das Zeiger auf <strong>die</strong> einzelnen<br />

Module enthält. Die Routinen ReadInfo, ReadSpecific und ClearInfo<br />

<strong>die</strong>nen zur Schaffung der einzelnen Module, <strong>die</strong> in der Klasse enthalten sind.<br />

Die Routine ClearInfo löscht alle vorhanden Module aus der Klasse heraus,<br />

so daß <strong>die</strong> mit ReadInfo anschließend eine Initialisierungsdatei eingelesen<br />

werden kann, <strong>die</strong> Informationen über <strong>die</strong> Module enthält. Das Format <strong>die</strong>ser<br />

Datei ist konform zum DESY-Standard ein CSV-Format. Die Dateien können<br />

deshalb einfach und mit DESY-üblichen Mitteln verändert werden. Jede Zeile


5.3 Gruppenverwaltung 47<br />

in <strong>die</strong>ser Datei beschreibt ein einzelnes Modul. Der erste Wert in jeder Zeile<br />

entspricht der Nummer, mit der das Modul über RPC angesprochen wird.<br />

Der zweite Wert bestimmt, über welchen Bus das Modul angesprochen wird<br />

(Bus 0 oder 1). Der dritte Wert ist <strong>die</strong> Busadresse, der vierte <strong>die</strong> Position<br />

des Crates, in dem das Modul untergebracht ist. Nach <strong>die</strong>sen Informationen,<br />

<strong>die</strong> <strong>für</strong> alle Feldbus-Module gleich sind, können in der Datei modulspezifische<br />

Informationen folgen. Nach dem Einlesen der Standard-Informationen<br />

wird <strong>die</strong> Routine ReadSpecific aufgerufen, <strong>die</strong> von den abgeleiteten Klassen<br />

überschrieben wird und <strong>die</strong> modulspezifischen Informationen ausliest. Sie erzeugt<br />

anschließend <strong>die</strong> Module, <strong>die</strong> dann in dem internen Array gespeichert<br />

werden.<br />

Nachdem <strong>die</strong> Initialisierungsdatei gelesen wurde, kann mit Hilfe von Connect<br />

<strong>die</strong> Software an den Status der Module angepaßt werden. Ist <strong>die</strong>s nicht<br />

möglich, so sorgt Connect da<strong>für</strong>, daß <strong>die</strong> Module in einen definierten Status<br />

gesetzt werden. Intern geschieht <strong>die</strong>s durch einen Aufruf der in der Klasse<br />

CBusBoard definierten Routinen Connect und Reset.<br />

Wenn <strong>die</strong> Initialisierung erfolgreich durchgeführt wurde, kann <strong>die</strong> Datennahme<br />

mit StartDAQ begonnen bzw. mit StopDAQ beendet werden. Die Datennahme<br />

selbst geschieht in der Routine DAQTask, <strong>die</strong> durch <strong>die</strong> abgeleiteten<br />

Klassen überschrieben und <strong>für</strong> <strong>die</strong> jeweiligen Module angepaßt wird.<br />

D<strong>am</strong>it <strong>die</strong> Clients mit Hilfe der RPC-Aufrufe auch einzelne Module ansprechen<br />

können, existiert der operator[]. Er übergibt an <strong>die</strong> aufrufende Routine<br />

einen Zeiger auf das gewünschte Modul, so daß <strong>die</strong>se das Modul direkt<br />

ansprechen kann.<br />

Dabei muß wegen der in Abb. 13 dargestellten und in Abschnitt 5.2.1 beschriebenen<br />

Problematik eine Schloßvariable benutzt werden. Dies geschieht<br />

mit Hilfe der Routinen ModuleThere und LeaveModule. Vor einem Zugriff<br />

auf ein Modul wird mit ModuleThere überprüft, ob das verlangte Modul<br />

tatsächlich von <strong>die</strong>sem Server aus erreichbar ist (Es könnte ja von einem der<br />

drei anderen Server verwaltet werden). Ist das Modul angeschlossen, wird<br />

<strong>die</strong> Schloßvariable verschlossen und dem Aufrufer mitgeteilt, daß das Modul<br />

da ist. Nach beendigtem Zugriff muß <strong>die</strong> Routine LeaveModule aufgerufen<br />

werden, <strong>die</strong> <strong>die</strong> Schloßvariable wieder öffnet.<br />

Von der Basisklasse CGroup werden <strong>die</strong> Gruppenklassen CALMGroup <strong>für</strong> <strong>die</strong><br />

Alarm-Module, CBLMGroup <strong>für</strong> <strong>die</strong> Verlustmonitore, CDLYGroup <strong>für</strong> <strong>die</strong> Delay-<br />

Module, CMTMGroup <strong>für</strong> <strong>die</strong> Lagemonitor-Trigger-Module und CPPDGroup <strong>für</strong><br />

<strong>die</strong> Lagemonitore abgeleitet. Da nur ein PMST-Modul existiert, ist keine<br />

Gruppe <strong>für</strong> <strong>die</strong>ses Modul nötig.<br />

Die abgeleiteten Klassen erweitern <strong>die</strong> Funktionen der Klasse CGroup in der<br />

<strong>für</strong> das jeweilige Modul nötigen Art und Weise.


48 6 DATENNAHME<br />

5.4 Kommunikation mit den Clients<br />

Ideal wäre es, wenn <strong>die</strong> Kommunikation mit den Clients über eine Funktion<br />

geschehen könnte, <strong>die</strong> in der Klasse CGroup enthalten ist. Leider sieht <strong>die</strong><br />

neueste Version des ACOP-Systems eine solche Möglichkeit nicht vor [4], so<br />

daß Funktionen geschaffen werden mußten, <strong>die</strong> außerhalb des Klassensystems<br />

liegen. Diese greifen aber immer auf <strong>die</strong> in der Klasse deklarierten Funktionen<br />

zurück, so daß es sich um ein eher nebensächliches Problem handelt. Die<br />

Routinen rpc alm, rpc blm, rpc dly, rpc mtm und rpc ppd bilden das zum<br />

HERA-Kontrollsystem kompatible Interface.<br />

Die Dokumentation <strong>die</strong>ses Interface geschah besonders ausführlich, da es <strong>für</strong><br />

ein korrektes Zus<strong>am</strong>menspiel von Clients und Servern von entscheidender Bedeutung<br />

ist. Jede über RPC aufrufbare Funktion wurde im Quelltext der oben<br />

genannten Funktionen mit einer genauen Beschreibung ihrer Wirkungsweise<br />

sowie ihrer Ein- und Ausgabepar<strong>am</strong>eter versehen. Die Funktionen sind — bis<br />

auf kleinere Abweichungen — mit dem jetzigen Interface [30, 5] des zur Zeit<br />

noch verwendeten <strong>Kontrollsystems</strong> identisch. Da manche <strong>die</strong>ser Funktionen<br />

nur noch historische Bedeutung haben, werden in dem neuen Kontrollsystem<br />

nicht alle Funktionen des alten Systems unterstützt.<br />

6 Datennahme<br />

In den folgenden Abschnitten werden <strong>die</strong> von dem Kontrollsystem in den verschiedenen<br />

Betriebsmodi von HERA bereitgestellten Datennahmefunktionen<br />

erläutert.<br />

6.1 Das Lagekontrollsystem<br />

Die Aufgabe der <strong>Strahllagemessung</strong> untergliedert sich in mehrere verschiedene<br />

Unteraufgaben, <strong>die</strong> von der HERA-Betriebsart abhängig sind. Die Überwachung<br />

und Steuerung von Injektion und Speicherbetrieb erfordert unterschiedliche<br />

Daten, <strong>die</strong> aus den Modulen ausgelesen und vom Kontrollsystem<br />

zur Verfügung gestellt werden müssen.<br />

6.1.1 Injektionsbetrieb<br />

Bei der Protoninjektion kommt es vor allem darauf an, den zu injizierenden<br />

Strahl möglichst genau auf seine Sollbahn, den Orbit, zu bringen. Deshalb<br />

ist der Verlauf der Strahlablage besonders während der ersten Umläufe im<br />

Protonring interessant. Das hier entwickelte System bietet <strong>für</strong> den Injektionsbetrieb<br />

zwei verschiedene Arten der Datennahme.


6.1 Das Lagekontrollsystem 49<br />

Im “Injection-Modus” werden nach erfolgter Injektion von jedem Monitor <strong>die</strong><br />

ersten 1024 aufeinanderfolgenden Umläufe aufgenommen. Das erlaubt eine<br />

genaue Verfolgung der Strahllage und eine Analyse des zeitlichen Verhaltens.<br />

Ein Ablaufschema des Datennahmezyklus ist in Abb. 15 dargestellt. Der<br />

Client setzt den Server mit Hilfe <strong>eines</strong> Prozedurfernaufrufs (RPC) in den<br />

Injektionsmodus. Dabei wird eine eventuell noch laufende Datennahme gestoppt.<br />

Anschließend wird <strong>die</strong> Triggerkette mit Hilfe des PMST-Moduls gestoppt.<br />

D<strong>am</strong>it wird verhindert, daß während des anschließenden Zugriffs auf<br />

<strong>die</strong> PPD-Module <strong>die</strong>se unsynchronisiert anlaufen. Nachdem der Modus, mit<br />

dem der 1024 Umläufe fassende Post-Mortem-Speicher beschrieben wird, in<br />

allen PPD-Modulen gesetzt worden ist, wird das PMST-Modul in den getriggerten<br />

Mode gesetzt, so daß es mit Beginn der Injektion von PETRA<br />

nach HERA 1024 aufeinanderfolgende Triggerpulse durchläßt. Anschließend<br />

wird <strong>die</strong> Datennahme gestartet und dem Clienten mitgeteilt, daß der Modus<br />

erfolgreich gesetzt wurde.<br />

Nach erfolgter Injektion dauert es etwa 22 ms, bis der SID-Zähler in den<br />

PPD-Modulen den Stand von 1024 Umläufen anzeigt. Der Zählerstand wird,<br />

d<strong>am</strong>it <strong>die</strong> Anzahl der Buszugriffe gering bleibt, nur von dem Thread <strong>für</strong><br />

Bus 0 abgefragt. Dies geschieht periodisch in 17 ms-Intervallen 46 . Die Bedingung,<br />

daß <strong>die</strong> Datennahme beginnen kann, wird dem wartenden Thread <strong>für</strong><br />

Bus 1 mitgeteilt. Daraufhin fangen beide an, ihre Daten über den Feldbus<br />

einzus<strong>am</strong>meln.<br />

Währenddessen wird der Client in periodischen Intervallen über RPC-Aufrufe<br />

herauszufinden versuchen, ob <strong>die</strong> Daten bereits ausgelesen worden sind.<br />

Wurden alle PPD-Module ausgelesen, synchronisieren sich <strong>die</strong> DAQ-Threads<br />

untereinander, bevor sie <strong>die</strong> Beendigung ihrer Auslesetätigkeit über das Setzen<br />

<strong>eines</strong> Flags bekanntgeben. Die Synchronisation ist notwendig, d<strong>am</strong>it nicht<br />

frühzeitig von einem Thread <strong>die</strong> Beendigung der Datenauslese angezeigt wird,<br />

bevor der andere tatsächlich fertig ist.<br />

Jetzt wird dem Clienten, der ständig über RPC <strong>die</strong> Verfügbarkeit der Daten<br />

prüft, <strong>die</strong> erfolgte Datennahme angezeigt. Der holt daraufhin seine Daten ab,<br />

wobei noch einmal sichergestellt wird, daß tatsächlich neue Daten vorhanden<br />

sind.<br />

Die übertragene Datenmenge ist in <strong>die</strong>ser Betriebsart jedoch sehr groß, da<br />

von durchschnittlich 17 Monitoren pro Bus 2 Kanäle mit 1024 Werten ausgelesen<br />

werden müssen. Es dauert entsprechend lange, ehe <strong>die</strong> Daten <strong>für</strong> <strong>die</strong><br />

Benutzer im Kontrollraum zur Verfügung stehen. Auch wenn nur zwei bestimmte<br />

Umläufe zum Vergleichen ausgewählt werden (<strong>die</strong>se Möglichkeit ist<br />

in dem Kontrollsystem vorgesehen), müssen aufgrund der technischen Ge-<br />

46 Das ist das kleinste auf der MVME-162-12a einstellbare Intervall.


50 6 DATENNAHME<br />

Client<br />

Set Mode:<br />

Injection Mode<br />

OK<br />

Data ready?<br />

No<br />

Data ready?<br />

No<br />

Data ready?<br />

Yes<br />

Get Data<br />

OK<br />

Server<br />

RPC DAQ Bus 0 DAQ Bus 1<br />

StopDAQ<br />

PMST-Mode:<br />

Stop Trigger<br />

Forall PPD:<br />

Mode: Memory<br />

PMST-Mode:<br />

1024 Trigger<br />

Start DAQ<br />

Check Flag<br />

Check Flag<br />

Check Flag<br />

Check Flag<br />

Send Data<br />

WaitForSID Await condition<br />

= 1024 Got SID?<br />

Set condition<br />

Got SID!<br />

Read complete<br />

memories<br />

Await condition<br />

Bus 1 ready<br />

Set Flag<br />

Data Ready<br />

Read complete<br />

memories<br />

Set condition<br />

Bus 1 ready<br />

HERA<br />

INJEKTION!<br />

Abbildung 15: Ablauf der Datennahme im Injektionsmodus. Gepunktete Linien<br />

stehen <strong>für</strong> räumliche Trennung. Die Progr<strong>am</strong>mausführung geschieht im Server nebenläufig<br />

in drei Threads: RPC und DAQ <strong>für</strong> Bus 0 und Bus 1. Durchgezogene<br />

Linien stehen <strong>für</strong> eine ununterbrochene Progr<strong>am</strong>mausführung. Gestrichelte Linien<br />

bedeuten, daß der Thread auf den Eintritt einer Bedingung wartet. Andere<br />

Threads werden dadurch nicht blockiert und werden vom Betriebssystem weiter<br />

ausgeführt. Sobald <strong>die</strong> Bedingung erfüllt ist, werden <strong>die</strong> wartenden Threads automatisch<br />

vom Betriebssystem fortgesetzt. Die “Schleife” im Zeitablauf bedeutet, daß<br />

<strong>die</strong> Progr<strong>am</strong>mausführung <strong>am</strong> Endpunkt der Schleife wieder aufgenommen werden<br />

kann.<br />

Zeit


6.1 Das Lagekontrollsystem 51<br />

gebenheiten des Strahllagemonitors alle 1024 Werte pro Kanal ausgelesen<br />

werden [31].<br />

Nimmt man als untere Abschätzung <strong>für</strong> <strong>die</strong> Dauer des Auslesevorgangs <strong>die</strong><br />

SEDAC-Maximalgeschwindigkeit als Bustransferrate an 47 , so erhält man den<br />

erschreckenden Wert von mindestens 9 Sekunden!<br />

Deshalb ist in dem hier entwickelten Kontrollsystem ein zweiter Modus, der<br />

sogenannte “Single-Turn-Modus” integriert. Bei <strong>die</strong>sem werden <strong>die</strong> Intensitäts-<br />

und Lagedaten <strong>eines</strong> einzelnen Umlaufs von allen Lagemonitoren ausgelesen,<br />

so daß <strong>die</strong> Daten entsprechend schneller <strong>für</strong> den Client zur Verfügung<br />

stehen. Dies geschieht intern durch <strong>die</strong> Verwendung <strong>eines</strong> anderen Betriebsmodus<br />

des PPD-Moduls. Die Nummer des <strong>für</strong> <strong>die</strong> Datenauslese gewählten<br />

Umlaufs muß aber im PMST-Modul vor der Injektion festgelegt werden, d<strong>am</strong>it<br />

<strong>die</strong> Daten in den Registern des PPD nicht überschrieben werden. Mögliche<br />

Werte <strong>für</strong> den ausgewählten Umlauf liegen im Bereich von der ersten bis<br />

zur 1024ten Umrundung. Da hier nur sechs Werte pro Monitor ausgelesen<br />

werden, ergibt eine untere Abschätzung <strong>für</strong> <strong>die</strong> Dauer der Datennahme etwa<br />

25 ms. Der Ablauf in <strong>die</strong>ser Betriebsart ist in Abb. 16 dargestellt.<br />

6.1.2 Speicherbetrieb<br />

Ist der Protonstrahl gespeichert, soll in regelmäßigen Abständen <strong>die</strong> aktuelle<br />

Abweichung vom Orbit gemessen werden. Im Kontrollsystem existiert deshalb<br />

ein “Orbit-Modus”, der mehrfach pro Sekunde aktuelle Lageinformationen<br />

von allen Lagemonitoren zur Verfügung stellt. Mit deren Hilfe kann<br />

z. B. von einem Client der Orbit korrigiert werden. Andererseits bieten <strong>die</strong><br />

Daten auch <strong>die</strong> Möglichkeit, sogenannte “Orbitbeulen” zu überwachen. Eine<br />

“Orbitbeule” entsteht, wenn <strong>die</strong> Protonen mit Hilfe von mehreren Korrekturspulen<br />

absichtlich von ihrer Sollbahn abgelenkt und anschließend wieder<br />

auf <strong>die</strong> Sollbahn zurückgelenkt werden. Je nach Anzahl der zur Ablenkung<br />

verwendeten Magnete entstehen dabei auf der ursprünglichen Protonbahn<br />

ein oder mehrere Buckel, <strong>die</strong> der Orbitbeule ihren N<strong>am</strong>en geben.<br />

Daneben existieren <strong>für</strong> spezielle Messungen und zur Berechnung des Q-Wertes<br />

zwei weitere Betriebsmodi des Lagekontrollsystems. Sie werden mit “Q-<br />

Modus” bzw. “Small-Q-Modus” bezeichnet. Im Q-Modus werden — ähnlich<br />

wie im “Injection-Modus” — 1024 aufeinanderfolgende Umläufe von allen<br />

Lagemonitoren aufgenommen und ausgelesen. Der Unterschied zwischen Q-<br />

Modus und Injection-Modus besteht lediglich im Start der Triggerkette. Der<br />

geschieht im Q-Modus nicht über eine Proton-Injektion, sondern wird vom<br />

Kontrollsystem selber ausgelöst. Wegen <strong>die</strong>ses minimalen Unterschiedes wur-<br />

47 Meßergebnisse befinden sich in Kapitel 7.


52 6 DATENNAHME<br />

Client Server<br />

Set Turn "n"<br />

OK<br />

Set Mode:<br />

Single Turn Mode<br />

OK<br />

Data ready?<br />

No<br />

Data ready?<br />

No<br />

Data ready?<br />

Yes<br />

Get Data<br />

OK<br />

RPC DAQ Bus 0 DAQ Bus 1<br />

Store Turn "n"<br />

StopDAQ<br />

PMST-Mode:<br />

Stop Trigger<br />

Forall PPD:<br />

Mode: Turn<br />

PMST-Mode:<br />

"n" Trigger<br />

Start DAQ<br />

Check Flag<br />

Check Flag<br />

Check Flag<br />

Check Flag<br />

Send Data<br />

WaitForSID<br />

= "n"<br />

Set condition<br />

Got SID!<br />

Read<br />

6 Registers<br />

Await condition<br />

Bus 1 ready<br />

Set Flag<br />

Data Ready<br />

Await condition<br />

Got SID?<br />

Read<br />

6 Registers<br />

Set condition<br />

Bus 1 ready<br />

HERA<br />

INJEKTION!<br />

Abbildung 16: Ablauf der Datennahme im Single-Turn-Modus. Eine Erklärung<br />

der verwendeten Symbolik findet sich bei Abb. 15<br />

Zeit


6.1 Das Lagekontrollsystem 53<br />

de auf ein eigenes Ablaufdiagr<strong>am</strong>m verzichtet. In Abb. 15 entfällt <strong>die</strong> Injektion,<br />

und bevor der Thread <strong>für</strong> Bus 0 auf den konstanten Wert des SID-Zählers<br />

wartet, sendet er einen Befehl an das PMST-Modul, der <strong>die</strong> Triggerkette startet.<br />

Da <strong>die</strong> gleiche Anzahl von Daten ausgelesen wird, lautet auch hier <strong>die</strong><br />

Abschätzung <strong>für</strong> <strong>die</strong> Dauer der Datennahme: Mindestens 9 Sekunden.<br />

Für spezielle Messungen existiert ein weiterer Modus, der Small-Q-Modus.<br />

Dabei werden nicht aufeinanderfolgende Positionen abgespeichert, sondern<br />

Mittelwerte über <strong>die</strong> letzten 128 Positionen. Insges<strong>am</strong>t können 256 Mittelwerte<br />

abgespeichert werden, so daß insges<strong>am</strong>t Daten über eine Vergangenheit<br />

von 32768 Umläufen vorhanden sind.<br />

Die Datennahme unterscheidet sich hier nicht wesentlich von der des Q-<br />

Modus. Es wird im PMST-Modul eine Anzahl von 128·256 Triggern statt<br />

bisher 1024 eingestellt. Entsprechend länger wird auch auf den konstant bleibenden<br />

Wert des SID-Zählers gewartet (etwa 0.7 s).<br />

Die DAQ-Threads lesen im Small-Q-Modus einen anderen, kleineren Speicher<br />

als im Q-Modus aus (vgl. Abb. 6. Entsprechend kürzer ist <strong>die</strong> Abschätzung<br />

<strong>für</strong> <strong>die</strong> Dauer der Datennahme: Etwa zweieinhalb Sekunden.<br />

Der Ablauf der Datennahme im “Orbit-Modus” ist in Abb. 17 wiedergegeben.<br />

Er ist grundsätzlich verschieden von dem Ablauf der bisherigen Modi, da<br />

er als einziger kein getriggerter Modus ist. Das PMST-Modul wird durch den<br />

RPC-Aufruf des Client in den kontinuierlichen Modus gesetzt. Ebenso werden<br />

alle PPD-Module in einen internen Betriebsmodus gesetzt, der <strong>für</strong> <strong>die</strong> kontinuierliche<br />

Folge von Triggerpulsen gedacht ist. Das PPD-Modul verhält sich<br />

dabei wie folgt [31]: Nachdem 128 Lagemessungen durchgeführt wurden, wird<br />

ein Mittelwert über <strong>die</strong>se Messungen berechnet und ein Flag in einem Statusregister<br />

gesetzt. Dieses “Data-Ready”-Flag bleibt <strong>für</strong> etwa 36 ms sichtbar<br />

und verschwindet dann. Mit Beginn des Erscheinens <strong>die</strong>ses Flags startet eine<br />

Timeout-Phase, deren Dauer man in Einheiten von 86.5 ms variieren kann,<br />

wobei eine Mindestdauer von 137 ms eingehalten werden muß. Während <strong>die</strong>ser<br />

Timeout-Phase lassen sich der Stand des SID-Zählers, <strong>die</strong> Intensität, <strong>die</strong><br />

Position des letzten Umlaufs und <strong>die</strong> über <strong>die</strong> letzten 128 Umläufe gemittelte<br />

Position aus den Registern des PPD-Moduls auslesen. Nach dem Ende der<br />

Timeout-Phase startet ein neuer Datennahmezyklus. Dieser Ablauf ist im<br />

rechten, mit “PPD” bezeichneten Teil der Abb. 17 gezeigt.<br />

Einer der Gründe <strong>für</strong> <strong>die</strong> Benutzung <strong>eines</strong> echtzeitfähigen Betriebssystems<br />

war <strong>die</strong> kurze Zeitdauer von 36 ms, in der das PPD-Modul den Beginn<br />

der Timeout-Phase anzeigt. Verpaßt nämlich einer der vier Server des Lagekontrollsystem<br />

das Setzen des “Data-Ready”-Flags, so sind dessen Daten<br />

gegenüber den Daten der anderen Server veraltet. Werden dann von einem<br />

Clienten <strong>die</strong> Daten aller Server abgerufen, so müssen alle auf der Synchronität<br />

der Server basierenden Berechnungen falsche Ergebnisse liefern.


54 6 DATENNAHME<br />

Client<br />

Set Mode:<br />

Orbit Mode<br />

OK<br />

Data ready?<br />

No<br />

Data ready?<br />

No<br />

Data ready?<br />

Yes<br />

Get Data<br />

Server<br />

RPC DAQ Bus 0 DAQ Bus 1<br />

StopDAQ<br />

PMST-Mode:<br />

Stop Trigger<br />

Forall PPD:<br />

Mode: Register<br />

PMST-Mode:<br />

Continuous<br />

Start DAQ<br />

Check Data "A"<br />

Exchange Data<br />

"A" "B"<br />

Check Data "A"<br />

Send Data "A" Set condition<br />

OK Got Timeout!<br />

WaitForTimeout Await condition<br />

Got Timeout?<br />

Set condition<br />

Got Timeout!<br />

Read Data "B" Read Data "B"<br />

6 Registers 6 Registers<br />

Await condition<br />

Bus 1 ready<br />

Check Data "A"<br />

Set Flag<br />

Data "A" Ready<br />

Check Data "A"<br />

WaitForTimeout<br />

Set condition<br />

Bus 1 ready<br />

Await condition<br />

Got Timeout?<br />

PPD<br />

Abbildung 17: Ablauf der Datennahme im Orbit-Modus. Eine Erklärung der Symbolik<br />

findet sich in Abb. 15<br />

Timeout<br />

Take Data<br />

Take Data<br />

Flag!<br />

Flag!<br />

Zeit


6.2 Das Verlustkontrollsystem 55<br />

D<strong>am</strong>it das nicht passiert, wird der Datennahme von den Lagemonitoren gegenüber<br />

der Datennahme von Verlustmonitoren und Alarmmodul eine höhere<br />

Prioriät eingeräumt. Das Betriebssystem garantiert durch seine Echtzeitfähigkeit<br />

<strong>die</strong> Unterbrechung der Datennahme von Verlustmonitoren und<br />

Alarm-Modulen, sobald das Lagesystem das “Data-Ready”-Flag auslesen<br />

will. Dies geschieht, um eine sichere Detektion zu gewährleisten, in 17 ms-<br />

Intervallen. Ein gesetztes “Data-Ready”-Flag (Dauer: 36 ms) sollte somit<br />

mindestens zweimal entdeckt werden. (In [10] wird ein solches Vorgehen empfohlen.)<br />

Da neue Daten etwa viermal pro Sekunde bereitstehen, ist eine Kommunikation<br />

mit dem Client wie bei den getriggerten Modi nicht sinnvoll. Fragt<br />

der Client nämlich zuerst nach, ob neue Daten bereitstehen, und holt sie<br />

erst anschließend ab, so kann der Server in der Zwischenzeit schon mit einer<br />

erneuten Auslese begonnen haben. In <strong>die</strong>sem Fall würde ein inkonsistenter,<br />

aus zwei verschiedenen Umläufen bestehender Datensatz abgeholt werden.<br />

Zur Lösung <strong>die</strong>ses Dilemmas wurden zwei getrennte Speicherbereiche in dem<br />

Server <strong>für</strong> <strong>die</strong> Aufnahme der Datensätze jeweils <strong>eines</strong> Umlaufs bereitgestellt<br />

(Double-Buffering). Der Datensatz “A” ist stets gefüllt mit einem kompletten<br />

Satz von Lageinformationen und kann an den Client übergeben wird, sobald<br />

<strong>die</strong>ser nach neuen Daten verlangt. Der Datensatz “B” wird in der Zwischenzeit<br />

durch <strong>die</strong> beiden DAQ-Threads angefüllt. Nach beendeter Datennahme<br />

existieren zwei vollständige Datensätze. Durch einen Austausch der beiden<br />

Datensätze erhält der Client beim nächsten Aufruf mit dem Datensatz “A”<br />

<strong>die</strong> frisch ges<strong>am</strong>melten Daten, während <strong>die</strong> DAQ-Threads bereits wieder mit<br />

der Datennahme des Datensatzes “B” beschäftigt sind. So ist sichergestellt,<br />

daß der Client stets <strong>die</strong> Daten aus einem zus<strong>am</strong>menhängenden Umlauf erhält.<br />

6.2 Das Verlustkontrollsystem<br />

Durch den gemeins<strong>am</strong>en Anschluß von Verlustmonitoren und Lagemonitoren<br />

<strong>am</strong> gleichen Feldbus wird <strong>die</strong> Situation noch komplizierter gemacht, als<br />

sie schon ist. Die Verlustmonitore von HERA waren nämlich ursprünglich<br />

nicht <strong>für</strong> ein Online-Monitoring gedacht [26], <strong>für</strong> das sie jetzt aber benutzt<br />

werden. Die Verlustmonitore haben nämlich <strong>die</strong> unangenehme Eigenschaft,<br />

daß stets ein kompletter Speicher in einem Schwung ausgelesen werden muß.<br />

Tritt während zweier aufeinanderfolgender Zugriffe eine Pause von mehr als<br />

2.3 ms auf, so sind <strong>die</strong> Daten nicht mehr in der zeitlich richtigen Abfolge,<br />

da sie mit neuen Daten überschrieben werden. Deshalb wird <strong>für</strong> <strong>die</strong> Auslese<br />

von einem solchen Speicher der Bus exklusiv zur Verfügung gestellt.<br />

Bei einer Speichergröße von 128 16-bit-Werten entspricht das bei einer angenommenen<br />

SEDAC-Transferrate <strong>für</strong> 16-bit-Werte von 4 kHz einer Zeit von


56 6 DATENNAHME<br />

mindestens 32 ms. Bedenkt man, daß das Zeitintervall zum Feststellen des<br />

“Data-Ready”-Flags im PPD-Modul 36 ms beträgt, bleibt nach dem Auslesen<br />

<strong>eines</strong> Verlustmonitors nur noch sehr wenig Zeit übrig, bevor es wieder verschwindet.<br />

Während <strong>die</strong>ser Zeit muß <strong>die</strong> Detektion des “Data-Ready”-Flags<br />

geschehen. Deshalb erhält das Lagekontrollsystem <strong>die</strong> höchste Priorität unter<br />

allen Datennahme-Threads.<br />

Strahlverluste werden beim Betrieb von HERA ständig überwacht, hier ist<br />

keine Unterscheidung <strong>für</strong> Injektions- und Speicherbetrieb nötig. Wegen der<br />

Energieabhängigkeit der maximalen Verlustraten ist aber eine Steuerung des<br />

Systems entsprechend der aktuellen HERA-Energie wichtig. Während der<br />

Proton-Injektion bei 40 GeV dürfen höhere Verlustraten gemessen werden<br />

als bei der endgültigen Energie von 820 GeV. Deshalb werden <strong>die</strong> Alarmschwellen<br />

der Strahlverlustmonitore ständig nachgeregelt.<br />

Wie <strong>die</strong>s geschieht, ist in Abb. 18 gezeigt. Der Server wartet auf einen Broadcast<br />

des HERA-<strong>Kontrollsystems</strong> über Ethernet. Trifft ein solcher Broadcast<br />

ein, so wird zunächst überprüft, ob es sich um einen Broadcast der HERA-<br />

Energie handelt. Ist das der Fall, so wird <strong>für</strong> alle BLM-Module eine Routine<br />

aufgerufen, <strong>die</strong> <strong>die</strong> Alarmschwellen an <strong>die</strong> aktuelle HERA-Energie anpaßt.<br />

Diese Routine berechnet das der neuen Energie entsprechende Limit.<br />

Nur wenn <strong>die</strong>ses von dem zur Zeit gesetzten abweicht, wird <strong>die</strong> Hardware<br />

angesprochen. Dieses Vorgehen entlastet den Feldbus von der Übertragung<br />

unnötiger Daten und sorgt so <strong>für</strong> eine größere Schnelligkeit bei der Datennahme<br />

von Lage- und Verlustmonitoren.<br />

Die Verlustdaten werden von zwei DAQ-Threads ständig ausgelesen. Dabei<br />

läßt sich von den Clients einstellen, ob jeweils der Speicher mit Mittelwerten<br />

oder der Speicher mit Einzeldaten ausgelesen werden soll. Der Grund <strong>für</strong> <strong>die</strong><br />

Auslese nur <strong>eines</strong> Speichers ist <strong>die</strong> Dauer des Auslesevorgangs. Würden beide<br />

ausgelesen, wäre <strong>die</strong> Aktualisierungsrate der Anzeige im Beschleunigerkontrollraum<br />

halbiert. Da schon <strong>die</strong> Auslese nur <strong>eines</strong> Speichers bei 40 Modulen<br />

pro Bus mindestens 1.3 Sekunden dauert, wäre eine Verdoppelung <strong>die</strong>ser Zeit<br />

<strong>für</strong> <strong>die</strong> Benutzer im Kontrollraum unangenehm, vor allem da <strong>die</strong> Daten beider<br />

Speicher zum Online-Monitoring nicht nötig sind. Standardmäßig wird<br />

von allen Strahlverlustmonitoren der Einzeldatenspeicher ausgelesen.<br />

6.3 Alarme, Archivierung<br />

Neben der ständigen Datennahme von Lage- und Verlustmonitoren gibt es<br />

ein drittes Paar von Threads, <strong>die</strong> während der ges<strong>am</strong>ten Strahlzeit von HE-<br />

RA Daten nehmen. Das Auslesen der Alarm-Module und <strong>die</strong> Anzeige der<br />

von den Lage- und Verlustmonitoren ausgelösten Alarme können dazu benutzt<br />

werden, Probleme in der Steuerung des Beschleunigers zu erkennen und


6.3 Alarme, Archivierung 57<br />

HERA<br />

Broadcast<br />

current energy<br />

wait for<br />

broadcast<br />

Is Energy<br />

Broadcast?<br />

forall BLM:<br />

Adjust Limits<br />

NO<br />

compute new<br />

limit value<br />

SERVER<br />

YES NO<br />

new limit<br />

!= old limit?<br />

YES<br />

set new<br />

limit value<br />

Abbildung 18: Darstellung des Algorithmus <strong>für</strong> <strong>die</strong> automatische Anpassung der<br />

Alarmschwellen an <strong>die</strong> HERA-Energie. Eckige Boxen kennzeichnen auszuführende<br />

Funktionen, Abgerundete Boxen stellen eine Progr<strong>am</strong>mverzweigung aufgrund einer<br />

Bedingung dar. Der Progr<strong>am</strong>mfluß erfolgt in der Richtung der eingezeichneten<br />

Pfeile.<br />

rechtzeitig vor einem Strahldump Gegenmaßnahmen zu ergreifen.<br />

Eine weitere Aufgabe der DAQ-Threads ist es, einen erfolgten Strahldump<br />

festzustellen und eine Archivierung der Daten der Verlustmonitore auszulösen.<br />

Dazu werden <strong>die</strong> Status-Register der Alarm-Module ausgelesen und untersucht,<br />

ob ein “Freeze”, ein Einfrieren der Daten von Lage- und Verlustmonitoren,<br />

eingetreten ist. Dies ist nur dann der Fall, wenn ein Strahldump eingetreten<br />

ist. Wird eine gewisse Anzahl von Alarm-Modulen, <strong>die</strong> einen Freeze signalisieren,<br />

festgestellt, so wird <strong>die</strong>s durch das Setzen <strong>eines</strong> “Freeze”-Flags im<br />

Kontrollsystem signalisiert. Die Anzahl von Modulen, bei der <strong>die</strong>s geschieht,<br />

kann in der zentralen Steuerdatei global.hpp beliebig festgelegt werden.<br />

Das Setzen des Freeze-Flags wird von den DAQ-Threads der Verlustmonitore<br />

nach dem Auslesen <strong>eines</strong> jeden Monitors überprüft. Ist das “Freeze”-Flag gesetzt,<br />

dann werden alle aktuellen Verlustdaten sowohl aus dem Kurzzeitspeicher<br />

als auch aus dem Langzeitspeicher ausgelesen und anschließend von dem<br />

Kontrollsystem in einer Datei abgespeichert. Das Dateiformat entspricht dem<br />

<strong>am</strong> DESY üblichen Format <strong>für</strong> “event-driven archiving”. Deshalb können <strong>die</strong><br />

auf <strong>die</strong>se Weise gespeicherten Daten mit den <strong>am</strong> DESY vorhandenen Mitteln<br />

ohne weitere Probleme analysiert werden.


58 7 TESTS<br />

7 Tests<br />

In Abb. 19 ist das Crate abgebildet, das vom DESY <strong>für</strong> Tests in Aachen<br />

zur Verfügung gestellt wurde. Ganz links befindet sich der SEDAC-Crate-<br />

Controller, rechts daneben ein BLM-Modul mit einem <strong>am</strong> obersten Anschluß<br />

angeschlossenen Verlustmonitor, der oben auf dem Crate liegt. Dann folgen<br />

(nach rechts) das Monitor-Trigger-Modul, das Delay-Modul und das PPD-<br />

Modul. In dem Spalt zwischen Delay- und PPD-Modul ist normalerweise das<br />

PPA-Modul untergebracht, das <strong>für</strong> einen Versuchsaufbau in Aachen jedoch<br />

nicht notwendig war. Alle <strong>für</strong> das Lagekontrollsystem relevanten Funktionen<br />

werden nämlich vom PPD-Modul gesteuert. Ganz rechts im Crate befindet<br />

sich das Alarm-Modul.<br />

7.1 Messung der Busgeschwindigkeit<br />

Eine wesentliche Anforderung an das Kontrollsystem war, <strong>die</strong> theoretisch<br />

maximale SEDAC-Übertragungsrate von 4 kHz <strong>für</strong> <strong>die</strong> Datennahme so weit<br />

wie möglich auszunutzen. Um festzustellen, welche Übertragungsrate von<br />

dem Kontrollsystem erreicht wird, wurden mehrere Messungen durchgeführt.<br />

Für <strong>die</strong> Messung der Übertragungsrate auf einer SEDAC-Leitung wurde das<br />

Testprogr<strong>am</strong>m (test register) entwickelt. In Tabelle 2 sind <strong>die</strong> Meßergebnisse<br />

<strong>für</strong> <strong>die</strong> in dem hier entwickelten Kontrollsystem verwendete SEDAC-<br />

Busklasse CSedacIPIO zus<strong>am</strong>mengefaßt.<br />

Meßort Nur Lesen Nur Schreiben Lesen & Schreiben<br />

Aachen 4395.6 ± 1.6 Hz 4394.0 ± 1.6 Hz 4394.8 ± 1.6 Hz<br />

DESY — — 4381.2 ± 1.6 Hz<br />

Tabelle 2: Maximale SEDAC-Übertragungsraten (1 Busleitung)<br />

Der angegebene Fehler ist durch <strong>die</strong> Zeitauflösung des MVME-162-12a gegeben.<br />

Ein weiterer, aber nicht berücksichtigter Fehler ist <strong>die</strong> Ausführungsdauer<br />

<strong>für</strong> den Progr<strong>am</strong>mcode zwischen den Schreib- und Lesebefehlen. Dieser<br />

Fehler ist jedoch vernachlässigbar.<br />

Die Meßergebnisse sind nach Art des Zugriffs (Lesen, Schreiben und gemischter<br />

Zugriff Lesen:Schreiben im Verhältnis 1:1) geordnet. Bei der Interpretation<br />

der Meßergebnisse fällt als erstes auf, daß <strong>die</strong> in [19, 21] genannte maximale<br />

Datenrate von 4 kHz um fast 10 % überschritten wird. Andererseits<br />

sind <strong>die</strong> Daten untereinander konsistent, denn <strong>die</strong> Geschwindigkeit <strong>für</strong> gleichzeitiges<br />

Lesen und Schreiben liegt genau zwischen denen <strong>für</strong> nur Lesen und<br />

nur Schreiben.


7.1 Messung der Busgeschwindigkeit 59<br />

Abbildung 19: Das vom DESY zur Verfügung gestellte Testsystem in Aachen


60 7 TESTS<br />

Die Erklärung ist, daß der SEDAC-Standard <strong>die</strong> Datenübertragung mit der<br />

Frequenz von 4 kHz bei der Verwendung von Standard-50 Ω-Kabeln (RG 213)<br />

über einen Kilometer Entfernung garantiert, in der Testanordnung jedoch nur<br />

ungefähr zwei Meter Übertragungsweg vorlagen.<br />

Um <strong>die</strong>se zunächst nur hypothetische Annahme zu überprüfen, wurde im<br />

Rahmen <strong>die</strong>ser Diplomarbeit <strong>am</strong> DESY ein Test vorgenommen. Leider konnte<br />

kein Kabel von 1 km Länge an das Testsystem angeschlossen werden, so<br />

daß ein anderer Weg begangen werden mußte. Dazu wurde eine vorhandene<br />

SEDAC-Leitung vom Kontrollraum zu den Modulen in der Halle West in<br />

einer Anordnung, wie sie der in Abb. 11 auf der linken Seite entspricht, benutzt.<br />

Die Länge des Übertragungsweges vom Kontrollraum zur Halle ist unbekannt,<br />

ebenso wie <strong>die</strong> Übertragungsgeschwindigkeit. Einen Teil der Strecke<br />

vom Kontrollraum bis zur Halle West legen <strong>die</strong> Daten nämlich auch über<br />

Lichtwellenleiter zurück. Die Meßidee liegt nun darin, den Laufzeitunterschied<br />

zwischen dem ersten Crate-Controller (der sich bei 93 m befindet)<br />

bis zu dem letzten Crate-Controller (bei 718 m) zu messen. Bei der Messung<br />

des Laufzeitunterschiedes heben sich <strong>die</strong> unbekannte Laufzeit bis Halle West<br />

und <strong>die</strong> unbekannte Totzeit zwischen zwei SEDAC-Übertragungen heraus.<br />

Eine Messung <strong>am</strong> 29. Januar 1998 der (d<strong>am</strong>als noch nicht so gut optimierten)<br />

Übertragungsfrequenz ergab:<br />

ν718 = 3692 ± 2 Hz und ν93 = 3809 ± 2 Hz (17)<br />

Als Laufzeitunterschied erhält man unter Verwendung des Fehlerfortpflanzungsgesetzes<br />

etwa ∆T = 8.3 ± 0.3 µs. Dieser Laufzeitunterschied entspricht<br />

einem Weg von mindestens ∆L = 625 m. Die ges<strong>am</strong>te Kabellänge wird zwar<br />

größer sein, da <strong>die</strong> Kabel nicht den kürzesten Weg nehmen. Unter Verwendung<br />

der minimalen Kabellänge ∆L erhält man jedoch wegen ν = 1/∆T ∼<br />

1/∆L eine Abschätzung der maximalen Übertragungrate ν. Für eine Strecke<br />

von einem Kilometer muß somit mit einer maximalen Verlängerung ∆Tmax<br />

einer jeden Übertragung von<br />

∆Tmax =<br />

1<br />

ν718<br />

− 1<br />

<br />

1000<br />

= 13.3 ± 0.5 µs (18)<br />

ν93 625<br />

gerechnet werden. Der in Tabelle 2 <strong>für</strong> gemischte Zugriffe angegebene Wert<br />

würde sich d<strong>am</strong>it auf 4152 Hz erniedrigen. Dieser Wert weicht nur noch um<br />

knapp 4% von dem erwarteten Maximalwert ab, liegt aber immer noch über<br />

dem erwarteten Maximalwert.<br />

Wie ist <strong>die</strong>s möglich? Eine Überprüfung der Echtzeituhr der MVME-162-12a<br />

ergab eine Mindestgenauigkeit von mehr als 0.5 Promille. Das kann also nicht<br />

<strong>die</strong> Ursache <strong>für</strong> den Fehler sein. Das Testprogr<strong>am</strong>m test register wurde


7.1 Messung der Busgeschwindigkeit 61<br />

von drei verschiedene Personen auf Fehler untersucht, es konnte aber keiner<br />

gefunden werden.<br />

Eine mögliche Erklärung <strong>für</strong> den verbleibenden Unterschied könnte <strong>die</strong> Neuentwicklung<br />

von Sendern (IP-Interface) und Empfängern (CC2, CC3, CC4 48 )<br />

sein, <strong>die</strong> eine geringfügig über das Design von SEDAC 1976 [19] hinausgehende<br />

Übertragungsrate zulassen könnten.<br />

Ein wichtiges Prüfungskriterium, ob <strong>die</strong> Einführung der Parallelität und <strong>die</strong><br />

Aufspaltung des <strong>Kontrollsystems</strong> in mehrere, unabhängige Threads sinnvoll<br />

war, ist <strong>die</strong> Messung der maximalen Übertragungsrate über zwei SEDAC-<br />

Leitungen gleichzeitig. Die dazugehörigen Messungen wurden mit dem eigens<br />

da<strong>für</strong> entwickelten Progr<strong>am</strong>m test parallel durchgeführt. Die Meßergebnisse<br />

befinden sich in Tabelle 3. Auch hier ist der angegebene Fehler durch<br />

Meßort Nur Lesen Nur Schreiben Lesen & Schreiben<br />

Aachen 4064.4 ± 1 Hz 4126.6 ± 1 Hz 4104.0 ± 1 Hz<br />

DESY — — 4027.5 ± 1 Hz<br />

Tabelle 3: Maximale parallele SEDAC-Übertragungsraten (2 Busleitungen)<br />

<strong>die</strong> Zeitauflösung der Uhr im MVME-162-12a gegeben. Der kleinere Fehler<br />

wurde durch eine längere Meßdauer erreicht. Der Vergleich mit den Daten<br />

<strong>für</strong> ein Businterface offenbart eine Merkwürdigkeit bei den Meßwerten <strong>am</strong><br />

Aachener Teststand: Der Schreibzugriff ist jetzt schneller als der Lesezugriff.<br />

Außerdem entspricht der Mittelwert aus Lese- und Schreibzugriff bei getrennter<br />

Messung nicht mehr genau dem Wert bei abwechselnden Schreiben und<br />

Lesen.<br />

Die Erklärung da<strong>für</strong> ist, daß hier keine wirklich “parallele” Auslese stattgefunden<br />

hat. Im Aachener Teststand (Abb. 19) ist nämlich nur ein Crate-<br />

Controller (ein CC4) vorhanden. Dieser besitzt Anschlüsse <strong>für</strong> zwei SEDAC-<br />

Leitungen, <strong>die</strong> auch zu dem Test benutzt wurden. Bei <strong>die</strong>ser Betriebsart<br />

können beide Bus-Interface “gleichzeitig” auf den CC4-internen Speicher zugreifen<br />

[20]. Intern muß der Zugriff vom CC4 jedoch in irgendeiner Art und<br />

Weise synchronisiert werden. Da nun über beide Interface gleichzeitig Lesebzw.<br />

Schreibanforderungen kommen, muß der CC4-Controller über den Zugriff<br />

auf <strong>die</strong> Daten entscheiden. Dies führt zu dem beobachteten Phänomen.<br />

Die Messung <strong>am</strong> DESY erfolgte mit zwei voneinander getrennten Crate-<br />

Controllern, so daß <strong>die</strong>ses Problem hier nicht auftrat. Dieser Meßwert ist<br />

deshalb aussagekräftiger.<br />

48 Crate Controller 2, Crate Controller 3, ...


62 7 TESTS<br />

Die Geschwindigkeit bei parallelem Zugriff ist bei gemischtem Schreib- und<br />

Lesezugriff um 6.6% bei der Messung <strong>am</strong> Aachener Testaufbau bzw. um 9.2%<br />

bei der Messung <strong>am</strong> DESY zurückgegangen.<br />

Für den Dauerbetrieb des <strong>Kontrollsystems</strong> sind jedoch nicht nur <strong>die</strong> maximalen<br />

Übertragungsraten interessant, sondern vor allem der während des<br />

Betriebs durchschnittlich erreichte Wert. Berechnet man eine Korrektur <strong>für</strong><br />

eine mittlere Entfernung der Module von 500 m, so erhält man <strong>für</strong> <strong>die</strong> erwartete<br />

Maximalgeschwindigkeit des <strong>Kontrollsystems</strong><br />

νmax,parallel = 3932 Hz (19)<br />

Die Übertragungsrate liegt also bei parallelem Zugriff auf zwei Busleitungen<br />

nur gerinfügig unter der SEDAC-Spezifikation von 4 kHz. Der durch das<br />

Umschalten und <strong>die</strong> Synchronisierung zwischen den verschiedenen Threads<br />

hervorgerufene Aufwand ist demnach recht gering. Dies rechtfertigt <strong>die</strong> nebenläufige<br />

Auslegung des <strong>Kontrollsystems</strong> bei gleichzeitig hoher Modularität.<br />

Um Informationen über das Laufzeitverhalten des <strong>Kontrollsystems</strong> zu gewinnen,<br />

wurden Funktionen eingebaut, <strong>die</strong> während des Betriebs in periodischen<br />

Abständen zahlreiche Par<strong>am</strong>eter ausgeben, <strong>die</strong> zur Performance-Analyse verwendet<br />

werden können. Diese Ausgabe kann in der zentralen Steuerdatei<br />

global.hpp durch #define PERFORMANCE eingeschaltet werden.<br />

Während der Testmessungen <strong>am</strong> DESY konnten so Daten über <strong>die</strong> durchschnittliche<br />

Geschwindigkeit des Buszugriffs genommen werden. In Abb. 20<br />

ist eine Verteilung dargestellt, <strong>die</strong> <strong>die</strong> Ergebnisse von etwas mehr als zwei<br />

Stunden Meßzeit zeigt. Die durchschnittliche Zugriffsfrequenz pro Businterface<br />

liegt demnach bei<br />

νavg = 3777 ± 216 Hz, (20)<br />

das ist ein erstaunlich hoher Wert. Auffällig ist jedoch, daß es einen Häufungspunkt<br />

bei etwa 3825 Hz gibt, ein paar Werte jedoch auch darunter liegen. Die<br />

geringen Werte sind hauptsächlich durch den Start des <strong>Kontrollsystems</strong> entstanden,<br />

bei dem sehr viele Initialisierungsdateien eingelesen werden müssen,<br />

bevor auf den Bus zugegriffen wird. Der Datendurchsatz ist zu <strong>die</strong>sem Zeitpunkt<br />

entsprechend gering.<br />

Bemerkenswert ist, daß <strong>die</strong> eigentliche Progr<strong>am</strong>mausführung, in der <strong>die</strong> ges<strong>am</strong>te<br />

Logik des <strong>Kontrollsystems</strong> steckt, so schnell geschieht, daß <strong>die</strong> Geschwindigkeitsverringerung<br />

gegenüber dem erwarteten mittleren Wert aus<br />

Gleichung (19) nur 4 (vier!) Prozent beträgt. Die Anforderung einer hohen<br />

Auslesegeschwindigkeit wird somit durch das hier entwickelte Kontrollsystem<br />

erfüllt. Da <strong>am</strong> DESY keine Daten über Messungen der SEDAC-Übertragungsrate<br />

des bisherigen <strong>Kontrollsystems</strong> vorliegen [9], können leider auch<br />

keine Vergleiche gezogen werden.


7.1 Messung der Busgeschwindigkeit 63<br />

Durchschnittliche SEDAC-Uebertragungsfrequenz<br />

18<br />

16<br />

14<br />

12<br />

10<br />

8<br />

6<br />

4<br />

2<br />

sedac-histo<br />

Nent = 150<br />

Mean = 3777.16<br />

RMS = 215.678<br />

0<br />

2800 3000 3200 3400 3600 3800 4000<br />

Abbildung 20: Durchschnittliche SEDAC-Übertragungsfrequenz. Auf der horizontalen<br />

Achse sind <strong>die</strong> verschiedenen gemessenen Frequenzen aufgetragen, auf<br />

der vertikalen Achse <strong>die</strong> Häufigkeit des Auftretens einer bestimmten Frequenz.


64 7 TESTS<br />

7.2 Testaufbau<br />

Leider war es nicht möglich, alle Funktionen des hier entwickelten <strong>Kontrollsystems</strong><br />

<strong>am</strong> laufenden Beschleuniger zu testen. Das lag vor allem an den Anlaufschwierigkeiten<br />

von HERA durch <strong>die</strong> Installation von zahlreichen neuen<br />

Komponenten im langen Winter-Shutdown 1997-1998, durch den sich der<br />

Zeitplan der HERA-Inbetriebnahme um einen Monat verschob.<br />

Da das Verlustkontrollsystem eine entscheidende Funktion <strong>für</strong> <strong>die</strong> Sicherheit<br />

von HERA hat, kontrollierte das <strong>am</strong> DESY vorhandene Kontrollsystem<br />

während des Tests drei Quadranten, so daß der Einsatz von allen vier <strong>für</strong><br />

das neue Kontrollsystem nötigen Servern nicht möglich war. Deshalb ist nur<br />

Server Nummer 3 getestet worden, der in der Halle West wie in Abb. 11<br />

rechts dargestellt installiert wurde. Zweitens war es nicht möglich, von dort<br />

das <strong>für</strong> <strong>die</strong> getriggerten Betriebsmodi des Lagekontrollsystems notwendige<br />

PMST-Modul, das sich direkt neben dem Beschleuniger-Kontrollraum im<br />

Elektronikraum I befindet, zu erreichen. Das bisherige Kontrollsystem behielt<br />

den Zugriff auf <strong>die</strong>ses Modul, ein gleichzeitiger Zugriff ist durch das<br />

Single-Master Prinzip von SEDAC nicht möglich gewesen. Dadurch waren<br />

nur Tests im “Orbit-Modus” des <strong>Kontrollsystems</strong> möglich. Die dritte und<br />

letzte einschränkende Bedingung war, daß der Betrieb von HERA zu der <strong>für</strong><br />

den Test bereitgestellten Zeit nicht mit voller Protonfüllung möglich war.<br />

Dadurch konnten nur sehr wenige Informationen über <strong>die</strong> Funktionsweise<br />

des Verlustkontrollsystems gewonnen werden, da auch nur ein entsprechend<br />

geringer Protonverlust vorhanden war.<br />

7.2.1 Das Testprogr<strong>am</strong>m<br />

Für den Test wurde im Rahmen <strong>die</strong>ser Diplomarbeit ein eigenes Testprogr<strong>am</strong>m<br />

entwickelt, das <strong>die</strong> Rolle des Client spielt. Ein während des Tests<br />

aufgenommenes Bild ist in Abb. 21 dargestellt. Nur <strong>die</strong> <strong>für</strong> den Test wichtigsten<br />

Funktionen wurden integriert. Auf Knopfdruck kann im Alarmteil<br />

des <strong>Kontrollsystems</strong> ein künstlicher Freeze ausgelöst werden. Das wurde benutzt,<br />

um <strong>die</strong> automatische Archivierung der Daten der Strahlverlustmonitore<br />

auszulösen und <strong>die</strong> Datennahme anschließend zu stoppen. Ebenso kann<br />

der Freeze-Zustand wieder aufgehoben werden, wodurch <strong>die</strong> Datennahme von<br />

den Lage- und Verlustmonitoren erneut gestartet wird.<br />

Speziell <strong>für</strong> <strong>die</strong>sen Test wurde sowohl im Lage- als auch im Verlustkontrollsystem<br />

eine zusätzliche Funktion integriert, <strong>die</strong> sogar über <strong>die</strong>sen Test hinaus<br />

nützlich ist. Diese Funktion erlaubt es, wie in einem Film in regelmäßigen,<br />

über <strong>die</strong> zentrale Steuerdatei global.hpp einstellbaren Intervallen <strong>die</strong> aktuellen<br />

Werte der Monitore in eine Datei abzuspeichern. Das erlaubt <strong>die</strong> Ver-


7.2 Testaufbau 65<br />

Abbildung 21: Die grafische Oberfläche des Testprogr<strong>am</strong>ms. Die Skalierung entlang<br />

der vertikalen Achse, <strong>die</strong> <strong>die</strong> Abweichung vom Orbit in Millimetern angibt,<br />

ist leider verborgen. Dies ist ein beim Vergrößern des Bildaussschnitts entstandener<br />

Fehler in der aktuellen ACOP-Version. Aus dem Vergrößerungsverhältnis<br />

läßt sich schließen, daß <strong>die</strong> vertikale Achse von etwa −12 mm bis +12 mm <strong>für</strong><br />

<strong>die</strong> x-Ablage und von etwa −10 mm bis +10 mm <strong>für</strong> <strong>die</strong> y-Ablage geht. Die<br />

senkrechten Linien gehen von der Ideallage (x = 0 bzw. y = 0) aus, ihre Länge<br />

ist somit <strong>die</strong> Ablage vom Orbit. Die horizontale Achse entspricht dem Weg, den<br />

<strong>die</strong> Protonen nach ihrer Injektion zurücklegen: Vom Oktanten West links, Position<br />

197 m, über <strong>die</strong> Quadranten Süd, Ost und Nord und den Oktanten West rechts<br />

bis in den Oktanten West links, Position 44 m. Da das Kontrollsystem nur im<br />

Quadranten West installiert war, sind auch nur dort Daten vorhanden.


66 7 TESTS<br />

folgung von zeitlich sich verändernden Strahl-Lagen oder Verlusten über <strong>die</strong><br />

knappen Grenzen der Post-Mortem-Analyse hinaus. Prinzipiell lassen sich<br />

“Filme” mit einer Länge erstellen, <strong>die</strong> nur durch <strong>die</strong> Speicherkapazität des<br />

Datenträgers, auf dem der Film niedergelegt wird, begrenzt ist.<br />

Das Datenformat <strong>die</strong>ser Dateien entspricht auch nicht dem DESY-üblichen<br />

Standard <strong>für</strong> “event-driven archiving”, sondern ist ein unter fast allen Tabellenkalkulationen<br />

verbreites Format, das CSV 49 -Format. Die von dem Kontrollsystem<br />

erzeugten Dateien können d<strong>am</strong>it sofort in eine Tabellenkalkulation<br />

eingelesen und analysiert werden.<br />

Zur Darstellung der mittels Prozedurfernaufrufe vom Lagekontrollsytem abgeholten<br />

aktuellen Lagedaten wurden zwei Grafikfenster in das Testprogr<strong>am</strong>m<br />

eingebunden, <strong>die</strong> <strong>die</strong> Abweichung vom Orbit grafisch darstellen.<br />

Das Testprogr<strong>am</strong>m ist in Visual Basic 5.0 geschrieben und verwendet <strong>die</strong><br />

ACOP-ActiveX Controls [3] <strong>für</strong> <strong>die</strong> Kommunikation mit dem Kontrollsystem.<br />

In Abb. 21 ist ein während des Tests <strong>am</strong> 10. Juli 1998 aufgenommes<br />

Bild des Testprogr<strong>am</strong>ms gezeigt. Links oben erkennt man <strong>die</strong> besprochenen<br />

Steuerfunktionen <strong>für</strong> Alarmteil sowie Verlust- und Lagekontrollsystem. Die<br />

zwei waagerechten Grafiken zeigen <strong>die</strong> momentane Ablage vom Orbit, oben<br />

in der x-Ebene, unten in der y-Ebene. Über <strong>die</strong> Schaltknöpfe rechts neben<br />

den Grafiken läßt sich <strong>die</strong> Übertragung der Daten vom Kontrollsystem zum<br />

Testprogr<strong>am</strong>m starten bzw. stoppen.<br />

7.3 Messungen mit dem Lagekontrollsystem<br />

Zur Überprüfung des Lagekontrollsystems wurden drei verschiedene Messungen<br />

vorgenommen: Messung der Abweichung des Protonstrahles vom Orbit,<br />

Untersuchung des zeitlichen Verhaltens der Strahlablage an einigen Monitoren,<br />

und <strong>die</strong> sowohl zeitliche als auch räumliche Untersuchung einer Beule.<br />

Daneben wurde auch überprüft, ob das Lagekontrollsystem fähig ist, eine<br />

synchrone Messung mit vier Servern zuzulassen. Grundlegend da<strong>für</strong> ist, daß<br />

<strong>die</strong> Server jeden Timeout messen, der von den PPD-Modulen erzeugt wird.<br />

Im Kontrollsystem wurde deshalb eigens da<strong>für</strong> eine Funktion eingebaut, <strong>die</strong><br />

den Benutzer davon unterrichtet, wie lange auf das “Data-Ready”-Flag des<br />

PPD-Moduls gewartet wurde. Eine Überprüfung der Logdateien des Lagekontrollsystems<br />

ergab, daß stets zwischen 68 ms und maximal 136 ms auf das<br />

Auftreten des Timeout-Flags gewartet wurde. Da zwischen dem zweimaligen<br />

Auftreten des “Data-Ready”-Flags ein Mindestintervall von 173 ms liegen<br />

muß [31] und bei sämtlichen Test des <strong>Kontrollsystems</strong> ein Wert von 259 ms<br />

eingestellt war, kann ein verpaßtes Timeout-Flag somit ausgeschlossen wer-<br />

49 Comma Separated Value


7.3 Messungen mit dem Lagekontrollsystem 67<br />

den. D<strong>am</strong>it ist das Kontrollsystem in der Lage, auch bei einem Einsatz von<br />

gleichzeitig vier Servern eine synchrone Messung der Strahllage über den<br />

ges<strong>am</strong>ten HERA-Beschleuniger durchzuführen.<br />

7.3.1 Messung des Orbits<br />

Der Orbit wird von dem Kontrollsystem laufend aus den PPD-Modulen<br />

ausgelesen, wie in Kapitel 6 erklärt und in Abb. 17 dargestellt. Eine vom<br />

Kontrollsystem über #define PERFORMANCE in global.hpp automatisch ausgeführte<br />

Messung ergab, daß neue Werte alle 260 ± 2 ms vorlagen. Als Fehler<br />

wurde <strong>die</strong> maximale Abweichung angegeben. Das Auslesen <strong>eines</strong> gemessenen<br />

Orbits vom Kontrollsystem durch das Testprogr<strong>am</strong>m geschah in einem<br />

Abstand von 1000 ms. Ein von dem Testprogr<strong>am</strong>m dargestellter Orbit ist<br />

in Abb. 21 zu sehen. Durch <strong>die</strong> Fähigkeit, “Filme” der Ablage aufzunehmen,<br />

konnten <strong>die</strong> Daten jedoch genauer dargestellt werden. Abb. 22 zeigt<br />

einen solchen Orbit. Die große Abweichung von 14 mm bei z = 44 m ist<br />

wahrscheinlich ein Artefakt durch einen defekten oder schlecht kalibrierten<br />

Monitor.<br />

Abweichung vom Orbit in mm<br />

8<br />

6<br />

4<br />

2<br />

0<br />

-2<br />

-4<br />

-6<br />

-8<br />

-10<br />

-12<br />

10.07.98 12:50<br />

-14<br />

-800 -600 -400 -200 0 200<br />

Position in Metern<br />

400 600 800<br />

Abbildung 22: Ein mit dem neuen Kontrollsystem gemessener Orbit. Für den<br />

Quadranten West links wird <strong>die</strong> Position positiv gezählt, <strong>für</strong> West rechts negativ.<br />

Bei <strong>die</strong>ser Auftragung entspricht <strong>die</strong> Flugrichtung der Protonen der Richtung<br />

aufsteigender Positionsangaben.


68 7 TESTS<br />

7.3.2 Untersuchung des zeitlichen Verhaltens<br />

Für einige ausgewählte Monitore wurde <strong>die</strong> zeitliche Veränderung der Strahlablage<br />

mit Hilfe der aufgenommenen “Filme” untersucht. In Abb. 23 sind<br />

<strong>die</strong> Positionen des jeweils zuletzt gemessenen Umlaufs als Funktion der Zeit<br />

dargestellt. Während des dargestellten Zeitraum von 22 Sekunden ist keine<br />

systematische Veränderung des Orbits zu erkennen, lediglich statistische<br />

Schwankungen. Diese sind bei den verschiedenen Monitoren unterschiedlich<br />

groß und selts<strong>am</strong>erweise nicht mit der Ortsauflösung der Monitore korreliert,<br />

<strong>die</strong> mit wachsender Entfernung vom Idealweg sinkt. Das bedeutet, daß <strong>die</strong><br />

Schwankung nicht durch ein Rauschen in der Elektronik verursacht wird,<br />

sondern tatsächliche Schwankungen der Strahlablage darstellt.<br />

x-Ablage in mm<br />

4<br />

3<br />

2<br />

1<br />

0<br />

-1<br />

-2<br />

-3<br />

WL 582<br />

WL 347<br />

WL 197<br />

WL 676<br />

WR 673<br />

WR 086<br />

WL 394<br />

-4<br />

0 5 10<br />

Zeit in Sekunden<br />

15 20<br />

Abbildung 23: Zeitliche <strong>Entwicklung</strong> der zuletzt gemessenen Positionsdaten<br />

Die Schwankungen lassen sich sehr stark reduzieren, wenn statt des letzten<br />

Umlaufs im Beschleuniger ein Mittelwert über <strong>die</strong> letzten 128 Umläufe dargestellt<br />

wird. Eine solche Messung ist in Abb. 24 dargestellt. Diese eignet sich<br />

somit besser <strong>für</strong> <strong>die</strong> Online-Darstellung im Kontrollraum, da sie sich durch<br />

ein stabileres Bild auszeichnet 50 . Beide Abbildungen zeigen Daten derselben<br />

Monitore und Umläufe.<br />

50 Die von dem Testprogr<strong>am</strong>m dargestellten Werte sind solche Mittelwerte


7.3 Messungen mit dem Lagekontrollsystem 69<br />

x-Ablage in mm (Mittelwerte)<br />

4<br />

3<br />

2<br />

1<br />

0<br />

-1<br />

-2<br />

-3<br />

WL 582<br />

WL 347<br />

WL 197<br />

WL 676<br />

WR 673<br />

WR 086<br />

WL 394<br />

-4<br />

0 5 10<br />

Zeit in Sekunden<br />

15 20<br />

Abbildung 24: Zeitliche <strong>Entwicklung</strong> von gemittelten Positionsdaten<br />

7.3.3 Messungen an einer Beule<br />

Für eine weitere Messung wurden mit Hilfe von Korrekturmagneten Beulen<br />

in der Protonbahn separat in der x- und der y-Ebene erzeugt. Die Erzeugung<br />

und das Verschwinden der Beule wurde zweifach überwacht: Zum einen durch<br />

<strong>die</strong> Anzeige des Testprogr<strong>am</strong>ms, zum anderen durch <strong>die</strong> “Filme”, <strong>die</strong> während<br />

des laufenden Betriebs aufgenommen werden.<br />

In der x-Ebene wurde <strong>die</strong> Beule durch <strong>die</strong> drei Korrekturmagnete WL252CX,<br />

WL299CX und WL440CX erreicht. Dementsprechend sollten <strong>die</strong> Lagemonitore,<br />

<strong>die</strong> sich zwischen 252 Metern und 440 Metern befinden, eine Änderung<br />

der Ablage zeigen. Aus Tabelle 4 liest man ab, daß vier Monitore mit den<br />

Nummern 1–4 eine Abweichung feststellen können.<br />

Monitor-Nr. 0 1 2 3 4 5 6<br />

Position z in m (x-Messung) 197 253 300 347 394 441 488<br />

Position z in m (y-Messung) 164 226 276 323 370 418 465<br />

Tabelle 4: Liste von Monitoren, <strong>die</strong> zum Ausmessen der Beule geeignet sind.<br />

In Abb. 25 und Abb. 26 wurde <strong>die</strong> Beule in der x-Ebene jeweils maximal in<br />

entgegengesetzte Richtungen ausgelenkt. Die Unterschiede der beiden Mes-


70 7 TESTS<br />

sungen sind besonders deutlich bei den Monitoren Nr. 2 und 4. Die Monitore<br />

Nr. 1 und Nr. 5 befinden sich zu nahe an den Ablenkmagneten, um eine Abweichung<br />

registrieren zu können. Monitor Nr. 3 befindet sich offensichtlich<br />

genau in der Mitte der Beule und zeigt eine konstante Ablage an.<br />

Abbildung 25: Beule in der x-Ebene, maximal positive Auslenkung<br />

Die Überwachung der Anzeige des Testprogr<strong>am</strong>ms ermöglicht jedoch nur<br />

eine qualitative Analyse der Beule zu einem festen Zeitpunkt. Quantitative<br />

Aussagen über das Verhalten der Beule lassen sich jedoch mit Hilfe der<br />

aufgenommenen “Filme” machen. Dabei wurden <strong>für</strong> alle folgenden Grafiken<br />

“Differenz-Orbits” dargestellt. D<strong>am</strong>it ist gemeint, daß von allen gemessenen<br />

Ablagen <strong>die</strong> Strahllage, bei der <strong>die</strong> Magnete keine Beule erzeugen, abgezogen<br />

wird. Man sieht in den Grafiken deshalb nur <strong>die</strong> durch <strong>die</strong> Magnete erzeugte<br />

Beule.<br />

Die Abb. 27 zeigt <strong>die</strong> zeitliche <strong>Entwicklung</strong> einer solchen Beule. Aufgetragen<br />

sind <strong>die</strong> Differenz-Meßwerte von allen Monitoren, <strong>die</strong> sich zwischen den drei<br />

oben genannten Magneten befinden. Die Position der Monitore ist in Metern<br />

angegeben. Zu Beginn der Messung (t = 0) ist keine Beule vorhanden.<br />

Diese wird während der Messung zunächst maximal in <strong>die</strong> eine Richtung<br />

ausgelenkt, dann auf Null zurückgefahren und kurz danach maximal in <strong>die</strong><br />

andere Richtung ausgelenkt. Die Höhenlinien haben einen Abstand von einem<br />

halben Millimeter. Mit ihrer Hilfe kann <strong>die</strong> Größe der Auslenkung zu<br />

etwa ∆x = 2.5 mm abgelesen werden.


7.3 Messungen mit dem Lagekontrollsystem 71<br />

Abbildung 26: Beule in der x-Ebene, maximal negative Auslenkung<br />

2<br />

1<br />

x / mm 0<br />

-1<br />

-2<br />

0<br />

2<br />

4<br />

6<br />

8<br />

Zeit in Sekunden<br />

10<br />

Beule in x-Richtung<br />

12<br />

14<br />

16<br />

400<br />

350<br />

250<br />

200<br />

300<br />

Monitorposition in m<br />

Abbildung 27: Dreidimensionale Darstellung einer Beule in der x-Ebene


72 7 TESTS<br />

Ein Schnitt durch <strong>die</strong>se dreidimensionale Darstellung ist in zwei Ebenen<br />

möglich, einmal <strong>für</strong> t = const und einmal <strong>für</strong> z = const, d. h. einen festen<br />

Monitor. Ein Schnitt <strong>für</strong> t = const ist wegen der zwei Monitore, <strong>die</strong> eine<br />

Veränderung zeigen, nicht sehr interessant, und zeigt nichts, was man nicht<br />

auch in den Abbildungen 25 und 26 erkennen kann. Als Beispiel <strong>für</strong> einen<br />

z = const-Schnitt ist in Abb. 28 der zeitliche Verlauf der Orbit-Differenz <strong>für</strong><br />

den Monitor WL300X darstellt. Man erkennt, wie sich <strong>die</strong> Strahllage nach<br />

Differenz in mm<br />

3<br />

2<br />

1<br />

0<br />

-1<br />

-2<br />

Monitor WL 300X<br />

-3<br />

0 2 4 6 8 10 12 14 16 18<br />

Zeit in Sekunden<br />

Abbildung 28: Zeitlicher Verlauf einer Beule in der x-Ebene<br />

und nach durch den Einfluß des Magnetfeldes verändert und der Strahl auf<br />

seine neue Position gezwungen wird.<br />

Für <strong>die</strong> Erzeugung der Beule in y-Richtung wurden <strong>die</strong> Korrekturmagnete<br />

WL225CY, WL370CY und WL464CY benutzt. Laut Tabelle 4 sollten demnach<br />

fünf Monitore, nämlich Nr. 1 bis Nr. 5, eine Veränderung zeigen. Die<br />

Abb. 29 zeigt, wie <strong>die</strong> Beule in drei zeitlich aufeinanderfolgenden Schritten<br />

auf ihren Maximalwert gebracht wird. Den Hauptteil zu der Beule tragen <strong>die</strong><br />

Ablenkungen durch <strong>die</strong> Magnete bei 370 m und 464 m bei. Dazwischen befindet<br />

sich leider nur ein einziger Monitor, so daß <strong>die</strong> Beule sehr unförmig dargestellt<br />

wird. Das Durchschwingen der Beule in <strong>die</strong> andere Richtung ist wesentlich<br />

schwächer ausgeprägt. Die Positionen der Monitore sind hier ungünstiger<br />

verteilt, so daß in z-Richtung lineare Interpolation der Meßwerte <strong>die</strong> Form<br />

der Beule nicht richtig wiedergibt. Der zeitliche Verlauf der Strahlablage <strong>für</strong>


7.4 Messungen mit dem Verlustkontrollsystem 73<br />

den Monitor WL418Y ist in Abb. 30 dargestellt. Mit einer Orbitdifferenz von<br />

knapp 6 mm ist <strong>die</strong> Beule dort recht groß.<br />

7.4 Messungen mit dem Verlustkontrollsystem<br />

Durch <strong>die</strong> geringe Protonfüllung in HERA zum Zeitpunkt <strong>die</strong>ses Tests und<br />

den d<strong>am</strong>it verbundenen geringen Strahlverlusten liegen nur sehr wenige Messungen<br />

mit dem Verlustkontrollsystem vor. Alle eigens <strong>für</strong> HERA entwickelten<br />

PIN-Diodenstrahlverlustmonitore haben während der ges<strong>am</strong>ten Meßzeit<br />

nur sehr geringe Verluste gemessen. Sämtliche Mittelwerte über 666 ms enthielten<br />

keinen einzigen Eintrag. Lediglich <strong>die</strong> in 5.2 ms-Zeitintervallen gezählten<br />

Werte zeigten ab und zu ein oder zwei Ereignisse. Dementsprechend sind<br />

<strong>die</strong> gemessenen Werte statistisch nicht signifikant. Sie liegen aber immerhin<br />

um einen Faktor 10 über der bei den PIN-Dioden sehr geringen Dunkelzählrate<br />

von 0.01 Hz [29]. Die Messung ergab nämlich, daß von 75 Monitoren nur<br />

vier jeweils ein oder zwei Werte in einem Zeitintervall von 666 ms aufgenommen<br />

haben. Dies entspricht einer Rate von etwa 0.1 Hz. Die Daten zeigen,<br />

daß <strong>die</strong> Auslese der Monitore und d<strong>am</strong>it das Kontrollsystem funktionierte.<br />

In den Abb. 31 und 32 ist der maximale Strahlverlust im Quadranten West<br />

<strong>für</strong> zwei verschiedene Uhrzeiten dargestellt. Die Meßwerte wurden über einen<br />

Zeitraum von 666 ms ges<strong>am</strong>melt.<br />

Bei genauem Hinsehen fällt auf, daß <strong>die</strong> Verlustmonitore bei z = 126 m und<br />

z = 153 m in beiden Abbildungen <strong>die</strong>selbe Zählrate anzeigen. Dies ist bei<br />

den wenigen Werten, <strong>die</strong> dargestellt sind, zu auffällig, um ein Zufall zu sein.<br />

Beide Monitore zeichnen sich durch eine größere Empfindlichkeit aus, wobei<br />

der Monitor bei z = 126 m eine besondere Überraschung bereithält.<br />

Dieser Monitor ist nämlich keiner der üblichen bei HERA eingesetzten Verlustmonitore,<br />

sondern ein vom CERN entwickelter Typ mit unbekannter Eichung.<br />

Dieser ist <strong>für</strong> Strahlverluste wesentlich empfindlicher als <strong>die</strong> anderen<br />

Monitore. Er zeigt nämlich nicht nur ein oder zwei Ereignisse an, sondern<br />

seine Zählraten liegen etwa bei 183 Ereignissen in 5.2 Millisekunden. Die<br />

Abb. 33 zeigt den Strahlverlust, der von <strong>die</strong>sem Monitor gemessen wurde,<br />

in Abhängigkeit der Zeit. Gezeigt sind gemittelte Verlustdaten, <strong>die</strong> in eine<br />

Vergangenheit von 86.5 Sekunden vor Beginn der Auslese des Monitors<br />

zurückreichen.<br />

Eine automatisch über #define PERFORMANCE in global.hpp ausgeführte<br />

Messung der Dauer der Datennahmeergab, daß neue Daten von allen Verlustmonitoren<br />

nach ∆t = 1.5 ± 0.3 Sekunden vorliegen.


74 7 TESTS<br />

6<br />

5<br />

4<br />

3<br />

y / mm<br />

2<br />

1<br />

0<br />

16<br />

14<br />

12<br />

10<br />

Zeit in Sekunden<br />

8<br />

6<br />

Beule in y-Richtung<br />

4<br />

2<br />

0<br />

200<br />

250<br />

300<br />

500<br />

450<br />

400<br />

350<br />

Monitorposition in m<br />

Abbildung 29: Dreidimensionale Darstellung einer Beule in der y-Ebene<br />

Differenz in mm<br />

6<br />

5<br />

4<br />

3<br />

2<br />

1<br />

Monitor WL 418Y<br />

0<br />

0 2 4 6 8 10<br />

Zeit in Sekunden<br />

12 14 16 18<br />

Abbildung 30: Zeitlicher Verlauf einer Beule in der y-Ebene


7.4 Messungen mit dem Verlustkontrollsystem 75<br />

Anzahl verlorener Protonen (Maximalwert)<br />

1e+08<br />

1e+07<br />

1e+06<br />

100000<br />

10000<br />

1000<br />

100<br />

10.07.98 13:32<br />

-600 -400 -200 0<br />

Position in Metern<br />

200 400 600<br />

Abbildung 31: Eine Strahlverlustmessung im Quadranten West<br />

Anzahl verlorener Protonen (Maximalwert)<br />

1e+08<br />

1e+07<br />

1e+06<br />

100000<br />

10000<br />

1000<br />

100<br />

10.07.98 14:01<br />

-600 -400 -200 0 200 400 600<br />

Position in Metern<br />

Abbildung 32: Noch eine Strahlverlustmessung im Quadranten West<br />

cd


76 7 TESTS<br />

Anzahl verlorener Protonen (arb. u.)<br />

200<br />

180<br />

160<br />

140<br />

120<br />

10-07-98 13:32<br />

100<br />

-90 -80 -70 -60 -50 -40 -30 -20 -10 0<br />

Zeit in s<br />

Abbildung 33: Strahlverlustmessung mit dem CERN-Verlustmonitor<br />

7.5 Automatische Archivierung bei Freeze<br />

Die Darstellung der Abb. 33 ist nur durch <strong>die</strong> automatische Archivierung<br />

der Strahlverluste bei einem Freeze möglich gewesen. Normalerweise werden<br />

nämlich von den Clients nur Mittelwerte des Strahlverlustes bzw. Maximalwerte,<br />

wie sie z. B. in den Abb. 31 und 32 gezeigt sind, abgefragt.<br />

Zur genaueren Analyse bei einem Strahldump werden jedoch <strong>die</strong> kompletten<br />

Speicherinhalte <strong>eines</strong> BLM-Moduls ausgelesen, so daß Informationen über<br />

einen zeitlichen Verlauf dargestellt werden können. Die Abb. 33 zeigt, daß<br />

eine solche Analyse mit dem hier entwickelten Kontrollsystem möglich ist.<br />

Diese Daten wurden nämlich durch einen künstlich ausgelösten Freeze von<br />

dem Kontrollsystem in einer Datei abgelegt. Der Freeze-Zustand konnte mit<br />

dem in Abschnitt 7.2.1 vorgestellten Testprogr<strong>am</strong>m ausgelöst und wieder<br />

aufgehoben werden.<br />

Dies zeigt aber noch nicht, daß das Kontrollsystem in der Lage ist, einen<br />

tatsächlichen Freeze zu entdecken, sondern nur, daß es in der Lage ist, bei<br />

einem solchen <strong>die</strong> Daten zu archivieren.<br />

Glücklicherweise konnte aber auch ein echter Freeze mit dem Kontrollsystem<br />

festgestellt werden. Dies geschah in einem Test <strong>am</strong> 27. Mai 1998, als


7.5 Automatische Archivierung bei Freeze 77<br />

gleichzeitig ein Test des <strong>Kontrollsystems</strong> mit Arbeiten an der Alarm-Loop<br />

zus<strong>am</strong>menfiel. Ein Ausschnitt aus der Log-Datei des <strong>Kontrollsystems</strong> zeigt<br />

<strong>die</strong> Meldungen, <strong>die</strong> durch den Freeze ausgelöst worden sind:<br />

ALM: DAQ Task run every 361 milliseconds...<br />

ALM: DAQ Task run every 361 milliseconds...<br />

Got Trigger in try #1168<br />

Time difference is 1683 ms<br />

Time difference is 1716 ms<br />

ALM: FREEZE detected with 14 Alarms<br />

BLM: DAQTask waiting for unfreeze.<br />

BLM: DAQTask waiting for unfreeze.<br />

Reading timeout between 4 and 4 ms.<br />

PPD: Polling PPD is frozen.<br />

Reading timeout between 0 and 1 ms.<br />

PPD: Polling PPD is frozen.<br />

ALM: DAQ Task run every 28 milliseconds...<br />

Reading timeout between 0 and 1 ms.<br />

PPD: Polling PPD is frozen.<br />

ALM: DAQ Task run every 31 milliseconds...<br />

ALM: DAQ Task run every 4 milliseconds...<br />

Reading timeout between 0 and 1 ms.<br />

PPD: Polling PPD is frozen.<br />

Reading timeout between 0 and 1 ms.<br />

PPD: Polling PPD is frozen.<br />

ALM: DAQ Task run every 3 milliseconds...<br />

Reading timeout between 0 and 1 ms.<br />

PPD: Polling PPD is frozen.<br />

Reading timeout between 0 and 1 ms.<br />

PPD: Polling PPD is frozen.<br />

ALM: DAQ Task run every 7 milliseconds...<br />

ALM: DAQ Task run every 4 milliseconds...<br />

Nach der Detektion des Freeze-Zustands wird <strong>die</strong> Archivierung der beiden<br />

Threads <strong>für</strong> <strong>die</strong> Strahlverlustmonitore (BLM) gestartet. wird. Nach erfolgter<br />

Archivierung wird <strong>die</strong> Datennahme gestoppt und <strong>die</strong> Strahlverlustmonitore<br />

warten auf ein Aufheben des Freeze-Zustands. (Meldung: “BLM: DAQTask<br />

waiting for unfreeze”). Gleichzeitig wird von dem Lagekontrollsystem<br />

(PPD) festgestellt, daß <strong>die</strong> Speicherinhalte der PPD-Module eingefroren wurden.<br />

Dadurch werden auch dort keine Daten mehr genommen. Das Anhalten<br />

der Datennahme von Verlustmonitoren und Lagemonitoren führt zu einem<br />

enormen Geschwindigkeitszuwachs der Auslese der Alarm-Module, da der


78 7 TESTS<br />

Bus nur noch <strong>für</strong> deren Auslese benutzt wird. Das führt zu einer Verringerung<br />

der Aktualisierungszeit von 361 ms auf unter 10 ms!<br />

Da <strong>die</strong>se Messungen jedoch zu einem Zeitpunkt entstanden sind, als sich<br />

das Kontrollsystem noch im <strong>Entwicklung</strong>sstadium befand, wurde im Abschlußtest<br />

<strong>die</strong> Aktualisierungsrate der Alarmdaten neu bestimmt, <strong>die</strong> durch<br />

eine geänderte Priorisierung geringer wurde. Es ergab sich ein Wert von<br />

∆t = 411 ± 19 ms.<br />

7.6 Zus<strong>am</strong>menfassung<br />

Das hier entwickelte Kontrollsystem konnte seine Einsatzfähigkeit unter Beweis<br />

stellen. Es ist durch sein Konzept in das HERA-Kontrollsystem integriert.<br />

Zahlreiche Untersuchungen über <strong>die</strong> Leistungsfähigkeit und Schnelligkeit<br />

des Systems ergaben folgende Werte: Neue Daten über den Ges<strong>am</strong>tstatus<br />

der Alarmmodule liegen alle<br />

∆tALM = 411 ± 19 ms (21)<br />

vor, neue Daten von den Verlustmonitoren sind nach<br />

∆tBLM = 1500 ± 300 ms (22)<br />

verfügbar, und im Orbit-Modus werden Intensität, mittlere Ablage und Ablage<br />

des zuletzt gemessenen Umlaufs alle<br />

∆tP P D = 260 ± 2 ms (23)<br />

<strong>für</strong> interessierte Clients zur Verfügung gestellt. Das Kontrollsystem gewährleistet<br />

dabei <strong>die</strong> eindeutige Zuordung der Daten zu einem speziellen Umlauf<br />

auch bei der Verwendung von vier Servern. Die mittlere Daten-Transferrate<br />

des Kontrollsytems bei parallem Zugriff auf beide Busleitungen beträgt<br />

νavg = 3777 ± 216 Hz (24)<br />

und liegt etwa 4% Prozent unter dem erwarteten Maximalwert, so daß <strong>die</strong><br />

Forderung nach einer schnellen Datenauslese erfüllt wird. Im Falle <strong>eines</strong><br />

Strahldumps werden <strong>die</strong> Daten der Verlustmonitore archiviert und stehen <strong>für</strong><br />

eine Post-Mortem-Analyse mit DESY-üblichen Mitteln zur Verfügung. Die<br />

Fähigkeit, “Filme” von Strahlverlust und Strahllage aufnehmen zu können,<br />

ermöglicht eine Analyse des Systems auch über <strong>die</strong> Hardware-Grenzen von<br />

Verlust- und Lagemonitoren hinaus.


A Das Pthread-Interface <strong>für</strong> VxWorks<br />

In Tabelle 5 ist eine Liste der im Pthread-Standard [14] beschriebenen Funktionen<br />

angegeben, <strong>die</strong> von dem hier entwickelten Pthread-Interface unterstützt<br />

werden. Dort sind zuerst <strong>die</strong> Funktionen aufgeführt, <strong>die</strong> zum Erzeu-<br />

Funktion Bedeutung<br />

pthread create Erzeugt einen neuen Thread<br />

pthread join Wartet auf <strong>die</strong> Beendigung <strong>eines</strong> anderen<br />

Threads<br />

pthread cancel Beendet einen anderen Thread<br />

pthread testcancel Überprüft, ob der laufende Thread gestoppt<br />

werden soll<br />

pthread attr init Initialisiert ein Thread-Attribut<br />

pthread attr setinheritsched Neuer Thread erbt <strong>die</strong> Prioriät des erzeugenden<br />

Threads<br />

pthread attr setschedpolicy Bestimmt <strong>die</strong> Ausführungsreihenfolge<br />

von Threads mit gleicher Priorität<br />

pthread attr setschedpar<strong>am</strong> Setzt <strong>die</strong> Priorität <strong>eines</strong> Threads<br />

pthread mutex init Erzeugt eine Schloßvariable<br />

pthread mutex lock Schließt eine Schloßvariable zu<br />

pthread mutex unlock Schließt eine Schloßvariable auf<br />

pthread mutex trylock Prüft, ob eine Schloßvariable verfügbar<br />

(offen) ist<br />

pthread mutex destroy Löscht eine Schloßvariable<br />

pthread cond init Erzeugt eine Bedingungsvariable<br />

phtread cond wait Wartet auf das Eintreten einer Bedingung<br />

pthread cond signal Signalisiert einem wartenden Thread<br />

das Eintreten einer Bedingung<br />

pthread cond broadcast Signalisiert allen wartenden Threads<br />

das Eintreten einer Bedingung<br />

pthread cond destroy Löscht eine Bedingungsvariable<br />

Tabelle 5: Unterstütze Funktionen des Pthread-Interface<br />

gen und Beenden von Threads verwendet werden. Dann folgen Funktionen,<br />

mit denen <strong>die</strong> Eigenschaft der Threads bestimmt werden kann. Die letzten<br />

zwei Blöcke von Funktionen regeln das Zus<strong>am</strong>menwirken von Threads untereinander.<br />

Für das Verhindern <strong>eines</strong> gleichzeitigen Zugriffs auf Daten werden<br />

Schloßvariablen benutzt, <strong>die</strong> vor dem Zugriff auf <strong>die</strong> Variable verschlossen<br />

79


80 LITERATUR<br />

werden und nach Beendigung des Zugriffs wieder geöffnet werden. Die Bedingungsvariablen<br />

werden zur Synchronisation benutzt, indem ein (oder mehrere<br />

Threads) auf das Eintreten einer Bedingung wartet, <strong>die</strong> von einem anderen<br />

Thread signalisert wird.<br />

Die Funktionen entsprechen in ihrer Spezifierung dem Pthread-Standard. Bei<br />

ihrer Implementation im VxWorks-Betriebssystem sind aber folgende Besonderheiten<br />

zu beachten:<br />

• Das Pthread-Interface benutzt <strong>die</strong> <strong>für</strong> Erweiterungen von VxWorks vorgesehene<br />

Variable spare1 im VxWorks Task-Control-Block. Deshalb<br />

dürfen keine anderen laufenden Progr<strong>am</strong>me den Wert <strong>die</strong>ser Variablen<br />

ändern.<br />

• Die Implementierung der Schloß- und Bedingungsvariablen geschieht<br />

durch <strong>die</strong> von VxWorks bereitgestellten binären Semaphoren. Diese<br />

zeichnen sich durch ihre besonders hohe Ausführungsgeschwindigkeit<br />

aus [27].<br />

• Die Implementierung der Bedingungsvariablen mit binären Semaphoren<br />

führt dazu, daß <strong>die</strong> Signalisierung einer Bedingung auch wirks<strong>am</strong><br />

ist, wenn <strong>die</strong> auf <strong>die</strong>se Bedingung wartenden Threads erst nach<br />

der Signalisierung mit dem Warten beginnen. Dies ist im Pthread-<br />

Standard nicht vorgesehen und führt zu “spurious wake ups”. Jede<br />

Anwendung, <strong>die</strong> den Pthread-Standard benutzt, sollte jedoch “spurious<br />

wake ups” durch das explizite Überprüfen der Bedingung ausschließen<br />

[12]. Dementsprechend sollte <strong>die</strong>ser Unterschied nicht zu Problemen bei<br />

der Verwendung führen.<br />

• Interne Fehler des Pthread-Interfaces werden mit einer genauen Fehlerangabe<br />

stets auf dem Bildschirm ausgegeben (zusätzlich zu dem Fehlercode,<br />

wie er im Pthread-Standard vorgesehen ist.<br />

Das Pthread-Interface sollte separat compiliert werden und vor dem dyn<strong>am</strong>ischen<br />

Linken der Anwendung in das VxWorks-Betriebssystem geladen werden.<br />

Es ist zwar auch möglich, es statisch in <strong>die</strong> Anwendung zu linken, aber<br />

nicht empfohlen, da es als Erweiterung des Betriebssystem nicht einer speziellen<br />

Anwendung zugeordnet werden sollte.<br />

Literatur<br />

[1] J. Bengtsson. Alarm-Schleife <strong>am</strong> HERA-Protonen-Speicherring. DESY<br />

internal note (F51 H), 1989.


LITERATUR 81<br />

[2] ISO/IEC DIS 14882 Progr<strong>am</strong>ming Languages — C++.<br />

[3] I. Deloose, P. Duval, and H. Wu. The use of ACOP tools in writing<br />

control system software. In Proceedings of the International Conference<br />

on Accelerator and Large Experimental Physics Control Systems (ICA-<br />

LEPCS 97), 1997. CERN-PS-97-067.<br />

[4] P. Duval. Notes on the latest release of the PKTR control system software.<br />

DESY internal note (MKI), 1998.<br />

[5] P.D. Duval, K.H. Mess, and H.G. Wu. Software interface to the HERA<br />

proton be<strong>am</strong> position monitors. Technical report, DESY, 1991. DESY-<br />

HERA-91-16.<br />

[6] Philip Duval. The PKTR control system guide. DESY internal note<br />

(MKI).<br />

[7] Bill O. Gallmeister. POSIX.4. O’Reilly & Associates, Inc., 1995.<br />

[8] Johann Wolfgang Goethe. Meisterwerke der Weltliteratur, volume 3,<br />

S<strong>am</strong>melband Faust — Der Tragö<strong>die</strong> erster Teil. Neuer Kaiser Verlag –<br />

Gesellschaft m. b. H., 1997.<br />

[9] Persönliche Unterredung mit Steve Herb (DESY MKI).<br />

[10] Ralf Guido Herrtwich and Günter Hommel. Nebenläufige Progr<strong>am</strong>me.<br />

Springer Verlag, 1994.<br />

[11] A. Jacob, K.H. Mess, V. Nedic, and M. Wendt. The Hera-P BPM<br />

readout system. In Proceedings of the European Particle Accelerator<br />

Conference (EPAC 90), volume 1, pages 16–18, 1990. DESY-HERA-90-<br />

11.<br />

[12] Bradford Nichols, Dick Buttlar, and Jacqueline Proulx Farrell. Pthreads<br />

Progr<strong>am</strong>ming. O’Reilly & Associates, Inc., 1996.<br />

[13] Peter Prinz and Ulla Kirch-Prinz. Objektorientiert progr<strong>am</strong>mieren mit<br />

ANSI-C++. Prentice Hall, 1998.<br />

[14] IEEE Standard for Information Technology Portable Operating System<br />

Interface (POSIX) Part 1: System Application Progr<strong>am</strong>ming Interface<br />

(API) Amendment 2: Threads Extension [C Language].<br />

[15] S. Schlögl. Einsatz von PIN-Photodioden als Proton-Strahlverlustmonitore<br />

bei HERA. Master’s thesis, II. Institut <strong>für</strong> Experimentalphysik der<br />

Universität H<strong>am</strong>burg, 1992.


82 LITERATUR<br />

[16] S. Schlögl and K. Wittenburg. A be<strong>am</strong> loss monitor system for HERA. In<br />

International Journal of Modern Physics A, Proc. Suppl. 2A, volume 1,<br />

pages 254–256, 1992. DESY-HERA-92-19.<br />

[17] U. Schneekloth. Recent HERA results and future prospects. Technical<br />

report, DESY, 1998. DESY-98-060.<br />

[18] W. Schütte, M. Wendt, and K.H. Mess. The new directional coupler<br />

pickup for the Hera proton be<strong>am</strong> position monitoring system. In Proceedings<br />

of the IEEE Particle Accelerator Conference: Accelerator Engineering<br />

And Technology, pages 1725–1727, 1987. DESY-HERA-87-08.<br />

[19] Autor unbekannt. Prozeßdatenerfassung — SEDAC. DESY internal<br />

note (MKI).<br />

[20] Matthias Werner. SEDAC-Crate-Controller CC4. DESY internal note<br />

(MKI, DOK-CC4), 1992.<br />

[21] Matthias Werner. SEDAC — Ein Überblick. DESY internal note (MKI),<br />

1996.<br />

[22] Helmut Wiedemann. Particle Accelerator Physics. Springer Verlag,<br />

1993.<br />

[23] B. H. Wiik. HERA status. In Physics at HERA, volume 1, pages 1–16,<br />

1992.<br />

[24] Klaus Wille. Physik der Teilchenbeschleuniger und Synchrotronstrahlungsquellen.<br />

B. G. Teubner Stuttgart, 1992.<br />

[25] F. Willeke. HERA status and upgrade plans. In Proceedings of the<br />

17TH IEEE Particle Accelerator Conference (PAC 97), 1997. DESY-<br />

M-97-10S.<br />

[26] K. Willner. Dioden Strahlverlust Monitore — Technische Informationen<br />

zur Inbetriebnahme, Test, Progr<strong>am</strong>mierung. Technical report, DESY<br />

(F51, PKTR), 1991. PKTR Note No. 71.<br />

[27] WindRiver Systems, Inc. VxWorks 5.3.1 Progr<strong>am</strong>mer’s Guide, 1 edition,<br />

1997.<br />

[28] K. Wittenburg. Be<strong>am</strong> loss monitors for the HERA proton ring. In<br />

Proceedings of the European Particle Accelerator Conference (EPAC 90),<br />

volume 1, pages 789–790, 1990. DESY-HERA-90-11.


LITERATUR 83<br />

[29] K. Wittenburg. Preservation of be<strong>am</strong> loss induced quenches, be<strong>am</strong> lifetime<br />

and be<strong>am</strong> loss measurements with the HERA-p be<strong>am</strong> loss monitor<br />

system. Nuclear Instruments & Methods in Physics, A(345):226–229,<br />

1994. DESY-94-003.<br />

[30] H. G. Wu. Description for HERA-P BPM front-end equipment function<br />

calls. DESY internal note (MKI, BPMFEC.DOC).<br />

[31] Honggong Wu. HERA proton position monitor digital (PPD) interface<br />

module. DESY internal document for PPD Users (MKI), 1990.<br />

[32] Konzept der Alarm-Loop. Leider nur lokal vom DESY erreichbar.<br />

http://mkiwww.desy.de/export.www/pktr/hera qp/dokument/alnt01.htm.<br />

[33] Informationen über das kommerziell verfügbare Pthread-Interface gibt<br />

es bei der Firma Dot4. Sie ist im Internet unter http://www.dot4.com<br />

erreichbar.<br />

[34] Aktuelle Informationen über das Projekt HERA-Luminosity-Upgrade<br />

gibt es im Internet unter http://www.desy.de/hera/lumiup/lumi.html.

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!