:Revision=1
:html
<<
128.157
ME4000-Objekt|ME4000
--
Das IP-Objekt <!RW>ME4000 erlaubt den Zugriff auf die ME4000-Multifunktions-IO-Karte

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

<<
128.157.1
ME4000.DIn|DIn
--
Digitale Eingnge. 

Die 16 digitalen Eingnge werden von der Software als ein 16 Bit Port verwaltet, sind aber an der ME4000 Karte auf 2 8 Bit Ports verteilt.

<!STBL>
<!+>Interne<br>Bit-Nr.<!+>ME4000<br>Port<!+>Funktion<!>
<!+>15<!>DIO_B7<!>Alarmeingang<!>
<!+>14<!>DIO_B6<!>Rcklesekanal UMS<!>
<!+>13<!>DIO_B5<!>IC 1 SDA In<!>
<!+>12<!>DIO_B4<!>IC 2 SDA In<!>
<!+>11<!>DIO_B3<!>DIN Bit 11<!>
<!+>10<!>DIO_B2<!>DIN Bit 10<!>
<!+>9<!>DIO_B1<!>DIN Bit 9<!>
<!+>8<!>DIO_B0<!>DIN Bit 8<!>
<!+>7<!>DIO_D7<!>DIN Bit 7<!>
<!+>6<!>DIO_D6<!>DIN Bit 6<!>
<!+>5<!>DIO_D5<!>DIN Bit 5<!>
<!+>4<!>DIO_D4<!>DIN Bit 4<!>
<!+>3<!>DIO_D3<!>DIN Bit 3<!>
<!+>2<!>DIO_D2<!>DIN Bit 2<!>
<!+>1<!>DIO_D1<!>DIN Bit 1<!>
<!+>0<!>DIO_D0<!>DIN Bit 0<!>
<!ETBL>

Von den vorhandenen 16 digitalen Eingngen knnen die unteren 12 frei benutzt werden. Die intern verwendeten oberen 4 Bits werden ausgeblendet.
>>
<<
128.157.1.1
ME4000.DIN.Get|Get
--
<!DEF>
function <!TW>ME4000.DIN.Get : real;
<!TXT>
Liefert das Bitmuster an den digitalen Eingngen der ME4000 Karte.
Die intern verwendeten oberen 4 Bit von Port B werden ausgeblendet.
>>
<<
128.157.1.2
ME4000.DIN.MeasLowTime|MeasLowTime
--
<!DEF>
function <!TW>ME4000.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.157.1.3
ME4000.DIN.MeasHighTime|MeasHighTime
--
<!DEF>
function <!TW>ME4000.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.157.1.4
ME4000.DIN.MeasLowHighTime|MeasLowHighTime
--
<!DEF>
function <!TW>ME4000.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.157.2
ME4000.DOut|DOut
--
Digitale Ausgnge. 

Die 16 digitalen Ausgnge werden von der Software als ein 16 Bit Port verwaltet, sind aber an der ME4000 Karte auf 2 8 Bit Ports verteilt.

Von den vorhandenen 16 digitalen Ausgngen knnen die unteren 8 frei benutzt werden. Die intern verwendeten oberen 8 Bits werden ausgeblendet.

<!STBL>
<!+>Interne<br>Bit-Nr.<!+>ME4000<br>Port<!+>Funktion<!>
<!+>15<!>DIO_A7<!>UMS Adresse A4<!>
<!+>14<!>DIO_A6<!>UMS Adresse A3<!>
<!+>13<!>DIO_A5<!>UMS Adresse A2<!>
<!+>12<!>DIO_A4<!>UMS Adresse A1<!>
<!+>11<!>DIO_A3<!>UMS Adresse A0<!>
<!+>10<!>DIO_A2<!>UMS Registerfreigabe<!>
<!+>9<!>DIO_A1<!>UMS Takt<!>
<!+>8<!>DIO_A0<!>UMS Daten<!>
<!+>7<!>DIO_C7<!>DOUT Bit 7<!>
<!+>6<!>DIO_C6<!>DOUT Bit 6<!>
<!+>5<!>DIO_C5<!>DOUT Bit 5<!>
<!+>4<!>DIO_C4<!>DOUT Bit 4<!>
<!+>3<!>DIO_C3<!>DOUT Bit 3<!>
<!+>2<!>DIO_C2<!>DOUT Bit 2<!>
<!+>1<!>DIO_C1<!>DOUT Bit 1<!>
<!+>0<!>DIO_C0<!>DOUT Bit 0<!>
<!ETBL>

