Seite 1 von 6

Schwere Bugs in Firmware RF.01.10 (RF1000)

Verfasst: Sa 19. Dez 2015, 13:59
von mhier
Firmeware RF.01.10 NICHT VERWENDEN aktuell!

Ich habe zwei Bugs in der neuen Firmware festgestellt, einer davon reproduzierbar:

Bei eingebautem unteren z-Schalter fährt der Drucker bei Abbruch eines Drucks über das Menü so weit nach unten, dass der z-Schalter auslöst und bleibt dann dort stehen. Anschließend glaubt die Firmware, dass der obere z-Schalter ausgelöst hätte und weigert sich, nach oben zu fahren. Das sind vermutlich in Wahrscheint schon drei Bugs in Wirklichkeit: zum einen sollte die Firmware gar nicht so weit fahren. Wenn sie dann mal so weit gefahren ist, sollte sie wieder ein Stück nach oben fahren, um den z-Schalter freizugeben. Außerdem funktioniert offensichtlich die Einstellung "circuit" für den z-Endstop-Typ nicht, denn dadurch sollte der Drucker eigentlich wissen, dass er am unteren Ende der z-Achse ist.

Der zweite Bug war nicht reproduzierbar, dafür eher noch schlimmer: Nach erfolgreichem Headbed-Scan wollte ich per Tastendruck das Bett nach unten fahren. Der erste druck auf die Taste nach unten hat allerdings das Bett um ein gutes Stück nach oben gefahren und damit den z-Schalter mehr oder weniger zerstört (er funktioniert noch, aber das Board hat zwei Knicke und das ganze ist jetzt noch viel wackeliger als vorher). Auf dem Display wurde mir dann ein großer negativer Wert (< -10mm, auf jeden Fall zweistellig) angezeigt. Da RepetierHost verbunden war zu dem Zeitpunkt habe ich ein Log, siehe unten. Da ist erkennbar, dass er auf meinen Tastendruck hin erst auf -5mm, dann auf -10mm gefahren ist. Ich kann nciht ausschließen, dass ich schnell ein zweites mal gedrückt habe. Ich kann auch nicht ausschließen, dass ich in die falsche Richtung gefahren bin, aber das sollte nicht gehen! Die Firmware fährt ja neuerdings immer gleich sehr weit und sehr schnell über die Tasten, dadurch hat man keine Chance zur Korrektur mehr.

Hier das Log:

Code: Alles auswählen

