Features Preis Downloads Galerie Handbuch
en

Modul - Postprozessor

Dieses Modul befasst sich mit der Anpassung und Erstellung neuer Postprozessoren für VxCraft.

Postprozessor-Skript

Ein Postprozessor ist im Wesentlichen eine Lua-Skriptdatei, die spezielle Befehle und Funktionen beinhaltet, um die von VxCraft berechneten Werkzeugwege in ein geeignetes Format für die CNC-Maschine zu konvertieren.

Standardmäßig sind die Skripte im Unterordner "PP" des Program-Data-Ordners (siehe Kapitel "Installation") gespeichert. In diesem Ordner können neue Skripte hinzugefügt und verwaltet werden.

Bevor Sie einen Postprozessor erstellen oder ändern, stellen Sie bitte sicher, dass Sie diesen unter einem eindeutigen Namen speichern. Bei einem Update oder der Installation eines neuen Postprozessor-Pakets könnte sonst Ihr angepasster Postprozessor überschrieben werden. Bitte beachten Sie, dass das Präfix 'vxc_def_*' im Dateinamen von VxCraft für vordefinierte Standardpostprozessoren verwendet wird und daher nicht für Ihre benutzerdefinierten Postprozessoren verwendet werden sollte.

Skriptablauf

Der Skriptablauf in diesem Modul unterscheidet sich von anderen Lua-Modulen, da er nicht linear verläuft.

Das Modul basiert auf dem Konzept der Callback-Funktionen, die vom Benutzer im Lua-Skript bereitgestellt und von VxCraft situationsabhängig aufgerufen werden.

Während der Ausführung eines Postprozessorlaufs wird zunächst das Skript eingelesen und ausgeführt. In der Regel werden dabei nur Initialisierungsaufgaben im Skript durchgeführt. Dieser Durchlauf ist notwendig, damit VxCraft die vom Benutzer bereitgestellten Callback-Funktionen erfassen kann.

Im Anschluss ruft VxCraft diese Callback-Funktionen bei Bedarf auf. So wird beispielsweise callJobBegin() bei jedem Jobstart aufgerufen und callMove(...) kommt für jeden Werkzeugwegpunkt zum Einsatz.

Funktionen

Für das Modul können folgende von VxCraft zur Verfügung gestellte Funktionen verwendet werden und an einer beliebigen Stelle im Skript aufgerufen werden:

Funktion vxPrint(...)
Beschreibung vxPrint kann mit beliebig vielen, durch Kommas getrennten Argumenten aufgerufen werden. Es wandelt alle Argumente in Strings um und gibt diese in der Konsole der Postprozessorumgebung aus. Folgende Datentypen sind zulässig: nil, number, string und boolean.
Hinweis: Stringliterale wie z.B. %d, %s, %f usw. werden durch vxPrint() nicht berücksichtigt.
Beispiel vxPrint("Startposition: X ", pos_x, " Y ",4," Z ",50.0, "\n")
Funktion vxClear()
Beschreibung Löscht den Inhalt der Konsole der Postprozessorumgebung.
Beispiel vxClear()
Funktion vxWarn(string)
Beschreibung Gibt den übergebenen String als eine Popup-Warnmeldung aus.
Beispiel vxWarn("Der Werkzeugweg liegt außerhalb des maximalen Verfahrwegs.")
Funktion vxAsk(string)
Beschreibung Gibt den übergebenen String als eine Popup-Meldung aus, die mit "Ja" oder "Nein" quittiert werden kann. Gibt den Wert 1 zurück, wenn die Meldung mit "Ja" quittiert wurde.
Beispiel vxAsk("Im Job wurde eine Kollision erkannt. Fortfahren?")
Funktion getSetting(keystring)
Beschreibung getSetting() gibt die Systemeinstellung mit dem übergebenen Schlüssel als String zurück.
Beispiel name = getSetting("pp_user")
Funktion getSettingInt(keystring)
Beschreibung getSettingInt() gibt die Systemeinstellung mit dem übergebenen Schlüssel als Ganzzahl zurück.
Beispiel opendir = getSettingInt("pp_open_explorer")

