Achskompensationen (C5)

1.1 KorrekturwertlistenPAGEREF _Toc304465684 \h3

1.2 Kreuzkompensation 6

1.2.1 Beispiel einer Korrekturwertliste 7

1.3 Flächenkompensation 12

1.3.1 Beispiel einer Korrekturwertliste 13

1.3.2 Fehlermeldungen 14

1.4 Spindelsteigungsfehlerkompensation 19

1.4.1 Beispiel - Nicht äquidistante, doppelseitige SSFK 19

1.5 Temperaturkompensation 21

1.5.1 Allgemein 21

1.5.2 Parametrierung 24

1.5.3 Beispiel 25

1.6 Ein-/Ausschalten von Achskompensationen im NC-Programm 26

Mehr:

button Korrekturwertlisten

button Kreuzkompensation

button Flächenkompensation

button Spindelsteigungsfehlerkompensation

button Temperaturkompensation

button Ein-/Ausschalten von Achskompensationen im NC-Programm


Korrekturwertlisten

Ablage der Korrekturwerte

Die Daten für die Kompensationsverfahren

q Kreuzkompensation,

q Flächenkompensation und

q Spindelsteigungsfehlerkompensation

werden für jede Achse in s.g. Korrekturwertlisten abgelegt, die bei Hochlauf der Steuerung eingelesen werden bzw. zu einem späteren Zeitpunkt aktualisiert werden können.

Es ist möglich, alle Kompensationsverfahren (Kreuz-, Flächen-, Spindelsteigungsfehler- und Temperaturkompensation) für eine Achse gleichzeitig zu aktivieren.

Bereitstellen der
Korrekturwertliste

Um die Korrekturtabelle in der Steuerung bekannt zu machen müssen in der Hochlaufbeschreibung [STUP] folgende Einträge vorhanden sein:

Variablenname | Typ | Bedeutung
zahl_kw | UNS16 | Anzahl der Korrekturwertlisten
achs_kw[i] | String | Name des Datenfiles
achs_kw_log_ax_nr[i] | UNS16 | Logische Achsnummer der Achse, für die die Korrekturwertliste gültig sein soll.

mit i als Listenindex.

Wenn die Korrekturwertliste durch den TwinCAT Systemmanager konfiguriert wird, werden diese Einträge in der Hochlaufbeschreibung automatisch belegt.

Beispiel

Auszug aus Hochlaufliste hochlauf.lis:

:

zahl_kw 3

#

achs_kw_log_ax_nr[0] 1

achs_kw[0] tc_...\achskw1.lis

#

achs_kw_log_ax_nr[1] 2

achs_kw[1] tc_...\achskw2.lis

#

achs_kw_log_ax_nr[2] 6

achs_kw[2] tc_...\achskw6.lis

:

Aufbau der
Korrekturwertliste

Die Korrekturwertliste besteht aus einem Listenkopf, in den allgemeine Daten eingetragen werden, sowie dem Listenrumpf, in dem die Korrekturalgorithmen parametriert sind und die eigentlichen Korrekturtabellen enthalten sind.

Listenkopf

Der Listenkopf ist in der Liste durch die Strukturvariable kopf gekennzeichnet. Sie enthält die folgenden Elemente:

Variablenname | Typ | Bedeutung
kopf.achs_nr | UNS16 | Logische Achsnummer der Korrekturwertliste
kopf.log_achs_name | String | Achsname der Achse, wird nur für Diagnosezwecke verwendet

Wenn die Korrekturwertliste durch den TwinCAT Systemmanager konfiguriert wird, werden diese Einträge in der Korrekturwertliste automatisch belegt.

Listenrumpf

Der Listenrumpf beinhaltet allgemeine Daten sowie die Korrekturtabellen. Die Einträge des Listenrumpfes sind durch die Strukturvariable kw gekennzeichnet. Sie enthält für die jeweiligen Kompensationsverfahren folgende Substrukturen:

Variablenname | Bedeutung
kw.crosscomp | Datenstruktur für die Kreuzkompensation
kw.crosscomp2 | Datenstruktur für die Flächenkompensation (2-dimensionale Kreuzkompensation)
kw.ssfk | Datenstruktur für die Spindelsteigungsfehlerkompensation

Aktualisieren der
Korrekturtabelle

Die Korrekturtabelle kann bei laufender Steuerung aktualisiert werden, sofern die Bedingungen für die Wirksamkeit einer Kompensation erfüllt sind.

Nach Hochlauf bzw. Aktualisierung oder Neuinitialisierung einer Achskompensation muß der NC-Kanal bzgl. Achspositionen synchronisiert werden.

Die anschließende Beauftragung eines schnellen Programmstarts oder ein Achstausch ohne Anforderung von Achspositionen ("FAST") ist nicht erlaubt.


Kreuzkompensation

Korrekturverfahren

Die Kreuzkompensation (auch Durchhangkompensation genannt) ermöglicht die Korrektur einer Achsposition in Abhängigkeit der Sollposition einer anderen Achse.

Die Achse, bei der die Korrektur wirksam wird, heißt Slaveachse. Die Achse, deren Sollposition den Korrekturwert beeinflusst, heißt Masterachse.

Eine Masterachse kann auch die Slaveachse einer anderen Masterachse sein.

