Simulation und Unterschied zur Realität

Komponente: Diffraktometrie/Reflektometrie Ablauf und Einstellungen
Jens Ullrich,Stephan Berndt
Status: beendet

Gliederung

1. Einleitung
2. Simulation der Hardware
2.1. Motoren
2.2. 0-dimensionale Detektoren
2.3. 1-dimensionale Detektoren (PSD)
3. simulierbare Funktionen und Unterschied zur Realität
3.1. LineScan
3.2. AreaScan
4. im Augenblick nicht simulierbare Funktionen
4.1. LineScan
4.2. AreaScan
5. Bewertung

 

1. Einleitung

Da der Vorgang der Diffraktometrie/Reflektometrie, aber auch Prozesse, die nicht direkt mit dem Vorgang zu tun haben, sehr stark auf die angeschlossene Hardware angewiesen sind, ist es für das Testen und die Fehlersuche, aber auch für das eigene Verständnis von großer Bedeutung, die wichtigsten Funktionen, wie den Scanablauf, einmal ohne wirklich angeschlossene Hardware zu starten. Auf diese Weise kann man grundsätzliche Funktionalitäten des XCTL-Programmes testen, ohne dabei das Risiko einzugehen, die teure Hardware wie Motoren und Detektoren zu beschädigen. Es ermöglicht außerdem eine Unabhängigkeit von einem bestimmten Meßplatzrechner und damit auch die Arbeit in größeren Gruppen an der Weiterentwicklung des Programms.

   Mit der simulierten Hardware ist man in der Lage, die grundsätzlichen Funktionen der Diffr./Refl. zu starten. Dabei sind einige Funktionen, die besonders realitätsnaher Werte der Hardware bedürfen, nur in eingeschränktem Maße simulierbar. Dieses Dokument soll einen kurzen Einblick liefern, welche Einstellungen nötig sind, um Funktionen der Diffr./Refl. zu simulieren und in welchem Maße eine Simulation möglich ist und wie realitätsnah die Ergebnisse sind. Das Dokument bezieht sich dabei auf die Version des XCTL-Programmes vom 08.11.2001 . D.h., eventuell inzwischen erfolgte Änderungen, Korrekturen und Erweiterungen an der simulierten Hardware oder am Programm sind nicht berücksichtigt.

2. Simulation der Hardware

Die folgenden Ausführungen reduzieren sich auf das Nötigste , um eine Simulation der Diffr./Refl.-Funktionen zu ermöglichen. Genauere und ausführlichere Informationen über die simulierte Hardware sind in den jeweiligen Dokumenten der Motoren bzw. Detektoren zu finden.

2.1. Motoren

Die für die Diffr./Refl. wichtigen Motoren (Omega, Theta) werden, wenn sie nicht physisch angeschlossen sind, durch das XCTL-Programm simuliert. Dies geschieht aber nur, wenn die entsprechenden Ini-File-Einträge existieren.

z.B.

[Motor0]
Name=Theta
Type=TMotor
...

[Motor1]
Name=Omega
Type=TMotor
...


Während des Scanablaufes werden die aktuellen Motorpositionen gebraucht. Diese werden auch recht realitätsnah vom simulierten Motor zurückgegeben. Dabei wird sogar ein geringfügiger Fehler eingerechnet. Der simulierte Motor hat die Eigenschaft, daß er eine neue Motorposition ohne Zeitverlust anfährt (d.h., sofort nach dem Aufruf der Methode, um den Motor zu einer neuen Position zu fahren, ist er auch schon an der neuen Position angekommen).

Durch Stefan Lützkendorf wurden die simulierten Motoren nun auch um Zeitverhalten erweitert. Die Zeit, die nun ein Motor benötigt um sich von einer Position zu eine andere zu bewegen, wird in allen Aspekten(Beschleunigung, Bewegung, Abbremsen) realitätsnah simuliert. Um diese simulierten Motoren benutzen zu können, ist der folgende Abschnitt im Hardware-Ini-File einzufügen.

[MOTORSIM]
SimulationType=simulation_only
LogLevel=0
LogFile=msim.log
StatusWindow=0
dll=msim.dll

 

2.2. 0-dimensionale Detektoren

