From 867bf09c5dabe7fe137ca794c118f0da98d11450 Mon Sep 17 00:00:00 2001 From: cnc Date: Fri, 5 Jun 2026 21:59:26 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A1=A5=E9=BD=90=20M51=20=E5=85=A8=E4=B8=BB?= =?UTF-8?q?=E8=BD=B4=20source-linked=20=E8=A6=86=E7=9B=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- test-linuxcnc-source-link.sh | 25 +++++++++++++++++++ .../linuxcnc_multi_spindle_override_all.ngc | 6 +++++ 2 files changed, 31 insertions(+) create mode 100644 tests/gcode/linuxcnc_multi_spindle_override_all.ngc diff --git a/test-linuxcnc-source-link.sh b/test-linuxcnc-source-link.sh index f17a8bc..6c1e1c4 100755 --- a/test-linuxcnc-source-link.sh +++ b/test-linuxcnc-source-link.sh @@ -292,6 +292,12 @@ CNC_SIM_RS274_VAR="$var_file" \ INI_FILE_NAME="$multi_spindle_override_file" CNC_SIM_RS274_VAR="$var_file" \ "$build_dir/linuxcnc_rs274_source_dump" tests/gcode/linuxcnc_multi_spindle_override.ngc \ >"$output_dir/cnc_sim_linuxcnc_source_multi_spindle_override.json" +# Source basis: LinuxCNC src/emc/rs274ngc/rs274ngc_pre.cc init reads +# [TRAJ] SPINDLES from INI_FILE_NAME, and interp_convert.cc M51 without a $ +# selector applies speed override changes to every configured spindle. +INI_FILE_NAME="$multi_spindle_override_file" CNC_SIM_RS274_VAR="$var_file" \ + "$build_dir/linuxcnc_rs274_source_dump" tests/gcode/linuxcnc_multi_spindle_override_all.ngc \ + >"$output_dir/cnc_sim_linuxcnc_source_multi_spindle_override_all.json" CNC_SIM_RS274_VAR="$var_file" \ "$build_dir/linuxcnc_rs274_source_dump" tests/gcode/linuxcnc_modal_state.ngc \ >"$output_dir/cnc_sim_linuxcnc_source_modal_state.json" @@ -1991,6 +1997,24 @@ if multi_spindle_override_states != expected_multi_spindle_override_states: f"{multi_spindle_override_states!r}" ) +multi_spindle_override_all = json.loads((OUTPUT_DIR / "cnc_sim_linuxcnc_source_multi_spindle_override_all.json").read_text()) +multi_spindle_override_all_states = [ + (event["line"], event["reserved"], event["tool"], event["feed"]) + for event in multi_spindle_override_all + if event["type"] == "comment" and event["reserved"] == 51 +] +expected_multi_spindle_override_all_states = [ + (4, 51, 0, 0), + (4, 51, 1, 0), + (5, 51, 0, 1), + (5, 51, 1, 1), +] +if multi_spindle_override_all_states != expected_multi_spindle_override_all_states: + raise SystemExit( + "unexpected source-linked M51 all-spindles override states: " + f"{multi_spindle_override_all_states!r}" + ) + control_mode_tolerances = json.loads((OUTPUT_DIR / "cnc_sim_linuxcnc_source_control_mode_tolerances.json").read_text()) control_mode_tolerance_states = [ (event["line"], event["reserved"], event["feed"]) @@ -3770,6 +3794,7 @@ echo "dumped $output_dir/cnc_sim_linuxcnc_source_spindle_orient.json" echo "dumped $output_dir/cnc_sim_linuxcnc_source_multi_spindle_orient.json" echo "dumped $output_dir/cnc_sim_linuxcnc_source_io_controls.json" echo "dumped $output_dir/cnc_sim_linuxcnc_source_override_controls.json" +echo "dumped $output_dir/cnc_sim_linuxcnc_source_multi_spindle_override_all.json" echo "dumped $output_dir/cnc_sim_linuxcnc_source_modal_state.json" echo "dumped $output_dir/cnc_sim_linuxcnc_source_modal_autorestore.json" echo "dumped $output_dir/cnc_sim_linuxcnc_source_threading_sync.json" diff --git a/tests/gcode/linuxcnc_multi_spindle_override_all.ngc b/tests/gcode/linuxcnc_multi_spindle_override_all.ngc new file mode 100644 index 0000000..19b0767 --- /dev/null +++ b/tests/gcode/linuxcnc_multi_spindle_override_all.ngc @@ -0,0 +1,6 @@ +G21 G90 G17 +(Source basis: LinuxCNC src/emc/rs274ngc/rs274ngc_pre.cc init reads [TRAJ] SPINDLES from INI_FILE_NAME.) +(Source basis: LinuxCNC src/emc/rs274ngc/interp_convert.cc M51 without $ applies to all configured spindles.) +M51 P0 +M51 P1 +M30