>>

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

Die intern verwendeten oberen 8 Bits werden ausgeblendet.
>>

<<
128.157.2.2
ME4000.DOut.Bits|Bits
--
<!DEF>
procedure <!TW>ME4000.DOUT.BITS (rBitPattern, rOperation : real);
<!TXT>
Die in <!PW>rBitPattern angegebenen Bits werden wie in <!PW>rOperation angegeben mit den digitalen Ausgngen der ME4000 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 rBitPattern beachtet.
>>
<<
128.157.2.3
ME4000.DOut.Word|Word
--
<!DEF>
procedure <!TW>ME4000.DOut.WORD (rBitPattern : real);
<!TXT>
Die digitalen Ausgnge der ME4000 Karte werden auf das <!PW>rBitPattern gesetzt.

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

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

 <!PW>rRange :
<!STBL>
<!+>Nr.<!+>Bereich<!+>
<!+>0<!> 10 V<!>
<!+>1<!> 2.5 V<!>    
<!+>2<!>0..10 V<!>
<!+>3<!>0..2.5 V<!>
<!ETBL>


 <!PW>rSingleDiff:
<!STBL>
<!+>Wert</b><!><b>Bedeutung</b><!>
<!+><!RW>false<!>single-ended<!>
<!+><!RW>true<!>differentiell<!>
<!ETBL>

Achtung:
Die Betriebsart <!SW>differentiell ist nur mit den unteren 16 Kanlen mglich. Dabei wird der um 16 hhere Kanal zum negativen Eingang. Also wird z.B. Kanal 21 der negative Eingang, wenn Kanal 5 in den differentiellen Modus geschaltet wird.
In der Betriebsart <!SW>differentiell muss einer der bipolaren Eingangsbereiche ( 10V oder  2.5V) gewhlt werden.

<!STBL>
<!>Kanal<!>Betriebsart<!>mgliche Bereiche<!>
<tr><td rowspan=2 align=center ><b>0<br>:<br>15</b><!>single-ended<!> 10 V<br> 2.5 V<br>0..10 V<br>0..2.5 V<!>
<!>differentiell<!> 10 V<br> 2.5 V<!>
<tr><td rowspan=2 align=center ><b>16<br>:<br>31</b><!>single-ended<!> 10 V<br> 2.5 V<br>0..10 V<br>0..2.5 V<!>
<!>differentiell<!><font color=#ff0000>nicht erlaubt</font><!>
<!ETBL>
>>
<<
128.157.3.2
ME4000.ADC.Get|Get
--
<!DEF>
function <!TW>ME4000.ADC.Get (rChannel : real [; rAverages : real]);
<!TXT>
Liefert den Wert den AD-Kanals <!PW>rChannel (0..31). 

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

<<
128.157.3.3
ME4000.ADC.Sample|Sample
--
Sampling - Aufzeichnung von analogen Signalen
>>
<<
128.157.3.3.1
ME4000.ADC.Sample.Check|Check
--
<!DEF>
function <!TW>ME4000.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<!>ME4000 Karte nicht aktiv<!>
<!c>-8<!>Single-Ended und Differentielle Kanle wurden gemischt<!>
<!ETBL>
>>
<<
128.157.3.3.2
ME4000.ADC.Sample.Setup|Setup
--
<!DEF>
procedure <!TW>ME4000.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<!>intern, sofort bei <!RW>ME4000.ADC.START/<!RW>SCAN<!>
<!c>1<!>analoger Triggereingang, steigende Flanke<!>
<!c>2<!>analoger Triggereingang, fallende Flanke<!>
<!c>3<!>analoger Triggereingang, jede Flanke<!>
<!c>4<!>digitaler Triggereingang, steigende Flanke<!>
<!c>5<!>digitaler Triggereingang, fallende Flanke<!>
<!c>6<!>digitaler Triggereingang, jede Flanke<!>
<!ETBL>
>>
<<
128.157.3.3.3
ME4000.ADC.Sample.Start|Start
!128.157.3.3.4 - Scan
--
<!DEF>
procedure <!TW>ME4000.ADC.Sample.Start (rCurveSet : real);
<!TXT>
Startet den Sampling-Vorgang. 

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

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

