Ein komplexeres Gerät als das Digital-I/O-Modul ist die
Kollimatorsteuerung der einzelnen Spektrometer. Die Spektrometer A und C haben jeweils
einen Kollimator; Spektrometer B hat vier Kollimatoren. Da das
Steuerungsmodul für die Ein- und Ausgabe jeweils 18 Bit
benötigt
, müßten also auf
den einzelnen VME-Bus-Rechnern insgesamt sechs Digital-I/O-Module
eingesetzt und dicke Kabel bis zu den Steuerungsmodulen gezogen
werden. Um viele lange Kabel zwischen den Rechnern und der Elektronik
zu vermeiden und weil auch nicht genügend
TVM744-Schnittstellenkarten zur Verfügung standen, wurde in der
Elektronikwerkstatt des Instituts für Kernphysik ein Multiplexer
entwickelt, über den bis zu acht Geräte an derselben Schnittstelle
betreibbar sind. Hier sind jeweils die ersten vierundzwanzig Bits für
das Gerät als Daten nutzbar. Die restlichen Bits benutzt der
Multiplexer für die eigene Steuerung (siehe
Anhang
).
Im Rahmen dieser Arbeit wurde für diese Hardware ein Gerätetreiber erstellt, der die Funktionalität des Multiplexers unterstützt. Er sollte für Programme, die auf den Digital-I/O zugreifen möchten, ,,transparent`` sein, das heißt die gleiche Schnittstelle zur Verfügung stellen wie der Digital-I/O-Treiber selbst, damit die Programme, die ihn benutzen wollen, nicht geändert werden müssen.
Für die Implementation wurde folgendes Konzept verwendet. Es wird ein neuer Gerätetreiber für die Multiplexerfunktionen erstellt, der seinerseits auf den alten Digitial-I/O-Treiber zugreift. Für jeden zu bedienenden Kanal des Multiplexers meldet der Treiber einen eigenen Service und damit auch einen eigenen Messagesystem-Namen an. In der Datenbank wird zu jedem dieser Namen eine Kanalnummer festgelegt, anhand derer der angesprochene Service am Anfang jeder eingehenden Aktionsanforderung den entsprechenden Multiplexerkanal öffnen und ihn nachher wieder schließen kann. Die Nachricht wird dabei einfach an den Digital-I/O-Treiber durchgereicht.
Um einen Kanal der Multiplexerelektronik zu öffnen, werden die vier
Bits der Kanalnummer gesetzt. Erst wenn dann das sogenannte Handshake-Bit auf 1 gesetzt wird, wird die Programmierung des
Kanals wirksam. Anschließend ist der Kanal geöffnet, und die
Nachricht kann an den eigentlichen Digital-I/O-Treiber weitergereicht
werden. Danach wird das Handshake-Bit wieder auf 0 gesetzt, um den
Kanal wieder zu schließen (siehe Abbildung ).
Zum Einsatz kam dieser Treiber im Zusammenhang mit der
Kollimatorsteuerung von Spektromenter A (siehe
Abschnitt ). Diese war bis dahin das einzige Gerät,
das am Multiplexer angeschlossen war, so daß die Funktionalität nur
eingeschränkt getestet werden konnte. Während des
Experimenteinsatzes sind keinerlei Probleme aufgetreten.
Seit dem Aufbau von Spektrometer B wird die zugehörige Stromversorgung der Quadrupolspulen zur Gradientenkompensation für die NMR-Feldmessung (siehe [Kra92a]) auch über den Multiplexer gesteuert. Dabei sind einige gravierende Probleme zu tage getreten.
Da die Hardware des TVM744 den Zustand der Ausgabebits speichert, liegen die Datenbits des einen Gerätes beim Anwählen eines zweiten Gerätes an diesem an, was zu unvorhersehbaren Reaktionen führen kann, da das Gerät auf die eingestellten Bits reagiert.
Auch ist es so nicht möglich, Befehlssequenzen zu senden, also z.B.
mehrere Datenbits und dann ein Handshake-Bit, da nach jedem Befehl
der Multiplexerkanal wieder geschlossen wird. Nach dem Schließen
stehen dann alle Bits hinter dem Multiplexer wieder auf Null (siehe
Abbildung ). Beim Setzen der Datenbits bereitet
das keine Probleme, da die angeschlossenen Geräte ähnlich wie der
Multiplexer erst mit dem Setzen ihres Handshake-Bits die Datenbits
einlesen. Für das Setzen dieses Handshake-Bits aber wird erst der
Multiplexerkanal wieder geöffnet und damit die Datenbits wieder an
das Endgerät angelegt. Durch die Schaltzeiten in der Elektronik kann
das aber in nicht vorhersehbarer Reihenfolge geschehen, so daß
eventuell einige Datenbits erst nach dem Handshake-Bit am Gerät
anliegen und damit nicht mehr berücksichtigt werden.
All dies hat zur Folge, daß der Multiplexer mit diesem Treiber nicht einsetzbar ist. Es wurde deswegen ein neues Konzept erarbeitet.