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

爱普生机器人综合服务商    

爱普生机器人|爱普生scara机器人

新闻分类
  • 暂无分类
站内搜索
 
首页 > 新闻中心 > 如何在爱普生机器人的主任务和独立任务之间进行数据传递!
新闻中心
如何在爱普生机器人的主任务和独立任务之间进行数据传递!
发布时间:2026-05-11        浏览次数:39        返回列表

爱普生机器人(SPEL+ / RC+)主任务与独立任务(后台任务)之间,最核心、最常用的就是全局共享变量 + 全局 IO / 寄存器,再配合事件标志与互锁,即可安全传递数值、状态、字符串与位置数据。


一、先开多任务与高级任务控制(RC + 设置)

  1. 打开 RC+ → 设置 → 系统配置 → 控制器 → 参数

    • 勾选:启用后台任务

  2. 设置 → 系统配置 → 控制器 → 环境

    • 勾选:将高级任务控制命令设为有效(才能用 StartTask/StopTask

  3. 重启 RC+ 使设置生效。


二、任务间数据传递的 4 种标准方式(直接用)

1)全局数值寄存器 R [](最常用,传整数 / 小数)

  • 所有任务共享 R0~R999,读写无特殊配置。

  • 用途:坐标、计数、速度、状态码。

sp

' 主任务 Main.tsk
Function Main
  R[100] = 123.45       ' 写数据到全局寄存器
  StartTask "BackTask"  ' 启动后台任务
  Wait R[101] = 1        ' 等待后台任务应答
  Print "后台已完成"
Fend

' 后台任务 BackTask.tsk
Function BackTask
  While True
    If R[100] > 0 Then
      Print "收到数据:", R[100]
      R[101] = 1         ' 写应答标志
    EndIf
    Wait 0.1
  Wend
Fend

2)全局标志位 F [](布尔,互锁 / 启停)

  • F0~F999 全局共享,用于启停、就绪、忙、错误等状态。

  • 互锁示例(防止同时占用资源):

sp

' 主任务
Wait F[50] = Off
F[50] = On   ' 上锁
' ... 运动/操作 ...
F[50] = Off  ' 解锁

' 后台任务
Wait F[50] = Off
F[50] = On
' ... 读写数据 ...
F[50] = Off

3)全局字符串寄存器 S [](传文本 / 指令)

  • S0~S99 全局共享,传递字符串、指令、报警文本。

sp

' 主任务
S[20] = "START"

' 后台任务
If S[20] = "START" Then
  Print "收到指令"
EndIf

4)全局 IO(IN []/OUT [])+ 模拟量(AI []/AO [])

  • 所有任务可见全局输入输出,适合外部设备 + 任务间联动

sp

' 主任务
If IN[10] = On Then OUT[20] = On

' 后台任务
If OUT[20] = On Then R[102] = 1

三、位置数据 / 姿态传递(P [] 或直接 R [] 打包)

方式 A:全局位置变量 P [](推荐)

sp

' 主任务
P[10] = P(100,200,300,0,0,0)  ' 赋值全局位置

' 后台任务
Print "X=" CX(P[10]), "Y=" CY(P[10])

方式 B:用 R [] 分拆 X/Y/Z/A/B/C

sp

' 主任务
R[200] = 100 : R[201] = 200 : R[202] = 300

' 后台任务
X = R[200] : Y = R[201] : Z = R[202]

四、任务启停与同步控制(SPEL + 指令)

sp

' 启动后台任务
StartTask "BackTask", 1  ' 1=优先级(1~3,1最高)

' 停止后台任务
StopTask "BackTask"

' 等待任务结束
WaitTask "BackTask"

五、避坑要点(必看)

  1. 后台任务不能跑运动指令Move/PTP 等),只能做逻辑、IO、计算、通信。

  2. 死循环必须加 Wait 0.1,否则占满 CPU、系统卡顿。

  3. 共享资源一定要互锁(F []),避免读写冲突。

  4. 大数据量优先用 R []/P [],比字符串更高效。


六、完整可运行模板(直接复制到 RC+)

Main.tsk(主任务)

sp

Function Main
  ' 初始化
  R[100] = 0 : R[101] = 0
  F[50] = Off
  StartTask "BackTask", 2

  While True
    ' 示例:发送数据
    R[100] = R[100] + 1
    Print "主任务发送:", R[100]
    Wait R[101] = 1
    R[101] = 0
    Wait 0.5
  Wend
Fend

BackTask.tsk(后台任务

sp

Function BackTask
  While True
    If R[100] > 0 Then
      Print "后台收到:", R[100]
      R[101] = 1
    EndIf
    Wait 0.1
  Wend
Fen
收缩
  • QQ咨询

  • 电话咨询

  • 13073017555
  • 添加微信客服