Das Sampling luft unabhngig vom Interpreter im Hintergrund. Mit <!RW>ME4000.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.157.3.3.4
ME4000.ADC.Sample.Scan|Scan
!128.157.3.3.3 - Start
--
<!DEF>
procedure <!TW>ME4000.ADC.Sample.Scan (rCurveSet : real);
<!TXT>
Startet den Sampling-Vorgang. 

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

 <!RW>ME4000.ADC.Sample.Scan unterscheidet sich von <a href="128.157.3.3.3">ME4000.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 ME4000.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.157.3.3.5
ME4000.ADC.Sample.Stop|Stop
--
<!DEF>
procedure <!TW>ME4000.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.157.3.4
ME4000.ADC.List|List
--
List - Verwaltet die Liste der beim Sampling bearbeiteten Kanle
>>
<<
128.157.3.4.1
ME4000.ADC.List.Clear|Clear
--
<!DEF>
procedure <!TW>ME4000.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.157.3.4.2
ME4000.ADC.List.Add|Add
--
<!DEF>
procedure <!TW>ME4000.ADC.List.Add (rChannel : real);
<!TXT>
Fgt den Kanal <!PW>rChannel (0..31) zur Liste der gesampelten Kanle hinzu.

Ist der Kanal bereits in der Liste vorhanden, so passiert nichts.

Bitte beachten:
Kanle mit der Betriebsart <!SW>Single-Ended drfen nicht mit Kanlen der Betriebsart <!SW>Differentiell in der Kanalliste gemischt werden.
>>

<<
128.157.4
ME4000.DAC|DAC
--
Analoge Ausgnge

Hinweis:
Die analogen Ausgnge der ME4000 Karte besitzen nur einen Ausgabebereich: 10V. 
Daher existiert kein <!RW>ME4000.DAC.SETUP Befehl.
>>

<<
128.157.4.2
ME4000.DAC.Set|Set
--
<!DEF>
procedure <!TW>ME4000.DAC.Set (rChannel, rValue : real);
<!TXT>
Setzt den Ausgang des DA-Kanals <!PW>rChannel (0..3) auf <!PW>rValue Volt.

Eine evtl. laufende Kurvenausgabe wird abgebrochen.
>>

<<
128.157.4.3
ME4000.DAC.Curve|Curve
--
Verwaltet die Ausgabe zyklischer Signale auf DAC-Kanlen.

Dazu wird intern eine Kurve erzeugt und dann an den FIFO-Puffer eines DAC Kanals der ME4000-Karte zur Ausgabe bergeben.
Jeder DAC Kanal besitzt einen eigenen FIFO und kann unabhngig von den anderen Kanlen programmiert werden.

Unabhngig von der laufenden Ausgabe auf einem Kanal kann die interne Kurvenform bereits weiter bearbeitet werden.

Der interne FIFO jedes Kanals hat eine Gre von 4096 Eintrgen. 

Die FIFO-Elemente knnen mit maximal 500.000 Hz ausgegeben werden. Als hchste erzeugbare Frequenz ergibt sich damit ein Rechteck mit 250 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: fMax := 500kHz / Anzahl Eintrge im FIFO. Bei den von System erzeugen Kurvenformen muss eine Frequenz angegeben werden, fr die 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
ME4000.DAC.Curve.Sin (0, 5, 0, 5000);   // Sinus fr 5kHz berechnen lassen
for rFreq:=100 to 5000 step 100 do begin
  ME4000.DAC.Curve.Start (0, rFreq)
