:Revision=2
:html
<<
128.180
Curve-Objekt|Curve
--
Das IP-Objekt <!RW>Curve dient dem Zugriff auf die analogen Messkurven des Kurven-Sets.

Alle Befehle sind auf die Erweiterung auf mehrere Kurven-Stze ausgelegt. Daher muss in jedem Befehl als erster Parameter zur Zeit (nur ein Kurven-Satz) immer 1 angegeben werden.

Fr alle Abfragen gilt:
Ist eine Kurve nicht vorhanden oder kann ein gesuchtes Ereignis nicht gefunden werden, so wird der Fehlerwert -999999999 zurckgeliefert.

Hinweis: 
Der Kurvenmonitor kann ber die <a href="128.10.3.16">System-Aktion</a> 2020 eingeblendet werden.
<!CODE>
System.Action.Trigger (2020);
<!TXT>

Beispiel fr das Anzeigen von 2 einfachen Kurven im Kurvenmonitor
<!CODE>
var
  Curve1 : vector;
  Curve2 : vector;
  Loop   : real;

step

// Erstellen der ersten messkurve
  Curve1 :=[];
  for Loop := 1 to 1000 step 1 do begin
    Curve1 := Curve1 + [(Math.Sin( Loop / 100 )/25) ];
  end;

// Erstellen der zweiten messkurve
  Curve2 :=[];
  for Loop := 1 to 1000 step 1 do begin
    Curve2 := Curve2 + [Math.Sin ( Loop / 10) * 1/ Loop];
  end;

//  Setzen der Beschriftung fr die X und Y Achsen
  Curve.Scale.SetText ( 1, 1, 'Volt' );
  Curve.Scale.SetText ( 1, 0, 'Sample' );
  Curve.Name( 1, 'Curve 1', 'Curve 2' );

// Setzen der Kurven Namen
  Curve.Setup ( 1, Len ( Curve1 ), Curve1, Curve2 );

// Anzeigen des Curve Monitors
  Action.Trigger ( 2020, 'SHOW' );

...

end.
<!TXT>

>>

<<
128.180.1
Funktionen des Curve-Objekts|Funktionen
--
>>
<<
128.180.1.1
Curve.Find|Find
!128.180.2.1
--
<!DEF>
function <!TW>Curve.Find (rSet, rCurve, rWhat, rVolt : real [; rHoldTimeMS : real]) : real;
<!TXT>
Liefert den Zeitpunkt (in ms ab Kurvenbeginn) zu dem die Kurve <!PW>rSet/<!PW>rCurve die Spannung <!PW>rVolt kreuzt.

Wird das gewnschte Ereignis nicht gefunden, so wird -999999999 zurckgeliefert.

 <!PW>rWhat legt fest, ob die Kurve die Spannung fallend (0) oder steigend (1) schneiden soll.

Wenn <!PW>rHoldTimeMS angegeben ist, dann muss die Kurve fr diese Zeit (ms) unter bzw. ber der Spannung bleiben. Hiermit knnen kurze Peaks ausgefiltert werden.

Betrachtet wird immer nur der mit <!RW>Curve.Select ausgewhlte Bereich. Die Zeitangaben des Ergebnisses bezieht sich jedoch auf die gesamte Kurve (erstes Sample = 0).

Beispiel:
<!CODE>
rTime:=Curve.Find (1, 1, 1, 4.5, 10);
<!TXT>
Sucht den Zeitpunkt (die Flanke), wann die Kurve 1 des Sets 1 ber die Spannung 4.5 Volt steigt und mindestens 10 ms darber bleibt.
>>
<<
128.180.1.2
Curve.MinValue|MinValue
!128.180.2.1
!128.180.1.3
--
<!DEF>
function <!TW>Curve.MinValue (rSet, rCurve : real) : real;
<!TXT>
Liefert den Minimalwert der Kurve <!PW>rSet/<!PW>rCurve in Volt.

