:Revision=15
:html
<<
128.137
ME3000-Object|ME3000
--
The IP-Object ME3000 enables the access to the ME3000-Multifunction-IO-card

The hardware parts of the Multifunction card are addressed as sub-objects of the ME3000-Object.
>>

<<
128.137.1
ME3000.DIn|DIn
--
Digital inputs. Out of the existing 16 digital inputs the lower 12 can be used freely. The upper 4 bits used internally are masked out.
>>
<<
128.137.1.1
ME3000.DIN.Get|Get
--
<!DEF>
function <!TW>ME3000.DIN.Get : real;
<!TXT>
Returns the bit pattern of the digital input of the ME3000 card.
The upper 4 bits used internally are masked out.
>>
<<
128.137.1.2
ME3000.DIN.MeasLowTime|MeasLowTime
--
<!DEF>
function <!TW>ME3000.DIN.MeasLowTime (rBit, rTimeout : real) : real;
<!TXT>
Determines the length of a LOW-Phase of an input signal at the digital input <!PW>rBit (0..11).

The time is returned in milliseconds. 

If the expected HIGH/LOW- and / or LOW/HIGH-transfers are not found (e.g. because there is no input signal), the measurement is aborted after <!PW>rTimeout milliseconds, and -1 is returned as result.
>>
<<
128.137.1.3
ME3000.DIN.MeasHighTime|MeasHighTime
--
<!DEF>
function <!TW>ME3000.DIN.MeasHighTime (rBit, rTimeout : real) : real;
<!TXT>
Determines the length of a HIGH-Phase of the input signal at the digital input <!PW>rBit (0..11).

The time is returned in milliseconds. 

If the expected HIGH/LOW- and / or LOW/HIGH-transfers are not found (e.g. because there is no input signal), the measurement is aborted after <!PW>rTimeout milliseconds, and -1 is returned as result.
>>
<<
128.137.1.4
ME3000.DIN.MeasLowHighTime|MeasLowHighTime
--
<!DEF>
function <!TW>ME3000.DIN.MeasLowHighTime (rBit, rTimeout : real [; rPerioden : real]) : real;
<!TXT>
Determines the length of an input signal period at the digital input <!PW>rBit (0..11), averaged over rPeriods (Default=1).

The time is returned in milliseconds. 

If the expected HIGH/LOW- and / or LOW/HIGH-transfers are not found (e.g. because there is no input signal), the measurement is aborted after <!PW>rTimeout milliseconds, and -1 is returned as result.
>>

<<
128.137.2
ME3000.DOut|DOut
--
Digital outputs. Out of the existing 16 digital outputs only the lower 8 can be used freely. The upper 8 bits used internally are masked out.
>>

<<
128.137.2.1
ME3000.DOUT.Get|Get
--
<!DEF>
function <!TW>ME3000.DOUT.Get : real;
<!TXT>
Returns the bit pattern of the digital outputs of the ME3000 card.

The internally used upper 8 bits are masked out.
>>

<<
128.137.2.2
ME3000.DOut.Bits|Bits
--
<!DEF>
procedure <!TW>ME3000.DOUT.BITS (rBitPattern, rOperation : real);
<!TXT>
The bits returned in the <!PW>rBitPattern are combined, as specified in the <!PW>rOperation, with the digital outputs of the ME3000 card.

 <!PW>rOperation can be : <!RW>CLR | <!RW>SET | <!RW>FLIP | <!RW>NOP or 0..3

Only the lower 8 bits of <!PW>rBitPattern are used.
>>
<<
128.137.2.3
ME3000.DOut.Word|Word
--
<!DEF>
procedure <!TW>ME3000.DOut.WORD (rBitPattern : real);
<!TXT>
The digital outputs of the ME3000 card are set to the <!PW>rBitPattern.

Only the lower 8 bits of <!PW>rBitPattern are used.
>>
<<
128.137.3
ME3000.ADC|ADC
--
Analog inputs
>>

