CCS Modul   E_DEVICE
 
 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:
1 PRUEFSCHRITT
                                                                               
          GAUDI Pruefschritt                                                                          
    ------------------------------
2 POSITION
                                                                                   
          PAV- Position                                                                               
    ------------------------------
3 DEVICENAME
                                                                                 
          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;                                                                              
    ------------------------------
4 FUNCTION
                                                                                   
          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)                                                          
    ------------------------------
5 RCV_DATAFORMAT
                                                                             
          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.                                                                                    
    ------------------------------
6 DATASEPARATOR
                                                                              
          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.                                             
    ------------------------------
7 RCV_DATARANGE
                                                                              
          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                                                       
    ------------------------------
8 RCV_DATARATE
                                                                               
          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;...                                                           
    ------------------------------
9 RCV_NUMBER
                                                                                 
          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);                                               
    ------------------------------
10 TIMEOUT
                                                                                    
          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 ...
11 ROUTING
                                                                                    
          Hiermit koennen z.B. die aktiven Kanaele definiert werden:                                  
            z.B.: ROUTe:OPEN|CLOSE|? [<channel list>]                                                 
    ------------------------------
12 MEASURE_CTRL1
                                                                              
          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>]                                         
    ------------------------------
13 MEASURE_CTRL2
                                                                              
          Hiermit kann z.B. fuer jeden Kanal der Messbereich eingestellt werden:                      
            z.B.: [SENSe:]VOLTage[:DC]:RANGe[:UPPer] ,voltage> [<channel list>]                       
    ------------------------------
14 SIGNAL_GEN
                                                                                 
          Hier lassen sich Daten fuer Signalgenerierung eingeben.                                     
    ------------------------------
15 TRIGGER/ARMING
                                                                             
          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 ...                                        
    ------------------------------
16 GENERAL_PRMTR1
                                                                             
          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.                                     
    ------------------------------
17 GENERAL_PRMTR2
                                                                             
          dito                                                                                        
    ------------------------------
18 GENERAL_PRMTR3
                                                                             
          dito                                                                                        
    ------------------------------
19 GENERAL_PRMTR4
                                                                             
          dito                                                                                        
    ------------------------------
20 FILENAME
                                                                                   
          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!                          
    ------------------------------
21 RCV_CTRL1
                                                                                  
          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!                         
    ------------------------------
22 RCV_CTRL2
                                                                                  
          dito                                                                                        
    ------------------------------
23 ERRORFLAG
                                                                                  
          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.