Entwicklung und Test

eines universellen Steuerkurvengenerators für das ELSA-Kontrollsystem

vorgelegt von Harald H.-J. Bongartz aus Bonn

Bonn 1993

1

Inhalt

1 Einleitung 1

2 Zeitabhängige Steuerkurven bei ELSA 2 2.1 Die Elektronen-Stretcher-Anlage ELSA . . . . . . . . . . . . . . . . . . . . . . . . 2 2.2 Die Teilchenbewegung im Elektronen-Beschleuniger . . . . . . . . . . . . . . . . . . 5 2.3 Der Begriff der Steuerkurve . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 2.4 Die Erzeugung und Verarbeitung von Steuerkurven für ELSA . . . . . . . . . . . . 13 2.5 Die Problematik der Erzeugung von Steuerkurven . . . . . . . . . . . . . . . . . . . 16

3 Entwurf des Steuerkurvengenerators 19 3.1 Anforderungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 3.2 Diskussion zum Einsatz Arbiträrer Funktions-Generatoren . . . . . . . . . . . . . . 20 3.3 Verwendete Programmiersprache und Benutzeroberfläche . . . . . . . . . . . . . . 21 3.4 Ansatz zur Definition von Steuerkurven . . . . . . . . . . . . . . . . . . . . . . . . 23

4 Realisierung des Steuerkurvengenerators WaVe 27 4.1 Interne Datenstrukturen und Algorithmen . . . . . . . . . . . . . . . . . . . . . . . 27 4.2 Erstellen und Bearbeiten von Steuerkurven . . . . . . . . . . . . . . . . . . . . . . 33 4.3 Ein- und Ausgabe von Steuerkurven . . . . . . . . . . . . . . . . . . . . . . . . . . 37 4.4 Einsatz auf unterschiedlichen Rechnern . . . . . . . . . . . . . . . . . . . . . . . . . 40

5 Tests und Anwendungen 41 5.1 Tests der internen Programmfunktionen . . . . . . . . . . . . . . . . . . . . . . . . 41 5.2 Tests mit dem ELSA-Kontrollsystem . . . . . . . . . . . . . . . . . . . . . . . . . . 41 5.3 Tests mit Dipolen und Extraktions-Quadrupolen . . . . . . . . . . . . . . . . . . . 41 5.4 Nachbeschleunigung für den Speicherring-Betrieb . . . . . . . . . . . . . . . . . . . 44 5.5 Extraktion aus ELSA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 5.6 Ausblick . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

6 Zusammenfassung 53 ii INHALT A Definition der Syntax von Funktionstermen 56 B Definitionen verschiedener Interpolationsverfahren 58 C Steuerkurvenentwurf mit dem Programm WaVe 60

C.1 Der Start von WaVe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 C.2 Erzeugen und Bearbeiten von Steuerkurven . . . . . . . . . . . . . . . . . . . . . . 61 C.3 Konfiguration von WaVe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

D Installation 65 Literaturverzeichnis 66

1. Einleitung

Am Physikalischen Institut der Universität Bonn werden Experimente im Bereiche der Mittelenergiephysik mit Elektronen und energiemarkierten Photonen sowie Experimente mit Synchrotron-Strahlung durchgeführt. Für diese Versuche stehen zwei Beschleuniger zur Verfügung: das 1967 in Betrieb genommene Elektronen-Synchrotron mit einer maximalen Teilchenenergie von 2,5 GeV [Alt68] und die 1987 hinzugekommene Elektronen-Stretcher-Anlage ELSA [Hus84]. Durch den prinzipbedingt pulsförmigen Strom im Synchrotron wird das maximale Tastverhältnis, d. h. der Quotient aus nutzbarer Extraktionszeit und Gesamtdauer eines Beschleunigungszyklus, festgelegt. Mit einer festen Zyklusdauer von 20 ms und einer Extraktionszeit von 1 ms liegt das Tastverhältnis des Bonner Synchrotrons bei 5 Prozent. Dieses Tastverhältnis limitiert die erreichbaren Zählraten, da eine Erhöhung des Strahlstroms eine zu große Anzahl von Zufallskoinzidenzen in den Detektoren der angeschlossenen Experimente zur Folge hätte. Eine Steigerung dieses Wertes auf theoretisch annähernd hundert Prozent konnte erst mit der Stretcher-Anlage ELSA erreicht werden. Über eine Transferstrecke wird sie mit dem im Synchrotron vorbeschleunigten Elektronenstrahl über einen oder mehrere Zyklen gefüllt. Anschließend kann der Teilchenstrahl gleichmäßig extrahiert werden. Auch ist eine Nachbeschleunigung der Elektronen auf bis zu 3,5 GeV möglich, was die Erzeugung von Vektormesonen bis zu einer Masse von 1,8 GeV ermöglichen wird. Durch die zeitliche Streckung der Extraktionszeit ist auch bei Nachbeschleunigung ein Tastverhältnis von über 50 Prozent erreichbar. Ein weiterer Nutzen von ELSA ist der Einsatz als Langzeit-Speicherring zur gezielten Produktion von Synchrotronstrahlung. Zur Realisierung der Nachbeschleunigung in ELSA ist es notwendig, eine schnelle Steuerung der Dipol- und Haupt-Quadrupolmagnete, unter Umständen auch der Hochfrequenzanlage, zu ermöglichen. Die dafür benötigten Steuerkurven lassen sich jedoch nicht vollständig analytisch bestimmen. Daher müssen durch Untersuchung des Maschinenverhaltens bei Variation dieser Ansteuerung die optimalen Steuerkurven für den Nachbeschleunigungsbetrieb ermittelt werden. Auch für weitere maschinenphysikalische Untersuchungen, z. B. bei der Resonanzextraktion aus ELSA, ist es wünschenswert, beliebige Steuerkurven erzeugen zu können. Zu diesem Zweck wurde im Rahmen der vorliegenden Arbeit ein Programm entwickelt, das es dem Beschleuniger-Physiker ermöglicht, auf flexible Weise alle benötigten Steuerkurven interaktiv zu entwerfen und auch während des Beschleunigerbetriebes zu verändern. Durch die Verwendung einer grafischen Benutzerschnittstelle wird ein direkter Bezug zwischen der entworfenen Steuerkurve und der beeinflußten physikalischen Größe erreicht. Damit ist es möglich, maschinenphysikalische Untersuchungsergebnisse schnell und einfach in eine optimierte Ansteuerung umzusetzen. Nach Entwurf und Programmierung dieses Steuerkurvengenerators wurde seine Funktionstüchtigkeit in Tests mit dem ELSA-Kontrollsystem überprüft. Schließlich wurde das Programm im praktischen Einsatz bei der Extraktion aus ELSA und zur Nachbeschleunigung in ELSA mit Erfolg angewendet.

2. Zeitabhängige Steuerkurven bei ELSA

2.1 Die Elektronen-Stretcher-Anlage ELSA

Die Beschleuniger-Anlage ELSA wurde gebaut, um den Experimenten der Mittelenergiephysik einen Elektronenstrahl mit höherem Tastverhältnis und mit höherer Maximalenergie zur Verfügung zu stellen, als dies mit dem vorhandenen 2,5-GeV-Synchrotron möglich ist. Gleichzeitig erlaubt die Auslegung des Beschleunigers nicht nur die Verwendung als ”Stretcher“, also Kurzzeit-Speicherring, sondern auch den Einsatz als Langzeit-Speicherring für die gezielte Produktion von Synchrotronstrahlung.

Die Experimente der Mittelenergiephysik nutzen teils direkt den Elektronenstrahl aus ELSA für Streuversuche, teils auch energiemarkierte Photonen, die aus den Elektronen mit Hilfe eines Konversions-Targets erzeugt werden. Neue Erkenntnisse erhofft man sich in Zukunft, wenn polarisierte Elektronen in ELSA beschleunigt werden. Unter Verwendung ebenfalls polarisierter Targets sollen dann auch Doppelpolarisationsversuche durchgeführt werden.

2.1.1 Aufbau

In der Abbildung 2.1 sind in der linken unteren Ecke die beiden Linearbeschleuniger (”Linacs“) zu sehen, die das darüberliegende 2,5-GeV-Synchrotron speisen. Beide Linacs sollen in absehbarer Zeit auch polarisierte Elektronen liefern.

Das 1967 in Betrieb genommene Synchrotron ist eine ”Combined Function“-Maschine, d. h. die strahlfokussierenden Quadrupolfelder werden durch Feldgradienten in den strahlführenden Magneten erzeugt [Alt68]. Von diesen Magneten existieren zwölf Stück, die gleichmäßig über den Umfang von 69,60 m verteilt sind. Das Synchrotron arbeitet mit einer Zyklusfrequenz von 50 Hz, die zur Frequenz des versorgenden Stromnetzes synchron läuft. Das Magnetfeld wird durch einen sinusförmigen Strom und einen überlagerten Gleichstrom erzeugt:

I_{Dipole} = I_{=} + Î_{≈} sin (ω_{Netz}t)

Die Amplitude I_{=} des Gleichstroms ist dabei nur wenig geringer als die des Wechselstroms, so daß während eines Zyklus das Magnetfeld nur für kurze Zeit die Polarität wechselt. Der Zeitpunkt des minimalen Magnetfeldes im Synchrotron wird dabei benutzt, um einen Trigger für die Extraktion aus dem Synchrotron und die Injektion in ELSA zu generieren, sofern in diesem Zyklus ein Strahltransfer stattfinden soll.

Die Extraktion aus dem Synchrotron zum Transfer nach ELSA erfolgt nahe einer halbzahligen Resonanz mittels einer ”Shaving“-Methode, d. h. der Elektronenstrahl wird über mehrere Umläufe 2.1. DIE ELEKTRONEN-STRETCHER-ANLAGE ELSA 3

Abbildung 2.1: Die Beschleuniger-Anlage des Physikalischen Institutes an der Schneide des Extraktionsseptums ”abgeschält“. Der Septummagnet erlaubt eine Extraktion bis zu einer maximalen Teilchenenergie von 1,8 GeV.

Der Transport der Elektronen vom Synchrotron zur Stretcher-Anlage ELSA erfolgt über eine Transferstrecke, deren Elemente ebenfalls für eine maximale Teilchenenergie von 1,8 GeV ausgelegt sind [Nuh88].

Der Stretcher ELSA ist eine ”Separated Function“-Maschine, d. h. Strahlführung und -fokussie-rung sind durch getrennte Magnete realisiert [Hus84]. Die maximale Energie der umlaufenden Elektronen beträgt 3,5 GeV. Der ELSA-Ring hat einen Umfang von 164,40 m und ist aus sechzehn sogenannten FODO-Zellen aufgebaut; jede Zelle besteht aus einem fokussierenden Quadrupol, einer nicht-fokussierenden Strecke, einem defokussierenden Quadrupol und einer weiteren fokussierungsfreien Strecke. Die Kombination aus einem Quadrupol und einer darauffolgenden nicht-fokussierenden Strecke bezeichnet man als Halbzelle. In 24 der insgesamt 32 fokussierungsfreien Strecken sind die ablenkenden Dipolmagnete untergebracht. Die übrigen acht Halbzellen enthalten keine Dipole. Sie werden zur Unterbringung anderer Elemente genutzt.

Zur Fokussierung des Elektronenstrahls in ELSA dienen je sechzehn fokussierende und defokussierende Quadrupol-Magnete. Die Korrektur der natürlichen Chromatizität des Ringes wird durch acht über den Ring verteilte Sextupol-Magnete vorgenommen, weitere vier Sextupole und vier schnelle Quadrupole ohne Eisenjoch werden für die Extraktion aus ELSA benötigt [Dre84, Ebe87].

Zur Beschleunigung bzw. zum Ausgleich der Energieverluste der Elektronen dienen zwei Hochfrequenzanlagen. Ein 50-kW-Sender speist einen einzelligen Resonator (DORIS-Typ), ein 250-kW-Sender zwei fünfzellige Resonatoren (PETRA-Typ). Um eine Akzeptanz für den injizierten Elektronenstrahl in ELSA zu erreichen, werden sowohl die Hochfrequenz von ELSA als auch die des Synchrotrons aus einem Mutter-Oszillator gespeist. Die Frequenz beträgt ca. 500 MHz und führt in ELSA zu einer Harmonischenzahl von 274.

Zur Nutzung der in den Dipolmagneten entstehenden Synchrotronstrahlung, deren Spektrum sich bis in den Röntgenbereich erstreckt, dienen zur Zeit sieben Strahlrohre, die zu externen Labors führen. In diesen werden hauptsächlich Untersuchungen und Entwicklungen im Bereich der hochauflösenden Spektroskopie und der Mikrolithografie durchgeführt.

Die Extraktion der Elektronen für die Experimente der Mittelenergiephysik erfolgt in den Halbzellen 20/21 für das Experiment PHOENICS und 22/23 für die Experimente SAPHIR und ELAN. Es werden jeweils zwei Halbzellen für die Extraktion benötigt, da die zu extrahierenden Elektronen erst an einem Vorseptummagnet eine kleine Winkelablenkung erfahren, um dann am Hauptseptummagnet mit einer größeren Ablenkung endgültig in die externe Strahlführung umgelenkt zu werden.

Die an ELSA operierenden Experimente der Mittelenergiephysik nutzen teils direkt den extrahierten Elektronenstrahl zu Streuversuchen (ELAN), teils werden mit den Elektronen an einem Konversionstarget reelle Photonen erzeugt und deren Wechselwirkungen mit Nukleonen und Deuteronen (SAPHIR) bzw. leichten Kernen (PHOENICS) untersucht.

2.1.2 Betriebsarten

Das Injektionssystem der Stretcher-Anlage ELSA ist dazu konzipiert, mehr als eine Füllung des Synchrotrons in ELSA zu übernehmen. Dadurch ist eine Akkumulation von Elektronen möglich und verschiedene Betriebsarten lassen sich verwirklichen.

Stretcher-Betriebsart: Beim Betrieb als Stretcher wird in ELSA eine Füllung des Synchrotrons gespeichert, bei konstanter Energie gleichmäßig extrahiert und den Mittelenergie-Ex-perimenten zugeführt. Die maximale Teilchenenergie ist durch die Extraktionselemente des Synchrotrons und den Transferweg zwischen Synchrotron und ELSA auf 1,8 GeV begrenzt. In dieser Betriebsart läßt sich ein makroskopisches Tastverhältnis von annähernd 100% erreichen. Eine obere Grenze wird durch die für die Injektion benötigte Zeit gesetzt.^{1}

Nachbeschleuniger-Betriebsart: Im Nachbeschleuniger-Betrieb werden ein oder mehrere aufeinanderfolgende Füllungen des Synchrotrons in ELSA injiziert, anschließend auf eine Teilchenenergie von bis zu 3,5 GeV beschleunigt und dann gleichmäßig extrahiert. Die zur Nachbeschleunigung benötigte Zeit sowie die Rückstellzeit der ELSA-Magnete für die nächste Injektion gehen für die Extraktion verloren und verringern so das Tastverhältnis. Durch eine Verlängerung der Extraktionszeit können aber auch hier je nach den Anforderungen des Experimentes an die Strahlintensität zwischen 60% und 90% erreicht werden.

Speicherring-Betriebsart: Für die gezielte Produktion von Synchrotronstrahlung wird ELSA als Speicherring betrieben. Dabei wird mit mehreren Synchrotron-Füllungen ein möglichst hoher Strahlstrom akkumuliert. Falls das gewünschte Strahlungsspektrum es nötig macht, wird innerhalb einiger hundert Millisekunden auf die gewünschte Endenergie nachbeschleunigt. Anschließend wird der Teilchenstrahl nur noch bei konstanter Energie gespeichert, bis seine Intensität unter eine Grenze gesunken ist, die der minimal nutzbaren Synchrotronstrahlungsintensität entspricht. Es lassen sich mit ELSA Speicherzeiten bis über eine Stunde erreichen.

2.2 Die Teilchenbewegung im Elektronen-Beschleuniger

In einem Zirkularbeschleuniger wie ELSA werden Elektronen durch magnetische Felder auf einer annähernd kreisförmigen Bahn gehalten. Für die Beschreibung der Teilchenbewegung wird meist ein lokales kartesisches Koordinatensystem benutzt, dessen Ursprung sich auf der Teilchen-Sollbahn mitbewegt (s. Abb. 2.2). Dabei ist die Koordinate s immer tangential zur Sollbahn in Bewegungsrichtung. Die transversalen Koordinaten werden mit x und z bezeichnet, wobei x der Horizontalen im Laborsystem entspricht. Man kann vereinfachend voraussetzen, daß nur transversale Magnetfeldkomponenten auftreten. Damit erhält man ein magnetisches Feld der Form B⃗ = (B_{x}, B_{z}, 0) an jedem Ort der Sollbahn. Die Bewegung eines Teilchens mit Impuls p ergibt sich als Gleichgewicht zwischen Lorentzkraft und Zentrifugalkraft

\frac{1}{ρ(x, z, s)} = \frac{e}{p} B_{z}(x, z, s) .

ρ bezeichnet dabei den lokalen Biegeradius der Teilchenbahn. Da die transversalen Abweichungen von der Sollbahn klein gegen diesen Radius sind, kann man den Term auf der rechten Seite für kleine x bzw. kleine z entwickeln. Man erhält für die x-Koordinate

\frac{e}{p}B_{z}(x) = \frac{e}{p}B_{z,0} + \frac{e}{p} \frac{dB_{z}}{dx} x + \frac{1}{2!} \frac{e}{p} \frac{d^{2}B_{z}}{dx^{2}} x^{2} + \frac{1}{3!} \frac{e}{p} \frac{d^{3}B_{z}}{dx^{3}} x^{3} + ⋯

1In allen Betriebsarten hängt die Kontinuität des extrahierten Strahles auch vom mikroskopischen Tastverhältnis ab, das durch die Füllstruktur von ELSA bestimmt wird.

................................................................................................................ ................. ............................................................................................................................ ................. ............................................................................................ .................  ^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.} lokale Krümmung der Teilchenbahn^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.} z  x s^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.} ^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.} ρ⃗  ^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}  ^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}  ^{.}^{.}^{.}^{.}^{.}^{.} tatsächliche Teilchenbahn

Abbildung 2.2: Verwendetes Koordinatensystem

und die analoge Gleichung für die z-Koordinate [Wil92]. Die einzelnen Terme sind dabei die Multipol-Anteile der Magnetfelder:

Dipol:  \frac{1}{R} = \frac{e}{p}B_{z,0} ,

Quadrupol:  k = \frac{e}{p} \frac{dB_{z}}{dx} ,

Sextupol:  m = \frac{e}{p} \frac{d^{2}B_{z}}{dx^{2}} ,

höhere Multipole:  ⋮  .

Definitionsgemäß wird ein Quadrupolmagnet als fokussierend bezeichnet, wenn k < 0, wenn er also in horizontaler Richtung fokussierend wirkt. Im folgenden wird die Teilchenbewegung zunächst nur in linearer Näherung betrachtet, d. h. nur bis zur Quadrupol-Ordnung. Nicht-lineare Effekte, wie sie durch Sextupol-Felder erzeugt werden, kommen bei der Beschreibung der Resonanzextraktion in Abschnitt 2.2.3 zur Sprache. Die Teilchenbewegung in den transversalen Koordinaten kann bei linearem Ansatz entkoppelt und durch zwei Differentialgleichungen vom Hill’schen Typ definiert werden. Unter der Annahme, daß die Dipolfelder nur vertikal wirken, d. h. daß die Sollbahn in einer horizontalen Ebene liegt, ergibt sich [Wil92, San70]:

x′′(s) + (\frac{1}{ρ^{2}(s)} − k(s) ) x(s) = \frac{1}{ρ(s)} \frac{Δp}{p_{0}} + F_{x}(s) ,  (2.1)
y′′(s) + k(s)y(s) = F_{y}(s) .  (2.2)

Hierbei bezeichnet k(s) die oben definierte, auf Sollenergie normierte Quadrupolstärke am Ort s.^{2} Auf der rechten Seite der Gleichungen gibt p_{0} den Sollimpuls der Teilchen an, Δp die Abweichung von diesem Sollimpuls und F_{x,y}(s) jeweils eine Funktion, welche die Störungen (”Kicks“) durch Feldfehler am Ort s zusammenfaßt. Im folgenden sei nur die horizontale Bewegung, also die x-Koordinate betrachtet. Die Lösungen der Gleichung (2.1) lassen sich dann in drei Anteile separieren:

2Analog zur Quadrupolstärke k wird die Größe 1/ρ(s) auch als die auf Sollenergie normierte Dipolstärke

bezeichnet.

x(s) = x_{β}(s) + x_{D}(s) + x_{C}(s) .  (2.3)

Der Anteil x_{β}(s) hat die Form

x_{β}(s) = \sqrt{ϵβ_{x}(s)} cos(μ(s) + μ_{0})  (2.4)
mit μ(s) = ∫_{s_{0}}^{s} \frac{ds′}{β_{x}(s′)}  (2.5)

