Contact me: hankecnc@gmail.com

自定义 Mcode 暂停问题…. #486

推推 grbl 3年前 (2023-01-22) 238次浏览

关闭
timryder 打开了这个问题 2014 年 9 月 9 日 · 15条评论
关闭

自定义 Mcode 暂停问题….#486

timryder 打开了这个问题 2014 年 9 月 9 日 · 15条评论

注释

自定义 Mcode 暂停问题.... #486

好的,所以我正在做一个项目,我创建了自己的定制板,它使用 FT232RL USB 转 UART 芯片和 ATMEGA328P 模仿 Arduino Duemelinova,就像 Uno Rev 3 一样。该板似乎工作正常。

我在 grbl 中添加了一个自定义 M 代码,它 100% 模仿了冷却液溢流和冷却液禁用命令的工作方式。我已经注释掉 Main 中的行以初始化探针引脚,我正在使用它来驱动 MOSFET 的输出。回顾一下,端口 C 位 5 对我来说是一个输出引脚。我添加的 Mcode 是 M20(启用)M21(禁用)我也经常使用 G4 命令来确保我的自定义工具到达零件(通常是 20 毫秒)。

所以请记住,代码与冷却剂代码完全相同。我注意到的是,有时在我调用 M20 或 M21 gcode 后系统会随机冻结。没有真正的押韵或理由,但不久后(2-3 秒)它将继续并恢复并吐出 OK 并允许我继续发送 GCode。我在一个周期内发生过 5 次以上。如果我在没有这些代码的情况下运行系统,我永远不会看到问题,它似乎只有在我使用 em 时才会发生。

这是一个问题的原因是,当工具到达不应停留在一个位置的零件时,这会给零件带来问题并将其报废。

我意识到这是一个奇怪的“问题”,我想这并不是真正的问题,而是在寻求任何故障排除帮助。

我正在使用 0.9g 分支。

自定义 Mcode 暂停问题.... #486 timryder 更改了标题 自定义方法暂停问题…. 自定义 Mcode 暂停问题…. 2014 年 9 月 9 日
自定义 Mcode 暂停问题.... #486
成员

@timryder: 是不是运行master Grbl v0.9g,把M20/21换成M8/9有这个问题?另外,您将步进空闲延迟设置为多少?对于您的案例使用类型,我会推荐 255。

自定义 Mcode 暂停问题.... #486
作者

我只是快速地将工具重新连接到冷却剂销并进行测试。步进延迟为 0。

您认为 255 与 0 的区别是什么?

自定义 Mcode 暂停问题.... #486
成员

@timryder:从 0 开始,255 将保持步进器启用,但没有延迟。如果你把东西设置为 0,它可能不会改变任何东西。虽然我想知道如果你将空闲延迟设置为 100 左右,它的运行方式是否会发生变化。如果某处存在一些基于时间的问题。

无论如何,我不能完全告诉你 2-3 秒的延迟是从哪里来的。也许是 FTDI 芯片?咕噜咕噜?很难说。我可以告诉您,Grbl 代码中没有任何内容会故意造成那么长时间的延迟。最接近的是在警报事件后硬编码强制延迟 500 毫秒,以确保消息在重置所有内容之前清除串行 TX 缓冲区。

发生此类事件后程序是否恢复正常?Grbl 在此暂停期间是否有响应,这意味着它会返回“?” 冻结时的状态报告?

自定义 Mcode 暂停问题.... #486
作者

@chamnit我相信它没有反应,
我正在测试 255 并使用 M8/9 现在很快就会发布结果。

自定义 Mcode 暂停问题.... #486
作者

从 m 20 / 21 更改为 M 8 / 9 似乎提高了性能并大大降低了频率。但是我确实让事件连续发生了三次。

对于步进器空闲延迟,我仍然运行 0。更改此值似乎没有任何区别。

当事件发生时,Grbl 似乎没有反应。用户界面仍在等待“确定”以继续流式传输 gcode。有什么想法吗?

自定义 Mcode 暂停问题.... #486
成员

@timryder:从 M20/21 到 M8/9 的简单变化会产生不同,这似乎很奇怪。为了弄清楚这一点,我想我必须自己测试一下。你能提供一段重现这个问题的 g 代码吗?

另外,您使用的是什么用户界面?如果您使用另一个,会有什么不同吗?

自定义 Mcode 暂停问题.... #486

在这种情况下,将第二个 FTDI 连接到您的 PC 可能是值得的。将它连接到运行 Grbl 的 Uno 上的 Rx/Tx 接头。然后使用诸如 putty 之类的程序连接到该 FTDI,它只发送您键入的内容,只显示它接收到的内容。
当 Grbl 挂起时,您可以判断它是 Grbl 还是发送程序。你可以输入一个?看看 Grbl 是否还活着,即使它仍然连接在 USB 串口上。仔细选择您键入的命令,有些命令会在计划程序缓冲区中有 gcode 时导致警报或错误,也就是运行模式