Die Daten der Kreuzkompensation werden in der Korrekturwertliste der Slaveachse angegeben.

Abbildung 1-1: Anwendungsbeispiel für die Kreuzkompensation
(Y: Master, Z: Slave).

Eigenschaften

Eine Master-Achse besitzt eine oder mehrere Slave-Achsen.

Eine Slave-Achse besitzt genau eine Master-Achse.

Slave-Achsen können auch ein Gantryverbund sein.

Für jeden Stützpunkt kann ein Korrekturwert vorgegeben werden.

Zwischen den Stützpunkten wird linear interpoliert.

Die Kreuzkompensation ist für ±10Volt-Antriebe, für Simulationsantriebe mit relativem Meßsystem sowie für SERCOS-Antriebe verfügbar.

Die Korrekturen sind nur in den direkt auf den Antrieb ausgegebenen Positionen einzusehen (nicht in den normalen Anzeigedaten), da die Kompensation ausserhalb der normalen Berechnung erfolgt.

Wirksamkeit

Die Kreuzkompensation ist nur dann wirksam, wenn alle nachfolgenden Bedingungen erfüllt sind:

q Die Funktion wurde für die Slaveachse aktiviert.

q Die Korrekturwerttabelle wurde bereitgestellt.

q Master- und Slaveachsen sind Linearachsen. Ab der CNC-Version v263.1504 kann die Kreuzkompensation auch für rotatorische Achsen oder Spindeln verwendet werden.

q Die Masterachse wurde referenziert. Eine Referenzierung der Slaveachse ist nicht erforderlich.

Aktivierung

Die Aktivierung der Kreuzkompensation erfolgt im Achsmaschinendatensatz [AXIS] der Slaveachse über P-AXIS-00047:

Variablenname | Typ | Bedeutung
lr_param.crosscomp | BOOLEAN | 0: keine Kreuzkompensation 1: Kreuzkompensation aktiv

Beispiel

Auszug aus einer Achsparameterliste:

:

lr_param.crosscomp 1

:

Die Kreuzkompensation kann auch bei einem Gantry-Achsverbund eingesetzt werden. Hierbei wird in jeder Achse des Gantryverbundes (Slave der Kreuzkompensation) eine individuelle Korrekturwerttabelle angegeben.

Diese Korrekturwerttabellen können hierdurch für jede Gantryachse unterschiedlich eingestellt werden.

Ein-/Auskoppeln | Die Kreuzkompensation (EIN, falls: Master ist referenziert und Kompensation aktiviert) kann jederzeit bei stehender Slaveachse ein- bzw. ausgekoppelt werden. Dabei werden die angezeigten Sollpositionen der Slaveachse mit den Korrekturwerten verrechnet.
Filter | Beim Referenzieren der Masterachse können sich im Korrekturwertverlauf bei bewegter Slaveachse Unstetigkeiten ergeben. Diese können über einen sin2-Filter geglättet werden. Die Ordnung des Filters und damit seine Aktivierung wird über den Parameter P-COMP-00026 (n_cycles) geschaltet.

Verwaltungsdaten der Kreuzkompen-sationstabelle

Die allgemeinen Daten des Listenrumpfes werden unter der Struktur kw.crosscomp.* eingetragen. Sie enthält folgende Elemente:

Elemente der
Verwaltungsdaten

Variablenname | Typ | Bedeutung
unit | SGN32 | Einheit der Längenangaben: 0: Encoder-Inkremente 1: Metrisch (in 0,1 µm)
last_index | SGN32 | Letzter gültiger Index in der Tabelle der Slaveachse (Maximal 1000 Werte). Die Tabelle beginnt immer mit Index 0
master_ax_nr | UNS16 | Logische Achsnummer der Masterachse, deren Sollposition als Eingangsgrösse der Kompensationstabelle dient.
n_cycles | UNS16 | Anzahl der Zyklen des sin2-Filters.

Korrekturwerte der Kreuzkompensation

Für jeden Stützpunkt wird in der Tabelle kw.crosscomp.table[i].* der entsprechende Korrekturwert der Slaveachse eingetragen. Die Kompensationstabelle gilt in positiver und in negativer Bewegungsrichtung.

Korrekturwerttabelle

Variablenname | Typ | Bedeutung
table[i].setpoint | SGN32 | Stützpunkt der Masterachse bei dem die Slaveachse korrigiert werden muß.
table[i].correction | SGN32 | Relativer Korrekturwert für die Slaveachse am Stützpunkt i

Besonderheit rotatorische Masterachse

Ab der CNC-Version v263.1504 kann die Kreuzkompensation auch für rotatorische Achsen oder Spindeln verwendet werden. Für diese Achstypen wird im Lageregler eine Modulorechnung der Achsposition durchgeführt.

Falls die Masterachse der Kreuzkompensation eine Moduloachse ist, findet im Moduloübergang der Achsposition der Masterachse auch ein Moduloübergang in der Korrekturtabelle statt. Damit an dieser Stelle im Korrekturwertverlauf der Slaveachse kein Sprung auftritt, muss in der Korrekturtabelle am Moduloübergang der gleiche Korrekturwert angegeben werden.

Mehr:

button Beispiel einer Korrekturwertliste


Beispiel einer Korrekturwertliste

# ****************************************

# Achskompensationsdaten Z-Achse

