返回
大家好,请问下汇川PLC控制2台汇川总线伺服作位置控制。当伺服连续运行多个位置时,需要每走完2个位置后中间不加入一个停顿时间吗?感觉这样效率会很低,若不加停顿时间伺服便会停在中途。请大家指点迷津。谢谢
发布

大家好,请问下汇川PLC控制2台汇川总线伺服作位置控制。当伺服连续运行多个位置时,需要每走完2个位置后中间不加入一个停顿时间吗?感觉这样效率会很低,若不加停顿时间伺服便会停在中途。请大家指点迷津。谢谢

164阅读 1 回复 2025-10-05 15:26发布
关注Ta

16404200487680普通会员楼主

电话/手机:联系客服

我不是加停顿时间,而是加计数,每个扫描周期加一的那种。

计数结果等于1或2(看计数和下一个轴控运动指令谁在前,先扫描到谁)的时候,再执行下一个运动指令。


以下内容回复后可见

优质评论内容

  • 明扬工控技术客服

    明扬工控技术客服2025-10-05 15:34:40

    汇川PLC+两台总线伺服:连续多段定位“无停顿”最佳实践

    问题:连续执行多个位置点,若不插停顿时间,伺服会在中途停一下;目前用“扫描计数=1/2”再发下条指令,效率低且不稳。

    结论先说

    • 不需要人为停顿时间。根因通常是下一条指令未被缓冲/融合进队列,或在每个扫描周期开启指令导致前一条被覆盖/中断
    • 正确做法:使用缓冲/融合(Buffered/Blending)模式,Busy期间预排队下一段,Execute用上升沿触发。
    • 另一条路:在伺服内用PR(定位表)连续模式,由驱动实现无停顿多段定位。
    禁忌:用“计数法”控制节拍会导致竞态和重复触发,常引发中途停或运动被Abort。

    方案A:PLCopen运动块(推荐)——缓冲/融合队列

    关键设置

    • 用MC_MoveAbsolute/MC_MoveRelative等块。
    • BufferMode 设为mcBuffered(先排队顺接)或mcBlending(速度连续过渡)。
    • Execute 采用上升沿(只置位1个扫描周期,FB进入Busy后即复位)。
    • 在前一段Busy=TRUE时,预先把下一段送入(让驱动有时间做队列/融合)。

    ST示例(单轴:连续点队列)

    // 变量示意
    Positions : ARRAY[1..100] OF LREAL;  // 目标位置表
    i, iNext  : INT := 1;
    preQueued : BOOL := FALSE;
    vel:=200.0; acc:=1000.0; dec:=1000.0;
    
    Move1(Execute:=Trig1, Position:=Positions[i], Velocity:=vel, Acceleration:=acc,
          Deceleration:=dec, BufferMode:=mcBlending, Done=>done1, Busy=>busy1, Error=>err1);
    
    // Busy 期间预送下一段(关键)
    IF busy1 AND NOT preQueued AND (i+1 <= 100) THEN
      Move2(Execute:=TRUE, Position:=Positions[i+1], Velocity:=vel, Acceleration:=acc,
            Deceleration:=dec, BufferMode:=mcBlending);
      preQueued := TRUE;
    END_IF;
    
    // 完成后推进索引
    IF Move2.Done THEN
      i := i + 2;
      preQueued := FALSE;
      Trig1 := TRUE;    // 下一波只需1个周期的上升沿
    END_IF;
    
    // 执行沿单周期脉冲
    IF Trig1 THEN Trig1 := FALSE; END_IF;

    双轴同步小技巧

    • 两轴的MoveAbs的Execute上升沿在同一扫描末端统一置位。
    • 需要严格同步可用“群组运动”或MC_GearIn/MC_CamIn。

    方案B:伺服内置 PR(定位表)连续模式

    适用于大量重复点位、节拍要求更高的场景。

    1. 在驱动内写好 PR 表,开启“连续/平滑切换/前瞻”参数(不同机型命名略异)。
    2. PLC只需下发“起始PR号、段数、启动”,驱动按表连续运行。
    3. 在线改点位时仅需写入表项,PLC侧逻辑更简洁。

    常见“中途停”根因与对策

    现象 典型原因 处理
    段与段之间明显刹停 BufferMode=Abort/Overwrite;下一段未预排队 改mcBuffered/mcBlending;Busy时预送下一段
    未到位就“停” 重复触发导致上一条被中断(Abort) Execute改上升沿;忙时禁止再触发同段
    必须等InPosition才继续,导致顿挫 以InPosition做节拍信号(带窗口/延时) 以FB的Done或队列完成为条件;Busy期预发下一条
    两轴不同步 参数不一致、触发不同时刻 统一Vel/Acc/Dec;统一上升沿;必要时用群组或齿轮/凸轮

    为什么“扫描计数=1/2”不可靠?

    • 计数与扫描顺序存在竞态:谁先被扫描到,谁先触发,行为不确定。
    • 一个扫描内可能多次命中条件,导致覆盖/中断运动。
    • 对扫描周期抖动敏感,节拍不稳定。
    推荐替代:使用“状态机 + 上升沿 + Busy/Done/Error”作为严谨节拍。

    落地执行清单(最小改动)

    1. 把所有 Move 块的BufferMode改为mcBuffered(要连续速度就mcBlending)。
    2. 为Execute加“上升沿触发器”(置1个扫描周期,Busy后自动清0)。
    3. 在Busy=TRUE时就预送下一段(同轴或另一FB),形成“二段排队”。
    4. 不再以“计数=1/2”为条件;改用Done或队列完成信号推进索引。
    5. 统一相邻段的Vel/Acc/Dec,避免因参数差异被迫减速。

    需要我帮你改成模板?

    把你当前的轴控FB名称/截图(MC_或汇川自带命名)、两轴触发逻辑的一小段代码发我,我按你的平台直接给出:

    • 上升沿触发与去抖模板
    • Busy期预排队的状态机
    • 双轴同步启动/队列融合配置
    © 明扬工控 · 技术速解 |