爱普生机器人(SPEL+ / RC+)主任务与独立任务(后台任务)之间,最核心、最常用的就是全局共享变量 + 全局 IO / 寄存器,再配合事件标志与互锁,即可安全传递数值、状态、字符串与位置数据。
一、先开多任务与高级任务控制(RC + 设置)
打开 RC+ → 设置 → 系统配置 → 控制器 → 参数
勾选:启用后台任务
设置 → 系统配置 → 控制器 → 环境
勾选:将高级任务控制命令设为有效(才能用
StartTask/StopTask)重启 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"
五、避坑要点(必看)
后台任务不能跑运动指令(
Move/PTP等),只能做逻辑、IO、计算、通信。死循环必须加 Wait 0.1,否则占满 CPU、系统卡顿。
共享资源一定要互锁(F []),避免读写冲突。
大数据量优先用 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