# ****************************************

kopf.achs_nr 3

kopf.log_achs_name Z

kw.crosscomp.last_index 99 /*Last valid index of the table*/

kw.crosscomp.master_ax_nr 1 /*Log. ax. number of the master axis*/

kw.crosscomp.unit 1 /*0:Incr. 1:Metric in 0.1 µm*/

kw.crosscomp.n_cycles 20

#

kw.crosscomp.table[0].setpoint 10735

kw.crosscomp.table[0].correction 3

kw.crosscomp.table[1].setpoint 11523

kw.crosscomp.table[1].correction 5

:

:

kw.crosscomp.table[99].setpoint 10000000 /*at 1000 mm of axis 3*/

kw.crosscomp.table[99].correction 1000 /*corr. of 0,1 mm for axis 1*/


Flächenkompensation

Korrekturverfahren

Die Flächenkompensation ermöglicht die Korrektur einer Achsposition in Abhängigkeit der Istpositionen von zwei Achsen.

Die Achse, bei der die Korrektur wirksam wird, heißt Slaveachse. Die beiden Achsen, deren Istpositionen den Korrekturwert beeinflussen, heißen Masterachsen.

Eine der Masterachsen kann auch die Slaveachse selbst sein.

Die Daten der Flächenkompensation werden in der Korrekturwertliste der Slaveachse angegeben.

Abbildung 1-2: Berechnung des Korrekturwerts aus den Istpositionen der Masterachsen

Eigenschaften

Die beiden Masterachsen bilden ein zweiachsiges Koordinatensystem, im einfachsten Fall ist es die X-Y-Ebene (Masterachse 1 = X-Achse, Masterachse 2 = Y-Achse).

Dieses Koordinatensystem ist wie ein Schachbrett in Quadrate aufgeteilt.

Die Kantenlänge der Quadrate ist parametrierbar.

Die Ecken der Quadrate bilden die Stützpunkte der Tabelle (Abbildung 1-3)

Für jeden Stützpunkt kann ein Korrekturwert vorgegeben werden.

Zwischen den Stützpunkten wird linear interpoliert (Abbildung 1-4).

Außerhalb der Tabelle bleiben die Korrekturwerte am Tabellenrand wirksam.

Abbildung 1-3: Vorgabe der Korrekturwerte an den Stützpunkten

Abbildung 1-4: Linearinterpolation zwischen den 4 Stützpunkten eines Quadrats

Wirksamkeit

Die Flächenkompensation ist nur dann wirksam, wenn alle nachfolgenden Bedingungen erfüllt sind:

q Die Funktion wurde für die Slaveachse aktiviert.

q Die Korrekturwerttabelle wurde bereitgestellt.

q Master- und Slaveachsen sind Linearachsen. Ab der CNC-Version v263.1504 kann die Flächenkompensation auch für rotatorische Achsen oder Spindeln eingesetzt werden.

q Master- und Slaveachsen besitzen ein Absolutmeßsystem oder wurden referenziert.

Aktivierung

Die Aktivierung der Flächenkompensation erfolgt im Achsmaschinendatensatz [AXIS] der Slaveachse über P-AXIS-00174:

Variablenname | Typ | Bedeutung
lr_param.crosscomp2 | BOOLEAN | 0: keine Flächenkompensation 1: Flächenkompensation aktiv

Beispiel

Auszug aus einer Achsparameterliste:

:

lr_param.crosscomp2 1

:

Ein-/Auskoppeln

Die Flächenkompensation (EIN, falls: Masterachsen sind referenziert und Kompensation aktiviert) kann jederzeit bei stehender Slaveachse ein- bzw. ausgekoppelt werden. Dabei werden die angezeigten Sollpositionen der Slaveachse mit den Korrekturwerten verrechnet.

Filter

Beim Referenzieren der Masterachsen können sich im Korrekturwertverlauf bei bewegter Slaveachse Unstetigkeiten ergeben. Diese können über einen sin2-Filter geglättet werden. Die Ordnung des Filters und damit seine Aktivierung wird über den Parameter P-COMP-00027 (n_cycles) geschaltet.

Besonderheit für rotatorische Masterachsen

Ab der CNC-Version v263.1504 kann die Flächenkompensation auch für rotatorische Achsen oder Spindeln verwendet werden. Für diese Achstypen wird im Lageregler eine Modulorechnung der Achsposition durchgeführt.

Falls eine Masterachse der Flächenkompensation eine Moduloachse ist, findet im Moduloübergang der Achsposition dieser Masterachse auch ein Moduloübergang in der Korrekturtabelle statt. Damit an dieser Stelle im Korrekturwertverlauf der Slaveachse kein Sprung auftritt, muss in der Korrekturtabelle am Moduloübergang der gleiche Korrekturwert angegeben werden.

Verwaltungsdaten der Flächenkompen-sationstabelle

In den allgemeinen Daten des Listenrumpfes werden die beteiligten Achsen, die Grenzen des Kompensationsbereiches usw. parametriert. Die allgemeinen Daten werden unter der Struktur kw.crosscomp2.* eingetragen. Sie enthält folgende Elemente:

Elemente der
Verwaltungsdaten

