Contact me: hankecnc@gmail.com

如何发送Ascii字符触发安全门操作 #642

推推 grbl 3年前 (2023-01-22) 538次浏览
关闭
MeJasonT 打开了这个问题 2019 年 4 月 20 日 · 16条评论
关闭

如何发送Ascii字符触发安全门操作#642

MeJasonT 打开了这个问题 2019 年 4 月 20 日 · 16条评论

注释

如何发送Ascii字符触发安全门操作 #642

我正在尝试找出如何发送“˶”字符来激活安全门操作。
例如,如果我要将工具更改功能写入我的后处理器,当它收到工具标识符 T1 时,它将运行 ascii 命令。如果我让它发送它的字符但没有任何反应发送“˶”字符 0x84,它会接受一个 feedhold。

我已经在 config.h 中启用了安全门操作,但它总是有可能我忘了做其他事情?

我想作为 gcode 文件的一部分触发,而不是物理引脚输入

如何发送Ascii字符触发安全门操作 #642

0x84 不是可打印的文本字符,因此您不能只将它添加到 g 代码中。

您可以编辑代码以更改用于安全门激活的字符,并将其更改为可打印字符以完成您想要的操作。需要在 config.h 和 serial.c 中进行编辑

如何发送Ascii字符触发安全门操作 #642
作者

嗨,约翰,
看起来“¬”在扩展的 ascii 表中,我认为对 serial.c 所做的更改将使用开关接受低 128 位字符或 128 位以上字符表中的字符案例陈述,这是你的意思吗 – 我需要做出什么改变。在任何情况下使用“¬”都不起作用。我在蜡烛上运行了一个文件并发送了这个角色,它只是忽略了它。

如何发送Ascii字符触发安全门操作 #642

对于您要尝试做的事情,我只会使用您可以从键盘输入的字符。有很多 Grbl 兼容的 g 代码没有使用。例如,要更改代码以使用“&”来触发门,您可以执行以下操作。

首先,在 config.h 中,您需要为新角色更改以下行

#define CMD_SAFETY_DOOR 0x84 —> #define CMD_SAFETY_DOOR ‘&’

然后在 serial.c 中,关于第 158 行,您将看到以下行

案例 CMD_SAFETY_DOOR: system_set_exec_state_flag(EXEC_SAFETY_DOOR); 休息; // 设置为真

只需将其向上移动大约 3 行到您看到以
case CMD_FEED_HOLD 开头的行的位置:

就这样。现在流中的“&”应该会触发安全门。

如何发送Ascii字符触发安全门操作 #642
作者

谢谢,我今晚会看一下,我现在正在忙着接线。
我通过更换电机并拆除旧机器接线并将其放入单相 24 vdc 变压器,将我的肥皂水泵从 3 相转换为 24v。为门开关和探头接线。

你知道当某件事情发生时你会想尽一切办法避免打开控制器面板并将 IC 替换为重新刷新过的 IC – 龙在那里等等

如何发送Ascii字符触发安全门操作 #642
作者
我杰森T 评论了 2019 年 4 月 22 日  

谢谢约翰,
它看起来不错 – 到目前为止。
我正在使用 Atmega 328 微型。我做了一些搜索,但没有找到关于主轴缩回和恢复的任何决定性信息,只是关于一个问题的注释,其中桑尼说了一些关于维基中没有写的东西,因为该功能仅适用于原始设备制造商。我想我应该启用停车是正确的。同样在恢复时冷却剂没有重新激活,我记得不久前读过这个问题但似乎可以再次找到它。它可能在旧的 grbl 站点上。几乎得到一个功能齐全的 DIY VMC。我遇到的另一个问题是 Grbl-Panel 在运行文件时锁定命令输入框,因此无法发送 ‘&’ ,如果它在代码中激活,监视器窗口在恢复后停止报告。当安全门被激活时,Candle CNC 不知道该怎么做,幸运的是 grbl 做了它的事情并等待恢复 – 当操作恢复时蜡烛确实恢复了生命。今天刚找到一些自动寻找工件原点并设置 G54 WCS 的代码,为什么我可以在 grbl-panel 中使用它。我必须弄清楚如何让 visual studio 停止在我每次尝试打开和编译 Gerrits 代码时给我错误和警告。