und wird als Betatronschwingung bezeichnet. Er ist die Lösung der homogenen Differentialgleichung, die aus (2.1) entsteht, wenn Teilchen mit Sollimpuls, also \frac{Δp}{p} = 0, und ideale Felder (F (s) ≡ 0) betrachtet werden:

\frac{d^{2}x_{β}}{ds^{2}} + [\frac{1}{ρ^{2}(s)} − k(s)] x_{β} = 0 .  (2.6)

Die (horizontale) Betafunktion β_{x}(s) wird durch die optischen Elemente des Beschleunigers definiert und ist periodisch mit der Länge L der Sollbahn: β_{x}(s + L) = β_{x}(s). Die Emittanz ϵ und die Startphase μ_{0} werden durch die Teilcheninjektion vorgegeben. Die Größe μ(s) definiert nach Gleichung (2.5) den Phasenvorschub der Betatronschwingung ab einer Stelle s_{0}. Der Phasenvorschub über einen Umlauf ist durch die Periodizität der Betafunktion unabhängig von Integrationsstart s_{0} und definiert den sogenannten horizontalen Arbeitspunkt Q_{x}:

Q_{x} = \frac{μ(s_{0} + L)}{2π} = \frac{1}{2π} ∮ \frac{1}{β_{x}(s′)} ds′ .  (2.7)

Analog wird durch die vertikale Betafunktion β_{y} der vertikale Arbeitspunkt Q_{y} bestimmt. Der Arbeitspunkt entspricht der Anzahl der Betatronschwingungen pro Umlauf. Man kann sich die Betatronschwingung veranschaulichen, wenn man an einer beliebigen Stelle s_{0} aus der transversalen Koordinate (z. B. x(s_{0})) und ihrem Winkel zur Sollbahn (dargestellt durch x′(s_{0}) = \frac{dx}{ds} |_{s_{0}}) ein Phasenraumdiagramm^{3} bildet. Trägt man alle möglichen Werte der Betatronschwingung (2.4) an dieser Stelle s_{0} in dieses Diagramm ein, so erhält man eine Ellipse (”Phasenellipse“) mit der Fläche F = πϵ. Der zweite Anteil der Teilchenbewegung in Gleichung (2.3) berücksichtigt die lokalen Feldstörungen F_{x}(s). Es ergibt sich die inhomogene Differentialgleichung

\frac{d^{2}x_{C}(s)}{ds^{2}} + [\frac{1}{ρ^{2}(s)} − k(s)] x_{C}(s) = F_{x}(s) .  (2.8)

Sie beschreibt die in sich geschlossene, gestörte Gleichgewichtsbahn (”closed-orbit“) für ein Teilchen ohne Impulsabweichung. Für eine beliebige Verteilung der durch die Feldstörungen hervorgerufenen Kickwinkel δθ über den Orbit erhält man [San70]

x_{C}(s) = \frac{\sqrt{β_{x}(s)}}{2 sin(πQ_{x})} ∮ δθ(s̃) cos(πQ_{x} − μ_{x}(s̃) − μ_{x}(s)) ds̃ .  (2.9)

3In der Beschleunigerphysik wird üblicherweise das Tupel (x, x′) statt der kanonischen Variablen x und p als

Phasenraumkoordinaten verwendet.

Abbildung 2.3: Beispiel eines Phasenraumdiagrammes

Wie zu erkennen, ist die Lösung eine mit der Orbitlänge periodische Funktion, die hierdurch beschriebene Bahn ist also wie gefordert geschlossen.

Dritter Anteil der horizontalen Bewegung ist die Dispersion. Sie beschreibt die Verschiebung des Orbits für Teilchen mit einer Abweichung vom Sollimpuls. Diese Verschiebung ist proportional zur Impulsabweichung

x_{D}(s) = D(s) \frac{Δp}{p} ,

und D(s), die Dispersionsfunktion des Beschleunigers, ist ebenfalls Lösung einer inhomogenen Differentialgleichung:

\frac{d^{2}D(s)}{ds^{2}} + [\frac{1}{ρ^{2}(s)} − k(s)] D(s) = \frac{1}{ρ(s)}
und  D(s) = D(s + L) .

Die Dispersion bewirkt eine von der Impulsabweichung abhängige Änderung der Sollbahnlänge, d. h. ΔL/L = α Δp/p. Der Proportionalitätsfaktor α wird als ”momentum compaction factor“ bezeichnet. Durch diese Längenänderung folgt auch eine Phasenverschiebung beim Durchlaufen des Hochfrequenzfeldes.

Die in den Differentialgleichungen auftauchende Quadrupolstärke k(s) ist ebenfalls vom Teilchenimpuls abhängig [Wil92]:

k(s) = \frac{e}{p} g(s) = \frac{e}{p_{0} + Δp} g(s) ≈ \frac{e}{p_{0}} (1 − \frac{Δp}{p_{0}}) g(s) = k(s) + Δk(s) .

Die dadurch bewirkte Impulsabhängigkeit der Strahlfokussierung wird in Analogie zur klassischen Optik als Chromatizität bezeichnet. Durch die Quadrupolstärke hängt natürlich auch der Arbeitspunkt von der Impulsabweichung ab. In erster Näherung ergibt sich der lineare Zusammenhang

Q(Δp) = ξ_{x} Δp + Q(Δp = 0) ,

wobei der Proportionalitätsfaktor ξ_{x} als horizontale Chromatizität bezeichnet wird. Durch den Einsatz von Sextupol-Magneten kann diese Chromatizität kompensiert werden.

2.2.1 Steuerung der Multipole über Magnetströme

In allen drei zugrundeliegenden Differentialgleichungen des hier vorgestellten linearen Modells sind die Dipol- und die Quadrupolstärke die Parameter, welche die Maschinenoptik bestimmen. Da die zugehörigen Felder in stromdurchflossenen Magneten erzeugt werden, erfolgt eine Variation dieser Größen durch Veränderung der Magnetströme. Für einen Dipol mit einem Polschuhabstand h und n Wicklungen ergibt sich in erster Näherung im homogenen Feldbereich

\frac{1}{ρ} = \frac{e}{p}μ_{0} \frac{nI_{DP}}{h} ∝ \frac{I_{DP}}{p} .  (2.10)

Analog ergibt sich für einen Quadrupol mit einem Abstand a zwischen Polschuh und Symmetrieachse der Feldgradient

g = \frac{dB_{z}}{dx} = \frac{2μ_{0}nI_{QP}}{a^{2}} ∝ I_{QP}

bzw. die mit dem Teilchenimpuls skalierte Quadrupolstärke

k = \frac{eg}{p} ∝ \frac{I_{QP}}{p} .  (2.11)

Insbesondere der Arbeitspunkt des Beschleunigers ist abhängig von der Verteilung der Quadrupolstärken über den Orbit und somit eine Funktion der Quadrupolströme und der Teilchenergie:

Q = f(k) = f̃(I_{QP}, p) .  (2.12)

Für reale Magnete ist die Abhängigkeit jedoch komplizierter als in (2.10) und (2.11) angegeben. Um eine exakte Steuerung der gewünschten Multipolstärke über den Strom vornehmen zu können, wird der fertige Magnet ausgemessen und eine Eichkurve erstellt. Mit einem linearen Fit oder einem Fit höherer Ordnung (in der Regel Polynome bis zum Grad sechs) lassen sich im benötigten Strombereich sehr gute Näherungen erreichen.

2.2.2 Nachbeschleunigung

Eine Aufgabe der Stretcheranlage ELSA liegt in der Nachbeschleunigung der vom Synchrotron gelieferten Elektronen auf eine Energie bis zu 3,5 GeV. Die zusätzliche kinetische Energie wird durch das beschleunigende Feld im Hochfrequenz-Resonator geliefert. Damit ein Teilchen mit Sollimpuls stets auf der Sollbahn umläuft, muß ihm bei jedem Umlauf eine Energie zugeführt werden, die einerseits die Strahlungsverluste pro Umlauf gerade ausgleicht und andererseits den bei einer Erhöhung des Führungsfeldes benötigten Impulszuwachs bewirkt. Ist diese Bedingung für das beschleunigende Feld stets erfüllt, so befindet sich das Teilchen in ”Sollphase“ zum Hochfrequenzfeld. Eine Impulsabweichung der Teilchen führt zum Durchlaufen einer von der Sollbahn abweichenden Dispersionsbahn und damit zu einer Phasenabweichung beim nächsten Durchlaufen der Hochfrequenzstrecke. Dadurch trifft das Teilchen auf eine ebenfalls abweichende elektrische Feldstärke. Bewegen sich Teilchen mit Sollimpuls gerade auf der abfallenden Flanke der Hochspannung, so werden Teilchen mit niedrigerem Impuls stärker und solche mit höherem Impuls schwächer beschleunigt, die Impulsabweichung wird ausgeglichen.^{4}

4Dies gilt nur für Teilchen mit relativistischer Geschwindigkeit; andernfalls liegt der phasenstabile Bereich auf der

ansteigenden Flanke der Hochfrequenz.

Abbildung 2.4: Phasenlage der Elektronen im Hochfrequenzfeld

Teilchen mit geringen Impulsabweichungen führen somit Schwingungen um die Sollphase der Hochfrequenz durch, sogenannte Synchrotronschwingungen. Ist die Abweichung zu groß, wird das Teilchen instabil und geht verloren. Bedingt durch den periodischen Charakter der Hochfrequenz finden sich derart stabile Bereiche jeweils im Abstand von 2π der HF-Phase. Durch die Hochfrequenz wird daher eine longitudinale Aufteilung des im Beschleuniger umlaufenden Elektronenstrahls in einzelne stabile Phasen-Bereiche, sogenannte ”Buckets“, vorgegeben. Phasenstabilität wird nur dann erreicht, wenn die Hochfrequenz ein ganzzahliges Vielfaches der Umlaufsfrequenz der Elektronen ist, also ω_{HF} = qω_{u} mit q ∈ IN. Der Proportionalitätsfaktor q wird als Harmonischenzahl des Beschleunigers bezeichnet. Eine Beschleunigung der umlaufenden Elektronen erfolgt bei ELSA, indem bei konstanter Hochfrequenz-Amplitude nur der Strom durch die Dipol-Magnete erhöht wird. Durch diese Veränderung der Dipolstärke werden die Elektronen auf eine Dispersionsbahn gezwungen und verändern ihre Phase. Über mehrere Umläufe findet dadurch eine Verschiebung der Sollphase zu einer höheren HF-Amplitude hin statt, die Elektronen im stabilen Bereich haben höhere Energie. Die mittlere Teilchenenergie läßt sich also durch eine Variation der Dipol-Ströme kontrollieren:

E(t) = f(I_{DP}(t)) .

Um bei Veränderung des Teilchenimpulses den Arbeitspunkt des Beschleunigers konstant zu halten, muß nach Gleichung (2.12) die Quadrupolstärke k konstant gehalten und damit nach (2.11) der Quadrupolstrom I_{QP} analog zum Dipolstrom geändert werden. Für ideale Magnete und linear stromabhängige Felder ist daher

I_{QP}(p) ∝ I_{DP}(p)

hinreichende und notwendige Bedingung für die Stabilität des Arbeitspunktes.

2.2.3 Resonanz-Extraktion

Die Experimente der Mittelenergiephysik benötigen für einen optimalen Betrieb ihrer Teilchendetektoren einen möglichst gleichmäßigen Strom an extrahierten Elektronen. Eine zu hohe momentane Intensität führt zu einer hohen Zufallskoinzidenzrate oder zu Sättigungseffekten in einzelnen Detektorkomponenten.

Ziel der Extraktion ist es also, die in ELSA gespeicherten Elektronen möglichst gleichmäßig und vollständig aus dem Ring in die externe Strahlführung zu lenken. Gleichzeitig ist zu beachten, daß die Emittanz des extrahierten Strahls möglichst gering sein soll.

ELSA wurde dazu konzipiert, eine Extraktion mittels gesteuerter Annäherung des Arbeitspunktes an eine drittelzahlige horizontale Betatron-Resonanz zu erreichen [Dre84]. Angeregt wird diese durch Sextupolfelder. In der Nähe einer solchen Resonanz läßt sich die Teilchenbewegung nicht mehr durch die in Abschnitt 2.2 beschriebene lineare Teilchenoptik beschreiben: Die Sextupolfelder bewirken einen Kick der Teilchenbewegung, der Arbeitspunkt des Teilchens wird gestört und schwingt um seinen ungestörten Wert [Dre84]. In der Phasenraumdarstellung findet man statt der in der linearen Beschreibung erwarteten Bewegungsellipse eine dreiecksförmige Struktur (s. Abb. 2.5). Die Eckpunkte des Dreiecks entsprechen einem exakt drittelzahligen Arbeitspunkt

Abbildung 2.5: Phasenraum nahe einer drittelzahligen Resonanz

und sind instabile Fixpunkte. Die sie verbindenden Geraden bilden die sogenannte Separatrix, die den stabilen vom instabilen Phasenraumbereich trennt. Teilchen, die sich innerhalb der Separatrix befinden, haben eine geringe Amplitude der Arbeitspunktschwingung und laufen weiterhin stabil um, Teilchen außerhalb können den Resonanzarbeitspunkt erreichen und entfernen sich dann längs der Separatrizen immer mehr vom Orbit. Für die Extraktion ist dabei die Änderung der horizontalen Koordinate mit jedem Umlauf, die sogenannte Schrittweite, entscheidend. Ist sie zu klein, wird das Septum nicht übersprungen, sondern getroffen: Das Teilchen geht verloren. Ist sie zu groß, erhält der externe Strahl eine unerwünscht hohe Emittanz.

Eine langsame Extraktion des stabil umlaufenden Teilchenstrahls in ELSA wird dadurch erreicht, daß der stabile Phasenraumbereich verkleinert wird. Seine Fläche beträgt [Dre84]:

A = \frac{\sqrt{3}}{12} \frac{δQ^{2}}{C_{1}^{2} + C_{2}^{2}} ,

wobei δQ die Abweichung des Arbeitspunktes vom drittelzahligen Wert ist. Die Parameter C_{1} und C_{2} haben im Fall von n diskreten, über die Teilchenbahn verteilten Sextupolmomenten die Form

C_{1} = \frac{1}{4} ∑_{i=1}^{n} β_{i}^{3/2} g_{i} cos 3μ_{i} ,

C_{2} = −\frac{1}{4} ∑_{i=1}^{n} β_{i}^{3/2} g_{i} sin 3μ_{i}

mit β_{i} : Betafunktion am Ort des i. Sextupols,
μ_{i} : Phasenvorschub bis zu diesem Ort,
g_{i} : Stärke des i. Sextupols.

Wie man sieht, läßt sich eine Verkleinerung des stabilen Phasenraumbereiches durch eine Annäherung an den drittelzahligen Arbeitspunkt (δQ → 0) oder durch eine Erhöhung der Sextupolstärken g_{i} erreichen. Die Sprungweite des Elektrons hängt jedoch direkt von den Parametern C_{1} und C_{2} ab, so daß eine Variation der Sextupolmomente gleichzeitig eine Veränderung der Sprungweite und damit der Emittanz bedeutet. Aus diesem Grund wird für ELSA eine Extraktion durch Veränderung der Quadrupolstärken und damit des Arbeitspunktes vorgezogen.^{5} Die zur Extraktion benötigten Arbeitspunktverschiebungen sind nur minimal (im Promillebereich) und lassen sich daher mit den Haupt-Quadrupolen in der erforderlichen Schnelligkeit nicht erzeugen. Deshalb dienen zur Extraktion zusätzliche Luft-Quadrupole, die einen geringen, aber sehr schnellen und genau regelbaren Arbeitspunkthub ermöglichen und damit eine möglichst gleichmäßige Extraktion gewährleisten. Die Intensität des extrahierten Strahls kann somit als Funktion der Luft-Quadrupolströme beschrieben werden:

I_{ext} = f(I_{LQP}) .

Der Zusammenhang ist aber nicht linear, sondern abhängig davon, wie der Teilchenstrahl den Phasenraum in ELSA ausfüllt. Eine theoretische Bestimmung dieser Funktion erfordert daher weitergehende Berechnungen [Nec93].

2.3 Der Begriff der Steuerkurve

Wie im vorhergehenden Abschnitt erläutert wurde, verlangen die Betriebsarten von ELSA eine teilweise sehr komplizierte zeitliche Ansteuerung der Beschleunigerkomponenten, hauptsächlich der Magnete. In jedem ELSA-Zyklus, sei es mit einer Periode von 20 ms im Stretcher-Betrieb oder über zehn Sekunden im Nachbeschleunigungs-Betrieb, durchläuft die Steuerspannung der betreffenden Netzgeräte kontinuierlich einen bestimmten Signalverlauf und bewirkt damit eine analoge Veränderung z. B. des erzeugten Magnetfeldes.

Während der Endzeitpunkt eines Signalverlaufes vielleicht unbestimmbar ist — wenn beispielsweise das Ende der Speicherphase durch das Unterschreiten einer bestimmten Intensität des gespeicherten Strahles definiert ist — muß der Beginn durch einen Impuls (Trigger) angezeigt werden. Trigger erlauben die Synchronisation der Steuerung aller Beschleunigerkomponenten.

Die Gesamtheit der Werte, die dieser Signalverlauf vom Trigger bis zum Zyklusende annimmt, wird als Steuerkurve bezeichnet. Sie stellt eine Funktion dar, die jedem Zeitpunkt den Wert der zugehörigen Steuerspannung oder des zugehörigen Steuerstroms zuordnet.

Nicht jede zeitliche Ansteuerung erfolgt über eine Steuerkurve in diesem Sinne. So müssen z. B. die Kicker-Magnete auch zu einem durch einen Trigger genau festgelegten Zeitpunkt hochgefahren (”gefeuert“) werden. Da hier jedoch keine kontinuierliche Ansteuerung erforderlich ist, wird hierbei nicht von einer Steuerkurve gesprochen.

5Simulationsrechnungen zur Ermittlung der optimalen Extraktion aus ELSA hat A. Dreist in seiner Diplomarbeit

durchgeführt [Dre84].

Benötigte Steuerkurven in verschiedenen ELSA-Betriebsarten

Die folgende Übersicht faßt zusammen, welche Beschleunigerkomponenten in welchen Betriebsarten mit einem kontinuierlich veränderlichen Signal angesteuert werden müssen:

Betriebsart  Steuerkurven benötigt für
Stretcher-Betrieb  Luft-Quadrupole

Extraktions-Sextupole^{a}

Nachbeschleunigungs-Betrieb Dipole

Haupt-Quadrupole

Chromatizitäts-Sextupole^{a} Hochfrequenz-Amplitude^{a} Hochfrequenz-Phase^{a} Luft-Quadrupole Extraktions-Sextupole^{a}

Speicherring-Betrieb^{b}  Dipole

Haupt-Quadrupole

Chromatizitäts-Sextupole^{a} Hochfrequenz-Amplitude^{a} Hochfrequenz-Phase^{a}

aEine kontinuierliche Ansteuerung ist möglich, wird aber nicht vorgenommen. bIm Fall einer Nachbeschleunigung

2.4 Die Erzeugung und Verarbeitung von Steuerkurven für ELSA

2.4.1 Der Aufbau des ELSA-Kontrollsystems

Zur Steuerung der Stretcheranlage einschließlich des Strahltransfers zwischen dem Synchrotron und ELSA wurde von C. Wermelskirchen im Rahmen seiner Promotion ein rechnergestütztes Kontrollsystem entworfen [Wer88]. Der prinzipielle Aufbau ist in Abb. 2.6 dargestellt. Es lassen sich mehrere Ebenen unterscheiden:

• die Benutzerebene der Rechner-Konsolen mit der Darstellung auf grafischen Bildschirmen und der Dateneingabe über Tastatur und Rollbälle;

• der Zentralrechner zur Verarbeitung und Speicherung der Gesamtheit aller Kontrollsystemdaten in einer Datenbank und zur Steuerung der lokalen Rechner;

• das Netzwerk zur Verbindung von Zentralrechner und lokalen Rechnern;

• die Ebene der ”Front-End“-Elektronik, d. h. der lokalen Mikroprozessoren und ihrer Schnittstellen zu den Steuer- und Meßgeräten.

Über ein weiteres serielles Netzwerk (Ethernet) haben zwei Arbeitsplatzrechner, auf denen die Entwicklung und der Einsatz von weiteren Applikationen für das Kontrollsystem erfolgt, Zugriff auf die Daten, die vom Kontrollrechner verwaltet werden. Durch das Prinzip der dezentralen Datenverarbeitung, wie hier durch den Einsatz der lokalen Mikroprozessoreinheiten angewendet, wird der zentrale Kontrollrechner von einfachen Steueraufgaben entlastet. Sie werden von den lokalen Rechnern übernommen.