Für den 0-dimensionalen Detektor sind zur Zeit zwei simulierte Detektoren implementiert. Das sind der ursprüngliche Testdektor von Herrn Damerow und eine im Seminar entstandene Version von K. Schützler. Da schon der ursprüngliche Detektor von Herrn Damerow alle Funktionen der Diffr./Refl. ausreichend simuliert und der neue Testdetektor (von K. Schützler) bis auf realere Intensitätswerte keine Verbesserungen enthält, reicht das Simulieren mit dem ursprünglichen Detektor vollkommen aus. Wir werden uns aus diesem Grund auch im folgenden Text, wenn nichts anderes angegeben ist, auf diesen Detektor beziehen. Um den ursprünglichen Testdetektor zu aktivieren, muß der Detektor im Ini-File eingetragen sein.

z.B.

[Device0]
Type=Simulant
Name=Test
Debug=0
Sound=1
ExposureTime=1.0
ExposureCounts=10000

Dabei sind die jeweiligen Bedeutungen der Parameter unter ‚Design->Initialisierungsdatei’ beschrieben. Um den Testdetektor zu aktivieren, sind die Einträge Type und Name wichtig. Diese sollten, wie im Beispiel angegeben, gewählt werden. Alle anderen Parameter haben in diesem Zusammenhang keine Bedeutung. Für diesen Detektor sind keine weiteren Einstellungen nötig.

Der Testdetektor liefert Intensitätswerte, die nicht auf real gemessenen Werten beruhen. Die Werte werden durch eine Formel berechnet, welche die aktuelle Motorposition (Omega, Psi) mit einbezieht. Außerdem wird ein zufälliger Anteil mit eingerechnet. Das Ergebnis ist also ein von der Motorposition abhängiger, zufällig schwankender Meßwert, dessen Maximum beim Omegawinkelwert 0 liegt und der nach beiden Seiten hin abnimmt. Der Intensitätswert, der hierbei berechnet wird, ist unabhängig von der eingestellten Meßzeit (bis auf den Zufallsanteil) immer gleich.

Um den Simulationsdetektor von K. Schützler zu aktivieren, ist im Vergleich zu Obengesagtem nur der Eintrag Type = Simulant durch Type = Test zu ersetzen. Des weiteren muß sich die Datei testdev.dat im gleichen Verzeichnis wie das XCTL-Programm befinden. Außerdem dürfen die Quellen des XCTL-Programm nicht die ursprünglichen sein, sondern möglichst die aktuellen.

2.3. 1-dimensionale Detektoren (PSD)

Um einen 1-dimensionalen Detektor zu simulieren sind im zugehörigen Ini-file folgende Zeilen notwendig, z.B.:

[Device0]
Type=PSD
Name=PSD

Alle fehlenden Einträge werden automatisch durch das XCTL-Programm beim ersten Aufruf ergänzt. Mit dem vorliegenden simulierten Psd-Detektor lassen sich alle Areascan-Funktionen starten. Der Psd liefert (unabhängig von der Anzahl der Kanäle) ein zufälliges Spektrum mit einem Peak (Maximale Intensität). Die Position des Peaks ist abhängig von der aktuellen Motorposition der Thetaachse. Weiterhin besitzt der simulierte Psd (im Gegensatz zum 0-dimensionalen Detektor) ein Zeitverhalten. D.h. die Intensitäten wachsen mit zunehmender Messzeit linear an.

3. Simulierbare Funktionen und Unterschied zur Realität

3.1. Linescan

a) Simulierbare Funktionen

 