Variablenname | Typ | Bedeutung
unit | BOOLEAN | Einheit der Längenangaben: 0: Encoder-Inkremente 1: Metrisch (in 0,1 µm)
interval | UNS32 | Schrittweite zwischen zwei Stützpunkten in 0,1 µm (unit=1), bzw. Inkremente (unit=0)
last_index_master1 | SGN32 | Letzter gültiger Index in der Tabelle für Masterachse 1 (Maximalwert 100). Die Tabelle beginnt immer mit Index 0
last_index_master2 | SGN32 | Letzter gültiger Index in der Tabelle für Masterachse 2 (Maximalwert 100). Die Tabelle beginnt immer mit Index 0
start_position_master1 | SGN32 | Position der Masterachse 1, bei der die Korrekturtabelle beginnt
start_position_master2 | SGN32 | Position der Masterachse 2, bei der die Korrekturtabelle beginnt
master1_ax_nr | UNS16 | Log. Achsnummer der Masterachse 1
master2_ax_nr | UNS16 | Log. Achsnummer der Masterachse 2
n_cycles | UNS16 | Anzahl der Zyklen des sin2-Filters.

Korrekturwerte der Flächenkompensation

Für jeden Stützpunkt wird in der Tabelle kw.crosscomp2.table[j][i].* der entsprechende Korrekturwert der Slaveachse eingetragen.

Korrekturwerttabelle

Variablenname | Typ | Bedeutung
table[j][i].correction | SGN32 | Korrekturwert der Slave-achse am Stützpunkt [j][i], s. Abbildung 1-5

Bei der Indizierung der Stützpunkte in der Korrekturwerttabelle bezieht sich immer der erste Index j auf die zweite Masterachse (siehe Bild unten).

Index j -> Masterachse 2

Index i -> Masterachse 1

Fehler! Es ist nicht möglich, durch die Bearbeitung von Feldfunktionen Objekte zu erstellen.

Abbildung 1-5: Parameter der Korrekturwertliste

Mehr:

button Beispiel einer Korrekturwertliste

button Fehlermeldungen


Beispiel einer Korrekturwertliste

# ****************************************

# Achskompensationsdaten Z-Achse

# ****************************************

kopf.achs_nr 1

kopf.log_achs_name X

kw.crosscomp2.interval 100000 /* 10 mm */

kw.crosscomp2.last_index_master1 100

kw.crosscomp2.last_index_master2 100

kw.crosscomp2.start_position_master1 -400000 /* -40 mm */

kw.crosscomp2.start_position_master2 -700000 /* -70 mm */

kw.crosscomp2.unit 1 /* 0,1 my */

kw.crosscomp2.master1_ax_nr 1

kw.crosscomp2.master2_ax_nr 2

kw.crosscomp2.n_cycles 20

kw.crosscomp2.table[ 0][ 0].correction -3

kw.crosscomp2.table[ 0][ 1].correction -1

kw.crosscomp2.table[ 0][ 2].correction 4

kw.crosscomp2.table[ 0][ 3].correction 9

kw.crosscomp2.table[ 0][ 4].correction 13

kw.crosscomp2.table[ 0][ 5].correction 17

kw.crosscomp2.table[ 0][ 6].correction 42

kw.crosscomp2.table[ 0][ 7].correction 53

kw.crosscomp2.table[ 0][ 8].correction 33

kw.crosscomp2.table[ 0][ 9].correction 42

kw.crosscomp2.table[ 0][ 10].correction 19

kw.crosscomp2.table[ 0][ 11].correction 7

kw.crosscomp2.table[ 0][ 12].correction 2

kw.crosscomp2.table[ 0][ 13].correction 0

kw.crosscomp2.table[ 0][ 14].correction 5

kw.crosscomp2.table[ 0][ 15].correction -3

kw.crosscomp2.table[ 0][ 16].correction -7

kw.crosscomp2.table[ 0][ 17].correction -11

kw.crosscomp2.table[ 0][ 18].correction -13

kw.crosscomp2.table[ 0][ 19].correction -22

kw.crosscomp2.table[ 0][ 20].correction -34

kw.crosscomp2.table[ 0][ 21].correction -29

kw.crosscomp2.table[ 0][ 22].correction -99

...

kw.crosscomp2.table[100][ 71].correction 45

kw.crosscomp2.table[100][ 72].correction 68

kw.crosscomp2.table[100][ 73].correction 71

kw.crosscomp2.table[100][ 74].correction 90

kw.crosscomp2.table[100][ 75].correction 111

kw.crosscomp2.table[100][ 76].correction 123

kw.crosscomp2.table[100][ 77].correction 134

kw.crosscomp2.table[100][ 78].correction 147

kw.crosscomp2.table[100][ 79].correction 156

kw.crosscomp2.table[100][ 80].correction 176

kw.crosscomp2.table[100][ 81].correction 167

kw.crosscomp2.table[100][ 82].correction 148

kw.crosscomp2.table[100][ 83].correction 132

kw.crosscomp2.table[100][ 84].correction 123

kw.crosscomp2.table[100][ 85].correction 111

kw.crosscomp2.table[100][ 86].correction 101

kw.crosscomp2.table[100][ 87].correction 97

kw.crosscomp2.table[100][ 88].correction 88

kw.crosscomp2.table[100][ 89].correction 83

kw.crosscomp2.table[100][ 90].correction 82

kw.crosscomp2.table[100][ 91].correction 77

