ABB机器人RobotStudio2025多任务后台运行程序教程
文档说明
|
项目 |
本例取值 |
说明 |
|
控制器 / RobotWare |
V250XT + RobotWare 7.12.0 |
RobotStudio 中的虚拟控制器,使用新版示教器(FlexPendant)界面 |
|
机器人 |
IRB 4600 IRB4600 20kg 2.50m |
工作站 IRB4600_20_250,虚拟控制器 IRB4600_20_250_C_01,全仿真无实际运动 |
|
必需选项 |
3114-1 Multitasking |
多任务功能,没有它无法新建第二个任务(第 4 步) |
|
I/O 选项 |
3029-1 DeviceNet Single Channel |
本例 I/O 板卡采用 DeviceNet 的 DSQC 652 |
|
任务划分 |
T_ROB1(前台,Normal)+ A(后台,Static) |
前台程序周期性地置位/复位 DO0,后台任务 A 监视 DO0 并同步 DO1 |
一、原理速览
1.1 多任务(Multitasking)是什么
ABB 控制器在安装了 3114-1 Multitasking 选项后,可以在同一个控制器内并行运行多个 RAPID 任务:每个任务有自己独立的程序指针、模块和变量,任务之间通过 I/O 信号、共享变量(全局数据)或 RMQ 通信。本例只用两个任务:负责主逻辑的 T_ROB1 和负责监视信号的 A。
1.2 前台任务与后台任务
ABB 操作员手册把任务分为前台任务(正常)和后台任务(准静态 / 静态):前台任务跟随系统起停、占用示教器主界面;后台任务在控制器上电后自动激活,能在前台程序停止后继续运行,适合做常驻的信号监视、通信握手、状态上报。本教程要实现的效果就是:机器人开机后,后台任务 A 自动运行,持续把 DO0 的状态同步到 DO1。
1.3 任务类型对比
|
Type |
中文 |
启动与运行 |
典型用途 |
|
Normal |
正常 |
随主任务一起启动/停止;只有正常任务可以被激活或禁用 |
主控程序 T_ROB1;后台程序调试阶段的临时任务 |
|
Semistatic |
准静态(半静态) |
系统上电后自动激活;程序停止后仍在后台运行 |
通信、视觉等常驻后台服务 |
|
Static |
静态 |
系统上电后自动运行,独立于前台任务和程序启停;切到手动模式也不会自动停止 |
需要长期监视信号/状态的后台逻辑(本例第 14 步选择) |
信任级别(TrustLevel):取值为 NoSafety、SysFail、SysHalt 或 SysStop,只有当准静态/静态任务的信任级别为 NoSafety 时,才允许手动启动和停止它们;非 NoSafety 的后台任务连控制器都不能替代其安全逻辑来停止。
生效条件:任务名、类型、入口例程等都属于控制器配置,修改后必须重启控制器才会生效(第 8、15 步)。
1.4 本例的信号时序
|
时刻 |
T_ROB1(前台) |
任务 A(后台) |
DO0 / DO1 |
|
0 s |
PP 位于 A:,WaitTime 5 |
循环监视 DO0 |
0 / 0 |
|
5 s |
Set DO0 |
检测到 DO0=1 → Set DO1 |
1 / 1 |
|
11 s |
Reset DO0 |
检测到 DO0=0 → Reset DO1 |
0 / 0 |
|
16 s |
GOTO A 回到标签,周期性重复 |
继续循环 |
循环 |
前台程序一个周期为 11 秒(DO0 置位后保持 6 秒、复位后保持 5 秒),后台任务在这两个状态之间自动跟随,因此第 18 步可以在示教器 I/O 页面直接看到 DO0 与 DO1 同步变化。
1、建立工作站-点击创建。

图 1-1 RobotStudio 新建项目:Project1、IRB 4600 / 20kg 2.50m、RobotWare 7.12.0、控制器 V250XT
【说明】本例用“新建项目”一次性创建带虚拟控制器的工作站,勾选了“包括机器人和虚拟控制器”。RobotWare 版本决定后续选项名称和示教器界面(本例为新版示教器);若在真机上实施,可改用“从布局创建系统”或“从备份创建”,避免重复配置。
2、等待工作站生成。
【说明】工作站生成期间 RobotStudio 会创建并启动虚拟控制器,界面右下角“控制器状态”变为绿色 1/1 即代表就绪,通常需要 1~3 分钟;此时机器人尚未配置任何 I/O 与任务。

3、修改控制器安装。

图 3-1 生成的工作站与虚拟控制器;图 3-2 控制器右键菜单 → 修改安装…
【说明】新增选项、修改语言都通过“修改安装…”完成,路径:控制器右键 → 修改安装… → 选项卡“功能”。所有改动在“应用并重置”后生效,并会重置虚拟控制器(RAPID 程序与配置被删除、恢复出厂默认,见图 4-4 的提示)。因此改选项之前,建议先右键控制器 → 创建备份…。
注意:真机上增加选项需要用 RobotWare 选项包(授权)安装,不能像虚拟控制器这样直接勾选。
4、功能选择。