Abbildung 2.6: Aufbau des ELSA-Kontrollsystems

Das PADAC-System

Die Rechner-Konsolen sind die Schnittstelle zwischen den Operateuren und dem Kontrollrechner. Zur grafischen Darstellung wird das bei DESY entwickelte PADAC-System verwendet. Auf Farbbildschirmen werden Skalen und Knöpfe simuliert, die einem realen Regler, Meßgerät oder Schaltknopf entsprechen. Sie werden über ein Fadenkreuz angewählt, das durch einen Rollball gesteuert wird. Es kann dabei zwischen verschiedenen Anzeigen gewechselt werden, so daß nur die jeweils benötigten Kontrollen dargestellt werden. Diese Simulation einer Gerätebedienung erlaubt es,

• auf relativ kleinem Raum viele Kontrollen unterzubringen,

• viele von Verschleiß betroffene Eingabe- und Ausgabegeräte durch einige wenige zu ersetzen (Bildschirme, Rollbälle und Tastaturen),

• relativ einfach vorhandene Bedienelemente neu zu gruppieren oder neue hinzuzufügen und

• Kontrollelemente einzubauen, die sich nicht oder nur sehr schwierig in Form herkömmlicher Regler realisieren lassen (z. B. ein Regler zur Einstellung der von Kicker-Magneten verursachten Sollbahnbeule).

Der Kontrollrechner

Der zentrale Kontrollrechner ist eine VAX 11/750 der Firma Digital mit dem Betriebssystem VMS. Er ist für die Erfüllung mehrerer Aufgaben zuständig:

Steuerung: Benutzereingaben von den PADAC-Konsolen werden in Sollwerte für die angeschlossenen Geräte umgewandelt und an diese ausgegeben.

Visualisierung: Meßdaten werden (soweit möglich) auf den PADAC-Konsolen dargestellt.

Datenmanagement: Die Verwaltung einer Beschleuniger-Datenbank ermöglicht es, eine Maschineneinstellung mit fast allen Parametern abzuspeichern und zu einem späteren Zeitpunkt zu reproduzieren.

Überwachung: Fehlfunktionen werden gemeldet, notwendige Konsequenzen werden veranlaßt.

Die Kommunikation des Kontrollrechners mit den lokalen Mikroprozessoreinheiten erfolgt über eine serielle Verbindung mit einer Übertragungsrate von 1,5 MBit/sec. An den Kontrollrechner angeschlossen ist ein spezieller Treiber (”Line-Driver“), der die Umsetzung vom Rechnerbus auf die serielle Verbindung vornimmt. Sollwertvorgaben und Steuerbefehle werden vom Kontrollrechner über diese Verbindung an die lokalen Rechner gesendet, Istwerte und Meßdaten werden zurückgeschickt.

Das Kontrollsystem von ELSA ist somit in der Lage, direkte Steuerbefehle auszuführen, kann aber nur sehr beschränkt komplexere Steueraufgaben wahrnehmen, da weder die Leistung des Kontrollrechners noch die Bandbreite der seriellen Verbindung ausreichen, die dafür benötigte Menge an Meßdaten auszuwerten und die erforderlichen Steuerbefehle auszuführen.

So können z. B. die von den Lage- und Intensitätsmonitoren in ELSA ermittelten Meßdaten vom ELSA-Kontrollsystem zwar gesammelt, nicht jedoch ausgewertet werden.

Die Front-End-Elektronik

Zur Ankopplung der für den Beschleunigerbetrieb benötigten Meß- und Netzgeräte an das Kontrollsystem wurde von M. Schillo ein Mikroprozessorsystem auf der Basis eines 8-Bit-Prozes-sors entwickelt, das MACS (\underline{M}icroprocessor-aided-\underline{A}ccelerator-\underline{C}ontrol-\underline{S}ystem) [Sch84]. Die lokalen Rechnersysteme bestehen aus einem Gehäuse (”crate“), das bis zu sieben Prozessorkarten (MACS-Prozessor) enthält. Zu jedem dieser Prozessoren befindet sich im Gehäuse eine Ein- oder Ausgabekarte (MACS-Opto) und für alle Prozessoren zusammen ein Crate-Controller, der die Signale der seriellen Leitung auf den crate-internen 8-Bit-Bus umsetzt und das angesprochene Prozessormodul adressiert.

Die für verschiedene Zwecke eingesetzten MACS-Prozessorkarten haben den gleichen Aufbau und unterscheiden sich nur in der Software, die sich in nichtflüchtigen Speicherbausteinen auf der Karte befindet.

2.4.2 Das ”ELSA Physics Operating System“ EPOS

Wie in Abschnitt 2.4.1 bereits angesprochen wurde, erlaubt es das ELSA-Kontrollsystem nicht, komplizierte Meßabläufe zu automatisieren. Für viele Aspekte der Beschleunigerphysik, wie der Bestimmung des Lage des Strahls im Phasenraum oder der Bestimmung des Arbeitspunktes, sind solche Messungen jedoch unerläßlich.

Aus diesem Grund wurde von Th. Götz und M. Picard im Rahmen ihrer Diplomarbeiten das Programmpaket EPOS entwickelt, das ”\underline{E}LSA-\underline{P}hysics-\underline{O}perating-\underline{S}ystem“ [Göt90, Pic91]. EPOS erlaubt es, auf alle Kontrollsystem-Parameter und weitere Meßdaten zuzugreifen und diese zu verarbeiten. Dafür verfügt EPOS über eine eigene Programmiersprache, die es ermöglicht, Meßund Auswertungsabläufe zusammenzufassen und zu automatisieren.

EPOS ist kommandozeilenorientiert, d. h. alle Befehle mit ihren Parametern werden als Text vom Benutzer eingegeben. Ein EPOS-Programm ist eine Folge dieser Befehle, die in einer Datei zusammengefaßt ist und wie ein eingebauter EPOS-Befehl benutzt werden kann.^{6}

Für eine Darstellung der gemessenen und berechneten Werte ist in der VMS-Version von EPOS das Grafiksystem GKS integriert, das die Darstellung von Meßdaten in einem Koordinatensystem sowohl auf dem Bildschirm eines Arbeitsplatzrechners oder eines grafikfähigen Terminals als auch auf einem Laserdrucker ermöglicht.

EPOS wurde für diese Arbeit benutzt, um die an das Kontrollsystem ausgegebenen Daten zu überprüfen und grafisch darzustellen. Auch die von den angesteuerten Netzgeräten gelieferten Analogsignale wurden zum Vergleich mit den vom Steuerkurvengenerator erzeugten Daten mit EPOS eingelesen und grafisch dargestellt.

2.4.3 Das neue ELSA-Kontrollsystem

Verschiedene Mängel im heutigen ELSA-Kontrollsystem haben dazu geführt, daß der Entwurf eines neuen, verbesserten Kontrollsystems notwendig wurde. Mit dieser Aufgabe sind Th. Götz und M. Picard im Rahmen ihrer Promotionen betreut [Göt93, Pic93].

Das geplante Kontrollsystem basiert auf RISC-Rechnern der HP 9000/700 Serie für die zentrale Kontrolle und VME-Prozessorsystemen als lokale Steuerrechner und zur Ansteuerung der vorhandenen MACS-Systeme. Sowohl für Software wie auch Hardware werden kommerzielle Lösungen eingesetzt und in eine Systemarchitektur mit größerer Redundanz integriert, was die Betriebssicherheit und den zeitlichen und finanziellen Aufwand für die Wartung und Instandhaltung des Kontrollsystems deutlich verringert. Die im jetzigen Kontrollsystem eingesetzten PADAC-Pulte zur Steuerung und Prozeßvisualisierung werden durch grafische Terminals und Arbeitsplatzrechner ersetzt, womit viele Einschränkungen in der grafischen Darstellung und ihrer Programmierung wegfallen.

Die leistungsfähigere Hardware erlaubt auch die Auswertung großer Datenmengen und damit die Realisierung heute nicht möglicher Meß- und Steuerungsaufgaben.

2.5 Die Problematik der Erzeugung von Steuerkurven im heutigen Kontrollsystem

Das ELSA-Kontrollsystem in seiner heutigen Form stellt eine Steuerkurve in Form einer Tabelle dar, die bis zu 1500 Werte mit einer Auflösung von maximal 16 Bit enthalten kann. Jeder Wert entspricht der Amplitude der Steuerkurve für einen Zeitraum, der durch eine sogenannte ”Delta-Zeit“ bestimmt wird. Die Ausgabe der Steuerkurven an die Netzgeräte erfolgt durch MACS-Prozessoren. Dazu wird zuerst die gewünschte Tabelle vom Kontrollrechner an den MACS-Rechner übertragen. Nach Empfang der Daten wartet der MACS-Prozessor auf das Eintreffen eines Triggersignales. Daraufhin wird der erste Tabellenwert über einen Digital-Analog-Wandler (D/A-Wandler) an das Netzgerät ausgegeben. Durch Programmierung eines Timers wartet der MACS-Prozessor dann, bis die zu dem Tabellenwert gehörende Delta-Zeit verstrichen ist. Anschließend wird der nächste Tabellenwert ausgegeben und der nächste Timerwert programmiert. Dies wiederholt sich, bis die komplette Steuerkurve ausgegeben wurde. Der zuletzt gesetzte Tabellenwert liegt solange am Netzgerät an, bis ein neuer Trigger eintrifft. Die MACS-Rechner existieren in zwei verschiedenen Software-Versionen:

6Zur Steuerung des Programmablaufs verfügt EPOS noch über zusätzliche Befehle, die auf der Kommando-Ebene

nicht zur Verfügung stehen.

1. Eine Version für die Ansteuerung von HOLEC-Netzgeräten (”HOLEC-MACS“): Diese Netzgeräte steuern die ELSA-Dipole, die Haupt-Quadrupole und Sextupole. Die Software erlaubt variable zeitliche Abstände der Ausgabewerte. Für diese existieren im Kontrollsystem notwendigerweise zwei Tabellen: eine mit den Sollwerten y_{i} und eine mit den zugehörigen Delta-Zeiten Δt_{i}:

Δt_{1} Δt_{2} ⋯ Δt_{n} ; \underbrace{y_{1} y_{2} ⋯ y_{n}}_{max. 1500}

2. Eine weitere Version für andere Netzgeräte: Sie kann nur zeitlich äquidistante Ausgabewerte erzeugen. Für diese Steuerkurven wird in der Datenbank neben den Sollwerten nur eine Delta-Zeit gespeichert.

Δt \underbrace{y_{1} y_{2} ⋯ y_{n}}_{max. 1500}

Die von diesen MACS-Prozessoren verarbeiteten Steuerkurven werden durch folgende Grenzwerte charakterisiert:

Eigenschaft ”HOLEC-MACS“ Anderer MACS

Max. Anzahl Tabellenwerte  1500
Minimales Δt  120, 4 μs  48, 825 μs
Max. Ausgabefrequenz  8, 306 kHz  20, 48 kHz
Maximales Δt  42, 66 ms
Max. Gesamtdauer einer Steuerkurve^{a}  63, 99 s

aberechnet aus max. Δt und max. Werteanzahl

Die MACS-Software verarbeitet Tabellenwerte mit einer Auflösung von 16 Bit. Die D/A-Wandler der angeschlossenen Netzteile besitzen jedoch nur eine Auflösung von 14 Bit (HOLEC-Netzgeräte) bzw. 12 Bit (Luft-Quadrupol-Netzgeräte). Diese Limitierung schränkt ebenfalls die erreichbare Qualität der Steuerkurven ein. Die Begrenzung der Tabellengröße auf maximal 1500 Werte ist durch die Bandbreite der seriellen Schnittstelle zwischen Kontrollrechner und MACS-Crates gegeben. Aber auch eine schnellere Datenübertragung könnte diese Zahl nicht nennenswert erhöhen, da den MACS-Rechnern nur ein beschränkter lokaler Speicher von maximal 20 KByte zur Verfügung steht [Sch84].

Die Erzeugung von Steuerkurven für das ELSA-Kontrollsystem ist in mehrfacher Hinsicht limitiert:

1. Es existiert kein brauchbares Programm, mit dem Steuerkurven für das ELSA-Kontrollsy-stem entworfen und bearbeitet werden können. Das von M. Schillo zum Test der MACS-Steuerkurven-Software entworfene Programm RAMPE erlaubt nur Steuerkurven, die aus einfach ansteigenden und abfallenden Teilstücken bestehen. Es erlaubt keine Bearbeitung vorhandener Steuerkurven. Mit EPOS lassen sich Tabellendaten für die Steuerkurven des Kontrollsystems generieren, jedoch muß jeder Wert einzeln berechnet werden.

2. Die MACS-Software erlaubt keine Veränderung von Tabellenwerten im laufenden Betrieb. Bei jeder Änderung der Daten sendet das Kontrollsystem grundsätzlich die gesamte Tabelle an den MACS-Rechner. Dieser bricht bei Erhalt neuer Daten die Ausgabe der alten Steuerkurve sofort ab, was in den meisten Fällen einen Strahlverlust zur Folge hat.

3. Die Tabellengröße erlaubt es nicht, eine (zeitlich) lange Steuerkurve mit hoher Auflösung zu erzeugen. Dies ist ein Problem des Kontrollsystems (Line-Driver) und der MACS-Hardware.

4. Die Auflösung der Tabellenwerte beschränkt die Genauigkeit der erzeugten Ausgabewerte. Dies ist für die benutzten Netzgeräte aber nur von geringer Bedeutung, da die theoretisch erreichbare Genauigkeit im Rahmen ihrer Toleranzen liegt.

Die erste Einschränkung kann bereits im Rahmen des heutigen Kontrollsystems durch die Entwicklung eines Steuerkurvengenerators, d. h. eines Programmes oder Gerätes, welches den Entwurf von Steuerkurven ermöglicht, beseitigt werden. Die in den Punkten zwei und drei angesprochenen Probleme lassen sich nur dann lösen, wenn auch die Struktur des ELSA-Kontrollsystems entscheidend geändert wird. Der Steuerkurvengenerator sollte diese Entwicklung aber bereits berücksichtigen und sich ohne Probleme in das neue Kontrollsystem integrieren lassen.

3. Entwurf des Steuerkurvengenerators

3.1 Anforderungen

Der Steuerkurvengenerator soll es ermöglichen, die im vorigen Kapitel beschriebenen Signalverläufe für unterschiedliche Geräte zu erzeugen und – auch im laufenden Betrieb – zu verändern. Zu diesem Zweck muß er über folgende Eigenschaften verfügen:

Grafische Darstellung: Die Darstellung einer Steuerkurve in grafischer Form ermöglicht es, die zeitliche Abhängigkeit der beeinflußten Steuergröße anschaulich zu machen. Damit fällt es leichter, den Zusammenhang zwischen Steuerkurve und physikalischer Größe nachzuvollziehen.

Interaktive Bedienung: Der Benutzer soll einen direkten Einfluß auf die Steuerkurven haben. Beim Entwurf einer Kurve findet ein Zyklus statt, in welchem der Benutzer eine Steuerkurve definiert oder verändert, sie an das Endgerät ausgibt, die verursachten Auswirkungen am Beschleuniger beobachtet und weitere Änderungen vornimmt, usw.

Für die Bedienung wünschenswert ist auch ein sogenannter ”Direkt-Modus“, in welchem das ”Setzen“ der Steuerkurve bei jeder Änderung automatisch erfolgt und die Auswirkungen somit in kürzester Zeit (quasi gleichzeitig) beobachtet werden können.

Damit hat man eine direkte Kontrolle der beeinflußten Parameter, vergleichbar mit der Steuerung durch ein Potentiometer.

Abstraktion der Steuerkurve von der technischen Realisierung: Der Zugriff auf die physikalischen Steuergrößen soll für den Benutzer transparent sein. Die technische Realisierung der Geräteansteuerung und die dafür tatsächlich benötigten Ausgabegrößen bleiben ihm verborgen, so daß er sich ganz auf die Beschleunigerphysik konzentrieren kann.

Anbindung an das Kontrollsystem: Der Steuerkurvengenerator baut als Applikation auf dem ELSA-Kontrollsystem auf. Steuerkurven werden als Kontrollsystem-Variablen erzeugt, und das Kontrollsystem dient als Schnittstelle für den Zugriff anderer Applikationen auf diese Steuerkurven. Steuerkurven aus dem Kontrollsystem müssen zur Bearbeitung importiert werden können.

Unterstützung der vorhandenen Hardware: Das vorhandene MACS-System zur Ausgabe der Steuerkurven muß unterstützt werden. Die damit verbundenen Randbedingungen für die Erzeugung von Steuerkurven stellen die Minimalanforderungen an den Steuerkurvengenerator dar.

Zukunftssicherheit: Der Steuerkurvengenerator muß bei Änderungen am Kontrollsystem oder an den anzusteuernden Beschleuniger-Komponenten leicht angepaßt bzw. erweitert werden können. Zu diesen Änderungen zählt sowohl die Erweiterung des Beschleunigers um Geräte, die durch Steuerkurven kontrolliert werden sollen, als auch der Einsatz von lokalen VME-Rechnern zur Ausgabe von Steuerkurven, wie sie im geplanten Kontrollsystem zur Ergänzung der MACS-Systeme vorgesehen sind.

Desweiteren muß die Definition von Steuerkurven flexibler gestaltet sein, als es im heutigen Kontrollsystem realisiert ist, um auch die Fähigkeiten zukünftiger Hard- und Software ausnutzen zu können.

Portierbarkeit: Der Steuerkurvengenerator wird auf einem Arbeitsplatzrechner vom Typ VAXstation 3100 unter dem Betriebsystem VMS entwickelt. Der spätere Einsatz soll sowohl auf diesem Rechner als auch auf Rechnern des neuen Kontrollsystems erfolgen. Dafür muß das Programm auf das Betriebssystem UNIX^{1} portiert werden können.

Im Rahmen dieser Arbeit wurde dazu auf den Arbeitsplatzrechnern des ELSA-Kontrollsystems das Programm WaVe entworfen und entwickelt.

Eine Lösung auf Softwarebasis ist jedoch nicht die einzige Möglichkeit, die geforderten Eigenschaften im wesentlichen zu verwirklichen. Im folgenden Abschnitt wird kurz ein alternativer Ansatz zur Erzeugung von Steuerkurven mit den oben genannten Randbedingungen diskutiert.

3.2 Diskussion zum Einsatz Arbiträrer Funktions-Generatoren

Neben einer reinen Softwarelösung bietet sich noch eine weitere Möglichkeit zur Erzeugung beliebiger Steuerkurven: Sogenannte ”Arbiträre Funktions-Generatoren“ (AFGs) erlauben es, interaktiv Signalformen zu erzeugen und geben diese auf ein Triggersignal hin direkt analog aus.

Der Einsatz eines Programms zum Entwurf von Steuerkurven zeigt aber mehrere Vorteile gegenüber dem Einsatz von AFGs:

• Ein Programm kann eine fast beliebige Anzahl von Steuerkurven gleichzeitig verwalten, AFGs sind meist auf ein bis zwei Steuerkurven pro Gerät beschränkt. Somit wäre der Einsatz vieler AFGs nötig, was zu einem sehr hohen Preis der Gesamtlösung führte. Zur Kopplung mehrerer AFGs zur gemeinsamen Steuerung ist wiederum ein Steuerprogramm notwendig, das den Entwurf von Steuerkurven übernimmt.

• Die Benutzerschnittstelle des Programms kann von der Ausgabegröße der Steuerkurve (die normalerweise eine Steuerspannung ist) abstrahieren und stattdessen die physikalisch beeinflußte Größe (z. B. die Dipol-Energie) zur Variablen machen.

• Ein Programm benutzt das ELSA-Kontrollsystem als Schnittstelle und erlaubt damit auch den Zugriff anderer Applikationen auf die Steuerkurvendaten. Ein AFG müßte auf diese Schnittstelle verzichten und direkt die betreffende Hardware ansprechen. Steuerkurven wären für andere Applikationen nicht oder nur im spezifischen Format des AFGs zugänglich.

1In diesem Fall handelt es sich um HP-UX, die UNIX-Implementierung der Firma Hewlett-Packard.

• Die vorhandene Hardware in Form des MACS-Systems kann weiterbenutzt werden, sofern sie noch den Steuerungsanforderungen genügt. MACS-Prozessoren des ”HOLEC“-Typs haben zusätzlich den Vorteil, daß sie eine Steuerkurve mit variabler Ausgabefrequenz erzeugen können. Sie erlauben es somit, bei guter Ausnutzung des beschränkten Speicherplatzes eine relativ lange Steuerkurvendauer mit einer hohen zeitlichen Auflösung zu verbinden. Alle am Markt erhältlichen AFGs sind nur in der Lage, Signale mit konstanter Abtastrate zu generieren. Dies kann nur durch einen wesentlich größeren und damit sehr teuren Steuerkurven-Speicher ausgeglichen werden.

