Direkte Eingabe von Messdaten
Die Messergebnisse der Linearachsen X, Y und Z (in mm) für jeweils eine Pose müssen eingetragen werden. Des Weiteren müssen die zugehörigen Winkel der Rotationsachsen angegeben werden. Im folgenden Beispiel wurde eine AB Tischkinematik in der Pose A=20 und B=0 Grad gemessen. Obwohl es im Beispiel keine C-Achse gibt, muss die C Stellung mit 0 übergeben werden.
Programmierbeispiel
Beispiel für die direkte Eingabe von gemessenen Daten
; Variablen definieren
#VAR
V.L.N = 6 ( Anzahl der gemessenen Punkte )
V.L.X[V.L.N] ( X-Koordinate der gemessenen Punkte )
V.L.Y[V.L.N] ( Y-Koordinate der gemessenen Punkte )
V.L.Z[V.L.N] ( Z-Koordinate der gemessenen Punkte )
V.L.RESULT_V[3] ( Array zum Speichern des Berechnungsergebnisses )
V.L.A = 20 ( Stellung der A-Achse )
V.L.B = 0 ( Stellung der B-Achse )
V.L.C = 0 ( Stellung der C-Achse )
#ENDVAR
; Liste der XYZ Koordinaten aller gemessenen Punkte dieser Pose, in mm
V.L.X[0] = 101.807 V.L.Y[0] = 273.174 V.L.Z[0] = 130.068
V.L.X[1] = 116.795 V.L.Y[1] = 258.750 V.L.Z[1] = 130.068
V.L.X[2] = 104.246 V.L.Y[2] = 244.524 V.L.Z[2] = 129.024
V.L.X[3] = 89.606 V.L.Y[3] = 257.804 V.L.Z[3] = 132.980
V.L.X[4] = 96.606 V.L.Y[4] = 269.804 V.L.Z[4] = 133.957
V.L.X[5] = 102.780 V.L.Y[5] = 264.366 V.L.Z[5] = 139.522
; Aufruf des Zyklus zur Berechnung des Kugelmittelpunkts
L CYCLE [NAME = "SysCalcSphere.ecy"]
; Hinzufuegen neuer Koordinaten zur Kinematikberechnung
L CYCLE [NAME = "SysCalibFitAddRecord.ecy" \
@P1 = V.L.RESULT_V[0] \
@P2 = V.L.RESULT_V[1] \
@P3 = V.L.RESULT_V[2] \
@P4 = V.L.A \
@P5 = V.L.B \
@P6 = V.L.C \
]
; ... Eingabe für alle Posen durchführen
Dieser Schritt muss für jede gemessene Pose durchgeführt werden. Danach kann der Berechnungsprozess aus dem gleichen NC-Programm wie die eingetragenen Werte gestartet werden.
Programmierbeispiel
Aufruf des Berechnungszyklus
V.P.MAX_PRECISION = 0.06 ( Genauigkeit )
V.P.LIST_FORMAT = 1 ( Listen Format fuer Ergebnis )
#ENDVAR
; Aufruf des Berechnungszyklus
L CYCLE [NAME = "SysCalibFit.ecy" \
@P1 = V.L.LIST \
@P2 = V.L.MAX_PRECISION \
]
; Aufruf des Zyklus zum Beenden
L CYCLE [NAME = "SysCalibFitFinalize.ecy"]