Callback-Funktionen

Die vom Benutzer bereitgestellten Callback-Funktionen müssen einem speziellen Format entsprechen. Es ist nicht erforderlich, alle Callback-Funktionen bereitzustellen, und die Reihenfolge spielt keine Rolle. Fehlt eine Funktion, wird deren Abwesenheit ignoriert und der Prozess fortgesetzt.

Rückgabewert

Jede Callbackfunktion muss bei fehlerfreiem Lauf "nil" zurückgeben. Tritt ein Fehler auf kann eine Fehlermeldung in Form eines Strings zurückgegeben werden. Dies bricht den Postprozessorlauf ab und die Meldung wird angezeigt.

Hinweis:
Bei Callback-Funktionen ist, wie in Lua generell gefordert, auf die korrekte Groß- und Kleinschreibung zu achten.

Callback-Funktionsprototypen

Die nachstehende Auflistung bietet eine Übersicht und Beschreibung aller verfügbaren Callback-Funktionen:

function callBegin()

Wird zu Beginn des Postprozessorlaufs aufgerufen. Wenn nur eine einzelne NC-Datei erzeugt werden soll, kann diese Funktion genutzt werden um diese Datei vorzubereiten und im Schreibmodus zu öffnen.

function callJobBegin()

Wird jedes mal aufgerufen wenn ein neuer Job startet. Kann beispielsweise zum Einwechseln des Werkzeugs verwendet werden und zum Vorpositionieren.

function callMove(x,y,z,gflag,mflag)

Wird für jeden Werkzeugwegpunkt aufgerufen. Dies ist die einzige Callback-Funktion, die von VxCraft Argumente erhält.

x,y,z

Die Koordinaten des Werkzeugwegpunkts als Gleitkommazahl.

gflag, mflag

Diese Argumente geben zusätzliche Infos zu dem Werkzeugwegpunkt. Es handelt sich dabei um Flags im Ganzzahlformat (integer), die mit dem Bit-Operator "&"auf gewisse Zustände mit Hilfe einer if-Abfrage überprüft werden können. Zum Überprüfen können von VxCraft zur Verfügung gestellte Globale Variablen genutzt werden. Im Folgenden ein Listing mit möglichen Abfragen:

Prüfung Beschreibung
if(gflag&FLAG_G0) Der Werkzeugwegpunkt ist Teil einer Positionierbewegung. Es sollte der reguläre Eilgangvorschub verwendet werden.
if(gflag&FLAG_G1) Der Werkzeugwegpunkt ist Teil einer regulären Fräsbewegung. Es sollte der reguläre Fräsvorschub verwendet werden.
if(gflag&FLAG_G1_RAMP) Der Werkzeugwegpunkt ist Teil einer rampenförmigen Eintauchbewegung. Es sollte der Eintauchvorschub verwendet werden.
if(gflag&FLAG_G1_PLUNGE) Der Werkzeugwegpunkt ist Teil einer senkrechten Eintauchbewegung. Es sollte der Bohrvorschub verwendet werden.
if(mflag&FLAG_M_SPINDLE_START) Die Spindel sollte gestartet werden bevor der Werkzeugwegpunkt angefahren wird.

Globale Variablen

Globale Variablen werden von VxCraft zur Verfügung gestellt und sind überall im Skript abrufbar. Alle globale Variablen werden vor dem Aufruf von callJobBegin() aktualisiert und sind bis nach Ende von callJobEnd() gültig:

Projekt- und Systembezogene Variablen

