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

发那科机器人配件(中国)服务中心    

发那科机器人配件、模块、伺服电机

网站公告
发那科示教器、驱动器、伺服电机、通讯板卡,各型号齐全!
站内搜索
 
新闻分类
  • 暂无分类
友情链接
首页 > 新闻中心 > 发那科机器人多任务运行时如何进行任务间的通信!
新闻中心
发那科机器人多任务运行时如何进行任务间的通信!
发布时间:2026-05-11        浏览次数:3        返回列表

发那科机器人多任务间通信,工业现场最常用、最简单稳定的是:标志位 F []、数值寄存器 R []、组掩码隔离、后台逻辑;复杂一点可用Karel 共享内存 / 消息队列。下面按用法从易到难讲清楚,并给可直接用的示例。


一、多任务基础

发那科多任务用 RUN 指令 启动并行任务:

tp

RUN JOB1   ; 主程序启动JOB1,不等待,继续往下跑
  • 限制:同一动作组(Group)不能同时运动;多任务程序组掩码设为 *(不占用运动组)。

  • 控制器:R-30iB 最多 16 个任务,R-30iB Plus (v9.1+) 最多 32 个。


二、最常用:全局寄存器通信(TP 程序直接用)

1. 标志位 F [](布尔,任务间启停 / 互锁)

所有任务直接读写同一段 F [],无需额外设置。

主程序(MAIN)

tp

F[100]=OFF       ; 初始化:任务1未就绪
RUN TASK1         ; 启动任务1
WAIT F[100]=ON    ; 等待任务1完成
! 继续执行...

任务 1(TASK1)

tp

! 做后台任务(如IO监控、拍照)
F[100]=ON         ; 通知主程序:我完成了
END

2. 数值寄存器 R [](整数 / 小数,传数据)

跨任务共享数值,如坐标、计数、状态码。

主程序

tp

R[50]=100        ; 给任务1发数据
RUN TASK2

任务 2

tp

WAIT R[50]>0      ; 等待数据
TPWRITE "收到:",R[50]
R[51]=R[50]*2     ; 回传结果
END

3. 位置寄存器 PR [](传点位)

多任务间传递目标位置,常用于视觉 / 搬运。


三、任务互锁

F [] 做互斥锁,同一时间只一个任务执行关键区。

tp

; 任务A
WAIT F[200]=OFF   ; 等待锁释放
F[200]=ON         ; 上锁
! 关键代码(如占用外部轴)
F[200]=OFF        ; 解锁

任务 B 同理,先等锁、再上锁、最后解锁。


四、后台逻辑(常驻任务通信)

后台程序(Background Logic)上电自启,长期运行,适合持续通信 / 监控

  • 设置:菜单 → 设置 → 系统 → 后台逻辑 → 添加程序(如 BG_COM)。

  • 限制:不能用运动指令、码垛寄存器;可读写 F []/R []/IO。

后台程序 BG_COM

tp

WHILE TRUE
  TPWRITE "当前计数:",R[10]
  WAIT 0.5
END

五、高级:Karel 共享内存与消息队列(复杂数据)

如果需要字符串、数组、结构体,用 Karel(发那科高级语言)。

1. 共享变量(COMMON)

karel

! 所有Karel程序定义相同COMMON块
COMMON SHARED
  VAR_INT : INTEGER
  VAR_STR : STRING[32]
END_COMMON

2. 消息队列(Message Queue)

任务间异步收发消息,避免轮询。

karel

CREATE_QUEUE(QUEUE_ID, 10)  ! 创建队列
SEND_MSG(QUEUE_ID, DATA)     ! 发消息
RECV_MSG(QUEUE_ID, DATA)     ! 收消息

六、关键规则(避坑)

  1. 组掩码隔离:多任务程序组掩码设为 *,不可与主运动任务同组。

  2. 只用全局寄存器:F []/R []/PR [] 是跨任务唯一通用共享区。

  3. 互锁必须解锁:死锁会导致程序卡死。

  4. 后台程序有限制:无运动、无码垛;适合逻辑 / 通信。


七、最简实用模板

主程序 MAIN

tp

F[1]=OFF
RUN TASK_IO
RUN TASK_COUNT
WAIT F[1]=ON
TPWRITE "所有任务完成"
END

任务 1 TASK_IO(监控 IO)

tp

WHILE TRUEIF DI[10]=ON THEN R[10]=R[10]+1
  WAIT 0.1
END

任务 2 TASK_COUNT(计数)

tp

WAIT R[10]>10
F[1]=ON
END
收缩
  • QQ咨询

  • 电话咨询

  • 13073017555
  • 添加微信客服