kw.crosscomp2.table[100][ 92].correction 68

kw.crosscomp2.table[100][ 93].correction 63

kw.crosscomp2.table[100][ 94].correction 61

kw.crosscomp2.table[100][ 95].correction 59

kw.crosscomp2.table[100][ 96].correction 57

kw.crosscomp2.table[100][ 97].correction 52

kw.crosscomp2.table[100][ 98].correction 56

kw.crosscomp2.table[100][ 99].correction 58

kw.crosscomp2.table[100][100].correction 49

#

Ende


Fehlermeldungen

Fehler in der Konfiguration der Flächenkompensation führen zur Deaktivierung der Funktion für die betroffene Achse und zur Ausgabe einer Fehlermeldung (Warning).

Die dabei auftretenden Fehlermeldungen werden im Folgenden beschrieben.

Fehlernummer | 70182
Fehlertext | Ungueltige logische Achsnummer fuer Flaechenkompensation
Ursache | Die in der Korrekturwertliste angegebene logische Achsnummer einer Masterachse gibt es nicht.
Parameter | Wert_1: die logische Achsnummer der Korrekturwertliste (Slaveachse) Wert_2: logische Achsnummer der Masterachse 1 Wert_3: logische Achsnummer der Masterachse 2
Behebung | In der Korrekturwertliste die korrekten Achsnummern der Masterachsen eintragen.

Fehlernummer | 70183
Fehlertext | Korrekturwerttable fuer Flaechenkompensation nicht vorhanden
Ursache | Eine Achsparameterliste enthält den Eintrag zur Aktivierung der Flächenkompensation, es wurde aber keine Korrekturwertliste für diese Achse geladen.
Parameter | Wert_1: die logische Achsnummer der Korrekturwertliste (Slaveachse)
Behebung | In der Hochlaufliste die fehlende Korrekturwerttabelle eintragen.

Fehlernummer | 70184
Fehlertext | Ungueltiger Achstyp einer Masterachse fuer Flaechenkompensation
Ursache | Eine Masterachse hat nicht den erforderlichen Achstyp Linear.
Parameter | Wert_1: die logische Achsnummer Masterachse Wert_2: der erwartete Wert für Achstyp Linear (1) Wert_3: der fehlerhafte Wert für Achstyp Linear
Behebung | Die Masterachse als Linearachse betreiben, d.h. Einstellen des Parameters achs_typ=1 in der Achsparameterliste der Masterachse.

Fehlernummer | 70185
Fehlertext | Ungueltiger Achstyp der Slaveachse fuer Flaechenkompensation
Ursache | Eine Slaveachse hat nicht den erforderlichen Achstyp Linear.
Parameter | Wert_1: die logische Achsnummer Slaveachse Wert_2: der erwartete Wert für Achstyp Linear (1) Wert_3: der fehlerhafte Wert für Achstyp Linear
Behebung | Die Slaveachse als Linearachse betreiben, d.h. Einstellen des Parameters achs_typ=1 in der Achsparameterliste der Slaveachse.


Spindelsteigungsfehlerkompensation

Korrekturverfahren

Korrekturtabelle

Beidseitige/Einseitige SSFK

Bei der Spindelsteigungsfehlerkompensation (nachfolgend als SSFK bezeichnet) handelt es sich um eine axiale Korrektur. Der Lagesollwert der kompensierten Achse wird im Lagereglertakt um einen Korrekturwert verändert um zum Beispiel Spindelsteigungsfehler zu kompensieren. Bei den gemessenen Lageistwerten wird diese Korrektur wieder herausgerechnet, so dass die durchgeführte Korrektur nicht in den Anzeigedaten der Steuerung in Erscheinung tritt.

Die Korrekturwerte werden dabei einer Tabelle entnommen, in welcher der Verlauf der Korrekturkurve in Abhängigkeit von der Achsposition abgelegt ist. Die in der Tabelle eingetragenen Achspositionen werden als Stützstellen, die zugehörigen Werte der Korrekturkurve als Korrekturwerte bezeichnet. Für Achspositionen die zwischen Stützstellen liegen, wird der Korrekturwert linear interpoliert. Die Tabelle mit Korrekturwerten wird im weiteren Korrekturtabelle bezeichnet.

Es ist möglich für jede Bewegungsrichtung einer Achse eine separate Korrekturtabelle anzugeben; diese Art der Kompensation wird als doppelseitige Kompensation bezeichnet. Mit der doppelseitigen Spindelsteigungsfehlerkompensation kann auch eine eventuell vorhandene Lose kompensiert werden; eine zusätzliche Losekompensation s. [FCT-A5] ist daher nicht notwendig. Wird eine Tabelle für beide Bewegungsrichtungen einer Achse verwendet, spricht man von einseitiger Kompensation.

Die Korrekturtabellen werden achsspezifisch in einer Datei (Korrekturwertliste) abgelegt.

Die Dynamik der Achse wird bei der Ausgabe der Korrekturwerte nicht berücksichtigt.

Die folgende Grafik zeigt beispielhaft eine Korrekturwertkurve. Die Bedeutung der in der Grafik verwendeten Parameter wird später erläutert.

Abbildung 1-6: Korrekturtabelle mit äquidistantem Stützpunktraster und einseitiger Kompensation

Eigenschaften