<<
128.137.3.1
ME3000.ADC.Setup|Setup
--
<!DEF>
procedure <!TW>ME3000.ADC.Setup (rChannel, rRange, rSingleDiff : real);
<!TXT>
Defines the characteristics of the AD-channel <!PW>rChannel (0..15).

 <!PW>rRange :
<!STBL>
<!+>Nr.<!+>Range<!+>
<!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>
<!+>Value<!+>Meaning<!>
<!c><!RW>false<!>single-ended<!>
<!c><!RW>true<!>differential<br><!REM>not supproted by Victor Hardware<!TXT><!>
<!ETBL>

>>
<<
128.137.3.2
ME3000.ADC.Get|Get
--
<!DEF>
function <!TW>ME3000.ADC.Get (rChannel : real [; rAverages : real]);
<!TXT>
Returns the value of the AD-channel <!PW>rChannel (0..15).

If <!PW>rAverages (1..1024) is specified, then the average value is calculated based on a corresponding number of individual values.
>>

<<
128.137.3.3
ME3000.ADC.Sample|Sample
--
Sampling - recording of analog signals
>>
<<
128.137.3.3.1
ME3000.ADC.Sample.Check|Check
--
<!DEF>
function <!TW>ME3000.ADC.Sample.Check : real;
<!TXT>
Check whether the sampling can be started with the made setup (channels, frequency, number of samples) resp. an already started sampling is still running or has already ended.

Result:
<!STBL>
<!+>Value<!+>Meaning<!>
<!c>1<!>Sampling already / still running<!>
<!c>0<!>averything OK, sampling can be started<!>
<!c>-1<!>no channel in the channel list<!>
<!c>-2<!>Sample frequency too high<!>
<!c>-3<!>too many channels for the frequency<!>
<!c>-4<!>number of samples is 0<!>
<!c>-5<!>the memory is not enough<!>
<!c>-6<!>start was not possible<!>
<!c>-7<!>ME3000 card not active<!>
<!ETBL>
>>
<<
128.137.3.3.2
ME3000.ADC.Sample.Setup|Setup
--
<!DEF>
procedure <!TW>ME3000.ADC.Sample.Setup (rFrequency, rSamples, rTrigger : real);
<!TXT>
Defines the parameters for the sampling process.

 <!PW>rFrequency : sampling rate in Hz (not total sampling rate !)
Maximum value depends on the number of channels         

 <!PW>rSamples : number of samples per channel
Maximum value 1.000.000 (depends on the memory too)

 <!PW>rTrigger : type of triggering:
<!STBL>
<!+>Value<!+>Meaning<!>
<!c>0<!>immediately with ADC.Sample.Start / Scan<!>
<!c>1<!>Low-level on trigger input<!>
<!c>2<!>High-level on trigger input<!>
<!ETBL>
>>
<<
128.137.3.3.3
ME3000.ADC.Sample.Start|Start
!128.137.3.3.4 - Start
--
<!DEF>
procedure <!TW>ME3000.ADC.Sample.Start (rCurveSet : real);
<!TXT>
Starts the sampling process. 

Check first with <a href="128.137.3.3.1">ME3000.ADC.Sample.Check</a> whether all parameters are valid for the sampling. 

See also <a href="128.137.3.3.5">ME3000.ADC.Sample.Scan</a> - another way of sampling.

The sampling runs independently of the interpreter in the background. With <!RW>ME3000.ADC.Sample.Check it can be checked wether the sampling has been already finished.

 <!PW>rCurveSet indicates the Curve-Set that will hold the samples curves. At the moment it must be always 1.
>>
<<
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>
Starts the sampling process. 

Check first with <a href="128.137.3.3.1">ME3000.ADC.Sample.Check whether all the parameters are valid for the sampling. 

 <!RW>ME3000.ADC.Sample.Scan is different from <a href="128.137.3.3.3">ME3000.ADC.Sample.Start</a>  in the way the scan time is distributed on the individual channels. If there is only one channel is the channel list both procedures are identical.