end;
<!TXT>
>>
<<
128.157.4.3.1
ME4000.DAC.Curve.Clear|Clear
--
<!DEF>
procedure <!TW>ME4000.DAC.Curve.Clear (rChannel : real);
<!TXT>
Lscht den internen Kurvenspeicher des Kanals <!PW>rChannel, eine eventuell laufenden Ausgabe wird nicht beeinflusst.

 Wird <!PW>rChannel mit -1 angegeben, werden die Kurvenspeicher aller Kanle gelscht.
>>
<<
128.157.4.3.2
ME4000.DAC.Curve.Start|Start
--
<!DEF>
procedure <!TW>ME4000.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 500 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>
ME4000.DAC.Curve.Sin (0, 2, 2.5, 150);
ME4000.DAC.Curve.Start (0, 150);
<!TXT>
>>
<<
128.157.4.3.3
ME4000.DAC.Curve.Stop|Stop
--
<!DEF>
procedure <!TW>ME4000.DAC.Curve.Stop (rChannel : real);
<!TXT>
Beendet die Ausgabe der Kurve auf dem Kanals <!PW>rChannel.

Der DAC-Wandler gibt 0 V aus.

 Wird <!PW>rChannel mit -1 angegeben, werden alle Kanle gestoppt.

>>
<<
128.157.4.3.4
ME4000.DAC.Curve.Sin|Sin
--
<!DEF>
procedure <!TW>ME4000.DAC.Curve.Sin (rChannel, rAmp, rOffs : real [; rFreq : real]);
<!TXT>
Berechnet eine Sinusperiode im internen Kurvenspeicher des Kanals <!PW>rChannel.

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.157.4.3.5
ME4000.DAC.Curve.Sqr|Sqr
--
<!DEF>
procedure <!TW>ME4000.DAC.Curve.Sqr (rChannel, rAmp, rOffs, rDuty : real [; rFreq : real]);
<!TXT>
Berechnet eine Periode einer Rechteckkurve im internen Kurvenspeicher des Kanals <!PW>rChannel.

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.157.4.3.6
ME4000.DAC.Curve.Saw|Saw
--
<!DEF>
procedure <!TW>ME4000.DAC.Curve.Saw (rChannel, rAmp, rOffs, rRise : real [; rFreq : real]);
<!TXT>
Berechnet eine Periode einer Sgezahnkurve im internen Kurvenspeicher des Kanals <!PW>rChannel.

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.157.4.3.7
ME4000.DAC.Curve.Add|Add
--
<!DEF>
procedure <!TW>ME4000.DAC.Curve.Add (rChannel, rAmp : real);
<!TXT>
Fgt zu der Kurve im internen Puffer des Kanals <!PW>rChannel 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 <!RW>ME4000.DAC.Curve.Clear und <!RW>ME4000.DAC.Curve.Add lassen sich arbitrre Kurvenformen erzeugen.
>>
<<
128.157.5
ME4000.PWM|PWM
--
 <b>P</b>uls<b>W</b>eiten <b>M</b>odulierter Ausgang

Die ME4000 Karte bentigt Zusatzhardware zur Ausgabe eines PWM Signals.

<h2><font color=#cc0000>PWM wird momentan noch nicht untersttzt!</font></h2>
>>
<<
128.157.5.1
ME4000.PWM.Setup|Setup
!128.157.5.3
!128.157.5.2
--
<!DEF>
procedure <!TW>ME4000.PWM.Setup (rFrequency, rDuty, rInverted : real);
<!TXT>
Setzt den PWM-Ausgang der ME4000 Karte auf die angegebenen Werte.

 <!PW>rFrequency : 0..30000 (Hz)

 <!PW>rDuty      : 1..99    (%)

 <!PW>rInverted  : <!RW>true/<!RW>false