Betrachtet wird nur der mit <!RW>Curve.Select ausgewhlte Bereich.
>>
<<
128.180.1.3
Curve.MaxValue|MaxValue
!128.180.2.1
!128.180.1.2
--
<!DEF>
function <!TW>Curve.MaxValue (rSet, rCurve : real) : real;
<!TXT>
Liefert den Maximalwert der Kurve <!PW>rSet/<!PW>rCurve in Volt.

Betrachtet wird nur der mit <!RW>Curve.Select ausgewhlte Bereich.
>>
<<
128.180.1.4
Curve.AvgValue|AvgValue
!128.180.2.1
--
<!DEF>
function <!TW>Curve.AvgValue (rSet, rCurve : real) : real;
<!TXT>
Liefert den Mittelwert (arithmetisches Mittel aller Samples) der Kurve <!PW>rSet/<!PW>rCurve in Volt.

Betrachtet wird nur der mit <!RW>Curve.Select ausgewhlte Bereich.
>>
<<
128.180.1.5
Curve.RMSValue|RMSValue
!128.180.2.1
--
<!DEF>
function <!TW>Curve.RMSValue (rSet, rCurve : real) : real;
<!TXT>
Liefert den Effektivwert (quadratisches Mittel aller Samples / Root Mean Square) der Kurve <!PW>rSet/<!PW>rCurve in Volt.

Betrachtet wird nur der mit <!RW>Curve.Select ausgewhlte Bereich.
>>
<<
128.180.1.6
Curve.Value|Value
--
<!DEF>
function <!TW>Curve.Value (rSet, rCurve, rTimeMS : real) : real;
<!TXT>
Liefert den Wert der Kurve <!PW>rSet/<!PW>rCurve zum Zeitpunkt rTimeMS in Volt.
Geliefert wird der Wert des dem Zeitpunkt am nchsten liegenden Samples.
>>
<<
128.180.1.7
Curve.MeasRiseTime|MeasRiseTime
!128.180.2.1
--
<!DEF>
function <!TW>Curve.MeasRiseTime (rSet, rCurve : real [; rHoldTimeMS : real]) : real;
<!TXT>
Errechnet die Anstiegszeit der ersten Flanke der Kurve <!PW>rSet/<!PW>rCurve, die die mit SetThreshold festgelegten Schwellwerte schneidet. (Zeit zwischen dem Erreichen der Schwellwerte)

Wird das gewnschte Ereignis nicht gefunden, so wird -999999999 zurckgeliefert.

Wenn rHoldTimeMS angegeben ist, dann muss die Kurve fr diese Zeit (ms) unter bzw. ber den Schwellwerten bleiben. Hiermit knnen kurze Peaks ausgefiltert werden.

Betrachtet wird nur der mit <!RW>Curve.Select ausgewhlte Bereich.
>>
<<
128.180.1.8
Curve.MeasFallTime|MeasFallTime
!128.180.2.1
--
<!DEF>
function <!TW>Curve.MeasFallTime (rSet, rCurve : real [; rHoldTimeMS: real]) : real;
<!TXT>
Errechnet die Abfallzeit der ersten Flanke der Kurve <!PW>rSet/<!PW>rCurve, die die mit SetThreshold festgelegten Schwellwerte schneidet. (Zeit zwischen dem Erreichen der Schwellwerte)

Wird das gewnschte Ereignis nicht gefunden, so wird -999999999 zurckgeliefert.

Wenn <!PW>rHoldTimeMS angegeben ist, dann muss die Kurve fr diese Zeit (ms) unter bzw. ber den Schwellwerten bleiben. Hiermit knnen kurze Peaks ausgefiltert werden.

Betrachtet wird nur der mit <!RW>Curve.Select ausgewhlte Bereich.
>>
<<
128.180.1.9
Curve.MeasLowTime|MeasLowTime
!128.180.2.1
--
<!DEF>
function <!TW>Curve.MeasLowTime (rSet, rCurve : real [; rHoldTimeMS: real]) : real;
<!TXT>
Errechnet die Zeit (in ms), fr die die Kurve <!PW>rSet/<!PW>rCurve das erste mal unter der mit SetThreshold festgelegten Schwelle bleibt.