另外 – 我有一个光纤光束传感器,它非常适合用作工具高度设置器,但我不知道从哪里开始。

如何发送Ascii字符触发安全门操作 #642
作者

再次感谢约翰的帮助。
现在设法运行几个代码块,代码中包含“&”,机器非常愉快地读取它并执行缩回、主轴冷却停止和暂停。
终于安装了门开关,一切正常。

如何发送Ascii字符触发安全门操作 #642

再次感谢约翰的帮助。
现在设法运行几个代码块,代码中包含“&”,机器非常愉快地读取它并执行缩回、主轴冷却停止和暂停。
终于安装了门开关,一切正常。

嗨,杰森。你能详细解释一下怎么做吗?我还是不明白你是如何解决这个问题的。我就像约翰说的那样做了,但是 grbl 安全门仍然无法工作。

如何发送Ascii字符触发安全门操作 #642
作者

是否在固件config.h中启用了安全门功能

如何发送Ascii字符触发安全门操作 #642
作者

这是我的 config.h
我说的是我现在使用 Tormach 的 PathPilot

`/*
config.h –
Grbl 的编译时配置部分

版权所有 (c) 2012-2016 Sungeun K. Jeon for Gnea Research LLC
版权所有 (c) 2009-2011 Simen Svale Skogsrud

Grbl 是免费软件:您可以根据自由软件基金会
发布的 GNU 通用公共许可证条款重新分发和/或修改它,许可证
版本 3,或
(由您选择)任何更新版本。

Grbl 的分发是希望它有用,
但不提供任何保证;
甚至没有针对特定用途的适销性或适用性的默示保证。有关详细信息,请参阅
GNU 通用公共许可证。

您应该
随 Grbl 一起收到 GNU 通用公共许可证的副本。如果没有,请参阅http://www.gnu.org/licenses/
*/

// 此文件包含 Grbl 内部系统的编译时配置。在大多数情况下,
// 用户不需要直接修改这些,但它们是出于特定需要,即
// 性能调整或针对非典型机器进行调整。

// 重要提示:此处的任何更改都需要完全重新编译源代码才能传播它们。

#ifndef config_h
#define config_h
#include “grbl.h” // 用于 Arduino IDE 兼容性。

// 定义 CPU 引脚映射和默认设置。
// 注意:OEM 可以避免维护/更新 defaults.h 和 cpu_map.h 文件的需要,并且只使用
// 一个配置文件,方法是将其特定的默认值和引脚映射放在该文件的底部。
// 如果这样做,只需注释掉这两个定义并查看下面的说明。
#define DEFAULTS_GENERIC
#define CPU_MAP_ATMEGA328P // Arduino Uno CPU

// 串口波特率
// #define BAUD_RATE 230400
#define BAUD_RATE 115200

// 定义实时命令特殊字符。这些字符是直接从
// 串行读取数据流中“挑选出来”的,不会传递给 grbl 行执行解析器。选择
不存在且不得存在于流式 g 代码程序中的字符。
// 如果每个用户设置可用,则可以使用 ASCII 控制字符。此外,扩展的 ASCII 代码 (>127),从来
不在 // g 代码程序中,可能会被选择用于接口程序。
// 注意:如果更改,请手动更新 report.c 中的帮助消息。

#define CMD_RESET 0x18 // ctrl-x。
#define CMD_STATUS_REPORT ‘?’
#define CMD_CYCLE_START ‘~’
#define CMD_FEED_HOLD ‘!’

// 注意:所有覆盖实时命令必须在扩展的 ASCII 字符集中,从
字符值 128 (0x80) 开始到 255 (0xFF)。如果实时命令的正常集,
//例如状态报告、进给保持、复位和循环启动,被移动到扩展集
//空间,serial.c 的 RX ISR 将需要修改以适应变化。
// #define CMD_RESET 0x80 /​​/
#define CMD_STATUS_REPORT 0x81
// #define CMD_CYCLE_START 0x82
// #define CMD_FEED_HOLD 0x83
#define CMD_SAFETY_DOOR ‘&’
#define CMD_JOG_CANCEL 0x85
#define CMD_DEBUG_REPORT 0x86 // 仅当 DEBUG 启用时,发送调试报告{}’ 大括号。
#define CMD_FEED_OVR_RESET 0x90 // 将进给覆盖值恢复为 100%。
#define CMD_FEED_OVR_COARSE_PLUS 0x91
#define CMD_FEED_OVR_COARSE_MINUS 0x92
#define CMD_FEED_OVR_FINE_PLUS 0x93
#define CMD_FEED_OVR_FINE_MINUS 0x94
#define CMD_RAPID_OVR_RESET 0x95 // 将快速覆盖值恢复为 100%。
#define CMD_RAPID_OVR_MEDIUM 0x96
#define CMD_RAPID_OVR_LOW 0x97
// #define CMD_RAPID_OVR_EXTRA_LOW 0x98 //不支持
#define CMD_SPINDLE_OVR_RESET 0x99 // 将主轴覆盖值恢复为 100%。
#define CMD_SPINDLE_OVR_COARSE_PLUS 0x9A
#define CMD_SPINDLE_OVR_COARSE_MINUS 0x9B
#define CMD_SPINDLE_OVR_FINE_PLUS 0x9C
#define CMD_SPINDLE_OVR_FINE_MINUS 0x9D
#define CMD_SPINDLE_OVR_STOP 0x9E
#define CMD_COOLANT_FLOOD_OVR_TOGGLE 0xA0
#define CMD_COOLANT_MIST_OVR_TOGGLE 0xA1

// 如果启用归位,归位初始化锁定在上电时将 Grbl 设置为警报状态。这会强制
// 用户在执行任何其他操作之前执行归位循环(或覆盖锁定)。//这
主要是提醒用户回家的安全功能,因为 Grbl 不知道位置。
#define HOMING_INIT_LOCK // 注释禁用

// 使用位掩码定义归位循环模式。归位循环首先执行搜索模式
// 以快速接合限位开关,然后是较慢的定位模式,并以短暂的
// 拉动动作结束以脱离限位开关。以下 HOMING_CYCLE_x 定义
按 // 从后缀 0 开始的顺序执行,并仅完成指定轴的归位例程。如果
//定义中省略了一个轴,它不会回家,系统也不会更新它的位置。
// 这意味着这允许使用非标准笛卡尔机器的用户,例如车床(x 然后 z,
// 没有 y),根据他们的需要配置归位循环行为。
// 注意:归位循环旨在允许共享限制引脚,如果轴不在同一个
// 循环中,但这需要在 cpu_map.h 文件中更改一些引脚设置。例如,默认归位
//循环可以与 X 或 Y 限制引脚共享 Z 限制引脚,因为它们处于不同的循环中。
// 通过共享一个引脚,可以释放宝贵的 IO 引脚用于其他目的。理论上,所有轴限制引脚
// 可以减少到一个引脚,如果所有轴都以单独的周期归位,反之亦然,所有三个轴
// 在单独的引脚上,但在一个周期内归位。另外,需要注意的是,硬限制的功能
//不会受到引脚共享的影响。
// 注意:为传统的 3 轴数控机床设置默认值。Z 轴首先清除,然后是 X 和 Y。
#define HOMING_CYCLE_0 (1<<Z_AXIS) // 要求:首先移动 Z 以清除工作区。
#define HOMING_CYCLE_1 ((1<<X_AXIS)|(1<<Y_AXIS)) // 可选:然后同时移动 X、Y。
// #define HOMING_CYCLE_2 // 可选:取消注释并添加轴掩码以启用

// 注意:以下是为 2 轴机器设置归位的两个示例。
// #define HOMING_CYCLE_0 ((1<<X_AXIS)|(1<<Y_AXIS)) // 与 COREXY 不兼容:在一个周期内同时归位 XY。

// #define HOMING_CYCLE_0 (1<<X_AXIS) // COREXY 兼容:第一个家 X
// #define HOMING_CYCLE_1 (1<<Y_AXIS) // COREXY 兼容:然后家 Y

// 在机器最初点动到限位开关后执行的归位循环数。
// 这有助于防止超调并提高可重复性。这个值应该是 1 或
// 更大。
#define N_HOMING_LOCATE_CYCLE 1 // 整数 (1-128)

//启用单轴归位命令。$HX、$HY 和 $HZ 用于 X、Y 和 Z 轴归位。完整的归位
// 循环仍由 $H 命令调用。默认情况下禁用。它仅用于解决
// 需要在两轴和三轴机器之间切换的用户。这实际上是非常罕见的。
// 如果你有两轴机器,不要使用这个。相反,只需更改两轴的归位周期。
// #define HOMING_SINGLE_AXIS_COMMANDS // 默认禁用。取消注释以启用。

// 归位后,Grbl 默认将整个机器空间设置为负空间,这是典型的
// 对于专业 CNC 机器,无论限位开关位于何处。取消注释此
//定义以强制 Grbl 始终将机器原点设置在归位位置,尽管切换方向。
// #define HOMING_FORCE_SET_ORIGIN // 取消注释以启用。

// Grbl 在启动时执行的块数。这些块存储在 EEPROM 中,其中大小
// 和地址在 settings.h 中定义。使用当前设置,最多可以
// 存储和执行 2 个启动块。这些启动块通常用于
根据用户偏好设置 g 代码 // 解析器状态。
#define N_STARTUP_LINE 2 // 整数 (1-2)

// Grbl 为某些值类型打印的浮动小数点数。这些设置
// 由 CNC 机器中的现实和常见观察值确定。例如,位置
// 值不能小于 0.001 毫米或 0.0001 英寸,因为机器在物理上不能比
// 更精确。因此,可能不需要更改这些,但如果需要,可以在此处更改。
// 注意:必须是从 0 到 ~4 的整数值。超过 4 个可能会出现舍入误差。
#define N_DECIMAL_COORDVALUE_INCH 4 // 以英寸为单位的坐标或位置值
#define N_DECIMAL_COORDVALUE_MM 3 // 以毫米为单位的坐标或位置值
#define N_DECIMAL_RATEVALUE_INCH 1 // 以英寸/分钟为单位的速率或速度值
#define N_DECIMAL_RATEVALUE_MM 0 // 以毫米/分钟为单位的速率或速度值
#define N_DECIMAL_SETTINGVALUE 3 // 浮点设置值的小数
#define N_DECIMAL_RPMVALUE 0 // RPM 值以每分钟转数为单位。

// 如果您的机器有两个平行连接到一个轴的限位开关,您将需要启用
// 此功能。由于这两个开关共享一个引脚,Grbl 无法判断
// 启用了哪个。此选项仅影响归位,如果使用限位,Grbl 将
// 发出警报并强制用户手动断开限位开关。否则,如果
每个轴都有一个 // 限位开关,请不要启用此选项。通过保持禁用状态,您可以
在限位开关上执行 // 归位循环,而不必将机器从其上移开。
// #define LIMITS_TWO_SWITCHES_ON_AXES

// 允许 GRBL 跟踪和报告 gcode 行号。启用这意味着计划缓冲区
// 从 16 增加到 15,以便为 plan_block_t 结构中的附加行号数据腾出空间
// #define USE_LINE_NUMBERS // 默认情况下禁用。取消注释以启用。

// 探测周期成功后,此选项通过自动生成的消息立即提供探测坐标的反馈。如果禁用,用户仍然可以
通过 Grbl ‘$#’ 打印参数访问最后一个探针 // 坐标。
#define MESSAGE_PROBE_COORDINATES // 默认启用。评论禁用。

// 通过 Arduino Uno 上的喷雾冷却剂 g 代码命令 M7 启用第二个冷却剂控制引脚
// 模拟引脚 4。仅当您需要第二个冷却剂控制引脚时才使用此选项。
// 注意:无论如何,模拟引脚 3 上的 M8 溢流冷却剂控制引脚仍将起作用。
#define ENABLE_M7 // 默认禁用。取消注释以启用。

// 此选项使进给保持输入充当安全门开关。安全门在触发时
// 立即强制暂停进给,然后安全地使机器断电。恢复被阻止,直到
// 安全门重新接合。到时,Grbl 将重新启动机器,然后继续
//之前的刀具路径,就好像什么都没发生过一样。
#define ENABLE_SAFETY_DOOR_INPUT_PIN // 默认禁用。取消注释以启用。

// 在安全门开关被切换和恢复后,此设置设置了开机延迟
// 在恢复主轴和冷却剂与恢复循环之间。
#define SAFETY_DOOR_SPINDLE_DELAY 4.0 // 浮动(秒)
#define SAFETY_DOOR_COOLANT_DELAY 1.0 // 浮动(秒)

// 启用 CoreXY 运动学。仅与 CoreXY 机器一起使用。
// 重要提示:如果启用归位,则必须将上面的归位循环#defines 重新配置为
// #define HOMING_CYCLE_0 (1<<X_AXIS) 和 #define HOMING_CYCLE_1 (1<<Y_AXIS)
// 注意:此配置选项会改变运动X 和 Y 轴的操作原理
// 定义在 ( http://corexy.com/theory.html )。假设电机的定位和接线与
//描述的完全一致,否则,运动可能会朝奇怪的方向移动。Grbl 要求 CoreXY A 和 B 电机
//内部每毫米步数相同。
// #define COREXY // 默认禁用。取消注释以启用。

//根据掩码反转控制命令引脚的引脚逻辑。这实质上意味着您可以
在指定的引脚上使用 // 常闭开关,而不是默认的常开开关。
// 注意:顶部选项将屏蔽和反转所有控制引脚。底部选项是
// 仅反转两个控制引脚、安全门和复位的示例。有关其他位定义,请参见 cpu_map.h。
// #define INVERT_CONTROL_PIN_MASK CONTROL_MASK // 默认禁用。取消注释以禁用。
// #define INVERT_CONTROL_PIN_MASK ((1<<CONTROL_SAFETY_DOOR_BIT)|(CONTROL_RESET_BIT)) // 默认禁用。

// 根据以下掩码反转选择限制引脚状态。这会影响所有限制引脚功能,
//例如硬限制和归位。但是,这与总体反转限制设置不同。
//此构建选项将仅反转此处定义的限制引脚,然后反转限制设置
//将应用于所有这些。当用户
在他们的机器上安装了一组混合的限位销时,这很有用 // 常开(NO)和常闭(NC)开关。
// 注意:请不要使用它,除非你有需要它的情况。
// #define INVERT_LIMIT_PIN_MASK ((1<<X_LIMIT_BIT)|(1<<Y_LIMIT_BIT)) // 默认禁用。取消注释以启用。

// 将主轴使能引脚从低电平禁用/高电平启用反转为低电平启用/高电平禁用。有用
// 对于一些预制的电子板。
// 注意:如果启用 VARIABLE_SPINDLE(默认),则此选项无效,因为 PWM 输出和
// 主轴启用组合到一个引脚。如果您需要此选项和主轴速度 PWM,
//取消注释下面的配置选项 USE_SPINDLE_DIR_AS_ENABLE_PIN。
// #define INVERT_SPINDLE_ENABLE_PIN // 默认禁用。取消注释以启用。

// 将选定的冷却剂针脚从低禁用/高启用反转为低启用/高禁用。有用
// 对于一些预制的电子板。
// #define INVERT_COOLANT_FLOOD_PIN // 默认禁用。取消注释以启用。
// #define INVERT_COOLANT_MIST_PIN // 默认禁用。注意:在 config.h 中启用 M7 喷雾冷却剂

// 当 Grbl 电源循环或使用 Arduino 重置按钮硬重置时,Grbl 默认启动时没有警报
。这是为了让新用户尽可能简单地开始使用 Grbl。当归位
// 启用并且用户安装了限位开关时,Grbl 将在警报状态下启动以指示
// Grbl 不知道其位置并在继续之前强制用户回家。此选项强制
// Grbl 始终初始化为 ALARM 状态,无论是否归位。此选项更适合
// 喜欢这种电源循环行为的 OEM 和 LinuxCNC 用户。
// #define FORCE_INITIALIZATION_ALARM // 默认禁用。取消注释以启用。

// 在上电或重置时,Grbl 将检查限位开关状态以确保它们
在初始化之前不处于活动状态。如果它检测到问题并且启用了硬限制设置,Grbl 将
// 简单地向用户发送消息以检查限制并进入警报状态,而不是闲置。Grbl
// 不会抛出警报消息。
#define CHECK_LIMITS_AT_INIT

// ———————————————- ————————————–
// 高级配置选项:

喜欢 (0)