A graphic should clarify this better. The X on the time line indicates the selected sample interval. When <!RW>START is used, all the selected channels (here 4) are sampled consecutively as quickly as possible - assimultaneously as possible. Thus for channels 2-4 this yields only a very short settling-time of the multiplexer. When SCAN is used the channels are distributed on the sample time line. Thus all the channels have the same settling-time, but will be sampled time shifted.

<!CODE>
Time-> X---------------X---------------X-------------->
Start: 1234------------1234------------1234------------
Scan : 1---2---3---4---1---2---3---4---1---2---3---4---
<!TXT>

The sampling runs independently of the interpreter in the background. With <!RW>ME3000.ADC.Sample.Check it can be checked whether the sampling has been already ended.

 <!PW>rCurveSet indicates the curve-set that will hold the sampled curves. At the moment it is always 1.
>>

<<
128.137.3.3.5
ME3000.ADC.Sample.Stop|Stop
--
<!DEF>
procedure <!TW>ME3000.ADC.Sample.Stop;
<!TXT>
Aborts a running sampling process. 

Already sampled values are transferred to the curve-set, values which have not been measured yet are filled with undefined data. Therefore use the curve-set with precaution or, best, do not use it at all.
>>

<<
128.137.3.4
ME3000.ADC.List|List
--
List - administers the list of channels processed during the sampling
>>
<<
128.137.3.4.1
ME3000.ADC.List.Clear|Clear
--
<!DEF>
procedure <!TW>ME3000.ADC.List.Clear;
<!TXT>
Deletes the list of channels processed during the sampling. Directly after this command it is not possible to do a sampling because there is no channel selected.
>>
<<
128.137.3.4.2
ME3000.ADC.List.Add|Add
--
<!DEF>
procedure <!TW>ME3000.ADC.List.Add (rChannel : real);
<!TXT>
Adds the channel <!PW>rChannel (0..15) to the list of the sampled channels.
If the channel is already in the list, nothing happens.
>>

<<
128.137.3.5
Example for sampling|Example
--
<!CODE>
  // set range
  ME3000.ADC.Setup (0, 0, false);  

  // clear list of sampled channels and add the wanted ones
  ME3000.ADC.List.Clear;
  ME3000.ADC.List.Add (0);

  // define parameters of sampling
  ME3000.ADC.Sample.Setup (500000, 1000, 0);

  // start sampling (setup errors will be checked later)
  ME3000.ADC.Sample.Start (1);
  repeat
    // wait until sampling finished
  until ME3000.ADC.Sample.Check &lt; 1;
  
  if ME3000.ADC.Sample.Check &lt; 0 then begin
    // error in setup
  end
  else begin
    // data is now in CurveSet 1
    // set average value of sampled data as result
    SetValue (Curve.AvgValue (1, 0));
  end;
<!TXT>

>>

<<
128.137.4
ME3000.DAC|DAC
--
Analog outputs
>>
<<
128.137.4.1
ME3000.DAC.Setup|Setup
--
<!DEF>
procedure <!TW>ME3000.DAC.Setup (rChannel, rRange : real);
<!TXT>
Defines the characteristic of the DA-channel <!PW>rChannel (0..3).

Attention: 
The Victor Version1 (the one with linear power supply inside) uses DAC-Channel 3 to stimulate the power supply!

 <!PW>rRange
<!STBL>
<!+>Value</b><!><b>Meaning</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>
Sets the output of the DA-channel <!PW>rChannel (0..3) to <!PW>rValue Volt.

Attention: 
The Victor Version1 (the one with linear power supply inside) uses DAC-Channel 3 to stimulate the power supply!
>>