Erwartet wird ein Schneiden des Schwellwertes von oben nach unten und zurck von unten nach oben.

Wird das gewnschte Ereignis nicht gefunden, so wird -999999999 zurckgeliefert.

Wenn <!PW>rHoldTimeMS angegeben ist, dann muss die Kurve fr diese Zeit (ms) unter bzw. ber den Schwellwerten bleiben. Hiermit knnen kurze Peaks ausgefiltert werden.

Betrachtet wird nur der mit <!RW>Curve.Select ausgewhlte Bereich.
>>

<<
128.180.1.10
Curve.MeasHighTime|MeasHighTime
!128.180.2.1
--
<!DEF>
function <!TW>Curve.MeasHighTime (rSet, rCurve : real [; rHoldTimeMS: real]) : real;
<!TXT>
Errechnet die Zeit (in ms), fr die die Kurve <!PW>rSet/<!PW>rCurve das erste mal ber der mit SetThreshold festgelegten Schwelle bleibt.

Erwartet wird ein Schneiden des Schwellwertes von unten nach oben und zurck von oben nach unten.

Wird das gewnschte Ereignis nicht gefunden, so wird -999999999 zurckgeliefert.

Wenn <!PW>rHoldTimeMS angegeben ist, dann muss die Kurve fr diese Zeit (ms) unter bzw. ber den Schwellwerten bleiben. Hiermit knnen kurze Peaks ausgefiltert werden.

Betrachtet wird nur der mit <!RW>Curve.Select ausgewhlte Bereich.
>>

<<
128.180.1.11
Curve.MeasLowHighTime|MeasLowHighTime
!128.180.2.1
--
<!DEF>
function <!TW>Curve.MeasLowHighTime (rSet, rCurve : real [; rHoldTimeMS: real]) : real;
<!TXT>
Errechnet die Zeit (in ms), die die Kurve <!PW>rSet/<!PW>rCurve fr eine Periode bentigt. (Bezogen auf den mit SetThreshold festgelegten Schwellwert).

Erwartet wird ein Schneiden des Schwellwertes von oben nach unten dann von unten nach oben und zurck von oben nach unten.

Wird das gewnschte Ereignis nicht gefunden, so wird -999999999 zurckgeliefert.

Wenn <!PW>rHoldTimeMS angegeben ist, dann muss die Kurve fr diese Zeit (ms) unter bzw. ber den Schwellwerten bleiben. Hiermit knnen kurze Peaks ausgefiltert werden.

Betrachtet wird nur der mit <!RW>Curve.Select ausgewhlte Bereich.
>>
<<
128.180.1.12
Curve.BaseValue|BaseValue
!128.180.1.13
!128.180.2.1
--
<!DEF>
function <!TW>Curve.BaseValue (rSet, rCurve: real) : real;
<!TXT>
Dieser Wert ist nur sinnvoll, wenn die Kurve annhernd ein Rechtecksignal darstellt.
Er liefert den unteren Plateauwert der Kurve (den Wert nach dem Einschwingen des Rechtecks). 

Betrachtet wird nur der mit <!RW>Curve.Select ausgewhlte Bereich.

Fr die Berechnung des <!RW>BaseValue wird zuerst ein Histogramm ber den Wertebereich der Kurve gebildet. Dieses Histogramm gibt an, wie oft ein bestimmter Spannungswert in der Kurve auftaucht. Bei einen Rechteck-frmigen Verlauf der Spannung tauchen die Spannungswerte der beiden Plateaus entsprechend hufiger auf als die Spannungswerte der Flanken oder der evtl. vorhandenen ber-/Unterschwinger. Das Histogramm wird danach mit einer Dreieck-Kurve gefaltet, Breite des Dreieckes ein Prozent des Wertebereiches (entspricht einer Glttung mit einem laufenden Mittel, wobei die Mitte des gemittelten Bereiches strker bewertet wird). Danach wird fr die untere Hlfte des Histogrammes die Spannung gesucht, auf die die meisten Sampels fallen. Diese Spannung ist der <!RW>BaseValue.

