QUOTE (Hawky @ 20.10.2020, 09:36 Uhr)
[sollte man mit mathematischen Grundkenntnissen machen können]
Dein Wort in Gottes Ohr.
Kreisbögen, die mit I, J und Endpunkt programmiert sind, sind alles andere als trivial. Das hat damit zu tun, dass der Kreis in aller Regel überstimmt ist. Man programmiert den Mittelpunkt mit I und J ganz unabhängig von Start- und Endpunkt. Jetzt ist aber ein Kreis so definiert, dass der Mittelpunkt von jedem Punkt auf dem Kreis gleich weit entfernt sein muss. Dass kann man durch die begrenzte Eingabefeinheit meist nicht gewährleisten, selbst wenn man sich nicht verrechnet.
Mit anderen Worten: Die programmierten drei Punkte passen in aller Regel nicht
exakt zueinander. Wenn die Abweichungen zu groß sind, wird man einen Alarm absetzen. Wenn der Fehler unter einer gewissen Grenze bleibt, wird man die programmierten Daten mehr oder weniger korrigieren müssen, denn der Endpunkt soll ja exakt erreicht werden (so zumindest mein Verständnis eines NC-Programms). Das bedeutet aber, dass man den Mittelpunkt verschieben und gegebenenfalls auch den Radius verändern muss. Das führt zu Problemen, an die man zunächst überhaupt mal nicht denkt, vor allem dann wenn der Öffnungswinkel des Kreises nahe 0 oder nahe 360 Grad ist.
Ein Beispiel
CODE
G1 X0 Y0
G2 X0.001 Y-0.001 I5 J0
Preisfrage: Wenn man die Bedingung stellt, dass Start- und Endpunkt exakt angefahren werden, wo liegt dann der korrigierte Mittelpunkt des Kreises und wie groß ist der korrigierte Kreisradius? Wie sieht der resultierende Kreis aus?
Kleine Hilfestellung:
Der Mittelpunkt eines Kreisbogens liegt irgendwo auf der Mittelsenkrechten der Sehne, die Start und Endpunkt verbindet.
Die Sehne ist hier die Gerade vom Nullpunkt zum Punkt X0.001 / Y-0.001 ist also um 45 Grad gegenüber der X-Achse gedreht. Der Kreismittelpunkt liegt also irgendwo auf einer Geraden, die fast mit der Winkelhalbierenden aus dem Nullpunkt heraus identisch ist. Wenn wir annehmen, dass der Radius 5mm sein soll, liegt der Kreismittelpunkt dann in der Nähe von X3.535 / Y3.535.
Das ist sicher nicht das, was der Programmierer beabsichtigt hat.
Das ist kein konstruierter Fall, sondern solche Fälle kommen in Praxis laufend vor, es ist aber das Ergebnis, das man erhält, wenn man die Schulmathematik unbesehen anwendet.
Man braucht ein Konzept, wie man mit solchen Fällen umgehen kann. Es kann dann leicht so sein, dass man für die Behandlung dieser Sonderfälle den zehnfachen Aufwand (knapp gerechnet) treiben muss, wie für die Behandlung der harmlosen Standardfälle. Eine ziemlich typische Situation in der Sortwareentwicklung übrigens.
Der Beitrag wurde von CNCFr bearbeitet: 20.10.2020, 10:38 Uhr