Mittelpunktskorrektursteuerung (G164/G165)
G164 Mittelpunktskorrektur aus (modal)
G165 Mittelpunktskorrektur ein (modal, Grundzustand)
Bei wirksamem G165 wird ein über I-, J- und K-Angabe programmierter Kreis so korrigiert, dass bei festgelegter Kreisrichtung (G02/G03), festgelegtem Startpunkt (Endpunkt des vorhergehenden Satzes) und festgelegtem Endpunkt (Koordinatenangabe im Kreissatz) ein Kreisbogen interpoliert werden kann. Eventuell wird dabei der mit I, J und K programmierte Mittelpunkt verschoben! Diese Verschiebung ist um so geringer, je exakter der genaue Mittelpunkt angegeben wurde.
Für die Abweichung von programmiertem zu korrigiertem Mittelpunkt werden zwei Grenzwerte [1]-5/-6 überwacht, bei deren Überschreitung eine Fehlermeldung abgesetzt wird:
mittelpkt_diff: Zulässige Abweichung in 10-4 mm
mittelpkt_faktor: Prozentuale Abweichung in 0,1 %
Es wird überprüft, ob die Mittelpunktverschiebung ∆m größer ist, als die absolute Größe "mittelpkt_diff"
∆m > mittelpkt_diff ?
und, ob die Mittelpunktverschiebung ∆m größer ist, als das Produkt von "mittelpkt_faktor/1000" und korrigiertem Radius "radius"
∆m > mittelpkt_faktor/1000 * radius ?
Die obere Grenze ist für ∆m also vom berechneten Radius linear abhängig. Es ergibt sich der in Abbildung 4-48 dargestellte Zusammenhang zwischen Mittelpunktsverschiebung ∆m und berechnetem Radius "radius".
Beispiel:
"mittelpkt_faktor" = 5 bedeutet, dass der Abstand zwischen den programmierten Mittelpunktkoordinaten und den korrigierten Mittelpunktkoordinaten maximal 0,5 % des korrigierten Kreisradius sein darf.

Die programmierten Mittelpunktkoordinaten müssen also in einem Umkreis um den korrigierten Kreismittelpunkt liegen. Der Radius des Umkreises entspricht der zulässigen Mittelpunktverschiebung ∆m, die durch die beiden Parameter "mittelpkt_diff" und "mittelpkt_faktor" eingestellt werden kann (Abbildung 4-49).

Verfahren zur Korrektur eines programmierten Kreismittelpunktes:
Ein Kreis, der im NC-Programm durch Startpunkt S, Endpunkt E und Mittelpunkt M festgelegt wird, ist geometrisch überbestimmt. Dieses Problem wird dadurch gelöst, dass die Kreismittelpunktskoordinaten und der Kreisradius mit dem im folgenden dargestellten Algorithmus korrigiert werden.
Es werden folgende zweidimensionale Vektoren benötigt:
- absoluter Endvektor (vende)
- relativer (zum Startvektor) Mittelpunktsvektor (rstart)
- absoluter Startvektor (vstart)
Das gewählte Verfahren beruht gemäß Abbildung 4-50 darauf, dass aus den beiden Vektoren, die jeweils vom Mittelpunkt zum Start- bzw. Endpunkt zeigen, betragsmäßig das arithmetische Mittel gebildet wird. Der neue Mittelpunkt ergibt sich dann aus jeweils zwei neu zu bestimmenden Vektoren dieser gemittelten Länge.
Geometrisch bedeutet das, dass der programmierte Mittelpunkt auf einer elliptischen Bahn in den Schnittpunkt der kleinen Ellipsenhalbachse mit der Ellipse verschoben wird. Um aufwendige Fallunterscheidungen (es sind theoretisch zwei Mittelpunkte möglich) zu vermeiden, wurde folgender Algorithmus implementiert:
Durch Bildung des Sehnenvektors des Kreises
v sehne = v ende - v start
und des Ortsvektors zum programmierten Kreismittelpunkt
v mittel =v start + r start
erhält man den relativen Vektor vom Kreismittelpunkt zum Kreisendpunkt:
r ende =v ende v mittel
Damit läßt sich der neue Radius bestimmen:
radius = 0.5 * (| r start | + | r ende |)
Durch Projektion (Skalarprodukt) des Startradiusvektors auf den Sehnenvektor erhält man den Punkt, auf dem der Lotvektor zum Mittelpunkt auf der Sehne aufsetzt:
v fusz = ( v sehne * r start ) / | v sehne 2 |
Damit läßt sich nun der Lotvektor zum Mittelpunkt bestimmen:
v lot = r start v fusz
Dieser Vektor ist nun auf die Länge der Projektion des neuen Radiusvektors auf den programmierten Sehnenvektor zu normieren:
v lot_neu = v lot * sqrt [radius2 (|0.5 * v sehne |) 2] / | v lot|
Der neue relative Radiusvektor ergibt sich nun zu:
r start_neu = 0.5 * v sehne + v lot_neu
Sind zwei Kreise nacheinander abzufahren, wobei der Radius nur für den ersten Kreis programmiert wurde und dabei eine Mittelpunktskorrektur durchgeführt werden muß, so liegt der Berechnung des zweiten Kreises nicht der korrigierte, sondern der programmierte Radius des ersten Kreises zugrunde.
