Page 1 of 1

Postprozessor

Posted: Thu Aug 02, 2018 7:54 pm
by magdanc
Hallo,
seit einigen Tagen habe ich das QCAD CAM und kommen für meine Verhältnisse gut mit den Funktionen zurecht. Je mehr ich mich auseinandersetze ahne ich im Ansatz die Leistungsfähigkeit und die Möglichkeiten.

Da mich die CAM Funktionalität interessiert bin ich auch gleich am ausprobieren einen Postprozessor anzupassen.
Allerding muß ich eingestehen, daß ich so manche Abläufe noch nicht so richtig nachvollziehen kann.

Im speziellen bekomme ich es nicht hin die eine X/Y Koordinate im Script durch eine if/else zu prüfen und dann eine Variable neu zuzuweisen:

Beispiel:

Code: Select all

    this.decimals = 0;
    this.registerVariable("xPosition",           "X",                    false, "", "DEFAULT",  { factor: 10 });
    this.registerVariable("yPosition",           "Y",                    false, "", "DEFAULT",  { factor: 10 });

	var postGCodeX = "";
	var postGCodeY = "";

	if(this.xPosition >= 0){
		postGCodeX = "+[X]";
	}
	else{
		postGCodeX = "[X]";
	}
	if(this.yPosition >= 0){
		postGCodeY = "+[Y]";
	
	}
	else{
		postGCodeY = "[Y]";
	}
	
	this.rapidMove =                [
	        "5",
	postGCodeX + postGCodeY,
    //    "[X] [Y]",
        "6"
    ];
Habt ihr eine Idee, wie ich eine solche Abfrag in dem Script plazieren kann?

Viele Grüße
Wolfgang

Re: Postprozessor

Posted: Fri Aug 03, 2018 10:01 am
by andrew
Dieser Code befindet sich im Konstruktor des Postprozessors und wird nur einmal ausgeführt, bei der Initialisierung des Postprozessors.

Um das Vorzeichen (+/-) bei X/Y Werten zu forcieren, können Sie einfach die Option "sign" setzen:

Code: Select all

this.registerVariable("xPosition",           "X",                    false, "", "DEFAULT",  { factor: 10, sign: true });
this.registerVariable("yPosition",           "Y",                    false, "", "DEFAULT",  { factor: 10, sign: true });
Um wirklich bei der Formatierung von Zahlenwerten einzugreifen, müsste stattdessen die Funktion "formatValue" überschrieben werden.

Re: Postprozessor

Posted: Sat Aug 04, 2018 8:41 am
by magdanc
Hallo andrew,

danke für die präzise Lösung, hat sofort geklappt -- auch ohne von hinten über den Rücken ....

Bin auch schon etwas weiter - immer mehr fällt mir ein, wie ich die Cam -Ausgabe erweitern könnte. Inspiriert durch Beiträge in diesem Forum ;-)

So sieht der erste Entwurf aus:
Image

essi-code

Code: Select all

3
QCAD/CAM
4
81
5
+491+494
6
29
53
+227+758+133-133+
54
5
+99+600
6
30
53
+99+100
+1100+100
+1100+600
+99+600
54
Ich vermute mal, daß die Koordinaten als "Absolut-Vermaßung" noch nicht stimmen - werden die im CAM incremental ausgegeben?


leadin und leadout fehlt mir noch, dann kann ich auch schon den ersten Praxistest angehen.

Re: Postprozessor

Posted: Sat Aug 04, 2018 4:22 pm
by andrew
magdanc wrote:
Sat Aug 04, 2018 8:41 am
Ich vermute mal, daß die Koordinaten als "Absolut-Vermaßung" noch nicht stimmen - werden die im CAM incremental ausgegeben?
X und Y sind absolut, I und J incremental (für G2,G3 in G-Code).

Für absolute Werte für Bogenzentren können stattdessen IA und JA verwendet werden.

Re: Postprozessor

Posted: Fri Aug 10, 2018 2:18 pm
by magdanc
Es sind noch einmal ein paar Themen aufgetreten. Den ersten Entwurf des Postprozessors lege ich auch schon einmal anbei.
1) Teilkreise
2) Vollkreise
3) Vorzeichen (+/-) bei einem 0-Wert
4) Anfahrweg
5) Anfahrwegtyp

zu 1)
Die Teilkreise, Bögen sehen gut aus

zu 2) Beispiel T2
Vollkreise werden leider im Moment nur halbe Kreise
=> hier muß die Zielposition identisch mit der Start-Position sein.
Image
Image

zu 3) Beispiel T1
Wenn ein Wert 0 beträgt wird leider kein Vorzeichen geschrieben.
Ein Vorzeichen ist mir sogar lieber als die 0, mir würde also ein einfaches "+" reichen
Image
Image

zu 4) Wenn bestehende Werkzeugwege geprüft oder neu gesetzt werden sollen ist in der Darstellung immer der Anfahrwegtyp auf "kein" gesetzt
Image

