Hallo zusammen,
arbeite seit geraumer Zeit mit Fusion 360 und bin echt begeistert. Nutze es hautsächlich für CAD, aber auch CAM interessiert mich sehr stark. Nur leider bin ich nicht ganz so fit in der Anpassung eines Postprozessors. Ich bin auf der Suche nach einem PP für eine ältere Siemens Sinumerik 840D Steuerung.(Bj. der Maschine 2000)
Hab schonmal geschaut was so in Fusion hinterlegt ist und bis jetzt ist der für die dort angegebene Sinumerik 802 Steuerung vom Aufbau her derjenige, mit dem ich wahrscheinlich am nächsten zum Ziel komme. Soweit ich es sehen konnte, gibt dieser mir schonmal die richtigen Befehle aus, jedoch bis auf die Zyklen.
Ich suche so einen PP, der jedoch Zyklen über R-Parameter ausgibt....gibt es sowas vllt. schon, oder gibt es die Möglichkeit diesen anzupassen?
Vielen Dank schonmal!
Gruß Alex
Gelöst! Gehe zur Lösung
Gelöst von alex.rode. Gehe zur Lösung
Gelöst von makko74. Gehe zur Lösung
Hi Alex,
die Funktion writeBlock schreibt immer eine neue Zeile mit den in Klammern, durch Komma getrennten, enthaltenen Argumenten.
Beispiel:
( aus deinem Post )
case "counter-boring":
writeBlock(feedOutput.format(cycle.feedrate));
writeBlock(
gFormat.format(82) +
" R2=" + xyzFormat.format(SDIS) +
" R3=" + xyzFormat.format(DP) +
" R4=" + conditional(DTB > 0, secFormat.format(DTB)) +
" R10=" + xyzFormat.format(RTP)
);
break;
gibt als Ausgabe dasselbe wie:
case "counter-boring":
writeBlock(feedOutput.format(cycle.feedrate));
writeBlock(
gFormat.format(82),
"R2=" + xyzFormat.format(SDIS),
"R3=" + xyzFormat.format(DP),
"R4=" + conditional(DTB > 0, secFormat.format(DTB)),
"R10=" + xyzFormat.format(RTP)
);
break;
du sparst dir aber das selberschreiben der Leerzeichen, das macht die Funktion automatisch ( deine Variante ist kein Fehler, nur als Hinweis ).
Wenn du die R-Parameter in einer eigenen Zeile stehen haben willst, gefolgt von einer Zeile mit G82 dann braucht die Ausgabe für G82 in einer neuen Zeile ihr eigenes writeBlock:
case "counter-boring":
writeBlock(feedOutput.format(cycle.feedrate));
writeBlock(
"R2=" + xyzFormat.format(SDIS),
"R3=" + xyzFormat.format(DP),
"R4=" + conditional(DTB > 0, secFormat.format(DTB)),
"R10=" + xyzFormat.format(RTP)
);
writeBlock( gFormat.format(82) );
break;
Gruß,
Mario
Ahh perfekt vielen vielen Dank. Werde ich mal bei allen Zyklen ändern und morgen mal ausprobieren, ob die CNC Maschine das so annimmt!
Gruß Alex
Ich muss wohl doch nochmal hier im Forum mich melden....
Bin gerade den G- Code mal durchgegangen und habe festgestellt, dass es doch noch an ein paar Kleinigkeiten hängt.
Ich versuche diese mal zu beschreiben...
1. Bei einem Werkzeugwechsel schreibt das CAM zwei T... Nummern im Programm. Also das was in der Spindel ist von der ersten Operation und dann das Werkzeug was kommen soll. Jetzt weiß ich nicht ob man das bei Maschinen so macht, bei der man auf eine bestimmte Werkzeugwechsel Position fahren muss, bei der Maschine wofür das sein soll brauche ich das nicht. Also wenn ich z.B. T10 in der Spindel habe und gerne T5 haben möchte, dann schreibe ich auch lediglich T5 M6 und die Maschine wechselt das Werkzeug (Die Chiron Maschinen haben da so einen Korbwechsler, wo jede Aufnahme ihren eigenen "Arm" hat und bei der die Maschine an jeder beliebigen Position die Werkzeuge tauschen kann.)
2. Komischerweise kommt bei einem Werkzeugwechsel ein M1. Nehme mal an für alle, die von Hand die Werkzeuge tauschen. Wie kann ich das löschen? Wenn ich da einfach in der PP Datei etwas entferne, dann funktioniert sie bei mir nicht mehr.
Anstelle von dem M1, fände ich hier ein M5 sinnvoller...
3. Trau mich kaum zu fragen, aber in diesem PP ist das mit der Kühlung glaube ich etwas anders geschrieben, wie bekomme ich hier das mit der IK eingebettet?
Im Anhang mal der Code, den der PP erzeugt hat, jedoch mit den oben genannten "Mängeln"
Gruß Alex
Also ich war so auf den PP konzentriert, dass ich die ersten beiden Punkte garnicht gesehen habe in Fusion. War wirklich nur zwei Haken deaktivieren. TOP!
Zu Punkt drei:
Hast natürlich Recht , ist eine map Table.
Steht auch genau das dar, was du geschrieben hast. Sprich 9 und 8 in eckiger Klammer. Nur wenn ich jetzt einfach eine 7 dazu schreibe, kommt ein Fehler. Aber das ist erstmal nicht so wichtig. Ich schau morgen mal ob die Maschine mit dem PP so klar kommt.
Besten Dank
Gruß Alex
Hallo Alex,
sorry mein Fehler bei Punkt drei, die 4. Stelle ist für Innenkühlung, 3. Stelle ist für Nebel.
Die Reihenfolge ( in den eckigen Klammern, immer schön durch ein Komma getrennt ) ist wie bei der Auswahlmöglichkeit für die Kühlung die benutzt werden soll.
1. Kühlung deaktiviert
2. Außenkühlung Wasser
3. Nebel (MMS)
4. Innenkühlung
5. Außenkühlung Luft
6. Innenkühlung Luft
usw.
var mapCoolantTable = new Table(
[9, 8, , 7],
{initial:COOLANT_OFF, force:true},
"Invalid coolant mode"
);
Gruß,
Mario
Unglaublich, an einem Komma liegt es...jetzt geht es auch mit IK.
Tausend Dank Mario!!
Mal schauen ob es morgen läuft ....
Gruß Alex
Gern geschehen Alex, ich drück dir für morgen die Daumen, dass alles nach deinen Wünschen klappt.
Mario
Habe gerade mal ein kleines Programm in Fusion erzeugt und an der Fräsmaschine ablaufen lassen. Geht soweit schonmal super!
Zwei Kleinigkeiten habe ich aber noch...
1. Im Programmkopf schreibt mir die Maschine : ; %_N_1_MPF nur da müsste das ; am Anfang weg.
2. Wo kann ich im PP bestimmen, dass die Maschine bei einem Werkzeugwechsel auf eine bestimmte Z Höhe fährt?
N140 X82.5
N145 G0 Z15
N150 G17
N155 G53 G0 Z0. // hier müsste ich für Z einen anderen Wert eingeben
N160 ; 2D Adaptive1
N165 M9
N170 T2
N175 M6
N180 S3714 M3
N185 G54
N190 M8
Glaube, dann müsste es alles gewesen sein.
Gruß Alex
Programmkopf wird in der Funktion onOpen abgehandelt, deine Suche ist diese Zeile ( ziemlich am Anfang der Funktion 😞
writeln("; %_N_" + translateText(String(programName).toUpperCase(), " ", "_") + "_MPF");
Hier weißt du was zu tun ist.
Der Satz für Rückzug bei Werkzeugwechsel steht in der Funktion onSection ( ziemlich am Anfang 😞 HIER NICHTS ÄNDERN, NUR ZUR ERKLÄRUNG!!!
das Folgende wird gemacht bei Werkzeugwechsel ( insertToolCall ), einem neuen WKS ( newWorkOffset ) oder einer neuen Maschinenausrichtung ( newWorkPlane )
if (insertToolCall || newWorkOffset || newWorkPlane) {
// retract to safe plane
retracted = true;
writeBlock(gAbsIncModal.format(90), gFormat.format(53), gMotionModal.format(0), "Z" + xyzFormat.format(machineConfiguration.getRetractPlane())); // retract
zOutput.reset();
}
Wir sehen das die Z-Position die angefahren werden soll abhängig von dem Wert in der Maschinenkonfiguration ( machineConfiguration.getRetractPlane() ) ist.
Maschinenkonfiguration wird ( meist ) in der Funktion onOpen gemacht.
In der Funktion onOpen ist es dann auch gleich die 1. Zeile:
machineConfiguration.setRetractPlane(toPreciseUnit(0, MM));
hier die "0" auf deinen gewünschten Wert setzen und dann sollte es das gewesen sein.
Gruß,
Mario
Perfekt, besten Dank Mario!
Eine Frage hätte ich aber noch, ich habe immer ein D0 in dem Satz gehabt. Kann man das irgendwie noch mit einbinden? Dann müsste es alles so passen und ich nerve dich nicht mehr....
N475 X-55.805 Y-50.709 Z-19.3
N480 G0 Z15
N490 G53 Z-100. // hier noch ein D0 rein
N495 ; Bohren1
N500 M9
N505 T5
N510 M6
Gruß Alex
Wenn du nerven würdest, würde ich einfach nicht antworten.
Da muß ich jetzt erstmal was fragen:
Die betreffende Stelle die es zu ändern gilt, ist aus meinem vorherigen Beitrag ersichtlich. ABER!
D0 ist die Abwahl der Werkzeugkorrekturen ( Werkzeuglänge, Radius, etc.pp. ) deine Maschine hat ab diesem Moment keine Ahnung wie lang dein Werkzeug ist. Beim Werkzeugwechsel ist dieses ja noch OK.
Nun zum Problem das entstehen könnte: Die betreffende Stelle wird nicht nur bei einem Werkzeugwechsel abgearbeitet, sondern auch wenn ein neues WKS aktiv wird oder die Bearbeitungsrichtung geändert wird.
Vermutlich wird bei deiner Maschine, genau wie bei meiner, das D1 beim Werkzeugwechsel aufgerufen, ansonsten muß selbst dafür gesorgt werden.
Ist das so richtig?
Gruß,
Mario
Ja das D1 wird aufgerufen und vom dem Wechsel mit D0 abgewählt in Z nach oben gefahren, gewechselt und dann vor dem ersten Z Wert kommt dann wieder ein D1.
Oh, hab ich nicht gesehen, im Postprozessor wird einfach writeBlock("D1") geschrieben ( aber nur nach einem Werkzeugwechsel!!! ), ich hatte nach dFormat oder dOutput gesucht, ist zwar definiert, wird aber nicht verwendet.
Ich hänge dir hier mal den geänderten Postprozessor an ( Basis ist der von dir letzte Angehängte ) alle Änderungen im Postprozessor hab ich mit "x123" gekennzeichnet ( einfach nach x123 suchen ), ich denke daß das so richtig sein müßte.
Bitte Vorsichtig testen!
Gruß,
Mario
Edit: Anhang gelöscht, den aus nächstem Beitrag testen
Hallo Alex,
ich denke der hier ist besser. Bitte den Testen und mal bescheid geben.
Gruß,
Mario
Hi der ist schonmal viel besser! Kann man noch ganz am Ende ein D0 einfügen ?
Na klar doch, in der Funktion onClose die erste Zeile:
writeBlock(gAbsIncModal.format(90), gFormat.format(53), gMotionModal.format(0), "Z" + xyzFormat.format(machineConfiguration.getRetractPlane())); // retract
ändern in
writeBlock(gAbsIncModal.format(90), gFormat.format(53), gMotionModal.format(0), "Z" + xyzFormat.format(machineConfiguration.getRetractPlane()), dOutput.format(0) ); // retract
Gruß,
Mario
Perfekt, jetzt macht die Maschine alles, so wie sie soll!
Mario, du bist der Beste! Vielen vielen Dank !
Ich teste kommende Woche nochmal alles durch, dann kann ich den PP ja mal hier einstellen, damit auch andere was von haben...
Gruß Alex
Kein Problem, gern geschehen.
War auch einfach, du hast immer schön den aktuellen Stand des Postprozessors angehängt und genau gesagt was du geändert haben möchtest, anhand von NC-Code Beispielen.
Somit brauchte ich dir nichts aus der Nase ziehen oder die Kristallkugel befragen. So macht es Spaß.
Wenn noch was ist und ich helfen kann, einfach melden.
Schönes Wochenende!
Gruß,
Mario
Hallo zusammen,
ich habe nun den PP in den letzten Tagen testen können, den ich mit großer Unterstützung von Mario geändert habe und konnte bei mir keinerlei Fehler feststellen.
Deshalb im Anhang der Postprozessor den ich verwende, vllt. kann ja auch jemand anderes damit was anfangen.
Ich benutze diesen an einer CHIRON FZ18 High Speed Fräsmaschine mit Siemens SINUMERIK 840D MMC 100.3 Steuerung.
Natürlich alles ohne Gewähr!! Also vorsichtig testen!
Bin super zufrieden damit! Obwohl ich heute schon wieder auf die nächste Idee gebracht wurde. Fusion kann zu viel...hehe
Hab ja einen Rundtisch auf der Maschine, weiß jemand ob man da in den PP die 4 Achse einbauen kann?
Schönen Abend
Alex
Sie finden nicht, was Sie suchen? Fragen Sie die Community oder teilen Sie Ihr Wissen mit anderen.