Die Vorteile der Softwarelösung sind klar ersichtlich. Eine Lösung auf der Grundlage von Arbiträren Funktions-Generatoren wurde deshalb nicht weiter verfolgt. Es besteht noch die Möglichkeit, AFGs als komfortable Ausgabegeräte einzusetzen, die ihre Daten vom Software-Steuerkur-vengenerator erhalten. In dieser Funktion werden AFGs im Preis-Leistungs-Verhältnis jedoch von VME-Prozessoren mit zugehörigen D/A-Wandlerkarten überboten.

3.3 Verwendete Programmiersprache und Benutzeroberfläche

3.3.1 Wahl der Programmiersprache

Eine wichtige Entscheidung beim Entwurf eines Programmes ist die Wahl der geeigneten Programmiersprache. Für Anwendungen im technisch-wissenschaftlichen Bereich ist seit langem die Sprache FORTRAN sehr verbreitet. Immer mehr setzt sich aber auch hier die Programmiersprache C durch.

Aus Gründen der Konsistenz und Wartbarkeit wird die Sprache C bzw. C++ für alle Neuentwicklungen im Bereich der Beschleuniger-Kontrolle, einschließlich des neuen Kontrollsystems selber, eingesetzt. Der Steuerkurvengenerator als Applikation für das ELSA-Kontrollsystem folgt ebenfalls dieser Richtlinie. Entscheidend ist aber auch, daß die Bibliotheken der verwendeten Benutzeroberfläche in C vorliegen (siehe folgender Abschnitt). Der hohe Grad der Standardisierung der Programmiersprache C gewährleistet auch die Portierbarkeit des Programms auf die Rechner des zukünftigen Kontrollsystems.

3.3.2 Wahl der Benutzeroberfläche

Das Grundkonzept der grafischen Darstellung und interaktiven Bedienung des Steuerkurvengenerators verlangt es, besonderes Augenmerk auf die Benutzeroberfläche zu legen. Die Arbeitsplatzrechner, auf denen das Programm laufen soll, verfügen über hochauflösende Grafik und sowohl Tastatur als auch Maus als Eingabegeräte. Als Benutzeroberfläche dient das X Window System, welches bei Arbeitsplatzrechnern sehr verbreitet ist.

Das X Window System

Das X Window System in der Version 11, kurz auch einfach ”X11“ oder nur ”X“ genannt, ist ein Softwaresystem zur Programmierung fensterorientierter grafischer Benutzerschnittstellen [Sch90]. Es wurde am Massachusetts Institute of Technology (MIT) in Zusammenarbeit mit der Digital Equipment Corporation (DEC) entwickelt. Seine wichtigsten Eigenschaften sind Geräteunabhängigkeit: X11 erlaubt es, Anwendungen geräteunabhängig zu schreiben. Solche

Anwendungen laufen auf jedem Rechner, der das vorgeschriebene X Protokoll unterstützt.

Netzwerktransparenz: Anwendungen, die das X Window System benutzen, können auf einem beliebigen Rechner eines Netzwerkes ausgeführt werden, während ihre grafische Darstellung auf einem anderen Rechner erfolgt.

Standardisierung: Die Anforderung eines einheitlichen Netzwerk-Protokolls macht das X Window System unabhängig von bestimmter Hardware und erlaubt so den Einsatz in inhomogenen Netzwerken.

Durch die freie Verfügbarkeit des Quellcodes von X11 und der Dokumentation wurde seine Verbreitung stark gefördert. Im Bereich der Arbeitsplatzrechner wird X11 von jedem Anbieter unterstützt.

Der Begriff des Fensters

Grundlegendes grafisches Objekt in X11 ist das Fenster (”window“), ein Datenobjekt, dem ein rechteckiger Bildschirmbereich zugeordnet ist. Fenster können ineinander geschachtelt werden, so daß sich beliebige Hierarchien entwickeln lassen. Durch Zuordnung verschiedener Eigenschaften zu bestimmten Fenstern können diese die Funktionalität von Eingabefeldern, Auswahlmenüs, Schaltknöpfen, Schiebereglern oder anderem erhalten. Eine vordefinierte Kombination von einem Fenster (mit eventuellen Unterfenstern) und ihm zugeordneten Funktionen wird als ”Widget“^{2} bezeichnet. Widgets sind die wesentlichen Konstruktionselemente, aus denen eine X11-Benutzer-oberfläche erstellt wird. Meist versteht man unter einem ”Fenster“ auf einem grafischen Bildschirm jedoch die Hauptfenster einer Applikation, die meist mit einem zusätzlichen Rahmen versehen sind und sich dadurch in der Größe verändern und auf dem Bildschirm verschieben lassen. Auch in dieser Arbeit wird zukünftig nur dann von einem Fenster die Rede sein, wenn ein Hauptfenster gemeint ist.

Die Struktur einer X11 Applikation

Eine grafische Applikation im X Window System besteht aus mindestens zwei Prozessen, dem ”X Client“ und dem ”X Server“ [You90]. Der X Client ist das Anwenderprogramm, das grafische Objekte ausgeben möchte oder eine Benutzerinteraktion verlangt. Dazu sendet es dem X Server über eine lokale Schnittstelle oder ein Netzwerk Befehle und Anfragen. Der X Server läuft lokal auf dem Rechner, der die Grafik ausgibt und an dem der Benutzer seine Eingaben vornimmt. Er ist für die Ausführung der Grafikbefehle und die Weiterleitung von Benutzereingaben an den angesprochenen X Client zuständig. Der X Server kann beliebig viele Client-Prozesse parallel auf einem gemeinsamen Bildschirm verwalten. Durch die Netzwerktransparenz des X Window Systems ist es möglich, daß eine Applikation auf einem anderen Rechner abläuft als die Benutzerschnittstelle.^{3} Das X Window System untergliedert sich in verschiedene Ebenen (s. Abb. 3.1). Auf unterster Ebene findet man die Xlib. Sie ist für die Netzwerkkommunikation mit dem X Server zuständig und definiert die grundlegenden Datentypen und Aktionen. Darauf aufbauend ist eine Sammlung

2Kunstwort aus ”window“ und ”gadget“.

3Wie an einem mehrbenutzerfähigen Rechner normale Terminals als zeichenorientierte Ein- und Ausgabegeräte

angeschlossen sein können, existieren speziell für die Verwendung mit dem X Window System sogenannte ”X Ter-

minals“. Dies sind Rechner mit grafikfähigem Bildschirm, auf denen als einziges Programm ein X Server läuft.

Abbildung 3.1: Struktur einer X11 Applikation

von erweiterten Routinen und Datenobjekten, das ”X Toolkit“^{4}. Darüber befindet sich das von der Open Software Foundation entwickelte OSF/Motif. Es handelt sich hierbei um ein ”Widget Set“, d. h. eine Sammlung von Widgets, die dem Programmierer einfache Schnittstellen zur Darstellung und Verwaltung von Schiebereglern, Drucktasten, und auch kompletten Dialogen zur Verfügung stellt [OSF91a-e]. Oberste Schicht ist immer das Anwenderprogramm, das auf alle darunterliegenden zugreifen kann.

Die Verwendung des X Window Systems zusammen mit dem OSF/Motif Widget Set für die Benutzeroberfläche des Steuerkurvengenerators erlaubt die Auswahl aus einer Vielzahl von Bedienelementen und Anzeigemöglichkeiten für die Visualisierung des Steuerkurvenentwurfs und sichert gleichzeitig die Integration in das Gesamtkonzept des geplanten neuen Kontrollsystems.

3.4 Ansatz zur Definition von Steuerkurven

Wie bereits beschrieben, stellt das ELSA-Kontrollsystem eine Steuerkurve in Form einer Tabelle mit bis zu 1500 Werten dar. Der zugrundeliegende funktionale Zusammenhang ist jedoch meist kontinuierlich, und die Tabelle ist lediglich eine diskrete Näherung. Eine Änderung dieses Zusammenhanges erfordert zwangsläufig ein Verändern mehrerer, oft sehr vieler Einzelwerte. Soll eine bestehende Steuerkurve für ein anderes Endgerät benutzt werden, das eine andere Skalierung des Steuersignalpegels oder eine abweichende Anzahl von Tabellenwerten verlangt, so muß für dieses Gerät eine komplett neue Steuerkurve angelegt werden. Um diese Einschränkungen zu beseitigen, bestehen zwei Möglichkeiten:

1. Die Anzahl der diskreten Tabellenwerte wird entscheidend erhöht, um für jeden Zweck eine genügend hohe Auflösung zu erreichen. Damit steigt jedoch der erforderliche Speicherplatz in gleichem Maß an. Das Problem ähnlicher, aber unterschiedlich skalierter Steuerkurven wird hierdurch nicht gelöst.

4Tatsächlich gibt es nicht nur ein Toolkit für X11. Das X Toolkit (Xt) ist jedoch das am weitesten verbreitete.

2. Die Definition einer Steuerkurve wird gänzlich geändert. Die Tabelle wird durch eine ”Rechenvorschrift“ ersetzt, die die Form der Steuerkurve mathematisch beschreibt, unabhängig vom verwendeten Ausgabegerät. Eine Skalierung wird erst bei der Ausgabe der Steuerkurve an ein Endgerät vorgenommen, so daß mit der gleichen Kurve unterschiedliche Geräte gesteuert werden können.

Die Vorteile der zweiten Vorgehensweise liegen auf der Hand: Der erforderliche Speicherplatz läßt sich in den meisten Fällen deutlich reduzieren,^{5} die Definition ist unabhängig von der Auflösung des angesteuerten Gerätes, und der Verlauf einer Steuerkurve kann anhand ihrer Definition qualitativ besser erfaßt werden.

Segmentierung der Steuerkurve

Anstatt nun für die gesamte Steuerkurve eine einzige Rechenvorschrift aufzustellen, ist es sinnvoller, die Kurve in einzelne Segmente zu unterteilen. Jedes Segment beschreibt durch eine eigene Rechenvorschrift die Art der Interpolation zwischen Anfangs- und Endpunkt eines bestimmten, beliebig langen Abschnitts der Steuerkurve. Diese beiden begrenzenden Punkte werden damit zu Stützstellen der Steuerkurve. Jede Stützstelle ist definiert durch ihre x- und y-Koordinate, wobei die x-Koordinate immer die Zeit ist und die y-Koordinate die physikalische Ausgabegröße. Durch Vorgabe unterschiedlicher Interpolationsverfahren und die variable Länge und Anzahl der Segmente kann so fast jede beliebige Kurvenform erzeugt werden.

Während bei einer Tabellendarstellung jeder einzelne Tabellenwert einem Freiheitsgrad der Steuerkurve entspricht, sind in der segmentbasierten Darstellung nur die segmentbegrenzenden Stützstellen und die segmentbeschreibenden Rechenvorschriften Freiheitsgrade. Dadurch muß zur Beschreibung eines vorgegebenen Zusammenhanges nur die erforderliche Anzahl an Freiheitsgraden definiert werden. Der Entwurfsvorgang kann so entscheidend rationeller gestaltet werden.

Stetigkeit der Steuerkurve

Damit diese Segmente wieder eine kontinuierliche Kurve bilden, muß eine Stetigkeitsbedingung erfüllt werden: Der Endpunkt jedes einzelnen Segmentes ist gleichzeitig Startpunkt des nächsten. Die gesamte Steuerkurve wird so zu einer kontinuierlichen Kurve, auf der die Stützstellen liegen. In vielen Fällen wird es darüberhinaus erwünscht sein, daß auch die erste Ableitung der Steuerkurve an den Segmentgrenzen stetig ist, d. h. die Kurve ”glatt“ erscheint.^{6}

Es müssen daher Interpolationsfunktionen zur Verfügung stehen, die an ihren Übergängen stetig und differenzierbar, mindestens aber stetig sind.

5Das Tabellenverfahren liefert nur dann einen geringeren Speicherbedarf, wenn Steuerkurven mit wenigen, kon-

stanten Abschnitten erzeugt werden sollen.

6Ein Netzgerät ist z. B. nicht in der Lage, eine Änderung des Ausgabewertes in beliebig kurzer Zeit vorzunehmen.

Auch ein D/A-Wandler kann keine augenblickliche Änderung des Analogwertes erzeugen. Sowohl D/A-Wandler

als auch Netzgerät bilden somit einen Tiefpaß für das auszugebende Signal. Zusätzlich bedeutet eine schnelle

Variation eines Steuersignales einen großen Anteil hoher Frequenzen im Fourier-Sprektrum dieses Signales, was

zur Anregung unerwünschter Resonanzen in davon abhängigen Größen führen kann. Bei der Konstruktion mittels

glatter Kurven können diese Effekte bereits berücksichtigt werden.

Analytische Vorgabe von Segmenten

Zusätzlich zu vorgegebenen Interpolationsarten soll die Möglichkeit bestehen, den Verlauf eines Segmentes durch Angabe einer analytischen Funktion als Rechenvorschrift zu bestimmen. Durch diese Option wird die Erzeugung von Steuerkurven auf eine Grundlage gestellt, welche die direkte Einbringung theoretisch ermittelter, physikalischer Ansätze in den Entwurf der Steuerkurve erlaubt.

Ausgabe einer Steuerkurve und Treiberkonzept

Um aus einer kontinuierlich definierten Steuerkurve ein analoges Ausgangssignal zu generieren, muß eine ”Abtastung“ der Kurve erfolgen, da nur diskrete Werte vom Digital-Analog-Wandler umgesetzt werden können. Prinzpiell erreicht man durch diese Abtastung wieder eine Steuerkurve in Tabellenform. Wenn die Rechenleistung des ausgebenden Rechners ausreicht, muß diese Tabelle aber nicht gespeichert werden, sondern es wird jeder Wert erst zum Zeitpunkt seiner Ausgabe berechnet. Diese Echtzeitberechnung der Tabellenwerte wird für die schnellen VME-Rechner des zukünftigen Kontrollsystems in vielen Fällen möglich sein, MACS-Prozessoren sind mit dieser Aufgabe allerdings überlastet. Für diese muß eine Diskretisierung der Signalwerte bereits vom Kontrollrechner oder direkt vom Steuerkurvengenerator vorgenommen werden. Da das jetzige Kontrollsystem die Steuerkurven ebenfalls im Tabellen-Format verlangt und auch nicht in der Lage ist, die zur Abtastung nötigen Berechnungen vorzunehmen, muß der Steuerkurvengenerator direkt dieses Format erzeugen können. Das Programm muß also die folgenden Datenformate verarbeiten:

Format  unterstützt von  zur Ein-/Ausgabe
segmentbasiert  Steuerkurvengenerator (intern)  —

Steuerkurvengenerator (extern, Datei),

segmentbasiert neues Kontrollsystem (geplant)

E/A

Tabelle, 16 Bit  Kontrollsystem/MACS  E/A
Tabelle, ASCII-Format  EPOS  E/A
segmentbasiert oder Tabelle VME-Rechner (geplant)  A

Neben dem internen Format, das zur Laufzeit vom Steuerkurvengenerator benutzt wird, muß dieser noch ein externes Format erzeugen und lesen können, in welchem Steuerkurven mit allen beschreibenden Parametern auf einem Massenspeicher gesichert werden können.^{7} Das zukünftige Kontrollsystem wird dieses Datenformat ebenfalls unterstützen und es so erlauben, Steuerkurven in Segmentform in der Beschleunigerdatenbank zu erfassen. Für die geplanten VME-Rechner wird es eventuell nötig sein, ein weiteres Format bereitzustellen, wahrscheinlich ebenfalls auf Segmentbasis. Alle beschriebenen Formate müssen zur Bearbeitung mit dem Steuerkurvengenerator in das intern benutzte Format umgewandelt werden. Daher ist es sinnvoll, für die Ein- und Ausgabe der Steuerkurven eine Schnittstelle zu definieren, über welche unterschiedliche Gerätetreiber mit dem Programm kommunizieren können (s. Abb. 3.2).

7Das intern vom Steuerkurvengenerator benutzte Datenformat eignet sich nicht direkt zur externen Speicherung,

da die zu einer Steuerkurve gehörenden Daten über viele, nicht notwendigerweise zusammenhängende Speicher-

bereiche verteilt sind.

Abbildung 3.2: Kommunikation mit anderen Applikationen über Treiber

Steuerkurvensätze zur Beschreibung von ELSA-Betriebszuständen

Für die Steuerung von ELSA in einer bestimmten Betriebsart werden mehrere Steuerkurven gleichzeitig benötigt (vgl. Abschnitt 2.3). Da diese gut aufeinander abgestimmt sein müssen, um einen zufriedenstellenden Betrieb des Beschleunigers zu ermöglichen, ist es sinnvoll, alle für eine Maschineneinstellung benötigten Steuerkurven in einem Steuerkurvensatz zusammenzufassen.

Diese Steuerkurvensätze sollen als Ganzes geladen und gespeichert werden können. Es muß möglich sein, auch nachträglich einzelne Steuerkurven hinzuzufügen oder zu entfernen.

4. Realisierung des Steuerkurvengenerators WaVe

Das Programm WaVe kann intern grob in drei Teile untergliedert werden: Die grafische Benutzerschnittstelle, die interne Verarbeitung der Steuerkurven und die Ebene der Gerätetreiber zur Ein- und Ausgabe von Steuerkurven in verschiedenen Formaten.

In den folgenden Abschnitten wird die Verwirklichung dieser Teile und ihr Zusammenspiel erläutert. Begonnen wird mit der internen Datenverarbeitung, welche die Grundlagen für die Realisierung der anderen Teile liefert.

4.1 Interne Datenstrukturen und Algorithmen

4.1.1 Auflösung von Steuerkurvendaten

Im Gegensatz zum ELSA-Kontrollsystem, das alle Daten in Form von 16-Bit Ganz- und Festkommazahlen speichert und verarbeitet, benutzt WaVe Fließkommazahlen mit einer Länge von 32 bzw. 64 Bit. Rechenungenauigkeiten werden dadurch soweit reduziert, daß auch kompliziertere Berechnungen zu keinen Abweichungen führen, die die Auflösung der verwendeten Geräte erreichen.

Dabei werden für alle Koordinaten und Parameter Fließkommazahlen einfacher Genauigkeit verwendet, ebenso für alle Ausgabedaten. Die Berechnungen für kompliziertere Segmenttypen^{1} werden dagegen mit Variablen doppelter Genauigkeit vorgenommen, um Rundungsfehler möglichst gering zu halten.

4.1.2 Aufbau einer Steuerkurve aus Segmenten

Die im Kontrollsystem benutzte Definition einer Steuerkurve durch eine Tabelle von Einzelwerten gleichen Datentyps läßt sich in einem Programm sehr einfach durch einen eindimensionalen Vektor des entsprechenden Typs beschreiben. Die für den Steuerkurvengenerator konzipierte segmentbasierte Beschreibung verlangt eine prinzipiell andere Vorgehensweise.

Jedes Segment einer Steuerkurve wird durch ein Datenobjekt beschrieben, für das ein eigener Speicherbereich angefordert wird. Das Datenobjekt enthält die Angaben über den Typ des Segmentes (d. h. die verwendete Rechenvorschrift) und die Koordinaten seines Anfangs- und Endpunktes. Die gesamte Steuerkurve besteht aus einer verketteten Liste dieser Segment-Objekte, in der jedes Segment einen Zeiger auf den Speicherplatz den folgenden Segmentes enthält (s. Abb. 4.1).^{2} Aus der in Abschnitt 3.4 geforderten Stetigkeitsbedingung folgt, daß die Anfangskoordinaten eines Segmentes mit den Endkoordinaten des vorhergehenden Segmentes übereinstimmen müssen.

Abbildung 4.1: Verkettete Liste von Segmenten

Verlangt der Segmenttyp eine Angabe weiterer Parameter, wie z. B. den zu berechnenden Term beim Typ ‘Funktion’, so werden diese Angaben in einem zusätzlichen Speicherbereich gehalten. Dadurch wird erreicht, daß alle primären Segmentobjekte vom gleichen Variablentyp sind und gleichzeitig nur minimalen Speicherplatz benötigen, unabhängig vom Segmenttyp.

Das Prinzip der verketteten Liste ermöglicht es sehr einfach, einzelne Segmente zu ergänzen oder zu löschen. Es müssen dazu keine Speicherblöcke verschoben werden, sondern es reicht, die zusätzlichen Speicherbereiche zu reservieren bzw. freizugegeben und die zugehörigen Zeiger neu auszurichten [Wir75] (s. Abb. 4.3).

Eine Steuerkurve besteht intern neben den Segmenten noch aus weiteren Daten. Diese sind in einer eigenen Struktur zusammengefaßt. Sie enthält die Angaben über

• den Typ der Steuerkurve, d. h. das angesprochene Netzgerät, Abbildung 4.2: Verkettete Liste von Segmenten unterschiedlichen Typs

