注释
哎呀,格式化发生了什么……“Pxx”是发布的代码中分配的最后一个值,所以只需从底部向上阅读。 |
根据 LinuxCNC g 代码标准 ( http://linuxcnc.org/docs/html/gcode/g-code.html#gcode:g4),P字被解释为 G4 的秒数。沿线的某个地方,爱好社区将其更改为表示毫秒,这是不正确的,并且这在所有爱好类 CAM 程序中传播。相反,我会要求 Candle 更正 G4 输出或允许您在他们的设置中选择它。 |
@Simplystupid您刚才在 Candle github 上问过这个问题并得到了相同的答案。问题在于“生成我的 gcode 的 Techne CADCAM 在 P 命令后使用毫秒作为值。例如,P5000 不是主轴启动时的 P5。’,不是 Candle 或其他发送器,也不是 Grbl 或 Gnea。要么让 Techne CCADCAM 修复/增强其实施,要么获取 Candle 代码并自己进行更改。 |
Candle 是用 Qt 编译的。造物主。我安装IDE和支持软件来查找和更改大型复杂项目中的相关代码并不是一件容易的事,只是将dwell msec转换为sec。Techne CCADCAM 当前未进行活动修订。Grbl 有可用的源代码,我认为,来自社区的支持。因此我的问题发布了 OP。 |
@Simplystupid好的,那你可以自己修改 Grbl 吗?根据对 <case ‘P’> 的评论,我认为将除法除以 1000 是安全的。尝试不会有任何损失。 |
查看“motion_control.c”,第 195 行 void mc_dwell(float seconds) 将函数中的最后一行更改为 这将使所有 G4PXXXX 命令在几毫秒内运行。“秒”是一个浮点值,所以除以 1000 就可以了。 |
非常感谢,现在问题解决了。 |
不同软件之间的兼容性,并不是真正的问题。
生成我的 gcode 的 Techne CADCAM 使用毫秒作为 P 命令后的值。例如,主轴启动时 P5000 不是 P5。
我使用 Candle 将文件发送到 arduino 上的 Grbl。
将 Pxx 值更改为秒的唯一机会似乎是在 Grbl“code.c”源文件中。
如果我在 P 值赋值中放置一个值 /1000,它是否会与检查除以零/非整数等的任何其他代码发生冲突?
/* Non-Command Words: This initial parsing phase only checks for repeats of the remaining legal g-code words and stores their value. Error-checking is performed later since some words (I,J,K,L,P,R) have multiple connotations and/or depend on the issued commands. */ switch(letter){ // case 'A': // Not supported // case 'B': // Not supported // case 'C': // Not supported // case 'D': // Not supported case 'F': word_bit = WORD_F; gc_block.values.f = value; break; // case 'H': // Not supported case 'I': word_bit = WORD_I; gc_block.values.ijk[X_AXIS] = value; ijk_words |= (1<<X_AXIS); break; case 'J': word_bit = WORD_J; gc_block.values.ijk[Y_AXIS] = value; ijk_words |= (1<<Y_AXIS); break; case 'K': word_bit = WORD_K; gc_block.values.ijk[Z_AXIS] = value; ijk_words |= (1<<Z_AXIS); break; case 'L': word_bit = WORD_L; gc_block.values.l = int_value; break; case 'N': word_bit = WORD_N; gc_block.values.n = trunc(value); break; case 'P': word_bit = WORD_P; gc_block.values.p = value; break; // NOTE: For certain commands, P value must be an integer, but none of these commands are supported. // case 'Q': // Not supported
另一种方法当然是继续在文本编辑器中打开 gcode 文件。