312 lines
32 KiB
HTML
312 lines
32 KiB
HTML
<HTML>
|
||
<HEAD>
|
||
<TITLE>E_DEVICE</TITLE>
|
||
<META NAME="Generator" CONTENT="KDOC ">
|
||
</HEAD>
|
||
<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
|
||
|
||
<table BORDER=0 COLS=1 WIDTH="100%" BGCOLOR="#FFFFCC" NOSAVE >
|
||
<tr ALIGN=CENTER VALIGN=CENTER NOSAVE>
|
||
<td NOSAVE><font face="Arial,Helvetica"><font size=+2></font></font>
|
||
<br><font face="Arial,Helvetica"><font size=+2>CCS Modul <b>E_DEVICE</b></font></font>
|
||
<br> </td>
|
||
</tr>
|
||
</table>
|
||
<PRE>
|
||
Funktionsbeschreibung:
|
||
|
||
Mit diesem Modul werden Einstellparameter an ein SICL-Device
|
||
(Schnittstelle: HPIB- oder VXI) gesendet.
|
||
|
||
Wichtig: Fuer den zugrundeliegenden Prozess muss eine
|
||
Konfigurationsdatei existieren, "sicl_device_com.cnf".
|
||
In dieser Datei werden je Device Aktionsprofile fuer
|
||
Fehlerbearbeitung bei Sende- bzw. Leseoperationen
|
||
hinterlegt.
|
||
Darueberhinaus enthaelt diese Datei Device-spezifische
|
||
und somit fuer jeden Devicetyp einmalig festlegbare
|
||
Konfigurationsinformationen.
|
||
|
||
Eine detaillierte Beschreibung des Dateiaufbaus findet
|
||
sich u.a. auch in der Framemaker-Datei:
|
||
".../6_testmodul_pool/sicl_device_com/doc/device_process.frm".
|
||
|
||
Beschreibung der Modulparameter:</pre><b><a name="param1">1</a> PRUEFSCHRITT</b><pre>
|
||
GAUDI Pruefschritt
|
||
------------------------------</pre><b><a name="param2">2</a> POSITION</b><pre>
|
||
PAV- Position
|
||
------------------------------</pre><b><a name="param3">3</a> DEVICENAME</b><pre>
|
||
z.B. DIGITIZER_01
|
||
hiermit wird mithin ein Devicename angegeben, der (z.Zt. noch)
|
||
in der Datei "hw_vxi_geraete_x...xx.cnf" angegeben sein muss
|
||
(dies braucht nicht vom Anwender dieses Moduls getan zu werden);
|
||
mit den darin enthaltenen Informationen laesst sich ein
|
||
SICL-Device am VXI- bzw. HPIB-Bus ueber seine Adresse identifizieren
|
||
und ansteuern;
|
||
------------------------------</pre><b><a name="param4">4</a> FUNCTION</b><pre>
|
||
mit jeder Verwendung dieses Moduls kann einer der folgenden
|
||
Schluessel angegeben werden:
|
||
INIT (=initialisieren)
|
||
Die ab CHANNEL_PRMTR und/oder durch vorangegangene mehrmalige
|
||
Aufrufe mit FUNCTION = 'CONT' hinterlegten Datenstrings werden
|
||
unmittelbar nach dem Ruestlauf, dh. im ersten(!) Listenlauf an
|
||
das ausgewaehlte Device uebertragen.
|
||
>>> In allen weiteren Listenlaeufen findet <<<
|
||
>>> keine Uebertragung dieser Daten statt! <<<
|
||
>>> (wird durch den Prozess selbst gesteuert) <<<
|
||
|
||
SEND (=senden)
|
||
Die ab CHANNEL_NO und/oder durch vorangegangene mehrmalige
|
||
Aufrufe mit FUNCTION = 'CONT' (s.u.) hinterlegten Datenstrings
|
||
werden mit jedem Listenlauf (ausser im Ruestlauf) an das
|
||
ausgewaehlte Device uebertragen.
|
||
|
||
RCV / RCVFAST / RCV_n / RCVFAST_n / RCV_n_m / RCVFAST_n_m
|
||
(=senden+lesen / 'send+receive fast' Channel n (bis m) )
|
||
Wie zuvor 'SEND', jedoch wird nach dem Senden der Daten (in der
|
||
Regel ein Abfragekommando) eine Antwort vom Device ausgelesen.
|
||
Aus der Antwort koennen anschliessend mit Hilfe des Moduls
|
||
"M_DEVICE" (evtl. mehrmals nacheinander) die fuer die Auswertung
|
||
(mit "M_AUSWERTUNG") relevanten Bestandteile extrahiert werden.
|
||
Im FAST-Modus werden Daten in 16 oder 32 Bit Integerformat
|
||
uebertragen (in der Konfigurationsdatei muss dazu ein entsprechender
|
||
Eintrag vorhanden sein - Default ist 16).
|
||
Die 'n'- bzw. 'm'-Parameter ermoeglichen die Zuordnung der
|
||
empfangenen Daten zu einem bestimmten oder mehreren Kanaelen:
|
||
Beispiele:
|
||
RCV es werden ASCII-Daten fuer Kanal 1 gelesen;
|
||
dies ist die normale Verwendung bei Devices, die nicht ueber
|
||
mehrere Kanaele verfuegen oder dies nach aussen nicht
|
||
unmittelbar darstellen koennen (dennoch kann der empfangene
|
||
Datenstrom ueber eine interne Struktur verfuegen, dh.
|
||
mehrdimensional sein);
|
||
RCV_n es werden ASCII-Daten fuer den Kanal n gelesen;
|
||
RCVFAST_n_m es werden Daten im "fast access mode" fuer Kanal
|
||
n bis m gelesen;
|
||
|
||
Wichtig: Die interne Struktur des zu lesenden Datenstroms muss
|
||
in der Konfigurationsdatei spezifiziert worden sein!
|
||
Dies ist fuer den nachfolgenden Auswerteschritt mit
|
||
M_DIGITIZER wichtig.
|
||
|
||
CONT (=continue, fuer groessere Datenmengen, dh. laengere
|
||
Kommandosequenzen)
|
||
Die Daten werden Prozess-intern gespeichert und mit jedem
|
||
Aufruf, der auch das FUNCTION-Schluesselwort 'CONT' enthaelt,
|
||
zeilenrichtig (fuer den Fall, dass die Einstellung eines Device
|
||
von der Reihenfolge der dargebotenen Informationen abhaengt)
|
||
aneinandergehaengt.
|
||
|
||
FILE (=Datei uebertragen)
|
||
im Feld FILENAME kann ein Dateiname (inkl. Pfad) angegeben werden;
|
||
der Dateiinhalt wird unmittelbar nach dem Ruestlauf mit Beginn
|
||
des ersten Listenlaufs (und nur dann) komplett an das angegebene
|
||
Device uebertragen;
|
||
|
||
Wichtig: Intern wird 'FILE' wie 'CONT' behandelt, dh. ohne einen
|
||
nachfolgenden Modulaufruf mit FUNCTION = 'INIT', bei
|
||
der dann auch noch ein Nachspann (--> GENERAL_PRMTR01)
|
||
angegeben werden kann, findet keine Dateiuebertragung
|
||
statt.
|
||
SYNC
|
||
Spielt mit dem Konfigfileeintrag "DEVICENAME_OPERATIONCOMPLETE_CMD = Zeichenkette"
|
||
zusammen. Hiermit kann ein Kommando angegeben werden, mit dem ein Device
|
||
die vollstaendige Abarbeitung eines oder mehrerer Kommandos
|
||
im Event- oder Statusbyte anzeigt;
|
||
bei SCPI-konformen Devices handelt es sich um das Kommando '*OPC';
|
||
dieses Kommando wird im Modus 'SYNC' des GAUDI-Moduls 'E_DEVICE'
|
||
im Anschluss an eine Folge von Kommandos an das jeweilige Device
|
||
uebertragen, um anschliessend auf einen ServiceRequest zu warten;
|
||
diese Vorgehensweise bedingt, dass das Device ueber ein Eventbyte
|
||
mit OperationComplete-Bit und ueber ein jenem zugeordnetes Bit im
|
||
Statusbyte verfuegt;fuer 80 Zeichen aus);
|
||
der Anwender muss zur Aktivierung ein Kommando der Art
|
||
'*ESE xx;*SRE yy' waehrend der Initialisierung an das Device senden;
|
||
(Default: keine Zeichenkette)
|
||
------------------------------</pre><b><a name="param5">5</a> RCV_DATAFORMAT</b><pre>
|
||
STRING / ASCII / BINARY16 / SBINARY16 / BINARY32 / SBINARY32
|
||
|
||
STRING:
|
||
Devices deren Antwort eine Folge von ASCII-Zeichen ist;
|
||
diese Antwort kann ueber eine interne Struktur verfuegen
|
||
und aus mehr als einem Wert (in ASCII-Darstellung) bestehen;
|
||
der Anwender waehlt diese Formatangabe, wenn er gezielt einzelne
|
||
Bereiche einer Geraete-Antwort analysieren moechte;
|
||
dazu sind im Modul 'M_DEVICE' folgende Angaben notwendig:
|
||
- Auswahl der ACTION = GET_FIELD;
|
||
|
||
bei Auswahl eines bestimmten durch Begrenzer abgetrennten Feldes:
|
||
- ACTION_PRMTR erhaelt die Nummer des Feldes
|
||
(gezaehlt wird von 1 an!)
|
||
- Angabe eines DATA_SEPARATOR in Hochkommata,
|
||
das ist der Begrenzer des Feldes;
|
||
|
||
bei Auswahl eines Bereichs innerhalb der empfangenen Antwort:
|
||
- ACTION_PRMTR erhaelt in diesem Fall ein "-";
|
||
- START / END erhalten die Start- und Endeposition des ersten
|
||
und letzten Zeichens des Abschnitts, der aus der Antwort extrahiert
|
||
werden soll; (gezaehlt wird von 1 an!)
|
||
|
||
z.B.: Device meldet: "Hallo, mein Sohn Brutus, Du Moerder!"
|
||
(natuerlich ohne Hochkommata!)
|
||
ACTION GET_FIELD
|
||
ACTION_PRMTR1 2
|
||
ACTION_PRMTR2 ","
|
||
RESULT_VALUE " mein Sohn Brutus"
|
||
oder
|
||
ACTION GET_FIELD
|
||
ACTION_PRMTR1 -
|
||
ACTION_PRMTR2 -
|
||
START 8
|
||
END 23
|
||
RESULT_VALUE "mein Sohn Brutus"
|
||
|
||
Wichtig: Das/der erste Feld/Abschnitt beginnt natuerlich nicht
|
||
mit einem Begrenzungszeichen.
|
||
Das/der letzte Feld/Abschnitt beginnt mit dem angegebenen
|
||
Begrenzungszeichen und endet mit einer evtl. vom Device
|
||
uebertragenen Endekennung (z.B. CR/LF).
|
||
|
||
ASCII:
|
||
Device-Antworten als Folge von Messwerten in ASCII-Darstellung.
|
||
Die interne Struktur soll ausgewertet (>DATASEPARATOR) und fuer
|
||
weitere Aktionen - ACTION - in Floatingpoint-Werte gewandelt werden.
|
||
Der Parameter DATASEPARATOR muss fuer den Fall das/die ASCII-Zeichen
|
||
enthalten, mit dem/denen die Daten voneinander getrennt werden.
|
||
Enthaelt die Device-Antwort Daten fuer mehrere Kanaele, muss dies
|
||
im Parameter FUNCTION = RCV... des Moduls 'E_DEVICE' angegeben worden
|
||
sein.
|
||
|
||
BINARY16/SBINARY16
|
||
Device-Antworten als Folge von Binaerwerten (ohne/mit Vorzeichen-Bit).
|
||
Die interne Struktur dieser Daten wird in der Konfiguratonsdatei
|
||
fuer den entsprechenden Devicetyp angegeben (s.Dokumentation in
|
||
'device_process.frm').
|
||
Enthaelt die Device-Antwort Daten fuer mehrere Kanaele, muss dies
|
||
im Parameter FUNCTION = RCV... des Moduls 'E_DEVICE' angegeben worden
|
||
sein.
|
||
|
||
BINARY32/SBINARY32
|
||
Device-Antworten als Folge von Binaerwerten (ohne/mit Vorzeichen-Bit).
|
||
Die interne Struktur dieser Daten (z.B. 2 Datenwerte zu 16Bit pro
|
||
32Bit-Wort) wird in der Konfiguratonsdatei fuer den entsprechenden
|
||
Devicetyp angegeben (s.Dokumentation in 'device_process.frm').
|
||
Enthaelt die Device-Antwort Daten fuer mehrere Kanaele, muss dies
|
||
im Parameter FUNCTION = RCV... des Moduls 'E_DEVICE' angegeben worden
|
||
sein.
|
||
------------------------------</pre><b><a name="param6">6</a> DATASEPARATOR</b><pre>
|
||
Ein oder mehrere ASCII-Zeichen, mit dem/denen die von einem Device
|
||
empfangenen Daten voneinander getrennt sind (unterschieden werden koennen).
|
||
Das/die Zeichen werden zwischen Anfuehrungszeichen gesetzt.
|
||
Beispiel: ", ,"
|
||
Der Datenseparator besteht aus 3 Zeichen einem Komma, einem
|
||
Leerzeichen und einem weiteren Komma.
|
||
------------------------------</pre><b><a name="param7">7</a> RCV_DATARANGE</b><pre>
|
||
Angabe des Wertebereichs (inkl. Einheit) des Kanals bzw. der Kanaele,
|
||
fuer den/die Daten aufbereitet werden sollen.
|
||
Die minimale Angabe beschraenkt sich auf den Kanal der mit diesem Aufruf
|
||
bearbeitet werden soll.
|
||
Beispiel: CH1:U20V;CH2:B10V;...
|
||
Kanal1: Range 20 Volt unipolar
|
||
Kanal2: Range 10 Volt bipolar
|
||
Es k<>nnen auch Kanalbereiche mit der Syntax CH<min_kanal>-CH<max_kanal>
|
||
angegeben werden, z.B.: CH1-CH10:B40V
|
||
------------------------------</pre><b><a name="param8">8</a> RCV_DATARATE</b><pre>
|
||
Fuer Auswertungen ueber einen Zeitbereich wird hier spezifiziert, mit
|
||
welcher Datenrate Daten empfangen wurden.
|
||
Einheit ist 1/sec.
|
||
Ein Wert von 10000 bedeutet, dass 10000 Werte pro Sekunde vom
|
||
Device ermittelt wurden;
|
||
Beispiel: CH1:10000;CH2:20000;...
|
||
------------------------------</pre><b><a name="param9">9</a> RCV_NUMBER</b><pre>
|
||
Der Anwender gibt hiermit die Anzahl der Bytes an, die nach einem
|
||
FETCH:...? oder anderen Abfragekommando mindestens gelesen werden
|
||
sollen.
|
||
Die Angabe ist notwendig, sofern von einem Device stark differierende
|
||
Datenmengen (mit evtl. unterschiedl. Datenformaten) ausgelesen werden
|
||
koennen. Anderenfalls gilt der Eintrag in der Konfigurationsdatei (s.u.).
|
||
|
||
Im Fast-Mode (RCVF...) werden - entgegen der sonst ueblichen Weise -
|
||
nicht Bytes, sondern (per direktem Registerzugriff) Datenwoerter
|
||
(16/32Bit) eingelesen. Hierbei entspricht jedes Datenwort mindestens
|
||
einem Messwert.
|
||
Die Groesse eines Datenwortes in Bytes muss in der Konfigurationsdatei
|
||
spezifiziert worden sein (s.Dokumentation in 'device_process.frm').
|
||
|
||
Diese Information wird nur im Modus FUNCTION = 'RCV...' benoetigt.
|
||
|
||
Default: '-' die MaxAnzahl-Information aus der Konfigurationsdatei
|
||
wird genommen (s.Dokumentation);
|
||
------------------------------</pre><b><a name="param10">10</a> TIMEOUT</b><pre>
|
||
Wert in Millisekunden, der die maximale Wartezeit fuer eine
|
||
Geraeteantwort festlegt (nur bei FUNCTION = 'RCV...' von Bedeutung);
|
||
|
||
Default-Einstellung: 10000ms = 10s
|
||
------------------------------
|
||
Wichtig: Bei Function 'CONT' werden die in aufeinanderfolgenden Modul-
|
||
aufrufen jeweils angegebenen Daten unmittelbar aneinander gehaengt.
|
||
Das bedeutet, dass zunaechst saemtliche Parameter von Position 8
|
||
verknuepft werden, dann die von Position 9 usw.:
|
||
==> 81 82 83 ... 91 92 93 ... usw.
|
||
Ausnahme: die Parameter der Positionen 12 bis 16, sie werden mit
|
||
jedem Modulaufruf unmittelbar aneinandergehaengt:
|
||
==> 121 131 141 151 161 122 132 142 152 162 ...</pre><b><a name="param11">11</a> ROUTING</b><pre>
|
||
Hiermit koennen z.B. die aktiven Kanaele definiert werden:
|
||
z.B.: ROUTe:OPEN|CLOSE|? [<channel list>]
|
||
------------------------------</pre><b><a name="param12">12</a> MEASURE_CTRL1</b><pre>
|
||
Hiermit lassen sich saemtliche Kommandos fuer die Steuerung der
|
||
Datenaufnahme eingeben:
|
||
z.B.: FREQency:RANGe [<frequency>] [<group list>]
|
||
[SENSe:]ROSCillator:SOURce INTernal | CLK10
|
||
SWEEP:POINts <record length> [<group list>]
|
||
------------------------------</pre><b><a name="param13">13</a> MEASURE_CTRL2</b><pre>
|
||
Hiermit kann z.B. fuer jeden Kanal der Messbereich eingestellt werden:
|
||
z.B.: [SENSe:]VOLTage[:DC]:RANGe[:UPPer] ,voltage> [<channel list>]
|
||
------------------------------</pre><b><a name="param14">14</a> SIGNAL_GEN</b><pre>
|
||
Hier lassen sich Daten fuer Signalgenerierung eingeben.
|
||
------------------------------</pre><b><a name="param15">15</a> TRIGGER/ARMING</b><pre>
|
||
Hiermit lassen sich die Triggerbedingungen spezifizieren und
|
||
das Device scharf machen:
|
||
z.B.: ARM:SOURce EXTernal | IMMediate [<group id>]
|
||
TRIGger:SOURce IMMediate ...
|
||
OUTOut:TRIGger:SLOPe POSitive | NEGative ...
|
||
------------------------------</pre><b><a name="param16">16</a> GENERAL_PRMTR1</b><pre>
|
||
Hierin kann der Anwender beliebige sonstige an das Device zu
|
||
uebertragende Daten eingeben.
|
||
Keine Abfrage-Kommandos, dies wuerde zu Fehlfunktionen fuehren!
|
||
|
||
Wichtig: Diese Daten (~_PRMTR1 - ~_PRMTR4 FILENAME) werden je Modulaufruf
|
||
unmittelbar aneinandergefuegt:
|
||
~PRMTR1 ... ~PRMTR4 ~PRMTR1 ... ~PRMTR4 usw.
|
||
------------------------------</pre><b><a name="param17">17</a> GENERAL_PRMTR2</b><pre>
|
||
dito
|
||
------------------------------</pre><b><a name="param18">18</a> GENERAL_PRMTR3</b><pre>
|
||
dito
|
||
------------------------------</pre><b><a name="param19">19</a> GENERAL_PRMTR4</b><pre>
|
||
dito
|
||
------------------------------</pre><b><a name="param20">20</a> FILENAME</b><pre>
|
||
Name der Datei (inkl. Pfad), deren Inhalt im ersten(!) Listenlauf
|
||
vom Leitrechner (im SaW ist es der 'lrp3') geladen und an das
|
||
Device uebertragen werden soll.
|
||
Der Zugriffspfad muss im Konfigurationsfile (s.o.) angegeben sein!
|
||
------------------------------</pre><b><a name="param21">21</a> RCV_CTRL1</b><pre>
|
||
Hiermit lassen sich die Steuer-Parameter fuer den Datenzugriff
|
||
eingeben (vgl. FUNCTION RCV_... / RCVFAST_...)
|
||
z.B.: VXI:FDC:MODE ...
|
||
FORMAT:OVERrun <boolean>
|
||
FETCh:Data? [<count>][,<starting address>] [<channel id>]
|
||
|
||
Wichtig: Bei mehrkanaligen Devices ist es wichtig, im FUNCTION-Parameter
|
||
zu spezifizieren, fuer welche Kanaele die Daten vorliegen!
|
||
------------------------------</pre><b><a name="param22">22</a> RCV_CTRL2</b><pre>
|
||
dito
|
||
------------------------------</pre><b><a name="param23">23</a> ERRORFLAG</b><pre>
|
||
Dies Flag wird nur dann auf den Wert 1 gesetzt, sollte bei
|
||
FUNCTION = 'INIT', 'SEND', 'RCV...' oder 'RCVFAST..' ein Schreib-
|
||
bzw. Lesefehler erkannt worden sein.
|
||
Bei FUNCTION = 'FILE' wird das Errorflag gesetzt, wenn die Datei
|
||
nicht gelesen werden kann.
|
||
</PRE>
|
||
</BODY>
|
||
</HTML>
|