:Revision=15
:html
<<
128.137
ME3000-Objekt|ME3000
--
Das IP-Objekt <!RW>ME3000 erlaubt den Zugriff auf die ME3000-Multifunktions-IO-Karte

Die einzelnen Hardwaremodule der Multifunktionskarte werden als Unterobjekte des ME3000-Objektes angesprochen.
>>

<<
128.137.1
ME3000.DIn|DIn
--
Digitale Eingnge. Von den vorhandenen 16 digitalen Eingngen knnen die unteren 12 frei benutzt werden. Die intern verwendeten oberen 4 Bits werden ausgeblendet.
>>
<<
128.137.1.1
ME3000.DIN.Get|Get
--
<!DEF>
function <!TW>ME3000.DIN.Get : real;
<!TXT>
Liefert das Bitmuster an den digitalen Eingngen der ME3000 Karte.
Die intern verwendeten oberen 4 Bits werden ausgeblendet.
>>
<<
128.137.1.2
ME3000.DIN.MeasLowTime|MeasLowTime
--
<!DEF>
function <!TW>ME3000.DIN.MeasLowTime (rBit, rTimeout : real) : real;
<!TXT>
Bestimmt die Lnge einer LOW-Phase des Eingangssignals am digitalen Eingang <!PW>rBit (0..11).

Die ermittelte Zeit wird in Millisekunden zurckgeliefert. 

Werden die erwarteten HIGH/LOW- bzw. LOW/HIGH-bergnge nicht gefunden (z.B. weil kein Eingangssignal vorliegt), so wird nach <!PW>rTimeout Millisekunden abgebrochen und -1 als Ergebnis geliefert.
>>
<<
128.137.1.3
ME3000.DIN.MeasHighTime|MeasHighTime
--
<!DEF>
function <!TW>ME3000.DIN.MeasHighTime (rBit, rTimeout : real) : real;
<!TXT>
Bestimmt die Lnge einer HIGH-Phase des Eingangssignals am digitalen Eingang <!PW>rBit (0..11).

Die ermittelte Zeit wird in Millisekunden zurckgeliefert. 

Werden die erwarteten HIGH/LOW- bzw. LOW/HIGH-bergnge nicht gefunden (z.B. weil kein Eingangssignal vorliegt), so wird nach <!PW>rTimeout Millisekunden abgebrochen und -1 als Ergebnis geliefert.
>>
<<
128.137.1.4
ME3000.DIN.MeasLowHighTime|MeasLowHighTime
--
<!DEF>
function <!TW>ME3000.DIN.MeasLowHighTime (rBit, rTimeout : real [; rPerioden : real]) : real;
<!TXT>
Bestimmt die Lnge von einer Periode des Eingangssignals am digitalen Eingang <!PW>rBit (0..11), gemittelt ber <!PW>rPerioden (Default=1).

Die ermittelte Zeit wird in Millisekunden zurckgeliefert. 

Werden die erwarteten HIGH/LOW- bzw. LOW/HIGH-bergnge nicht gefunden (z.B. weil kein Eingangssignal vorliegt), so wird nach <!PW>rTimeout Millisekunden abgebrochen und -1 als Ergebnis geliefert.
>>

<<
128.137.2
ME3000.DOut|DOut
--
Digitale Ausgnge. Von den vorhandenen 16 digitalen Eingngen knnen die unteren 8 frei benutzt werden. Die intern verwendeten oberen 8 Bits werden ausgeblendet.
>>

<<
128.137.2.1
ME3000.DOUT.Get|Get
--
<!DEF>
function <!TW>ME3000.DOUT.Get : real;
<!TXT>
Liefert das Bitmuster an den digitalen Ausgngen der ME3000 Karte.

Die intern verwendeten oberen 8 Bits werden ausgeblendet.
>>

<<
128.137.2.2
ME3000.DOut.Bits|Bits
--
<!DEF>
procedure <!TW>ME3000.DOUT.BITS (rBitPattern, rOperation : real);
<!TXT>
Die in <!PW>rBitPattern angegebenen Bits werden wie in <!PW>rOperation angegeben mit den digitalen Ausgngen der ME3000 Karte verknpft.

 <!PW>rOperation kann sein : <!RW>CLR | <!RW>SET | <!RW>FLIP | <!RW>NOP oder 0..3