Für die Simulation der Funktionen des Linescans sind mindestens ein simulierter 0-dimensionaler Detektor sowie die simulierten Motoren für die Omega- und Thetaachse notwendig. Es läßt sich nun sowohl ein Linescan im Standard- als auch im Omega-2Theta-Modus mit beliebigen Speicheroptionen durchführen. Es muß also in der Einstellungsbox 'Einstellungen StepScan' als Detektor der Testdetektor eingestellt werden. Welchen Motor man unter Scanachse auswählt, ist eigentlich egal, da der Linescan mit allen funktioniert. Allerdings empfiehlt es sich, die Omegaachse oder die Psiachse auszuwählen, da diese die einzigen sind, die eine einigermaßen sinnvolle Intensitätskurve liefern. Alle anderen Motoren bewirken einen konstanten Intensitätswert über den gesamten Bereich. Um einen Scan mit eingeschaltetem Monitordetektor zu starten, ist auch für den Monitordetektor der simulierte 0-dimensionale Detektor auszuwählen. Es kann für diesen Zweck auch ein zweiter simulierter Detektor benutzt werden. Die Scanachsen-Einstellungen (Minimum, Schrittweite, Maximum) sind wie bei einem real angeschlossenem Motor zu tätigen (d.h.,Werte liegen innerhalb des vom Ini-File erlaubten Bereiches). Bei den Einstellungen für den Detektor ist bei der Zeitbegrenzung ein Wert >0 ausreichend, da der Intensitätswert unabhängig von der Meßzeit berechnet wird und somit die Werte bei verschiedenen Meßzeiten (z.B. 0.2 sec und 15 sec) bis auf den Zufallsanteil gleich sind. Die Eingabe eines Wertes bei der Impulsbegrenzung ist nicht eingeschränkt, da dieser Wert von keinem der Testdetektoren benutzt wird und somit die Impulsbegrenzung nicht funktioniert. Um eine Schrittweitensteuerung zu simulieren, ist diese Funktion nur im [Scan]-Abschnitt des Ini-Files zu aktivieren. Um den ContinuousScan simulieren zu können sind unbedingt die simulierten Motoren von S. Lützkendorf zu verwenden. Da hierbei das Bewegungsverhalten der Motoren ein besondere Rolle spielt führen nur diese Motoren zu sinnvollen Ergebnissen.

Sind alle entsprechenden Einstellungen der Simulationshardware im Ini-File sowie der Linescan-Einstellungen in der Stepscan-Einstellungsbox bzw. Continuousscan-Einstellungsbox erfolgt, so kann der Scanablauf normal über den Scanfenster-Menüpunkt ‚Scan starten’ gestartet werden. Der Ablauf entspricht dem eines realen Linescans mit allen Ausgaben und Unterbrechungsmöglichkeiten. Es ergibt sich mit dem Testdetektor (Damerow) beim Stepscan immer eine Intensitätskurve, die einem Ausschnitt der folgenden Kurve entspricht (abhängig von dem gescannten Omegaachsenbereich):

Abb. 6.1: Linescan-Kurve (Standardmodus)

Es besteht vom Ergebnis der Simulation her kein Unterschied zwischen einer Intensitätskurve des Standardscan und des Omega2Thetascan. Alle Funktionen, die bisher nicht erwähnt wurden (z.B. Kurve fixieren, Kurve nachladen,...), sind auch ohne simulierte Hardware ausführbar.

 

 


b) Unterschied zur Realität

 

Bei Benutzung der ursprünglichen Motoren ist ein erster Unterschied der Simulation zur Realität der geringere Zeitbedarf des gesamten Scanablaufes. Dieser zeigt sich bei einer großen Anzahl anzufahrender Meßpunkte besonders stark und resultiert aus der Eigenschaft der Motoren, ihre nächste Position ohne Zeitverlust anzufahren. Fährt man einen durchschnittlichen Linescan (ca. 100 Meßpunkte, 1 min Meßzeit pro Punkt) mit einem realen Motor, so vergrößert sich der Zeitbedarf des gesamten Scans um etwa 1/4 bis 1/3 der Meßzeit ohne realen Motor. Benutzt man den sim. Motor(S.Lützkendorf) so tritt dieses Problem nicht auf. Ein weiterer Unterschied wird durch die schon unter a) aufgeführte Eigenschaft des Testdetektors ausgelöst, die den gleichen Intensitätswert bei verschiedenlangen Meßzeiten berechnet. In der Realität würden sich die Intensitätswerte (und damit auch die gesamte Intensitätskurve) bei größeren Meßzeiten einem über die gesamte Meßzeit gemittelten Wert (Impulse pro Sekunde) annähern. Ähnliches gilt für die im Testdetektor zur Zeit noch nicht verfügbare Impulsbegrenzung. Ein weiterer Unterschied zur Realität ist, daß es im Ergebnis eines Scans im Standardmodus und im Omega2Theta-modus keine erkennbaren Unterschiede gibt. Dies liegt daran, daß die Thetaposition bei keinem der beiden 0-dim. Detektoren berücksichtigt wird. Die Intensitätskurve die ein simulierter Continuousscan liefert, entspricht immer einer Kurve, die zum Zentrum des Messbereiches hin monoton wächst und danach wieder monoton fällt (wenn die Motorparameter im ini-file falsch sind, kann das Ergebnis eine Folge solcher Kurven bzw. ein Teil so einer Kurve sein).

3.2. Areascan

a) simulierbare Funktionen

 