Da die Berechnung des <!RW>BaseValue rechenintensiv ist, wird sie nur bei Bedarf durchgefhrt.
Bei der Berechnung des <!RW>BaseValues wird auch der <!RW>TopValue ermittelt.
>>
<<
128.180.1.13
Curve.TopValue|TopValue
!128.180.1.12
!128.180.2.1
--
<!DEF>
function <!TW>Curve.TopValue (rSet, rCurve: real) : real;
<!TXT>
Dieser Wert ist nur sinnvoll, wenn die Kurve annhernd ein Rechtecksignal darstellt.
Er liefert den oberen Plateauwert der Kurve (den Wert nach dem Einschwingen des Rechtecks).

Betrachtet wird nur der mit <!RW>Curve.Select ausgewhlte Bereich.

Erluterung zur Berechnung siehe <!RW>BaseValue. Es wird lediglich die obere Hlfte des Histogrammes betrachtet.
>>

<<
128.180.1.14
Curve.FFT|FFT
--
<!DEF>
function <!TW>Curve.FFT (rSet, rCurve: real) : vector;
<!TXT>
Berechnet das FFT-Spektrum der durch <!PW>rSet und <!PW>rCurve angegebenen Kurve und gibt dieses als Vector zurck. Die erste Kurve hat dabei den Kurvenindex 0. Im nachfolgenden Beispiel werden zunchst zwei Kurven mit Frequenzen von 1000 Hz und 1500 Hz erzeugt und addiert. Dann wird das FFT-Spektrum der Summenkurve berechnet und wieder als Kurve angezeigt.

<!CODE>
const
  rDuration    =     1;
  rSampleRate  =  8192;
  rFrequencyA  =  1000;
  rAmplitudeA  =    10;

  rFrequencyB  =  1500;
  rAmplitudeB  =     5;

var
  rIndex  : real;
  vCurveA : vector;
  vCurveB : vector;

  vCurveS : vector;

  vFFT : vector;

step
  for rIndex := 1 to rSampleRate * rDuration do begin
    vCurveA [rIndex] := math.Sin ( math.DegToRad ( rFrequencyA * 360 * rIndex / rSampleRate )) * rAmplitudeA;
    vCurveB [rIndex] := math.Sin ( math.DegToRad ( rFrequencyB * 360 * rIndex / rSampleRate )) * rAmplitudeB;
    vCurveS[rIndex] := vCurveA [rIndex] + vCurveB [rIndex];
  end;

  Curve.Setup ( 1, rSampleRate, vCurveA, vCurveB, vCurveS );

  DateTime.Delay ( 2000 );

  vFFT := Curve.FFT ( 1, 2 );

  Curve.Setup ( 1, 2000 * Len ( vFFT ) / rSampleRate, vFFT );
  Curve.Scale.SetText ( 1, 0, '[Hz]');
  Curve.Scale.SetText ( 1, 1, 'Spectrum');

end.
<!TXT>
>>

<<
128.180.1.15
Curve.FFTFreqValue|FFTFreqValue
--
<!DEF>
function <!TW>Curve.FFTFreqValue (rSet, rCurve: real) : real;
<!TXT>
Berechnet die Grundfrequenz (Strkste Frequenz im FFT-Spektrum) der Kurve <!PW>rSet/<!PW>rCurve in Hz. Die erste Kurve hat dabei den Kurvenindex 0.
>>

<<
128.180.1.16
Curve.FFTTHDAllValue|FFTTHDAllValue
--
<!DEF>
function <!TW>Curve.FFTTHDAllValue (rSet, rCurve: real) : real;
<!TXT>
Berechnet den Klirrfaktor fr alle Oberwellen der Kurve <!PW>rSet/<!PW>rCurve. Die erste Kurve hat dabei den Kurvenindex 0.
>>