Diese Funktionalität weist folgende Eigenschaften auf:

q Bei der Verwendung der doppelseitigen Kompensation müssen für beide Wertetabellen dieselben Stützpunkt-Positionen verwendet werden.

q Es ist möglich eine Korrekturtabelle nur für einen Teilverfahrbereich einer Achse zu definieren. Für Achspositionen außerhalb der Korrekturtabelle wird der Wert am jeweiligen Ende der Tabelle weiterverwendet.

q Am Referenzpunkt kann ein beliebiger Korrekturwert ungleich Null vorhanden sein.

q Der Abstand der Stützpunkte in den Wertetabellen kann entweder äquidistant oder nicht äquidistant gewählt werden.

Wirksamkeit

Die SSFK ist unter den folgenden Voraussetzungen wirksam.

q Die SSFK wurde für die Achse aktiviert.

q Für die Achse muss der Steuerung eine Korrekturtabelle bereitgestellt werden.

q Die Achse wurde referenziert oder verwendet ein absolutes Meßsystem.

Aktivierung

Die Aktivierung der SSFK erfolgt im Achsmaschinendatensatz [AXIS] der entsprechenden Achse über P-AXIS-00175:

Variablenname | Typ | Bedeutung
lr_param.ssfk | BOOLEAN | 0: keine SSFK 1: SSFK aktiv

Beispiel

Auszug aus einer Achsparameterliste:

:

lr_param.ssfk 1

:

Verwaltungsdaten der SSFK-Tabelle

In den allgemeinen Daten des Listenrumpfes wird die Arbeitsweise der Kompensation wie z. B. einseitig oder doppelseitig, parametriert. Die allgemeinen Daten werden unter der Struktur kw.ssfk.* eingetragen.Sie enthält folgende Elemente:

Elemente der
Verwaltungsdaten

Variablenname | Typ | Bedeutung
unit | BOOLEAN | Einheit der Längenangaben: 0: Encoder-Inkremente 1: Metrisch (in 0,1 µm)
interval | SGN32 | Abstand der Stützpunkte der Korrekturtabelle bei Verwendung von äquidistanten Stützpunkten. Ist dieser Parameter = 0 so muss die Position jedes Stützpunktes separat angegeben werden.
kw_startpos | SGN32 | Startposition der Korrekturtabelle
kw_nr_max | SGN32 | Anzahl der Einträge der Korrekturtabelle
bilateral | BOOLEAN | 0: Einseitige Kompensation 1: Doppelseitige Kompensation
modulo | BOOLEAN | Die Kompensation erfolgt für eine Moduloachse

Korrekturwerte der SSFK

Die Angabe der Korrekturwerte erfolgt in der Tabelle kw.ssfk.table[i].*.

Der Feldindex i kann dabei die Werte 0 bis kw.ssfk.kw_nr_max  1 annehmen.

Die Angabe der Korrekturwerte erfolgt als absoluter Positionsfehler in der in kw.ssfk.unit angegebenen Einheit (metrisch in 0,1 µm oder inkremental).

Mit: i-ter Korrekturwert

i-ter Sollwert (Stützstelle der Korrekturtabelle)

i-ter Istwert (mit Referenzmesseinrichtung gemessen)

Die Tabelle enthält folgende Elemente:

Korrekturwerttabelle

Variablenname | Typ | Bedeutung
pos | SGN16 | Korrekturwert bei Bewegung in positiver Richtung (doppelseitige Kompensation) bzw. Korrekturwert bei Verwendung der einseitigen Kompensation.
neg | SGN16 | Korrekturwert bei Bewegung in negativer Richtung, wird bei Verwendung der einsitigen SSFK nicht verwendet.
setpoint | SGN32 | Stützstelle der Achse (programmierter Wert). Nur bei nicht äquidistanten Stützstellen.

Bei Verwendung der doppelseitigen Kompensation sind im Eintrag pos die Positionsfehler bei Bewegung in positiver Richtung einzutragen. Die Angabe der Stützstellen ist für beide Richtungen gültig.

Bei Verwendung der einseitigen Kompensation sind die Positionsfehler ebenfalls im Eintrag pos einzutragen, der Eintrag neg entfällt.

Im Unterschied zur Angabe individueller Stützstellen, für die Korrekturtabelle kann auch eine feste Rasterung verwendet werden. Die Angabe der Stützstellen in der Variablen setpoint kann in diesem Falle entfallen.

Zur Verwendung eines festen Stützstellenrasters ist in der Variablen kw.ssfk.interval die Schrittweite des Stützstellenrasters anzugeben. Die Stützstellen werden dann intern aus der Startposition (kw.ssfk. kw_startpos) und der Schrittweite berechnet.

Besonderheiten für Moduloachsen

Wird eine Korrekturtabelle für eine Modulo-Achse konfiguriert (kw.ssfk.modulo = 1) so findet beim Moduloübergang der Achsposition auch ein Moduloübergang in der Korrekturtabelle statt.

Dies kann dazu verwendet werden, um z.B. Positionsfehler, die durch Getriebe verursacht werden, zu kompensieren.

Dabei sind folgende Besonderheiten zu beachten:

q Die Positionswerte des ersten und des letzten Eintrags in der Korrekturliste müssen gleich sein.

