CAM Postprozessor Anpassung

From FreeCAD Documentation
Revision as of 19:49, 29 September 2020 by FuzzyBot (talk | contribs) (Updating to match new version of source page)
Tutorium
Thema
Pfad Arbeitsbereich
Niveau
Zeit zum Abschluss
Autoren
chrisb
FreeCAD-Version
Beispieldateien
Siehe auch
None

Einführung

FreeCAD verwendet als interne Darstellungen für die erzeugten Pfade so genannte G-Codes. Sie können solche Dinge beschreiben wie: Geschwindigkeit und Vorschübe, Anhalten des Motors usw.. Aber das Wichtigste sind die Bewegungen, die sie beschreiben. Diese Bewegungen sind ziemlich einfach: Sie können gerade Linien oder Kreisbögen sein. Anspruchsvollere Kurven wie B-Splines werden bereits von FreeCADs Pfad Arbeitsbereich angenähert.

Was der Nachbearbeiter für dich tun kann

Viele Fräsen verwenden ebenfalls G-Codes zur Steuerung des Fräsprozesses. Sie mögen fast wie die internen Codes aussehen, aber es kann einige Unterschiede geben:

  • die Maschine kann eine spezielle Startsequenz haben
  • es kann eine spezielle Stoppsequenz haben
  • Bögen können mit einem relativen oder einem absoluten Mittelpunkt definiert werden
  • es kann Zeilennummern in einem bestimmten Format erfordern
  • es kann so genannte Festzyklen für vordefinierte Unterprozesse wie Bohren verwenden
  • Vielleicht bevorzugst du die Ausgabe deines g-Codes entweder in metrischen oder zölligen Einheiten.
  • Es könnte nützlich sein, vor dem Aufruf eines Werkzeugwechsels eine Reihe von Bewegungen durchzuführen, um die Aktion für den Bediener zu erleichtern.
  • Vielleicht möchtest du Kommentare zur besseren Lesbarkeit hinzufügen oder sie unterdrücken, um das Programm klein zu halten.
  • Möglicherweise möchtest du eine benutzerdefinierte Kopfzeile einfügen, um das Programm für zukünftige Referenzen zu identifizieren oder zu dokumentieren.
  • ...

Darüber hinaus gibt es weitere Sprachen zur Steuerung einer Fräse, wie z.B. HPGL, DXF oder andere.

Der Nachbearbeiter ist ein Programm, das die internen Codes in eine vollständige Datei übersetzt, die auf deine Maschine hochgeladen werden kann.

Vorbereitung zum Schreiben deines eigenen Nachbearbeiters

Du kannst mit einem sehr einfachen Modell beginnen, das zeigt, wie deine Maschine gerade Linien und Bögen liest. Bereite es mit einem beliebigen Programm vor, das für deine Maschine geeignet ist.

Eine Datei für solche Pfade, die bei (0,0,0) beginnen und in Richtung Y gehen, wäre hilfreich. Stelle sicher, dass sich das Werkzeug selbst entlang dieser Bahn bewegt, d.h. es darf keine Werkzeugradiuskompensation angewendet werden.

Der Pfad in FreeCAD würde wie folgt aussehen. Bitte beachte den kleinen blauen Pfeil, er zeigt die Startrichtung an. Für einen allerersten Versuch dürftest du nur eine Ebene in der XY-Ebene angeben.

Du kannst dir dann die Datei anschauen und sie mit der Ausgabe bestehender Nachbearbeiter wie linux_cnc_post.py oder grbl_post.py und versuche selbst, sie anzupassen, oder lade deine auf das Pfadforum https://forum.freecadweb.org/viewforum.php?f=15 hoch, um Hilfe zu bekommen.

Namenskonvention

Für ein Dateiformat <filename> sollte der Nachbearbeiter den Namen <filename>_post.py erhalten

Wenn du testest, leg es in dein Makroverzeichnis. Wenn es gut funktioniert, erwäge bitte, es anderen zur Verfügung zu stellen (poste es im FreeCAD Pfad Forum), damit es in Zukunft in die FreeCAD Distribution aufgenommen werden kann.

Andere vorhandene Nachbearbeiter

Zum Vergleich kannst du dir die Nachbearbeiter ansehen, die mit deiner FreeCAD Installation geliefert werden. Sie befinden sich unter dem Mod Verzeichnis in Path/PathScripts/post. Weit verbreitet sind die Nachbearbeiter linuxcnc und grbl. Das Studium ihres Codes kann hilfreiche Einblicke geben.

Programmierung deines eigenen Nachbearbeiters

In diesem Beitrag werden einige Interna der linuxcnc Nachbearbeiter diskutiert. Die gleiche Struktur wird auch in anderen Nachbearbeitern verwendet.

Ansehen von linuxcnc_post.py, du siehst die Exportfunktion (ab 0.19.20514 in Zeile 156)

def export(objectslist, filename, argstring):
    # pylint: disable=global-statement
    ...
    gcode = ""
    ...
    ...

it collects step by step in the variable "gcode" the processed G-codes and handles the overall exporting of post-processable objects (operations, tools, jobs ,etc). Export handles the high level stuff like comments and coolant but any objects that have multiple path commands (tool changes and operations) it delegates to the parse function (as of 0.19.20514 its at line 288).

def parse(pathobj):
    ...
    out = ""
    lastcommand = None
    ...
    ...

Similarly to the "export" function collects parse the G-codes in the variable "out". In the variable "command" the commands as seen in the Path workbench's "inspect G-code" function are stored and can be investigated for further processing.

for c in pathobj.Path.Commands:

            command = c.Name

It recognizes the different G, M, F, S, and other G-codes. By remembering the last command in the variable "lastcommand" it can suppress subsequent repetitions of modal commands.

Both parse and export are just formatting strings and concatenating them together into what will be the final output.

You'll see that both functions also call the "linenumber()" function. If the user wants line numbers, the linenumber function returns the string to stick in to the appropriate spot, otherwise it returns an empty string so nothing is added.

Verwandtes

Template:Tutorials navi/de Template:Path Tools navi/de