GSP 执行机制详解

GSP(G代码程序)的执行方式与 ACSPL+ 缓冲区类似,即 每个控制周期执行一行代码。但 运动指令(G0/G1/G2/G3) 的触发规则较为特殊,需特别注意,否则可能导致程序逻辑错误。


1. 基本执行规则

(1) 非运动指令(同步执行)

  • G代码中的大多数指令(如G17/G20/G90等) 仅用于 设置内部状态或计算,会 立即执行,不影响运动队列。

  • 示例

    G90       ; 立即切换为绝对坐标模式
    G17       ; 立即选择XY平面

(2) 运动指令(G0/G1/G2/G3 - 异步触发)

  • 关键规则

    • 运动不会在遇到 G0/G1/G2/G3 时立即启动,而是 等到下一条运动指令出现时才真正执行

    • 这种设计是为了优化 多轴插补,确保运动平滑衔接。

  • 示例

    N10 G00 X100  ; 运动未启动,仅加入队列
    N20 G01 Y200  ; 此时 N10 和 N20 的运动同时开始
    • 执行顺序

      1. N10 的 G00 X100 被 缓存,但 不立即执行

      2. N20 的 G01 Y200 触发 N10 和 N20 的运动同时开始(X/Y 轴同步移动)。


2. GSP 与 ACSPL+ 混合编程的潜在问题

错误案例

N10 G00 X1000 Y1000  ; 运动未启动,仅缓存
TILL RPOS(X) > 500   ; 等待 X 轴位置 > 500
N20 G00 Z1000        ; 由于 TILL 阻塞,程序无法执行到 N20
  • 问题

    • TILL 会一直等待 X > 500,但 X 轴的运动 尚未开始(因为 N20 未执行)。

    • 导致 死锁,程序卡在 TILL 无法继续。

正确写法

N10 G00 X1000 Y1000  ; 运动缓存
N20 G00 Z1000        ; 触发 N10 和 N20 的运动
TILL RPOS(X) > 500   ; 此时 X 轴已在运动,条件可满足
  • 关键点

    • 先发送所有运动指令,再执行 TILL 等待。

    • 确保 运动已真正启动,再检测位置。


3. G 代码模态与隐含运动功能

  • 模态影响

    • 如果一行 G 代码 未指定运动指令(G0/G1/G2/G3),但包含 坐标轴(X/Y/Z等),则 沿用最近一次的运动模式

    • 示例

      N10 G01 X100  ; 线性插补
      N20 Y200      ; 隐含 G01(沿用 N10 的模式)
      • N20 没有写 G01,但仍按 G01 执行。


4. 总结 & 编程建议

规则说明示例
非运动指令立即执行G90G17
运动指令(G0/G1/G2/G3)需下一条运动指令触发G00 X100 + G01 Y200 → 同时执行
TILL / WAIT 使用必须确保运动已启动先发 G00,再 TILL RPOS(X)>500
模态隐含运动未写 G 代码时沿用最近模式G01 X100 → Y200(仍为 G01

最佳实践

  1. 避免在运动指令之间插入 TILL/WAIT,否则可能死锁。

  2. 连续运动指令尽量集中,确保插补优化。

  3. 检查模态状态,防止隐含运动模式导致意外行为。

通过合理规划 GSP 和 ACSPL+ 的混合编程,可避免运动控制中的常见陷阱。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值