1Dies sind momentan die Typen ‘Spline’ und ‘Funktion’, siehe dazu Abschnitt 4.1.3.

2Diese Liste ist zusätzlich noch rückwärts verkettet, um schneller ”zeitlich rückwärts“ nach einem Segment su-

chen zu können. In den Abbildungen wurde aus Gründen der Übersichtlichkeit diese Rückwärtsverkettung nicht

dargestellt.

Abbildung 4.3: Einfügen von Segmenten

• den für die Ein- und Ausgabe benötigten Treiber,

• die Beschleunigerbetriebsart, für die die Steuerkurve konstruiert wurde,

• einen frei definierbaren Namen zur Identifikation, der auch bei der Anzeige der Steuerkurve auf dem Bildschirm benutzt wird,

• einen zusätzlichen Kommentar,

• Datum und Uhrzeit, an dem die Steuerkurve angelegt bzw. zuletzt verändert wurde

und weitere Informationen.

4.1.3 Verwendete Segmenttypen

Für den Verlauf eines Segmentes ist die Art der Interpolation zwischen dem Anfangs- und dem Endpunkt entscheidend. Daher kommen in WaVe mehrere Interpolationsverfahren zum Einsatz, und für jedes Segment kann separat eines dieser Verfahren angewandt werden.

Linien

Das einfachste Verfahren, zwei Stützstellen miteinander zu verbinden, ist eine Gerade, d. h. eine lineare Interpolation. Mit diesem Konstruktionselement läßt sich bereits eine Vielzahl von Steuerungsproblemen lösen, nämlich jede Steuerkurve, die aus einzelnen Geradenstücken zusammengesetzt werden kann.

Werden allerdings Kurven benötigt, deren Steigung stetig ist, so müssen entweder eine große Anzahl von Liniensegmenten aneinandergefügt werden (bis die Stetigkeit der Steigung im Rahmen der Geräteauflösung erfüllt ist), oder ein anderes Interpolationsverfahren muß zur Anwendung kommen.

Splines

Wie in Abschnitt 3.4 erläutert wurde, ist es in vielen Fällen erwünscht, eine Steuerkurve zu konstruieren, deren erste Ableitung stetig ist. Anschaulich bedeutet dies, daß die Kurve ”glatt“ ist. Um eine derartige Kurve mit mehreren Stützstellen zu erzeugen, stehen verschiedene mathematische Verfahren zur Verfügung. Die meisten davon fallen unter den Begriff ”Spline“^{3}. Für das Programm WaVe wurde das Akima-Verfahren zur Konstruktion glatter Kurven ausgewählt. Im folgenden werden verschiedene Ansätze verglichen und es wird erläutert, warum in WaVe Akima-Polynome eingesetzt werden. Die mathematischen Definitionen der verschiedenen Interpolationsverfahren sind in Anhang B aufgeführt.

B-Splines und Bezier-Splines: Aus dem computerunterstützten Entwurf (CAD) sind die Splinearten B-Spline und Bezier-Spline bekannt. Bei beiden Spline-Arten verläuft die erzeugte Kurve nicht durch alle definierenden Punkte, sondern im allgemeinen Fall nur durch den Start- und Endpunkt. Ihr Verlauf zwischen diesen Stützstellen wird durch die zusätzlichen ”Kontrollpunkte“ bestimmt. Sie sind damit besser für den Entwurf von Freiform-Kurven und

Abbildung 4.4: Beispiel eines B-Splines mit Kontrollpunkten

-Flächen geeignet als zur Interpolation einer Menge vorgegebener Punkte. Optisch sind sich beide Spline-Arten sehr ähnlich. Jedoch tritt bei B-Splines noch ein zusätzlicher Parameter auf, der den Einflußbereich einer Stützstelle auf den Verlauf der gesamten Kurve bestimmt.

Kubische Splines: Diese Gruppe von Splines unterscheidet sich von den B- und Bezier-Splines dadurch, daß die Kurve durch alle definierenden Stützstellen verläuft. Jedoch zeigen diese Splines ein deutliches Schwingungsverhalten zwischen diesen Stützstellen.

3Der Ausdruck ”Spline“ stammt ursprünglich aus dem Schiffsbau und bezeichnet eine biegsame Latte, die für

den Entwurf von Bootsrümpfen eingesetzt wurde. Sie wird an mehreren Punkten (”Stützstellen“) befestigt und

bildet zwischen diesen eine glatte Kurve, deren Verlauf eine Funktion des Biegemomentes ist. Mathematisch wird

diese Kurve durch stückweise Definition von Polynomen beschrieben, deren dritte Ableitung keine Stetigkeitsbe-

dingung zu erfüllen hat. Für diese Polynome existiert eine Vielzahl unterschiedlicher Ansätze, die verschiedene

Anwendungen gefunden haben [Fol82, Mei86].

Newton-Interpolation: Neben Splines gibt es noch weitere Arten der Interpolation durch stetig differenzierbare Kurven, in der Regel auf der Basis von Polynomen. Das einfachste Verfahren ist die Newton- oder Lagrangeinterpolation, bei der aus n Stützstellen ein Polynom (n − 1)- ten Grades gebildet wird, welches dann die Kurve über den gesamten Wertebereich definiert. Die entstehende Kurve ist n-mal differenzierbar, zeigt jedoch ein starkes ”Durchschwingen“ zwischen den Stützstellen.

Aus diesem Grund ist die Newton-Interpolation für den Einsatz in WaVe nicht geeignet.

Akima-Interpolation: Ein weiteres Verfahren zur Interpolation mehrerer Punkte ist das Akima-Verfahren. Es ist benannt nach H. Akima, der es 1970 beschrieb [Aki70]. Die Akima-Inter-polation basiert auf Polynomen, die eigentlich nicht zu den Splines zählen, da sie nur in der ersten Ableitung stetig sind. Trotzdem hat sich die Bezeichnung Akima-”Spline“ durchgesetzt, da sie ein den Splines sehr ähnliches Verhalten zeigen.

Entwickelt wurden dieses Verfahren besonders zur Interpolation von Meßdaten. Es liefert ein Ergebnis, welches einer Kurve am nächsten kommt, die entsteht, wenn man vorgegebene Punkte ”nach Augenmaß“ verbindet. Dieses Verhalten wird gerade dadurch erreicht, daß die Forderung der Stetigkeit in der zweiten Ableitung aufgegeben wird.

In Abbildung 4.5 kann man für eine gegebene Menge von Punkten drei der oben beschriebenen Interpolations-Verfahren vergleichen. Es sind jeweils die gleichen neun Stützstellen vorgegeben

Abbildung 4.5: Vergleich verschiedener Interpolationsverfahren

(durch Punkte markiert), die durch die betreffende Funktion interpoliert werden sollen. Wie man erkennen kann, liefern die Akima-Polynome eine Interpolation, die einer von Hand gezogenen Kurve und damit einem intuitiven Vorgehen bei der Interpolation der vorgegebenen Punkte am nächsten kommt, während die anderen Verfahren ein mehr oder minder starkes ”Durchschwingen“ der Kurve zeigen. Aus diesem Grund wurde auch in WaVe das Akima-Verfahren eingebaut: Der Benutzer erhält eine Interpolations-Kurve, die am ehesten seinen Erwartungen einer glatten Verbindung mehrerer Punkte entspricht.

Dadurch, daß die Interpolationskurve beim Akima-Verfahren nur durch die zu verbindenden Stützstellen und nicht durch zusätzliche Kontrollpunkte definiert wird, kann der Verlauf der Interpolation zwischen den Punkten allerdings nicht beeinflußt werden. Deshalb erlaubt es WaVe, das entsprechende Segment in mehrere, zeitlich äquidistante Teile aufzuspalten. Die neu entstehenden Stützstellen liegen dabei auf der alten Interpolationskurve und können weiter bearbeitet werden.

Die Stetigkeit der ersten Ableitung der Akima-Polynome erfordert, daß zur Bestimmung der Polynom-Parameter die dem entsprechenden Akima-Segment benachbarten Segmente herangezogen werden. Sind diese vom Typ ‘Linie’, so bestimmt ihre Steigung auch die Steigung des Akima-Polynoms an der gemeinsamen Stützstelle. Folgen n Segmente vom Typ Akima hintereinander, so werden sie automatisch zu einem Akima-Polynom mit (n + 1) Stützstellen zusammengefaßt. Nachbarsegmente vom Typ ‘Funktion’ können bisher nicht in die Berechnung einbezogen werden, so daß hier eine Stetigkeit der ersten Ableitung von Hand konstruiert werden muß.

Funktionen

In vielen Fällen ist eine — zumindest stückweise — analytische Beschreibung einer Steuerkurve notwendig, und es ist wünschenswert, direkt eine Formel als Rechenvorschrift für ein Segment eingeben zu können.

Aus diesem Grund wurde in den Steuerkurvengenerator der Segmenttyp ‘Funktion’ eingebaut. Wird ein Segment von diesem Typ erzeugt, so wird der Benutzer aufgefordert, einen Funktionsterm einzugeben. Die für Funktionsterme zugrundeliegende Syntax orientiert sich an der normalen mathematischen Formelschreibweise. Sie kennt unäre und binäre Operatoren, Funktionen, Klammern, vordefinierte Konstanten und Variablen und unterstützt Operatoren unterschiedlicher Priorität [Sch87].

Der vom Benutzer eingegebene Term wird nach der Eingabe auf korrekte Syntax überprüft und dabei in eine ”Zwischenform“ übersetzt, den sogenannten ”P-Code“, der dann zusätzlich zum Term in der Segment-Definition abgespeichert wird. Dieser P-Code ist kein Maschinencode, kann jedoch vom Rechner wesentlich schneller abgearbeitet werden als die Klartexteingabe des Benutzers.^{4} Dies ist wichtig, da für die Ausgabe eines Funktions-Segmentes sehr viele Funktionswerte berechnet werden müssen; auch die grafische Darstellung einer Funktion wird durch diese Vorgehensweise stark beschleunigt.

Eine Definition der Syntax für Funktionsterme und die von WaVe vordefinierten Zeichenketten (”Token“) sind im Anhang A aufgelistet.

Eine korrekte Eingabe ist z. B.

                     sin ( (t-t0) / 1e2 * pi ) * 2.50 + y0

4Der P-Code ist so aufgebaut, daß der Funktionsterm anschließend in einer sogenannten “stack-machine” abge-

arbeitet werden kann. Die segmentabhängigen Variablen und Konstanten werden dabei durch besondere Codes

dargestellt, die erst bei der Auswertung mit einem Wert identifiziert werden. Somit muß z. B. bei einem Ver-

schieben des Segmentanfangs der P-Code nicht neu erzeugt werden.

und entspricht der Funktion

y(t) = 2,5 · sin (\frac{t − t_{0}}{100} π) + y_{0} ,

wobei t die absolute Zeit in der Rampe ist und t − t_{0} die Zeit relativ zum Start des Segmentes; y_{0} bezeichnet den Startwert des Segmentes.

Es ist möglich, in WaVe später einen weiteren Typ der Interpolation einzubauen — wie z. B. B-Splines —, wenn sich dies als wünschenswert herausstellt.

4.1.4 Zusammenfassen von Steuerkurven zu Steuerkurvensätzen

Das Programm WaVe erlaubt es, mehrere Steuerkurven zusammenzufassen. Dieser Steuerkurvensatz kann als Ganzes geladen und gespeichert werden. Damit ist es möglich, eine Menge aufeinander abgestimmter Steuerkurven, die in ihrer Gesamtheit einen (optimierten) Betriebszustand beschreiben, gemeinsam zu verwalten. Ein kompletter Satz von Steuerkurven aller angesteuerten Geräte kann so mit einem Befehl geladen oder gespeichert werden.

Diese Sätze von Steuerkurven existieren nur für das von WaVe selbst benutzte Format, andere Applikationen, wie z. B. das bestehende Kontrollsystem, kennen diese Möglichkeit nicht.

Wird WaVe gestartet, so wird intern grundsätzlich ein leerer Steuerkurvensatz angelegt. Alle neu erzeugten oder geladenen Steuerkurven werden automatisch diesem Satz hinzugefügt. Hat man eine Kombination von Steuerkurven gefunden, die zu einem späteren Zeitpunkt wieder gemeinsam benutzt werden sollen, so kann man diese als Steuerkurvensatz abspeichern. Auch später noch ist ein Hinzufügen oder Löschen von Steuerkurven in diesem Satz möglich.

Es ist auch möglich, mehrere Steuerkurven für die gleiche Steuergröße in einen Satz aufzunehmen. Zusammen mit der Möglichkeit, von einer Steuerkurve innerhalb eines Satzes eine Kopie anzulegen, um diese weiterzuverarbeiten, können so auch komplette Versuchsreihen in einem Satz vereinigt werden.

4.2 Erstellen und Bearbeiten von Steuerkurven

4.2.1 Benutzerschnittstelle

Die Benutzeroberfläche des Steuerkurvengenerators WaVe wurde komplett mit OSF/Motif-Wid-gets unter X11 konstruiert. Die Definition der benötigten Dialogboxen und Menüs wurde in der Beschreibungssprache UIL (\underline{U}ser \underline{I}nterface \underline{L}anguage) vorgenommen, da UIL ebenfalls standardisiert und somit zwischen unterschiedlichen Rechnerplattformen portierbar ist. Der UIL-Code wurde wiederum zu einem großen Teil mit Hilfe des Programmes VUIT der Firma Digital erstellt.^{5}

Das X Window System erlaubt es, einer Applikation mehrere Fenster zur Verfügung zu stellen. Dies wurde in WaVe genutzt, um jeder Steuerkurve, die der Benutzer entwirft oder lädt, ein eigenes Fenster zuzuordnen.^{6} In diesem Fenster erscheint die Kurve in einem automatisch skalierten Koordinatensystem und steht dem Benutzer zur direkten Interaktion zur Verfügung. Die horizontale Koordinate dieser Darstellung ist immer die Zeit, die vertikale Koordinate ist die Ausgabegröße der dargestellten Steuerkurve. Das Hauptfenster von WaVe enthält zusätzlich eine Menüleiste, über die die meisten Befehle zur Bearbeitung ganzer Steuerkurven und -sätze aufgerufen werden können.

5Das Programm VUIT bereitete dabei größere Schwierigkeiten, da es in der anfangs benutzten Version 1.0 durch

häufige Abstürze das Arbeiten stark erschwerte. In einer zwischenzeitlich erschienenen Version 1.1 wurden zu-

mindest einige Fehler entfernt, wodurch eine fast zufriedenstellende Anwendung möglich war.

Abbildung 4.6: Bildschirm eines Arbeitsplatzrechners mit mehreren WaVe-Fenstern

Wird ein Ausdruck der momentan in einem Fenster sichtbaren Steuerkurve auf einem Drucker gewünscht, so besteht die Möglichkeit, diese grafische Darstellung im PostScript-Format in einer Datei zu speichern. Diese Datei kann dann auf jedem PostScript-fähigen Drucker ausgegeben werden.

6Im Hauptfenster des Programms werden alle Steuerkurven des geladenen Steuerkurvensatzes angezeigt, die nicht

in einem separaten Fenster bearbeitet werden.

4.2.2 Benutzereingaben

Da der Steuerkurvengenerator eine grafische Applikation ist, in welcher die Maus das wichtigste Eingabemedium ist, wurde darauf geachtet, daß die meisten Bearbeitungsfunktionen ebenfalls über die Maus ausgelöst werden können. Damit wird gewährleistet, daß der Arbeitsfluß beim Bearbeiten von Steuerkurven nicht durch häufigen Wechsel zwischen Tastatur und Maus unterbrochen wird. Bearbeitungsfunktionen werden aufgerufen

• indem direkt mit der Maus Veränderungen an der dargestellten Steuerkurve vorgenommen werden. Dazu können die (optisch hervorgehobenen) Stützstellen der Steuerkurve durch Mausklick angewählt oder verschoben werden, ebenso können einzelne Segmente oder Bereiche von mehreren aufeinanderfolgenden Segmenten ausgewählt werden. Ausgewählte Objekte können dann weiter bearbeitet werden;

• durch ein sogenanntes ”Popup“-Menü, welches durch Druck auf die rechte Maustaste erscheint. Dies erlaubt es, Funktionen aufzurufen, ohne den Arbeitsbereich mit der Maus zu verlassen;

• über das im Hauptfenster vorhandene ”Pulldown“-Menü. Es enthält die für die Bearbeitung seltener benötigten Funktionen, wie das Laden und Speichern von Steuerkurven und Steuerkurvensätzen;

• über die Tastatur. Alle Funktionen des ”Pulldown“-Menüs können auch durch Tastendruck angesprochen werden. Ebenso wurden die Funktionen zum Ausgeben einer Steuerkurve an das Kontrollsystem und zum Einlesen einer Steuerkurve auf Funktionstasten gelegt. Ein versehentliches Ausgeben oder Einlesen von Steuerkurvendaten wird dadurch unwahrscheinlicher.

Alle Parametereinstellungen erfolgen über Dialogboxen, die über die Menüleiste oder das Popup-Menü aufgerufen werden können. In diesen Dialogen befinden sich Auswahlmenüs und (für Zahlen- und Texteingaben) editierbare Felder. Alle Parameter, für die nur die Auswahl aus einer begrenzten Menge an Alternativen besteht, wurden als Optionsmenüs implementiert, d. h. auf Mausklick kann aus allen Alternativen die gewünschte ausgewählt werden. Damit erübrigt es sich für den Benutzer — im Gegensatz zu einer kommandozeilenorientierten Bedienung —, die Alternativen auswendig wissen oder nachschlagen zu müssen. Gerade bei der Vielzahl der anzusteuernden Endgeräte stellt es einen Vorteil dar, zur Auswahl alle verfügbaren Geräte vorgegeben zu bekommen. Im folgenden werden die wichtigsten Funktionen zum Erstellen und Bearbeiten einer Steuerkurve beschrieben.

4.2.3 Bearbeitungsfunktionen

Anlegen neuer Segmente

Einzelne Segmente können in eine einstellbare Anzahl von Teilsegmente zerlegt werden. Auf diesem Wege werden neue Segmente einer Steuerkurve hinzugefügt. Bei der Definition einer Steuerkurve kann zunächst eine grobe Näherung des gewünschten Signalverlaufs erzeugt werden, um diese dann schrittweise feiner auszuarbeiten. Jedes neue Teilsegment kann wiederum zerlegt werden, so daß eine beliebige Genauigkeit bei der Bearbeitung der Steuerkurve erreicht werden kann.

Bestimmung des Segmentverlaufs

Durch Verschieben einzelner Stützstellen kann der Verlauf eines Segmentes verändert werden. Wird die Stützstelle mit der Maus verschoben, so werden zur Kontrolle während des Verschiebevorganges permanent die physikalischen Koordinaten (Zeit und Ausgabewert) angezeigt. Ebenso besteht die Möglichkeit, die Koordinaten einer Stützstelle direkt von Hand neu einzugeben. So wird die genaueste Kontrolle des Kurvenverlaufs erreicht. Eine mit der Maus ausgewählte Stützstelle kann außerdem über die Pfeiltasten der Tastatur vertikal in festen Schritten verschoben werden. Dies bedeutet eine Variation des zugehörigen Ausgabewertes in festgelegter Schrittweite.

”Einschnappen“ von Stützstellen

Es ist schwierig, eine Stützstelle durch Positionierung mit der Maus exakt an einer bestimmten Stelle zu positionieren. Deshalb verfügt WaVe (zusätzlich zur Methode der direkten Koordinateneingabe) über eine ”Fangfunktion“, mit der Stützstellen nur noch auf den Punkten eines Gitters gesetzt werden können. Dieses Gitter kann über die Grafikoptionen frei in physikalischen Größen eingestellt werden und ist somit nicht vom sichtbaren Koordinatengitter im Arbeitsbereich abhängig. Damit ist es möglich, Stützstellen z. B. nur noch in Schritten von 10 ms und 15 A zu positionieren.

Kopieren von Steuerkurven

Es kommt vor, daß die gleiche Steuerkurve auf verschiedenen Ausgabegeräten erzeugt werden muß, aber jeweils mit verschiedenen Skalierungen. So verlangt z. B. eine vorgegebene Dipolstrom-Steuerkurve, daß die Ströme der fokussierenden und defokussierenden Quadrupole qualitativ denselben Verlauf zeigen, wenn der Arbeitspunkt konstant bleiben soll. Hierzu bietet WaVe die Möglichkeit, eine Steuerkurve zu kopieren und anschließend diese Kopie einem anderen Ausgabegerät zuzuordnen. Dabei wird automatisch eine Umskalierung der Steuerkurve vorgenommen, um sie an die Grenzwerte des anderen Gerätes anzupassen. Eine Dipolstrom-Steuerkurve erlaubt z. B. einen Bereich von 99,908 A bis 3100 A, eine Quadrupolstrom-Steuerkurve dagegen von 0 bis 909,91 A. Das zeitaufwendige manuelle Anpassen der Steuerkurve an die abweichende Skalierung entfällt somit.