<<
128.180.1.17
Curve.FFTTHDEvenValue|FFTTHDEvenValue
--
<!DEF>
function <!TW>Curve.FFTTHDEvenValue (rSet, rCurve: real) : real;
<!TXT>
Berechnet den Klirrfaktor fr alle geraden Oberwellen der Kurve <!PW>rSet/<!PW>rCurve. Die erste Kurve hat dabei den Kurvenindex 0.
>>

<<
128.180.1.18
Curve.FFTTHDOddValue|FFTTHDOddValue
--
<!DEF>
function <!TW>Curve.FFTTHDOddValue (rSet, rCurve: real) : real;
<!TXT>
Berechnet den Klirrfaktor fr alle ungeraden Oberwellen der Kurve <!PW>rSet/<!PW>rCurve. Die erste Kurve hat dabei den Kurvenindex 0.
>>

<<
128.180.2
Prozeduren des Curve-Objekts|Prozeduren
--
>>

<<
128.180.2.1
Curve.Select|Select
--
<!DEF>
procedure <!TW>Curve.Select (rSet, rFromMS : real [; rToMS: real]);
<!TXT>
Legt fest, welcher Teil der Kurven im Kurven-Satz <!PW>rSet bei den Auswertungen bercksichtigt wird.
Diese Einstellung bezieht sich auf alle Kurven im Kurven-Satz.

Wird nur <!PW>rFromMS angegeben, so werden nur Samples nach diesem Zeitpunkt bercksichtigt.
Nach <!RW>Curve.Select (1, 2) werden also die ersten 2 ms der Messung ignoriert.

Wird auch <!PW>rToMS angegeben, so werden nur Samples zwischen diesen beiden Zeitpunkten bercksichtigt.

Nach <!RW>Curve.Select (1, 2, 3) werden also die zwischen den Zeitpunkten 2 ms und 3 ms nach Start der Messung aufgelaufenen Samples betrachtet. (<!PW>rToMS muss grer sein als <!PW>rFromMS)

Direkt nach dem Messen eines Kurven-Satzes wird die gesamte Dauer bercksichtigt. Dies entspricht einem Aufruf von <!RW>Curve.Select (1, 0)
>>

<<
128.180.2.2
Curve.Smooth|Smooth
--
<!DEF>
procedure <!TW>Curve.Smooth (rSet, rCurve, rToCurve, rMethod, rSamples : real);
<!TXT>
Glttet die Kurve <!PW>rSet/<!PW>rCurve mit der durch <!PW>rMethod ausgewhlten Methode ber <!PW>rSamples Werte. Die sich ergebende Kurve wird in <!PW>rSet/<!PW>rToCurve abgespeichert. <!PW>rCurve und <!PW>rToCurve drfen identisch sein. War <!PW>rToCurve noch nicht vorhanden, so wird sie erzeugt.

<!PW>rMethod darf folgende Werte annehmen:
<!STBL>
<!+>rMethod<!+>Methode<!+>
<!c>1<!>es wird ein gleitendes Mittel ber die angegebene Anzahl Samples berechnet, wobei alle Samples gleich gewichtet werden (entspricht Faltung der Kurve mit einem Rechteckimpuls der Breite rSamples und Flche 1)<!>
<!c>2<!>es wird ein gleitendes Mittel ber die angegebene Anzahl Samples berechnet, wobei jedoch die 'weiter in der Mitte liegenden' Samples strker gewichtet werden (entspricht Faltung der Kurve mit einem Dreieckimpuls der Breite rSamples und Flche 1)<!>
<!ETBL>

Die Methode 1 ist etwas schneller.

Prinzipbedingt werden die ersten bzw. letzten <!PW>rSamples Werte der Kurve nicht mit der vollen Anzahl Mittelwerte geglttet und sollten mit <!RW>Curve.Select ausgeblendet werden.
>>