Es werden nur die unteren 8 Bits von <!PW>rBitPattern beachtet.
>>
<<
128.137.2.3
ME3000.DOut.Word|Word
--
<!DEF>
procedure <!TW>ME3000.DOut.WORD (rBitPattern : real);
<!TXT>
Die digitalen Ausgnge der ME3000 Karte werden auf das <!PW>rBitPattern gesetzt.

Es werden nur die unteren 8 Bits beachtet.
>>
<<
128.137.3
ME3000.ADC|ADC
--
Analoge Eingnge
>>

<<
128.137.3.1
ME3000.ADC.Setup|Setup
--
<!DEF>
procedure <!TW>ME3000.ADC.Setup (rChannel, rRange, rSingleDiff : real);
<!TXT>
Legt die Charakteristik des AD-Kanals <!PW>rChannel (0..15) fest.

 <!PW>rRange :
<!STBL>
<!+>Nr.<!+>Bereich<!+>
<!c>0<!> 10 V<!>
<!c>1<!> 5 V<!>    
<!c>2<!> 2.5 V<!>    
<!c>3<!> 1.25 V<!>
<!c>4<!>0..10 V<!>
<!c>5<!>0..5 V<!>
<!c>6<!>0..2.5 V<!>
<!c>7<!>0..1.25 V<!>
<!ETBL>

 <!PW>rSingleDiff:
<!STBL>
<!+>Wert</b><!><b>Bedeutung</b><!>
<!c><!RW>false<!>single-ended<!>
<!c><!RW>true<!>differentiell<br><!REM>wird von der Victor Hardware nicht untersttzt<!TXT><!>
<!ETBL>

>>
<<
128.137.3.2
ME3000.ADC.Get|Get
--
<!DEF>
function <!TW>ME3000.ADC.Get (rChannel : real [; rAverages : real]);
<!TXT>
Liefert den Wert den AD-Kanals <!PW>rChannel (0..15).

Wenn <!PW>rAverages (1..1024) angegeben ist, dann wird aus entsprechend vielen Einzelwerten der Mittelwert gebildet.
>>

<<
128.137.3.3
ME3000.ADC.Sample|Sample
--
Sampling - Aufzeichnung von analogen Signalen
>>
<<
128.137.3.3.1
ME3000.ADC.Sample.Check|Check
--
<!DEF>
function <!TW>ME3000.ADC.Sample.Check : real;
<!TXT>
Prft, ob mit den getroffenen Einstellungen (Kanle, Frequenz, Anzahl) der Start des Samplings mglich ist, bzw. ob ein bereits begonnenes Sampling noch luft oder schon beendet ist.

Rckgabewerte:
<!STBL>
<!+>Wert</b><!><b>Bedeutung</b><!>
<!c> 1<!>Sampling luft schon/noch<!>
<!c> 0<!>alles in Ordnung, Start mglich bzw. Sampling beendet<!>
<!c>-1<!>keine Kanle in der Kanalliste <!>
<!c>-2<!>Samplefrequenz zu hoch<!>
<!c>-3<!>zu viele Kanle fr die Frequenz<!>
<!c>-4<!>Anzahl Samples ist 0<!>
<!c>-5<!>Speicher reicht nicht<!>
<!c>-6<!>Start war unmglich <!>
<!c>-7<!>ME3000 Karte nicht aktiv<!>
<!ETBL>
>>
<<
128.137.3.3.2
ME3000.ADC.Sample.Setup|Setup
--
<!DEF>
procedure <!TW>ME3000.ADC.Sample.Setup (rFrequency, rSamples, rTrigger : real);
<!TXT>
Legt die Eckdaten fr den Sampling-Vorgang fest.

 <!PW>rFrequency : Abtastrate in Hz (nicht Summenabtastrate!)
  Maximalwert abhngig von Anzahl der Kanle         

 <!PW>rSamples : Anzahl Samples je Kanal
  Maximalwert 1.000.000 bzw. abhngig vom Speicher

