Browse Source

Implement M203, setting maximum Z feedrate

It's important.

Contributes to issue CURA-5561.
Ghostkeeper 6 years ago
parent
commit
1037b09188
1 changed files with 7 additions and 1 deletions
  1. 7 1
      50_inst_per_sec.py

+ 7 - 1
50_inst_per_sec.py

@@ -228,7 +228,7 @@ class Command:
                     current_abs_feedrate = [abs(f) for f in current_feedrate]
                     feedrate_factor = min(1.0, MACHINE_MAX_FEEDRATE_X)
                     feedrate_factor = min(feedrate_factor, MACHINE_MAX_FEEDRATE_Y)
-                    feedrate_factor = min(feedrate_factor, MACHINE_MAX_FEEDRATE_Z)
+                    feedrate_factor = min(feedrate_factor, buf.max_z_feedrate)
                     feedrate_factor = min(feedrate_factor, MACHINE_MAX_FEEDRATE_E)
                     #TODO: XY_FREQUENCY_LIMIT
 
@@ -337,6 +337,11 @@ class Command:
         if cmd_num == 140:
             estimated_exec_time_in_ms = 0.0
 
+        # M203: Set maximum feedrate. Only Z is supported. Assume 0 execution time.
+        if cmd_num == 203:
+            value_dict = get_value_dict(parts[1:])
+            buf.max_z_feedrate = value_dict.get("Z", buf.max_z_feedrate)
+
         # M204: Set default acceleration. Assume 0 execution time.
         if cmd_num == 204:
             value_dict = get_value_dict(parts[1:])
@@ -377,6 +382,7 @@ class CommandBuffer:
         self.max_xy_jerk = MACHINE_MAX_JERK_XY
         self.max_z_jerk = MACHINE_MAX_JERK_Z
         self.max_e_jerk = MACHINE_MAX_JERK_E
+        self.max_z_feedrate = MACHINE_MAX_FEEDRATE_Z
 
         # If the buffer can depletes less than this amount time, it can be filled up in time.
         lower_bound_buffer_depletion_time = self._buffer_size / self._buffer_filling_rate  # type: float