Reverse-Engineering von NC-Programmen

Projekt

Eine Kunststoff verarbeitende Firma war dabei, eine ihrer in die Jahre gekommenen CNC-Maschinen durch eine leistungsfähigere zu ersetzen. Dabei sollten auch Teile auf der neuen Maschine hergestellt werden, deren altes NC-Programm vor langer Zeit von Hand programmiert wurde. Das alte Programm ließ sich aufgrund von unterschiedlicher Maschinengeometrie und anderen Inkompatibilitäten nicht auf die neue Maschine übertragen. Zudem gab es auch kein 3D-Modell des Teils, mit dem man es -wie dort üblich- mit MasterCAM hätte programmieren können.

Vorgehen

Der vorläufige Plan des Kunden war ein Vermessen der fertigen Teile mit einem Koordinatenmessgerät, um daraus ein 3D-Modell zu rekonstruieren und die Bearbeitung mit MasterCAM zu programmieren. Dieses Vorgehen erwies sich als Zeitaufwändig und Fehlerträchtig, daher schlug ich vor, die alten Programme als Ausgangsbasis für die neuen zu verwenden. Meine Idee war, die NC-Programme in eine 3D-Datei zu übersetzen, die Werkzeugbewegung und -ausrichtung der 5-Axen-Maschine als Linien darstellt, um diese als Grundlage für die Programmierung in MasterCAM zu verwenden.

Menü für Einstellungen
Menü für Einstellungen

Es stellte sich heraus, dass es ein solches Programm nicht gibt, daher entschieden wir uns für die Eigenentwicklung. Nach einigen Wochen Programmierzeit konnten ich alte NC-Programme in eine STEP-Datei konvertieren. Verschiedene Werkzeugköpfe, Vorschubgeschwindigkeiten und Werkzeugausrichtungen werden von dem Programm mit dem Arbeitstitel NCto3D auf verschiedenen Ebenen und in verschiedenen Farben dargestellt.

Das Programm wurde in Excel mit VBA geschrieben, und benutzt die Excel-Arbeitsblätter nur für das Speichern von Einstellungen und Parametern und zum Anzeigen des eingelesenen Programms.

Features

  • Verarbeitung von 5 Axen (X,Y,Z,B,C)
  • Ausgabe von Werkzeugposition und Werkzeugausrichtung
  • Verarbeitung von Sprungbefehlen im NC-Code
  • Kompensation von Abstand zwischen Drehpunkt und Werkzeugspitze
  • Verwendung von Ebenen für Werkzeuge und Linientypen
  • Speicherung von verschiedenen Konfigurationen
  • Unterstützung von Zwillings-Werkzeugköpfen
  • Ausgabe von Kreis- und Kreisbogenmittelpunkten

Einschränkungen

  • Keine Ausgabe von Kreisen, Kreisbögen, Splines, Flächen oder Volumenkörpern