q Die Anzahl der Korrekturwerte ist auch hier gleich der Anzahl der Einträge in der Korrekturwerttabelle.

Mehr:

button Beispiel - Nicht äquidistante, doppelseitige SSFK


Beispiel - Nicht äquidistante, doppelseitige SSFK

Das folgende Bild zeigt eine Korrekturwertliste mit den Eigenschaften:

q Nicht äquidistante Stützstellen (kw.ssfk.interval = 0)

q Doppelseitige Korrekturtabelle (kw.ssfk.bilateral = 1)

q Positionsangaben metrisch (kw.ssfk.unit = 1)

q Korrekturwerttabelle mit 140 Einträgen (kw.ssfk.kw_nr_max = 140). Der Index der Positions- und Sollwerteinträge geht von 0 bis 139.

q Bei der dritten vermessenen Position (table[2]) wurden die folgenden Werte gemessen:

Programmierte Position i-ter Sollwert | Messwert pos i-ter Istwert (pos Richtung) | Messwert neg i-ter Istwert (neg Richtung) | errechneter Korrekturwert pos | Errechneter Korrekturwert neg
19866,7 μm | 19856,5 μm | 19874,7 μm | -102 x 0,1 μm | 80 x 0,1 μm

kopf.achs_nr 2

kopf.log_achs_name Y-ACHSE

kw.ssfk.interval 0

kw.ssfk.kw_startpos -200000

kw.ssfk.kw_nr_max 140

kw.ssfk.unit 1

kw.ssfk.bilateral 1

kw.ssfk.table[0].setpoint -200000

kw.ssfk.table[1].setpoint -199306

kw.ssfk.table[2].setpoint -198667

kw.ssfk.table[3].setpoint -198001

...

kw.ssfk.table[138].setpoint 334488

kw.ssfk.table[139].setpoint 335591

kw.ssfk.table[0].pos 0

kw.ssfk.table[1].pos 24

kw.ssfk.table[2].pos -102

...

kw.ssfk.table[139].pos -55

kw.ssfk.table[0].neg 0

kw.ssfk.table[1].neg 67

kw.ssfk.table[2].neg 80

...

kw.ssfk.table[139].neg 114


Temperaturkompensation

Mehr:

button Allgemein

button Parametrierung

button Beispiel


Allgemein

Verformung

Temperaturänderungen bewirken Ausdehnungen / Verkürzungen von Maschinenteilen.

Auswirkung

Durch die Verformungen ergeben sich Verschiebungen der Achspositionen, welche nicht durch das angebrachte Lagemesssystem der Maschine erkannt werden und zu Ungenauigkeiten des gefertigten Werkstücks führen.

Abbildung 1-7: Temperaturabhängige Verfälschung der Achsposition

Kompensation

Die Temperaturkompensation stellt eine Funktionalität zur Verfügung um abhängig von der aktuellen Temperatur und der Achsposition die Führungsgrösse der Achse zu korrigieren.

Die Korrekturwerte werden entsprechend folgender Beziehung ermittelt:

mit:

Aktuelle Position der Achse

Aktuelle Referenztemperatur

Bezugsposition der Achse

temperaturabhängige Abweichung an der Be-zugsposition

temperaturabhängiges Verhältnis von Abweichung zum Abstand zur Bezugsposition

Abbildung 1-8: Parameter der Temperaturkompensation für eine Temperatur T


Parametrierung

Aktivieren

Die Aktivierung der Temperaturkompensation erfolgt im Achsmaschinendatensatz [AXIS] der entsprechenden Achse über P-AXIS-00271:

kopf.achs_nr 1

#

# temperature compensation on/off

lr_param.temp_comp 1

Bei TwinCAT kann die Kompensation auch über einen ADS-Schreibzugriff über die Task GEO (Port 551) aktiviert werden.

TEMPC::is_active IGrp = 0x20300, IOffs = 0x10041

Wirksamkeit

Die Temperaturkompensation ist wirksam, wenn:

q sie für die Achse aktiviert wurde und

q die Achse referenziert ist.

Referenzmessung

Um die Parameter der Temperaturkompensation vorgeben zu können, muss zunächst eine Referenzmessung mit einem externen Lagemesssystem gemacht werden. Hierbei werden bei verschiedenen Temperaturen die Abweichungen der Achspositionen zwischen internem und externem Messsystem ermittelt.

Abbildung 1-9: Referenzmessung bei unterschiedlichen Temperaturen

Bestimmung der
Parameter

Die Parameter Bezugsposition, Offset und Koeffizient können den Messkurven entnommen werden. Hieraus können die Werte bei einer gegebenen Temperatur später eingestellt werden. Nichtgemessene Temperaturen können aus den gemessenen Temperaturverläufen inter- bzw. extrapoliert werden.

Wird als Bezugsposition der virtuelle Schnittpunkt der angenäherten linearen Kurven gewählt, so ist der Offset temperaturunabhängig. Für die unterschiedlichen Temperaturen muss in diesem Falle nur der Koeffizient neu eingestellt werden.

Einfluss der
Temperatur

Die einzelnen Parameter können durch die SPS in Abhängigkeit der aktuellen Temperatur eingestellt werden. Hierzu wird ein entsprechendes Temperatursignal (Sensor) an die SPS übertragen, woraus diese die Parameter ableitet.

Parameter ändern