12:14:19.345 : X:0.00 Y:0.00 Z:0.00 E:0.00
12:14:19.587 : scanHeatBed(): raw heat bed compensation matrix:
12:14:19.587 : front left ... front right
12:14:19.587 : ...        ...         ...
12:14:19.587 : back left  ...  back right
12:14:19.587 : ;6;0;14;34;54;74;94;114;134;154;174;194;214
12:14:19.587 : ;0;0;0;0;0;0;0;0;0;0;0;0;0
12:14:19.587 : ;29;0;-964;-1100;-1188;-1100;-1220;-1332;-1304;-1448;-1460;-1496;-1616
12:14:19.587 : ;49;0;-1052;-1192;-1212;-1224;-1268;-1416;-1352;-1496;-1612;-1504;-1588
12:14:19.587 : ;69;0;-1088;-1232;-1260;-1232;-1336;-1424;-1408;-1548;-1616;-1596;-1656
12:14:19.587 : ;89;0;-1124;-1228;-1220;-1236;-1328;-1412;-1348;-1460;-1596;-1520;-1668
12:14:19.587 : ;109;0;-1116;-1236;-1340;-1352;-1396;-1408;-1308;-1488;-1620;-1516;-1672
12:14:19.587 : ;129;0;-992;-1084;-1236;-1232;-1324;-1288;-1196;-1380;-1388;-1352;-1484
12:14:19.587 : ;149;0;-964;-1092;-1208;-1188;-1296;-1220;-1200;-1312;-1316;-1272;-1380
12:14:19.587 : ;169;0;-1020;-1048;-1192;-1204;-1244;-1208;-1108;-1268;-1288;-1236;-1308
12:14:19.587 : ;189;0;-1032;-1036;-1152;-1180;-1140;-1164;-1144;-1220;-1284;-1232;-1240
12:14:19.587 : ;209;0;-1068;-1064;-1144;-1124;-1132;-1192;-1124;-1152;-1224;-1188;-1224
12:14:19.587 : offset = 0 [steps]0
12:14:19.587 : g_uZMatrixMaxX = 13
12:14:19.587 : g_uZMatrixMaxY = 12
12:14:19.742 : scanHeatBed(): total scan time: 1170 [s]
12:14:19.742 : scanHeatBed(): g_uZMatrixMaxY.1 = 13
12:14:19.742 : scanHeatBed(): g_uZMatrixMaxY.2 = 13
12:14:19.742 : scanHeatBed(): converted heat bed compensation matrix:
12:14:19.742 : front left ... front right
12:14:19.742 : ...        ...         ...
12:14:19.742 : back left  ...  back right
12:14:19.742 : ;6;0;14;34;54;74;94;114;134;154;174;194;214;245
12:14:19.742 : ;0;-964;-964;-1100;-1188;-1100;-1220;-1332;-1304;-1448;-1460;-1496;-1616;-1616
12:14:19.742 : ;29;-964;-964;-1100;-1188;-1100;-1220;-1332;-1304;-1448;-1460;-1496;-1616;-1616
12:14:19.742 : ;49;-1052;-1052;-1192;-1212;-1224;-1268;-1416;-1352;-1496;-1612;-1504;-1588;-1588
12:14:19.743 : ;69;-1088;-1088;-1232;-1260;-1232;-1336;-1424;-1408;-1548;-1616;-1596;-1656;-1656
12:14:19.743 : ;89;-1124;-1124;-1228;-1220;-1236;-1328;-1412;-1348;-1460;-1596;-1520;-1668;-1668
12:14:19.743 : ;109;-1116;-1116;-1236;-1340;-1352;-1396;-1408;-1308;-1488;-1620;-1516;-1672;-1672
12:14:19.743 : ;129;-992;-992;-1084;-1236;-1232;-1324;-1288;-1196;-1380;-1388;-1352;-1484;-1484
12:14:19.743 : ;149;-964;-964;-1092;-1208;-1188;-1296;-1220;-1200;-1312;-1316;-1272;-1380;-1380
12:14:19.743 : ;169;-1020;-1020;-1048;-1192;-1204;-1244;-1208;-1108;-1268;-1288;-1236;-1308;-1308
12:14:19.743 : ;189;-1032;-1032;-1036;-1152;-1180;-1140;-1164;-1144;-1220;-1284;-1232;-1240;-1240
12:14:19.743 : ;209;-1068;-1068;-1064;-1144;-1124;-1132;-1192;-1124;-1152;-1224;-1188;-1224;-1224
12:14:19.743 : ;245;-1068;-1068;-1064;-1144;-1124;-1132;-1192;-1124;-1152;-1224;-1188;-1224;-1224
12:14:19.743 : offset = -964 [steps]-964
12:14:19.743 : g_uZMatrixMaxX = 14
12:14:19.743 : g_uZMatrixMaxY = 13
12:14:19.744 : saveCompensationMatrix(): valid data detected
12:14:23.690 : scanHeatBed(): the heat bed compensation matrix has been saved
12:14:24.986 : scanHeatBed(): idle pressure at start: -459
12:14:24.986 : scanHeatBed(): idle pressure at stop: -466
12:14:24.986 : scanHeatBed(): the scan has been completed
12:14:38.405 : nextPreviousZAction(): moving z aborted (max reached)
12:14:39.083 : X:0.00 Y:0.00 Z:-5.00 E:0.00
12:14:41.492 : X:0.00 Y:0.00 Z:-5.00 E:0.00
12:14:42.032 : nextPreviousZAction(): moving z aborted (max reached)
12:14:42.638 : X:0.00 Y:0.00 Z:-10.00 E:0.00
12:14:42.805 : X:0.00 Y:0.00 Z:-10.38 E:0.00

Fairerweise sollte ich erwähnen, dass ich zwei Zeilen in der Firmware kommentiert habe:

Code: Alles auswählen

diff --git a/Repetier/Printer.h b/Repetier/Printer.h
index 95f423f..92e97b8 100644
--- a/Repetier/Printer.h
+++ b/Repetier/Printer.h
@@ -1043,8 +1043,8 @@ public:
 
 #if FEATURE_HEAT_BED_Z_COMPENSATION || FEATURE_WORK_PART_Z_COMPENSATION
                // add the current z-compensation
-               fvalue += (float)Printer::compensatedPositionCurrentStepsZ;
-               fvalue += (float)g_nZScanZPosition;
+               //fvalue += (float)Printer::compensatedPositionCurrentStepsZ;
+               //fvalue += (float)g_nZScanZPosition;
 #endif // FEATURE_HEAT_BED_Z_COMPENSATION || FEATURE_WORK_PART_Z_COMPENSATION
 
 #if FEATURE_FIND_Z_ORIGIN
Diese haben aber nur Auswirkungen auf die Anzeige im Display und im Log, die -5 bzw. -10mm sind also ohne z-Kompensation. Offensichtlich fährt hier also die Firmware ein z<0 vor Kompensation an, das sollte nicht gehen. Eine entsprechende Meldung ist ja auch im Log zu finden, leider fährt er dann trotzdem!

EDIT: Ich hab noch vergessen zu erwähnen, dass der zweite Bug genau einmal aufgetreten ist, ich aber schon mindestens einen anderen HBS vorher mit der Firmeware durchgeführt hatte, wo das nicht passiert war.

Re: Schwere Bugs in Firmware RF.01.10 (RF1000)

Verfasst: Sa 19. Dez 2015, 14:32
von mhier
So jetzt ist mein Endschalter endgültig hin, dafür weiß ich jetzt, wie man es reproduzieren kann. Wenn man homed, dann die Stepper-Motoren im Menü abschaltet und anschließend per Tastendruck nach *unten* fährt, bewegt sich das Heizbett nach *oben* in den Endschalter hinein.

