Files
cnc_wams/web-rtcp-5axis-xyzbc-trt-sim-plan/doc/xyzbc-trt-runtime-files.md
2026-07-02 08:01:34 -04:00

727 lines
19 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# xyzbc-trt 当前运行配置文件说明
本文档记录当前运行的 LinuxCNC RTCP/TCP 五轴示例:
`configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzbc-trt.ini`
它是一个 `XYZBC` table rotary/tilting 五轴仿真配置,使用 AXIS 主界面、PyVCP 面板、Vismach 三维机床模型,以及 `switchkins` 方式在不同运动学模式之间切换。
当前对标的 run-in-place 根目录:
```text
/home/mes123456/cnc_wams/linuxcnc
```
当前启动命令:
```bash
/home/mes123456/cnc_wams/linuxcnc/scripts/rip-environment linuxcnc \
/home/mes123456/cnc_wams/linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzbc-trt.ini
```
## 当前进程
当前目标配置运行时的关键进程如下:
```text
/bin/bash /home/mes123456/cnc_wams/linuxcnc/scripts/linuxcnc /home/mes123456/cnc_wams/linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzbc-trt.ini
linuxcncsvr -ini /home/mes123456/cnc_wams/linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzbc-trt.ini
/home/mes123456/cnc_wams/linuxcnc/bin/rtapi_app load tpmod
milltask -ini /home/mes123456/cnc_wams/linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzbc-trt.ini
halui -ini /home/mes123456/cnc_wams/linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzbc-trt.ini
/usr/bin/python3.13 /home/mes123456/cnc_wams/linuxcnc/bin/hal_manualtoolchange
/usr/bin/python3.13 /home/mes123456/cnc_wams/linuxcnc/bin/xyzbc-trt-gui
/usr/bin/python3.13 /home/mes123456/cnc_wams/linuxcnc/bin/axis -ini /home/mes123456/cnc_wams/linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzbc-trt.ini
```
当前目标配置的进程均来自 `/home/mes123456/cnc_wams/linuxcnc`,并使用 `configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzbc-trt.ini`
当前 LinuxCNC Python API 状态检查:
```text
file = ./demos/xyzbc_switchkins.ngc
axis_mask = 55
position = [0.0, 0.0, 0.0, 0.0, 0.0]
task_state = 1
interp_state = 1
```
## 启动入口
快捷方式:
```text
/home/mes123456/cnc_wams/linuxcnc/linuxcnc-rtcp-5axis-shortcuts/table-rotary-tilting/xyzbc-trt.desktop
```
快捷方式执行命令:
```bash
/home/mes123456/cnc_wams/linuxcnc/scripts/rip-environment linuxcnc \
/home/mes123456/cnc_wams/linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzbc-trt.ini
```
`rip-environment` 负责设置 run-in-place 环境,包括 `PATH``LD_LIBRARY_PATH``PYTHONPATH``TCLLIBPATH` 等,使本地编译出来的 LinuxCNC 程序、库、Python 模块可被找到。
## 文件关系总览
主配置文件:
```text
configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzbc-trt.ini
```
它引用或触发以下文件:
```text
[DISPLAY] DISPLAY = axis
-> bin/axis
-> src/emc/usr_intf/axis/scripts/axis.py
[DISPLAY] PYVCP = ./xyzbc-trt.xml
-> configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzbc-trt.xml
[DISPLAY] OPEN_FILE = ./demos/xyzbc_switchkins.ngc
-> configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/xyzbc_switchkins.ngc
[HAL] HALFILE = LIB:basic_sim.tcl
-> lib/hallib/basic_sim.tcl
-> 运行后生成 configs/.../xyzbc-trt_cmds.hal
[HAL] POSTGUI_HALFILE = switchkins_postgui.hal
-> configs/sim/axis/vismach/5axis/table-rotary-tilting/switchkins_postgui.hal
[HAL] HALCMD = loadusr -W xyzbc-trt-gui
-> bin/xyzbc-trt-gui
-> src/hal/user_comps/vismach/xyzbc-trt-gui.py
[RS274NGC] SUBROUTINE_PATH = ./remap_subs
-> remap_subs/428remap.ngc
-> remap_subs/429remap.ngc
-> remap_subs/430remap.ngc
-> remap_subs/xyzbc_switchkins_sub.ngc
-> remap_subs/centering.ngc
-> remap_subs/helix_bc.ngc
[EMCIO] TOOL_TABLE = xyzbc-trt.tbl
-> configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzbc-trt.tbl
[RS274NGC] PARAMETER_FILE = xyzbc.var
-> configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzbc.var
```
## 主 INI 文件
路径:
```text
configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzbc-trt.ini
```
关键内容:
```ini
[EMC]
VERSION = 1.1
MACHINE = sim-xyzbc-trt-kins (switchkins)
[DISPLAY]
GEOMETRY = XYZB
OPEN_FILE = ./demos/xyzbc_switchkins.ngc
PYVCP = ./xyzbc-trt.xml
JOG_AXES = XYZC
DISPLAY = axis
MAX_ANGULAR_VELOCITY = 360
MAX_LINEAR_VELOCITY = 1000
POSITION_OFFSET = RELATIVE
POSITION_FEEDBACK = ACTUAL
MAX_FEED_OVERRIDE = 2
PROGRAM_PREFIX = ../../nc_files
INTRO_GRAPHIC = emc2.gif
INTRO_TIME = 1
TOOL_EDITOR = tooledit z diam
TKPKG = Ngcgui 1.0
NGCGUI_FONT = Helvetica -12 normal
NGCGUI_SUBFILE = xyzbc_switchkins_sub.ngc
NGCGUI_SUBFILE = centering.ngc
[RS274NGC]
SUBROUTINE_PATH = ./remap_subs
HAL_PIN_VARS = 1
REMAP = M428 modalgroup=10 ngc=428remap
REMAP = M429 modalgroup=10 ngc=429remap
REMAP = M430 modalgroup=10 ngc=430remap
PARAMETER_FILE = xyzbc.var
[KINS]
# default switchkins-type == 0 is xyzbc-trt-kins
# here switchkins-type == 0 is identity kins
KINEMATICS = xyzbc-trt-kins sparm=identityfirst
JOINTS = 5
[HAL]
HALUI = halui
HALFILE = LIB:basic_sim.tcl
POSTGUI_HALFILE = switchkins_postgui.hal
# net for control of motion.switchkins-type
HALCMD = net :kinstype-select <= motion.analog-out-03 => motion.switchkins-type
# vismach xyzbc-trt-gui items
HALCMD = loadusr -W xyzbc-trt-gui
HALCMD = net :table-x joint.0.pos-fb xyzbc-trt-gui.table-x
HALCMD = net :saddle-y joint.1.pos-fb xyzbc-trt-gui.saddle-y
HALCMD = net :spindle-z joint.2.pos-fb xyzbc-trt-gui.spindle-z
HALCMD = net :tilt-b joint.3.pos-fb xyzbc-trt-gui.tilt-b
HALCMD = net :rotate-c joint.4.pos-fb xyzbc-trt-gui.rotate-c
HALCMD = net :tool-offset motion.tooloffset.z
HALCMD = net :tool-offset xyzbc-trt-kins.tool-offset xyzbc-trt-gui.tool-offset
HALCMD = net :x-offset xyzbc-trt-kins.x-offset xyzbc-trt-gui.x-offset
HALCMD = net :z-offset xyzbc-trt-kins.z-offset xyzbc-trt-gui.z-offset
HALCMD = sets :x-offset -20
HALCMD = sets :z-offset -15
HALCMD = setp xyzbc-trt-kins.x-rot-point 0
HALCMD = setp xyzbc-trt-kins.y-rot-point 0
HALCMD = setp xyzbc-trt-kins.z-rot-point 0
HALCMD = setp xyzbc-trt-kins.conventional-directions 0
[HALUI]
# kinstype==0 is identity kins because sparm=identityfirst
# M429: identity kins
# M428: xyzbc kins / TCP mode
# M430: userk kins
MDI_COMMAND = M429
MDI_COMMAND = M428
MDI_COMMAND = M430
[TRAJ]
COORDINATES = XYZBC
LINEAR_UNITS = mm
ANGULAR_UNITS = deg
DEFAULT_LINEAR_VELOCITY = 20
MAX_LINEAR_VELOCITY = 35
MAX_LINEAR_ACCELERATION = 400
DEFAULT_LINEAR_ACCELERATION = 300
[EMCMOT]
EMCMOT = motmod
SERVO_PERIOD = 1000000
COMM_TIMEOUT = 1
[TASK]
TASK = milltask
CYCLE_TIME = 0.010
[EMCIO]
TOOL_TABLE = xyzbc-trt.tbl
```
轴和关节部分定义 `XYZBC` 五轴:
```ini
[AXIS_X] [AXIS_Y] [AXIS_Z]
LINEAR axes, limits in mm.
[AXIS_B] [AXIS_C]
ANGULAR axes, limits in degrees.
[JOINT_0] X linear
[JOINT_1] Y linear
[JOINT_2] Z linear
[JOINT_3] B angular, MIN_LIMIT=-100, MAX_LIMIT=50
[JOINT_4] C angular, MIN_LIMIT=-36000, MAX_LIMIT=36000
```
## PyVCP 界面文件
路径:
```text
configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzbc-trt.xml
```
这个 XML 文件由 AXIS 读取 `[DISPLAY]PYVCP` 后加载,显示在 AXIS 窗口右侧。它提供:
- 当前运动学模式显示:`0:IDENTITY``1: XYZBC``2: USERK`
- 三个按钮:`IDENTITY``TCP:XYZBC``userk`
- 一个 `vismach-clear` 按钮,用于清除 Vismach 轨迹显示
完整内容:
```xml
<?xml version='1.0' encoding='UTF-8'?>
<pyvcp>
<vbox>
<relief>"ridge"</relief>
<bd>5</bd>
<label>
<text>"SWITCHKINS"</text>
<relief>RIDGE</relief>
<bd>3</bd>
</label>
<multilabel>
<legends>["0:IDENTITY", "1: XYZBC ", "2: USERK "]</legends>
<font>("Helvetica",16)</font>
<bg>"black"</bg>
<fg>"yellow"</fg>
</multilabel>
<button>
<halpin>"type0-button"</halpin>
<text>"IDENTITY"</text>
<bd>3</bd>
</button>
<button>
<halpin>"type1-button"</halpin>
<text>"TCP:XYZBC"</text>
<bd>3</bd>
</button>
<button>
<halpin>"type2-button"</halpin>
<text>"userk"</text>
<bd>3</bd>
</button>
</vbox>
<vbox>
<relief>"ridge"</relief>
<bd>5</bd>
<button>
<halpin>"vismach-clear"</halpin>
<text>"vismach-clear"</text>
<bd>3</bd>
</button>
</vbox>
</pyvcp>
```
## POSTGUI HAL 文件
路径:
```text
configs/sim/axis/vismach/5axis/table-rotary-tilting/switchkins_postgui.hal
```
这个文件在 AXIS/PyVCP 界面创建完成后加载,所以它可以连接 `pyvcp.*` 引脚。
完整内容:
```hal
# switchkins pyvcp connections for:
# xyzac-trt-kins.ini,xyzbc-trt-kins.ini
net :kinstype.is-0 <= kinstype.is-0 => pyvcp.multilabel.0.legend0
net :kinstype.is-1 <= kinstype.is-1 => pyvcp.multilabel.0.legend1
net :kinstype.is-2 <= kinstype.is-2 => pyvcp.multilabel.0.legend2
net :vismach-clear <= pyvcp.vismach-clear => vismach.plotclear
net :type0-button <= pyvcp.type0-button => halui.mdi-command-00
net :type1-button <= pyvcp.type1-button => halui.mdi-command-01
net :type2-button <= pyvcp.type2-button => halui.mdi-command-02
```
作用:
- `kinstype.is-*` 驱动 PyVCP 的 `multilabel`,显示当前 kinematics 类型。
- PyVCP 三个按钮连接到 `halui.mdi-command-00/01/02`
- `[HALUI] MDI_COMMAND` 定义这三个命令分别执行 `M429``M428``M430`
- `vismach-clear` 连接到 `vismach.plotclear`,清除 Vismach 显示轨迹。
## Vismach Python 界面文件
运行入口:
```text
/home/mes123456/cnc_wams/linuxcnc/bin/xyzbc-trt-gui
```
源码路径:
```text
src/hal/user_comps/vismach/xyzbc-trt-gui.py
```
该 Python 文件创建名为 `xyzbc-trt-gui` 的 HAL 用户组件,并建立 Vismach 三维机床模型。INI 中的以下 HALCMD 启动并连接它:
```hal
HALCMD = loadusr -W xyzbc-trt-gui
HALCMD = net :table-x joint.0.pos-fb xyzbc-trt-gui.table-x
HALCMD = net :saddle-y joint.1.pos-fb xyzbc-trt-gui.saddle-y
HALCMD = net :spindle-z joint.2.pos-fb xyzbc-trt-gui.spindle-z
HALCMD = net :tilt-b joint.3.pos-fb xyzbc-trt-gui.tilt-b
HALCMD = net :rotate-c joint.4.pos-fb xyzbc-trt-gui.rotate-c
HALCMD = net :tool-offset xyzbc-trt-kins.tool-offset xyzbc-trt-gui.tool-offset
HALCMD = net :x-offset xyzbc-trt-kins.x-offset xyzbc-trt-gui.x-offset
HALCMD = net :z-offset xyzbc-trt-kins.z-offset xyzbc-trt-gui.z-offset
```
### HAL 引脚
`xyzbc-trt-gui.py` 创建这些输入引脚:
```python
c = hal.component("xyzbc-trt-gui")
c.newpin("table-x", hal.HAL_FLOAT, hal.HAL_IN)
c.newpin("saddle-y", hal.HAL_FLOAT, hal.HAL_IN)
c.newpin("spindle-z", hal.HAL_FLOAT, hal.HAL_IN)
c.newpin("tilt-b", hal.HAL_FLOAT, hal.HAL_IN)
c.newpin("rotate-c", hal.HAL_FLOAT, hal.HAL_IN)
c.newpin("z-offset", hal.HAL_FLOAT, hal.HAL_IN)
c.newpin("x-offset", hal.HAL_FLOAT, hal.HAL_IN)
c.newpin("tool-offset", hal.HAL_FLOAT, hal.HAL_IN)
c.ready()
```
### 模型结构
该脚本使用 `vismach``Collection``Box``CylinderZ``HalTranslate``HalRotate` 等构造机床模型:
- `tool`: 刀具和刀尖捕获点,受 `tool-offset` 影响。
- `spindle`: 主轴和刀柄。
- `head`: 主轴头,受 `spindle-z` 影响。
- `ctable`: C 轴旋转台,受 `rotate-c` 影响。
- `arotary`: B 轴倾斜组件,受 `tilt-b` 影响。
- `table`: X 方向工作台,受 `table-x` 影响。
- `saddle`: Y 方向滑鞍,受 `saddle-y` 影响。
- `base`: 机床底座和立柱。
最终调用:
```python
model = Collection([yslide, base])
myhud = Hud()
myhud.show("XYZBC")
main(model, tooltip, work, size=500, hud=myhud, lat=-60, lon=25)
```
这会打开 Vismach 窗口,显示 `XYZBC` 五轴仿真模型。
## AXIS 主界面 Python 文件
运行入口:
```text
/home/mes123456/cnc_wams/linuxcnc/bin/axis
```
对应源码:
```text
src/emc/usr_intf/axis/scripts/axis.py
```
`bin/axis` 是构建后的可执行 Python 脚本,当前进程为:
```text
/usr/bin/python3.13 /home/mes123456/cnc_wams/linuxcnc/bin/axis -ini /home/mes123456/cnc_wams/linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzbc-trt.ini
```
这个文件很大,当前源码约 `4308` 行。与本配置直接相关的加载点如下。
读取 INI
```python
if sys.argv[1] != "-ini":
raise SystemExit("-ini must be first argument")
inifile = linuxcnc.ini(sys.argv[2])
```
读取 POSTGUI HAL、几何、坐标等配置
```python
vars.emcini.set(sys.argv[2])
jointcount = inifile.getint("KINS", "JOINTS", fallback=0)
open_directory = inifile.getstring("DISPLAY", "PROGRAM_PREFIX", fallback=open_directory)
vars.machine.set(inifile.getstring("EMC", "MACHINE", fallback="<unknown>"))
postgui_halfile = inifile.findall("HAL", "POSTGUI_HALFILE") or None
postgui_halcmds = inifile.findall("HAL", "POSTGUI_HALCMD") or None
geometry = inifile.getstring("DISPLAY", "GEOMETRY", fallback="XYZABCUVW")
```
读取 PyVCP
```python
vcp = inifile.find("DISPLAY", "PYVCP")
```
创建 PyVCP 面板:
```python
if vcp:
import vcpparse
f = Tkinter.Frame(root_window)
if inifile.find("DISPLAY", "PYVCP_POSITION") == "BOTTOM":
f.grid(row=4, column=0, columnspan=6, sticky="nw", padx=4, pady=4)
else:
f.grid(row=0, column=4, rowspan=6, sticky="nw", padx=4, pady=4)
vcpparse.filename = vcp
vcpcomp = hal.component("pyvcp")
vcpparse.create_vcp(f, vcpcomp)
vcpcomp.ready()
vcp_frame = f
```
这些代码解释了为什么 `[DISPLAY]PYVCP = ./xyzbc-trt.xml` 会在 AXIS 中生成右侧的 `SWITCHKINS` 面板。
## 基础仿真 HAL/Tcl 文件
路径:
```text
lib/hallib/basic_sim.tcl
```
INI 中:
```ini
[HAL]
HALFILE = LIB:basic_sim.tcl
```
作用:
- 加载通用仿真组件。
- 根据 `[TRAJ]COORDINATES``[KINS]JOINTS` 创建基础运动仿真。
- 创建 `ddt`、模拟回零、手动换刀和模拟主轴。
- 运行后生成等效 HAL 文件:
```text
configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzbc-trt_cmds.hal
```
关键逻辑:
```tcl
source [file join $::env(HALLIB_DIR) sim_lib.tcl]
set axes [get_traj_coordinates]
set number_of_joints $::KINS(JOINTS)
core_sim $axes \
$number_of_joints \
$::EMCMOT(SERVO_PERIOD) \
$base_period \
$::EMCMOT(EMCMOT)
make_ddts $number_of_joints
simulated_home $number_of_joints
use_hal_manualtoolchange
sim_spindle
save_hal_cmds $savefilename $save_options
```
## switchkins / RTCP 切换逻辑
本配置使用 `motion.switchkins-type` 选择不同运动学模式。
关键 HAL 连接:
```hal
net :kinstype-select <= motion.analog-out-03 => motion.switchkins-type
```
关键 MDI 命令:
```ini
[HALUI]
MDI_COMMAND = M429
MDI_COMMAND = M428
MDI_COMMAND = M430
```
三个 remap 子程序:
```text
remap_subs/429remap.ngc -> kinstype = 0 -> IDENTITY
remap_subs/428remap.ngc -> kinstype = 1 -> XYZBC / TCP
remap_subs/430remap.ngc -> kinstype = 2 -> USERK
```
`M428` 的核心逻辑:
```ngc
;M428 by remap: kinstype==1 (xyzac,xyzbc)
o<428remap>sub
#<kinstype> = 1
#<SWITCHKINS_PIN> = 3
M68 E#<SWITCHKINS_PIN> Q#<kinstype>
M66 E0 L0
o2 if [[#<_task> EQ 1] AND [#<_hal[motion.switchkins-type]> NE #<kinstype>]]
(debug,M428: Wrong motion.switchkins-type)
(debug,or missing hal net to analog-out-0x)
(debug,STOP)
M2
o2 else
o2 endif
o<428remap>endsub
```
`M429` 类似,但设置 `kinstype = 0``M430` 设置 `kinstype = 2`
## 演示 G-code
启动时自动打开:
```text
configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/xyzbc_switchkins.ngc
```
内容:
```ngc
; zmax zmin r frate n a b c dist
o<xyzbc_switchkins_sub> call [10] [5] [10][1000][3][0][20][45][20]
m2
```
它调用:
```text
remap_subs/xyzbc_switchkins_sub.ngc
```
该子程序会在四个象限中:
- 先用 `M429` 切到 Identity kinematics。
- 设置机器坐标和 G54。
- 调用 `helix_bc`,用 B/C 角度演示 TCP/五轴联动轨迹。
- 最后回到 Identity kinematics。
## 工具表
路径:
```text
configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzbc-trt.tbl
```
内容:
```text
T1 P1 D1
T2 P2 Z10 D8
```
工具表会影响 `motion.tooloffset.z`,并通过 HAL 连接到:
```hal
xyzbc-trt-kins.tool-offset
xyzbc-trt-gui.tool-offset
```
所以工具长度会同时影响运动学计算和 Vismach 显示。
## 运动学组件
运行时加载:
```text
rtlib/xyzbc-trt-kins.so
```
源码:
```text
src/emc/kinematics/xyzbc-trt-kins.c
```
相关说明文件:
```text
configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzbc-trt.txt
```
说明文件中的核心语义:
```text
M429: Identity Kinematics
M428: XYZBC (TCP)
M430: userk Kinematics
net :kinstype-select <= motion.analog-out-03
net :kinstype-select => motion.switchkins-type
```
`xyzbc-trt-kins` 提供这些和配置相关的 HAL 输入:
```text
xyzbc-trt-kins.x-offset
xyzbc-trt-kins.z-offset
xyzbc-trt-kins.x-rot-point
xyzbc-trt-kins.y-rot-point
xyzbc-trt-kins.z-rot-point
xyzbc-trt-kins.conventional-directions
xyzbc-trt-kins.tool-offset
```
## 加载顺序
简化后的启动流程:
1. `.desktop` 执行 `rip-environment linuxcnc xyzbc-trt.ini`
2. `scripts/linuxcnc` 读取 INI启动 `linuxcncsvr``rtapi_app``milltask``halui`
3. `[HAL] HALFILE = LIB:basic_sim.tcl` 加载基础仿真 HAL。
4. `[KINS] KINEMATICS = xyzbc-trt-kins sparm=identityfirst` 加载运动学组件。
5. `[HAL] HALCMD = loadusr -W xyzbc-trt-gui` 启动 Vismach Python 模型。
6. `[DISPLAY] DISPLAY = axis` 启动 AXIS。
7. AXIS 读取 `[DISPLAY] PYVCP = ./xyzbc-trt.xml`,创建 PyVCP 面板。
8. AXIS 界面创建后加载 `POSTGUI_HALFILE = switchkins_postgui.hal`,连接 PyVCP 引脚和 HALUI MDI 命令。
9. `[DISPLAY] OPEN_FILE = ./demos/xyzbc_switchkins.ngc` 自动载入演示 G-code。
## 重要文件清单
```text
主配置:
configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzbc-trt.ini
AXIS 主界面:
bin/axis
src/emc/usr_intf/axis/scripts/axis.py
PyVCP 面板:
configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzbc-trt.xml
POSTGUI HAL:
configs/sim/axis/vismach/5axis/table-rotary-tilting/switchkins_postgui.hal
Vismach Python 机床模型:
bin/xyzbc-trt-gui
src/hal/user_comps/vismach/xyzbc-trt-gui.py
基础仿真 HAL/Tcl:
lib/hallib/basic_sim.tcl
运行后生成的等效 HAL:
configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzbc-trt_cmds.hal
运动学组件:
rtlib/xyzbc-trt-kins.so
src/emc/kinematics/xyzbc-trt-kins.c
remap 子程序:
configs/sim/axis/vismach/5axis/table-rotary-tilting/remap_subs/428remap.ngc
configs/sim/axis/vismach/5axis/table-rotary-tilting/remap_subs/429remap.ngc
configs/sim/axis/vismach/5axis/table-rotary-tilting/remap_subs/430remap.ngc
configs/sim/axis/vismach/5axis/table-rotary-tilting/remap_subs/xyzbc_switchkins_sub.ngc
configs/sim/axis/vismach/5axis/table-rotary-tilting/remap_subs/centering.ngc
configs/sim/axis/vismach/5axis/table-rotary-tilting/remap_subs/helix_bc.ngc
演示程序:
configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/xyzbc_switchkins.ngc
configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzbc.ngc
工具表和参数:
configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzbc-trt.tbl
configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzbc.var
```