<!PW>rTrigger whlt die Art der Auslsung:
<!STBL>
<!+>Wert</b><!><b>Bedeutung</b><!>
<!c> 0<!>sofort bei ADC.Sample.Start / Scan<!>
<!c> 1<!>Low-Pegel auf Triggereingang<!>
<!c> 2<!>High-Pegel auf Triggereingang<!>
<!ETBL>
>>
<<
128.137.3.3.3
ME3000.ADC.Sample.Start|Start
!128.137.3.3.4 - Scan
--
<!DEF>
procedure <!TW>ME3000.ADC.Sample.Start (rCurveSet : real);
<!TXT>
Startet den Sampling-Vorgang. 

Vorher mit <a href="128.137.3.3.1">ME3000.ADC.Sample.Check</a> prfen, ob alle Parameter fr das Sampling gltig sind. 

Siehe auch <a href="128.137.3.3.5">ME3000.ADC.Sample.Scan</a> - ein anderes Verfahren.

Das Sampling luft unabhngig vom Interpreter im Hintergrund. Mit <!RW>ME3000.ADC.Sample.Check kann geprft werden, ob das Sampling bereits beendet wurde.

 <!PW>rCurveSet gibt das Kurven-Set an, in das die aufgenommenen Kurven bertragen werden. Im Moment muss immer 1 angegeben werden.
>>
<<
128.137.3.3.4
ME3000.ADC.Sample.Scan|Scan
!128.137.3.3.3 - Start
--
<!DEF>
procedure <!TW>ME3000.ADC.Sample.Scan (rCurveSet : real);
<!TXT>
Startet den Sampling-Vorgang. 

Vorher mit <a href="128.137.3.3.1">ME3000.ADC.Sample.Check</a> prfen, ob alle Parameter fr das Sampling gltig sind. 

 <!RW>ME3000.ADC.Sample.Scan unterscheidet sich von <a href="128.137.3.3.3">ME3000.ADC.Sample.Start</a> in der Art, wie die Scanzeit auf die einzelnen Kanle verteilt wird. Bei nur einem Kanal in der Kanalliste sind beide Verfahren identisch.

Eine Grafik soll dies verdeutlichen. Die X auf der Zeitachse geben den gewhlten Sampleabstand an. Bei Start werden alle gewhlten Kanle (hier 4) so schnell wie mglich hintereinander abgetastet - also mglichst zeitgleich. Dies erlaubt fr die Kanle 2-4 nur eine sehr kurze Einschwingzeit des Multiplexers. Bei Scan werden die Kanle mglichst gleichmig auf die Samplezeit verteilt. Hierdurch haben alle Kanle die gleiche Einschwingzeit, werden aber versetzt abgetastet.

<tt>
Zeit-> X---------------X---------------X-------------->
Start: 1234------------1234------------1234------------
Scan : 1---2---3---4---1---2---3---4---1---2---3---4---
</tt>            

Das Sampling luft unabhngig vom Interpreter im Hintergrund. Mit ME3000.ADC.Sample.Check kann geprft werden, ob das Sampling bereits beendet wurde.

<!PW>rCurveSet gibt das Kurven-Set an, in das die aufgenommenen Kurven bertragen werden.
Im Moment muss immer 1 angegeben werden.
>>
<<
128.137.3.3.5
ME3000.ADC.Sample.Stop|Stop
--
<!DEF>
procedure <!TW>ME3000.ADC.Sample.Stop;
<!TXT>
Bricht einen laufenden Sampling-Vorgang ab. 

Bereits aufgelaufene Werte werden an das Kurven-Set bertragen, noch nicht gemessenen Werte sind mit unbestimmten Daten gefllt. Das Kurven-Set daher mit Vorsicht oder am besten gar nicht verwenden.
>>

