评论
贡献者作者
|
扫描源代码,我没有找到直接引用的 CNC.vars[“PRB”]、[“G92”]、[“G28”] 或 [“G30”]。最接近的是在 CNC.py 中设置“PRB”= None。 附带说明一下,“TLO”= 0.0 在 CNC.py 中设置了两次,“tlo”=“”。小写版本是否在任何地方使用? 代码清理顺序? |
贡献者作者
|
仔细观察,新的 CNC.vars 是有意设置的,只是设置了两次。 |
贡献者作者
|
原来 config.h 中默认的 grblHAL 核心默认设置是: //#define TOOL_LENGTH_OFFSET_AXIS Z_AXIS // 默认 z 轴。有效值为 X_AXIS、Y_AXIS 或 Z_AXIS。 导致包含所有轴的 TLO 响应,即使默认列出的是 Z 轴。将 TOOL_LENGTH_OFFSET_AXIS 定义为 Z_AXIS 只会产生单一坐标响应。 |


我有一个 grblHAL 控制器,当我发出“G43.1”命令然后检查参数响应时,我得到以下信息:
好的
g43.1z3.0
好的
b’$G\n’
[GC:G0 G54 G17 G21 G90 G94 G43.1 G98 G50 M5 M9 T0 F0 S0.]
好的
$#
[G54:-357.000,-757.000,-148.306]
[G55:0.000,0.000,0.000]
[G56:0.000,0.000,0.000]
[G57:0.000,0.000,0.000]
[G58:0.000,0.000,0.000]
[G59:0.000,0.000,0.000]
[G59.1:
0.000,0.000,0.000 ] [G59.2:0.000,0.000,0.000]
[G59.3:0.000,0.000,0.000]
[G28:0.000,0.000,0.000]
[G30:0.000,0.000,0.000]
[G92:0.000 ,0.000,0.000]
[HOME:0.000,0.000,0.000:0]
[TLO:0.000,0.000,3.000]
[PRB:0.000,0.000,0.000:0]
好
请注意,TLO 响应由三个坐标组成,而不是一个。目前的 GRBL 代码使用:
CNC.vars[word[0]] = word[1]
转换为 CNC.vars[“TLO”} = 0.000
对于我的控制器,我建议以下方法是更好的方法:
idx = -1
if len(word) > 4: idx = 3
CNC.vars[“TLO”] = word[idx]
编辑:这将接受 Z、XYZ、XYZABC 或任何其他 4+ 轴答案的 TLO 响应。查看 grblHAL report.c 代码,3 个以上的值似乎是可能的。
此外,当我调试这个问题时,我注意到在这个方括号代码中,它是使用 if/elif 语句以长形式的 case 逻辑编写的,但是第二个、第三个和第四个 case 是用 if 而不是 elif 编码的。因此,“PRB”响应被处理了两次。一次在开头,第二次在 else: 子句中。我不知道这样处理“PRB”、“G92”、“G28”和“G30”是否是故意的。目前,GRBL1 正在为“PRB”、“G92”、“G28 和”G30 创建 CNC.vars,以及那里的编码处理。