Zaldo hat geschrieben:Siehst Du, genau das ist der Grund warum ich mich hierzu schon überhaupt nicht mehr äußern will.
Vielleicht drückst du dich unklar aus?
Oder - viel wahrscheinlicher - ich bin einfach nur ein Dickopf?
Zaldo hat geschrieben:Er müsste nun lediglich noch die Erkenntnis treffen, dass X2 folglich der tiefste Punkt im Bett ist, und diesen als Z=0 definieren,
Ich glaube, hier liegt das "Problem" oder vielleicht eher Missverständnis. Es macht technisch keinen Unterschied, als was der Drucker diesen (willkürlichen) Punkt definiert.
Zaldo hat geschrieben: und die Differenz in µSteps zu den anderen Punkten als Offset anwenden. Somit weiß der Drucker fortan an jedem Scanpunkt, wieviele µSteps er den Tisch ab Auslösung des "Oberen Schalters" noch hochfahren darf, bis der Extruder gerade so das Bett berührt.
Das weiß er auch ohne die Zwischentransformation. Die bringt rein gar nichts, sondern macht es nur komplizierter und Fehleranfällig. Eben genau diese Denkweise (Z=0 ist mein Minimum, ich muss nur noch die Z-Kompensation addieren) führt zu dem aktuellen Fehlverhalten der Firmware. Das Minimum ist da, wo die Düse das Heizbett berührt. Den (internen) Z-Wert muss die Firmware für jedes X/Y neu ausrechnen. Ob diese internen Z-Werte am Ende alle negativ sind oder alles so umtransformiert wird, dass einer davon 0 und alle andere positiv sind, ändert nichts am Rechenaufwand an der Stelle (fügt höchstes woanders noch welchen hinzu).
Richtig wird die Rechnung erst dann, wenn (in der gegenwärtigen Koordinaten-Definiton mit Z=0 am Z-Schalter) das gleiche Ergebnis heraus kommt, egal wie groß die Z-Kompensationswerte werden. Das ist aktuell nicht der Fall und für micht ganz klar ein Bug.
Zaldo hat geschrieben:Nebenbei brauch er bei jeder Motoransteuerung nur die Schritte - damit meine ich die tatsächlichen Schrittbefehle an den Motorcontroller - mitzuzählen (der Bauraum besteht aus einer absoluten Anzahl µSteps) und schon habe ich die Variable, die meine absolute physische Position enthält.
Nein! Wenn du dich in XY bewegst und den Z Motor stehen lässt, ändern sich deine Schritte in Z nicht, wohl aber der Abstand zwischen Düse und Heizbett! Die Variable, die du beschreibst, gibt es schon, aber sie hilft eben nicht. So oder so muss eben *vor* der Bewegung berechnet werden, ob der Sicherheitsabstand unterschritten wird. Das kann wunderbar - ohne Einführen von irgendwelchen neuen globalen Variablen (das ist eh ein grauenhafter Programmierstil) - abgefragt werden in dem Moment, wo die Z-Kompensation berechnet wird. Das ist ein Zweizeiler!
Zaldo hat geschrieben:In letzter Konsequenz fragt man bevor man einen Schrittbefehl an den Motor in Z-Minus Richung abgibt ab, ob besagte Variable noch schritte in dieser Richtung zulässt, und wenn nicht, führt man die Bewegung nicht aus.
Reicht nicht! Man kann auch mit einer reinen XY-Bewegung den Sicherheitsabstand unterschreiten!
Zaldo hat geschrieben:Das ist alles kein Hexenwerk, das meißte davon macht der Drucker doch heute schon, halt nur nicht richtig.
Exakt
So, um noch mal aus der unübersichtlich gewordenen Diskussion das Wesentliche rauszuziehen:
RF1000 hat geschrieben:Vor dem kommenden Master-Stand wird sich an dem grundsätzlichen Verhalten der Firmware nichts mehr ändern, wann genau welche weiteren Features umgesetzt werden wird intern noch geklärt, dazu kann ich noch nichts Verbindliches sagen.
Liebes Conrad-Team,
ich möchte hiermit einen offiziellen Bugreprt erstellen: Laut Produktbeschreibung understützt der RF1000 die "Automatische Vermessung der Druckplatte mit intelligenter Druckanpassung". Das suggeriert, dass neben eventuellen Unebenheiten in der Druckplatte auch gewissen Ungenauigkeiten in der Justage kompensiert werden. In der aktuellen Firmware wird dies durch falsche Annahmen und infolge dessen falsche Berechnungen unnötigerweise verhindert bzw. extrem eingeschränkt. Konkret sind folgende Punkte falsch umgesetzt:
- 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 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.
Ob eine Umsetzung korrekt ist, kann u.a. durch folgende Tests nachgewiesen werden:
1. Test: Extreme Dejustage von Z-Min
- Z-Min-Schalter durch Lichtschranke o.ä. ersetzen, so dass er sich zerstörungsfrei um mehrere Zentimeter überfahren lässt.
- Z-Min so justieren, dass er mehrere Zentimeter über dem Heizbett auslöst
- Firmware-Toleranzen für den Heizbettscan für die Dauer dieses Tests so festlegen, dass ein Scan trotzdem durchgeführt werden kann.
- Heizbettscan durchführen
- Ein Objekt drucken, welches höher als HEAT_BED_Z_COMPENSATION_MAX_STEPS ist.
- Das Objekt muss korrekt gedruckt werden, d.h. es muss die gleiche Form (insb. Höhe) haben, wenn die Datei mit einem normal justierten Z-Min gedruckt wird.
2. Test: Extreme Dejustage des Heizbetts
- Das Heizbett wird absichtlich schief angebracht, z.B. durch 5mm höhere Abstandshalter auf einer Seite.
- Z-Min so justieren, dass Z=0 an allen Stellen oberhalb des Heizbetts liegt, an der höchsten Stelle des Betts z.B. 1mm darüber (sollte nach dem letzten Test keine Rolle mehr spielen).
- Firmware-Toleranzen für den Heizbettscan für die Dauer dieses Tests so festlegen, dass ein Scan trotzdem durchgeführt werden kann.
- Heizbettscan durchführen, Z-Kompensation einschalten
- Verschiedene Positionen nahe dem Heizbett über das ganze Bett verteilt anfahren. Für kleine Z muss der Abstand zwischen Düse und Heizbett immer
dem im G-Code angegebenen Z-Wert entsprechen. Größere Ungenauigkeiten als bei einem korrekt justieren Heizbett sind zwar zu erwarten, jedoch müssen sie immer noch vernachlässigbar gegenüber der De-Justage sein (also Abweichungen sehr viel kleiner als die o.g. 5mm). Für Z > HEAT_BED_Z_COMPENSATION_MAX_STEPS muss der Abstand jeweils zur mittleren Höhe des Heizbetts stimmen (also in der Mitte des Heizbetts). Das dürfte nicht ganz einfach exakt zu messen sein, wichtig ist aber zu unterscheiden, dass nicht der höchste oder tiefste Punkt auf dem Heizbett als Referenz genommen wird.
- Der Versuch, den Sicherheitsabstand zu unterschreiten, muss in allen Bereichen des Heitzbetts unterbunden werden und zu einem Fehlerzustand (Druckabbruch) führen. Da ggf. die Genauigkeit nicht mehr ausreichend ist, kann der Sicherheitsabstand für diesen Test erhöht werden, es muss dann aber mechanisch nachgemessen werden, dass der eingestellte Sicherheitsabstand korrekt eingehalten wird.
- Alle Tests, insbesondere die Prüfung des Sicherheitsabstand, müssen für alle Möglichkeiten durchgeführt werden, mit denen Bewegungen ausgeführt werden können (GCodes, Menü, direkte Z-Tasten, etc.).
Solange diese Tests nicht das beschriebene Ergebnis liefern, hat die Firmware Bugs und entspricht nicht den Spezifikationen. Ich erwarte jetzt zunächst mal vom Conrad-Team, dass dies so anerkannt wird. Die bisherige Aussage "wird sich an dem grundsätzlichen Verhalten der Firmware nichts mehr ändern" etc. ist für mich nicht akzeptabel, da es hier nicht um Features sondern Spezifikations-widriges Verhalten geht.
Bisher hat sich Conrad doch immer eigentlich recht kulant gezeigt, ich verstehe nicht, was hier jetzt das Problem ist. Nur weil unter Laborbedingungen der Drucker trotz der Bugs anständig druckt, ist er so einfach nicht marktreif. Alle Nase lang kommen doch Beschwerden, die wahrscheinlich auf diese Probleme zurückzuführen sind. Klar lässt sich das oft mit Basteln beheben, aber dafür hab ich nicht 2000 EUR ausgegeben!
Wenn ihr jetzt sagt, ihr überlegt neue Features einzuführen, die diese Probleme vielleicht auf andere Weise beseitigen (z.B. der öfters andiskutierte Abstands-Scan unmittelbar vor dem Druck), wäre das ja durchaus auch eine akzeptable Lösung (in dem Beispiel sogar eine sehr gute). Aber dann muss das doch mal klar gesagt werden. Wenn das richtig umgesetzt wird, würde die Firmware ja auch die o.g. Tests erfolgreich absolvieren.
PS: Solche Tests sind extrem wichtig, werden aber anscheinend nicht durchgeführt von Conrad.
Nur so lässt sich nachweisen, dass die angepriesenen Features überhaupt eine Wirksamkeit haben! Vielleicht lässt sich der eine oder andere Test im Detail anders durchführen, grundsätzlich muss aber an extremen Fällen gezeigt werden, dass das ansonsten quasi unsichtbare Verhalten wirklich korrekt ist.