<<
128.137.3.4
ME3000.ADC.List|List
--
List - Verwaltet die Liste der beim Sampling bearbeiteten Kanle
>>
<<
128.137.3.4.1
ME3000.ADC.List.Clear|Clear
--
<!DEF>
procedure <!TW>ME3000.ADC.List.Clear;
<!TXT>
Lscht die Liste der beim Sampling bearbeiteten Kanle. Direkt nach diesem Befehl ist kein Sampling mglich, da kein Kanal ausgewhlt ist.
>>
<<
128.137.3.4.2
ME3000.ADC.List.Add|Add
--
<!DEF>
procedure <!TW>ME3000.ADC.List.Add (rChannel : real);
<!TXT>
Fgt den Kanal <!PW>rChannel (0..15) zur Liste der gesampelten Kanle hinzu.
Ist der Kanal bereits in der Liste vorhanden, so passiert nichts.
>>

<<
128.137.3.5
Beispiel fr die Benutzung des ADC-Sampling|Beispiel
--
<!CODE>
  // Messereich festlegen
  ME3000.ADC.Setup (0, 0, false);  

  // Liste der zu sampelnden Kanle lschen und gewollte Kanle eintragen
  ME3000.ADC.List.Clear;
  ME3000.ADC.List.Add (0);

  // Parameters festlegen (Samplerate und -anzahl)
  ME3000.ADC.Sample.Setup (500000, 1000, 0);

  // Sampling starten (Setupfehler werden spter erkannt)
  ME3000.ADC.Sample.Start (1);
  repeat
    // Warten bis Samplen beendet
  until ME3000.ADC.Sample.Check &lt; 1;
  
  if ME3000.ADC.Sample.Check &lt; 0 then begin
    // Fehler im Setup
  end
  else begin
    // Daten sind nun in CurveSet 1
    // Mitelwert der gesampelten Daten als Messwert setzen
    SetValue (Curve.AvgValue (1, 0));
  end;
<!TXT>
>>

<<
128.137.4
ME3000.DAC|DAC
--
Analoge Ausgnge
>>
<<
128.137.4.1
ME3000.DAC.Setup|Setup
--
<!DEF>
procedure <!TW>ME3000.DAC.Setup (rChannel, rRange : real);
<!TXT>
Legt die Charakteristik des DA-Kanals <!PW>rChannel (0..3) fest.

Achtung: 
DAC-Kanal 3 ist die Ansteuerung des Netzteils und wird intern verwendet!

<!PW>rRange:
<!STBL>
<!+>Wert</b><!><b>Bedeutung</b><!>
<!c> 0<!>0 .. 10 V<!>
<!c> 1<!> 5 V<!>
<!c> 2<!> 10 V<!>
<!ETBL>
>>
<<
128.137.4.2
ME3000.DAC.Set|Set
--
<!DEF>
procedure <!TW>ME3000.DAC.Set (rChannel, rValue : real);
<!TXT>
Setzt den Ausgang des DA-Kanals <!PW>rChannel (0..3) auf <!PW>rValue Volt.

Achtung: 
DAC-Kanal 3 ist die Ansteuerung des Netzteils und wird intern verwendet!
>>

<<
128.137.4.3
ME3000.DAC.Curve|Curve
--
Verwaltet die Ausgabe eines zyklischen Signals auf einem DAC-Kanal.
Dazu wird intern eine Kurve erzeugt und dann an den FIFO-Puffer der ME3000-Karte zur Ausgabe bergeben.
Unabhngig von der Ausgabe kann die interne Kurvenform bereits weiter bearbeitet werden.
Der interne FIFO hat eine Gre von 4096 Eintrgen. Die FIFO-Elemente knnen mit maximal 100.000 Hz ausgegeben werden. Als hchste erzeugbare Frequenz ergibt sich damit ein Rechteck mit 50 kHz (bei 2 Samples). Die Eintrge im FIFO knnen einzeln, Stck fr Stck eingetragen werden oder das System kann eine der vordefinierten Kurvenformen (Sinus, Rechteck, Dreieck) erzeugen. Werden die Eintrge durch den Interpreterstep selber definiert, so ist zu beachten, dass die Anzahl der Eintrge die maximale Ausgabefrequenz festlegt: 
<!CODE>
fMax := 100kHz / Anzahl Eintrge im FIFO
<!TXT>
Bei den von System erzeugen Kurvenformen muss eine Frequenz angegeben werden, fr diie die Anzahl der FIFO-Eintrge optimiert wird. Eine einmal erzeugte Kurvenform kann mit beliebigen Frequenzen ausgegeben werden, jedoch ist die maximale erreichbare Frequenz zu beachten. Fr einen Sweep mit einer vom System erzeugten Kurvenform muss bei der Definition die obere Grenzfrequenz angegeben werden.