<h2><font color=#cc0000>PWM wird momentan noch nicht untersttzt!</font></h2>
>>
<<
128.157.5.2
ME4000.PWM.Start|Start
--
<!DEF>
procedure <!TW>ME4000.PWM.Start;
<!TXT>
Aktiviert den PWM-Ausgang

<h2><font color=#cc0000>PWM wird momentan noch nicht untersttzt!</font></h2>
>>
<<
128.157.5.3
ME4000.PWM.Stop|Stop
--
<!DEF>
procedure <!TW>ME4000.PWM.Stop;
<!TXT>
Deaktiviert den PWM-Ausgang

<h2><font color=#cc0000>PWM wird momentan noch nicht untersttzt!</font></h2>
>>
<<
128.157.6
ME4000.IsActive|IsActive
--
<!DEF>
function <!TW>ME4000.IsActive : real;
<!TXT>
Liefert <!RW>TRUE, wenn die ME4000-Karte freigegeben und betriebsbereit ist.
>>

<<
128.157.7
Kalibration
--
Die ME4000 Kalibrationswerte werden ber das <!RW>Calibration IP-Objekt verwaltet
>>

<<
128.157.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>('ME4000', 'ADC.Offset.0', rChannel, 0);</tt>
                                         <!RW>Calibration.Set <tt>('ME4000', 'ADC.Gain.0', &nbsp;&nbsp;rChannel, 1);</tt><!>
<!>2.<!>Exakt 0V einspeisen<!>&nbsp;<!>
<!>3.<!>Offsetwert des AD-Wandlers messen<!><tt>rOffset:=</tt><!RW>ME4000.ADC.Get<tt> (rChannel, 1024);</tt><!>
<!>4.<!>Gemessenen Wert als Offset eintragen<!><!RW>Calibration.Set <tt>('ME4000', '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>ME4000.ADC.Get<tt> (rChannel, 1024);</tt><!>
<!>7.<!>Gain setzen<!><!RW>Calibration.Set <tt>('ME4000', '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/31<!>Offset-Korrekturwert AD-Wandler Kanal 0..15/31<!>
<!c>ADC.Gain.<i>Bereich</i><!c>0 .. 15/31<!>Gain-Korrekturwert AD-Wandler Kanal 0..15/31<!>
<!ETBL>
Bereich gibt hierbei den Messbereich, fr den die Kalibration gilt, an. 
Fr Single-Ended Bereiche knnen alle 32 Kanle (Kanalnummern 0..31) angegeben werden, fr die differentiellen Bereiche nur die ersten 16 Kanle (Kanalnummern 0..15).

<!STBL>
<!+>Bereich<!+>Mess-Bereich<!+>
<!c>0<!> 10 V Single-Ended<!>
<!c>1<!> 2.5 V Single-Ended<!>    
<!c>2<!>0..10 V Single-Ended<!>
<!c>3<!>0..2.5 V Single-Ended<!>
<!c>4<!> 10 V differentiell<!>
<!c>5<!> 2.5 V differentiell<!>    
<!ETBL>
>>

<<
128.157.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>('ME4000', 'DAC.Offset.0', rChannel, 0);</tt>
                                         <!RW>Calibration.Set <tt>('ME4000', 'DAC.Gain.0', &nbsp;&nbsp;rChannel, 1);</tt><!>
<!>2.<!>Wandler auf 0V Ausgangsspannung setzen<!><!RW>ME4000.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>('ME4000', 'DAC.Offset.0', rChannel, rMeas);</tt><!>
<!>5.<!>Ausgangsspannung auf Wert nahe der Bereichsgrenze setzen<!><tt>rSoll:=9.5;</tt><br>
                                                                   <!RW>ME4000.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>('ME4000', '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.0<!c>0 .. 3<!>Offset-Korrekturwert DA-Wandler Kanal 0..3<!>
<!c>DAC.Gain.0</i><!c>0 .. 3<!>Gain-Korrekturwert DA-Wandler Kanal 0..3<!>
<!ETBL>
>>