<<
128.137.4.3
ME3000.DAC.Curve|Curve
--
Administers the output of a cyclic signal on a DAC-channel.
Therefore an internal curve is generated and transferred to the FIFO-buffer of the ME3000-card for output.
Independently of the output, the internal curve form can be further processed already.
The size of the internal FIFO is 4096 samples. The maximum output frquency is 100.000 Hz. So the highest possible frequency which can be generated is a rectangle with 50 kHz (with 2 samples). The samples in FIFO can be defined sample by sample or the system can generate one of the predefined curve forms (sinus, rectangle, triangle). If the inputs are defined via the interpreter step itself, it must be taken into consideration that the  number of inputs determines the maximum output frequency: 
<!CODE>
fMax := 100kHz / number of inputs in FIFO. 
<!TXT>
In case of the curve forms generated by the system a frequency must be specified for which the number of FIFO-inputs is then optimized. An already generated curve form can be output with any frequency, but regard should be paid to the maximum frequency. For a sweep with a curve form generated by the system, the highest frequency limit must be specified in the definition.

Example:
<!CODE>
// Sweep with a sinus curve
ME3000.DAC.Curve.Sin (5, 0, 5000);      // calculate a sinus for 5kHz
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>
Deletes the internal curve memory, a possible running output is not influenced.
>>
<<
128.137.4.3.2
ME3000.DAC.Curve.Start|Start
--
<!DEF>
procedure <!TW>ME3000.DAC.Curve.Start (rChannel, rFrequency : real);
<!TXT>
Starts the output of the previously defined curve on the <!PW>rChannel with the frequency (repeat frequency of the complete curve) <!PW>rFrequency Hz.

The maximum frequency is 100 kHz / number of points on the curve.

It is not necessary to stop a possible running output before.

Example output sinus 150Hz, 4Vpp, 2.5Voffs:
(Consider the amplification of the output driver for amplitude and Offset)
<!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>
Ends the output of the curve.
The DAC-converter puts out the interpolation point put out last.
>>
<<
128.137.4.3.4
ME3000.DAC.Curve.Sin|Sin
--
<!DEF>
procedure <!TW>ME3000.DAC.Curve.Sin (rAmp, rOffs : real [; rFreq : real]);
<!TXT>
Calculates a sinusperiod in the internal curve memory.

The amplitude and the Offset are given by <!PW>rAmp and <!PW>rOffs. The peaks (Minima and Maxima) of the curve are at <!PW>rOffs+<!PW>rAmp resp. <!PW>rOffs-<!PW>rAmp.

 <!PW>rFreq defines the frequency for which the number of sampling points is optimized and should be ALWAYS specified, because otherwise the curve is calculated with 4096 sampling points and it is possible that this curve cannot be put out with the wanted frequency.

If the curve is put out as sweep, then the highest wanted frequency should be specified as <!PW>rFreq.
>>
<<
128.137.4.3.5
ME3000.DAC.Curve.Sqr|Sqr
--
<!DEF>
procedure <!TW>ME3000.DAC.Curve.Sqr (rAmp, rOffs, rDuty : real [; rFreq : real]);
<!TXT>
Calculates a period of a rectangle curve in the internal curve memory.

The amplitude and the offset are given by <!PW>rAmp and <!PW>rOffs. The peaks (Minima and Maxima) of the curve are at <!PW>rOffs+<!PW>rAmp resp. <!PW>rOffs-<!PW>rAmp.

 <!PW>rDuty (0..100) defines the duration of the High-Phase (as percentage of the complete period). <!PW>rDuty=50 generates a symetric rectangle (+- one sampling point in case of an odd sampling point number)

 <!PW>rFreq defines the frequency for which the number of sample points is optimized and should be ALWAYS specified because otherwise the curve is calculated with 4096 sample points and it is possible that this curve cannot be put out with the wanted frequency.

If the curve is put out as sweep, then the highest wanted frequency should be specified as <!PW>rFreq.
>>
<<
128.137.4.3.6
ME3000.DAC.Curve.Saw|Saw
--
<!DEF>
procedure <!TW>ME3000.DAC.Curve.Saw (rAmp, rOffs, rRise : real [; rFreq : real]);
<!TXT>
Calculates a period of a rectangle curve in the internal curve memory.