globale Variable Beschreibung
ppDirProject Pfad zur gespeicherten Projektdatei
ppFilePath Pfad zum Postprozessor-Skript
ppFileBase Name des Postprozessor-Skripts
ppFileExt Dateierweiterung des Postprozessor-Skripts
ppNameProject Der Name des Projektelements
ppNameNcPack Der Name des NC-Pack Objekts
ppNameTool Der Name des Werkzeugs
ppNameJob Der Name des Job-Objekts
ppVxPerUnit Projektauflösung in Voxel pro Nutzereinheit
ppUnitPerVx Projektauflösung in Nutzereinheit pro Voxel
globale Flags Beschreibung
FLAG_G0 Prüfwert für gflag (siehe Funktion "callMove()")
FLAG_G1 Prüfwert für gflag (siehe Funktion "callMove()")
FLAG_G1_RAMP Prüfwert für gflag (siehe Funktion "callMove()")
FLAG_G1_PLUNGE Prüfwert für gflag (siehe Funktion "callMove()")
FLAG_M_SPINDLE_START Prüfwert für mflag (siehe Funktion "callMove()")

Jobbezogene Variablen

Startposition:

globale Variable Beschreibung
ppStartposX Position X des ersten Wegpunkts des aktuellen Jobs
ppStartposY Position Y des ersten Wegpunkts des aktuellen Jobs
ppStartposZ Position Z des ersten Wegpunkts des aktuellen Jobs

Spindel und Werkzeug:

globale Variable Beschreibung
ppSpindleRotation Die im Job eingestellte Spindelrichtung, 0 = Uhrzeigersinn, 1 = Gegen den Uhrzeigersinn
ppSpindlespeed Die im Job eingestellte Spindeldrehzahl
ppToolId NC-Werkzeugnummer des aktuellen Jobs
ppCooling Kühlmodus des aktuellen Jobs

Vorschub:

globale Variable Beschreibung
ppFeedMode Der im Job eingestellte Vorschubmodus, 0=Eilgang, 1=benutzerdefinierter Vorschub.
ppFeedRapid Der für den Eilgang vorgesehene benutzerdefinierte Vorschub.
ppFeed Vorschub für die reguläre Fräsbearbeitung.
ppFeedRamp Vorschub für rampenförmige Eintauchbewegungen.
ppFeedDrill Vorschub für senkrechte Eintauchbewegungen.

Jobparameter:

globale Variable Beschreibung
ppJobtype verwendeter Berechnungsalgorithmus
ppPlaneSite Positionierebene
ppPlaneStart Startebene (oberste Bearbeitungsebene)
ppPlaneEnd Endebene (unterste Bearbeitungsebene)
ppPlungeDrill Vertikales Eintauchen aktiv/inaktiv
ppPlungeRamp Rampenförmiges Eintauchen aktiv/inaktiv
ppPlungeSpiral Spiralförmiges Eintauchen aktiv/inaktiv
ppPlungeAngle Winkel für Rampen- und Spiralförmiges Eintauchen
ppPlungeDia Durchmesser der Spirale
ppSgap Sicherheitsabstand
ppAreaIn Zone Innen aktiv/inaktiv
ppAreaOut Zone Außen aktiv/inaktiv
ppAreaStk Zone Werkstück aktiv/inaktiv
ppRadcorr Radiuskorrektur aktiv/inaktiv
ppAe Horizontale Zustellung
ppApMain Vertikale Hauptzustellung
ppApMicro Vertikale Zustellung der Zwischenschritte
ppDrillTop Bohrmodus oben
ppDrillFloor Bohrmodus unten
ppAllm_xy Aufmaß Modell XY
ppAllm_z Aufmaß Modell Z
ppAllf_xy Aufmaß Grenzmodell XY
ppAllf_z Aufmaß Grenzmodell Z
ppAlls_xy Aufmaß Werkstück XY
ppAlls_z Aufmaß Werkstück Z
ppFeedDir Gleichlauf=0 / Gegenlauf=1
ppOpt Optimierungsmodus
ppCollision Ein Wert ungleich 0 bedeutet, dass eine Kollision im Job erkannt wurde.
ppPause Status der im Job eingestellten Pause-Option
< ZurücktopWeiter >