Die einzelnen Parameter können über einen Download der Achsliste geändert werden.

kopf.achs_nr 1

#

# temperature compensation on/off

lr_param.temp_comp 1

# reference position

lr_param.temp_comp_position_0 100 [0.1µm]

# reference offset

lr_param.temp_comp_offset_0 40 [0.1µm]

lr_param.temp_comp_coefficient 4000 [µm/m]

#

Neben der Möglichkeit des Downloads existiert auch die Möglichkeit die Parameter über einen direkten ADS-Zugriff auf die Task GEO (Port 551) zu schreiben und zu lesen. Beispielhaft kann die erste Achse über folgenden Indexgroup, Indexoffset addressiert werden.

TEMPC::is_active IGrp = 0x20300, IOffs = 0x10041

TEMPC::coefficient IGrp = 0x20300, IOffs = 0x10043

TEMPC::offset_0 IGrp = 0x20300, IOffs = 0x10044

TEMPC::position_0 IGrp = 0x20300, IOffs = 0x10045

Abbildung 1-10: ADS-Zugriff auf Parameter der Temperaturkompensation via Browser

Überwachung

Ein-/Auskoppeln

Die Kompensationswerte werden für jeden Interpolationstakt neu berechnet. Überschreitet die Änderung pro Takt die vorgegebene maximale Achsbeschleunigung, so kann diese Änderung über mehre Takte gefiltert ausgegeben werden.

Hierzu kann die Taktanzahl des sin²-förmigen Filters in der Achliste eingestellt werden. Defaultmässig ist dieser auf einen Takt eingestellt.

kopf.achs_nr 1

#

# Taktzahl des sin²-Filters

lr_param.temp_comp_n_cycles 20

Abbildung 1-11: Auskoppeln der Korrekturwerte mit einen sin²-Filter über 20 Takte beim kurzfristigen Ausschalten der Temperaturkompensation

Anzeige der
Kompensation

Neben der Möglichkeit des Downloads existiert die Möglichkeit, Parameter über einen direkten ADS-Zugriff über die Taks GEO (Port 551) zu schreiben und zu lesen. Beispielhaft kann die erste Achse über folgende Indexgroup, Indexoffset addressiert werden.

TEMPC::is_active IGrp = 0x20300, IOffs = 0x10041

TEMPC::actual_offset IGrp = 0x20300, Ioffs = 0x10042

Anzeige der
Achsposition

Bei eingeschalteter Temperaturkompensation werden die normalen Soll- und Istpositionen der Achse unverändert angezeigt.

Die Korrekturen werden erst vor der Ausgabe auf den Antriebsbus ein-/ausgerechnet und können also bei den Positionswerten des Antriebsbus (dig_cmd_pos, dig_act_pos) eingesehen werden.


Beispiel

Initialisierung

Die Kompensation wird in der X-Achse durch folgende Einstellungen aktiviert.

lr_param.temp_comp 1

lr_param.temp_comp_position_0 100 [0.1µm]

lr_param.temp_comp_offset_0 40 [0.1µm]

lr_param.temp_comp_coefficient 4000 [µm/m]

lr_param.temp_comp_n_cycles 20

NC-Programm

Zum Test wurde folgendes NC-Programm verwendet:

N10: G90 G01 X0 F1000

G04 1

N10 X100

G04 1

N10 X80

G04 1

N10 X50

G04 1

N20 X-200

G04 1

$GOTO N10

M30

Abbildung 1-12: aufgezeichnete Korrekturwerte in Abhängigkeit der Achsposition.


Ein-/Ausschalten von Achskompensationen im NC-Programm

TwinCat CNC: ab V263.1501

Sonstige: ab V260

An/Abwahl im
NC-Programm

Neben der Möglichkeit über entsprechende Achsparameter können die verschiedenen Achskompensationen auch direkt im NC-Programm an- und abgewählt werden. In Anlehnung an die Syntax für Positionierachsen können hierbei in einem NC-Satz für mehrere Achsen verschiedene Achskompensationen gleichzeitig aktiviert bzw deaktiviert werden.

<Achsname> [ COMP [ [ON|OFF [ CROSS | PLANE | LEAD | TEMP ] ] | OFF_ALL] ]

<Achsname> Name der Achse

COMP Kennung für die An-/Abwahl von achsspezifischen Kompensationen. Muß immer als erstes Schlüsselwort programmiert sein.

ON Programmierte Kompensation(en) einschalten

OFF Programmierte Kompensation(en) ausschalten

CROSS Schlüsselwort für Kreuzkompensation

PLANE Schlüsselwort für Flächenkompensation

LEAD Schlüsselwort für Spindelsteigungsfehlerkompensation

TEMP Schlüsselwort für Temperaturkompensation

OFF_ALL Alle Kompensationen ausschalten. Dem Schlüsselwort dürfen keine weiteren Kompensationsbezeichner folgen.

Programmierbeispiele

N10 X[COMP OFF CROSS PLANE] Ausschalten von Kreuz-und Flaechenkompensation in der X-Achse

N50 X[COMP OFF CROSS] Y[COMP ON LEAD TEMP] Kompensationsprogrammierung mehrerer Achsen in einem NC-Satz

N100 Z[COMP OFF_ALL] Ausschalten aller Kompensationen in der Z-Achse