The amplitude and the offset are given by <!PW>rAmp and <!PW>rOffs. The peaks (Minima and Maxima) of the curve are at <!PW>rOffs+<!PW>rAmp resp. <!PW>rOffs-<!PW>rAmp.

 <!PW>rRise (0..100) determines the duration of the rising edge (as percentage of the whole period).
 <!PW>rRise=0 generates a pure falling sawtooth,
 <!PW>rRise=50 generates a symetric triangle (+- one sampling point in case of an odd number of sampling point)
 <!PW>rRise=100 generates a pure rising sawtooth,

 <!PW>rFreq determines the frequency for which the number of sampling points is optimized and should be ALWAYS specified, because otherwise the curve is calculated with 4096 sample points and it is possible that this curve cannot be put out with the wanted frequency.

If the curve is put out as sweep, then the highest wanted frequency should be specified as <!PW>rFreq.
>>
<<
128.137.4.3.7
ME3000.DAC.Curve.Add|Add
--
<!DEF>
procedure <!TW>ME3000.DAC.Curve.Add (rAmp : real);
<!TXT>
Adds an point to the curve in the internal buffer. 

 <!PW>rAmp determines the amplitude in this sampling point (-10..10 V).
If more points are added than the FIFO can register (4096), then the points will be ignored.

Arbitrary curve forms are generated with <!RW>ME3000.DAC.Curve.Clear and <!RW>ME3000.DAC.Curve.Add.
>>
<<
128.137.5
ME3000.PWM|PWM
--
 <b>P</b>ulse <b>W</b>idth <b>M</b>odulated Output
>>
<<
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>
Sets the PWM-output of the ME3000 card on the specified value.

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

<sup><b>*</b></sup> Some of the ME3000 driver from Meilhaus dont't allow to specfiy a frequency of 0. Use <!RW>ME3000.PWM.STOP to stop the PWM signal.
>>
<<
128.137.5.2
ME3000.PWM.Start|Start
--
<!DEF>
procedure <!TW>ME3000.PWM.Start;
<!TXT>
Activates the PWM-output
>>
<<
128.137.5.3
ME3000.PWM.Stop|Stop
--
<!DEF>
procedure <!TW>ME3000.PWM.Stop;
<!TXT>
Deactivates the PWM-output
>>
<<
128.137.6
ME3000.IsActive|IsActive
--
<!DEF>
function <!TW>ME3000.IsActive : real;
<!TXT>
Returns <!RW>TRUE, if the ME3000 is active and ready for operation.
>>

<<
128.137.7
Calibration
--
Since Build 955 a software calibration of the ADC and DAC channels is supported.
With Build 963 the calibration routines have been moved from the ME3000 IP object to the new Calibration IP object.
So the values are not longer manipulated with commands like <!RW>ME3000.ADC.Offset.Set, but with commands like <!RW>Calibration.Set
>>

<<
128.137.7.1
AD-Converter|ADCs
--
The software calibration of an ADC is based on two values:

<ul indent="15">
<li><b>Offset</b><br>
Value returned by an uncalibrated channel, if the input voltage is 0V<br>
</li>
<li><b>Gain</b><br>
Relation between the Voltage on the input of an ADC and the value retuned by this ADC (offset corrected)
</li></ul>

For the calculation of the voltage displayed for an ADC the following formula is used:
<!STBL>
<!>U<sub>display</sub> = (U<sub>ADC</sub> - <!RW>Offset) * <!RW>Gain<!>
<!ETBL>