<<
128.180.2.3
Curve.SetThreshold|SetThreshold
--
<!DEF>
procedure <!TW>Curve.SetThreshold (rSet, rCurve : real; <!RW>ABS|<!RW>REL; rLow, rMid, rHigh : real);
<!TXT>
Setzt alle drei, fr die Auswertung mit dem <!RW>MEASxxx-Routinen verwendeten, Schwellwerte fr die Kurve <!PW>rSet/<!PW>rCurve.

 <!PW>rLow legt den unteren Schwellwert fest
 <!PW>rMid legt den mittleren Schwellwert fest
 <!PW>rHigh legt den oberen Schwellwert fest

Fr die Berechnung der Anstiegs- bzw. Abfallzeit wird der untere und der obere Schwellwert benutzt.

Fr die Bestimmung der Low-/High-/LowHigh-Time wird der mittlere Schwellwert benutzt.

Wird <!RW>ABS angegeben, so sind die Werte fr <!PW>rLow/<!PW>rMid/<!PW>rHigh absolute Spannungswerte in Volt.
Wird <!RW>REL angegeben, so sind die Werte fr <!PW>rLow/<!PW>rMid/<!PW>rHigh relative Werte in Prozent (0..100) bezogen auf die Spanne zwischen Minimal- und Maximalwert der Kurve im ber <!RW>Select festgelegten Bereich.

Statt <!RW>ABS kann 0 und statt <!RW>REL 1 angegeben werden.
>>
<<
128.180.2.3.1
Curve.SetThreshold.Low|Low
--
<!DEF>
procedure <!TW>Curve.SetThreshold.Low (rSet, rCurve : real; <!RW>ABS|<!RW>REL; rValue : real);
<!TXT>
Setzt den, fr die Auswertung mit dem <!RW>MEASxxx-Routinen verwendeten, unteren Schwellwerte fr die Kurve <!PW>rSet/<!PW>rCurve.

Dieser Schwellwert wird fr die Berechnung der Anstiegs- bzw. Abfallzeit benutzt.

Wird <!RW>ABS angegeben, so ist der Wert fr <!PW>rValue ein absoluter Spannungswerte in Volt.
Wird <!RW>REL angegeben, so ist der Wert fr <!PW>rValue ein relativer Wert in Prozent (0..100) bezogen auf die Spanne zwischen Minimal- und Maximalwert der Kurve im ber <!RW>Select festgelegten Bereich.

Statt <!RW>ABS kann 0 und statt <!RW>REL 1 angegeben werden.
>>
<<
128.180.2.3.2
Curve.SetThreshold.Mid|Mid
--
<!DEF>
procedure <!TW>Curve.SetThreshold.Mid (rSet, rCurve : real; <!RW>ABS|<!RW>REL; rValue : real);
<!TXT>
Setzt den, fr die Auswertung mit dem <!RW>MEASxxx-Routinen verwendeten, mittleren Schwellwerte fr die Kurve <!PW>rSet/<!PW>rCurve.

Dieser Schwellwert wird fr die Bestimmung der Low-/High-/LowHigh-Time benutzt.

Wird <!RW>ABS angegeben, so ist der Wert fr <!PW>rValue ein absoluter Spannungswerte in Volt.
Wird <!RW>REL angegeben, so ist der Wert fr <!PW>rValue ein relativer Wert in Prozent (0..100) bezogen auf die Spanne zwischen Minimal- und Maximalwert der Kurve im ber Select festgelegten Bereich.

Statt <!RW>ABS kann 0 und statt <!RW>REL 1 angegeben werden.
>>
<<
128.180.2.3.3
Curve.SetThreshold.High|High
--
<!DEF>
procedure <!TW>Curve.SetThreshold.High (rSet, rCurve : real; <!RW>ABS|<!RW>REL; rValue : real);
<!TXT>
Setzt den, fr die Auswertung mit dem MEASxxx-Routinen verwendeten, oberen Schwellwerte fr die Kurve <!PW>rSet/<!PW>rCurve.

