Schwere Bugs in Firmware RF.01.10 (RF1000)
Verfasst: Sa 19. Dez 2015, 13:59
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:
Fairerweise sollte ich erwähnen, dass ich zwei Zeilen in der Firmware kommentiert habe:
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.
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
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.