Verschieben, Stauchen und Strecken

Zu den Bearbeitungsfunktionen zählt weiterhin die Möglichkeit, eine komplette Steuerkurve horizontal oder vertikal um einen bestimmten Betrag zu verschieben. So kann man eine Steuerkurve sehr einfach 100 ms später beginnen lassen oder die Energie insgesamt um 0,5 GeV anheben. Ebenso kann man Steuerkurven horizontal oder vertikal um eine feste Größe der entsprechenden Einheit oder um eine Prozentzahl strecken oder stauchen. Damit kann man z. B. die Zeitdauer einer Steuerkurve verdoppeln oder nur die Endenergie in einer Dipol-Steuerkurve anheben. Diese Operationen lassen sich nicht nur an der gesamten Steuerkurve, sondern auch an einem einzelnen Segment oder einem Bereich ausführen.

Ausrichten von Stützstellen

Häufiger soll eine Steuerkurve zu verschiedenen Zeitpunkten den gleichen Ausgabewert haben. Dafür bietet WaVe die Möglichkeit, eine Stützstelle vertikal auf den gleichen Wert zu bringen wie eine andere, ohne daß man diesen neu eingeben muß.

”Lupenfunktion“

Oft muß nur ein kleiner Ausschnitt einer Steuerkurve bearbeitet werden. Dies ist sehr schwierig, wenn die Steuerkurve in einer Gesamtübersicht dargestellt ist. Eine ”Lupenfunktion“ ermöglicht es deshalb, einen beliebigen Ausschnitt zu vergrößern, so daß er den gesamten Arbeitsbereich ausfüllt.

4.3 Ein- und Ausgabe von Steuerkurven

4.3.1 Realisierung des Treiber-Konzeptes

Die notwendige Unterstützung vielfältiger Ein- und Ausgabeformate für WaVe führte zu der Überlegung, daß innerhalb des Programmes eine definierte Schnittstelle geschaffen werden sollte, an welche Treiber-Routinen für die verschiedenen Formate angeschlossen werden können. Steuerkurven werden in ihrer internen Darstellung an den Treiber des gewünschten Ausgabegerätes übergeben, der dann die für das Gerät erforderliche Darstellung berechnet und ausgibt.

In der jetzigen Version des Programmes sind diese Treiber im Programm integriert. Es existiert ein eigenes Programmodul, welches die Treiber enthält.

4.3.2 Ein-/Ausgabe in segmentbasierten Formaten

Als segmentbasiertes Format existiert bisher nur das vom Steuerkurvengenerator benutzte Format zum Laden und Speichern einzelner Steuerkurven und Kurvensätze. Hier ist keine Neuberechnung der Ausgabewerte erforderlich. Es müssen lediglich die intern als verkettete Liste dargestellten Segmente aufeinanderfolgend in einen zusammenhängenden Speicherbereich kopiert werden. Zur Verbesserung der Speichereffizienz werden dabei die nur intern benötigten Informationen (z. B. die zur Verkettung benötigten Zeiger) entfernt. Sie müssen beim Einlesen der Steuerkurve in jedem Fall neu angelegt werden.

4.3.3 Ein-/Ausgabe in diskreten Formaten

Für mehrere Treiber ist es notwendig, die Steuerkurve in eine Menge diskreter Einzelwerte umzuwandeln: Das Kontrollsystem verlangt für die Ausgabe an MACS-Prozessoren eine bzw. zwei Tabellen im VAX-Ganzzahl-Format (je nach MACS-Typ), EPOS verarbeitet ASCII-Dateien, in denen die Tabellenwerte im Klartext stehen. In beiden Fällen muß die Steuerkurve in diskreten Schritten ”abgetastet“ werden.^{7} Äquidistante Ausgabe

7Zum ”Abtasten“ der Steuerkurve existiert eine interne Funktion, die zu jedem Zeitwert den Ausgabewert der

Steuerkurve zu diesem Zeitpunkt liefert.

Sollen die Tabellenwerte in zeitlich äquidistanten Schritten erzeugt werden, so wird die interne Darstellung der Steuerkurve mit einer konstanten Schrittweite Δt abgetastet. Sie ergibt sich aus

Δt = \frac{Länge der Steuerkurve}{Anzahl n der Tabellenwerte} .

Sollte das so berechnete Δt unter dem Minimalwert für das angesprochene Ausgabegerät liegen (dies sind z. B. 120,4 μs für einen MACS-Prozessor vom Typ HOLEC), so wird eine neue Anzahl n′ der Tabellenwerte berechnet mit

n′ = \frac{Länge der Steuerkurve}{Δt_{min}} .

So wird gewährleistet, daß die Grenzwerte des Ausgabegerätes eingehalten werden.

Ausgabe mit variabler Schrittweite

Für die MACS-Prozessoren vom Typ ”HOLEC“ werden Steuerkurven benötigt, die mit variablem Δt ausgegeben werden. Der Steuerkurvengenerator (d. h. der für diese Ausgabegeräte eingesetzte Treiber) sollte die Variation der Schrittweite nach Möglichkeit auf physikalisch sinnvolle Weise selber bestimmen.

Daher wurde ein Algorithmus geschaffen, der in Abhängigkeit vom Kurvenverlauf die Schrittweite selbständig variiert:

1. Die Steuerkurve wird mit einer Auflösung Δt abgetastet, die der zehnfachen maximalen Anzahl von Ausgabewerten entspricht:

Δt = \frac{Länge der Steuerkurve}{10 n_{max}} .

Ist die berechnete Schrittweite Δt kleiner als die minimale Schrittweite des Ausgabegerätes, so wird sie auf diese gesetzt.

In der so entstehenden Tabelle werden zusätzlich alle Stützstellen der Steuerkurve mit ihren Koordinaten eingetragen.

2. Es wird das (betragsmäßig) minimale Δy der Tabelle bestimmt, d. h. die minimale Differenz zweier aufeinanderfolgender Ausgabewerte y_{i} und y_{i+1}. Dies wird in vielen Fällen der Wert Null sein, nämlich in jeder Steuerkurve, die konstante Abschnitte enthält.

3. Es werden nun alle aufeinanderfolgenden Tabellenwerte zusammengefaßt, bei denen insgesamt der Ausgabewert nicht mehr als Δy variiert.

Dabei werden jedoch auf keinen Fall Tabellenwerte entfernt, die einer Stützstelle der Steuerkurve entsprechen. Dadurch wird gewährleistet, daß die an den Stützstellen definierten Werte immer exakt an das Ausgabegerät weitergegeben werden. Es können so durch die Diskretisierung der Kurve keine Ungenauigkeiten an kritischen Positionen entstehen.^{8} 4. Ist durch das Zusammenstreichen von Tabellenwerten die Länge der Tabelle im erlaubten

8Für eine Tabelle mit äquidistanten Ausgabewerten läßt sich dies nicht sicherstellen, da hier immer eine zeitliche

Abweichung von maximal Δt/2 zur nächstgelegenen Stützstelle auftreten kann.

Bereich, so wird sie ausgegeben.

Ist die Tabelle noch zu lang, so wird die Schwelle Δy hochgesetzt, indem sie mit einem Faktor multipliziert wird. Im praktischen Einsatz hat sich der Wert 1.5 als sinnvoll herausgestellt, also Δy_{neu} = 1.5 Δy_{alt}. Dieser Faktor stellt einen Kompromiß zwischen bestmöglicher Ausnutzung der Tabellenlänge und Geschwindigkeit des Algorithmus dar. Anschließend werden die Schritte ab 3 wiederholt.

Es ist bei der Ausgabe von Steuerkurven in Tabellenformaten auch immer zu beachten, daß jede diskrete Abtastung eine Tiefpaßfilterung des kontinuierlichen Steuersignals bedeutet (Samplingtheorem). Wird eine Steuerkurve der Dauer t durch n äquidistante Schritte in voller Länge abgetastet, so ist die maximal übertragene Frequenz durch ν_{max} = \frac{n}{2t} gegeben. Für eine Steuerkurve mit 100 ms Dauer und 1500 Werte (ELSA-Kontrollsystem) ergeben sich so beispielsweise ν_{max} = 7.5 kHz.

Einlesen von diskreten Steuerkurven

Sollen Steuerkurven, die in Tabellenform vorliegen, in WaVe eingelesen werden, so müssen die Daten in Segmente umgewandelt werden. Als einfachste Möglichkeit bietet sich an, für jeden Tabellenschritt, d. h. jeden Übergang zwischen zwei Tabellenwerten, ein eigenes Segment anzulegen. Dies würde jedoch zu Steuerkurven mit mehreren hundert Segmenten führen und widerspräche dem Grundgedanken der Segmentierung. Es ist wesentlich sinnvoller, durch einen Algorithmus die diskreten Daten zusammenzufassen. Als Kriterium dient hierbei — ähnlich zum Ausgabealgorithmus für Steuerkurven mit variabler Schrittweite — die Steigung der Steuerkurve. Jeweils aufeinanderfolgende Tabellenwerte, die sich um ein konstantes Δy unterscheiden, können ohne Informationsverlust zu einem Liniensegment mit dieser Steigung zusammengefaßt werden. Sollte die Steigung der Kurve sich zu stark ändern, so wird auch hier eine Schwelle für die maximale Schwankung der Steigung schrittweise erhöht, bis die erforderliche Anzahl Segmente unter eine einstellbare Schwelle (momentan sind dies 100 Segmente) gesunken ist.^{9}

4.3.4 Direktmodus

Um eine möglichst maschinennahe Bedienung des Steuerkurvengenerators zu erreichen, wurde ein sogenannter ”Direktmodus“ in das Programm eingebaut. Ist dieser Modus aktiviert und hat das Programm Verbindung zum ELSA-Kontrollsystem, so wird bei jeder Änderung der gerade bearbeiteten Steuerkurve automatisch der neue Signalverlauf an das Kontrollsystem ausgegeben. Jedes Verschieben einer Stützstelle zum Beispiel kann auf diese Weise direkt in ihrer Auswirkung am Beschleuniger beobachtet werden. Durch die häufige Ausgabe der Steuerkurve wird die Reaktionszeit des Programms auf Eingaben etwas verlangsamt, da an das Kontrollsystem in seiner heutigen Form immer die komplette Tabelle (bzw. die zwei Tabellen für MACS-Prozessoren von HOLEC-Typ) ausgegeben werden muß. Intern berechnet der Steuerkurvengenerator dagegen nur die veränderten Segmente einer Rampe neu.

9Bei einer differenzierbaren Kurve würde man von einer Schwelle der zweiten Ableitung sprechen, die jedoch bei

diskreten Daten mathematisch nicht definiert ist.

4.4 Einsatz des Steuerkurvengenerators auf unterschiedlichen Rechnersystemen

Der Steuerkurvengenerator wurde auf einem Arbeitsplatzrechner vom Typ VAXstation 3100 der Firma Digital unter dem Betriebssystem VAX/VMS entwickelt. Das zukünftige ELSA-Kontroll-system läuft dagegen auf RISC-Rechnern der HP 9000/700 Serie der Firma Hewlett-Packard unter dem Betriebssystem HP-UX, einer UNIX-Implementierung.

Nach Fertigstellung des Steuerkurvengenerators wurde der Quellcode sowohl des Programms (C-Code) als auch der Benutzeroberfläche (UIL-Code) von der VAXstation auf einen RISC-Rechner übertragen und konnte dort nach minimalen Änderungen ebenfalls erfolgreich übersetzt werden.

Da die RISC-Rechner noch keinen Anschluß zum Kontrollsystem hatten, konnten auf ihnen jedoch keine Testreihen mit Ansteuerung des Beschleunigers durchgeführt werden.

5. Tests und Anwendungen

5.1 Tests der internen Programmfunktionen

Ein Großteil der Funktionalität des Programmes WaVe bezieht sich auf die Benutzeroberfläche und die interne Datenverarbeitung. Diese Programmteile wurden während der Programmentwicklung immer wieder getestet. Für sie wurden daher keine eigenen Testreihen durchgeführt. Zu diesen Funktionen zählt auch die Ein- und Ausgabe von Steuerkurven im programmeigenen, segmentbasierten Format.

5.2 Tests mit dem ELSA-Kontrollsystem

Für die Ansteuerung von ELSA-Komponenten mit Steuerkurven müssen diese Daten grundsätzlich über das ELSA-Kontrollsystem ausgegeben werden. Das dafür benötigte Tabellenformat der Steuerkurven wird ebenfalls von EPOS unterstützt.

Somit war der erste Schritt, um die Konsistenz der von WaVe erzeugten Daten zu kontrollieren, sie in dem von EPOS ladbaren Text-Format in eine Datei zu schreiben, mit EPOS einzulesen, die Daten über die Grafik von EPOS darzustellen und mit der in WaVe entworfenen Steuerkurve zu vergleichen. Zusätzlich konnten direkt die in der Datei stehenden Werte kontrolliert werden. Für beide Tests war eine Verbindung mit dem ELSA-Kontrollsystem noch nicht nötig.

Die Dipol-Steuerkurve aus Abbildung 5.1 wurde in WaVe entworfen und ausgegeben. Die Ausgabewerte zu den Zeitpunkten 0 ms, 100 ms, 200 ms, 300 ms, 400 ms und 500 ms konnten direkt in den Tabellenwerten gesucht und verglichen werden. Es zeigte sich die Übereinstimmung der Daten.

Anschließend wurde die erzeugte Tabellendatei in EPOS geladen und dargestellt (s. Abb. 5.2). Dadurch konnte eine qualitative Übereinstimmung der gesamten Steuerkurve mit der mit WaVe erzeugten Kurvenform überprüft werden.

5.3 Tests mit Dipolen und Extraktions-Quadrupolen

5.3.1 Messungen an den Dipol-Netzgeräten

Im nächsten Schritt wurden die erzeugten Steuerkurvendaten an das Kontrollsystem ausgegeben. Um diese Ausgaben zu kontrollieren, wurde an die Steuerleitung der Dipol-Netzgeräte von ELSA 42 5. TESTS UND ANWENDUNGEN

Abbildung 5.1: Dipol-Energie-Steuerkurve über 500 ms Abbildung 5.2: EPOS-Darstellung der Dipol-Steuerkurvendaten

Abbildung 5.3: Versuchsaufbau zu den Messungen an Dipol-Netzgeräten

hinter dem D/A-Wandler ein Digital-Oszilloskop angeschlossen, das die Meßdaten über seine IEC-Bus-Schnittstelle wieder an das Kontrollsystem gab, aus dem sie dann mit EPOS ausgelesen und dargestellt werden konnten (s. Abb. 5.3).

Mit dieser Anordnung konnte nun auch die korrekte Umsetzung der erzeugten Steuerkurven in den MACS-Prozessoren überprüft werden (s. Abb. 5.4).

In den Messungen der Netzgeräte-Signale fällt auf, daß die Kurve sehr stufig ist. Dies ist darauf zurückzuführen, daß das verwendete LeCroy-Digital-Oszilloskop nur eine Auflösung von 8 Bit hat, d. h. ein Signal kann nur mit 256 verschiedenen Werten dargestellt werden. Nutzt das Signal nicht den gesamten Spannungsbereich aus, so werden entsprechend weniger Werte unterschieden. Zusätzlich erscheint eine nicht zu vermeidende Digitalisierungs-Ungenauigkeit von einem Bit (”least significant bit flip“).

5.3.2 Messungen an den Extraktions-Quadrupolen

Bei den Luft-Quadrupolen, die zur Resonanz-Extraktion aus ELSA eingesetzt werden, konnten schließlich Messungen direkt an den Magnetströmen vorgenommen werden. Dazu wurden Steuerkurven in WaVe entworfen und über das Kontrollsystem an die Luft-Quadrupole in den Halbzellen 16 und 17 ausgegeben. Die Stromstärke der Luft-Quadrupole wurde dann auf dem LeCroy-Oszilloskop im Bedienungsraum beobachtet.

Nachdem eine passende Steuerkurve in WaVe entworfen worden war (s. Abb. 5.5), konnten hierbei auch die von H. Ebeling durchgeführten Messungen zur Geschwindigkeit von Magnetfeldänderungen in den Luft-Quadrupolen nachvollzogen werden [Ebe87]. In Abbildung 5.6 ist die Messung des Stroms der Quadrupol-Stromversorgung dargestellt. Es wurde mit WaVe ein Sägezahnsignal erzeugt, das eine Gesamtdauer von 20 ms hat. In diesem Signal wurde die Stromstärke innerhalb von 6 ms von 0 auf 150 A erhöht, um dann direkt wieder auf 0 A zurückgesetzt zu werden.

Abbildung 5.4: Messung des analogen Dipol-Steuersignals

Auf dem Oszilloskop konnte dann die für die Rückstellung des Magnetstroms erforderliche Zeit bestimmt werden: Für eine Stromänderung von 90% auf 10% wurde eine Zeit von 264 μs benötigt,^{1} dies entspricht einer Steigung von 0,45 A/μs. Die von H. Ebeling spezifizierten 1,5 A/μs konnten somit nur größenordnungsmäßig reproduziert werden. Ebeling nennt jedoch eine Anstiegszeit von 0,5 A/μs als noch ausreichend.

5.4 Nachbeschleunigung für den Speicherring-Betrieb

Für den Betrieb von ELSA als Speicherring für die Nutzung der Synchrotronstrahlung ist eine Nachbeschleunigung der Elektronen nötig, wenn ein Spektralbereich der Synchrotronstrahlung gewünscht wird, der nur von Elektronen einer Energie höher als die Injektionsenergie in ELSA erreicht wird.

Dieser Vorgang ist jedoch nicht trivial, da bei der Beschleunigung Resonanzen des Elektronenstrahls angeregt werden können, wenn der Arbeitspunkt nicht konstant gehalten wird. Die Folge sind Strahlverluste.

Im Betrieb als Synchrotronstrahlungsquelle wird das Füllen, Rampen, Speichern und erneute Injizieren nach Absinken der Strahlintensität halbautomatisch durch das EPOS-Programm FASTMODE vorgenommen. Der Operateur muß nur noch den Beginn einer neuen Injektion bestätigen. FASTMODE setzt hierbei die benötigten Steuerkurven. Sie werden als linear ansteigende Rampen erzeugt.

1Für diese Messungen muß eine Unsicherheit von ca. 10% berücksichtigt werden.

Abbildung 5.5: Steuerkurve für Luft-Quadrupole

Obwohl diese Steuerkurven theoretisch dafür sorgen sollten, daß sich der Arbeitspunkt in der Beschleunigungsphase nicht ändert, deuten Strahlverluste, die reproduzierbar zu den gleichen Zeitpunkten bzw. bei den gleichen Energien auftreten, darauf hin, daß eine Arbeitspunktverschiebung stattfindet und dabei Resonanzen gekreuzt werden. Wie in Abschnitt 2.2.1 dargelegt wurde, sind die Multipolfelder meist nicht-lineare Funktionen der Magnetströme, so auch in diesem Fall [Zim86]. Da diese Funktionen für Dipol-Magnete und Quadrupol-Magnete nicht identisch sind, führt eine lineare Ansteuerung notwendigerweise zu Schwankungen des Arbeitpunktes. Erst die Anwendung von Eichkurven für die Magnetansteuerung kann dieses Problem verringern.

5.4.1 Die Messungen

Es wurden zwei Meßreihen im Speicherring-Betrieb durchgeführt. In der ersten wurde ein Elektronenstrahl der Energie 1,2 GeV aus dem Synchrotron in ELSA injiziert und anschließend in einer Zeit von 20 Sekunden auf 1,9 GeV nachbeschleunigt. In der zweiten Meßreihe wurden die Elektronen bei der gleichen Energie injiziert, dann aber auf 2,3 GeV nachbeschleunigt. Der Energieanstieg wurde dabei konstant gehalten, so daß sich hier eine Beschleunigungsdauer von 20 · (2,3 − 1,2)/(1,9 − 1,2) = 24,44 Sekunden Dauer ergab. Für diese Messungen mußten Steuerkurven für die Dipole, die fokussierenden Quadrupole (F-Quadrupole) und die defokussierenden Quadrupole (D-Quadrupole) entworfen werden, die qualitativ das gleiche Verhalten zeigten. Dazu wurde das Programm FASTMODE so geändert, daß es das Setzen dieser Steuerkurven durch ein anderes Programm erlaubte, bevor nachbeschleunigt wurde. Dann wurden mit WaVe lineare Steuerkurven für die Beschleunigungsphase erzeugt und gesetzt (Abbildung 5.8; die im Original farblich unterschiedenen Steuerkurven sind von oben nach unten die Strom-Kurven für Dipole, F-Quadrupole und D-Quadrupole). Das Intensitätssignal des in 46 5. TESTS UND ANWENDUNGEN