图 4-1~4-4 依次为:默认语言选 Chinese;勾选 3029-1 DeviceNet Single Channel;勾选 3114-1 Multitasking;变更汇总后点击“应用并重置”
【说明】本例共勾选三项:
· System Options → Default Language = Chinese:示教器切换为中文界面。
· Industrial Networks and Fieldbuses → 3029-1 DeviceNet Single Channel:本例 I/O 板卡用 DeviceNet;真机若使用 PROFINET / EtherNet-IP 板卡,请对应勾选 3020-x / 3024-x 系列选项。
· RAPID Program Features → 3114-1 Multitasking:多任务功能,是本教程的核心选项,没有它无法新建第二个任务。
注意:图 4-4 的提示框明确说明“应用新配置时,虚拟控制器 RAPID 程序和配置数据将被删除并重置为出厂默认设置。如果要保存 RAPID 程序和数据,请先创建备份。”——工程实践中先备份再改选项。
5、配置IO板卡。


图 5-1~5-2 I/O System → DeviceNet Device → 新建 DeviceNet Device…;实例编辑器中填写 DSQC 652 参数
【参数】路径:控制器 → 配置 → I/O System → DeviceNet Device → 右键“新建 DeviceNet Device…”。实例编辑器中的关键取值如下:
|
参数 |
取值 |
说明 |
|
Name |
d652 |
设备名,RAPID 与信号配置中引用它 |
|
Connected to Industrial Network |
DeviceNet |
总线类型 |
|
Address |
10 |
DeviceNet 站号,必须与硬件拨码一致 |
|
Vendor ID / Product Code / Device Type |
75 / 26 / 7 |
DSQC 652 的识别参数,可点“使用来自模板的值”自动填入 |
|
Connection Type |
Change-Of-State (COS) |
状态变化上报,比轮询更省总线带宽 |
|
PollRate |
1000 |
轮询间隔(ms) |
|
Connection Output / Input Size |
2 / 2 bytes |
DSQC 652 为 16 入 / 16 出,即 2 字节输入 + 2 字节输出 |
|
Quick Connect |
Deactivated |
本例不使用快速连接 |
真机提示:DSQC 652 的 DeviceNet 地址由板卡拨码开关决定,必须与 Address 一致;板卡需接入 24 V 电源,总线两端加终端电阻,否则会出现“设备未连接”告警。
6、建立两个DO输出。


图 6-1~6-2 I/O System → Signal → 新建 Signal…;定义 DO0 为数字输出并映射到 d652
【说明】为每个信号点新建条目:Type of Signal = Digital Output,Assigned to Device = d652,Device Mapping 是板卡上的物理位号(本例 DO0 → 0,DO1 → 1)。
|
参数 |
DO0 |
DO1 |
说明 |
|
Type of Signal |
Digital Output |
Digital Output |
数字输出 |
|
Assigned to Device |
d652 |
d652 |
归属设备 |
|
Device Mapping |
0 |
1 |
对应 DSQC 652 的输出位 0 / 1 |
|
Access Level |
All |
All |
保证前台任务与后台任务都能读写 |
|
Default Value |
0 |
0 |
上电默认值 |
提示:教程沿用了 DO0 / DO1 这种通用命名;实际项目建议按功能命名(如 doLampGreen、doVisionTrig),必要时可用 Cross Connection 做信号映射,而不用改程序。
7、配置后台运行程序。


图 7-1~7-2 Controller → Task → 新建 Task…;任务 A:Type=Normal、Main Entry=main、Motion Task=No
【参数】本例新建任务 A 的取值:Task=A;Type=Normal(先按普通任务调试,第 14 步再改静态);Main Entry=main;Check Unsolved References=Yes;Motion Task=No;Use Mechanical Unit Group 留空;RMQ Type=None;RMQ Mode=Interrupt。
【说明】后台任务只处理信号,不控制机器人运动,所以 Motion Task 必须为 No,不占用机械单元;“Task in Foreground”留空,表示它不是任何前台任务的从属任务。任务名(A)会直接显示在示教器的任务列表里。
注意:新建任务属于控制器配置,重启控制器后才会出现在示教器和 RobotStudio 的任务列表中。
8、重启示教器。

图 8-1 控制器工具栏上的“重启”按钮,重启后新增的 I/O 与任务配置生效
【说明】重启前确认机器人处于安全状态,重启会中断当前运行的程序并断开与示教器的连接(约 1~2 分钟)。RobotStudio 中也可以右键控制器 → 重启 → 重启控制器。
9、启动示教器-切换手动模式。

图 9-1 示教器首页与控制面板:模式(自动/手动)、电机开关、速度倍率、重置程序(PP 移至 Main)
【说明】新版示教器的控制面板集中了模式切换、电机上下电、速度倍率与程序指针重置。示教点位与手动调试用“手动”模式;运行程序时需要“自动”模式并开启电机(见第 17 步)。
注意:静态 / 准静态后台任务不会因为你切到手动模式而自动停止,只有信任级别为 NoSafety 时才能手动停止它们。调试带实际输出的程序前,务必先确认后台任务的状态,避免信号误动作。
10、选择A我们建立的Task多任务程序。
【说明】示教器“代码”页左上角的“任务”列表会同时列出普通任务(T_ROB1)和后台任务(A),并显示各自的类型与状态(就绪 / 启动 / 已停止)。点选 A 即进入后台任务的程序编辑界面。

