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 |