FB_CSpline - PrepareEqDisX (Methode)

Übersicht

Typ

Methode

Verfügbar ab

V1.0.0.0

Versionen:

Aktuelle Version

Aufgabe

Erzeugung eines CSpline mit äquidistanten X-Werten.

Beschreibung

Die Methode erzeugt einen CSpline mit äquidistanten X-Werten anhand der übergebenen Liste i_plrYList, unter Berücksichtigung der X-Werte i_lrXStart und i_lrXEnd sowie den Steigungen i_lrMStart und i_lrMEnd.

HINWEIS: Zum Erzeugen eines CSpline sind 112 * (i_diNumberofPoints + 1) bytes dynamic memory erforderlich. Deshalb muss der Parameter Programm\DynIecDataSize der Steuerungskonfiguration richtig ausgewählt werden.

Schnittstelle

Eingang

Datentyp

Beschreibung

i_etCSplineType

ET_CSplineType

Zu erzeugender CSpline-Typ.

i_diNumberOfPoints

DINT

Anzahl der zu interpolierenden Wertepaare.

Wertebereich: 3 .. Gc_diMaxNumberOfSplinePoints

i_lrXstart

LREAL

Anfangswert des X-Bereichs

i_lrXend

LREAL

Endwert des X-Bereichs

i_plrYList

POINTER TO LREAL

Zeiger auf das Array (Feld), das die Y-Werte enthält. Dieses Array (Feld) muss mindestens i_diNumberOfPoints Elemente enthalten, damit möglichst keine Speicherzugriffsfehler auftreten.

i_lrMstart

LREAL

Startpunkt der Steigung. Nur relevant für i_etSplineType := ET_CSplineType.Boundary

i_lrMend

LREAL

Endpunkt der Steigung. Nur relevant für i_etSplineType := ET_CSplineType.Boundary

Ausgang

Datentyp

Beschreibung

q_etDiag

GD.ET_Diag

Allgemeingültige, bibliotheksunabhängige Aussage zur Diagnose.

Ein Wert ungleich GD.ET_Diag.Ok entspricht einer Fehlermeldung.

q_etDiagExt

ET_DiagExt

POU-abhängiger Ausgang des Diagnosegeräts.

q_etDiag = GD.ET_Diag.Ok -> Statusmeldung

q_etDiag <> GD.ET_Diag.Ok -> Fehlermeldung

q_sMsg

STRING[80]

Ereignisabhängige Meldung, die detaillierte Informationen zum Diagnosezustand liefert.

Diagnosemeldungen

q_etDiag

q_etDiagExt

Aufzählungswert

Beschreibung

OK

Ok

0

Ok

ExecutionAborted

InsufficientDynamicMemory

59

Unzureichender dynamischer Speicher

InputParameterInvalid

CSplineTypeUnknown

64

CSpline Typ ist unbestimmbar.

InputParameterInvalid

NumberOfPointsRange

58

NumberOfPoints ist außerhalb des gültigen Bereichs.

InputParameterInvalid

PointerYListInvalid

62

Der Zeiger auf YList ist ungültig.

InputParameterInvalid

PoorNumericCondition

63

Der Spline hat schlechte numerische Werte.

InputParameterInvalid

XstartGreaterXend

65

XStart ist größer als XEnd.

CSplineTypeUnknown

Aufzählungsname:

CSplineTypeUnknown

Aufzählungswert:

64

Beschreibung:

CSpline Typ ist unbestimmbar.

Problem

Ursache

Lösung

-

Der Wert am Eingang i_etCSplineType ist ungültig .

i_etCSplineType muss mit einem Element aus ET_CSplineType zugewiesen werden.

InsufficientDynamicMemory

Aufzählungsname:

InsufficientDynamicMemory

Aufzählungswert:

59

Beschreibung:

Unzureichender dynamischer Speicher

Problem

Ursache

Lösung

-

Es steht nicht genügend dynamischer Speicher zu Verfügung.

Der Parameter DynIECDataSize in der Steuerungskonfiguration muss erhöht werden.

NumberOfPointsRange

Aufzählungsname:

NumberOfPointsRange

Aufzählungswert:

58

Beschreibung:

NumberOfPoints ist außerhalb des gültigen Bereichs.

Problem

Ursache

Lösung

-

Dem Eingang i_diNumberOfPoints wurde eine ungültige Anzahl an Splinepunkten übergeben.

Der Eingang i_diNumberOfPoints muss >= 3 und <= Gc_diMaxNumberOfSplinePoints sein.

Ok

Aufzählungsname:

Ok

Aufzählungswert:

0

Beschreibung:

Ok

Der CSpline mit äquidistanten X-Werten wurde erfolgreich erzeugt.

PointerYListInvalid

Aufzählungsname:

PointerYListInvalid

Aufzählungswert:

62

Beschreibung:

Der Zeiger auf YList ist ungültig.

Problem

Ursache

Lösung

-

Dem Eingang i_plrYList wurde ein ungültiger Zeiger übergeben.

Überprüfen Sie den Zeiger am Eingang i_plrYList.

PoorNumericCondition

Aufzählungsname:

PoorNumericCondition

Aufzählungswert:

63

Beschreibung:

Der Spline hat schlechte numerische Werte.

Problem

Ursache

Lösung

-

Der Abstand zwischen zwei Splinepunkten ist zu klein.

Überprüfen Sie die Liste der Splinepunkte.

XstartGreaterXend

Aufzählungsname:

XstartGreaterXend

Aufzählungswert:

65

Beschreibung:

XStart ist größer als XEnd.

Problem

Ursache

Lösung

-

Der zugewiesene Wert der Variablen stCam.lrXStart ist zu groß.

Der Wert der Variablen stCam.lrXStart muss kleiner als der Wert der Variablen stCam.lrXEnd sein.