返回主站|会员中心|保存桌面

埃斯顿机器人综合服务商    

埃斯顿机器人

联系方式
  • 联系人:方经理
  • 电话:13073017555
新闻分类
  • 暂无分类
站内搜索
 
首页 > 新闻中心 > 埃斯顿机器人主任务和独立任务起冲突了该如何处理!
新闻中心
埃斯顿机器人主任务和独立任务起冲突了该如何处理!
发布时间:2026-05-11        浏览次数:6        返回列表

埃斯顿机器人主任务与独立任务冲突,本质是资源争抢(运动 / IO / 全局变量)、任务启停不干净、读写没互锁、优先级不合理。下面从快速恢复→原因排查→根治代码→系统设置,给你一套现场直接能用的处理流程(适配 ESTUN ER 系列 + EC30/RC9,语言 ERL)。


一、现场快速恢复

1. 强制停掉所有任务(示教器操作)

  1. 示教器→任务管理→查看所有任务状态;

  2. 选中独立任务→停止 / 终止

  3. 若提示 “任务无法终止”:

    • 先切急停,再进任务管理器停止;

    • 仍不行:重启控制器(断电 30 秒),清除残留任务。

2. 主程序里先 “杀任务” 再启动(避免重复运行报错)

erl

// 主任务开头先清冲突
task main()
{
    KillTask "Task1";  // 强制终止独立任务
    Delay(200);         // 等任务退出
    RunTask "Task1";    // 再启动独立任务
    // ... 主逻辑
}

典型报错:“不能重复运行并行任务”—— 就是旧任务没退出,新任务又启动。


二、冲突的 3 大根本原因(对号入座)

1. 运动资源冲突(最危险,易撞机)

  • 现象:两个任务都用 MOVJ/MOVL 运动指令;

  • 原因:一台机器人同一时间只能执行一条运动指令,独立任务严禁跑运动。

  • ✅ 规则:独立任务只做逻辑 / IO / 通信 / 计算,不碰运动

2. 全局变量 / IO 读写冲突(数据乱、逻辑乱)

  • 现象:主任务发数据,独立任务收到乱码 / 值跳变;

  • 原因:同时读写同一全局变量(G_xxx)或 IO(DIN/DOUT),无互锁。

3. 任务启停与优先级混乱(系统卡、报错)

  • 现象:主任务停了,独立任务还在跑;或启动时报 “任务已存在”;

  • 原因:RunTask 重复调用、没 KillTask、优先级没设好。


三、根治方案:互锁 + 优先级 + 规范代码

1. 全局变量互锁(防止读写冲突)

全局标志 G_Lock 做 “上锁 / 解锁”,同一时间只允许一个任务访问共享数据。

erl

// 全局定义(所有任务外)
global string G_StrSend = "";
global string G_StrRecv = "";
global int G_Lock = 0;  // 0=空闲,1=主任务占用,2=独立任务占用

2. 主任务(写数据→上锁→发信号)

erl

task main()
{
    KillTask "Task1"; Delay(200);
    RunTask "Task1";

    while(1)
    {
        // 等待锁空闲
        while(G_Lock != 0) Delay(10);
        G_Lock = 1;  // 主任务上锁

        // 写字符串
        G_StrSend = "主任务数据:" + ToStr(GetSysTime());
        Print "主发送:", G_StrSend;

        G_Lock = 0;  // 解锁
        Delay(500);
    }
}

3. 独立任务(读数据→上锁→回传)

erl

task task1()
{
    while(1)
    {
        // 等待锁空闲
        while(G_Lock != 0) Delay(10);
        G_Lock = 2;  // 独立任务上锁

        // 读字符串
        if(G_StrSend != "")
        {
            Print "独立接收:", G_StrSend;
            G_StrRecv = "独立已收到";
        }

        G_Lock = 0;  // 解锁
        Delay(100);  // 必须加,防CPU 100%
    }
}

4. 任务优先级设置(系统级防抢资源)

  1. 示教器→系统设置→任务配置

  2. 主任务优先级:高(1)

  3. 独立任务优先级:低(3)

  4. 保存重启 —— 主任务优先占用资源,独立任务只在空闲时运行。


四、绝对禁止的 5 种写法(避坑)

  1. ❌ 独立任务写 MOVJ/MOVL → 运动冲突、撞机;

  2. ❌ 无 KillTask 直接 RunTask → 重复运行报错;

  3. ❌ 同时读写同一全局变量 / IO → 数据乱、逻辑异常;

  4. ❌ 独立任务死循环不加 Delay(10) → CPU 100%、系统卡顿;

  5. ❌ 主任务停了不终止独立任务 → 后台残留、下次启动冲突。


五、一键自检清单

  • ✅ 独立任务无任何运动指令;

  • ✅ 所有全局变量 / IO 访问都加了 G_Lock 互锁;

  • ✅ 主任务开头先 KillTaskRunTask

  • ✅ 独立任务循环有 Delay(10~200)

  • ✅ 主任务优先级高于独立任务。

收缩
  • QQ咨询

  • 电话咨询

  • 13073017555
  • 添加微信客服