Dieser Schwellwert wird fr die Berechnung der Anstiegs- bzw. Abfallzeit benutzt.

Wird <!RW>ABS angegeben, so ist der Wert fr <!PW>rValue ein absoluter Spannungswerte in Volt.
Wird <!RW>REL angegeben, so ist der Wert fr <!PW>rValue ein relativer Wert in Prozent (0..100) bezogen auf die Spanne zwischen Minimal- und Maximalwert der Kurve im ber Select festgelegten Bereich.

Statt <!RW>ABS kann 0 und statt <!RW>REL 1 angegeben werden.
>>
<<
128.180.2.4
Curve.Setup|Setup
--
<!DEF>
procedure <!TW>Curve.Setup (rSet, rFrequency : real; vData : vector [; vData : vector ..]);
<!TXT>
bertrgt die Kurven-Daten aus einem oder mehreren Vektoren in einen Kuvensatz in das Kurvenobjekts. Zuvor im Kurvensatz vorhandene Daten gehen verloren. Jeder Vektor erzeugt eine eigene Kurve. Die Vektoren sollten daher jeweils gleich viele Elemente aufweisen. Die Elemente der Vektoren werden als quidistant auf der X-Achse verteilt betrachtet. Leere Vektoren sind nicht erlaubt. Maximal knnen 100 Vektoren angegeben werden.

 <!PW>rFrequency gibt die Frequenz der gesampelten Daten (in Hz) an. Das Kurvenobjekt errechnet daraus automatisch die Beschriftung der X-Achse in [ms]. Wird eine andere Beschriftung gewnscht, so muss entsprechend umgerechnet werden:
<!CODE>
nFrequenz := (nAnzahlPunkt-1)/(nEndXWert-nStartXWert)*1000
<!TXT>

Alle Werte, die ber die ...Time Routinen errechnet werden oder die in <!RW>Select benutzt werden, verwenden die gesetzte Frequenz!
>>
<<
128.180.2.5
Curve.Scale|Scale
--
>>
<<
128.180.2.5.1
Curve.Scale.Offset|Offset
--
<!DEF>
procedure <!TW>Curve.Scale.Offset (rSet, rScaleNr, rOffset : real);
<!TXT>
Verschiebt den NullPunkt der X-Achse auf den gewhlten OffsetWert.

Dies ist momentan nur fr die X-Achse mglich, <!PW>rScaleNr muss daher 0 sein.

 <!PW>rScaleNr whlt die Achse
<!STBL>
<!+>rScaleNr<!+>Achse<!+>
<!c>0<!>X-Achse<!>
<!ETBL>

Alle Werte, die ber die ...Time Routinen errechnet werden oder die in <!RW>Select benutzt werden, bercksichtigen den Offset!
>>
<<
128.180.2.5.2
Curve.Scale.SetText|SetText
--
<!DEF>
procedure <!TW>Curve.Scale.SetText (rSet, rScaleNr : real; sText : string);
<!TXT>
Verndert die Beschriftung einer Achse.

 <!PW>rScaleNr whlt die Achse
<!STBL>
<!+>rScaleNr<!+>Achse<!+>
<!c>0<!>X-Achse<!>
<!c>1<!>Y-Achse<!>
<!ETBL>

 <!PW>sText ist der Text, der zur Beschriftung benutzt wird. Enthlt <!PW>sText einen Teil in eckigen Klammern &quot;[xxx]&quot;, so wird dieser Teil als Maeinheit fr die Beschriftung Vermessungsleiste benutzt.