自定义 Mcode 暂停问题.... #486
作者

M22
G20
G90
M9
$H
F40.0000
G0 X1.4704 Y1.7341
M8
G4 P0.02 G1 X1.4704
Y1.7466
G1 X1.5266 Y1.7466
G1 X1.4922 Y1.6216
M9
G4 P0.02
G0 X1。 5835 Y1.6904
M8
G4
P0.02
G1 X1.5616 Y1.6685
G1 X1.5616 Y1.6404 G1 X1.5804 Y1.6216
G1 X1.5991 Y1.6216
G1 X1.6179 Y1.6404
G1 X1.6179 Y1。 6685
G1 X1.5960 Y1.6904
G1 X1.5835 Y1.6904
G1 X1.5647 Y1.7091
G1 X1.5647 Y1.7310
G1 X1.5804 Y1.7466
G1 X1.5991 Y1.7466
G1 X1.6147 Y1.7310
G1 X1.6147 Y1.7091
G1 X1.5960 Y1.6904
M9
G4
P0.02 G0 X1.6529 Y1.6841
M8
G4
P0.02 G1 X1.7091 Y1.6841
M9
G4
P0.02 G0 X1.8004 Y1.6216
M8
G4
P0.02 G1 X1.7441 Y1.6216
G1 X1 .8004 Y1.7123
G1 X1.8004 Y1.7279
G1 X1.7816 Y1.7466
G1 X1.7629 Y1.7466
G1 X1.7441 Y1.7279
M9
G4
P0.02 G0 X1.8354 Y1.6841
M8
G4 P0.02
G1 X1.8916 Y1.6841
M9
G4
P0.02 G0 X1.9266 Y1.6216
M8
G4
P0.02 G1 X1.9672 Y1.7466
G1 X2.0079 Y1.6216
M9
G4
P0.02 G0 X1.9388 Y1.6591
M8
G4 P0.02
G1 X1.9957 Y1.6591
M9
G4
P0.02 G0 X2.0429 Y1.7466
M8
G4
P0.02 G1 X2.0429 Y1.6216
M9
G4
P0.02 G0 X2.1116 Y1.7466
M8
G4 P0.02
G1 X2 .0429 Y1.6841
M9
G4
P0.02 G0 X2.1116 Y1.6216
M8
G4
P0.02 G1 X2.0613 Y1.7010
M9
G4
P0.02 G0 X2.1466 Y1.6841
M8
G4
P0.02 G1 X2.2029 Y1.6841
M9
G4
P0.02 G0 X2.2941 Y1.6216
M8
G4
P0.02 G1 X2.2379 Y1.6216 G1
X2.2941 Y1.7123
G1 X2.2941 Y1.7279
G1 X2.2754 Y1.7466
G1 X2 .2566 Y1.7466
G1 X2.2379 Y1.7279
M9
G4
P0.02 G0 X1.7891 Y1.1001
M8
G4
P0.02
G1 X1.7485 Y1.1001 G1 X1.7329 Y1.1157
G1 X1.7329 Y1.2094
G1 X1.7485 Y1 .2251
G1 X1.7891 Y1.2251
M9
G4
P0.02 G0 X1.8241 Y1.1001
M8
G4 P0.02 G1 X1.8241
Y1.2251
G1 X1.8648 Y1.1626
G1 X1.9054 Y1.2251
G1 X1。 9054 Y1.1001
M9
G4
P0.02 G0 X1.9404 Y1.2251
M8
G4
P0.02 G1 X2.0091 Y1.2251
M9
G4
P0.02 G0 X1.9748 Y1.1001
M8
G4
P0.02 G1 X1.9748 Y1 .2251
M9
G4 P0.02
M9
G0 X0.0000 Y1.9685

我一遍又一遍地运行相同的 g 代码,它绘制字符,但错误的频率不会在一段时间内发生。我花了几十个周期才真正产生异常。

我使用我自己的自定义 UI,它基本上模仿 UGS,它只在收到“OK”响应时才发送下一行。

自定义 Mcode 暂停问题.... #486
成员

@timryder: 嗯,我远程连接到安装了 Arduino 的家用电脑。我用我们的 stream.py 脚本测试了你的 g 代码几十次(使用字符计数和呼叫响应方法)没有明显的问题。我看不到发生了什么,但我没有看到 g 代码流中有任何暂停。我可以继续尝试,但这指向特定于设置的东西,无论是在您的 Grbl 设置中还是在您的自定义板/接线/GUI 中。

你能把你的 Grbl 设置也发给我们吗?M22 命令有什么作用?