Für die Simulation des Areascans und untergeordneter Funktionalitäten (wie z.B. kont. Spektren anzeigen, Psd kalibrieren) ist folgende simulierte Hardware nötig.

   Zum einen die schon im Linescan-Abschnitt aufgeführten simulierten Motoren für die Omega- und Thetaachse. Als Detektor müssen andererseits ein 1-dimensionaler Testdetektor für die normalen Areascan-Abläufe mit Psd (Standard,Omega2Theta) und ein 0-dimensionaler Testdetektor für den Areascan im SLD-Modus im Ini-File eingetragen werden. Ist die angegebene Simulationshardware eingestellt, so sind alle im Areascan-Fenster implementierten Funktionen (alle bis auf Psd extern synchronisieren) ausführbar. Für das Simulieren der Funktionen Show Energy-Spectrum sowie Show Impulse-Spectrum ist nur der 1-dimensionale Testdetektor (PSD) notwendig. Es erscheint bei Aktivierung einer dieser beiden Funktionen im Areascan-Fenstermenü ein Psd-Spektrum (Intensitätskurve) im Areascan-Fenster. Dieses Spektrum wird nach einer in der detektorspezifischen Einstellungsbox angegebenen Meßzeit aktualisiert (neu gezeichnet). Beim simulierten Psd existiert kein Unterschied zwischen dem Energie- und Impulsspektrum. Es lassen sich aber alle Fehlermeldungen, die im Zusammenhang mit der aktivierten kontinuierlichen Spektrumsanzeige stehen, erzeugen (z.B. Areascan starten, Psd kalibrieren).

Um einen Standard- bzw. Omega2Theta-Areascan mit Psd zu simulieren, sind in der Dialogbox Einstellungen AreaScan der 1-dim. Testdetektor als Detektor einzustellen und die jeweiligen Omega- und Thetaeinstellungen zu tätigen. Anschließend kann ein Areascan gestartet werden, der eine Menge von Psd-Spektren an den Meßpositionen (Datenbasis) liefert. Der Ablauf entspricht dem eines realen Areascans mit allen Ausgaben und Unterbrechungsmöglichkeiten. Aufgrund der schon erläuterten Eigenschaft des Test-Psd, ein Spektrum abhängig von der Thetaposition zu berechnen, sind die erhaltenen Spektren der Datenbasis bis auf die zufälligen Anteile gleich (insbesondere die Peakposition immer gleicher Kanal) wenn der Thetamotor nicht bewegt wird. Es besteht ein geringer Unterschied in den Ergebnissen eines Areascan im Standard- oder Omega2Thetamodus, der auf die wandernde Peakposition zurückzuführen ist. Das Ergebnis eines Standardscans(nicht über Theta) entspricht immer in etwa der folgenden RAW-Matrix-Darstellung:

 

Abb. 6.2: RAW-Matrix aus Areascan im Standardmodus

Für den Areascan mit einem 0-dimensionalen Detektor(SLD) ist statt dem 1-dimensionalen der 0-dimensionale Testdetektor zu aktivieren und in der Einstellungsbox Einstellungen AreaScan mit den schon bei Linescan angegebenen Parametern einzustellen. Das Ergebnis ist eine Datenbasis mit Kurven, deren Intensitätswerte in der gleichen Kurve über den gesamten Thetabereich in etwa gleich sind. Die Kurven unterscheiden sich untereinander nur in den Intensitätswerten. Das liegt daran, daß die Intensitäten einer Kurve bei fester Omegaposition lediglich an verschiedenen Positionen des Thetamotors ermittelt werden. Da der Detektor seine Intensitäten nur in Abhängigkeit der Omegaposition berechnet, ergeben sich diese in etwa gleichen Werte einer Kurve. Hier bietet es sich eventuell an, den Testdetektor von K. Schützler zu benutzen, der hier sinnvollere Werte liefert. Um die Funktion Kalibrierung des Psd starten zu können, sind der 1-dim. Testdetektor sowie der simulierte Thetamotor erforderlich. Nur wenn diese Komponenten verfügbar sind, läßt sich die zugehörige Dialogbox öffnen. Der Vorgang der Kalibrierung innerhalb der Dialogbox läßt sich dagegen nur ablaufmäßig simulieren (siehe 4.2).

Alle Funktionen, die bisher nicht erwähnt wurden (z.B. Scanauswahl, Datenbasis laden), sind auch ohne simulierte Hardware ausführbar.