11、程序模板。(程序解释:当DO0触发时,运行DO1,当DO0复位时,复位DO1。)

图 11-1~11-2 代码 → 任务列表选择 A 并“加载程序”;A 的 MainModule / main 程序
【逐行解释】DO0 为 1 时置位 DO1;DO0 为 0 时复位 DO1,即 DO1 始终跟随 DO0。两个 IF 等价于一个 IF / ELSE 结构。
12、返回选择T_ROB1建立前端程序。

图 12-1 切回任务 T_ROB1,模块列表中有 BASE(系统模块)与 Module1(程序模块)
【说明】前台程序写在 T_ROB1 下新建的 Module1 里。T_ROB1 是控制器自带的主任务,负责机器人运动与主流程;它和后台任务 A 通过 DO0 / DO1 交换状态。
13、程序模板。(程序解释:A为跳转标签,第一行等待时间为5,第二行运行DO0,第三行等待时间6,第四行复位DO0,第五行GOTO A 跳转到A继续运行。)

图 13-1 T_ROB1 的 Module1 / main:标签 A:、WaitTime 5、Set DO0、WaitTime 6、Reset DO0、GOTO A
【逐行解释】A: 是 RAPID 跳转标签(与任务名 A 同名但没有任何关系);WaitTime 5 等待 5 秒;Set DO0 置位 DO0;WaitTime 6 再等 6 秒;Reset DO0 复位 DO0;GOTO A 跳回标签 A,形成周期约 11 秒的循环。
【目的】这段程序的作用是人为制造一个周期性变化的信号源,用来验证后台任务 A 是否能自动跟随。
14、修改Task为静态模式。


图 14-1~14-2 右键任务 A → 编辑 Task…;把 Type 由 Normal 改为 Static
【说明】这是把普通任务变成后台任务的关键一步:Type 下拉可选项为 Normal / Semistatic / Static。
|
可选类型 |
含义 |
本例适用性 |
|
Normal |
正常任务,随主任务起停 |
仅用于编写与调试阶段 |
|
Semistatic |
准静态,程序停止后仍在后台运行 |
通信/视觉类后台服务的常用做法(如 Mech-Mind 标准接口) |
|
Static |
静态,控制器上电即自动运行 |
本例选择:要求“开机后后台常驻” |
注意:只有 TrustLevel 为 NoSafety 的后台任务才允许手动启动/停止;控制器安全系统不能被后台任务替代,涉及安全信号时请使用安全板卡与安全回路(如 DSQC 1042),不要用普通 DO 代替。
生效条件:修改 Task 类型后必须重启控制器(下一步)。
15、重启示教器。

图 15-1 再次重启控制器,使静态任务类型生效
【说明】重启后任务 A 会自动激活并开始运行,不需要手动点“开始”——这正是后台任务与普通任务的差别:只能激活和禁用正常任务,后台任务始终自动被激活。
16、启动示教器后查看A变为启动状态。我们进入T_ROB1运行程序。

图 16-1 重启后任务列表:A 的类型为 Static、状态为“启动”,T_ROB1 为“就绪”
【验证】看到 A 的状态为“启动”即说明后台任务已经在运行。若仍显示“就绪”,通常是 Type 未生效(未重启控制器)或程序指针未设置。
17、先将PP移至MAIN,点击开始运行。


图 17-1~17-2 T_ROB1 程序与 PP 位置;点“重置程序”后确认“在所有普通任务中将 Pp 移动到 Main 例程”
【说明】运行前台程序的顺序:任务列表切到 T_ROB1 → 重置程序(PP 移至 Main)→ 确认对话框选“是”→ 控制面板开启电机、确认为自动模式 → 点“开始”。
提示:“重置程序”只作用于普通任务,不会重置后台任务 A;后台任务保持独立运行。
18、监控I/O信号,当DO0为1时DO1也为1,当DO0为0时,DO1也为0.


图 18-1~18-2 I/O 页面监视 d652 上的 DO0 / DO1:运行前均为 0,运行后同时变为 1
【验证】示教器 I/O 页面(I/O 设备上的信号: d652)可实时看到 DO0、DO1 的值与开关状态。程序运行后:DO0=1 时 DO1=1,DO0=0 时 DO1=0(图 18-2),说明后台任务 A 正在实时响应前台任务写出的信号,多任务后台运行验证成功。
扩展验证:虚拟控制器上还能用 RobotStudio 的“仿真”功能或 I/O 模拟器强制 DO0,观察 DO1 是否跟随;真机上可用万用表或指示灯测量 DSQC 652 的对应输出位(DO0 → 位 0,DO1 → 位 1)。
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐



所有评论(0)