Also: Firmeware RF.01.10 NICHT VERWENDEN aktuell!

Re: Schwere Bugs in Firmware RF.01.10 (RF1000)

Verfasst: Sa 19. Dez 2015, 14:37
von riu
Hallo mhier.

Tut mir leid um deinn Endschalter. Wichtig wäre zu wissen wie du die Aktionen Home, Stepper aus, Bett runter bedient hast. Alles am RF1000 per Menü oder alles am Jog in Repetier-Host oder gesmischt? Eventuell ist da ein Unterschied auszumachen.

Lieben Gruß,
Udo

Re: Schwere Bugs in Firmware RF.01.10 (RF1000)

Verfasst: Sa 19. Dez 2015, 14:38
von Zaldo
Um diesen Schalter brauch es einem nicht leid zu tun. Hoffentlich hast Du dir vorher noch einen Halter für einen ordentlichen Mikroschalter ausgedruckt. Sonst PN mir deine Adresse, dann schick ich Dir einen zu. Dein Opfer soll nicht umsonst gewesen sein.

Re: Schwere Bugs in Firmware RF.01.10 (RF1000)

Verfasst: Sa 19. Dez 2015, 14:51
von mhier
Danke für die schnellen Aufmunterungen :-)

Ich habe leider keinen Halter ausgedruckt, aber ich werde mir schon was basteln. Mikroschalter habe ich zu Hauf hier herumliegen, irgendwie kriege ich einen davon schon da hin.

Ich habe aber noch herausgefunden, dass das Problem wohl nur auftritt, wenn man den Z-Schaltertyp auf "Circuit" stehen hat (wie man es für dir Fräsoption braucht). Also die genauen Schritte zum Reproduzieren:
  1. Z-Schaltertyp auf "circuit"
  2. Im Menü Quick Settings / Home all
  3. Im Menü Quick Settings / Disable steppers
  4. Per Taste am Drucker nach unten fahren
Der Drucker fährt daraufhin nach *oben* um 5mm. Offensichtlich denkt die Firmware, sie wäre am z-max Endstop (also am unteren z-Schalter).

Ich bin mir nicht sicher, ob dies die einzige Möglichkeit ist, das Problem zu reproduzieren. Deshalb lasse ich meine Warnung erstmal stehen, die neue Firmware nicht zu verwenden. Wenn einem das passiert während das Hotend gerade über dem Bett ist, zerstört man wahrscheinlich noch mehr als nur den Endschalter.

Re: Schwere Bugs in Firmware RF.01.10 (RF1000)

Verfasst: So 20. Dez 2015, 12:45
von mhier
Mein Drucker druckt inzwischen wieder und ich bin wieder auf der .59er Firmware. Damit habe ich keine Probleme, der z-Schalter wird korrekt erkannt auch mit der Circuit-Einstellung. Allerdings gab es einen weniger schlimmen Teil des Bugs hier auch schon: Wenn ich die oben beschriebenen Schritte durchführe, fährt er zwar nicht nach oben, obwohl ich nach unten fahren möchte. Er glaubt aber dennoch am unteren Endschalter zu sein und fährt deswegen gar nicht (bzw. nach oben, wenn ich dahin drücke). Ist etwas unpraktisch, da kommt man dann nur wieder raus, indem man entweder den Endschalter abzieht oder von Hand am Zahnriemen dreht (meine Bodenplatte ist eh schon seit längerem ab ;-))...

Re: Schwere Bugs in Firmware RF.01.10 (RF1000)

Verfasst: So 20. Dez 2015, 17:37
von RAU
mhier hat geschrieben:... oder von Hand am Zahnriemen dreht (meine Bodenplatte ist eh schon seit längerem ab ;-))...
Bevor du nun immer wieder unter den Boden greifst bis dich irgendwann der Schlag trifft, kommt hier der absolute High-Tech Tip:

Materialliste:
- ein Blatt Haushaltspapier, gefaltet

Anbringung:
- siehe Bild
P1020187.jpg

Re: Schwere Bugs in Firmware RF.01.10 (RF1000)

Verfasst: So 20. Dez 2015, 19:37
von Digibike
Von der Unfallverhütung her Top..! :woohoo: :good:

Re: Schwere Bugs in Firmware RF.01.10 (RF1000)

Verfasst: Mo 21. Dez 2015, 11:44
von mhier
:-D

Man kann das ja auch machen, wenn der Drucker aus ist ;-)

Re: Schwere Bugs in Firmware RF.01.10 (RF1000)

Verfasst: Mo 21. Dez 2015, 11:54
von Digibike
Ja, will ich auch hoffen (mach ich selber auch, wenn er vom Netz ist), aber der hinweis fehlte halt
und die Antwort und Aufmachung selbiger von Rau war doch einfach der Brüller, oder? :good:

Ich fands jedenfalls super!

Gruß, Christian