RF1000 hat geschrieben:deine Tests 1 und 2 fangen damit an, dass die Einstellung von Z-Min signifikant außerhalb der vom Handbuch vorgegebenen Toleranz erfolgt. Weder der Microschalter vom RF1000 noch die Lichtschranke vom RF2000 überleben es auf Dauer, wenn sie um z.B. 5 mm überfahren werden, der Heizbettscan ist in einer derartigen Konfiguration daher mit der originalen Hard- und Firmware nicht möglich.
Dass das nicht mit der originalen Hardware geht, habe ich geschrieben. Die nötigen Modifikationen sind relativ trivial machbar. Seit mal nicht so fantalsielos. Man kann auch einfach einen entsprechend dicken Metallklotz zwischen Schalter und Schraube halten während das Z-Homing durchgeführt wird, und ihn dann wieder rausnehmen. Das hat den selben Effekt, denk ich. Sonst halt eine horizontale Gabellichtschranke, die kann man beliebig weit überfahren!
RF1000 hat geschrieben:Wenn du einen Z-Min Schalter verwenden würdest der diese Attacke überlebt,
Das wäre keine Attacke. Eher im Gegenteil, ein entsprechend konstruierter Z-Min wäre von vorn herein wünschenswert gewesen...
RF1000 hat geschrieben:dann würde dein Test 1 tatsächlich nicht die gewünschte Objekthöhe bringen.
Eben. Das ist der eine der beiden Bugs.
RF1000 hat geschrieben:Test 2 sollte aber problemlos funktionieren.
Nein, wegen Z_OVERRIDE_MAX. Und das ist dann der andere der beiden Bugs! Wenn Z_OVERRIDE_MAX so groß wäre, dass lediglich der Z-Min-Schalter mechanisch geschützt wäre, könnte ich das ja noch verstehen. Es ist aber meines Wissens bei 0.5mm, was die obere Grenze für den laut Handbuch zugelassenen Abstand zwischen Düse und Heizbett bei der Kalibration ist. Dazu kann dann aber noch Unebenheit des Heizbetts kommen!
mhier hat geschrieben:
Solche Tests sind extrem wichtig, werden aber anscheinend nicht durchgeführt von Conrad.
RF1000 hat geschrieben:Das ist eine falsche Annahme. Beide Tests kannst du auch mit einem korrekt eingestellten Z-Min Schalter durchführen, mit einer Abstandslehre kann man den Abstand von Heizbett <-> Extruder schließlich auf zumindest 0,05 mm genau ermitteln.
Ok, hier habe ich vielleicht etwas übertrieben. Richtig ist, dass sich mit der entsprechenden Messpräzision die Bugs auch bei spezifikationsgemäßer Justage nachweisen lassen. Eben deswegen ist es ja ein Bug. Ich glaube, das von mir beschriebene Messverfahren ist aber dennoch einfacher, um die Problematik zu sehen. Der Umbau am Z-Schalter ist vergleichsweise einfach gegenüber einer auf 0.05mm genauen Messung bei Z>HEAT_BED_Z_COMPENSATION_MAX_STEPS. So oder so, die beschriebenen Tests wurden offensichtlich nicht oder nicht richtig durchgeführt, oder die dabei sichtbar gewordenen Probleme schlicht ignoriert bzw. auf Anforderungen an die Kalibrationsgenauigkeit abgewälzt. Gaaanz tolle Lösung...
RF1000 hat geschrieben:Zusätzlich kann man sich die Z-Position auch im Display wahlweise auch "ab Heizbett" oder "ab Z-Min" anzeigen lassen und kann damit die Messung laut Abstandslehre kontrollieren. Falls du Interesse an unseren entsprechenden G-Codes dafür hast kann ich sie dir einmal zusammen mit dem Testablauf zusenden.
Die Frage ist, ob man der Anzeige vertrauen kann. Die basiert ja auch nur auf u.U. fehlerhaften Rechnungen. Wahrscheinlich kann man beide beschriebene Bugs aber auch da schon sehen, wenn man denn genau genug hinsieht und alles nachrechnet. Das wäre mir zu Mühsam...
RF1000 hat geschrieben:Wir sind bei der Diskussion nun an dem Punkt angelangt wo wir grundsätzlich darüber übereinstimmen, dass die RF.01.31 die Höhe von den ersten Layern exakt so abfährt, wie der G-Code es will (und zwar unabhängig davon, ob dafür Z-Min überfahren werden muss oder nicht). Korrekt?
Ich glaube, dieser Punkt war nie ernsthaft strittig?
RF1000 hat geschrieben:Diese Funktionalität wird durch FEATURE_Z_MIN_OVERRIDE_VIA_GCODE erreicht - wenn dieses Funktionalität aktiv ist kann G-Code den Z-Min Schalter überfahren. Z_OVERRIDE_MAX ist die daraus resultierende, notwendige Konsequenz die verhindert, dass der G-Code den Z-Min Schalter zu weit überfährt. Bis zu diesem Punkt ist es noch nicht relevant, ob die Z-Kompensation aktiv ist oder nicht, weil ich ja ein "G1 Z-10" jederzeit an die Firmware senden könnte ... und die Firmware muss das korrekt verarbeiten, ohne den Extruder durch das Heizbett zu stoßen.
Ich möchte nicht den ganzen Sermon noch zum 10. Mal wiederholen. Z_OVERRIDE_MAX verhindert nicht, dass der Extruder ins Heizbett fährt! Umgekehrt verhindert Z_OVERRIDE_MAX, dass der G-Code korrekt interpretiert wird, wenn die Justage von Z-Min nicht perfekt ist, und das stillschweigend! Das ist wie gesagt der zweite Bug. Und du gehst hier schon wieder nicht darauf ein!
RF1000 hat geschrieben:Die nächste Evolutionsstufe wäre das Verhindern der Berührung zwischen Heizbett und Extruderspitze auf Basis der bekannten Heizbettmatrix.
Das ist die
einzige Möglichkeit, diese Berührung zu verhindern!
RF1000 hat geschrieben:Das wurde in diesem Schritt noch nicht umgesetzt weil:
- es unter normalen Bedingungen nicht auftreten kann (weil G-Code keine negativen Z-Positionen anfährt, Z-Min mechanisch korrekt eingestellt ist und die Firmware immer korrekt erkennt, ob Z-Min oder Z-Max ausgelöst ist)
Und wozu soll dann Z_OVERRIDE_MAX da sein? Wenn ihr der Meinung seid, dass dieses Sicherheitsfeature aktuell nicht nötig ist, schmeisst bitte Z_OVERRIDE_MAX raus! Es kann übrigens auch mit G-Codes, die nur positive Z-Positionen haben, passieren, wenn der Nutzer zu lange manuell mit den Pfeiltasten nach oben fährt. Von mir aus kann das unter Bedienfehler laufen, aber dann nehmt das falsche Z_OVERRIDE_MAX raus!
RF1000 hat geschrieben:- dieser Schritt weitere Abhängigkeiten erzeugt, z.B. muss ja der Extruder potenziell auch bei X/Y-Bewegungen vom Heizbett weggefahren werden, um den gewünschten Sicherheitsabstand zu behalten
Nein, nein und nochmals nein! Wenn der G-Code zu einer Unterschreitung des Sicherheitsabstands führt, muss bedingungslos der Druck gestoppt werden! Es gibt nichts schlimmeres, als einen klaren Fehler dadurch zu "korrigieren", dass stillschweigend der nächst erlaubte Zustand verwendet wird. Wenn der G-Code so geschrieben ist, dass der Sicherheitsabstand unterschritten wird, ist der G-Code falsch und kann nicht gedruckt werden! Auch wenn Z_OVERRIDE_MAX den Schalter mechanisch schützen soll, gibt es wieder keinen Grund, dann weiterzudrucken aber das Objekt zu verhunzen. Da muss eine klare Fehlermeldung her!
RF1000 hat geschrieben:- dieser Schritt unter manchen Umständen keine Verbesserung bringt, z.B. wenn die Heizbettmatrix nicht vorhanden oder falsch ist, wenn die Z-Kompensation nicht eingeschalten worden ist, wenn das Bett sehr schräg ist und die Geschwindigkeit in X/Y-Richtung sehr schnell ist, ...
Wenn der Scan ungültig ist, gibt es absolut keine Möglichkeit die Kollision zu verhindern. Dann muss eben ein Überfahren des Z-Schalters ganz unterbunden werden. Auch schon x-mal durchgekaut und x-mal von euch ignoriert
Klar, wenn das Bett sehr schräg ist, wird irgendwann die Kompensation zu ungau werden. Dann muss das Bett aber extrem schräg sein, und zwar mit dem blosen Auge sichtbar. Ich denke, es ist unstrittig, dass das kein erlaubter Benutzungszustand ist.
Was das mit der Geschwindigkeit in XY zu tun hat, überblicke ich gerade nicht. Falls die Korrektur in Z u.U. nicht schnell genug erfolgen kann, darf die Bewegung in XY halt nicht mit der Geschwindigkeit durchgeführt werden, sonst erfüllen wir ja wieder nicht die Geometrie, die der G-Code vorgibt.
RF1000 hat geschrieben:Ist dir denn ein Scenario bekannt, bei dem es mit der RF.01.31 und einem korrekt (= laut Anleitung) eingestellten Z-Min Schalter zur Berührung zwischen Extruder und Heizbett kommen kann, ohne dass du die Z-Achse manuell bis zur Berührung nach oben fährst? Falls ja, können wir bitte den entsprechenden G-Code bekommen?
Jetzt mach ich mir extra die Mühe und schreibe ganz klar auf, wo die Bugs liegen, und dann liest du es nicht.... grrr.... Also noch mal:
mhier hat geschrieben:
- Das langsame "Ausschleichen" der Z-Kompensation (HEAT_BED_Z_COMPENSATION_MIN_STEPS/HEAT_BED_Z_COMPENSATION_MAX_STEPS -> schlechte Namen übrigens...) fährt nicht nur die Kompensation der Unebenheiten zurück sondern auch die Korrektur des mittleren Abstand zwischen Düse und Heizbett bei Z=0 (Z-Min-Schalter). Da dieser Abstand nie im Mittel 0 sein kann/darf (laut Bedienungsanleitung), führt dies zu falschen Objekthöhen.
- Das FEATURE_ENABLE_Z_SAFETY (=Z_OVERRIDE_MAX ??? Eure Namensgebung ist echt schwer nachzuvollziehen... Ich meinte hier Z_OVERRIDE_MAX) ist falsch umgesetzt und behindert u.U. stillschweigend die Z-Kompensation (nämlich dann, wenn das Limit greift). Umgekerht bietet es gerade keinen Schutz gegen Berühren von Düse und Heizbett. Dieses Feature ist zwar nicht explizit in der Produktbeschreibung erwähnt, man darf jedoch davon ausgehen, dass mit vernünftigem Aufwand umsetzbare Schutzmechanismen in einem Gerät dieser Preisklasse implementiert sind, und dass diese nicht den normalen Betriebsablauf unnötigerweise stören. Eine korrekte Implementierung würde aus der bekannten Vermessung des Heizbettes jeweils den wahren Abstand zwischen Heizbett und Düse berechnen und jeden Befehl, der zur Unterschreitung führen würde, verweigern. Dies darf auch nicht stillschweigend passieren sondern muss zu einem sofortigen Abbruch des Druckes führen.
Es geht mir nicht primär darum zu verhindern, dass die Berührung stattfinden kann. Ich will einfach nur anständig drucken können... Vielleicht kommt das Missverständnis daher, dass ich mich über die zugeschliffene Düse beschwert hatte. Die Situation war hier aber eben, dass Z_OVERRIDE_MAX verhindert hat, dass die Bewegung wegen zu großen Drucks gestoppt wurde. Ein weiterer unangenehmer Nebeneffekt von Z_OVERRIDE_MAX, aber hier eher nicht Gegenstand der Diskussion!