开源改变世界!!

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

推推 grbl 2年前 (2022-10-31) 198次浏览 0个评论
关闭
timryder 打开了这个问题 2014 年 9 月 9 日 · 15 条评论
关闭

自定义 Mcode 暂停问题….第486章

timryder 打开了这个问题 on 9 Sep 2014 · 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 似乎提高了性能并降低了频率。但是,我确实让该事件连续发生了 3 次。

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

事件发生时,Grbl 似乎没有响应。UI 仍在等待“确定”以继续流式传输 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 开发人员编写了一个界面 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 mm/sec^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 // 错误
#define DEFAULT_AUTO_START 1 // 正确
#define DEFAULT_INVERT_ST_ENABLE 0 // 错误
#define DEFAULT_INVERT_LIMIT_PINS 0 // 错误
#define DEFAULT_SOFT_LIMIT_ENABLE 0 // 错误 #define
DEFAULT_INVERT_ST_ENABLE 0 // 错误
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-65kPU)
#define DEFAULT_HOMING毫米

对不起,我忘了把那个从 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: 任何新闻?现在想,因为我们还没有听到任何消息,这已经解决了。

自定义 Mcode 暂停问题.... #486
 
添加标题文本添加粗体文本,<Ctrl+b>添加斜体文本,<Ctrl+i>
添加引号,<Ctrl+Shift+.>添加代码,<Ctrl+e>添加链接,<Ctrl+k>
添加项目符号列表,<Ctrl+Shift+8>添加编号列表,<Ctrl+Shift+7>添加任务列表,<Ctrl+Shift+l>
直接提及用户或团队引用问题、拉取请求或讨论

添加已保存的回复

喜欢 (0)

您必须 登录 才能发表评论!