Beispiel:
<!CODE>
// Sweep mit einer Sinuskurve
ME3000.DAC.Curve.Sin (5, 0, 5000);      // Sinus fr 5kHz berechnen lassen
for rFreq:=100 to 5000 step 100 do begin
  ME3000.DAC.Curve.Start (0, rFreq)
end;
<!TXT>
>>
<<
128.137.4.3.1
ME3000.DAC.Curve.Clear|Clear
--
<!DEF>
procedure <!TW>ME3000.DAC.Curve.Clear;
<!TXT>
Lscht den internen Kurvenspeicher, eine eventuell laufenden Ausgabe wird nicht beeinflusst.
>>
<<
128.137.4.3.2
ME3000.DAC.Curve.Start|Start
--
<!DEF>
procedure <!TW>ME3000.DAC.Curve.Start (rChannel, rFrequency : real);
<!TXT>
Startet die Ausgabe der zuvor definierten Kurve auf dem Kanal <!PW>rChannel mit der Frequenz (Wiederholfrequenz der gesamten Kurve) <!PW>rFrequency Hz.

Die maximal mgliche Frequenz ist 100 kHz / Anzahl der Sttzpunkte der Kurve.

Eine eventuell laufenden Ausgabe muss zuvor nicht erst gestoppt werden.

Beispiel Ausgabe Sinus 150Hz, 4Vpp, 2.5Voffs:
(Bei Amplitude und Offset evtl. Verstrkung der Ausgangstreiber bercksichtigen)
<!CODE>
ME3000.DAC.Setup (0, 0);        
ME3000.DAC.Curve.Sin (2, 2.5, 150);
ME3000.DAC.Curve.Start (0, 150);
<!TXT>
>>
<<
128.137.4.3.3
ME3000.DAC.Curve.Stop|Stop
--
<!DEF>
procedure <!TW>ME3000.DAC.Curve.Stop;
<!TXT>
Beendet die Ausgabe der Kurve.
Der DAC-Wandler gibt weiter den zuletzt ausgegebenen Sttzpunkt aus.
>>
<<
128.137.4.3.4 
ME3000.DAC.Curve.Sin|Sin
--
<!DEF>
procedure <!TW>ME3000.DAC.Curve.Sin (rAmp, rOffs : real [; rFreq : real]);
<!TXT>
Berechnet eine Sinusperiode im internen Kurvenspeicher.

Die Amplitude und der Offset werden von <!PW>rAmp und <!PW>rOffs festgelegt. Die Scheitelpunkte (Minima und Maxima) der Kurve liegen bei <!PW>rOffs+<!PW>rAmp bzw. <!PW>rOffs-<!PW>rAmp.

 <!PW>rFreq legt die Frequenz fest, fr die die Anzahl der Sttzstellen optimiert wird und sollte IMMER angegeben werden, da anderenfalls immer 4096 Sttzstellen berechnet werden und diese Kurve u.U. nicht exakt mit der gewnschten Frequenz ausgegeben werden kann.

Soll die Kurve als Sweep ausgegeben werden so sollte die hchste gewnschte Frequenz als <!PW>rFreq angegeben werden.
>>
<<
128.137.4.3.5
ME3000.DAC.Curve.Sqr|Sqr
--
<!DEF>
procedure <!TW>ME3000.DAC.Curve.Sqr (rAmp, rOffs, rDuty : real [; rFreq : real]);
<!TXT>
Berechnet eine Periode einer Rechteckkurve im internen Kurvenspeicher.

