Jetzt bin ich ja kein ausgebildeter Zerspaner und komplexere Teile auf dem alten System zu programmieren, ohne wirklich zu wissen was man macht, ist nicht unbedingt die beste Idee. Nen bisschen CAD konnte ich ja schon, dann lief mir Fusion360 über den weg. Für private Nutzung kostenlos und hat auch gleich nen CAM System mit an Bord. Nach einer weile Suchen habe ich auch einen Postprozessor (PP) für die Sinumerik 810M bekommen, dieser wurde von Andreas P für seine Maschine geschrieben und habe mit das ganze an meinem Maschine angepasst. Die Postprozessoren sind in Javascript geschrieben und lassen sich daher relativ leicht anpassen.
Ich habe mir den PP dahingehend angepasst, dass meine Maschine einen Indextisch hat und ich beim starten des PP einstellen kann ob Seite 1 oder 2 unter der Spindel sein sollen.  Daher müssen ein paar Zeilen ergänzt werden, zunächst im Bereich der „user-defined properties“, der Einfachheit habe ich gleich die beiden Zeilen für den Werkzeugwechsler mit rein geworfen, dazu aber später.

1
2
3
useToolChanger: true, // specifies that a tool changer is available
sizeToolChanger: 12, //number of tools in your tool changer
indexTable: 1, //Side of index table under Spindle };

Da ich die Maschine nie im Pendelbetrieb fahren werde habe diese Option übergangen. Auf der einen Seite des Tischen habe ich meinen Maschinenschraubstock gespannt, auf andere Seite noch nichts, daher kann ich beim erstellen des NC-Programms gleich festlegen welche Seite unter die Spindel kommt.

Dazu braucht nur noch ein wenig Code im der Funktion onOpen. Drauf achten Javascript ist casesensitiv, also auf Groß- und Kleinschreibung achten.

1
2
3
4
5
6
7
8
if(properties.indexTable == 1)
{
writeBlock(mFormat.format(31));
}
else
{
writeBlock(mFormat.format(32));
}

Um sicher zustellen, dass dabei auch kein Werkzeug im Weg ist habe ich den Codeblock gleich hinter die Referenzfahrt gesetzt.

Kommen wir jetzt zum Werkzeugwechsel. Die Chiron führt diesen nach dem M06 Befehl direkt durch ohne darauf zu achten wo dich die Spindel gerade befindet, daher sollte man drauf achten wo man sich befindet. Daher Lasse ich die Spindel in Z-Richtung zum Maschinennullpunkt fahren, bevor ich das Werkzeugwechsel. Doch zunächst zu den zwei Zeilen im Einstellungsbereich, da kann zum einen Festlegen ob der Werkzeugwechsler aktiv sein soll und wie viele Werkzeuge er hat. In meinem Fall 12, wenn man jetzt ein Werkzeug mit einer Nummer >12 anwählt, fährt die Maschine zur Seitentür und pausiert, so dass man das Werkzeug manuell wechseln kann. Den Block muss man da einsetzten, wo der Werkzeugwechsel erfolgt. Das ist meist in der Funktion „onSection“ bei „insertToolCall“.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
//Beginn Werkzeugwechsel
if (properties.useToolChanger) {
if (tool.number > properties.sizeToolChanger) {
onCommand(COMMAND_STOP_SPINDLE);
writeBlock(gFormat.format(53),"Z" + xyzFormat.format(properties.toolChangePositionZ))//move spindle to safety
writeBlock("T00", mFormat.format(6));//empty Spinde
writeComment(localize("Move to tool change position"));
writeBlock(gMotionModal.format(0), gFormat.format(53), "X" + xyzFormat.format(properties.toolChangePositionX), "Y" + xyzFormat.format(properties.toolChangePositionY));
writeBlock(mFormat.format(0), formatComment(localize("Pause program for tool change")));
}
else{
writeBlock(gFormat.format(53),"Z" + xyzFormat.format(properties.toolChangePositionZ))
writeBlock("T" + toolFormat.format(tool.number), mFormat.format(6));
}
} else {
if (!isFirstSection()) {
onCommand(COMMAND_STOP_SPINDLE);
writeBlock(gFormat.format(53),"Z" + xyzFormat.format(properties.toolChangePositionZ))//move spindle to safety
writeBlock("T00", mFormat.format(6));//empty Spinde
writeComment(localize("Move to tool change position"));
writeBlock(gMotionModal.format(0), gFormat.format(53), "X" + xyzFormat.format(properties.toolChangePositionX), "Y" + xyzFormat.format(properties.toolChangePositionY));
writeBlock(mFormat.format(0), formatComment(localize("Pause program for tool change")));
}
writeBlock("T" + toolFormat.format(tool.number), mFormat.format(6) + " (" + getToolTypeName(tool.type) + " D=" + xyzFormat.format(tool.diameter) + (tool.description ? " " + tool.description : "") + ")");
}
//Ende Werkzeugwechsel