Teil II

Transcription

Teil II
FACHHOCHSCHULE HANNOVER
FACHBEREICH ELEKTROTECHNIK
FACHRICHTUNG DATENVERARBEITUNG INFORMATIONSELEKTRONIK
Diplomarbeit
Online-Überwachung des Vakuumsystems am Gavitationswellen-Interferometer GEO600
(Teil 2: Programmdokumentation)
Diplomand:
Sven Hrabak, 0814254
Zeitraum:
15.01.1997 - 15.04.1997
Firma:
UNI Hannover, Institut für Atom- und Molekülphysik
Erstprüfer:
Prof. Heine, FH Hannover
Zweitprüfer:
Prof. Dr. Danzmann, UNI Hannover
Programmdokumentation
Inhalt:
PROGRAMM: ACTIVATE CONFIGURATION.VI................................................................5
PROGRAMM: ACTIVATE LEAK CHECK.VI.......................................................................7
PROGRAMM: ACTIVATE SECTIONS.VI.............................................................................9
PROGRAMM: ALERT-PASSIVE.VI.....................................................................................14
PROGRAMM: ALERT.VI ......................................................................................................16
PROGRAMM: ASCII PROTOCOL (SPECTRA) TO NUMBERS.VI...................................19
PROGRAMM: ASK FOR BAR CHART.VI...........................................................................24
PROGRAMM: ASK FOR LEAK CHECK.VI ........................................................................25
PROGRAMM: ASK FOR SINGLE PEAK.VI........................................................................26
PROGRAMM: AUTOSCAN DATA- STRING TO DATA.VI..............................................27
PROGRAMM: AUTOSCAN MASSES.VI.............................................................................29
PROGRAMM: BUILD AUTOSCAN ARRAY.VI .................................................................35
PROGRAMM: CHANGE ALL PORTS TO ACTIVE PORTS.VI.........................................37
PROGRAMM: COMMAND; AXX.VI...................................................................................38
PROGRAMM: COMMAND; GFS.VI ....................................................................................40
PROGRAMM: COMMAND; GPA.VI....................................................................................42
PROGRAMM: COMMAND; GPS.VI ....................................................................................43
PROGRAMM: COMMAND; LXX.VI....................................................................................44
PROGRAMM: COMMAND; SFS.VI.....................................................................................45
PROGRAMM: COMMAND; SST.VI.....................................................................................46
PROGRAMM: COMMUNICATION (C - C) RECEIVE.VI..................................................47
PROGRAMM: COMMUNICATION (C - C) SEND.VI.........................................................50
PROGRAMM: COMMUNICATION.VI ................................................................................54
Inhaltsverzeichnis - Seite 1
PROGRAMM: CONVERT CONFIG-DATA <-> FILE.VI....................................................58
PROGRAMM: CONVERT SECTION NUMBER.VI ............................................................60
PROGRAMM: CONVERT TIME.VI......................................................................................61
PROGRAMM: FORMAT AUTOSCAN DATA.VI................................................................62
PROGRAMM: FORMAT CHANGES-DATA-ARRAY.VI...................................................65
PROGRAMM: FRONT PANEL.VI ........................................................................................67
PROGRAMM: FULL SCAN- COMMAND TO STRING.VI................................................73
PROGRAMM: FULL SCAN- DATA TO STRING.VI...........................................................74
PROGRAMM: FULL SCAN- STRING TO COMMAND.VI................................................75
PROGRAMM: FULL SCAN- STRING TO DATA.VI...........................................................76
PROGRAMM: GET ALL QUADRUPOLES (PORT_ALL).VI.............................................77
PROGRAMM: GET DATA FROM ALL PRESSURE SENSORS.VI...................................81
PROGRAMM: GET INFO ABOUT QUADRUPOLE.VI ......................................................83
PROGRAMM: GET LEAK CHECK.VI .................................................................................84
PROGRAMM: GET MASSES FOR AUTOSCAN MASSES.VI...........................................90
PROGRAMM: GET NAMES OF SECTION COMPUTERS.VI ...........................................91
PROGRAMM: GET NEXT COM-ADRESS.VI.....................................................................92
PROGRAMM: GET POSITION NUMBERS IN OTHER SECTIONS.VI ............................93
PROGRAMM: GET TUNNEL-CHECK.VI............................................................................96
PROGRAMM: INTERPOLATIONPOLYNOM OF NEWTON.VI........................................99
PROGRAMM: LEAKCHECK CHECKCALL.VI................................................................103
PROGRAMM: LINEAR INTERPOLATION.VI..................................................................104
PROGRAMM: MAKE AUTOSCAN DATA SHOWABLE.VI ...........................................105
DATEI: NAMES.SYS ............................................................................................................109
PROGRAMM: NO EOC ERROR.VI....................................................................................110
PROGRAMM: NO TIME OUT ERROR.VI.........................................................................111
PROGRAMM: NUMBER OF CHAR IN A STRING-ARRAY.VI......................................112
Inhaltsverzeichnis - Seite 2
PROGRAMM: NUMBER OF SEARCH NUMBER IN AN ARRAY.VI............................113
PROGRAMM: PARSER.VI..................................................................................................115
PROGRAMM: PORT TO COM.VI ......................................................................................118
DATEI: PORT.ALL................................................................................................................119
DATEI: PORT.SYS ................................................................................................................121
PROGRAMM: POWER - SWITCH FOR AUTOSCAN MASSES.VI ................................123
PROGRAMM: READ FULL SCAN - GET INFO.VI ..........................................................125
PROGRAMM: READ FULL SCAN.VI................................................................................127
PROGRAMM: READ TPG300 (PRESSURE).VI ................................................................133
PROGRAMM: REPLACE NEW SCAN DATA.VI .............................................................135
PROGRAMM: SAVE PRESSURE.VI..................................................................................137
PROGRAMM: SCALE SHOW AUTOSCAN MASSES.VI ................................................138
DATEI: SCAN.INI..................................................................................................................143
PROGRAMM: SECTION CENTRAL-CLUSTER.VI..........................................................144
PROGRAMM: SECURITY PENNING.VI...........................................................................156
PROGRAMM: SECURITY PRESSURE.VI.........................................................................159
PROGRAMM: SELECT A LINE OR COLUMN FROM A 2D-STRING-ARRAY.VI.......162
PROGRAMM: SELECT ARRAY-LINE.VI.........................................................................163
PROGRAMM: SELECT ARRAY-ROW.VI.........................................................................164
PROGRAMM: SERIAL COMMUNICATION - SPECTRA.VI...........................................165
PROGRAMM: SERIAL COMMUNICATION - TPG300.VI...............................................167
PROGRAMM: SERIAL READ.VI .......................................................................................169
PROGRAMM: SET AUTOSCAN MASSES.VI...................................................................171
PROGRAMM: SET DISTANCES.VI...................................................................................174
PROGRAMM: SET MULTIPLIER GAIN FACTOR.VI......................................................177
PROGRAMM: SETUP.VI.....................................................................................................178
PROGRAMM: SHOW AUTOSCAN DATA II.VI...............................................................184
Inhaltsverzeichnis - Seite 3
PROGRAMM: SHOW AUTOSCAN DATA.VI ..................................................................186
PROGRAMM: SHOW FULL SCAN.VI...............................................................................190
PROGRAMM: SHOW LEAK CHECK.VI ...........................................................................197
PROGRAMM: SHOW PRESSURE TPG300- CENTRAL-CLUSTER.VI ..........................201
PROGRAMM: SHOW TUNNELTEST.VI...........................................................................206
PROGRAMM: SORT FILES.VI ...........................................................................................211
PROGRAMM: STATUS PRESSURE SENSOR.VI.............................................................213
PROGRAMM: TALK ACTIVE INTERNET.VI...................................................................215
PROGRAMM: TALK MODULE ACTIVE.VI.....................................................................216
PROGRAMM: TALK MODULE PASSIVE.VI ...................................................................217
PROGRAMM: TALK PASSIVE INTERNET.VI.................................................................219
PROGRAMM: VALUE IN SPAN.VI ...................................................................................220
PROGRAMM: WITCH INPUT IS TRUE.VI .......................................................................221
Inhaltsverzeichnis - Seite 4
Programm:
Activate Configuration.vi
Eingabe:
-
Ausgabe:
-
Kurzbeschreibung:
Umsetzung der „Port.all“-Datei in die „Port.sys“ in Abhängigkeit
von den aktivierten Sektoren
Programmbeschreibung: Die Pfade zu den Dateien „Vacuum.ini“, „State.ini“, „Port.all“ und
„Port.sys“ werden definiert und die ersten drei Dateien geöffnet und
deren Inhalt gelesen.
Die eigene Sektionsnummer wird
aus
der
„Vacuum.ini“ selektiert.
Die Konfigurationen, die durchgeführt wurden und aus denen die
Datei „Port.all“ resultierte, beziehen sich immer nur auf die Sektion,
die durch den jeweiligen Rechner verwaltet wird. Es ist daher nur
nötig, die Sektoren in der „Port.all“-Datei zu löschen, die deaktiviert
wurden, um sie an keinen Messungen zu beteiligen. Ergebnis dieser
Umsetzung ist die Datei „Port.sys“.
Activate Configuration.vi - Seite 5
Eine CASE-Struktur wird geöffnet, die für jede Sektionskennziffer
das Löschen übernimmt.
Hier ist der Löschvorgang für das Zentralhaus dargestellt. Die Zustände der drei Sektoren, die in der Sektion Zentralhaus vorhanden
sind, werden aus der Datei „State.ini“ selektiert.
Es handelt sich mit der Position 1 um das Rohr 1, mit der Position 2
um das Zentralhaus selbst und mit der Position 3 um das Rohr 2.
Sind die Zustände gleich eins, ist keine Veränderung der Konfiguration in diesen Bereichen erforderlich. Ist allerdings der Zustand
gleich null, müssen die entsprechenden Konfigurationen aus der Datei gelöscht werden, da sie durch die Deaktivierung an keinen Messungen teilnehmen sollen.
Der Löschvorgang wird durch die Funktion „Change all Ports to
active Ports.vi“ übernommen.
Beispiel: Löschen der Rohr 1-Sektion
Die Positionen 16 und 17,
sowie die Positionen null bis
drei werden aus der Konfiguration gelöscht.
Die Kennziffer (16, 17,...) sind der Skizze für die Konfiguration der
Anschlüsse zu entnehmen (für die Sektion Zentralhaus: Section
Central-Cluster.vi“).
Der Löschvorgang für die anderen Sektionen ist analog zu dem oben
beschrieben Verfahren.
Durch den Aufbau der „State.ini“-Datei werden für die Sektion Endhaus 1 die Positionen 0 (= Sektor Endhaus 1) und 1 (= Sektor Rohr
1) benötigt und für die Sektion Endhaus 2 die Positionen 3 (= Sektor
Rohr 2) und 4 (= Sektor Endhaus 2).
Activate Configuration.vi - Seite 6
Programm:
Activate Leak Check.vi
Eingabe:
Section Number
Ausgabe:
Configuration Out
Kurzbeschreibung:
Löschen aller aktivierten Konfigurationen aus der „Port.all“-Datei
Programmbeschreibung: Die Pfade zu den Dateien
„State.ini“ und „Port.all“
werden definiert, die Dateien
geöffnet und deren Inhalt
gelesen.
Die Konfigurationen, die durchgeführt wurden und aus denen die
Datei „Port.all“ resultierte, beziehen sich immer nur auf die Sektion,
die durch den jeweiligen Rechner verwaltet wird. Es ist daher nur
nötig, die Sektoren in der „Port.all“-Datei zu löschen, die aktiviert
wurden, um sie an keinen Messungen zu beteiligen.
Eine CASE-Struktur wird geöffnet, die für jede Sektionskennziffer,
die über „Section Number“ definiert wurde, das Löschen übernimmt.
Hier ist der Löschvorgang für das Zentralhaus dargestellt. Die Zustände der drei Sektoren, die in der Sektion Zentralhaus vorhanden
sind, werden aus der Datei „State.ini“ selektiert.
Es handelt sich mit der Position 1 um das Rohr 1, mit der Position 2
um das Zentralhaus selbst und mit der Position 3 um das Rohr 2.
Activate Leak Check.vi - Seite 7
Sind die Zustände gleich null, der Sektor also deaktiviert, ist keine
Veränderung der Konfiguration in diesen Bereichen erforderlich. Ist
allerdings der Zustand gleich eins, müssen die entsprechenden Konfigurationen aus der Datei gelöscht werden, da sie durch die Aktivierung an keinen Messungen teilnehmen sollen.
Der Löschvorgang wird durch die Funktion „Change all Ports to
active Ports.vi“ übernommen.
Beispiel: Löschen der Rohr 1-Sektion
Die Positionen 16 und 17,
sowie die Positionen null bis
drei werden aus der Konfiguration gelöscht.
Die Kennziffern (16, 17,...) sind der Skizze für die Konfiguration der
Anschlüsse zu entnehmen (für die Sektion Zentralhaus: Section
Central-Cluster.vi“.
Der Löschvorgang für die anderen Sektionen ist analog zu dem oben
beschrieben Verfahren.
Durch den Aufbau der „State.ini“-Datei werden für die Sektion Endhaus 1 die Positionen 0 (= Sektor Endhaus 1) und 1 (= Sektor Rohr
1) benötigt und für die Sektion Endhaus 2 die Positionen 3 (= Sektor
Rohr 2) und 4 (= Sektor Endhaus 2).
Activate Leak Check.vi - Seite 8
Programm:
Activate Sections.vi
Eingabe:
keine
Ausgabe:
keine
verknüpfte Dateien:
State.ini
Kurzbeschreibung:
Aktivieren/Deaktivieren einzelner Sektoren
Bedienung:
Über den „Cancel“-Button wird dieses Programm verlassen.
Durch Drücken des „Done“-Buttons werden die aktuellen Einstellungen in der Datei „State.ini“ gespeichert und danach dieses Programm verlassen.
Um einen Sektor zu aktivieren, klickt man mit der Maus in den gewünschten Bereich. (Hier als Beispiel: Endhouse 1)
Activate Sections.vi - Seite 9
Auf dem Bildschirm erscheint der Name des Sektors, den man gewählt hat, der aktuelle Zustand (hier: deaktiviert) und zwei Buttons,
mit denen man diesen Sektor in den neuen Zustand versetzen kann.
Will man den alten Zustand beibehalten, klickt man auf den entsprechenden Button (hier: Deactivate).
Danach verschwindet diese Anzeige wieder.
Ein aktivierter Sektor kennzeichnet sich dadurch, daß er rot blinkt.
Programmbeschreibung: Die Anzeige „Current state“ wird ermöglicht.
Das Blinken der aktivierten Sektoren ist über
fünf boolean Indicator realisiert, die über die
Attribute Node auf „blinking“ geschaltet werden. Damit diese Indikatoren beim Klicken im
Bild keinen Einfluß haben, werden sie auf
„disabled“ geschaltet.
Außer zu dieser Anzeige, haben sie keine Bedeutung.
Die beiden Buttons „Cancel“ und „Done“ werden
mit Hilfe der „local variable“ auf den definierten
Zustand false gesetzt.
Activate Sections.vi - Seite 10
Die Einstellungen, die
getroffen wurden, werden
in der Datei „State.ini“ gespeichert. Diese Datei
wird geöffnet und die erste
Zeile, in ihr sind die einzelnen Zustände gespeichert, als Anfangsdaten
entnommen.
Weiterhin wird der Rest
der Datei extrahiert, um
später diese Daten mit den
neuen Zuständen zusammenzufügen.
An der Logikkonstante „Test“ kann auf die Testversion umgeschaltet werden. Es wird nur ein Zustandsarray (Nullarray) erzeugt, um die Funktion dieses Programms zu testen.
Das Zustandsarray (aus der Datei oder aus dem Nullarray) wird auf
das Shift-Register einer WHILE-Schleife geführt.
Das Hauptprogramm ist in einer WHILE-Schleife untergebracht.
Diese wird so lange durchlaufen, bis der „Done“- oder „Cancel“Button zum Abbruch gedrückt wird.
Bei jedem neuen Durchlauf dieser WHILESchleife werden die Schalter zur Aktivierung/
De-Aktivierung auf false gesetzt, damit es zu
keinen Überschneidungen kommt.
Ein weiteres Shift-Register als „Merker“ wird erzeugt.
Das Anklicken eines Sektors ist, ähnlich wie bei den Blinkern zur
Kennzeichnung der aktiven Sektoren, durch ein boolean Control realisiert. Die Farben wurden transparent gewählt, so daß die Schalter
unsichtbar über dem Bild liegen. Es sind fünf Schalter vorhanden,
einer für jeden Sektor.
Die einzelnen Sektoren sind durchnumeriert. Je nachdem, welcher
Schalter betätigt wurde, wird der Merker auf den entsprechenden
Wert gesetzt.
Activate Sections.vi - Seite 11
Anfang (ganz links) und Ende (ganz rechts) bilden die hier nicht abgebildeten Shift-Register. In den ersten vier CASE-Anweisungen
Sind die Schalter für die Sektoren (v. l. n. r.) Endhouse 1, Tube 1,
Central-Cluster und Tube 2 dargestellt. Wird der jeweilige Schalter
betätigt, wird der Merker auf den entsprechenden Wert gesetzt.
Die CASE-Anweisung rechts (Endhouse 2) zeigt den false-Fall,
wenn der Schalter nicht betätigt wurde: Der vorherige Wert wird
beibehalten.
Auf der rechten Seite ist die Signalleitung unterbrochen. An dieser
Stelle ist eine Funktion angebunden, die nach der Bearbeitung eines
Sektors, also der Veränderung dessen Zustandes, den Merker wieder
zurücksetzt (Beschreibung siehe unten).
Ausgangszustand des Merkers ist null. Null bedeutet, daß kein
Schalter betätigt wurde, also auch kein Sektor gewählt wurde, also
keine Veränderung erwünscht ist.
Die Farbe der Anzeigen werden auf die Hintergrundfarbe eingestellt und damit unsichtbar gemacht. Die Schalter zur Aktivierung/
Deaktivierung werden unsichtbar gemacht.
Bei allen anderen Zuständen (1-5), wenn also ein Schalter betätigt
wurde, werden alle Anzeigen sichtbar gemacht.
Das zu bearbeitende Element wird aus dem Shift-Register entnommen. Die Position muß noch um eins dekrementiert werden, da ein
Array immer an der Position null beginnt.
Je nachdem, welcher Wert im Shift-Register zwischengespeichert war, erfolgt über eine CASEStruktur die Anzeige des aktuellen Zustandes.
Ist der Merker größer als null, wird in „true“ einer weiteren CASEAnweisung eine WHILE-Schleife aktiviert, in der die beiden Schalter
zur Aktivierung, bzw. Deaktivierung abgefragt werden.
Diese Schleife wird so lange durchlaufen,
bis einer der beiden Schalter angeklickt
wurde.
Bei Beendigung der Schleife wird der
Wert des Schalters „activate“ in eine
Zahl umgewandelt.
Activate Sections.vi - Seite 12
Diese Schleife ist ein typische „Hänger“: Es passiert nichts, bevor
der Bediener eine Taste drückt. Damit der Rest des Programms ungehindert fortfahren kann, ist eine Warteschleife von 100 ms eingefügt.
Der Wert, der aus der Taste „activate“ resultiert, wird in das Array
vom Ausgangszustand eingesetzt.
Wird der Button „Cancel“ gedrückt, wird die weitere
Bearbeitung abgebrochen und das Programm beendet.
Durch Drücken des „Done“Buttons wird das Programm
ebenfalls beendet, allerdings werden die neuen
Einstellungen vorher in der Datei „State.ini“
gespeichert. Hierzu müssen vor das neue Zustandsarray und der vorher aus der gesamten
Datei getrennte Rest wieder zusammengefügt
werden.
Die alte Datei wird überschrieben.
Die Veränderung einer Zustandsdatei soll auch in anderen Sektionen
zur Verfügung stehen.
Das Zustandsarray wird in einen
String umgewandelt und mit dem
Kommando „sst“ (send state) zu allen Sektionsrechnern geschickt.
Somit ist es möglich, von jedem
Rechner aus das gesamte System zu
verwalten.
Activate Sections.vi - Seite 13
Programm:
Alert-Passive.vi
Eingabe:
PAx
Caller
Ausgabe:
-
Kurzbeschreibung:
Warnung vor überhöhtem Druck in einer anderen Sektion
Bedienung:
Wird in einer Sektion ein zu hoher Druck (Schwellwert) gemessen,
erscheint auf dem Bildschirm aller anderen Sektionen folgendes
Dialogfenster:
In dem Fenster wird außerdem die Sektion, in der dieser Fehler auftrat, angezeigt.
Durch „noticed...“ wird dieser Fehler akzeptiert, aber es werden keine unmittelbaren Veränderungen vorgenommen.
„Deactivate Section“ setzt die Messungen der gesamten Sektion in
der der Fehler auftrat außer kraft.
Programmbeschreibung: Aus der übermittelten Sektionskennziffer („Caller“) wird der
Name der entsprechenden Sektion (hier: Central-Cluster) mit
Hilfe einer CASE-Struktur gebildet. Der entsprechende
Warnhinweis
wird zusammen
mit der Sektionsmitteilung
über einen Indikator ausgegeben (siehe oben).
Alert - Passive.vi - Seite 14
Dieser Alarm soll 15s angezeigt und danach abgebrochen werden. Hierzu wird die Uhrzeit bestimmt.
In der WHILE-Schleife wird ständig neu die Uhrzeit
gemessen. Ist die Differenz größer als 15 s erfolgt der
Abbruch der WHILE-Schleife.
Abbruchkriterium ist ebenfalls das Drücken einer der
beiden Schalter.
Wurde der Button „Deactivate Section“ gedrückt, wird dem Caller ein Acknowledgement
(„A“) mit Hilfe der „Communication (C - C)
Send.vi“-Anweisung
zurückgeschickt.
Alert - Passive.vi - Seite 15
Programm:
Alert.vi
Eingabe:
-
Ausgabe:
-
Kurzbeschreibung:
Alarm bei überhöhtem Druck
Bedienung:
Wird in einer Sektion ein zu hoher Druck (Schwellwert) gemessen,
erscheint auf dem Bildschirm dieser Sektion folgendes Dialogfenster:
In dem Fenster wird außerdem die Sektion, in der dieser Fehler auftrat, angezeigt.
Durch „noticed...“ wird dieser Fehler akzeptiert, aber es werden keine unmittelbaren Veränderungen vorgenommen.
„Deactivate Section“ setzt die Messungen der gesamten Sektion außer Kraft.
Programmbeschreibung: Die Pfade zu den Dateien
„State.ini“ und „Vacuum.ini“
werden definiert und die Daten
aus diesen Dateien gelesen.
Das Zustandsarray wird aus der
„State.ini“ selektiert und mit
Hilfe von „Vacuum.ini“ die
Sektionskennziffer des aufrufenden Rechners bestimmt.
Alert.vi - Seite 16
Die
Sektionskennziffer dient
als Eingabe in eine
CASEAnweisung. Dort
wird die Ziffer in
den Namen der
jeweiligen Sektion umgewandelt (hier: Central-Cluster). Der entsprechende Warnhinweis wird zusammen mit der Sektionsmitteilung
über einen Indikator ausgegeben (siehe oben).
Sofern der Rechner über einen Lautsprecher verfügt,
wird ein Signalton ausgegeben. Der Ton ist eine halbe Sekunde lang mit einer Frequenz von 860 Hz.
Die Schalter „noticed...“ und „Deaktivate Section“ werden auf false
gesetzt.
Die
Nachricht
über das Auftreten
einer Drucküberschreitung wird zu
den anderen Sektionsrechnern mit
der
Anweisung
„PAx“ geschickt.
„x“ enthält die
Sektionskennziffer, in der der Fehler auftrat. Der Zielrechner wird
durch den Index der FOR-Schleife gekennzeichnet. Stimmt der Index
mit der eigenen Sektionskennziffer überein, wird keine Nachricht gesendet.
Dieser Alarm soll 30 s angezeigt und danach
abgebrochen werden. Hierzu wird die Uhrzeit
bestimmt.
In der WHILE-Schleife wird ständig neu die
Uhrzeit gemessen. Ist die Differenz größer als
30s erfolgt der Abbruch der WHILE-Schleife.
Abbruchkriterium ist ebenfalls das Drücken
einer der beiden Schalter.
Wurde in der „Communication (C - C) Send.vi“-Funktion keine
Antwort von einem der Zielrechner erhalten, wird hier durch die
„Communication (C - C) Receive.vi“-Funktion auf eine Antwort gewartet.
Alert.vi - Seite 17
Ist diese Antwort gleich „A“, hat dies denselben Effekt, wie das
Drücken des „Deaktivate Section“-Buttons. Jede Antwort führt zum
Abbruch der WHILE-Schleife.
Aus der „State.ini“-Datei werden alle
weiteren Informationen (außer dem Zustandsarray) ausgeschnitten.
Das Anklicken des „Deaktivate Section“-Buttons hat zur Folge, daß
alle Sektoren in der betreffenden Sektion deaktiviert werden.
Hierzu werden die entsprechenden Zustände im Zustandsarray auf
Null gesetzt (Bild: Sektion Zentralhaus).
Für das Zentralhaus sind das die Sektoren 1 (= Rohr 1), 2 (= Zentralhaus) und 3 (= Rohr 2). In der Sektion Endhaus 1 werden die Sektoren 0 (= Endhaus 1) und 1 (= Rohr 1) gelöscht. In der Sektion Endhaus 2 sind das die Sektoren 3 (= Rohr 2) und 4 (= Endhaus 2).
Das geänderte Array wird wieder mit den anderen Daten zusammengefügt und das Ergebnis als neue „State.ini“ gespeichert.
Alert.vi - Seite 18
Programm:
ASCII protocol (Spectra) to numbers.vi
Eingabe:
ASCII protocol
Spectra (=false)/ TPG300
Ausgabe:
Result of Scan
Kurzbeschreibung:
Umwandlung der ASCII-Protokolle (amerikanische Schreibweise) in
ein Array mit Zahlen
Programmbeschreibung: Die Daten werden sowohl von den Massenspektrometern, als auch
von den TPG300 als ASCII-Zeichen, dem sogenannten ASCIIProtokoll gesendet. Diese Daten müssen zunächst aufgearbeitet werden.
Über den Eingang „Spectra (=false)/TPG300“ wird das jeweilige
Meßgerät, von dem die Daten stammen, definiert. Eingestellt ist false
für ein Massenspektrometer.
Das ASCII-Protokoll wird auf
ein „A“, das Acknowledgement, das von den Massenspektrometern zurückgesendet
wird, untersucht. Es kann sich
nur am Anfang des Strings befinden.
Ist das Ergebnis der Untersuchung gleich -1, befindet sich kein „A“
im String. Dieser wird ohne Änderung weitergegeben. Ist das Ergebnis ungleich -1, wird das erste Zeichen im String gelöscht. Das „A“
ist somit verschwunden.
Dem String wird ein <CR> beigefügt. Dieses erleichtert die Auswertung (siehe unten).
Erste WHILE-Schleife (Searching for , and replace it by <CR>)
Die Werte sind in den Protokollen durch Kommata
getrennt. Für eine eindeutige Trennung (im Deutschen
werden die Kommas als
Dezimalpunkte verwendet
→ 2,5) werden diese durch
<CR> (= Carriage Return)
ersetzt.
ASCII - protocol (Spectra) -> numbers.vi - Seite 19
Der String wird in einem Shift-Register in der WHILE-Schleife zwischengespeichert.
Dieser String (a) wird auf Kommata untersucht. Die Schleife wird so
lange durchlaufen, bis das Ergebnis der Untersuchung gleich -1 ist,
bis sich also kein Komma mehr im String befindet. Dies wird über
die Funktion „Split String“ erreicht.
Vor der Stelle, wo das Komma gefunden wurde wird durch diese
Funktion der String (a) getrennt. Ergebnis sind zwei Strings (b, c)
Erstes Zeichen des resultierenden zweiten Strings (c) ist das Komma.
Die Länge dieses Strings (c) wird bestimmt, dekrementiert und durch
die Funktion „String Subset“ ein neuer String (d) gebildet, bei dem
das erste Zeichen von (c) (das Komma) nicht mehr vorhanden ist.
Die Strings (b) und (d) werden wieder zusammengesetzt. Dazwischen wird (an der Stelle, wo vorher das Komma war, ein <CR> eingesetzt.
Zweite WHILE-Schleife (Searching for . and replace it by ,)
In der amerikanischen
Schreibweise wird bei
Dezimalzahlen ein Punkt
(.) bei uns ein Komma (,)
zur Trennung der Dezimalstellen
benutzt
(amerikanisch:
12.45;
deutsch: 12,45).
Der String wird wieder in einem Shift-Register einer WHILESchleife gespeichert. Die Schleife wird so lange durchlaufen, bis
durch die „Split String“-Funktion kein Punkt mehr gefunden wird
(=-1).
Der String wird vor der Position des Punktes gesplittet. Der zweite
entstehende String enthält noch den Punkt. Es wird wie oben weiterverfahren. Statt eines <CR> wird jedoch das in der deutschen
Schreibweise verwendete Komma eingesetzt.
Das Zwischenergebnis kann auf dem Bildschirm angesehen werden
(muß aber nicht).
ASCII - protocol (Spectra) -> numbers.vi - Seite 20
Fall 1: TPG300 wurde gewählt (=true)
Der String enthält nur zwei Zahlen.
Mit der Funktion „String Subset“ wird das erste Zeichen des Strings
(<CR>) gelöscht.
Die erste „Format & Strip“-Anweisung wandelt die erste Zahl (es
handelt sich um das vom TPG300 ausgegebene Statuswort) in eine
Dezimalzahl um. Der Rest des Strings (ab dem zweiten <CR>) wird
nicht bearbeitet.
Die zweite „Format & Strip“-Anweisung wandelt die zweite Zahl
(den eigentlichen Meßwert) in eine Zahl in Exponentialschreibweise
mit einer Nachkommastelle um.
Die beiden Werte werden in einem Array zusammengefaßt und über
„Result of Scan“ ausgegeben.
ASCII - protocol (Spectra) -> numbers.vi - Seite 21
Fall 2: Spectra wurde gewählt (= false)
Die letzten beiden Zeichen des Strings werden gelöscht.
(Anmerkung: Es würden sonst, keiner weiß warum, zwei Nullen an
das sonst korrekte Ergebnis angehängt).
Der resultierende String wird im Shift-Register einer WHILESchleife zwischengespeichert.
Durch die Funktion „Split String“ wird festgestellt, ob noch ein
<CR> in dem String vorhanden ist. Die Schleife wird so lange
durchlaufen, bis kein <CR> mehr vorhanden ist.
Die Länge des Strings wird festgestellt, dekrementiert und über
„String Subset“ das <CR>, welches sich immer an erster Stelle befindet, gelöscht. Folge: Der String enthält nun nur noch n-1 Zeichen.
Über „Split String“ wird das erste Zeichen
vom String getrennt. Handelt es sich hierbei
um ein „>“, ist dies ein Indikator dafür, daß
dieser Wert nicht korrekt gemessen wurde.
Wird der Meßbereich zu klein gewählt, gibt
das Massenspektrometer eine Zeichenfolge
aus, die den overflow kennzeichnet (>.>eEE = sieben Zeichen).
Wird ein „>“ erkannt, werden in der
CASE-Anweisung gleich true diese
sieben Zeichen gelöscht und als gemessener Wert -1 ausgegeben. Dies kennzeichnet einen noch fehlenden Meßwert (→ siehe Read full span).
ASCII - protocol (Spectra) -> numbers.vi - Seite 22
Wurde kein overflow erkannt, wird aus
dem String eine Zahl in Exponentialschreibweise mit einer Nachkommastelle
durch die „Format & Strip“-Anweisung
gebildet. Der restliche String (an erster
Stelle ist nun wieder ein <CR> vorhanden)
wird zum nächsten Durchlauf an die WHILE-Schleife weitergegeben.
In der WHILE-Schleife wurde „enable indexing“ gewählt, es entsteht
ein Array aus allen umgewandelten Zahlen. Das letzte Element dieses Arrays wird gelöscht. Es enthält als letztes Element den Wert
Null, der aber nicht durch das ASCII-Protokoll definiert wurde, sondern aus den vorangegangenen Verfahrensweisen entsteht.
ASCII - protocol (Spectra) -> numbers.vi - Seite 23
Programm:
Ask for Bar Chart.vi
Eingabe:
Multiplier
Range (Gain)
Accuracy
First Mass
Last Mass
Port Number
Ausgabe:
Answer
Kurzbeschreibung:
Aktivierung einer Bar Chart Messung in einem Massenspektrometer
Programmbeschreibung: Über die Funktion „Serial Communication Spectra“ wird mit der Anweisung „F1,1“ das Filament 1 des an dem gewählten Port angeschlossenen Massenspektrometers eingeschaltet.
Die Anweisung zur Durchführung eines Bar Charts in einem Massenspektrometer hat folgendes Aussehen:
M [f1],[f2],[f3],[f4],[f5],[f6],[f7],[f8]
f1 = 2
f2 = 0,1
f3 = 0,1
Mode Bar Chart
Multiplier off/on
Total Pressure off/on (Setting: 0, der Totaldruck wird aus
der Summe der Partialdrücke gebildet)
f4 = 0-5
Accuracy/Speed (Default: 5)
f5 = 1-200 First Mass (Default: 1)
f6 = 1-200 Last Mass (Default: 50)
f7 = 5-13 Range (Gain) (Default: 7)
f8 = 0,1
Auto Range off/on (Setting: 0, die Dekade wird durch f7
festgelegt)
War das Einschalten erfolgreich, d.h. wurde ein Command
Acknowledgement (= „A“) vom Massenspektrometer zurückgeschickt, so werden die Eingabeparameter in einen
ASCII-String mit oben beschriebenen Format
umgewandelt, der dem jeweiligen Massenspektrometer geschickt wird.
Die Antwort (Command Acknowledgement) wird über
„Answer“ ausgegeben.
Ask for Bar Chart.vi - Seite 24
Programm:
Ask for Leak Check.vi
Eingabe:
Multiplier
Range (Gain)
Response (Speed)
Mass
Port Number
Mass Tune
Ausgabe:
Answer
Kurzbeschreibung:
Aktivierung einer Leak Check Messung in einem Massenspektrometer
Programmbeschreibung: Über die Funktion „Serial Communication Spectra“ wird mit der Anweisung „F1,1“ das Filament 1 des an dem gewählten Port angeschlossenen Massenspektrometers eingeschaltet.
Die Anweisung zur Durchführung eines Leak Checks in einem Massenspektrometer hat folgendes Aussehen:
M [f1],[f2],[f3],[f4],[f5],[f6],[f7],[f8],[f9],[f10]
f1 = 1
f2 = 0,1
f3 = 0-5
f4 = 1-200
f5 = 0-31
f6 = 5-13
f7 = 0,1
f8 = 0-99
f9 = 0-99
f10= 0,1
Mode Leak Check
Multiplier off/on (Default: 0)
Response (Speed) (Default: 5), Anm.: analog zu Accuracy
Probe Gas (Default: 4= He), Anm.: Analog zu Mass
Mass Tune (Default: 16= 0 offset)
Range (Gain) (Default: 7)
Auto Range off/on (Setting: 0, Range wird durch f6 festgelegt)
High Alarm off/on (Default: 0, Alarm wird softwaretechnisch realisiert)
Low Alarm off/on (Default: 0, siehe f8)
Audio off/on (Default: 0)
War das Einschalten erfolgreich, d.h. wurde ein Command
Acknowledgement (= „A“) vom Massenspektrometer zurückgeschickt, so werden die Eingabeparameter in einen
ASCII-String mit oben beschriebenen Format umgewandelt, der dem jeweiligen Massenspektrometer geschickt wird.
Die Antwort (Command Acknowledgement) wird über
„Answer“ ausgegeben.
Ask for Leak Check.vi - Seite 25
Programm:
Ask for Single Peak.vi
Eingabe:
Multiplier
Range (Gain)
Accuracy
Mass
Port Number
Ausgabe:
Answer
Kurzbeschreibung:
Aktivierung einer Single Peak Messung in einem Massenspektrometer
Programmbeschreibung: Über die Funktion „Serial Communication Spectra“ wird mit der Anweisung „F1,1“ das Filament 1 des an dem gewählten Port angeschlossenen Massenspektrometers eingeschaltet.
Die Anweisung zur Durchführung eines Leak Checks in einem Massenspektrometer hat folgendes Aussehen:
M [f1],[f2],[f3],[f4],[f5]
f1 = 5
f2 = 0,1
f3 = 0-5
f4 = 1-200
f5 = 5-13
Mode Single Peak
Multiplier off/on (Default: 0)
Accuracy/Speed (Default: 5)
Mass (Default: 1)
Gain (Default: 7)
War das Einschalten erfolgreich, d.h. wurde ein Command
Acknowledgement (= „A“) vom Massenspektrometer zurückgeschickt, so werden die Eingabeparameter in einen
ASCII-String mit oben beschriebenen Format
umgewandelt, der dem jeweiligen Massenspektrometer geschickt wird.
Die Antwort (Command Acknowledgement) wird über
„Answer“ ausgegeben.
Ask for Single Peak.vi - Seite 26
Programm:
AutoScan Data- String to data.vi
Eingabe:
Input String
Ausgabe:
From to
Y-Scale
X-Scale
X-Scale Names
Plot Names
Data
Resolution
Actual time
Changes Values
Kurzbeschreibung:
Konvertierung eines gesendeten Strings von einem fremden Rechner
in Anzeige-Parameter
Von jedem Rechner aus können die Daten, die mit dem AutoScan
gesammelt wurden abgerufen werden. Die einzelnen Daten sind bezogen auf die jeweilige Sektion.
Dieses Programm konvertiert die Antwort auf eine Anfrage bei einem anderen Rechner nach diesen AutoScan-Daten.
Programmbeschreibung: Die einzelnen Daten sind durch
Tabs getrennt.
Die Funktion „Split String“ sucht
nach dem ersten Tabulator. Der
String davor enthält die Information für die Anzeige „from to“, also
in welchem Zeitraum die Parameter angezeigt werden. Mit der
zweiten „Split String“-Anweisung (im Bild unten rechts) wird das
erste Zeichen, der Tabulator, gelöscht und der verbleibende Rest des
String der weiteren Decodierung zugänglich gemacht.
Die Information
für Y-Scale besteht aus zwei
Ziffern,
dem
Minimum und
dem Maximum für die Anzeige. Aus diesem Grund wurde eine FORSchleife konstruiert, die als Ergebnis durch „enable indexing“ ein
Array bildet.
Die Funktion des Tabulators wurde bereits oben beschrieben. Der
selektierte String wird in eine Zahl in Exponentialform umgewandelt.
AutoScan data- String to Data.vi - Seite 27
Der String wurde auf ein Shift-Register geführt. Dadurch ist der für
zwei Durchläufe in der FOR-Schleife vorhanden und kann jeweils
um die Tabulatoren gekürzt werden.
Der Rest der Umwandlung erfolgt analog zu den oben beschriebenen
Verfahren.
Besonderheiten:
Beispielsweise bei der Anzahl der Namen der einzelnen Plots, also
der Anzahl der überwachten Massen, ist diese keine konstante Größe. Es können zwar, laut Definition, maximal sieben Massen überwacht werden, allerdings muß dieses Kontingent nicht vollständig
ausgeschöpft sein.
Wurden beispielsweise nur fünf Massen definiert, wird vor dem
Senden der Namen die Anzahl (fünf) geschickt. Diese Zahl bestimmt
die Anzahl der Durchläufe der FOR-Schleife.
AutoScan data- String to Data.vi - Seite 28
Programm:
AutoScan Masses.vi
Eingabe:
Accuracy
State.ini
Path State.ini
Ausgabe:
-
Kurzbeschreibung:
Ausführung eines AutoScan
Programmbeschreibung: Der Pfad zu den Statistikdateien wird
definiert.
Weitere Definitionen sind die Pfade für
die „Scan.ini“, die „Port.sys“ und die
„Vacuum.ini“.
Die Datei „Scan.ini“ wird geöffnet und ihr Inhalt gelesen. Die
letzte Einstellung wird mit der
Funktion „Select Array-line.vi“
gewählt. Ab der Position 1 sind in diesem Array die routinemäßig
abzufragenden Massen definiert. Es handelt sich um maximal sieben
Massen. Zu diesem Zweck wird eine FOR-Schleife geöffnet.
Aus den Positionen neun und zehn lassen sich
die zu betrachtenden Druckbereiche ablesen.
Deren Differenz ergibt die Anzahl der zu messenden Dekaden. Hieraus wird ebenfalls eine
FOR-Schleife gebildet.
Die Datei „Port.sys“ wird geöffnet und deren Inhalt
gelesen. Die Größe des gelesenen 2D-Arrays wird bestimmt. In X-Richtung befindet sich die Anzahl der
vorhandenen Konfigurationen.
Alle Massenspektrometer sollen aus der Konfigurationen selektiert
werden. Hierzu wird eine FOR-Schleife geöffnet.
AutoScan Masses.vi - Seite 29
Ein Array wird auf ein ShiftRegister geführt, das die Konfigurationen aufnehmen soll.
Anhand der Hardwarekennziffer
(Zeile zwei in den Konfigurationen) werden die Massenspektrometer herausgefunden.
Handelt es sich um die Kennziffer
eins
oder
zwei
(Massenspektrometer ohne/ mit Multiplier), werden mittels des Programms „Get Info about Quadrupole.vi“ alle nötigen Informationen zusammengestellt und das resultierende Array dem aus dem Shift-Register angehängt.
Handelt es sich bei der indexierten Position um kein Massenspektrometer, bleibt das Zielarray unverändert.
Die Größe des entstandenen Arrays wird geprüft. Eine
Konfiguration enthält sechs Bestandteile. Die Größe des
Arrays wird also durch sechs geteilt. Dieses Ergebnis
wird als Eingang für eine weitere FOR-Schleife genutzt.
Ein weiteres Array zur Aufnahme der Meßergebnisse
wird erzeugt. Es sind maximal sieben Massen an der berechneten
Anzahl von Massenspektrometer zu überprüfen. Das Array wird mit
-1, dem Indikator für eine Fehlmessung, initialisiert.
Erste FOR-Schleife: Die Massen
Mittels des Index wird eine Masse aus dem Array der zu überprüfenden Massen selektiert.
Ist diese Masse gleich null, wird keine Messung durchgeführt. Ist die
selektierte Masse ungleich null handelt es sich um einen gültigen
Wert, der gemessen werden muß.
Zweite FOR-Schleife: Der Druckbereich
Der Index dieser FOR-Schleife wird benutzt, um die zu messende
Druckdekade festzulegen.
AutoScan Masses.vi - Seite 30
Dritte FOR-Schleife: Senden der Meßanweisung
In dieser Schleife erfolgt die Sicherheitsüberprüfung, ob alle Druckwerte in Ordnung sind. Hier werden die vorhandenen Multiplier eingeschaltet und an die Massenspektrometer die Aufforderung zur
Messung des Partialdrucks einer Masse gesendet.
Diese Schleife wird so oft durchlaufen, wie es Konfigurationen gibt.
Aus der Konfiguration werden nacheinander die Parameter selektiert.
An Position zwei und vier befinden sich die Port-Nummern der abhängigen Drucksensoren und an Position drei und fünf die dazugehörigen Anschlüsse an den TPG300.
Diese Parameter werden jeweils einer „Read TPG300 (pressure).vi“Funktion zugeführt und damit der Druck gemessen. Eine Messung
mit dem Massenspektrometer wird nur dann ausgeführt, wenn beide
gemessenen Drücke unterhalb des Drucklimits (s.u.) liegen.
Auf Position null der jeweiligen Konfiguration befindet sich die
Port-Nummer des Massenspektrometers.
Auf Position eins ist die Information über einen vorhandenen Multiplier gespeichert. Ist dieser Wert gleich null, also kein Multiplier
vorhanden, darf der maximale Druck zum Einschalten des Massenspektrometers zwei Zehnerpotenzen größer sein als bei einem Massenspektrometer mit Multiplier (Position eins gleich eins).
AutoScan Masses.vi - Seite 31
Ist ein Massenspektrometer vorhanden, wird der
„Multiplier Gain Factor“, die Verstärkung des Multipliers gesetzt. Dies geschieht mit der Funktion „Set
Multiplier Gain Factor.vi“.
Das Drucklimit ist definiert für ein
Massenspektrometer mit Multiplier mit 5,0E-6 mbar.
Es wird überprüft, ob sich an der Position im Array mit
den Meßdaten der gesuchte Wert bereits befindet, ob
also eine Messung bereits erfolgreich war und der Wert
ungleich -1 ist.
Ist noch eine -1 vorhanden und liegen die gemessenen Drücke unter dem Schwellwert, kann die Anweisung zur Messung an das Massenspektrometer
verschickt werden.
Der zu messende Druckbereich wird gebildet aus
dem kleinsten Druck (= die größte Ziffer) minus
dem Index der FOR-Schleife.
Alle nötigen Daten werden an die Funktion „Ask for
Single Peak.vi“ weitergegeben. Ergebnis dieses Programms ist ein Command Acknowledgement.
Der Ausgang der FOR-Schleife ist auf „enable indexing“ geschaltet.
Es werden erst alle Massenspektrometer, die in der Konfiguration
vorhanden sind, angesprochen und deren Command Acknowledgement abgewartet. Erst danach wird die FOR-Schleife verlassen.
Sollte eine der Bedingungen für diese Übermittlung nicht erfüllt
worden sein, wird ein „N“ ausgegeben. Dies bedeutet: not acknowledged. Dieses Zeichen wird auch vom Massenspektrometer zurückgemeldet, wenn aus irgendwelchen Gründen ein Fehler aufgetreten
ist und die Messung nicht begonnen werden konnte.
Das Array mit den Command Acknowledgement wird in der folgenden WHILE-Schleife benutzt.
Innerhalb der WHILE-Schleife wird eine FORSchleife geöffnet, die so oft durchlaufen wird, wie
Konfigurationen von Massenspektrometer vorhanden sind.
Die Port-Nummer jeder einzelnen Konfiguration
wird selektiert.
AutoScan Masses.vi - Seite 32
An jedes dieser Massenspektrometer wird das Kommando „o“ geschickt und damit gefragt, ob die Daten bereits zur Verfügung stehen.
Ergebnis einer Nachfrage ist das Command Acknowledgement zusammen mit einer eins oder einer null.
Demnach bedeutet „A0“, daß die Daten noch nicht verfügbar sind
und „A1“, daß die Messung beendet wurde und die Daten gelesen
werden können.
Der Ausgang der FOR-Schleife wurde mit „enable indexing“ deklariert, so daß aus den Antworten der Massenspektrometer ein Array
entsteht.
In der WHILE-Schleife wird mit der „Number
of char in a String-Array.vi“ zum einen die
Anzahl der „A1“ in den Antworten der Massenspektrometer festgestellt, zum anderen
auch die Anzahl der Command Acknowledgements die aus der Übermittlung der Anweisung zum Messen des Partialdrucks entstanden waren.
Diese WHILE-Schleife wird erst dann beendet, wenn die Anzahl der beendeten Messung
mindestens ebenso groß ist, wie die Anzahl
der Anfragen danach.
Da diese Messung unter Umständen einige
Zeit in Anspruch nehmen kann, wurde eine
Wartefunktion eingeführt, um Paralleloperationen zu ermöglichen.
Nach Beendigung dieser Schleife können alle Meßwerte abgefragt
werden. Hierzu wird eine FOR-Schleife geöffnet, die so oft durchlaufen wird, wie es Konfigurationen von Massenspektrometern gibt.
AutoScan Masses.vi - Seite 33
Das Array mit den vorhandenen oder noch
nicht vorhandenen Meßergebnissen wird auf
ein Shift-Register geführt.
Mit der „Array Subset“-Anweisung wird das
bearbeitete Element selektiert.
Zum Lesen des vorhandenen Meßwertes und
der evtl. nötigen Korrektur des bisherigen
Meßergebnisses wird die Funktion „Replace
new Scan Data.vi“ benutzt. Ein- und Ausgang dieses Programms sind allerdings Arrays, weshalb das betrachtete Element noch
in ein Array umgeformt und am Ende wieder
in ein Element umgewandelt werden muß.
Dieser Wert wird in das alte Array eingesetzt. Der nötige Port wird aus dem Array der
Konfiguration über den Index der FORSchleife gewonnen.
Mit diesem Wert wird der Multiplier und das Filament des betreffenden Massenspektrometers ausgeschaltet.
Der Name für das Speichern der Meßwerte setzt sich aus einem „M“
für „Masses“ und der Uhrzeit der Messung in Sekunden zusammen.
Die Zeit beim Beginn aller
Messungen wird gemessen.
Der Name wird wie oben beschrieben
zusammengesetzt und die Daten in
einer neuen Datei im Statistikverzeichnis gespeichert.
Zusätzlich wird ein Eintrag in der Datei „Statistics.inf“ vorgenommen. Diese Datei ermöglicht später die leichter
Zusammenstellung der Datensätze.
Der Merker für die Belegung der Massenspektrometer in der „State.ini“-Datei wird
nach der Messung zurückgesetzt.
AutoScan Masses.vi - Seite 34
Programm:
Build AutoScan Array.vi
Eingabe:
Chart Names
Measurement (Old)
Scan.ini
Data
Time
Ausgabe:
Measurement (new)
Kurzbeschreibung:
Sortiervorgang für die AutoScan-Daten zur Anzeige
Programmbeschreibung: Alle Parameter wurden bereits in dem Programm „Make AutoScan
Data showable.vi“ zusammengestellt.
„Time“ bezeichnet den aktuell betrachteten Zeitpunkt, an dem Daten
zur Verfügung stehen. In der „Scan.ini“ muß also der Zeitpunkt herausgefunden werden, wann die dazugehörige Konfiguration stattgefunden hat. Dieser Vorgang muß vor der Datenaufnahme stattgefunden haben.
Aus dem Array der „Scan.ini“ wird die erste Spalte, in
der sich die Zeitpunkte der Änderungen dieser Datei befinden, durch die „Select Array-row.vi“-Anweisung selektiert und die Größe des entstandenen Arrays festgestellt.
In einer WHILE-Schleife wird jeder einzelne
Wert, vom letzten Eintrag beginnend, mit der
Konstanten „Time“ verglichen.
Die Schleife wird abgebrochen, sobald ein
Eintrag gefunden wurde, der kleiner als
„Time“ ist oder das Ende dieser Liste erreicht
wurde.
Der gefundene Wert (oder null) wird ausgegeben.
Mit Hilfe der Funktion „Select Array-line.vi“ wird
diese Konfiguration aus den anderen gelöst und die
sieben definierten Massen, die ab der Position eins
im Array verfügbar sind, selektiert.
Die Größe des Arrays, in dem die alten Datensätze vorhanden sind, wird festgestellt und die
Anzahl der Datensätze selektiert.
Eine FOR-Schleife wird geöffnet, die siebenmal (= Anzahl der vorhandenen Plätze) durchlaufen wird.
Build AutoScan Array.vi - Seite 35
„Chart Names“ ist ein Array, in dem sich Ziffern der Massen befinden, die dargestellt werden sollen.
Mit Hilfe des Index der FOR-Schleife werden die Massen nacheinander selektiert. In der Anweisung „Number of search number in an
Array.vi“ wird herausgefunden, ob sich die selektierte Masse in der
zuvor herausgefundenen Konfiguration befindet.
Ist dies der Fall, die Anzahl also größer als null, wird aus dem Array
„Data“, das die Meßwerte des aktuell betrachteten Datensatzes enthält, die entsprechende Position, die ebenfalls durch „Number of search number in an Array.vi“ herausgefunden wurde, in dem Zielarray
eingesetzt.
Das Ergebnis wird über „Measurement (new)“ ausgegeben.
Build AutoScan Array.vi - Seite 36
Programm:
Change all Ports to active Ports.vi
Eingabe:
Position to erase
Port.all Input
Ausgabe:
Port.all Output
Kurzbeschreibung:
Löschen einer Konfiguration in der „Port.all“-Datei
Programmbeschreibung: Zum Löschen einer Konfiguration ist es erforderlich, die PortNummer, die angeschlossene Hardware und die abhängigen Druckmeßgeräte zu löschen. Die Konfigurationskennziffer bleibt für weitere Konfigurationen erhalten!
Aus dem eingegebenen Array „Port.all Input“ werden die entsprechenden Positionen durch 0 (null) ersetzt und damit gelöscht.
Die Konfiguration, in der gelöscht werden soll, ist durch „Position to
erase“ festgelegt.
Die Positionsnummern, der oben erwähnten zu löschenden Daten aus
einer Konfiguration, sind wie folgt definiert:
1
2
4
6
Port-Nummer
Hardware
Port-Nummer Drucksensor 1
Port-Nummer Drucksensor 2
Das Ergebnis wird durch „Port.all Output“ ausgegeben.
Change all Ports to active Ports.vi - Seite 37
Programm:
Command; Axx.vi
Eingabe:
Axx
Settings
Caller
Ausgabe:
Senden der geforderten AutoScan-Daten zum Caller (Get AutoScan)
Kurzbeschreibung:
Axx empfangen. Durchführung des Zusammenstellens der AutoScan-Daten für einen anderen Rechner und Senden.
Komplement:
AutoScan Data- String to Data.vi
Programmbeschreibung: Die Anweisung Axx wird an den Rechner
(Zielrechner = Destination) geschickt, von
dem die Daten gesammelt werden sollen. Der
Source- Rechner hat bereits aus der Konfiguration des DestinationRechners die Port-Nummer extrahiert, von der die AutoScan-Daten
gewünscht werden. Diese Nummer wird in xx übertragen.
Mit „Settings“ wird der zu betrachtende Bereich
(drei Stunden, 24 Stunden, drei oder sieben Tage)
übermittelt.
Die Funktion „Show AutoScan Data II.vi) stellt alle nötigen
Daten für den gewählten Zeitbereich zusammen.
Die Daten müssen noch in einen ASCII-String umgewandelt werden,
um sie an den Source-Rechner zurückzuschicken. Hierzu wurde folgende Reihenfolge gewählt:
• from to (Datum)
• Y-Scale
• X-Scale Style
• X-Scale Grid names
• Plot names
• Data
• Resolution
• Actual time
• Changes (in der AutoScan-Konfiguration)
Die Trennung der einzelnen Daten erfolgt durch das Einsetzen eines
Tabulators. Dieses vereinfacht die Rückgewinnung der Daten (siehe
hierzu: Programmbeschreibung „AutoScan Data- String to Data.vi“)
„From to“ liegt bereits als String vor. Die Umwandlung beginnt bei
den Eckwerten der Y-Achse.
Command; Axx.vi - Seite 38
Es handelt sich hierbei
um zwei Werten in einem Array (Minimum
und Maximum).
Zur Umwandlung wird eine FOR-Schleife benutzt. Jeweils ein Wert
wird in das Format einer sechsstelligen Exponentialzahl mit einer
Nachkommastelle umgewandelt. Vor jede Zahl wird ein TAB zur
Trennung eingefügt.
Ebenso wird mit „X-Scale Style“ verfahren. Hier liegen drei Werte
zur Beschreibung vor.
Eine Besonderheit wird bei der Umwandlung der „X-Scale grid names“ deutlich:
Es können, laut Definition, maximal sieben Massen automatisch
überwacht werden. Werden aber nicht alle Plätze belegt, ist es auch
nicht nötig die Informationen der leeren Stellen zu übertragen.
Es ergibt sich für das Array der „X-Scale Grid names“ eine variable
Größe mit dem Maximalwert sieben. Bei den vorher betrachteten
Werten („Y-Scale“ und „X-Scale Style“) war die Anzahl festgelegt.
Um dem Empfänger die Auswertung der Information zu erleichtern,
wird vor der eigentlichen Information deren Größe, also die Anzahl
der „X-Scale Grid names“, eingesetzt:
Erst danach wird das Array mit den Namen in einen einzelnen String
mit der Trennung durch die Tabulatoren hinzugefügt.
Der Rest der Informationen wird durch die oben beschriebenen Schemata durchgeführt.
Alle Strings werden zusammengefügt und dem
„Caller“, also dem Source-Rechner zurückgeschickt.
Command; Axx.vi - Seite 39
Programm:
Command; GFS.vi
Eingabe:
Settings
Caller
Ausgabe:
Senden der geforderten Scan-Daten zum Caller (Get Full Scan)
Kurzbeschreibung:
Durchführung eines Scans in der angegebenen Druckdekade und
Senden des Ergebnisses.
Komplement:
-
Programmbeschreibung: „Settings“ enthält die zur Messung nötigen Optionen als String. Diese werden in dem Unterprogramm „Full Span- String to Command.vi“ in Zahlenwerte umgewandelt.
Als Ergebnis kommen folgende Parameter heraus:
•
•
•
•
•
•
•
•
•
Multiplier
Port Number
Accuracy
Testversion (wird nicht benötigt)
First Mass
Last Mass
Pressure (low)
Pressure (high)
Section
Diese Parameter werden dem Programm zur Messung eines Scans
„Show full Scan.vi“ zugeführt. Dies bedeutet: Wird von einem
anderen Rechner aus auf dem Zielrechner das Messen eines
kompletten Scans veranlaßt, erscheint auf dem Bildschirm des
Zielrechners die Oberfläche des Scan-Programms. Auf diese Art und
Weise läßt sich bei dieser sehr zeitaufwendigen Messung der Fortschritt sowohl auf dem Ziel-, als auch auf dem Caller-Rechner verfolgen.
Wichtig: „Send“ und „Run“ sind im Programm „Show full Scan.vi“
auf true gesetzt. Hiermit wird diese Messung beim Aufruf direkt gestartet.
Das Ergebnis der Messung wird in dem Unterprogramm „Full
Span- data to String.vi“ in einen sendefähigen String umgewandelt.
Command; GFS.vi - Seite 40
Dieser String wird mit der Anweisung „sfs“ (= send full
Scan) an den aufrufenden Rechner, den Caller, zurückgeschickt.
Durch das Senden in Form einer eigenständigen Anweisung wird nur der Zielrechner mit der Durchführung der Messung
beaufschlagt. Auf dem Caller kann das Programm nach dem Aufruf
verlassen und andere Programmteile aufgerufen werden. Sobald das
Ergebnis gesendet wird, öffnet sich das Fenster mit der Oberfläche
für den vollen Scan wieder und das Ergebnis wird angezeigt.
Mit dem Ergebnis werden die getroffenen Einstellungen noch einmal
übermittelt. Die Trennung zwischen Parametern und Daten erfolgt
durch ein (Carriage Return).
Command; GFS.vi - Seite 41
Programm:
Command; GPA.vi
Eingabe:
Caller
Ausgabe:
Senden der geforderten „Port.all“-Datei zum Caller (Get Port.all)
Kurzbeschreibung:
Die Datei „Port.all“ aus der Sektion des Zielrechners wird in einen
String umgewandelt und verschickt.
Komplement:
-
Programmbeschreibung: Die Datei „Port.all“, die die gesamten
Konfigurationen aus der Sektion des Zielrechners enthält, wird geöffnet.
Eine Konfiguration enthält acht Einstellungen, also acht Werte, die
jedoch bei nicht allen Meßgeräten genutzt werden.
Die Anzahl der Konfigurationen ist in den Sektionen unterschiedlich.
Die Anzahl wird mit der Funktion „Array Size“ festgestellt und die
Zahl in einen String umgewandelt.
Um die spätere
Decodierung zu
erleichtern, wird
diese
Anzahl
allen Konfigurationen
im
String vorangestellt.
Es werden nun zwei verschachtelte FOR-Schleifen durchlaufen, in
denen jedes Element der Konfigurationen in eine zweistellige Dezimalzahl umgewandelt wird.
Die Ergebnisse werden in einem String zusammengefaßt.
Dieser String wird dann an den Caller geschickt.
Command; GPA.vi - Seite 42
Programm:
Command; GPS.vi
Eingabe:
Caller
Ausgabe:
Senden der geforderten „Port.sys“-Datei zum Caller (Get Port.sys)
Kurzbeschreibung:
Die Datei „Port.sys“ aus der Sektion des Zielrechners wird in einen
String umgewandelt und verschickt.
Komplement:
-
Programmbeschreibung: Die Datei „Port.sys“, die die aktivierten
Konfigurationen aus der Sektion des Zielrechners enthält, wird geöffnet.
Eine Konfiguration enthält acht Einstellungen, also acht Werte, die
jedoch bei nicht allen Meßgeräten genutzt werden.
Die Anzahl der Konfigurationen ist in den Sektionen unterschiedlich.
Die Anzahl wird mit der Funktion „Array Size“ festgestellt und die
Zahl in einen String umgewandelt.
Um die spätere
Decodierung zu
erleichtern, wird
diese
Anzahl
allen Konfigurationen
im
String vorangestellt.
Es werden nun zwei verschachtelte FOR-Schleifen durchlaufen, in
denen jedes Element der Konfigurationen in eine zweistellige Dezimalzahl umgewandelt wird.
Die Ergebnisse werden in einem String zusammengefaßt.
Dieser String wird dann an den Caller geschickt.
Command; GPS.vi - Seite 43
Programm:
Command; Lxx.vi
Eingabe:
Lxx
Settings
Caller
Ausgabe:
Senden eines gemessenen Druckwertes zum Caller. (Leakcheck)
Kurzbeschreibung:
Durchführung einer Leakcheck-Messung an dem Rechner in einer
fremden Sektion
Programmbeschreibung: In dem Programm „Show Leak Check.vi“ ist es möglich, jedes Massenspektrometer im System anzusprechen. Diese Steuerung (der
Lecktest) ist von jedem Rechner aus durchführbar.
Die Anweisung Lxx wird an einen Rechner geschickt, mit dem ein
Lecktest durchgeführt werden soll, wenn das zu messende Massenspektrometer außerhalb der eigenen Sektion liegt. Die Buchstaben xx
stehen als Platzhalter für die Positionsnummer (01 - 38) im Bild.
Für den Lecktest werden die für die Lecksuche üblichen Parameter
als String in „Settings“ geliefert:
• Die erste Ziffer gibt die „Selection“ an, das ist die Bezeichnung,
ob in alle oder nur den aktivierten Sektoren gemessen werden soll.
• Die zweite Ziffer gibt die Accuracy (hier: Response) an.
• Mit den nächsten drei Ziffern wird die zu messende Masse definiert.
• Die letzten beiden, jeweils zwei Zahlen, grenzen den zu messenden Druckbereich ein.
Diese Ziffern werden aus dem String jeweils in Zahlen umgewandelt (hier am Beispiel der Masse: beginnend ab der Position
zwei werden drei ASCII-Zeichen vom String getrennt und diese in
eine Dezimalzahl konvertiert).
Diese Parameter werden der Funktion „Get leak check.vi“
zugeführt. In ihr findet die eigentliche Messung statt.
Der resultierende Meßwert wird in eine Exponentialzahl umgewandelt und mit derselben (kleingeschriebenen) Anweisung an den Caller zurückgeschickt.
Command; Lxx.vi - Seite 44
Programm:
Command; sfs.vi
Eingabe:
Settings
Ausgabe:
-
Kurzbeschreibung:
Empfangen eines Scans mit Anzeige (Send Full Scan)
Programmbeschreibung: Ein Rechner wurde mit der Anweisung „GFS“ (Get full Scan) beauftragt, einen kompletten Scan zu messen. Mit der Anweisung „sfs“
wird das Ergebnis an den Caller zurückgeschickt.
Der String „Settings“ enthält die Informationen über die Meßparameter und die Meßdaten selbst. Die beiden Datenpakete sind durch
ein (=Carriage Return) getrennt.
Die erste Untersuchung des Strings ist
also auf das CR.
Der String vor dem CR enthält die Parameter, sie werden durch die Funktion
„Full Scan- String to Command.vi“ in Ziffern umgesetzt. Die Konvertierung der Werte des Scans wird mit dem Unterprogramm „Full
scan-string to data.vi“ durchgeführt.
Die Start- und Endwerte für die Massen und die Drücke müssen nach
der Umsetzung noch, bedingt durch das Eingabeformat auf der
„Show full Scan.vi“- Oberfläche, in Arrays umgewandelt werden.
Die Parameter werden der Anzeigefunktion „Show
full
Scan.vi“ zugeführt. Die Eingabeparameter
„Run“, „Send?“ und „Answer?“ werden auf true gesetzt. Hierdurch wird erreicht, daß eine Messung gestartet wird, aber
tatsächlich keine neuen Werte gemessen werden. Stattdessen werden
die übertragenen Meßergebnisse zur Darstellung herangezogen.
Besonderheit:
Der Caller wartet nicht, wie bei den anderen Anweisungen auf das
Meßergebnis. Es würden sonst bei beiden Rechnern, dem Caller und
dem messenden Rechner, durch die zeitaufwendige Messung unter
Umständen Routinemessungen unterbrochen werden.
Das Ergebnis wird mit dieser gesonderten Anweisung an dem Zielrechner verschickt. Auf diesem wird die Oberfläche für den „Full
Scan“ geöffnet (falls sie zwischenzeitlich geschlossen wurde) und
das Ergebnis angezeigt.
Command; sfs.vi - Seite 45
Programm:
Command; sst.vi
Eingabe:
Data
Ausgabe:
-
Kurzbeschreibung:
Aktivieren/Deaktivieren eines Sektors (send state)
Programmbeschreibung: Die neuen Zustandsdaten eines Sektors, die in einem Data-String
übermittelt wurden, werden in einer FOR-Schleife in Zahlen umgewandelt.
Mit der Funktion „String Subset“ wird
jeweils ein Character aus dem String
gelöst und mit der „Format & Strip“Anweisung in eine Ziffer umgewandelt.
Das Ergebnis ist null oder eins.
Der Ausgang der FOR-Schleife (rechts) wurde mit „enable indexing“
formatiert, so daß die Daten als Array vorliegen.
Parallel dazu wird die Zustandsdatei
„State.ini“ geöffnet und das alte Zustandsarray
gelöscht.
Am Schluß wird das neue Zustandsarray mit
den Daten, die sonst noch in dieser Datei vorhanden waren, zusammengeführt und diese neue Datei abgespeichert. Die alte Datei wird
hierbei überschrieben.
Command; sst.vi - Seite 46
Programm:
Communication (C - C) Receive.vi
Eingabe:
-
Ausgabe:
Command
Data
Caller
Kurzbeschreibung:
Empfangen einer Nachricht via TCP
Programmbeschreibung: Für die Rückmeldung an den Sender einer Nachricht (Caller) ist es
erforderlich, dessen Internet-Adresse zu kennen.
In der Testversion (Schalter Testversion = true)
wird ein Array erzeugt, das als Konstanten nur
die Internet-Adresse des Rechners GEO2 enthält.
Ist „Testversion“ ausgeschaltet, werden die Adressen aus der Datei
„Names.sys“, in der sie im Setup abgelegt wurden, gelesen.
Hierzu wird der Pfad definiert und die Datei geöffnet.
Die ersten zwölf Zeichen dieser Datei enthalten die Namen der
Rechner. Diese werden abgeschnitten.
Von dem verbleibenden String werden die Internet-Adressen im
String-Format selektiert. Die einzelnen Adressen sind durch
<CR><LF> (= Carriage Return/ Line Feed) getrennt. Nach diesem
Steuerzeichen wird gesucht, der String davor, der eine Adresse enthält, ausgegeben und das Steuerzeichen gelöscht. Dieser Vorgang
wird so lange wiederholt, bis keine Steuerzeichen mehr gefunden
werden.
Der Ausgang der WHILE-Schleife wurde auf „enable indexing“ geschaltet, so daß die Internet-Adressen als Array vorliegen.
Die Adressen können so leicht voneinander getrennt werden und sind
als Elemente wählbar.
Communication (C - C) Receive.vi - Seite 47
Die Reihenfolge der Adressen stellt sich wie folgt dar:
•
•
•
•
Zentralhaus
Endhaus 1
Endhaus 2
alle weiteren: Steuerrechner außerhalb des Systems
Eine WHILE-Schleife wird geöffnet. Sie wird so lange wiederholt,
bis ein Timeout von 1,5s erreicht wurde, ein Fehler auftrat oder eine
gültige Nachricht empfangen wurde.
Mit der „Talk Internet Passive.vi“-Funktion wird nachgesehen, ob
ein Verbindungsaufbau von einem anderen Rechner versucht wird.
Der übermittelte String (wurde keine Verbindung aufgebaut, ein leerer String) wird überprüft, ob es sich
um den Beginn der Online-Anweisung „ONx“ handelt. Es wird untersucht, ob das „O“ im String enthalten ist. Alle weiteren Anweisungen werden nur durchgeführt, wenn
diese Bedingung zutrifft.
Das dritte Zeichen des Strings wird selektiert. Es handelt sich hierbei um die Sektionskennziffer des Callers. Diese Ziffer wird
über „Caller“ ausgegeben.
Wurde der Online-Befehl erkannt, wird mit der
selektierten Kennziffer des Callers ein Acknowledgement „A“ an den Caller zurückgeschickt.
Die Internet-Adresse wird dazu mit „Index Array“ aus dem Array geholt.
Eine
WHILE-Schleife
wird geöffnet.
Es wird auf eine Nachricht gewartet. Ist das Ergebnis der „Talk Internet
Passive.vi“-Funktion der
String „chsdlfük“, wird diese Schleife ebenfalls wiederholt. Dieser
String hat keinen praktischen Wert. Beim Testen der Funktion wurde
er eingesetzt und läßt sich seitdem nicht mehr löschen.
Bricht man diese Schleife dennoch ab, wird erneut ein Acknowledgement gesendet und dieser Programmteil wiederholt.
Ergebnis sollte eine gesendete Anweisung sein. Diese wird
über „Command“ ausgegeben.
Communication (C - C) Receive.vi - Seite 48
Es wird verglichen, ob es sich bei dem empfangenen String um
eine Doppelsendung handelt, die im TCP/IP-Protokoll auftreten kann.
Ist dies der Fall oder der String leer, wird auf eine neue OnlineAnweisung gewartet.
War die empfangene Anweisung gültig (ungleich einem leeren
String), wird noch gewartet, ob zusätzlich Daten übertragen werden.
In der WHILE-Schleife, die nach 2s abgebrochen wird, wird erneut
die „Talk Internet Passive.vi“-Funktion nach übermittelten Daten gefragt.
Die Schleife wird so lange wiederholt, bis ein gültiger String empfangen wurde, der über „Data“ ausgegeben wird, oder die genannte
Timeout-Grenze erreicht ist.
Communication (C - C) Receive.vi - Seite 49
Programm:
Communication (C - C) Send.vi
Eingabe:
Destination
Command
String to Send
Ausgabe:
Output
Error
Destination = Source
Kurzbeschreibung:
Senden einer Nachricht via TCP
Programmbeschreibung: Als Destination wird nur die Kennziffer der Sektion eingegeben (z.B.
null für Zentralhaus). Dieses Kennziffer muß in eine InternetAdresse umgewandelt werden.
In der Testversion (Schalter Testversion = true) wird
die Adresse als Konstante angenommen. Sie enthält die
Internet-Adresse des Rechners mit dem Namen GEO3. Der Vergleichsausgang „Destination = Source“, in dem überprüft wird, ob
die Nachricht an sich selbst geschickt werden soll, wird gleich false
gesetzt.
Ist „Testversion“ ausgeschaltet, werden die Adressen aus der Datei
„Names.sys“, in der sie im Setup abgelegt wurden, gelesen.
Hierzu wird der Pfad definiert und die Datei geöffnet.
Die ersten zwölf Zeichen dieser Datei enthalten die Namen der
Rechner. Diese werden abgeschnitten.
Von dem verbleibenden String werden die Internet-Adressen im
String-Format selektiert. Die einzelnen Adressen sind durch
<CR><LF> (= Carriage Return/Line Feed) getrennt. Nach diesem
Steuerzeichen wird gesucht, der String davor, der eine Adresse enthält, ausgegeben und das Steuerzeichen gelöscht. Dieser Vorgang
wird so lange wiederholt, bis keine Steuerzeichen mehr gefunden
werden.
Der Ausgang der WHILE-Schleife wurde auf „enable indexing“ geschaltet, so daß die Internet-Adressen als Array vorliegen.
Communication (C - C) Send.vi - Seite 50
Gleichzeitig wird die
„Vacuum.ini“ geöffnet.
In ihr ist die Kennziffer
der eigenen Sektion enthalten.
Diese Kennziffer wird in einen String umgewandelt.
Es folgt der Vergleich, ob die eigene Sektionsnummer gleich
der durch „Destination“ angegebenen Ziel-Sektionsnummer
entspricht.
Ist dies der Fall, wird keine Nachricht übermittelt
und der Ausgang „Destination = Source“ gleich
true gesetzt.
Im folgenden wird der normale Fall, der Zielrechner ist von dem eigenen Rechner, der nur noch als „Caller“ bezeichnet werden soll,
verschieden.
Mit Hilfe der „Index Array“-Anweisung wird die Internet-Adresse
aus dem Array selektiert.
Eine WHILE-Schleife wird geöffnet.
Mit Hilfe der Anweisung „ONx“ wird die
Verbindung zum Zielrechner eröffnet. Der
Buchstabe „x“ dient als Platzhalter. Er wird
durch die zuvor umgewandelte Sektionskennziffer der eigenen Sektion ersetzt. Somit erkennt der Zielrechner leicht die Quelle (den Sender) der Nachricht.
In einer weiteren WHILE-Schleife wird mit Hilfe der „Talk Internet
Passive.vi“-Funktion auf ein Acknowledgement des Zielrechners
gewartet. Diese Schleife wird so lange wiederholt, bis das Acknowledgement gefunden wurde, bis ein Fehler auftrat oder nach 5 s ein
Timeout ausgelöst wird.
Communication (C - C) Send.vi - Seite 51
Sollte die Schleife durch den Timeout beendet worden sein, wird
dieser gesamte Vorgang (Senden der Online-Anweisung („ONx“)
und das Warten auf eine Antwort noch zweimal wiederholt.
Die folgenden Anweisungen werden nur durchgeführt, wenn das
Acknowledgement und damit der Aufbau der Verbindung empfangen wurde.
Die zu sendende Anweisung wird mit einem
<CR><LF> (= Carriage Return/ Line Feed) versehen. Dies ist für den Zielrechner der Hinweis,
daß die Anweisung beendet ist. Die Anweisung
wird an den Zielrechner geschickt.
Das erste Zeichen der Anweisung wird überprüft.
Handelt es sich um einen Großbuchstaben (zwischen
A und Z), wird eine Antwort vom Zielrechner erwartet.
Es wird überprüft, ob zusätzlich Daten gesendet werden sollen (zum Beispiel Parameter zu
einer Messung).
Auch dieser String wird mit einem <CR><LF>
abgeschlossen und danach an den Zielrechner
gesendet.
Auch hier wird, wie oben
ein Acknowledgement vom
Zielrechner erwartet, daß
die Daten angekommen
sind.
Die Timeout-Grenze beträgt auch hier 5 s, danach
wird das Lesen abgebrochen und ein TimeoutFehler ausgegeben.
Der alte und der neue Fehler werden ausgegeben.
Communication (C - C) Send.vi - Seite 52
Wurde eine Antwort
erwartet, wird im
letzten Programmteil
darauf gewartet. Ein
Timeout wird nach
10s ausgelöst. Das
Ergebnis wird über
„Output“ ausgegeben.
Communication (C - C) Send.vi - Seite 53
Programm:
Communication.vi
Eingabe:
-
Ausgabe:
-
Kurzbeschreibung:
Messaging mit einem anderen Rechner über das Internet
Bedienung:
Dieses Tool dient der Nachrichtenübermittlung zwischen zwei Rechnern. Diese Nachrichten werden nur unidirektional verschickt, d.h.
der Empfänger erhält sie und kann nur den Erhalt bestätigen.
Über „Choose Destination“ kann entweder ein im System befindlicher Rechner (Central-Cluster, Endhouse 1 oder Endhouse 2) direkt
angesprochen werden, oder es muß ein Rechnername eingegeben
werden, der über „Net Send“ (= DOS-Anweisung) verschickt werden
kann. Sollte sich der angesprochene Rechner nicht in der eigenen
Domäne befinden, so muß diese mit angegeben werden.
In das Feld Message kann nun eine beliebige Nachricht eingegeben
werden, die durch Drücken auf den „Send“-Button an das gewählte
Ziel verschickt wird.
Quit beendet dieses Programm.
Communication.vi - Seite 54
Programmbeschreibung: Vor dem eigentlichen Programm werden einige Einstellungen getroffen.
Bei der Auswahl „Choose Destination“ handelt es sich um einen Text Ring. In ihm werden
die nebenstehenden Möglichkeiten für die Nachrichtenübermittlung definiert.
Der Default-Wert wird auf „Central-Cluster“
gestellt.
Beim heutigen Stand ist noch keine e-mailVerwaltung vorgesehen. Wird dies trotzdem,
z.B. durch einen Fehler ausgewählt, erscheint
die rechts stehende Meldung.
Das Auswahlkriterium „e-mail“ wurde bereits aus der Liste entfernt
(s.o.). Die Voraussetzungen für die Nutzung (Eingabe einer InternetAdresse, Anzeige) sind bereits geschaffen.
1.) Net Send (allgemein)
Diese Anweisung ist aus der DOS-Oberfläche bekannt. Unter dem
Betriebssystem WindowsNT 4.0 heißt diese Anweisung vollständig:
net send ‘Name’ ‘/Domain:Name’ „Nachricht“
Es muß nur noch der Name des Zielrechners, bzw. die Domäne
mit dem Namen des Zielrechners eingegeben werden. Die Ausführung dieser DOS-Anweisung übernimmt die Funktion
„System Exec.vi“
Bis zur Beendigung dieses Programms durch den „Quit“-Button,
wird dieses in einer WHILE-Schleife fortgeführt.
Es hat sich gezeigt, daß die Ausführung der „System Exec.vi“Anweisung allein dazu führt, daß, trotz der Änderung von
„Mechanical Action“ des „Send“-Buttons, die zu sendende Nachricht
nicht nur einmal, sondern viele Male übertragen wird. Dies führt zur
absoluten Stillegung des Senderechners und des Zielrechners (Die
CPU-Leistung liegt bei 100%). Ein Abbruch ist nur schwer möglich.
Aus der Analogtechnik ist dieses Phänomen als „Kontaktprellen“
bekannt.
Es wurde daher in die Programmstruktur folgende Sicherheitsmaßnahme eingebaut:
Communication.vi - Seite 55
Zur Durchführung der „System Exec.vi“-Anweisung wird ein ShiftRegister mit einer Variable (Default = 0) eingeführt.
Die Entscheidung, ob eine Nachricht verschickt wird, oder nicht,
wird nicht nur von dem „Send“-Button und der gewählten Übertragungsart (bislang nur net send, kein e-mail) abhängig gemacht, sondern auch von dieser Shift-Variable.
Die Variable bleibt so lange 0, bis der „Send“-Button gedrückt wird. Passiert dies, wird die Variable inkrementiert. Dies geschieht so lange, bis der Button wieder losgelassen wird.
Ist diese Variable gleich eins (der Button wurde gerade
erst gedrückt), wird die „System Exec.vi“-Anweisung
ausgeführt und die Variable gleichzeitig auf Zwei gesetzt.
Durch diese Maßnahme wird verhindert, daß die „net
send“-Anweisung ein zweites Mal verschickt wird.
Wurde mit „Choose Destination“ die allgemeine
„net send“-Anweisung gewählt, wird ein weiteres
Eingabefeld („Enter Computer Name“) angezeigt.
Der eingegebene Name wird als „Name“ in die
„net send“-Anweisung eingesetzt.
Das Eingabefeld „Enter Internet Adress“ bleibt
weiter unsichtbar.
Die weitere Bearbeitung erfolgt nach der oben
beschriebenen Prozedur.
2.) Net Send (Systemintern)
Für den systeminternen Gebrauch (innerhalb GEO600) wird die
„Direktwahl“ eines Rechners ermöglicht, indem die Sektionen zur
Auswahl gestellt werden.
In der Konfiguration wurde die Namen der Rechner in den einzelnen
Sektionen eingegeben und in der Datei „Names.sys“ gespeichert.
Durch das Unterprogramm „Get Names of Section Computers.vi“ liegen diese Namen als String-Array vor.
Communication.vi - Seite 56
Die ersten drei Bedingungen dieser CASE-Struktur sind für die drei
Sektionen innerhalb des Systems freigehalten (Central-Cluster, Endhouse1 und Endhouse 2). Die vierte CASE-Anweisung gilt dem sogenanntem „Manager“, ein außenstehender Rechner, der Verbindung
zum System hat und dort eingreifen kann, der aber nicht in der Nähe
des Systems positioniert sein muß und der keine Aufgaben an der
Funktion des Systems hat.
Wird eine dieser Sektionen ausgewählt (hier: Endhouse 2), bleiben die Eingabefelder für einen
Rechnernamen und eine InternetAdresse unsichtbar.
Die Nummer der gewählten Sektion ist analog der Position im Array
für die Computernamen zur
Adressierung. Der entsprechende
Name wird mit Hilfe der „Index
Array“-Anweisung selektiert.
3.) E-mail
Die Funktion e-mail ist bis zum heutigen Stand noch nicht etabliert.
Vorbereitet ist allerdings die letzte (fünfte) CASE-Struktur.
Ein Eingabefeld erscheint, das zur Eingabe der
Internet-Adresse auffordert.
Communication.vi - Seite 57
Programm:
Convert Config-data <-> file.vi
Eingabe:
Convert/Deconvert (false = from File)
2D-Array (original)
2D-Array (rebuild)
Ausgabe:
2D-Array (modified)
Kurzbeschreibung:
Konvertieren der Daten der Anschlußkonfiguration. Austausch der
Positionsnummern der TPG300 für die Abhängigen Massenspektrometer durch die entsprechenden COM-Adressen und Locations und
umgekehrt.
Programmbeschreibung: Über die Schalter „Convert/Deconvert“ wird die jeweilige Funktion
gewählt. Die Defaulteinstellung ist die Dekonvertierung (=false).
Dies bedeutet, die Daten werden von einem gelesenen File so aufbereitet, daß sie für den Leser verständlich zur Anzeige gebracht werden.
Die Dekonvertierung wird an dem „2D-Array (original) durchgeführt:
Die Größe des Arrays wird ermittelt.
Für jeden vorhandenen Datensatz werden (über den Index einer
FOR-Schleife) zunächst die Anschlußdaten des ersten Drucksensors
herausgefiltert. Diese finden sich im Datensatz auf Position 4 und 5
(4=Port number; 5= Location).
In einer weiteren FORSchleife wird nun der entsprechende Drucksensor im Array
gesucht. Sofern die Anschlußdaten übereinstimmen und die
Port number ungleich null
(=keine Belegung) ist, wird
der entsprechende Index zwischengespeichert.
Convert Config - data.vi - Seite 58
In der folgenden CASE-Anweisung wird,
wenn der Drucksensor gefunden wurde
(≠0), auf den Speicherplatz 4 des Datensatzes die Positionsnummer des Drucksensors geschrieben. Die entsprechende Ziffer
befindet sich auf Position 0 des Sensordatensatzes.
Derselbe Vorgang wird für den zweiten Drucksensor wiederholt.
Hierzu wird Platz 5 des aktuellen Datensatzes überschrieben.
Am Schluß werden noch die nun nicht mehr
genutzten Speicherplätze 6 und 7 gelöscht.
Die Konvertierung funktioniert genau umgekehrt. Hierzu wird das
„2D-Array (rebuild)“ benutzt:
Die Größe des Arrays wird ermittelt.
Da für die Darstellung der Port-Nummer und der dazugehörigen Location je Drucksensor zwei Speicherplätze genutzt werden, durch
den Anzeigemodus nur einer je Sensor reserviert wurde, muß die Positionsnummer (Row 5) in die nächste Spalte (Row 6) kopiert werden.
Aus Speicherplatz 4 (Spalte/Row 4) wird die Positionsnummer des
ersten Drucksensors entnommen und in Row 4 und 5 die PortNummer (aus Row 1) und die dazugehörige Location (aus Row 3)
eingefügt.
Diese Prozedur wird mit dem zweiten Drucksensor auf den Speicherplätzen 6 und 7 wiederholt.
Convert Config - data.vi - Seite 59
Programm:
Convert Section number.vi
Eingabe:
Section Input
Ausgabe:
Section Output
Kurzbeschreibung:
Konvertieren der Sektionsnummer in einen String „Endhouse1“,
„Endhouse2“ oder „Central-Cluster“
Programmbeschreibung: Die Eingabe der Sektionsnummer wird über eine CASE-Anweisung
in den entsprechenden String umgewandelt.
0 - Central-Cluster
1 - Endhouse 1
2 - Endhouse 2
Convert section number.vi - Seite 60
Programm:
Convert time.vi
Eingabe:
Time in
Ausgabe:
Time String
Kurzbeschreibung:
Umwandlung der Zeit in Sekunden in Datum und Uhrzeit
Programmbeschreibung: Die eingegebene Zeit, die in Sekunden
vorliegt und definiert ist nach der Universalzeit ab dem 1. Januar 1904 12:00 am,
wird mit der Funktion „Seconds to Date/
Time“ umgewandelt.
Von dem entstandenen Cluster sind die Angaben Tag, Monat, Stunde
und Minute nötig. Diese werden durch „Unbundle by Name“ aufgeteilt.
Jedes dieser Elemente wird in einen String umgeformt.
Zwischen dem Tag und dem Monat wird ein Punkt (.), zwischen
Monat und Stunde ein Leerzeichen ( ) und zwischen Stunde und Minute ein Doppelpunkt (:) eingefügt.
Der entstandene String mit dem Format „DD.MM HH:MM“ wird
über „Time String“ ausgegeben.
Convert time.vi - Seite 61
Programm:
Format AutoScan Data.vi
Eingabe:
Input time
Input mass
Format
Range
Ausgabe:
Formatted Array of one mass
Kurzbeschreibung:
Formatierung von periodisch aufgenommenen AutoScan-Daten. Lineare Interpolation der Zwischenwerte.
Programmbeschreibung: Das Array „Format“ enthält alle Zeitpunkte, die in der späteren Grafik dargestellt werden sollen. „Range“ bezeichnet hierbei die halbe
Differenz zwischen zwei Zeitpunkten. Dies dient der Zuordnung einzelner Zeiten.
„Input time“ enthält die zuzuordnenden Meßzeitpunkte und „Input
Mass“ die dazugehörigen Meßwerte.
Zunächst werden die vorhandenen Meßwerte (Meßzeitpunkte) in
dem Array der Sollzeitpunkte verteilt. Dies wird mit einer FORSchleife erreicht.
Die Anzahl der Wiederholungen dieser Schleife
ist abhängig von der Anzahl der Sollzeitpunkte.
Der Index dieser FOR-Schleife wird genutzt, um ein Array zu erzeugen, das später die gesammelten Informationen über die betrachteten
Massen (incl. der interpolierten Werte) in dem gewählten Zeitraum
enthält. Dieses Array wird zunächst als leeres Array initialisiert und auf ein Shift-Register geführt.
Außer dem Index wird ein weiterer Merker benötigt, um die Indexierung der vorhandenen gemessenen Werte zu ermöglichen. Dieser
wird ebenfalls durch ein Shift-Register realisiert. (Bild: siehe unten)
Das Einsetzen und demzufolge die spätere Interpolation erfolgt nur,
wenn zu dem aktuell betrachteten Meßzeitpunkt ein gültiger Meßwert vorhanden ist. Dies ist jeder Wert größer als Null. Ist dies nicht
der Fall, wird die Entscheidung, was in das entstehende Array einzusetzen ist, übersprungen und zum nächsten Wert übergegangen.
Format Autoscan Data.vi - Seite 62
Der halbe Abstand der Sollzeitpunkte (Range), der durch den Index
definierte aktuelle Zeitpunkt (fo) und der durch den Merker definierte nächste einzusetzende Meßzeitpunkt (ti) werden einer
„Formular Node“ zugeführt.
Hier erfolgt die Abfrage, ob der betrachtet Meßzeitpunkt ti innerhalb des
Zeitintervalls des definierten Zeitpunktes fo ± ra liegt.
Ist dies der Fall, wird der dazugehörige
Meßwert aus „Input Mass“ in das Ergebnisarray eingesetzt.
Liegt ti außerhalb dieses Bereichs
(s.o.), erfolgt zusätzlich eine Überprüfung, ob der Indexzeitpunkt noch kleiner ist, als der betrachtete Zeitpunkt aus dem Meßarray. Solange dies
der Fall ist, wird derselbe Meßzeitpunkt betrachtet. Durch die Anfangsbedingungen ist es möglich, das ti kleiner
ist, als fo. In diesem wird zum nächsten Meßzeitpunkt ti+1 weitergeschaltet.
Vorteil dieser Methode ist, daß, egal wie groß oder klein die Anzahl
(Auflösung) im Zielarray gewählt wird, ein Meßzeitpunkt immer nur
genau einmal zugeordnet wird.
Nach der Verteilung der Meßwerte müssen die fehlenden Zwischenwerte ermittelt werden. Die geschieht durch lineare Interpolation in
der nächsten FOR-Schleife.
Format Autoscan Data.vi - Seite 63
Die Anzahl der Durchläufe dieser FOR-Schleife ist analog zu der der
letzten.
Zunächst erfolgt die Abfrage, ob der betrachtete Wert n gleich Null
ist. Trifft dies zu, wird der Wert n-1 als Punkt Y0 der linearen Interpolation zugeführt. Weiteres Element wird die betrachtete Position,
X. Aus ihr leitet sich X0 ab.
In der WHILE-Schleife wird der nächste gültige Wert gesucht. Die
Schleife wird so lange durchlaufen, bis ein Y-Wert ungleich Null gefunden wird. Dieser Wert wird zu Y1 und die Position zu X1.
Mit Hilfe der Funktion „Linear Interpolation.vi“ wird der fehlende
Wert ersetzt.
War der betrachtete Wert ungleich Null, wird dieser als gültiger Wert
interpretiert. Es ist also keine Interpolation erforderlich. Es wird zum
nächsten Wert übergegangen.
Format Autoscan Data.vi - Seite 64
Programm:
Format Changes-Data-Array.vi
Eingabe:
Actual time
Span
Resolution
Changes Values
Ausgabe:
Changes Array
Kurzbeschreibung:
Für die AutoScan-Darstellung: Anzeige der Änderungen in der AutoScan-Konfiguration.
Programmbeschreibung: Die Zahl -1 ist ein Indikator, ob überhaupt Änderungen in der Konfiguration
vorgenommen wurden. Ist sie nicht im
Array vorhanden, wird als „Changes
Array“ ein Nullarray (kein Inhalt) ausgegeben.
Aus „Actual Time“ und dem „Span“
wird der Zeitraum bestimmt, der
betrachtet werden soll. „Span“ dividiert durch die „Resolution“ ergibt
die Anzahl der Zeiteinheiten in dem
Zeitraum.
Mit Hilfe der FOR-Schleife wird ein
Array erzeugt, das alle Zeitabschnitte im Zeitraum benennt. Weiterhin wird (oben) ein Array erzeugt, das später an den Zeitpunkten der Änderungen in der Konfiguration eine Markierung (=1) enthält.
Ein Merker wird erzeugt und die
Größe des Arrays der Änderungen in
die WHILE-Schleife eingegeben.
Diese Schleife wird so lange wiederholt, bis alle Änderungen eingetragen
wurden.
Format Changes-Data-Array.vi - Seite 65
Oben links: Durch den
Merker (erstes ShiftRegister) wird ein Element
aus
dem
„Changes-Array“ geholt (f0).
Mit Hilfe des Indexes
der
WHILE-Schleife
wird ein Element aus
dem Array mit den
Zeitabschnitten
betrachtet (ti).
Der Eingang „ra“ enthält als Rundungshilfe
den Wert eines halben
Zeitabschnitts.
Diese Werte werden in der „Formular Node“ gesammelt. Der Ausgang „OK“ ist gleich eins, wenn fo innerhalb ti ± ra liegt. Ansonsten
ist der Ausgang gleich Null.
Ist der Ausgang gleich eins, wird der Merker inkrementiert (Anm.:
Es wird jeder Wert des Changes Arrays nur einmal eingesetzt). Und
der Wert 1 im Ausgangsarray an der indexierten Stelle eingesetzt.
Eins wird bei der späteren Darstellung in einem „Waveform Chart“
eine senkrechte Linie darstellen und damit eine Änderung der Konfiguration kennzeichnen.
Ist „OK“ gleich null erfolgt keine Änderung.
Das erzeugte Array mit Nullen und Einsen wird als
ausgegeben.
Format Changes-Data-Array.vi - Seite 66
Programm:
Front Panel.vi
Eingabe:
-
Ausgabe:
-
Kurzbeschreibung:
Bedienoberfläche des GEO600-Programms
Bedienung:
Das „Front Panel.vi“ stellt den Hauptbildschirm des GEO600Programms dar. Von hier aus werden alle Funktionen dieses Programms erreicht, bzw. gesteuert.
Nach dem Aufruf des Programms erscheint folgendes Fenster:
Auf der linken Seite befinden sich die Bedienungen der Statistikfunktionen und die Taster, die einen manuellen Zugriff auf die Meßgeräte erlauben.
Auf der rechten Seite befinden sich die Hilfefunktionen und alle
Funktionen, die mit der Konfiguration des Systems in Verbindung
stehen.
Front Panel.vi - Seite 67
Die Funktionen im einzelnen:
„Get full Scan“
Ein vollständiger Scan soll an einem Massenspektrometer gemessen
werden.
Durch Drücken dieses Tasters wird ein neues Fenster geöffnet, in
dem die Bedienelemente für das gewünschte Massenspektrometer
vorhanden sind, die Angaben zum Massen- und Druckbereich können hier getätigt werden und die Meßgenauigkeit wird eingestellt.
„Show Pressure“
Ein Fenster mit einer Skizze der Sektion wird angezeigt. Hier können
die Druckmeßwerte der letzten Messung dargestellt werden oder eine
neue Messung wird gestartet.
Es werden nur die Drücke in der eigenen Sektion angezeigt!
„Show AutoScan Data“
Die Massen, die ständig überwacht werden sollten, können hier angezeigt werden.
Es sind verschiedene Zeiträume wählbar, über die die Daten angezeigt werden können. Die Partialdruckverläufe der Massen werden
bis zum jetzigen Zeitpunkt zusammengestellt und in einem Fenster
dargestellt. Das jeweilige Massenspektrometer, dessen Daten betrachtet werden sollen, muß vorher definiert werden.
„Leakcheck“
Zwei unterschiedliche Lecksuchfunktionen sind integriert: Zum einen der Helium-Lecktest, bei dem mit Hilfe eines Gases (Helium)
ein Leck gesucht wird. Hier werden die Drücke dieser Masse an zwei
verschiedenen Massenspektrometern angezeigt.
Zum zweiten kann der sogenannte Tunnelcheck durchgeführt werden. Hier wird in den Rohren eine wählbare Masse betrachtet und
aus deren Partialdrücken ein Polynom gebildet. Aus dem Maximum,
dessen Entfernung von Haupthaus und vom Endhaus angegeben wird
läßt sich auf ein vorhandenes Leck schließen.
„Pressure alert“
Ein-, bzw. Ausschalten der Überdruck-Warnanzeige.
Front Panel.vi - Seite 68
„Set AutoScan“
In diesem Fenster werden die Massen definiert, die ständig überwacht werden sollen. Außerdem wird der Druckbereich der Betrachtung festgelegt.
„Communication“
Unidirektionales Verschicken einer Nachricht (Message-Box) an einen anderen Rechner der Sektion.
„Configuration“
Hier wird die gesamte Konfiguration der Sektion festgelegt. Sämtliche Meßgeräte, die durch den aufrufenden Rechner an dessen
Schnittstellen verwaltet werden sollen, werden hier eingegeben.
Eine genaue Definition der Port-Adresse und des daran befindlichen
Meßgerätes, sowie eventuell die Abhängigkeit von anderen Meßgeräten ist erforderlich.
„Help“
Durch die Aktivierung/Deaktivierung der Hilfeanzeige können Hilfestellungen zu den meisten Bedienungen in den Programmen gegeben
werden, in denen die Eingaben nicht selbsterklärend sind.
„Activate“
Mit diesem Button erreicht man eine Oberfläche, in der die gesamten
Meßgeräte einzelner Sektoren aktiviert oder deaktiviert werden können. Das Ein- und Ausschalten ist vor allem während des Evakuierens des Systems notwendig, wenn z.B. eine Lecksuche durchgeführt
werden soll oder einzelne Teile des Systems noch nicht fertiggestellt
wurden.
„Quit“
Dieser Button sollte nach dem Start des Systems nicht mehr benutzt
werden, das Programm würde dadurch verlassen. Alle Messungen
würden beendet werden und es gäbe keine wirksame Überwachung
des Vakuumsystems.
Programmbeschreibung: Der Pfad zu der Datei „Vacuum.ini“ wird definiert und deren Inhalt geladen. Die eigene
Sektionsnummer wird gelesen und der Funktion „Convert Section Number.vi“ zugeführt.
Front Panel.vi - Seite 69
Der Name der Sektion wird bei den Programmen zur Konfiguration
der Sektion und der Anzeige der Drücke in der Sektion benötigt, da
die zur Sektion gehörigen Bilder und damit die Programme zur der
Sektion immer unterschiedlich sind.
Beim Aufruf der
Konfiguration wird
der Pfad in das
Unterverzeichnis
„\Sections“ erweitert. Das zu ladende
Programm
nennt
sich „Section“ und anschließend der Name der Sektion. Dieses Programm wird durch „Call Instrument.vi“ gestartet und ausgeführt.
Dasselbe Verfahren
wird bei der Anzeige des Druckes
verwendet. Der Beginn des Namens
ist hierbei „Show
pressure TPG300- ″.
Alle weiteren Programm werden mit CASE = true-Anweisungen
aufgerufen.
Durch
Anklicken
von
„Communication.vi“ geöffnet.
„Communication“
wird
das
„Get full Scan“ öffnet das Programm „Show full Scan.vi“ Hierbei
müssen noch die Eingänge „Send“ und „Run“ auf false gesetzt werden.
Das Drücken von „Leakcheck“ öffnet das „Leakcheck CheckCall.vi“, eine Abfrage, welches der beiden Lecksuchprogramme gestartet werden soll.
„Set AutoScan“ bewirkt die Ausführung von „Set AutoScan Masses.vi“.
„Activate“ startet das Programm „Activate Sections.vi“ und, wenn
die Daten darin geändert wurden, das Unterprogramm „Activate
Configuration.vi“.
„Show AutoScan Data“ öffnet das gleichnamige VI.
Das Anklicken der „Help“-Taste invertiert einen Merker, der auf ein
Shift-Register geführt wird. Hierdurch wird der Anweisung „Control
Front Panel.vi - Seite 70
Help Window“ die Anweisung für „Show“ gegeben. Dies funktioniert umgekehrt genauso.
Das Drücken des „Quit“-Buttons
hat zur Folge, daß eine Dialogbox geöffnet wird, in der nachgefragt wird, ob dieses Programm
tatsächlich verlassen werden soll.
Der Button „Pressure Alert“ dient als UND-Verknüpfung für die
Anzeige eines tatsächlichen Alarms. Ist dieser Button „OFF“,
wird jede Anzeige, egal ob sie aus der eigenen oder einer
fremden Sektion stammt, unterdrückt. Die Anzeige wird
durch das Programm „Alert.vi“ hervorgerufen.
Neben diesen Benutzerfunktionen, die nur aktiviert werden, wenn
der Benutzer sie anklickt, erfüllt das Programm auch automatische
Funktionen, wie zum Beispiel die Überwachung der AutoScanMassen oder die Drucküberwachung innerhalb der Sektion.
Die Druckmessung soll alle 30 s
durchgeführt werden. Hierzu wird
die aktuelle Zeit bestimmt und
überprüft, ob die Sekunden gleich
30 oder null sind.
Um nur eine Messung durchzuführen, wird dieser Wert mit einem
Merker (Shift-Register) verglichen.
Sind diese beiden Wert unterschiedlich, wird eine Messung der
Drücke veranlaßt.
Für die Messung sorgt das Programm „Get data from all pressure
sensors.vi“.
Das Ergebnis ist ein 2D-Array mit
den Meßwerten und den dazugehörigen Positionsnummern, an denen gemessen wurde.
Die Sekunden (30 oder null) werden an das Shift-Register weitergegeben, so daß keine zweite Messung erfolgt.
Die Meßergebnisse werden in einem Shift-Register
gesammelt. Es wird die Größe des Registers ermittelt. Übersteigt diese Größe 20 Einträge nicht
(siehe Bild oben), wird das neue Meßergebnis dem Array angehängt.
Front Panel.vi - Seite 71
Ist das Array allerdings größer oder
gleich 20 Einträge (= 10 Messungen),
wird das Array abgespeichert und das
Ergebnis der gerade durchgeführten
Messung als neuer Eingangswert für das
Shift-Register benutzt.
Der Ausgang „Pressure too high“ der „Get data from all pressure sensors.vi“ wird mit dem Schalter „Pressure Alert“ UNDverknüpft (s.o.).
Der Wert (true/ false) dieses Schalters ist ebenfalls Eingabewert für
den Parser („Parser.vi“), womit Alarmmeldungen aus anderen Sektionen blockiert werden.
Mit der Anweisung „Communication (C - C)
Receive.vi“ wird ständig überprüft, ob von einem anderen Rechner ein Verbindungsaufbau
gewünscht wird.
Trifft dies zu, und wurde eine Anweisung übermittelt, muß diese
noch übersetzt und ausgeführt werden. Diese Funktion übernimmt
der Parser.
Die letzte Funktion, die automatisch ausgeführt wird, ist die Messung der Partialdrücke der AutoScan-Massen.
Es wird eine Accuracy von drei angenommen,
die für den Normalfall ausreichend ist. Die
Messung wird durch die Funktion „PowerSwitch for AutoScan Masses.vi“ eingeleitet.
Zum Zeitpunkt der Erstellung dieser Dokumentation war noch kein
zeitlicher Abstand, in dem die Messungen stattfinden sollen, bekannt. Dies muß noch, wie bei der Druckmessung, nachgetragen
werden.
Front Panel.vi - Seite 72
Programm:
Full scan- Command to String.vi
Eingabe:
Multiplier
Port Number
Accuracy
First Mass
Last Mass
Pressure (Low)
Pressure (High)
Section
Testversion
Ausgabe:
String Output
Komplement:
Full Scan- String to Command.vi
Kurzbeschreibung:
Umwandlung der „GFS“-Parameter in einen String
Programmbeschreibung: Die Eingabeparameter werden nacheinander durch die „Format &
Append“-Anweisung in Strings umgewandelt.
Folgende Formate werden für die Umwandlung verwendet:
•
•
•
•
•
•
•
•
•
Multiplier
Port Number
Accuracy
First Mass
Last Mass
Pressure (Low)
Pressure (High)
Section
Testversion
1d
02d
1d
03d
03d
02d
02d
1d
0/1
d bedeutet dezimale Darstellung. 1, 2 oder 3 gibt die Anzahl der reservierten Stellen an. Die Null an Anfang kennzeichnet, daß alle
nicht benötigten Stellen mit Null aufgefüllt werden sollen. Dies erleichtert die De-Konvertierung.
Full Scan- Command to String.vi - Seite 73
Programm:
Full scan- Data to String.vi
Eingabe:
Scan
Cancelled
Ausgabe:
String Output
Komplement:
Full Scan- String to Data.vi
Kurzbeschreibung:
Umwandlung eines gemessenen Scans in einen String
Programmbeschreibung: Es wird zunächst die
Größe des Arrays festgestellt. Der zu erzeugende String wird in
einem Shift-Register
zwischengespeichert.
Der Eingangswert ist
ein leerer String.
Durch den Index der FOR-Schleife wird jedes Element des Arrays
mit Hilfe der „Format & Append“-Anweisung in einen String mit
dem Format 8.1e (Exponentialzahl, sechs Stellen, eine Nachkommastelle) umgewandelt.
Als Eingangsstring wird der Inhalt des Shift-Registers vorangestellt.
Zum Schluß wird dem String noch
die Information über einen evtl.
vorhandenen Abbruch der Messung angehängt und das Ergebnis
über „String Output“ ausgegeben.
Full Scan- Data to String.vi - Seite 74
Programm:
Full scan- String to Command.vi
Eingabe:
String Input
Ausgabe:
Multiplier
Port Number
Accuracy
First Mass
Last Mass
Pressure (Low)
Pressure (High)
Section
Testversion
Komplement:
Full Scan- Command to String.vi
Kurzbeschreibung:
Umwandlung eines gesendeten Strings in eine Full Scan-Anweisung
Programmbeschreibung: Die einzelnen Parameter werden aus dem String entsprechend seiner
vorherigen Formatierung mit der „Format & Strip“-Anweisung zurückgewonnen.
Beispiel Multiplier:
Für
die
MultiplierInformation wird eine
Stelle an Anfang des String reserviert.
Aus dem String wird ab Position 0 (Null) ein Element betrachtet.
Dieser Teilstring wird in eine einstellige Dezimalzahl umgewandelt.
Beispiel
Pressure
(High):
Für die Information
wurden zwei Stellen zur Verfügung gestellt.
Aus dem String werden ab Position 12 (diese Position hat sich für
diese Information aus den vorherigen Daten ergeben) zwei Zeichen
gelöst und diese in eine zweistellige Dezimalzahl umgewandelt.
Die Bearbeitung des Strings erfolgt parallel. Alle Daten werden also
gleichzeitig umgewandelt. Eine einzelne Transformation, also alle
Werte nacheinander, wäre z.B. durch jeweilige Kürzung des String
ebenfalls möglich gewesen. Die gewählte Lösung ist allerdings
schneller.
Full Scan- String to Command.vi - Seite 75
Programm:
Full Scan- String to Data.vi
Eingabe:
Received String
Ausgabe:
Scan
Cancelled
Komplement:
Full Scan- Data to String.vi
Kurzbeschreibung:
Umwandlung eines gesendeten Strings in eine Full Scan-Datenarray
Programmbeschreibung: Der String wird aus
das Shift-Register
einer
WHILESchleife gegeben.
Die Schleife wird
so lange wiederholt, bis das Register leer ist.
Es werden, entsprechend dem Sendeformat, acht Zeichen am Anfang
entfernt. Der Rest des Strings wird wieder auf das Shift-Register gegeben. Die acht separierten Zeichen werden in eine Exponentialzahl
mit einer Nachkommastelle umgewandelt.
Es wurde „enable indexing“ aktiviert, so daß aus den umgewandelten
Zahlen ein Array entsteht.
Nach Beendigung der WHILE-Schleife
erfolgt die Bearbeitung des entstandenen
Arrays. Es wird die Größe des Arrays ermittelt und mit Hilfe der „Array Subset“Anweisung das letzte Element des Arrays
entfernt.
Das aus dem Scan jetzt entfernte, letzte
Element enthält die „Cancel“-Information. Ist diese ungleich Null,
wird der Indikator „Cancelled“ auf logisch Eins gesetzt → der Scan
ist unvollständig.
Full Scan- String to Data.vi - Seite 76
Programm:
Get all Quadrupoles (port_all).vi
Eingabe:
GPA (=false)/ GPS
Ausgabe:
Port Info out
Kurzbeschreibung:
Sammeln der vorhandenen Massenspektrometer-Anschlüsse aus allen Sektionen
Programmbeschreibung: Beim Aufruf dieses Unterprogramms wird die Datei Vacuum.ini geöffnet, um festzustellen,
in welcher Sektion man sich befindet.
Es existieren drei Sektionen, folglich müssen die PortKonfigurationen aus der eigenen geladen und aus den verbleibenden
beiden Sektionen per Internet abgerufen werden.
Es besteht die Wahl, entweder die
„Port.sys“ oder die „Port.all“
(=Default) zu laden.
Links unten wird entweder „GPS“ für die „Port.sys“Konfigurationen oder „GPA“ für die „Port.all“-Konfigurationen eingegeben.
Eine FOR-Schleife wird dreimal durchlaufen. Ist der Index bei der
eigenen Sektionen angekommen, wird die CASE-Anweisung „true“
bearbeitet.
Entspricht der Index nicht der eigenen Sektion, wird an den entsprechenden Rechner die Anweisung „GPA“ → Get Port.all geschickt.
Get all Quadrupoles (port_all).vi - Seite 77
Wurde keine Antwort erhalten, wird die Funktion „Communication
(C - C) Receive“ aufgerufen, um das Ergebnis des anderen Rechners
abzuwarten.
Die ersten Zeichen des empfangenen String enthalten die Information, wie viele Konfigurationen gesendet wurden. Diese Zeichen werden abgeschnitten, in eine Zahl umgewandelt und als Eingang für die
Wiederholungszahl einer FOR-Schleife genutzt.
Der empfangene
String wird auf
ein Shift-Register
geführt.
Die Konfigurationen werden in einem 2D-Array zusammengefaßt. Es
wird zunächst ein
leeres Array initialisiert.
Eine Konfiguration enthält acht Speicherplätze für die sie betreffenden Informationen. Die erste FOR-Schleife wird also acht mal wiederholt. Die Anzahl der möglichen Konfigurationen wird wie oben
beschrieben gewonnen.
Aus dem empfangenen String werden zwei Zeichen vom Anfang getrennt. Der Rest des Strings wird wieder auf das Shift-Register geführt.
Die beiden Zeichen werden in eine Dezimalzahl umgewandelt und in
das Zielarray eingesetzt.
Ergebnis ist die rekonstruierte „Port.all“-Datei eines angesprochenen
Rechners einer Sektion. Diese wird auf die eingangs erwähnte FORSchleife geführt, bei welcher „enable indexing“ aktiviert wurde.
Get all Quadrupoles (port_all).vi - Seite 78
Ist der Index gleich der Kennziffer der eigenen Sektion, wird die
Datei Port.all geladen und ebenfalls auf die äußerer FOR-Schleife
geführt.
Sind alle drei Konfigurationen vorhanden, ist das Ergebnis ein 3DArray. Aus diesem Array muß eine Konfiguration gewonnen werden,
die nur die Information enthält, an welcher Stelle sich ein Massenspektrometer befindet und in welcher Sektion es zu finden ist. Die
Position bezieht sich hierbei auf das Bild aus „Get Position-numbers
in other Sections.vi“.
Ein entsprechendes Array wird erzeugt:
Die erste FOR-Schleife wird dreimal (weil 3D-Array) durchlaufen.
Die maximale Größe einer Port.all-Datei liegt bei 18 Konfigurationen. Diese Zahl bestimmt die Anzahl der Durchläufe der zweiten
FOR-Schleife.
Get all Quadrupoles (port_all).vi - Seite 79
Mit Hilfe der „Array Subset“- und der „Reshape Array“-Funktion
wird eine Konfiguration selektiert.
An der Position 2 (= drittes Element) befindet sich die Information
über die angeschlossene Hardware. Die Bearbeitung wird nur fortgesetzt, wenn ein Massenspektrometer (Quadrupol) angeschlossen ist,
ansonsten wird zur nächsten Konfiguration gewechselt.
Die Zieladresse im Ergebnisarray ergibt sich aus der Positionsnummer des Massenspektrometers in der rechnereigenen Konfiguration und der entsprechenden
Positionsnummer im Bild (s.o.). Diese Daten
liegen als Liste für jede Sektion vor (hier: Sektion Central-Cluster).
Die eigentliche Position wird durch die Funktion „Number of
search number in an Array“ gefunden.
Die Port-Nummer des gefundenen Massenspektrometers wird in das
Ergebnisarray an Position 1 eingesetzt.
An Position 0 (Null) wird der Name der Sektion plaziert.
Ergebnis
ist
das
Array .
Get all Quadrupoles (port_all).vi - Seite 80
Programm:
Get data from all pressure sensors.vi
Eingabe:
keine
Ausgabe:
Measurement data
Position of measurement
Kurzbeschreibung:
„Caller“, um alle Drucksensoren auszulesen.
Programmbeschreibung: Die Datei „Port.sys“ wird geöffnet und die Größe bestimmt:
Zwei leere Array werden erzeugt, um die gemessenen Daten dort und
die Position in der Konfigurationsanzeige unterzubringen.
Eine FOR-Schleife wird so lange durchlaufen, bis alle Konfigurationen bearbeitet worden sind.
Auf der Position 2 ist jeweils die Hardwarekonfiguration gespeichert
(→ siehe Port.sys). Handelt es sich um eine Pirani- (3) oder eine
Penning-(4) Meßröhre, wird die Messung eingeleitet. Bei anderen
Hardwareeinstellungen wird an die aktuelle Position der Liste „Null“
weitergegeben.
Über die Position 1 wird der zugehörige Port definiert und über
Speicherplatz 3 die Location.
Get data from all pressure sensors.vi - Seite 81
Der Meßwert wird nun im Array ebenso ersetzt, wie die Location
und die Liste anschließend um ein Element vergrößert.
Nach Abschluß der Durchsuchung wird die
Liste um das letzte Element gekürzt: Es enthält nur eine null vom letzten Durchlauf!
Get data from all pressure sensors.vi - Seite 82
Programm:
Get Info about Quadrupole.vi
Eingabe:
Input Array
Index
Ausgabe:
Quadrupole informations
Kurzbeschreibung:
Zusammenstellung eines Arrays mit für ein Massenspektrometer
relevanten Daten:
• Port Nummer
• Multiplier (0 - ohne; 1 - mit)
• Drucksensor 1 (Port-Nummer)
• Drucksensor 1 (Location)
• Drucksensor 2 (Port-Nummer)
• Drucksensor 2 (Location)
Programmbeschreibung: Im „Input Array“ sind alle erforderlichen Informationen für alle angeschlossenen Massenspektrometer enthalten.
Welches Massenspektrometer ausgewählt ist, legt der „Index“ fest.
Alle Angaben werden aus der zweiten Dimension gezogen (siehe
hierzu auch: Port.sys) und in entsprechendem Format gebündelt.
Bei der Überprüfung der angeschlossenen Hardware wird gefragt, ob
diese gleich eins (Quadrupole ohne Multiplier) ist und entsprechend
Multiplier gleich eins (mit Multiplier) oder null (kein Multiplier vorhanden) gesetzt. Es ist durch den Aufruf dieses Programm ausgeschlossen, daß, außer diesen beiden, eine andere Belegung vorhanden
ist (z.B. Pirani-Meßröhre).
Das Ergebnis wird in dem 1D-Array „Quadrupole informations“
ausgegeben.
Get info about Quadrupole.vi - Seite 83
Programm:
Get Leak Check.vi
Eingabe:
Select all (=0)/activated
Selected Quadrupole
Mass
Response (Speed)
Range (low press 11)
Range (high press 7)
Ausgabe:
Pressure
Kurzbeschreibung:
Beschaffung/ Messen des Druckes einer Masse (Lecksuche)
Programmbeschreibung: Der Name der eigenen Sektion
wird durch öffnen der Datei Vacuum.ini festgestellt.
Je nachdem, ob der Eingang „Select all (=0)/
activated“ gleich null
oder eins ist, werden
entweder alle Massenspektrometer durch Benutzen der Konfiguration Port.all zur Messung
herangezogen
... oder es werden nur die nicht aktivierten
Sektoren genutzt.
Die Massenspektrometer werden selektiert und alle Informationen über deren
Konfiguration zusammengetragen.
Get leak check.vi - Seite 84
Falls erforderlich, wird das entstandene Array in die richtige
(definierte) Ausrichtung gebracht.
Die Pfade für die Zustandsdatei und die Datei Vacuum.ini werden definiert. Sie werden
für die spätere Verriegelung benötigt.
Die Messung erfolgt in einer WHILE-Schleife. Diese wird so lange
durchlaufen, bis das vorgegebene Meßgerät gefunden wurde. Dieses
wurde in der Darstellung von
„Get Position-numbers in other
Sections.vi“ ausgewählt.
Eingang der CASE-Anweisung
ist die aktuelle Sektionsnummer.
Die Positionsnummer werden
den Numerierungen in Tabellenform aus der Konfiguration zugeordnet (hier: Central-Cluster). Mit
„Selected Quadrupole“ wird die Konfigurationsnummer des gewählten Massenspektrometers bestimmt. Ist diese gleich 0 (Null)
wird in diesem Programm nichts mehr unternommen.
Die Sektionsnummer wird inkrementiert.
Ist sie größer als zwei (es gibt nur drei Sektionen), wird sie auf Null zurückgesetzt.
Die Bestimmung der oben beschriebenen
Konfigurationsnummer beginnt erneut.
Für die spätere Bearbeitung wird die Differenz aus Low- und
High-Press gebildet (=
Anzahl der zu durchlaufenden Meßdekaden)
Außerdem werden diese beiden Werte in Strings umgewandelt. (s.u.)
Erste CASE-Anweisung (Read with this Computer):
Es erfolgt die Abfrage, ob die gerade bearbeitete Sektion gleich der
Sektion ist, in der der aufrufende Rechner steht.
Get leak check.vi - Seite 85
Zweite CASE-Anweisung (messen/ Anweisung zum Messen):
True: Get pressure from an other Computer
Das gewählte Massenspektrometer wird nicht durch den Rechner
verwaltet, von dem aus die Messung gestartet wurde.
Über die „Send“-Funktion wird die Lxx-Anweisung an den Zielrechner geschickt. Dieser Rechner ist durch die aktuelle Sektionsnummer
definiert. xx sind hierbei Platzhalter für die Konfigurationsnummer.
Alle zur Messung nötigen Werte werden mit übertragen. Hierzu werden die Parameter in Strings umgewandelt (s.o.) und mit der Lxx-Anweisung verschickt. Das rechts stehende Datenformat wird für
die Parameter angegeben.
Wurde durch die „Send“-Funktion keine
Antwort bekommen, wird auf diese in einer WHILE-Schleife gewartet. Als Ergebnis der Übertragung wird erwartet, daß
das gesendete Kommando (Lxx) zurückgesendet wird.
Das Ergebnis wird um das Command Acknowledgement reduziert und anschließend
in eine Exponentialzahl umgewandelt.
False: Pressure OK?
Befindet sich das gewählte Massenspektrometer in der eigenen Sektion, kann vom eigenen Rechner aus die Messung gestartet werden.
Get leak check.vi - Seite 86
Durch die Tabelle (s.o.)
wurde die Konfigurationsnummer bestimmt.
Durch die Funktion „Select
Array Line.vi“ (unten
links) werden alle Konfigurationsnummern selektiert.
Mit der Funktion „Number
of search Numbers in an
Array.vi“ wird die Position
der relevanten Konfiguration bestimmt. Alle anderen nötigen Werte können
aus ihr abgeleitet werden.
Der Multiplier (Position 1) wird, je nachdem, ob er ein- oder ausgeschaltet wird, auf ein Drucklimit von 5,0E-7 mbar oder 5,0E-5 mbar
gesetzt.
Die Überprüfung des Druckes erfolgt mit den Positionen 2 und 3,
bzw. 4 und 5. In ihnen sind die Port-Nummern und die Anschlüsse
der Druckmeßgeräte angegeben.
Der Druck beider „Read TPG300 (pressure).vi“-Funktionen muß geringer als das Limit sein, sonst wird mit der Messung nicht fortgefahren.
Ist der Druckwert zu hoch, wird der Meßwert auf -1 gesetzt.
Dritte CASE-Anweisung (pressure too high/OK):
Kann der Druck gemessen werden, tritt eine WHILE-Schleife in
Kraft. Aufgrund der Verriegelung durch die AutoScan-Struktur kann
eine momentane Messung blockiert sein. Die Schleife wird so lange
durchlaufen, bis eine Messung möglich ist.
Aus der Datei State.ini wird in Zusammenhang mit der Sektionskennziffer der Zustand von AutoScan abgefragt, d.h.: Sind die Massenspektrometer gerade in Benutzung?
Hier zeigt sich der Vorteil der Lecksuche in einem deaktivierten
Sektor: Die Suche wird nicht durch die routinemäßigen Messungen
unterbrochen!
Get leak check.vi - Seite 87
Ist der AutoScan gerade in dieser
Sektion aktiv, wird 15 Sekunden
gewartet und die Frage nach dem
Zustand der Massenspektrometer
anschließend erneut gestartet.
Werden die Massenspektrometer
gerade nicht durch ein anderes
Programm (AutoScan) genutzt,
werden diese gesperrt.
An die Speicherstelle für den
Lecktest (3) wird eine Eins geschrieben. Will ein anderes Programm auf die Massenspektrometer zugreifen, wird dieses durch diese Verriegelung unterbunden.
Ist eine Messung möglich, wird eine FOR-Schleife aktiviert. Diese
wird so oft durchlaufen, wie Dekaden zur Untersuchung vereinbart
waren (s.o.: Subtraktion von range high und low).
Ein Array wird mit Null initialisiert (links). Es wird tatsächlich nur
ein Wert gemessen. Es kann aber die Funktion „Replace new Scan
data.vi“ genutzt werden, die als Eingabe als Meßdaten nur ein Array
erlaubt.
Von dem maximalen Wert (niedrigste Druckmeßdekade) wird jeweils der Index der FOR-Schleife abgezogen und zusammen mit den
Parametern Port Number, Multiplier, Response und Mass dem Unterprogramm „Ask for Leak Check.vi“ zugeführt.
Get leak check.vi - Seite 88
Ergebnis dieses Unterprogramms ist
das Command Acknowledgement. Ist
es ungleich „N“ für „not acknowledged“, wird in einer WHILE-Schleife
auf das Ergebnis der Messung gewartet.
Ist es nach Nachfrage (o) abrufbereit,
wird vom Massenspektrometer A1 gesendet, andernfalls A0.
Die Port Nummer wird der Funktion „Replace new Scan data.vi“ zusammen mit den alten Scan-Daten zugeführt. Ergebnis ist das aktuelle Meßergebnis.
Diese Meßergebnis muß noch aus dem Array selektiert werden, bevor es über Pressure ausgegeben wird.
Sind alle Meßdekaden durchlaufen, werden Filament und Multiplier ausgeschaltet (hier dargestellt:
Filament off).
Get leak check.vi - Seite 89
Programm:
Get Masses for AutoScan Masses.vi
Eingabe:
Last config
Older config
Ausgabe:
Masses to Show
All Set?
Kurzbeschreibung:
Zusammenstellung der Massen für die Darstellung von AutoScan
Programmbeschreibung: Eine FOR-Schleife wird gebildet. Entsprechend der sieben zu vergebenden Plätze für die Darstellung, wird diese Schleife siebenmal
durchlaufen.
Das Ergebnis
der
letzten
Konfiguration
wird auf ein
Shift-Register
gegeben
und
verändert.
Von der älteren Konfiguration wird das jeweils indexierte Element
entnommen. Mit der Funktion „Number of search numbers in an Array.vi“ wird festgestellt, ob das gewählte Element bereits in der vorhandenen Konfiguration enthalten ist.
Ist dies der Fall (Anzahl ≠ 0) und ist noch ein Platz in dem Zielarray
frei, wird das indexierte Element (die indexierte Masse) in das Array
aufgenommen.
Ist die alte Konfiguration komplett abgefragt
worden, wird das Ergebnis durch „Masses to
Show“ ausgegeben. „All Set?“ ist dann gleich
true, wenn alle Plätze belegt wurden.
Get Masses for AutoScan Masses.vi - Seite 90
Programm:
Get Names of Section Computers.vi
Eingabe:
-
Ausgabe:
Section Computer Names
Kurzbeschreibung:
Konvertierung der Rechnernamen aus der Datei „Names.sys“ in ein
String-Array
Programmbeschreibung: Die Datei „Names.sys“ wird geöffnet
und die enthaltenen Daten auf das ShiftRegister einer FOR-Schleife gegeben.
Es sind insgesamt vier Rechner im System vorhanden,
demnach wird die Schleife
viermal durchlaufen.
Die Namen sind durch Tabulatoren voneinander getrennt.
Mit der ersten „Split String“-Anweisung wird ein Tabulator gesucht
und der davor stehende Name abgetrennt. Das Ergebnis wird an das
Ende der Schleife geführt, bei der „enable indexing“ aktiviert wurde
(es wird aus allen Namen ein Array gebildet).
Der Rest des Strings wird auf eine weitere „Split String“-Anweisung
geführt. Hier wird das erste Zeichen, der Tabulator, vom Rest des
Strings getrennt.
Das Ergebnis wird in „Section Computer
Names“ ausgegeben.
Get Names of Section computers.vi - Seite 91
Programm:
Get next COM-Adress.vi
Eingabe:
Old COM-Port-Adress
Ausgabe:
New COM-Port-Adress
Kurzbeschreibung:
Rotation der COM-Adressen (max. 18)
Programmbeschreibung: Die alte Port-Adresse wird inkrementiert.
Wird dieser Wert größer als 18, so wird er auf zwei
zurückgesetzt,
ansonsten wird er beibehalten.
Get next COM - Adress.vi - Seite 92
Programm:
Get Position Numbers in other Sections.vi
Eingabe:
Caller?
Calling Computer
Ausgabe:
Port Info out
Kurzbeschreibung:
Grafische Übersicht über alle Ports, herausfinden einer Portinformation
Bedienung:
Diese Oberfläche erscheint z.B. wenn ein kompletter Scan gemessen
werden soll, die Portinformation, an der das gewünschte Massenspektrometer angeschlossen ist, aber nicht bekannt ist.
Im Bild oben sind alle Ports eingetragen. Bei Aufruf dieses Programms werden alle Nicht-Massenspektrometer ausgeblendet.
Durch Anklicken mit der Maus wird ein Massenspektrometer ausgewählt. Die gewünschte Konfiguration wird in das bearbeitende
Programm übernommen.
Get Position Numbers in other Sections.vi - Seite 93
Programmbeschreibung: Zunächst werden alle Port-Konfigurationen geladen. Diese Aufgabe übernimmt das Unterprogramm „Get all
Quadrupoles (port_all).vi“. Es werden die aktivierten Sektoren benötigt, also die „port.sys“-Dateien, daher wird der entsprechende
Eingang = true gesetzt.
Als nächstes müssen die Buttons, an deren Position kein Massenspektrometer vorhanden ist, unsichtbar gemacht werden. Zu diesem
Zweck wird eine FOR-Schleife erzeugt, die 38 mal (= Anzahl der
Buttons) durchlaufen wird.
Die gesammelten Portinformationen werden auf ein vorhandenes
Massenspektrometer überprüft. Ist keines vorhanden, ist an dieser
Position 0 (Null) eingetragen. Der entsprechende Button wird mit der
Attribute Node „disabled“ auf 2 (zwei) geschaltet. Hiermit wird der
Button zum Anklicken ausgeschaltet und grau dargestellt.
Ist der betrachtete Platz mit etwas anderem als Null belegt (→ Massenspektrometer vorhanden), wird der entsprechende Button zum
Anklicken freigegeben (enabled).
Die Überprüfung, ob ein Button angeklickt wurde, findet in einer
WHILE-Schleife statt. Diese wird so lange durchlaufen, bis der
„Cancel“-Button gedrückt oder ein Massenspektrometer ausgewählt
wurde.
Die Buttons sind in einem Cluster zusammengefaßt. Um herauszufinden, welcher Button gedrückt wurde, ist es erforderlich die
„Unbundle by name“-Anweisung zu benutzen. Hier werden alle im
Cluster vorhandenen Elemente mit ihrem Namen gesplittet (Bild:
siehe nächste Seite).
Jeweils zehn Ausgänge werden zusammengefaßt und zu der
Funktion „Whitch Input ist true?“ geführt. Ergebnis dieser
Funktion ist die Aussage, ob ein Ausgang gleich true ist und
wenn ja, welcher.
Ist ein Ausgang gleich true, also einer der selektierten
Ausgänge (Massenspektrometer) ausgewählt, wird das
Ergebnis mit der Dekadennummer addiert (hier: dritte
Dekade, Dekadennummer = 30), andernfalls ist das
Ergebnis gleich Null.
Get Position Numbers in other Sections.vi - Seite 94
Wurde aus einem
der vier Dekaden
gemeldet, daß ein
Button gedrückt
wurde,
werden
alle Ergebnisse
addiert und zur
Positionsbestimmung im
Array dekrementiert.
Für die Portinformation werden
nur die Sektion,
in der das gewählte Massensteht,
spektrometer
und die in der für diese Sektion gültige Positionsnummer in der eigenen Konfiguration benötigt.
Diese beiden Informationen werden zur weiteren Bearbeitung durch „Port Info out“ ausgegeben.
Durch die ODER-Verknüpfung erfolgt die Beendigung
dieses Programms.
Get Position Numbers in other Sections.vi - Seite 95
Programm:
Get Tunnel-Check.vi
Eingabe:
Tube (false = 1)
Mass
Accuracy
Port Info in
Ausgabe:
Measurement out
Kurzbeschreibung:
Abfrage des Partialdrucks einer Masse an allen sieben Massenspektrometern eines Rohrs
Programmbeschreibung: Die Pfade für die Zustandsdatei und
„Vacuum.ini“ werden für die spätere Verriegelung definiert.
Die Beziehungen zwischen den Positionsangaben und den Angaben der jeweiligen Konfigurationen werden definiert. (s.a. „Get Position-Number in
other Sections.vi)
Die Datei Vacuum.ini wird geöffnet, um festzustellen, in welcher Section dieses Programm aufgerufen
wurde.
Die Daten für Accuracy und
die gewünschte Masse werden
so aufbereitet, das sie, falls es
nötig sein sollte, an eine andere
Sektion verschickt werden
können.
Eine FOR-Schleife wird so lange durchlaufen, bis alle definierten
Massenspektrometer entlang eines Rohres angefragt wurden (sieben
mal).
Durch den Index wird jedes Massenspektrometer
ausgewählt
(Definition: s.o.). Durch „Port Info
in“ werden die nötigen Daten zur
Verfügung gestellt.
Ist die angegebene Positionsnummer gleich Null, ist ein Fehler aufgetreten:
Get Tunnel - Check.vi - Seite 96
Es handelt sich nicht um ein Massenspektrometer. Somit wird auch
keine Messung durchgeführt.
Die zweite Überprüfung findet hinsichtlich de Sektion statt. Stimmen
die Sektionsnummer des Massenspektrometers und die eigene überein, wird die Messung durch den aufrufenden Rechner durchgeführt.
Die Messung durch ein Massenspektrometer kann durch die Funktion AutoScan blockiert sein. Damit nicht zwei Programme gleichzeitig auf ein Massenspektrometer zugreifen, wird eine Verriegelung in
der Datei „State.ini“ durchgeführt.
Die Dateien „Vacuum.ini“ und
„State.ini“ werden geöffnet. Enthält
die State.ini an der Stelle für AutoScan einen Eintrag, wird keine
Messung durchgeführt.
Ist ein Eintrag vorhanden, wartet
das Programm 15 Sekunden und
liest die Zustandsdatei dann erneut, um zu sehen, ob inzwischen
eine Freigabe der Massenspektrometer erfolgte.
Ist hingegen keine Verriegelung aktiv, wird die Verriegelung für den
Tunnelcheck (Pos. 2) eingefügt und
abgespeichert. Eine Messung kann
nun erfolgen.
Die Messung erfolgt mit Hilfe der
Funktion „Get Leak Check.vi“. Sie
wird im Bereich von 1E-11 mbar
bis 1E-7 mbar an allen verfügbaren Massenspektrometern durchgeführt.
Nach Beendigung der Messungen wird die WHILE-Schleife abgebrochen. Und die Ergebnisse
durch ausgegeben.
Get Tunnel - Check.vi - Seite 97
Das gewünschte Massenspektrometer wird nicht durch den eigenen
Rechner verwaltet:
Aus den Parametern wurde bereits ein sendefähiger String gebildet. Mit der Anweisung Lxx
wird der Zielrechner mit der
Messung beauftragt. Die Funktionsweise ist analog zu der eines
Lecktests.
Get Tunnel - Check.vi - Seite 98
Programm:
Interpolationpolynom of Newton.vi
Eingabe:
Tube (false = 1)
Measurement data
Ausgabe:
Maximum at (measured from CC)
Maximum at (measured from EH)
Function out
Kurzbeschreibung:
Interpolation einer Funktion beim Tunneltest, Ausgabe des Maximums
Programmbeschreibung: Die Funktionsweise und die Rechenvorschrift für die PolynomenInterpolation nach Newton wurde in einem gesonderten Kapitel behandelt.
Allgemeines Ergebnis der Berechnungen ist folgendes Polynom:
y = a0 + a1 (x-x0) + a2 (x-x0)(x-x1) + ... + an (x-x0)(x-x1)...(x-xn)
Die Datei „System.ini“ wird geöffnet. In ihr sind die Abstände der
Massenspektrometer zum CentralCluster und die Gesamtentfernung
Central-Cluster ↔ Endhouse abgespeichert.
Mit dem Schalter „Tube“ wird entschieden, ob das Rohr 1 zwischen
Zentralhaus und Endhaus 1 oder das Rohr 2 zwischen Zentralhaus
und Endhaus 2 betrachtet werden soll. Dementsprechend wird ein
Array mit den relevanten Maßen ausgewählt.
Legt man über ein Rohr ein Koordinatensystem mit dem Ursprung in
dem im Zentralhaus definierten Fixpunkt, bilden diese Maße die
Werte auf der X-Achse.
Die zugehörigen Y-Werte werden in „Measurement data“ definiert.
Die laut Rechenvorschrift erforderlichen
Wertepaare werden dem Berechnungsschema
der Koeffizienten des Polynoms zugeführt
(Beispiel: Berechnung von a1).
Bei der Berechnung eines Maximums in der Funktion wird
nicht nur der Abstand vom
Zentralhaus aus angegeben,
sondern auch gemessen vom
jeweiligen Endhaus.
Interpolationpolynom of Newton.vi - Seite 99
Die Angabe des Abstandes des Fixpunktes im Endhaus vom Zentralhaus ist nicht unbedingt erforderlich, sie stellt beim Finden eines
Leckes nur eine Erleichterung dar (falls sich das Leck näher am Endhaus befindet).
Ist dieser Wert nicht angegeben (<100), wird der Abstand vom letzten Massenspektrometer zur Angabe genutzt.
Die vollständige Funktion ist in dieser Formular Node zusammengefaßt:
Die Funktion an sich ist allerdings noch nicht darstellbar. Es wird
mit Hilfe von künstlich erzeugten X-Werten ein Array erzeugt, das
die Ergebnisse (Y- Werte) der entstandenen Funktion darstellt.
In einer FOR-Schleife werden verschiedene Stufen der Genauigkeit
der X-Werte durchlaufen.
Zunächst wird mit einer Teilung vom 100 begonnen (100 Werte werden aus der Funktion gewonnen). Die entspricht einer Bestimmungsgenauigkeit eines Leckes von 6 m.
Diese Teilung wird immer mehr erhöht, bis eine Teilung von 1 mm
erreicht wurde. Sinnvoll ist diese Rechengenauigkeit nicht, da allein
durch Meßungenauigkeit wesentlich größere Fehler auftreten. Möglich ist eine Genauigkeit von ± 10 cm.
Die Teilungen werden in Form eines Array abgelegt.
Eine FOR-Schleife wird so oft durchlaufen, so viele
Array-Elemente es gibt.
Ein Shift-Register wird erzeugt. Es enthält den jeweiligen Maximalwert der Funktion (Maximalwert des Arrays).
Ist der Index gleich Null, wird das erzeugte Array (Teilung = 100) zu Anzeige ausgegeben.
Interpolationpolynom of Newton.vi - Seite 100
Links unten wird der Index eingegeben, links oben die vollständige
Länge (je nach Angabe bis zum letzten Massenspektrometer oder bis
zum Endhaus → s.o.) und in der links in der Mitte das oben beschriebene Array mit den Teilungen.
Durch den Index wird die an der betreffenden Stelle stehende Teilung aus dem Array gelöst. Gleichzeitig werden mit der „Array Subset“-Anweisung alle vom Anfang bis zu der indexierten Stelle vorhandenen Teilungen selektiert und anschließend miteinander multipliziert.
Die gesamte Länge wird durch die Anzahl der Teilungen geteilt. Das
Ergebnis ist die neue Schrittweite, in der Y-Werte der Funktion berechnet werden sollen, um eine genauere Position des Maximums zu
bestimmen.
Die aktuelle Schrittweite wird verdoppelt und das Ergebnis als Faktor für die FOR-Schleife genutzt. Hieraus ergibt sich, daß sowohl
vor, als auch nach dem bisher angenommenen Maximum der Funktion gleich viele Zwischenschritte berechnet werden.
Die Schrittweite, multipliziert mit der Anzahl der
Schritte (einseitig) wird von dem bisherigen Maximum
abgezogen. Dadurch wird das Maximum in der Mitte
des betrachteten Bereiches gelegt. Dieser Abzug wird
nicht beim ersten Durchlauf durchgeführt. Hier wird
das Maximum noch bei Null angenommen.
Das Ergebnisarray wird in einer FOR-Schleife erstellt. Die Schrittweite wird mit dem Index multipliziert und das Ergebnis zu dem
vorher berechneten Abstand zum Maximum (Anfangszustand: 0m)
addiert. Am Ausgang der FOR-Schleife wurde „enable indexing“
eingeschaltet.
Interpolationpolynom of Newton.vi - Seite 101
Das Ergebnisarray wird auf seinen Maximalwert überprüft.
Dieser Wert bildet die Grundlage für den Ansatz der nächsten
Berechnung. Hierzu wird der Maximalwert auf das ShiftRegister geführt.
Nach Beendigung aller Durchläufe wird das zuletzt ermittelte Maximum der Funktion über
ausgegeben.
Der entsprechende Wert für den Abstand von Endhaus, bzw. letzten
Massenspektrometer aus gesehen ergibt sich durch die Subtraktion
des jeweiligen Abstandes zum Fixpunkt im Zentralhaus.
Interpolationpolynom of Newton.vi - Seite 102
Programm:
Leakcheck CheckCall.vi
Eingabe:
-
Ausgabe:
-
Kurzbeschreibung:
Dialogfenster, ob He-Lecktest, der Tunneltest oder keines von beiden
durchgeführt werden soll
Bedienung:
Wird vom Hauptmenü der Punkt „Leakcheck“ gewählt, erscheint
folgendes Dialogfenster:
Durch Anklicken des jeweiligen Testes gelangt man auf den spezifizierten Bildschirm. Mit „Cancel“ kommt man zurück zum Hauptmenü
Programmbeschreibung: Die Abfrage der Tasten ist in einer WHILE-Schleife realisiert.
Wird eine der beiden „Test“-Tasten gedrückt, wird, je nach
Wahl, der He-Lecktest durchgeführt oder
der Tunneltest wird gestartet.
Das Drücken einer Taste, auch des „Cancel“-Buttons, hat zur Folge,
das dieses Programm beendet wird und die Dialogbox somit verschwindet.
Leakcheck CheckCall.vi - Seite 103
Programm:
Linear Interpolation.vi
Eingabe:
Y0
Y1
X
X1
Ausgabe:
Interpolated Y-value
Kurzbeschreibung:
Lineare Interpolation eines Wertes zwischen zwei Punkten im Koordinatensystem
Programmbeschreibung: Bedingung: Der Wert X, zum dem der Y-Wert interpoliert werden
soll, ist genau 1 (Eins) größer, als der Wert X0.
Sind die beiden Y-Werte gleich, wird
einer der beiden ausgegeben. Es ist
im Fall der Linearität damit zu rechnen, daß ein Wert zwischen den beiden Punkten einen betragsmäßig gleichen Y-Wert besitzt.
Sind die beiden Werte ungleich, kann
anhand der Geradengleichung ein beliebiger Wert interpoliert werden:
y - y0 = m * ( x - x0 )
mit
Y1 - Y0
m=X -X
1
0
Diese Formel ist in einer Formular Node untergebracht:
Das Ergebnis wird über „Interpolated Y-value“ (rechts) ausgegeben.
Linear Interpolation.vi - Seite 104
Programm:
Make AutoScan data showable.vi
Eingabe:
Actual time
Span
Resolution
Port
Ausgabe:
Showable data
Plot names
Kurzbeschreibung:
Zusammenstellung und Sortieren von AutoScan-Daten
Programmbeschreibung: Die Datei „Port.sys“ wird geöffnet,
um die aktuelle Konfiguration zu
laden. Die Größe der Datei wird
festgestellt und diese als Faktor für
eine FOR-Schleife genutzt.
Ein Array
mit -1 und
ein Zähler
mit den Anfangswert 0
werden erzeugt und
auf
ein
ShiftRegister gegeben.
Aus dem Array mit den Port-Konfigurationen wird die
Position 2 selektiert. In an dieser Stelle eine 1 oder eine
2 eingetragen, d.h. befindet sich an am betrachteten
Port ein Massenspektrometer, wird ein Info-Array darüber erzeugt. Befindet sich ein anderer Eintrag an der
Stelle, wird ein Array mit Inhalt -1 erzeugt.
Die erste Position (0) des neuen Arrays wird mit der eingegebenen
Port-Nummer verglichen. Sind sie gleich, wird die Position, in der
die richtige Konfiguration gefunden wurde, (= Index der FORSchleife) in das „-1“-Array gespeichert und der Zähler um inkrementiert.
Stimmten Port-Nummer und der Array-Port nicht überein,
wird zur nächsten Konfiguration übergegangen.
Das erste Element aus dem „-1“-Array wird nach Beendigung der FOR-Schleife selektiert.
Make AutoScan data showable.vi - Seite 105
Der Pfad zu den statistischen Daten wird
definiert.
Es wird eine Liste mit allen verfügbaren
Speicherdaten erstellt. Die Filenamen, die als
Array von Strings vorliegen, werden durch die
Funktion „Sort Files.vi“ in eine aufsteigende
Reihenfolge gebracht.
Die Datei „Scan.ini“, in der alle
Änderungen
der
AutoScanKonfigurationen gespeichert sind,
wird geöffnet. Ein Shift-Register
mit der Länge der „Scan.ini“Datei wird angelegt.
Ein Zielarray wird eingerichtet, in
dem später die noch auszuwählenden Massen von AutoScan, die
angezeigt werden sollen, stehen
sollen.
In der WHILE-Schleife wird die jeweils letzte Konfiguration von
AutoScan selektiert und zusammen mit den bereits zusammengetragenen AutoScan-Daten dem Unterprogramm „Get Masses for AutoScan Masses.vi“ zugeführt.
Ziel ist es, alle Speicherplätze (max. sieben) mit Massen zu belegen,
die schon einmal überwacht wurden.
Erläuterung: Bei der Definition der automatisch zu überwachenden
Massen ist es nicht erforderlich, alle freie Speicherplätze zu belegen.
Sind daher bei dem Aufruf dieses Programms ein oder mehrere Plätze frei, können diese mit Massen belegt werden, die in vorherigen
Konfigurationen vorhanden waren, dann allerdings ausgetauscht
wurden.
Die WHILE-Schleife wird so lange wiederholt, bis alle sieben Speicherplätze belegt wurden, oder die keine weiteren Konfigurationen
vorhanden sind.
Aus den Massen ergibt sich
die Bezeichnung der Plotnamen. Ihnen wird jeweils
„Mass ...“ angehängt. Die gesammelten Plotnamen werden
als Array ausgegeben.
Make AutoScan data showable.vi - Seite 106
Aus der aktuellen Zeit und dem darzustellenden Span wird die Differenz gebildet, um einen Anhaltspunkt zu haben, wie weit zurück
die gemessenen Daten untersucht werden müssen.
In dieser WHILE-Schleife findet die eigentliche Zusammenstellung
der AutoScan-Daten statt.
Die Shift-Register enthalten oben ein acht Daten großes Array ohne Inhalt und unten die sortierten Filenamen, wo die Daten zu finden sind. Sieben Plätze
sind hierbei für die Meßdaten und einer für die Meßzeit reserviert.
Der letzte Filename wird mit der „Index Array“-Anweisung selektiert und anschließend mit der „Array Subset“-Anweisung aus dem
Array gelöscht. Die restlichen Filenamen werden auf das ShiftRegister zurückgegeben.
Das gewählte File wird geöffnet und die Daten gelesen. Mit der
Funktion „Select Array-row.vi“ wird das Teilarray des gewünschten
Ports selektiert.
Aus dem Dateinamen ist die Meßzeit ersichtlich. Trennt man den ersten Buchstaben und wandelt die verbleibenden Zeichen zurück in
Ziffern, hat man das Speicherdatum. Dieses wird an Position Sieben
im Zielarray gespeichert.
Das Speicherdatum, das Zielarray, das durch den Port gewählte Teilarray, die Namen der zusammengestellten Massen und das Array
„Scan.ini“ werden dem Unterprogramm „Build AutoScan Array.vi“ zugeführt.
Make AutoScan data showable.vi - Seite 107
In diesem Unterprogramm werden die Daten für die gerade betrachtete Messung entsprechend zusammengestellt.
Diese WHILE-Schleife wird so lange wiederholt, bis entweder keine
weiteren Meßdateien vorhanden sind, oder bis der durch die Differenz der aktuellen Zeit und dem gewählten Zeitraum der Betrachtung
sich ergebende Anfangszeitpunkt unterschritten ist.
Das Ergebnisarray wird invertiert.
Die Daten wurden von der letzten
Messung aus betrachtet in das Zielarray eingetragen, dargestellt werden
soll aber die korrekt zeitliche Abfolge
(Zeitstrahl von links nach rechts).
Die Aufnahme der Meßwerte wird sicher nicht ausschließlich periodisch erfolgen. Um in der Darstellung Sprünge, die durch zwei verhältnismäßig weit auseinanderliegende Meßwerte entstehen, müssen
die zusammengestellte Meßwerte noch einer linearen Achse angepaßt werden.
Es wird ein Array erzeugt,
das, entsprechend der gewählten Auflösung in dem
gewünschten
Zeitbereich,
immer gleiche zeitliche Abstände einhält.
Für jede gewählte
Masse wird die
Anpassung innerhalb einer FORSchleife
vorgenommen.
Die
eigentliche
Umsetzung in des neue Zeitformat übernimmt das Unterprogramm
„Format AutoScan Data.vi“. Dieses benötigt neben den jeweiligen
Daten, die mit der Funktion „Select Array-line.vi“ durch den Index
der FOR-Schleife nacheinander selektiert werden, die Eingabe der
ursprünglichen Zeitachse. Sie ist im Array in der Zeile sieben gespeichert (oben links: „Select Array line.vi“, Zeile 7).
Weiterhin wird das Zielformat als Array eingegeben und, als Entscheidungshilfe, die halbe Größe zweier zeitliche Abstände im Zielarray. Ist zres der Abstand zwischen zwei Zeitformatangaben, wird
ein Wert aus dem ursprünglichen Array im Intervall zi ± zres/2 zugeordnet.
Make AutoScan data showable.vi - Seite 108
Datei:
Names.sys
Speicherformat:
<Name
Rechner
Central-Cluster><Name
house1><Name Rechner Endhouse 2>
=3*4 Buchstaben; Beispiel: geo1geo2geo3
Beschreibung:
Diese Datei enthält die Namen der jeweils eingesetzten Rechner in
den verschiedenen Häusern.
Rechner
End-
Diese Namen werden benötigt, um die Kommunikation der Rechner
untereinander zu ermöglichen. Es sind nicht mehr als vier Buchstaben erlaubt (sonst Änderung in „Communication“), die den tatsächlichen Rechnernamen in der Netzwerkumgebung darstellen.
Diese Datei enthält, durch <CR><LF> getrennt, die InternetAdressen der beteiligten Rechner:
1.
Zentralhaus
2.
Endhaus 1
3.
Endhaus 2
alle weiteren: Steuerrechner (extern)
Nemes.sys - Seite 109
Programm:
No EOC Error.vi
Eingabe:
Error in
Ausgabe:
Error out
Kurzbeschreibung:
Rücksetzen eines „Connection closed“ Fehlers
Anmerkung:
Dieses Programm stammt aus der LabVIEW-Bibliothek
Programmbeschreibung: Der Cluster „Error in“ wird mit der Anweisung
„Unbundle by Name“ aufgetrennt.
Es wird überprüft, ob der Fehlercode gleich
dem Fehler „Connection closed“, was dem
Fehler 66 entspricht und in Fehler (true)
angezeigt wird.
Ist dies der Fall , wird das Fehler-Flag zurückgesetzt, der Fehlercode bleibt erhalten. Der neue
Fehlercluster wird ausgegeben.
Bei anderen Fehlern erfolgt keine Bearbeitung des Fehlerclusters.
No EOC Error.vi - Seite 110
Programm:
No Time out Error.vi
Eingabe:
Error in
Ausgabe:
Error out
Kurzbeschreibung:
Rücksetzen eines „Time out“ Fehlers
Anmerkung:
Dieses Programm stammt aus der LabVIEW-Bibliothek
Programmbeschreibung: Der Cluster „Error in“ wird mit der Anweisung
„Unbundle by Name“ aufgetrennt.
Es wird überprüft, ob der Fehlercode
gleich dem Fehler „Connection timed
out“, was dem Fehler 56 entspricht und
in Fehler (true) angezeigt wird.
Ist dies der Fall , wird das Fehler-Flag zurückgesetzt, der Fehlercode bleibt erhalten. Der neue
Fehlercluster wird ausgegeben.
Bei anderen Fehlern erfolgt keine Bearbeitung des Fehlerclusters.
No Time out Error.vi - Seite 111
Programm:
Number of char in a String-Array.vi
Eingabe:
Input String Array
Search Char
Ausgabe:
Number
Kurzbeschreibung:
Zählen der Anzahl von Zeichen (einzelne Buchstaben oder ganze
Strings) in einem String-Array.
Programmbeschreibung: Die Größe des „Input String Array“ wird festgestellt und „Anzahl“
auf null gesetzt.
Mit Hilfe des Index einer FOR-Schleife wird jedes Element überprüft, ob es dem gesuchten Element „Search Char“ entspricht.
Ist dies der Fall, wird „Anzahl“ inkrementiert, andernfalls passiert
nichts.
Die Anzahl „Number“ wird ausgegeben.
Number of char in a String - Array.vi - Seite 112
Programm:
Number of search number in an Array.vi
Eingabe:
Input Array
Search Number
Ausgabe:
Number
Position
Kurzbeschreibung:
Bestimmung der vorhandenen Anzahl einer Zahl in einem Array und
der Position der ersten gefundenen Zahl
Programmbeschreibung: Die Größe des „Input Arrays“ wird bestimmt und die „Anzahl“ auf
null gesetzt.
Über den Index der FOR-Schleife wird jedes Element mit „Search
Number“ verglichen.
Bei Übereinstimmung des Elements und der Zahl wird die „Anzahl“
inkrementiert, ansonsten 0 (null) addiert.
Das Ergebnis der Untersuchung wird über „Number“ ausgeben.
Wurde die gesuchte Zahl nicht gefunden, ist dieser Wert null.
Ist die Anzahl größer oder gleich
eins, erfolgt über eine WHILESchleife die zweite Durchsuchung des Arrays, an welcher
Stelle das erste Element gleich
der gesuchten Zahl ist.
Die Position wird über den Index
der WHILE-Schleife ausgegeben. Ist die Zahl in dem vorhandenen Array nicht vorhanden, ist
die Position gleich -1.
Number of search number in an Array.vi - Seite 113
Anmerkung: In der WHILE-Schleife ist der Vergleich, ob die Anzahl
der untersuchten Elemente nicht die Größe des zu untersuchenden
Arrays übersteigt, eigentlich überflüssig, da die WHILE-Schleife ja
nur ausgeführt wird, wenn die „Anzahl“, also die bereits gefundenen
Werte größer als null ist.
Diese Abfrage ist also nur eine Sicherheitsabfrage.
Number of search number in an Array.vi - Seite 114
Programm:
Parser.vi
Eingabe:
String Input
Source
Text Input
Pressure Warning
Ausgabe:
-
Kurzbeschreibung:
„Übersetzer“ für eingehende Internet-Anweisungen
Programmbeschreibung: Über das Internet eingehende Anweisungen von anderen Rechnern
werden im Parser zugeordnet, ausgeführt und ggf. beantwortet.
Die Anweisung ist in „String Input“ enthalten.
Eine Anweisung ist immer drei Zeichen lang. Um
Fehlern vorzubeugen, werden die ersten drei Zeichen von „String Input“ selektiert.
„Source“ enthält die Kennziffer des aufrufenden Rechners. Die Ziffern sind wie folgt verteilt:
• 0: Rechner in der Sektion Zentralhaus
1: Rechner in der Sektion Endhaus 1
2: Rechner in der Sektion Endhaus 2
3: Steuerungsrechner außerhalb des Systems
•
•
•
„Text Input“ enthält in Form eines Strings die ggf. nötigen Parameter, z.B. für die Durchführung einer Messung.
Es gibt zwei Prinzipien zur Übersetzung der eingehenden Anweisung:
1.) Alle drei Buchstaben stellen die Anweisung dar.
Beispiel: Es
wird verglichen,
ob
„String Input“ gleich
„GPA“ ist.
Ist dies der Fall, wird das Unterprogramm „Command; GPA.vi“
ausgeführt, andernfalls erfolgt in diesem Programmabschnitt
nichts.
2.) Nur der erste Buchstabe entspricht einer Anweisung. Die noch
folgenden Zeichen sind bereits Bestandteil einer Spezifikation,
bzw. Parameter zur Durchführung einer Messung.
Parser.vi - Seite 115
Beispiel: Bei der Anweisung „Lxx“ stellt xx einen Platzhalter dar.
Bei der Übertragung dieses Befehls wird xx durch die Kennziffer
einer Position eines Massenspektrometers ersetzt. Zur Erkennung
dieser Anweisung ist demnach nur das „L“ erforderlich, das aus
der Anweisung zunächst ausgeschnitten werden muß. Die Anweisung muß zusätzlich dem ausführenden Unterprogramm eingegeben werden, das die Information aus dem Platzhalter weiterverarbeitet.
Durch diese beiden Prinzipien erfolgt die Überprüfung aller Anweisungen.
Eine Ausnahme stellt hierbei der Alarm (Anweisung PAx) dar:
Die Warnung vor einem zu hohen Druck kann manuell von
Hauptbildschirm aus ausgeschaltet werden. In diesem Fall erfolgt
keine Warnmeldung. Das Ausschalten ist durch die
UND-Verknüpfung mit dem Eingang „Pressure
Warning“ realisiert.
Folgende Anweisungen werden durch den Parser aktiviert:
•
Lxx: Lecksuche am empfangenen Rechner. XX enthält die
Positionsnummer des gewählten Massenspektrometers in der
Konfiguration. Die Parameter zur Messung, die Anweisung
und die Quelle sind erforderlich.
•
Axx: Überprüfung/ Zusammenstellung der AutoScan-Daten.
XX enthält die Positionsnummer des gewählten Massenspektrometers in der Konfiguration. Die Parameter über die Größe
des betrachteten Zeitbereichs, die Anweisung und die Quelle
sind erforderlich.
•
GPA: Get Port.all. Umsetzung der Datei und Verschicken.
Die Quelle ist erforderlich.
•
GPS: Get Port.sys. Umsetzung der Datei und Verschicken.
Die Quelle ist erforderlich.
•
GFS: Get full Scan. Anweisung zur Aufzeichnung eines
kompletten Scans. Die Parameter zur Durchführung der Messung und die Quelle sind erforderlich.
•
sst: Send State. Übermittlung der Änderungen der Zustandsdatei. Nur die neuen Parameter sind erforderlich.
Parser.vi - Seite 116
•
PAx: Alert! In einem Sektor (x) ist eine SchwellwertÜberschreitung des vereinbarten maximalen Drucks (5,0E-5
mbar/ 5,0E-7 mbar) aufgetreten. Es erfolgt eine Meldung an
alle Rechner. Die Anweisung und die Quelle sind erforderlich..
Parser.vi - Seite 117
Programm:
Port to COM.vi
Eingabe:
Port number
Ausgabe:
COM-Title
Kurzbeschreibung:
Umwandlung der Port-Adresse in einen darstellbaren Text als COM
x. Anzeige als „real“-Port ( 0 - COM 1, 1 - COM 2, ...)
Programmbeschreibung: Zu der „Port number“ wird eins addiert.
Über die „Format & Append“-Anweisung wird das Ergebnis in eine
Dezimalzahl umgewandelt und der Text „COM ” davorgestellt.
Der entstandene Text wird über „COM-Title“ ausgegeben.
Port to COM.vi - Seite 118
Datei:
Port.all
Speicherformat:
- 2D-Array
- Nach Änderungen in der Konfiguration wird die bestehende Datei
überschrieben
- Die Größe der erste Dimension des Arrays richtet sich nach der laut
Zeichnung (Configuration) vorhandenen Definitionsmöglichkeiten der
Anschlüsse (Central-Cluster: 18, Endhouse 1 & 2: je 16)
- Bestandteile einer Informationseinheit (Definition pro Anschluß):
• Positionsnummer in der Sektionskonfiguration
• Port Nummer
• angeschlossene Hardware:
0 - keine
1 - Massenspektrometer ohne Multiplier
2 - Massenspektrometer mit Multiplier
3 - Pirani-Meßröhre (über ein TPG300)
4 - Penning-Meßröhre (über ein TPG300)
• Location am TPG300
0 - A1
1 - A2
2 - B1
3 - B2
• Drucksensor 1 (Port Nummer)
• Drucksensor 1 (Location → s. o.)
• Drucksensor 2 (Port Nummer)
• Drucksensor 2 (Location → s. o.)
Beschreibung:
Diese Datei enthält alle zur Konfiguration einer Sektion nötigen Daten.
Es sind für die Sektion Central-Cluster 18 mögliche Anschlüsse vorgesehen und für die Endhäuser jeweils 16.
Die Einstellungen werden im Hauptmenü unter „Configuration“ der
jeweiligen Sektion entsprechend geändert, in die oben aufgeführten Bestandteile formatiert (die Einstellungen in „Configuration“ sind benutzerfreundlicher gestaltet) und gespeichert.
Diese Daten werden herangezogen, wenn die Meßgeräte ausgelesen
werden sollen.
Die Information „Location“ wird nur von den TPG300 genutzt. Die
Informationen „Drucksensor ...“ stellen die Abhängigkeiten der Massenspektrometer von bestimmten TPG300 dar.
Die Angabe „Positionsnummer in der Sektionskonfiguration“ enthält
keine Information für die anderen Programme. Sie stellt nur eine Angabe dar, mit der bei erneutem Aufruf von „Configuration“ die vorher gewählte Position grafisch dargestellt werden kann.
Port.all - Seite 119
Besonderheiten:
Diese Datei enthält alle Definitionen der vorhandenen Ports. Durch Aktivierung/ Deaktivierung können einzelne Sektionen beeinflußt werden.
Hierzu werden die in dieser Datei, „Port.all“, gesammelten Daten in die
Datei „Port.sys“ übertragen und darin die Anschlußdaten für die deaktivierten Sektionen wieder gelöscht.
Diese Datei ist von diesen Änderungen nicht betroffen.
Siehe auch: Port.sys; Activate Configuration.vi; Activate Sections.vi
Port.all - Seite 120
Datei:
Port.sys
Speicherformat:
- 2D-Array
- Nach Änderungen der aktiven Sektionen wird die bestehende Datei
überschrieben
- Die Größe der erste Dimension des Arrays richtet sich nach der laut
Zeichnung (Configuration) vorhandenen Definitionsmöglichkeiten der
Anschlüsse (Central-Cluster: 18, Endhouse 1 & 2: je 16)
- Bestandteile einer Informationseinheit (Definition pro Anschluß):
• Positionsnummer in der Sektionskonfiguration
• Port Nummer
• angeschlossene Hardware:
0 - keine
1 - Massenspektrometer ohne Multiplier
2 - Massenspektrometer mit Multiplier
3 - Pirani-Meßröhre (über ein TPG300)
4 - Penning-Meßröhre (über ein TPG300)
• Location am TPG300
0 - A1
1 - A2
2 - B1
3 - B2
• Drucksensor 1 (Port Nummer)
• Drucksensor 1 (Location → s. o.)
• Drucksensor 2 (Port Nummer)
• Drucksensor 2 (Location → s. o.)
Beschreibung:
wie Port.all:
Diese Datei enthält alle zur Konfiguration einer Sektion nötigen Daten.
Es sind für die Sektion Central-Cluster 18 mögliche Anschlüsse vorgesehen und für die Endhäuser jeweils 16.
Die Einstellungen werden im Hauptmenü unter „Configuration“ der
jeweiligen Sektion entsprechend geändert, in die oben aufgeführten Bestandteile formatiert (die Einstellungen in „Configuration“ sind benutzerfreundlicher gestaltet) und gespeichert.
Diese Daten werden herangezogen, wenn die Meßgeräte ausgelesen
werden sollen.
Die Information „Location“ wird nur von den TPG300 genutzt. Die
Informationen „Drucksensor ...“ stellen die Abhängigkeiten der Massenspektrometer von bestimmten TPG300 dar.
Die Angabe „Positionsnummer in der Sektionskonfiguration“ enthält
keine Information für die anderen Programme. Sie stellt nur eine Angabe dar, mit der bei erneutem Aufruf von „Configuration“ die vorher gewählte Position grafisch dargestellt werden kann.
Port.sys - Seite 121
Besonderheiten:
Durch Aktivierung/Deaktivierung kann der Zustand einzelner Sektionen
beeinflußt werden. Hierzu werden die in der Datei „Port.all“ gesammelten Daten in diese Datei, „Port.sys“, übertragen und hier die Anschlußdaten für die deaktivierten Sektionen wieder gelöscht.
Das Löschen wird nach der Beeinflussung des Zustandes („Activate
Sections.vi“) durch das Unterprogramm „Activate Configuration.vi“
vorgenommen.
Siehe auch: Port.all; Activate Configuration.vi; Activate Sections.vi
Port.sys - Seite 122
Programm:
Power - switch for AutoScan Masses.vi
Eingabe:
Accuracy
Ausgabe:
-
Kurzbeschreibung:
Warteschleife zum Einschalten des AutoScan. Überprüfung, daß kein
anderes Programm die Massenspektrometer nutzt
Programmbeschreibung: Die Pfade zu den Dateien „Vacuum.ini“ und
„State.ini“ werden definiert.
Die Abfrage, ob die Massenspektrometer
verfügbar sind, erfolgt in einer WHILESchleife. Diese wird so lange durchlaufen,
bis eine Messung gestartet werden konnte, oder bis diese Schleife
fünf mal durchlaufen wurde, danach erfolgt der Abbruch dieser
WHILE-Schleife.
Die Dateien werden geöffnet und das entsprechende Zustandsarray
mit der Funktion „Select Array-line.vi“ selektiert.
Die Zustände der anderen Programmteile werden aus dem entstehenden Array herausgefiltert. Mit der Funktion „Number of search number in an Array.vi“ wird die Anzahl der vorhandenen Verriegelungen
(die Anzahl der 1-en) in dem Array festgestellt.
Sind keine vorhanden, d.h. wurde von keinem anderen Programm eine Verriegelung durchgeführt, wird an die für AutoScan reservierte
Stelle in das Array der Zustandsdatei eine 1 (eins) geschrieben, und
damit eine Verriegelung durchgeführt.
Gleichzeitig wird mit der vorgegebenen Accuracy das Programm
„AutoScan Masses.vi“ gestartet.
Power - switch for AutoScan Masses.vi - Seite 123
Sind die Massenspektrometer
durch ein anderes Programm verriegelt, d.h. greift gerade ein anderes Programm auf die Massenspektrometer zu, wird 30 s gewartet, und danach die Zustandsdatei erneut gelesen.
Durch die Begrenzung auf fünf Versuche, eine Messung zu starten,
heißt das, daß das Programm maximal 2,5 min. wartet, bevor es die
Messung abbricht. Je nachdem, wie häufig die automatische Überprüfung der Massen (AutoScan) erfolgen soll, muß dieser Wert noch
verringert werden. Die Überlegung, ihn so hoch zu wählen, kam daher, daß, wenn ein kompletter Scan gemessen wird, dieses einige
Minuten in Anspruch nimmt und daher ohnehin einige Abbrüche des
AutoScan zu erwarten sind. Messungen mit den Lecktest hingegen
sind wahrscheinlich öfter unterbrochen, so daß zwischendurch diese
automatische Überwachung gestartet werden kann.
Power - switch for AutoScan Masses.vi - Seite 124
Programm:
Read full Scan - Get Info.vi
Eingabe:
Port Number
Multiplier (Test Version)
Ausgabe:
Test Version
Quadrupole Info
Port Not Found
Kurzbeschreibung:
Zusammenstellung
der
gewählten
Informationen und Setzen des Multipliers.
Massenspektrometer-
Programmbeschreibung: Die Testversion wird intern aktiviert. Ziel der Testversion ist, alle
Fileoperationen zu unterbinden (s.u.). Dieses wird durch zwei CASE-Strukturen erreicht, die nacheinander geschaltet werden. Im folgenden wird nicht von der Testversion ausgegangen. Eventuelle Abweichungen von der regulären Programmstruktur
werden gesondert beschrieben.
Die Datei „Port.sys“ wird geöffnet, um die Informationen für die
Massenspektrometer zusammenzustellen.
Für die Testversion wird an dieser Stelle nur ein Array erzeugt,
das alle MassenspektrometerKonfigurationen zuläßt.
Aus diesem Array werden die Port-Nummern
mit der Funktion „Select Array-line.vi“ selektiert. Mit Hilfe der Funktion „Number of Search Number in an Array.vi“ kann herausgefunden werden, ob an der gewählte Port überhaupt konfiguriert wurde.
Liegt keine Konfiguration vor, wird
Fehlermeldung „Port not found“
nächste Seite oben).
Read full Scan - Get Info.vi - Seite 125
über ein Dialogfeld die
ausgegeben (Bild siehe
Nachteil: Wird das Dialogfeld nicht bestätigt, werden alle anderen Programme gestoppt.
Durch die Funktion „Number of Search Number in
an Array.vi“ wurde außer der Anzahl der vorhandenen Port Nummern auch die Position in der Konfiguration bestimmt.
Mit Hilfe dieses Wertes und der Konfiguration wird ein Array
mit allen wichtigen Daten über das gewählte Massenspektrometer zusammengestellt. Diese Aufgabe übernimmt das Unterprogramm „Get Info about Quadrupole.vi“.
In dem resultierenden Array wird der Multiplier ausgetauscht. In der
Konfiguration ist nur angegeben, ob ein Multiplier vorhanden ist,
oder nicht. Zum Aufruf einer Messung muß der Multiplier aber nicht
zwangsläufig eingeschaltet werden.
Ist der Eingang „Multiplier (Test Version)“ größer als Null, also der
Multiplier eingeschaltet, soll in dem Info-Array
der Multiplier ebenfalls eingeschaltet werden, sofern das gewählte Massenspektrometer einen
Multiplier besitzt.
Diese Verknüpfung wird folgendermaßen realisiert: Aus dem InfoArray wird die Information über
das Vorhandensein eines Multipliers selektiert. Die Abfrage, ob
der Wert größer als Null ist, macht aus der gespeicherten 0 (Null)
oder 1 (Eins) eine boolsche Größe. Die UND-Verknüpfung mit der
in letzten Absatz beschriebenen Multiplier-Information liefert die
oben genannte Bedingung. Nach der Umwandlung in eine Zahl (0/1)
wird diese Information in dem Info-Array gespeichert.
Mit der Funktion „Set Multiplier Gain Factor.vi“ wird, soweit
vorhanden, der durch „Multiplier (Test Version)“ definierte
Wert des Multipliers aktiviert. Dieser kann die Werte 2 oder 3
für *102 oder *103 annehmen.
Ist der gesuchte Port gültig wird das Info-Array des Massenspektrometers und
die Meldung „Port found“ ausgegeben.
Read full Scan - Get Info.vi - Seite 126
Programm:
Read full Scan.vi
Eingabe:
Port not found
Accuracy
Test Version
First Mass
Last Mass
Scan in
Pressure
Quadrupole Info
Ausgabe:
Cancelled?
Full Scan
Kurzbeschreibung:
Lesen eines Scans in einer Druckdekade unter Berücksichtigung der
Sicherheitsmaßnahmen.
Bedienung:
Wird ein Scan gestartet, erscheint an der Stelle des
„RUN“-Buttons auf der Bedienoberfläche der Abbruchbutton (siehe rechts). Soll die Messung tatsächlich unterbrochen werden, klickt man auf diesen Button.
Der Text wechselt zu
. Das Programm ist nun damit
beschäftigt, alle Messungen zu stoppen, die Massenspektrometer
auszuschalten und die bisher gewonnenen Ergebnisse aufzubereiten.
Dies kann u.U. bis zu einer Minute dauern.
Programmbeschreibung: Für die Verriegelung werden die Pfade
„State.ini“ und „Vacuum.ini“ definiert.
Dieses Programm kann intern in eine Testversion umgewandelt werden. Sollen die abhängigen Drucksensoren vor einer Messung
nicht berücksichtigt werden, können die „Security“Messung durch Wahl der Testversion ausgeschaltet werden. Unter diesen Umständen muß sichergestellt sein, daß der Druck
die zulässigen Werte nicht übersteigt.
Die Grenze des Druckes, der
maximal auftreten darf, wenn
die Massenspektrometer zu einer Messung herangezogen werden, ist
mit 5,0E-7 mbar definiert. Für eine Messung ohne Multiplier liegt
dieser Wert bei 5,0E-5 mbar (s.u.).
Read full Scan.vi - Seite 127
Der gesamte Meßvorgang ist in einer WHILE-Schleife untergebracht. Sind die Massenspektrometer durch ein anderes Programm
belegt, so ist in der Datei „State.ini“ eine Verriegelung vorgesehen,
die keinen weiteren Zugriff zuläßt.
Die Dateien „Vacuum.ini“ und
„State.ini“ werden geöffnet und es
wird überprüft, ob die Massenspektrometer durch den AutoScan
belegt sind.
Ist dies der Fall, wartet dieses Programm 15 s und liest die Zustandsdatei dann erneut.
Hat der AutoScan die Massenspektrometer gerade nicht belegt, d.h.
befindet sich keine Verriegelung in
der Zustandsdatei, wird eine auf den
Platz, der für den „Full Scan“ vorgesehen ist, eingerichtet. Nun kann kein
anderes Programm auf die Massenspektrometer zugreifen.
Die Größe des „Quadrupole info“-Arrays wird festgestellt. Nach dieser Größe richtet sich die Anzahl der durchzuführenden Messungen
(da es sich um einen einzelnen Scan handelt, also
nur eine einzelne Messung durchzuführen ist, enthält das Info-Array nur einen Datensatz).
Die Größe wird durch sechs geteilt, da jede Massenspektrometer
sechs Angaben benötigt.
Ein Array wird erzeugt, das mit „N“ gefüllt ist. Hieraus
lassen sich später fehlende Command Acknowledgements
der Massenspektrometer ableiten.
Schritt eins: Anfordern einer Messung
In der ersten FOR-Schleife wird die erste Sicherheitsuntersuchung
des Druckes durchgeführt und dem gewählten Massenspektrometer
wird die Anweisung zur Messung eines kompletten Scans mitgeteilt.
Read full Scan.vi - Seite 128
Wurde auf Testversion umgeschaltet, wird
nicht der Druck gemessen, sondern der Multiplier eingeschaltet und der Druck als ausreichend niedrig angenommen.
Die Druckmessung übernimmt, sofern sie nicht durch der Wahl
der Testversion ausgeschaltet wurde, die Funktion „Security
pressure.vi“.
In „Scan in“ befinden sich die Daten, die in einem früheren Durchlauf schon einmal gemessen wurde oder, falls es sich um die erste
Messung handelt, ein Array mit „-1“. Es erfolgt eine
Abfrage, ob das Minimum dieses Arrays kleine als 0
(Null) ist. Falls es das nicht ist, ist keine weitere Messung nötig.
Sind die Bedingungen erfüllt, wird dem Massenspektrometer die Anweisung zur Messung
eines Scans mit den nötigen Parametern gegeben.
Parameter sind:
• Port Number
• Range (Gain)
• Accuracy
• First Mass
• Last Mass
• Multiplier
Read full Scan.vi - Seite 129
Ergebnis dieses Aufrufs ist das Command Acknowledgement, das
von dem angesprochenen Massenspektrometer zurückgeschickt wird.
Dieses Massenspektrometer beginnt unverzüglich mit der Ausführung der Anweisung, mit der Messung.
Das Acknowledgement wird in dem Array des Shift-Registers
gespeichert (das Array besteht nur aus diesem einen Wert → s.o.).
Zweiter Schritt: Warten auf das Meßergebnis
Eine weitere WHILE-Schleife wird geöffnet. Die Messung eines
Scans kann, je nach Wahl der Parameter einen langen Zeitraum in
Anspruch nehmen. Es ist nicht vorhersehbar, wie lange dies sein
wird.
Mit der Anweisung „o“ besteht die Möglichkeit der Abfrage, ob der
zu messende Scan bereits vollständig verfügbar ist, oder ob die Messung noch läuft. Ist der vollständige Scan im Speicher des Massenspektrometers verfügbar, wird auf die Anfrage eine „1“ zurückgeschickt (mit Command Acknowledgement: „A1“) oder, für den Fall,
daß der Scan noch nicht vollständig ist,
„A0“.
Wie oben wird eine FOR-Schleife geöffnet,
die so oft wiederholt wird, so viele Massenspektrometer in der Konfiguration vorhanden sind (einmal). An der jeweils ersten Position befindet sich die Port Nummer. Diese
wird selektiert und mit dem Kommando
„o“ mit der Erwartung einer Rückmeldung
an das messende Massenspektrometer geschickt.
Die Schleife wird sehr häufig durchlaufen. Das Ergebnis der Messung des Druckes hat dann keine Gültigkeit mehr. Aus diesem Grund
wird immer eine neue Messung gestartet. Der boolsche Indikator wird, wie schon bei der letzten Sicherheitsabfrage des
Druckes auf „false“ gesetzt, d.h. es wird kein neuer Wert gelesen,
sondern der zuletzt gespeicherte Druck aus der Routinekontrolle benutzt.
Dieses Vorgehen hat den Vorteil, daß die Routinemessungen nicht
für die Messung eines kompletten Scans unterbrochen werden müssen. Die gespeicherten Werte können als aktuell angenommen werden, da die Routinekontrollen des Drucks in einem sehr dichten Abstand erfolgen.
Die WHILE-Schleife wird so lange wiederholt,
bis die Rückmeldung „A1“ ist. AbbruchbedinRead full Scan.vi - Seite 130
gungen sind außerdem ein zu hoher Druck und eine Unterbrechung
durch den Bediener des Programms.
Die Unterbrechung mit dem in der Bedienung erwähnten „Abort
measurement“-Button wurde in diesem Teil dieses Programms plaziert, da es hier am längsten „hängt“. Alle anderen Teile dieses Programms werden sehr viel schnell abgearbeitet.
Um ein paralleles Arbeiten anderer Programme zu ermöglichen, wird eine Pause von 2 s gewährt. Dieser Wert kann,
falls benötigt, noch höher gewählt werden. Im Vergleich zu
allen anderen Funktionen hat dieses Programm die niedrigste
Priorität.
Dritter Schritt: Ersetzen alter Daten durch aktuelle Meßdaten
Eine FOR-Schleife wird nach den bereits oben beschriebenen Schemata definiert. Zur Sicherheit erfolgt noch einmal
eine Überprüfung, ob die Rückmeldung tatsächlich „A1“
gewesen ist.
Ist dies der Fall, wird die Port Nummer aus dem
Konfigurationsarray selektiert und der Funktion
„Replace new Scan data.vi“ zugeführt. In ihr
werden die zur Verfügung stehenden Daten aus
dem Massenspektrometer gelesen und die Alten,
die über ein Array unten rechts der CASEAnweisung zugeführt werden, aktualisiert. Die
alten Meßdaten entstammen der Eingabe „Scan
in“.
Die neuen Daten werden durch „Full Scan“ zur Ausgabe
gebracht.
Für den unwahrscheinlichen Fall, daß ein Fehler
aufgetreten sein sollte, und ein Abbruch des
zweiten Schrittes erfolgte, ohne daß „A1“ vom
Massenspektrometer
zurückgesendet
wurde
(dieser Fall ist schon aufgetreten, daher wurde
diese zweite Abfrage eingeführt), wird nur die
Port Nummer selektiert. Die Ausgabe entspricht
in diesem Fall dem Eingabearray.
Weiterhin werden in diesem Schritt das Massenspektrometer und der dazugehörige Multiplier ausgeschaltet. Dies erfolgt schrittweise in einer Sequence. Zunächst wird der Multiplier auf 0 (Null)
gesetzt (siehe Bild), und schließlich wird das Filament mit der Anweisung „F1,0“ ausgeschaltet.
Read full Scan.vi - Seite 131
Fehlerbehandlung
Mögliche Fehlerursachen sind:
n Abbruch durch einen zu hohen Druck
n Abbruch durch den Benutzer oder
n Fehlerhafte Port-Definitionen
Diese Fehler haben zur Folge, daß über eine ODERVerknüpfung der Indikator „Error“ auf true gesetzt
wird.
Wurde der Port fehlerhaft definiert, erfolgt keine weitere Messung,
tritt allerdings einer der anderen genannten Fehler auf, muß die Messung sofort abgebrochen und das Massenspektrometer ausgeschaltet
werden.
Dies wird in einer
Anweisung realisiert.
CASE-
Die Anzahl der Konfigurationen
wird ermittelt und dementsprechend
eine FOR-Schleife definiert (s.o.).
Die jeweilige Port Nummer wird
selektiert und zuerst der Multiplier
und danach das Filament (siehe
Bild) des Massenspektrometers ausgeschaltet.
Zusätzlich wird der
„Cancelled?“ auf true
gesetzt.
Indikator
Ist die Messung beendet, wird 15 s gewartet.
Die Messung, die hier durchgeführt
wurde, entspricht einer Druckdekade. Tatsächlich werden sicher
mehr Dekaden gemessen und angezeigt. Dieses Programm wird also
mehrfach aufgerufen. Zwischen den einzelnen Messungen ist dann
immer etwas Zeit, in der die Massenspektrometer nicht von diesem
Programm belegt sind, sondern Routinemessungen durchgeführt
werden können.
Nach Beendigung dieser Messung wird die Zustandsdatei
wieder auf ihren ursprünglichen Wert zurückgesetzt.
Read full Scan.vi - Seite 132
Programm:
Read TPG300 (pressure).vi
Eingabe:
Port number
Location
Ausgabe:
pressure
Kurzbeschreibung:
Lesen des Druckes an einem TPG300-Meßkopf. Tritt ein Fehler auf
oder ist die „Port number“ gleich null, erfolgt keine Messung.
„Pressure“ wird in diesem Fall mit -1 angegeben.
Der genutzte Meßkopf wird vor der Messung eingeschaltet.
Programmbeschreibung: Überprüfung, ob „Port number“ kleiner oder gleich 0 ist. Ist dies der
Fall, wird über „pressure“ sofort -1 ausgegeben. Dieser Fall wird für
die Testversion benötigt.
Über „Location“
wird der ASCIICode für die am
TPG300 befindliche Meßstelle
erzeugt.
Zum einen erfolgt die Zuordnung zu den jeweiligen Plätzen für das
Auslesen der Meßwerte (0 - A1, 1 - A2, 2 - B1, 3 - B2), und zum anderen wird die jeweilige Meßstelle eingeschaltet.
Das Einschalten erfolgt über die „SEN,x,x,x,x“ Anweisung, das
Auslesen über „Pxx“. Die Zeichenfolge „\r\n“ (= <CR><LF>) bildet
jeweils den Abschluß einer Anweisung.
Das Lesen des Meßwertes wird nur dann gestartet, wenn kein Fehler
bei der Übertragung der Einschaltanweisung auftrat.
Die Antwort des TPG300 auf den „SEN“-Befehl wird in „ASCII →
num“ in das im ASCII-Protokoll des TPG300 enthaltenen Statuswort
und dem eigentlichen Meßwert jeweils als Zahl umgewandelt. Diese
Angaben sind als Array verfügbar. Das erste Element enthält das
Statuswort, das zweite den Wert.
Read TPG300 (pressure).vi - Seite 133
Das Statuswort wird überprüft. Es erfolgt die Entscheidung, ob der
Meßwert in Ordnung ist oder ob die Messung wiederholt werden
soll.
Die Abfrage des Meßwertes ist in einer WHILE-Schleife untergebracht. Hierdurch kann die Messung eines Meßwertes, sofern die
Statusinformation eine neue Messung zuläßt, noch zweimal wiederholt werden.
Kann kein gültiger Wert gemessen werden, ist das Ergebnis gleich -1.
Es ist nicht nötig, die Meßköpfe auszuschalten, da die Druckmessung
so oft wie möglich wiederholt werden soll. (Ein zu kurzfristiges Einund Ausschalten führt zu einer Fehlermeldung am TPG300)
Read TPG300 (pressure).vi - Seite 134
Programm:
Replace New Scan Data.vi
Eingabe:
Port Number
Old Scan
Ausgabe:
New Scan
Kurzbeschreibung:
Ersetzen der alten/nicht gemessenen Daten eines Scans (= Bezeichnung für ein Massenspektrogramm) durch die aktuell gemessenen.
Diese Funktion dient nicht zur Herstellung eines Updates, sondern
wird, beim Durchlauf mehrerer Dekaden in einer Meßreihe nach Beendigung einer Dekadenmessung benutzt.
Programmbeschreibung: Über „Port Number“ wird das Massenspektrometer bestimmt, dessen
neuer Scan gelesen werden soll.
Über die Funktion „Serial Communication Spectra“ wird die Anweisung „e“ zu dem jeweiligen Massenspektrometer geschickt, die
den Transfer der gesammelten Daten bewirkt.
Dieses übermittelte ASCII-Protokoll muß zunächst in ein Array aus
Zahlen umgewandelt werden. Dies geschieht in der Funktion „ASCII
Protokoll (Spectra) to numbers.vi“.
„Old Scan“ enthält alle bisher gemessenen Daten. Die Größe dieses
Arrays richtet sich nach der Anzahl der zu messenden Massen.
Wenn einzelne Werte bisher noch nicht eindeutig bestimmt werden
konnten oder fehlerhaft waren, enthalten die entsprechenden Einträge
den Wert -1. Im Anfangszustand (vor der ersten Messung) sind zunächst alle Plätze mit -1 belegt. Dieser Wert ist ein Indikator, daß der
jeweilige Platz noch belegt werden muß.
Ist der durch eine FOR-Schleife
indexierte
Platz
=
-1
(fehlerhafter oder nicht gemessener Wert), so wird dieser durch
den im neuen Scan vorhandenen
Wert ersetzt. Andernfalls passiert nichts.
Replace New Scan Data.vi - Seite 135
Anmerkung:
Durch die Aufbereitung der Daten des neuen Scans, besteht die
Möglichkeit, daß der neue Wert ebenfalls -1 ist. Dies ist der Fall,
wenn trotz einer höher gemessenen Dekade (1E-10, statt 1E-11) das
Massenspektrometer für diese spezielle Masse immer noch
„overflow“ angezeigt hat.
Das Ergebnis wird über „New Scan“ ausgegeben.
Replace New Scan Data.vi - Seite 136
Programm:
Save pressure.vi
Eingabe:
Measurement Input
Ausgabe:
-
Kurzbeschreibung:
Speichern der gemessenen Druckmeßwerte mit der Meßzeit
Programmbeschreibung: Der Pfad zu den Statistikfiles wird definiert.
Der Dateiname setzt sich aus dem Buchstaben „P“ für
„Pressure“ und dem aktuellen Datum zusammen.
Hieraus wird der Pfad entwickelt.
Die Daten aus „Measurement Input“ werden mit dem definierten
Dateinamen gespeichert. Das Speicherformat ist „12.11e“, das bedeutet: Zwölf Stellen werden reserviert, wobei zehn von ihnen Nachkommastellen sind.
Ist der gebildete Dateiname noch nicht
existent, d.h. hat ein neuer Tag begonnen,
muß ein neues File angelegt werden.
Zu dieser Überprüfung werden die bisherigen Dateien aufgelistet und
die zuletzt gespeicherte Datei selektiert. Entspricht der zweite Teil
des Namens dem aktuellen Datum, wird bei der Anweisung „Write
to Spreadsheet File.vi“ „Append to File“ auf true gesetzt. Die Werte
werden an die gültige Datei angehängt.
Ist das aktuelle Datum ungleich dem zuletzt gespeicherten, wird mit
„Append to File“ gleich false ein neues File erzeugt.
Save pressure.vi - Seite 137
Programm:
Scale Show AutoScan Masses.vi
Eingabe:
Time
Time Span
Resolution
Ausgabe:
Y-Scale
X-Scale Style
X-Scale Grid Names
Date (from - to)
Changes at
Resolution out
Kurzbeschreibung:
Zusammenstellung der Parameter für die Darstellung der AutoScanDaten
Programmbeschreibung: Der Pfad zu den Statistikenfiles
und
der
„Scan.ini“-Datei wird definiert. Die „Scan.ini“
wird geöffnet und die in
ihr enthaltenen Daten
gelesen.
Es gibt insgesamt vier Darstellungsarten der AutoScan-Daten, d.h. es
sind vier Zeiträume möglich, über die die Daten angezeigt werden
können.
Die einfachste Darstellungsform ist die der letzten drei Stunden. Diese Anzeige wird von einer „Waveform Chart“ unterstützt. Alle anderen (größeren) Darstellungsarten müssen gesondert behandelt werden. Diese erfordern eine eigenständige Skalierung der X-Achse. Die
Aufteilung wurde sekundenweise gewählt, allerdings ist auch jedes
andere Format denkbar.
Mit „Time Span“ werden die unterschiedlichen Darstellungsarten definiert.
Ist es für die Auflösung (Resolution) nicht anders angegeben (gleich Null), wird die interne Darstellung in Minuten genutzt, andernfalls die angegebene.
Darstellungsart 0: drei Stunden
Die Auflösung (Resolution)
braucht nicht beachtet werden.
Die X-Achse benötigt keine
gesonderte Bezeichnung.
Scale Show AutoScan Masses.vi - Seite 138
Der Zeitraum ist dreimal eine Stunde (eine Stunde = 3600
Sekunden). Der Anfangspunkt der X-Achse ist also „Time“
minus dem Ergebnis der Multiplikation.
Weiterhin bezeichnet das Ergebnis der Multiplikation die
„Resolution out“, die für weitere Darstellungen in anderen Programmen noch benötigt wird. Später wird „Resolution out“ mit dem
internen oder dem vom Benutzer vorgegebenen Wert belegt.
Darstellungsart 1: 24 Stunden
Als interner Wert für die Auflösung sind 1440 Werte
(=Minuten) eingestellt. Startwert ist 1 (Eins).
Aus der Berechnung Endzeit (Time) minus dem Ergebnis aus 24 mal eine Stunde (3600 Sekunden) ergibt sich die betrachtete Zeitspanne.
Es werden vier Namen für die Bezeichnung der X-Achse erzeugt
(Startzeit + 0, + 8, + 16 und + 24 Stunden). Der letzte Wert entspricht, bei korrekter Berechnung, dem „Time“-Wert, der aktuellen
Zeit.
Die Zeitpunkte werden in Stunden und Minuten
umgewandelt.
Anschließend werden sie in einen
String mit dem Format (HH:MM) umgewandelt.
Alle anderen Zeitpunkte werden ebenso behandelt. Zu deren Berechnung wird aus der Spanne (24 mal 3600 Sekunden) ein Drittel von
dem Endwert abgezogen bzw. ein Drittel der Startzeit addiert.
Da sieben Werte für die X-Achse vorgesehen sind, werden die fehlenden mit einem leeren String
gefüllt.
Das Ergebnis wird über „X-Scale Grid Names“ ausgegeben.
Darstellungsart 2: Drei Tage
Die Darstellungsform „drei Tage“ wurde gewählt, um die Entwicklung der Partialdrücke über ein Wochenende betrachten zu können.
Als Auflösung wird, sofern nicht anders angegeben,
4320 Werte (= Minuten) als interner Wert definiert.
Startwert ist 1 (Eins).
Scale Show AutoScan Masses.vi - Seite 139
Die Zeitspanne wird mit 24 multipliziert mit drei, multipliziert mit
einer Stunde (3600 Sekunden) berechnet.
Zur Darstellung auf der X-Achse werden vier Werte definiert. Die
ersten drei Bereiche enthalten das Datum, während dem vierten (hier:
Zeitpunkt) die aktuelle Zeit zugeordnet wird.
Die Umsetzung erfolgt wie oben beschrieben.
Die Ausnahme stellt hierbei die Zeit dar. Sie
wird aus der letzten Zeitangabe gewonnen.
Die Umsetzung in einen String erfolgt analog zu der Umsetzung des
Datums mit dem Unterschied, daß die
Trennzeichen bei der Zeitangabe ein
Semikolon (:) sind, während beim
Datum ein Punkt (.) benutzt wird.
Die Berechnung erfolgt über den Abzug jeweils eines Drittels der
Spanne bzw. zweimal eines Drittels vom Endzeitpunkt (Time).
Darstellungsart 3: Sieben Tage
Die interne Auflösung wird mit 10080 Werten (=
Minuten) festgelegt. Startwert ist 1 (Eins).
Die Berechnung der Zeitspanne ergibt sich aus der
Multiplikation von sieben Tagen mit 24 Stunden mit einer Stunde
(3600 Sekunden).
Startwert der Betrachtung ist Endpunkt (Time) minus dem Ergebnis
der obigen Multiplikation.
Zur Bezeichnung der X-Achse werden alle sieben Anzeigemöglichkeiten belegt. Jede Anzeige bezeichnet den Zeitraum eines Tages.
Demnach enthält jede Anzeige ein Datum.
Das Datum wird, wie oben beschrieben, umgesetzt.
Anschließend erfolgt die Umwandlung in
einen String. Als Trennzeichen wird ein
Punkt eingesetzt. Das Anzeigeformat sieht
wie folgt aus: DD.MM.
Die Berechnung des Datums am Tag vorher erfolgt über die jeweilige Subtraktion einer zuvor berechneten Konstanten vom Endwert
(Time). Ein Tag hat 86400 Sekunden. Durch die ganzzahligen Vielfachen ergeben sich die Daten für die vorherigen Tage.
Scale Show AutoScan Masses.vi - Seite 140
Die berechneten Daten werden in einem Array zusammengefaßt und über „X-Scale Grid Names“ ausgegeben.
Der berechnete Beginn und durch
„Time“ das eingegebene Ende der Betrachtung sind die Eckdaten für den
„X-Scale Style“. Die Schrittweite wird
mit 1 (Eins) angegeben.
Aus „Time“ und dem jeweils berechneten
Startwert, der aus der gewählten Zeitspanne
resultiert, werden durch Umsetzung die Werte
für „Date (from - to)“ gewonnen.
Diese Werte müssen in einen
String umgewandelt werden.
Die beiden Strings werden, durch
ein <CR> (Carriage Return) getrennt, ausgegeben.
Die Zeitpunkte für die Änderungen der AutoScan-Konfiguration
sollen bestimmt werden.
Aus der Datei „Scan.ini“ werden die Zeiten der
durchgeführten Änderungen selektiert (Bei jeder
Änderung der AutoScan-Konfiguration wird automatisch der Zeitpunkt der Änderung mit gespeichert). Die Größe dieses Arrays wird bestimmt.
Die erste Änderung muß herausgefunden werden, die in dem betrachteten Zeitraum stattgefunden hat.
Hierzu wird von der Größe des Arrays, in dem die Änderungszeitpunkte enthalten sind, in einer
WHILE-Schleife deren Index abgezogen.
Durch die „Index Array“-Anweisung erhält man somit die letzte Änderung, die vorletzte, ... usw.
Scale Show AutoScan Masses.vi - Seite 141
Die WHILE-Schleife wird so lange wiederholt, bis keine Änderungswerte mehr vorhanden sind (der betrachtete Zeitraum ist größer,
als die Anzahl der aufgezeichneten Daten) oder ein Datum gefunden
wurde, das vor dem Beginn des zu betrachtenden Zeitraums liegt.
Der zu diesem Zeitpunkt relevante Index der WHILE-Schleife wird
nach außen geführt.
Im zweiten Fall (Änderung gefunden) muß der gefundene Zeitpunkt
inkrementiert werden, da nur die Änderungen innerhalb des betrachteten Zeitraums interessant sind, die WHILE-Schleife aber erst beim
Finden des ersten außerhalb des Zeitraums liegenden Änderungszeitpunkt gestoppt hat. Im ersten Fall (keine Daten mehr verfügbar) wird
der Wert zur Vermeidung von Unstimmigkeiten auf 0 (Null) gesetzt.
Die Größe des aus der Datei „Scan.ini“ gelesenen
Arrays wird bestimmt.
Zur weiteren Verwendung
sind nur die Änderungsdaten nötig, die innerhalb des betrachteten Zeitraumes liegen. Alle anderen Daten werden mit der „Array Subset“-Anweisung gelöscht.
Als Anfangspunkt des Arrays und zu dessen Reduktion wird der
oben gewonnene Wert genutzt.
Aus dem resultierenden Array werden die benötigten Informationen
mit Hilfe der „Select Array-row.vi“ selektiert:
Die Zeitpunkte der Änderungen
befinden sich in der ersten Spalte
(0) des Arrays.
Der maximale Druck (dies entspricht der kleineren Zahl) befindet sich in Spalte Neun (9). Die
einzelnen Werte sind nicht entscheidend. Um
alle gemessenen Werte später anzeigen zu können, muß der kleinste
je gewählte Wert benutzt werden. Dieser wird durch die Funktion
„Array Max & Min“ herausgefunden.
Gleiches gilt für den minimalen Druck (dies
entspricht der größeren Zahl). Auch hier wird
die „Array Max & Min“-Funktion benutzt, um
den größten Wert herauszufinden.
Die Druckwerte werden in einem Array zusammengefaßt und über „Y-Scale“ ausgegeben.
Scale Show AutoScan Masses.vi - Seite 142
Datei:
Speicherformat:
scan.ini
- Array
- Neue Einstellungen werden hinten angehängt
- Eine Einstellung besteht aus:
n
n
n
Beschreibung:
Datum/Uhrzeit der Änderung (in Sekunden, „universal time“)
sieben Massen (nicht genutzte Plätze = 0)
Druckbereich (min./max. Wert)
Diese Datei enthält die Daten, welche Massen zyklisch überprüft werden sollen (Beispiel: 16 für Sauerstoff, 14 für Stickstoff,...). Es können
maximal sieben Massen eingestellt werden.
Die Datei wird von „Set AutoScan Masses“ um eine Änderung erweitert
und von „Get AutoScan Masses“ gelesen.
Diese Datei wird im Setup erzeugt. Alle Überwachungsplätze werden
hierbei auf null (keine Messung) gesetzt.
Scan.ini - Seite 143
Programm:
Section Central-Cluster.vi
Section Endhouse 1.vi
Section Endhouse 2.vi
Eingabe:
-
Ausgabe:
-
Kurzbeschreibung:
Konfiguration der Sektion
Bedienung:
Vom Hauptbildschirm aus gelangt man durch „Configuration“ in
dieses Programm. Je nachdem, welche Sektion in der man sich befindet im „Setup“ angegeben wurde, erhält man das Titelbild der
Sektion Zentralhaus, Endhaus 1 oder Endhaus 2.
Die Programme sind bis auf eine Besonderheit beim Zentralhaus
identisch. Hier werden die unterschiedlichen Skizzen dargestellt, die
Programmdokumentation erfolgt nur einmal stellvertretend für alle
drei Programme.
Section CC - EH1 - EH2.vi - Seite 144
Dies ist die Skizze der möglichen Konfigurationen in der Sektion
Zentralhaus. Es stehen, im Gegensatz zu den anderen Sektionen, 18
Konfigurationen zur Verfügung.
Diese Skizze wird in der Sektion Endhaus 1 für die Konfiguration
gezeigt. Es stehen maximal 16 Plätze zur Belegung frei.
Achtung: Das in der Sektion Zentralhaus 18 Möglichkeiten zur Konfiguration zur Verfügung stehen, ändert nichts an der Tatsache, daß
nur 16 aufgrund der 16 vorhandenen Ports am Rechner genutzt werden können!
Das nächste Bild zeigt eine Skizze der Sektion Endhaus 2. Auch hier
stehen, wie in der Sektion Endhaus 1, 16 Plätze zur Konfiguration
zur Verfügung.
Diese Bilder geben den aktuellen Zustand wieder. Änderungen sind
in ihnen nicht wirksam.
In diesen Beispielen sind alle Plätze mit „no connection“ belegt, was
bedeutet, daß noch kein Meßgerät plaziert wurde.
Section CC - EH1 - EH2.vi - Seite 145
Die eigentlichen Eingabeelemente befinden sich auf der rechten Seite
des Bildschirms.
In diesem Feld werden die Konfigurationsplätze belegt:
Wird dieses Programm zum
ersten Mal aufgerufen, erscheint
oben der Hinweis „First Configuration“. Ist bereits einmal eine
Konfiguration vereinbart worden, nur „Configuration“.
Vorgehensweise bei der Konfiguration:
Beim Anschluß der Meßgeräte
(Massenspektrometer
oder
Drucksensoren) sollte notiert
werden, an welchen Positionen
diese eingesetzt werden und
welche Anschlüsse beim Rechner benutzt wurden.
Diese Informationen werden dann in diese Skizze übertragen:
Section CC - EH1 - EH2.vi - Seite 146
Man wählt mit „Position-Number“ die Positionsnummer aus der
Skizze, an der ein Meßgerät definiert werden soll. Die gewählte Position wird rot hinterlegt.
Eventuell schon vorhandene Einstellungen werden in den Positionen
darunter angezeigt. Ist keine Einstellung vorhanden (no connections),
sind die Eingabeelemente grau dargestellt.
Der Anschluß zum Rechner muß festgelegt werden. Durch Drücken
des grünen Pfeils rechts neben „COM-Port-Number“ wird diese inkrementiert. Dies wird so lange wiederholt, bis die gewünschte PortNummer erreicht wurde. Wird die maximal zulässige Anzahl an verfügbaren Ports überschritten (18), wird wieder von vorn begonnen
(2).
Nach der Festlegung des Ports folgt darunter die Eingabe der Hardware. Auch hier wird mit dem grünen Pfeil links daneben die verfügbare Hardware weiter geschaltet, bis das gewünschte Meßinstrument
erscheint. Es besteht die Wahl zwischen:
• kein Anschluß
• Massenspektrometer ohne Multiplier
• Massenspektrometer mit Multiplier
• Pirani-Meßröhre
• Penning-Meßröhre
Jeweils vier Drucksensoren werden von einem TPG300 verwaltet.
Hier stehen die Anschlüsse A1, A2, B1 und B2 zur Verfügung. A
und B kennzeichnen zwei verschiedene Einschübe mit je zwei Anschlüssen im TPG300.
Wurde ein Drucksensor gewählt, muß unter „TPG300 Channel“ der
Anschluß spezifiziert werden. Auch dieses geschieht durch den
Druck auf den grünen Pfeil links neben der Anzeige, bis der gewünschte Anschluß erscheint.
Die Massenspektrometer und, in einem Ausnahmefall auch die Penning-Drucksensoren sind von anderen Drucksensoren abhängig geschaltet. Sie dürfen nur eingeschaltet werden, wenn der Druck an den
spezifizierten Sensoren geringer ist als ein definierter Schwellwert.
Unter „Connections“ werden zwei (!) Drucksensoren als abhängige
Parameter definiert. Unter „Old“ werden frühere Konfigurationen
angezeigt. Bei „New“ können neue Positionsnummern von Meßgeräten aus dem Bild eingetragen werden.
Mit „Accept“ werden die neuen Werte übernommen.
Pirani-Drucksensoren benötigen keine vorgeschalteten Meßgeräte.
Section CC - EH1 - EH2.vi - Seite 147
Es dürfen keine Drucksensoren von sich selbst anhängig gemacht
werden! Es entsteht sonst eine Endlosschleife.
Es müssen immer beide Drucksensoren definiert werden! Sind in der
unmittelbaren Umgebung eines Massenspektrometers nicht zwei
Drucksensoren verfügbar, die eine sinnvolle Abhängigkeit ergeben,
wird zweimal derselbe Drucksensor angegeben. Dieser Fall sollte die
Ausnahme bleiben!
Nach der Eingabe aller Informationen kann durch die Wahl einer anderen Positionsnummer von vorn begonnen werden.
Durch das Drücken von „DONE“ werden die neuen Konfigurationen
gespeichert und dieses Programm verlassen. Vor dem Speichern erscheint ein Dialogfenster, in dem gefragt wird, ob die alten Einstellungen tatsächlich überschrieben werden sollen.
Das Betätigen des „Quit“-Buttons führt zum Verlassen des Programms ohne Speicherung. Es wird vorher mit einem Dialogfenster
darauf aufmerksam gemacht, ob die neuen Einstellungen tatsächlich
verworfen werden sollen.
Unter dem Kasten befindet sich die Anzeige
„Set Multiplier Gain Factor“. Hier können,
stellvertretend für alle Messungen, die Multiplier aller Massenspektrometer, die mit einer solchen Applikation
ausgestattet sind, eingestellt werden. Mögliche Einstellungen sind
hierbei:
• Multiplier aus (siehe Bild)
• Faktor E2 (= *100)
• Faktor E3 (= * 1000)
In diesem Konfigurationsprogramm werden die
Massen für die automatische Überwachung
(AutoScan) festgelegt. Dieser Programmteil ist über
den Schalter „Set AutoScan Masses“ oben rechts zu erreichen.
Programmbeschreibung: Der Pfad zu der Datei „Port.all“
wird definiert. Mit der Funktion
„File/ Directory Info“ wird die Größe dieses Files festgestellt. Ist es
kleiner als 10 Bytes, handelt es sich
um die erste Konfiguration, die erstellt wird.
Im folgenden wird das Programm „Section Central-Cluster.vi“ als
Vorlage für die Dokumentation genommen. Der einzige Unterschied
Section CC - EH1 - EH2.vi - Seite 148
zu den anderen Programmen besteht in der Anzahl der Konfigurationsmöglichkeiten (16 statt 18).
Die Anzeige „Configuration“ bzw.
bei der ersten Konfiguration „First
Configuration“ wird auf blinkend
umgeschaltet.
Handelt es sich um die erste Konfiguration, wird dem blinkenden Indikator
der entsprechende Text zugeordnet
(unten).
Ein Array zur Aufnahme der Konfigurationen wird initialisiert.
War bereits eine Konfiguration vorhanden, wird diese geladen und mit
der Funktion „Convert Config-Data
to file.vi “ in ein darstellbares Format
gebracht.
Der Text „Configuration“ wird angezeigt.
Das geladene und auch das beim ersten Aufruf der Konfiguration
erzeugte Array enthalten insgesamt 18 (16) einzelne Konfiguration.
Alle haben inhaltlich denselben Aufbau:
• Positionsnummer
• Port-Nummer
• Hardware
• Anschluß des Drucksensors
• Drucksensor 1 (abhängig)
• Drucksensor 2 (abhängig)
Um die einzelnen Daten verändern zu können, wird das 2D-Array in
einzelne Arrays aufgeteilt, die jeweils eine Kategorie der
oben genannten Informationen enthalten. Die Trennung wird
mit der Funktion „Select Array-line.vi“ erreicht.
Die Änderung/Erstellung der Konfigurationen erfolgt in einer WHILE-Schleife.
Alle Arrays werden auf Shift-Register geführt.
Section CC - EH1 - EH2.vi - Seite 149
Folgende Reihenfolge wird dabei eingehalten (von oben nach unten):
• Hardware + Markierung (Anzeige)
• Markierungsindex
• Hardware
• Port-Nummer
• TPG300-Anschluß
• Drucksensor 1
• Drucksensor 2
Section CC - EH1 - EH2.vi - Seite 150
Die Hardwarekonfigurationen (ganz oben) werden zur Darstellung in
einen Cluster umgewandelt und in der Skizze der Sektion eingetragen. Wichtig ist die Einstellung „Cluster Size“ gleich 36 (32)
Elemente. Die erwähnte Markierung ist eine Rot-Einfärbung
der gerade bearbeiteten Position.
Die Skizze der jeweiligen Sektion mit den HardwareAnzeigeelementen und den „Color Boxen“, die zur Markierung in
der Farbe wechseln, sind in einem Cluster untergebracht (deshalb die
Umwandlung in einen Cluster).
Die „Cluster Order“, also die Reihenfolge der Anzeigeelemente im
Cluster, beginnt bei 0 (null) bei dem Hardwareelement eins in aufsteigender Reihenfolge und bei 18 (16) bei der „Color Box“ zum
Hardwareelement eins.
Zur Bearbeitung wird der Cluster zurück in ein Array umgewandelt. Hier ist keine Einstellung von „Cluster Size“ notwendig.
Die gewählte Positionsnummer wird wegen des Zählbeginns bei null
im Cluster dekrementiert. Der Markierungsindex wird um 18 (16)
erhöht, da die Markierungen erst in diesem Bereich beginnen.
Die „Color Box“ der gewählten Position wird rot gefärbt.
Hierzu wird das durch den Markierungsindex definierte
Element durch die Farbkonstante „rot“ ersetzt.
Diese Änderung wird auf der linken Seite bei der alten
Position wieder aufgehoben. Die Farbe wird in die Hintergrundfarbe gewechselt und das Element damit unsichtbar gemacht.
Die Hardwareanzeige wird auf den aktuellen Wert geändert. Hier wird der inkrementierte Wert der Position benutzt. Die Hardwareeinstellungen sind in einem „Text
Ring“ definiert. Es handelt sich hierbei um eine Liste von
Texten die wählbar sind, denen intern Zahlen zugeordnet
sind und auch nur als solche behandelt werden.
Nach dem Ersetzen der Elemente wird das Array zurück in einen Cluster gewandelt und zur Anzeige gebracht.
Die inkrementierte Positionsnummer wird durch das gesamte Programm geschliffen. Jedes Element und damit jede Änderung baut auf
dieser Ziffer auf. Im folgenden wird ein durch die Positionsnummer
indexiertes Element nur noch das gewählte Element oder das indexierte Element genannt
Section CC - EH1 - EH2.vi - Seite 151
Aus dem Hardwarearray wird das indexierte Element gelöst.
Es wird überprüft, ob der „grüne Pfeil“ gedrückt wurde. Durch
den Pfeil soll die nächste Konfigurationsmöglichkeit (das nächste Meßgerät) angezeigt werden. Hierzu muß die Kennziffer
beim Drücken des Schalters inkrementiert werden.
Wurde der Pfeil gedrückt,
erfolgt ein Vergleich, ob
die bisherige Hardwarekonfiguration bereits die
höchste Kennziffer, den
Wert vier, erreicht hat. Ist
das Ergebnis wahr, wird wieder mit 0 (null) begonnen,
hierzu muß zu dem ursprünglichen Wert -4 addiert
werden. Andernfalls wird der ursprüngliche Wert inkrementiert.
Wurde der Button nicht gedrückt, bleibt die Konfigurationsnummer
bestehen, es wird 0 (null) addiert.
Die neue Konfiguration wird angezeigt und in das
Hardwarearray eingefügt. Gleichzeitig wird die neue
Hardwarekennziffer auch in das Darstellungsarray eingefügt (s.o.).
Abhängig von der gewählten Hardware werden einige Anzeigen ausgeschaltet und grau dargestellt. Diese Einstellungsmöglichkeiten
werden bei der gewählten Hardware nicht benötigt:
0 - keine Hardware: alle Elemente
1 - Massenspektrometer ohne Multiplier: der TPG300-Anschluß
2 - Massenspektrometer mit Multiplier: Der TPG300-Anschluß
3 - Pirani: alle abhängigen Drucksensoren
4 - Penning: kein Element wird ausgeschaltet
Der Penning-Sonderfall wurde oben bereits besprochen.
Dieses Ein- bzw. Ausschalten der Eingabeelemente ist über eine
CASE-Anweisung realisiert.
Die Funktionsweise der Eingabe der Port-Nummer ist analog dem
bei der Hardware beschriebenen Verfahren. Es sind 18 Ports an jedem Rechner vorhanden. Benutzt werden die Ports aber erst ab Port
zwei.
Section CC - EH1 - EH2.vi - Seite 152
Es erfolgt also eine Überprüfung, ob beim Drücken
des „grünen Pfeils“ Port 18
bereits erreicht ist. Wenn
ja, wird der Port um -16
auf zwei gesetzt.
Diese Änderung wird angezeigt und in das Array
übernommen.
Die Änderung des TPG300-Anschlusses funktioniert ebenso.
Hier gibt es vier Wahlmöglichkeiten. Die Überprüfung erfolgt also auf
Element drei. Der Anschluß wird so lange inkrementiert, bis drei erreicht ist, dann wird er
auf null zurückgesetzt.
Es handelt sich auch hierbei um einen „Text Ring“. Folgende Anschlüsse sind den Ziffern zugeordnet:
1 - TPG300 - A1
2 - TPG300 - A2
3 - TPG300 - B1
4 - TPG300 - B2
Bei der Angabe der abhängigen Drucksensoren („Connections“)
wurde bei der Programmierung ein anderes Konzept verfolgt:
Die alten Elemente werden aus dem Array gelöst und durch die Indikatoren unter „Old“ angezeigt.
Erst durch das Drücken von „Accept“
werden die neuen Positionsnummern,
die direkt eingegeben werden können, in
das Array übernommen.
Solange „Accept“ nicht gedrückt ist,
werden die neu eingegebenen Werte
zwar unter „New“ angezeigt, aber noch
die alten Werte in das Array geschrieben.
Section CC - EH1 - EH2.vi - Seite 153
Es werden beide Angaben gleichzeitig geändert. Soll nur eine Angabe geändert werden, muß in die zweite Position unter „New“ derselbe Wert wie in „Old“ vorhanden eingegeben werden.
Das Drücken des Schalters „Set AutoScan Masses“ hat zur Folge, daß
das Programm „Set AutoScan Masses.vi“ aufgerufen wird.
Die Eingabe von „Set Multiplier Gain
Factor“, auch wieder ein „Text Ring“,
wird direkt übernommen. Nach Beendigung der WHILE-Schleife
(s.u.) wird immer die aktuelle Einstellung gespeichert.
Hierzu wird die „Vacuum.ini“ geöffnet und deren Inhalt gelesen.
In Zeile eins in der Position null wird der neue Wert für
den Gain Factor abgelegt.
Das neue Array wird wieder als „Vacuum.ini“ gespeichert.
Wird der „Quit“Button gedrückt, wird
nachgefragt, ob das
Programm tatsächlich
verlassen werden soll,
ohne die Einstellungen
zu speichern.
Wird in der angezeigten Dialogbox „OK“ gedrückt, erfolgt der Ausstieg aus diesem Programm, wird „Cancel“ gedrückt, passiert nichts.
Das Anklicken des
„Done“-Buttons
führt zum Speichern
der Einstellungen. Es
wird vorher noch
einmal gefragt, ob
die alte Konfiguration überschrieben werden soll.
Wird in der angezeigten Dialogbox „OK“ gedrückt, wird das Programm beendet und die Daten werden gespeichert. Wird statt dessen
„Cancel“ gedrückt, passiert nichts.
Section CC - EH1 - EH2.vi - Seite 154
Ein Array wird erzeugt, das die Positionsnummern
enthält. Dieses Array muß noch inkrementiert werden, da die Positionsnummer bei eins beginnen.
In der Sektion Zentralhaus wird ein Array mit 18
Ziffern erzeugt, in den anderen Sektionen ein Array
mit 16 Ziffern.
Alle Arrays werden in der oben beschriebenen Reihenfolge zu
einem einzigen 2D-Array zusammengesetzt. Alle Konfigurationen liegen nun spaltenweise übereinander.
Wurde der „Done“-Button gedrückt, und
die Daten sollen abgespeichert werden,
wird das erzeugte Array durch die Funktion „Convert Config-Data to File.vi“ umgesetzt und anschließend als neue
„Port.all“-Datei abgespeichert.
Section CC - EH1 - EH2.vi - Seite 155
Programm:
Security Penning.vi
Eingabe:
Port Number
Location
Port Info
Ausgabe:
OK!
Penning
Kurzbeschreibung:
Überprüfung des Druckes bei Pirani-Meßröhren, in deren Abhängigkeit Penning-Drucksensoren eingeschaltet werden
Programmbeschreibung: Die Eingabe der „Port Info“ ist
optional. Es wird überprüft, ob eine Verbindung hergestellt wurde.
Ist die Größe des Arrays gleich 0
(Null) muß die Port-Konfiguration
noch geladen werden.
Hierzu wird die „Port.sys“
geladen.
Sind in „Port Info“ Informationen enthalten, werden diese benutzt.
Aus der „Port Info“
wird die Konfiguration
herausgesucht, in der
das
angesprochene
Meßgerät enthalten ist.
Dazu werden die PortNummer und der Anschluß mit den Daten in
der Konfiguration verglichen.
Um eine Endlosschleife zu verhindern, erfolgt zusätzlich die Abfrage, ob nicht das Ende der Liste schon erreicht wurde.
Die Positionsnummer im „Port Info“-Array wird benötigt.
An der Position 2 in der Konfiguration steht die Kennziffer der angeschlossenen Hardware. Eine Penning-Meßröhre trägt die Kennziffer
4 (Vier).
Es erfolgt die Abfrage, ob es sich um diese Kennziffer handelt. Trifft dies zu, wird der Ausgang
„Penning“ auf true gesetzt.
Security Penning.vi - Seite 156
Normalerweise sind die Penning-Meßröhren hardwaremäßig verriegelt. In jedem TPG300 sind sowohl Penning- als auch PiraniMeßröhren untergebracht. Somit können durch die Definition von
Schwellwerten innerhalb des TPG300 die Pennings in Abhängigkeit
von den Pirani-Meßröhren eingeschaltet werden.
Es gibt eine Ausnahme: In einem TPG300 sind ausschließlich Penning-Drucksensoren untergebracht. Ein gegenseitige Verriegelung ist
demnach durch die Hardware nicht möglich: Die Verriegelung muß
durch die Software realisiert werden.
In der Konfiguration können die Drucksensoren eingegeben werden,
von denen das Einschalten der Massenspektrometer abhängig ist, und
ebenso können bei Penning-Meßröhren Pirani-Drucksensoren definiert werden. Zweckmäßigerweise sollte dies nur bei dem oben angesprochenen TPG300 durchgeführt werden, da das doppelte Abfragen
von Meßgeräten sonst zuviel Zeit kostet.
Ob eine Abfrage von weiteren Drucksensoren
stattfinden soll wird entschieden, wenn an den
Positionen 4 und 6 in der Konfiguration, die die
Port-Nummern der Pirani-Meßröhren definieren,
Werte eingetragen sind, die ungleich 0 (Null) sind
(Port 0 kommt nicht vor).
Sind alle Bedingungen erfüllt, wird eine zusätzliche Messung gestartet.
LabVIEW akzeptiert keine rekursiven Funktionen, daher muß der
Inhalt des Programms „Read TPG300 (pressure).vi“ hier erneut eingefügt werden.
Die Port-Nummer ist bereits vorhanden, fehlt noch der
Anschluß. Dieser steht in der Konfiguration an Position
5, bzw. an Position 7.
Der weitere Inhalt der CASE-Anweisung soll nicht noch einmal erläutert werden. Die Beschreibung ist analog der des oben bereits erwähnten Programms „Read TPG300 (pressure).vi“.
Der gemessene Druck beider Messungen muß unter 1,0E-4
mbar liegen, damit der Ausgang „OK!“ auf true geschaltet wird
und damit die Messung an der Penning-Meßröhre freigegeben wird.
Laut Hersteller soll der Kaltkathoden-Meßkreis nicht bei einem
Druck über 1E-3 mbar eingeschaltet werden, um eine übermäßige
Verschmutzung zu vermeiden. Die Wahl, das Einschalten erst ab einem Druck von 1E-4 mbar zu gewähren, dient als
Security Penning.vi - Seite 157
„Sicherheitsabstand“. Dieser ist möglich, da die Pirani-Meßröhren
bis zu einem Druck von 1E-4 mbar messen und danach in
„Underrange“ schalten.
Waren eine oder mehr Bedingungen für die Durchführung einer Zusatzmessung nicht erfüllt, wird „OK!“ auf true gesetzt, da davon auszugehen ist, daß, sofern es sich um eine Penning-Meßröhre handelt,
diese durch eine hardwareseitige Verriegelung aktiviert wird.
Security Penning.vi - Seite 158
Programm:
Security Pressure.vi
Eingabe:
Pressure Limit
Quadrupole Information
Index
Read new?
Ausgabe:
Pressure OK
Multiplier
Kurzbeschreibung:
Überprüfung des Druckes bei Drucksensoren oder Lesen aus einem
File, in dessen Abhängigkeit Massenspektrometer eingeschaltet werden
Programmbeschreibung: Mit Hilfe des Indexes werden aus der „Quadrupole Information“, die
die Konfiguration des aktuell gewählten Massenspektrometers enthält, die Informationen über die abhängigen Drucksensoren selektiert. Merke: „Quadrupole Information“ enthält von der allgemeinen
Konfiguration abweichende Daten!
An Position 2 und 3 im „Quadrupole Information“-Array
sind die Port-Nummer und der Anschluß des ersten
Drucksensors, der überprüft werden soll, enthalten.
An Position 4 und 5 befinden sich die Port-Nummer und
der Anschluß des zweiten Drucksensors.
Ist der Eingang „Read new?“ gleich true, werden diese
Daten benutzt, um mit Hilfe der Funktion „Read TPG300
(pressure).vi“ den Druck an den definierten Drucksensoren zu messen.
Weiterhin wird aus dem „Quadrupole Information“Array die Information über den Zustand des Multipliers gewonnen. Diese befindet sich an Position 1 im
Array. Das Ergebnis (vorhanden/ nicht vorhanden)
wird über „Multiplier“ ausgegeben.
Die Entscheidung, ob ein Druckmeßwert ausreichend klein gewesen
ist, um das gewählte Massenspektrometer einzuschalten, wird über
den Eingang „Pressure Limit“ definiert. Der Eingang enthält den
Wert, der bei eingeschaltetem Multiplier nicht überschritten werden
darf (Hersteller: 2,0E-6 Torr; gewählt: 5,0E-7 mbar).
Die Information über den Zustand des
Multipliers
beläßt
diesen
Wert
(Multiplier ein) oder multipliziert ihn
mit 100 (Multiplier aus).
Security Pressure.vi - Seite 159
Sind beide Meßergebnisse kleiner als dieses
Limit, wird „Pressure OK“ gleich true gesetzt. Somit wird das gewählte Massenspektrometer zur Messung freigegeben.
Ist der Eingang „Read new?“ gleich false, soll also kein neuer Wert
gemessen werden, werden die Ergebnisse aus den Routinemessungen
des Druckes zur Entscheidung, ob ein Massenspektrometer eingeschaltet werden soll, herangezogen.
Der Pfad zu den statistischen Daten wird definiert und aus der Liste der
vorhandenen Files das
letzte (das aktuellste) ausgewählt.
Die Datei wird geöffnet und deren Größe bestimmt. Mit „Index
Array“ Index = 0 wird die Anzahl der vorhandenen Meßdurchläufe (plus Positionsnummern) festgestellt, mit dem Index
= 1 die Anzahl der einzelnen Messungen.
Der Anzahl der Messungen ist die Meßzeit vorangestellt. Diese wird
durch das Dekrementieren des Arrays und dem Beginn des Ausschneidens bei der Position 1 eliminiert.
Es soll nur die letzte Messung betrachtet werden, daher wird die
Größe der Anzahl der Meßdurchläufe um zwei dekrementiert und
diese letzten beiden Zeilen selektiert.
In dem so entstandenen Teilarray sind in Zeile 0 die
Meßdaten und in Zeile 1 die Positionsnummern aus der
Konfiguration zugeordnet. Durch die Funktion „Select
Array-line.vi“ werden die Zeilen voneinander getrennt.
Um die gültigen Meßwerte herausfinden zu
können, müssen zunächst die Positionsnummern bestimmt werden. Diese können aus
der Konfiguration gewonnen werden. Der
Einfachheit halber wird die „port.all“-Datei,
die alle Konfigurationen enthält, geöffnet.
Zur Bestimmung der Positionsnummer muß jede Konfiguration in
der Datei mit den bereits vorhandenen Daten (Port-Nummer, Anschluß, Pirani/ Penning) verglichen werden.
Security Pressure.vi - Seite 160
Die Datei liegt als 2DArray vor. Jede Spalte
entspricht einer Konfiguration und damit
einer Positionsnummer.
Ein
Shift-Register
wird erzeugt. In ihm
wird das Ergebnis gespeichert.
Der Index der WHILE-Schleife kennzeichnet die Spalte. Auf Position eins (links oben) der Konfiguration befindet sich die PortNummer, sie wird mit der des Meßgerätes verglichen (siehe oben,
Quadrupole Information).
Position drei (links Mitte) enthält den Anschluß, hier erfolgt ebenfalls der Vergleich mit dem Wert aus „Quadrupole Information“.
An Position zwei in der Konfiguration ist die angeschlossene Hardware definiert. Diese sollte, wenn es sich um einen Drucksensor
handelt, mit der Kennziffer drei oder vier (größer drei) belegt sein.
Treffen diese drei Bedingungen zu, wird es sich um das gesuchte
Meßgerät handeln. Der Position null kann die Positionsnummer entnommen und im Shift-Register gespeichert werden.
Die WHILE-Schleife wird abgebrochen, sobald eine gültige Positionsnummer gefunden wurde. Zusätzlich ist eine Sicherheitsabfrage
eingebaut: Wenn der Index größer ist als die Anzahl
der vorhandenen Konfigurationen, wird die Schleife
ebenfalls abgebrochen.
Diese Überprüfung erfolgt für beide Drucksensoren.
Die gefundene Positionsnummer wird in dem
Array mit den Positionsnummern, das bei der
Messung der Drücke gebildet wurde, verglichen.
Die Position, an der die Positionsnummer dann gefunden wurde (mit
Hilfe der Funktion „Number of search number in an Array.vi“), wird
als Eingang für eine „Index Array“-Anweisung benutzt, die dann den
zugehörigen Meßwert aus dem anderen Array herausgefiltert. Diese
Werte werden nach dem oben beschriebenen Verfahren mit dem
Limit verglichen.
Security Pressure.vi - Seite 161
Programm:
Select a line or column from a 2D-string-Array.vi
Eingabe:
Input Array (2D)
Number of Line/ Column
Line/ T = Coloumn
Ausgabe:
Selected Array (1D)
Kurzbeschreibung:
Selektion einer Zeile/ einer Spalte eines 2D-Arrays, bestehend aus
Strings
Programmbeschreibung: Die Größe des eingegebenen Arrays wird bestimmt. Da es sich um
ein 2D-Array handelt, ist die Ausgabe der „Array Size“-Anweisung
ein 1D-Array mit den beiden Größenangaben.
Mit dem Schalter „Line“ wird aus dem String-Array entweder eine
Zeile selektiert (false) oder eine Spalte (true).
„Line“ = false
Aus der Größe des 2DArrays wird die Größe der
Zeilen selektiert. Und dies
als Parameter einer FORSchleife genutzt.
Jedes Element aus der mit
„Number of line/ column“
definierten Zeile wird aus
dem Array gelöst.
Am Ausgang der FOR-Schleife wurde „enable indexing“ gewählt, so
daß ein Array aus den Elementen der Zeile des 2DArrays entsteht. Das Ergebnis wird über „Selected
Array ausgegeben“.
Ebenso wird mit der Selektion einer Spalte verfahren
(„Line“ = true).
Select a line or column from a 2D-string-Array.vi - Seite 162
Programm:
Select Array-line.vi
Eingabe:
Input Array
Line number
Ausgabe:
Output Array
Kurzbeschreibung:
Selektion einer Zeile eines Arrays.
Programmbeschreibung: Die Größe des 2D-Arrays wird bestimmt. Die Ausgabe der „Size“Funktion ist ein 1D-Array. Der erste Wert beschreibt immer die Anzahl der Elemente in Y-Richtung, der zweite Wert die Anzahl der
Elemente in X-Richtung.
Eine Zeile, definiert durch „Line Number“, wird als Konstante behandelt, während der Index in einer FOR-Schleife als Variable genutzt wird, um alle Elemente dieser Zeile zu selektieren.
Durch die Wahl von „enable indexing“ am Ausgang der FORSchleife, wird aus diesen Werten ein 1D-Array gebildet, das in
„Output Array“ ausgegeben wird.
Wichtig: Während die „Size“-Funktion die Anzahl der Elemente liefert (1, 2, 3,...), definieren alle anderen ArrayFunktionen das erste Element eines Arrays als das Element 0 (null)!
Die Realisation über eine FOR-Schleife ist nur eine übersichtlichere Lösung als die „Array Subset“-Funktion, hat aber
denselben Effekt. Der Programmieraufwand ist derselbe.
Select Array - line.vi - Seite 163
Programm:
Select array-row.vi
Eingabe:
Input Array
Row Number
Ausgabe:
Output Array
Kurzbeschreibung:
Selektion einer Spalte eines Arrays.
Programmbeschreibung: Die Größe des 2D-Arrays wird bestimmt. Die Ausgabe der „Size“Funktion ist ein 1D-Array. Der erste Wert beschreibt immer die Anzahl der Elemente in Y-Richtung, der zweite Wert die Anzahl der
Elemente in X-Richtung.
Eine Spalte, definiert durch „Row Number“, wird als Konstante behandelt, während der Index in einer FOR-Schleife als Variable genutzt wird, um alle Elemente dieser Spalte zu selektieren.
Durch die Wahl von „enable indexing“ am Ausgang der FORSchleife, wird aus diesen Werten ein 1D-Array gebildet, das in
„Output Array“ ausgegeben wird.
Wichtig: Während die „Size“-Funktion die Anzahl der Elemente liefert (1, 2, 3,...), definieren alle anderen ArrayFunktionen das erste Element eines Arrays als das Element 0 (null)!
Die Realisation über eine FOR-Schleife ist nur eine übersichtlichere Lösung als die „Array Subset“-Funktion, hat aber
denselben Effekt. Der Programmieraufwand ist derselbe.
Select Array - row.vi - Seite 164
Programm:
Serial Communication - Spectra.vi
Eingabe:
Port Number
Write String
Answer required?
Ausgabe:
Serial Error
Read Timeout
Read String
Kurzbeschreibung:
Kommunikation mit einem Massenspektrometer über eine serielle
Schnittstelle.
Programmbeschreibung: Über die „Port Number“ wird die Initialisierung
des Ports vorgenommen. Falls ein Fehler auftritt,
wird dieser durch den „Simple Error Handler“ bearbeitet.
Ist kein Fehler aufgetreten,
wird der „Write String“ zur
Übertragung in das für das
Massenspektrometer vorgeschriebene
Format
„(xxx)\r“ gebracht (xxx =
Anweisung, \r = Carriage
Return) und über die
Funktion „Serial Port Write“ übertragen.
Wird eine Antwort von dem angesprochenen Massenspektrometer erwartet, also „Answer required?“ gleich
true ist, wird die folgende CASE-Struktur durchlaufen.
Ist kein Fehler aufgetreten,
wird eine WHILE-Schleife so
lange durchlaufen, bis in dem
Ergebnisstring ein (gesendetes)
Carriage Return gefunden
wurde, bis die Anzahl der
<CR> im String ungleich -1
ist.
An dem definierten Port (blaue Signalleitung links) wird festgestellt,
wie viele Bytes dort vorhanden sind. Diese Anzahl wird zusammen
mit einer Konstante für den Timeout des Lesens an die Funktion
Serial Communication - Spectra.vi - Seite 165
„Serial Read with Timeout“ weitergegeben, in der die verfügbaren
Bytes abgerufen werden.
Da nicht unbedingt zu erwarten ist, daß die Antwort des Massenspektrometers bereits vollständig übertragen wurde (das letzte Byte
ist ein <CR>), werden die vorhandenen Daten in einem ShiftRegister gesammelt und erst nach Abschluß der Übertragung ausgegeben.
Vorher wird jedoch das <CR> aus dem
Übertragungsprotokoll gelöscht.
Während der Initialisierung, des Schreibens der Anweisung und des Lesens am Port können Fehler auftreten.
Diese werden über „Read Timeout“, für das Überschreiten der zum Lesen von Daten verfügbaren Zeit, und
„Serial Error“ ausgegeben.
Ein Fehler an der seriellen Schnittstelle läßt sich nicht sofort beheben
oder beeinflussen, tritt aber ein Timeout auf, kann dies z.B. an zu
langen Leitungen liegen oder daran daß das Massenspektrometer eine andere Messung noch nicht abgeschlossen hatte.
Für diesen Fall wird die gesamte Prozedur des Schreibens (und Lesens) noch bis zu zweimal wiederholt, erst dann wird das Programm
abgebrochen und die Fehlermeldung ausgegeben.
Serial Communication - Spectra.vi - Seite 166
Programm:
Serial Communication - TPG300.vi
Eingabe:
Port Number
Write String
Answer
Ausgabe:
Serial Error
Read Timeout
Serial read
Kurzbeschreibung:
Kommunikation mit einem TPG300 über eine serielle Schnittstelle.
Programmbeschreibung: Über die „Port Number“ wird die Initialisierung
des Ports vorgenommen. Falls ein Fehler auftritt,
wird dieser durch den „Simple Error Handler“
bearbeitet.
Ist kein Fehler bei der Initialisierung aufgetreten, wird die durch
„Write String“ definierte Anweisung an das TPG300 geschickt.
Das TPG300 erwartet als Abschluß jeder
Anweisung ein <CR><LF> (= Carriage
Return, Line Feed). Für die String Konstante wurde auf „’\’ Code Display“ umgeschaltet. Dies bedeutet, daß Steuerzeichen angezeigt werden. In diesem Format
werden nun „\r“ für Carriage Return und
„\n“ für Line Feed eingegeben.
Eine zusätzliche Eingabe in der Anweisung entfällt.
Dieser String wird über die serielle Schnittstelle an das TPG300 ausgegeben und eine Fehlerbehandlung mit dem Error Handler durchgeführt.
Nach Erhalt der Anweisung reagiert
das TPG300 mit einer Rückmeldung,
einem Command Acknowledgement.
Dieses
besteht
aus
<ACK><CR><LF>. Oder im Steuercode: „\06\r\n“.
Trat ein Fehler in Form eines „Serial Errors“ oder eines „Read Timeouts“ auf, wird diese Prozedur bis zu dreimal wiederholt. Erst danach erfolgt ein Abbruch.
Serial Communication - TPG300.vi - Seite 167
Wurde keine Antwort erwartet, ist dieses Programm hiermit beendet.
Wird eine Antwort erwartet, z.B. bei der
Anforderung eines Meßwertes, muß dem
TPG300 die Anweisung <ENQ> (=
Equiry, Anforderung zur Datenübertragung) mitgeteilt werden. Dies entspricht
dem Steuerzeichen „\05“.
Trat kein Fehler bei der
Übertragung
auf,
werden
über
das
„Serial
Read.vi“ und
die Funktion
„Bytes at Serial
Port“ die ankommenden
Daten am Port gesammelt.
Die WHILE-Schleife wird so lange wiederholt, bis in dem sich ergebenden String ein <LF> (Line Feed: \06), daß das Ende der Übertragung signalisiert, auftritt.
Sollte nicht die gesamte Information auf einmal verfügbar sein, wird
diese in einem Shift-Register gesammelt und anschließend über
„Serial Read“ ausgegeben.
Die Fehlermeldungen „Serial Error“ und „Read Timeout“ werden
über die entsprechenden Indikatoren ausgegeben.
Der Read Timeout ist auf 5s eingestellt.
Serial Communication - TPG300.vi - Seite 168
Programm:
Serial Read.vi
Eingabe:
Port number
Timeout Limit
Bytes to read
Ausgabe:
Serial Read
Timeout
Error out
Kurzbeschreibung:
Lesen der vorhandenen Bytes an einer seriellen Schnittstelle.
Programmbeschreibung: Über „Port number“ wird die zu lesende serielle Schnittstelle definiert. Die aktuelle Uhrzeit wird bestimmt.
Diese beiden Werte gehen als Konstanten in die WHILE-Schleife
ein.
Hier wird die
aktuelle Zeit
noch einmal
gemessen.
Die Differenz wird durch Eintausend geteilt und die somit
in Sekunden verfügbare verstrichene Zeit mit dem „Timeout
Limit“ verglichen. Wird nichts anderes angegeben, beträgt
das Limit 5 s. Beim Überschreiten dieser Frist wird „Timeout“ = true
ausgegeben und der Lesevorgang (die WHILE-Schleife) abgebrochen.
Mit der Funktion „Bytes at Serial Port“ wird die Anzahl der Bytes, die an dem definierten Port verfügbar
sind, abgerufen. Ein Fehler führt zu einer Meldung
über den „Simple Error Handler“. „Error Out“ wird gleich true gesetzt und die WHILE-Schleife abgebrochen.
Serial Read.vi - Seite 169
Wird kein Fehler erkannt, werden
in der CASE-Anweisung mit der
Funktion „Serial Port Read“ die
vorhandenen Bytes gelesen und an
„Serial Read“ weiter- und damit
ausgegeben.
Tritt beim Lesen ein Fehler auf,
wird dieser auch hier über den
„Simple Error Handler“ abgewikkelt und „Error out“ = true gesetzt.
Anmerkungen:
Die Funktion „Bytes at Serial Port“ wurde in der ersten Version
durch das Lesen immer nur eines Bytes ersetzt. Dies führte bei einigen Übertragungen zu Fehlern. Die Funktion wurde daraufhin in diesen Zustand zurückversetzt.
Serial Read.vi - Seite 170
Programm:
Set AutoScan Masses.vi
Eingabe/Ausgabe:
keine
verknüpfte Datei:
scan.ini
Kurzbeschreibung:
Setzen der ständig zu überwachenden Massen (Anzahl: max. 7).
Bedienung:
Mit „Select a mass to change“ wird ein Speicherplatz ausgewählt,
der neu belegt werden soll.
Durch „New mass“ läßt sich diese Masse definieren. Bei einigen
Massenangaben sind konkrete Vorschläge, um welche Elemente
(Atome / Moleküle / Verbindungen) es sich dabei handelt, vorhanden. Diese Möglichkeiten werden angezeigt.
„New Mass“ enthält beim Aufruf eines Speicherplatzes die Masse,
die bislang definiert war. Diese läßt sich ändern.
In welchem Druckbereich diese Massen betrachtet werden sollen,
muß in „Set scanning range“ definiert werden.
Mit „Done“ werden die aktuellen Einstellungen gespeichert, und
dieses Programm wird verlassen. Wird der „Cancel“-Button gedrückt, obwohl Änderungen vorgenommen wurden, erscheint eine
Dialogbox mit der Frage, ob die Einstellungen nicht vor dem Verlassen gespeichert werden sollen.
Set AutoScan Masses.vi - Seite 171
Programmbeschreibung: Zunächst wird die zu ändernde Datei
„scan.ini“ geöffnet, die Werte gelesen
und die letzte Einstellung selektiert. Die
eingestellten Massen werden zur Anzeige gebracht.
Die letzte (aktuelle) Konfiguration wird mit
„Select Array-line.vi“ selektiert.
Die eingestellten Massen werden aus der geladenen Konfiguration getrennt und zur einfacheren Darstellung in einen Cluster umgewandelt.
Drei Positionen werden dazu aus dem Array
gelöscht: Die Speicherzeit und die Druckangaben.
Die Drücke werden gesondert selektiert und die
gespeicherten Werte als Default-Werte zur Anzeige gebracht.
„New Mass“ wird als Default-Wert der Wert
des ersten Speicherplatzes übergeben. „Select
a mass to change“ ist Default-mäßig auf eins
eingestellt.
Alle Änderungen erfolgen in einer WHILE-Schleife.
Ein Shift-Register wird definiert, das die aktuelle Massenzahl mit
einem Element aus dem Periodensystem oder einer Verbindung, z.B.
einem Gasgemisch verbindet. Als Default-Wert wird der Wert von
„New Mass“ benutzt.
Der Cluster mit allen Einstellungen, der ebenfalls über ein
Shift-Register geführt ist, wird zur Anzeige gebracht.
Ein weiteres Shift-Register wird erzeugt, das die Kennziffer des aktuellen Speicherplatzes enthält, der bearbeitet wird. Diese Kennziffer
wird mit jedem Durchlauf der WHILE-Schleife
durch den Wert von „Select a mass to change“
aktualisiert.
Der Cluster mit den Speicherplatzwerten wird in ein Array umgewandelt. Der Wert des Shift-Registers mit dem Speicherplatz muß
dekrementiert werden, da ein Array mit dem Wert null statt
mit eins beginnt. Der Wert von „New Mass“ wird in das Array übernommen. Das neue Array wird zurück in einen Cluster gewandelt und auf das zugehörige Shift-Register geführt.
Set AutoScan Masses.vi - Seite 172
Ist „Select a mass to change“ geändert worden, also der neue Wert ungleich dem des Shift-Registers, wird
aus dem Array der Speicherplatzbelegungen der zugehörige Wert
selektiert und als Default-Wert
„New Mass“ zugewiesen.
Beim Drücken des „Cancel“Buttons und wenn das neue Array
nicht mit dem Alten übereinstimmt, erfolgt die Abfrage, ob
die neuen Einstellungen gespeichert werden sollen.
Danach, und auch im Falle des Betätigens des „Done“-Buttons wird
dieses Programm beendet.
Die Speicherung erfolgt mit der aktuellen Uhrzeit (incl. Datum) in Sekundendarstellung (=universal time). Sie wird an
die existierende „scan.ini“ angehängt.
Die Reihenfolge ist folgendermaßen festgelegt:
Uhrzeit, das Array mit der Belegung der Speicherplätze und das sortierte Array mit den gewählten
Drücken.
Eine weitere Angabe, die gespeichert wird,
ist der zu überwachende Druckbereich.
Wird dieser möglichst klein gewählt, z.B. in
dem Bereich, wo der Betrieb der Anlage
kritisch wird, erfolgt die Messung jeweils
schneller als bei einem großen Druckbereich.
Set AutoScan Masses.vi - Seite 173
Programm:
Set Distances.vi
Eingabe/Ausgabe:
-
verknüpfte Datei:
System.ini
Kurzbeschreibung:
Definition der Abstände der Massenspektrometer zum Zentralhaus
(für den Tunnelcheck)
Bedienung:
Dieses Programm wird aus der Konfiguration aufgerufen.
Im Zentralhaus muß ein Fixpunkt definiert und gekennzeichnet werden, von dem alle Längenmessungen ihren Ursprung haben.
Nun werden alle Abstände zwischen diesem Fixpunkt und den in den
Armen des Interferometers vorhandenen Massenspektrometer in
Metern bestimmt.
Diese Werte werden in die Liste auf dem Bildschirm eingetragen.
Quadrupol Nummer eins entspricht dem Massenspektrometer, das
dem Zentralhaus am nächsten gelegen ist.
Diese Definitionen werden für beide Arme durchgeführt.
Set Distances.vi - Seite 174
In der letzten Zeile erscheint bei Programmaufruf der Hinweis
„Total“. Hier kann der Abstand vom Fixpunkt im Zentralhaus zu einem Fixpunkt in den Endhäusern eingegeben werden.
Bei der Berechnung des Abstandes des Maximums der interpolierten
Funktion aus dem Tunneltest erscheint nicht nur die Angabe vom
Zentralhaus aus gemessen, sondern auch aus der Gegenrichtung: dem
Endhaus. Dies erleichtert das Nachmessen, wenn das vermeintliche
Leck näher am Endhaus liegt.
Wird dieser Wert nicht eingegeben, berechnet das Programm den
Abstand zum letzten Massenspektrometer.
Programmbeschreibung: Das Hauptprogramm besteht aus einer
WHILE-Schleife, die als Abbruchbedingung das Drücken des „OK“-Buttons hat.
In ihr befindet sich die zu ändernde Liste
als String-Array.
Die Größe des Arrays (der Liste) wird
festgelegt.
Der „OK“-Button wird auf
false gestellt.
Die Datei „System.ini“ wird geöffnet
und die alte Konfiguration geladen.
Die Daten der geladenen Konfiguration werden durch zwei verschachtelte FOR-Schleifen in die Liste (das String-Array) eingefügt.
Die Indexwerte müssen jeweils inkrementiert werden, da die ersten
Plätze des Arrays bereits mit der Beschriftung der Liste vergeben
sind.
Die Listenbeschriftungen wurden in einer Arraykonstanten definiert, die als Anfangszustand in das Shift-Register der FOR-Schleife
gegeben wird.
Set Distances.vi - Seite 175
Wurde der „OK“-Button gedrückt und damit die Beendigung der
Einstellungen signalisiert, überprüft das Programm, ob die aktuellen
Einstellungen der Liste von den geladenen abweicht. Wurde
nichts geändert, ist es nicht nötig, die Einstellungen zu speichern.
Wurden Änderungen durchgeführt, muß das String-Array in Zahlen
umgewandelt werden. Hierzu wird zunächst mit der „Array Subset“Anweisung die Tabellenbeschriftung ausgeschnitten.
Ein leeres Array wird erzeugt. In ihm werden die umgewandelten
Werte untergebracht.
Die Umwandlung erfolgt wieder mit Hilfe zweiter FOR-Schleifen,
wie oben beschrieben. Die Daten werden zum Schluß als 2D-Array
abgespeichert, wobei das alte File überschrieben wird.
Set Distances.vi - Seite 176
Programm:
Set Multiplier Gain Factor.vi
Eingabe:
Multiplier (0, 1, 2)
Port number
Ausgabe:
-
Kurzbeschreibung:
Setzen des Gain Factors eines Multipliers.
Programmbeschreibung: Ist die Eingabe „Multiplier“ größer als 0 (0 → kein Multiplier), so
wird über das Unterprogramm „Serial Communication - Spectra“ die
Anweisung „G“ für die Einstellung des Gain Faktors (des Verstärkungsfaktors) und der entsprechenden Kennziffer an den in „port
number“ gewählten Port übertragen.
Die Kennziffer ergibt sich aus der inkrementierten Zahl der Eingabe
„Multiplier“.
Ist „Multiplier“ gleich Null, ist keine Einstellung nötig, da das an
dem Port angeschlossene Massenspektrometer keinen Multiplier besitzt.
Set Multiplier Gain Factor.vi - Seite 177
Programm:
Setup.vi
Eingabe:
-
Ausgabe:
-
Kurzbeschreibung:
Einrichten der Verzeichnisstrukturen und Grundeinstellungen
Bedienung:
Zur Installation des Programms GEO600 muß vorher das Programm
„Setup.vi“ aufgerufen werden. Es ist dazu nötig, in das Verzeichnis
von GEO600 zu wechseln.
Nach dem Start erscheint folgender Bildschirm:
Hier nicht dargestellt sind zwei Schalter in der rechten unteren Ecke:
Der Benutzer wird aufgefordert, den Pfad einzugeben, in dem die
nötigen Verzeichnisstrukturen angelegt werden sollen. Als Vorgabe
ist „C:\GEO600“ eingestellt. Bei einer eigenen Eingabe ist darauf zu
achten, daß das Ende nicht mit einem „\“ abschließt!
Mit einem der beiden Taster gelangt man in die nächste Ebene. Wurde dieses Programm aufgerufen, um Komponenten zu ändern oder zu
erweitern, ist der richtige Pfad einzugeben und „Next“ zu betätigen.
Soll dieses Verzeichnis, z.B. beim Erststart, neu angelegt werden, ist
der Schalter „OK“ anzuklicken.
In der nächsten Ebene wird nach den Sektionen und den darin installierten Rechnern gefragt:
Setup.vi - Seite 178
Der Benutzer wird aufgefordert, die Namen der Rechner in den Sektionen einzugeben und deren Internet-Adressen zuzuordnen.
Diese Eingabe wird nach dem in der letzten Ebene beschriebenen
Muster quittiert.
Es wird auf die dritte Ebene umgeschaltet:
Das Setup fragt nach externen Steuerrechnern, die installiert werden
sollen. Von diesen Rechnern aus können Daten abgefragt und Einstellungen geändert werden und es werden Mitteilungen an sie geschickt, wenn z.B. ein Überdruck auftritt.
Mit „Yes.“ können einer oder mehrere Rechner angegeben werden
(In der aktuellen Version, 15.04.’97, ist zwar die Eingabe mehrerer
Rechner möglich, angesprochen wird nur der Erste).
Die Internet-Adressen werden in der sogenannten
Dot-Notation eingegeben. Mit „Ready“ wird die
Eingabe beendet.
Setup.vi - Seite 179
Wird der „No.“-Button gedrückt, wird diese Abfrage übersprungen
und in die nächste Ebene gewechselt:
Mit Hilfe dieser Anzeige kann die Sektionsnummer eingegeben werden. Durch Anklicken wählt man die Sektion Zentralhaus, Endhaus
1, Endhaus 2 oder den externen Standort.
Programmbeschreibung: Alle Eingabeelemente werden auf „unsichtbar“ geschaltet und die
Textfarbe grau festgelegt.
In einer WHILE-Schleife, in der das gesamte Programm abläuft,
wird ein Shift-Register geöffnet. Es enthält einen Merker, an welcher
Programmposition man sich gerade befindet. Der Merker startet mit
null.
Durch Drücken der
„Next“ oder „OK“Taste oder durch einen
programminternen
Schalter wird der
Merker erhöht und
damit zum nächsten Programmteil gewechselt.
Die WHILE-Schleife wird so oft wiederholt, solange der Merker
kleiner als sechs ist.
Der „Next“- und der „OK“-Button werden dargestellt.
Programmteil 0: Erstellung der Verzeichnisse
Das Eingabeelement „Path to install“ wird dargestellt und über eine
„Local variable“ mit „C:\GEO600“ ein möglicher Pfad vorgegeben.
Im Textfeld wird der „Willkommen“-Text angezeigt.
Setup.vi - Seite 180
Sobald der „OK“-Button gedrückt wird, wird der Inhalt des „Path to
install“-Feldes in einen Pfad umgesetzt und die Verzeichnisstruktur
mit „New Directory“ erstellt (s.u.).
Programmteil 1: Eingabe der beteiligten Rechner
Im Textfeld erscheint die Aufforderung zur Eingabe der Namen und
Internet-Adressen der in den Sektionen installierten Rechner.
Das Eingabeelement „Path to install“ wird aus- und stattdessen der
Cluster „Names/ Net“ eingeblendet.
Sobald der „OK“-Button gedrückt wird, wird der Inhalt dieses Clusters bestimmt und in der Datei „names.sys“ abgespeichert.
Programmteil 2: Eingabe externer Steuerrechner
Der Cluster „Names/ Net“ wird ausgeblendet und die in diesem Programmteil nötigen Schalter „Yes!“ und „No!“ auf false gesetzt. Die
Schalter und auch der „Ready“-Button werden dargestellt.
In dem Textfeld erscheint die Frage, ob externe Steuerrechner installiert werden sollen und darunter die Buttons für „Ja“ und „Nein“.
Setup.vi - Seite 181
Dem Eingabefeld „Enter Adress(es)“ wird der Default-Wert
„000.000.000.000“ zugewiesen.
In einer weiteren WHILE-Schleife wird die Entscheidung, ob Steuerrechner hinzugefügt werden sollen oder nicht, abgewartet. Ein ShiftRegister wird erzeugt. Dieses dient als Merker für den Abbruch der
Schleife. Die Buttons „Next“ und „OK“ werden ausgeblendet.
Der Merker wird auf true, zum Abbruch, gesetzt, sobald einer der
beiden Schalter betätigt wurde. Diese Schleife wird abgebrochen,
wenn einer der Eingänge nicht mehr false ist.
Wurde der „Yes“-Button gedrückt, es soll also ein Rechner hinzugefügt werden, wird das Eingabefeld „Enter Adress(es)“ angezeigt und
in einer WHILE-Schleife gewartet, bis alle Internet-Adressen eingegeben wurden und die „Ready“-Taste gedrückt wurde.
Die Größe des resultierenden Arrays wird bestimmt und dieses Array
in einen String umgewandelt, bei dem als Trennzeichen <CR><LF>
zwischen den Adressen steht.
Dieser String wird in „Names.sys“ abgespeichert.
Programmteil 3: Sektionsbestimmung
Die Schalter und Eingabeelemente aus dem letzten Programmteil
und der „OK“-Button werden ausgeblendet. Der Cluster „Section“
wird eingeblendet.
Dem Textfeld wird die Aufforderung zur Bestimmung der eigenen
Sektion zugeordnet.
Der Cluster „Section“ wird mit der „Unbundle by
name“-Anweisung aufgetrennt. Mit der Funktion
„Witch Input is true.vi“ wird festgestellt, ob einer
Setup.vi - Seite 182
der Eingänge (der Schalter im Cluster) gleich true ist und
wenn ja, welcher.
War einer der Eingänge true, wird der Programmerker erhöht und die
herausgefundene Sektion (inkrementiert, da die Positionsnummern
bei eins, statt bei null beginnen) in der „Vacuum.ini“ abgespeichert.
Programmteil 4: Initialisierung des Systems
Dem Textfeld wird die Mitteilung über die Initialisierung des Systems zugeordnet.
Die Dateien „State.ini“, „Scan.ini“ und „Statistics.inf“ werden mit
null, bzw. der aktuellen Uhrzeit initialisiert und in den entsprechenden Verzeichnissen abgespeichert.
Programmteil 5: Automatisches Kopieren des GEO600-Programms
Noch nicht vorhanden.
Setup.vi - Seite 183
Programm:
Show AutoScan Data II.vi
Eingabe:
Span
Port
Ausgabe:
From - to
Y-Scale
X-Scale Style
X-Scale Grid Names
Plot Names
Data
Changes
Actual Time
Resolution out
Kurzbeschreibung:
Unterprogramm zu „Show AutoScan Data.vi“. Aufruf der Skalierung
und der Formatierung der AutoScan Daten in Abhängigkeit der Zeitspanne
Programmbeschreibung: Die aktuelle Zeit wird bestimmt und ausgegeben.
Abhängig davon, welche Größe „Span“ annimmt (0-3), wie
groß also der betrachtete Zeitraum sein soll, wird das Programm
„Scale Show AutoScan Masses.vi“ aufgerufen.
Bei der Darstellung wird auf die Auflösung im ersten Fall, Anzeige
der letzten drei Stunden, verzichtet. Der entsprechende Eingang am
Unterprogramm wird nicht belegt.
In den anderen drei Fällen,
Anzeige der letzten 24 Stunden, der letzten drei Tage
und der letzten sieben Tage,
kann eine frei definierbare
Auflösung gewählt werden.
Diese Wert sind bislang auf
null gesetzt. Es werden interne Werte benutzt. Siehe
hierzu die Programmbeschreibung zu „Scale Show
AutoScan Masses.vi“.
Die aus diesem Programm resultierenden Werte (Y-Scale, X- Scale
Style, X-Scale Grid Names, From - to, Resolution out und Changes)
werden ausgegeben.
Show AutoScan Data II.vi - Seite 184
Das Programm „Make AutoScan Data showable.vi“ stellt alle für
den Zeitraum geltenden Daten zusammen und formatiert sie so, daß
sie mit der „Resolution out“ dargestellt werden können.
Als Eingaben werden hierzu der Port,
die aktuelle Zeit und die gewählte Zeitspanne benötigt. Heraus kommen die
formatierten Daten und die Namen der
zusammengestellten Daten.
Show AutoScan Data II.vi - Seite 185
Programm:
Show AutoScan Data.vi
Eingabe:
-
Ausgabe:
-
Kurzbeschreibung:
Darstellung der AutoScan Daten
Bedienung:
Diese Statistikfunktion kann vom Hauptbildschirm aus aufgerufen
werden.
Kopfzeile:
Die wichtigsten Eingabeelemente befinden sich in der Kopfzeile. Um
eine statistische Auswertung zu starten, muß ein Massenspektrometer gewählt werden, das Grundlage einer Auswertung sein soll.
Sind die Sektion und/ oder der Port nicht bekannt, kann über
„Search...“ anhand einer Skizze des Systems ein Massenspektrometer ausgewählt werden.
Der Schieber in der Mitte legt den zu betrachtenden Zeitraum fest. Es
besteht die Wahlmöglichkeit, die Druckentwicklung der AutoScanMassen der letzten drei Stunden, die letzten 24 Stunden, die letzten
drei Tage oder die letzten sieben Tage zu verfolgen. Endpunkt dieser
Zeitrechnung ist immer der Augenblick, in dem die Auswertung gestartet wurde.
Der Schalter „Show“ startet die Zusammenstellung der Daten.
Soll dieses Programm beendet werden , drückt man
den „Quit“-Button.
Wird eine Auswertung über mehrere Tage gestartet, wird in diesem Feld der betrachtete Zeitraum eingetragen.
Das Ergebnis einer Auswertung wird in Kurvenform dargestellt. Jeder durch AutoScan definierten Masse wird eine Farbe zugeordnet.
Die Zuordnung befindet sich rechts oben. Die jeweiligen Massenzahlen werden links neben den Farben eingetragen (Beispiel: Plot 0
trägt den Namen H, für Wasserstoff). Es werden maximal sieben
Massen dargestellt.
Show AutoScan Data.vi - Seite 186
Die letzte Kurve mit dem Namen „change“ taucht im Diagramm nur
als Teiler auf. Mit diesem werden die Zeitpunkte gekennzeichnet, in
denen Änderungen in der AutoScan-Konfiguration durchgeführt
wurden. Druckverläufe, die auf der einen Seite noch vorhanden waren und auf der anderen nicht mehr, kennzeichnen das Löschen bzw.
Hinzufügen der betreffenden Masse aus oder in die AutoScan-Konfiguration.
Programmbeschreibung: Die Datei „Vaccum.ini“
wird geöffnet. Aus ihr
wird der Name der Sektion, in der der aufrufende Rechner steht,
gewonnen.
Dieser Wert wird mittels einer „local variable“ als Default bei der Anzeige der Sektion auf dem Bildschirm
benutzt (siehe oben).
Die Variable „Search“ wird auf false gesetzt und der zu
suchende Port auf null: kein Port ausgewählt.
Um den Suchvorgang einzuleiten, wird auf
„Search“
gedrückt.
Show AutoScan Data.vi - Seite 187
Hierdurch wird das Unterprogramm „Get Position Numbers in other
Sections.vi“ gestartet. Ergebnis ist ein Array, in dem die Sektion und
die Port Nummer des gewählten Massenspektrometers vorhanden
sind.
„Show“ leitet die Zusammenstellung der Daten ein.
Zunächst wird überprüft, ob die gewählte Sektion der
eigenen entspricht.
Ist dies der Fall, werden über das Unterprogramm „Show AutoScan
Data II.vi“ alle Daten zusammengetragen (Y-Scale, X-Scale Style,
X-Scale Grid Names, From - to, Plot Names, Data, Changes, Resolution out, Actual time).
Sind die gewählte und die eigene Sektion unterschiedlich, muß
dem Rechner der Sektion, über die das gewünschte Massenspektrometer verwaltet wird, die Anweisung geschickt werden,
daß diese alle Daten zusammenstellt und anschließend zurückschickt.
Dieses wird über die Anweisung „Axx“ erreicht. „xx“
steht hier als Platzhalter, an deren Stelle die PortNummer des Massenspektrometers in der Zielsektion
eingesetzt wird.
Als Parameter wird der gewählte „Span“ mitgeschickt.
Es erfolgt eine Abfrage, ob durch die „Send“-Anweisung die gewünschten Daten bereits mit zurückgeschickt wurden. Ist dies nicht
der Fall, wird mit der Anweisung „Communication C - C
(Receive).vi“ auf das Ergebnis gewartet.
Die aufgrund der Übertragung in einen String verpackten Daten werden durch die Funktion „AutoScan Data-String to Data.vi“ in die zur Anzeige benötigten Daten zurückgewandelt.
Das Array „Plot Names“ enthält nur die sieben Namen der
darzustellenden Massen. Es wird durch den Namen „change“
erweitert.
Die Definition dieser
Namen in der Anzeige erfolgt in einer FORSchleife in zwei Schritten. Zunächst wird der
aktive Plot gesetzt.
Show AutoScan Data.vi - Seite 188
Im zweiten Schritt wird
der Name an die Stelle
des aktiven Plots eingesetzt. Zu beachten ist
hierbei, daß die Masse 0
(Null) nicht existiert und
daher auch nicht in die
Liste aufgenommen werden darf.
Die Daten werden aufgeteilt. Jedes Array wird einzeln
behandelt. Hier sind die ersten drei dargestellt.
Für jedes Datenarray wird die Schrittweite eins und der Anfangspunkt x0
mit eins festgelegt.
Dies erfolgt für die Darstellung in einer „Bundle“Anweisung.
Alle „ge-bundle-ten“ Daten werden in einem Array
zusammengefaßt und der „Waveform Chart“ zugeführt.
Ausnahme dieser Prozedur ist das Array, das die Änderungen
der Konfigurationen enthält. Über die Funktion „Format Changes-data-Array.vi“ wird ein eigenständiges Datenarray erzeugt,
das nur aus Nullen und an den Änderungen aus Einsen besteht.
Das Bundlen erfolgt analog zu den Datenarrays.
Show AutoScan Data.vi - Seite 189
Programm:
Show Full Scan.vi
Eingabe:
Path (port.sys)
Ausgabe:
keine
Kurzbeschreibung:
Manueller Abruf des Spektrums eines Massenspektrometers
Bedienung:
Es können folgende Einstellungen zum Aufruf der Messung eines
kompletten Spans vorgenommen werden:
• Massen (von - bis)
• Bereich (von - bis; logarithmische Darstellung; Eingabe in 1E-x),
• Accuracy (Genauigkeit: 1 =Schnelldurchlauf - 5 =genaueste Anzeige)
• Multiplier Gain Factor (kein Multiplier, E2→*100, E3→*1000)
• Port-Nummer
• Sektionsnummer (diese und die Port-Nummer sind komfortabler
durch die „Search...“-Funktion zu bestimmen
Sind alle Werte eingestellt, kann die Messung über „Run“ gestartet
werden. Der „Run“-Button verschwindet und stattdessen wird ein
Button „Abort running“ eingeblendet.
Soll die Messung abgebrochen werden, ist dieser Button zu betätigen.
Mit „Exit“ kann man diese Option verlassen. Eine laufende Messung
muß hierzu aber vorher abgebrochen werden.
Show full Scan.vi - Seite 190
Programmbeschreibung: Die Arrays „Enter mass span“ und „Log axis (1E-x)“ legen die Darstellung des Koordinatensystems fest.
Die Anzeige der
Massen wird um
eine erweitert, jedoch wird diese
Masse nicht gemessen. Beispiel: Wahl der Massen von 1 - 50. Masse
0 wird im Koordinatensystem angezeigt, aber nicht gemessen.
Die Messung des Eingabewertes von „Log Axis“ wird in dem
Unterprogramm „Read full Span“ um den höchsten Druck reduziert, da dieser nicht zur Darstellung käme. Beispiel: Wahl des Bereichs von 1E-7 bis 1E-12 mbar. 1E-7 mbar wird obere Horizontale
des Koordinatensystems, der letzte gemessene (und dargestellte) Bereich ist aber nur 1E-8 mbar.
Vor der Darstellung und der Übergabe der Werte zur Messung erfolgt eine Überprüfung, ob die Koordinaten in der richtigen Reihenfolge eingegeben wurden (der größte Druck oben → entspricht der
kleineren Zahl), und mindestens eine Zehnerpotenz zwischen diesen
Angaben liegt. Sind diese Bedingungen nicht erfüllt, erfolgt eine entsprechende Korrektur.
Weiterhin wird der maximale Wert für die Messungen zum Schutz
der Filaments auf 1E-7 mbar begrenzt.
Bei der Eingabe der Massen ist keine Korrektur erforderlich, da Eingaben in umgekehrter Reihenfolge zu keinen Fehlmessungen führen
würden.
Show full Scan.vi - Seite 191
Die Meßgeschwindigkeit und -genauigkeit wird über die Accuracy
definiert. Der Wert „1“ zeigt hierbei die niedrigste Auflösung und
damit auch eine hohe Fehlerrate, aber er zeichnet sich durch eine hohe Geschwindigkeit aus. Der höchste Wert, „5“, besitzt die höchste
Auflösung und damit die geringste Meßungenauigkeit, aber eine solche Messung dauert auch am längsten (bei Masse 1-50 im Bereich
1E-7 mbar bis 1E-12 mbar mit Multiplier ca. 9 min.)
Nicht alle Massenspektrometer sind mit einem Multiplier ausgestattet. Über den „Text ring“ (Anzeige von
vordefinierten Texten) „Multiplier“ hat man die Wahlmöglichkeiten kein Multiplier, Verstärkung E2 (=*100) und Verstärkung E3 (=*1000). Entsprechend verschiebt sich der mögliche Meßbereich auf bis zu 1E-14 mbar. Eine Rückmeldung, ob das gewählte
Massenspektrometer tatsächlich mit einem Multiplier ausgestattet
war, erfolgt nicht. Folglich ist ohne Kenntnis der Verwendung der
Anschlüsse auch nicht nachvollziehbar, ob die Messung mit oder ohne Multiplier ausgeführt wurde.
Die Eingabe der Port-Nummer erfolgt über den
realen Namen (Port 1, Port 2,...). Die interne
Nummerierung beginnt bei COM0, daher muß der eingegebene Wert
noch dekrementiert werden.
Die Eingabe der Sektion geschieht über einen Text Ring. Es stehen
Zentralhaus, Endhaus 1 und Endhaus 2 zur Verfügung.
Die komfortablere Variante der Eingabe der Port/ Sektionsdaten ist,
über die „Search...“-Funktion aus einer Skizze des Systems das richtige Massenspektrometer herauszusuchen. Hierdurch werden Fehleingaben vermieden. Das Drücken des „Search...“-Buttons startet
das Unterprogramm „Get Position Numbers in other Sections.vi“.
Ergebnis ist ein Array, das die Port Nummer und die dazugehörige
Sektionskennziffer enthält.
Über den „Exit“-Button kann dieses Programm verlassen werden. Voraussetzung: Es darf keine Messung gestartet sein!
Show full Scan.vi - Seite 192
Die Messung wird über den „Run“-Button gestartet.
Während der Messung werden alle Eingabemöglichkeiten deaktiviert. Eine Korrektur der eingegebenen Werte ist nur
durch den Abbruch der Messung möglich (→ s. Read Full Span).
Sämtliche Eingabeelemente werden durch „Attribute Nodes“ disabled. Durch die Eingabe „Zwei“ werden die Elemente grau dargestellt.
Zum Zeitpunkt des Beginns der Messung werden das Datum und die aktuelle Uhrzeit festgehalten. Wird der Scan später ausgedruckt, ist
somit eine Sortiermöglichkeit gegeben.
Zunächst werden alle verfügbaren Informationen über das
gewählte Massenspektrometer gesammelt und der Multiplier
gesetzt. Diese Aufgabe übernimmt das Programm „Read full
Scan-Get info.vi“.
Wurde das gewünschte Massenspektrometer gefunden (ohne
Fehlermeldung: „Port not found“), wird aus dem gewählten
Druckmeßbereich eine FOR-Schleife gebildet, deren Anzahl
der Durchläufe sich nach der Anzahl der gewählten Druckdekaden richtet.
Der aktuelle Druckmeßbereich (Druckdekade) wird durch den minimalen Druck (die höchste Zahl: 1E-10 Torr = Dekade 10) minus dem mit jedem Durchlauf steigenden Index der FORSchleife errechnet.
In dieser FOR-Schleife wird das Ergebnis einer Messung direkt von der
Maßeinheit Torr in mbar umgerechnet. Der Umrechnungsfaktor ist 760/1033.
Außerdem wird nach Beendigung der Messung
einer Druckdekade das Ergebnis in der oben beschriebenen „Waveform Chart“ dargestellt. Soll
das Ergebnis nicht nur angezeigt, sondern auch
verschickt werden, ist hierfür der Indikator
„Measurement out“ vorgesehen.
Die nächste CASE-Anweisung bezieht sich auf das Verschicken
bzw. das Empfangen einer Messung:
Wurde von einem sektionsfremden Rechner ein Scan angefordert,
wird das Ergebnis per Internet an den aufrufenden Rechner zurückgeschickt.
Show full Scan.vi - Seite 193
Beim Aufruf dieses Programms zur Anzeige wird der Schalter
„Answer“ auf true geschaltet. Somit erfolgt keine eigene Messung mehr, sondern die Daten werden durch
„Measurement in“ empfangen.
Alle Daten, egal ob gesendet oder gemessen, werden auf ein ShiftRegister geführt.
Für den Fall, daß eine eigene Messung stattfinden soll („Answer“ =
false), wird eine weitere CASE-Anweisung geöffnet.
Tritt ein Fehler auf, z.B. in Form eines für die Massenspektrometer
zu hohen Drucks, darf keine weitere Messung durchgeführt werden.
Soll eine Messung von einem anderen Rechner durchgeführt werden,
muß diesem die entsprechende Anweisung gegeben werden (s.u.).
Dieses darf aber nur einmal passieren.
Diese beiden Bedingungen sind durch jeweils ein Shift-Register gekennzeichnet. Ist eine Bedingung erfüllt, wird das Register auf
true geschaltet. Ist eines der Register gleich true, wird keine
Messung mehr durchgeführt. Ein bis dahin gemessenes Ergebnis
bleibt erhalten, wird aber nicht mehr verändert. Dieses Ergebnis
kommt zur Anzeige und die Fehlermeldung, der Scan sei unvollständig, erscheint.
Ist keines der Register true, wird eine weitere CASE-Anweisung geöffnet. Hier erfolgt die Entscheidung, ob eine Messung mit diesem
Rechner durchgeführt werden soll, oder ob ein anderer Rechner mit
der Messung beauftragt wird.
Es wurde bereits festgestellt, ob die
gewählte und die eigene Sektion die
gleichen Kennziffern besitzen. Ist dies nicht der Fall,
werden alle für die Messung nötigen Daten durch die
Funktion „Full Scan- Command to String.vi“ in einen
String umgewandelt und dieser als Parameter mit der
Anweisung „GFS“ an den Zielrechner verschickt.
Der Merker (Shift-Register) für das Senden eines
Kommandos wird auf true gesetzt, somit greift die
letzte CASE-Anweisung (s.o.).
Für den Fall, daß die Zielsektion und die eigene übereinstimmen, werden alle Eingabewerte an das Unterprogramm „Read
Full Scan“ weitergegeben. Es wird nur eine Messung (die
dieser Dekade) durchgeführt, dann erfolgt die Rückkehr in dieses
Programm. Das Fehler-Shift-Register wird durch den Ausgang
„Cancelled?“ beeinflußt.
Show full Scan.vi - Seite 194
Auf dem Hauptbildschirm wird die gerade bearbeitete Dekade mit dem Indikator „Dekade“ angezeigt.
Konnte ein Meßwert nicht eindeutig bestimmt werden (Meßwert
liegt oberhalb der maximalen Anzeige), so erscheint eine Dialogbox
mit der Aufforderung, diese Messung in einem größeren Bereich zu
wiederholen, da das jetzige Ergebnis unvollständig ist (uneindeutige
Meßwerte werden nicht angezeigt!).
Wurde die Messung abgebrochen, erscheint eine Dialogbox, die noch einmal auf diesen Abbruch hinweist.
Die Anweisung wird nur ausgeführt,
wenn Null größer ist als das Minimum
des gemessenen Scans (-1 ist im Scan
vorhanden).
Nach Beendigung einer
Messung wird aus den einzelnen Partialdrücken der
Gesamtdruck durch Summation gebildet.
Die Nutzung des Summenzeichens ist hierbei nicht ausreichend. Bedingt durch ein Rauschen,
das gerade bei der Messung in sehr niedrigen Druckdekaden auftritt,
würde das Ergebnis verfälscht werden.
Eine kleine Abhilfe schafft eine FOR-Schleife, in der jede gemessene
Masse mit dem niedrigsten Druckmeßwert verglichen wird. Nur
wenn der gemessene Wert größer ist als der Minimalwert, wird dieser zu dem Ergebnis addiert.
Zur Beendigung des Meßvorganges wird die Konfigurationsdatei „port.sys“ noch einmal aktualisiert.
Ein bisher noch nicht erwähnter Aspekt ist die Gewinnung der eigenen Sektionsnummer.
Wurde die Testversion aktiviert (nur im Programm möglich), wird
die eingestellt Sektion als die eigene behandelt.
Show full Scan.vi - Seite 195
Ist die Testversion deaktiviert, wird die Datei „Vacuum.ini“ geöffnet.
In ihr ist die Kennziffer der Sektion enthalten. Diese wird gelesen
und als Konstante (Default-Wert) über eine „Local Variable“ dem
Indikator „Section“ zugeführt.
Der Wert wird weiterhin zur Überprüfung, ob ein Sendevorgang eingeleitet werden soll, benutzt (s.o.).
Show full Scan.vi - Seite 196
Programm:
Show Leak Check.vi
Eingabe:
-
Ausgabe:
-
Kurzbeschreibung:
Durchführung des Lecktests
Bedienung:
Dieses Programm ist vom Hauptbildschirm über „Leakcheck“ und in
dem erscheinenden Dialogfenster über „He-Leakcheck“ erreichbar.
Alle einstellbaren Parameter befinden sich auf der rechten Seite des
Bildschirms:
Vor Beginn einer Messung müssen zwei Massenspektrometer eingegeben werden, die in der näheren Umgebung des zu untersuchenden
Bereichs liegen. Die Positionsnummern können aus dem Bild entnommen werden. Wichtig: Es dürfen nur gültige Ziffern eingegeben
werden, also ausschließlich Ziffern, die im Bild dargestellt werden!
Falls nötig, können die Meßparameter verändert werden. Normalerweise wird das Gas Helium (Masse 4) für die Lecksuche benutzt.
Wird ein anderes Gas gewählt, ist die entsprechende Massenzahl
unter „mass“ einzutragen.
Eine „Accuracy“ (= Geschwindigkeit, Auflösung) von drei ist für die
Lecksuche ausreichend. Bei Bedarf kann diese verändert werden. Die
höchste Auflösung wird mit fünf erreicht, die niedrigste Auflösung,
aber höchste Geschwindigkeit mit null.
Die nächsten beiden Schalter definieren den Druckmeßbereich. In
diesem Beispiel liegt dieser von 1E-11 Torr (!) bis 1E-7 Torr.
Im unteren Kasten kann gewählt werden, ob nur in deaktivierten
Sektoren oder in allen Sektoren gemessen werden soll. Vorteil der
Messung in deaktivierten Sektoren ist, daß bestehende Routinemessungen nicht durch die durchgeführte Lecksuche unterbrochen werden. Achtung: Die betreffenden Sektoren müssen vorher deaktiviert
werden!
Sind alle Parameter eingestellt, kann die Messung mit dem „Start“Button begonnen werden. Eine Unterbrechung durch nochmaliges
Betätigen von „Start“ ist jederzeit möglich. Jede Veränderung der
Massenspektrometer-Kombination führt zunächst zur Beendigung
der Messungen.
Mit dem „Quit“-Button wird dieses Programm verlassen.
Show Leak Check.vi - Seite 197
Tritt ein Fehler auf, erscheint dieser Button
in der rechten oberen Ecke.
Die verfügbaren Massenspektrometer werden durch die Ziffern in
diesem Bild gekennzeichnet. Alle Meßgeräte, die nicht Massenspektrometer sind, werden ausgeblendet.
Wird der „Start“-Button gedrückt, erscheint im Kasten oben rechts
die gewählte Massenspektrometer-Kombination und daneben der bei
diesen Geräten gemessene Partialdruck der gewählten Masse.
Programmbeschreibung: Der „Start“-Button wird auf false gesetzt und der
Button „Measurement failed“ auf blinkend und unsichtbar.
Das Programm „Get all Quadrupoles (Port_all).vi“ wird
aufgerufen. Die Vergleichsstelle „ungleich null“ ist mit
dem Schalter verbunden, bei dem die Auswahl zwischen den aktivierten oder allen Sektoren getroffen wird. Mit diesem Wert gleich
eins (nur aktive Sektoren) wird jeweils nur die „port.sys“-Datei zur
Zusammenstellung von Massenspektrometer-Daten benutzt, anderenfalls die „port.all“-Datei.
Show Leak Check.vi - Seite 198
Eine FOR-Schleife wird
38 mal durchlaufen. Aus
dem erzeugten Array mit
den Informationen über
die vorhandenen Massenspektrometer wird durch
den Index nacheinander
die Port Nummer kontrolliert.
Ist diese Ziffer größer als null, also ein Massenspektrometer vorhanden, wird der zu dieser Position gehörige Button im Bild eingeblendet, ansonsten wird er unsichtbar.
Eine WHILE-Schleife wird geöffnet. Diese wird so lange durchlaufen, bis der „Quit“-Button gedrückt wird.
Es werden drei Shift-Register erzeugt. In dem ersten wird
das Array mit der Massenspektrometer-Kombination zwischengespeichert.
Das zweite Shift-Register fungiert als Merker, ob eine Messung fehlgeschlagen ist und das dritte als Merker für das Ergebnis der letzten
Partialdruckmessung.
Die neue Definition der MassenspektrometerKombination wird auf das Shift-Register geführt.
Es wird überprüft, ob der aktuelle Wert von der alten
Kombination abweicht.
Ist dies der Fall, wird der „Start“-Button auf false gesetzt, eine laufende Messung damit unterbrochen.
Weiterhin wird der Merker zu Anzeige eines Fehlers
zurückgesetzt.
Wurde keine Änderung in der Kombination durchgeführt, passiert nichts. Der Wert des Merkers wird ungeändert auf das Shift-Register geführt.
Beim Auftreten eines Fehlers wird der Warnhinweis
immer erst beim nächsten Durchlauf der WHILESchleife angezeigt.
Show Leak Check.vi - Seite 199
Wird der „Start“-Button gedrückt, so wird eine
FOR-Schleife geöffnet, die zweimal durchlaufen wird. Mit der „Index Array“-Anweisung
wird jeweils einer der beiden Massenspektrometer ausgewählt und die Positionsnummer zusammen mit den Parametern der Funktion „Get
Leak Check.vi“ zugeführt.
Die Ergebnisse werden durch die Wahl „enable
indexing“ zu einem Array verbunden.
Das Ergebnisarray sowie die gewählte
Massenspektrometer-Kombination
werden dem Cluster (Anzeige) zugeführt. Hierzu wird die „Bundle by name“-Anweisung benutzt. Sie funktioniert nur, wenn eine Konstante
mit „n named elements“ eingegeben wird.
Das Ergebnisarray wird dahin überprüft, ob sich eine -1, also ein
fehlerhaftes Ergebnis darin befindet. Dies geschieht mit
der „Array Max & Min“-Anweisung. Das Minimum wird
überprüft, ob es kleiner als null ist.
Ist dies der Fall, wird der Merker für die Anzeige des Fehlers auf true
gesetzt.
Weiterhin wird überprüft, ob einer der beiden Partialdrücke
steigt. Hierzu wird die Funktion „Value in Span.vi“ benutzt.
Der im Shift-Register vorhandene letzte Maximalwert wird
mit dem neuen Maximum verglichen. Ist die Druckerhöhung größer
als 10% des alten Wertes, ist dies möglicherweise ein Indikator dafür, daß ein Leck gefunden wurde. Ist dies der Fall, wird die Anzeige
für den Partialdruck blinkend geschaltet.
Show Leak Check.vi - Seite 200
Programm:
Show Pressure TPG300- Central-Cluster.vi
Show Pressure TPG300- Endhouse 1.vi
Show Pressure TPG300- Endhouse 2.vi
Eingabe:
-
Ausgabe:
-
Kurzbeschreibung:
Anzeige der Drücke aller Drucksensoren einer Sektion
Bedienung:
Durch Drücken der „Show Pressure“-Taste auf dem Hauptbildschirm
wird dieses Programm erreicht.
Auf dem Bildschirm erscheint auf der linken Seite eine Skizze der
Sektion (hier: Zentralhaus) mit den aus der Konfiguration bereits bekannten Numerierungen.
Im Bild sind sogenannte „Slides“ angebracht, die den Druck des jeweiligen Drucksensors anzeigen. Der Bereich ist hier zwischen 1E-7
mbar und 1E-9 mbar, dem wohl am häufigsten vorkommenden
Druck gewählt.
Show Pressure TPG300- CC - EH1 - EH2.vi - Seite 201
Im Bild oben sind noch alle möglichen Positionen dargestellt. Nach
dem Start des Programms werden die Positionen, die keine Drucksensoren (TPG300) enthalten, gelöscht.
Dieser Plan dient nur der Übersicht. Eine detailliertere Aufstellung
befindet sich auf der rechten Seite.
In diesem Kasten wird eine Tabelle angezeigt, die auf der linken
Seite die Ziffer der Position und
auf der rechten Seite den dazugehörigen Meßwert enthält.
Diese Liste wird, je nach Anzahl
der vorhandenen Meßgeräte, erweitert. Im Beispiel links wurde
eine Anzahl von vier Drucksensoren angenommen.
Maximal kann die Anzahl der
möglichen Konfigurationen (18,
bzw. 16) dargestellt werden.
Die Bedienung der Anzeigen findet an den Elementen oben rechts
statt.
Hier befindet sich ein Schieber, an dem eingestellt werden kann, ob eine neue Messung gewünscht wird
(update), oder ob die letzte durchgeführte Messung zur
Anzeige gebracht werden soll (last data).
Mit dem Button „Show“ werden die Druckmeßwerte angezeigt (neu oder aus einer Datei).
In dem Indikator „Measured at:“ werden die Uhrzeit und das Datum der Messung angezeigt. Für
etwaige Ausdrucke ist dies eine Sortierhilfe.
Mit dem „Close“-Button wird dieses Programm beendet
und auf den Hauptbildschirm zurückgekehrt.
Programmbeschreibung: Die Programme der einzelnen Sektionen unterscheiden sich nur in
der Anzahl der verfügbaren Konfigurationen (und der Bilder der
Sektion). Es wird hier am Beispiel der Sektion Zentralhaus die
Funktionsweise der Programme erläutert.
Eine WHILE-Schleife wird geöffnet. Sie wird
so lange durchlaufen, bis der „Close“-Button gedrückt wird.
Show Pressure TPG300- CC - EH1 - EH2.vi - Seite 202
Der Beginn des Statistikpfades wird definiert.
Erst das Drücken des „Show“-Buttons löst die Programmbearbeitung
aus, sonst passiert nichts.
Der Schieber, ob ein update gestartet werden oder ob auf eine Datei
zugegriffen werden soll, ist eine umfunktionierte numerische
Anzeige. Sie kann die Werte null und eins annehmen, durch
die eine CASE-Anweisung geöffnet wird.
Der Pfad zu den Statistiken, also den abgespeicherten Meßwerten,
wird geöffnet und mit „List Directory“ ein String-Array erzeugt, das
alle verfügbaren Speicherungen beinhaltet.
Die Größe des Arrays wird ermittelt und die letzte Messung ausgewählt.
Der gefundene Dateiname wird mit der „Build Path“-Anweisung mit
dem bisherigen Pfad verbunden, diese Datei geöffnet und deren Inhalt gelesen.
Ergebnis ist ein 2D-Array, das aus der CASE-Struktur geführt wird.
Für den Fall, daß eine neue Messung durchgeführt werden soll, ein
sogenanntes „update“, tritt folgendes Programm in Kraft:
Show Pressure TPG300- CC - EH1 - EH2.vi - Seite 203
Die eigentliche Messung wird durch das Programm „Get data from
all pressure sensors.vi“ übernommen. Es muß ein Drucklimit definiert werden, das bei Überschreiten einen Alarm auslöst. Dieser Wert
wurde hier mit 1E-4 mbar festgelegt.
Das Ergebnis ist ein 2D-Array, das aus der CASE-Struktur geführt
wird.
Die Größe des 2D-Array wird bestimmt. In diesem Array sind
die Messungen des gesamten Tages enthalten. Die erste
Spalte (0) enthält die jeweiligen Meßzeitpunkte. Eine Messung besteht aus jeweils zwei Zeilen. Die erste Zeile enthält die Meßwerte
und die zweite Zeile die Positionsnummern, an denen gemessen
wurde.
Die letzten beiden Zeilen werden selektiert. Sie enthalten die aktuellsten Meßergebnisse, und davon die
erste Spalte (Zeit) gelöscht. Diese beiden Funktionen
werden in der „Array Subset“-Anweisung vereinigt.
Die beiden Zeilen werden durch die „Select Array-line.vi“-Anweisung getrennt und nach außen geführt.
Zur Anzeige der Meßzeit (Uhrzeit + Datum) wird das
erste Element, das die Zeit in Sekunden enthält, aus dem
Array getrennt. Hierzu wird das Element der letzten Zeile
benutzt. Diese Angabe liegt bereits durch die Größenbestimmung des
Arrays vor.
Die Angabe der Sekunden bezieht sich laut der „Get Date/ Time in
Seconds“-Funktion auf den 1. Januar 1904 12:00 am Universalzeit.
Mit Hilfe der „Convert time.vi“-Funktion wird
diese Zeit in ein darstellbares Format gebracht:
DD.MM HH:MM (= Datum . Monat Stunden :
Minuten).
Show Pressure TPG300- CC - EH1 - EH2.vi - Seite 204
Das Ergebnis wird in dem Indikator „Measured at:“ ausgegeben.
Die beiden getrennten Arrays mit den Meßwerten bzw.
den dazugehörigen Positionsangaben werden durch die
„Bundle“-Anweisung in einen Cluster umgewandelt und angezeigt.
Es handelt sich hierbei um die Tabelle auf der rechten Seite des Bildschirms.
Die Größe eines Arrays wird bestimmt und damit die Größe der darzustellenden Tabellen über zwei „Attribute Nodes“ (Number of
Rows) festgelegt.
Diese Werte müssen nun noch dargestellt werden.
Ein Array mit 18 (16) Elementen, die jeweils 0 (null) enthalten, wird erzeugt. In diesem Array werden die Druckmeßwerte gesammelt.
Eine FOR-Schleife wird 18 (16) mal
durchlaufen.
In dem Array der Positionsnummern aus
der Messung wird mittels Index der
FOR-Schleife überprüft, ob die Position
in dem Array vorhanden ist, d.h. ob eine
Messung an dieser Position durchgeführt
wurde.
Ist die Anzahl der gefundenen Positionen größer oder gleich eins, also eine Messung vorhanden, wird die Position der Positionsnummer
in dem Array dazu benutzt, den Druckmeßwert, der für diese Position bestimmt wurde, zu selektieren und in dem neuen Array auf dem
durch den Index markierten Platz zu positionieren.
Wurde die indexierte Position nicht gefunden, bleibt der Platz im
Zielarray unbesetzt.
Das Ergebnis wird in den „Slides“ dargestellt.
Die nicht genutzten (nicht mit Drucksensoren besetzten) Positionen
werden gelöscht. Hierzu wird eine weitere FOR-Schleife durchlaufen, die prüft, ob der Druckmeßwert der entsprechenden Position im
Array kleiner oder gleich null ist. Wenn ja, wird das „Slide“ unsichtbar gemacht.
Show Pressure TPG300- CC - EH1 - EH2.vi - Seite 205
Programm:
Show Tunneltest.vi
Eingabe:
-
Ausgabe:
-
Kurzbeschreibung:
Durchführung des Tunneltests
Bedienung:
Dieses Programm ist vom Hauptbildschirm über „Leakcheck“ und in
dem erscheinenden Dialogfenster über „Tunnelcheck“ erreichbar.
Beim Aufruf dieses Programms sind im unteren Teil des Bildschirms
die sogenannten Preferences, die Eigenschaften einer durchzuführenden Messung, sichtbar.
Es kann gewählt werden, ob der Tunneltest auf das Tube 1 zwischen
dem Zentralhaus und dem Endhaus 1 oder das Tube 2 zwischen dem
Zentralhaus und dem Endhaus 2 bezogen werden soll.
Weiterhin muß die Masse definiert werden, die Grundlage für die
Messung sein soll. Möglich sind alle Werte zwischen eins und 200,
sinnvoll ist allerdings, z.B. Stickstoff (N, Masse 14, bzw. 28) zu
wählen, der in der Atmosphäre häufig vorkommt.
Außerdem kann die „Accuracy“ die Geschwindigkeit und Meßgenauigkeit eingestellt werden. Möglich sind Werte von null (niedrige
Genauigkeit, hohe Geschwindigkeit) bis fünf (hohe Genauigkeit, geringe Geschwindigkeit).
In der rechten oberen Ecke befindet sich
der Schalter zum einschalten des Meßvorganges, der Schalter zur Definition der Abstände zwischen den Massenspektrometer
und der „Quit“-Button.
Nachdem eine Messung mit „Start measurement“ gestartet wurde,
wechselt der Schalter zu „Stop measurement“. Ein weiteres Betätigen hält die Messung an.
Mit Einschalten des Meßvorganges erscheint unter diesen drei
Schaltern ein „Reset“-Button. Sollen Änderungen in den Preferences
durchgeführt werden, muß dieser Knopf gedrückt werden. Ein weiteres Betätigen des „Start measurement“-Buttons würde die Aktualisierung des bisherigen Ergebnisses bewirken.
Show Tunneltest.vi - Seite 206
Die Eingabe der Abstände ist nur einmalig erforderlich.
Mit dem „Quit“-Button verläßt man dieses Programm.
„Start measurement“ läßt anstelle der Preferences ein Bild des gewählten Rohrs erscheinen und die Messung mit der gewünschten
Masse beginnt.
In diesem Diagramm wird das Ergebnis, der Druckverlauf des Partialdrucks der gewählten Masse im Rohr, dargestellt. Es stehen insgesamt sieben Massenspektrometer im Rohr zur Messung zur Verfügung. Die Werte dazwischen wurden nach dem Newton’ schen Interpolationsverfahren angenähert.
Die Beschriftung der X-Achse entspricht der Angabe in Prozent der
gesamten Wegstrecke vom Fixpunkt im Zentralhaus aus gemessen.
Um das ermittelte Maximum der Funktion zu erhalten, betätigt man den „Result“-Button. Dieser vergrößert sich dann und stellt das gewünschte Ergebnis dar.
Dieser Schalter wird erst nach dem ersten Start einer Messung sichtbar.
Programmbeschreibung: Die für diese Programm geltende Testversion kann
durch den Schalter ausgeschaltet werden. Hierzu muß
dieser auf true umgeschaltet werden.
Die Testversion unterstützt lediglich das Umschalten auf die unterschiedlichen Fenster (Preferences, Tube1 und Tube 2). Konkrete
Funktionen werden hiermit nicht unterstützt.
Das eigentliche Programm (Testversion = true) läuft in einer WHILE-Schleife, die so lange durchlaufen wird, bis der „Quit“-Button
gedrückt wird.
Beim Betätigen des Schalters „Set distances“ wird das Unterprogramm „Set diShow Tunneltest.vi - Seite 207
stances.vi“ aufgerufen und die Eingabe der Entfernungen damit ermöglicht.
Ein Shift-Register wird als Merker für eine boolsche Konstante erzeugt. Aufgabe dieses Merkers ist es den Schalter „Result“ unsichtbar zu machen und ihn damit zu sperren, solange noch kein Ergebnis
vorliegt. Sobald zum ersten Mal eine Messung beendet wurde, wird
der Schalter entriegelt (angezeigt) und ein Ergebnis kann abgerufen
werden. Das Ergebnis („Result“) ist nur nach der manuellen Beendigung einer Messung verfügbar („Stop measurement“) .
Dieser Zustand trifft ebenfalls auf den „Reset“-Knopf zu.
Dieser Schalter wird auch erst nach Beendigung der ersten
Messung sichtbar und seine Funktion damit wählbar.
Während einer Messung verschwinden diese beiden Schalter wieder.
Die Funktionen „Quit“ und „Set distances“ sind nur verfügbar, wenn
keine Messung aktiv ist. Während einer Messung werden diese beiden Schalter disabled und grau dargestellt.
Wurde eine Messung mit „Start measurement“ aktiviert, werden die Daten aus
dem Preferences-Cluster mit Hilfe der
Anweisung „Unbundle by Name“ zusammen mit der
Information über die Port-Konfiguration aus der
Funktion „Get all Quadrupoles (port_all).vi“, bei der durch das
Setzten des Eingangs auf false alle MassenspektrometerKonfiguration ausgewählt werden, dem Unterprogramm
„Get Tunnel-Check.vi“ zugeführt.
Mit der boolschen Variable aus den Preferences für die Wahl des
Rohrs (Tube) wird entweder Rohr 1 (false) oder Rohr 2 (true) dargestellt.
Ergebnis des Programms „Get Tunnel-Check.vi“ ist ein Array mit
sieben Meßwerten von den Massenspektrometern aus dem
gewählten Rohr. Diese werden zusammen mit der boolschen
Variable für das Rohr der Funktion „Interpolationpolynom of Newton.vi“ zugeführt.
In diesem Unterprogramm wird aus den sieben Punkten eine darstellbare Funktion interpoliert. Das Ergebnis wird zur Anzeige gebracht.
Show Tunneltest.vi - Seite 208
Eine weitere Funktion
des Unterprogramms
ist das Finden des Maximums der interpolierten Funktion. Die
Entfernung von den
festgelegten Fixpunkten wird mit ausgegeben.
Nach der Umwandlung in jeweils einen String, wird ein zusammenhängender String gebildet, in dem auf die Anstände hingewiesen
wird.
Dieser String wird auf ein Shift-Register geführt.
Die Messung wird beendet. Durch den Vergleich
mit null wird der „Start“-Button auf false, also auf
„Aus“ gestellt.
Das Shift-Register für die Verriegelung der Schalter (s.o.) wird auf
true gesetzt. Somit ist das Anklicken des „Reset“-Buttons und des
„Result“-Buttons möglich.
Der „Result“-Button:
Wurde eine Messung beendet, ist dieser Button sichtbar.
Der Schalter soll klein oben links in der Ecke sein, solange er nicht
betätigt wurde. Wurde er angeklickt um das Ergebnis abzufragen,
soll er größer werden und den entsprechenden Text (s.o.) anzeigen.
Die Position und die Größe des
„Waveform Chart“ wird bestimmt. Aus
der Position werden die Koordinaten der
linken oberen Ecke gewonnen und aus
den Abmaßen die Ausdehnung auf der XAchse.
Der vergrößerte Knopf soll 1/3 mal so groß sein, wie die Anzeige der
Kurve. Die Breite wird daher durch drei geteilt. „U32“ ist nur eine
Konvertierung in ein anderes Zahlenformat und hat mit der Berechnung der Position nichts zu tun.
Solange der Button nicht gedrückt
wird, werden seine Schaltflächen mit
dem Text „Result“ gefüllt.
Er wird, in Bezug auf das „Waveform
Chart“, um eine Position nach links und
Show Tunneltest.vi - Seite 209
50 Pixel nach oben verschoben.
Seine Maße sind durch diesen Cluster festgelegt.
Diese Informationen werden den „Attribute Nodes“ des
Schalters zugeführt.
Wurde der Taster betätigt, ändert sich sein Erscheinungsbild:
Der Schalter wird in die horizontale Mitte
des „Waveform Chart“ verschoben und der
obere Rand zehn Pixel darüber positioniert.
Die Größe wird durch den Cluster festgelegt. Der Button überdeckt
das Chart und ragt unten etwa gleich viel wie oben über.
Der Text der Schaltflächen entspricht dem
vorher festgelegten aus dem ShiftRegister.
Bei nochmaligem Betätigen verkleinert sich der Schalter wieder.
Show Tunneltest.vi - Seite 210
Programm:
Sort Files.vi
Eingabe:
All Files
Sort Indicator
Ausgabe:
Selected Files
Kurzbeschreibung:
Sortieren von Files in aufsteigender Reihenfolge abhängig von dem
gewählten Indikator
Programmbeschreibung: Die Größe des Arrays mit den Filenamen wird festgestellt (Es werden hier nur Filenamen genannt, da dieses
Programm zu diesem Zweck eingesetzt wird).
Die Größe bestimmt die Anzahl der Durchläufe einer FOR-Schleife.
Zwei Shift-Register werden erzeugt. Das obere enthält später die
nach dem „Sort Indicator“ selektierten Filenamen und das untere Register dient als Zähler für das Zielarray.
Mit dem Index der FOR-Schleife wird ein String aus dem Array gelöst. Dieser gilt als Eingabewert in der „Replace Array Element“Anweisung. Verändertes Array ist dabei das Zielarray aus dem ShiftRegister. Das Element wird durch den Zähler indexiert.
Mit der „Split String“-Anweisung wird überprüft, ob sich der gesuchte Buchstabe aus „Sort Indicator“ (normalerweise das „M“) in
dem selektierten Filenamen befindet.
Ist dies nicht der Fall (siehe Bild oben rechts) wird der Zähler nicht
erhöht. Beim nächsten Durchlauf wird das Element im Zielarray
durch das Neue ersetzt. Außerdem wird die boolsche Konstante true
ausgegeben (siehe unten).
Befand sich der „Sort Indicator“ in dem Filenamen,
wird der Zähler inkrementiert. Somit bleibt der Name im Zielarray bestehen. Zusätzlich wird in diesem
Fall die boolsche Konstante false ausgegeben.
Sort files.vi - Seite 211
Die Ausgabe der Konstanten erfüllt den Zweck,
wenn zum Schluß kein File mehr gefunden
wurde, das den Indikator enthielt, das Zielarray
um ein falsches Element zu groß ist. Dieses
letzte Element muß gelöscht werden.
War hingegen das letzte überprüfte Element eines, das den Indikator enthielt, ist das Zielarray
bereits korrekt und darf nicht mehr verändert
werden.
Diese selektierten Files können nun sortiert werden. Diese Aufgabe übernimmt die „Sort 1D Array“-Anweisung. Das Ergebnis wird über
„Selected Files“ ausgegeben.
Sort files.vi - Seite 212
Programm:
Status Pressure Sensor.vi
Eingabe:
Port number
Location
Status
Ausgabe:
Output
Retry!
Kurzbeschreibung:
Kontrolle des bei der Abfrage eines Druckmeßwertes eines TPG300
erhaltenen Statuswortes (erste Ziffer im ASCII-Protokoll)
0 - Meßdaten in Ordnung
1 - Underrange
2 - Overrange
3 - Meßstellenfehler
4 - Meßstelle aus
5 - keine Hardware gefunden
Programmbeschreibung: Der Status ist eine Zahl zwischen null und fünf. Die Auswertung
kann also durch eine CASE-Anweisung stattfinden.
Die Location wird schon als String angegeben,
die Port-Nummer muß erst noch in das Textformat umgewandelt werden.
Status 0 - kein Fehler
„Retry“ ist false: keine Wiederholung nötig.
„Output“ ist true: der gemessene Wert ist gültig.
Status 1 - Underrange
„Retry“ ist false: mit dem gewählten Drucksensor ist keine Messung
möglich.
„Output“ ist false: der gemessene Wert ist ungültig.
Status 2 - Overrange
„Retry“ ist false: mit dem gewählten Drucksensor ist keine Messung
möglich.
„Output“ ist false: der gemessene Wert ist ungültig.
Status 3 - Meßstellenfehler
Es kann sich auch um einen Softwarefehler handeln!
„Retry“ ist true: Nach Behebung des Fehlers ist eine erneute Messung möglich.
Status Pressure Sensor.vi - Seite 213
„Output“ ist false: der gemessene Wert ist ungültig.
Es erscheint eine Dialogbox, die auf diesen Fehler hinweist. Falls
möglich, kann dieser repariert und durch klicken des <OK>-Buttons
die Messung wiederholt werden.
Status 4 - Meßstelle ausgeschaltet
Eine Dialogbox weist auf diesen Fehler hin. Nach dem Einschalten
des entsprechenden TPG300 kann die Messung durch Klicken des
<Retry>-Buttons wiederholt werden. Dann wird „Retry“ gleich true.
Soll dieser Fehler zunächst übergangen werden, kann durch Klicken
des <NEXT>-Buttons „Retry“ auf false gesetzt werden. Die Messung wird nicht wiederholt.
„Output“ ist false: Der (nicht) gemessene Wert ist ungültig.
Status 5 - keine Hardware gefunden
Eine Dialogbox weist auf diesen Fehler hin. Wahrscheinliches Auftreten dieses Fehlers: Fehler in der Konfiguration oder ein Schnittstellenkabel/eine Schnittstelle ist defekt/nicht angeschlossen.
„Retry“ ist false: Bei fehlender Hardware kann auch keine Messung
wiederholt werden.
„Output“ ist false: Der (nicht) gemessene Wert ist ungültig.
Status Pressure Sensor.vi - Seite 214
Programm:
Talk Active Internet.vi
Eingabe:
Machine
Port
Input
End Session
Ausgabe:
Connection ID out
Port out
Kurzbeschreibung:
Aktiver Dialog mit einem anderen Rechner durch TCP
Programmbeschreibung: Der Eingang „Port“ wird direkt zum Ausgang „Port out“ durchgeschliffen.
Mit „Machine“ wird der Zielrechner festgelegt. „Machine“ enthält
die Internet-Adresse des Zielrechners.
Die Zahl „1500“ kennzeichnet den Timeout in Millisekunden (hier:
1,5 s). So lange wird gewartet, bis eine Verbindung abgebrochen
wird.
Diese drei Eingaben werden der Anweisung „TCP Open Connection.vi“ zugeführt, die den Kontakt zum Zielrechner herstellt.
Durch die „Connection ID“, die Identifikation der aufrechterhaltenen
Verbindung zum Zielrechner, wird das „Talk Module Active.vi“ aktiviert. Dieses Modul stellt die Kommunikation zwischen den Rechner her (unidirektional). Eingabeparameter sind hier der „Input“
(Texteingabe) und „End Session“ (vorzeitiger Abbruch der Kommunikation).
Die Verbindung wird durch die „TCP Close Connection.vi“-Anweisung beendet.
Zum Schluß folgt die Fehlerbehandlung. Mit der Eingabe null werden alle Meldungen per Dialogfenster unterdrückt.
Talk Active Internet.vi - Seite 215
Programm:
Talk Module Active.vi
Eingabe:
Connection ID
Input Line
User Stop
Error In (No Error)
Ausgabe:
Connection ID out
Error out
Kurzbeschreibung:
Durchführung einer interaktiven (umgewandelt in unidirektional)
Kommunikation zwischen zwei Rechnern mittels TCP, Sender.
Programmbeschreibung: Es wird festgestellt, ob bereits ein Fehler (z.B. beim
Verbindungsaufbau zum Zielrechner) aufgetreten ist.
Ist dies der Fall, werden die Connection ID und dieser Fehlercode direkt zum Ausgang geführt. Es erfolgt keine Bearbeitung.
Ist bisher kein Fehler aufgetreten, wird die Connection ID ebenfalls
zum Ausgang geführt.
Der Eingabe „Input Line“ wird ein Carriage Return/ Line Feed und
das Steuerzeichen „\04“, daß das Ende der Übertragung kennzeichnet, angehängt. Das Ergebnis kann im Indikator „Local“
angesehen werden.
Wurde keine Unterbrechung der Verbindung registriert, wird der entstandene String mit der Anweisung „TCP Write.vi“ an den Zielrechner übertragen.
Der Schalter „EOF stop“ stammt aus der ursprünglichen Version, die als Beispiel im LabVIEW-Programm enthalten war. Dieser Schalter
diente zur Unterbrechung der Verbindung, wenn
während des interaktiven Datenaustauschs ein
Fehler auftrat. Die Umwandlung in die unidirektionale Funktionsweise dieses Programms macht ihn für die weitere Übertragung überflüssig.
War dieser Schalter true, wurde das Fehlerregister gelöscht und mit
„No EOC Error.vi“ gesetzt (Connection Closed).
Tritt während der Übertragung des Strings ein Fehler auf, wird dieser
Schalter gesetzt, die Verbindung unterbrochen und eine entsprechende Fehlermeldung ausgegeben. Am Ende wird der Schalter „EOF
stop“ wieder zurückgesetzt.
Talk Module Active.vi - Seite 216
Programm:
Talk Module Passive.vi
Eingabe:
Connection ID
User Stop
Error In (No Error)
Ausgabe:
Connection ID out
Stopped
Remote
Error out
Nothing Read
Kurzbeschreibung:
Durchführung einer interaktiven (umgewandelt in unidirektional)
Kommunikation zwischen zwei Rechnern mittels TCP, Empfänger.
Programmbeschreibung: Der String „Remote“ wird über eine „local variable“ mit einem leeren String initialisiert.
Es wird festgestellt, ob bereits ein Fehler (z.B. beim
Verbindungsaufbau zum Zielrechner) aufgetreten ist.
Ist dies der Fall, werden die Connection ID und dieser Fehlercode direkt zum Ausgang geführt. Es erfolgt keine Bearbeitung.
Ist bisher kein Fehler aufgetreten, wird die „Connection ID“ ebenfalls zum Ausgang geführt.
Ein Shift-Register wird initialisiert. In ihm werden die übertragenen
Daten gesammelt.
Die Anweisung „TCP Read.vi“ schaut nach, ob an der durch
„Connection ID“ definierten Verbindung Daten übermittelt wurden.
Es wird eine maximale Länge von 512 Bytes definiert.
Wichtig ist die Begrenzung: Der Timeout, das heißt der Abbruch des
Lesevorgangs erfolgt nach 100 ms. Läßt man diesen Eingang unbeTalk Module Passive.vi - Seite 217
schaltet werden 60 s als Timeout-Grenze angenommen. In dieser Zeit
werden alle anderen Programme angehalten.
Die Anweisung „Not Time Out Error.vi“ setzt einen Timeout-Fehler
zurück.
Der Fehlercluster wird mit der „Unbundle“-Anweisung aufgeteilt.
Bei Auftreten eines Fehlers wird die WHILE-Schleife abgebrochen.
Zusätzliche Bedingung zum Abbruch ist die Anzahl der Durchläufe
der WHILE-Schleife. Der Leseversuch wird viermal wiederholt, bevor der Abbruch erfolgt.
Erfolgt ein Abbruch der WHILE-Schleife innerhalb dieser fünf Versuche, ist durch die Negation der Ausgang „Nothing Read“ gleich
false. Erfolgte der Abbruch wegen der Überschreitung dieses Limits,
wird der Ausgang gleich true.
Der aus der „TCP Read.vi“-Anweisung hervorgehende String (in der
Regel ein Zeichen), wird auf seine Länge hin überprüft.
Ist ein Zeichen vorhanden (siehe Bild oben), wird überprüft, ob es
sich um das Steuerzeichen „\04“ handelt, daß das Ende der Übertragung signalisiert. Dies wird mit der „Split String“-Anweisung erreicht. Das neue Zeichen wird an die Zeichenkette aus dem ShiftRegister gehängt.
Wurde das Steuerzeichen registriert, wird der Ausgang „Stopped“
auf true gesetzt. Somit kann leicht überprüft werden, ob die Übertragung vollständig war, oder ob die Übertragung aufgrund eines Fehlers abgebrochen wurde.
Ist der String ein leerer String, passiert nichts.
Der bisher vorhandene String wird wieder auf
das Shift-Register geführt und kein Signal zum
Abbruch gegeben.
Der Zuletzt geänderte String wird in „Remote“ angezeigt, bzw. ausgegeben.
„No EOC Error.vi“ setzt einen vorhandenen „Connection closed“Fehler zurück. Der Fehlercluster wird über „Error Out“ ausgegeben.
Talk Module Passive.vi - Seite 218
Programm:
Talk Passive Internet.vi
Eingabe:
Port
Ausgabe:
Error?
Received String
Kurzbeschreibung:
Passiver Dialog (Antwort) mit einem anderen Rechner via TCP
Programmbeschreibung: Das „TCP Listen.vi“ veranlaßt den aufrufenden Rechner nach einem
Versuch eines Verbindungsaufbaus mit diesem Rechner zu suchen.
Die Suche ist zeitlich auf 1,5 s begrenzt, um nicht alle anderen Programme zu sperren. Es kann ein beliebiger Port festgelegt werden.
Default-Wert ist 6342.
Dieses Programm existiert in ähnlicher Form als Beispiel in der
LabVIEW-Library. Der vorhandene Port-Wert wurde übernommen.
Wurde ein Verbindungsaufbau registriert, wird die reservierte Identifikation „Connection ID“ und ein eventuell aufgetretener Fehlercode
an das Unterprogramm „Talk Module Passive.vi“ weitergegeben. In
diesem Programm findet die Übermittlung (Empfang) der Daten
statt.
Das Ergebnis des Transfers wird in „Received String“ ausgegeben.
Die „Connection ID“ und der Fehlercluster werden an die Anweisung „TCP Close Connection.vi“ weitergegeben, wo die Verbindung
beendet wird.
Der Fehlercluster wird der Fehlerbehandlungsroutine „General Error
Handler.vi“ zugeführt. Ein aufgetretener Fehler wird durch den Indikator „Error?“ ausgegeben. Alle Anzeigen werden durch die Eingabe
von 0 (Null) ignoriert. Die verwendeten Dialogboxen unterbrechen
alle laufenden Programme.
Talk Passive Internet.vi - Seite 219
Programm:
Value in span.vi
Eingabe:
New Value
Old Value
Ausgabe:
In Span (+/- 10%)
Span (+/- 10%)
Kurzbeschreibung:
Vergleich zweier Werte. Maximale Abweichung des neuen von dem
alten Wert: 10%
Programmbeschreibung: Der alte Wert wird mit 0,1 multipliziert. Ergebnis ist die 10%Spanne, um die der neue Wert um den Alten schwanken darf. Dieses
Ergebnis wird in „Span (+/- 10%)“ ausgegeben.
Die ermittelte Abweichung wird zu dem alten Wert addiert, bzw. von
dem alten Wert abgezogen.
Der neue Wert wird mit dem daraus entstehenden Intervall verglichen. Ist der neue Wert kleiner als der alte Wert plus der Abweichung und größer als der alte Wert minus der Abweichung, wird der
Schalter „In Span (+/- 10%)“ gleich true. Ist diese Bedingung nicht
erfüllt, wird der Schalter gleich false.
Value in span.vi - Seite 220
Programm:
Witch Input is true.vi
Eingabe:
1, 2, 3, 4, 5, 6, 7, 8, 9, 10
Ausgabe:
One ist true
Number of true
Kurzbeschreibung:
Zehn Eingänge werden überprüft, ob einer true ist. Wenn ja, welcher?
Programmbeschreibung: Voraussetzung: Es kann immer nur ein Eingang true sein, niemals
mehrere. Durch die Verwendung in dem Programm „Get PositionNumbers in other Sections.vi“ wird dies gewährleistet.
Jeder Eingang erhält eine CASE-Struktur. Alle CASE-Strukturen
sind in Reihe geschaltet.
Eingangswerte dieser Reihenschaltung sind für „One is True“ gleich
false und für „Number of true“ gleich 0 (Null).
Sind die Eingänge (1 ... 10) gleich false, werden diese Default-Werte
nur weitergereicht und schließlich über die Indikatoren ausgegeben
(siehe Eingang 2).
Ist aber einer der Eingänge gleich true, im Bild alle außer Eingang 2,
wird „One is true“ gleich true gesetzt und eine Konstante, die der
Ziffer des Eingangs entspricht, wird auf den Indikator „Number of
true“ geleitet.
Witch Input is true.vi - Seite 221