Abbildung 5.6: Messung der Luft-Quadrupol-Ströme Abbildung 5.7: Zeitlich gedehntes Signal

Abbildung 5.8: Lineare Steuerkurven für Dipole und Haupt-Quadrupole

ELSA gespeicherten Strahls zeigte während der Beschleunigung an zwei Stellen stärkere Verluste, direkt bei Start der Beschleunigung und auch im Bereich von 4,5 bis 5,2 Sekunden danach (Abb. 5.11). Dieser zweite Strahlverlust läßt sich dadurch erklären, daß der Arbeitspunkt von ELSA beim Nachbeschleunigen nicht konstant ist und zu diesem Zeitpunkt eine Resonanz kreuzt. Um diese Verluste gering zu halten, muß entweder versucht werden, diesen kritischen Bereich möglichst schnell zu durchlaufen, d. h. die Dipol- und Quadrupol-Steuerkurven in der Zeit zwischen 4,5 und 5,2 Sekunden nach Start der Beschleunigung steiler zu machen, oder durch eine Veränderung der Quadrupol-Steuerkurven in diesem Zeitraum den Arbeitspunkt zu beeinflussen.

Die zweite Möglichkeit wurde gewählt, und eine kleine Änderung an der Steuerkurve für die D-Quadrupole vorgenommen (Abb. 5.9; in Abb. 5.10 ist der relevante Ausschnitt vergrößert dargestellt). Die Änderung des Quadrupolstroms an der betreffenden Stelle betrug lediglich ca. 4 Ampere. Tatsächlich konnte der Strahlverlust im betreffenden Zeitraum dadurch deutlich verringert werden (Abb. 5.12).

In weiteren Versuchen wurde sowohl die Größe dieser ”Beule“ als auch ihre Richtung variiert, doch zeigten sich jeweils stärkere Intensitätsverluste.

Bei der Nachbeschleunigung auf 2,3 GeV stellte sich heraus, daß nun die Strahlverluste trotz identischem Anfangsverlauf der Steuerkurven zu anderen Zeitpunkten auftraten. Leichte Veränderungen der D-Quadrupol-Ströme zu den betreffenden Zeitpunkten zeigten aber auch hier Erfolge (s. Abb. 5.13 und 5.14).

In weiteren Untersuchungen könnte man versuchen, den Verdacht der Arbeitspunktverschiebung zu prüfen. Wenn tatsächlich die Quadrupolstärken nicht konstant sind, sollte dies durch eine andere Steuerung der Quadrupolströme ausgeglichen werden können. Eine schnelle und periodische Messung des Arbeitspunktes während der Nachbeschleunigungsphase ist jedoch erst mit dem neuen ELSA-Kontrollsystem möglich.

48 5. TESTS UND ANWENDUNGEN Abbildung 5.9: Modifizierte Steuerkurve für D-Quadrupole Abbildung 5.10: Ausschnitt der modifizierten Steuerkurve 5.4. NACHBESCHLEUNIGUNG FÜR DEN SPEICHERRING-BETRIEB 49

Abbildung 5.11: Messung der Strahlintensität bei linearer Steuerkurve Abbildung 5.12: Messung der Strahlintensität bei modifizierter Steuerkurve 50 5. TESTS UND ANWENDUNGEN

Abbildung 5.13: Messung der Strahlintensität bei linearer Steuerkurve, 2,3 GeV Abbildung 5.14: Messung der Strahlintensität bei modifizierter Steuerkurve, 2,3 GeV

5.5 Extraktion aus ELSA

5.5.1 Die Steuerkurve für die Luft-Quadrupole

Wie schon in Abschnitt 2.2.3 erläutert wurde, wird die Variation des horizontalen Arbeitspunktes während der Extraktionsphase durch Veränderung der Quadrupolstärke mit zusätzlichen, eisenlosen Quadrupolen vorgenommen.

Der zeitliche Verlauf der Intensität des extrahierten Strahls (”Spill-Out“) hängt dabei stark von der für diese Luft-Quadrupole verwendeten Steuerkurve ab. H. Ebeling nennt in seiner Diplomarbeit für die Variation des horizontalen Arbeitspunktes eine theoretisch optimale Kurve der Form

ϵ(t) = ϵmax (1 − \frac{1}{π} arccos(1 − 2νt)) ,

wobei ϵ(t) = Q(t) − Q_{0} die Differenz zwischen dem momentanen Arbeitspunkt Q und dem resonanten drittelzahligen Arbeitspunkt Q_{0} bezeichnet. Die Frequenz ν beträgt 50 Hz für eine Extraktionsperiode von 20 ms, die Amplitude ϵmax liegt im Promille-Bereich [Ebe87]. Messungen von M. Neckenig und Erfahrungen im laufenden Betrieb ergaben dagegen eine gute Extraktion für eine lineare Änderung des Arbeitspunktes [Nec87].

Im Rahmen seiner Promotion hat M. Neckenig in EPOS das Programm LQITER3 entwickelt, das vollautomatisch aus dem Intensitätssignal des extrahierten Strahls eine neue Steuerkurve für die Luft-Quadrupole berechnet [Nec93]. Dieser Vorgang kann wiederholt werden, so daß sich theoretisch die Extraktion selbst optimiert. Vor Beginn der Optimierung muß jedoch darauf geachtet werden, daß ELSA eine möglichst gleichmäßige Füllung zeigt und die Amplitude der Extraktions-Sextupole korrekt, d. h. nahe der Resonanz, eingestellt ist. Sind diese Bedingungen nicht erfüllt, so zeigt der Algorithmus mit großer Wahrscheinlichkeit keine Konvergenz.

5.5.2 Die Messungen

Mit Hilfe von WaVe war es nun möglich, die von diesem Programm erzeugten Steuerkurven von Hand nachzubearbeiten. Ziel war es, starke ”Sprünge“ in den berechneten Steuerkurven, die aus Spitzen im gemessenen Intensitätssignal rühren, von Hand auszugleichen und so den Spill-Out noch weiter zu verbessern.

Eine Einsatzmöglichkeit für WaVe ergab beim Betrieb für das Experiment ELAN. Nach Einstellung von ELSA für die Extraktion und Anwendung von LQITER3 zeigte sich noch keine zufriedenstellende Extraktion: Eine starke Spitze in der Stromstärke des extrahierten Strahls zu Beginn der Extraktionsphase führte zur Verschlechterung des Tastverhältnisses.

Die von LQITER3 erzeugte Steuerkurve für die Luft-Quadrupole wurde in WaVe eingelesen und im WaVe-Format gespeichert. Dann wurde die Steuerkurve in dem zeitlichen Bereich, der die Unregelmäßigkeiten im Spill-Out verursachte, durch Verschieben einiger Stützstellen leicht verändert. Die veränderte Steuerkurve wurde neu gesetzt und der Spill-Out kontrolliert. Bei einer Verschlechterung konnte die alte Steuerkurve wieder geladen werden, um die Änderung rückgängig zu machen.

Es gelang nach wenigen Versuchen, die Stromspitze zu Beginn der Extraktion zu verringern und so den Spill-Out insgesamt zu verbessern. Das Ergebnis ist in Abbildung 5.15 zu sehen. Leider wurde vor Beginn der Optimierung kein Ausdruck des Spill-Outs vorgenommen, so daß der direkte Abbildung 5.15: Gemessene extrahierte Strahlintensität (”Spill-Out“) nach der Optimierung durch WaVe

Vergleich hier nicht mehr möglich ist.

Diese Anwendungen des Steuerkurvengenerators konnten sowohl seine Funktionstüchtigkeit bestätigen als auch seine Nützlichkeit zeigen. Gerade bei der experimentellen Untersuchung der Maschinenphysik bieten sich durch den Einsatz von WaVe neue Möglichkeiten.

5.6 Ausblick

Der Steuerkurvengenerator WaVe bietet in seiner heutigen Form bereits ein leicht anwendbares Werkzeug zum Entwurf von zeitlich veränderlichen Signalverläufen.

Ein zukünftige Erweiterung des Programmes könnte es aber ermöglichen, die physikalische Bedeutung von Steuerkurven noch mehr in den Mittelpunkt zu stellen. Das ließe sich erreichen, wenn mit Hilfe von WaVe mehr Steuerkurven mit direkter physikalischer Aussage entworfen werden könnten, z. B. für den Arbeitspunkt oder die Chromatizität. Da hierbei teilweise komplizierte Zusammenhänge auftreten, müßte das Programm dazu in der Lage sein, mehrere Steuerkurven durch vorgegebene mathematische Operationen miteinander zu verknüpfen. So sind viele beschleunigerphysikalische Größen abhängig von der Teilchenenergie. Da diese wiederum von der Dipol-Stromstärke abhängt, ließe sich die Dipol-Steuerkurve als Grundlage für die Berechnung anderer Steuerkurven benutzen.

Eine derartige Ergänzung würde die Anwendungsgebiete des Steuerkurvengenerators noch wesentlich erweitern.

6. Zusammenfassung

Für die Realisierung der Nachbeschleunigungs-Betriebsart der Stretcheranlage ELSA und eine Untersuchung des Maschinenverhaltens ist der Entwurf von zeitlich schnell veränderlichen Steuersignalen für verschiedene ELSA-Komponenten nötig.

Im Rahmen dieser Arbeit wurde der Steuerkurvengenerator WaVe entworfen und entwickelt, der die Konstruktion und Manipulation beliebiger Steuerkurven für das ELSA-Kontrollsystem ermöglicht. Ein konsequenter Einsatz des X Window Systems zur Konstruktion der Benutzerschnittstelle ermöglicht eine intuitive Bedienung des Programms und erlaubt es, physikalische Zusammenhänge direkt in Steuerkurven umzusetzen. Die Portierbarkeit des Programms auf verschiedene Rechnersysteme und Betriebssysteme und das Konzept der geräteunabhängigen Definition von Steuerkurven sichern eine Zusammenarbeit sowohl mit dem jetzigen als auch mit dem geplanten neuen Kontrollsystem. Zusätzliche Flexibilität wird durch vielfältige Konfigurationsmöglichkeiten gewonnen, die es ermöglichen, ohne Eingriff in das Programm die geräteabhängigen Parameter nach Bedarf zu verändern.

Testreihen mit verschiedenen ELSA-Magneten haben gezeigt, daß die Kommunikation von WaVe mit dem Kontrollsystem und den angeschlossenen Beschleunigerkomponenten problemlos funktioniert.

Die Anwendung des Steuerkurvengenerators zur Nachbeschleunigung in ELSA führte im Testlauf zu deutlichen Steigerungen des erreichten Strahlstromes. Auch ein Einsatz bei der Extraktion aus ELSA ergab Verbesserungen der Strahleigenschaften. Es konnte somit gezeigt werden, daß das Programm WaVe ein nützliches und gewinnbringendes Werkzeug für die Ansteuerung von ELSA und die Untersuchung der Maschinenphysik ist.

54 6. ZUSAMMENFASSUNG

Anhang

55

A. Definition der Syntax von Funktionstermen

Für Segmente vom Typ ”Funktion“ wird im Programm WaVe eine eigene Formelsyntax definiert, die sich stark an die in Programmiersprachen wie C oder PASCAL übliche anlehnt. In Tabelle A.1 ist diese Syntax in Backus-Naur-Form angegeben. Die von dieser Syntax benutzten Tokens, d. h. die als einzelnes Zeichen interpretierten Zeichenketten und Symbole, werden in Tabelle A.2 erläutert.

Tabelle A.1: Syntax von Funktionstermen in Backus-Naur-Form

expression :== term { + term | - term}
term  :== factor { * factor | / factor | % factor}
factor  :== [unop] factor | subexpr
subexpr  :== subterm [^subterm]

             unop  :== + | - | sin | cos | tan | asin | acos | atan |

                             exp | log | sqrt | abs

subterm  :== variable | constant | ( expression )
variable  :== letter {letter | digit}
constant :== decimal [ E [+ | -] number]
decimal  :== number[.number] | .number
number  :== digit{digit}
letter  :== A | B | … | Z | a | b | … | z
digit  :== 0 | … | 9

Bemerkungen zur Tabelle A.2:

1. Groß- und Kleinschreibung werden unterschieden: Die Konstante π wird durch pi dargestellt, PI oder Pi werden nicht erkannt. Funktionen wie sin oder log müssen klein geschrieben werden. Einzige Ausnahme ist das Exponenten-’E’: 1e2 und 1E2 sind beides korrekte Eingaben für die Zahl 100.

2. Leerzeichen können beliebig zwischen Token verteilt werden, nicht jedoch innerhalb eines Tokens oder einer Zahlkonstante.

3. Dezimalbrüche können mit einem Dezimalpunkt anfangen oder enden: .1 ist 0,1 , 1.e1 ist 10.

4. Funktionen erwarten immer ein Argument; dieses kann, muß aber nicht in Klammern stehen: sin pi ist also ebenso korrekt wie sin (pi). Aber Vorsicht: sin 2*pi ist sin(2) × π, da die Tabelle A.2: Token in Funktionstermen

Variable

t                 Zeit in ms

Konstanten

t0 Startzeit des Segmentes in ms t1 Endezeit des Segmentes in ms y0 Startwert des Segmentes in Einheiten der Steuerkurve (z. B. GeV

oder A)

pi Die Zahl π, also 3,141592654 e Die Eulersche Zahl e, also 2,718281828

Unäre Operatoren

+                 Unäres Plus

- Unäres Minus (Negation)

Binäre Operatoren

+, -, *, / Addition, Subtraktion, Multiplikation, Division % Ganzzahlige Division ^Potenzierung; x^y ˆ= x^{y}

Funktionen

sin, cos, tan Sinus, Cosinus und Tangens; Argumente werden im Bogenmaß

erwartet.

asin, acos, atan Arcus-Funktionen; das Ergebnis ist im Bogenmaß. log Dekadischer Logarithmus (Basis 10) exp Potenzierung zur Basis e; exp(x) ˆ= e^{x} sqrt Quadratwurzel; sqrt(x) ˆ= \sqrt{x} abs Betrag; abs(x) ˆ= |x|

Funktion stärker bindet als der Multiplikationsoperator! Korrekt (da wahrscheinlich so gemeint) wäre hier sin (2*pi).

5. Ein ”Endewert des Segmentes“ erübrigt sich, da dieser sich erst durch die Funktion selber ergibt.

6. Die Zeit relativ zum Anfang des Segmentes kann ausgedrückt werden als t - t0.

B.Definitionen verschiedener Interpolationsverfahren

Bezier-Splines bzw. Bezier-Kurven Sie basieren mathematisch auf dem Bernstein-Polynom 3. Ordnung

P (t) = (1 − t)^{3} P_{1} + 3(1 − t)^{2} t P_{2} + 3(1 − t) t^{2} P_{3} + t^{3} P_{4}

mit den Stützstellen P_{1} bis P_{4} ∈ IR^{n}, wobei die Kurve mit 0 ≤ t ≤ 1 durchlaufen wird. Die Stützstellen P_{1} und P_{4} bezeichnen dabei den Start- bzw. Endpunkt der Kurve, die anderen beiden Stützstellen bestimmen die Form der Kurve (die Strecke |P_{1}P_{2}| ist Tangente an die Kurve in P_{1}, analog ist |P_{3}P_{4}| Tangente in P_{4}), liegen aber nicht auf ihr. Bezier-Splines definieren somit keine Interpolation aller Stützstellen, sondern nur der ersten und letzten. Im Gegensatz zu anderen Splines sind Bezier-Kurven in jeder Ableitung stetig, da die Polynomkoeffizienten über den gesamten Definitionsbereich konstant sind.

B-Splines Der allgemeine Ansatz für einen B-Spline mit n Stützstellen lautet

P (x) = ∑_{i=0}^{n} P_{i} · B_{ik}(x) ,

wobei die P_{i} die Koordinaten der Stützstellen sind [Hej88]. Der Parameter k ist konstant und bestimmt, wieviele Stützstellen an der Stelle x den Verlauf der Kurve beeinflussen; die B_{ik} bilden somit eine ortsabhängige Gewichtungsmatrix. Die Variable x durchläuft für ein Kurve mit n Stützstellen mit einem Wichtungsbereich k das Intervall [0, n − k + 2]. Die Definitionsgleichungen für die Gewichte sind