>>
<<
128.180.2.6
Curve.Add|Add
--
<!DEF>
procedure <!TW>Curve.Add (rSet, rSourceCurve, rTargetCurve, rValue : real);
<!TXT>
Addiert den Wert <!PW>rValue zu jedem einzelnen Punkt der Kurve <!PW>rSourceCurve im Kurvensatz <!PW>rSet und legt die sich ergebende Kurve in der Kurve <!PW>rTargetCurve ab. Die Kurve wird also um <!PW>rValue verschoben. <!PW>rSourceCurve und <!PW>rTargetCurve knnen identisch sein. Ist <!PW>rTargetCurve noch nicht vorhanden, so wird sie zum Kurvensatz hinzugefgt.
>>
<<
128.180.2.7
Curve.Abs|Abs
--
<!DEF>
procedure <!TW>Curve.Abs (rSet, rSourceCurve, rTargetCurve : real);
<!TXT>
Wandelt von jedem einzelnen Punkt der Kurve <!PW>rSourceCurve im Kurvensatz <!PW>rSet den Wert in den Absolutwert um (entfernt das Vorzeichen) und legt die sich ergebende Kurve in der Kurve <!PW>rTargetCurve ab. Punkte unter der X-Achse werden also quasi nach oben geklappt. <!PW>rSourceCurve und <!PW>rTargetCurve knnen identisch sein. Ist <!PW>rTargetCurve noch nicht vorhanden, so wird sie zum Kurvensatz hinzugefgt.
>>
<<
128.180.2.8
Curve.Name|Name
--
<!DEF>
procedure <!TW>Curve.Name (rSet : real [; sName1 : string [; sName2 : string [; sNameN : string ...]]]]);
<!TXT>
Legt die Kurvennamen fest, die im Kurvenmonitor angezeigt werden. 

Der erste String ist der Name der ersten Kurve, der zweite String ist der Name der zweiten Kurve usw. 

Bei einem Leerstring wird der Name der Kurve nicht gendert. 

Werden weniger Strings angegeben, als Kurven vorhanden sind, so behalten die brigen Kurven ihren Namen. 

Werden mehr Strings angegeben, als Kurven vorhanden sind, so werden die berzhligen Strings ignoriert.

Ein Aufruf ganz ohne Angabe von Strings:
<!CODE>
Curve.Name (1);
<!TXT>
lscht alle benutzerdefinierten Names Fraben und setzt wieder die Standardnamen.
>>

<<
128.180.2.9
Curve.Color|Color
!128.154.9
--
<!DEF>
procedure <!TW>Curve.Color (rSet : real; vColors : vector);
<!TXT>
Legt die Farben fest, die im Kurvenmonitor verwendet werden. 

Das erste Element des Vectors ist die Farbe der ersten Kurve, das zweite Element die Farbe der zweiten Kurve usw. 

Die Elemente knnen RGB-Trippel oder DOS-Farbcodes sein. Ist ein Element -1, wird die Farbe der Kurve nicht gendert.

Enthlt der Vector weniger Elemente, als Kurven vorhanden sind, so behalten die brigen Kurven ihre alte Farbe. 

Enthlt der Vector mehr Elemente, als Kurven vorhanden sind, so werden die berzhligen Elemente ignoriert.

Ein Aufruf ganz ohne Angabe von Farben 
<!CODE>
Curve.Color (1, []);
<!TXT>
lscht alle benutzerdefinierten Farben und setzt wieder die Standardfarben.
>>

<<
128.180.2.10
Curve.Save|Save
!128.180.2.11
--
<!DEF>
procedure <!TW>Curve.Save (rSet : real; sFileName : string);
<!TXT>
Speichert das in <!PW>rSet angegebene Kurven-Set in die Datei <!PW>sFileName. Ist kein Pfad angegeben, wird das Typedaten-Verzeichnis des aktuellen Typs verwendet. Wird keine Dateierweierung angegeben, so wird .cst benutzt.
>>

<<
128.180.2.11
Curve.Load|Load
!128.180.2.10
--
<!DEF>
procedure <!TW>Curve.Load (rSet : real; sFileName : string);
<!TXT>
Ldt die in der Datei <!PW>sFileName gespeicherten Kurvendaten in das mit <!PW>rSet angegebene Kurven-Set. Ist kein Pfad angegeben, wird das Typedaten-Verzeichnis des aktuellen Typs verwendet. Wird keine Dateierweierung angegeben, so wird .cst benutzt.
>>