Die Amplitude und der Offset werden von <!PW>rAmp und <!PW>rOffs festgelegt. Die Scheitelpunkte (Minima und Maxima) der Kurve liegen bei <!PW>rOffs+<!PW>rAmp bzw. <!PW>rOffs-<!PW>rAmp.

 <!PW>rDuty (0..100) legt die Dauer der High-Phase fest (in Prozent der gesamten Periode). <!PW>rDuty=50 erzeugt ein symmetrisches Rechteck (+- eine Sttzstelle bei ungerader Sttzstellenanzahl)

 <!PW>rFreq legt die Frequenz fest, fr die die Anzahl der Sttzstellen optimiert wird und sollte IMMER angegeben werden, da anderenfalls immer 4096 Sttzstellen berechnet werden und diese Kurve u.U. nicht exakt mit der gewnschten Frequenz ausgegeben werden kann.

Soll die Kurve als Sweep ausgegeben werden so sollte die hchste gewnschte Frequenz als <!PW>rFreq angegeben werden.
>>
<<
128.137.4.3.6
ME3000.DAC.Curve.Saw|Saw
--
<!DEF>
procedure <!TW>ME3000.DAC.Curve.Saw (rAmp, rOffs, rRise : real [; rFreq : real]);
<!TXT>
Berechnet eine Periode einer Sgezahnkurve im internen Kurvenspeicher.

Die Amplitude und der Offset werden von <!PW>rAmp und <!PW>rOffs festgelegt. Die Scheitelpunkte (Minima und Maxima) der Kurve liegen bei <!PW>rOffs+<!PW>rAmp bzw. <!PW>rOffs-<!PW>rAmp.

 <NOBR><!PW>rRise (0..100) legt die Dauer der steigenden Flanke fest (in Prozent der gesamten Periode).</NOBR>
 <NOBR><!PW>rRise=0 erzeugt einen reinen fallenden Sgezahn   </NOBR>
 <NOBR><!PW>rRise=50 erzeugt ein symmetrisches Dreieck (+- eine Sttzstelle bei ungerader Sttzstellenanzahl)</NOBR>
 <NOBR><!PW>rRise=100 erzeugt einen reinen steigenden Sgezahn</NOBR>

 <!PW>rFreq legt die Frequenz fest, fr die die Anzahl der Sttzstellen optimiert wird und sollte IMMER angegeben werden, da anderenfalls immer 4096 Sttzstellen berechnet werden und diese Kurve u.U. nicht exakt mit der gewnschten Frequenz ausgegeben werden kann.

Soll die Kurve als Sweep ausgegeben werden so sollte die hchste gewnschte Frequenz als <!PW>rFreq angegeben werden.
>>
<<
128.137.4.3.7
ME3000.DAC.Curve.Add|Add
--
<!DEF>
procedure <!TW>ME3000.DAC.Curve.Add (rAmp : real);
<!TXT>
Fgt zu der Kurve im internen Puffer einen Sttzpunkt hinzu. 

 <!PW>rAmp legt die Amplitude an dieser Sttzstelle fest (-10..10 V).
Werden mehr Punkte hinzugefgt, als der FIFO aufnehmen kann (4096) werden die Punkte ignoriert.

Mit ME3000.DAC.Curve.Clear und ME3000.DAC.Curve.Add lassen sich arbitrre Kurvenformen erzeugen.
>>
<<
128.137.5
ME3000.PWM|PWM
--
 <b>P</b>ulse<b>W</b>eiten <b>M</b>odulierter Ausgang
>>
<<
128.137.5.1
ME3000.PWM.Setup|Setup
!128.137.5.3
!128.137.5.2
--
<!DEF>
procedure <!TW>ME3000.PWM.Setup (rFrequency, rDuty, rInverted : real);
<!TXT>
Setzt den PWM-Ausgang der ME3000 Karte auf die angegebenen Werte.

 <!PW>rFrequency : 0<sup><b>*</b></sup>..30000 (Hz)
 <!PW>rDuty      : 1..99    (%)
 <!PW>rInverted  : <!RW>true/<!RW>false