b) Unterschied zur Realität

 

Bezüglich des Zeitverbrauches eines Areascans in der Realität im Vergleich zur Simulation gilt bei Benutzung der ursprünglichen Motoren ähnliches wie auch beim Linescan. D.h.: Ein durchschnittlicher Areascan benötigt mit einem echten Motor ca. 1/4 mehr an Zeit. Des weiteren besteht in der Realität zwischen einem Energiespektrum und einem Impulsspektrum ein Unterschied. Das Impulsspektrum kann zum Teil starken Schwankungen unterliegen, da es von dem zu untersuchenden Substrat abhängig ist. Dagegen liefert das Energiespektrum eine Kurve, die ihr Maximum immer bei den gleichen Kanälen hat. Der Grund dafür ist, daß das Energiespektrum von der Strahlungsquelle bestimmt wird. Auch beim Areascan besteht im Ergebnis kein Unterschied zwischen einem Scan mit fixierter Thetaachse und einem Omega2Theta-Scan. Hierbei müßte die RAW-Matrix beim Standardscan ein Rechteck und beim Omega2Theta-Scan aufgrund der hier leicht verschobenen Spektren ein Parallelogramm bilden. (Dieser Fehler ist in der aktuellen Version des XCTL-Programms zum Zeitpunkt der Entstehung dieses Dokumentes schon behoben.) Des weiteren ergeben sich für den SLD-Areascan die schon unter dem Linescan-Abschnitt aufgeführten Probleme bzgl. Meßzeit- und Impulsbegrenzung.

4. Im Augenblick nicht simulierbare Funktionen

4.1. Linescan

Im Augenblick sind die Teilaspekte des Stepscans noch nicht simulierbar, die auf den Eigenschaften der Testdetektoren beruhen. Dazu gehört die Auswirkung einer höheren Meßzeit sowie einer Impulsbegrenzung auf die Intensitätskurve.

4.2. Areascan

Neben der Funktion Psd extern synchronisieren, die noch nicht vollständig implementiert ist, sind eigentlich alle Funktionen des Areascan simulierbar (zumindest startbar). Größere Probleme gibt es nur bei der Psd-Kalibrierung, da hier für ein sinnvolles Simulieren ein Psd-Spektrum notwendig ist, das dessen Peakposition sich abhängig von der Thetaposition über alle Kanäle des Psd verschiebt. Denn die Funktion der Kalibrierung beinhaltet das Verschieben des Peaks durch Bewegen der Thetaachse vom ersten Kanal bis zum letzten (bzw. umgekehrt). Die Peakposition kann zur Zeit zwar verschoben werden, aber  noch nicht in dem Maße, wie es für eine Kalibrierung nötig ist. Für den Areascan mit 0-dim. Detektor ergeben sich die gleichen Probleme wie beim Linescan (Meßzeit-, Impulsbegrenzung). Des weiteren ist, wie bereits unter 3.2. a) erwähnt, kein Unterschied zwischen dem Energie- und dem Impulsspektrum zu erkennen. Ansonsten sind alle Funktionen des Areascan grundsätzlich simulierbar.

5. Bewertung

Durch die bereits implementierte und simulierte Hardware lassen sich alle grundsätzlichen Funktionen sowohl des Linescan als auch des Areascan simulieren. Die simulierte Hardware ist zwar in verschiedenen Teilen nicht sehr realitätsnahe, sie ermöglicht jedoch alles, was zum Testen und Simulieren ohne physische Hardware notwendig ist. Insbesonders ermöglicht sie das leichte und ungefährliche Erweitern und Manipulieren des Quellcode um neue Funktionen. Es läßt sich so ein großer Teil von Fehlern und Problemen schon frühzeitig erkennen und nachvollziehen, bei denen z.B. die Realitätsnähe der Intensitätswerte noch keine Rolle spielt. Abschließend kann man sagen, daß die zur Zeit simulierte Hardware eine große Hilfe zum Verstehen und Nachvollziehen der Funktionen des Line- und Areascan ist. Bis auf die bereits oben erwähnten Probleme mit der Psd-Kalibrierung sind die Möglichkeiten der Simulation im Bereich Diffr./Refl. vollkommen ausreichend. Und auch diese Probleme sind durch geringfügige Änderungen behebbar.


zuletzt geändert 09.11.2001 Jens Ullrich/Stephan Berndt