提示词:补齐 M51 多主轴源链接覆盖

结论:新增 [TRAJ] SPINDLES=2 的 source-linked fixture,验证 LinuxCNC interp_convert.cc 中 M51 带  只切换选定主轴的 speed override;INI 来源为 rs274ngc_pre.cc init 读取 INI_FILE_NAME。未扩展 smoke 语义。检查通过:./test-linuxcnc-source-link.sh;./test-native.sh。
This commit is contained in:
cnc
2026-06-05 21:09:07 +08:00
parent 1b60bc2b2e
commit eb91ced792
3 changed files with 31 additions and 0 deletions

View File

@@ -173,6 +173,7 @@ make --output-sync=target -j"$build_jobs" -f "$source_link_makefile"
var_file="$build_dir/rs274ngc-source.var"
base_var_file="$build_dir/rs274ngc-source-base.var"
ini_named_parameter_file="$(pwd)/tests/gcode/linuxcnc_ini_named_parameter.ini"
multi_spindle_override_file="$(pwd)/tests/gcode/linuxcnc_multi_spindle_override.ini"
output_dir="$build_dir/outputs"
mkdir -p "$output_dir"
cp "$linuxcnc_root/tests/halui/jogging/sim.var" "$base_var_file"
@@ -257,6 +258,12 @@ done
CNC_SIM_RS274_VAR="$var_file" \
"$build_dir/linuxcnc_rs274_source_dump" tests/gcode/linuxcnc_override_controls.ngc \
>"$output_dir/cnc_sim_linuxcnc_source_override_controls.json"
# Source basis: LinuxCNC src/emc/rs274ngc/rs274ngc_pre.cc init reads
# [TRAJ] SPINDLES from INI_FILE_NAME, and interp_convert.cc M51 applies
# speed override changes only to the selected $ spindle when present.
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"
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"
@@ -1846,6 +1853,22 @@ expected_override_states = [
if override_states != expected_override_states:
raise SystemExit(f"unexpected source-linked M48-M53 override states: {override_states!r}")
multi_spindle_override = json.loads((OUTPUT_DIR / "cnc_sim_linuxcnc_source_multi_spindle_override.json").read_text())
multi_spindle_override_states = [
(event["line"], event["reserved"], event["tool"], event["feed"])
for event in multi_spindle_override
if event["type"] == "comment" and event["reserved"] == 51
]
expected_multi_spindle_override_states = [
(4, 51, 1, 0),
(5, 51, 1, 1),
]
if multi_spindle_override_states != expected_multi_spindle_override_states:
raise SystemExit(
"unexpected source-linked M51 selected-spindle override states: "
f"{multi_spindle_override_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"])