zu 5)
Kann ich mir einen Bogen als Anfahrwegtyp definieren, der nicht vom Zentrum aus beginnt?
Image

und noch eine kleine Frage:
Bei der Maschine ist "längs vor +X" und "quer links +Y", also ein 90° verdrehtes Koordinatensystem. Kann ich das in QCAD ebenfalls drehen?

Re: Postprozessor

Posted: Thu Aug 16, 2018 3:32 pm
by andrew
magdanc wrote:
Fri Aug 10, 2018 2:18 pm
Vollkreise werden leider im Moment nur halbe Kreise
=> hier muß die Zielposition identisch mit der Start-Position sein.
Wie müsste hier die Ausgabe im "mpg" Format genau sein?
magdanc wrote:
Fri Aug 10, 2018 2:18 pm
Wenn ein Wert 0 beträgt wird leider kein Vorzeichen geschrieben.
Das wurde für die nächste Version behoben:
http://www.qcad.org/bugtracker/index.ph ... sk_id=1799

Als Workaround:

Code: Select all

EssiPlasmaMM.prototype.formatValue = function(value, decimals, options) {
    var ret = GCodeBase.prototype.formatValue.call(this, value, decimals, options);
    if (ret==="0") {
        ret = "+0";
    }
    return ret;
};
magdanc wrote:
Fri Aug 10, 2018 2:18 pm
zu 4) Wenn bestehende Werkzeugwege geprüft oder neu gesetzt werden sollen ist in der Darstellung immer der Anfahrwegtyp auf "kein" gesetzt
Anfahrwege können grundsätzlich nur in Kombination mit Radiuskorrektur (aussen oder innen) benutzt werden, da sonst gar nicht definiert ist von welcher Seite der Anfahrweg beginnen soll. Ist "Seite" auf "Auf" definiert, kann nicht mit Anfahrwegen gearbeitet werden.
magdanc wrote:
Fri Aug 10, 2018 2:18 pm
Kann ich mir einen Bogen als Anfahrwegtyp definieren, der nicht vom Zentrum aus beginnt?
Ja, aber nur wenn die Radiuskorrektur von QCAD/CAM berechnet wird (this.outputOffsetPath = true; im Konstruktor).
magdanc wrote:
Fri Aug 10, 2018 2:18 pm
Bei der Maschine ist "längs vor +X" und "quer links +Y", also ein 90° verdrehtes Koordinatensystem. Kann ich das in QCAD ebenfalls drehen?
Nein. Es kann entweder gedreht gezeichnet werden oder im Postprocessor X/Y ausgewechselt werden.

Re: Postprozessor

Posted: Fri Aug 17, 2018 5:09 pm
by magdanc
Vielen Dank andrew,

dann auch schon die Version 2 des Postprozessors.

Die Vollkreise habe ich hinbekommen, habe mir einen Standard G-Code angesehen und dabei festgestellt, daß ein Vollkreis als zwei Teilkreise exportiert wird.

Alles andere hat mit deiner Hilfe gut geklappt.

Das die Anfahrwegtypen immer auf none standen war ein Bedienungsfehler von mir. Eine Geometrie, der bereits ein Werkzeugweg zugewiesen war habe ich markiert und dann mit "Profilwerkzeug hinzufügen" wiederholt aufgerufen, das klappt natürlich nicht, es muß natürlich ein bestehender Werkzeugweg editiert werden.

Das mit der Seite des Anfahrweges habe ich so erst mal nicht gemacht, da im NC-Export nur die Geometrie enthalten sein soll. Eine Korrektur durch ein Werkzeug darf da nicht rein. Also habe ich eine Werkzeug mit dem Durchmesser "0" definiert, aber damit bekomme ich auch Schwierigkeiten beim Export. Also definiere ich einen so kleinen Durchmesser, dass dieser sich nicht auf die zu exportierende Geometrie auswirkt.

Bögen als Anfahrtstypen funktioniert auch, nur daß ich hier und da mit dem Startpunkt noch nicht einverstanden bin. Dies gehört aber nicht in dasThema "Postprozessor". Werde ich bei Gelegenheit noch etwas ausprobieren und ggfls. noch einmal ansprechen.

Praktisch ausprobieren werde ich es frühestens in zwei Wochen können. In meiner Demo sieht das Ergebnis aber schon sehr brauchbar aus.
Image


Das ESSI-Format wird verwendet für Brennschneidmaschinen:
  • Plasma
  • Autogen
  • Laser
  • Wasserstrahl
  • ...

Re: Postprozessor

Posted: Mon Aug 27, 2018 5:25 pm
by magdanc
Die ersten beiden Praxistests:

1. Eine Hausnummer:
2mm Baustahl
Image

Image



2. Mixstab
2mm Edelstahl
Image

Image

Image

Eindrücke bei der Hausnummer
Die Schwingungen liegen eher an meinem Improvisieren: Keine Höhenregelung, eventuell hat die Platte geschwungen.

