开源改变世界

没有 Gcode 解释器的 grbl,有人感兴趣吗? #972

推推 grbl 2年前 (2023-01-23) 146次浏览

关闭
cri-s 打开了这个问题 2016 年 4 月 25 日 · 6条评论
关闭

没有 Gcode 解释器的 grbl,有人感兴趣吗?#972

cri-s 打开了这个问题 2016 年 4 月 25 日 · 6条评论

注释

没有 Gcode 解释器的 grbl,有人感兴趣吗? #972

其他人是否对 GRBL 代码感兴趣,11 Axis max (UE)
在 PC 端和 uC 上有 gcode 和 motion_control 被 fifo 模块取代。
我想这样做是为了测试高级样条或斜坡算法。
api 应该允许与规划器、步进器接口,并且应该有一些跟踪缓冲区。

没有 Gcode 解释器的 grbl,有人感兴趣吗? #972
成员

@cri-s:这种类型的模型与 LinuxCNC 甚至 Mach3 并没有什么不同,因为您要添加 PC 的要求(和依赖项)以使其工作。有选择总是好的,如果你接受这个想法,但我看不到太多好处。

没有 Gcode 解释器的 grbl,有人感兴趣吗? #972
作者

添加 i2c 内存,它可以存储在闪存中。优点和我
想要这样做的原因是在加速度和
路径上使用样条进行增量运动规划。
Il 25/apr/2016 17:40 “Sonny Jeon” notifications@github.com ha scritto:

@cri-s https://github.com/cri-s:这种类型的模型
与 LinuxCNC 甚至 Mach3 并没有什么不同,因为您要添加
PC 的要求(和依赖项)以使其工作。有选择总是好的
,如果你接受这个想法,但我看不到太多
好处。


你收到这个是因为你被提到了。
直接回复此邮件或在 GitHub
#972(评论)上查看

没有 Gcode 解释器的 grbl,有人感兴趣吗? #972
成员

@cri-s:如果您将数据存储在外部存储器中,那么微处理器本身就没有理由不能预处理相关的计划数据。无论哪种方式,我都会有兴趣看到一个基于样条的规划器。他们有很多理论上的优势。这些优势对于计算成本是否真正有用或意义重大,还有待观察。

没有 Gcode 解释器的 grbl,有人感兴趣吗? #972

我想这可能是将它用作 linux CNC 的控制器/IO 的途径,再也看不到许多带有并行端口的 PC

没有 Gcode 解释器的 grbl,有人感兴趣吗? #972
作者

是的,这是一个很好的论据。需要检查它需要什么。 6 轴 grbl 代码
在 16 微步和 200 步/转时的实际最大速率为 66khz 或 20.833 转/秒。
我没有
对 11 轴代码进行测量。
没有大的优化,42-45khz 是合理的,优化
140khz 应该是可行的。

2016-04-25 23:56 GMT,langwadt notifications@github.com

我想这可能是将它用作 linux CNC 的控制器/IO 的途径,
再也看不到许多带有并行端口的 PC


你收到这个是因为你被提到了。
直接回复此邮件或在 GitHub 上查看:
#972(评论)

没有 Gcode 解释器的 grbl,有人感兴趣吗? #972
作者

向 Sonny Jeon 提问:

是否对更高速度的 arduino (nano) 代码感兴趣,或者看到
ARM 目标,不值得
为此投入时间?
stepper.c 仅重播
从 planner.c 提供的队列中的中断内的 step 和 dir 命令
。暂停和停止斜坡下降是通过降低中断
周期时间来处理的。

#define QUEUE_SZ 32
#define QUEUE_MSK ((1<<QUEUE_SZ)-1)
volatile uint16_t queue[QUEUE_SZ];

void inline queue_full() {
返回队列[idx_push];
}
枚举 { Q_STEP, Q_DIR=2, Q_END };
/*
push value, ddddddff
ff:
00 = step
10 = dir
11 = end — ddddddd 必须为零
如果队列已满则返回 false
/
char queue_push(val) { char valid=0;
静态 uint8_t 最后;
静态 uint16_t 值;
if((last&3)==0) // 步骤
if(val==last) {
if(++value&0x200) { // 溢出
队列[idx_push++&QUEUE_MSK]=value|0x1ff;
值^=0x200;返回;
}
} else {
queue[idx_push++&QUEUE_MSK]=value|0x200;
}
价值=价值<<8; 最后=值;
如果((val&3)!=0){
队列[idx_push++&QUEUE_MSK]=值^0x300;
}
返回!队列[idx_push];
}
/

push value, ddddddff
ff:
10 = step
01 = dir
00 = end
*/
uint8_t queue_pop() {
uint16_t value = queue[idx_pop&=QUEUE_MSK];
if (value)
if (value&0x200) // 步骤
if(queue[idx_pop]–&0x1ff); 否则转到下降;
否则丢弃:队列[idx++]=0;// 目录
返回(值>>8);
}

stepper.c 文件上的(伪)代码:// 6 步进支持,与
官方 grbl 不同的引出线!
if(i=queue_pop()) {
if(i&2) { // 步骤 D2-D7
PORTD=i^settings.step_invert_mask;
} else { // 方向 A0-A3,D8,D12
i>>=2;
PORTC=PORTC&~0xf|i&0xf; // C0-C3 — A0-A3
i&=~1; 如果(我&0x20)我++;// 将 bit5 移动到 bit0
PORTB^=PORTB&~0x11|i&0x11;// B4,B0 — D12,D8
} else { // 无所事事
}

2016-04-26 8:44 GMT,Cri S phone.cri@gmail.com

是的,这是一个很好的论据。需要检查它需要什么。 6 轴 grbl 代码
在 16 微步和 200 步/转时的实际最大速率为 66khz 或 20.833 转/秒。
我没有
对 11 轴代码进行测量。
没有大的优化,42-45khz 是合理的,优化
140khz 应该是可行的。

2016-04-25 23:56 GMT,langwadt notifications@github.com

我想这可能是将它用作 linux CNC 的控制器/IO 的途径,
再也看不到许多带有并行端口的 PC


你收到这个是因为你被提到了。
直接回复此邮件或在 GitHub 上查看:
#972(评论)

喜欢 (0)