<sup><b>*</b></sup> Einige Meilhaus-Treiber erlauben es nicht, einen Wert von 0 Hz anzugeben und erzeugen in diesem Fall eine Exception. Dieses Verhalten scheint abhngig vom Betriebssystem zu sein (beobachtet unter Win2000). In diesem Fall statt 0 Hz den Befehl <!RW>ME3000.PWM.STOP verwenden, um das PWM-Signal anzuhalten.
>>
<<
128.137.5.2
ME3000.PWM.Start|Start
--
<!DEF>
procedure <!TW>ME3000.PWM.Start;
<!TXT>
Aktiviert den PWM-Ausgang
>>
<<
128.137.5.3
ME3000.PWM.Stop|Stop
--
<!DEF>
procedure <!TW>ME3000.PWM.Stop;
<!TXT>
Deaktiviert den PWM-Ausgang
>>
<<
128.137.6
ME3000.IsActive|IsActive
--
<!DEF>
function <!TW>ME3000.IsActive : real;
<!TXT>
Liefert <!RW>TRUE, wenn die ME3000-Karte freigegeben und betriebsbereit ist.
>>

<<
128.137.7
Kalibration
--
Ab Build 955 ist eine softwaremige Kalibration der ADW und DAW Kanle mglich.
Mit Build 963 wurden die Routinen aus dem ME3000 IP Objekt in das neue Calibration IP Objekt verlagert. 
Die Werte werden daher nicht mehr ber Befehle wie <!RW>ME3000.ADC.Offset.Set manipuliert, sondern ber <!RW>Calibration.Set
>>

<<
128.137.7.1
AD-Wandler|ADWs
--
Fr die softwaremige eines Kalibration ADW-Kanals sind 2 Werte ntig:

<ul indent="15">
<li><b>Offset</b><br>
Wert den der (unkalibrierte) Wandler liefert, wenn seine Eingangsspannung 0V betrgt<br>
</li>
<li><b>Gain</b><br>
Verhltis des Wertes am Eingang des Wandlers zum (offsetkorrigierten) Ausgabewert des Wandlers
</li></ul>

Die Berechnung der Anzeigespannung eines AD-Wandlers erfolgt nach folgender Formel:
<!STBL>
<!>U<sub>Anzeige</sub> = (U<sub>ADW</sub> - <!RW>Offset) * <!RW>Gain<!>
<!ETBL>

Vorgehen fr die Kalibration:
<!STBL>
<!>1.<!>Kalibrationswerte zurcksetzen<!><!RW>Calibration.Set <tt>('ME3000', 'ADC.Offset.0', rChannel, 0);</tt>
                                         <!RW>Calibration.Set <tt>('ME3000', 'ADC.Gain.0', &nbsp;&nbsp;rChannel, 1);</tt><!>
<!>2.<!>Exakt 0V einspeisen<!>&nbsp;<!>
<!>3.<!>Offsetwert des AD-Wandlers messen<!><tt>rOffset:=</tt><!RW>ME3000.ADC.Get<tt> (rChannel, 1024);</tt><!>
<!>4.<!>Gemessenen Wert als Offset eintragen<!><!RW>Calibration.Set <tt>('ME3000', 'ADC.Offset.0', rChannel, rOffset);</tt><!>
<!>5.<!>Stabile Spannung nahe der Messbereichsgrenze einspeisen<!><tt>rSoll:=9.5;&nbsp;&nbsp;&nbsp;// Beispiel</tt><!> 
<!>6.<!>Wert des AD-Wandlers messen<!><tt>rMeas:=</tt><!RW>ME3000.ADC.Get<tt> (rChannel, 1024);</tt><!>
<!>7.<!>Gain setzen<!><!RW>Calibration.Set <tt>('ME3000', 'ADC.Gain.0', &nbsp;&nbsp;rChannel, rSoll/rMeas);</tt><!>
<!ETBL> 

Fr die  Befehle <!RW>Calibration.Set und <!RW>Calibration.Get sind folgende Namen und Kanle definiert:
<!STBL>
<!+>ValueName<!+>Kanalnummer(n)<!+>Beschreibung<!>
<!c>ADC.Offset.<i>Bereich</i><!c>0 .. 15<!>Offset-Korrekturwert AD-Wandler Kanal 0..15<!>
<!c>ADC.Gain.<i>Bereich</i><!c>0 .. 15<!>Gain-Korrekturwert AD-Wandler Kanal 0..15<!>
<!ETBL>
Bereich gibt hierbei den Messbereich, fr den die Kalibration gilt an.