B_{i,1}(x) = \{ \begin{matrix}1 & für t_{i} ≤ x < t_{i+1} \\ 0 & sonst \end{matrix}
B_{i,k}(x) = B_{i,k−1}(x) · \frac{x − t_{i}}{t_{i+k−1} − t} +

B_{i+1,k−1}(x) · \frac{t_{i+k} − x}{t_{i+k} − t_{i+1}}

t_{i} = \{ \begin{matrix}0 & für & i < k \\ i − k + 1 & für & k < i < n \\ n − k + 2 & für & i > n \end{matrix}

Wie man erkennt, bestimmt der Parameter k den Grad der erzeugten Splines. So ergeben sich für k = 3 kubische B-Splines. Diese Parameterwahl ist in vielen Implementierungen fest eingebaut. Auch bei diesen Splines liegen nur die erste und letzte Stützstelle immer auf der entstehenden Kurve.

Akima-Splines (besser: Akima-Interpolations-Polynome) Die Akima-Polynome werden lokal zwischen den einzelnen Stützstellen definiert durch:

P_{i}(x) = A_{i} + B_{i}(x − x_{i}) + C_{i}(x − x_{i})^{2} + D_{i}(x − x_{i})^{3} , x_{i} ≤ x < x_{i+1}
P_{i} : Polynom im i-ten Teilintervall
A_{i} = y_{i}
B_{i} = t_{i}
C_{i} = \frac{3m_{i} − 2t_{i} − t_{i+1}}{x_{i+1} − x_{i}}
D_{i} = \frac{t_{i} + t_{i+1} − 2m_{i}}{(x_{i+1} − x_{i})^{2}}
m_{i} = \frac{y_{i+1} − y_{i}}{x_{i+1} − x_{i}}  (Steigung des i-ten Teilintervalls)
t_{i} = \frac{|m_{i+1} − m_{i}| · m_{i−1} + |m_{i−1} − m_{i−2}| · m_{i}}{|m_{i+1} − m_{i}| + |m_{i−1} − m_{i−2}|}  (Steigungsformel) (B.1)

Die Steigungsformel (B.1) ist der Kern des Akima-Verfahrens: Die Steigung der Kurve an den Stützstellen wird nur durch die Position der benachbarten Stützstellen bestimmt. Für vier Fälle sei dies anschaulich gemacht [Hil89]:

[figure: .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; x_{i}; t_{i} = m_{i−1} , wenn; \begin{matrix}m_{i−2} = m_{i−1} und \\ m_{i} ≠ m_{i+1} \end{matrix}; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; x_{i}; t_{i} = m_{i} , wenn; \begin{matrix}m_{i−2} ≠ m_{i−1} und \\ m_{i} = m_{i+1} \end{matrix}; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; x_{i}; t_{i} = m_{i−1} = m_{i} , wenn; m_{i−1} = m_{i}; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; .; x_{i}; t_{i} = \frac{1}{2}(m_{i−1} + m_{i}) , wenn; \begin{matrix}m_{i−2} = m_{i−1} und \\ m_{i} = m_{i+1} \end{matrix}]

Wie man erkennt, wird die Steigung der Kurve in einem Punkt x_{i} nicht als Mittelwert der benachbarten Abschnitte gebildet, sondern tendiert eher zu einem extremen Verhalten. Dabei haben sowohl die direkt benachbarten Stützstellen als auch die jeweils an diese angrenzenden Einfluß.

C. Steuerkurvenentwurf mit dem Programm WaVe

C.1 Der Start von WaVe

Beim Start von WaVe wird das Hauptfenster geöffnet, das die Menüleiste und einen zuerst leeren Arbeitsbereich zeigt. Die Auswahlmöglichkeiten des Menüs werden beim Anklicken mit der linken Maustaste^{1} angezeigt. Jeder Menüpunkt läßt sich zusätzlich auch über eine Tastenkombination erreichen, die im Menü sichtbar eingetragen ist.

Abbildung C.1: WaVe nach dem Start mit aufgeklapptem Menü

Nach dem Laden oder Neuerzeugen einer Steuerkurve wird diese im Arbeitsbereich dargestellt; nach dem Laden eines Steuerkurvensatzes werden im Arbeitsbereich des Hauptfensters alle zugehörigen Steuerkurven überlagert dargestellt. Sind dies mehr als eine, so kann über die Bearbeitungsfunktionen jeder Steuerkurve ein eigenes, neues Fenster mit einem eigenen Arbeitsbereich zugeordnet werden. Auf einem Farbbildschirm erscheint jeder Steuerkurventyp in einer eigenen Farbe.

1Alle Bedienungshinweise bzgl. bestimmter Tasten oder Maustasten gelten für die Standardeinstellungen unter

dem Window Manager des OSF/Motif. Die verwendete (Maus-)Tastenbelegung kann jedoch vom Benutzer an

eigene Wünsche angepaßt werden, siehe dazu [OSF91d].

Die Steuerkurven werden standardmäßig so in den Arbeitsbereich eingepaßt, daß eine Steuerkurve mit maximalen Ausgabewerten den Arbeitsbereich ausfüllen würde. Diese Darstellung kann jedoch geändert werden.

Sofern nur eine Steuerkurve dargestellt wird, werden die Koordinatenachsen in den zugehörigen Einheiten beschriftet. Bei gleichzeitiger Darstellung mehrerer Steuerkurven wird nur die x-Achse (Zeitachse) beschriftet. Zusätzlich zu den Koordinatenachsen kann auch ein Gitter eingeblendet werden. Die Stützstellen einer Steuerkurve werden durch kleine Rechtecke dargestellt, um sie optisch von der Steuerkurve abzuheben. Die Größe dieser Quadrate kann in den Grafik-Einstel-lungen unter dem Menüpunkt Optionen Grafik-Einstellungen… verändert werden. Dort kann man das Markieren der Stützstellen auch gänzlich abschalten.

Wird das gesamte Fenster in der Größe verändert, werden die Steuerkurven entsprechend umskaliert. Skalenbeschriftung und Gitter passen sich automatisch der neuen Größe an.

Wenn Steuerkurven im Arbeitsbereich sichtbar sind, können die Bearbeitungs-Funktionen aus einem sogenannten ”Popup-Menü“ ausgewählt werden. Dieses erscheint bei Betätigen der rechten Maustaste im Arbeitsbereich.

C.2 Erzeugen und Bearbeiten von Steuerkurven

Soll eine neue Steuerkurve mit WaVe erzeugt werden, so kann dies auf verschiedene Arten geschehen:

1. Es wird eine neue Steuerkurve erzeugt (Menüpunkt Datei neue Steuerkurve erzeugen ). In dem zunächst erscheinenden Dialog für die Steuerkurvenparameter werden die nötigen Eingaben für die neue Steuerkurve gemacht:

• Der Steuerkurventyp wird über eine Auswahlbox eingestellt, die auf Mausklick alle verfügbaren Typen anzeigt.

• Der Steuerkurvenname, der nur der Information dient, kann vom Benutzer verändert werden. Voreinstellung ist hier die Bezeichnung des Steuerkurventyps (also z. B. ”Dipol-Strom“).

• Die Länge der Steuerkurve wird in Millisekunden eingegeben.

• Start- und Endwert der Steuerkurve können ebenfalls eingegeben werden, was aber auch nachträglich durch Verschieben der ersten bzw. letzten Stützstelle in der Steuerkurvendarstellung gemacht werden kann.

Über diesen Dialog können auch direkt Steuerkurvendaten aus einer Datei im EPOS-Text-Format geladen werden. Die Angaben für Länge der Steuerkurve sowie Anfangs- und Endwert werden dann aus diesen Werten ermittelt. Werden keine Daten eingelesen, so wird für die Steuerkurve zunächst ein einzelnes Segment angelegt, das über die gesamte eingegebene Länge reicht.

2. Es wird eine bereits gespeicherte Steuerkurve oder ein ganzer Steuerkurvensatz geladen (Menüpunkt Datei einzelne Steuerkurve laden… bzw. Datei Steuerkurvensatz laden…) und verändert. Nach dem Auswählen der zu ladenden Steuerkurvendatei und dem erfolgreichen Laden wird der Dialog zur Einstellung der Steuerkurvenparameter angezeigt, damit man kontrollieren kann, ob die geladene Steuerkurve die gewünschte ist; analog erscheint der Dialog für Steuerkurvensatzparameter beim Laden eines Steuerkurvensatzes.

3. Steuerkurvendaten werden aus einer EPOS-Datei übernommen. Da diese Dateien jedoch keine Informationen über den Steuerkurventyp enthalten, ist das Füllen einer Steuerkurve mit diesen Daten nur möglich, indem eine neue Steuerkurve angelegt wird (s. Punkt 1).

4. Steuerkurvendaten werden vom Kontrollsystem übernommen. Auch hierbei muß WaVe erst über den Typ der Steuerkurve informiert werden, da nur so die entsprechenden Daten eingelesen werden können. Es wird also ebenfalls erst eine neue Steuerkurve angelegt und anschließend die Daten eingelesen.

Nach dem Beenden des Parameter-Dialoges wird die geladene oder neue Steuerkurve bzw. der Steuerkurvensatz im Hauptfenster angezeigt und kann bearbeitet werden.

C.2.1 Bearbeiten von Teilen einer Steuerkurve

Möchte man ein einzelnes Segment einer Steuerkurve manipulieren, so muß man es erst markieren. Dies geschieht durch ein ”Auswählen“ mit der Maus: Der Mauszeiger wird auf das entsprechende Segment bewegt und die linke Maustaste betätigt. Das betreffende Segment wird dann in einer größeren Strichstärke gezeichnet, um anzuzeigen, daß es markiert ist. Ebenso kann man auch eine einzelne Stützstelle markieren. Wird hierbei die Maustaste gedrückt gehalten, so kann man die Stützstelle verschieben. Um eine Kontrolle über die Position der Stützstelle zu haben, werden während des Verschiebens kontinuierlich die neuen Koordinaten in physikalischen Einheiten angezeigt. Ein sogenannter Bereich, d. h. eine zusammenhängende Folge von Segmenten, kann selektiert werden, indem erst das erste Segment oder die erste Stützstelle und anschließend mit gedrückter Umschalttaste^{2} die letzte Stützstelle markiert wird. Nun wird der gesamte Bereich in einer größeren Strichstärke gezeichnet. Nach dem Markieren einer Stützstelle, eines Segmentes oder eines Bereichs stehen über die rechte Maustaste die weiteren Bearbeitungsfunktionen zur Verfügung. Diese Bearbeitungsfunktionen unterscheiden sich dabei je nach Art der markierten Objekte. Gleichzeitig werden die Art und Anzahl der ausgewählten Objekte sowie ihre Anfangs- und Endkoordinaten in einer Informationszeile unterhalb des Arbeitsbereichs angezeigt. Ein wichtiger Bearbeitungsschritt ist das Unterteilen eines Segmentes in Teilsegmente. Beim Erzeugen einer neuen Steuerkurve besteht diese nur aus einem einzigen Segment. Der erste Schritt wäre also, den Start- und Endwert der Steuerkurve einzustellen, das Segment zu selektieren und dann in die gewünschte Anzahl von Segmenten aufzuteilen, wobei diese neu erzeugten Segmente den Typ des unterteilten Segmentes bekommen. Dies geht nicht, wenn es sich um ein Funktions-Segment handelte; hier wäre eine Unterteilung in neue ”Funktions-Teilsegmente“ auch nicht wünschenswert, da die Zuordnung von ”Funktions-Teiltermen“ nicht allgemein eindeutig sein kann. Hier werden automatisch Teilsegmente vom Typ ‘Spline’ erzeugt.

2Dies ist die Taste, mit der von Klein- auf Großbuchstaben umgeschaltet wird, aus dem Englischen auch als

”Shift“-Taste bekannt.

C.3 Konfiguration von WaVe

Das Programm WaVe läßt sich auf zwei Ebenen an die Anforderungen von Kontrollsystem und Benutzern anpassen: Auf der Bedienungsebene über Voreinstellungen, die im Programm vorgenommen werden und anschließend abgespeichert werden können, auf der Kontrollebene durch eine Definitionsdatei, die außerhalb des Programms von autorisierten Benutzern geändert werden kann und beim Programmstart automatisch eingelesen wird.

C.3.1 Benutzereinstellungen

Beim Einsatz des Programmes auf verschiedenen Rechnern mit unterschiedlicher Grafikdarstellung und unter wechselnden Arbeitsbedingungen kann eine optimale Einstellung der grafischen Darstellung nicht allgemeingültig definiert werden. Um dem Rechnung zu tragen, wurden in WaVe einige Einstellungen, die das Erscheinungsbild bestimmen, für den Benutzer änderbar gemacht. Sie können über den Menüpunkt Optionen Grafik-Voreinstellungen… oder über das ”Popup-Menü“ in jedem Fenster erreicht werden. Es besteht jedoch ein Unterschied: Voreinstellungen, die in einem Fenster vorgenommen werden, gelten nur für dieses Fenster, Voreinstellungen über das Hauptmenü gelten für alle weiteren Fenster und können auch abgespeichert werden. Zu diesen Benutzereinstellungen zählen:

Größe und Position des Hauptfensters beim Start. Auch weitere Fenster erhalten diese voreingestellte Größe.

Helligkeit des Hintergrundes im Arbeitsbereich. Wechselnde Lichtverhältnisse und die unterschiedliche farbliche Markierung verschiedener Steuerkurven können dazu führen, daß eine bestimmte Hintergrundhelligkeit des Arbeitsbereiches zu einer kontrastreicheren Darstellung und somit zu ermüdungsfreierem Arbeiten verhilft. Diese Helligkeit läßt sich deshalb im Bereich von Null (schwarz) bis hundert Prozent (weiß) einstellen.

Größe der Marker. Die Stützstellen-Markierungen einer Steuerkurve können in der Größe eingestellt werden. Es ist auch möglich, sie ganz auszuschalten, wodurch der Verlauf einer Steuerkurve mit vielen Stützstellen oft besser erkannt werden kann, ein Bearbeiten der Steuerkurve aber schwieriger wird.

Koordinatengitter. Das Koordinatensystem einer Steuerkurve kann mit einem Gitter überzogen werden, das den gleichen Rasterabstand hat wie die automatisch erzeugte Achsenskalierung und das die Positionierung von Stützstellen erleichtert.

Fangfunktion. Das in Abschnitt 4.2.3 genannte ”Einschnappen“ von Stützstellen auf ein Koordinatenraster kann ebenfalls ein- und ausgeschaltet werden. Da das Rastermaß des Fanggitters jedoch in physikalischen Einheiten angegeben wird und somit vom Steuerkurventyp abhängt, kann es nicht allgemein gespeichert werden. Die Voreinstellung für diese Größe befindet sich deshalb in der Datei für die Systemeinstellungen (s. u.).

Schrittweite bei komplizierten Segmenttypen. Da die Darstellung von Splines und Funktionen relativ viel Rechenzeit benötigt, ist es eventuell wünschenswert, die Geschwindigkeit für das Neuzeichnen einer Steuerkurve auf dem Bildschirm dadurch zu erhöhen, daß nicht für jeden Bildschirmpunkt (”Pixel“) der Funktionswert berechnet wird. So kann man stattdessen nur jedes zweite oder dritte Pixel berechnen und durch eine kurze Linie verbinden.

Optisch ist diese Vereinfachung kaum zu erkennen, sie beschleunigt jedoch die Ausgabe unter Umständen erheblich^{3}. Diese Vereinfachung betrifft nicht die Ausgabe der Steuerkurve auf die Endgeräte, hier wird immer mit der optimalen Auflösung gearbeitet.

C.3.2 Systemeinstellungen

Das Programm WaVe verlangt vom Benutzer keine Kenntnisse über das Kontrollsystem von ELSA und erwartet keine Eingaben von Geräte-Adressen oder Kontrollsystem-Parametern. Diese Größen müssen dem Programm aber bekannt sein und auch bei Bedarf geändert werden können. Damit nicht bei jeder Änderung eines Parameters oder dem Hinzufügen eines neuen Gerätes das Programm neu übersetzt werden muß, sind alle geräteabhängigen Einstellungen in einer Definitionsdatei gespeichert, die nicht von WaVe aus verändert werden kann, denn Änderungen an diesen Parametern sollen nur befugten Anwendern gestattet sein. In dieser Datei werden im wesentlichen folgende Einstellungen gespeichert:

1. Die Beschleuniger-Betriebsarten und ihre Bezeichnungen.

2. Die verfügbaren Ausgabegerätetypen und ihre Parameter; momentan sind dies also nur die zwei vorhandenen MACS-Prozessor-Arten.

3. Die verfügbaren Steuerkurventypen. Für jeden Typ enthält die Datei unter anderem die Informationen über

• die Bezeichnung der Steuerkurve (wie sie dem Benutzer erscheint, z. B. ”Dipol-Strom“),

• die physikalische Einheit (z. B. ”A“ für Ampere),

• den unteren und oberen Grenzwert, der durch die physikalischen Grenzen des Endgerätes vorgegeben ist,

• die Umrechnungsfaktoren für die Ausgabe an die Ausgabegeräte,

• die Namen der Steuerkurventabellen im Kontrollsystem (je nach Ausgabegerät ein oder zwei, vgl. Abschnitt 2.5) und

• die Farbe, in der die Steuerkurve dargestellt wird.

Soweit Parameter durch die Ausgabegeräte bestimmt werden (so z. B. die minimale zeitliche Folge zweier Ausgabewerte), werden sie unter Punkt 2 angegeben.

Es ist somit ein leichtes, ein weiteres Gerät oder einen weiteren Steuerkurventyp den bestehenden hinzuzufügen oder die bestehenden Einstellungen zu ändern. Aus diesem Grund sollte die Änderung der Daten in dieser Datei nicht jedem Benutzer gestattet werden. Falsche Eintragungen können zu Fehlverhalten des Programmes führen oder den Start des Programmes ganz verhindern, wenn gegen die Syntaxregeln verstoßen wird. Die Konfigurationsdatei ist ausführlich kommentiert, um ein korrektes Verändern zu erleichtern.

3Entscheidend sind hier die Grafikfähigkeiten des Rechners. Auf einer Workstation der HP 9000/700 Reihe ist

eine Vereinfachung der Grafikausgabe nicht nötig, auf einer VAXstation 3100 dagegen kann eine merkliche Be-

schleunigung erreicht werden.

D. Installation

Umgebungsvariablen und benötigte Dateien

Das Programm WaVe benötigt externe Daten für seinen Betrieb. Diese werden in bestimmten logischen Verzeichnisssen gesucht, die vor Programmstart definiert sein müssen. Für VAX/VMS sind dies:

Logisches Verzeichnis gesuchte Dateien Beschreibung

WV$DIR WV.EXE Ausführbarer Programmcode WV.UID Zum Programm gehörende Benutzeroberfläche WV.DEFINES Gerätedefinitionen WV.DEFAULTS Voreinstellungen für die Benutzeroberfläche. WV.PSINI Initialisierungsdatei für die PostScript-Ausgabe

WV$WAVES *.WV, *.WVS Die Steuerkurven und -sätze im programminter-

nen Format

WV$DWAVES *.WV Als Voreinstellung definierte Steuerkurven für verschiedene Beschleuniger-Betriebsarten

Unter UNIX lauten die gesuchten Namen wie folgt:

Logisches Verzeichnis gesuchte Dateien Beschreibung

WVDIR wv Ausführbarer Programmcode wv.uid Zum Programm gehörende Benutzeroberfläche wv.defines Gerätedefinitionen wv.defaults Voreinstellungen für die Benutzeroberfläche. wv.psini Initialisierungsdatei für die PostScript-Ausgabe

WVWAVES *.wv, *.wvs Die Steuerkurven und -sätze im programminter-

nen Format

WVDWAVES *.wv Als Voreinstellung definierte Steuerkurven für verschiedene Beschleuniger-Betriebsarten

Die Dateien WV.EXE, WV.UID und WV.DEFINES (bzw. ihre UNIX-Äquivalente) werden zum Betrieb unbedingt benötigt. Die Datei WV.DEFAULTS bzw. wv.defaults kann durch Abspeichern aus WaVe heraus erzeugt werden (Menüpunkt Optionen Einstellungen sichern…). Existiert sie nicht, erscheint bei Programmstart eine Warnung und es werden Standardeinstellungen vorgenommen. Die Datei WV.PSINI bzw. wv.psini wird nur benötigt, wenn eine PostScript-Ausgabe eines Arbeitsbereiches gewünscht wird.

Literaturverzeichnis

[Aki70] H. Akima. A New Method of Interpolation and Smooth Curve Fitting Based on Local Procedures. Journal of Assc. for Comp. Mach., Vol. 17, No. 4, Oct. 1970, pp. 589–602.

[Alt68] K. H. Althoff et. al. The 2.5 GeV Electron Synchrotron of Bonn University. Nucl. Instr. and Meth., 61:1-30, 1968.

[DEC91] Digital Equipment Corporation. DEC VUIT User’s Guide. Digital Equipment Corporation 1991.

[Dre84] A. Dreist. Simulationsrechnungen für eine langsame Resonanzextraktion am Stretcherring ELSA. Diplomarbeit, Bonn IR-84-20, Phys. Inst. Univ. Bonn 1984.

[Ebe87] H. Ebeling. Konzeption, Bau und Test eisenloser Quadrupole für die Resonanzextraktion aus ELSA. Diplomarbeit, Bonn IR-87-35, Phys. Inst. Univ. Bonn 1987.

[Fol82] J. Foley, R. van Dam. Fundamentals of Interactive Computer Graphics. Addison-Wesley 1982.

[Göt90] Th. Götz. Vollautomatische Messung des ELSA-Arbeitpunktes mit EPOS. Diplomarbeit, Bonn IR-90-50, Phys. Inst. Univ. Bonn 1990.

[Göt93] Th. Götz. Dissertation in Vorbereitung.

[Hej88] K. Hejnoch. Kurven mit Gewicht – Frei geformte Kurven und Flächen mittels B-Splines. c’t – Zeitschrift für Computertechnik, 12/1988, S. 146ff.

[Hil89] D. Hilberg. Akima-Interpolation. c’t – Zeitschrift für Computertechnik, 6/1989, S. 206ff.

[Hus84] D. Husmann. The ELSA Stretcher Ring. Lecture Notes in Physics No. 234. Springer Verlag 1984.

[Mei86] A. Meier. Methoden der grafischen und geometrischen Datenverarbeitung. Teubner 1986.

[Nec87] M. Neckenig. Der Einfluß von Synchro-Betatron Koppelresonanzen auf den extrahierten Strahl des Stretcherringes ELSA. Diplomarbeit, Bonn IR-87-34, Phys. Inst. Univ. Bonn 1987.

[Nec93] M. Neckenig. Dissertation in Vorbereitung.

[Nuh88] H.-D. Nuhn. Schnelle Extraktion aus dem Bonner 2,5-GeV-Synchrotron und Strahltransfer zur neuen Stretcher-Anlage ELSA. Dissertation, Bonn IR-88-03, Phys. Inst. Univ. Bonn 1988.

[OSF91a] Open Software Foundation. OSF/Motif Programmer’s Guide. 1. Aufl. Prentice-Hall 1991.

[OSF91b] Open Software Foundation. OSF/Motif Programmer’s Reference. 1. Aufl. Prentice-Hall 1991.

[OSF91c] Open Software Foundation. OSF/Motif Style Guide. 1. Aufl. Prentice-Hall 1991.

[OSF91d] Open Software Foundation. OSF/Motif User’s Guide. 1. Aufl. Prentice-Hall 1991.

[OSF91e] Open Software Foundation. Application Environment Specification (AES) User Environment Volume. 1. Aufl. Prentice-Hall 1991.

[Pic91] M. Picard. Das Steuer- und Strahldiagnosesystem EPOS und dessen Anwendung zur Messung des transversalen Phasenraums an ELSA. Diplomarbeit, Bonn IR-91-76, Phys. Inst. Univ. Bonn 1991.

[Pic93] M. Picard. Dissertation in Vorbereitung.

[San70] M. Sands. The Physics of Electron Storage Rings – An Introduction. SLAC Report No. 121, 1970.

[Sch90] R. W. Scheifler, J. Gettys. X Window System: The Complete Reference to Xlib, X Protocol, ICCCM, XLFD. Digital Press 1990.

[Sch87] H. Schildt. C – The Complete Reference. McGraw-Hill 1987.

[Sch84] M. Schillo. Entwicklung und Test eines Mikroprozessormoduls für das ELSA-Kon-trollsystem. Diplomarbeit, Bonn IR-84-33, Phys. Inst. Univ. Bonn 1984.

[Wer88] C. Wermelskirchen. Das Kontroll- und Steuersystem der Bonner 3,5 GeV-Elektronen-Stretcher-Anlage ELSA. Dissertation, Bonn IR-88-31, Phys. Inst. Univ. Bonn 1988.

[Wil92] K. Wille. Physik der Teilchenbeschleuniger und Synchrotronstrahlungsquellen. Teubner 1992.

[Wir75] N. Wirth. Algorithmen und Datenstrukturen – Eine Einführung. Leitfaden der angewandten Mathematik und Mechanik Bd. 31. Teubner 1975.

[You90] D. A. Young. The X Window System: Programming and Applications with Xt. OSF/Motif Edition. 1. Aufl. Prentice Hall 1990.

[Zim86] M. Zimmer. Messung der Multipolverteilung der ELSA-Quadrupol- und Sextupol-Magnete. Diplomarbeit, Bonn IR-86-05, Phys. Inst. Univ. Bonn 1986.