Contact me: hankecnc@gmail.com

绝对 A 轴 ? #831

推推 grbl 3年前 (2023-01-30) 221次浏览
关闭
nsiatras 打开了这个问题 2021 年 3 月 19 日 · 18条评论
关闭

绝对 A 轴 ?#831

nsiatras 打开了这个问题 2021 年 3 月 19 日 · 18条评论

注释

绝对 A 轴 ? #831

有什么可能的方法可以在没有软限制的情况下使用 A 轴吗?
我想让 A 轴旋转 360 度。

绝对 A 轴 ? #831
所有者

还没有,在未来的版本中,我们计划允许每个轴应用所有归位和限位开关功能。

你用那个轴的原点开关吗?

绝对 A 轴 ? #831
作者

我只对 X、Y 和 Z 使用限位开关。
我不喜欢像 A 那样的旋转轴上的限位开关和软限位:)

绝对 A 轴 ? #831
作者

有什么办法可以通过从串行端口发送的命令来扩展 A 轴最大行程?
我目前正在为 SprutCAM 构建一个 4 轴后处理器和一个自定义 4 轴 GCode 发送器。
任何建议都会很有帮助

绝对 A 轴 ? #831
所有者

您可以将最大行程设置为一个非常大的值,并将 Home/Mpos 设置为该值的一半。例如

$Z/最大行程 = 10000
$Z/Home/Mpos=5000

将导致这样的范围……(忽略除限制之外的所有内容)

[MSG:Z Axis Trinamic TMC2130 Step:I2SO(10) Dir:I2SO(9) CS:I2SO(11) Disable:I2SO(8) Index:-1 R:0.110 Limits(-5000.000,5000.000)]

绝对 A 轴 ? #831
作者
尼亚特拉 评论了 2021 年 3 月 19 日  

我可以用 G92 改变工作位置
如果有办法用 GCode 命令改变机器位置我可以让它在限制之外工作

绝对 A 轴 ? #831
所有者

是的,可以更改工作位置偏移。我通常推荐G10G54-G59而不是 G92。

绝对 A 轴 ? #831

我认为这个问题与机器位置有关,而不是工作位置。在我们的 Trello 看板上有一张临时分配给我的票,用于添加对 G28.2 和 G28.3 的支持,以便从 GCode 管理机器坐标 – 但它在优先级列表中的位置很低。

绝对 A 轴 ? #831
作者

@MitchBradley是的。我要求的。

我使用 Java、PHP 和 .NET ….
希望我能帮助你完成这个项目。

绝对 A 轴 ? #831

如果将可用作输入的轴的最大行程设置为 0,则不应用软限制。我做到了,应该也很容易添加到这个端口。

绝对 A 轴 ? #831
作者

@terjeio我相信您的解决方案是从任何轴上删除软限制的最简单和最好的方法。如果有人可以指导我在哪里查看代码,我可以进行更改。它在 Limits.cpp 中吗?

绝对 A 轴 ? #831

@nsiatras这是我的操作方法,请注意我检查的是 -0 而不是 0。归位和设置验证也可能需要更改。

// Checks and reports if target array exceeds machine travel limits. Returns false if check failed.
// NOTE: max_travel is stored as negative
// TODO: only check homed axes?
bool system_check_travel_limits (float *target)
{
    bool failed = false;
    uint_fast8_t idx = N_AXIS;

    if(settings.homing.flags.force_set_origin) {
        do {
            idx--;
        // When homing forced set origin is enabled, soft limits checks need to account for directionality.
            failed = settings.axis[idx].max_travel < -0.0f &&
                      (bit_istrue(settings.homing.dir_mask.value, bit(idx))
                        ? (target[idx] < 0.0f || target[idx] > -settings.axis[idx].max_travel)
                        : (target[idx] > 0.0f || target[idx] < settings.axis[idx].max_travel));
        } while(!failed && idx);
    } else do {
        idx--;
        failed = settings.axis[idx].max_travel < -0.0f && (target[idx] > 0.0f || target[idx] < settings.axis[idx].max_travel);
    } while(!failed && idx);

    return !failed;
}
绝对 A 轴 ? #831
作者

我相信我做到了。

我在Limits.cpp文件内的bool limitsCheckTravel的 if 语句中添加了&& axis_settings[idx]->max_travel->get()>0案例。

我还在我的机器文件中将 A 轴最大行程设置为零
**#define DEFAULT_A_MAX_TRAVEL 0 **
我认为效果很好

// Checks and reports if target array exceeds machine travel limits.
// Return true if exceeding limits
bool limitsCheckTravel(float* target) {
    uint8_t idx;
    auto    n_axis = number_axis->get();
    for (idx = 0; idx < n_axis; idx++) {
        float max_mpos, min_mpos;
		
		if ((target[idx] < limitsMinPosition(idx) || target[idx] > limitsMaxPosition(idx)) 
			&& axis_settings[idx]->max_travel->get()>0) {
			return true;
		}
    }
    return false;
}
绝对 A 轴 ? #831
作者
尼亚特拉 评论了 2021 年 3 月 19 日  

关于通过串行命令将 A 轴的最大行程更改为 0(零)时如何避免错误 80 的任何想法?
133 美元 = 0

我应该看看 Settings.cpp 吗?

绝对 A 轴 ? #831
所有者

设置定义.cpp

每个设置都有一个有效范围。您需要将最小值从 1 更改为 0。

https://github.com/bdring/Grbl_Esp32/blob/Devt/Grbl_Esp32/src/SettingsDefinitions.cpp#L304

绝对 A 轴 ? #831
作者

我将行更改为
auto setting = new FloatSetting(GRBL, WG, makeGrblName(axis, 130), makename(def->name, "MaxTravel"), def->max_travel, (axis>=3) ? 0 : 1.0, 100000.0);

(axis>=3) ? 0 : 1.0语句允许我将 A、B 和 C 轴的最大行程的最小值设置为零,并且通过我对 Limits.cpp–>limitsCheckTravel 所做的更改,我可以使用没有软限制的旋转轴

非常感谢您的帮助。这非常有帮助!

绝对 A 轴 ? #831
作者

@bdring 和@MitchBradley 附言。请考虑项目的这一变化。
使用没有软限制的旋转轴对于 4 轴 CNC 铣削非常有用,并使后处理器工作,对于许多廉价的 CAM 软件来说,就像在公园散步一样容易。

再次感谢 :)

绝对 A 轴 ? #831
所有者

我们会认真考虑的。我暂时关闭这个问题。

如果您以后有任何问题,请访问我们的 Discord 服务器

https://discord.gg/Nzz9gWZV4K