Hallo Dino,
Leider bin ich weder in S3D noch in Repetier Server bewandert, kann folglich wenig helfen.
Was den End-GCode angeht, kann ich einiges beitragen.
Gehen wir die Befehle Schritt für Schritt durch:
M92 E259 ; Neue E-Steps setzen -- machen wir diese Zeile zum Schluss, da es am meisten Erklärung bedarf
G28 X0 ; home X-axis -- Sollte klar sein: hier wird NUR die X-Achse bis zum Auslösen des Endschalters gefahren (ganz nach links)
M104 S0 ; turn off extruder -- Heizung des Extruders ausschalten
M140 S0 ; turn off bed -- Bett-Heizung ausschalten
G91 ; relative positioning -- Diese Zeile ist für die folgende Zeile wichtig. Damit gelten ab hier alle Koordinatenangaben nicht mehr als Absolutwerte sondern relativ! In der folgenden Zeile wird das Filament etwas zurückgezogen (exakt 1mm). Da der End-GCode aber für alle Druckaufträge gelten soll, und man aber keine Ahnung hat, welcher E-Wert zu diesem Zeitpunkt herrscht (die Position des Filaments im Extruder), kann man nur relativ arbeiten.
G1 E-1 F300 ; retract the filament a bit before lifting the nozzle to release some of pressure -- Hier wird, wie oben beschrieben, das Filament um 1mm zurück gezogen.
G1 Z+0.5 E-5 X-20 Y-20 F9000 ; move Z up a bit and retract filament even more -- Hier fährt
a) das Bett um 0.5mm nach unten,
b) das Filament wird um weitere 5mm zurück gezogen,
c) der Extruder um 20mm weiter nach links beordert (was nicht stattfinden wird, da bereits der Endschalter, siehe zweite Zeile, erreicht wurde), und schließlich
d) das Bett um 20mm nach hinten beordert (was nur dann 20mm wird, falls das Bett 20 oder mehr Millimeter vorne ist - sonst fährt es bis an den Endschalter oder gar nicht, falls schon am Endschalter).
Der letzte Teil des Befehls, eben das Bett um 20mm nach hinten fahren zu lassen, ist vielleicht ungewollt. Es entspricht keinesfalls dem 'Object_Output_Script'. Dort wird das Bett nach vorne Bewegt, der Zugänglichkeit wegen. Möchtest du das auch erreichen, müsstest du das 'Y-20' durch etwas wie 'Y220' ersetzen. Damit fährt das Bett von der augenblicklichen Position um 220mm nach vor (oder bis an die in der Firmware vorgegebene Grenze von Y=245mm, absolut gesehen), normalerweise ohne zu rattern, falls alles korrekt eingestellt ist.
M84 ; disable motors -- Das ist klar. da wird der Motorstrom abgeschaltet (und man kann das Bett und den Extruder hin und her bewegen).
Jetzt zur ersten Zeile:
M92 E259 ; Neue E-Steps setzen -- Ich hatte den Befehl noch nie in Verwendung. Der Sinn ist mir aber klar. Ob du das wirklich möchtest, möchte ich bezweifeln. Der Befehl ändert, bis zum Neustart des Druckers oder bis zur neuerlichen Eingabe des Befehls, die Motor-Schritte pro Millimeter für die angegebene Achse (in deinem Fall des Extruders). Mit einem Original-RF1000 oder RF2000 mit dem dort eingesetzten Rändelrad benötigt der Extruder 280 (Mikro)Schritte um ein Millimeter Filament zu fördern. Ich habe meinen Extruder unter Arbeitsbedingungen
kalibriert und komme auf 256.2 Schritte (was deinem Wert nahe kommt). Eine vorübergehende Kalibrierung, wie du es machst (mit M92), sollte gar nie nötig sein, und schon gar nicht am Ende eines Druckauftrags.
Falls du jedoch den Trick einsetzen willst um die Abweichung in 'Z' zu korrigieren, wäre so etwas natürlich möglich (und da eher im Start-GCode).
Es fragt sich, ob bei dir so eine Abweichung überhaupt besteht, also eine falsche Z Kalibrierung. So eine Abweichung (Kalibrierungsfehler) wäre linear. Wenn du bei einem Würfel mit 20mm Höhe um 0.3mm zu hoch bist, dürftest du beim ersten Layer mit 0.2mm bloß 0.0
03mm zu hoch sein. Das ist bei dir nicht der Fall, da sind es konstant 0.3mm. Daher tippe ich eher auf einen zu großen Abstand zwischen Bett und Düse (bei Z=0). Dazu können Abweichungen, wie sie AtlonXP angesprochen hat, noch hinzu kommen (wobei gelegentlich auch abgezogen wird).
Hoffentlich kann ein anderer wegen Repetier Server und S3D weiterhelfen.
COVID-19 zum Teufel! (Der hätte es verdient.)
mjh11