<!STBL>
<!+>Bereich<!+>Mess-Bereich<!+>
<!c>0<!> 10 V<!>
<!c>1<!> 5 V<!>    
<!c>2<!> 2.5 V<!>    
<!c>3<!> 1.25 V<!>
<!c>4<!>0..10 V<!>
<!c>5<!>0..5 V<!>
<!c>6<!>0..2.5 V<!>
<!c>7<!>0..1.25 V<!>
<!ETBL>
>>

<<
128.137.7.2
DA-Wandler|DAWs
--
Fr die softwaremige eines Kalibration DAW-Kanals sind 2 Werte ntig:

<ul indent="15">
<li><b>Offset</b><br>
Wert am Ausgang des Wandlers, wenn seine Sollspannung 0V betrgt<br>
</li>
<li><b>Gain</b><br>
Verhltis des Wertes am Ausgang des (offsetkorrigierten) Wandlers zum Stellwert des Wandlers
</li></ul>

Die Berechnung des Stellwertes des DA-Wandlers erfolgt nach folgender Formel:
<!STBL>
<!>U<sub>DAW</sub> = (U<sub>Soll</sub> - <!RW>Offset) * <!RW>Gain<!>
<!ETBL>

Vorgehen fr die Kalibration:
<!STBL>
<!>1.<!>Kalibrationswerte zurcksetzen<!><!RW>Calibration.Set <tt>('ME3000', 'DAC.Offset.0', rChannel, 0);</tt><br>
                                         <!RW>Calibration.Set <tt>('ME3000', 'DAC.Gain.0', &nbsp;&nbsp;rChannel, 1);</tt><!>
<!>2.<!>Wandler auf 0V Ausgangsspannung setzen<!><!RW>ME3000.DAC.Set<tt> (rChannel, 0);</tt><!>
<!>3.<!>Spannung am Ausgang des Wandlers exakt messen<!><tt>rMeas:=</tt><!RW>IEC.GetValue<tt> ('Calibrator', -9999)</tt><!>
<!>4.<!>Gemessenen Wert als Offset eintragen<!><!RW>Calibration.Set <tt>('ME3000', 'DAC.Offset.0', rChannel, rMeas);</tt><!>
<!>5.<!>Ausgangsspannung auf Wert nahe der Bereichsgrenze setzen<!><tt>rSoll:=9.5;</tt><br>
                                                                   <!RW>ME3000.DAC.Set<tt> (rChannel, rSoll);</tt><!> 
<!>6.<!>Spannung am Ausgang des Wandlers exakt messen<!><tt>rMeas:=</tt><!RW>IEC.GetValue<tt> ('Calibrator', -9999)</tt><!>
<!>7.<!>Gain setzen<!><!RW>Calibration.Set <tt>('ME3000', 'DAC.Gain.0', rChannel, rSoll/rMeas)</tt><!>
<!ETBL> 

Fr die  Befehle <!RW>Calibration.Set und <!RW>Calibration.Get sind folgende Namen und Kanle definiert:
<!STBL>
<!+>ValueName<!+>Kanalnummer(n)<!+>Beschreibung<!>
<!c>DAC.Offset.<i>Bereich</i><!c>0 .. 3<!>Offset-Korrekturwert DA-Wandler Kanal 0..3<!>
<!c>DAC.Gain.<i>Bereich</i><!c>0 .. 3<!>Gain-Korrekturwert DA-Wandler Kanal 0..3<!>
<!ETBL>
Bereich gibt hierbei den Messbereich, fr den die Kalibration gilt an.

<!STBL>
<!+>Bereich<!+>Bedeutung<!>
<!c> 0<!>0 .. 10 V<!>
<!c> 1<!> 5 V<!>
<!c> 2<!> 10 V<!>
<!ETBL>
>>

