FC_CalcProfileExtremeValues - Allgemeine Informationen
Typ |
Funktion |
Verfügbar ab: |
V1.0.3.0 |
Versionen: |
Aktuelle Version |
Die Funktion berechnet Minimal- und Maximalwerte (Position, Geschwindigkeit, Beschleunigung) des in einer Struktur ST_MultiCam definierten Kurvenprofils.
Es ist z. B. möglich zu ermitteln, ob ein bestimmtes Kurvenprofil innerhalb eines Maschinenzyklus noch gefahren werden kann.
Die Funktion ruft die Funktion FC_ProfileCompute mehrfach (i_uiNumberOfSteps) auf und berechnet die Werte.
Die Extremwerte für M und K werden durch numerische Differentiation der Funktionswerte berechnet.
Je mehr Schritte zur Berechnung verwendet werden, desto höher ist die Genauigkeit des Ergebnisses. Allerdings steigt der Zeitbedarf mit der Anzahl der Berechnungsschritte.
Die Zykluszeitüberwachung wird von der Funktion nicht verändert.
Um die maximale Achsgeschwindigkeit der Slaveachse zu berechnen, muss das Ergebnis mit der Leitgeschwindigkeit multipliziert werden.
lrMaxAxisVel:= q_stProfileExtremeValues.lrMaxM * lrMasterVel
Um die maximale Achsbeschleunigung der Slaveachse zu berechnen, muss das Ergebnis mit dem Quadrat der Leitgeschwindigkeit multipliziert werden.
lrMaxAxisAcc:= q_stProfileExtremeValues.lrMaxK * lrMasterVel * lrMasterVel
Eingang |
Datentyp |
Beschreibung |
---|---|---|
i_uiNumberOfSteps |
UINT |
Anzahl der Iterationsschritte |
i_lrXStart |
LREAL |
Anfang des Intervalls, in dem die Extrema berechnet werden sollen. |
i_lrXEnd |
LREAL |
Ende des Intervalls, in dem die Extrema berechnet werden sollen. |
Ausgang |
Datentyp |
Beschreibung |
---|---|---|
q_etDiag |
Allgemeingültige, bibliotheksunabhängige Aussage zur Diagnose. Ein Wert ungleich ET_Diag.Ok entspricht einer Diagnosemeldung. |
|
q_etDiagExt |
POU-spezifischer, diagnosebezogener Ausgang. q_etDiag = ET_Diag.Ok -> Statusmeldung q_etDiag <> ET_Diag.Ok -> Diagnosemeldung |
|
q_sMsg |
STRING[80] |
Ereignisabhängige Meldung mit detaillierten Informationen zum Diagnosezustand. |
q_stProfileExtremeValues |
Ausgabe der berechneten Extremwerte |
Ein-/Ausgang |
Datentyp |
Beschreibung |
---|---|---|
iq_stMultiCam |
Definition der Kurve, für die die Extremwerte bestimmt werden sollen. |
q_etDiag |
q_etDiagExt |
Enumerationswert |
Beschreibung |
---|---|---|---|
OK |
0 |
OK |
|
InputParameterInvalid |
125 |
Die Randbedingungen sind ungültig. |
|
InputParameterInvalid |
121 |
NumberOfCamPoints ist außerhalb des gültigen Bereichs. |
|
InputParameterInvalid |
191 |
NumberOfSteps ist außerhalb des gültigen Bereichs. |
|
InputParameterInvalid |
129 |
K ist außerhalb des gültigen Bereichs. |
|
InputParameterInvalid |
130 |
M ist außerhalb des gültigen Bereichs. |
|
InputParameterInvalid |
126 |
Der Kurventyp ist nicht bestimmbar. |
|
InputParameterInvalid |
192 |
XEnd ist außerhalb des gültigen Bereichs. |
|
InputParameterInvalid |
122 |
XFactor ist zu klein. |
|
InputParameterInvalid |
119 |
XStart ist außerhalb des gültigen Bereichs. |
|
InputParameterInvalid |
124 |
YFactor ist zu klein. |
|
UnexpectedProgramBehavior |
116 |
Das Profil wird bereits verwendet. |
|
UnexpectedProgramBehavior |
127 |
Der Speicher für Tabellen aus Systemprofilen ist voll. |
|
UnexpectedProgramBehavior |
1 |
Es ist ein unbeabsichtigter Fehler während der Ausführung aufgetreten. |
Enumerationsname: |
BoundaryConditionInvalid |
Enumerationswert: |
125 |
Beschreibung: |
Die Randbedingungen sind ungültig. |
Problem |
Ursache |
Lösung |
---|---|---|
- |
Bei der Definition des Bewegungsprofils in iq_stMultiCamData können die vorgegebenen Randbedingungen der Segmente nicht eingehalten werden. |
Prüfen Sie die Definition des Bewegungsprofils, insbesondere die Randbedingungen der Teilsegmente. Wählen Sie alternativ andere Profile für die Teilsegmente, um alle gewünschten Randbedingungen einhalten zu können. |
Enumerationsname: |
NumberOfCamPointsRange |
Enumerationswert: |
121 |
Beschreibung: |
NumberOfCamPoints ist außerhalb des gültigen Bereichs. |
Problem |
Ursache |
Lösung |
---|---|---|
- |
Am Eingang iq_stMultiCam.diNumberOfCamPoints wurde ein ungültiger Wert übergeben. |
Dem Eingang iq_stMultiCam.diNumberOfCamPoints muss ein Wert größer als 0 und kleiner oder gleich SystemInterface.MAX_NO_OF_SEG + 1 übergeben werden. |
Enumerationsname: |
NumberOfStepsRange |
Enumerationswert: |
191 |
Beschreibung: |
NumberOfSteps ist außerhalb des gültigen Bereichs. |
Problem |
Ursache |
Lösung |
---|---|---|
- |
Am Eingang i_uiNumberOfSteps wurde ein ungültiger Wert angelegt. |
Dem Eingang i_uiNumberOfSteps muss ein Wert größer oder gleich 3 und kleiner oder gleich 360 übergeben werden. |
Enumerationsname: |
Ok |
Enumerationswert: |
0 |
Beschreibung: |
OK |
Die Extremwerte wurden erfolgreich berechnet.
Enumerationsname: |
ProfileAlreadyInUse |
Enumerationswert: |
116 |
Beschreibung: |
Das Profil wird bereits verwendet. |
Problem |
Ursache |
Lösung |
---|---|---|
- |
Das Bewegungsprofil wird bereits verwendet. |
Überprüfen Sie die Bewegungsdaten. |
Enumerationsname: |
ProfileMemoryFull |
Enumerationswert: |
127 |
Beschreibung: |
Der Speicher für Tabellen aus Systemprofilen ist voll. |
Problem |
Ursache |
Lösung |
---|---|---|
- |
Der Speicher für Systemprofile ist voll. |
Löschen Sie nicht mehr benötigte Profile mit der Funktion SystemInterface.FC_ProfileDelete. |
Enumerationsname: |
RangeK |
Enumerationswert: |
129 |
Beschreibung: |
K ist außerhalb des gültigen Bereichs. |
Problem |
Ursache |
Lösung |
---|---|---|
- |
Am Eingang iq_stMultiCamData.astCamPoint[ ].lrK wurde ein ungültiger Wert angelegt. |
Prüfen Sie die Werte für iq_stMultiCamData.astCamPoint[ ].lrK. |
Enumerationsname: |
RangeM |
Enumerationswert: |
130 |
Beschreibung: |
M ist außerhalb des gültigen Bereichs. |
Problem |
Ursache |
Lösung |
---|---|---|
- |
Am Eingang iq_stMultiCam.astCamPoint[ ].lrM wurde ein ungültiger Wert angelegt. |
Prüfen Sie die Werte für iq_stMultiCamData.astCamPoint[ ].lrM. |
Enumerationsname: |
UnexpectedFeedback |
Enumerationswert: |
1 |
Beschreibung: |
Es ist ein unbeabsichtigter Fehler während der Ausführung aufgetreten. |
Problem |
Ursache |
Lösung |
---|---|---|
- |
Es ist ein Fehler in der internen Abarbeitung aufgetreten. |
Bitte informieren Sie das Supportteam über diesen Fehler. |
Enumerationsname: |
UnknownCamType |
Enumerationswert: |
126 |
Beschreibung: |
Der Kurventyp ist nicht bestimmbar. |
Problem |
Ursache |
Lösung |
---|---|---|
- |
Der Kurventyp eines Punktes iq_stMultiCamData.astCamPoint ist mit einem ungültigen Kurvenprofil belegt. |
Die Kurventypen etCamType aller verwendeten Kurvenpunkte am Eingang iq_stMultiCamData.astCamPoint müssen mit einem Element der Enumeration ET_CamType belegt werden. |
Enumerationsname: |
XEndRange |
Enumerationswert: |
192 |
Beschreibung: |
XEnd ist außerhalb des gültigen Bereichs. |
Problem |
Ursache |
Lösung |
---|---|---|
- |
Am Eingang i_lrXEnd wurde ein Wert außerhalb der Kurve angelegt. |
i_lrXEnd muss innerhalb der an iq_stMultiCam beschriebenen Kurve liegen. |
Enumerationsname: |
XFactorTooSmall |
Enumerationswert: |
122 |
Beschreibung: |
XFactor ist zu klein. |
Problem |
Ursache |
Lösung |
---|---|---|
- |
Zwei aufeinanderfolgende Kurvenpunkte iq_stMultiCam.astCamPoint[ ].lrX liegen weniger als 0,1 Einheiten auseinander. |
Überprüfen Sie die Definition der Kurve und entfernen Sie gegebenenfalls zu kurze Kurvenprofile. |
Enumerationsname: |
XStartRange |
Enumerationswert: |
119 |
Beschreibung: |
XStart ist außerhalb des gültigen Bereichs. |
Problem |
Ursache |
Lösung |
---|---|---|
- |
Am Eingang i_lrXStart wurde eine Zahl >= der Zahl an Eingang i_lrXEnd übergeben. |
Überprüfen Sie i_lrXStart und setzen Sie den Parameter auf einen Wert unter i_lrXEnd. Überprüfen Sie i_lrXEnd und setzen Sie den Parameter auf einen Wert über i_lrXStart. |
- |
Am Eingang i_lrXStart wurde eine Zahl übergeben, die kleiner ist als der Beginn der Kurve. |
Überprüfen Sie i_lrXStart und übertragen Sie den Wert in den Kurvenbereich. Überprüfen Sie die angewendete Kurve und definieren Sie sie so, dass i_lrXStart innerhalb der Kurve liegt. |
Enumerationsname: |
YFactorTooSmall |
Enumerationswert: |
124 |
Beschreibung: |
YFactor ist zu klein. |
Problem |
Ursache |
Lösung |
---|---|---|
- |
Ein Kurvenprofil, das eine Bewegung der Slaveachse erfordert, soll mit identischen Start- und Endpunkten gefahren werden. |
Am Eingang iq_stMultiCam.astCamPoint[i-1].etCamType wurde ein Kurvenprofil vom Typ ModiSinCom angelegt. Der Wert des Unterschieds zwischen dem Anfangspunkt iq_stMultiCam.astCamPoint[i-1].lrY und dem Endpunkt iq_stMultiCam.astCamPoint[i].lrY ist kleiner als Gc_lrZeroTolerance. Dieser Profiltyp erfordert eine Bewegung der Slavekurve. Am Eingang iq_stMultiCam.astCamPoint[i-1].etCamType wurde ein Kurvenprofil vom Typ ModAccTrCom angelegt. Der Wert des Unterschieds zwischen dem Anfangspunkt iq_stMultiCam.astCamPoint[i-1].lrY und dem Endpunkt iq_stMultiCam.astCamPoint[i].lrY ist kleiner als Gc_lrZeroTolerance. Dieser Profiltyp erfordert eine Bewegung der Slavekurve. Am Eingang iq_stMultiCam.astCamPoint[i-1].etCamType wurde ein Kurvenprofil vom Typ HarmoComb angelegt. Der Wert des Unterschieds zwischen dem Anfangspunkt iq_stMultiCam.astCamPoint[i-1].lrY und dem Endpunkt iq_stMultiCam.astCamPoint[i].lrY ist kleiner als Gc_lrZeroTolerance. Dieser Profiltyp erfordert eine Bewegung der Slavekurve. Am Eingang iq_stMultiCam.astCamPoint[i-1].etCamType wurde ein Kurvenprofil vom Typ SinStraightComb angelegt. Der Wert des Unterschieds zwischen dem Anfangspunkt iq_stMultiCam.astCamPoint[i-1].lrY und dem Endpunkt iq_stMultiCam.astCamPoint[i].lrY ist kleiner als Gc_lrZeroTolerance. Dieser Profiltyp erfordert eine Bewegung der Slavekurve. |