Way of calibration
<!STBL>
<!>1.<!>Reset calibration values<!><!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.<!>Supply 0V at the input terminals<!>&nbsp;<!>
<!>3.<!>Read value of the ADC<!><tt>rOffset:=</tt><!RW>ME3000.ADC.Get<tt> (rChannel, 1024);</tt><!>
<!>4.<!>Set this value as offset value<!><!RW>Calibration.Set <tt>('ME3000', 'ADC.Offset.0', rChannel, rOffset);</tt><!>
<!>5.<!>Supply a stable voltage (close to the end of the input range) at the input terminals<!><tt>rSet:=9.5;&nbsp;&nbsp;&nbsp;// Ecxample</tt><!> 
<!>6.<!>Read value of the ADC<!><tt>rMeas:=</tt><!RW>ME3000.ADC.Get<tt> (rChannel, 1024);</tt><!>
<!>7.<!>Calculate and set gain<!><!RW>Calibration.Set <tt>('ME3000', 'ADC.Gain.0', &nbsp;&nbsp;rChannel, rSet/rMeas);</tt><!>
<!ETBL> 

For the commands <!RW>Calibration.Set and <!RW>Calibration.Get the following names and channels are defined:
<!STBL>
<!+>ValueName<!+>Chanalnumber(s)<!+>Description<!>
<!c>ADC.Offset.<i>Range</i><!c>0 .. 15<!>Offset correction value of ADC channel 0..15<!>
<!c>ADC.Gain.<i>Range</i><!c>0 .. 15<!>Gain  correction value of ADC channel 0..15<!>
<!ETBL>
Range defines the input range the calibration is made for.

<!STBL>
<!+>Range<!+>Input range<!+>
<!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-Converter|DACs
--
The software calibration of an ADC is based on two values:

<ul indent="15">
<li><b>Offset</b><br>
Value an the output terminal of the DAC, when it is set to 0V<br>
</li>
<li><b>Gain</b><br>
Relation between the value on the output terminal of a (offset corrected) DAC and the set point of the DAC
</li></ul>

The calculation of the corrected set point of the DAC uses this formula:
<!STBL>
<!>U<sub>DAW</sub> = (U<sub>Set</sub> - <!RW>Offset) * <!RW>Gain<!>
<!ETBL>

Way of calibration:
<!STBL>
<!>1.<!>Reset calibration values<!><!RW>Calibration.Set <tt>('ME3000', 'DAC.Offset.0', rChannel, 0);</tt>
                                   <!RW>Calibration.Set <tt>('ME3000', 'DAC.Gain.0', &nbsp;&nbsp;rChannel, 1);</tt><!>
<!>2.<!>Set DAC to produce 0V<!><!RW>ME3000.DAC.Set<tt> (rChannel, 0);</tt><!>
<!>3.<!>Measure voltage on terminals<!><tt>rMeas:=</tt><!RW>IEC.GetValue<tt> ('Calibrator', -9999)</tt><!>
<!>4.<!>Set this value as calibration offset<!><!RW>Calibration.Set <tt>('ME3000', 'DAC.Offset.0', rChannel, rMeas);</tt><!>
<!>5.<!>Set DAC to a value close to the end of the output range<!><tt>rSet:=9.5;</tt><br>
                                                                 <!RW>ME3000.DAC.Set<tt> (rChannel, rSoll);</tt><!> 
<!>6.<!>Measure voltage on terminals<!><tt>rMeas:=</tt><!RW>IEC.GetValue<tt> ('Calibrator', -9999)</tt><!>
<!>7.<!>Calculate and set gain<!><!RW>Calibration.Set <tt>('ME3000', 'DAC.Gain.0', rChannel, rSet/rMeas)</tt><!>
<!ETBL> 

For the commands <!RW>Calibration.Set and <!RW>Calibration.Get the following names and channels are defined:
<!STBL>
<!+>ValueName<!+>Chanalnumber(s)<!+>Description<!>
<!c>DAC.Offset.<i>Range</i><!c>0 .. 3<!>Offset correction value of DAC channel 0..3<!>
<!c>DAC.Gain.<i>Range</i><!c>0 .. 3<!>Gain correction value of DAC channel 0..3<!>
<!ETBL>
Range defines the output range the calibration is made for.

<!STBL>
<!+>Range<!+>Output range<!>
<!c> 0<!>0 .. 10 V<!>
<!c> 1<!> 5 V<!>
<!c> 2<!> 10 V<!>
<!ETBL>
>>