Eindrücke der Teile für den Mixstab
Am Postprozessor habe ich noch eine Kleinigkeit geändert, daß über einen Bohrer im NC-Code ein Punktsignieren erfolgt. Dies dient sozusagen dem Körnen für ein späters Loch bohren. Hat mit meiner Testanlage aber nicht geklappt, deshalb ist es im Zentrum der Platte auch nicht zu sehen.
Beim Anschneiden ist der Brenner immer abgesackt und hat Kollsion verursacht. Entweder war die Automatikverzögerung an der Maschine zu Kurz, bis diese auf Geschwindigkeit ist oder ich werde den Postprozessor auf die Anschneidstreke ändern, daß keine Höhenautomatik aktiv ist, werde aber noch ein paar Tests machen und schauen, wie ich zurecht kommen.

Re: Postprozessor

Posted: Tue Sep 04, 2018 6:28 pm
by magdanc
Bei der Ausfahrtstrecke habe ich noch ein Problem:

Von der Kontur zu Lead Out wird derzeit die Höhenautomatik nicht abgeschaltet. Das bewirkt bei Innenkonturen ein Absacken des Brenners und eine Beschädigung der Düsenkappe.
Image

Gibt es eine Funktion, über die ich vor Beginn der Ausfahrtstecke eine G-Code Sequenz über den Postprozessor in den exportierten Code einfügen kann?

In ESSI ist das eine "48"

Code: Select all

-896+190-519+519-		; Letzes Segment
-929+228			; Ausfahrt
54				; Programmende
So soll es sein

Code: Select all

-896+190-519+519-		; Letzes Segment
48				; Höhenautomatik aus
-929+228			; Ausfahrt
54				; Programmende

Re: Postprozessor

Posted: Tue Sep 04, 2018 8:55 pm
by andrew
Für den Ausfahrweg ("lead out") wird this.linearMoveCompensationOff geschrieben, also z.B.:

Code: Select all

this.linearMoveCompensationOff = ["48", "[X!][Y!]"];

Re: Postprozessor

Posted: Wed Sep 05, 2018 8:15 am
by magdanc
this.linearMoveCompensationOff hat leider keinen Einfluss, Lead Out wird darüber nicht geschrieben.
Muß ich hierfür noch etwas einstellen, bzw. aktivieren?

Re: Postprozessor

Posted: Wed Sep 05, 2018 8:44 am
by andrew
Das kann ich hier nicht nachvollziehen. Allenfalls DXF Datei anhängen bitte - dort sind alle Einstellungen vorhanden, die ich zum Nachvollziehen benötige.

Re: Postprozessor

Posted: Wed Sep 05, 2018 6:15 pm
by magdanc
Anbei ein Beispiel

Der erzeugte Code:

Code: Select all

3
QCAD/CAM
lead out.mpg
EssiPlasmaMM V004
4
81
5
+383+186
6
29
53
+316+183+352+147+
+83+416+199+299-
+316+183+199+299-
+313+116+352+147+
54
5
+555+90
6
29
53
+555+140
+555+460
+560+465+560+460-
+1060+465
+1065+460+1060+460-
+1065+140
+1060+135+1060+140-
+560+135
+510+135
54

Re: Postprozessor

Posted: Thu Sep 06, 2018 9:26 pm
by andrew
Mit

Code: Select all

this.outputOffsetPath = true
werden die Codes

Code: Select all

this.linearMoveCompensationLeft
this.linearMoveCompensationRight
this.linearMoveCompensationOff
gar nicht verwendet. Die Kompensation wird stattdessen berechnet und Anfahrwege werden als Teil der Kontur ausgegeben.

Es gibt verschiedene Möglichkeiten, den Ausfahrweg abzufangen. Am Besten wohl im writeEntity:

Code: Select all

EssiPlasmaMM.prototype.writeEntity = function() {
    var leadOut = this.getEntityOptionBool(this.currentEntity, "CamLeadOut", false) ||
                  this.getEntityOptionBool(this.currentEntity, "CamOvercutOut", false);

    if (leadOut) {
        this.writeLinearMoveCompensationOff();
        return;
    }

    ...
};
Mit einem Ausfahrweg, der einen Bogen darstellt wird das aber wohl nicht funktionieren, denn this.linearMoveCompensationOff schreibt ja immer eine lineare Bewegung.

Also wäre es evtl. einfacher um den Code "48" einzuschieben und danach den Ausfahrweg normal zu schreiben:

Code: Select all

EssiPlasmaMM.prototype.writeEntity = function() {

    var leadOut = this.getEntityOptionBool(this.currentEntity, "CamLeadOut", false) ||
                  this.getEntityOptionBool(this.currentEntity, "CamOvercutOut", false);

    if (leadOut) {
        this.writeLine("48");
    }

    ...
};

Re: Postprozessor

Posted: Fri Sep 07, 2018 4:22 am
by magdanc
Ich würde sagen, ab jetzt ist der Postprozessor praxistauglich.

Nächste Woche werde ich wohl meine Testmaschine von einem Test wieder rückrüsten und kann dann auch weitere Versuche machen

:-)