CCS Modul   M_DMM
 
   $Id: m_dmm.C,v 1.8 2006/01/09 16:04:14 gef1sa Exp $
   ---------------------------------------------------------------------
   Kurzbeschreibung: 	Aufruf des Prozesses VXI_DMM
   ---------------------------------------------------------------------
   Projekt:		CCS
   Sourcefile:		m_dmm.C
   Autor:		RtW/TEF72-Juilfs (12.12.95)
   Zielsystem:		HP9000/V743 (HP-RT 2.0x), /Sxxx (HP-UX 9.0x)
   Sprache:		C++
   ---------------------------------------------------------------------
   Prototyp:
   MPI Schnittstelle
   void m_dmm(shm_stringpointer *zeilen_info
	   ,shm_stringpointer   *zeilen_wert
	   ,long index1
	   ,long anzahl)
    
   ---------------------------------------------------------------------
   Aufruf: im Vectorinterpreter
   
	 (*funktionen[modulnummer])
	    (Ssp_expand_zeile
	     ,Ssp_expand_wert
	     ,p_verwaltung->begin_modulblock
	     ,p_verwaltung->anzahl_modulparameter);

   

   
   ---------------------------------------------------------------------
   Funktionsbeschreibung:
   Dieses Modul Ïbergibt seine Parameter an den Prozess VXI_DMM.
   Im Prozess VXI_DMM werden dann die Messungen durchgefÏhrt.
   Das MeÞergebnis wird per Returnparameter aus diesem Modul weiter 
   an das Modul M_AUSWERTEN gegeben. Die FunktionalitÌt des Multimeters
   wird mit den Ûbergabeparametern eingestellt.
   
   
   Beschreibung der ModulÏbergabeparameter:
1 PRUEFSCHRITT
   	GAUDI PrÏfschritt
   ------------------------------
2 POSITION
   	PAV- Position
   ------------------------------
3 VXI_GERAET
   	Name des GerÌtes laut PAM Beschreibungsfile	
	:DVM_01
	:DVM_02	
   ------------------------------
4 DMM_FUNKTION
    	MeÞfunktion
	:DCV
	:ACV
	:RESISTANCE
   ------------------------------
5 DMM_RANGE
	Messbereich in Volt Kohm
	0.0	Autorange (Sonderfunktion) 
	
   ------------------------------
6 DMM_APER_TIME
    	Integrationszeit in s
        Folgende Integrationszeiten können eingestellt werden.
        10 us, 100us, 2,5 ms, 266, ms
        sollte ein Integrationswerteingabe zwischen 2 Werten liegen, wird immer der nähere
        verwendet.

                  
        
   ------------------------------
7 DMM_TRG_SOURCE
    	Triggerart
	:IMMEDIATE	interner Trigger
	:EXT		externer Trigger
	:HOLD		Halten des MeÞergebnisses
   ------------------------------
8 DMM_TRG_COUNT
    	Anzahl der Triggerimpulse
   ------------------------------
9 DMM_TRG_DELAY
	Delay zwischen 1. Trigger und 1.Messung
   ------------------------------
10 DMM_SMP_SOURCE
    	Quelle des Triggerimpulses
	:IMMEDIATE	Interner Trigger	
	:TIMER		Keine Beschreibung
	:SOFTWARE
	:CONTROLREG
   ------------------------------
11 DMM_SMP_COUNT
   	Anzahl von Messungen per Trigger
   -------------------------------
12 DMM_SMP_PERIOD
   	Zeitdauer zwischen 2 Messungen 
   -------------------------------
13 DMM_AUTOZERO
	:ON
	:OFF
	:ONCE         
   -------------------------------
14 DMM_OFFSET_COM
   	:TRUE
	:FALSE
   -------------------------------
15 DMM_INTERRUPT
   -------------------------------
16 DMM_MASKE
   -------------------------------
17 DMM_MODUS
   Steuerfunktion des DMM   Einstellen Arm    Lesen
   INIT				+	
   ARM					+
   READ						+
   S				+	+
   AR (fÏr ACV)				+	+
   M (= NORM)			+	+	+	
	
   -------------------------------
18 R_MESSWERT
   	RÏckgabe des Messwertes
   -------------------------------
19 TIMEOUT
20 DIMENSION
21 MESSTEILERFAKTOR
   
   
   
   
   ######################################################################
   Status:
   Bisher wurden beim Aufruf von ACVINIT 2 Sekunden gewartet. Dies
   soll mit einer neuen Prozessstruktur geändert werden. Die Funktion
   RACV war dann relativ schnell <200 ms.
   Die Prüfzeit erhöhte sich dadurch um 2 Sekunden  
   
   Änderung des Ablauf:
   Ab der CCS Release 5.2 wird ist es möglich für das 2. DVM einen eigenen Prozess
   aufzusetzen. Hiermit sollen die ACVINIT Aufrufe in den Backround Prozess
   abgearbeitet werden. 

   
   
   Hieraus ergeben sich folgende Fälle.
   1.)	Es gibt nur einen Prozess VD
        Bei Aufruf des ACVINIT wird der VI sofort wieder freigegeben und beim nächsten
        Aufruf von M_DMM die restliche Initialisierunszeitzeit gewartet. 
        Dies bedeutet, dass ggf. beim nächsten DVM Aufruf DCV 2 Sekunden gewartet wird.
        Grund: Die ACVINIT ist noch nicht abgeschlossen.
        
   2.)	Es gibt einen weiteren Prozess VD ---> V2
        Bei Aufruf des ACVINIT wird der VI sofort wieder freigegeben und beim nächsten
        Aufruf von M_DMM die restliche Initialisierunszeitzeit gewartet.
        Da die DCV Messungen klassisch mit dem DVM_01 durchgeführt werden, 
        und das DVM_01 über dem Prozess VD gesteuert wird, gibt es keinen
        Performance Verlust. Beim Aufsetzen des RACV wird eventuell die Initialisierung
        Zeit des ACVINIT noch abgewartet.
        Der Prüflisten Autor muß darauf achten das zwischen Aufruf ACVINIT und RACV
        ca 2 Sekunden in der Prüfung verbraucht werden.
        bei diesem Verfahren geht die InitialisierungsZeit nicht in die Prüfzeit ein,
        da der Prozess V2 eigenständig das DVM_02 initialisiert, und vor der Initialisierung 
        den VI freigegeben hat.
        Beim Umschalten des V2 Prozesses auf DCV Messungen muß natürlich wieder mit
        einer uminitialisierungszeit von ca 300 ms gerechnet werden. Dies war aber
        auch schon vorher der Fall.