此外,我最近为 GUI 开发人员编写了一个 Interface Wiki。请快速阅读,如果你还没有。它会让您快速了解为 Grbl 编写 GUI 的推荐方法。

自定义 Mcode 暂停问题.... #486
作者

是的,grbl 设置在这里….

#define DEFAULT_X_STEPS_PER_MM 640.0
#define DEFAULT_Y_STEPS_PER_MM 640.0
#define DEFAULT_Z_STEPS_PER_MM 640.0
#define DEFAULT_X_MAX_RATE 1600.0 // mm/min
#define DEFAULT_Y_MAX_RATE 1600.0 // mm/min
#define DEFAULT_Z_MAX_RATE 1600.0 // mm/min
#define DEFAULT_X_ACCELERATION (600.0_60_60) // 10_60_60 mm /min^2 = 10 mm/sec^2
#define DEFAULT_Y_ACCELERATION (600.0_60_60) // 10_60_60 mm/min^2 = 10 mm/sec^2
#define DEFAULT_Z_ACCELERATION (600.0_60_60) // 10_60_60 mm/min^2 = 10毫米/秒^2
#define DEFAULT_X_MAX_TRAVEL 80.0 // mm
#define DEFAULT_Y_MAX_TRAVEL 50.0 // mm
#define DEFAULT_Z_MAX_TRAVEL 200.0 // mm
#define DEFAULT_STEP_PULSE_MICROSECONDS 10
#define DEFAULT_STEPPING_INVERT_MASK 0
#define DEFAULT_DIRECTION_INVERT_MASK (1<<Y_AXIS)
#define DEFAULT_STEPPER_IDLE_LOCK_TIME 0 // msec (0-254, 255 keeps steppers enabled)
#define DEFAULT_STATUS_REPORT_MASK ((BITFLAG_RT_STATUS_MACHINE_POSITION)|(BITFLAG_RT_STATUS_WORK_POSITION))
#define DEFAULT_JUNCTION_DEVIATION 0.02 // mm
#定义 DEFAULT_ARC_TOLERANCE 0.002 // mm
#define DEFAULT_REPORT_INCHES 1 // false
#define DEFAULT_AUTO_START 1 // true
#define DEFAULT_INVERT_ST_ENABLE 0 // false
#define DEFAULT_INVERT_LIMIT_PINS 0 // false
#define DEFAULT_SOFT_LIMIT_ENABLE 0 // false
#define DEFAULT_default_limit_0 // false
#ENABLE DEFAULT_HOMING_ENABLE 1 // 假
#define DEFAULT_HOMING_DIR_MASK (1<<Y_AXIS) // 移动正方向
#define DEFAULT_HOMING_FEED_RATE 1200.0 // mm/min
#define DEFAULT_HOMING_SEEK_RATE 500.0 // mm/min
#define DEFAULT_HOMING_DEBOUNCE_DELAY 0 // msec (0-65k)
#define DEFAULT_OFF_HOMING 0 //毫米

对不起,我忘了把那个从 g 代码中拉出来。
M22 对我来说只是一个函数,它将一个整数写入 EEPROM 以跟踪机器运行的总周期数。所以我称之为“生命周期计数器”。

[[[[[[[[[[[[[[[[[[ 来自 settings.c ]]]]]]]]]]]]]]]]]]]]]]]
void increment_lifecycle_counter ()
{
read_global_settings(); // 从 EEPROM 读取当前设置,包括生命周期。
uint16_t我;// 声明 i 的局部变量。
i = settings.lifecycle_counter + 1; // 将值增加 1。settings_store_global_setting
(28, i); // 调用函数将新的生命周期计数器值写入 EEPROM。
}

自定义 Mcode 暂停问题.... #486
作者

我正在用 Atmel Studio 编译它。
稍后我将尝试通过 Ardunio 工具仅使用命令行再次编译它。

今天下午我也将尝试给予@gerritv也想做个测试。

自定义 Mcode 暂停问题.... #486
成员

@timryder: 关于您的 M 代码暂停问题有任何消息吗?

自定义 Mcode 暂停问题.... #486
作者

道歉。不得不离开一个星期。我完全切换到 M8/9,它仍然发生。前几天一个循环看了3遍。我将在周中回到它。请不要关闭。

自定义 Mcode 暂停问题.... #486

@timryder: 出于好奇 – 当您调用自定义代码时,您是否验证过您的 grbl 控制器由于某种原因(驱动 MOSFET 等时的瞬态)没有完全重置,并且您看到的 2-3 秒延迟不是结果“重启”(引导加载程序等待或看门狗超时)延迟……?此外,您的自定义 GUI 本身并不是延迟的来源(使用不同的 GUI 等进行测试)…?只是一个想法…

自定义 Mcode 暂停问题.... #486
成员

@timryder: 任何新闻?现在想想,因为我们还没有听到任何这已经解决的消息。

喜欢 (0)