Home
DIPLOMARBEIT - Institut für Informatik - Hu
Contents
1. Testfall 1 2 3 4 5 6 T 8 Intensit t 43000 41300 43000 43000 43000 42000 41000 40500 HWB 9 63 9 6 9 6 9 6 9 7 9 8 10 24 10 35 Ausleucht 100 100 100 100 100 90 90 90 Dauer min 14 20 15 55 14 53 14 57 14 36 14 36 16 16 15 09 T T T T T Die Ergebnisse dieser Testreihe sind alle gut Die Halbwertsbreiten sind bei fast allen Testf llen identisch Eine Ausnahme bilden die Testf lle 7 und 8 Wiederum wird die Vermutung best tigt da gro e Suchbereiche f r Tilt sich negativ auf die Justage auswirken Eine Aktivierung der Max Intensit tsdifferenz h tte sich nicht als g nstig herausgestellt In den meisten F llen fielen die Intensit tswerte ab und n herten sich erst sp ter dem Intensit tsmaximum an Testreihe mit Kollimatorprobe Testfall 1 2 3 4 5 6 7 8 Intensit t 10500 15300 34000 31500 30000 33000 35000 32500 HWB 8 52 8 15 6 78 7 24 7 5 6 92 6 51 7 36 Ausleucht 20 30 40 40 40 40 40 40 Dauer min 13 01 16 36 15 12 16 50 15 31 16 05 14 31 15 37 Mit dieser Probe verlief die Justage in der Testreihe durchgehend schlecht 8 4 TESTF LLE MIT PROBEN 117 Die Ausleuchtung erreichte maximal 30 bis 40 Auch f r die Halbwerts breite wurden bessere Werte erwartet Diese m te sich in einem Bereich zwischen 3 4 Winkelsekunden befinden
2. einziges Element fMedian Medianlistelcounter 1 else mittleres Element der Medianliste fMedian Medianliste counter 1 2 1 gerade Anzahl von Messungen else Mittelwert der beiden mittleren Elemente fMedian Medianliste counter 2 1 Medianliste counter 2 1 1 2 Infos ins Logfile schreiben if bWriteLogfile sprintf buf r nM d I 2f Median 2f counter fIntensity fMedian WriteToJustageLog buf while counter lt nMeasureCount delete Medianliste return fMedian Durchf hrung einer kompletten Koordinatentransformation um best Achse bool TransformationClass KoordinatenTransformation TDrehachse achse TVektor VerschiebeVektor TVektor Einheitsvektor 3 TMatrix Matrix double winkel switch achse case Drehachse_X Einheitsvektor der Z Achse Einheitsvektor set_XYZ 0 0 1 break case Drehachse_Z Einheitsvektor der X Achse Einheitsvektor set_XYZ 1 0 0 break bei Automatischer Justage wird nur um X bzw Z gedreht default return false Berechnung des Winkels von Vektor zur Koordinatenachse Einheitsvektor winkel VerschiebeVektor winkel Einheitsvektor Ausf hrung der jew KS Transformation Hin und R ck Drehung um X Achse if achse Drehachse_X Abspeichern der Hintransformation Matrix transformiere XYZ 1 VerschiebeVektor winkel 0 0 trafo_hin push Matrix
3. Suchbereich Startwerte Endwerte Ausleuchtung DF 50 0 15 09 TL 20 0 7 63 CC 100 0 69 56 Kriterien Intensitat 35000 62000 HWB 12 88 8 07 Dauer der Justage 17 48 min Testfall 5 PF916324 04 20 Suchbereich Startwerte Endwerte Ausleuchtung DF 50 0 10 02 TL 20 0 6 17 CC 150 0 66 82 Kriterien Intensitat 35000 61000 HWB 12 88 8 35 Dauer der Justage 15 24 min Testfall 6 PF916324 04 20 Suchbereich Startwerte Endwerte Ausleuchtung DF 50 0 21 28 TL 20 0 9 98 CC 200 0 100 77 Kriterien Intensitat 235000 264000 HWB 12 88 7 85 Dauer der Justage 18 52 min Testfall 7 PF916324 04 20 Suchbereich Startwerte Endwerte Ausleuchtung DF 50 0 8 75 TL 50 0 7 01 CC 50 0 4 05 Kriterien Intensitat 35000 52000 HWB 12 88 11 21 Dauer der Justage 15 23 min 176 KAPITEL B TESTF LLE MIT PROBENABH NGIGEN PARAMETERN Testfall 8 PF916324 04 20 Suchbereich Startwerte Endwerte Ausleuchtung DF 50 0 9 15 TL 50 0 4 46 CC 150 0 14 04 Kriterien Intensitat 31000 51000 HWB 12 88 11 24 Dauer der Justage 18 29 min B 4 Testreihe mit Probe PF916324 8 7 Testfall 1 PF916324 8 7 Suchbereich Startwerte Endwerte Ausleuchtung DF 20 33 68 35 32 TL 20 8 29 1 19 CC 50 125 71 71 3 Kriteri
4. return akt_elemente 0 Gibt die Anzahl der Listenlemente zur ck unsigned elementanzahl void return akt_elemente Matrix zur Liste hinzuf gen bool push const TMatrix amp trafo letzte Matrix aus Liste entfernen liefert entfernte Matrix zur ck TMatrix pop void Listenelement mit Nummer position 1 akt_elemente ausgeben Direktzugriff liefert die Matrix an der Stelle position zur ck TMatrix zeige unsigned position endif 218 KAPITEL C KOMMENTIERTE QUELLTEXTE C 3 2 matrix cpp include lt iostream h gt include lt math h gt include matrix h 7 1 3 a ak ak ak a ae aka ak a ea a ae ae ae ae a ae ea ak ae 3k ae a 3k ae ae ak a a ae ae a a ae 2k ae a 2k a K a a ae I a ak ae ak a a a a ak a ak 21 ak ak 3k ak 21 2k 1 A a ak ak 2K 2K Matrix Klasse 7 DROBO ak ak ak ak ak ak ak ak ak ak ak ak ak aka k aka OOOO kk kkk kkk kk kkk kkk kkk kkk k kkk k Klassenkonstruktoren kkka gt k ak akk ak ak akk ak ak kk ak ak ak 3k 3k ak ak 3k ak ak kk 3K SCI IG IG RI II HK Standardkonstruktor ohne Argumente TMatrix TMatrix arr NULL ze sp 0 homogene_koordinaten false Konstruktor der eine m n Nullmatrix initialisiert TMatrix TMatrix unsigned m unsigned n ze m sp n homogene_koordinaten false arr new double m n dynamisches Erzeugen des Matrixarrays for unsigned i 0 i lt m n i arr i 0 Arra
5. Infos f rs Logging aufbereiten PosVektor get_XYZ x y 2 sprintf bufi1 weltVektor 2f 2f 2 d KS x y z get_koordinatentrafos strcat buf buf1 ins Logfile schreiben if bWriteLogfile WriteToJustageLog buf Auslesen der Weltkoordinaten des PosVektors PosVektor get_XYZ x y 2 setzen der Antriebsachse TL und Anfahren der TL Position mlSetAxis nMotorTL mMoveToDistance x GetOrigPosBorders OrigTL setzen der Antriebsachse DF und Anfahren der DF Position while mIsMoveFinish mlSetAxis nMotorDF mMoveToDistance y GetOrigPosBorders OrigDF setzen der Antriebsachse CC und Anfahren der CC Position while mIsMoveFinish mlSetAxis nMotorCC mMoveToDistance z GetOrigPosBorders OrigCC Warten bis Bewegung beendet ist while mIsMoveFinish fIntensity MeasureIntensity nMeasureCount Ausgabe in Statusleiste sprintf buf I 0f fIntensity SetInfo buf ins Logfile schreiben strcat buf n if bWriteLogfile WriteToJustageLog buf Werte f r den PosVektor zur ckschreiben PosVektor set_XYZ x2 y2 z2 return fIntensity 208 KAPITEL KOMMENTIERTE QUELLTEXTE int TransformationClass Goldener_Schnitt TLaufachse achse double amp intervall_li double amp intervall_re unsigned nMeasureCount double a b u v fu fv x y Z int step a intervall_1li b intervall_re u GOLD a 1 GOLD b v
6. return temp TMatrix TMatrizenListe zeige unsigned position TMatrix temp if position 0 cerr lt lt ML Zeig Fehler Nulltes Listenelement existiert nicht n else if akt_elemente amp amp akt_elemente gt position temp listelposition 1 return temp Literaturverzeichnis 1 H Balzert Lehrbuch der Software Technik Software Entwicklung Band 1 aus der Reihe Lehrb cher der Informatik Spektrum Akade mischer Verlag Heidelberg Berlin Oxford 1996 2 H Balzert Lehrbuch der Software Technik Software Management Software Qualit tssicherung Unternehmensmodellierung Band 2 aus der Reihe Lehrb cher der Informatik Spektrum Akademischer Verlag Heidelberg Berlin Oxford 1998 3 K Bothe Reverse Engineering the Challenge of Large Scale Real World Educational Projects 14th Conference on Software En gineering Education and Training CSEE amp T 2001 Charlotte USA Febr 2001 http www informatik hu berlin de Institut struktur softwaretechnikII lehre PROJ_SE_WS98 Veroeffentlichungen CSEET ps 4 K Bothe Pflichtenheft RTK Steuerprogramm Funktion Probe und Kollimator manuell justieren Humboldt Universit t zu Ber lin Institut f r Informatik Lehrstuhl Softwaretechnik Version 1 1 vom 7 9 2000 http www informatik hu berlin de Institut struktur softwaretechnikII lehre PROJ_SE_WS98 Entwicklerdokumente Manu_Justage Ges _Dok Manuelle_Justa
7. 125 Dialogfenster Automatische Justage 22 22 22 126 Tabellenverzeichnis 2 1 6 1 6 2 7 1 1 2 Dateien zur Ausf hrung des Steuerprogrammes 14 berblick ber ben tigte Schnittstellenfunktionen 67 berblick ber genutzte Quelltexte 68 berblick ber die neuen Programmdateien 78 Nachrichtenbehandlung im RTK Steuerprogramm 88 Kapitel 1 Einf hrung 1 1 Motivation Im Sommer 1998 trat die Arbeitsgruppe R ntgenbeugung an d nnen Schich ten des Instituts f r Physik unter Leitung von Prof K hler an den Lehrstuhl Softwaretechnik von Prof Bothe am Institut f r Informatik mit der Bitte heran sie bei der Restrukturierung Dokumentierung und Erweiterung ihrer Steuersoftware zu unterst tzen 10 Bei der Software handelt es sich um ein Anwendungsprogramm mit des sen Hilfe die Versuchsaufbauanlagen gesteuert werden Diese Anlagen werden zur Untersuchung der kristallinen Struktur von Halbleitern benutzt Dadurch kann man R ckschl sse auf die G te und den Aufbau eines Halbleiters zie hen Bei der Erstellung der Software durch einen ehemaligen Mitarbeiter der Arbeitsgruppe wurde auf wichtige Aspekte des Software Engineering verzich tet oder nur ansatzweise eingegangen Die strukturierte Kommentierung der Softwarequellen die Dokumentierung der Software aus Anwendersicht und die Erstellung eines Pflichtenheftes sind nur einige von vielen Gesi
8. 98 KAPITEL 8 TEST gebnisse kann im Verlauf der Weiterentwicklung des Steuerprogrammes die Automatische Justage verbessert werden 3 Wichtig war es auch zu untersuchen ob der Dialog der Automatischen Justage das von ihm geforderte Verhalten zeigte Das hei t es galt zu untersuchen ob der Dialog gegen unterschiedliche Eingabewerte die laut Spezifikation nicht vorgesehen sind robust ist 8 2 Teststrategie F r den Test wurden verschiedene Strategien angesetzt Zum einen sollten Tests mit unterschiedlichen Proben durchgef hrt werden und zum anderen Tests die der berpr fung der Benutzerschnittstelle Dialogfenster dienen sollten Die Testsszenarien die mit den Proben absolviert wurden gliedern sich in zwei Kernpunkte bez glich der dabei verfolgten Strategie 1 Test mit probenunabh ngigen Einstellungen Darunter fallen wiederum 2 unterschiedliche F lle die es zu testen galt a Die Apparatur betreffende Einstellungen Hierbei wurde untersucht welche Auswirkung die Anzahl der Mes sungen pro Me schritt auf die Dauer der Justage hat und wie hoch die Fehleranf lligkeit ist wenn nur ein Me wert pro Position ge nommen wird b Algorithmusspezifische Einstellungen Hierunter z hlen die Parameter die durch ihre Variation den Al gorithmus selbst noch beeinflussen Dazu geh ren die Parameter Toleranz Durchl ufe 2 Probenabh ngige Einstellungen Bei den probenabh ngigen Einstellungen werden
9. break case cm_optimizing_TL Va a a a a a aa ttt tte ttt tte 1 Teil des Algorithmus Tilt DF Erkl rung wieso der 1 Teil des Algorithmus an 2 Stelle steht nachzulesen am Anfang der Justage 2 Teil des Algorithmus Va a a a aa EEE 2 22 Test auf Intensit ts berschreitung des Detektors if Transform gt bIntensityTooHigh Abbruch der Justage SendMessage GetHandle WM_COMMAND cm_post_processing 0 x Achse TL Such Intervalle f r Goldenen Schnitt festlegen intervall_li aktWertebereich MinTL intervall_re aktWertebereich MaxTL Logging if bWriteLogfile WriteToJustageLog Optimierung TL r n Goldener Schnitt Optimierung der X Achse TL step liefert die Anzahl der ben tigten Intervallteilungen intervall_re li liefern das letzte Optimierungsintervall step Transform gt Goldener_Schnitt Laufachse_X intervall_li intervall_re nMeasureCount FORWARD_WM_COMMAND GetHandle cm_optimizing_DF 0 0 PostMessage break case cm_optimizing_DF Nachregeln mit DF y Achse DF Such Intervalle f r Goldenen Schnitt festlegen C 1 DIALOGKLASSE TAUTOMATICANGLECONTROL 195 Test auf Intensit ts berschreitung des Detektors if Transform gt bIntensityTooHigh Abbruch der Justage SendMessage GetHandle WM_COMMAND cm_post_processing 0 y Achse DF Such Intervalle f r Goldenen Schnitt festlegen intervall_li aktWertebereich M
10. steptt else wenn fu lt fv a u li Intervallgrenze nach rechts verschieben usv v 1 GOLD a GOLD b neue re Intervall Position fu fv Bestimmung des neuen Funktionswertes Intensitat switch achse case Laufachse_X PosVektor set_XYZ v y z fv GetIntensityOnPosition nMeasureCount break case Laufachse_Y PosVektor set_XYZ x v z fv GetIntensityOnPosition nMeasureCount break case Laufachse_Z PosVektor set_XYZ x y v fv GetIntensityOnPosition nMeasureCount break steptt intervall_li u intervall_re v return step float TransformationClass MeasureIntensity unsigned nMeasureCount float fIntensity fIntensity_temp ftemp fMedian unsigned counter 0 float Medianliste try Speicher fiir Medianliste reservieren Medianliste new float nMeasureCount catch xalloc MessageBox GetFocus MeasureIntensity Fehler bei Speicherreservierung xalloc MB_OK PostQuitMessage 1 aktuelles Z hlerger t setzen TDevice Detektor lpDList gt DP do Z hler starten Detektor gt MeasureStart Auslesen der Detektorkarte veranlassen im Fehlerfall muss die Messung neugestartet werden while Detektor gt PollDevice R_MeasOk Messung neustarten 210 KAPITEL KOMMENTIERTE QUELLTEXTE Detektor gt MeasureStop SetInfo Warte auf Messwerte MessageBeep 0 Detektor gt MeasureStart Intensit
11. 8 4 Testf lle mit Proben 4 be aoe dee eee Sa nt 8 4 1 Test der probenunabh ngigen Einstellungen 8 4 2 Bewertung der Tests mit probenunabh ngigen Einstel lunger aas CRN SSO ag ae Le a a a Or ut ee 45 45 46 47 48 50 ol ol 53 59 59 62 64 64 66 68 69 70 71 73 77 77 79 85 87 92 93 94 INHALTSVERZEICHNIS VII 8 4 3 Test der probenabh ngigen Einstellungen 8 4 4 Bewertung der Tests mit probenabh ngigen Einstel Mies ce RS te de ce ci al ode a RNS eM a oh te 8 5 Zusammenfassung des Tests 2 22 2 22m 9 Nutzerdokumentation 9 1 Bintahr me as Di ned Bere ea pe 9 2 Voraussetzungen f r eine Automatische Justage 9 2 1 Softwarevoraussetzungen 2 22 22 9 2 2 Hardwarevoraussetzungen 22 2 222 9 3 Voreinstellungen f r die Automatische Justage 9 3 1 Manuelle Justage des Freiheitsgrades Azimutale Ro taon EN ee a Sih doe Be 9 3 2 Einstellungen f r den Detektor 9 4 Durchf hrung der automatischen Justage 9 4 1 Das Dialogfenster und seine Einstellungen 9 4 2 Start des Justagevorganges 9 4 3 Ende des Justagevorganges 2 2 2020 10 Zusammenfassung und weiterf hrende Probleme 10 1 M glichkeiten und Grenzen der Funktion Automatische Jus Ve os Be a ee Wee a ee al 10 2 Ausblick u u Bas ee ee ee a ee te A Schnittstellenbeschreibung der Motorenansteuerung A 1 Interface der Motorlis
12. Abbildung 6 5 Klassendiagramm der Transformationsklasse Der Pos Vektor ist dabei das wichtigste Attribut der Klasse Dieser Vektor repr sentiert die Position w hrend des Suchens und wird vom aktuellen Ko ordinatensystem zum Weltkoordinatensystem und umgekehrt transformiert Die Attribute trafo_hin und trafo_rueck sind Matrizenlisten die die Trans formationsmatrizen abspeichern Diese Listen werden f r die Berechnung der Transformation eines Vektors von einem Koordinatensystem zu einem ande ren benutzt Das Attribut anzahl_koordinatentrafos wird als Z hler f r die durchgef hr ten Koordinatensystemtransformationen verwendet ber diesen Wert kann abgefragt werden ob das Abbruchkriterium Abbruch nach einer Anzahl von Iterationen eingetreten ist Mit dem Wertebereich werden die urspr nglichen Motorpositionen und die Intervalle f r die Suche gespeichert Dabei handelt es sich um einen Da tentypen der die originale sowie die maximale und minimale Motorposition 72 KAPITEL 6 DESIGN enth lt Der Datentyp TMotorPositionsWerte speichert diese Daten f r alle drei verwendeten Antriebe Der Wert toleranz gibt die Gr e f r das letzte Intervall beim Goldenen Schnitt an Im Abschnitt 5 3 in dem der Goldene Schnitt erl utert wurde war das die Toleranzl nge Die Memberfunktion Initialize ist wie der Name verdeutlicht f r das Initialisieren der Transformationsklasse zust ndig Als erstes ermittelt die Fun
13. Logging if bWriteLogfile WriteToJustageLog buf Ermittlung der Anzahl der Textzeilen des Status Textfeldes dwStatusZeilen SendMessage GetDlgItem hwnd ID_Status EM_GETLINECOUNT 0 OL Scrollen des Textes um dwStatusZeilen Zeilen Anzahl des neuen Textes SendMessage GetDlgItem hwnd ID_Status EM_LINESCROLL 0 dwStatusZeilen 20L Durchf hrung der Koordinatentransformation Transform gt PosVektor get_XYZ x2 y2 z2 Logging sprintf buf PosVektor vor KS Drehung 2f 2f 2f n x2 y2 z2 if count 2 1 alle ungeraden Durchg nge KS Drehung X Achse Transform gt KoordinatenTransformation Drehachse_X Transform gt PosVektor else alle geraden Durchg nge KS Drehung um Z Achse Transform gt KoordinatenTransformation Drehachse_Z Transform gt PosVektor Transform gt PosVektor get_XYZ x y Zz sprintf buf1 neuer PositionsVektor 2f 2f 2f n x y 2 strcat buf buf1 ins Logfile schreiben if bWriteLogfile WriteToJustageLog buf Protokollierung der Koordinatensystem Transformation Transform gt PosVektor Transform gt translate_to_worldpoints Transform gt PosVektor Transform gt PosVektor get_XYZ x2 y2 z2 sprintf buf PosVektor in Weltkoord 2f 2f 2f n x2 y2 z2 Transform gt PosVektor Transform gt translate_from_worldpoints Transform gt PosVektor Transform gt PosVektor get_XYZ x2 y2 z2 sprintf buf1 PosVektor im
14. R ckgabewert Der R ckgabewert enth lt den Index an dem der Motor den Stillstand erreicht hatte Siehe auch mStartMoveScan mSavePosition Anhang B bersicht ber Testf lle mit probenabh ngigen Parametern Die hier aufgelisteten Testf lle geben einen genauen Einblick in die Tests mit probenabh ngigen Parametern aus dem Abschnitt 8 4 3 Diese wurden aus Platzgr nden hier in den Anhang gelegt B 1 Testreihe mit Probe CuAsSe auf GaAs Testfall 1 CuAsSe auf GaAs Schicht Suchbereich Startwerte Endwerte Ausleuchtung DF 20 145 35 143 4 TL 20 5 6 1 92 CC 50 453 490 Kriterien Intensitat 221000 244300 HWB k A k A Dauer der Justage 14 50 min Testfall 2 CuAsSe auf GaAs Schicht Suchbereich Startwerte Endwerte Ausleuchtung DF 20 152 55 143 2 TL 20 5 6 0 3 CC 100 453 494 6 Kriterien Intensitat 21000 47000 HWB k A k A Dauer der Justage 15 33 min 170 KAPITEL B TESTF LLE MIT PROBENABH NGIGEN PARAMETERN Testfall 3 CuAsSe auf GaAs Schicht Suchbereich Startwerte Endwerte Ausleuchtung DF 50 1821 146 2 TL 20 5 6 0 12 CC 50 453 486 8 Kriterien Intensitat x21000 45700 HWB k A k A Dauer der Justage 13 49 min Testfall 4 CuAsSe gt auf GaAs Schicht Suchbereich Startwerte Endwerte Ausleuchtung DF 50 151 147 57
15. Wichtig ist zu sagen da nur die Achsen CC TL und DF den Antrieben im System entsprechen Danach werden die Koordinatensystem achsen so verdreht das alle Antriebe beim Anfahren eines Punktes auf einer Koordinatensystemachse benutzt werden Die Bezeichnungen CC TL und DF haben in diesem Fall also nur den symbolischen Zweck der Be schriftung der Koordinatensystemachsen Die Ermittlung des Maximums auf einer Koordinatensystemachse wie im ersten und zweiten sowie im vierten und f nften Punkt des Algorithmus entspricht einer 1 dimensionalen Suche Dazu ist es notwendig da man mit Me punkten auf der Achse arbeitet Theoretisch k nnte man die Achse auch abfahren und dabei die Intensit t messen und auf das Maximum stellen Aber es gibt zwei Gr nde die dagegen sprechen 1 Da durch die Transformationen des Koordinatensystems die Achsen nicht mehr nur einem Antrieb entsprechen m sste man mehrere An triebe zugleich betreiben Dies w rde jedoch einen exakten Synchron betrieb der Motorenhardware erfordern Das wird aber nicht vom ge gebenen System erm glicht 2 F r eine genaue Messung an einem Punkt mu f r einen kurzen Au genblick gestoppt werden cirka 1 Sekunde Der Grund ist der da der Detektor nur in einem bestimmten Zeitfenster Me werte liefert F r die 1 dimensionale Suche gibt es zwei Strategien Eine w re die Ver wendung von simultanen Verfahren in denen die Me punkte zur Ermittlung des Maximums
16. gut 110 KAPITEL 8 TEST 8 4 2 Bewertung der Tests mit probenunabh ngigen Einstellungen Die Auswertung der Testf lle mit probenunabh ngigen Einstellungen brachte eine Reihe von Erkenntnissen die in die anschlie enden Tests der von der Probe abh ngigen Parameter eingeflossen sind Die Erkenntnisse sind in der folgenden bersicht zusammengefa t e Toleranz der Optimierung 0 5 0 1 Dieser Toleranzwert ist zu ungenau f r das kleinste Intervall beim Goldenen Schnitt zur Optimierung auf einer Achse Das spiegelt sich in den Testergebnissen Testf lle 1 bis 3 wi der Nur im Ausnahmefall Testfall 4 mit Maximalanzahl von Durchl ufen und Intensit tsmessungen sind gute Ergeb nisse erzielbar Der Justagevorgang wird verk rzt aber die Wahrscheinlich keit f r schlechte Ergebnisse ist sehr hoch Mit diesem Toleranzwert und 5 Durchl ufen sind die Ergeb nisse durchweg sehr gut Die Justage l uft relativ schnell Diese Toleranzgrenze stellt einen sicheren Wert dar bei dem die Ergebnisse der automatischen Justage auch f r unter schiedliche Durchlaufanzahlen gut bis sehr gut sind Es mu aber eine erh hte Justagedauer in Kauf genommen werden Die Justagezeiten sind bei dieser Einstellung jedoch noch vertretbar ca 20 mehr als bei einer Toleranz von 0 5 e Anzahl der Durchl ufe In den vorliegenden Tests wurde das Justagemaximum meist am Ende der Justage erreicht Das Ergebnis war aber schlech ter im
17. unzureichende Ergonomie der Oberflache Im Rahmen des Softwaresanierungsprojektes wurden bereits einige dieser M ngel beseitigt Dabei standen die Aufgaben Analyse vorhandener Doku mente Kommentierung der Quellen sowie die Erstellung von Entwicklerdo kumenten im Vordergrund Entstanden sind Pflichtenhefte einzelner Auf gabenbereiche die sp ter zu einem Pflichtenheft zusammengefa t werden sollen Ziel des Softwaresanierungsprojektes ist es s mtliche M ngel zu beseiti gen und das Steuerprogramm um Funktionalit t zu erweitern Die dringlich sten Aufgaben bez glich der Erweiterung der Software sind die Einbindung von neuen Detektoren und die Automatisierung der manuellen Justage der Me probe Kapitel 3 Topographie mit dem Steuerprogramm Schwerpunkt in Bezug auf eine erweiterte Funktionalit t des Steuerprogram mes ist die M glichkeit der automatischen Justage der Me probe Diese Erweiterung ist der zentrale Aspekt dieser Arbeit Voraussetzung dazu ist die Kenntnis wie die manuelle Justage bzw der Topographievorgang mit Hilfe des Steuerprogrammes durchgef hrt wird 3 1 Manuelle Justage Die Topographie umfa t das Justieren der Me probe und den Topogra phievorgang Die Justage der Me probe ist eine komplexe Aufgabe Um einen R ntgentopographie Me vorgang durchzuf hren mu die Me probe so justiert werden da die Strahlungsintensit t gemessen am Detektor am h chsten ist Ist dies geschehen hat man den Bra
18. des Hauptmen punk tes Ausf hren erreichbar Beim Aufruf der Funktion erscheint ein Dialogfen ster von dem aus der Justagevorgang gestartet werden kann Der Anwender hat die M glichkeit die automatische Justage durch die Einstellung von Ab bruchkriterien und Suchbereichen zu beeinflussen Werden diese Parameter vom Nutzer nicht ge ndert benutzt der Suchalgorithmus die voreingestell ten Werte die w hrend der Testphase ermittelt wurden Zus tzlich kann der Nutzer eine Online Hilfe f r die Funktion Automatische Justage aufrufen 10 1 M glichkeiten und Grenzen der Funk tion Automatische Justage W hrend der Testphase wurden wichtige Erkenntnisse zum Einsatz der Pro grammerweiterung gewonnen Es konnte ermittelt werden unter welchen Bedingungen der selbstentwickelte Justagealgorithmus gute bis sehr gute Er gebnisse liefert Au erdem war es auch m glich Aussagen dar ber zu treffen in welchen F llen der verwendete Justagealgorithmus nicht sicher zum Ziel f hrt Hier bestehen bereits Ansatzpunkte f r Verbesserungen die aber den Rahmen dieser Diplomarbeit gesprengt h tten und deshalb nicht ber cksich tigt werden konnten Die neu implementierte Funktion hat die folgenden Eigenschaften e Eine grobjustierte Probe kann in 5 von 6 F llen mit den in der Test phase ermittelten Parametervoreinstellungen f r einen Topographievor gang der unmittelbar darauf folgen kann gut eingestellt werden e Der Vorgang der au
19. eingestellt werden Au erdem ist festzu legen in welchen Dateien die Beschreibungen der neuen Ressource eingef gt werden sollen Die Dialogressourcen werden in der Datei main rc die Be zeichnerkonstanten in rc_def h gespeichert siehe Abb 7 2 Der Entwurf des Dialogs richtet sich nach den in Abschnitt 4 4 expli zit und implizit spezifizierten Dialogelementen Die folgenden Gruppen von Steuerelementen sind im Dialogfenster anzuordnen e Aktionskn pfe f r Justagestart Hilfe und Beenden e Eingabefelder f r die Parameter zur Steuerung der automatischen Jus tage Abbruchkriterien Suchbereiche auf den Achsen Anzahl der In tensit tsmessungen Diese Anforderung ist erst bei der Entwicklung des Justagealgorithmus entstanden siehe Abschnitt 6 1 1 80 KAPITEL 7 PROBLEME DER IMPLEMENTATION EM Resource Workshop main rc Datei Bearbeiten Ressource Ansicht Fenster Hilfe W main rc oj x BITMAP all bmp_StatusB ar SAT PFERDE Eg bmp_StatusLine bmp_StatusB ar25 Ressourcentyp bmp_StatusLine2 amp DIALOG MENU menu_Main 300 menu_Diffractome menu_Diffractome menu_FrameProce os Adjustment Neuer AdjustmentParam Ressource einf gen in ne AngleControl AngleControlEng Aquisition Bezeichner einf gen in AreaScanParamet 4 rc_def h ACCELERATORS HIE main rc Ka Le Abbildung 7 2 Erstellung einer Dialogressource mit dem Resource Work shop der Borlan
20. justageanfang 3600 zeit ti_hour 60 zeit ti_mintzeit ti_sec Status Textfeld auslesen nur 72 Zeichen da bei jeder neuen Justage nur der jeweilige Justagevorgang im Statusfenster erscheinen soll GetDlgItemText GetHandle ID_Status status 72 strcat status r nAutomatische Justage gestartet r n SetDlgItemText GetHandle ID_Status status C 1 DIALOGKLASSE TAUTOMATICANGLECONTROL 193 Durchgangsz hler f r Optimierung dient dazu gerade und ungerade Durchg nge des Algo zu erfassen um abh ngig davon abwechselnd Tilt oder Kollimator zu optimieren count 0 Test auf Intensit ts berschreitung des Detektors if Transform gt bIntensityTooHigh normales Vorgehen FORWARD_WM_COMMAND GetHandle cm_choose_axis 0 0 PostMessage else Abbruch der Justage SendMessage GetHandle WM_COMMAND cm_post_processing 0 break case cm_choose_axis Test auf Intensit ts berschreitung des Detektors if Transform gt bIntensityTooHigh Abbruch der Justage SendMessage GetHandle WM_COMMAND cm_post_processing 0 Ende der Justage ist erreicht bei count durchlauf 2 ein Durchlauf des Algorithmus in die Justage von Tilt und Kollimator if count lt durchlauf 2 count Setzen der aktuellen Achsen Suchbereiche dazu werden die Bereiche gem den KS Transformationen umgerechnet aktWertebereich Transform gt translate_PosBorders
21. matischen Entwurf beachtet wurden Deshalb soll der Ablauf der automati schen Justage und der damit verbundenen Teilaufgaben unter dem Aspekt der softwaretechnischen Umsetzung erl utert werden Zur Erl uterung und Darstellung der einzelnen Prozesse dient das Flu diagramm in Abb 6 1 Es soll den Arbeitsablauf der Erweiterung Auto matische Justage dokumentieren und gleichzeitig einen einfachen berblick bieten Zun chst mu beim Ausf hren der Automatischen Justage gepr ft wer den ob alle Ger te die f r eine korrekte Einstellung der Probe notwendig sind vorhanden und ins System eingebunden sind Folgende Ger te m ssen f r die Justage der Probe zur Verf gung stehen e Motor f r die Achse Tilt TL e Motor f r die Achse Beugung fein DF e Motor f r die Kr mmung des Kollimators CC e Q dimensionaler Detektor 60 KAPITEL 6 DESIGN Die korrekte Einbindung der Ger te ist Voraussetzung f r die Ausf hrung des Suchalgorithmus Als n chste Aufgabe erfolgt das Einlesen und Auswerten der Dialogpa rameter Damit sind die Einstellungen gemeint die durch den Nutzer laut Pflichtenheft vorgegeben werden k nnen um den Suchalgorithmus zu be einflussen Zu diesen Parametern geh ren das Suchintervall die maximale Intensit tsdifferenz die Anzahl der Intensit tsmessungen die Anzahl der Wiederholungen des Algorithmus und die Auswahl f r die eventuelle Proto kollierung der Justage Auf di
22. nen Schnitts im Fall der automatischen Justage vorzuziehen 5 4 Koordinatensystemtransformation Dieser Abschnitt erl utert die Koordinatensystemtransformationen die im Algorithmus der automatischen Justage durchgef hrt werden Notwendig wird dies weil von einem Weltkoordinatensystem ausgegangen wird welches die realen Positionen der Antriebe repr sentiert Die virtuellen Koordina tensysteme des Algorithmus werden f r die Suche verwendet Es wird eine Punktmenge in zwei unterschiedlichen Koordinatensystemen betrachtet Um die Koordinaten eines Punktes von einem Koordinatensystem in ein anderes umzurechnen sind geometrische Transformationen notwendig Die folgenden Ausf hrungen sind angelehnt an die Erl uterungen aus 6 5 5 4 1 Geometrische Transformationen Zu den geometrischen Transformationen geh ren die Translation die Skalie rung und die Rotation F r eine Transformation zum Wechsel des Koordi natensystems werden nur die Translation und die Rotation ben tigt Die Translation ist eine Verschiebung um einen gew nschten Betrag Will man einen Punkt P x y z um dz dy und d Einheiten parallel zu den drei Achsen verschieben so erh lt man einen neuen Punkt P 2 y 2 Dies kann in folgender Schreibweise festgehalten werden x x dz y y dy zZ z d In Form von Spaltenvektoren definiert x a dz P y P u T dy z z dz 52 KAPITEL 5 ENTWICKLUNG EINES JUSTAGEALGORITHMUS kann man
23. while mIsMoveFinish mlSetAxis nMotorDF mMoveToDistance LastIntensity DF while mIsMoveFinish mlSetAxis nMotorCC mMoveToDistance LastIntensity CC while mIsMoveFinish Abbruchmeldung im Status Textfeld amp Logfile ausgeben sprintf buf1 r nLetzter Intensit tswert zu niedrig r nAbbruch und R ckkehr zur Maximalpos r nReale Positionen r nTL 2f DF 2 CC 2f r nIntensit t 0f r n LastIntensity TL LastIntensity DF LastIntensity CC LastIntensity Intensity strcat buf buf1 strcat status buf SetDlgItemText GetHandle ID_Status status ins Logfile schreiben if bWriteLogfile WriteToJustageLog buf Ermittlung der Anzahl der Textzeilen im Status Textfeld dwStatusZeilen SendMessage GetDlgItem hwnd ID_Status EM_GETLINECOUNT 0 0L C 1 DIALOGKLASSE TAUTOMATICANGLECONTROL 197 Scrollen des Textes um dwStatusZeilen minus Anzahl neuer Zeilen SendMessage GetDlgItem hwnd ID_Status EM_LINESCROLL O dwStatusZeilen 18L Abbruch des Justagevorgangs Verlassen der while Schleife FORWARD_WM_COMMAND GetHandle cm_post_processing 0 0 PostMessage break Ansonsten die alte Intensit t mit aktueller berschreiben LastIntensity ActIntensity Ende von Flagtest bIntensityDiffActive Ausgabe der erreichten Intensit t und ggf neues Maximum strcat status buf SetDlgItemText GetHandle ID_Status status
24. 19 Komponenten 64 Koordinaten homogene 53 Koordinatensystemtransformation 48 51 Korrektheit 21 INDEX 235 Logdatei 41 127 Makro 133 Makrosteuerung 134 Max Intensit tsdifferenz 127 Median 72 Modell inkrementelles 93 Monochromatisierung 6 Multitasking praemptives 93 Nachricht WM COMMAND 84 WM_INITDIALOG 88 WM_TIMER 89 Nachrichtenschleife 85 Netzebenen 2 3 Nutzerdokumentation 121 Object Windows 69 Optimierung nichtlineare 46 62 Optimierungsverfahren 46 Peak 5 29 Pflichtenheft 37 Aufgabe des s 36 Positionsvektor 62 Probengeometrie 115 Probenhalter 9 Probenteller 9 Programmfunktion 66 Projekt datei 15 quelltexte 15 struktur 15 Projektfenster 78 Protokolldatei 41 111 113 Qualit tskriterien 24 Quelltextstruktur 68 R ntgen beugung 3 diffraktometrie 2 reflektometrie 2 strahlung 6 topographie 2 Zwei Kristall 6 Reflektometrie 2 Reflexionskurve 3 Relaxation 47 Resource Workshop 68 79 Ressourcenbezeichnungen 82 Ressourcendateien 79 Ressourcentyp 82 Robustheit 22 Rockingkurve 5 27 Flanke der 31 Rotation 52 Rotationsmatrix 56 inverse 52 Schichtsystem 2 Schnittstelle IEEE 488 20 PC Bus 20 RS232 19 Skalierung 53 Softwareschranken 60 Softwaretest 97 statische Struktur 69 Statusfenster 102 126 Steuerprogramm 13 Suche eindimensionale 46 Suchrichtung 46 Suchverfahren dichotome Suche 50
25. 41 GOLD a GOLD b Komponenten des Positionsvektors auslesen PosVektor get_XYZ x y z Logging sprintf buf gt gt GoldenerSchnitt PosVektor 2f 2f 2f n x y 2 if bWriteLogfile WriteToJustageLog buf switch achse case Laufachse_X Setzen der jew Komponente im PosVektor PosVektor set_XYZ u y z Bestimmung der Intensit t fu GetIntensityOnPosition nMeasureCount PosVektor set_XYZ v y z fv GetIntensityOnPosition nMeasureCount break case Laufachse_Y PosVektor set_XYZ x u z fu GetIntensityOnPosition nMeasureCount PosVektor set_XYZ x v z fv GetIntensityOnPosition nMeasureCount break case Laufachse_Z PosVektor set_XYZ x y u fu GetIntensityOnPosition nMeasureCount PosVektor set_XYZ x y v fv GetIntensityOnPosition nMeasureCount break default return 1 step 2 while fabs a b gt toleranz if fu gt fv b v re Intervallgrenze nach links verschieben vu u GOLD a 1 GOLD b neue li Intervall Position fv fu Bestimmung des neuen Funktionswertes Intensitat switch achse case Laufachse_X PosVektor set_XYZ u y z fu GetIntensityOnPosition nMeasureCount break case Laufachse_Y PosVektor set_XYZ x u z fu GetIntensityOnPosition nMeasureCount break C 2 ALGORITHMUS UND KERNFUNKTIONALIT T TRANSFORMATIONCLASS 209 case Laufachse_Z PosVektor set_XYZ x y u fu GetIntensityOnPosition nMeasureCount break
26. 7 2 DIALOGPROGRAMMIERUNG Funktion DoCommandsFrame ein case Zweig eingef gt der dazu dient den Dialog der automatischen Justage zu starten LRESULT DoCommandsFrame HWND hwnd WPARAM wParam LPARAM 1Param TModalDlg dlg switch GET_WM_COMMAND_ID wParam lParam neu Erzeugung des Dialogs der autom Justage Tf Uebergabe der Steuerung an den Dialog und Rueckkehr nach Beendigung case cm_AutomaticAngleControl dlg TAutomaticAngleControl new TAutomaticAngleControl dlg gt ExecuteDialog hwnd delete dlg return TRUE Danach kann die eingebundene Funktion Automatische Justage mit Hilfe des dazugeh rigen Dialogfensters im Programm genutzt werden 7 2 1 Windowsnachrichtenkonzept Da die Anbindung der Funktion Automatische Justage an das RTK Steuer programm ber die Dialogprogrammierung erfolgt ergeben sich einige Be sonderheiten f r die Implementation der Erweiterung Die Dialogerstellung und verarbeitung erfolgt mit Hilfe des Windowsnach richtenkonzepts Das hei t durch das Bet tigen eines Dialogknopfes wird eine Nachricht erzeugt die in die Nachrichtenschleife von Windows gelangt Diese Nachricht wird in der Funktion Dlg_OnCommand f r das jeweilige Fen ster ausgewertet und der entsprechende Handler gestartet Das bedeutet da der Kontrollflu8 der Automatischen Justage mit Hilfe von Handlern realisiert werden mu Dabei starten die Handler die jeweiligen Hauptau
27. Abspeichern der Riicktransformation Matrix transformiere ZYX VerschiebeVektor winkel 0 0 212 KAPITEL KOMMENTIERTE QUELLTEXTE trafo_rueck push Matrix Drehung um Z Achse else if achse Drehachse_Z Abspeichern der Hintransformation Matrix transformiere XYZ 1 VerschiebeVektor 0 0 winkel trafo_hin push Matrix Abspeichern der Riicktransformation Matrix transformiere ZYX VerschiebeVektor 0 O winkel trafo_rueck push Matrix anzahl_koordinatentrafos Logging sprintf buf d KS Drehung Winkel 2f Grad n anzahl_koordinatentrafos winkel 180 M_PI if bWriteLogfile WriteToJustageLog buf return true void TransformationClass DFCorrection unsigned nMeasureCount double amp fDFPos float amp fInt double a b u v fu fv double fPosition toleranz 1 Intervallgr sse selbst angeben Bereich kann klein sein DF sek a 5 b 5 u GOLD a 1 GOLD b v 41 GOLD a GOLD b Position festlegen mlSetAxis nMotorDF mGetDistance fPosition mMoveToDistance utfPosition while mIsMoveFinish fu Measurelntensity nMeasureCount mMoveToDistance v fPosition while mIsMoveFinish fv MeasureIntensity nMeasureCount while fabs a b gt toleranz if fu gt fv b v re Intervallgrenze nach links verschieben v u u GOLD a 1 GOLD b neue li Intervall Position fv fu Bestimmung des neu
28. Fibonacci Suche 50 Goldener Schnitt 50 sequentielle 49 Test 97 236 INDEX strategie 98 szenarien 99 ziele 97 der G te 103 des Dialogs 99 des Zeitverhaltens 103 Funktions 101 Parametereinstellungen 102 Timer 87 event 88 funktion 89 programmierung 87 Toleranz 127 Topographie 2 27 vorgang 27 Transformation geometrische 51 Transformationsvektor 48 Translation 51 Translationsmatrix 56 UML Notation 69 Versetzungen 2 Verspannungen 3 Versuchsaufbau 11 Voreinstellungen Automatische Justage 43 123 Vorjustierung 133 Wartbarkeit 23 93 Weltkoordinaten 56 Weltkoordinatensystem 60 Wertebereich 60 Windows API 69 Windowsnachrichtenkonzept 85 Z hler fenster 70 Radicon 21 Z hlerkonfiguration 123 Zielfunktion 45
29. Intensitat 44300 47000 45700 46500 47000 46000 48000 43000 HWB k A k A k A k A k A k A k A k A Ausleucht 90 100 90 100 100 100 100 90 Dauer min 14 50 15 33 13 49 15 01 16 32 17 15 15 23 18 35 T T T T T Die Probe CuAsSe auf GaAs Schicht ist auf Grund ihrer Form eine be sondere Probe F r eine vern nftige Voreinstellung mu te der Kollimator in der Grobjustage um ca 700 um verstellt werden Ansonsten w re der Suchalgorithmus der Automatischen Justage an dieser Probe gescheitert da ber so gro e Entfernungen der Kollimator nicht optimiert werden kann 8 4 TESTF LLE MIT PROBEN 115 Aufgrund der komplizierten Probengeometrie war es auch nicht m glich in den Tests mit dieser Probe die Qualit t der Einstellung mit Hilfe der Halb wertsbreite zu bestimmen Da aber als zweite M glichkeit zum Einsch tzen der Qualit t der Einstellung ein 2 dimensionaler Detektor zu Verf gung stand konnte eine Bewertung der Testergebnisse anhand der Ausleuchtung der Pro be durchgef hrt werden Bei 5 Testf llen erreichte die Justage eine volle Ausleuchtung der Probe das hei t die Probe war in diesen F llen f r einen Topographievorgang fertig eingestellt Die Justage dauerte bei diesen Tests im Schnitt ca 15 Minuten Bei der Betrachtung der Log Dateien fiel auf da eine aktivierte Inten sit tsdifferenz bei dieser Probe nicht von Nutz
30. TL 20 5 6 4 2 CC 100 453 488 99 Kriterien Intensitat 21000 46500 HWB k A k A Dauer der Justage 15 01 min Testfall 5 CuAsSe auf GaAs Schicht Suchbereich Startwerte Endwerte Ausleuchtung DF 50 151 146 4 TL 20 5 6 1 2 CC 150 453 490 Kriterien Intensit t x21000 47000 HWB k A k A Dauer der Justage 16 32 min Testfall 6 CuAsSe gt auf GaAs Schicht Suchbereich Startwerte Endwerte Ausleuchtung DF 50 151 148 TL 20 5 6 3 2 CC 200 453 493 1 Kriterien Intensit t x21000 246000 HWB k A k A Dauer der Justage 17 15 min B 2 TESTREIHE MIT PROBE SIGE AUF SI SCHICHT PF916324 8 8 171 B 2 Testfall 7 CuAsSe auf GaAs Schicht Suchbereich Startwerte Endwerte Ausleuchtung DF 50 151 145 02 TL 50 5 6 0 97 CC 50 453 484 8 Kriterien Intensitat 21000 48000 HWB k A k A Dauer der Justage 15 23 min Testfall 8 CuAsSe auf GaAs Schicht Suchbereich Startwerte Endwerte Ausleuchtung DF 50 151 138 TL 50 5 6 5 06 CC 150 453 522 98 Kriterien Intensitat 21000 43000 HWB k A k A Dauer der Justage 18 35 min Testreihe mit Probe SiGe auf Si Schicht PF916324 8 8 Testfall 1 PF916324 8 8 Suchbereich Startwerte Endwerte Ausleuchtung DF 20 0 3 87 TL 20 0 1 10 CC
31. das Modul USER EXE verzweigt wo mit einer Funktion aus diesem Modul entsprechend reagiert wird Es gibt zwei Arten von Abl ufen wie auf ein Ti mersignal reagiert werden soll Zum einen kann eine Nachricht WM_TIMER in der Nachrichtenschlange der Applikation abgelegt werden oder es wird eine bestimmte vorher festgelegte Funktion beim Ausl sen eines Timers abgear beitet Im RTK Steuerprogramm werden beide Arten von Timerprogrammierung verwendet Allerdings handelt es sich hier nur um Timer die in den Dialogen Verwendung finden F r die zeitkritischen Prozesse zum Ansteuern der Mo torenhardware wird eine ung nstige Variante in Form einer Delay Funktion benutzt Dabei handelt es sich um eine FOR Schleife die auf moderneren Rechnern schneller abgearbeitet wird Im File m_dlg cpp in dem der Dialog f r die manuelle Justage realisiert wurde wird die Variante des Versendens einer Nachricht mit anschlie ender Verarbeitung in der Nachrichtenschleife verwendet Dadurch wird es m glich bei fahrendem Motor den aktuellen Winkel und die entsprechende Position 3SYSTEM DRV und USER EXE geh ren zum Systemkern von Windows 3 1 88 KAPITEL 7 PROBLEME DER IMPLEMENTATION am horizontalen Schieberegler anzuzeigen Der Timer wird gesetzt durch den Aufruf SetTimer hwnd TimerIdInformation AskTime NULL hwnd ist das Handle auf das aktuelle Dialogfenster TimerIdInformation ist die ID des Timers Dar ber wird sp ter identifiziert um w
32. die durch das in krementelle Hinzuf gen weiterer Funktionen erg nzt werden kann Die in der Designphase definierten Schnittstellen der Programmkomponenten bilden die Grundlage f r eine sichere Erweiterung der Funktionalit t das hei t hinzu gef gte Programmkomponenten passen in das bisherige System So wurden f r die konkrete Implementation der automatischen Justage funktion zuerst die grundlegenden mathematischen Klassen TMatrix TVektor und TMatrizenListe programmiert Mit der Teil Implementation der Klas se TransformationClass konnten bereits Transformationen von Koordina tensystemen durchgef hrt werden Die Transformationsklasse umfa te zu diesem Zeitpunkt haupts chlich die Methoden e Goldener_Schnitt e translate_to_worldpoints e translate from worldpoints und e KoordinatenTransformation Danach wurde zur Erstellung des Dialogfensters bergegangen Der Dialog beinhaltete bereits die ben tigten Dialogelemente die aber nicht alle mit vollst ndiger Funktionalit t ausgestattet waren Zur Beurteilung der sinn vollen Anordnung und der Vollst ndigkeit reichte das aus Die Dialogklas se TAutomaticAngleControl wurde danach sukzessive um die geforderten Funktionen zur Dialog und Justagesteuerung erweitert Die Ansteuerung der Motoren und Detektoren ist in Form der Methode GetIntensityOnPosition in die Klasse TransformationClass integriert worden Diese Methode wie derum nutzt die Memberfunktion Measurelntensity um die Me
33. f r den Referenzpunktlauf ausgew hlt werden mlOptimizingDlg Syntax void WINAPI mlOptimizingDlg void Beschreibung In den meisten Fallen sind die Steuerparameter nur im Rahmen eines konkreten Versuchsaufbaus richtig be stimmbar Da den meisten Antrieben zudem auch ein mechanisches Spiel anhaftet sind die Parameter nur unter Beachtung der realen Anfahrcharakteristik opti mal einstellbar Zum Optimieren wird mit dem Dia log Manuelle Justage der zu optimierende Antrieb ausgew hlt Die Funktion mlOptimizingDlg startet den DC Controller Parameter Dialog f r den aktuel len Antrieb Zuvor wird eine cm_CallExecuteScan Nachricht an die Anwendung gesendet um das Scan Fenster zu aktivieren Der durchgef hrte Scan tastet die Motorbewegung 150 Mal ab Das Ergebnis dieses Scans wird dann im Scanfenster visualisiert Ziel der Optimierung ist es da eine Endposition gleichm ig und ohne Schwingungen angefahren wird Die nderbaren Parameter f r Motoren der Steu erkarte C 812 sind die Werte der Membervaria blen dwMarVelocity maximale Geschwindigkeit dwAcceleration Beschleunigung wsStaticGain sta tische Verst rkung wDynamicGain dynamische Verst rkung wTorque Beschr nkung des maximalen Motorstroms wPositionWidth Schrittweite zum Messen des Anfahrverhaltens A 1 INTERFACE DER MOTORLISTEN FUNKTIONEN 149 Parameter Bei den Motoren an der Steuerkarte C 832 sind die Be zeichnungen f
34. hlen oder verwenden Er mu das Dialogfenster vor weiteren Aktionen erst bearbeiten und schlie en 6 3 STATISCHE STRUKTUR DER UTOMATISCHEN JUSTAGE 69 den Eintr ge der Dialogelemente erweitert Die bisherigen Implementatio nen von Dialogklassen der Motorsteuerung sind in den Dateien m_dlg h und m_dlg cpp zu finden Die Dialogklasse der Funktion Automatische Justage wird aber in die gesonderten Quelltextdateien m_justage h und m_justage cpp ausgelagert Bei einer sp teren Portierung des Softwarepro jekts ist eine Aufteilung der Klassen auf einzelne Dateien von Vorteil Der Entwickler des RTK Steuerprogramms hat aufbauend auf der Win dows 3 1 APleigene Klassen f r modale und nichtmodale Anwendungsdialoge entworfen Von den durch Borland C zur Verf gung gestellten Object Windows Dialogklassen hat er keinen Gebrauch gemacht obwohl diese in etwa die gleiche Funktionalit t zur Verf gung stellen Das zur Steuerung der automatischen Justage notwendige Dialogfenster wird von einer modalen Dialogfensterklasse verwaltet die von der bereits vorhandenen Klasse TModalDlg abzuleiten ist Das weitere Vorgehen bei der Dialogprogrammierung wird im Abschnitt 7 2 erl utert Die Einbindung des neuen Men punktes Automatische Justage in das Anwendungsmen und die Verbindung des Men eintrages mit der Ausf hrung des Dialogfensters mu in der Quelldatei m main cpp vorgenommen werden 6 3 Statische Struktur der Automatis
35. ist daf r pr destiniert von einer automatischen Programm 36 KAPITEL 4 ANFORDERUNGSDEFINITION AUTOMATISCHE JUSTAGE funktion bernommen zu werden da nach der Grobeinstellung des Bragg Reflexes wie in der Beschreibung der manuellen Justage in Kapitel 3 aus gef hrt zwischen 50 bis 100 Mal die selben Schritte wiederholt werden bis das Strahlungsmaximum erreicht ist Ein Mitarbeiter der Physik Arbeits gruppe ben tigt im Durchschnitt f r diese Aufgabe 15 25 Minuten die er auch mit anspruchsvollerer Arbeit f llen k nnte 4 3 Anforderungsspezifikation Es wird also gefordert da der Proze der Me probeneinstellung durch eine neu zu implementierende Funktion des Steuerprogramms abzuarbeiten ist Diese Funktion mu nach einer groben manuellen Einregelung des Bragg Reflexes vollautomatisch die f r die Feinjustage ben tigten Antriebe ansteu ern und unter Ber cksichtigung der R ntgenstrahlenintensit t die Probe so positionieren da die Strahlungsintensit t gemessen am 0 dimensionalen Detektor einen maximalen Wert annimmt Der Nutzer kann nach Beendi gung der automatischen Justage anhand des Wertes der Halbwertsbreite die G te der Einstellung beurteilen Diese groben verbalen Anforderungen m ssen nun in einem Pflichtenheft verfeinert und gegliedert werden Das Pflichtenheft dient dazu die fachli chen Anforderungen an die zu entwickelnde Software Funktion aus der Sicht des Auftraggebers zusammenzufassen E
36. nzende Kapitel B G Teubner Verlag Leipzig 1979 18 I M Bomze und W Grossmann Optimierung Theorie und Algorith men B I Wissenschaftsverlag Mannheim Leipzig Wien Z rich 1993 Index Abbruchbedingungen 62 Abbruchkriterium 46 112 118 Anforderungsspezifikation 36 Anstiegsrichtung 47 Anstiegsverfahren 46 Anwendungsszenario 39 Arbeitspunkt 30 Architekturentwurf 64 Ausleuchtung der Probe 114 Automatische Justage Eingaben 41 Einstellungen 126 Suchbereich 42 128 Befehlssatz der Motorencontrollerkarte 20 Benutzerfreundlichkeit 24 Benutzerschnittstelle 99 Bragg Gleichung 4 Reflex 4 27 C Schnittstelle zur Motorsteuerung mActivateDrive 158 mExecuteCmd 163 mGetAxisName 159 mGetAxisUnit 159 mGetDF 160 mGetDistanceProcess 155 mGetDistance 154 mGetMoveFinishIdx 168 mGetMoveScan 167 mGetSF 161 mGetScanSize 167 mGetUnitType 156 mGetValue 156 mIsCalibrated 153 mIsDistanceRelative 153 mIsMoveFinish 152 mIsRangeHit 152 mMoveByDistance 151 mMoveToDistance 150 mPopSettings 164 mPushSettings 164 mSavePosition 166 mSetAngleDefault 161 mSetCorrectionState 158 mSetLine 151 mSetRelativeZero 162 mSetValue 157 mStartMoveScan 165 mStopDrive 155 mlGetAxisNumber 145 mlGetAxis 139 mlGetDistance 140 mlGetIdByName 140 mlGetInstance 147 mlGetOffset 142 mlGetValue 141 mlGetVersion 146 mlInitializeMotorsDLL 138 mlIsAxisValid 143 mlIsMoveFinish 142 mlIsServ
37. t auslesen Membervariable fIntensity von Sensor while Detektor gt GetData fIntensity R_OK erfolgreiche Messung counter t SetInfo Hole Daten vom Counter Medianliste erweitern amp sortieren fIntensity_temp fIntensity if fIntensity gt 100000 0 if bIntensityTooHigh MessageBox GetFocus MeasureIntensity Die Maximalanzahl von 100 000 nDetektorcounts wurde berschritten n nDie Automatische Justage wird abgebrochen nBitte regeln Sie die Spannung des R ntgengenerators nach n berschreitung des Detektormaximums MB_OK bIntensityTooHigh true noch keine Messwerte in der Liste if counter 1 0 Messwertliste besteht schon else Medianliste 0 fIntensity_temp solange bis alle bisherigen Messwerte durchgelaufen wurden for int i 0 i lt counter 1 i kleine Elemente zuerst einsortieren if fIntensity_temp lt Medianliste i Wert an der akt Stelle merken ftemp Medianliste i Wert an der akt Stelle durch Messwert ersetzen Medianliste i fIntensity_temp Trick um die weiteren Elemente durchzusortieren fIntensity_temp ftemp brig gebliebener Wert wird ans Ende angeh ngt Medianliste counter 1 fIntensity_temp Medianbestimmung ungerade Anzahl von Messungen if counter 2 1 if counter 1 C 2 ALGORITHMUS UND KERNFUNKTIONALIT T TRANSFORMATIONCLASS 211
38. werden die Positionen der beiden Antriebe korrigiert A 2 INTERFACE DER MOTOR FUNKTIONEN 159 Parameter BOOL state gibt an ob die Korrektur bei der Positi onsumrechnung in Winkelangaben durch ein Polynom 3 Grades state TRUE oder linear state FALSE erfol gen soll Achtung Wenn der aktuelle Antrieb nicht ka libriert ist Membervariable bCalibrated FALSE oder nicht korrigiert werden kann bzw soll bCorrection FALSE setzt die Funktion den Korrekturstatus auf li neare Korrektur eCorrStatus CorrLinear R ckgabewert Siehe auch mGetAxisName Syntax LPCSTR WINAPI mGetAxisName void Beschreibung Liefert den Namen des aktuellen Antriebs zur ck Der Name wird bei der Initialisierung der Dynamischen Bi bliothek motors d1l aus dem Name Eintrag des Mo tors in der Konfigurationsdatei ausgelesen und in der TMotor Membervariablen szCharacteristic gespeichert Parameter R ckgabewert LPCSTR Wert der Motor Membervariablen szCharacte ristic in der der Name des aktuellen Antriebs aus der INI Datei abgelegt ist Siehe auch mGetAxisUnit mlParsingAxis mlGetIdByName mlIsAxisValid mGetAxisUnit Syntax LPCSTR WINAPI mGetAxisUnit void Beschreibung Die Funktion liefert den Wert der TMotor Membervariablen szUnit als Einheit f r die Positions angaben des aktiven Antriebs wie sie im Steuerpro 160 KAPITEL A SCHNITTSTELLENBESCHREIBUNG DER MOTORENANSTEUERUNG gramm vorgenomme
39. 0 y x sin y y cos ay 0 0 1 0 2 z 0 0 0 1 1 1 Zur Bestimmung der Lage eines Objektes in einem anderen Koordinaten system erfolgt ein Wechsel des Koordinatensystems Beim Suchalgorithmus gestaltet sich das Problem so da ein Punkt im Koordinatensystem K ge geben ist und die Koordinaten desselben Punktes im Koordinatensystem K gesucht werden Das Ganze soll auch in umgekehrter Reihenfolge m glich sein Die Translation eines Koordinatensystems um den Vektor Ta Ty T3 entspricht einer Verschiebung des geometrischen Objektes um den Vektor T T T 5 4 KOORDINATENSYSTEMTRANSFORMATION 55 Die Rotation eines Koordinatensystems erfolgt analog wie die Rotation eines Punktes Allerdings ist zu beachten da die Rotation eines Koordina tensystems um den Winkel a einer Drehung eines geometrischen Objektes um den Winkel a entspricht Zum Abschlu soll das folgende Beispiel eine Koordinatentransformation unter Verwendung homogener Koordinaten mittels geometrischer Transfor mationen erl utern Angenommen der Vektor v 0 5 0 soll die x Achse des neuen Ko ordinatensystems bilden Der Punkt auf den der Vektor zeigt soll der Ur sprung vom neuen Koordinatensystem sein Das neue Koordinatensystem erzeugt man durch eine Translation in Richtung v und einer Rotation um die z Achse des alten Koordinatensystems Abbildung 5 1 Beispiel zur Koordinatensystemtransformation Zun chst mu der entsprechende Winkel
40. 50 705 7 752 8 Kriterien Intensitat 225000 243000 HWB 15 75 12 29 Dauer der Justage 14 24 min 172 KAPITEL B TESTF LLE MIT PROBENABH NGIGEN PARAMETERN Testfall 2 PF916324 8 8 Suchbereich Startwerte Endwerte Ausleuchtung DF 20 0 0 1 TL 20 0 1 10 CC 100 705 7 802 1 Kriterien Intensitat 18000 49000 HWB 15 75 10 49 Dauer der Justage 15 57 min Testfall 3 PF916324 8 8 Suchbereich Startwerte Endwerte Ausleuchtung DF 50 0 4 13 TL 20 0 0 3 CC 50 705 7 754 Kriterien Intensitat 18000 42000 HWB 15 75 11 8 Dauer der Justage 16 06 min Testfall 4 PF916324 8 8 Suchbereich Startwerte Endwerte Ausleuchtung DF 50 0 1 48 TL 20 0 0 3 CC 100 705 7 787 7 Kriterien Intensitat 220000 244000 HWB 15 75 10 9 Dauer der Justage 16 47 min Testfall 5 PF916324 8 8 Suchbereich Startwerte Endwerte Ausleuchtung DF 50 0 6 03 TL 20 0 3 4 CC 150 705 7 849 2 Kriterien Intensit t 25000 59000 HWB 15 75 9 29 Dauer der Justage 17 48 min B 2 TESTREIHE MIT PROBE SIGE AUF SI SCHICHT PF916324 8 8 173 Testfall 6 PF916324 8 8 Suchbereich Startwerte Endwerte Ausleuchtung DF 50 0 2 08 TL 20 0 0 88 CC 200 705 7 811 5 Kriterien Intensitat 22000 48000 HWB 15 75 10 4 Dauer der Ju
41. Abb 9 2 vorgenom men Zahler Konfiguration Ed Allgemeine Einstellungen Fenster y Anzeigen Zeit Begrenzung Sekunden Impuls Begrenzung CPS _ MeB Fehler festlegen 1 100 v Sound Abbrechen Weitere Einstellungen Abbildung 9 2 Dialogfenster Z hlerkonfiguration Da der Lautsprecher auf der Z hlerkarte an der der Detektor angeschlos sen ist bei hohen Intensit ten sehr laute Ger usche von sich gibt wird emp fohlen da der Sound beim Durchf hren der Automatischen Justage aus gestellt bleibt F r die Justierung der azimutalen Rotation sollte der Laut sprecher aber eingstellt sein um besser Intensit ts nderungen wahrnehmen zu k nnen Die zweite Einstellung am Detektor betrifft die Zeit Begrenzung Dort kann minimal ein Wert von 0 6 angegeben werden Dieser Wert macht Sinn denn dadurch werden die Werte vom Detektor schneller ausgelesen Das beschleunigt den Vorgang der Automatischen Justage 126 KAPITEL 9 NUTZERDOKUMENTATION 9 4 Durchf hrung der automatischen Justage Sind die Voraussetzungen und Vorbedingungen gegeben so kann die Auto matische Justage gestartet werden Das Dialogfenster Automatische Jus tage wird ber den Men punkt Ausf hren Automatische Justage auf gerufen 9 4 1 Das Dialogfenster und seine Einstellungen Nach dem Aufruf der Automatischen Justage erscheint folgendes Dialog fenster Automatische Justage x
42. Bedienung der Schaltelemente a Dr cken von Start Beenden Hilfe b Bewegen der Schieberegler des Statusfensters Untersuchung der Option Logdatei a wird bei aktiviertem Optionsfeld die Protokolldatei justage log ins Programmverzeichnis geschrieben b werden die Justagedaten korrekt in das Protokoll bernommen c wird eine bestehende Logdatei korrekt erweitert Untersuchung der Option maximale Intensit tsdifferenz a l uft die automatische Justage bei deaktiviertem Optionsfeld mit der gesamten Anzahl von Durchl ufen ab b wird bei aktiviertem Optionsfeld die Justage abgebrochen wenn bei aufeinanderfolgenden Algorithmusdurchl ufen die R ntgenin tensit t um mehr als den angegebenen Wert absinkt c wird bei deaktiviertem Optionsfeld die Eingabe von Werten f r die Intensit tsdifferenz verhindert Nach Absolvierung der Tests traten einige Probleme auf von denen die schwerwiegenden aber in einem darauffolgenden Korrekturschritt in den Pro grammdateien korrigiert wurden So st rzte das Programm im Testfall 4a nach mehrmaligem Start der Justage ca 25 Mal mit einem Speicherschutzfehler ab Die Ursache wurde 102 KAPITEL 8 TEST in dem Programmteil lokalisiert der die Informationen in das Statusfenster schreibt Bis zum Zeitpunkt des Dialogtests wurde der Status fortw hrend auch nach einem Neustart der Justage an den bestehenden Statusfensterin halt angeh ngt Nachdem der zur Darstellung ben
43. Belich tung zu reagieren w hlt man den Arbeitspunkt an der steileren Flanke der Rockingkurve In der Regel ist das die linke Flanke Kleinste Ver nderungen der Position werden sofort von der Steuersoftware mittels des Detektors er kannt Durch schnelles Nachregeln der Position wird angemessen reagiert so da keine Abweichungen von der optimalen Einstellung der Me probe erfol gen Au erdem kann die Steuersoftware schnell erkennen in welche Richtung der Arbeitspunkt wandert was eine wichtige Information im Hinblick auf die zu erfolgende Reaktion des Programms auf diesen Umstand darstellt Da sich der Arbeitspunkt nicht auf dem Peak befindet bedeutet dies allerdings eine h here Belichtungszeit der Fotoplatte da die Intensit t der reflektierten R ntgenstrahlung von der Me probe nun viel geringer ist als auf dem Peak Bei einem Arbeitspunkt bei 60 Prozent der H he der Rocking kurve wirken also nur noch 60 Prozent der Intensit t der R ntgenstrahlung des Peaks Der Arbeitspunkt wird ber Anw hlen der Schaltfl che Startposition einstellen angefahren ber die Schaltfl che Einstellungen erreicht man den Dialog Abb 3 4 3Im Bereich der h chsten Intensit t ist die Kurve flach Man spricht von einem Plateau 32 KAPITEL 3 TOPOGRAPHIE MIT DEM STEUERPROGRAMM Einstellungen Topographie x Actuator Detektor Beugung fein Test M Beschr nkung auf Detektor Parameter Sean Zeit sec C
44. Das hei t da der Antrieb Azimutale Rotation weiter bewegt werden mu Findet man in der einen Richtung den zweiten Peak nicht wird die Richtung ge ndert Ist er gefunden ermittelt man den Mittelpunkt zwischen beiden Peaks indem die relative Null im Dialog Manuelle Justage auf einen Peak gesetzt wird und dann zum zweiten Peak gefahren wird Dann f hrt man mit dem Antrieb Azimutale Rotation den halben Abstand zwischen den beiden Peaks an und schlie t damit die Justage f r den Antrieb Azimutale Rotation ab Mit Direktbetrieb ist gemeint da unter neuer Winkel eine Position eingegeben wird und anschlie end nach Best tigung mit lt Enter gt der Motor diese Position anf hrt Der Fahrbetrieb bezeichnet den Betriebsmodus bei dem durch Dr cken der Pfeiltasten der entsprechende Motor bewegt wird wobei im Dialog Manuelle Justage die Checkbox Fahren ausgew hlt sein mu 30 KAPITEL 3 TOPOGRAPHIE MIT DEM STEUERPROGRAMM Als n chstes regelt man mit dem zuvor ausgew hlten Antrieb Beugung grob nach Dabei mu wiederum auf die maximal m gliche Intensit t ge stellt werden wobei auf das Ger usch vom Lautsprecher der Z hlerkarte geachtet werden sollte denn die Einstellungen nach Geh r gestalten sich in diesem Stadium der Justage einfacher als die Einstellung nach den Z hler werten im Z hlerfenster Nun beginnt die Feinjustage Sie nimmt den gr ten Teil der Zeit bei der
45. Dialog und Interaktionssteuerung wird in der Dialogklasse vorgenommen w hrend die Justage Vorg nge von der Algorith musklasse gesteuert werden Die Klassen f r die Koordinatentransformation bilden die Fundamentalklassen und somit das Ger st der Justagefunktion Zur n heren Betrachtung werden nun die entsprechenden Klassen Funk tionen und Programmteile lokalisiert die eine unmittelbare Rolle bei der Programmierung der automatischen Justage spielen 6 2 2 Benutzte Funktionen und Klassen Das Diagramm 6 3 zeigt da zur Realisierung einer automatischen Justage funktion Methoden der Klassen zur Motor und Detektorsteuerung ben tigt 6 2 EINBETTUNG IN DIE BESTEHENDE SOFTWARE 67 werden F r die Ansteuerung der Antriebe sind haupts chlich Funktionen zur Auswahl des aktiven Antriebs zur Bestimmung der Winkelposition und zum Anfahren einer bestimmten Position wichtig Zus tzlich werden auch Funktionen gebraucht um beispielsweise zu testen ob ein spezieller Motor ins System eingebunden wurde oder ob sich ein Antrieb in Bewegung be findet Um auf Detektorwerte zuzugreifen sind Methoden zum Setzen des aktuellen Detektors zum Starten einer Messung und zum Auslesen der R nt genintensit t vonn ten Au erdem mu das Vorhandensein der entsprechen den Detektorsteuerkarte mittels einer Schnittstellenfunktion getestet werden k nnen In der folgenden Tabelle sind die ermittelten Funktionen aufgelistet Aufgabe Schnittstellen
46. Kennziffer des Timers vor das hei t die Applikation bestimmt die Kennziffer Wird an dieser Stelle NULL angeben so weist Windows dem Timerevent automatisch eine Kennziffer zu Der drit te Parameter der Funktion gibt die Prozedurinstanzenadresse der Funktion an die beim Ausl sen des Timerevents aufgerufen werden soll Der vier te Parameter ist immer 0 Mit dem f nften Parameter wird angegeben ob das Timerevent nur einmal oder immer wieder aufgerufen werden soll Die m glichen Werte sind hier TIME_ONESHOT oder TIME_PERIODIC Deaktiviert wird diese Art von Timer mit dem Aufruf timeKillEvent nEvent Der Parameter nEvent gibt die Kennziffer des jeweiligen Timerevents an 7 2 3 Konsequenzen f r die Automatische Justage Die M glichkeit eines Abbruchs der Automatischen Justage mit Hilfe eines Dialogknopfs gestaltet sich aufgrund des Windowsnachrichtenkonzeptes als u erst schwierig zu implementieren Da die Automatische Justage nach dem Start des Justagevorganges komplett die gesamte Proze zeit ben tigt 7 3 IMPLEMENTATION DER FUNKTIONALIT T 93 ist es unm glich berhaupt ein Dialogelement w hrend dieses Vorganges zu bet tigen Der Grund daf r sind die Funktionen Measurelntensity und GetIntensityOnPosition der Klasse TransformationClass Dort werden Schleifen benutzt um zu warten bis die Messwerte vom Detektor anliegen bzw bis die Motoren ihre anzufahrenden Positionen erreicht haben Als L sung
47. Kollimator A pr Schritt Betieb mit D Sakumlan gt Fahren mit Y s 1 Verlassen Abbildung 3 1 Dialogfenster Manuelle Justage ber das Popup Men Ausf hren Manuelle Justage im Hauptfenster der Anwendung wird der Dialog Manuelle Justage Abb 3 1 ausgew hlt Mit Hilfe dieses Dialoges werden die Antriebe f r den Probenteller und den Kollimator angesteuert Auf eine Erkl rung der gesamten Funktionalit t des Dialoges wird hier verzichtet da das Pflichtenheft zur Funktion Probe und Kollimator manuell justieren 4 genaue Informationen dazu enth lt Als erstes wird die Probe auf den Probenteller gelegt F r die richtige Positionierung auf dem Probenteller werden die Informationen die zu jeder Me probe existieren benutzt Dabei ist die Probe schon durch bestimmte fe ste Parameter wie die R ntgenwellenl nge die Gitterparameter und die Netz ebene vorbestimmt Danach wird anhand des manuell berechneten Einfalls winkels der Detektor per Hand eingestellt Nun wird der Detektor eingeschal tet und f ngt an zu z hlen Das Z hlen des Detektors kann auch akustisch wahrgenommen werden da die Kontrollerkarte des Detektors mit einem Pie zolautsprecher ausger stet ist Dieser wird ber den Dialog Abb 3 2 zu erreichen unter dem Men punkt Einstellungen Detektor Detektoren ak tiviert Des weiteren mu beachtet werden da der Antrieb Tilt Verkippung die Position TL 0 hat
48. Laufachse_Z TLaufachse Struktur die die Positionen der Motoren der bestimmten Antriebsachsen aufnimmt OrigDF TL CC zus tzlich werden die Intervallschranken innerhalb derer die Optimierung durchgef hrt wird gespeichert Min MaxDF TL CC typedef struct double MinDF double MaxDF double OrigDF double MinTL double MaxTL double OrigTL double MinCC double MaxCC double OrigCC TMotorPositionsWerte Struktur in der die Intensit t Intensity an einer bestimmten Position DF TL CC gespeichert wird typedef struct double DF double TL double CC float Intensity TIntensityPosition 202 KAPITEL KOMMENTIERTE QUELLTEXTE Transformationsklasse zur Durchf hrung von Koordinatentransformationen class TransformationClass private Listen zur Abspeicherung der Transformationsmatrizen TMatrizenListe trafo_hin TMatrizenListe trafo_rueck Z hler f r durchgef hrte KS Transformationen unsigned anzahl_koordinatentrafos Ursprungsmotorpositionen und intervalle TMotorPositionsWerte Wertebereich Zeichenpuffer f r Protokollierung char buf buf1 public TVektor PosVektor float toleranz TransformationClass void Kontruktor TransformationClass void Destruktor bool Initialize double MaxDF double MaxTL double MaxCC Initialisierung der Transformationsklasse 1 Ermittlung der aktuellen Motorpositionen und 2 Festlegen der
49. Memberfunktion transformiere bildet eine Zusammenfassung aller Transformationen in einer Funktion Der Parameter Reihenfolge bestimmt wie die Gesamttransformationsmatrix zusammenge setzt werden soll Dadurch ist es leicht die Inverse einer Transformations matrix zu berechnen Die weiteren Parameter geben die Verschiebung und die Winkel f r die Drehung um die einzelnen Achsen an Die Klasse TVektor realisiert einen Datentypen der einem Vektor ent spricht Da ein Vektor ein Spezialfall einer Matrix ist wobei gilt Spal tenanzahl 1 wurde die Klasse TVektor von der Klasse TMatrix abgeleitet Zus tzlich zu den geerbten Methoden aus TMatrix wurde TVektor um wei tere wichtige Funktionen erweitert Dazu z hlen e Berechnung des Skalarproduktes zweier Vektoren skalarprodukt e Berechnung eines Winkels zwischen zwei Vektoren winkel e Berechnung des Betrages eines Vektors vektor_betrag Umwandlung in einen Vektor mit homogenen Koordinaten mache_homogen Umwandlung in einen Vektor mit kartesischen Koordinaten mache_kartesisch e Setzen der x y z Koordinaten eines Vektors set_XYZ e Ausgabe der x y z Koordinaten eines Vektors get_XYZ Au erdem wurde ein Operator erstellt der einen Vektor skalieren kann Die Klasse TMatrizenliste stellt einen Datentypen zur Verf gung mit dem es m glich ist mehrere Matrizen hnlich wie bei einem Stack zu ver walten Benutzt werden Instanzen dieser Klasse zum Speichern der Trans forma
50. Softwarel sung der automa tischen Justagefunktion ist zur Feinjustage einer Me probe vorgesehen Um den Proze der Probeneinstellung komplett zu automatisieren das hei t die Probe mu nur eingelegt werden und auf Knopfdruck werden alle n ti gen Schritte zur Justage automatisch vorgenommen sind noch zwei weitere Schritte zu realisieren Diese Arbeitsschritte w rden sich vor den Proze der jetzigen Programmfunktion Automatische Justage einordnen Der erste Schritt ist die automatische Vorjustierung der Probe bez glich des Freiheitsgrades Azimutale Rotation AR Dieser Arbeitsvorgang war vom urspr nglichen Entwickler des Steuerprogramms bereits vorgesehen und sollte mit Hilfe eines Makros realisiert werden Das dazugeh rige Makro Skript AzimutalJustify befindet sich in der Makrodatei standard mak aber die Abarbeitung dieses Skriptes funktioniert noch nicht Es bieten sich also zwei M glichkeiten an die Justage des Freiheitsgrades Azimutale Rotation zu realisieren 134 KAPITEL 10 ZUSAMMENFASSUNG UND WEITERF HRENDE PROBLEME 1 Die Kommandos des existierenden Makroprototypen m ssen genau ana lysiert und ausgewertet werden M glicherweise lassen sich korrigier bare Fehler im Skript finden so da die M glichkeit zur Ausf hrung dieses Makros besteht Im ung nstigsten Fall kann das Makro in der vorliegenden Form nicht genutzt werden und m te anhand der Ar beitsschritte der manuellen Vorgehens
51. Testf lle 4 5 und 6 erreichten dabei eine sehr gute Halbwertsbreite f r diese Probe In dieser Testreihe w re eine Aktivierung der Max Intensit tsdifferenz sinnvoll gewesen Dadurch h tte sich die Dauer der Justagen von ca 15 Minuten auf ca 10 Minuten reduziert KAPITEL 8 TEST Testreihe mit Probe PF916324 8 7 Testfall 1 2 3 4 5 6 7 8 Intensit t 56000 57000 57000 56000 53000 58000 52000 51000 HWB 8 9 8 89 9 0 9 1 9 35 8 54 9 45 9 7 Ausleucht 100 100 100 100 90 100 90 90 Dauer min 13 47 15 03 13 27 14 39 15 32 18 27 14 15 18 45 T T j T T Da diese Testreihe genau auf die mit der Probe PF916324 8 8 folgte war der Kollimator f r diese Probe schon gut eingestellt Deshalb war auch ein gro er Suchbereich f r den Kollimator nicht notwendig Die Ergebnisse waren mit allen Testf llen zufriedenstellend An dieser Testreihe erkennt man sehr gut da ein gro er Suchbereich f r Tilt nicht g nstig ist denn in beiden Testf llen in denen der Bereich von Tilt auf 50 Sekunden gestellt wurde waren die Ergebnisse am schlechtesten Bez glich des Parameters Max Intensit tsdifferenz kann gesagt wer den da es sich bei dieser Testreihe die Waage hielt Die H lfte der Testf lle h tte eine k rzere Dauer bei der Justage mit Aktivierung des Parameters erreicht Testreihe mit Probe PF916324 08 5
52. Vergleich zu Justagen mit mehr Durchl ufen Das zeigt da nach drei Durchl ufen das Optimium nicht zu verl ssig gefunden wurde Durch die geringe Anzahl von Algorithmusdurchl ufen ben tigt die Justage nur die H lfte der Zeit einer Optimie rung in 7 Durchl ufen Mit dieser Einstellung sind die besten Ergebnisse erzielt wor den Sie stellt einen guten Kompromi im Hinblick auf Jus tageergebnis und dauer dar 8 4 TESTF LLE MIT PROBEN 111 7 Die Justageergebnisse sind bei dieser Einstellung nicht besser als bei der mit 5 Durchl ufen Die Justage dauert aber ca 40 l nger e Anzahl der Intensit tsmessungen 1 Bei einer Messung k nnen Ausrei er die Justage negativ beeinflussen Damit ist diese Einstellung nicht sicher Die Dauer des gesamten Justageprozesses wird aber drastisch reduziert um ca 40 gegen ber 3 Messungen 2 Der Mittelwert der Messungen gen gt beim vorliegenden Test um geringe Intensit tsschwankungen auszugleichen Im Fall von gro en Intensit tsschwankungen w rde die Justage aber auch beeintr chtigt werden Die Justagedauer wird um ca 20 verl ngert gegen ber 1 Messung 3 Durch die Bestimmung des Medians k nnen Ausrei er sehr gut ausgeschlossen und somit die automatische Justage opti mal durchgef hrt werden Dies stellt die sicherste Einstellung dar die auch vom zeitli chen Mehraufwand vertretbar ist gt 33 Die Dauer der Justage erh ht sich unverh ltnism ig
53. Vom Entwickler sind auch Dialoge zur Steuerung der Motoren in das In terface aufgenommen worden um anderen Programmierern die M glichkeit zu geben auf komplexe Dialoge ohne gro en Aufwand ber Aufrufe aus der Dynamischen Bibliothek motors d11 zur ckgreifen zu k nnen um bei spielsweise innerhalb eines eigenen Programms einen Referenzpunktlauf mlInquireReferencePointDlg durchzuf hren oder die Motoren direkt an steuern zu k nnen mlPositionControlDlg Diese Herangehensweise ist unvorteilhaft im Hinblick auf die Trennung von Oberfl che Hauptprogramm und Hardwareansteuerung ist aber der In tention des Steuerprogrammentwicklers geschuldet mlInquireReferencePoint Dlg Syntax Beschreibung void WINAPI mlInquireReferencePointDlg int task Startet den Grundstellung anfahren Dialog Mit die ser Funktion wird ein Dialog aufgerufen mit dem fiir alle Motoren des Systems ein Referenzpunktlauf durch gef hrt werden kann 148 KAPITEL A SCHNITTSTELLENBESCHREIBUNG DER MOTORENANSTEUERUNG Weiterhin ist es m glich den Nullpunkt in Relation zum Referenzpunkt neu zu bestimmen und auch den absolu ten Nullpunkt zu setzen Im Steuerprogramm wird diese Funktion ber das Hauptmen Einstellungen Moto ren Grundstellung aufgerufen Parameter int task bergabe einer Tasknummer die festlegt welche Voreinstellungen der Dialog anzeigen soll Wird task 99 bergeben wird veranla t da alle Antriebe
54. Wiederholungen oder bei berschreitung der zul ssigen Z hlimpulse f r die Strahlung beendet Der Dialog kann durch Dr cken des Beenden Buttons verlassen werden Wurde die Justage erfolgreich abgeschlossen l t sich die G te der Optimie rung anhand des Wertes der Halbwertsbreite beurteilen Die Halbwertsbreite kann ber den Men punkt Ausf hren Manuelle Justage und anschlie en des Dr cken des Steuerknopfes Halbwertsbreite messen bestimmt werden 40 KAPITEL 4 ANFORDERUNGSDEFINITION AUTOMATISCHE JUSTAGE 3 Funktionsbeschreibung Um die Funktionsweise der automatischen Justage zu erl utern ist es not wendig da die Vorgehensweise der manuellen Justage noch einmal kurz rekapituliert wird In Abb 4 1 ist der Vorgang schematisch dargestellt Probe einstellen amp TLin Beugung Einfallswinkel f r um 2 bis 3 Nullstellung per Stellrad fahren Rue einstellen justieren Detektor manuell Manuelle Justage Grobjustage AR ndern bis 2 DC nachstellen Bragg Reflex grob Maxima gefunden um max 1 auf einstellen mit DC auf Abstand maximale fahren R ntgenintensit t Feinjustage max Detektorwert CC einstellen DF nachregeln keine Verbesserung CC fest Kontrolle der Justage durch Messen der Halbwertsbreite TL einstellen DF nachregeln Iterativer Proze 20 bis 100 Durchl ufe DF einstellen bis AR azi
55. Zeitrahmen wird ein Richtwert von 30 Minuten angesetzt Zur Beeinflussung des Justageverhaltens sollen dem Nutzer Parameter angeboten werden die unter anderem angemessene Abbruchkriterien dar stellen Diese sollen verhindern da das Steuerprogramm auch dann noch l uft wenn durch weitere nderung der Probenstellung oder der Kollima torkr mmung keine Verbesserung des Justageergebnisses absehbar ist Es wird weiterhin verlangt da im Dialogfenster die anzusteuernden In tervalle der am Justageproze beteiligten Achsen eingrenzbar sein sollen Werden diese vom Benutzer nicht ver ndert m ssen angemessene Werte als Voreinstellung eingesetzt werden Bei der Ansteuerung der Motoren sind die Softwareschranken einzuhal ten Das bedeutet da die automatische Justage nur im Rahmen der durch den Me platz vorgegebenen Winkelintervalle durchgef hrt werden darf An dernfalls k nnte die Apparatur durch das Anfahren ung ltiger Postionen besch digt werden W hrend der automatischen Justage ist von der Programmfunktion ein Statusfenster darzustellen in dem der Benutzer dar ber informiert wird in welchem Stadium sich der Proze befindet Da der 0 dimensionale Detektor nur maximal 100000 R ntgenstrahlungsimpulse pro Zeiteinheit registrieren kann mu durch die Programmfunktion bei berschreitung der Z hlrate ein entsprechender Warnhinweis mit der Aufforderung die Leistung des R nt genapparats zu verringern ausgegeben werden Die Justag
56. Zweige 7 2 DIALOGPROGRAMMIERUNG 87 Die jeweiligen Handler werden mit Hilfe einer switch case Anweisung in der Funktion TAutomaticAngleControl Dlg_OnCommand realisiert Je nachdem welche Nachricht vorliegt wird der entsprechende case Zweig ab gearbeitet und anschlie end in die Nachrichtenschleife zur ckgekehrt In den case Zweigen werden die Funktionen der Automatischen Justage auf gerufen Um zu steuern welche Aufgabe im n chsten Schritt der Justage durchgef hrt werden soll wird eine Nachricht mit dem Aufruf FORWARD_WM_COMMAND GetHandle MESSAGE 0 0 PostMessage verschickt wodurch man erzwingt welcher case Zweig als n chstes abgear beitet wird Dadurch kann gem dem Windowsnachrichtenkonzept der Kon trollflu8 der Automatischen Justage gesteuert werden MESSAGE bezeich net die jeweilige Nachricht die in die Nachrichtenschleife gesandt wird Die Abb 7 5 veranschaulicht wie durch das Senden von Nachrichten die Auto matische Justage in der Funktion TAutomaticAngleControl Dlg OnCommand abgearbeitet wird 7 2 2 Timerprogrammierung Der Timer ist eine wichtige Komponente eines jeden PCs Mittels eines Ti merbausteins werden zeitkritische Abl ufe wie zum Beispiel die Steuerung der RAM Refreshzyklen realisiert Innerhalb einer bestimmten Zeit l st der Timerbaustein ein Signal aus Windows wandelt diese Art von Systemsi gnalen mit Hilfe des Kerneltreiber SYSTEM DRV um Dabei wird direkt in
57. akt anzufahrenderPosVektor 2 worldkoordinaten Vektor get_XYZ amp x ky amp z 3 nMotorTL mMoveToDistance x Wertebereich OrigTL weil Ursprung 0 0 0 nMotorDF mMoveToDistance y Wertebereich OrigDF nMotorCC mMoveToDistance z Wertebereich OrigCC 4 Riickgabe der Intensitat int Goldener_Schnitt TLaufachse double amp intervall_li double amp intervall_re unsigned nMeasureCount bekommt aktuelle Koordinaten Grenzen akt PosVektor und rechnet nur im akt KS f r eine bestimmte Achse x y z erst der Aufruf von GetIntensityOnPosition vektor f hrt zu einer Bestimmung der realen Positionen TMotorPositionsWerte GetOrigPosBorders void return Wertebereich gibt die Wertebereiche der Motoren zur ck bool KoordinatenTransformation TDrehachse TVektor vVerschiebung 1 Berechnung des Winkels von vektor zur Dreh Achse Einheitsvektor 2 Aufruf der transformiere Methode der Matrix Klasse HIN transformiere XYZ R CK transformiere ZYX 3 Matrizenliste push hin Matrizenliste push riick 4 anzahl_koordinatentrafos unsigned get_koordinatentrafos void return anzahl_koordinatentrafos gibt die Anzahl der KS Transformationen zuriick float MeasureIntensity unsigned nMeasureCount sicheres Auslesen der Intensitat vom Detektor M glichkeit einer Mehrfachmessung mit Medianbestimmung um Messschwankungen auszugleichen void DFCor
58. ckgef hrt werden Dieser Schritt wird im n chsten Abschnitt vollzogen 6 2 3 Relevante Quelltexte Bei der Analyse der bestehenden Quelltexte haben sich folgende Dateien als relevant f r die Implementation der automatischen Justage herausgestellt Quelltextdateien Aufgabe main rc Ressourcendatei des Resource Workshops enth lt die Beschreibung der Dialoge des Hauptpro gramms im ASCII Textformat rc_def h Headerdatei in der u a die IDs der Dialogelemen te und die Kommandos IDs aller Programmdialoge verzeichnet sind dlg tpl h cpp Templateklassen f r modale und nichtmodale Dia loge m_dlg h cpp Funktionalit t der Dialoge zur Motorensteuerung m_layer h cpp C Schnittstelle zur Ansteuerung und Verwaltung der Motoren c_layer h cpp C Interface zur Steuerung der Detektoren m_main cpp Hauptprogramm mit Integration des Haupt men s und Aufruf der Dialoge entsprechend den Men punkten Tabelle 6 2 berblick ber genutzte Quelltexte Die in der Tabelle 6 2 aufgef hrten Quelltexte stellen die Basis zur Einar beitung der neuen Programmfunktion dar Bei der Bearbeitung des Dialog fensters im zur Entwicklungsumgebung geh rigen Resource Workshop wer den die Dateien rc_def h und main rc automatisch um die entsprechen Modale Dialogfenster stellen die h ufigste Art von Dialogen dar W hrend der Anzeige eines modalen Dialogs kann der Benutzer das bergeordnete Fenster der Anwendung nicht anw
59. const Berechnung des Skalarproduktes zweier Vektoren double skalarprodukt const TVektor amp vekt Berechnung des Winkels zwischen zwei Vektoren double winkel const TVektor amp vekt Setzen der x y z Koordinaten eines 3dim Vektors bool set_XYZ double x double y double z Ausgabe der x y z Koordinaten eines 3dim Vektors bool get_XYZ double amp x double amp y double amp z F pakao oo ooo o k kkk kkk k kkk kkk kk kkk kk kkk k Matrizenliste Klasse Liste von Transformationsmatrizen organisiert als Stack mit push element pop ist_leer 7 E ak ak akak ak 3k ak ak ak k ak ak 3k ak k ak ak k ak 3K ak K ak ak 2k ak 3k ak k ak ak 2k ak 3K ak ak ak ak 2K ak 3K ak k 2k ak 2k ak K ak ak ak ak 2K ak 3K ak 3k 2k aK 2K ak 3K ak ak ak ak 2K ak K ak K 2K KK K class TMatrizenListe private Membervariablen TMatrix liste Liste als Zeiger auf die Matrizen unsigned akt_elemente aktuelle Anzahl von Matrixelements in der Liste unsigned max_elemente maximale Anzahl von abzuspeichernden Matrizen C 3 MATHEMATISCHE HILFSKLASSEN 217 public Konstruktoren und Destruktoren Listenkonstruktor um eine Liste mit einer bestimmten Anzahl von Listenelementen zu erzeugen TMatrizenListe unsigned anzahl 10 Standarddestruktor TMatrizenListe Klassenmethoden if liste NULL delete liste Test ob Matrizenliste leer ist bool ist_leer void
60. const TMatrix amp mat Matrizensubtraktion TMatrix operator const TMatrix amp mat Matrizenmultiplikation TMatrix operator double amp fakt reelle Vervielfachung f r TMatrix double friend TMatrix operator double fakt const TMatrix amp mat double TMatrix return homogene_koordinaten Berechnung der Inversen einer Matrix sofern es sich um eine regul re Matrix handelt TMatrix invers void Erstellung einer Einheitsmatrix mit Rang m TMatrix einheitsmatrix unsigned n Transformationsmethoden kkk ak ak ak ak ak ak ak ak ak ak ak k 3k 3k Kk K Verschiebe Translations TMatrix erzeugen Verschiebung um Tx Ty Tz Vektor TMatrix verschiebematrix const TVektor amp vekt Rotationsmatrix erzeugen Drehung um x y bzw z Achse mit Winkel Anmerkung wenn Winkel negativ angegeben dann handelt es sich um eine inverse Drehung TMatrix rotationsmatrix_x double winkel TMatrix rotationsmatrix_y double winkel TMatrix rotationsmatrix_z double winkel Zasammenfassung aller Transformationen in einer Funktion Reihenfolge REIHENFOLGE_XYZ 10 REIHENFOLGE_ZYX 13 TMatrix transformiere unsigned reihenfolge const TVektor amp verschiebung double drehung_x double drehung_y double drehung_z s 7 DARA O ak ak ooo ooo GOGO kkk kkk kkk kk kkk kkk Klasse Vektor ist ein Spezialfall einer Matrizenklasse bei dem gilt Spaltenanzahl sp 1 es beste
61. dem Motor Beugung grob DC versucht man anschlie end die Intensit t zu verbessern indem man auf dieser Achse in beide Richtungen f hrt und dabei auf den h chstm glichen Intensit tsausschlag stellt Dabei sollte auf das Ger usch vom Lautsprecher der Z hlerkarte geachtet werden denn die Einstellungen nach Geh r gestalten sich in diesem Stadium der Justage einfacher als die Einstellung nach den Z hlerwerten im Z hlerfenster Damit ist die grobe Voreinstellung abgeschlossen die f r die Automati sche Justage ben tigt wird Hier sind noch einmal die Schritte in Kurzform zusammengefa t 1 Antrieb Tilt an Position 0 fahren 2 Mit Antrieb Azimutale Rotation AR zwei Intensit tspeaks auf die ser Achse suchen 3 Mit Hilfe des Setzens der relativen Null im Dialog Manuelle Justage die mittlere Position zwischen den ermittelten Peaks anfahren 9 3 VOREINSTELLUNGEN F R DIE AUTOMATISCHE JUSTAGE 125 4 Mit Antrieb Beugung grob DC versuchen den Intensit tswert zu maximieren 9 3 2 Einstellungen f r den Detektor F r den Detektor sollten vor dem Start der Automatischen Justage zwei Einstellungen ver ndert werden Diese Einstellungen m ssen aber nicht zwingend durchgef hrt werden denn auf das Ergebnis des Justagevorgan ges hat das keine Auswirkung Beide Einstellungen werden im Dialog Z hlerkonfiguration unter dem Men punkt Einstellungen Detektoren Detektoren
62. der bergebenen Motor Identifikationsnummer mid belegt wird Der Antrieb der so aktivierten Achse kann danach direkt ber diem FunctionName Funktionen an gesprochen werden Parameter int mid Identifikationsnummer des Motors der spezi ellen Achse R ckgabewert TRUE Auswahl war erfolgreich FALSE Auswahl schlug fehl weil die Achse nicht exi stiert Siehe auch mlGetAxis mlGetIdByName mlGetAxis Syntax int WINAPI mlGetAxis void Beschreibung Ermittelt die Identifikationsnummer der derzeit akti vierten Achse Parameter Riickgabewert Die Membervariable nActiveDrive der Klasse TMList die die Identifikationsnummer des Motors der aktiven Achse speichert wird zur ckgeliefert Siehe auch mlSetAxis mlGetIdByName 140 KAPITEL A SCHNITTSTELLENBESCHREIBUNG DER MOTORENANSTEUERUNG mlGetIdByName Syntax int WINAPI mlGetIdByName TAxisType axis Beschreibung Gibt die Motornummer ID des entsprechenden Ach senmotors zur ck Parameter TAxisType azistype zul ssige Parameter sind X Y Z Omega Theta Phi Psi Encoder Monochromator Ab sorber Collimator DF DC Tilt Rotation Die Struk tur TAxisType ist in der Datei comhead h deklariert Riickgabewert gt 0 Identifikationsnummer ID des zur bergebenen Achse geh rigen Motors 1 Fehler d h die bergebene Achse wurde noch nicht initialisiert Siehe auch mlSetAxis mlGetAxis mGetAxisName mlGet Distance Syntax BOOL WINAPI m
63. der Intervallgrenzen Suchbereich innerhalb der Softwareschranken Berechnen des m gt akt Abbruch Angleichen des Wertebereichs an Softwareschranken Wertebereichs MAX Suche auf z Achse oder MAX Suche auf x Achse MAX Suche auf y Achse Koordinatentransformation ber neuen Positionsvektor Drehung um x Achse oder Drehung um z Achse Abbruchbedingung eingetreten Anfahren der Position mit max Intensit t und Ausgabe der relevanten Werte aa Ende N gt der automatischen C Justage Fr Abbildung 6 1 Flu diagramm der automatischen Justage 62 KAPITEL 6 DESIGN Nach der Maximumsuche auf der z Achse und auf der y Achse hat man einen Punkt gefunden der durch einen Vektor im aktuellen Koordinatensy stem beschrieben werden kann Dieser Vektor im folgenden als Positions vektor bezeichnet bildet die Grundlage f r die Transformation des Koordi natensystems Je nachdem welche Ebene betrachtet wurde wird das Koor dinatensystem um die x Achse bzw um die z Achse gedreht und um den Positionsvektor verschoben Der Punkt der durch den Positionsvektor gege ben ist bildet dann den Ursprung des neuen Koordinatensystems Danach werden die Abbruchbedingungen abgetestet Dazu benutzt man die eingangs genannten Parameter die in einem Dialog vom Nutzer ein gestellt werden Es
64. der Software Im Softwareengineering wird ein Softwareprodukt anhand von Qualit tskri terien bewertet Je nachdem wie gut oder wie schlecht diese Kriterien erf llt werden besteht die M glichkeit der Bewertung der Software Als Orientie rung f r die Qualit tsbewertung des RTK Steuerprogrammes sollen hier die Kriterien wie sie in 16 beschrieben wurden dienen Die Bewertung der Software soll sich auf die Version beziehen die von der Physik zur Verf gung gestellt wurde 2 4 1 Korrektheit Robustheit und Zuverl ssigkeit Korrektheit wird in der Literatur als das Kriterium bezeichnet welches Aus sagen dar ber gibt wie gut die Spezifikation aller Anforderungen an ein Softwareprodukt erf llt wurde Entsprechend ist ein Softwaresystem genau dann korrekt wenn es eine vollst ndige und fehlerfreie programmtechnische Umsetzung der vorliegenden Aufgabenstellung darstellt 22 KAPITEL 2 DAS STEUERPROGRAMM Das zentrale Problem ist da die Frage der Korrektheit im Normalfall nicht entschieden werden kann schon gar nicht wenn es wie bei diesem Softwareprojekt keine Produktdefinition gibt Damit entf llt auch die Pro grammverifikation auf Basis einer formalen Spezifikation Als M glichkeit der Bewertung der Korrektheit kommt also nur noch der Test aller Pro grammzust nde in Frage Da dies schon f r kleinere Projekte u erst schwie rig ist kann man bei gro er Software nie v llige Korrektheit nachweisen Korrektheit is
65. der Topographie ausgew hlt Zus tzlich werden die Anzahl der Mehr 3 2 TOPOGRAPHIEVORGANG 33 fachbelichtungen und der Abstand zwischen den jeweiligen Arbeitspunkten sowie ein Startwert angegeben Entgegen der Information die sich aus der Abb 3 4 unter dem Punkt Belichtungszeit entnehmen l t dauert eine Topographieaufnahme ca 8 bis 12 Stunden Allerdings kommt es darauf an was f r eine Probe benutzt wird wie hoch die Peak Intensit t ist oder welche Belichtungsart verwendet wird Vom Dialog Topographie kann nun der Belichtungsvorgang durch An w hlen des Schalters Regelung starten begonnen werden Dabei beginnt die Me zeit zu z hlen Der Wert Drift gibt an wie weit sich der Ar beitspunkt von der Ausgangsposition entfernt hat Die Zusatz Zeit zeigt die ber die vorgegebene Me zeit verstrichene zus tzliche Zeit an Wird die Mehrfachbelichtung benutzt kann unter Rest Zyklen die Anzahl der noch zu erfolgenden Belichtungen abgelesen werden Des weiteren wird die Detektor Me zeit ausgegeben Nach Ablauf des Topographievorganges ist die Fotoplatte korrekt belich tet und es k nnen Schwarz Wei Vergr erungen von der Aufnahme ange fertigt werden Abb 3 5 Diese Vergr erungen auf denen die Struktur der Me probe abgebildet ist werden dann ausgewertet Abbildung 3 5 In einem Schichtsystem erzeugte Inseln Kapitel 4 Anforderungsdefinition Automatische Justage 4 1 A
66. des aktuell betrachteten Koordinatensy stems gegen ber dem Weltkoordinantensystem verdreht ist Beim Anfahren der realen Positionen mu immer gewartet werden bis beide Motoren ste hen Erst dann k nnen die Intensit tswerte gemessen werden je nachdem wieviele Intensit tsmessungen an einer Position durchgef hrt werden sollen Bei mehreren Messungen an einer Stelle wird der Median der gemessenen Werte gebildet Notwendig wird das weil durch Fehler des Detektors und des Versuchsaufbaus Intensit tsschwankungen auftreten die durch mehrfa che Messungen ausgeglichen werden k nnen Nachdem die Intensit ten an den Intervallgrenzen erfa t wurden wer den sie verglichen und anschlie end gem dem Goldenen Schnitt neu ge 64 KAPITEL 6 DESIGN setzt Nach dem ersten Durchlauf der Schleife wird nur noch ein Me wert pro Durchlauf genommen Das ist in der Besonderheit des Goldenen Schnitts begr ndet da er nur einen neuen Me wert pro Iteration ben tigt Kap 5 3 Zum Schlu wird berpr ft ob das Suchintervall hinreichend klein ist Ist das der Fall ist die eindimensionale Suche auf der aktuellen Achse beendet Ansonsten wird der ganze Proze wie hier dargestellt wiederholt Damit ist ein Gesamt berblick ber die Funktionsweise der Program merweiterung Automatische Justage gegeben Wie letztendlich die Auto matische Justage gem der Objektorientierung entworfen wurde ist in Ab schnitt 6 3 nachzuvollzie
67. die Parameter des Suchbereichs variiert Damit soll festgestellt werden welche Einstel lungen die g nstigsten sind so da sie f r die meisten Voreinstellungen der Proben verwendet werden k nnen Als weiteres Ergebnis dieser Tests erh lt man eine Aussage dar ber wieviele Proben berhaupt korrekt eingestellt wurden Der Abbruchparameter Maximale Intensit tsdifferenz stellt eine algo rithmusspezifische Einstellung dar die aber auch von den zu justierenden Proben abh ngig ist Bei schwierig einzustellenden Proben k nnte es sinn voll sein die Justage nicht abbrechen zu lassen und so m glicherweise doch zu einem guten Ergebnis zu gelangen 8 3 TEST DES DIALOGES OHNE PROBEN 99 Bei der Betrachtung des Abbruchparameters wurde so vorgegangen da w hrend der Tests der Parameter bis auf zwei Ausnahmen immer auf aus gestellt blieb Durch Beobachtung der Justageergebnisse wurde eine Aussa ge dar ber getroffen ob die automatische Justage mit eingeschaltetem Ab bruchkriterium eine optimale Einstellung der Probe vorgenommen h tte Das w rde dann bedeuten da mit Hilfe des Kriteriums die Dauer der Justage verk rzt worden w re Um das Kriterium ausreichend beurteilen zu k nnen wurden die m gli chen Auswirkungen des Parameters f r die w hrend des Tests zur Verf gung gestellten Proben gesammelt F r die Testszenarien des Dialoges wurden keine Proben ben tigt denn bei diesen Tests kam es nicht darauf an den S
68. dieses Problems k me die Einrichtung von Timerfunktionen in Fra ge Das hei t man w rde die Schleifen entfernen und anschlie end nachdem die Motoren an ihre Positionen geschickt wurden in die Nachrichtenschleife zur ckkehren Dort m sste ein Timer nach bestimmten Zeitintervallen ab fragen ob die Motoren alle ihre Positionen erreicht haben Dadurch h tte man erreicht das die Wartezeit nicht in der Schleife der Funktionen abl uft sondern in der Nachrichtenschleife der Applikation Diese Art des Vorgehens w rde aber gravierende nderungen des De signs der Erweiterung Automatische Justage nach sich ziehen denn die Funktionalit t des Justagealgorithmus m te komplett in die Dialogklasse implementiert werden insbesondere die Ansteuerung der Motoren und des Detektors Dies widerspricht aber den Paradigmen Wartbarkeit und Portabi lit t des Softwareengeneerings Erstens w rde die Lesbarkeit des Quelltextes sehr un bersichtlich werden da die Funktionalit t wie zum Beispiel in der Funktion GetIntensityOnPosition komplett ber mehrere Event Handler verteilt implementiert werden m te Zweitens lie e sich die Erweiterung bei einer Umstellung auf ein 32 Bit Betriebssystem nur schwer realisieren da sich dort die Dialogprogrammierung anderer Mittel bedient Die Autoren der Automatischen Justage haben sich deshalb dazu ent schlossen auf einen Abbruch des Justagevorganges mit einem Dialogknopf zu verzichten Dadurch ble
69. eingebaut F r den Algorithmus bedeutet das da nun die Richtungen nicht nur gerade die einzelnen Ebenen hinaufzeigen sondern da jetzt auch die An stiege schr g ber die Ebenen verlaufen Wie das zustande kommt soll der folgende Ansatz f r ein entsprechendes Verfahren zeigen 48 KAPITEL 5 ENTWICKLUNG EINES JUSTAGEALGORITHMUS Als erstes wird entlang einer Achse ein Maximum gesucht Dies kann zum Beispiel mit dem Verfahren des Goldenen Schnitts durchgef hrt werden Da nach wird an der entsprechenden Stelle ein Maximum auf der n chsten Ach se gesucht Man erh lt einen Punkt Der Vektor vom Koordinatenursprung zum jetzt erhaltenen Punkt bildet den Transformationsvektor Dieser ist die Grundlage f r die durchzuf hrende Koordinatensystemtransformation Das hei t das Koordinatensystem wird zuerst gedreht und zwar so da die er ste untersuchte Achse auf dem zuvor erhaltenen Vektor liegt Dann wird das Koordinatensystem in den Punkt verschoben zu dem der Transformati onsvektor zeigt Als n chstes wird das andere Paar Achsen betrachtet mit denen genauso verfahren wird Im folgenden Abschnitt wird das Verfahren f r die Automatische Justage konkret erl utert 5 2 Algorithmus Automatische Justage Um einen Transformationsvektor zu erhalten werden immer zwei Achsen be trachtet Das ist darin begr ndet da auch in der manuellen Justierung der Probe entweder Tilt TL oder der Kollimator CC ver nd
70. eingestellt sein Um zu kontrollieren wie gut die Probe justiert ist kann die Halbwertsbreite im Dialog Ausf hren Manuelle Justage ge messen werden Dazu mu man den Dialog Automatische Justage verlas sen Wenn eine Logdatei angefertigt wurde kann diese mit einem Texteditor betrachtet werden Kapitel 10 Zusammenfassung und weiterf hrende Probleme Die Aufgabe im Rahmen dieser Diplomarbeit bestand darin ein vorhandenes Steuerprogramm um Funktionalit t zu erweitern Die bestehende Software wird zur Steuerung einer physikalischen Me apparatur eingesetzt die der Untersuchung von Halbleiterschichtsystemen mittels R ntgenstrahlung dient Eine Teilaufgabe der Software besteht darin Funktionen f r die Ermitt lung der Topographie eines Halbleiters zur Verf gung zu stellen F r diese Aufgabe waren bisher lediglich Funktionen zur manuellen Probeneinstellung und zur Steuerung des Topographievorganges vorhanden Der Vorgang der Probeneinstellung f r eine R ntgentopographie mu te um eine automatische Justagefunktion erg nzt werden Von der neuen Funk tion Automatische Justage wurde gefordert da eine per manueller Justage grob eingestellte Probe so justiert wird da die Probe nach einer Dauer von maximal 30 Minuten voll ausgeleuchtet ist und eine m glichst geringe Halb wertsbreite bei m glichst hoher Intensit t der reflektierten R ntgenstrahlung aufweist Im Anschlu an eine automatische Justage soll die in d
71. erfa te Raumsegment hat eine Fl che von etwa 8mm x 8mm und eine Tiefe von maximal 20 um Dies entspricht etwa 10 Netzebenen Die Eindringtiefe h ngt vom Einfallswinkel ab Im allgemeinen gilt je steiler dieser ist desto tiefer liegende Netzebenen k nnen untersucht werden 1 2 4 Gekriimmter Kollimator Da es vorkommt da die Me proben nicht immer absolut eben sind wur de die M glichkeit der Kr mmung des Kollimators eingef hrt Wird die Kr mmung des Kollimators nicht an die Probenkr mmung angepa t dann tritt das Ph nomen auf da die Bragg Bedingung nur in einem schmalen Bereich erf llt ist Abb 1 5a Um die Bragg Bedingung global ber der Probe zu erf llen mu der Kollimator entsprechend dem Kr mmungsradius der Me probe verformt sein Abb 1 5b Kollimator Fotoplatte a R ntgenlichtquelle Kollimator Fotoplatte b R ntgenlichtquelle Abbildung 1 5 a normaler und b gekr mmter Kollimator 1 3 DER VERSUCHSAUFBAU Es kann aber auch vorkommen da die Me probe zu stark bzw unre gelm ig gekr mmt ist Wenn dieser Fall eintritt ist es nicht mehr m glich nur mit Kr mmung des Kollimators diese Unebenheiten auszugleichen Dar um wird in diesem Fall die Probe bei maximaler Kollimatorkriimmung mehr mals belichtet wobei in jedem Schritt die Probe ein St ck gedreht wird 1 3 Der Versuchsaufbau Der Topographie Me platz hat folgenden Aufbau Er besteht aus einer R nt genqu
72. gest rt ist 7 372f Halbwertsbreite 4 Aarcsec Reflektivit t 10 5 0 5 10 Winkel Winkelsekunden Abbildung 1 2 Rockingkurve Aus der Rockingkurve lassen sich wichtige Kenngr en ablesen dazu geh ren der Peak und die Halbwertsbreite Die Halbwertsbreite gibt die Breite der Rockingkurve bei 50 der Maximalintensit t in Winkelsekunden an Je geringer die Halbwertsbreite ist desto besser wurde der Bragg Reflex getroffen Die Rockingkurve stellt die real gemessene Variante der Reflexionskurve dar Das hei t in diesem Fall wird nicht von einem perfekten Kristall und einer perfekt monochro matischen Planwelle ausgegangen KAPITEL 1 EINF HRUNG 1 2 3 Zwei Kristall R ntgentopographie Die Voraussetzung f r Beugungserscheinungen an Kristallgittern ist wie im vorangegangenen Abschnitt erl utert da die Wellenl nge der Strahlung klei ner als der doppelte Abstand der Netzebenen sein mu Um dieser Voraus setzung gerecht zu werden verwendet man R ntgenstrahlung Als Strahlungsquelle benutzt man eine R ntgenr hre In dieser treffen Elektronen auf eine Kupfer Anode Im Ergebnis dieses Prozesses wird Strah lung emittiert welche zum einen aus Bremsstrahlung und zum anderen aus der charakteristischen Strahlung besteht Bei der Bremsstrahlung geben ab gebremste Elektronen R ntgenstrahlung in breitem Spektrum ab so da wei e Strahlung entsteht Bremsstrahlung lt Charakteristis
73. homogene_koordinaten homogene_koordinaten amp amp mat homogene_koordinaten return temp Matrizen Funktionen 3a akakakeakeaeaeak aka af ak ikea af ak fee ara af kkk kkk Erstellen einer Einheitsmatrix mit Rang m TMatrix TMatrix einheitsmatrix unsigned m if arr NULL delete arr ze m sp m arr new double m gt m for unsigned i 0 i lt ze i for unsigned j 0 j lt sp j if i j arr i sp j 1 else arr i sp j 0 return this Berechnung der Inversen einer Matrix sofern sie existiert Verfahren von Gauss Jordan siehe Stoecker 5 402 TMatrix TMatrix invers void double dummy if ze sp ze sp 0 cerr lt lt M Inv Fehler Matrix kann nicht invertiert werden n TMatrix temp Einheitsmatrix tempor r erstellen temp einheitsmatrix ze Berechnung der Inversen for unsigned k 0 k lt ze k dummy arr k sp k for unsigned j 0 j lt sp j arr k sp j arr k sp j dummy temp arr k sp j temp arr k sp j dummy for unsigned i 0 i lt ze i if i k dummy arr ixsp k C 3 MATHEMATISCHE HILFSKLASSEN 221 for unsigned j 0 j lt sp j arrli sp j arrli sp j dummy arr k sp j temp arr ixsp j temp arr i sp j dummy temp arr k sp j Inverse Matrix ist nun in temp return temp Transfor
74. hrtinnen f r ihre Unterst tzung w hrend des Studiums danken Zusammenfassung Die vorliegende Diplomarbeit entstand im Rahmen des Projektseminars Software Sanierung am Lehrstuhl Software Technik des Instituts f r In formatik der Humboldt Universit t zu Berlin Das Projektseminar wurde Sommer 1998 durch Prof Bothe auf eine An frage von Prof K hler vom Institut f r Physik ins Leben gerufen Das Hauptanliegen des Seminars besteht darin die Kenntnisse die in der Lehr veranstaltung Einf hrung in das Software Engineering vermittelt wurden praktisch auf ein reales Softwareprojekt anzuwenden Ein Steuerprogramm f r eine physikalische Apparatur zur Untersuchung von Halbleiterkristallen bildet den Gegenstand des Projekts W hrend des Seminars wurden mehrere Aufgabengebiete abgesteckt und an Gruppen von ein bis vier Studenten verteilt Die Aufgaben bestehen zum einen aus der Analyse der vorhandenen Quelltexte und der Dokumentation der Software und zum anderen aus der Lokalisierung und Beseitigung von Programmfeh lern sowie der Implementation neuer Programmfunktionen Das Hauptaugenmerk dieser Diplomarbeit liegt auf der Kombination von Verfahren des Reverse Engineering und des Forward Engineering Erkennt nisse die aus dem Reverse Engineering Proze gewonnen wurden sind dazu verwendet worden eine automatische Justagefunktion f r die R ntgentopo graphie in das bestehende Programm zu integrieren Dazu werden die physikal
75. hwnd TimerIdInformation AskTime NULL return bLongMove FALSE sprintf buf mGetDF dDistance SetDlgItemText hwnd id_NewAngle LPSTR buf SetDlgItemText hwnd id_Angle LPSTR buf SetScrollPos BarHandle SB_CTL GetBarPos TRUE bMoveActive FALSE SetFocus BarHandle SetCursor LoadCursor NULL IDC_ARROW 90 KAPITEL 7 PROBLEME DER IMPLEMENTATION else if bLongMove sprintf buf mGetDF mGetDistanceProcess SetDlgItemText hwnd id_Angle buf SetCursor LoadCursor NULL IDC_WAIT SetTimer hwnd TimerIdInformation AskTime NULL J In diesem Fall werden zwei Zust nde getestet und entsprechend reagiert Entweder der aktuelle Motor steht still oder er ist in Bewegung Steht er still wird die aktuelle Position ausgelesen Funktioniert dies nicht wird der Cur sor in Form einer Sanduhr dargestellt und die Timerbearbeitungsfunktion beendet Wurde die Position korrekt ausgelesen so erfolgt eine Aktualisie rung der Anzeige Winkel und Neuer Winkel mit der aktuellen Position Zus tzlich findet ein Neuzeichnen des horizontalen Schiebereglers statt und der Cursor erh lt eine neue Gestalt in Form eines Zeigers Im Fall da der Motor in Bewegung ist wird die Positon ausgelesen und in der Anzeige Winkel aktualisiert Der Cursor bekommt in diesem Fall die Form einer Sanduhr Um zu zeigen wie der Timer im Dialog Manuelle Justage funktioniert so
76. letzten KS 2f 2f 2f n x2 y2 z2 strcat buf buf1 ins Logfile schreiben if bWriteLogfile WriteToJustageLog buf FORWARD_WM_COMMAND GetHandle cm_choose_axis 0 0 PostMessage break 198 KAPITEL KOMMENTIERTE QUELLTEXTE case cm_post_processing Statusfenster auslesen GetDlgItemText GetHandle ID_Status status nMaxString Ende der Justage und Test ob eine Verbesserung gegen ber dem vor der Justage eingestellten Wert erreicht wurde aktueller Intensit tswert lt absolutes Maximum Toleranz 1 Prozent kleine Messungenauigkeiten ausb geln if ActIntensity Intensity 0 01 MaxIntensity Intensity lt MaxIntensity Intensity falls ja Zur ckfahren der Antriebe an Position mit max Intensity mlSetAxis nMotorTL mMoveToDistance MaxIntensity TL while mIsMoveFinish mlSetAxis nMotorDF mMoveToDistance MaxIntensity DF while mIsMoveFinish mlSetAxis nMotorCC mMoveToDistance MaxIntensity CC while mIsMoveFinish Infos ins Statusfenster sprintf buf r nR ckkehr zur Maximumposition r nReale Positionen r nTL 2f DF 2 CC 2f r nIntensit t 0f r n MaxIntensity TL MaxIntensity DF MaxIntensity CC MaxIntensity Intensity strcat status buf ins Logfile schreiben if bWriteLogfile WriteToJustageLog buf Test auf Intensit ts berschreitung des Detektors if Transform gt bIntensityTooHigh falls k
77. r die Gr e des kleinsten Intervalls bei der Optimie rung mit dem Verfahren des Goldenen Schnitts minimal 0 1 und maximal 1 e Anzahl der Durchl ufe ein Durchlauf ist ein Iterationsschritt des Jus tagealgoritmus minimal 1 und maximal 7 e Anzahl der Messungen pro R ntgenintensit tsbestimmung minimal 1 und maximal 5 e Maximale Intensit tsdifferenz ist der aktuell gemessene Intensit ts wert um mehr als diese Differenz schlechter als der im Durchlauf zuvor erreichte Wert bricht der Algorithmus ab minimal 0 und maximal 9999 Aus den Wertebereichen der Parameter sind folgende f r die Einstellung der Probe sinnvolle Testwerte ausgew hlt worden e Toleranz 0 1 0 5 1 0 e Durchl ufe 3 5 7 erst ab 3 sinnvoll siehe Erl uterungen im Text e Anzahl der Intensit tsmessungen 1 2 3 5 e Maximale Intensit tsdifferenz aus es wurde beobachtet ob ein Ab bruch n tig gewesen w re f r den Fall da die Intensit t stark abf llt Eine Probe die schon sehr gut automatisch justiert werden konnte 104 KAPITEL 8 TEST Es ist beispielsweise nicht sinnvoll den Algorithmus mit weniger als 3 Durchl ufen auszuf hren F r einen bzw zwei Durchl ufe m te sich die Probe in einer sehr nahen Umgebung des Maximums befinden Davon kann aber im normalen Anwendungsfall nicht ausgegangen werden Die unterschiedlichen Anzahlen der Messungen zur Bestimmung der In tensit t spiegeln verschiedene Szenarien
78. r statische und dynamische Verst rkung anders gew hlt wKP wKD Au erdem l t sich ber wKI die Integralverst rkung und durch wKL das Inte grallimit festlegen Der Benutzer hat die M glichkeit einen CheckScan durchzuf hren bei dem das Anfahrverhalten des Motors berpr ft wird Dazu ruft das Programm die Interface funktion mStartMoveScan auf mlIPositionControlDlg Syntax void WINAPI mlPositionControlDlg void Beschreibung Startet den Dialog zur Positionsansteuerung f r die ge samten Antriebe In diesem Dialog kann der Antrieb in Encoderschritten angesteuert werden Der Dialog wird im Steuerprogramm ber das Hauptmen Einstellun gen Antriebe Direkte Steuerung aufgerufen Parameter mlSet ParametersDlg Syntax void WINAPI mlSetParametersDlg void Beschreibung Startet den Motor Parameter Dialog Dieser dient der Einstellung der Softwareschranken und der Schrittweite der einzelnen Antriebe Die Parameter k nnen jeweils in Encoder oder Winkeleinheiten ver ndert werden Der Dialog wird im Steuerprogramm ber das Haupt Ein Encoderschritt ist die kleinste Einheit mit der die Motorsteuerkarten die Schritt motoren steuern k nnen Die Umrechnung von Winkelangaben in diese Einheit wird vom Steuerprogramm in der Motor Klassenfunktion TMotor Translate realisiert 150 KAPITEL A SCHNITTSTELLENBESCHREIBUNG DER MOTORENANSTEUERUNG men Einstellungen Antriebe Parameter a
79. ssi gen Positionsbereiche in Encoderschritten darstellen ausgewertet dAngleBias wird auf 0 0 gesetzt Parameter R ckgabewert Siehe auch mlSetAngleDefault mSetRelativeZero Syntax void WINAPI mSetRelativeZero BOOL status double offset Beschreibung Setzt das Offset f r die Relative Null des aktuellen Antriebs Der double Wert des Offsets wird in der Motor Membervariablen dAngleBias abgelegt Damit wird festgelegt ob bei Positionsangaben im Winkel mag fiir den aktuellen Antrieb mit relativen oder abso luten Angaben gearbeitet wird Parameter BOOL status gibt an ob die Relative Null gesetzt werden soll status TRUE oder ob sie wieder aufgehoben werden soll status FALSE double offset der Wert des Offsets Winkelstellung des Antriebs an dem die Relative Null gesetzt wird der von den absoluten Motorpositionen abgezogen wird R ckgabewert Siehe auch mIsDistanceRelative mlGetOffset A 2 INTERFACE DER MOTOR FUNKTIONEN 163 mExecuteCmd Syntax Beschreibung Parameter R ckgabewert Siehe auch int WINAPI mExecuteCmd LPSTR command Sendet die Zeichenkette mit dem Motorkommando di rekt an die zum aktuellen Antrieb geh rige Motorkarte Es ist es aber nur vorgesehen Motoren der Steuerkarten vom Typ C 812 anzusteuern Wenn die Motorsteuerkar te betriebsbereit ist und es sich um ein g ltiges Kom mando handelt wird dieses ausgef hrt ansonsten wi
80. tempx rotationsmatrix_x drehung_x tempy rotationsmatrix_y drehung_y tempz rotationsmatrix_z drehung_z Verschiebung um Vektor this gt verschiebematrix verschiebung if reihenfolge REIHENFOLGE_ZYX aufgrund der Def d Matrixmultiplikation Beginn der Mult von rechts muss die Reihenfolge der Multiplikation umgekehrt notiert werden mathematisch gilt folgendes R_rueck Rx Ry Rz T this this tempz tempy tempx C 3 MATHEMATISCHE HILFSKLASSEN 223 else aufgrund der Def d Matrixmultiplikation Beginn der Mult von rechts muss die Reihenfolge der Multiplikation umgekehrt notiert werden mathematisch gilt folgendes R_hin T Rz Ry Rx this tempx tempy tempz this homogene_koordinaten true return this 7 PRR ak ak ae ae aa a ae ae ae a a ak ae ae a a ae ae ak ae 3k ae ak a 2k ak K a ee ae 2k a 2k ae ae a ae ae a a ae ea a a 3K ae a 3k a a ak a ak 3k ak ak K 2k 21 K 2K kk 2k a 2k K K Vektor Klasse 7 DROBO aooo ooo oo ooo rk Funktion um aus einer m 1 Matrix einen Vektortyp zu machen TVektor TVektor const TMatrix amp mat if mat ze mat sp 0 cerr lt lt V Fehler Matrixspalten oder Zeilenanzahl betr gt 0 n else if mat sp 1 cerr lt lt V Fehler Matrixspaltenanzahl 1 Keine Umwandlung in Vektor n else ze mat ze sp 1 homogene_koordinaten mat homogene_koordinaten arr new doublelze for unsign
81. tigt wird gel scht werden Die restlichen Parameter haben in die sem Fall keine Funktion A 2 INTERFACE DER MOTOR FUNKTIONEN 167 R ckgabewert Siehe auch mStartMoveScan mGetMoveScan mGetMoveFinishIdx mGetMoveScan Syntax LPLONG WINAPI mGetMoveScan void Beschreibung Diese Funktion tibergibt die Daten die beim Scan von mStartMoveScan zum Optimieren der Dialoge erfa t wurden Dabei handelt es sich um ein Feld von Posi tionsdaten die in einem Fenster visualisiert werden Parameter R ckgabewert Pointer auf ein Datenfeld mit LONG Elementen die die ermittelten Positionsdaten des Checkscans enthalten Siehe auch mStartMoveScan mGetScanSize mGetScanSize Syntax int WINAPI mGetScanSize void Beschreibung Gibt die Gr e des Datenfeldes an in dem die Me wer te des Scans stehen der in mStartMoveScan gestartet wurde Parameter R ckgabewert Die Gr e des Scans ist vom Steuerprogramm festgelegt Siehe auch auf nScanSize 150 Werte mStartMoveScan mGetMoveScan 168 KAPITEL A SCHNITTSTELLENBESCHREIBUNG DER MOTORENANSTEUERUNG mGet MoveFinishIdx Syntax int WINAPI mGetMoveFinishIdx void Beschreibung Der Wert MoveFinishIdx wird in mSavePosition ermit telt Er gibt an bei welchem Me wert im Datenfeld des Scans der betrachtete Motor seine Bewegung beendet hatte War der Motor nach Beenden des Scans noch in Bewegung so erh lt MoveFinishIdx den Wert 0 Parameter
82. werte f r die R ntgenintensit t vom Z hler auszulesen Auch in die Initialisierung im Klassenkonstruktor wurden Motorsteuerungsfunktionen integriert um die aktuellen Motorpositionen der Antriebe zu ermitteln und zu speichern 7 3 1 Hinweise zur Detektoransteuerung Die konkrete Realisierung der Detektoransteuerung stellte ein Problem dar da die von der C Schnittstelle c_layer h zur Verf gung gestellten Funktio nen nicht die erwartete Funktionalit t besitzen So bietet die C Schnittstelle 7 3 IMPLEMENTATION DER FUNKTIONALIT T 95 zur Steuerung der Detektorger te keine Funktion an die zum Ermitteln der Intensit t der R ntgenstrahlung am 0 dimensionalen Detektor dienen k nnte Der Zugriff auf diese Gr e kann nur ber Klassenmethoden der TDevice Klasse und der von ihr abgeleiteten Klassen erfolgen Da in der Member variablen fIntensity nicht die aktuelle Strahlungsintensit t gespeichert ist mu zur Ermittlung der aktuellen Gr e explizit eine Messung gestartet der Abrufvorgang engl Polling der Detektorkarte ausgel st und der Wert der Variablen mit einer speziellen Methode ausgelesen werden Eine vollst ndige Detektorabfrage ist mit dem anschlie enden Programmcode realisierbar TDevice Detektor float fXRaylntensity Messung starten Detektor gt MeasureStart Detektorkarte auslesen while Detektor gt PollDevice R_MeasOk Roentgen Intensitaet ermitteln while Detektor gt GetData fXRa
83. wider Wird nur eine Messung durch gef hrt findet keine Korrektur eventueller Me wertschwankungen statt Im Fall von zwei Messungen wird der Mittelwert der gemessenen Intensit ten be stimmt Diese Methode eleminiert kleine Ausrei er und kann somit auch nicht als optimale Variante angesehen werden Wenn mehr als drei Me wer te an einer Stelle genommen werden ermittelt das Programm den Median und kann dadurch Ausrei er sehr gut ausschlie en Eine Ermittlung der R ntgenintensit t mit der Maximalanzahl von f nf Messungen dient der Be urteilung des Einflusses des Parameters auf die Justagedauer Um die probenunabh ngigen Parameter zu testen wurde der Suchbereich fest gelassen Die Intensit tsdifferenz blieb wie zuvor beschrieben auch ausgeschaltet Folgende Tabelle soll einen berblick ber die ausgesuchten Testf lle geben Es wurde darauf geachtet da die erzeugten Testf lle eine sinnvolle Kombination bez glich der Variation der Werte ergeben Testfall Nr 1 2 3 4 5 6 7 8 9 10 Toleranz 1 1 1 1 0 1 0 1 0 1 0 5 0 5 0 5 Durchlaufe 3 5 7 7 7 5 3 5 5 Anzahl der Messg 3 2 1 5 13 3 38 13 2 1 Die Testf lle sind jeweils in einer Tabelle zusammengefa t Im oberen Teil sind die Parameter zu finden die im Dialogfenster ver ndert werden k nnen Um besser zu erkennen welche Werte zum vorherigen Testlauf ver ndert wurden sind die entsprechenden Paramete
84. zu kapseln Eine sp tere Wartung der Software l t sich dadurch wesentlich vereinfachen Im Fall der Funktion Automatische Justage sind getrennte Quelldateien f r die Klassen zur Matrizenberechnung die Transformationsklasse und die Dialogklasse zur automatischen Justage eingerichtet worden Die Tabelle 7 1 zeigt die zum RTK Projekt hinzugef gten Programmdateien und die jeweils enthaltene Funktionalit t Die Anbindung f r den Aufruf der neuen Programmkomponente mu wei terhin in den existierenden Programmcode integriert werden Der Men punkt der Automatischen Justage wurde in die Datei m main cpp eingef gt Die konkrete Umsetzung wird im Abschnitt 7 2 erl utert 78 KAPITEL 7 PROBLEME DER IMPLEMENTATION Quelltextdatei Inhalt matrix h cpp mathematische Basisklassen TMatrix TVektor TMatrizenListe transfrm h cpp Aufz hlungstypen TDrehachse TLaufachse Justageklasse TranformationClass m_justage h cpp Strukturen TMotorPositionsWerte TIntensityPosition globale Funktion WriteToJustageLog Dialogklassse TAutomaticAngleControl Tabelle 7 1 berblick ber die Implementationsdateien der neuen Pro grammfunktion Automatische Justage Zur Erweiterung der Steuerungssoftware m ssen die neuen Quelltextda teien in der Borland Entwicklungsumgebung in das bestehende Projekt auf genommen werden Ansonsten werden die neuen Quelltexte bei der Kompi lierung des Projekts nich
85. zugeordneten Motorachse Fol gende Werte sind m glich X Y Z Omega Theta Phi Psi Encoder Absorber Tilt Collimator Rotation Mo nochromator DC DF Siehe auch mGetAxisName mlGetIdByName mlIsAxisValid mlIsA xis Valid Syntax BOOL WINAPI mlIsAxisValid TAxisType axis Beschreibung Ermittelt ob die bestimmte Achse initialisiert wurde d h ein der Motorachse zugeordneter Motor wurde im System gefunden und entsprechend den Eintr gen in der Konfigurationsdatei eingerichtet 144 KAPITEL A SCHNITTSTELLENBESCHREIBUNG DER MOTORENANSTEUERUNG Parameter TAxisType axis Typ der geforderten Achse Die Enu meration TAxisType ist in comhead h deklariert Fol gende Werte sind m glich X Y Z Omega Theta Phi Psi Encoder Absorber Tilt Collimator Rotation Mo nochromator DC DF Riickgabewert TRUE Die angegebene Motorachse ist bereits erfolg reich initialisiert worden FALSE In der Konfigurationsdatei existiert kein Ein trag fiir den geforderten Antrieb oder der Motorachsen typ wurde falsch iibergegeben Siehe auch mlIsServerOK Syntax BOOL WINAPI mlIsServerO0K void Beschreibung Stellt fest ob die motors d11 erfolgreich geladen und die Antriebe richtig konfiguriert wurden Dazu wird der Wert der statischen Variablen bModulLoaded zur ckge liefert der bei erfolgreicher Ausf hrung der Funktion mlInitializeMotorsDLL gesetzt wird Parameter R ckgabewert TRUE Die Bibliothek
86. 0 120 3 83 5 Kriterien Intensitat 5100 10500 HWB 10 97 8 52 Dauer der Justage 13 01 min Testfall 2 Kollimatorprobe Suchbereich Startwerte Endwerte Ausleuchtung DF 20 50 6 53 17 TL 20 6 2 13 98 CC 100 120 3 46 39 Kriterien Intensitat 5200 15300 HWB 10 85 8 15 Dauer der Justage 16 36 min Testfall 3 Kollimatorprobe Suchbereich Startwerte Endwerte Ausleuchtung DF 50 50 88 52 3 TL 20 17 5 17 5 CC 50 29 3 20 8 Kriterien Intensitat 28000 234000 HWB 7 8 6 78 Dauer der Justage 15 12 min 182 KAPITEL B TESTF LLE MIT PROBENABH NGIGEN PARAMETERN Testfall 4 Kollimatorprobe Suchbereich Startwerte Endwerte Ausleuchtung DF 50 54 3 53 4 TL 20 12 19 1 CC 100 29 3 35 47 fom Kriterien TUL Intensitat 20000 31500 HWB 8 0 7 24 Dauer der Justage 16 50 min Testfall 5 Kollimatorprobe Suchbereich Startwerte Endwerte Ausleuchtung DF 50 54 3 52 13 TL 20 12 15 3 CC 150 29 3 20 3 Kriterien Intensitat 22000 30000 HWB 8 1 7 5 Dauer der Justage 15 31 min Testfall 6 Kollimatorprobe Suchbereich Startwerte Endwerte Ausleuchtung DF 50 57 2 54 5 TL 20 12 18 7 CC 200 29 3 35 51 Kriterien Intensit t 21500 33000 P HWB 8 05 6 92 Dauer der Justage 16 05 min Testfall 7 Kol
87. 08 5 Suchbereich Startwerte Endwerte Ausleuchtung DF 50 27 8 33 67 TL 20 11 3 94 CC 100 90 72 63 Kriterien Intensitat 233000 242000 HWB 12 5 9 8 Dauer der Justage 17 57 min Testfall 5 PF916324 08 5 Suchbereich Startwerte Endwerte Ausleuchtung DF 50 28 17 32 08 TL 20 11 3 5 CC 150 90 81 5 Kriterien gt Intensit t 233000 241000 HWB 12 5 9 9 Dauer der Justage 14 36 min 180 KAPITEL B TESTF LLE MIT PROBENABH NGIGEN PARAMETERN Testfall 6 PF916324 08 5 Suchbereich Startwerte Endwerte Ausleuchtung DF 50 28 17 33 1 TL 20 11 4 2 CC 200 90 75 3 Kriterien Intensit t x33000 242000 HWB 12 5 9 8 Dauer der Justage 14 36 min Testfall 7 PF916324 08 5 Suchbereich Startwerte Endwerte Ausleuchtung DF 50 28 17 34 02 TL 50 11 6 2 CC 50 90 83 3 Kriterien Intensitat 233000 241000 HWB 12 5 10 24 Dauer der Justage 16 16 min Testfall 8 PF916324 08 5 Suchbereich Startwerte Endwerte Ausleuchtung DF 50 27 47 32 75 TL 50 11 2 93 CC 150 90 86 3 Kriterien Intensit t 33000 40500 HWB 12 5 10 35 Dauer der Justage 15 09 min B 6 TESTREIHE MIT KOLLIMATORPROBE 181 B 6 Testreihe mit Kollimatorprobe Testfall 1 Kollimatorprobe Suchbereich Startwerte Endwerte Ausleuchtung DF 20 50 6 51 39 TL 20 6 2 13 5 CC 5
88. 6 KAPITEL KOMMENTIERTE QUELLTEXTE maximale Gr se fuer das Status Textfeld unsigned nMaxString Tempor re Puffer zur Stringzusammensetzung char buf buf1 Laufvariablen int durchlauf step stepi count Anzahl der Zeilen im Status Textfeld DWORD dwStatusZeilen Zahl der durchzuf hrenden Messungen pro Position unsigned nMeasureCount Positionsvariablen Intensit tsvariablen double fPosition intervall_li intervall_re x y z x2 y2 z2 double MaxTL MaxDF MaxCC float fIntenseDifferenz Variablen zur Ausgabe der Justagedauer struct date datum struct time zeit int justageanfang justageende justagezeit Variablen zur Speicherung der Wertebereiche amp Intensit tspositionen TMotorPositionsWerte Wertebereich aktWertebereich TIntensityPosition MaxIntensity LastIntensity ActIntensity endif C 1 DIALOGKLASSE TAUTOMATICANGLECONTROL 187 C 1 2 m_justag cpp include lt stdio h gt Dialog Ressourcen Help IDs include rc_def h include help_def h Strukturen Aufz hlungen IDs des RTK Programms include comhead h include m_devcom h pragma hdrstop Interface zur Motorsteuerung include m_layer h Interface zur Detektorsteuerung sehr spartanisch include c_layer h Dialog automatische Justage include m_justag h Globale Definition der Motorachsen gt Zugriff durch alle Justage amp Tranformationsobjekte m glich i
89. 7 Grobjustierung x Bienden f r die Regulierung der R Atgenstrahiung A j Pa j A Halterung f r Fotoplatte gt u _ Abbildung 1 9 Nahaufnahme des Probenhalters Kapitel 2 Das Steuerprogramm 2 1 Aufgabe der Software Die Steuerung bzw Nutzung der Versuchsapparatur funktioniert nur mit Hilfe eines Computers und einer Steuersoftware Hierzu steht eine Applika tion die unter dem Betriebssystem Windows 3 1 l uft zur Verf gung Die Software wurde von einem ehemaligen Mitarbeiter des Instituts f r Physik entwickelt und ist Gegenstand der Softwaresanierung Im Folgenden soll der Name RTK Steuerprogramm als Bezeichnung der Steuersoftware verwen det werden Das Steuerprogramm wird f r die Durchf hrung der Topographie der Reflektometrie und der Diffraktometrie ben tigt Diese drei Hauptaufgaben schlie en wiederum eine Anzahl von Basisaufgaben ein darunter eine der wichtigsten Aufgaben des RTK Programmes die Ansteuerung der Motoren und Detektoren Dazu geh rt die M glichkeit Einstellungen f r diese Ger te ber das Steuerprogramm t tigen zu k nnen Eine weitere wichtige Aufgabe ist die Darstellung der Me werte der Diffraktometrie und der Reflektometrie Um die Topographie ausf hren zu k nnen mu zuvor die Me probe ju stiert werden Die Qualit t der Justage der Me probe l t sich durch die Ermittlung der Halbwertsbreite bestimmen Auch diese Aufgaben werden mit Hilfe des Steuerprogramme
90. Achsen Dieser Abschnitt unterzieht die Maximumsuche auf einer Achse wie in Abb 6 1 aufgef hrt einer genaueren Betrachtung Ausgangspunkt ist da auf einer bestimmten Achse mittels des Goldenen Schnitts ein Maximum bestimmt werden mu An dieser Stelle soll noch einmal verdeutlicht wer den da die Suche auf einer Achse mit imagin ren Koordinaten durchgef hrt wird Allerdings sind diese Koordinaten in reale Positionen die den Koordi naten des Weltkoordinatensystems entsprechen umzurechnen 6 1 ABLAUF DER AUTOMATISCHEN JUSTAGE 63 Ermitteln der Intervallgrenzen der ausgew hlten Achse in Weltkoordinaten Anfahren der realen Positionen mit den Motoren l Messen der Intensit t an realen Positionen Start der Max Suche auf gegebener Achse Vergleich der Werte und Bildung neuer Intervallgrenzen gem Goldenem Schnitt ENDE der Max Suche Intervall hinreichend klein nein Abbildung 6 2 Flu diagramm der Maximumsuche auf einer Achse Eingangs mu die Achse angegeben werden f r die die eindimensionale Optimierung durchgef hrt werden soll Dann werden die Intervallgrenzen f r diese Achse in reale Positionen umgerechnet und anschlie end von den Moto ren angefahren Nach der ersten Koordinatensystemtransformation werden zwei Motoren f r die Betrachtung auf einer Koordinatensystemachse benutzt Das resultiert daraus da die Achse
91. B Move Absolute MA Eine vorangestellte Ziffer bezeichnet den entsprechenden Antrieb f r den der Befehl ausgef hrt wer den soll Der nachfolgende Wert steht f r eine spezifizierte Kenngr sse wie Geschwindigkeit anzufahrende Position oder Beschleunigung Abschlie end wird an das Ende des Befehls ein Return in Form des ASCII Wertes 13 an gef gt Der vollst ndige Befehl f r bewege Motor 3 zur Position 55000 w rde folgende Form haben 3MA55000 lt Return gt Bei der dritten M glichkeit der Kommunikation der IEEE 488 Schnitt stelle wird vom Hersteller eine 16 Bit DLL win488 d11 zur Verf gung gestellt Sie bietet eine strukturierte Schnittstelle zur Ansteuerung der C 812 Motorensteuerkarte Man kann diese Bibliothek auch als 16 Bit Treiber bezeichnen Diese Art der Kommunikation ist ebenfalls im RTK Steuerpro gramm benutzt worden Die Auswahl der jeweiligen Kommunikation wird in der Initialisierungdatei festgelegt Unter dem Eintrag MotorX mu beim Parameter Type als Wert C 812GIPB eingetragen werden um den 16 Bit Treiber zu benutzen Analog ist f r die Kommunikation ber den PC Bus der Wert C 812ISA anzugeben Die Controllerkarte C 832 bietet nur eine M glichkeit zur Kommunikati on Mittels Port Befehlen wird auf einen I O Adressbereich zugegriffen Um Kommandos zur Karte zu senden oder von ihr zu lesen sind folgende zwei Ein Handshake ist die Einleitung einer Daten oder Signal bertragung die
92. Bestes Beispiel daf r ist die Testreihe mit der Kollimatorprobe F r den Suchbereich von Tilt bleibt festzuhalten da dort der Wert nicht ber 20 Winkelsekunden gehen sollte Der Suchbereich f r eine Justage sollte also in den folgenden Werteberei chen liegen e DF 20 50 Winkelsekunden e IL ca 20 Winkelminuten e CC 100 200um Bei der Betrachtung der Max Intensit tsdifferenz liegt der Schlu na he da diese Einstellung mit Vorsicht zu benutzen ist In einigen F llen wurde trotz eines Abfalls der Intensit tswerte anschlie end noch ein Inten sit tsmaximum gefunden Urspr nglich war diese Einstellung daf r gedacht als Abbruchkriterium in den Algorithmus einzugreifen Die Tests haben aber gezeigt da eine Aktivierung dieser Option negative Folgen haben kann In den F llen in denen ein starker Intensit tsabfall w hrend des Suchvor ganges auftrat und die Werte auf einem niedrigen Intensit tsniveau blieben h tte die Aktivierung der Max Intensit tsdifferenz als Abbruchkriteri um Sinn gemacht und damit f r eine Verk rzung der Justagedauer gesorgt Allerdings k nnen solche F lle nicht vorhergesagt werden 8 5 Zusammenfassung des Tests Beim Test der Automatischen Justage wurden zwei wichtige Punkte gete stet Zum einen war dies der Test der Benutzerschnittstelle der Softwareer weiterung und zum anderen der Test der Funktionalit t der Softwareerwei terung die automatisierte Justage ein
93. CHEN JUSTAGE 71 6 3 2 Klassendiagramm der Transformationsklasse Die Klasse TransformationClass ist fiir die Ausfiihrung der eigentlichen Justage zust ndig Eine Instanz dieser Klasse f hrt den Such Algorithmus nach dem Intensit tsmaximum aus Aufgaben wie die Maximumsuche auf einer Achse und die Durchf hrung der Koordinatensystemtransformationen werden von einem Objekt dieser Klasse gesteuert Implementationsklasse TransformationClass PosVektor TVektor trafo_hin TMatrizenListe trafo_rueck TMatrizenListe anzahl_koordinatentrafos unsigned int Wertebereich TMotorPositionsWerte toleranz float TransformationClass TransformationClass Initialize in MaxDF double in MaxTL double in MaxCC double bool translate_to_worldpoints in OrigVektor TVektor TVektor translate_from_worldpoints in OrigVektor TVektor TVektor translate_PosBorders TMotorPositionsWerte GetIntensityOnPosition in nMeasureCount unsigned int float Goldener_Schnitt in achse TLaufachse inout intervall_li double inout intervall_re double in nMeasureCount unsigned int int GetOrigPosBorders TMotorPositionsWerte KoordinatenTransformation in achse TDrehachse in vVerschiebung TVektor bool get_koordinatentrafos unsigned int Measurelntensity in nMeasureCount unsigned int float DFCorrection in nMeasureCount unsigned int inout fDFPos double inout flntensity float
94. DIPLOMARBEIT zur Erlangung des akademischen Titels Diplom Informatiker Vom Reverse Engineering zur Programmerweiterung Automatische Justage f r ein R ntgentopographie Steuerprogramm von Sebastian Freund Derrick Hepp April 2001 1 Gutachter Prof Dr Klaus Bothe 2 Gutachter Prof Dr Rolf K hler INSTITUT F R INFORMATIK MATH NATURWISS FAKULTAT II LEHRSTUHL FUR SOFTWARETECHNIK RUDOWER CHAUSSEE 25 HUMBOLDT UNIVERSITAT ZU BERLIN Selbst ndigkeitserkl rung Hiermit versichern wir da wir die vorliegende Diplomarbeit selbst ndig und nur unter Zurhilfenahme der angegebenen Quellen erstellt haben Berlin 23 April 2001 Derrick Hepp Sebastian Freund Einverst ndniserkl rung Hiermit erkl ren wir unser Einverst ndnis mit der ffentlichen Aufstellung unserer Diplomarbeit in der Bibliothek des Instituts f r Informatik Berlin 23 April 2001 Derrick Hepp Sebastian Freund Danksagungen Unser besonderer Dank gilt Herrn Prof Bothe und Herrn Prof K hler sowie Frau Richter und Herrn Sacklowski die f r alle fachlichen Fragen immer ein offenes Ohr hatten und uns beratend zur Seite standen Au erdem m chten wir Gerda Hepp und Dr Friedrich Karl Hecht f r die sehr gr ndlichen Korrekturen in die sie viel Zeit investiert haben dan ken Durch sie konnten viele sprachliche Schnitzer und grammatikalische Verrenkungen vermieden werden Des weiteren m chten wir unseren Eltern und unseren Lebensgef
95. Dazu wird im Dialog Manuelle Justage der Antrieb Tilt im Pulldown Men Aktueller Antrieb ausgew hlt und im Direktbe 3 1 MANUELLE JUSTAGE 29 Zahler Konfiguration x Allgemeine Einstellungen Fenster Zeit Begrenzung Sekunden y Anzeigen Impuls Begrenzung CPS _ MeB Fehler festlegen 1 100 v Sound Abbrechen Weitere Einstellungen Abbildung 3 2 Dialogfenster Z hlerkonfiguration trieb an die Position 0 gefahren Als n chstes wird der Freiheitsgrad f r die Beugung mit zwei Stellr dchen Abb 1 9 um 2 bis 3 Grad ver ndert so da ein kurzes lautes Schnarren im Detektor vernehmbar ist Das ist das charak teristische Ger usch wenn der Detektor den Bragg Reflex erfa t Allerdings braucht zu diesem Zeitpunkt das Rauschen nicht permanent vernehmbar zu sein Es reicht aus wenn man das Schnarren kurz wahrnimmt Man befindet sich dann in der n heren Umgebung des Bragg Reflexes Genaueres Positio nieren gelingt per Hand nicht Jetzt kann man nur noch mit den Antrieben des Probentellers arbeiten Im Dialog Manuelle Justage w hlt man nun den Antrieb Azimutale Rotation aus Dieser wird im Fahrbetrieb mit h chster Geschwindigkeit in eine Richtung bewegt wobei nach kurzer Zeit das Z hlen des Detektors schneller werden und bis hin zum Rauschen f hren mu Ist dies nicht der Fall mu die andere Richtung abgesucht werden Wurde ein Peak gefunden wird der zweite Peak bestimmt
96. H chstwahrscheinlich h tte der Kollimator vorher besser positioniert wer den sollen Die Vermutung liegt nah da f r eine optimale Justage der Kollimator eine Verstellung um mehr als 200um ben tigt h tte Leider kam es auch bei dieser Testreihe zu einem Absturz des Program mes Auff llig war auch eine Fehlfunktion des Detektors hervorgerufen durch eine nicht korrekte Erdung des Ger tes Ob nun diese negativen Einfl sse schuld an der schlechten Justage waren kann nicht genau gesagt werden Es kann auch sein da das Problem in der Gr e der Probe lag da die ande ren Proben viel kleiner waren und damit vollst ndig vom Detektor erfa t wurden 8 4 4 Bewertung der Tests mit probenabh ngigen Ein stellungen Zur Auswertung der Tests mit den probenabh ngigen Einstellungen sollen die Ergebnisse zun chst in einer Tabelle zusammengefa t werden Diese Tabelle soll einen berblick geben wie gut sich die gew hlten Suchbereiche in den einzelnen Testreihen geschlagen haben Wichtigstes Kriterium war dabei die Ausleuchtung der Probe Eine mit dem Programm ermittelte gute Halbwertsbreite bedeutete nicht zwangsl ufig eine vollst ndige Ausleuchtung der Probe Au erdem konnte in der ersten Testreihe keine Halbwertsbreite aufgrund der komplizierten Probengeometrie ermittelt werden Deshalb soll die Ausleuchtung als wichtigstes Kriterium gelten Die folgende Tabelle zeigt in wieviel Testreihen der jeweilige Testfall zu einer 100 igen Aus
97. Intervallgrenzen zur Justage TVektor translate_to_worldpoints TVektor OrigVektor Berechnung der Weltkoordinaten eines Punktes im akt KS 1 vektor homogen machen 2 HIN Transformation Multiplikation des homog Vektors mit den Trafo Matrizen von Anfang an 3 Riickgabe des Vektors in kartesischer Form TVektor translate_from_worldpoints TVektor OrigVektor Umrechnung eines Punktes im Welt KS in Koordinaten im akt KS 1 vektor homogen machen 2 RUCK Transformation Multiplikation des homog Vektors mit den Trafo Matrizen vom Ende der Liste bis zum Anfang 3 Riickgabe des Vektors in kartesischer Form TMotorPositionsWerte translate_PosBorders void bersetzung der Intervalle in akt Koordinaten unbedingt mit Vergleich der Softwareschranken d h notwendige R ckrechnung translate_to_worldpoints der akt Schranken in Weltkoordinaten aktSchranke x y z gt weltkoord_aktSchranke x_w y_w z_w x_w Werte mit Wertebereich Min MaxTL bzw Softwareschranke vergl usw C 2 ALGORITHMUS UND KERNFUNKTIONALIT T TRANSFORMATIONCLASS 203 float GetIntensityOnPosition unsigned nMeasureCount f hrt die zu bersetzenden TRAFO Klasse Motorpositionen des PosVektors an und gibt Intensit t zur ck Bestimmung der durch Medianbestimmung ber mehreren Messungen mgl durch bergabe von nMeasureCount muss alle 3 Motorachsen anfahren 1 translate_to_worldpoints
98. K Fehler Vektor bereits in kartes Koord angegeben n return this TVektor temp ze 1 temp Vektor ohne homogene Komponente Kopieren des Ursprungsvektors aktueller Vektor ohne homogene Komponente for i 0 i lt temp ze i temp arr i arr i if arr NULL delete arr Speicherplatz des Vektor Arrays freigeben ze ze 1 arr new doublelze neues Vektor Array erzeugen for i 0 i lt ze i arr i temp arr il homogene_koordinaten false return this Berechnung des Betrags L nge eines Vektors double TVektor vektor_betrag void const double betrag 0 0 unsigned temp_ze if ze 0 cerr lt lt V VB Fehler Kein echter Vektor Zeilen 0 n return 1 0 if this gt ist_homogen temp_ze ze 1 homogene Komponente des Vektors ignorieren else temp_ze ze alle kartesischen Koordinaten betrachten C 3 MATHEMATISCHE HILFSKLASSEN 225 for unsigned i 0 i lt temp_ze i betrag arrlil arr i return sqrt betrag Berechnung des Skalarproduktes zweier Vektoren double TVektor skalarprodukt const TVektor amp vekt double skalar 0 0 unsigned temp_ze if ze 0 vekt ze 0 cerr lt lt V SP Fehler Mindestens ein Vektor mit Dimension 0 n return 1 0 else if ze vekt ze cerr lt lt V SP Fehler Nur Vektoren gleicher Dimension zul ssig n return 1 0
99. L C KOMMENTIERTE QUELLTEXTE arr 0 4 0 cos winkel arr 0 4 2 sin winkel arr 2 4 0 sin winkel arr 2 4 2 cos winkel homogene_koordinaten true return this TMatrix TMatrix rotationsmatrix_z double winkel this gt einheitsmatrix 4 Rotation um die z Achse mit dem Winkel a cos a sin a 0 0 sin a cos a 0 0 0 0 1 0 0 0 0 1 arr 0 4 0 cos winkel arr 0 4 1 sin winkel arr 1 4 0 sin winkel arr 1 4 1 cos winkel homogene_koordinaten true return this Zusammenfassung aller Transformationen X Y Z amp Verschiebung in einer Funktion TMatrix TMatrix transformiere unsigned reihenfolge const TVektor amp verschiebung double drehung_x double drehung_y double drehung_z TMatrix tempx tempy tempz Nur 4dim Vektoren inkl homogener Komponente oder reine 3dim Vektoren if verschiebung ze 4 amp amp verschiebung ist_homogen verschiebung ze 3 amp amp verschiebung ist_homogen cerr lt lt M TRAFO Fehler Verschiebungsvektor nicht 3 dimensional n return this Reihenfolge der Transformationen muss angegeben sein X gt Y gt Z oder Z gt Y gt X if reihenfolge REIHENFOLGE_XYZ amp amp reihenfolge REIHENFOLGE_ZYX cerr lt lt M TRAFO Fehler Keine g ltige Angabe der Trafo Reihenfolge n return this else Drehungen in der 4x4 Trafo Matrix Erkl rung siehe oben bei Einzelrotationen
100. Laufe ihrer Entwicklung In den meisten F llen dient das Wasserfallmodell 16 als Vorschrift f r den Entwicklungs proze der Software Dabei mu es sich nicht nur um eine Neuentwicklung der Software handeln auch bei der Erweiterung von Funktionalit t eines bestehenden Programmes sollte Software nach ingenieursm igen Gesichts punkten erstellt werden Nachdem in den vorangegangenen Kapiteln die ersten drei Phasen der Entwicklung Analyse amp Definition Design und Implementation doku mentiert wurden folgt in diesem Kapitel eine oft vernachl ssigte Phase des Entwicklungsprozesses der Softwaretest 8 1 Testziele Zur berpr fung der Funktionsweise der Programmerweiterung Automa tische Justage mu te ein umfangreicher Test durchgef hrt werden Dabei wurden drei Testziele ins Auge gefa t 1 Zuerst sollte der Algorithmus in unterschiedlichen Anwendungssitua tionen seine Tauglichkeit unter Beweis stellen Es ging darum sicher zustellen da mit der Automatischen Justage verschiedene Proben optimal f r einen Topographie Vorgang eingestellt werden k nnen Da abzusehen war da nicht alle Proben mit dieser Justage eingestellt werden k nnen ging es darum eine Aussage dar ber zu finden wel cher Prozentsatz von Proben mit dem Algorithmus automatisch justiert werden kann 2 Au erdem sollten mit Hilfe des Tests der Automatischen Justage Schw chen des Suchalgorithmus offenbart werden Anhand dieser Er
101. MIT PROBENABH NGIGEN PARAMETERN Testfall 7 PF916324 8 7 Suchbereich Startwerte Endwerte Ausleuchtung DF 50 33 68 35 72 TL 50 8 29 8 3 CC 50 125 71 61 32 Kriterien Intensitat 35000 52000 HWB 13 34 9 45 Dauer der Justage 14 15 min Testfall 8 PF916324 8 7 Suchbereich Startwerte Endwerte Ausleuchtung DF 50 33 68 32 01 TL 50 8 29 8 6 CC 150 125 71 56 32 Kriterien Intensitat 35000 51000 HWB 13 34 9 7 Dauer der Justage 18 45 min B 5 Testreihe mit Probe PF916324 08 5 Testfall 1 PF916324 08 5 Suchbereich Startwerte Endwerte Ausleuchtung DF 20 28 28 30 02 TL 20 11 5 32 CC 50 90 52 61 Kriterien Intensitat 233000 243000 HWB 12 5 9 63 Dauer der Justage 14 20 min B 5 TESTREIHE MIT PROBE PF916324 08 5 179 Testfall 2 PF916324 08 5 Suchbereich Startwerte Endwerte Ausleuchtung DF 20 33 26 30 02 TL 20 7 1 1 19 CC 100 161 6 63 89 Kriterien Intensitat 227000 241300 HWB 15 37 9 6 Dauer der Justage 15 55 min Testfall 3 PF916324 08 5 Suchbereich Startwerte Endwerte Ausleuchtung DF 50 27 4 28 63 TL 20 11 8 4 CC 50 90 55 4 Kriterien Gp Intensitat 33000 43000 HWB 12 5 9 6 Dauer der Justage 14 53 min Testfall 4 PF916324
102. NG mlSetAngleDefault Syntax void WINAPI mlSetAngleDefault void Beschreibung Setzt die Voreinstellungen f r das Winkeloffset der Re lativen Null und die Softwareschranken im Winkel ma Dazu werden die Membervariablen dAngleBias dAngleMin und dAngleMax der einzelnen im System vorhandenen Antriebe auf ihre Defaultwerte zur ckge stellt F r dAngleMin und dAngleMax werden die Mem bervariablen PositionMin und IPositionMax die die zul ssigen Positionsbereiche in Encoderschritten dar stellen ausgewertet dAngleBias wird auf 0 0 gesetzt Parameter R ckgabewert Siehe auch mSetAngleDefault mlGet Version Syntax LPCSTR WINAPI mlGetVersion void Beschreibung R ckgabe der Versionsnummer der m_layer Schicht Dazu wird der Wert der statischen Variablen ml Version zur ckgeliefert Parameter R ckgabewert LPCSTR Wert der statischen Variablen mlVersion der Siehe auch die Versionsnummer der Motorsteuerungsschicht inklu sive Datum der Kompilierung enth lt A 1 INTERFACE DER MOTORLISTEN FUNKTIONEN 147 mlGetInstance Syntax HINSTANCE WINAPI mlGetInstance void Beschreibung Gibt das Instanz Handle des Moduls motors dil zur ck Parameter R ckgabewert HINSTANCE Wert der globalen Variable hModuleInstance die in der LibMain Funktion der motors d1l mit dem Instanz Handle f r die DLL belegt wurde wird zur ck gegeben Siehe auch A 1 1 Dialoge zur Motorsteuerung
103. Punkt P 0 4 0 im neuen Koordinatensystem gegeben Nun m chte man die Weltkoordinaten dieses Punktes berechnen Das geschieht folgenderma en Poet Rr ck P 0 1 00 0 005 4 Fuet 1 9 9 1 0 0 0 0 01 1 5 4 KOORDINATENSYSTEMTRANSFORMATION 57 4 5 0 1 Dieses einfache Beispiel wurde deshalb gew hlt weil das Ergebnis schnell berpr ft werden kann Um die Koordinaten des Ursprungs Owen vom Weltkoordinatensystem im neuen Koordinatensystem zu ermitteln multipliziert man einfach den Punkt Oweit 0 0 0 mit der Transformationsmatrix Rhin Pwet Oneu Rhin i O welt 0 1 0 5 0 1 0 0 0 0 Oneu 0 0 1 0 0 0 00 1 1 5 0 sr 0 1 P welt x alter Ursprung O 0 0 0 hat im neuen KO System die Koordinaten O__ 5 0 0 neu Abbildung 5 2 Visualisierung des vorangegangenen Beispiels Kapitel 6 Design In diesem Kapitel soll es um das Design der Programmerweiterung gehen Dazu wird der Algorithmus f r die Justage zun chst unter dem Aspekt der softwaretechnischen Integration betrachtet Dadurch werden Teilaufgaben sichtbar die neben der Umsetzung des mathematischen Algorithmus zus tz lich realisiert werden m ssen 6 1 Ablauf der Automatischen Justage Der Entwurf des Algorithmus f r die automatische Justage im Kapitel 5 ist mathematisch abstrakt gestaltet Zudem werden durch das Pflichtenheft Forderungen gestellt die zu Teilaufgaben f hren aber noch nicht im mathe
104. Signalbedeutung die Steckerbelegung und die Prozedur f r den Aufbau einer Verbindung definiert 20 KAPITEL 2 DAS STEUERPROGRAMM k nnen mit jedem beliebigen Terminalprogramm an die Controllerkarte ge sendet werden wobei die Controllerkarte nicht unbedingt im ISA Slot der Hauptplatine gesteckt sein mu Diese Art der Kommunikation wurde im RTK Steuerprogramm nicht realisiert Die Kommunikation mit der PC Bus Schnittstelle erfolgt ber einen Dual Port RAM Der Dual Port RAM ist ein Speicherbaustein der zwei voneinan der unabh ngige Zug nge zu den Speicherzellen aufweist Dadurch k nnen zwei Einheiten gleichzeitig auf die Informationen im RAM zugreifen ohne sich zu behindern In diesem Fall wird ein 1 KByte gro er Speicherbereich oberhalb von 640 KByte sowohl von der Controllerkarte als auch vom Host Rechner f r Schreib Leseoperationen benutzt Innerhalb dieses Bereichs werden zwei Register zur Kommunikation verwendet Das Timing wird ber ein Handshakeflag realisiert Ist dieses Handshakeflag gesetzt liegen Daten im Schreib bzw Leseregister an F r die Kommunikation bedeutet das da die Steuerbefehle nacheinander ins Schreibregister geschrieben oder aus dem Leseregister gelesen werden Dabei mu st ndig der Status des Handshake flags abgefragt werden Der Befehlssatz umfa t ca 80 Befehle wobei jeder Befehl aus zwei ASCII Zeichen besteht Die zwei Zeichen stehen f r eine Abk rzung des auszuf hrenden Befehls z
105. Unit ist TUnit Type und in der Headerdatei comhead h deklariert Es sind die folgenden Einheiten m glich Grad Minuten Sekunden Millimeter Mikrometer Channel und None keine Einheit A 2 INTERFACE DER MOTOR FUNKTIONEN 157 Parameter R ckgabewert Siehe auch TUnitType Wert der Motor Membervariablen eUnit gibt an in welcher Einheit die Positionsangaben des ak tiven Antriebs im Steuerprogramm vorgenommen wer den Die Enumeration TUnitType ist in comhead h deklariert und kann folgende Werte annehmen Grad Minuten Sekunden Millimeter Mikrometer Channel None mGetAxisUnit mGetAxisName mSet Value Syntax Beschreibung Parameter R ckgabewert BOOL WINAPI mSetValue TValueType vtype double value Die Funktion setzt f r den aktuellen Antrieb die Wer te von Geschwindigkeit Speed oder Winkelschrittwei te Width Abh ngig vom Wert des Parameters vtype vom Typ TValueType deklariert in comhead h wird der dazugeh rige Wert der Motorgr e der aktiven Ach se gesetzt Hierzu werden nur die Membervariablen der Motoren ver ndert Es findet kein Zugriff auf die Hard ware statt TValueType vtype Parameter gibt an welcher Motor wert gesetzt werden soll Zul ssig sind nur die Wer te Speed Geschwindigkeit Membervariable dSpeed und Width Winkelschrittweite Membervariable dAngle Width double value zuzuweisender Wert der durch den TValueType Parameter bestimmten Mo
106. Wellenl nge Der Kollimator kann so eingestellt werden da man eine sehr schmale charakterische Linie erh lt siehe Abb 1 4 Die Divergenz der Strahlung in der Einfallsebene betr gt dadurch nur noch ca z Winkelsekunde Die hier vorgestellte Methode zur Erzeugung von R ntgenstrahlung mit einer bestimmten Wellenl nge ist die Grundvoraussetzung f r die Zwei Kri stall R ntgentopographie Diese kann wie folgt beschrieben werden Ein idealer Kollimator erzeugt aus dem von der R ntgenr hre ausgehen den schmalen Strahlenb ndel durch Bragg Reflexion ein breites nahezu par alleles und monochromatisches Strahlenb ndel das auf die Me probe trifft Von der Me probe erh lt man dann durch Bragg Reflexion ein Abbild unter der Voraussetzung da lokal f r jeden Punkt der Probe die Bragg Bedingung erf llt ist Zur Erfassung des Abbildes dienen eine Fotoplatte ein Film oder ein 2 dimensionaler Detektor die jeweils in den von der Me probe reflektier ten Strahl gebracht werden Abweichungen von der Idealstruktur f hren zu Abweichungen von der Bragg Bedingung und damit zu einer kontrastreichen Abbildung die der Realstruktur entspricht KAPITEL 1 EINF HRUNG Aus der Vielzahl der Netzebenen des Kristalls kann ein Ausgangspunkt f r die Untersuchung ausgew hlt werden Die Auswahl erfolgt durch ei ne entsprechende r umliche Orientierung des Kristalls bez glich der Ebene Kollimator Me probe Detektor Das bei der Topographie
107. a logprogrammierung ein Ausgiebige Tests der Justagefunktion werden im achten Kapitel ausgewer tet Dazu wird untersucht wie gut die Automatische Justage bei unter schiedlichen Proben und unterschiedlichen Dialogeinstellungen funktioniert Das neunte Kapitel stellt eine Nutzerdokumentation der neuen Funktion Automatische Justage zur Verf gung Diese soll in erster Linie den Nut zern als Handbuch f r die Arbeit mit dem Steuerprogramm im Kontext der automatischen Justage einer Me probe dienen Den Abschlu bildet das zehnte Kapitel Die in dieser Diplomarbeit gel ste Aufgabenstellung wird kurz zusammengefa t und hinsichtlich ihres Einsatzes bewertet Au erdem werden Ideen zur Verbesserung und Erwei terung der hier vorgestellten L sung die sich w hrend der Bearbeitung des Themas ergeben haben vorgeschlagen Den Kapiteln folgt ein Anhang Den gr ten Teil des Anhangs nimmt eine ausf hrliche und komplette Beschreibung des C Interfaces zum Ansteuern der Motorenhardware ein Den Abschlu bilden eine tabellarische Auflistung der absolvierten Testf lle mit probenabh ngigen Parametern und die neu hinzugekommenen Quelltexte zur Realisierung der Automatischen Justage Inhaltsverzeichnis 1 Einf hrung ti Motivation sr ade ee wre S 1 2 Physikalischer Hintergrund 2 2 2 2 3 22 22 2 22212 2 20 1 2 1 Versuchsverfahren se este at 1 2 2 Brags Rellexion a su0 5 4 ble ale ae Boek S 1 2 3 Zwei Kristall R nt
108. abewert Siehe auch LPCSTR WINAPI mGetSF void Die Funktion gibt im Gegensatz zu mGetSF eine For matzeichenkette fiir die Schrittweitenwerte des aktuel len Antriebs zur Festlegung der Darstellungsgenauigkeit im Steuerprogramm zuriick Das Format wird mit Hilfe des Digits Eintrags in der Konfigurationsdatei beim Initialisieren des Motors fest gelegt und in der Motor Membervariable SFmt als Zei chenkette der Form 21 abgespeichert Smt wird haupts chlich dazu verwendet die Werte der Antriebs schrittweite Membervariable dAngleWidth mit einer einheitlichen und sinnvollen Anzahl von Nachkomma stellen in den Dialogen zu pr sentieren Es wird eine Nachkommastelle mehr als bei Verwendung des Formatstrings DFmt ber cksichtigt LPCSTR Wert der Motor Variablen Sfmt der bei der Initialisierung des aktuellen Antriebs abh ngig vom Konfigurationsdateieintrag Digits mit einem Format string der Art 21f belegt wurde mGetDF mSetAngleDefault Syntax Beschreibung void WINAPI mSetAngleDefault void Setzt die Voreinstellungen fiir das Winkeloffset der Re lativen Null und die Softwareschranken im Winkel ma Dazu werden die Membervariablen dAngleBias dAngleMin und dAngleMax des aktuellen Antriebs auf ihre Defaultwerte zur ckgestellt 162 KAPITEL A SCHNITTSTELLENBESCHREIBUNG DER MOTORENANSTEUERUNG F r dAngleMin und dAngleMax werden die Memberva riablen PositionMin und IPositionMax die die zul
109. ain LoadMenuBar void HMENU hmPL1 hmPL2 Klassen Templates sind generische Klassen und stellen eine Schablone f r die Imple mentierung eigener Klassen dar Durch Vererbung k nnen die grundlegenden Methoden bernommen und spezielle Methoden berschrieben bzw angepa t werden 84 KAPITEL 7 PROBLEME DER IMPLEMENTATION Erzeugung eines Anwendungsmen s hTheMenu CreateMenu Unterpunkt Ausf hren hmPL1 CreatePopupMenu neu Men pkt Automat Just AppendMenu hmPL1 MF_STRING cm_AutomaticAngleControl amp Automatische Justage Einf gen der Men punkte zum Men Ausf hren AppendMenu hTheMenu MF_POPUP WORD hmPL1 amp Ausf hren In der folgenden Abbildung ist das Resultat der Men erweiterung darge stellt Steuerprogramm Datei Bearbeiten ffnen WERNE Einstellungen Fenster Hilfe Manuelle Justage Automatische Justage Macro Messung unterbrechen Abbildung 7 4 Men punkt f r die Programmfunktion Automatische Jus tage Durch die Auswahl des Men punkts Ausf hren Automatische Justage im Anwendungsmen wird eine Nachricht des Typs WM_COMMAND mit der ID cm_AutomaticAngleControl erzeugt und von der Anwendung in der Haupt nachrichtenschleife verarbeitet Die Verbindung des Men eintrages mit der Ausf hrung des Dialogfensters mu in der Quelldatei m main cpp geschaffen werden Dazu wird in der Verarbeitungsroutine f r WM_COMMAND Nachrichten
110. aktometrie In der R ntgendiffraktometrie werden Untersuchungen einzelner Ebe nen im Kristall der Abstand der Netzebenen betr gt ca 0 1 nm vor genommen Die Me probe wird in unterschiedlichen r umlichen Orien tierungen durch einen R ntgenstrahl systematisch abgetastet Der Ein fallswinkel variiert hierbei typischerweise zwischen 10 bis 90 Grad In terferenzen durch die Netzebenenabst nde hervorgerufen werden von Detektoren als Diffraktometriekurven ermittelt Die Kurven lassen Aussagen z B zur Glattheit oder Rauhheit einzelner Netzebenen zu 2 R ntgenreflektometrie Die R ntgenreflektometrie wird zur Untersuchung einzelner Schichten im Kristall die Stapeldicke betr gt normalerweise ca 100 nm einge setzt Bei der R ntgenreflektometrie wird wie bei der Diffraktometrie die Me probe in verschiedenen Orientierungen abgetastet Typischer weise arbeitet man mit Einfallswinkeln zwischen 0 1 und 3 Grad Die Interferenzen die durch die Phasendifferenz von Grenzfl che zu Grenz fl che d h durch die Dicke der Schichten entstehen werden von Detektoren gemessen und in Reflektometriekurven abgebildet Diese Kurven erlauben Aussagen zu Schichtdicken chemisch unterschiedlicher Schichten im Kristall 3 R ntgentopographie Die R ntgentopographie wird zur Untersuchung von Versetzungen im Kristall eingesetzt Diese k nnen in Schichtsystemen entstehen wenn Man spricht von einem Schichtsystem wenn eine Schicht eines Halbleit
111. ale und systemnahe Eigenschaften vom Beginn der Ent wicklung an bis zur aktuellen Version Die Systemdokumentation bildet die Grundlage aller Wartungsaktivit ten 2 In der Benutzerdokumentation wird das Verhalten der Software nach au en beschrieben Dazu geh rt eine bersicht der verf gbaren Funk tionalit t bzw ein Handbuch f r den Nutzer Sind beide Arten von Dokumenten vorhanden und konsistent zur aktuell eingesetzten Version dann spricht man von einer gut dokumentierten Soft ware Zum RTK Steuerprogramm existierten nur wenige unvollst ndige Doku mente Ein Dokument beschreibt einen Teil der Schnittstelle zu den Motoren und Ausz ge zu den Parametern der Initialisierungsdatei Ein weiteres Do kument geht kurz auf die Anwendung des Dialoges Manuelle Justage ein Da weitere Dokumentationen nicht verf gbar waren wurde die Einarbeitung in die Quellen erheblich erschwert Hinzu kam da die Quelltexte kaum do kumentiert waren Vorhandene Kommentare gaben wenig Aufschlu f r das Verst ndnis der Programminterna 2 4 3 Wartbarkeit Das Kriterium Wartbarkeit fa t alle inneren Eigenschaften von Software zu sammen die das Suchen und Beheben von Fehlern die Portierung und die Verbesserung der Software unterst tzen 24 KAPITEL 2 DAS STEUERPROGRAMM Bez glich der Wartbarkeit ist das RTK Steuerprogramm unzureichend Begr ndet wird das damit da keine Dokumentation der Quellen und des Systems vorhanden waren P
112. alle ungeraden Durchg nge count 1 3 5 etc wird CC DF optimiert if count 2 1 alle geraden Durchg nge count 2 4 etc wird TL DF optimiert else else Ende des Algorithmus ist erreicht SendMessage GetHandle WM_COMMAND cm_post_processing 0 break SendMessage GetHandle WM_COMMAND cm_optimizing_CC 0 SendMessage GetHandle WM_COMMAND cm_optimizing_TL 0 case cm_optimizing_CC HH HH HH 2 Teil des Algorithmus Kollimator DF nach berlegung amp Test bei den Physikern ist die Variante 1 CC DF 2 TL DF der rspr nglichen vorzuziehen deshalb ist CC DF am Anfang 194 KAPITEL KOMMENTIERTE QUELLTEXTE HH HH Test auf Intensit ts berschreitung des Detektors if Transform gt bIntensityTooHigh Abbruch der Justage SendMessage GetHandle WM_COMMAND cm_post_processing 0 z Achse CC Such Intervalle f r Goldenen Schnitt festlegen intervall_li aktWertebereich MinCC intervall_re aktWertebereich MaxCC Logging if bWriteLogfile WriteToJustageLog Optimierung CC r n Goldener Schnitt Optimierung der Z Achse CC step liefert die Anzahl der ben tigten Intervallteilungen intervall_re li liefern das letzte Optimierungsintervall step Transform gt Goldener_Schnitt Laufachse_Z intervall_li intervall_re nMeasureCount FORWARD_WM_COMMAND GetHandle cm_optimizing_DF 0 0 PostMessage
113. ameter R ckgabewert TRUE G ltiger Referenzpunktlauf f r den aktuellen Antrieb ist sichergestellt FALSE F r den aktuellen Motor existiert kein g ltiger Referenzpunktlauf Siehe auch mIsDistanceRelative Syntax BOOL WINAPI mIsDistanceRelative void Beschreibung Gibt an ob sich die Positionsangaben im Winkelma 154 KAPITEL A SCHNITTSTELLENBESCHREIBUNG DER MOTORENANSTEUERUNG des aktuellen Antriebs auf eine gesetzte Relative Null be ziehen oder ob mit absoluten Angaben gearbeitet wird Es wird dazu gepr ft ob die Motor Membervariable dAngleBias Null ist Parameter R ckgabewert TRUE dAngleBias Winkel Offset 0 d h alle Winkelangaben beziehen sich auf die Relative Null FALSE Winkel Offset dAngleBias 0 d h alle Win kelangaben sind absolute Werte Siehe auch mSetRelativeZero mlGet ffset mSetAngleDefault mGet Distance Syntax BOOL WINAPI mGetDistance double amp position Beschreibung Ermittelt fiir den aktuellen Antrieb die aktuelle Stellung im Winkelma Grad etc Die Position wird von der Hardware ausgelesen und wird falls der Motor sich in Ruhe befindet und kein bertragungsfehler aufgetreten ist in der Motorklassenvariablen dAngle gespeichert und im double Parameter zur ckgeliefert Parameter double amp position R ckgabeparameter f r die ausge lesene Position R ckgabewert TRUE Die Position konnte ermittelt werden wurde in der Motor M
114. ammfunktion realisiert worden Die Protokollierung kann innerhalb des Dialogs aktiviert werden 2 Anwendungsszenario Es folgt eine Darstellung des Funktionsverhaltens aus Benutzersicht Der Anwender w hlt aus dem Hauptmen des RTK Steuerprogramms den Punkt Ausf hren Automatische Justage aus Dadurch wird der Dia log Automatische Justage gestartet Wenn die f r die automatische Justa ge notwendigen Antriebe oder der 0 dimensionale Detektor vom Hauptpro gramm nicht korrekt initialisiert wurden wird im Textfeld des Dialogs eine entsprechende Meldung ausgegeben und der Start Button deaktiviert In diesem Fall ist es nicht m glich eine Justage durchzuf hren Andernfalls k nnen die Voreinstellungswerte der Dialogparameter ver n dert werden So ist es m glich Abbruchkriterien wie die Anzahl der Wieder holungen festzulegen die Such Intervalle f r die Justageachsen einzustellen oder zu bestimmen ob die Justage in einer Log Datei protokolliert werden soll Um eine Erl uterung zu den einzelnen Parametern zu erhalten kann der Hilfe Button gedr ckt werden Durch Aktivierung des Start Buttons wird der Vorgang der automati schen Justage gestartet Der Proze l uft selbst ndig ab so da der Anwen der w hrend der Optimierung nicht mehr einzugreifen braucht Die Justage ist bei Erreichen des Maximums der Strahlungsintensit t im Fall des Ein tretens einer vom Benutzer festgelegten Abbruchbedingung z B der Anzahl der
115. b Winkel zw 2 Vektoren winkel acos winkel return winkel Setzen der x y z Koordinaten eines 3dim Vektors bool TVektor set_XYZ double x double y double z if ze 3 arr 0 x arr iJ y arr 2 z return true else return false Auslesen der x y z Koordinaten eines 3dim Vektors bool TVektor get_XYZ double amp x double amp y double amp z if ze 3 ze 4 x arr 0 y arr 1 z arr 2 return true else return false 7 1 3 ea ea ak ee ak ea ak ea ak ea ea a ee a ea ea a ea ea IOI aaa Matrizenliste Klasse 7 1 3 aa ea ak ea ak ea ea ak ea a ea a ee a ea ea a ea ea a a ICICI GIGI III IAA Liste von Transformationsmatrizen organisiert als Stack mit push element pop ist_leer Listenkonstruktor um eine Liste mit einer bestimmten Anzahl von Listenelementen zu erzeugen TMatrizenListe TMatrizenListe unsigned anzahl liste NULL akt_elemente 0 max_elemente anzahl if anzahl 0 liste new TMatrix max_elemente C 3 MATHEMATISCHE HILFSKLASSEN 227 Matrix zur Liste hinzuf gen bool TMatrizenListe push const TMatrix amp trafo if akt_elemente max_elemente liste akt_elemente t trafo return true return false letzte Matrix aus Liste entfernen TMatrix TMatrizenListe pop void TMatrix temp if akt_elemente temp liste akt_elemente
116. bruchkriterium dienen GetDlgItemText hwnd ID_IntenseDifferenz buf 8 keine negativen Werte akzeptieren fIntenseDifferenz fabs atof buf Bereichspriifung untere Schranke if fIntenseDifferenz lt 1 0 Defaultwert fIntenseDifferenz 5000 0 Bereichspriifung obere Schranke if fIntenseDifferenz gt 10000 0 Maximalwert fIntenseDifferenz 9999 9 R ckschreiben des korrigierten Wertes in den Dialog C 1 DIALOGKLASSE TAUTOMATICANGLECONTROL 191 sprintf buf 0f fIntenseDifferenz SetDlgItemText hwnd ID_IntenseDifferenz buf Werte f r die Intervallgrenze von DF aus dem Dialog auslesen GetDlgItemText hwnd ID_DF_Intervall buf 8 Norzeichen abfangen MaxDF fabs atof buf Bereichspr fung bei Fehler Defaultwert if MaxDF lt 1 0 MaxDF gt 300 0 Defaultwert MaxDF 50 0 R ckschreiben des korrigierten Wertes in den Dialog sprintf buf 0f MaxDF SetDlgItemText hwnd ID_DF_Intervall buf Werte f r die Intervallgrenze von TL aus dem Dialog auslesen GetDlgItemText hwnd ID_TL_Intervall buf 8 Norzeichen abfangen MaxTL fabs atof buf Bereichspr fung bei Fehler Defaultwert if MaxTL lt 1 0 MaxTL gt 100 0 Defaultwert MaxTL 20 0 R ckschreiben des korrigierten Wertes in den Dialog sprintf buf 0f MaxTL SetDlgItemText hwnd ID_TL_Intervall buf Werte f r die Int
117. che Strahlung t Die Abbildung ist nicht 5 Fu ma stabsgetreu denn normalerweise gilt Ichar ee 1000 J Iprems 1 2 1 Wellenl nge A Abbildung 1 3 Strahlung der R ntgenquelle Die charakteristische Strahlung wird erzeugt weil die Elektronen der An odenatome auf h here Energieniveaus angehoben werden Sie emittieren im gegebenen Beispiel f r Kupfer beim Zur ckfallen R ntgenstrahlung in charakteristischen Wellenl ngen Im allgemeinen mu die erzeugte R ntgenstrahlung siehe Abb 1 3 zus tz lich monochromatisiert werden Diese Funktion bernimmt im hier diskutier ten Verfahren ein hochperfekter Kollimatorkristall im Folgenden nur noch als Kollimator bezeichnet Um eine Monochromatisierung zu erreichen wird 1 2 PHYSIKALISCHER HINTERGRUND der Kollimator mit der in der R ntgenr hre erzeugten Strahlung bestrahlt Die R ntgenstrahlung unterschiedlicher Wellenl nge wird vom Kollimator in unterschiedliche Richtungen gestreut Bei gen gend gro em Abstand zwi schen dem Kollimator und der zu untersuchenden Probe wird dann genau eine bestimmte Wellenl nge herausgegriffen im gegebenen Fall die CuK a Linie __ CuK Linie a Breite der charakteristischen Linie AA 4 aa a 3 10 CuK u O ce 2 Das Rauschen macht ungefahr Too der Intensit t der charakteristischen Linie aus j zZ Abbildung 1 4 Kollimierte R ntgenstrahlung Rauschen
118. chen Justage In diesem Abschnitt soll es um den Entwurf der statischen Struktur der Pro grammerweiterung Automatische Justage gehen Die statische Struktur wird am besten durch Klassendiagramme verdeutlicht Die Wahl der Dar stellung fiel auf Klassendiagramme in der UML Notation Die Verwendung der Objektorientiertheit lag nahe da da bestehende Softwareprojekt zum Gro teil eine objektorientierte Struktur aufweist und auch in der Program miersprache C die dieses Konzept unterst tzt umgesetzt wurde Die Programmerweiterung besteht aus 3 Hauptteilen die in der Abb 6 3 dargestellt sind Das w ren demnach folgende Komponenten eine Dialog klasse zur Anbindung an die bestehende Oberfl che eine Klasse die die Kernfunktionalit t der Automatischen Justage enth lt und als mathema tische Hilfsbibliothek eine Klasse die die geometrischen Transformationen f r den Algorithmus realisiert 3Borland C bietet mit ObjectWindows ein einfaches objektorientiertes Anwen dungsger st zur Erstellung von Windowsprogrammen an Die Klassenbibliothek stellt eine Kapselung der Windows API hnlich der Windows Programmierschnittstelle Micro soft Foundation Classes MFC von Microsoft dar 70 KAPITEL 6 DESIGN 6 3 1 Klassendiagramm der Dialogklasse Wie bereits erw hnt wird die Dialogklasse TAutomaticAngleControl von der Klasse TModalD1g abgeleitet Dabei werden lediglich die wichtigsten Me thoden neu berschrieben d
119. chste Intensit tswert festgestellt wurde Als empfohlener Wert wird die voreingestellte Anzahl von 5 Durchl ufen angegeben Maximale Intensit tsdifferenz Die maximale Intensit tsdifferenz gibt an um wieviel kleiner die Intensit t im Vergleich zum vorherigen Durchlauf des Algorithmus sein darf Wird diese Intensit tsschranke unterschritten dann wird zum letzten maximalen Intensit tspunkt aus dem vorherigen Durchlauf zur ckgekehrt und die auto matische Justage beendet Die Intensit tsdifferenz soll als weiteres Abbruch 128 KAPITEL 9 NUTZERDOKUMENTATION kriterium dienen Dar ber hinaus kann es passieren dass der Algorithmus kleine Ausrei er hat die durch Me fehler verursacht werden Diese Aus rei er sollen durch die Pr fung der Intensit tsdifferenz verhindert werden Anzahl Intensit tsmessungen Die Anzahl der Intensit tsmessungen gibt an wieviel Messungen an einer Position vorgenommen werden Da die Me werte oftmals sehr schwanken k nnen kann es passieren da bestimmte Werte nicht die realen Intensit ten widerspiegeln Dadurch k nnen falsche Entscheidungen vom Suchalgorith mus getroffen werden Um diese Ausrei er beim Messen auszugleichen gibt es die M glichkeit an einer Position mehrere Messungen durchzuf hren Aus diesen Werten wird mit dem Median Verfahren ein Wert ermittelt der m glichst genau den realen Intensit tswert angibt Suchbereich Der Suchbereich gibt an in welch
120. chtspunk ten die im Software Engineering Proze ber cksichtigt werden m ssen Forschungsarbeiten am Lehrstuhl Softwaretechnik auf dem Gebiet des Software Engineering und Reverse Engineering 3 8 f hrten zur Zusam menarbeit mit der Arbeitgruppe von Prof K hler Im daraus entwickelten Projektseminar Softwaresanierung wurden den Studenten Teilaufgaben zu gewiesen an denen sie ihre theoretisch erlangten Kentnisse auf dem Gebiet des Software Engineering in die Praxis umsetzen konnten Diese Diplom arbeit ist aus der Bearbeitung einer dieser Teilaufgaben aus dem Seminar hervorgegangen Die zentrale Aufgabe der vorliegenden Arbeit ist es die Steuersoftware um die Topographiefunktion Automatische Justage zu er weitern KAPITEL 1 EINF HRUNG 1 2 Physikalischer Hintergrund 1 2 1 Versuchsverfahren Halbleiterkristalle geh ren zu den strukturell perfektesten Materialien die heute hergestellt werden k nnen Dennoch finden sich in diesen Kristallen Defekte Diese Abweichungen von der Idealstruktur k nnen im Kristall auch im Zuge von Proze schritten entstehen Zur Untersuchung der Realstruktur von Halbleitern gibt es viele Methoden Ein Teil dieser Verfahren arbeitet mit R ntgenstrahlung und wird insbesondere f r Halbleiter Schichtsysteme eingesetzt In der Arbeitsgruppe R ntgenbeugung an d nnen Schichten des Insti tuts f r Physik konzentriert man sich auf drei Untersuchungsverfahren 1 R ntgendiffr
121. d C 4 5 Entwicklungsumgebung e Auswahlfeld fiir die Protokollierung des Justageprozesses e Ausgabefeld f r den Status der automatischen Justage Die Eingabefelder der Abbruchkriterien umfassen die Parameter fiir e die Anzahl der Algorithmusdurchlaufe und e die Intensit tsdifferenz die die maximale Differenz zwischen der R nt genstrahlungsintensit t zweier aufeinanderfolgender Justageschritte an gibt Auch die Suchbereiche des Algorithmus werden als Eingabefelder reali siert F r jede Motorachse die am Justageproze beteiligt ist wird ein Feld bereitgestellt Zus tzlich werden Eingabefelder zur Abfrage der Toleranz des Goldenen Schnitt Algorithmus und zum Festlegen der Anzahl von Messun gen zur Bestimmung der R ntgenstrahlungsintensit t integriert Um die einzelnen vom Anwender zu manipulierenden Werte bersichtlich anzuordnen werden Gruppen von Parametern durch Rahmen optisch von einander getrennt und mit der Gruppenkategorie beschriftet Abbildung 7 3 zeigt das Ergebnis des Dialogentwurfs mit Hilfe des Re source Workshop Nach der Dialogerstellung sind in der Datei main rc die 7 2 DIALOGPROGRAMMIERUNG 81 Statusanzeige r Optionen I Logdatei Toleranz 0 1 1 0 1 Durchl ufe max 7 5 maximale L intensitatsdie 5000 Anz Intensitatsmessg 3 Suchbereich Beugung Fein al 50 sek Tilt 4 20 min Kollimator 100 pm 4 gt Hilfe Start der automatischen J
122. d wird unter dem Betriebssystem Windows 3 1 eingesetzt 2 2 2 Die Initialisierungsdatei Obwohl es sich bei den Arbeitspl tzen der Topographie der Reflektome trie und der Diffraktometrie um unterschiedliche Versuchsanlagen handelt wird f r alle Aufgaben ein und dieselbe Applikation verwendet Um dies zu erm glichen wird der jeweilige Arbeitsplatz ber eine Initialisierungs datei korrekt konfiguriert Jede Initialisierungsdatei stellt ein Unikat dar das nur f r einen bestimmten Arbeitsplatz vorgesehen ist Der Grund daf r liegt darin da die Versuchsanlagen hochpr zise gesteuert werden m ssen 2 2 ALLGEMEINE SOFTWARESTRUKTUR 15 Dazu wurde jede Anlage mittels Lasertechnik vermessen Die im Ergebnis erhaltenen Werte f r die Konfigurierung der Motoren wurden in die jeweili ge Initialisierungsdatei eingetragen Werden also die Initialisierungsdateien zweier Topographiearbeitspl tze ausgetauscht so ist die korrekte Steuerung der Anlage nicht mehr gew hrleistet 2 2 3 Quelltext und Entwicklungsumgebung Der Quelltext besteht aus ca 27000 Zeilen Programmcode Als Program miersprachen wurden C und eingesetzt Die ausf hrbare Datei und die dynamischen Laufzeitbibliotheken wurden mit einem 16 Bit Compiler von Borland bersetzt Ungewi war welchen Bearbeitungsstatus die Projekt quelltexte hatten da es vom Entwickler keinerlei Dokumente gab die dar ber h tten Aufschlu geben k nnen Den Ausgangspunkt bilden d
123. dInformation AskTime NULL break 92 KAPITEL 7 PROBLEME DER IMPLEMENTATION Befindet sich das Programm in der Windowsnachrichtenschleife und wer den keine weiteren Aktionen im Dialogfenster gestartet so werden lediglich alle 100 Millisekunden Nachrichten durch den Timer ausgel st Durch die daraufhin abgearbeitete Dlg_OnTimer Funktion wird festgestellt ob der Mo tor in Bewegung ist und dementsprechend die Position im Dialogelement id_angle Winkel ge ndert Hat der Antrieb seine Position erreicht so wird die Position ausgelesen und in die Dialogelemente id_angle Winkel und id_newangle Neuer Winkel eingetragen Bei Stillstand und erfolg reichem Auslesen der Position wird der Timer nicht mehr aktiviert siehe TAngleControl Dlg OnTimer Die andere Form der Timerprogrammierung die anfangs schon erw hnt wurde veranla t Windows dazu anstelle der bersendung einer Nachricht direkt eine Bearbeitungsfunktion des Timerevents aufzurufen Auch von die ser M glichkeit wurde im RTK Steuerprogramm Gebrauch gemacht Initia lisiert wird solch ein Timer mit folgendem Aufruf nEvent timeSetEvent nTimeTicks 1 LPTIMECALLBACK Funktion 0 TIME_PERIODIC Der R ckgabewert dieser Funktion vergibt die Kennziffer f r das Timerevent Dadurch kann immer ermittelt werden um welches Timerevent es sich han delt Der erste Parameter gibt an wie oft ein Timersignal ausgel st werden soll Der zweite Parameter gibt die
124. daten ins Logfile schreiben if bWriteLogfile sprintf buf 1 HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHEE BHAA E RHR BES nAutomatische Justage beendet 021 02i 1 24 024 02d nHtHHHHHHRHHHHHBHHHHHBIHHHHHBIHHHHHBIHIHHHHIBIHHEHHHIBIBIHHHHHHHHIBIHHIHIHH r n datum da_day datum da_mon datum da_year zeit ti_hour zeit ti_min zeit ti_sec erst noch die Dauer rausschreiben strcat buf buf1 WriteToJustageLog buf Transformationsobjekt zerst ren delete Transform SetInfo Automatische Justage abgeschlossen Start Button aktivieren EnableWindow GetDlgItem hwnd cm_start_justage TRUE Maus Sanduhr in Zeiger umwandeln SetCursor LoadCursor NULL IDC_ARROW Justage beendet break case ID_Help Aufruf der Hilfe WinHelp hwnd SPHELP HLP HELP_CONTEXT Help_AutomaticAngleControlDlg break case ID_Logfile Setzen o L schen der Auswahlbox fiir die Protokollierung bWriteLogfile IsDlgButtonChecked GetHandle ID_Logfile break case ID_ActivateIntenseDiff De Aktivierung des Parameters Max Intensit tsdifferenz bIntensityDiffActive IsDlgButtonChecked GetHandle ID_ActivateIntenseDiff De Aktivierung der entsprechenden Dialogelemente if bIntensityDiffActive EnableWindow GetDlgItem hwnd ID_IntenseDifferenz TRUE EnableWindow GetDlgItem hwnd ID_TextMaxIntDiff TRUE 200 KAPITEL KOMMENTIERTE QUELLTEXTE else EnableWindow GetDlgIte
125. durch ein Request Signal und die Best tigung durch ein Acknowledge Signal gekennzeichnet ist 2 4 BEWERTUNG DER SOFTWARE 21 Schritte notwendig Als erstes wird ein Select Byte in das interne Adressregi ster geschrieben Danach wird das Kommando in den gew hlten Kanal der den jeweiligen Motor bezeichnet geschrieben oder ausgelesen Der Status der Kommunikation wird ber ein entsprechendes Register abgefragt Die zentralen Funktionen befinden sich in der Datei motors cpp Sie realisieren den endg ltigen Zugriff auf die Hardware Tiefergehende Infor mationen bieten die Dokumente 12 und 13 2 3 2 Detektoren Das RTK Steuerprogramm arbeitet mit unterschiedlichen Arten von Detek toren Abh ngig vom Arbeitsplatz werden die einzelnen Detektoren benutzt dabei wird zwischen 0 1 und 2 dimensionalen Detektoren unterschieden Am Topographiearbeitsplatz wird ein einfaches Zahlrohr welches zur Klasse der 0 dimensionalen Detektoren z hlt eingesetzt Der Detektor wird mittels einer Schnittstellenkarte der Firma Radicon eingebunden Genau wie bei der C 832 Motorencontrollerkarte wird die Kommunikation ber Port Befehle ausgef hrt Dabei stehen wieder zwei Portadressen zur Verf gung eine f r die Daten und eine f r die Kontrollcodes Die Portadressen werden durch Einstellen von Schaltern auf der Karte festgelegt Genauere Informa tionen zur Einbindung und Ansteuerung des Radicon Z hlers befinden sich unter 14 2 4 Bewertung
126. e in drehung_y double in drehung_z double verschiebematrix in const amp vekt TVektor N Matrix TMatrizenListe Matrix TVektor TVektor in const amp mat TMatrix akt_elemente liste max_elemente TMatrizenListe in anzahl unsigned int TMatrizenListe elementanzahl ist_leer pop push in const amp trafo TMatrix zeige in position unsigned int TVektor in pO unsigned int TVektor in pO double in p1 double in p2 double TVektor get_XYZ inout amp x double inout amp y double inout amp z double mache_homogen mache_kartesisch set_XYZ in x double in y double in z double skalarprodukt in const amp vekt TVektor vektor_betrag winkel in const amp vekt TVektor Abbildung 6 6 Klassendiagramm der Matrixklasse Die Methode einheitsmatrix erstellt eine Einheitsmatrix mit Rang m Mit ist_homogen wird ermittelt ob eine Matrix bzw ein Vektor in homo genen Koordinaten dargestellt ist Die Funktion verschiebematrix berech net eine Translationsmatrix wobei die Verschiebung durch einen tiberge benen Vektor ermittelt wird Bei der Methode rotationsmatrix x wird 6 3 STATISCHE STRUKTUR DER UTOMATISCHEN JUSTAGE 75 eine Rotationsmatrix f r die Drehung um die x Achse mit einem bestimm ten Winkel berechnet Analog arbeiten die Funktionen rotationsmatrix_y und rotationsmatrix_z Die
127. e a ode ea Dre u 5 1 1 Mathematische Verfahren 5 1 2 Eigener Ansatz Gaus ye ee era 5 2 Algorithmus Automatische Justage 2 222222020 5 3 Goldener Schnitt amp od pt dee Me ok aoe ern A ek 5 4 Koordinatensystemtransformation 5 4 1 Geometrische Transformationen 5 4 2 Homogene Koordinaten 12s ies 23 Se aka Design 6 1 Ablauf der Automatischen Justage 6 1 1 Maximumsuche auf den Achsen 6 2 Einbettung in die bestehende Software 6 21 Architektur ok xo eos ee RR 6 2 2 Benutzte Funktionen und Klassen 6 2 3 Relevante Quelltexte 2 2s ar DE ar Er ES 6 3 Statische Struktur der Automatischen Justage 6 3 1 Klassendiagramm der Dialogklasse 6 3 2 Klassendiagramm der Transformationsklasse 6 3 3 Mathematische Hilfsklassen Probleme der Implementation HE ANRC T ATOR ra seh GIs Sete ae Ne De ein 7 2 Dialogprogrammierung te i wed eae ee BS 7 2 1 Windowsnachrichtenkonzept 7 2 2 Timerprogrammierung xe att ea en 7 2 3 Konsequenzen fiir die Automatische Justage 7 3 Implementation der Funktionalit t 7 3 1 Hinweise zur Detektoransteuerung Test 8 1 Testziele ee Ge Sees nt Wo Se AY es See ke ede he eg 8 2 Tesishratesie 2 2 i Bae ir dr ee cay Ri Dow Sey BoP ar BES 8 3 Test des Dialoges ohne Proben
128. e einzelnen Parameter wird sp ter eingegangen Nachdem die Dialogparameter eingelesen wurden werden die Motorposi tionen der einzelnen Freiheitsgrade TL DF CC ermittelt Da das Suchin tervall zu diesem Zeitpunkt schon gegeben ist kann nun berpr ft werden ob die Suche innerhalb eines f r die Motoren erlaubten Bereichs erfolgt Von der Steuersoftware sind dazu Softwareschranken vorgegeben Durch sie soll die Ansteuerung von Positionen au erhalb der Spezifikation verhindert wer den um Hardwaresch den vorzubeugen Sollte der Fall eintreten da das Suchintervall ber den Fahrbereich eines Motors hinausreicht wird das Such intervall f r die betreffende Achse an die Softwareschranke angepa t Da nun der Wertebereich f r die Suche im Weltkoordinatensystem vor liegt mu dieser jetzt in das aktuelle Koordinatensystem umgerechnet wer den Das hei t es mu eine Funktion implementiert werden die die Koor dinanten vom Weltkoordinantensystem ins aktuelle Koordinatensystem um rechnet Am Anfang des Suchalgorithmus ist wie im Kapitel 5 beschrieben das Weltkoordinatensystem auch das aktuelle Koordinatensystem Erst nach der ersten Koordinatensystemtransformation wird es notwendig diese Um rechnungen durchzuf hren Nachdem man den Wertebereich umgerechnet hat kann nun die Suche auf den Achsen starten Im ersten Iterationsschritt wird zun chst die z Achse nach einem Maximum untersucht Im Anfangsschritt ist dies gleichzusetzen m
129. e mu an dieser Stelle abgebrochen werden Zum Dialog der automatischen Justage soll eine Hilfefunktion vorhanden sein die die zu ver ndernden Parameter erl utert 1 2 Wunschkriterien Es sollte die M glichkeit bestehen da Parameter die z B Eigenschaften der Probe betreffen vom Benutzer an die Programmfunktion bergeben werden k nnen Hier w ren allgemeine Angaben zur Kr mmung der Probe konvex oder konkav aber auch genaue Werte der Probenkr mmung denkbar Diese In formationen k nnten w hrend der automatischen Justage zur Verk rzung des Optimierungsprozesses herangezogen werden und auch dazu dienen den Kollimatorkristall schon von vornherein nur in die erforderliche Richtung zu kr mmen Dadurch k nnte dann verhindert werden da der Halbleiter durch Anfahren positiver und negativer Kr mmungswinkel berm ig beansprucht wird 4 4 PFLICHTENHEFT 39 e Dieses Kriterium ist in der Programmfunktion nicht realisiert wor den Das Prinzip des entwickelten Justagealgorithmus kommt ohne Angaben ber Probeneigenschaften aus und bietet deshalb daf r keine Einflu m glichkeiten Das Protokollieren des Justagevorgangs sollte ebenfalls m glich sein Die einzelnen angefahrenen Motorpositionen mit den dazugeh rigen gemessenen R ntgenstrahlungsintensit ten werden dazu in einer Protokolldatei abgespei chert Der Benutzer bestimmt selbst ob die Optimierung protokolliert wird e Dieses Kriterium ist in der Progr
130. ebrochen worden 8 4 TESTF LLE MIT PROBEN 109 Testfall 9 Dialogparameter Toleranz 0 5 Suchbereich Durchl ufe 5 DF 20 max Intensit tsdiff 5000 TL 20 Anzahl der Messg 2 CC 100 Startwerte Endwerte Ausleuchtung DF 29 84 DF 22 86 TL 11 TL 7 89 CC 90 CC 6 91 Intensit t 31000 Intensit t 246000 HWB 14 6 HWB 8 93 Dauer der Justage 10 27 min Bemerkung Die Verringerung der Anzahl der Me werte zur Bestimmung der R ntgenintensit t f hrte zu einer Beschleunigung der Justage bei gleich bleibend guter Optimierung Im Laufe dieses Testdurchlaufs wurde das Maxi mum schon im zweiten Durchgang gefunden Im Durchlauf 3 kam es zu einem Intensit tseinbruch der bei eingeschaltetem Intensit tsdifferenz Kriterium zum Abbruch gef hrt h tte Danach wurden aber wieder Intensit ten in der N he des Maximums erreicht so da der Abbruch nicht gerechtfertigt gewesen w re Testfall 10 Dialogparameter Toleranz 0 5 Suchbereich Durchl ufe 5 DE 20 max Intensit tsdiff 5000 TL 20 Anzahl der Messg 1 CC 100 Startwerte Endwerte Ausleuchtung DF 29 62 DF 31 95 TL 11 TL 3 2 CC 90 CC 19 21 Intensit t 231000 Intensit t 245000 HWB 14 6 HWB 9 29 Dauer der Justage 7 31 min Bemerkung Da nur eine Intensit tsmessung durchgef hrt wurde ist diese Justage in kurzer Zeit absolviert worden Das Ergebnis der Justage ist sehr
131. ed i 0 i lt ze i arr i mat arr il Vektor skalieren TVektor operator double fakt const TVektor amp vekt TVektor temp vekt ze for unsigned i 0 i lt vekt ze i temp arr i fakt vekt arr i return temp Umwandlung in einen Vektor in homogenen Koordinaten TVektor TVektor mache_homogen void unsigned i if ze 0 cerr lt lt V MH Fehler Vektor mit Zeilenanzahl 0 n return this else if this gt ist_homogen cerr lt lt V MH Fehler Vektor schon in homog Koord angegeben n return this TVektor temp ze 1 temp Vektor mit einer zus tzlichen homogenen Komponente 224 KAPITEL KOMMENTIERTE QUELLTEXTE Kopieren des Ursprungsvektors for i 0 i lt ze i temp arr i arrli neue Komponente im homogenen temp Vektor auf 1 setzen temp arr ze 1 1 1 aktuellen Vektor um homogene Komponente erweitern if arr NULL delete arr Speicherplatz des Matrix Arrays freigeben ze zeti arr new doublelze neues Vektor Array erzeugen for i 0 i lt ze i arr i temp arr il homogene_koordinaten true return this Umwandlung in einen Vektor in kartesischen Koordinaten TVektor TVektor mache_kartesisch void unsigned i if ze 0 cerr lt lt V MK Fehler Vektor mit Zeilenanzahl 0 n return this else if this gt ist_homogen cerr lt lt V M
132. eignet da sie auf den Daten einer existenten Probe auf baut und alle an der Feinjustage beteiligten Antriebe ber cksichtigt Deshalb wurde w hrend der Entwicklungs und Erprobungsphase des Automatischen Justage Algorithmus der in der oben genannten Studienarbeit programmierte Testdetektor benutzt Der Z hler wird mittlerweile auch aufgrund des erfolg reichen Einsatzes bei der Simulation der Justage als Ersatz zum einfachen Testdetektor angewendet Um den Simulationsdetektor zu verwenden m ssen wiederum nderun gen an der Datei develop ini vorgenommen werden DeviceO Name Counter Type Radicon Type TDevice Type Test Soll der Hardwaredetektor verwendet werden muf als Typ Radicon ein getragen werden Fiir den einfachen Softwaredetektor kann ein beliebiger 8 3 TEST DES DIALOGES OHNE PROBEN 101 Typ angegeben werden vorausgesetzt die Bezeichnung unterscheidet sich von den im Programm definierten Detektortypen z B TDevice Wird der erweiterte Testz hler aus der oben genannten Studienarbeit benutzt hat der Detektor den Typ Test Der Funktionstest des Dialogs wurde mit der folgenden Strategie durch gef hrt 1 Eingabe von korrekten Parameterwerten die innerhalb der Bereichs grenzen der einzelnen Dialogparameter liegen Eingabe von Parameterwerten die au erhalb der Bereichsgrenzen lie gen Eingabe von nicht erlaubten Parameterwerten Buchstaben Zeichen Mix von Buchstaben Zeichen und Zahlen
133. ein berlauf stattfand Nachregelung f r Achse DF sprintf buf r nIntensit tskorrektur f r Antrieb DF r n strcat status buf ins Statusfenster amp Logfile schreiben SetDlgItemText GetHandle ID_Status status if bWriteLogfile WriteToJustageLog buf Transform gt DFCorrection nMeasureCount MaxIntensity DF MaxIntensity Intensity sprintf buf Korrektur DF 2f Intensit t Of r n r n MaxIntensity DF MaxIntensity Intensity else sprintf buf r nJustage wurde wegen berschreitung r nder maximal zul ssigen Detektorintensit t r nabgebrochen Bitte vermindern Sie r ndie Spannung des R ntgenstrahlgenerators r n r n Berechnung der Justagedauer getdate amp datum gettime amp zeit justageende 3600 zeit ti_hour 60 zeit ti_min zeit ti_sec C 1 DIALOGKLASSE TAUTOMATICANGLECONTROL 199 justagezeit justageende justageanfang sprintf buf1 Dauer der Justage 024 02d 02d r n justagezeit 3600 justagezeit 3600 60 justagezeit 3600 60 strcat buf buf1 strcat status buf Ins Statusfenster schreiben SetDlgItemText GetHandle ID_Status status geschriebene Zeilen im Statusfenster ermitteln dwStatusZeilen SendMessage GetDlgItem hwnd ID_Status EM_GETLINECOUNT 0 OL entprechend den Scrollbar einstellen dass das Textende zu sehen ist SendMessage GetDlgItem hwnd ID_Status EM_LINESCROLL 0 dwStatusZeilen 18L Log
134. eine kompaktere Schreibweise w hlen P P T Eine Translation in die R ckrichtung erh lt man ganz einfach durch die Mul tiplikation des Vektors T mit 1 F r die Rotation eines Punktes P z y z im Raum mu man zun chst die Rotationen um die einzelnen Achsen berechnen Angenommen man will einen Punkt um die z Achse mit dem Winkel 0 rotieren lassen so wird die Drehung mathematisch definiert durch die Gleichungen X x cos0 y sin y x sinf y cos9 ye 1 In Matrizenschreibweise erh lt man x cos sin 0 y 1 sind cos 0 y A 0 0 1 z oder P R P wobei R die Drehungsmatrix um die z Achse ist Die Drehungsmatrix f r eine Rotation um die x Achse lautet 1 0 0 R 0 cos sind 0 sinf cos Die Drehungsmatrix f r eine Rotation um die y Achse hat die folgende Form cos 0 sind Ry 0 1 0 sin 0 cos Eine beliebige Rotation um den Koordinatenursprung wird aus den Rotatio nen um die einzelnen Hauptachsen zusammengesetzt Durch Multiplikation der Drehungsmatrizen erh lt man eine Rotationmatrix f r eine Drehung um den Koordinatenursprung R R Ry Ry F r eine Umkehrung der Drehung verwendet man die Inversen der Rotations matrizen R Ry und R Diese erh lt man durch das Einsetzen ihrer Winkel mit negativen Vorzeichen Bei der Bildung der umgekehrten Rotationsma trix R f r eine Drehung um den Ursprung mu beachtet werden da die Multiplikation der Rotationsmatrizen um die einze
135. elchen Timer es sich handelt wenn ein Timerevent ausgewertet wird AskTime ist die Zeit in Millisekunden in welchem Abstand ein Timerevent ausgel st werden soll Der vierte Parameter enth lt die Prozedurinstanzenadresse im Fall da eine Bearbeitungsfunktion aufgerufen werden soll Da in diesem Fall nur das Nachrichtenkonzept verfolgt wird ist der Zeiger hier NULL Zerst rt wird ein Timer durch den Aufruf KillTimer hwnd TimerIdInformation Bei den Parametern gelten die gleichen Beschreibungen wie oben Wird ein Timerevent ausgel st so wird dies im RTK Steuerprogramm in der Funktion Dlg OnTimer ausgewertet Man nennt diese Nachrichten auch WM_TIMER Nachrichten Wie in der Tabelle 7 2 angegeben sind fiir andere Nachrichten verschiedene Handler Funktionen verantwortlich Nachrichtentyp Funktion zur Behandlung WM_INITDIALOG TModalDlg Dlg_OnInit WM_COMMAND TModalD1g Dig_OnCommand WM_TIMER TModalDlg Dlg_OnTimer WM_HSCROLL TModalDlg Dlg_OnHScrollBar WM_VSCROLL TModalDlg D1g_OnVScrollBar WM_VSCROLL TModalDlg D1g_OnVScrollBar Tabelle 7 2 Nachrichtenbehandlung im RTK Steuerprogramm Bei einem Timerevent wird blicherweise so vorgegangen das zun chst der Timer mit KillTimer deaktiviert wird anschlie end wird die Funktio nalit t ausgef hrt und danach der Timer wieder aktiviert W rde der Timer 7 2 DIALOGPROGRAMMIERUNG 89 nicht deaktiviert werden k me
136. elle einem Kollimator einem Probenhalter zusammen mit einer Hal terung f r die Fotoplatte und einem Detektor der zur Erfassung der Strah lungsintensit t verwendet wird Die Abb 1 6 veranschaulicht den Strahlen gang von der Strahlungsquelle bis zum Detektor bzw zur Fotoplatte Kollimator Detektor x R ntgenquelle Probenhalter Abbildung 1 6 Schema des Strahlengangs Jeder Me platz ist mit einem PC verbunden Dieser ist f r die Steuerung des Probentellers und die Einstellung der Kollimatorkr mmung verantwort lich Des weiteren wird ber den Rechner die gemessene Strahlungsintensit t des angeschlossenen Detektors ausgelesen 8Der Probenhalter selbst ist starr wohingegen der Probeteller im Probenhalter be weglich gelagert ist und durch die am Probenhalter angeschlossenen Motoren gesteuert wird 10 KAPITEL 1 EINF HRUNG Bei den Motoren die f r die Bewegung des Probentellers und des Kollima tors zust ndig sind handelt es sich um Gleichstrommotoren mit Encodern die durch Untersetzung Getriebe und Hebelgetriebe geringste Bewegungen zulassen So erreicht man Drehbewegungen mit einer Genauigkeit von 0 02 Bogensekunden was einem Sm Grad entspricht Der Probenteller verf gt ber 3 Freiheitsgrade zur r umlichen Positio nierung der Probe Die Freiheitsgrade haben die folgenden Bezeichnungen Tilt TL Azimutale Rotation AR und Beugung F r den Freiheits grad Be
137. embervariablen dAngle abgelegt und wird im double amp Parameter als Winkel zur ckgeliefert FALSE Fehlerfall Motor war in Fahrt oder die Posi tion konnte nicht ausgelesen werden Siehe auch mGetValue mlGetValue mlGetDistance A 2 INTERFACE DER MOTOR FUNKTIONEN 155 mStopDrive Syntax Beschreibung Parameter R ckgabewert Siehe auch void WINAPI mStopDrive BOOL restart Mit dieser Funktion wird die Bewegung des aktuellen Antriebs gestoppt Abh ngig vom Parameter restart wird der Motor abrupt restart FALSE oder kontrol liert angehalten BOOL restart gibt an ob ein Neustart des Antriebs m glich sein soll restart TRUE oder ob der Motor durch das Aufheben des Motorstroms sofort gestoppt werden soll restart FALSE Obwohl die aufgerufenen Motorfunktionen ihrerseits pr fen ob die Motorkommandos erfolgreich abgesendet werden konnten wird der R ckgabeparameter von der mStopDrive Funktion nicht mehr weiterverarbeitet mMoveToDistance mMoveByDistance mGetDistanceProcess Syntax Beschreibung Parameter Riickgabewert Siehe auch double WINAPI mGetDistanceProcess void Die Funktion ermittelt die aktuelle Motorposition des aktiven Antriebs von der jeweiligen Steuerkarte und speichert diese in der Motor Membervariablen IPosition ab Au erdem wird die Position von Encoderschritten ins Winkelma umgerechnet und in der Membervaria blen dAngel abgelegt Der W
138. en return this berladener Operator subtrahiert zwei Matrizen gleichen Typs TMatrix TMatrix operator const TMatrix amp mat if ze mat ze sp mat sp cerr lt lt M Fehler Kann Matrizen versch Typs nicht subtrahieren n return this else for unsigned i 0 i lt ze sp i arr i mat arr i homogene_koordinaten amp mat homogene_koordinaten return this berladener Operator Nr 1 reelle Vervielfachung von Matrizen Version TMatrix Objekt double Wert TMatrix TMatrix operator double amp fakt for unsigned i 0 i lt ze sp i arr i fakt return this Version double Wert TMatrix Objekt friend Funktion TMatrix operator double fakt const TMatrix amp mat TMatrix temp mat ze mat sp for unsigned i 0 i lt mat ze mat sp i temp arr i fakt mat arr i temp homogene_koordinaten mat homogene_koordinaten return temp berladener Operator Nr 2 multipliziert zwei Matrizen TMatrix TMatrix operator const TMatrix amp mat TMatrix temp ze mat sp if sp mat ze cerr lt lt M Fehler Spalten der 1 Matrix ungleich Zeilen der 2 n temp ze temp sp 0 temp arr NULL 220 KAPITEL KOMMENTIERTE QUELLTEXTE else for unsigned i 0 i lt ze mat sp i for unsigned j 0 j lt sp j temp arr i arr j sp i mat sp mat arr j mat sp i mat sp temp
139. en Intensitat 33000 56000 HWB 13 34 8 9 Dauer der Justage 13 47 min Testfall 2 PF916324 8 7 Suchbereich Startwerte Endwerte Ausleuchtung DF 20 33 68 37 83 TL 20 8 29 7 23 CC 100 125 71 76 4 Kriterien Intensit t x33000 257000 HWB 13 34 8 89 Dauer der Justage 15 03 min B 4 TESTREIHE MIT PROBE PF916324 8 7 177 Testfall 3 PF916324 8 7 Suchbereich Startwerte Endwerte Ausleuchtung DF 50 33 68 36 34 TL 20 8 29 7 98 CC 50 125 71 89 09 Kriterien Intensit t 235000 257000 HWB 13 34 9 0 Dauer der Justage 13 27 min Testfall 4 PF916324 8 7 Suchbereich Startwerte Endwerte Ausleuchtung DF 50 33 68 37 34 TL 20 8 29 7 45 CC 100 125 71 84 09 Kriterien Gp Intensitat 35000 56000 HWB 13 34 9 1 Dauer der Justage 14 39 min Testfall 5 PF916324 8 7 Suchbereich Startwerte Endwerte Ausleuchtung DF 50 33 68 35 52 TL 20 8 29 8 29 CC 150 125 71 64 83 Kriterien Intensitat 35000 53000 HWB 13 34 9 35 Dauer der Justage 15 32 min Testfall 6 PF916324 8 7 Suchbereich Startwerte Endwerte Ausleuchtung DF 50 33 68 38 72 TL 20 8 29 6 3 CC 200 125 71 80 22 Kriterien Intensitat 35000 58000 HWB 13 34 8 54 Dauer der Justage 18 27 min 178 KAPITEL B TESTF LLE
140. en Funktionswertes Intensitat mMoveToDistance u fPosition while mIsMoveFinish fu MeasureIntensity nMeasureCount else if fu lt fv C 2 ALGORITHMUS UND KERNFUNKTIONALITAT TRANSFORMATIONCLASS 213 a u li Intervallgrenze nach rechts verschieben usv v 1 GOLD a GOLD b neue re Intervall Position fu fv Bestimmung des neuen Funktionswertes Intensitat mMoveToDistance v fPosition while mIsMoveFinish fv MeasureIntensity nMeasureCount Intensit t amp Position zur ckliefern fInt fv fDFPos v fPosition Position angefahren 214 KAPITEL KOMMENTIERTE QUELLTEXTE C 3 Mathematische Hilfsklassen C 3 1 matrix h matrix h definiert die Matrix Vektor und MatrizenListe Klassen Dabei enth lt das Array alle Elemente der Matrix Das wird erreicht indem die Zeilen der Matrix hindereinander gespeichert werden d h Zeile 1 Zeile 2 Zeile n ifndef __MATRIX_H define __MATRIX_H Die Matrix Bibliothek wurde f r Borland C 5 0 das den C Standardtyp bool f r Boolean Variablen unterst tzt entwickelt Um die Bibliothek aber unter Borland C 4 5 bersetzen zu k nnen m ssen die folgenden include define Zeilen eingeschoben werden in windows h ist der Win API Typ BOOL definiert include lt windows h gt define bool BOOL define false FALSE define true TRUE Konstanten fuer Reihenfolge der Transformationen const
141. en Intervallgrenzen auf den einzelnen Ach sen das Intensit tsmaximum gesucht werden soll Ausgangspunkt ist die aktuelle Position der Antriebe Das Suchintervall auf den einzelnen Achsen ergibt sich aus akt Position gegebener Wert und akt Position gegebener Wert Das Programm testet ob die Suchintervalle auf den einzelnen Achsen der Antriebe die vorgegebenen Softwareschranken nicht berschreiten An genommen die Schranken werden durch die Intervallangabe berschritten so stellt das RTK Steuerprogramm die Grenzen kleiner ein Dadurch k nnen die Motoren die Softwareschranken nicht berfahren Die vorgegebenen Wer te f r den Suchbereich sind durch mehrere Tests an unterschiedlichen Proben getestet worden und haben sich als g nstige Einstellung f r den Justagevor gang herauskristallisiert Vorsicht sollte bei der Wahl des Intervalls f r den Kollimators geboten sein denn wenn das Suchintervall f r diese Achse zu gro oder zu klein gew hlt wird dann kann es passieren da die Automa tische Justage nicht das erhoffte Ergebnis liefert Ein Wert von 150 scheint gut geeignet zu sein Im Dialogfenster Automatische Justage besteht au erdem die M glich keit durch Anklicken des Hilfe Knopfes die Online Hilfe aufzurufen Die Online Hilfe beinhaltet die hier beschriebenen Anleitungen f r den Nutzer Durch Bet tigen des Beenden Knopfes kann der Nutzer den Dialog ver lassen und gelangt wieder ins Hauptfenster de
142. en gewesen w re Denn mehr mals wurde das Intensit tsmaximum erst nach einem Einbruch und anschlie Bendem Anstieg der Intensit tswerte gefunden Testreihe mit Probe SiGe Schicht auf Silizium PF916324 8 8 Testfall 1 2 3 4 5 6 7 8 Intensit t 43000 49000 42000 44000 55000 48000 41000 51000 HWB 12 29 10 49 11 8 10 9 9 29 10 4 12 84 9 49 Ausleucht 90 100 90 100 100 100 90 100 Dauer min 14 24 15 57 16 06 16 47 17 48 17 52 18 13 19 07 T T T T Diese Probe lieferte fast durchg ngig gute Ergebnisse mit allen Testf llen Allerdings mu te f r eine komplette Ausleuchtung der Kollimator ber einen gr eren Bereich verstellt werden Dies machte sich bei den Testf llen be merkbar die im Suchbereich f r den Kollimator 100 oder mehr Mikrometer zu Verf gung stellten Eine Halbwertsbreite von ca 10 Winkelsekunden ist ein guter Wert Testreihe mit Probe PF916324 04 20 Testfall 1 2 3 4 5 6 T 8 Intensit t 53000 53000 52000 62000 61000 64000 52000 51000 HWB 10 6 10 57 11 1 8 07 8 35 7 85 11 21 11 24 Ausleucht 90 90 80 100 100 100 80 80 Dauer min 15 18 14 17 17 09 17 48 15 24 18 52 15 23 18 29 j T T Bei dieser Probe f hrten nur die Testf lle zum Ziel die im Suchbereich eine gro e Kollimatorverstellung zulie en Die
143. en in die N he des Maximums zu gelangen Im n chsten Tesfall wird deshalb die Anzahl der Durchl ufe erh ht Testfall 2 Dialogparameter Toleranz 1 Suchbereich Durchl ufe 5 DF 20 max Intensit tsdiff aus TL 20 Anzahl der Messg 2 CC 100 Startwerte Endwerte Ausleuchtung DF T TT DF k A TL 5 23 TL k A CC 50 CC k A Intensit t 23500 Intensit t 229000 HWB 22 43 HWB k A Dauer der Justage ca 9 min Bemerkung Die Startwerte waren dieselben wie im Testfall 1 bis auf die Anzahl der Durchl ufe und der Intensit tsmessungen Bei diesem Test st rz te das Programm am Ende der Justage ab Die Ursache wurde lokalisiert und es stellte sich heraus da der Absturz nicht dem Programm anzulasten war Der Testdurchlauf war jedoch so weit fortgeschritten da eine Einsch tzung der Justagedauer und Probenausleuchtung m glich war Bei der Analyse des Logfiles fiel auf da der Algorithmus beim Regeln des Kollimators die falsche Richtung w hlte Die letzte Intensit t betrug ca 22000 w hrend das Maxi 106 KAPITEL 8 TEST mum des Justagelaufs bei 29000 lag Der ber zwei Messungen gemittelte Intensit tswert hat nach Auswertung der Protokolldatei keine Ausrei er zu kompensieren gehabt und ist nicht urs chlich f r die schlechte Justage verantwortlich Die unterschiedlichen Startwerte der folgenden Testl ufe sind dadurch be gr ndet da durch den Absturz und nachfolge
144. er Rest wird geerbt An dieser Stelle soll nur das Klassendiagramm stehen Im Kapitel 7 wird genauer auf die Dialogpro grammierung im bestehenden Softwareprojekt eingegangen Metaklasse TModalDialog hWindow HWND hInstance HINSTANCE dialogFunc FARPROC RC_Name char digInstance TModalDialog bCallUp bool bCanOpen bool TModalDlg in DigName char TModalDlg GetHandle HWND ExecuteDialog in HWND int DIg_Onlnit in HWND in HWND in LPARAM bool DIg_OnCommand in HWND in int in HWND in UINT DIg_OnHScrollBar in HWND in HWND in UINT in int DIg_OnVScrollBar in HWND in HWND in UINT in int DIlg_OnTimer in HWND in UINT CanClose bool Interrupt LeaveDialog bool Implementationsklasse TAutomaticAngleControl Sensor TDevice bIntensityDiffActive bool TAutomaticAngleControl Dlg_Onlnit in HWND in HWND in LPARAM bool Dlg_OnCommand in HWND in int in HWND in UINT LeaveDialog bool Abbildung 6 4 Klassendiagramm der neuen Dialogklasse Das Attribut Sensor ist eine Instanz der Klasse TDevice Es wird ben tigt um festzustellen ob das Z hlerfenster des Detektors ge ffnet ist Das Z hler fenster mu dargestellt sein um Werte vom Detektor lesen zu k nnen Eine n here Beschreibung zur Problematik des Auslesens der Werte vom Detektor erfolgt im Abschnitt 7 2 6 3 STATISCHE STRUKTUR DER UTOMATIS
145. er Versuchsappa ratur liegende Probe f r eine Topographieaufnahme korrekt eingestellt sein Die Erweiterung der bestehenden Software um die neue Funktion Auto matische Justage erfolgte gem den Richtlinien des Software Engineering Dieser Entwicklungsproze unterteilte sich in zwei Teilabschnitte Zun chst mu te in der ersten Phase dem Reverse Engineering die Soft ware analysiert und dokumentiert werden da zu der bestehenden Softwa re keine verwertbare Dokumentation vorhanden war Die gewonnenen Er kenntnisse zur verwendeten Hardware Kapitel 2 und ber die vorhandenen Schnittstellen zur Hardwareansteuerung Anhang A sowie die Kommentie rung der untersuchten Quelltexte bildeten das Fundament f r die zweite Pha 132 KAPITEL 10 ZUSAMMENFASSUNG UND WEITERF HRENDE PROBLEME se der Entwicklung das Forward Engineering Der Softwareerweiterungsproze durchlief die Phasen Analyse und Defi nition Design Implementation und Test Im Laufe dieser Phasen entstan den als Teile dieser Diplomarbeit mehrere Dokumente die im Rahmen des Projektes Software Sanierung weitere Verwendung finden Zu diesen Do kumenten geh ren das Pflichtenheft und die Nutzerdokumentation der neu implementierten Funktion Automatische Justage Die Programmfunktion zur automatischen Einstellung von Proben ist in das bestehende Steuerprogramm eingebettet worden und ber den gesonder ten Punkt Automatische Justage im Untermen
146. er grob vorjustierten Probe 8 5 ZUSAMMENFASSUNG DES TESTS 119 Der Test der Dialogschnittstelle der neu implementierten Funktion zeig te da Eingabefehler bei der Parameterfestlegung sicher abgefangen werden Bereichs berschreitungen werden sinnvoll verarbeitet so da im Fall von fehlerhafter Bedienung eine Ausf hrung der automatischen Justage gew hr leistet bleibt und das Hauptprogramm nicht beeintr chtigt wird Durch den Test offengelegte Probleme der Dialogsteuerung sind sofort analysiert und gel st worden Der Dialog kann sicher ausgef hrt werden und reagiert feh lertolerant und robust auf die Eingaben des Anwenders Beim Testen des Algorithmus der Automatischen Justage kam es dar auf an den folgenden Fragen nachzugehen Welche Einstellungen sind f r eine Justage g nstig und Welche Erfolgsquote erreicht die Automatische Justage Aufgrund der Testergebnisse wurden die folgenden Voreinstellungen f r die Dialogparameter als Kompromi zwischen Justagedauer und sicherheit gesetzt e Toleranz 0 1 Durchl ufe 5 Anzahl der Messungen 3 e Max Intensit tsdifferenz deaktiviert Suchbereich DF 50 TL 20 CC 100 Bei 5 von 6 Proben konnte die Automatische Justage mit diesen Einstel lungen die Probe so justieren da sie f r einen Topographievorgang korrekt eingestellt war Problematisch ist f r den Justagealgorithmus wenn der Suchbereich zu gro gew hlt wird Dies gilt i
147. erOK 144 mlMoveToDistance 141 mlParsingAxis 143 mlSaveModuleSettings 145 mlSetAngleDefault 146 234 INDEX mlSetAxis 139 Dialoge mlInquireReferencePointDlg 147 mlOptimizingDlg 148 mlPositionControlDlg 149 mlSetParametersDlg 149 Controllerkarte C 812 19 C 832 20 Datentyp TMatrix 73 TMatrizenListe 73 TVektor 73 TransformationClass 71 Design 59 Detektor 10 21 ansteuerung 94 0 dimensionaler 95 122 2 dimensionaler 104 Einstellungen 125 Test 100 Dialogelemente 81 Dialogklasse TAutomaticAngleControl 70 83 TModalD1g 70 modale 68 Dialogparameter 60 Dialogprogrammierung 79 Dialogsteuerung 66 Diffraktometrie 2 Durchl ufe 127 Einstellungen probenabh ngige 98 probenunabh ngige 98 Entwicklungsumgebung 15 79 Event Handler 89 Fehleranf lligkeit 22 Flussdiagramm 60 Fotoplatte 30 Freiheitsgrade 10 60 Gangunterschied 3 Gesamttransformationsmatrix 53 Gradient 46 Gradientenverfahren 46 Halbwertsbreite 5 13 30 messen 129 Handler 85 Implementation 94 Initialisierungsdatei 14 Intensit tsmessungen 63 Anzahl der 128 Intensit tsschwankungen 63 Intensit tsverteilung 47 Interferenz 2 4 Intervallgrenzen 63 Justage manuelle 27 azimutale Rotation 123 iterativer Proze 30 Relative Null 142 146 154 161 162 Referenzpunktlauf 147 153 Klassendiagramme 69 Kollimator 6 gekr mmter 8 Sch tzfunktion 134 Kommunikation Hardware
148. ers auf einen anderen Halbleiter aufgebracht wird Netzebenen sind periodisch und dicht mit Atomen besetzte Ebenen im Kristall 1 2 PHYSIKALISCHER HINTERGRUND Verspannungen zwischen Schichten mit unterschiedlichen Netzebenen abst nden ausgeglichen werden Diese Verspannungen werden dadurch hervorgerufen da die Atome der einen Schicht keine Bindung mit den Atomen der anderen Schicht eingehen Zur Erfassung von Ver setzungen nutzt man aus da die Reflexionskurve perfekter Kristalle bei fester Wellenl nge der einfallenden Strahlung und festem Netzebe nenabstand sehr schmal ist Halbwertsbreite typischerweise nur einige Winkelsekunden Gitterdeformationen um einen Kristalldefekt rufen lokale Intensit ts nderungen hervor und werden so im Topographiebild sichtbar Im folgenden sollen die Grundlagen f r die Zwei Kristall R ntgentopographie erl utert werden 1 2 2 Bragg Reflexion Die physikalische Grundlage der Me methode zur Untersuchung von Kristall strukturen ist die Beugung von R ntgenstrahlung an den Kristallgitterbau steinen Diese Beugung kann auch als Reflexion der R ntgenstrahlen an den atomaren Punktladungen beschrieben werden Durch die Kristallgitterbau steine lassen sich in verschiedene Richtungen quidistante Ebenenscharen legen Diese Ebenenscharen werden als Netzebenen bezeichnet Eine wichtige physikalische Eigenschaft die man f r R ntgenbeugungs untersuchungen z B die Zwei Kristall R ntgentopog
149. ert von dAngel wird als R ckgabewert geliefert double Wert der Motor Membervariablen dAngle ak tuelle Winkelposition des aktiven Antriebs mGetDistance 156 KAPITEL A SCHNITTSTELLENBESCHREIBUNG DER MOTORENANSTEUERUNG mGet Value Syntax double WINAPI mGetValue TValueType Beschreibung Abh ngig vom Wert des Parameters vtype wird der dazugeh rige Wert der Motorgr e der aktiven Ach se zur ckgeliefert Der Typ TValueType deklariert in comhead h kann folgende Werte annehmen Distance Winkelstellung des Motors MinDistance MaxDistan ce Speed Width Winkelschrittweite Die Funktion wertet nur die Membervariablen der Motoren aus Es findet kein Zugriff auf die Hardware statt Parameter TValueType vtype Parameter gibt an welcher Motor wert zur ckgeliefert werden soll R ckgabewert double Wert der durch den TValueType Parameter be stimmten Membervariablen des aktiven Antriebs wo bei folgende Zuordnung stattfindet Distance dAngle MinDistance dAngleMin MaxDistance dAngleMaz Speed dSpeed unter Ber cksichtigung von dw Velocity bzw Width dAngle Width Siehe auch mGetDistance mlGetValue mlGetDistance mSetValue mGetUnitType Syntax TUnitType WINAPI mGetUnitType void Beschreibung Diese Funktion ermittelt welche Einheit f r den ak tuellen Motor zur Angabe von Positionen verwendet wird indem der Wert der Motor Membervariablen eU nit zur ckgeliefert wird Der Typ von e
150. ert werden und danach immer mit Beugung fein DF nachgeregelt wird Dieses Prinzip wurde als Ausgangspunkt f r den Algorithmus der Automatischen Justa ge benutzt Des weiteren wird vorausgesetzt da sich die Probe schon im Reflex aufh lt Nun zur formalen Beschreibung des Algorithmus 1 Achse CC des Koordinatensystems auf maximale Intensit t stellen 2 Achse DF des Koordinatensystems danach ebenfalls auf maximale Intensit t stellen 3 Der Vektor vom Koordinatenursprung O0 zum Punkt P max CC maz DF bestimmt die neue Richtung Transformation des Koordinatensystems so da der Vektor v die neue Achse mit der Bezeichnung CC V im neuen Koordinatensystem KOTY bildet Der Punkt P max CC max DFW bildet nun den neuen Koor dinatenursprung O 4 CC bleibt fest Optimierung f r DF und TL TL auf Maximalintensit t stellen 5 DF auf Maximalintensit t stellen 5 2 ALGORITHMUS AUTOMATISCHE JUSTAGE 49 6 Der Vektor U 4 vom Koordinatensystemursprung O zum Punkt P r lmaz TLr V max DF ist neuer Richtungsvektor Transformation des Koordinatensystems K zu K wobei der Vektor die neue Achse TL 2 in K wird Der neue Koordinatenursprung O liegt jetzt im Punkt Par mas TLr V max DFr d Jetzt iteriert der ganze Algorithmus und w rde im ersten Punkt fortfah ren Der Algorithmus wird so lange durchlaufen bis eine Abbruchbedingung greift
151. ervallgrenze von CC aus dem Dialog auslesen GetDlgItemText hwnd ID_CC_Intervall buf 8 Norzeichen abfangen MaxCC fabs atof buf Bereichspr fung bei Fehler Defaultwert if Maxcc lt 1 0 MaxCC gt 500 0 Defaultwert MaxCC 150 0 R ckschreiben des korrigierten Wertes in den Dialog sprintf buf 0f MaxCC SetDlgItemText hwnd ID_CC_Intervall buf Werte f r die Anzahl der Messungen pro Intensit tsbestimmung aus dem Dialog auslesen GetDlgItemText hwnd ID_MeasureCount buf 8 Norzeichen filtern nMeasureCount fabs atoi buf Bereichspr fung untere obere Grenze if nMeasureCount lt 1 nMeasureCount 1 else if nMeasureCount gt 6 nMeasureCount 6 Riickschreiben des korrigierten Wertes in den Dialog sprintf buf d nMeasureCount SetDlgItemText hwnd ID_MeasureCount buf 192 KAPITEL KOMMENTIERTE QUELLTEXTE FORWARD_WM_COMMAND GetHandle cm_initialize 0 0 PostMessage break case cm_initialize Initialisierung des Transform Objektes mit den Achsen Suchintervallen Transform gt Initialize MaxDF MaxTL MaxCC Softwareschranken f r die Maximumsuche bestimmen und abspeichern Wertebereich Transform gt GetOrigPosBorders Ausgangsintensit t auslesen ohne Ausgabe in Logfile dazu MeasureIntensity ohne bWriteLogfile if bWriteLogfile bWriteLogfile false MaxIntensity Intensity Transform
152. es Pflichtenheftes 1 sind grafische Entw rfe von Benut zerschnittstellen normalerweise nicht vorgesehen Automatische Justage Abbildung 4 2 Enwurf des Dialogfensters der Programmfunktion Automa tische Justage gem Pflichtenheft Kapitel 5 Entwicklung eines Justagealgorithmus 5 1 Vorbetrachtung F r die automatische Justage werden die Antriebe Beugung fein Tilt und CC verwendet Zus tzlich werden die Intensit tswerte des Detektors ben tigt Ver nderungen der Antriebe wirken sich auf die Intensit tswerte des Detektors aus Ziel ist es die am Detektor gemessenen Intensit tswerte zu maximieren Speziell auf das Problem bezogen stellt sich die Aufgabe mittels dieser nichtlinearen Zielfunktion wie folgt dar f DFxTLx CC Intensit t 5 1 mit DF TL CC Intensit t R Es handelt sich bei der Justage der Me probe um eine nichtlineare Opti mierungsaufgabe mit drei Ver nderlichen bei der die Zielfunktion maximiert werden mu f maz mit T E R 5 2 46 KAPITEL 5 ENTWICKLUNG EINES JUSTAGEALGORITHMUS 5 1 1 Mathematische Verfahren In der Mathematik gibt es viele verschiedene iterative Verfahren zum L sen nichtlinearer Optimierungsaufgaben Dabei gehen die meisten nach folgen dem Schema vor angelehnt an 18 S 241 ff Man geht von einem zul ssigen Punkt 7 M mit M C R aus wobei M der Suchbereich i
153. es durchlaufen werden Da es keinen geeigneten Nachweis daf r gibt ob es sich bei einer bestimmten Kristallprobenstellung um den Peak handelt m ssen andere Abbruchverfahren angewendet werden Eine M glichkeit ist die Annahme da nach einer bestimmten Anzahl von Durchl ufen der Peak erreicht wird bzw sich in unmittelbarer Umgebung befindet Ist die Justage nach Erreichen der Wiederholungen nicht erfolgreich ist vom Anwender ein h herer Wert zu w hlen Im Dialogfenster wurde f r diesen Parameter die Bezeichnung Durchl ufe gew hlt siehe Anhang dieses Pflichtenheftes Angemessene Werte f r den Parameter k nnen erst sp ter durch entspre chende Testl ufe in der Praxis festgelegt werden 4 3 Maximale Intensit tsdifferenz Die maximale Intensit tsdifferenz gibt an um wieviel kleiner die Intensit t im Vergleich zum vorherigen Durchlauf sein darf Ist diese Intensit tsschran ke unterschritten wird zum letzten maximalen Intensit tspunkt aus dem vorherigen Durchlauf zur ckgekehrt und die automatische Justage beendet Damit existiert ein weiteres Abbruchkriterium Dar ber hinaus kann es pas sieren da der Algorithmus zwischenzeitlich durch Me fehler verursachte Abweichungen von der Maximalrichtung ansteuert Diese Ausrei er sollen durch die Pr fung der Intensit tsdifferenz erkannt werden Die Pr fung der maximalen Intensit tsdifferenz kann separat aktiviert wer den Eine Angabe f r den Wertebereich der Differen
154. es zu einem Aufruf w hrend der Abarbei tung der Timerfunktion Dies w rde die Abarbeitung nicht behindern aber nach der Bearbeitung kommt es gleich wieder zur Abarbeitung eines Ti merevents denn an erster Stelle in der Nachrichtenschleife w re immer eine WM _TIMER Nachricht Dadurch gebe es nur noch Aufrufe der Dlg OnTimer Funktion Die normale Funktionalit t w re nicht mehr m glich da nur stets die Timerfunktionen ausgef hrt w rden Auf unterschiedliche Timer wird in der Dlg_OnTimer Funktion mit ent sprechenden Event Handlern reagiert Realisiert wird dies mit Hilfe von switch case Anweisungen die die ID s der Timer auswerten Da es auch an dere Timerevents vom System gibt ist diese Form der Auswertung unbedingt notwendig Als Beispiel soll an dieser Stelle die Bearbeitungsfunktion f r Ti merevents aus der Dialogklasse TAngleControl Dialog f r die manuelle Jus tage dienen Alle 100 Millisekunden wird bei ge ffnetem Dialogfenster Ma nuelle Justage ein Timer ausgel st und eine Nachricht verschickt Wird in der Nachrichtenschleife eine WM_TIMER Nachricht verarbeitet dann f hrt die Funktion Dlg_OnTimer dieser Klasse die Bearbeitung durch void TAngleControl Dlg_OnTimer HWND hwnd UINT id char buf MaxString double dDistance switch id case TimerIdInformation KillTimer hwnd TimerIdInformation if mIsMoveFinish if mGetDistance dDistance SetCursor LoadCursor NULL IDC_WAIT SetTimer
155. f gt man jedem Punkt des 3 dimensionalen Raumes eine vierte Koordinate hinzu Bisher wurde ein Punkt in kartesischer Schreibweise notiert P x y z mit z yzER Der entsprechende Punkt in homogenen Koordinaten hat folgende Form Py h xz h y h z h hER h 0 beliebig 54 KAPITEL 5 ENTWICKLUNG EINES JUSTAGEALGORITHMUS Die einfachste M glichkeit einen Punkt zu homogenisieren ist die da man h 1 setzt Um einen Punkt aus dem 3 dimensionalen Raum in homogener Schreibweise zu erhalten mu man ihm in der vierten Koordinate eine 1 anf gen Die Translation kann nun mit Hilfe der homogenen Koordinatenschreib weise auch als multiplikative Matrixoperation beschrieben werden In Ma trixdarstellung hat die Translation eines Punktes P x y z um den Vektor T T T folgendes Aussehen 100 T x x T 0107 es y Ty 001 T z T 000 1 1 1 Analog wie im vorhergehenden Abschnitt gestaltet sich die Rotation Rotation eines Punktes um die x Achse mit dem Winkel a 1 0 0 0 x 0 cos a sin az 0 y y cos a z sin az 0 sin a cos az 0 z y sin a z cos a 0 0 0 1 1 1 Rotation eines Punktes um die y Achse mit dem Winkel ay cos a 0 sin a 0 x cos ay 2 sin a 0 A g vl y sin a 0 cos ay 0 z sin a z cos ay 0 0 0 1 1 1 Rotation eines Punktes um die z Achse mit dem Winkel a cos a sin a 0 0 a x cos a y sin a sin a cos az 0
156. fga ben die f r die Durchf hrung der Automatischen Justage notwendig sind 86 KAPITEL 7 PROBLEME DER IMPLEMENTATION Diese Aufgaben wurden in Kapitel 6 beschrieben wobei die Abb 6 1 zum Verst ndnis der Abfolge hilfreich ist a Start Justage Knopf gedr ckt Na A cm_start_justage Erstellt ein neues Objekt der __ _ Klasse TransformationClass WM_COMMAND Nachricht Liest die Parameter vom _ Dialog ein cm_set_parameters Initialisiert das TransformationClass Objekt und weist den Membern die Startwerte zu Handler der im Quelltext im initialize einem case Zweig entspricht Entscheidet welche Achse zuerst betrachtet werden soll oder startet den Nachbericht f r _ _ die Justage wenn die vorgegebene Anzahl ie von Durchl ufen erreicht wurde ae cm_choose_axis cm_optimizing_CC cm_optimizing_TL Ruft die Berechnung der Koordinatensystem cm_optimizing_DF a transformationen auf und pr ft die Abbruchkriterien jr u 4 ee cm_post_processing _ _ cm_ calculate Anfahren des ermittelten Intensitatsmaximums und Ausgabe der Justagedaten Abbildung 7 5 Kontrolle der Automatischen Justage durch das Senden von Nachrichten und der damit verbundenen Nacheinanderausfiihrung der entsprechenden Handler case
157. file WriteToJustageLog buf aktuelle Intensit t auslesen und in ActIntensity speichern ActIntensity Intensity Transform gt MeasureIntensity nMeasureCount 196 KAPITEL KOMMENTIERTE QUELLTEXTE Logging sprintf buf Intensit t 2f r nSchritte f r Suche d r n ActIntensity Intensity steptstep1 Test ob neues Intensit tsmaximum erreicht wurde if ActIntensity Intensity gt MaxIntensity Intensity Falls ja neue Maximallntensit t merken MaxIntensity ActIntensity Infos f rs Statusfenster sprintf buf1 NEUES MAXIMUM GEFUNDEN r n strcat buf buf1 wenn Abbruch Kriterium Intensit tsdifferenz existiert else if bIntensityDiffActive Test ob akt Intensit t kleiner als letzte Intensit t dazu Liegt Abweichung der letzten Intensit t LastIntensity von akt Intensit t ActIntensity auSerhalb des Limits if LastIntensity Intensity fIntenseDifferenz gt ActIntensity Intensity Falls ja Zur cksetzen der Information der aktuellen Intensit t ActIntensity LastIntensity Test ob absoluter Maximalwert schon fr her erreicht wurde if LastIntensity Intensity lt MaxIntensity Intensity Falls ja alle Int Variablen auf max Intensit t setzen LastIntensity MaxIntensity ActIntensity MaxIntensity Zur ckfahren der Antriebe an Position mit max Intensit t mlSetAxis nMotorTL mMoveToDistance LastIntensity TL
158. funktion en Motorverwaltung mlIsAxisValid AchsenTyp mlGetIdByName AchsenTyp Motoransteuerung mlSetAxis MotorID mIsMoveFinish mStopDrive mGetDistance Winkel mlGetValue MotorID MotorvariablenTyp mMoveToDistance Winkel Detektorverwaltung dlIsDeviceValid GeraeteTyp Detektorsteuerung TDevice MeasureStart TDevice PollDevice TDevice GetData Intensitaet Tabelle 6 1 berblick ber ben tigte Schnittstellenfunktionen Da f r die Motorensteuerung ein C Interface existiert das die Funktions anforderungen der Programmkomponente Automatische Justage erf llt mu nicht auf die speziellen Methoden der Motorklassen zugegriffen werden Im Gegensatz dazu ist das Interface der Detektorsteuerung nicht ausreichend Deshalb ist in diesem Fall eine n here Analyse der von TDevice abgeleite ten Klassen n tig Die Schwierigkeiten die sich daraus ergeben sind im Abschnitt 7 3 ausgef hrt Die Steuerung der automatischen Justage erfolgt durch ein Dialogfenster 68 KAPITEL 6 DESIGN das keine weiteren Zugriffe auf die Anwendung zulassen soll Das bedeutet da die Dialogsteuerung von einer modalen Dialogklasse bernommen wird Von der bereits vorhandenen Klasse TModalDlg wird eine Dialogklasse f r die Steuerung der automatischen Justage abgeleitet Die ermittelten Klassen und Methoden m ssen im weiteren Verlauf auf die zugrundeliegende Quelltextstruktur zur
159. ge vi 1 html c J Foley et al Einf hrung in die Computergrafik Einf hrung Metho den Prinzipien Addison Wesley Bonn Paris Reading Massachusetts 1994 H St cker Hrsg Taschenbuch mathematischer Formeln und moderner Verfahren Verlag Harri Deutsch Thun Frankfurt am Main 2 berarb Auflage 1993 7 P Rennert Hrsg Kleine Enzyklop die Physik VEB Bibliographisches Institut Leipzig Leipzig 1 Auflage 1986 230 LITERATURVERZEICHNIS 8 10 11 12 13 14 15 U Sacklowski K Bothe Praxisn he durch Reverse Engineering Projekte Erfahrungen und Verallgemeinerungen 7 Workshop Software Engineering im Unterricht der Hochschulen SEUH Ziirich Schweiz Febr 2001 http www informatik hu berlin de Institut struktur softwaretechnikII lehre PROJ_SE_WS98 Veroeffentlichungen SEUH 2001 pdf R Kohler Emails mit der Physik Anforderungen an das RTK Steuerprogramm Humboldt Universit t zu Berlin Institut f r Physik Arbeitgruppe R ntgenbeugung an d nnen Schichten 23 04 1999 http www informatik hu berlin de Institut struktur softwaretechnikII lehre PROJ_SE_WS98 Emails 23 04 99 txt R Kohler Emails mit der Physik Anfrage an den Lehrstuhl Softwaretechnik Humboldt Universit t zu Berlin Institut f r Physik Arbeitgruppe R ntgenbeugung an d nnen Schichten 25 06 1998 http www informatik hu berlin de Institut struktur softwaretech
160. geben wird double distance Winkel um den der Motor bewegt werden soll FALSE Fehlerfall Die Laufzeitbibliothek motors d11 konnte nicht korrekt initialisiert werden d h die Kon figurationsdatei wurde nicht erfolgreich eingelesen TRUE Da keine Fehlerkontrolle bei der Funktions ausf hrung stattfindet ist die Funktion in jedem an deren Fall auch bei ung ltiger Winkelangabe im Para meter distance erfolgreich mMoveToDistance mlMoveToDistance mGetDistance mSetLine Syntax Beschreibung Parameter Riickgabewert BOOL WINAPI mSetLine int channel BOOL state Mit dieser Funktion wird zur Zeit der Digital Port der C 812 Steuerkarte angesprochen int channel Nummer des Kanals der als Ausgangs port eingestellt werden soll Korrekte Werte fiir channel liegen zwischen 1 und 16 BOOL state gibt an ob der Ausgangskanal auf 0 Volt logisch 0 state FALSE oder 5 Volt logisch 1 state TRUE gesetzt werden soll TRUE Erfolgreiche Kommunikation ber den Digital Port der C 812 Steuerkarte 152 KAPITEL A SCHNITTSTELLENBESCHREIBUNG DER MOTORENANSTEUERUNG FALSE Fehlerf lle a Die Laufzeitbibliothek motors d11 konnte nicht kor rekt initialisiert werden b Der Parameter channel liegt au erhalb des zul ssigen Bereichs c Die notwendigen Motorkommandos konnten nicht ohne Probleme an die Motorsteuerkarte bermittelt werden Siehe auch mIsMoveFini
161. gentopographie 1 2 4 Gekr mmter Kollimator 1 3 Der Versuchsaufbau 2 wat oP Ge ak ee a ete HEA er 2 Das Steuerprogramm 2 1 Aufgabe der Software 2 a date I a aa len Seen amp S 2 2 Allgemeine Softwarestruktiir au r s a ee ewe aa 2 2 1 Programmdateien oh eck au ee eS Se 2 2 2 Die Initialisierungsdater ise ae Gok ee eo te 2 2 3 Quelltext und Entwicklungsumgebung 23 Hardware sonses Enden Rohe Med Meee Eo Hee Ee Zal Motor last 2 5 Ba he eh ag ok RI A 2 3 2 Detektoren Ne Tbs ee berg as ag hee cd OR ME A ER AG 2 4 Bewertung der Software 2 02 2 02 000 2 4 1 Korrektheit Robustheit und Zuverl ssigkeit 2 4 2 Dokumentation 9 a ea 243 Wartbark it i ar un toe oh a ee eee bd Ce Hebd Be S 2 4 4 Benutzungsfreundlichkeit 2 4 5 Zusammenfassung der Bewertung 3 Topographie mit dem Steuerprogramm 3 1 Manuelle Justage 2 wa lt 0 in ae ek ek OS Sn OE SH 3 2 Topographievorgang am Rear tr 4 Anforderungsdefinition Automatische Justage 4 1 Ausgangspunkt sa 2 Se be Dee of ek a ee hog SG eg 4 2 Problemdarstellung 22 Cm nn 13 13 14 14 14 15 19 19 21 21 21 23 23 24 24 27 21 30 VI INHALTSVERZEICHNIS 4 3 Anforderungsspezifikation 0000 4 2 4 Bllichteniheit 2 4 an an te a aol 9 Sy Kp wns A Avg ae gh UP eas ya Entwicklung eines Justagealgorithmus 9 1 Vorbetrachtung scs S
162. gestellt werden sind eine ergonomische Benut zeroberfl che die permanente Verf gbarkeit von Hilfefunktionen und die An passung der Art der Interaktionen an den Kenntnisstand des Nutzers Das RTK Steuerprogramm besitzt keine permanente Hilfefunktion Le diglich zum Dialog Manuelle Justage gibt es eine kleine Hilfe die die Benutzung der Tastaturk rzel erkl rt Die Benutzeroberfl che ist nicht in allen Dialogfenstern ergonomisch gestaltet Oft wurden Schalter mit glei cher Funktionalit t aber unterschiedlicher Bezeichnung verwendet z B Ab bruch und Beenden Des weiteren gibt es Dialogfenster in denen Funk tionalit t die nicht existiert assoziiert wird Als Beispiel ist hier der Schie beregler auf der Laufleiste im Dialog Manuelle Justage zu nennen 2 4 5 Zusammenfassung der Bewertung Die Bewertung des RTK Steuerprogrammes mit Hilfe der Qualit tskriterien deckt gravierende M ngel auf Die folgende bersicht fa t die M ngel zu 2 4 BEWERTUNG DER SOFTWARE 25 sammen e fehlende Dokumente Produktdefinition Pflichtenheft Systemdokumentation Benutzerhandbuch unvollst ndige Beschreibung der Initialisierungsdatei e M ngel am Quelltext keine bzw schlechte Kommentierung der Quellen ung nstige Strukturierung der Quellen keine durchg ngige objektorientierte Implementierung e Mangel aus Benutzersicht keine permanente Hilfe Fehleranfalligkeit
163. gg Reflex optimal getroffen Allerdings gibt es keine Grenzwerte anhand derer man bestimmen kann ob die maximale Strahlungsintensit t gefunden wurde Beim manuellen Ein stellen der Me probe kann man nur von Erfahrungswerten f r die H he der Strahlungsintensit t ausgehen Als Qualit tskriterium dient die Halbwerts breite der Rockingkurve nach der Justage Da die Halbwertsbreiten f r die einzelnen Me proben vorher schon bekannt sind kann mit ziemlicher Sicher heit festgestellt werden ob der Bragg Reflex korrekt eingestellt wurde Die Schwierigkeit der Justage der Me probe liegt darin da die Probe frei im Raum gedreht werden mu um den Bragg Reflex optimal einzustel len Hinzu kommt die Einstellung f r die Kr mmung des Kollimators Da so gut wie jede Probe eine leichte Kr mmung aufweist ist die Einstellung des Kollimators unerl lich Damit hat man 4 Freiheitsgrade die korrekt eingestellt werden m ssen 28 KAPITEL 3 TOPOGRAPHIE MIT DEM STEUERPROGRAMM Bisher mu die Justage der Me probe mit Hilfe des Steuerprogramms manuell durchgef hrt werden Dazu steht im Steuerprogramm ein Dialog zur Verf gung Anhand dieses Dialogs soll erl utert werden wie die manuelle Justage der Probe funktioniert Ki H 2 Winkel Neuer Winkel Sekunden Antrieb Schnellwahl Relative Nulljaurneben Null autheben _Halbwertsbreite messen messen eugung Fein _ Relative Null setzen_ Null setzen oOo mt Aktueller Antrieb
164. gsverfahren dem Gradientenverfahren wird auf der Grundlage einer stetig differenzierbaren Funktion mittels partieller Ableitungen der Gradient V f z bestimmt Dieser gibt die Richtung an in der die Funktion am steilsten ansteigt Im zuvor beschriebenen allgemeinen Verfahren w re dies der Punkt 1 die Bestimmung der Suchrichtung Auf dieser Richtung wird anschlie end das eindimensionale Teilproblem maxi miere A f z1 AV f Z gel st Ein weiteres Verfahren welches auch fiir die nichtlineare Optimierung benutzt wird ist das Verfahren der konjugierten Richtungen Dort wird die Zielfunktion in der N he ihres Maximums durch die Bildung einer qua dratischen Funktion approximiert Das geschieht durch die Bildung einer 5 1 VORBETRACHTUNG 47 Hesse Matrix wiederum auf der Grundlage partieller Ableitungen Die kon jugierten Richtungen die aufgrund dieser Matrix bestimmt werden k nnen bilden die Suchrichtungen Beide Verfahren das Gradientenverfahren und das Verfahren der konjugierten Richtungen setzen als Zielfunktion eine ste tige differenzierbare Funktion voraus Im Fall der automatischen Justage sind f r die Intensit tsverteilung im Raum keine partiellen Ableitungen zur Bildung des Gradienten bestimm bar Der Grund daf r liegt im Fehlen einer mathematischen Zielfunktion die die Intensit tsverteilung beschreiben w rde Allerdings wird davon aus gegangen da die Intensit tsverteilung auf einer s
165. gszustand der Software wie sie dem Lehrstuhl Software technik bergeben wurde zu Grunde gelegt Das hei t der IST Zustand der Software wird beschrieben und bewertet Au erdem wird die benutzte Hardware bezglich der Topographie und deren Einbindung erl utert Das dritte Kapitel liefert eine Beschreibung wie eine Justage einer Me probe manuell mit dem Steuerprogramm und die anschlie ende Topographie durchgef hrt werden F r eine klare Abgrenzung der neu zu implementierenden Funktion Auto matische Justage wird eine Anforderungsdefinition ben tigt Diese erfolgt im vierten Kapitel mit Hilfe eines Pflichtenheftes Im f nften Kapitel wird ein Algorithmus zum L sen des Problems der automatischen Justierung einer Me probe erarbeitet Es erfolgt eine Be schreibung des mathematischen Problems und es werden Verfahren f r die L sung dieser Art von Problemen vorgestellt Das sechste Kapitel widmet sich dem Design der Softwareerweiterung Der Ablauf der einzelnen Prozesse die w hrend der Automatischen Justage abgearbeitet werden wird beschrieben Au erdem erfolgt eine Auflistung der relevanten Dateien und Funktionen sowie eine statische Beschreibung der Softwareerweiterung mittels UML Klassendiagrammen Des weiteren wird die Einbettung in die bestehende Programmstruktur erl utert Im siebten Kapitel werden Probleme die in der Implementationsphase auftraten besprochen Einen gro en Teil in diesem Kapitel nimmt die Di
166. gt MeasureIntensity nMeasureCount bWriteLogfile true else MaxIntensity Intensity Transform gt MeasureIntensity nMeasureCount Ausgangspositionen der Antriebe an der die Amfangsintensit t gemessen wurde abspeichern MaxIntensity TL Wertebereich OrigTL MaxIntensity DF Wertebereich OrigDF MaxIntensity CC Wertebereich OrigCC LastIntensity wird mit Intensitat 0 initialisiert da noch keine Justage gestartet wurde Positionen wie MaxIntensity LastIntensity MaxIntensity LastIntensity Intensity 0 Zeit zur Bestimmung der Justagedauer getdate amp datum gettime amp zeit Infos ins Logfile schreiben if bWriteLogfile sprintf buf HHHHHHHHHHHHHHHHHHHHHHHHHHHEHHHHREEHHH REE RHA BH HH nAutomatische Justage gestartet 021 021 i 2d 02d 7 02d AE E HEHEHEHE HEHEHEHEHE HEHE HEHEHEHEHE HEHEHEHE HEHEHEHEHE HEHEHEHE HEHEHEHEHE EHE HEHEHEHE HEHEHEHEHE HEHEHE HEHEHEHEHE nMotorpositionen nTL 2f Min 2f Max 2 nDF 2f Min 2f Max 2f nCC 2f Min 2f Max 2f nIntensit t 2f n datum da_day datum da_mon datum da_year zeit ti_hour zeit ti_min zeit ti_sec Wertebereich OrigTL Wertebereich MinTL Wertebereich MaxTL Wertebereich OrigDF Wertebereich MinDF Wertebereich MaxDF Wertebereich OrigCC Wertebereich MinCC Wertebereich MaxCC MaxIntensity Intensity WriteToJustageLog buf Bestimmung der Justageanfangszeitpunktes Uhrzeit in Sekunden
167. h Da es w hrend dieser Testreihen auch einige Abst rze gab die das soll hier nocheinmal betont werden nicht von der Funktion Automa tische Justage hervorgerufen wurden mu ten die Ausgangspunkte in diesen F llen anhand der Anfangsintensit t wieder neu eingestellt werden Notwen dig wurde dies weil die Positionen nach einem Absturz nicht mehr stimmten und die Antriebe einem Referenzpunktlauf unterzogen werden mu ten In den Testdaten ist das daran zu erkennen da die Anfangswerte der Jus tage unterschiedlich zu denen sind die in den vorangegangenen Testf llen aufgef hrt waren Da es sich um eine gro e Anzahl von Testf llen handelt wurden die ge nauen Testdaten in den Anhang B der vorliegenden Arbeit verschoben In diesem Abschnitt sollen nur die genauen Ergebnisse die von Interesse sind dargestellt werden Die wichtigsten Kriterien sollen hier sein e Intensit t e Halbwertsbreite HWB e Ausleuchtung der Probe Test mit einem 2 dimensionalen Detektor mit Monitor Zus tzlich zu den hier ausgewerteten Kriterien wurde die Dauer des jewei ligen Justagevorganges angegeben Anhand der Justagezeiten kann eine ge nerelle Aussage dar ber getroffen werden wie lange ein durchschnittlicher Suchproze dauert F r jede Probe werden die Ergebnisse die bei den jeweiligen Testf llen ermittelt wurden in einer Tabelle dargestellt Testreihe mit Probe CuAsSe auf GaAs Schicht Testfall 1 2 3 4 5 6 7 8
168. hen 6 2 Einbettung in die bestehende Software Die Funktion der automatischen Justage soll in das bestehende Programm eingebettet werden Dazu ist es notwendig das Software Projekt soweit zu analysieren bis ausgeschlossen werden kann da die Integration die bisheri ge Funktionsweise beeintr chtigt Es m ssen also Schnittstellen gesucht wer den ber die eine reibungslose Kommunikation der zu implementierenden Programmfunktion mit den anderen Komponenten der Software gew hrlei stet ist Die f r den Algorithmus der automatischen Justage relevanten Teile des RTK Programms m ssen lokalisiert werden 6 2 1 Architektur Der Anwender sollte bei der automatischen Justage die M glichkeit haben Parameter einzustellen und zu ver ndern sowie Ergebnisse w hrend des Jus tageprozesses am Bildschirm zu verfolgen Dazu mu eine Interaktion mit dem Programmnutzer m glich sein was eine Implementation eines Dialoges impliziert Die Lage der auf dem Probenteller befindlichen Probe soll durch Schrittmotoren gesteuert werden Die Motoren k nnen ber die Hardwa re zur Motoransteuerung beeinflu t werden Programmtechnisch mu dazu auf Funktionen des Interfaces zur Motorsteuerung zugegriffen werden siehe Anhang A Die Intensit tswerte der R ntgenstrahlung die ein Ma f r die Optimierung der Lage der Kristallprobe liefern werden ber die Detektor steuerkarte vom 0 dimensionalen Detektor ermittelt Hierf r sind von der automatischen Ju
169. hse auf der gesucht werden soll und die Intervallgren zen bergeben Um die realen Positionen anzufahren wird die Funktion GetIntensityOnPosition benutzt Die Methode GetOrigPosBorders dient dazu die Wertebereiche der Mo toren zur ckzugeben Die Memberfunktion KoordinatenTransformation berechnet die Trans formationen der Koordinatensysteme Zun chst mu der Winkel zwischen dem gegebenen Vektor und der Drehachse berechnet werden Dann werden ber die transformiere Methode der Klasse TMatrix die Transformations matrizen gebildet und in die Matrizenlisten trafo_hin und trafo_rueck ein getragen Au erdem mu der Wert anzahl_koordinatentrafos um 1 erh ht werden Die Funktion get_koordinatentrafos gibt die Anzahl der Koordinaten transformationen zur ck Wird am Ende eines Justagevorganges ein Maximum angefahren welches w hrend der Suche aber nicht im letzten Suchschritt gefunden wurde so kann es vorkommen da sich an dieser Position nicht unbedingt der Inten sit tswert befindet der vorher gemessen wurde Die Ursache daf r k nnen unter anderem mechanische Fehler des Versuchsaufbaus sein Es reicht al lerdings eine kleine Korrektur des Antriebs Beugung fein aus Diese Kor rektur wird mit der Memberfunktion DFCorrection umgesetzt so da auch wirklich ann hernd der Intensit tswert der R ntgenstrahlung erreicht wird der vorher gemessen wurde 6 3 3 Mathematische Hilfsklassen Die Klassen TMatrix und TVektor real
170. ht die M glichkeit die Vektorkomponenten in homogenen Koordinaten anzugeben durch zus tzliche homogene Komponente in diesem Fall wird die Membervariable homogene_koordinaten true gesetzt 7 kak k akk ak ak ak ak ak ak 3k ak ak ak ak ak ak 3k ak ak ak ak OOO ak 3K ak K 2k ak 2k ak 3K ak K OBO ak 3K ak 3K 2K ak 2K RIOR RIK 2K K K class TVektor public TMatrix public Konstruktoren Standardkonstruktor TVektor void TMatrix sp 1 216 KAPITEL KOMMENTIERTE QUELLTEXTE Konstruktor zur Initialisierung eines Vektors mit m Zeilen in kartesischen Koordinaten TVektor unsigned m TMatrix m 1 Konstruktor zur Initialisierung eines 3D Vektors mit kartesischen Koordinaten TVektor double x double y double z TMatrix 3 1 arr O x arr 1 y arr 2 z Copy Konstruktor um aus einer m 1 Matrix einen Vektortyp zu machen TVektor const TMatrix amp mat Klassenmethoden Vektor skalieren friend TVektor operator double fakt const TVektor amp vekt Matrix wird mit einem Vektor multipliziert und das Ergebnis ist ein Vektor friend TVektor operator const TMatrix amp mat const TVektor amp vekt Umwandlung in einen Vektor mit homogenen Koordinaten TVektor mache_homogen void Umwandlung in einen Vektor mit kartesischen Koordinaten TVektor mache_kartesisch void Berechnung des Betrags L nge eines Vektors double vektor_betrag void
171. ialogparameter Toleranz 0 1 Suchbereich Durchl ufe 3 DE 20 max Intensit tsdiff aus TL 20 Anzahl der Messg 3 CC 100 Startwerte Endwerte Ausleuchtung DF 21 34 DF 25 26 TL 8 6 TL 8 24 CC 105 CC 42 13 Intensit t 28000 Intensit t 243000 HWB 17 6 HWB 9 68 Dauer der Justage 9 43 min Bemerkung Die Anzahl von drei Durchl ufen wirkt sich g nstig auf die Dauer der automatischen Justage aus verhindert aber ein besseres Ergebnis Trotzdem erreichte die Justage eine gute Halbwertsbreite bei fast vollst ndi ger Ausleuchtung der Probe Testfall 8 Dialogparameter Toleranz 0 5 Suchbereich Durchl ufe 5 DF 20 max Intensit tsdiff aus TL 20 Anzahl der Messg 3 CC 100 Startwerte Endwerte Ausleuchtung DF 29 4 DF 27 41 TL 11 TL 3 15 CC 90 CC 5 32 Intensit t 31000 Intensit t 246000 HWB 14 6 HWB 8 87 Dauer der Justage 12 58 min Bemerkung Dieser Test erreichte das beste Justageergebnis mit dieser Pro be Die Probe ist zu 100 ausgeleuchtet und die Halbwertsbreite ist sehr gut Der eingestellte Wert der Toleranz auf 0 5 stellt keine Verschlechte rung der Optimierung dar Im Verlauf des Justageprozesses trat ein Inten sit tssprung auf die Intensit t sank auf 23000 Danach bewegte sich die Optimierung aber wieder im Bereich des Maximums Bei Aktivierung des Parameters Maximale Intensit tsdifferenz w re der Justageproze zu fr h abg
172. ibliotheken der Version 4 5 benutzt werden Dazu ist es notwendig in der Entwicklungs umgebung unter dem Men punkt Optionen Projekt Verzeichnisse den Pfad f r die Bibliotheken richtig zu setzen z B D BC4 Lib Unter der Version Borland 4 5 sind diesbez glich keine nderungen notwendig Die Version Borland 4 5 hat au erdem den Vorteil da im Gegensatz zu Borland 5 02 ein 16 Bit Debugger in die Entwicklungsumgebung integriert ist Dies stellt eine enorme Erleichterung bei der Analyse der Quelltexte dar da man mittels Breakpoints das Programm schrittweise ausf hren kann Au erdem k nnen Fehler bei einer Neuimplementation von Funktionalit t schneller lokalisiert werden Des weiteren d rfen die Dialogressourcen nur mit der Version 4 5 bear beitet werden Der Grund daf r liegt darin da das Format f r die Ressour cendatei in der Version 5 02 ge ndert wurde Auf die Dialogerstellung wird in Kapitel 7 n her eingegangen Zur fehlerfreien Compilierung mu ten an drei Stellen des Quelltextes nderungen vorgenommen werden Es gen gt wenn die entsprechenden 2 3 HARDWARE 19 Zeilen auskommentiert werden Es handelt sich um folgende Zeilen in der Datei m main cpp e Zeile 251 Ctl3dRegister const HINSTANCE__ near Main hWndFrame e Zeile 252 Ctl3dAutoSubclass const HINSTANCE__ near Main hWndFrame e Zeile 1059 Ctl3dUnregister const HINSTANCE__ near Main hWndFrame 2 3 Hardware In diesem Abschni
173. ibt die Funktionalit t getrennt von der Oberfl chen programmierung Dies erleichtert die Portabilit t als auch die Wartbarkeit des Quelltextes durch andere Programmierer Im Hinblick darauf da das RTK Steuerprogramm auf 32 Bit umgestellt und unter dem Betriebssystem Windows98 benutzt werden soll kann dann ein Abbruch des Justagevorgan ges durch einen Dialogknopf schnell und einfach mittels Thread Program mierung realisiert werden da Windows98 pr emptives Multitasking besitzt 7 3 Implementation der Funktionalit t Bei der Entwicklung der Programmfunktion Automatische Justage wur de nach dem inkrementellen Modell der Softwareentwicklung vorgegangen Beim pr emptiven Multitasking k nnen mehrere Threads in einem Zeitintervall aus gef hrt werden wobei jedem Thread ein Zeitfenster zugeteilt wird Ist die Zeit f r einen Thread abgelaufen werden seine Daten gesichert und anschlie end die Daten vom n chsten Thread geladen der dann weiter ausgef hrt wird 94 KAPITEL 7 PROBLEME DER IMPLEMENTATION n here Ausf hrungen sind in 2 S 120f zu finden Wie beim V Modell steht beim inkrementellen Modell die vollst ndige Erfassung und Modellie rung der Anforderungen am Anfang des Softwareprozesses Der Unterschied zum V Modell besteht darin da zu Beginn nur ein Teil der Anforderungen implementiert wird Somit steht schon fr hzeitig eine einsatzf hige aber noch nicht vollst ndige Programmfunktion zur Verf gung
174. ibung Stellt fest ob der Motor mit der angegebenen Motor ID die anzufahrende Winkelposition erreicht hat Parameter int mid Identifikationsnummer des Motors einer spe ziellen Achse Riickgabewert TRUE Antrieb hat die vorgegebene Stellung angefahren und befindet sich in Ruhe FALSE Motor ist in Bewegung oder an einer Endlage Deathband zum Stehen gekommen Siehe auch mIsMoveFinish mlMoveToDistance m1Get Offset Syntax double WINAPI mlGetOffset int mid Beschreibung Gibt das Offset f r die Relative Null des angeforder ten Antriebs zuriick Der Wert ist in der Motor Membervariablen dAngleBias abgelegt A 1 INTERFACE DER MOTORLISTEN FUNKTIONEN 143 Parameter int mid Identifikationsnummer des Motors einer spe ziellen Achse R ckgabewert double Wert der Membervariablen dAngleBias des an gegebenen Motors Ist der Wert 0 dann wurde die Relative Null gesetzt und alle Operationen beriicksich tigen das Offset Siehe auch mSetRelativeZero mIsDistanceRelative mlParsing Axis Syntax TAxisType WINAPI mlParsingAxis LPSTR axisname Beschreibung Umwandlung eines Strings in einen TAxisType dekla riert in comhead h Dadurch ist es m glich f r eine Achse mehrere Bezeichnungen zu w hlen Z B werden die Zeichenketten AzimutalRotation AZ Rotation und Azimute demselben Achsentyp Rotation zugeordnet Parameter LPSTR axisname Zeichenkette des Achsennamens R ckgabewert TAxisType Typ der
175. ich war die Entwicklung noch nicht abgeschlossen und deshalb hat der 2 Parameter keine Funktion Wichtig ist nur da dieser Parameter beim Aufruf von mStartMoveScan nicht vergessen wird Sinnvoll ist es ihn mit 0 zu initia lisieren R ckgabewert Siehe auch mlOptimizingDlg mGetMoveScan mGetScanSize mSavePosition mSavePosition Syntax void CALLBACK mSavePosition UINT UINT DWORD DWORD DWORD Beschreibung Funktion die aufgerufen wird wenn ein Timer w hrend eines durch mStartMoveScan gestarteten Scans aus gel st wurde Die Funktion StartCheckScan akti viert den Timer und gibt als Bearbeitungfunktion mSavePosition an Je nach ausgew hltem Motor wird in einem bestimmten Zeitintervall diese Funktion durch den Timer aufgerufen Sie speichert dann sukzessive die aktuelle Position in einem Datenfeld ab Wenn der Mo tor stoppt bevor das Scanfile vollst ndig mit Me wer ten gef llt ist wird der MoveFinishIdx gesetzt Dieser kennzeichnet die letzte Position an der der Motor in Bewegung war Wurden alle Me werte erfa t und der Motor befindet sich noch nicht im Stillstand so wird der MoveFinishIdx auf 0 gesetzt Am Ende des Scans wird der Timer wieder deaktiviert und eine Nachricht da der Scan abgeschlossen wurde in die Nachrichten schleife verschickt Parameter Der 1 Parameter ist die ID des Timers der diese Callback Funktion aufruft Uber diese ID kann der Ti mer identifiziert und wenn er nicht mehr ben
176. icklungsumgebung f r diesen Zweck zu de buggen ist Borland C 4 5 erforderlich da nur in dieser Version ein 16 Bit Debugger Teil der Entwicklungsumgebung ist Deshalb mu darauf geach tet werden da die Quelltexte unter den Versionen 4 5 und 5 02 kompiliert werden k nnen Das Beschreibungsformat der Ressourcendateien hat in Bor land C 5 02 eine nderung erfahren und somit sind mit dieser Version erzeugte Dialoge nicht mehr fehlerfrei unter Borland C 4 5 bersetzbar Das legt nahe da neue Dialoge nur mit der lteren Variante der Entwick lungsumgebung erstellt werden sollten Die Dialogerstellung wird mit dem Resource Workshop der als extra Entwicklungstool in Borland C 4 5 enthalten ist vorgenommen Die Schritte zur Erstellung des Dialogs Automatische Justage f r das bestehende Softwareprojekt mit dem Borland Resource Workshop werden im weiteren erl utert Da der Dialog Teil des Hauptprogramms werden soll wird dazu die Res sourcendatei main rc in der die Dialoge der Anwendung zu finden sind ber den Men punkt Datei Projekt ffnen als Projekt mit dem Resource Workshop ge ffnet Das Programm bersetzt die in der Datei enthaltenen Ressourcenbeschreibungen und zeigt eine bersicht mit allen Dialogen Bit maps Men s etc an Ein neues Dialogfenster wird ber den Men punkt Ressource Neu in das Projekt integriert Im angezeigten Dialogfenster mu als Ressourcentyp DIALOG
177. ie vom Institut f r Physik bergebenen Pro jektdateien die in einem Paket mit der Bezeichnung XCTL9702 zur Ver f gung gestellt wurden Die Datei xcontrol ide ist die Projektdatei f r die Borland Entwick lungsumgebung In ihr sind alle administrativen Parameter wie Compiler schalter bersetzungsparameter etc f r die Projektstruktur in der Entwick lungsumgebung gespeichert Die Projektquelltexte sind in den vier Modulen splib dl1 motors dl1 counters dl1 und develop exe zusammengefa t Die folgende Tabelle zeigt die Quelltextstruktur splib dll Quelltextdateien Beschreibung inkludierte Dateien dlg tpl cpp selbstdefinierte Templateklas rc_def h comhead h sen f r Dialogobjekte inklusive der Methoden l_layer cpp Allgemeine Hilfsfunktionen rc_def h comhead h m_curve cpp Klassen und Instanzen f r die rc_def h comhead h Datenhaltung splib rc Dialogressource f r About l_layer h Dialog 16 KAPITEL 2 DAS STEUERPROGRAMM motors dll Quelltextdateien Beschreibung inkludierte Dateien motors cpp Klassen zur Motorenansteue rung rc_def h comhead h m_motcom h m_mothw h m_layer h ieee h m_layer cpp C Schnittstelle f r die Moto rc_def h comhead h renansteuerung m motcom h m mothw h m_layer h dlg_tpl cpp selbstdefinierte Templateklas rc_def h comhead h sen f r Dialogobjekte inklusive der Methoden motors rc Dialogres
178. if this gt ist_homogen amp amp vekt ist_homogen temp_ze ze 1 homogene Komponente des Vektors ignorieren else if this gt ist_homogen amp amp vekt ist_homogen temp_ze ze alle kartesischen Koordinaten betrachten else cerr lt lt V SP Fehler 1 Vektor ist in homog Koord angegeben n return 1 0 for unsigned i 0 i lt temp_ze i skalar arr i vekt arr i return skalar Berechnung des Winkels zwischen zwei Vektoren in RADIANT double TVektor winkel const TVektor amp vekt double winkel 1 0 falls Riickgabewert 1 0 dann Fehlerfall if ze 0 vekt ze 0 cerr lt lt V Wi Fehler Mindestens ein Vektor mit Dimension 0 n return winkel else if ze vekt ze cerr lt lt V Wi Fehler Nur Vektoren gleicher Dimension zul ssig n return winkel else if this gt ist_homogen amp amp vekt ist_homogen this gt ist_homogen amp amp vekt ist_homogen cerr lt lt V Wi Fehler Nur 1 Vektor in homogenen Koordinaten angegeben n return winkel 226 KAPITEL KOMMENTIERTE QUELLTEXTE Berechnung von lal b if winkel vekt vektor_betrag this gt vektor_betrag 0 cerr lt lt V Wi Fehler Winkel kann nicht berechnet werden Nullvektor n return winkel Berechnung von a b lal Ibl winkel this gt skalarprodukt vekt winkel Berechnung von arcos a b al
179. inDF intervall_re aktWertebereich MaxDF Logging if bWriteLogfile WriteToJustageLog Nachregeln DF r n Goldener Schnitt Optimierung der Y Achse DF stepi liefert die Anzahl der ben tigten Intervallteilungen intervall_re li liefern das letzte Optimierungsintervall step1 Transform gt Goldener_Schnitt Laufachse_Y intervall_li intervall_re nMeasureCount FORWARD_WM_COMMAND GetHandle cm_calculate 0 0 PostMessage break case cm_calculate aktuelle Positionen der Antriebe bestimmen Protokollierung und abspeichern in Positionen von ActIntensity Test auf Intensit ts berschreitung des Detektors if Transform gt bIntensityTooHigh Abbruch der Justage SendMessage GetHandle WM_COMMAND cm_post_processing 0 mlSetAxis nMotorTL mGetDistance fPosition ActIntensity TL fPosition Logging sprintf buf Reale Positionen Durchlauf 1f von d r nTL 2f float count 2 durchlauf fPosition mlSetAxis nMotorDF mGetDistance fPosition ActIntensity DF fPosition Logging sprintf buf1 DF 2f fPosition strcat buf buf1 mlSetAxis nMotorCC mGetDistance fPosition ActIntensity CC fPosition Logging sprintf buf1 CC 2f r n fPosition strcat buf buf1 Ausgabe in Statusfenster und LogFile GetDlgItemText GetHandle ID_Status status nMaxString strcat status buf if bWriteLog
180. ischen Grundlagen der R ntgentopographie von Halbleiterkristallen erarbeitet und die Anforderungen an die Funktion in ei nem Pflichtenheft zusammengefa t Ausgehend vom Proze der manuellen Justage wird ein f r das Optimierungsproblem geeigneter Algorithmus for muliert F r die programmtechnische Umsetzung werden die relevanten Schnitt stellen des bestehenden Programms analysiert und dokumentiert Darauf aufbauend wird eine Erl uterung der Einbettung der automatischen Funk tion in die bestehende Software gegeben Die Vorgehensweise w hrend der Testphase zur berpr fung der korrek ten Funktionalit t wird schwerpunktm ig dargestellt Au erdem beinhaltet die Diplomarbeit eine Dokumentation der neu implementierten Programm funktion in Form eines Handbuchs f r den Anwender Die im Rahmen dieser Diplomarbeit programmierte Funktion Automa tische Justage dient den Mitarbeitern der Arbeitsgruppe Prof K hlers zur Arbeitsoptimierung bei der Einstellung der Halbleiterkristallproben Die ge wonnenen Erkenntnisse aus dem Reverse Engineering k nnen von den am Projekt beteiligten Studenten zum weiteren Verst ndnis der Software ver wendet werden berblick ber die Kapitel Das erste Kapitel f hrt in den physikalischen Sachverhalt ein Dazu werden grundlegende Begriffe die zum weiteren Verst ndnis der Arbeit n tig sind gekl rt Das zweite Kapitel gibt einen berblick ber die Steuersoftware Dabei wird der Ausgan
181. isieren die mathematischen Grund lagen die notwendig sind zur Berechnung der Koordinatensystemtransfor mationen Die Klasse TMatrizenListe ist zur Verwaltung von mehreren Matrizen gedacht Die Funktionsweise dieser Matrizenliste hnelt der eines Stacks TMatrix organisiert einen Datentypen der einer Matrix im mathema 74 KAPITEL 6 DESIGN tischen Sinne entspricht Zus tzlich werden Operatoren zur Verf gung ge stellt die Multiplikationen Additionen Subtraktionen Zuweisungen und reelle Vervielfachungen von Matrizen realisieren Au erdem ist es m glich mittels eines Operators eine Matrix mit einem Vektor zu multiplizieren Dies wird f r die Berechnung von geometrischen Transformationen ben tigt Die Memberfunktion invers berechnet die Inverse einer regul ren Matrix Matrix TMatrix arr homogene_koordinaten sp ze TMatrix in const amp mat TMatrix TMatrix in m unsigned int in n unsigned int TMatrix TMatrix operator in const amp mat TMatrix operator inout amp fakt double operator in const amp mat TMatrix operator in const amp mat TMatrix operator in const amp mat TMatrix einheitsmatrix in m unsigned int invers ist_homogen rotationsmatrix_x in winkel double rotationsmatrix_y in winkel double rotationsmatrix_z in winkel double transformiere in reihenfolge unsigned int in const amp verschiebung TVektor in drehung_x doubl
182. isuellen R ckmeldung f r die am Detektor anliegende R nt genstrahlung Nur wenn es angezeigt wird ist durch die Timer Routine sichergestellt da die Werte der R ntgenstrahlungsintensit t st ndig aktua lisiert werden Deshalb wird bei der Initialisierung des Dialoges Auto matische Justage Methode TAutomaticAngleControl Dlg_OnInit f r den Fall da der Detektor korrekt ins System eingebunden ist Detektor Schnittstellenfunktion dlIsDeviceValid abgefragt ob auch das Z hlerfen ster angezeigt wird Test der Detektorklassenvariablen bDeviceOpen und gegebenenfalls ein neues Fenster vom Typ TCounterWindow erzeugt Der folgende Programmabschnitt zeigt die programmtechnische Umsetzung des beschriebenen Vorgehens BOOL TAutomaticAngleControl Dlg_OnInit HWND hwnd HWND hwndCtl LPARAM 1Param TModalDlg Dlg_OnInit hwnd hwndCtl lParam Verwendung des akt Zaehlergeraets aus der Deviceliste Sensor lpDList gt DP Test ob Zaehler korrekt im Programm initialisiert wurde if dlIsDeviceValid CounterDevice else strcat status Counterdevice ok falls Zaehlerfenster nicht geoeffnet ist werden die Zaehlerwerte nicht korrekt eingelesen if Sensor gt bDeviceDpen Zaehlerfenster oeffnen NewWindow TCounterWindow new TCounterWindow Sensor gt GetId Kapitel 8 Test Jede Software die nach den Kriterien des Softwareengeneerings erstellt wird durchl uft mehrere Stadien im
183. it einer Suche auf dem Freiheitsgrad Kollimator CC Der im Flu diagramm verzeichnete Proze Max Suche auf z Achse unterteilt sich in weitere wichtige Teilaufgaben so das es notwendig wird f r diese Aufgabe ein gesondertes Diagramm mit Beschreibung zu verwenden Im Prinzip soll auf der gegebenen Achse mit Hilfe des Goldenen Schnitts ein Maximum ge sucht werden Ergebnis dieses Prozesses ist da das Extremum gefunden wird und die Motoren an den entprechend umgerechneten Weltkoordinanten stehen quivalent zu dieser Aufgabe sind auch die Prozesse Max Suche auf y Achse und Max Suche auf x Achse Das Weltkoordinatensystem hat als Achsen die Freiheitsgrade bzw Motoren TL DF und CC Es stellt die realen Koordinaten Motorpositionen des Systems dar 6 1 ABLAUF DER AUTOMATISCHEN JUSTAGE Start der automatischen Ger te korrekt C Justage D Die Intervallgrenzen f r die jeweiligen Achsen m ssen zun chst ins akt Koordi natensystem umgerechnet werden Im Ausgangszustand ist dieses nicht notwendig Es werden je nach Durchlauf die Ebenen zwischen der x y Achse oder der z y Achse betrachtet Die Auswahl welche Achse gew hlt wird h ngt davon ab welche Ebene im Moment untersucht wird Dementsprechend wird auch die Koordinatentransformation vor genommen installiert Einlesen der Dialogparameter Ermittlung der Motorpositionen und Festlegen
184. ktion die aktuellen Motorpositionen Anschlie end werden die Intervalle f r die Suche nach dem Peak festgelegt und die Daten im Attribut Wertebe reich gespeichert Die Funktion translate_to_worldpoints erf llt die Aufgabe die Welt koordinaten eines Punktes aus dem aktuellen Koordinatensystem zu berech nen Um dies zu realisieren mu zun chst der Vektor homogenisiert werden Danach wird eine sogenannte R cktransformation mit Hilfe der Matrizenliste trafo_rueck berechnet Dies erfolgt durch die Multiplikation des homogenen Vektors mit den Transformationsmatrizen vom Ende bis zum Anfang der Matrizenliste trafo_rueck Anschlie end wird der homogene Vektor wieder in eine kartesische Form umgewandelt Analog ist die Funktion translate_from_worldpoints in ihrem Ablauf nur da hier ein Punkt repr sentiert durch einen Vektor vom Weltkoordina tensystem ins aktuelle Koordinatensystem transformiert wird Zur Berech nung wird die Matrizenliste trafo_hin benutzt Die Memberfunktion translate_PosBorders ist f r die bersetzung der Intervalle ins aktuelle Koordinatensystem verantwortlich Dadurch werden die Suchintervalle f r die einzelnen Achsen im aktuellen Koordinatensystem festgelegt Die Methode GetIntensityOnPosition f hrt die zu bersetzenden Mo torpositionen des PosVektor an und gibt die Intensit t zur ck Um die Mo torpositionen zu erhalten mu zun chst der PosVektor in die Koordinaten des Weltkoordinatensystems transformiert
185. lGetDistance int mid double amp position Beschreibung Ermittelt f r den Antrieb mit der angegebenen Motor ID die aktuelle Stellung im Winkelma Grad etc Die Position wird von der Hardware ausgelesen Falls sich der Motor in Ruhe befindet und kein bertragungsfeh ler aufgetreten ist wird die Motorposition in der Motor klassenvariablen dAngle gespeichert Parameter int mid Identifikationsnummer des Motors einer spe ziellen Achse double amp position R ckgabeparameter f r die ausge lesene Position R ckgabewert TRUE Die Position konnte ermittelt werden wurde in der Motor Membervariablen dAngle abgelegt und wird im double amp Parameter als Winkel zur ckgeliefert FALSE Fehlerfall Motor war in Fahrt oder die Position konnte nicht ausgelesen werden A 1 INTERFACE DER MOTORLISTEN FUNKTIONEN 141 Siehe auch mlGetValue mGetDistance mGetValue mlGet Value Syntax Beschreibung Parameter Riickgabewert Siehe auch double WINAPI mlGetValue int mid TValueType vtype Abh ngig vom Wert des Parameters vtype wird der dazugeh rige Wert der Motorgr e derjenigen Achse zur ckgeliefert die durch mid bestimmt wird Der Typ TValueType deklariert in comhead h kann folgende Werte annehmen Distance Winkelstellung des Mo tors MinDistance MaxDistance Speed Width Win kelschrittweite Die Funktion wertet nur die Member variablen der Motoren aus Es findet kein Zugriff auf die Ha
186. lbwertsbreite widerspiegelt Testfall 5 Dialogparameter Toleranz 0 1 Suchbereich Durchl ufe 7 DE 20 max Intensit tsdiff aus TL 20 Anzahl der Messg 3 CC 100 Startwerte Endwerte Ausleuchtung DF 21 58 DF 24 36 TL 8 6 TL 9 46 CC 105 67 CC 46 33 Intensit t 728000 Intensit t 243000 HWB 17 6 HWB 9 68 Dauer der Justage 21 37 min Bemerkung Die Toleranz und die Anzahl der Durchl ufe sind ausschlag gebend daf r da die Justage sehr lange dauerte Ausleuchtung und Halb wertsbreite der Probe sind gut Testfall 6 Dialogparameter Toleranz 0 1 Suchbereich Durchl ufe 5 DF 20 max Intensit tsdiff 5000 TL 20 Anzahl der Messg 3 CC 100 Startwerte Endwerte Ausleuchtung DF 30 24 DF 26 88 TL 11 3 TL 5 4 CC 90 CC 17 97 Intensit t 7230000 Intensit t 246000 HWB 14 97 HWB 9 01 Dauer der Justage 15 18 min Bemerkung Durch die Justage wurde eine sehr gute Halbwertsbreite fiir diese Probenart und hundertprozentige Ausleuchtung erreicht Der Algorith mus ben tigte trotz testweise eingeschaltetem Abbruchkriterium Maximale Intensit tsdifferenz die volle Anzahl der Durchl ufe zur Probeneinstellung In diesem Fall h tte das Kriterium keine Zeitersparnis gebracht Die Ver minderung der Anzahl der Durchl ufe f hrte zu einer Verringerung der Jus tagedauer 108 KAPITEL 8 TEST Testfall 7 D
187. leuchtung f hrte Damit soll ermittelt werden welche Suchbereiche mit hoher Wahrscheinlichkeit zum Erfolg f hren a oa Testfall 1 2 314 7 8 Anzahl mit 100 iger Aus 2 4 2 5 4 J4 1 1 leuchtung max 6 m glich Die Kollimatorprobe funktionierte mit keinem Testfall Sie soll bei der Bestimmung des besten Suchbereiches nicht betrachtet werden Anhand der Tabelle kann man gut erkennen da der Suchbereich DF 50 TL 20 CC 100 der den Testfall 4 bildete am besten in den Testreihen abgeschnitten hat 118 KAPITEL 8 TEST Die Testf lle 2 5 und 6 erwiesen sich ebenfalls als gute Einstellungen obwohl sie jeweils einmal scheiterten wenn man die Testreihe mit der Kolli matorprobe bei dieser Bewertung unber cksichtigt l t Ebenfalls ist gut aus der Tabelle abzulesen da die Testf lle 1 3 7 und 8 nicht ideal waren In 1 und 3 lag das Problem in einem zu klein gew hlten Suchbereich f r den Kollimator In den F llen 7 und 8 ist vermutlich der zu hohe Bereich f r Tilt f r die schlechten Ergebnisse verantwortlich Au erdem war der Suchbereich f r den Kollimator im Testfall 7 zu klein Schlu folgernd kann gesagt werden da der Suchbereich f r den Kolli mator mindestens 100jm betragen sollte Am besten w rde sich ein Bereich zwischen 100 und 200um eignen Allerdings sollte die korrekte Einstellung des Kollimators nicht mehr als 200um von der Ausgangsposition der Justage liegen
188. limatorprobe Suchbereich Startwerte Endwerte Ausleuchtung DF 50 54 9 51 9 TL 50 12 17 8 CC 50 30 21 5 Kriterien Intensit t 21500 35000 HWB 8 1 6 51 Dauer der Justage 14 31 min B 6 TESTREIHE MIT KOLLIMATORPROBE 183 Testfall 8 Kollimatorprobe Suchbereich Startwerte Endwerte Ausleuchtung DF 50 54 1 59 8 TL 50 12 19 3 CC 150 29 3 20 4 Kriterien TH Intensitat 20000 32500 HWB 8 1 7 36 Dauer der Justage 15 37 min Anhang C Kommentierte Quelltexte C 1 Dialogklasse TAutomaticAngleControl C 1 1 m_justag h ifndef __M_JUSTAG_H define __M_JUSTAG_H include matrix h include transfrm h globale Variable legt fest ob das JustageLog geschrieben wird definiert in m_justag cpp extern bool bWriteLogfile globale Funktion um Statusmeldungen in das Logfile f r die Automatische Justage schreiben void WriteToJustageLog char buf Dialogklasse der Automatischen Justage class TAutomaticAngleControl public TModalDlg public TAutomaticAngleControl BOOL Dlg_OnInit HWND HWND LPARAM void Dlg_OnCommand HWND int HWND UINT BOOL LeaveDialog void private Tranformationsobjekt als Member definiert TransformationClass Transform TDevice Sensor Inhalt des Statusfeldes char status Aktivierung der Abbruchkriteriums Intensit tsdifferenz bool bIntensityDiffActive 18
189. ll das folgende Beispiel gegeben werden Gibt man im Dialog Manuelle Justage einen neuen Winkel ein und best tigt die Eingabe mit RETURN dann wird der ausgew hlte Antrieb an die entsprechende Position gefahren Dabei kann beobachtet werden wie sich bei fahrendem Antrieb der Wert der Anzeige Winkel ndert Zun chst wird in der Funktion TAngleControl Dlg_OnCommand unter sucht in welchem Dialogelement die Eingabe get tigt wurde Anschlie Bend wird die Bewegung gestartet und eine Nachricht cm_MoveButton ge sendet Diese wird als n chstes in der Nachrichtenschleife bearbeitet Das hei t DIg_OnCommand mu den entsprechenden Handler in Form einer Case Anweisung aufrufen Der wandelt den Cursor in eine Sanduhr und setzt den Timer 7 2 DIALOGPROGRAMMIERUNG 91 case IDOK if hDlgItem TModalD1g Dlg_OnCommand hwnd id hwndCtl codeNotify break Der Nutzer hat mit Return eine neue Position eine neue Geschwindigkeit oder eine neue Schrittweite eingegeben for if hDlgItem GetDlgItem hwnd id_NewAngle if bMoveActive GetDlgItemText hwnd id_NewAngle LPSTR buf 10 bMoveActive TRUE bLongMove TRUE mMoveToDistance atof buf FORWARD_WM_COMMAND hund cm_MoveButton 0 0 PostMessage break hDlgItem NULL SetFocus BarHandle break case cm_MoveButton bMoveActive TRUE SetCursor LoadCursor NULL IDC_WAIT SetTimer hwnd TimerI
190. lnen Hauptachsen mit ne gativen Winkeln in umgekehrter Weise zu erfolgen hat Der Grund liegt in 5 4 KOORDINATENSYSTEMTRANSFORMATION 53 der Nichtkommutativit t der Matrixmultiplikation So hat die Inverse Rota tionsmatrix die folgende Form Ri Ser S R Eine weitere Transformation ist die Skalierung Auf die Erl uterung wird an dieser Stelle verzichtet da die Skalierung f r den Algorithmus der auto matischen Justage nicht von Bedeutung ist Die Matrizendarstellungen f r die Translation und die Rotation lauten wie folgt P T P P R P Man sieht da die Darstellung der Translation anders als die der Rotation ist Vorteilhaft w re es wenn man beide Transformationen einheitlich behandeln und damit leichter kombinieren k nnte 5 4 2 Homogene Koordinaten Mit Hilfe der homogenen Koordinaten besteht die M glichkeit zur einheitli chen Beschreibung von geometrischen Transformationen durch Matrixmulti plikation In einer 4x4 Matrix k nnen alle geometrischen Transformationen zusammengefa t werden Rotation Translation Skalierung Perspektivische Gesamtskalierung Transformation Der Vorteil liegt darin da anstelle der Hintereinanderausf hrung mehre rer Transformationen auf Punkte des 3 dimensionalen Raumes einmalig eine Gesamttransformationsmatrix berechnet werden kann die anschlie end mit den homogenen Koordinaten der Punkte multipliziert wird F r eine Schreibweise der homogenen Koordinaten
191. ls sich der Motor nicht mehr an der alten gespei cherten Winkelstellung befindet ob mParam den Wert OldPosition hat Dann wird die alte Motorposition an gefahren mPushSettings mStartMoveScan Syntax Beschreibung Parameter void WINAPI mStartMoveScan int nTimeTicks int Startet einen Scan zum Optimieren des Anfahrverhal tens der Antriebe C 812ISA C 812GPIB und C 832 Aufgerufen wird diese Funktion vom Dialog Einstel lungen Antriebe Optimieren aus dem Hauptfenster des RTK Steuerprogramms Die Funktion initialisiert zun chst den Speicher f r die Scan Daten Die Anzahl der Me werte ist durch das Steuerprogrammm vorge geben Anschlie end wird je nach aktuellem Antrieb der Scan gestartet Dies geschieht mit der Funktion StartCheckScan die den Antrieb um wPosition Width relativ zur aktuellen Position f hrt Das hei t es wird die Position aktuelle Position wPositionWidth an gefahren Die Positionen werden in Encoderschritten angegeben Danach wird ein Timer aktiviert der durch sein Ausl sen die Funktion mSavePosition aufruft Je nach Antrieb wird nach entsprechenden Zeitintervallen die Funktion mSavePosition gestartet Der 1 Parameter gibt an in welchen Zeitabst nden der Timer aufgerufen wird der in StartCheckScan gestar tet wurde Die Einheit wird in Millisekunden angege ben 166 KAPITEL A SCHNITTSTELLENBESCHREIBUNG DER MOTORENANSTEUERUNG Der 2 Parameter ist unwichtig Wahrscheinl
192. m Dialog Abb 3 3 k nnen weitere vorbereitende Ma nahmen die f r die Belichtung wichtig sind ausgef hrt werden Zun chst mu mit dem Antrieb Beugung fein der Arbeitspunkt angefahren werden Dieser liegt bei ca 60 Prozent auf der steileren der beiden Flanken der Rockingkur ve Abb 1 2 Der Grund daf r warum man nicht den Peak der Rockingkurve als Position f r die Topographie beibeh lt liegt darin da thermische Ein fl sse auf die Me apparatur einwirken Es kommt zu Deformationen wobei der Me punkt vom Peak wegwandert und dadurch eine optimale Einstellung nicht mehr gew hrleistet ist 3 2 TOPOGRAPHIEVORGANG 31 Topographie x Die Einstellungen f r Topograpie k nnten noch nicht exakt eingestellt sein Nehmen Sie bitte Ihre Einstellungen vor MeB Zeit 00 00 00 Drift 0 00 Startposition einstellen Zusatz Zeit 00 00 00 Einstellungen Rest Zyklen Detektor He zeit 3 Abbrechen Abbildung 3 3 Dialogfenster zum Starten des Topographievorgangs Da bei geringer Manipulation der Position um den Peak keine gro e In tensit ts nderung erkennbar ist w rden kleine Positionsabweichungen vom Peak nicht ausreichend schnell erfa t werden Das kann sehr gut anhand der Abbildung der Rockingkurve Abb 1 2 nachvollzogen werden Au erdem ist nicht ersichtlich in welche Richtung der Arbeitspunkt wandert Um mit Hilfe des Detektors angemessen auf die Ver nderungen w hrend der
193. m hwnd ID_IntenseDifferenz FALSE EnableWindow GetDlgItem hwnd ID_TextMaxIntDiff FALSE break default alle weiteren Nachrichten werden von der Default Methode verarbeitet TModalDlg Dlg_OnCommand hwnd id hwndCt1 codeNotify Ende der switch Anweisung BOOL TAutomaticAngleControl LeaveDialog void Detektor initialisieren Sensor gt MeasureStop Sensor gt PopSettings Sensor gt MeasureStart Motoren anhalten mStopDrive TRUE Speicher f r Puffer freigeben delete status delete buf delete buf1 return TRUE C 2 ALGORITHMUS UND KERNFUNKTIONALIT T TRANSFORMATIONCLASS 201 C 2 Algorithmus und Kernfunktionalit t TransformationClass C 2 1 transfrm h ifndef __TRANSFRM_H define __TRANSFRM_H include matrix h include m_justag h Definition von Konstanten zur Festlegung der Transformationsreihenfolge const unsigned XYZ REIHENFOLGE_XYZ const unsigned ZYX REIHENFOLGE_ZYX Aufz hlungstyp zur komfortablen Angabe der Koordinatensystemdrehachse bei Benutzung wird angegeben um welche Achse eine KS Drehung durchgefiihrt werden soll typedef enum Drehachse_X 1 Drehachse_Y Drehachse_Z TDrehachse Aufz hlungstyp zur komfortablen Angabe der Optimierungsachse bei Benutzung wird angegeben auf welcher Achse der Optimierungsalgorithmus das Maximum der Intensit t suchen soll typedef enum Laufachse_X 1 Laufachse_Y
194. manuellen Justage der Me probe ein Dabei kann man von einem iterati ven Proze sprechen da es sich um immer zu wiederholende Ablaufschritte handelt Zuerst wird der Antrieb Beugung fein nach dem Detektorwert einge stellt Hat man die maximale Intensit t erreicht wird auf den Antrieb Kol limator gewechselt Der Kollimator wird so verstellt da man wiederum eine Steigerung der Strahlungsintensit t erreicht Danach stellt man mit dem Antrieb Beugung fein nach Genauso wie beim Kollimator verf hrt man beim Freiheitsgrad Tilt Der Antrieb Tilt wird ausgew hlt und dann so verstellt da die Strahlungsintensit t wieder maximal ist Mit Beugung fein regelt man dann wieder nach Dieser Proze wird ungef hr 20 100 Mal wiederholt Zwischendurch wird bei fast optimaler Justage zur Kontrolle die Halbwertsbreite bestimmt wobei man dort von Erfahrungswerten ausgeht Ziel der manuellen Justage ist es eine maximale Strahlungsintensit t bei minimaler Halbwertsbreite zu erreichen Ist das geschehen kann der Topographievorgang gestartet werden 3 2 Topographievorgang Die Me probe ist nun so genau auf den Bragg Reflex eingestellt da mit der Belichtung der Fotoplatte begonnen werden kann Dazu wird eine Fotoplatte in die daf r vorgesehene Vorrichtung eingelegt Abb 1 9 Der Topographievorgang wird mit Hilfe des Dialoges Topographie zu finden im Hauptmen unter Ausfiihren Topographie gesteuert Von diese
195. mationsmethoden gt o k kkk kkk kkk kkk kk kk k kkk kk kkk kk Kk kK Verschiebe Translations TMatrix erzeugen Verschiebung um Tx Ty Tz Vektor TMatrix TMatrix verschiebematrix const TVektor amp vekt if vekt ze 4 amp amp vekt ist_homogen vekt ze 3 amp amp vekt ist_homogen cerr lt lt M VM Fehler Verschiebungsvektor nicht 3 dimensional n return this Einheitsmatrix 4x4 erzeugen this gt einheitsmatrix 4 Verschiebungsvektor in die letzte Spalte der Matrix eintragen bei homogenem Vektor wird homogene Komponente mitkopiert 1 for unsigned i 0 i lt vekt ze i Zugriff auf 4 Spaltenelement der jeweiligen Zeile arr i zet 3 vekt arr i homogene_koordinaten true return this Rotationsmatrix erzeugen Drehung um x y bzw z Achse mit Winkel Anmerkung wenn negative Winkel dann handelt es sich um eine inverse Drehung TMatrix TMatrix rotationsmatrix_x double winkel this gt einheitsmatrix 4 Rotation um die X Achse mit dem Winkel a 1 o 0 0 O cos a sin a 0 O sin a cos a 0 0 0 o 1 arr 1 4 1 cos winkel arr 1 4 2 sin winkel arr 2 4 1 sin winkel arr 2 4 2 cos winkel homogene_koordinaten true return this TMatrix TMatrix rotationsmatrix_y double winkel this gt einheitsmatrix 4 Rotation um die Y Achse mit dem Winkel a cos a 0 sin a 0 0 1 0 0 sin a 0 cos a 0 0 0 o 1 222 KAPITE
196. motors d1l wurde ohne Pro bleme eingebunden und alle Antriebe wurden korrekt konfiguriert FALSE Die Funktion mlInitializeMotorsDLL schlug fehl Der Wert der Variablen bModulLoaded wurde nicht auf TRUE gesetzt D h die Bibliothek motors d1l konnte nicht initialisiert werden Siehe auch mlInitializeMotorsDLL A 1 INTERFACE DER MOTORLISTEN FUNKTIONEN 145 mlGetAxisNumber Syntax int WINAPI mlGetAxisNumber void Beschreibung Ermittelt die Anzahl der verf gbaren Antriebsachsen Dazu wird die Membervariable nLastDrive der Klasse TMList ausgewertet Parameter R ckgabewert int Wert der privaten TMList Klassenvariablen nLastDrive 1 entspricht Anzahl der Antriebe die dem Steuerprogramm bekannt sind Siehe auch mlSaveModuleSettings Syntax Beschreibung Parameter Riickgabewert Siehe auch void WINAPI mlSaveModuleSettings void Speichert f r alle im System vorhandenen An triebe die aktuellen Motorparameter z B Velocity PositionWidth AngleMin AngleWidth Acceleration DynamicGain in der Konfigurationsdatei unter dem zum jeweiligen Motor geh rigen Abschnitt ab Dazu werden die SaveSettings Methoden der Motorklassen aufgerufen Au erdem wird f r die einzelnen Antriebe der INI Wert RestartPossible auf TRUE gesetzt um ein ordnungsgem es Programmabschlu zu signalisie ren Die Motoren werden danach gestoppt 146 KAPITEL A SCHNITTSTELLENBESCHREIBUNG DER MOTORENANSTEUERU
197. mp Wertebereich OrigTL if fTemp mlGetValue nMotorT L MaxDistance lt Wertebereich MaxTL Wertebereich OrigTL Wertebereich MaxTL fTemp Wertebereich OrigTL if fTemp mlGetValue nMotorD F MinDistance gt Wertebereich MinDF Wertebereich OrigDF Wertebereich MinDF fTemp Wertebereich OrigDF if fTemp mlGetValue nMotorDF MaxDistance lt Wertebereich MaxDF Wertebereich OrigDF Wertebereich MaxDF fTemp Wertebereich OrigDF if fTemp mlGetValue nMotorCC MinDistance gt Wertebereich MinCC Wertebereich OrigCC Wertebereich MinCC fTemp Wertebereich OrigCc if fTemp mlGetValue nMotorCC MaxDistance lt Wertebereich MaxCC Wertebereich OrigCC Wertebereich MaxCC fTemp Wertebereich OrigCc return true Berechnung der Weltkoordinaten eines Punktes im akt KS TVektor TransformationClass translate_from_worldpoints TVektor OrigVektor 1 vektor homogen machen OrigVektor mache_homogen 2 HIN Transformation Multiplikation des homog Vektors mit den Trafo Matrizen von Anfang an 1 bis letzte Trafo Matrix durchlaufen for unsigned i 1 i lt trafo_hin elementanzahl i OrigVektor trafo_hin zeige i OrigVektor 3 Riickgabe des Vektors in kartesischer Form return OrigVektor mache_kartesisch 206 KAPITEL C KOMMENTIERTE QUELLTEXTE Umrechnung eines Punktes im Welt KS i
198. mutale Rotation DC Beugung grob diffraction coarse CC Kollimator collimator DF Beugung fein diffraction fine TL Verkippung tilt Abbildung 4 1 Ablaufschema der manuellen Justage Die automatische Justage umfa t nur die Schritte des iterativen Justa geprozesses also diejenigen Schritte die die Achsen Tilt Beugung fein und Kollimator ver ndern 4 4 PFLICHTENHEFT 41 Nach Eingabe der Dialogparameter optimiert die Funktion automatisch die Lage der Kristallprobe zur R ntgenstrahlung Dazu wird zuerst der An trieb Kollimator so justiert da ein maximaler Intensit tswert im R nt gendetektor gemessen wird Mit Beugung fein wird so nachgeregelt da die Strahlungsintensit t nicht abf llt Im darauf folgenden Optimierungsschritt wird die Achse Tilt verstellt bis die Strahlung ein weiteres Maximum er reicht Der Antrieb Beugung fein dient wiederum zur Nachregelung Der gesamte Proze besteht aus der Wiederholung dieser beiden Schritte Nach jedem Durchlauf werden die Abbruchkriterien getestet und die Justage wird gegebenenfalls beendet Im Fehlerfall wird eine entsprechende Nachricht f r den Nutzer generiert 4 Eingaben Der Benutzer kann im Dialog Automatische Justage folgende Parameter zur Steuerung der Funktion ver ndern e Anzahl der Wiederholungen der Schritte des iterativen Prozesses e Maximale R ntgenintensit tsdifferenz e Suchintervalle fiir die Ach
199. n Die Teilaufgaben Justage der azimutalen Rotation Voreinstellung des Kollimators mit einer Sch tzfunktion und die in dieser Arbeit realisierte Funktion Automatische Justage ergeben bei sequentieller Ausf hrung eine vollautomatische Einstellung der Probe bei der nur noch das Einlegen der Probe selbst vom Nutzer erledigt werden mu 10 2 AUSBLICK 135 Eine weitere Verbesserung der Funktion Automatische Justage w rde die M glichkeit darstellen den Justagevorgang ber einen Dialogknopf ab brechen zu k nnen Da dies aus den genannten Gr nden Kap 7 nicht in dieser Arbeit realisiert wurde m te bei einer Portierung des gesamten Soft wareprojekts in die 32 Bit Umgebung die F higkeit des Betriebssystems f r pr emptives Multitasking ausgenutzt werden Der Suchalgorithmus k nnte dann einen Thread darstellen dessen Abarbeitung durch den Nutzer mittels eines Dialogknopfs beendet wird Dazu kann der Startknopf nach Bet ti gung in einen Abbruchknopf umgewandelt werden so da bei nochmaliger Bet tigung nach einer Sicherheitsabfrage der Abbruch des Justagevorganges erfolgt Anhang A Schnittstellenbeschreibung der Motorenansteuerung Vom urspr nglichen Entwickler des Programms ist die Hardwareansteuerung im Speziellen der Zugriff auf die Motoren von den brigen Programmtei len gut abgekapselt worden Der Programmierer hat versucht alle f r die Motoren relevanten Funktionen in einer Dynamic Li
200. n Gro teil der verschiedenen Proben am besten geeignet ist Dement sprechend sollte dieser Suchbereich auch f r die hier getesteten Proben gute Ergebnisse liefern Die brigen Einstellungen die im Dialog der Automatischen Justage verlangt werden wurden auf die beim Test der probenunabh ngigen Para meter Abschnitt 8 4 2 ermittelten Werte eingestellt Der Parameter Max Intentsit tsdifferenz blieb auch bei diesen Tests ausgeschaltet Anhand der Protokolldateien der jeweiligen Testreihen wurde aber untersucht wie sich dieser Parameter im aktivierten Zustand auf die Tests und deren Ergebnisse ausgewirkt h tte Folgende feste probenunabh ngige Einstellungen wurden benutzt e Toleranz der Optimierung 0 1 e Anzahl der Durchl ufe 5 e Anzahl der Intensit tsmessungen 3 e Maximale Intensit tsdifferenz aus Bei der Variation des Suchbereiches stellten sich folgende Testf lle als sinnvoll heraus Testfall Nr 1 2 3 4 5 6 7 8 DF 20 20 50 50 50 50 50 50 Suchbereich TL 20 20 20 20 20 20 50 50 CC 50 100 50 100 150 200 50 150 Einheit f r Beugung fein Winkelsekunden 3Einheit f r Tilt Winkelminuten Einheit f r Kollimator Mikrometer 114 KAPITEL 8 TEST Jede Probe wurde nun mit einer Testreihe von 8 Testf llen untersucht Dabei blieb der Ausgangspunkt an dem der Justagevorgang gestartet wurde immer gleic
201. n Koordinaten im akt KS TVektor TransformationClass translate_to_worldpoints TVektor OrigVektor 1 vektor homogen machen OrigVektor mache_homogen 2 RUCK Transformation Multiplikation des homog Vektors mit den Trafo Matrizen vom Ende der Liste bis zum Anfang for unsigned i trafo_rueck elementanzahl i gt 0 i OrigVektor trafo_rueck zeige i OrigVektor 3 Riickgabe des Vektors in kartesischer Form return OrigVektor mache_kartesisch bersetzung der Originalintervalle in akt Koordinaten TMotorPositionsWerte TransformationClass translate_PosBorders void TVektor Punkt3D 3 TMotorPositionsWerte Intervalle double X Y Z bersetzung der Intervalle in akt Koordinaten unbedingt mit Vergleich der Softwareschranken d h notwendige R ckrechnung translate_to_worldpoints der akt Schranken in Weltkoordinaten aktSchranke x y z gt weltkoord_aktSchranke x_w y_w z_w x_w Werte mit Wertebereich Min MaxTL bzw Softwareschranke vergl usw Intervallgrenzen aus Wertebereich fiir TL umrechnen Punkt3D set_XYZ Wertebereich MinTL 0 0 Punkt3D translate_from_worldpoints Punkt3D Punkt3D get_XYZ Intervalle MinTL Y Z Punkt3D set_XYZ Wertebereich MaxTL 0 0 Punkt3D translate_from_worldpoints Punkt3D Punkt3D get_XYZ Intervalle MaxTL Y Z Intervallgrenzen fiir DF umrechnen Punkt3D set_XYZ 0 Wertebereich MinDF 0 Punk
202. n werden zur ck Die Einheit wird bei der Initialisierung der Dynamic Link Library motors dll aus dem Unit Eintrag des Motors in der Konfigurationsdatei ausgelesen und in szUnit gespei chert Parameter R ckgabewert LPCSTR Wert der Motor Membervariablen szUnit die die Einheit fiir die Positionsangaben des aktiven An triebs enthalt Siehe auch mGetUnitType mGetAxisName mGetDF Syntax LPCSTR WINAPI mGetDF void Beschreibung Gibt die Formatzeichenkette fiir die Stellengenauigkeit zur Darstellung der Motorwerte des aktuellen Antriebs im Steuerprogramm zuriick Das Format wird mit Hilfe des Digits Eintrags in der Konfigurationsdatei beim Initialisieren des Motors fest gelegt und in der Motor Membervariable DF mt als Zei chenkette der Form 21 abgespeichert DFmt wird dazu verwendet die Werte bestimmter Antriebsgr en wie z B dMinAngle dSpeed dDistance etc mit einer einheitlichen und sinnvollen Anzahl von Nachkomma stellen in den Dialogen zu pr sentieren Es wird eine Nachkommastelle weniger als bei Verwen dung des Formatstrings Fmt ber cksichtigt Parameter R ckgabewert LPCSTR Wert der Motor Variablen DFmt der bei der Initialisierung des aktuellen Antriebs abh ngig vom Konfigurationsdateieintrag Digits mit einem Format string der Art 21 belegt wurde Siehe auch mGetSF A 2 INTERFACE DER MOTOR FUNKTIONEN 161 mGetSF Syntax Beschreibung Parameter Riickg
203. nClass GetIntensityOnPosition Fehler bei Speicherreservierung xalloc MB_OK PostQuitMessage 1 Destruktor TransformationClass TransformationClass void delete buf delete buf1 Initialisierung der Intervallgrenzen der Motoren bool TransformationClass Initialize double MaxDF double MaxTL double MaxCC double fPosition fTemp Ermittlung der aktuellen Motorpositionen und C 2 ALGORITHMUS UND KERNFUNKTIONALIT T TRANSFORMATIONCLASS 205 Festlegen der Intervallgrenzen zur Justage Antrieb Tilt setzen der aktuellen Antriebsachse mlSetAxis nMotorTL aktuelle Position des Antriebs bestimmen mGetDistance fPosition Wertebereich OrigTL fPosition Tilt Wertebereich 20 Minuten Wertebereich MinTL 1 MaxTL Wertebereich MaxTL MaxTL Antrieb Beugung fein mlSetAxis nMotorDF mGetDistance fPosition Wertebereich OrigDF fPosition DF Wertebereich 200 Sekunden Wertebereich MinDF 1 MaxDF Wertebereich MaxDF MaxDF Antrieb Kollimator mlSetAxis nMotorCC mGetDistance fPosition Wertebereich OrigCC fPosition CC Wertebereich 100 Mikrometer Wertebereich MinCC 1 MaxCC Wertebereich MaxCC MaxCC Vergleich mit Softwareschranken und ggf nderung der Wertebereiche if fTemp mlGetValue nMotorT L MinDistance gt Wertebereich MinTL Wertebereich OrigTL Wertebereich MinTL fTe
204. nden Neustart des Programms die Positionswerte der Antriebe verstellt wurden Der Ausgangspunkt f r die Justage ist jedoch in etwa der gleiche nur die Positionswerte unterscheiden sich von den vorhergehenden Werten Testfall 3 Dialogparameter Toleranz 1 Suchbereich Durchl ufe T DF 20 max Intensit tsdiff aus TL 20 Anzahl der Messg 1 CC 100 Startwerte Endwerte Ausleuchtung DF 10 01 DF 16 37 TL 8 97 TL 7 9 CC 105 50 CC 174 29 Intensit t 25000 Intensit t 244000 HWB 17 6 HWB 11 8 Dauer der Justage 13 39 min Bemerkung Da nur eine Messung zur Intensit tsbestimmung durchgef hrt wurde lief die Justage auch bei sieben Durchl ufen in vertretbarer Zeit ab Die Probe ist noch nicht optimal eingestellt Das zeigen die nicht komplette Ausleuchtung der Probe und die Halbwertsbreite Testfall 4 Dialogparameter Toleranz 1 Suchbereich Durchl ufe 7 DF 20 max Intensit tsdiff aus TL 20 Anzahl der Messg 5 CC 100 Startwerte Endwerte Ausleuchtung DF 17 66 DF 16 37 TL 8 59 TL 7 9 CC 103 78 CC 174 29 Intensit t 25300 Intensit t 245000 HWB 17 6 HWB 9 61 Dauer der Justage 21 59 min 8 4 TESTF LLE MIT PROBEN 107 Bemerkung Die Justage dauerte sehr lang Das ist auf die Anzahl der Messungen gepaart mit der hohen Anzahl von Durchl ufen zur ckzuf hren Die Probe ist gut ausgeleuchtet was sich auch in einer guten Ha
205. ngleMaz dAngle Width und dSpeed in der zum aktuellen Antrieb geh rigen Struktur Settings vom Typ TMSettings deklariert in m_motcom h zwischenzuspeichern Dabei werden even tuell fr her gespeicherte Werte ohne Warnung ber schrieben Zwischen zwei mPushSettings Aufrufen soll te also ein Aufruf von mPopSettings erfolgen sonst ge hen die zuerst gespeicherten Werte verloren Parameter R ckgabewert Siehe auch mPopSettings mPopSettings Syntax void WINAPI mPopSettings TMParameter mParam Beschreibung Schreibt die mit der Funktion PushSettings in der Struktur Settings gespeicherten Werte in die ent sprechenden Member Variablen des aktuellen Antriebs zur ck Die Struktur Settings ist eine Motormemberva riable vom Typ TMSettings deklariert in m motcom h Beim Zur ckschreiben werden die Werte f r die Soft wareschranken dAngleMin und dAngleMaz die Win kelschrittweite dAngleWidth und die Motorgeschwindig keit dSpeed ge ndert Abh ngig vom bergebenen Pa rameter mParam vom Typ TMParameter deklariert in comhead h besteht die M glichkeit die alte Winkelstel lung d h den alten Wert von dAngle wiederherzustel len Parameter TMParameter mParam diese Enumeration ist in A 2 INTERFACE DER MOTOR FUNKTIONEN 165 R ckgabewert Siehe auch comhead h deklariert und kann folgende Werte an nehmen ThisPosition OldPosition WaitExecution NoWait Die Funktion mPopSettings testet aber nur fal
206. nikII lehre PROJ_SE_WS98 Emails 25 06 98 html B Oestereich Objektorientierte Softwareentwicklung mit der Unified modeling language R Oldenbourg Verlag M nchen Wien 3 aktuali sierte Auflage 1997 Physik Instrumente PI C 832 DC Motor Controller Programming Manual Physik Instrumente GmbH D 76333 Waldbronn Germany Release 1 1 Date 13 April 1993 Low Level Programming and C Pro gram Examples Physik Instrumente PI C 812 DC Motor Controller Operating Manu al Programming Reference Product Documentation Physik Instrumen te GmbH D 76333 Waldbronn Germany Release 5 01 Date 14 Dez 1993 A Schad S L hnsdorf Radicon SCSCS Mittlere Implementationsebe ne Humboldt Universit t zu Berlin Institut f r Informatik Lehrstuhl Softwaretechnik http www informatik uni berlin de Institut struktur softwaretechnikII lehre PROJ_SE_WS98 Entwicklerdokumente Detektoren_Ges_Doku 0 dim Detktoren Radicon Vortrag ebenen html K Sch tzler Studienarbeit Implementation eines 0 dimensionalen Test detektors zur Simulation einer realen Probe Lehrstuhl Softwaretechnik LITERATURVERZEICHNIS 231 Humboldt Universit t zu Berlin Math Nat Fakult t II Institut f r In formatik 2000 16 B U Pagel und H W Six Software Engineering Band 1 Die Pha sen der Softwareentwicklung Addison Wesley Bonn Paris Reading Massachusetts 1994 17 I N Bronstein und K A Semendjajew Taschenbuch der Mathematik Erg
207. nis wie das RTK Steuerprogramm nicht wie in der fr heren Version im Windows Verzeichnis Der Fahrbetrieb bezeichnet den Betriebsmodus bei dem durch Dr cken der Pfeiltasten der entsprechende Motor bewegt wird wobei im Dialog Manuelle Justage die Checkbox Fahren ausgew hlt sein mu 124 KAPITEL 9 NUTZERDOKUMENTATION wobei nach kurzer Zeit das Z hlen des Detektors schneller wird bis hin zum Rauschen Ist dies nicht der Fall mu die andere Richtung abgesucht werden Ki El 2 Winkel Neuer Winkel Sekunden Antrieb Schnellwahl Relative Null aufheben Halbwertsbreite messen _Beugung Fein Relative Null setzen a Kollimator Aktueller Antrieb DF M Schritt Betrieb mit D Sekunden gt Fahren mit s 1 Verlassen Abbildung 9 1 Dialogfenster Manuelle Justage Wurde ein Peak gefunden wird der zweite Peak bestimmt Das hei t da der Antrieb Azimutale Rotation weiter bewegt werden mu Findet man in der einen Richtung den zweiten Peak nicht wird die Richtung ge ndert Ist er gefunden ermittelt man den Mittelpunkt zwischen beiden Peaks indem die relative Null im Dialog Manuelle Justage auf einen Peak gesetzt wird und dann zum zweiten Peak gefahren wird Dann f hrt man mit dem Antrieb Azimutale Rotation den halben Abstand zwischen den beiden Peaks an und schlie t damit die Justage f r den Antrieb Azimutale Rotation ab Mit
208. nk Library DLL der Bibliotheksdatei motors d11 zusammenzufassen F r jede Art der Motorenansteuerung die grunds tzlich von der ver wendeten Hardware Motorsteuerkarte abh ngt ist im Programm eine spe zielle Klasse in C implementiert Um die Motorenhardware auch soft waretechnisch ohne Kenntnisse der Objektorientierung nutzen zu k nnen hat der Entwickler ein Interface in der Programmiersprache C entworfen Damit ist es m glich die Motoren mittels dieser Bibliothek au erhalb des R ntgentopographie Steuerprogramms anzusteuern Dieses C Interface stellt eine Abstraktionsschicht High Level Layer der Motoransteuerung dar Der Benutzer ben tigt hierbei keine Informationen ber die Art des Hardwarezugriffs sondern kann die Motoren ber die ih nen zugeordnete Achse oder ihre Identifikationsnummer ansprechen und die gew nschte Funktion ausf hren lassen Im folgenden werden die vom Entwickler bereitgestellten C Funktionen und ihre Anwendung beschrieben Bibliothek von Funktionen die erst zur Laufzeit dynamisch vom Hauptprogramm geladen wird 138 KAPITEL A SCHNITTSTELLENBESCHREIBUNG DER MOTORENANSTEUERUNG Zuerst mu zwischen zwei Arten von Funktionen unterschieden werden a mlFunctionName Diese Funktionen benutzen den Motor mit der berge benen Motornummer ml steht hierbei f r Motorliste das hei t es wird auf Funktionen und Membervariablen der Klasse TMList zugegriffen b mFunctionName Diese Fu
209. nktionen benutzen den zur Zeit aktivierten Motor m steht hierbei fiir Motor das bedeutet da Funktionen und Membervariablen der von TMotor abgeleiteten Klassen benutzt werden A 1 Interface der Motorlisten Funktionen Der Gro teil der Motorlisten Funktionen erwartet als bergabeparameter eine Motor Identifikationsnummer mid die festlegt f r welchen Antrieb die jeweilige Funktion ausgef hrt werden soll mllInitializeMotorsDLL Syntax Beschreibung Parameter R ckgabewert Siehe auch BOOL WINAPI mlInitializeMotorsDLL void Diese Funktion f hrt die Initialisierung der Bibliothek motors dll aus Die Konfigurationsdatei wird nach Eintr gen der verschiedenen Motorobjekte z B Objek te der Klassen TMotor TC812ISA TC832 durchsucht die dann erzeugt und der Reihenfolge nach in die Mo torenliste Klasse TMList aufgenommen werden Die Membervariablen der Motoren werden mit Werten aus der INI Datei belegt Es wird versucht die Motoren ber die Motorsteuerungshardware anzusprechen und zu initialisieren TRUE Initialisierung erfolgreich FALSE Initialisierung mindestens eines Motors schlug fehl mlIsServerOK A 1 INTERFACE DER MOTORLISTEN FUNKTIONEN 139 mlSetAxis Syntax BOOL WINAPI mlSetAxis int mid Beschreibung Festlegung der aktiven Achse Damit wird der Antrieb mit der angegebenen Motor ID als aktiver Motor einge stellt indem die TMList Membervariable nActiveDrive mit
210. nn Schema des Strahlengangs 00 Probenhalter ur Pog N oF aoe ee oe le Se Topographie Me platz am Institut f r Physik Nahaufnahme des Probenhalters Dialogfenster Manuelle Justage 2 22 22 020 Dialogfenster Z hlerkonfiguration Dialogfenster zum Starten des Topographievorgangs Dialogfenster zum Einstellen der Topographieparameter In einem Schichtsystem erzeugte Inseln Ablaufschema der manuellen Justage Dialogfenster Automatische Justage 2 222222 Beispiel zur Koordinatensystemtransformation Visualisierung des vorangegangenen Beispiels Flu diagramm der automatischen Justage Flu diagramm der Maximumsuche auf einer Achse Architektur der Programmerweiterung Klassendiagramm der neuen Dialogklasse 2 Klassendiagramm der Transformationsklasse Klassendiagramm der Matrixklasse Einf gen neuer Quelltextdateien in das Softwareprojekt Anwendung des Borland Resource Workshop Enwurf des Dialogfensters Automatische Justage Men punkt f r die neue Programmfunktion ix 7 5 9 1 9 2 9 3 Kontroll und Nachrichtenflu der Automatischen Justage 86 Dialogfenster Manuelle Justage 2 22 22 2020 124 Dialogfenster Z hlerkonfiguration
211. nsbesondere f r den Kollimator Kapitel 9 Nutzerdokumentation 9 1 Einf hrung Die Steuerprogrammfunktion Automatische Justage hat die Aufgabe ei ne Probe optimal im Hinblick auf einen anschlie enden Topographievorgang zu justieren Das Ziel des Justagevorganges ist es da die Probe auf dem Probenteller optimal ausgeleuchtet wird Physikalisch bedeutet dies da die R ntgenstrahlung mit der die Probe bestrahlt wird von der gesamten Fl che der Probe reflektiert wird Anders formuliert es wird ein Inten sit tsmaximum der von der Probe reflektierten R ntgenstrahlung gesucht Erreicht wird die korrekte Einstellung der Probe durch einen Suchalgorith mus der die Freiheitsgrade Beugung Fein und Tilt des Probetellers sowie den Kollimator so ver ndert da ein Intensit tsmaximum am angeschlosse nen Detektor registriert werden kann 9 2 Voraussetzungen f r eine Automatische Justage Bez glich der Hardware und Software m ssen mehrere Vorbedingungen erf llt sein um die Funktion Automatische Justage nutzen zu k nnen Grundvor aussetzung ist ein intakter Topographiearbeitsplatz mit einem angeschlosse nen Personalcomputer der die Steuerung bernimmt 9 2 1 Softwarevoraussetzungen Auf dem Arbeitsplatzrechner mu das aktuelle RTK Steuerprogramm un ter dem Betriebssytem Windows 3 1 installiert sein Die f r eine korrekte 122 KAPITEL 9 NUTZERDOKUMENTATION Funktionsweise ben tigten Dateien m
212. nt nMotorTL 1 nMotorDF 1 nMotorCC 1 Globales Flag fiir Schreiben in Justagelog bool bWriteLogfile Zeiger auf Counterliste extern LPDList lpDList Statusmeldungen in Prokolldatei f r die Automatische Justage schreiben void WriteToJustageLog char buf FILE hLogFile if hLogFile fopen Justage log at NULL MessageBox GetFocus WriteToJustageLog Fehler beim ffnen von Justage log fopen MB_OK if fwrite buf 1 strlen buf hLogFile strlen buf MessageBox GetFocus WriteToJustageLog Fehler beim Schreiben in Justage log fwrite MB_OK if fclose hLogFile EOF MessageBox GetFocus WriteToJustageLog Fehler beim SchlieSen von Justage log fclose MB_OK 188 KAPITEL KOMMENTIERTE QUELLTEXTE xk kkk Dialog Automatische Justage akak akak akak akk gt k kkk akak akak akak akak k Kk kkk k k eR Selbst ndiges Einstellen der Probek kakak kkk kk kkk kk TAutomaticAngleControl TAutomaticAngleControl void TModalDlg AutomaticAngleControl nMaxString 32767 try Speicher f r Status Textfeld String amp tempor re Puffer reservieren status new char nMaxString buf new char 1024 buf1 new char 1024 catch xalloc MessageBox GetFocus TAutomaticAngleControl Fehler bei Speicherreservierung xalloc MB_OK PostQuitMessage 1 BOOL TAutomaticAngleControl Dlg_OnInit HWND h
213. nzufahren sondern sich sofort an dieser Position befindet Das bringt u a einen hohen Zeitgewinn f r den Test Die Einstellungen zur Einbindung der Testantriebe werden in der Initialisierungsdatei vorgenom men Ein entsprechender Eintrag in der Datei develop ini w rde f r die Antriebsachse Beugung fein DF folgenderma en lauten 100 KAPITEL 8 TEST Motor0 Name DF Unit Sekunden Type C 812ISA Type TMotor Als Motortyp wird lediglich TMotor eingetragen Um diese Anderung sp ter leicht r ckg ngig machen zu k nnen kann der vorherige Eintrag durch Voranstellen eines Semikolons auskommentiert werden Der zur Justage ben tigte 0 dimensionale R ntgendetektor steht eben falls als per Software simuliertes Z hlerger t zur Verf gung Die zugeh rige Klasse TDevice ist vom Programmierer der Steuersoftware implementiert worden Dieser Z hler stellt eine sehr einfache Simulation eines Detektors dar und liefert Intensit tswerte die nur in Abh ngigkeit von den Positionen der Achsen Beugung fein und Tilt berechnet werden Im Softwaresanierungsprojekt hat sich ein Student mit der Implemen tation eines Testdetektors auseinandergesetzt der R ntgenintensit tswerte liefert die an einer realen Probe in Abh ngigkeit von der Stellung der Mo torachsen Tilt Beugung fein und Kollimator gemessen wurden 15 Die neu implementierte Klasse Testdev ist zur Simulation des Detektor verhaltens besser ge
214. ohne einen erkennbaren Zugewinn an Sicherheit im Rahmen der verwendeten Me apparatur zu erreichen Die folgenden Ausschnitte aus unterschiedlichen Protokolldateien zei gen den Einflu der Medianfunktion bei einer unterschiedlichen Anzahl von Messungen auf den tats chlich an den Justagealgorithmus berge benen Intensit tsme wert Es ist gut zu erkennen da bei drei und f nf Messungen ein gemessener Intensit tswert den Median bildet wohin gegen bei zwei Messungen ein berechneter Mittelwert zur ckgeliefert wird Protokolldateiausz ge M Messung I Intensit t letzter Wert R ckgabeintensit t Testfall 3 1 Messung kein Einflu M 1 1 37268 76 Median 37268 76 I 37269 112 KAPITEL 8 TEST Testfall 2 2 Messungen Mittelwert M 1 1 27640 00 Median 27640 00 M 2 1 28446 14 Median 28043 07 I 28043 Testfall 1 3 Messungen Median M 1 1 22401 73 Median 22401 73 M 2 1 22854 48 Median 22623 10 M 3 1 23552 96 Median 22854 48 I 22854 Testfall 4 5 Messungen Median 1 1 34941 40 Median 34941 40 2 1 35585 13 Median 35263 27 3 1 34543 12 Median 34941 40 4 1 35151 64 Median 35046 52 5 1 34896 49 Median 34941 40 I 34941 SS S355 e Maximale Intensit tsdifferenz Bei der Auswertung der Protokolldateien stellte sich heraus da ein Abbruch in den meisten F llen nicht n tig war F r den Testfall 8 h tte sich beispielsweise mit aktivierter Intensit tsdifferenz nicht so ein aus gezeichne
215. ollte die Datei noch nicht exi stieren dann wird die Datei neu erstellt Ansonsten wird die Logdatei mit jeder Neuausf hrung der Automatischen Justage sukzessive verl ngert wo bei in der Logdatei jeder Justagevorgang mit Datum und Uhrzeit protokol liert wird Toleranz Um das Maximum auf den einzelnen Koordinatenachsen zu bestimmen ver wendet der Algorithmus das Verfahren des Goldenen Schnitts Die Toleranz gibt dabei an wie klein das letzte Intervall sein soll indem sich das Maximum befindet Je kleiner die Toleranz angegeben wird desto mehr Suchschritte sind n tig F r einen sinnvollen Wert wurde ein Wertebereich zwischen 0 1 und 1 vorgegeben Die Entwickler der Automatischen Justage empfehlen dem Nutzer den voreingestellten Wert von 0 1 zu benutzen Durchl ufe Mit Durchl ufen ist gemeint wie oft der Algorithmus wiederholt werden soll Da es keinen Nachweis gibt der beweisen kann da es sich bei einem Punkt um den Peak handelt m ssen andere Abbruchverfahren die Suche beenden Eine M glichkeit ist die durch das Programm eine Anzahl von Algorithmusdurchl ufen vorzugegeben und anzunehmen da der Algorith mus nach einer bestimmten Anzahl von Durchl ufen den Peak erreicht hat bzw sich unmittelbar in seiner Umgebung befindet Ist der letzte gemessene Intensit tswert nicht der h chste Wert der w hrend des Justagevorganges erfa t wurde so f hrt das Programm automatisch den Punkt an an dem der h
216. opographie ab Dieser Fehler ist inzwischen im Softwaresanierungsprojekt korrigiert worden Ein weiteres wichtiges Kriterium von Software ist die Fehleranf lligkeit Man geht von der Erkenntnis aus da jede Software Fehler enth lt also da in keinem Fall die Existenz von Fehlern ausgeschlossen werden kann Man spricht von zuverl ssiger Software wenn Fehler selten auftreten und nur geringe Auswirkungen haben 5Die formale Spezifikation kann man als die Weiterf hrung der Problembeschreibung ansehen 2 4 BEWERTUNG DER SOFTWARE 23 Danach kann das RTK Steuerprogramm als zuverl ssig betrachtet wer den Es gibt allerdings einige undokumentierte Fehler die von Mitarbeitern des Instituts f r Physik registriert wurden Der Autor des RTK Steuer programms hatte selbst versucht einige dieser Fehler zu analysieren und zu beheben sie waren aber oft nicht reproduzierbar Er war der Meinung diese Fehler w ren auf eine fehlerhafte Bedienung der Nutzer zur ckzuf hren her vorgerufen durch falsche Eintragungen in der Initialisierungsdatei Dies w re aber ein Indiz daf r da das Programm in Bezug auf die Initialisierungsdatei nicht robust sei Eigene Erfahrungen haben in der Tat best tigt da eine gro e Feh leranf lligkeit von der Initialisierungsdatei ausgeht 2 4 2 Dokumentation Man unterscheidet zwei Arten von Dokumentationen 1 Die Systemdokumentation umfa t alle inneren Aspekte der Software d h operation
217. ositiv ist anzumerken da eine erkennbare Ar chitektur mit Schnittstellen zur Hardware und zur Oberfl che existiert Die Software besteht aus den drei Schichten Hardwareansteuerung Kernfunk tionalit t und grafische Oberfl che Die unzureichende Bewertung ergibt sich unter anderem deshalb weil die Trennung der beiden Schichten Kern funktionalit t und grafische Oberfl che zu unscharf gestaltet ist Gerade an dieser Stelle w re es w nschenswert wenn es eine sch rfere Trennung ge ben w rde da dies im Hinblick auf die Portabilit t enorme Erleichterungen bringt Mit Portabilit t ist dabei nicht unbedingt die Portierung auf das Betriebssystem Linux gemeint obwohl diese schon einmal ins Auge gefa t wurde sondern allein schon die bertragung in eine andere Entwicklungs umgebung W re diese Schichtentrennung besser gel st worden k nnte das einige Entwicklungsarbeit sparen Irritierend ist au erdem die Verwendung von C und C Obwohl der Gro teil der Software in C programmiert ist wurde f r die Schnittstellen zur Hardware C als Programiersprache verwendet Dadurch wurde das Pro gramm un bersichtlich und unn tig aufgebl ht sprich die Lesbarkeit des Quelltextes wurde verschlechtert 2 4 4 Benutzungsfreundlichkeit Unter Benutzerfreundlichkeit versteht man da ein Softwareprodukt Benut zern eine komfortable Bedienung erm glicht Wichtige Kriterien die an eine benutzerfreundliche Software
218. ounts Arbeitspunkt Belichtungsregelung Lage Prozent Schritt arcsec Anfahren mit arcsec Bereich Presid Belichtungszeit _ Mehrfach Belichtung Anzahl Minuten Schrittweite arcsec Stariwert arcsec Abbildung 3 4 Dialogfenster zum Einstellen der Topographieparameter in dem alle relevanten Parameter f r den Topographievorgang eingestellt werden Unter Arbeitspunkt wird angegeben bei wieviel Prozent der H he der Rockingkurve der Arbeitspunkt liegen und mit welcher Schrittweite in Winkelsekunden er angefahren werden soll Der Actuator bezeichnet den Motor der den Freiheitsgrad Beugung fein ver ndert In der Regel ist das immer der Antrieb Beugung fein Zus tzlich dazu wird ein Bereich angegeben den der Arbeitspunkt nicht verlassen darf ansonsten wird der Me vorgang abgebrochen Unter Detektor wird der jeweilige Z hler ausgew hlt und die Z hlzeit sowie die maximale Impulsrate festgelegt Bei Belichtungsregelung wird die Schrittweite angegeben mit der der Antrieb Beugung fein bei einer Ver nderung der Intensit t korrigiert werden soll Dazu wird ein Toleranz bereich in Prozent vorgegeben in dessen Grenzen eine Ver nderung der In tensit t noch nicht als ein Wandern des Arbeitspunktes interpretiert wird F r stark gekr mmte Me proben mu eine Mehrfachbelichtung durch gef hrt werden Unter dem Auswahlk stchen Mehrfachbelichtung wird die se Art
219. ppen und Dialog beenden LeaveDialog EndDialog hwnd id break case cm_start_justage START Button deaktivieren EnableWindow GetDlgItem hwnd cm_start_justage FALSE Mauszeiger in Sanduhr umwandeln SetCursor LoadCursor NULL IDC_WAIT Transformationsobjekt erzeugen Transform new TransformationClass FORWARD_WM_COMMAND GetHandle cm_set_parameters 0 0 PostMessage break case cm_set_parameters Wert fiir die Toleranz des Goldenen Schnitts aus Dialog holen GetDlgItemText hwnd ID_Toleranz buf 4 Vorzeichen eleminieren Transform gt toleranz fabs atof buf Bereichspr fung bei Fehler Defaultwert if Transform gt toleranz gt 1 0 Transform gt toleranz lt 0 1 Defaultwert Transform gt toleranz 1 0 R ckschreiben des korrigierten Wertes in den Dialog sprintf buf 1f Transform gt toleranz SetDlgItemText hwnd ID_Toleranz buf Wert f r die Anzahl der Algorithmus Durchl ufe aus Dialog holen GetDlgItemText hwnd ID_Durchlauf buf 4 gegen Vorzeichen hilft abs durchlauf abs atoi buf Bereichspr fung bei Fehler Defaultwert if durchlauf lt 1 durchlauf gt 7 Defaultwert durchlauf 5 R ckschreiben des korrigierten Wertes in den Dialog sprintf buf d durchlauf SetDlgItemText hwnd ID_Durchlauf buf Wert f r die Intensit tsdifferenz aus Dialog holen Differenz soll auch als Ab
220. r Identifizierung einzelner Dialogelemente beispiels weise ID_Logfile f r die Checkbox zur Auswahl des Schreibens eines Pro tokolls sind in der Datei rc_def h in Form von define Anweisungen gespei chert Au erdem finden sich in dieser Datei auch die Kommando IDs der Steuerkommandos die der Dialog empfangen kann z B cm start_justage zum Start der automatischen Justage Innerhalb des Projektes werden f r die Dialogelemente vom Ressourcen Manager fortlaufend Nummern verge ben Die Ressourcenbezeichnungen IDs dienen dazu die Dialogelemente innerhalb des Programmtextes komfortabler und eindeutig ansprechen zu k nnen Im folgenden ist ein Ausschnitt der Datei rc_def h dargestellt der sich auf die Dialogelemente und Kommandos der Dialogs Automatische Justage bezieht AutomaticAngleControl Kommandos define cm_start_justage 562 define cm_set_parameters 574 define cm_initialize 575 define cm_choose_axis 576 define cm_optimizing_TL 577 AutomaticAngleControl Fensterelemente define ID_Status 825 define ID_Logfile 826 define ID_Help 827 define ID_CANCEL 828 7 2 DIALOGPROGRAMMIERUNG 83 define ID_Toleranz 564 define ID_Durchlauf 565 define ID_DF_Intervall 566 define ID_IntenseDifferenz 569 define ID_MeasureCount 570 Zur programmiertechnischen Umsetzung der Dialogsteuerung wird auf die vom urspr nglichen Programmierer der Steuersoftware zur Verf gung gestell ten Dialogklassen zur ckgeg
221. r Statusanzeige Optionen Counterdevice ok Beugung fein ok T Logdatei Tilt ok Kollimator ok Toleranz 0 1 1 Durchl ufe max 7 5 imale Are Anz Intensit tsmessg 3 Suchbereich Beugung Fein 50 sek Tilt 20 min Kollimator 100 um Hilfe Start der automatischen Justage Beenden Abbildung 9 3 Dialogfenster Automatische Justage Den gr ten Teil des Dialoges nimmt das Statusfenster ein Es dient dazu dem Nutzer w hrend der Justage Informationen zum Vorgang zu liefern Beim Start des Dialoges wird berpr ft ob alle ben tigten Ger te im Sys tem integriert sind Wenn alles korrekt installiert ist dann erh lt man eine Ausschrift im Statusfenster wie in der Abb 9 3 Auf der rechten Seite bekommt der Nutzer eine Anzahl von Optionen zur Auswahl mit denen er den Justagevorgang beeinflussen bzw sich nach der Justierung der Probe mehr Informationen bergeben lassen kann Nachfol gend sollen die m glichen Optionen erl utert werden 9 4 DURCHF HRUNG DER AUTOMATISCHEN JUSTAGE 127 Logdatei Bei Auswahl K stchen wird mit einem Haken markiert werden alle wichti gen Informationen der Automatischen Justage in die Logdatei justage log geschrieben Das hei t mit Hilfe der Logdatei kann der Nutzer jeden Mef chritt des Justagevorganges nachvollziehen Die Datei befindet sich im selben Verzeichnis wie das RTK Steuerprogramm S
222. r die Diffraktometrie und Dialoge f r die Scanpara meter rc_def h comhead h m_devcom h m_steerg h m_xscan h c_layer h m_layer h m_steerg cpp Klassen f r die Ablaufsteue rung Makros rc_def h comhead h m_devcom h m_steerg h m_xscan h c_layer h m_layer h l_layer h mdlg h m_topo cpp Klassen f r die Topographie rc_def h comhead h m_devcom h m_layer h m_steerg h m_topo h m_device cpp Klasse bzw Methoden f r das Z hlerfenster Klasse TCoun terWindow rc_def h comhead h m_devcom h 18 KAPITEL 2 DAS STEUERPROGRAMM m_main cpp Hauptfunktion f r das Pro gramm lnitialisierung der Bibliotheken Windows Nachrichtenschleife Event Handler rc_def h comhead h m_devcom h m_steerg h m_topo h mxscan h m_dlg h help_def h st_layer h l_layer h m_layer h c_layer h m_dlg cpp Implementation verschiedener rc_def h comhead h Dialogklassen unter anderem m devcom h Manuelle Justage m steerg h m_layer h c_layer h m_dlg h dlg_tpl cpp selbstdefinierte Templateklas rc_def h comhead h sen f r Dialogobjekte inklusive der Methoden main rc Ressourcen f r die Dialoge des rc_def h Steuerprogrammes Da die Entwicklungsumgebung Borland C 4 0 nicht mehr zur Verf g ung steht werden jetzt die Versionen Borland C 4 5 respektive 5 02 ein gesetzt Zur Compilierung unter Borland 5 02 m ssen die B
223. r fett hervorgehoben Dies soll die Lesbarkeit der einzelnen Testdaten vereinfachen Im unteren Teil der Tabelle sind die Anfangs und Endwerte verzeichnet Das sind zum einen die Positionwerte f r die Antriebe Beugung fein DF Tilt TL und Kollimator CC und zum anderen die Intensit t der Strah lung und die Halbwertsbreite Zur berpr fung des Justageergebnisses wur de die Probe nach dem Justagevorgang mit einem 2 dimensionalen Detektor der an einen Monitor angeschlossen war untersucht Bei voller Ausleuch tung der Probe hat man eine perfekte Einstellung Dies w rde bedeuten da ber der gesamten Probe die Strahlung gem der Bragg Bedingung re flektiert wird Diese Testf lle wurden mit einem Pfeil unter der jeweiligen Spalte gekennzeichnet 8 4 TESTF LLE MIT PROBEN 105 F r die folgende Testreihe stand ein aus Silizium mit aufgebrachter SiGe Schicht bestehender Halbleiter zur Verf gung Die Probe hatte die interne Bezeichnung PF 916324 08 5 Testfall 1 Dialogparameter Toleranz 1 Suchbereich Durchl ufe 3 DE 20 max Intensit tsdiff aus TE 20 Anzahl der Messg 3 CC 100 Startwerte Endwerte Ausleuchtung DF CAE DF 5 74 TL 5 23 TL 10 74 CC 50 CC 21 04 Intensit t 22700 Intensit t 232000 HWB 22 43 HWB 14 96 Dauer der Justage 7 17 min Bemerkung Keine optimale Justage Vermutung Die Toleranz ist zu hoch um innerhalb von drei Durchl uf
224. raphie benutzt ist die Bragg Reflexion Einfallende Strahlung wird an den Netzebenen eines Kristalls reflektiert Dabei gilt da der Einfallswinkel gleich dem Ausfallswinkel ist Des weiteren wird nur ein geringer Teil je Netzebene reflektiert Wird nun der Einfallswin kel ver ndert so stellt man fest da nur bei bestimmten Einfallsrichtungen die reflektierte Strahlung eine me bare Intensit t sogenannte Bragg Reflexe aufweist Es sind genau die Richtungen bei denen der Gangunterschied der an den Netzebenen reflektierten Strahlung ein Vielfaches der Wellenl nge betr gt Die Abb 1 1 veranschaulicht den Gangunterschied zwischen den an den Netzebenen 1 und 2 reflektierten Strahlen in einem Kristall und erleichtert das Verst ndnis der anschlie enden Bragg Gleichung 3Die Reflexionskurve stellt die idealisiert gemessene charakteristische Kurve der R nt genstrahlungsintensit t in Abh ngigkeit vom Einfallswinkel der monochromatischen Plan welle dar Die einzelnen Ebenen sind gleich von einander entfernt KAPITEL 1 EINF HRUNG AY I a rkende Interferenz e 2 d Netzebenenabstand 0 Einfallswinkel AB BC Gangunterschied X Wellenl nge der Strahlung Abbildung 1 1 Bragg Reflexion an zwei Netzebenen eines Kristalls Die Bragg Gleichung 2dsnd n 1 1 mit d Netzebenenabstand 6 Einfallswinkel nr E2 A Wellenl nge Bei Erf llung der Bragg Gleichung wird die Strahlung d
225. rd ein Fehlercode zur ckgeliefert Bei C 832 Karten wird kein Kommando ausgef hrt und die Funktion kehrt so fort mit Erfolg zur ck was sicherlich nicht die beste L sung ist LPSTR command ein g ltiges Motorkommando f r die C 812 DC Controllerkarte Z B Move Absolute Kommando f r C 812 Karten boardID MA position RETURN Dabei gibt boardID die vom aktuellen Antrieb belegte Achsennummer auf der Steuerkarte an z B 1 Ach se am C 812 Controller boardID 1 Der Parame ter position stellt die anzufahrende Position in Encoder schritten dar Au erdem mu jedes Kommando mit dem ASCII Code 13ge RETURN abgeschlossen werden int Wert des Fehlercodes der bei dem Versuch der Kommandoausf hrung zur ckgeliefert wird Als Feh lercodes sind folgende Werte in comhead h definiert R_OK 999 die bertragung und Ausf hrung des Kommandos konnte ohne Fehler vorgenommen werden R_Failure 202 der Kommandomodus der Steuer karte ist bereits aktiv d h das Kommando kann z Z nicht angenommen werden R_TimeOut 214 das Kommando konnte nicht im Zeitrahmen an die Hardware gesendet werden 0 die DC Controllerkarte ist nicht korrekt vom Steu erprogramm erkannt worden 164 KAPITEL A SCHNITTSTELLENBESCHREIBUNG DER MOTORENANSTEUERUNG mPushSettings Syntax void WINAPI mPushSettings void Beschreibung Diese Funktion dient dazu die Werte der Motormember variablen dAngle dAngleMin dA
226. rdware statt int mid Identifikationsnummer des Motors einer spe ziellen Achse TValueType vtype Parameter gibt an welcher Motor wert zur ckgeliefert werden soll double Wert der durch den TValueType Parameter bestimmten Membervariablen des Antriebs wobei fol gende Zuordnung stattfindet Distance dAngle MinDistance dAngleMin MaxDistance dAngleMaz Speed dSpeed unter Ber cksichtigung von dw Velocity bzw Width dAngleWidth mlGetDistance mGetValue mGetDistance mSetValue mlMoveToDistance Syntax Beschreibung BOOL WINAPI m1MoveToDistance int mid double distance Startet die Bewegung des Motors der durch mid vor gegeben wird an die durch distance angegebene Motor stellung im Winkelma 142 KAPITEL A SCHNITTSTELLENBESCHREIBUNG DER MOTORENANSTEUERUNG Parameter int mid Identifikationsnummer des Motors einer spe ziellen Achse double distance Winkelposition an die der Motor be wegt werden soll R ckgabewert FALSE Fehlerfall motors d11 konnte nicht korrekt initialisiert werden d h die Konfigurationsdatei wurde nicht erfolgreich eingelesen TRUE Da keine Fehlerkontrolle beim Aufruf der Motorlisten Funktionen vorgenommen wird ist die Funktion in jedem anderen Fall auch bei ung ltiger Winkelangabe im Parameter distance erfolgreich Siehe auch mMoveToDistance mMoveByDistance mlGetDistance mlIsMoveFinish Syntax BOOL WINAPI mlIsMoveFinish int mid Beschre
227. rection unsigned nMeasureCount double amp fDFPos float amp fIntensity Korrektur fiir die Motorachse Beugung Fein Grund Wenn die Position der maximalen Intensit t am Ende der Suche wieder angefahren wird dann ist die Intensit t nicht mehr die gleiche die gemessen wurde Die Position ist leicht verschoben L sung DFCorrection soll in der n heren Umgebung das Maximum wieder finden s endif 204 KAPITEL KOMMENTIERTE QUELLTEXTE C 2 2 transfrm cpp include lt math h gt include rc_def h include comhead h include m_devcom h include m_layer h Module f r die automatische Justage include matrix h include m_justag h include transfrm h pragma hdrstop extern LPDList lpDList definiert in m_justage cpp extern int nMotorDF nMotorTL nMotorCC extern bool bWriteLogfile const double GOLD 0 61803 7 CRBS ae ak fee ae ae a era ae a ae ara a fear ae ae fee IIIS I ICI IACI I ae ae A ICICI I I ea ak ak fC oF ok ak ak L aako k Transformationsklasse eee dor doar oot kkk kk zur Durchf hrung von Koordinatentransformationen Kontruktor TransformationClass TransformationClass void TVektor tempVektor 0 0 0 PosVektor tempVektor anzahl_koordinatentrafos 0 bIntensityTooHigh false try Speicher fiir temporaere Puffer reservieren buf new char 1024 buf1 new char 1024 catch xalloc MessageBox GetFocus Transformatio
228. riffen wobei die Dialogklasse zur Steuerung der automatischen Justage TAutomaticAngleControl vom Template f r moda le Dialoge Klasse TModalD1lg abgeleitet wird Damit ist ein Grundger st eines modalen Dialogs vorhanden f r das die Konstruktoren und Destruk toren sowie die Memberfunktionen zur Initialisierung DlgOnInit und zur Nachrichtenverarbeitung DlgOnCommand lediglich an die eigenen Vorstel lungen angepa t werden m ssen Die Dialogtemplateklassen sind in den Da teien dlg tpl hund dlg_tpl cpp definiert In den Quelltextdateien m_dlg h und m_dlg cpp kann die Anwendung der Templates anhand der urspriingli chen Dialogklassen des Steuerprogramms nachvollzogen werden Der Programmentwickler hat die Struktur des Anwendungsmentis des Steuerprogramms nicht mit dem Ressourcen Manager der Entwicklungsum gebung erzeugt Stattdessen wird abh ngig von den Einstellungen der ini Datei das Programm Men mit Hilfe von Windows API Funktionen erstellt Das geschieht in der Memberfunktion LoadMenuBar der Hauptprogrammklas se TMain Solange diese Funktionsweise nicht ge ndert werden soll m ssen neue Men punkte in der Quelldatei m main cpp innerhalb dieser Funktion eingebunden werden Der Men punkt Automatische Justage wird in das Untermen des Men punkts Ausf hren eingef gt Die notwendigen nderungen Eintrag nach neu in der Methode TMain LoadMenuBar sind folgerma en vor genommen worden HMENU TM
229. s Dialogs Counter oder Z hler stehen Sollte dort Test oder SCS2 aufgef hrt sein dann mu das Steuerprogramm beendet und im Konfigura tionsfile develop ini unter dem Eintrag DeviceX Name Counter oder Name Z hler eingetragen werden 9 3 Voreinstellungen f r die Automatische Justage F r eine automatische Einstellung der Probe m ssen zuvor einige Vorbedin gungen erf llt sein um sp ter sinnvolle Ergebnisse beim Suchen nach dem Intensit tsmaximum zu erhalten 9 3 1 Manuelle Justage des Freiheitsgrades Azimuta le Rotation Wurde die Probe auf dem Probenteller ordnungsgem plaziert so mu als erstes bevor die Automatische Justage gestartet werden kann der Frei heitsgrad Azimutale Rotation eingestellt werden Der folgende Abschnitt soll bei der Justage dieses Freiheitsgrades behilflich sein Im Dialog Ausf hren Manuelle Justage Abb 9 1 w hlt man den An trieb Tilt aus Dieser Antrieb mu an der Position 0 stehen Wenn das nicht der Fall ist so kann dieser durch direkte Eingabe eines neuen Winkels an die Stelle 0 bewegt werden Als n chstes w hlt man den Antrieb Azimutale Rotation AR aus Im Dialog aktiviert man f r diesen Motor den Fahrbetrieb Ist dies geschehen bewegt man den Antrieb mit h chster Geschwindigkeit in eine Richtung Hinweis Das Konfigurationsfile befindet sich in der aktuellen Version des Steuerpro gramms im selben Verzeich
230. s RTK Steuerprogramms 9 4 DURCHF HRUNG DER AUTOMATISCHEN JUSTAGE 129 9 4 2 Start des Justagevorganges Wenn alle optionalen Werte vom Nutzer nach Wunsch eingestellt sind kann der Suchvorgang nach dem Intensit tsmaximum durch Bet tigen des Knopfes Start der automatischen Justage gestartet werden W hrend der Justage werden im Status Fenster Informationen zum Such vorgang ausgegeben Nach jeder Koordinatensystemdrehung erfolgt eine Ausgabe der Positionen der Antriebe Au erdem wird das in diesem Such schritt gefundene Intensit tsmaximum angezeigt Zwei Koordinatensystem drehungen gelten als ein Durchlauf des Algorithmus W hrend des Justagevorganges ist der Dialogknopf Start der automati schen Justage ausgegraut Die Justage kann jetzt nicht unterbrochen wer den Deshalb sollte darauf geachtet werden da der Vorgang nicht zu voreilig gestartet wird und die Parameter korrekt eingestellt sind In der sp teren 32 Bit Version des Programmes wird es dann aber m glich sein die Justage zu unterbrechen Die automatische Justage der Probe ben tigt ca 15 Minuten Arbeitszeit 9 4 3 Ende des Justagevorganges Wenn der Justageproze beendet ist wird die Position ausgegeben an der das h chste vom Suchalgorithmus ermittelte Intensit tsmaximum gefunden wur de Au erdem wird die gemessene Intensit t und die Suchzeit ausgegeben Die Probe sollte nun vollst ndig ausgeleuchtet und f r einen Topograhpie Me vorgang
231. s erledigt Am Ende dieses Kapitels wird die Ausf hrung der Topographie und der manuellen Justage mit Hilfe des Steuerprogrammes genauer erl utert IRTK steht f r R ntgen Topographie Kamera 14 KAPITEL 2 DAS STEUERPROGRAMM 2 2 Allgemeine Softwarestruktur 2 2 1 Programmdateien F r die Ausf hrung und die korrekte Arbeitsweise des Steuerprogrammes werden folgende Dateien ben tigt steerng exe ausf hrbares Steuerprogramm steerng ini Initialisierungsdatei motors dll Dynamische Laufzeitbibliothek zur Ansteuerung und Verwaltung der einzelnen Antriebe counters dll Dynamische Laufzeitbibliothek zur Ansteuerung der unterschiedlichen Detektoren splib dll Dynamische Laufzeitbibliothek zum Verwalten von Intensit ts und Diffraktometriekurven win488 d11 16 Bit Treiber f r C 812 Motorsteuerkarte dieser kann wahlweise ber die Initialisierungsdatei ein gebunden werden und mu nicht zwingend instal liert sein Grund Eigener implementierter Treiber f r C 812 befindet sich in der motors d11 sphelp hlp Hilfebibliothek die w hrend des Programmlaufs aufgerufen werden kann asa dll 16 Bit Treiber f r die Ansteuerung des BraunPSD Detektors bc450rt1 d11 Dynamische Laufzeitbibliothek von Borland standard mak Makroscript f r die Steuerung von Basisaufgaben Tabelle 2 1 Dateien zur Ausf hrung des Steuerprogrammes Die Applikation wurde unter Borland C 4 0 entwickelt un
232. s wird zur Einsch tzung des fertigen Programms herangezogen und sollte deshalb die Funktionalit t in umfassen der Weise beschreiben 1 Seite 104f Das Pflichtenheft sollte gem den Richtlinien des ANSI IEEE Standard 830 198 zu diesem Zweck die folgenden Informationen in bersichtlicher Weise enthalten nach 1 Seite 105 Tab 2 3 1 e Funktionale Anforderungen e Leistungsanforderungen e Entwurfsrestriktionen e Jualit tsmerkmale e Externe Schnittstellen Anforderungen Der folgende Abschnitt befa t sich mit dem Pflichtenheft in dem die Anforderungen an die Programmfunktion Automatische Justage detailliert und vollst ndig beschrieben sind 4 4 PFLICHTENHEFT 4 4 Pflichtenheft Die Gliederung des Pflichtenhefts folgt einer eigenen Numerierung die nicht die Einteilung der Diplomarbeit beeinflu t Pflichtenheft RTK Steuerprogramm Funktion Automatische Justage Dokumentversion 1 1 Mai 2000 Dokumentstatus abgeschlossen Die automatische Justage soll Teil des Steuerprogramms zur R ntgentopo graphie werden Sie ist als eigenst ndige Funktion zu implementieren und mu als Men punkt aufrufbar sein 1 Aufgabe Mit der Steuerprogrammfunktion Automatische Justage soll der Vorgang der Probenjustierung f r die Topographie von der Steuersoftware durch gef hrt werden Nachdem vom Benutzer ber den Dialog Manuelle Jus tage die Probe soweit eingestellt wurde da der Bragg Refle
233. sen Beugung fein Tilt und Kollimator Au erdem hat der Anwender die M glichkeit durch einen Schalter anzuge ben ob die Justage protokolliert werden soll oder nicht Zum besseren Nachvollziehen der Gestaltung des Dialogfensters sei auf den Anhang dieses Pflichtenheftes verwiesen in dem eine Abbildung des Dialog fensters zu finden ist das anhand der anschlie enden Anforderungen entwor fen wurde Die einzelnen Optionen werden im folgenden n her erl utert 4 1 Protokolldatei Bei Auswahl dieser Option werden alle wichtigen Informationen der automa tischen Justage in die Protokolldatei justage log geschrieben Diese Datei befindet sich im selben Verzeichnis wie das RTK Programm Sollte sie noch nicht existieren wird die Datei neu erstellt Ansonsten wird die Logdatei mit jeder Neuausf hrung der automatischen Justage sukzessive verl ngert wo bei jede Justage mit Datum und Uhrzeit protokolliert wird Das Log enth lt die von den Antrieben angefahrenen Positionen mit den an diesen Stellen gemessenen Strahlungswerten und Angaben ber das jeweilige Stadium des Justageprozesses Im Dialogfenster wurde diese Option mit Logdatei be nannt siehe Anhang dieses Pflichtenheftes Ist die Checkbox aktiviert wird die Protokolldatei geschrieben 42 KAPITEL 4 ANFORDERUNGSDEFINITION AUTOMATISCHE JUSTAGE 4 2 Wiederholungen Die Anzahl der Wiederholungen gibt an wie oft die Schritte des iterativen Prozess
234. sfeld deaktiviert ist wird keine Protokolldatei erzeugt Die Option maximale Intensit tsdifferenz f hrt zu dem erwarteten Jus tageverhalten Testfall 6 Bei Aktivierung folgt ein fr hzeitiger Abbruch beim Verschlechtern der Intensit tswerte um einen bestimmten Wert Ist die Option deaktiviert l uft die Justage mit der vorgegebenen Anzahl von Durchl ufen ab Abschlie end kann also festgehalten werden da der Dialog Automati sche Justage robust gegen ber fehlerhaften Eingaben des Benutzers ist und das erwartete Verhalten zeigt 8 4 Testf lle mit Proben Der Justagealgorithmus wurde mit unterschiedlichen Probenarten und ver schiedenen Parametereinstellungen getestet Die Proben waren bis auf eine 8 4 TESTF LLE MIT PROBEN 103 Schichtsysteme Die Schichtproben bestanden zum einen aus einer Silizi um Si Schicht mit aufgebrachter Silizium Germanium SiGe Schicht und zum anderen aus einer Gallium Arsenid GaAs Schicht mit aufgebrachter CuAsSes Schicht Die einzige Probe die kein Schichtsystem war bestand aus einem planen Siliziumkristall der als Kollimator eingesetzt wurde und der Untersuchung seiner Topographie unterzogen werden sollte 8 4 1 Test der probenunabh ngigen Einstellungen Zum Test des Zeitverhaltens und der G te der Justage werden f r eine re pr sentative Probe die verschiedenen probenunabh ngigen Parameter va riert Es wurden folgende Einstellungen getestet e Toleranz steht f
235. sh Syntax BOOL WINAPI mIsMoveFinish void Beschreibung Stellt fest ob der aktuelle Motor die anzufahrende Win kelposition erreicht hat Parameter Riickgabewert TRUE Antrieb hat die vorgegebene Stellung angefahren und befindet sich in Ruhe FALSE Motor ist in Bewegung oder an einer Endlage Deathband zum Stehen gekommen Siehe auch mlIsMoveFinish mMoveToDistance mIsRangeHit Syntax BOOL WINAPI mIsRangeHit void Beschreibung Diese Funktion stellt fest ob eine Bereichsbeschrankung tiberschritten wurde Dazu wird der Wert der Motor Membervariablen bRangeHit zuriickgeliefert A 2 INTERFACE DER MOTOR FUNKTIONEN 153 Diese Variable wird in der Umrechnungsfunktion BOOL TMotor Translate long amp pos double ang gesetzt falls der bergebene Winkelparameter nicht ordnungsgem in eine Motorpositionen innerhalb der Softwareschranken umgerechnet werden kann Au erdem kann bRangeHit in der Motorfunktion BOOL TC_832 IsLimitHit void ver ndert werden Parameter Riickgabewert TRUE Fehlerfall Antrieb sollte eine Position anfahren die au erhalb des zul ssigen Bereichs liegt FALSE Es kam zu keiner Bereichs berschreitung Siehe auch mIsCalibrated Syntax BOOL WINAPI mIsCalibrated void Beschreibung Stellt fest ob f r den aktuellen Motor ein g lti ger Referenzpunktlauf durchgef hrt wurde Der Wert der Motor Membervariable bCalibrated wird zu diesem Zweck zur ckgegeben Par
236. sourcen f r Motoren rc_def h counters dll Quelltextdateien Beschreibung inkludierte Dateien counters cpp Klassen fiir die Ansteuerung der Detektoren rc_def h comhead h m_devcom h m_devhw h c_layer h m_layer h c_layer cpp C Schnittstelle f r die An steuerung der Detektoren rc_def h comhead h m_devcom h m_devhw h c_layer h m_layer h dfkisl h am9513 cpp Klassen f r die Ansteuerung der Z hlerkarte Am9513A rc_def h comhead h am9513a h braunpsd cpp Klassen zur Ansteuerung des BraunPSD rc_def h comhead h m_devcom h m psd h on mit der Radicon Controller karte kisli c Radicon SCSCS Treiber dfkisl h prkmpti h radicon h kmpti c Funktionen f r Kommunikati dfkisl h prkmpti h 2 2 ALLGEMEINE SOFTWARESTRUKTUR 17 dlg_tpl cpp selbstdefinierte Templateklas sen f r Dialogobjekte inklusive der Methoden rc_def h comhead h counters rc Dialogressourcen f r die Dialo ge Einstellungen f r SCS amp rc_def h Z hlerkonfiguration develop exe Quelltextdateien Beschreibung inkludierte Dateien m_data cpp Modul f r die Daten Pr senta rc_def h comhead h tion m_devcom h m_steerg h m_data h arscan cpp Modul f r die Ausf hrung des AreaScans mit dem PSD und SLD rc_def h comhead h m_devcom h m_layer h m_steerg h m dlg h mxscan h c_layer h m_scan cpp Klassen f
237. ssen enthalten sein Die folgende Li ste f hrt die relevanten Dateien auf e develop exe e develop ini e motors dll e counters dll e splib dll e win488 dll e sphelp hlp e asa dll e bc450rtl dll e scs prg e standard mak 9 2 2 Hardwarevoraussetzungen F r die Automatische Justage m ssen die f r einen Topographiearbeits platz typischen Antriebe und Detektoren eingebunden sein Die Funktion Automatische Justage testet beim Start das Vorhandensein folgender An triebe e DF Beugung fein e TL Tilt e CC Kollimator au erdem mu ein 0 dimensionaler Detektor im System eingebunden sein e Typ Radicon F r eine Voreinstellung der Probe ist es empfehlenswert da auch die An triebe f r die Freiheitsgrade e DC Beugung grob e AR Azimutale Rotation 9 3 VOREINSTELLUNGEN F R DIE AUTOMATISCHE JUSTAGE 123 im System vorhanden sind M chte man als Nutzer sicher gehen da alle hier aufgelisteten Antriebe dem RTK Steuerprogramm bekannt sind kann dies im Dialog Ausf hren Manuelle Justage Abb 9 1 berpr ft werden Unter Aktueller Antrieb wird durch Anklicken des Pfeils eine Liste der registrierten Antriebe angezeigt M chte man wissen ob der Detektor korrekt eingestellt ist ffnet man den Dialog Z hlerkonfiguration unter dem Men punkt Einstellungen De tektoren Detektoren Abb 9 2 Dort mu in der linken unteren Ecke de
238. ssteuerung e Vorgangssteuerung e Fundamentalklassen e und Datenhaltung F r das Design der neuen Programmfunktion sind nur die ersten vier Aspekte von Bedeutung Die Dialogsteuerung iibernimmt die gesamte Kom munikation zwischen Nutzer und System wobei die Eingaben nur syntaktisch verarbeitet werden Der Dialog pr sentiert und akkumuliert Informationen auf dem Bildschirm ber Eingabefelder Schaltfl chen und weitere Dialogele mente Eingaben des Benutzers die nicht direkt verarbeitet werden k nnen wie beispielsweise das Bet tigen eines Buttons werden an die Interaktions steuerung bergeben Diese wiederum wertet die eingegangenen Informatio nen nach ihren semantischen Aspekten aus und regelt den Datenaustausch zwischen den Dialogklassen und den funktionalen Klassen die die Steuerung der Vorg nge des Programms bernehmen Die Vorgangssteuerung dient der Abarbeitung im fachlichen Kontext das hei t die f r die L sung bestimmter Aufgaben n tigen Arbeitsschritte werden von ihr initiiert Die Fundamen talklassen stellen den eigentlichen Anwendungsbereich dar Sie sind losgel st von der Repr sentation der Daten in der Dialogschicht und nur f r die in haltlichen Aspekte der Anwendung zust ndig Die Programmfunktion der automatischen Justage umfa t neben dem Justagealgorithmus und dem dazugeh rigen Subsystem der Koordinaten transformationen auch eine Komponente zur Dialogsteuerung den Dialog Automatische Justage Die
239. st 1 Zuerst wird eine Suchrichtung d R ermittelt 2 Als n chstes wird das Problem f z Ad maz mit 7 Ad M gelost Man optimiert also die Funktion A f Ad der Variablen R so da die Forderung x Ad M weiterhin erf llt wird Diese Bedingung dr ckt nichts anderes aus als da ein in einem Intervall J gesucht wird also A I mit J CR Die L sung dieses Problems nennt man auch eindimensio nale Suche Man erh lt ein A4 welches einen neuen Punkt 22 1 Eid EM bestimmt wobei gilt f g1 lt f Z2 Nun werden die Schritte 1 und 2 f r Z wiederholt So erh lt man sukzessive eine Folge von Punkten 1 Tk die die Zielfunktion schrittweise maximieren Diese werden solange erzeugt bis ein entsprechendes Abbruchkriterium greift Diese Art von Optimierungsverfahren nennt man Anstiegsverfahren Zur Veranschaulichung dieser Verfahrensart soll folgende verbale Beschreibung dienen Eine Funktion zweier Variabler kann als Gebirge ber der Koor dinatenebene dieser beiden Variablen aufgefa t werden Um zu einem lokal h chsten Punkt des Gebirges zu kommen w hlt man im Ausgangspunkt ei ne brauchbare Richtung Damit ist gemeint da man sich eine Richtung sucht in der es zun chst nur bergauf geht Dieser Richtung folgt man solange wie es noch bergauf geht und gelangt so zum n chsten Ausgangs punkt Beim bekanntesten Anstie
240. stage 17 52 min Testfall 7 PF916324 8 8 Suchbereich Startwerte Endwerte Ausleuchtung DF 50 0 0 29 TL 50 0 1 09 CC 50 705 7 754 94 Kriterien Intensitat 22000 41000 HWB 15 75 12 84 Dauer der Justage 18 13 min Testfall 8 PF916324 8 8 Suchbereich Startwerte Endwerte Ausleuchtung DF 50 0 1 47 TL 50 0 5 52 CC 150 705 7 854 94 Kriterien Intensitat 22000 51000 HWB 15 75 9 49 Dauer der Justage 19 07 min 174 KAPITEL B TESTF LLE MIT PROBENABH NGIGEN PARAMETERN B 3 Testreihe mit Probe PF916324 04 20 Testfall 1 PF916324 04 20 Suchbereich Startwerte Endwerte Ausleuchtung DF 20 0 11 46 TL 20 0 7 96 CC 50 0 3 7 Kriterien Intensit t 33000 53000 HWB 12 88 10 6 Dauer der Justage 15 18 min Testfall 2 PF916324 04 20 Suchbereich Startwerte Endwerte Ausleuchtung DF 20 0 7 83 TL 20 0 5 96 CC 100 0 3 55 Kriterien Intensit t 30000 53000 HWB 12 88 10 57 Dauer der Justage 14 17 min Testfall 3 PF916324 04 20 Suchbereich Startwerte Endwerte Ausleuchtung DF 50 0 9 25 TL 20 0 8 05 CC 50 0 2 78 Kriterien Intensitat 35000 52000 HWB 12 88 11 1 Dauer der Justage 17 09 min B 3 TESTREIHE MIT PROBE PF916324 04 20 175 Testfall 4 PF916324 04 20
241. stage Funktionen der Detektorsteuerung aufzurufen Damit sind die f r die Integration der automatischen Justage relevanten Komponenten der RTK Steuersoftware gefunden Der Architekturentwurf f r die zu implementierende Programmfunktion legt fest welche Klassen und Schnittstellen genutzt und entworfen werden m ssen Dazu werden die einzelnen Funktionsbausteine anfangs als abstrakte Pakete dargestellt und in 6 2 EINBETTUNG IN DIE BESTEHENDE SOFTWARE 65 weiteren Schritten verfeinert Die Schnittstellen zum bestehenden Programm sind ebenso aufgef hrt wie die Beziehungen der einzelnen Pakete zueinander Im Diagramm 6 3 sind die Komponenten der Automatische Justage in Re lation zu den relevanten Teilen des Steuerprogramms dargestellt bestehendes Softwaresystem modale Dialoge Teilsystem Justage Algorithmus Koordinatensystem transformationen verwendet Dialog Automatische Justage ee Soe Yan l verwendet l verwendet 00 DITTI a VEE osson in ee ee al verwendet RE er ee 1 l l Pa A Schnittstelle Detektorenansteuerung dllsDeviceValid MeasureStart PollDevice GetData Abbildung 6 3 Architektur der Programmerweiterung 66 KAPITEL 6 DESIGN Richtet man sich nach 11 S 118ff gliedert sich die Architektur einer Anwendung in folgende Teilsysteme e Dialogsteuerung e Interaktion
242. start_justage FALSE else strcat status Beugung fein ok r n Bestimmung der MotorID zum Antrieb Omega Beugung fein DF nMotorDF m1GetIdByName Omega Test ob der Antrieb Tilt vorhanden ist if mlIsAxisValid Psi strcat status Tilt fehlt r n im Fehlerfall wird der START Button deaktiviert EnableWindow GetDlgItem hwnd cm_start_justage FALSE else strcat status Tilt ok r n MotorID zuweisen nMotorTL mlGetIdByName Psi Test ob der Antrieb Kollimator vorhanden ist if mlIsAxisValid Collimator strcat status Kollimator fehlt r n im Fehlerfall wird der START Button deaktiviert EnableWindow GetDlgItem hwnd cm_start_justage FALSE else strcat status Kollimator ok r n MotorID zuweisen nMotorCC m1GetIdByName Collimator Abfragen des Fehlerzustands ber de aktivierten START Button if IsWindowEnabled GetDlgItem hwnd cm_start_justage strcat status Fehler Es sind nicht alle Ger te bereit r n Statusmeldung in Status Textfenster schreiben SetDlgItemText GetHandle ID_Status status return true void TAutomaticAngleControl Dlg_OnCommand HWND hwnd int id HWND hwndCtl UINT codeNotify switch id case ID_CANCEL Text in Programmstatuszeile schreiben SetInfo Automatische Justage verlassen 190 KAPITEL KOMMENTIERTE QUELLTEXTE Motor sto
243. t wurde der Begriff Goldener Schnitt gepr gt Der Vorteil des Goldenen Schnitts gegen ber der dichotomen Suche ist der da hier nur eine neue Messung pro Iteration n tig ist Dies ist wich tig da bei der Automatischen Justage die Anzahl der Me punkte dar ber entscheidet wieviel Zeit der Suchalgorithmus braucht Die Erl uterung des Goldenen Schnitt Verfahrens h lt sich an das Schema von 18 S 245 Eingabe Toleranzl nge gt 0 Intervall a b unimodale Fkt y Ausgabe Intervall a b mit L nge kleiner als das die L sung enth lt Benutzt Konstante a v51 x 0 618 Initialisierung setze k 1 a1 b1 a b A aa 1 a b und u 1 a a ab Iteration 1 wenn b ap lt l STOP Lsg in a bk 2 falls y Ax gt p t setze ar bk 1 lak Hk Ak 1 a x 1 a br Uk 1 Hk und berechne y Ap 1 5 4 KOORDINATENSYSTEMTRANSFORMATION 51 falls o Ar lt p t setze ax dr Ax br Mey 1 ajay aby und berechne y Hp 1 ersetze k durch k 1 und gehe zu 1 Ein noch besseres Ergebnis als der Goldene Schnitt liefert das Fibonacci Verfahren Dort wird eine Verkleinerung des Suchintervalls um fast die H lf te erreicht Dadurch braucht man pro Suche einen Schritt weniger Die zu geringe Zeitersparnis w rde den Aufwand f r die Umsetzung des Fibonacci Verfahrens jedoch nicht rechtfertigen Deshalb ist das Verfahren des Golde
244. t also kein praktisch verwertbares Kriterium sondern eher ein theoretischer Anspruch Allerdings deckt die Betrachtung der Korrektheit des RTK Softwareprojektes gravierende Schw chen auf insbesondere die feh lende Produktspezifikation in Form eines Pflichtenheftes Eine Zielsetzung des Softwaresanierungsprojektes war es diese M ngel auszumerzen Damit sollte eine Grundbasis geschaffen werden auf der man aufbauend Teststrategien entwickeln bzw das Verst ndnis f r das Programm erh hen kann Ein Softwareprodukt ist robust wenn es bei jeder Form der externen Kommunikation sinnvoll reagiert Einfache Fehlermeldungen oder Auffor derungen zu einer erneuten Eingabe w ren zum Beispiel sinnvolle Reaktio nen eines Softwareprodukts auf fehlerhafte Eingaben Im Fall des RTK Steuerprogramms kann man die Robustheit als befriedigend bewerten Auf fehlerhafte Eingaben in den Dialogen wird meistens mit O Werten reagiert Eine Aufforderung oder einen Hinweis auf eine fehlerhafte Eingabe gibt es allerdings nicht Es existieren auch Eingaben die das Programm zum Absturz bringen Als Beispiel sollen hier zwei Fehler genannt werden 1 Wenn man ein Makro wie zum Beispiel Halbwertsbreite messen star tet und dann das Makro bei der Bearbeitung unterbricht kommt es zum Absturz 2 Ist in dem Verzeichnis von steerng exe keine Datei standard mak vorhanden dann st rzt das Programm beim Aufruf der Topographie ber den Men punkt Ausf hren T
245. t ber cksichtigt Dazu werden im Projektfenster die entsprechenden Datei Knoten zum bersetzungszweig der ausf hrbaren Da tei hinzugef gt Durch Dr cken der rechten Maustaste auf dem Hauptknoten von Develop exe wird das Projekt Kontextmen aufgerufen siehe Abb 7 1 Der Men punkt Knoten hinzuf gen ffnet einen Dateiauswahldialog der die Auswahl der einzuf genden Datei erlaubt amp Borland C xcontrol Oy x Datei Bearbeiten Suchen Anzeige Projekt Script Tool Debug Optionen Fenster Hilfe s Projekt u xctl9702 so P EG TF Abbildung 7 1 Einf gen neuer Quelltextdateien im Projektfenster der Bor Oly SPLib dll Ov Motors dll Ov Counters dll De v Develop exe m_justag cpp cpp Anzeigen D m_justag h h Knoten hinzuf gen 32D transfrm cpp cpp Knoten l schen D transfrm h h Knoten aktualisieren 3D matrix cpp cpp Vorschau aktualisieren D matrix h h Knoten neu compilieren D m_dlg cpp Linken Pe ey ea le 20 21 06 Vi land C 5 02 Entwicklungsumgebung 7 2 DIALOGPROGRAMMIERUNG 79 7 2 Dialogprogrammierung Die Bestrebung das Softwareprojekt durch die schrittweise Ausf hrung im Debugmodus auf Fehler hin zu untersuchen stellt in gewisser Weise eine Ein schr nkung dar Um die Software solange sie noch in der 16 Bit Variante vorliegt auch in der Borland Entw
246. t3D translate_from_worldpoints Punkt3D Punkt3D get_XYZ X Intervalle MinDF Z Punkt3D set_XYZ 0 Wertebereich MaxDF 0 Punkt3D translate_from_worldpoints Punkt3D Punkt3D get_XYZ X Intervalle MaxDF Z Intervallgrenzen fiir TL umrechnen Punkt3D set_XYZ 0 0 Wertebereich MinCC Punkt3D translate_from_worldpoints Punkt3D Punkt3D get_XYZ X Y Intervalle MinCC Punkt3D set_XYZ 0 0 Wertebereich MaxCC Punkt3D translate_from_worldpoints Punkt3D Punkt3D get_XYZ X Y Intervalle MaxCC return Intervalle C 2 ALGORITHMUS UND KERNFUNKTIONALIT T TRANSFORMATIONCLASS 207 fl oat TransformationClass GetIntensityOnPosition unsigned nMeasureCount fahrt die zu iibersetzenden TRAFO Klasse Motorpositionen des Vektors an und gibt Intensit t zur ck muss alle 3 Motorachsen anfahren 1 translate_to_worldpoints akt anzufahrenderPosVektor 2 worldkoordinaten Vektor get_XYZ amp x amp y amp z 3 nMotorTL mMoveToDistance x Wertebereich OrigTL weil Ursprung 0 0 0 nMotorDF mMoveToDistance y Wertebereich OrigDF nMotorCC mMoveToDistance z Wertebereich OrigCC 4 Riickgabe der Intensitat float fIntensity double x y z x2 y2 z2 Infos fiirs Logging aufbereiten PosVektor get_XYZ x2 y2 z2 sprintf buf Move2Dist aktVektor 2f 2f 2f gt x2 y2 z2 Umrechnung des PosVektors in Weltkoordinaten PosVektor translate_to_worldpoints PosVektor
247. ten Funktionen A 1 1 Dialoge zur Motorsteuerung A 2 Interface der Motor Funktionen 4 B Testf lle mit probenabh ngigen Parametern B 1 Testreihe mit Probe CuAsSez auf GaAs B 2 Testreihe mit Probe SiGe auf Si Schicht PF916324 8 8 B 3 Testreihe mit Probe PF916324 04 20 B 4 Testreihe mit Probe PF916324 8 7 B 5 Testreihe mit Probe PF916324 08 5 B 6 Testreihe mit Kollimatorprobe C Kommentierte Quelltexte C 1 Dialogklasse TAutomaticAngleControl CAL m jastag D Ads ae ee 1 2 m Justa eppoi era C 2 Algorithmus und Kernfunktionalit t TransformationClass 131 132 133 137 138 147 150 169 169 171 174 176 178 181 185 185 185 187 201 VIII INHALTSVERZEICHNIS C2 l transfrm Wh oo os ae a art 201 532 transf rm Cpp gt ur ya 2 eg be We ee Aa te SY 204 C 3 Mathematische Hilfsklassen 22 22 2 on nn nn 214 C31 mat ix h 2200 214 C 3 2 Maris sopp a en 218 Abbildungsverzeichnis 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 3 1 3 2 3 3 3 4 3 9 4 1 4 2 5 1 5 2 6 1 6 2 6 3 6 4 6 5 6 6 7 1 122 7 3 7 4 Bragg Reflexion an zwei Netzebenen eines Kristalls Rockingkurve iu ha Be a Bg eG Ba SE A Strahlung der R ntgenquelle Kollimierte R ntgenstrahlung 2 2 sa dw ale 2 ade gekr mmter Kollimator 2 2 2 2 rn nn
248. tes Ergebnis erzielen lassen Es w re f r die Einstellung der betrachteten Probe nicht sinnvoll gewesen das Kriterium zu aktivieren Es kristallisierten sich folgende g nstige Werte f r die getesteten Einstel lungen heraus Dabei wurden solche Parameterwerte vorgezogen die auch sicher eine gute bis sehr gute Probenjustage liefern e Toleranz der Optimierung 0 1 e Anzahl der Durchl ufe 5 e Anzahl der Intensit tsmessungen 3 e Maximale Intensit tsdifferenz aus Diese Werte werden aufgrund der Testl ufe als Voreinstellungen f r die probenunabh ngigen Parameter des Dialoges festgelegt Dadurch ist sicher gestellt da die automatische Justage ohne Nutzereingriff mit diesen Vorein stellungen gute bis sehr gute Ergebnisse liefert Das Abbruchkriterium Max Intensit tsdifferenz wird in den folgenden Testl ufen weiter untersucht um 8 4 TESTF LLE MIT PROBEN 113 danach eine endg ltige Aussage zur Voreinstellung treffen zu k nnen Ist das Kriterium ausgestellt dauert die Justage im ung nstigen Fall nur l nger das Ergebnis wird dadurch nicht beeintr chtigt 8 4 3 Test der probenabh ngigen Einstellungen Beim Test der probenabh ngigen Einstellungen wurden mehrere unterschied liche Arten von Proben getestet Dabei musste jede Probe eine Testreihe durchlaufen bei der der Suchbereich f r das Intensit tsmaximum variiert wurde Ziel dieses Testverfahrens war es einen Suchbereich zu ermitteln der f r de
249. tetigen Funktion beruht die aber nicht bestimmbar ist Deshalb mu ein anderes Verfahren f r die Bestimmung der Suchrichtung verwendet werden das ohne die Bildung von Ableitungen auskommt 5 1 2 Eigener Ansatz Das hier vorgestellte Verfahren basiert auf dem Anstieg in Koordinatenrich tung auch Relaxation genannt Allerdings ist dieses Verfahren wie es in der Literatur 17 vorgestellt wird f r das Problem der automatischen Justa ge allein nicht ausreichend Deshalb mu te das Verfahren leicht abge ndert werden Definition 5 1 1 Gegeben ist f x als zu maximierende Funktion d hei t brauchbare Richtung im Punkt x wenn mit einem A gt 0 gilt f a Ad gt f a1 f r alle 0 lt A lt X Das Extremum aller dieser hei t Brauchbarkeitsgrenze Beim Verfahren der Relaxation werden nacheinander in zyklischer Rei henfolge die Richtungen jeder Koordinatenachse auf Brauchbarkeit getestet Wenn sie brauchbar sind werden sie als Anstiegsrichtung verwendet Da im Fall der Topographie die Intensit tsverteilung ellipsoidf rmig schief im 3 dimensionalen Raum liegt w rde das Verfahren der Relaxation nur sehr langsam zu einem Ergebnis kommen Der Optimierungsalgorithmus w rde sich nicht schnell genug in Richtung Maximalstelle bewegen Sinnbildlich kann man sich das Ann hern an die Maximalstelle in Form einer Treppe vorstellen Um also das Verfahren zu beschleunigen wurden zus tzlich Ko ordinatensystemtransformationen
250. tionsmatrizen Folgende Memberfunktionen wurden f r die Arbeit mit dem Datentypen TMatrizenliste realisiert e Test ob die Matrizenliste leer ist ist_leer e Ermitteln der Anzahl der Listenlemente elementanzahl e Matrix zur Liste hinzuf gen push letzte Matrix aus Liste entfernen pop e Element an einer bestimmten Position in der Matrizenliste ausgeben zeige Kapitel 7 Probleme der Implementation Die Implementation der neuen Funktion Automatische Justage brachte ei nige Schwierigkeiten mit sich die vorwiegend in der Struktur der vorgefunde nen Software begr ndet waren Die anschlie enden Abschnitte erl utern was bei der Einbettung in die existierenden Quelltextdateien bei der Entwicklung des Dialogfensters mit Borland C und allgemein bei der Implementation zu beachten war 7 1 Integration Wenn ein bestehendes Softwareprodukt im Zuge einer Anpassung an neue Anforderungen des Auftraggebers mit neuer Funktionalit t versehen werden soll ist folgendes zu beachten Das Risiko durch nderungen an vorliegen den Quelltexten neue Fehler zu verursachen ist nicht zu untersch tzen Sol che Fehler lassen sich in vielen F llen nicht sofort als Fehler der neuen Kom ponente identifizieren da sie in denselben Quelltexten wie die urspr ngliche Programmversion zu finden sind Daher sollte versucht werden neu zu implementierende Funktionen auch in extra Quelldateien unterzubringen um so diese Funktionalit t
251. tomatischen Justage dauert im Schnitt 15 bis 20 Minuten Es kann also davon ausgegangen werden da die Funktion Automatische Justage die Anforderungen die an sie gestellt wurden erf llt 10 2 AUSBLICK 133 Trotzdem bestehen auch Einschr nkungen f r den praktischen Einsatz In der anschlie enden bersicht sind die Grenzen des verwendeten Algorith mus aufgef hrt e Der Algorithmus ist nach Auswertung der Tests nicht in der Lage Pro ben korrekt zu justieren die eine gr ere als die vom 0 dimensionalen Detektor erfa bare Fl che einnehmen So konnte eine Kollimatorprobe mit den Ausma en 50mm x 50mm nicht sicher justiert werden e F r die G te der Justage spielt die Stellung der Achse Kollimator CC eine gro e Rolle Der Justagealgorithmus ist nicht daf r ausge legt eine Probe zu optimieren bei der es notwendig ist die Achse CC um mehr als 200um in eine Richtung zu verstellen um einen hohen Ausleuchtungsgrad zu erreichen Die Konzeption des zur Optimierung eingesetzten Verfahrens des Goldenen Schnitts erlaubt es nicht auf den Achsen gr ere Positionsbereiche zu untersuchen ohne in Kauf zu nehmen kein Optimum zu finden Zur Umgehung dieses Problems wird im Ausblick ein L sungsvorschlag Kollimatorsch tzfunktion un terbreitet 10 2 Ausblick In diesem Abschnitt sollen Ideen zur Verbesserung der Justage mit dem Steu erprogramm vorgestellt werden Die im Rahmen der Diplomarbeit entwickelte
252. torgr e des ak tiven Antriebs bei Speed ist die Einheit des Werts Units pro Sekunde der Wert wird automatisch durch MaxVelocity beschr nkt TRUE Speed bzw Width konnten korrekt ver ndert werden 158 KAPITEL A SCHNITTSTELLENBESCHREIBUNG DER MOTORENANSTEUERUNG FALSE Fehlerfall Entweder sollte ein anderer Wert als Speed oder Width gesetzt werden oder der Wert der Winkelschrittweite lag au erhalb der Softwarebe schr nkung Siehe auch mGetValue mlGetValue mActivateDrive Syntax void WINAPI mActivateDrive void Beschreibung Diese Funktion aktiviert den aktuellen Antrieb indem die sie die Regelung der Motorsteuerkarte f r diesen Mo tor aktiviert Parameter R ckgabewert Siehe auch mStopDrive mSetCorrectionState Syntax Beschreibung void WINAPI mSetCorrectionState BOOL state Mit dieser Funktion wird die Korrektur bei der Umrech nung von Positionen in Winkelstellungen mit Hilfe der Funktion TMotor Translate gesteuert Ist die Kor rektur aktiviert erfolgt die Umrechnung der Motorposi tion von Encoderschritten in Winkel ber ein Polynom 3 Grades Andernfalls wird eine lineare Korrektur vor genommen Au erdem wird ermittelt ob der Antrieb Beugung grob DC vorhanden ist um die Abh ngigkei ten von DC und DF Beugung fein auszugleichen Da sich die Motoren DC und DF bei Bewegung gegenseitig bedingt durch die Kopplung mittels eines gekr mmten Hebels beeinflussen
253. tt wird kurz auf die Hardware und ihre Ansteuerung ein gegangen Aus der Sicht des Programms wurde die Hardwareansteuerung abgekap selt und in eigenst ndigen Laufzeitbibliotheken motors d11 counters d11 realisiert Im Anhang A dieser Arbeit befindet sich eine komplette Beschrei bung des Hardwareinterface zur Motorenansteuerung Diese Schnittstelle wird vom RTK Steuerprogramm fiir die Ansteuerung der Motoren verwen det Im weiteren soll vorgestellt werden welche Hardware benutzt und wie sie ins System eingebunden wird welche M glichkeiten zur Kommunikation existieren und welche vom Steuerprogramm genutzt werden 2 3 1 Motoren Die RTK Arbeitsplatzrechner sind jeweils mit einer Motoren Controllerkarte vom Typ C 812 und einer Karte vom Typ C 832 ausger stet Beide Kar tentypen sind f r den ISA Bus vorgesehen Die C 812 Karte kann vier Gleichstrom Motoren und die C 832 Karte 2 Gleichstrom Motoren ansteu ern Die Kommunikation zwischen Hostrechner und Controllerkarte kann unterschiedlich erfolgen Bei der C 812 Controllerkarte hat man die Wahl zwischen RS232 3 PC Bus und IEEE488 Schnittstelle Die Kommunikation ber die RS232 Schnitt stelle funktioniert hnlich wie die bei einem Modem Die Steuerbefehle Abk f r Industrial Standard Architecture ISA definiert die Busstruktur die Archi tektur von CPU und Supportchips sowie die Taktfrequenz des ISA Bus 3Ein Standard f r serielle Schnittstellen der die Signalpegel die
254. uchalgorithmus zu untersuchen sondern es galt festzustellen wie robust der Dialog der Automatischen Jus tage gegen falsche Eingaben ist Das RTK Steuerprogramm unterst tzt sowohl f r die Antriebe als auch f r die Detektoren Testger te die die Funk tionalit t der echten Hardware vort uschen Der n chste Abschnitt wird dieses Thema behandeln 8 3 Test des Dialoges ohne Proben Der Test des Dialogs Automatische Justage dient der berpr fung der korrekten Funktionsweise der Benutzerschnittstelle Es mu te sichergestellt werden da die Erweiterung robust gegen ber Fehleingaben des Benutzers ist Der Nutzer interagiert zur Steuerung der automatischen Justage mit dem Dialogfenster und kann dort Parameter aktivieren Werte eingeben und ndern Au erdem kann der Anwender eine Hilfe zum Justagedialog abrufen und den Vorgang der Justage starten Um die korrekte Arbeitsweise der Eingabeschnittstelle zu testen ist es nicht zwingend notwendig die reale Hardware ansteuern zu lassen Es reicht aus wenn die von der Software bereitgestellten Testger te verwendet werden Das Steuerprogramm kann f r jeden Antrieb einen Motor vom Typ TMotor verwenden der dann einen Testmotor darstellt mit der gleichen Funktio nalit t wie reale Motoren Es handelt sich dabei aber nicht um simulierte Hardware sondern um eine softwarem ig umgesetzte Funktionsweise Das bedeutet da ein Testmotor nicht die Bewegung simuliert um eine Position a
255. ufgeru fen Parameter s A 2 Interface der Motor Funktionen Im Unterschied zu den Motorlisten Funktionen beziehen sich die Funktionen des Interface der Motoren auf den aktuell eingestellten Antrieb der in der Motorlisten Membervariable nActiveDrive gespeichert ist Der Parameter mid entf llt somit als bergabe der Motor Identifikationsnummer f r die jeweiligen Funktionen mMoveToDistance Syntax BOOL WINAPI mMoveToDistance double distance Beschreibung Startet die Bewegung des Motors der als aktueller An trieb eingestellt ist an die durch distance angegebene Motorstellung im Winkelma Parameter double distance Winkelposition an die der Motor be wegt werden soll R ckgabewert FALSE Fehlerfall Die Laufzeitbibliothek motors d1l1 konnte nicht korrekt initialisiert werden d h die Kon figurationsdatei wurde nicht erfolgreich eingelesen TRUE Da keine Fehlerkontrolle beim Funktionsaufruf stattfindet ist die Funktion in jedem anderen Fall auch bei ung ltiger Winkelangabe im Parameter distance er folgreich Siehe auch mMoveByDistance mlMoveToDistance mGetDistance A 2 INTERFACE DER MOTOR FUNKTIONEN 151 mMoveByDistance Syntax Beschreibung Parameter R ckgabewert Siehe auch BOOL WINAPI mMoveByDistance double distance Bewegt den aktuellen Antrieb relativ zur aktuellen Mo torposition um eine bestimmte Distanz die im Parame ter distance im Winkelma ber
256. ugung der in der Ebene Kollimator Probe Detektor liegt wird noch eine Unterscheidung eingef hrt Beugung fein DF und Beugung grob DC Das bedeutet da zur Ansteuerung des Probentellers 4 Motoren ben tigt werden Azimutale Rotation Beugung Grob Beugung Fein Abbildung 1 7 Freiheitsgrade der Probe bei der Topographie Die Freiheitsgrade Abb 1 7 sollen im weiteren als Bezeichnung f r die entsprechenden Motoren dienen Ein weiterer Motor bernimmt die Aufgabe der Kr mmung des Kollimatorkristalls Dieser Motor hat die Bezeichnung Kollimator bzw CC F r das Messen der R ntgenstrahlung wird ein 0 dimensionaler Detek tor eingesetzt Dieses Ger t mi t den Photonenflu der auf eine bestimmte Querschnittsfl che einwirkt Das Ergebnis ist eine Z hlrate die angibt wie viele Impulse in einem bestimmten Zeitfenster erfa t wurden 9Es gibt noch 1 und 2 dimensionale Detektoren die zus tzlich die Positionen der Einzelphotonen in einer Dimension ermitteln 1 3 DER VERSUCHSAUFBAU 11 Die Abb 1 8 und 1 9 zeigen Fotos eines Versuchsaufbaus f r die Zwei Kristall R ntgentopographie wie er beim Institut f r Physik in der Arbeits gruppe R ntgenbeugung an d nnen Schichten verwendet wird TERN im Geh use i G k Abbildung 1 8 Topographie Me platz am Institut f r Physik KAPITEL 1 EINF HRUNG a nO ae w Detektor Stellr dchen f r
257. unsigned REIHENFOLGE_XYZ 10 const unsigned REIHENFOLGE_ZYX 13 class TVektor 7 1 Ra ak ak ak CORO ak ak ka o AOR k kkk k kkk kk kkk kk kkk k Klasse Matrix mit m Zeilen und n Spalten es besteht die M glichkeit die Matrizen in homogener Schreibweise anzugeben durch zus tzliche homogene Komponente in diesem Fall wird die Membervariable homogene_koordinaten true gesetzt 7 U aa ak aa af ea ak ca a aka af ca ak ea af ea ak ak ak ak ea af ara ea ra a ak ak ak a af ae ak era ak ak ak ak ak ak ak CK a CK I 2K KK K class TMatrix friend TVektor protected Membervariablen zur Darstellung der Matrix double arr eindimensionales Feld zur Speicherung der Matrixelemente unsigned ze Zeilen unsigned sp Spalten Flag das angibt ob Matrix in homogener Schreibweise dargestellt ist bool homogene_koordinaten public Konstruktoren und Destruktor TMatrix Standardkonstruktor TMatrix unsigned m unsigned n initialisiert eine m n Nullmatrix TMatrix Klassendestruktor TMatrix const TMatrix amp mat eigener Copy Kontruktor C 3 MATHEMATISCHE HILFSKLASSEN 215 Klassenmethoden Test ob Matrix bzw Vektor in homogenen Koordinaten angegeben ist bool ist_homogen void const berladene Operatoren TMatrix operator const TMatrix amp mat Matrizenzuweisung TMatrix operator const TMatrix amp mat Matrizenaddition TMatrix operator
258. urch verst rkende Interferenz komplett reflektiert Verst rkende Interferenz bedeutet da die sich berlagernden R ntgenwellen die auf unterschiedlichen Strahlwegen an verschiedenen Netzebenen reflektiert werden in gleicher Phase befinden Dadurch treffen Wellenmaxima auf Wellenmaxima siehe Abb 1 1 und es erfolgt eine Erh hung der Strahlungsintensit t Im Gegensatz dazu kommt es bei Phasenunterschieden zur Schw chung der reflektierten Strahlung die gemessene Intensit t nimmt ab Treffen Wellenmaxima auf Wellenminima so kommt es sogar zur Ausl schung der Strahlung Man spricht vom Bragg Reflex wenn eine maximale Reflexion endlicher Breite wenige Winkelsekunden erfolgt Stellt man eine Me probe auf den Bragg Reflex und verkippt sie ber einen kleinen Bereich in Richtung R nt genstrahl so entsteht eine charakteristische Kurve der reflektierten R nt Strahlung wird auch als Welle aufgefa t 6In diesem Fall sind Netzebenen gleicher Orientierung gemeint 1 2 PHYSIKALISCHER HINTERGRUND genstrahlintensit t in Abh ngigkeit von der Winkelstellung die sogenannte Rockingkurve Abb 1 2 Sie ist ein Hinweis darauf da auch f r einen Win kelbereich in der Umgebung des Bragg Winkels 9 Reflexion auftritt Wenn die Gleichphasigkeit der R ntgenwellen aus denen der Bragg Reflex gebildet wird nicht mehr gegeben ist kommt es zur Verbreiterung der Rockingkurve Sie entsteht wenn die Kristallperfektion durch Defekte
259. usgangspunkt Im April 1999 sind von Prof Dr K hler in Zusammenarbeit mit seinen Mit arbeitern Anforderungen an das RTK Steuerprogramm spezifiziert worden 9 Demnach besteht die Hauptforderung in der Stabilit t und Funktions t chtigkeit der bestehenden Software Einen hohen Stellenwert nimmt wei terhin die Definition und Dokumentation einer geeigneten Hardwareschnitt stelle zur Erleichterung der Einbindung neuer Ger te wie Motorsteuerkarten oder Detektoren ein Bei der Erweiterung der Funktionalit t wurde die Im plementierung einer automatischen Optimierung Justage im Rahmen der Topographie priorisiert Das Hauptaugenmerk der Softwaresanierung sollte somit auf die Quelltextanalyse mit Fehlersuche gelegt werden zus tzlich aber auch auf die Neuprogrammierung der gew nschten Funktion gerichtet sein 4 2 Problemdarstellung Bei der bisherigen Einstellung der Probe mittels des Dialogs Manuelle Jus tage handelt es sich um eine zeitaufwendige Routineaufgabe die auch Er fahrung und Expertenwissen voraussetzt Es sind nacheinander die Antrie be der verschiedenen Achsen so einzustellen da sich die Probe im Bereich der Maximalintensit t befindet Dazu m ssen die Antriebe Beugung grob und Beugung fein Azimutale Rotation Verkippung und Kollimator angesteuert werden und gleichzeitig mu auf die Intensit ts nderungen der R ntgenstrahlung geachtet werden um so das Maximum zu finden Dieser Proze
260. ustage Beenden Abbildung 7 3 Enwurf des Dialogfensters der Programmfunktion Automa tische Justage Beschreibungen der Dialogelemente unter dem Abschnitt AutomaticAngle Control zu finden Der folgende Ausschnitt zeigt einen Teil der Spezifikation des Dialogs in der Borland C 4 5 spezifischen Ressourcenbeschreibungssprache AutomaticAngleControl DIALOG 57 18 308 254 STYLE DS_MODALFRAME WS_POPUP WS_VISIBLE WS_CAPTION WS_SYSMENU CLASS BorDlg_Gray CAPTION Automatische Justage FONT 8 MS Sans Serif EDITTEXT ID_Status 14 17 163 190 ES_MULTILINE ES_AUTOVSCROLL ES_AUTOHSCROLL ES_READONLY NOT WS_TABSTOP WS_BORDER WS_VSCROLL WS_HSCROLL DEFPUSHBUTTON Start der automatischen Justage cm_start_justage 40 228 110 14 PUSHBUTTON Beenden ID_CANCEL 226 228 50 14 KAPITEL 7 PROBLEME DER IMPLEMENTATION PUSHBUTTON Hilfe ID_Help 226 204 50 14 CHECKBOX Logdatei ID_Logfile 200 24 41 11 BS_AUTOCHECKBOX WS_TABSTOP Der erste Teil eines Ressourceneintrages legt den Ressourcentyp fest z B CHECKBOX Danach folgt optional eine Beschriftung im Beispiel Logdatei die in Anf hrungsstrichen angegeben wird Durch Kommata getrennt werden die Ressource ID im Beispiel ID_Logfile die Abmessungen und gegeben falls Flags zur besonderen Behandlung des Dialogelements aufgelistet hier BS_AUTOCHECKBOX WS_TABSTOP getrennt durch Die Ressourcen IDs zu
261. utzte Zeichenpuffer mit mehr als 32000 Zeichen gef llt war kam es zum Absturz Das Problem wurde dadurch umgangen da beim wiederholten Start der Justage der Inhalt des Statusfensters gel scht wird und somit keine Gefahr besteht da es zum berlauf des Puffers kommt Bei der Eingabe von Parametern mit gemischten Zeichen und Zahlen werden Zahlen zu Beginn der Eingabe akzeptiert und einer weiteren Be reichs berpr fung unterzogen Die Eingabe von 67ui beispielsweise im Parameterfeld des Kollima torsuchbereichs wird als Zahl 67 angenommen Dieser Wert liegt innerhalb des erlaubten Bereichs und wird als Parameter zur Justage verwendet Da gegen wird die Eingabe von u67i nicht akzeptiert und der entsprechende Voreinstellungswert als Parameter eingesetzt Dieses Dialogverhalten ist zwar nicht hundertprozentig korrekt kann aber unter Ber cksichtigung der geringen Wahrscheinlichkeit solcher Fehleingaben akzeptiert werden Ansonsten sind alle oben beschriebenen Tests erfolgreich verlaufen Para metereingaben die au erhalb der zugelassenen Wertebereiche liegen werden auf die Voreinstellungen bzw auf die oberen und unteren Grenzen zur ck gesetzt Testf lle 1 bis 3 Bei eingeschalteter Option Logdatei wird ei ne Protokolldatei justage log im aktuellen Programmverzeichnis angelegt bzw eine bereits bestehende Datei erg nzt Testfall 5 Die protokollier ten Daten werden korrekt in die Datei geschrieben Wenn das Option
262. von vornherein festgelegt werden Die andere M glichkeit ist die Verwendung von sequentiellen Suchverfahren in deren Verlauf die Me punkte erst bestimmt werden Fest steht da bei der Automatischen Justage die Zeitkomplexit t des Verfahrens eindeutig von der Anzahl der Me punkte abh ngt Das hei t je weniger Me punkte desto schneller der Ablauf der Automatischen Justage Es bietet sich in diesem Fall die Verwendung eines sequentiellen Verfahrens 50 KAPITEL 5 ENTWICKLUNG EINES JUSTAGEALGORITHMUS an Dort unterscheidet man zwei Arten von Verfahren Zum einen die 1 dimensionale Suche ohne Verwendung von Ableitungen und zum anderen die 1 dimensionale Suche unter Verwendung von Ableitungen Verfahren wie die dichotome Suche der Goldene Schnitt oder die Fibonacci Suche geh ren zu der Sorte die ohne Ableitungen auskommen Das Newton Verfahren ist ein typisches Verfahren fiir die Klasse die mit Ableitungen arbeitet Im Fall der Automatischen Justage scheint das Verfahren des Golde nen Schnitts am besten geeignet zu sein Der folgende Abschnitt soll dieses Verfahren kurz erl utern und die obige Annahme best tigen 5 3 Goldener Schnitt Der Goldene Schnitt wird auch als stetige Teilung bezeichnet weil die Verk rzung des Suchintervalls stets in den gleichen Proportionen erfolgt Das Ausgangsintervall wird in jedem Schritt um ca ein Drittel kleiner Da stetige Teilung in der Natur und Kunst h ufig vorkomm
263. weise neu entworfen werden 2 Die Justage des Freiheitsgrades Azimutale Rotation wird in einem eigenen Programmteil implementiert wobei der Algorithmus f r den Einstellungsvorgang den Schritten hnelt die im Kapitel 3 f r die ma nuelle Justage vorgestellt wurden Die zweite L sung ist nach Meinung der Autoren der vorliegenden Arbeit die einfacher und besser zu realisierende da das Ermitteln der Funktionsweise der Makrobefehle eine gr ere Einarbeitung erfordert Au erdem verkompli ziert die Makrosteuerung den Ablauf der Justage Der zweite Schritt der ebenfalls f r eine vollautomatische Einstellung der Probe realisiert werden m te ist die Entwicklung einer Sch tzfunktion f r den Kollimator Diese soll Verstellungen der Achse Kollimator CC ber einen gr eren Bereich schnell ausf hren und dabei die Richtung in die der Kollimator verstellt werden mu ermitteln Eine Idee f r die Realisierung einer solchen Sch tzfunktion w re folgender Ablauf 1 Den Kollimator in eine Richtung fahren bis die Intensit t steigt 2 Den Kollimator weiter in die gleiche Richtung fahren bis die Intensit t wieder absinkt 3 Mit DF nachregeln bis die Intensit t wieder steigt Die Richtung in die DF gefahren wurde merken 4 Die Schritte 2 bis 3 wiederholen bis die Richtung beim Nachregeln von DF umschl gt Die nderung der Bewegungsrichtung deutet darauf hin da der Kol limator ber das Maximum gefahre
264. werden Danach fahren alle An triebe die Koordinaten an Dabei mu darauf geachtet werden da alle Motoren ihre Positionen erreicht haben Erst dann darf die Intensit t an der entsprechenden Stelle gemessen werden Der R ckgabewert soll den Wert der Intensit t enthalten Die Bestimmung der Strahlungsintensit ten erfolgt durch Medianbildung ber mehrere Messungen in der Memberfunktion MeasureIntensity Die Anzahl der Messungen wird durch die bergabe des Parameters nMeasure Count bestimmt Mehrere Me werte verhindern da der Suchalgorithmus nicht negativ beeinflu t wird durch Ausrei er beim Messen der Inten sit ten Durch Bildung des Medians wird aus mehreren Me werten ein Wert bestimmt der der Intensit t an dieser Stelle am besten entspricht Dies 6 3 STATISCHE STRUKTUR DER UTOMATISCHEN JUSTAGE 73 erfolgt durch Bildung einer nach Gr e geordneten Liste mit den einzeln ge messenen Werten Bei einer ungeraden Anzahl von Werten wird der mittlere Wert selektiert und bei einer geraden Anzahl wird aus den beiden mitt leren Werten ein Durchschnittswert gebildet und dieser als Intenst tswert ausgew hlt Eine zentrale Stellung nimmt die Funktion Goldener_Schnitt in dieser Klasse ein Die Aufgabe besteht im Ermitteln einer maximalen Intensit t auf einer Achse aus dem aktuellen Koordinatensystem mit Hilfe des mathe matischen Suchalgorithmus Goldener Schnitt Dazu werden als Parameter die entsprechende Ac
265. werden mehrere M glichkeiten f r einen Abbruch des Suchalgorithmus gegeben Da dieser Suchalgorithmus sukzessive versucht in jedem neuen Iterationsschritt ein Intensit tsmaximum zu finden wird zu einem bestimmten Zeitpunkt der Fall eintreten da die maximale Inten sit t erreicht ist Allerdings ist das grundlegende Problem der nichtlinearen Optimierung da man nicht den richtigen Wert findet sondern nur ei ne N herungsl sung erh lt Es kann also nicht festgestellt werden ob das wirkliche Maximum gefunden wurde Eine M glichkeit w re zu behaupten da man sich nach einer bestimmten Anzahl von Durchl ufen die Schleife im Flu diagramm ist ein Durchlauf in der n heren Umgebung der Position aufh lt wo sich die maximale Intensit t der R ntgenstrahlung befindet Zus tzlich wird durch den Parameter maxi male Intensit tsdifferenz vorgegeben um wieviel kleiner die Intensit t im Vergleich zum vorherigen Durchlauf sein darf Ist diese Intensit tsschranke unterschritten wird der Suchalgorithmus abgebrochen Dies ist notwendig da der Algorithmus kleine Ausrei er hervorgerufen durch Me ungenauig keiten aufweisen kann Wurde der Suchalgorithmus abgebrochen wird die Position mit der ma ximal gefundenen Intensit t angefahren Zus tzlich werden f r den Nutzer relevante Daten ausgegeben Zu diesen Daten geh ren die Intensit t die Dauer der Justage und die Position der Motoren 6 1 1 Maximumsuche auf den
266. wnd HWND hwndCtl LPARAM lParam TModalDlg Dlg_OnInit hwnd hwndCtl lParam verwendeter Z hler f r AutoJustage akt Z hler aus der Deviceliste Sensor lpDList gt DP Inhalt des Status Textfeldes auslesen GetDlgItemText GetHandle ID_Status status nMaxString Globale Variable f r Schreibpflicht in Justagelog bWriteLogfile false Deaktivierung des Abbruchkriteriums Intensit tsdifferenz bIntensityDiffActive false CheckD1lgButton hwnd ID_ActivateIntenseDiff FALSE EnableWindow GetDlgItem hwnd ID_TextMaxIntDiff FALSE EnableWindow GetDlgItem hwnd ID_IntenseDifferenz FALSE Test ob Z hler korrekt im Programm initialisiert wurde if dlIsDeviceValid CounterDevice strcat status Counterdevice fehlt r n im Fehlerfall wird der START Button deaktiviert EnableWindow GetDlgItem hwnd cm_start_justage FALSE else strcat status Counterdevice ok r n Sichergehen dass Z hlerfenster offen ist ansonsten werden die Z hlerwerte nicht korrekt eingelesen if Sensor gt bDeviceOpen Z hlerfenster ffnen NewWindow TCounterWindow new TCounterWindow Sensor gt GetId C 1 DIALOGKLASSE TAUTOMATICANGLECONTROL 189 Test ob der Antrieb Beugung fein vorhanden ist if mlIsAxisValid Omega strcat status Beugung fein fehlt r n im Fehlerfall wird der START Button deaktiviert EnableWindow GetDlgItem hwnd cm_
267. x f r einen Bereich der Probe gefunden wurde wird der weitere Ablauf der Justage vom RTK Programm bernommen Die automatische Justage mu den Probenteller mit der Kristallprobe durch Ansteuerung der Antriebsachsen Tilt und Beugung fein so positio nieren da die R ntgenstrahlung die mittels der Motorachse Kollimator in ihrer Ablenkung beeinflu t wird die Probe komplett mit der h chstm glichen Strahlungsintensit t ausleuchtet In diesem Fall ist die Bragg Bedingung glo bal ber der gesamten Me probe erf llt und der Peak eingestellt Die charakteristische Halbwertsbreite f r die zu justierende Probe sollte dann m glichst klein sein Die G te der Justage l t sich durch diese Gr e angeben 1 1 Mu kriterien Die Funktion Automatische Justage mu als gesonderter Men punkt unter dem Men Ausf hren erscheinen Die Aktivierung des Men punktes ruft einen Dialog auf der zur Steuerung der automatischen Justage dient Vor dem Start der automatischen Funktion mu gepr ft werden ob die Antriebe die f r den Justageproze angesteuert werden m ssen korrekt vom System eingerichtet wurden Au erdem mu kontrolliert werden ob der 0 dimensionale R ntgendetektor funktionsbereit ist 38 KAPITEL 4 ANFORDERUNGSDEFINITION AUTOMATISCHE JUSTAGE Es wird gefordert da die Justage durch die neu implementierte Pro grammfunktion zuverl ssig und in angemessener Zeit ein Ergebnis liefert Als
268. y mit Nullen belegen Klassendestruktor l scht das dynamische Array TMatrix TMatrix berladener copy Kontruktor wird nur bei Initialisierung aufgerufen TMatrix TMatrix const TMatrix amp mat if arr NULL delete arr ze mat ze sp mat sp homogene_koordinaten mat homogene_koordinaten arr new double mat ze mat sp for unsigned i 0 i lt mat ze mat sp i arr i mat arr il berladene Operatoren esr ak ak ak ak ak akak ak ak ak ak 3k ak ak k kak ak 3k 3k ak 2k 3k ak ak 3k Kak k k k k k Kk k K berladener Operator Zuweisungsoperator TMatrix TMatrix operator const TMatrix amp mat if this amp mat return this this zur ckgeben wenn Selbstzuweisung if arr NULL delete arr Speicherplatz des Matrix Arrays freigeben ze mat ze sp mat sp homogene_koordinaten mat homogene_koordinaten arr new double mat ze mat sp for unsigned i 0 i lt mat ze mat sp i arr i mat arr il return this C 3 MATHEMATISCHE HILFSKLASSEN 219 berladener Operator addiert zwei Matrizen gleichen Typs TMatrix TMatrix operator const TMatrix amp mat if ze mat ze sp mat sp cerr lt lt M Fehler Matrizen versch Typs k nnen nicht addiert werden n return this else for unsigned i 0 i lt ze sp i arr i mat arr i homogene_koordinaten amp mat homogene_koordinat
269. yIntensity R_OK Die Ermittlung der R ntgenstrahlungsintensit t mit einem 0 dimensio nalen Detektor l uft nach folgendem Schema ab 1 Die Messung an der Detektorkarte wird gestartet wobei die M glichkeit besteht l nger andauernde Messungen auszul sen 2 Das Auslesen der Detektorkarte wird veranla t Ist das Auslesen ab geschlossen wird der ermittelte Z hlerwert in der TDevice Memberva riablen fIntensity gespeichert Bei korrekter Funktionsweise kehrt die Methode PollDevice mit dem R ckgabewert R_MeasOk zur ck 3 Ist die gespeicherte Intensit t g ltig liefert die Methode GetData den Wert der TDevice Membervariablen fIntensity im Ubergabeparameter zur ck Die Methode wird dann mit der R ckgabe R_OK beendet Zur Feststellung der Strahlungsintensit t wird ein 0 dimensionaler De tektor der Szintillationsz hler SCSCS 2 der Firma Radicon verwendet f r den die gesonderte Detektorklasse TRadicon existiert die von der Klasse TDevice abgeleitet ist Zur Laufzeit werden somit im obigen Programmbei spiel die Methoden des Detektorobjekts vom Typ TRadicon aufgerufen 96 KAPITEL 7 PROBLEME DER IMPLEMENTATION Beim praktischen Test der R ntgenintensit tsbestimmung trat eine ei ne weitere Schwierigkeit auf Wenn w hrend der Ermittlung der Detek torwerte mit den oben genannten Befehlen das Z hlerfenster nicht ge ff net war konnten keine Strahlungswerte ermittelt werden Das Z hlerfen ster dient der v
270. z wird beim praktischen Funktionstest ermittelt 4 4 Suchbereich Der Suchbereich gibt an in welchen Intervallgrenzen der Peak auf den ein zelnen Achsen gesucht werden soll und bezieht sich auf die Stellung der Mo toren zu Beginn der automatischen Justage Das Programm testet ob diese Such Intervalle die Softwareschranken der Motoren berschreiten Ist dies der Fall werden die Grenzen intern angepa t so da die Motoren nicht ber die Schranken gefahren werden Die Werte des Suchbereichs geben die Gren zen zu beiden Richtungen an und sind f r jeden an der Justage beteiligten Antrieb Beugung fein Tilt Kollimator anzugeben Die Wertebereiche m ssen beim sp teren Test der Funktion anhand verschie dener Proben entsprechend ermittelt werden 4 4 PFLICHTENHEFT 43 5 Voreinstellungen Die Voreinstellungen der Dialogparameter Defaultwerte m ssen in einer ausgedehnten Testreihe am RTK Arbeitsplatz ermittelt werden Dazu sind mehrere Proben aus unterschiedlichen Probenklassen zu untersuchen um ausreichende Erfahrungswerte zu sammeln Die Forderung besteht darin Werte zu ermitteln bei denen die automatische Justage ohne nderung der Parameter gute Ergebnisse f r einen Gro teil der untersuchten Halbleiterkri stalle liefert Anhang Zur Veranschaulichung soll hier bereits das Dialogfenster wie es als Produkt der Anforderungen entworfen wurde gezeigt werden Gem den Richtlinien zur Erstellung ein
271. zwischen dem Vektor v und der alten x Achse berechnet werden Die alte x Achse wird repr sentiert durch den Einheitsvektor ef 1 0 0 Der Winkel a zwischen beiden Vektoren kann mit Hilfe des Skalarproduktes berechnet werden Uz i cos a nn will lea 0 14 5 0 0 0 V0 52 02 V1 02 0 cosa 0 a 90 cosa 56 KAPITEL 5 ENTWICKLUNG EINES JUSTAGEALGORITHMUS Um die entsprechende Transformationsmatrix zum neuen Koordinaten system zu erhalten mu man den negativen Wert des Winkels und den um gekehrten Translationsvektor verwenden Mit diesen bildet man die jeweilige Rotationsmatrix bzw Translationsmatrix und multipliziert sie anschlie end Die Berechnung wird wie folgt durchgef hrt Rhin Rz T cos 90 sin 90 0 0 100 0 Ey sin 90 cos 90 0 0 0 1 0 5 BT 0 0 10 0010 0 0 01 000 1 0 1 0 5 1 00 0 Brin 001 0 0 00 1 Um die Inverse Transformationsmatrix zu berechnen die den bergang vom neuen zum alten Koordinatensystem darstellt mu mit einem positiven Win kel und dem originalen Translationsvektor gearbeitet werden Au erdem ist zu beachten da die Matrixmultiplikation nicht kommutativ ist dementspre chend werden Translations und Rotationsmatrix vertauscht Rr ck T Rs 1000 cos 90 sin 90 0 0 Pie 0105 sin 90 cos 90 0 0 r k T 0010 0 0 1 0 0001 0 0 0 1 0 1 0 0 1 0 05 Rriick 1 o 9 10 0 0 01 Als n chstes ist der
Download Pdf Manuals
Related Search
Related Contents
MANUAL DE INSTRUÇÕES EFA110F05-B/01 Joycare JC-280 N König CSGAL3MSUC100 screen protector Les fractures culturelles françaises. Marie Thonon GUÍA DE LABORATORIO Brochure sans prix BENUTZERHANDBUCH www.go4b.com Copyright © All rights reserved.
Failed to retrieve file