ABB RobotStudio 双传送带喷涂分拣联合仿真完整教程
ABB RobotStudio 双传送带喷涂分拣联合仿真完整教程
本教程基于 RobotStudio 6.08 搭建,实现两条并行输送线上的「工件流入 → 到位检测 → 机器人喷涂 → 搬运码垛」全流程仿真。文中的组件名称、I/O 信号名、RAPID 程序均与原工程一致,可按步骤复现。
-
项目概述
本工作站共布置 4 台 IRB2600_12_165 机器人,组成两条结构相同、互相独立的产线:每条产线由一台喷涂机器人和一台码垛机器人配合一条传送带完成作业。
-
喷涂机器人(System6,机器人 _01、_02):等待工件到位信号,沿工件表面走喷涂轨迹,用 DO 信号控制喷涂特效显隐,喷涂完成后输出完成信号。
-
码垛机器人(System7,机器人 _03、_04):等待喷涂完成信号,抓取工件并搬运到托盘上,用整除与取模运算实现多行多列棋盘式码放。
-
核心技术点:Smart 组件(Source、Sensor、Queue、Attacher、Detacher、PaintApplicator 等)、机器人 I/O 信号交互、RAPID 运动程序、工作站逻辑连线。

-
整体逻辑总览
-
单条产线数据流时序
两条产线逻辑完全一致,以下以第一条产线为例(第二条仅编号由 1 变为 2):
-
工件生成与输送:输入端组件 covIN1 中的 Source 生成工件,工件随传送带(LinearMover)前进;PlaneSensor 检测工件到达喷涂工位,输出到位信号
doBoxInPos1。 -
喷涂机器人作业:信号送入喷涂机器人 DI
di0;程序WaitDI di0,1触发后执行喷涂轨迹 Path_10;运动中置位do0开启喷涂特效,结束后复位do0;整条轨迹完成后置位do1输出喷涂完成信号。 -
完成信号转发:在工作站逻辑中,喷涂机器人
do1连到码垛机器人 DIdi0,通知码垛机器人可以取件。 -
搬运码垛:码垛机器人收到信号后运动到取料点,置位
do0,搬运组件 ban1 中的 Attacher 把工件绑定到机器人工具上;机器人带工件移动到托盘,到位后复位do0,Detacher 释放工件;输出端组件 covOUT1 负责清空工位、允许下一件工件进入。
-
组件分工一览
|
模块 |
组件名称 |
功能 |
|---|---|---|
|
输入端工件检测 |
covIN1 / covIN2 |
Source 生成工件,传送带输送,PlaneSensor 检测到位并输出 doBoxInPos1 / doBoxInPos2 给喷涂机器人 |
|
喷涂可视化 |
paint1 / paint2 |
PaintApplicator 根据机器人 DO 信号在工件表面生成喷涂颜色涂层,Show / Hide 控制涂层显隐 |
|
搬运抓取释放 |
ban1 / ban2 |
Attacher 把工件吸附绑定到机器人工具,Detacher 在码放位置解绑工件,模拟夹具取放 |
|
输出端工件处理 |
covOUT1 / covOUT2 |
工件被取走后清空传送带工位、计数排队,允许下一件工件连续流入 |
|
信号总枢纽 |
作业1(工作站逻辑) |
把各 Smart 组件与两台机器人的 DI / DO 互相连线,打通整条产线的信号链路 |
|
喷涂程序 |
System6(_01、_02) |
等待到位信号、走喷涂轨迹、DO 控制喷涂特效、输出喷涂完成信号 |
|
码垛程序 |
System7(_03、_04) |
等待喷涂完成信号,抓取工件,用 Div / Mod 偏移实现棋盘式码垛 |
-
分步搭建教程
-
步骤 1:搭建工作站三维布局
-
新建空工作站,导入 4 台机器人模型 IRB2600_12_165:2 台作为喷涂机器人(System6),2 台作为码垛机器人(System7)。
-
导入两条传送带、两个托盘(Euro Pallet)等外部几何体,在布局中调整位置,形成上下两条并行产线。
-
为喷涂机器人创建喷涂工具 MyTool(第二台为 MyTool_2);码垛机器人使用默认 tool0。
-
准备工件模型(喷涂对象 1 / 2、工件 1 / 2、喷涂完成 1 / 2),后续交给 Source 作为实例模板。
左侧布局树可见 4 台机器人、MyTool / MyTool_2、ban1 / ban2、covIN1 / covIN2、covOUT1 / covOUT2、paint1 / paint2 以及两个托盘。
-
步骤 2:创建输入端组件 covIN1(工件供给与到位检测)
covIN2 完全复制 covIN1,仅信号编号由 1 改为 2。
-
新建 Smart 组件并命名
covIN1。 -
添加子组件:Source(工件源,定时生成工件实例)、PlaneSensor(平面传感器,装在喷涂工位检测工件)、LinearMover(传送带直线运动)、Timer(定时触发)、Queue(工件排队缓存)、Sink(工件回收)、LogicGate [NOT] 与 LogicGate [AND](信号逻辑运算)。
-
配置端口:输入
start1(启动工件生成);输出doBoxInPos1(工件到位,连给喷涂机器人 DI)与doRun1(运行状态)。

内部信号流向:Source 生成工件 → LinearMover 带动工件前进 → PlaneSensor 检测到工件 → 逻辑门与 Queue 协同 → 输出 doBoxInPos1 通知机器人。covIN2 对应输出 doBoxInPos2。
|
covIN2:第二条产线输入端,结构与 covIN1 一致 |
covOUT2:第二条产线输出端 |
-
步骤 3:创建喷涂可视化组件 paint1
paint2 复制 paint1,编号改为 2。
-
新建 Smart 组件
paint1。 -
添加子组件:SimulationEvents(仿真启停事件)、LogicGate_2 [NOT](信号取反)、PaintApplicator(喷涂应用器,喷涂特效核心)、Show 与 Hide(控制涂层显隐)。
-
PaintApplicator 属性:Part 选择喷涂对象 1,设置喷涂颜色;ShowPreviewCone = True,Strength = 1,Range = 400 mm,Width = 200 mm,Height = 200 mm;Enabled 作为信号端口接收机器人喷涂开关信号。
-
配置端口:输入
dipaint1(接收机器人 do0,控制喷涂开关)、Hors1(接仿真启停事件)。

工作逻辑:仿真运行时,当 dipaint1 = 1,PaintApplicator 启用并在工件表面生成颜色涂层;信号为 0 时停止喷涂。paint2 对应输入 dipaint2、Hors2。
-
步骤 4:创建搬运组件 ban1(抓取与释放)
ban2 复制 ban1,编号改为 2。
-
新建 Smart 组件
ban1。 -
添加 Attacher(吸附绑定):Parent 选机器人工具(工具1),Child 选待抓取工件,Mount = False;添加 LogicGate_7 [NOT] 做信号取反;添加 Detacher(解绑释放),Child 选工件,KeepPosition = True(放下后保持工件空间位置)。
-
配置输入端口
diXi1(来自码垛机器人 DO,控制抓取 / 释放)。

关键点:Attacher 的 Parent(父对象)必须选择机器人工具,不能选成机器人本体;Detacher 需勾选 KeepPosition = True,否则放下工件时工件容易乱飞。
|
ban2:第二条产线搬运组件 |
covOUT1:输出端组件,负责工位清空与计数排队 |
-
步骤 5:创建输出端组件 covOUT1
-
新建 Smart 组件
covOUT1。 -
添加子组件:LinearMover、SimulationEvents、Source、Queue、Comparer 与 Comparer_3(数值比较)、LogicGate_3 [AND] 与 LogicGate_5 [AND]、Counter(工件计数)、Sink。
-
配置端口:输入
distart1(启动输送)、ban(取件执行信号,红色执行连线);输出doBoxInPos1(工位状态)。
作用:工件被机器人取走后,组件通过队列、比较器与计数器清空工位并复位状态,允许下一件工件流入,保证流水线连续循环。covOUT2 对应输入 distart2、ban2,输出 doBoxInPos2。
-
步骤 6:编写喷涂机器人 RAPID 程序(System6)
两台喷涂机器人(_01、_02)程序结构一致,仅示教目标点坐标不同。
-
I/O 分配
|
信号 |
方向 |
含义 |
|---|---|---|
|
|
DI |
工件到位信号,来自 covIN 的 doBoxInPos |
|
|
DO |
喷涂开关,置位开启喷涂特效,复位关闭 |
|
|
DO |
喷涂完成信号,输出给码垛机器人 DI |
|
|
DO |
等待状态提示输出 |
-
程序代码
目标点 Target_10 ~ Target_70 由示教得到,程序主逻辑如下:
PROC main()
Reset do0;
reset do1;
reset do2;
WHILE TRUE DO
set do2; !置位状态输出,表示机器人等待工件
WaitDI di0,1; !阻塞等待:Smart组件covIN1检测工件到位信号di0=1
reset do2;
Path_10; !执行喷涂轨迹
set do1; !喷涂全部完成,输出完成信号给码垛系统
ENDWHILE
ENDPROC
PROC Path_10()
MoveJ Target_10,v500,z0,MyTool\WObj:=wobj0; !关节移动到喷涂起始点上方
MoveL Target_20,v500,fine,MyTool\WObj:=wobj0; !直线靠近工件
set do0; !输出do0=1,paint组件收到信号,开始喷涂上色
MoveL Target_30,v300,z0,MyTool\WObj:=wobj0;
MoveL Target_40,v300,z0,MyTool\WObj:=wobj0; !沿着工件表面低速直线移动做喷涂路径
MoveL Target_50,v300,z0,MyTool\WObj:=wobj0;
MoveL Target_60,v300,fine,MyTool\WObj:=wobj0;
reset do0; !喷涂结束,关闭喷涂特效
MoveL Target_70,v500,z0,MyTool\WObj:=wobj0; !抬刀离开工件
ENDPROC
要点:喷涂路径使用 MoveL 直线运动,轨迹段速度 v300 较低;set do0 开启喷涂、reset do0 关闭喷涂。
-
步骤 7:编写码垛机器人 RAPID 程序(System7)
两台码垛机器人(_03、_04)逻辑一致,取料点分别为 pPick / pPick2,放置点分别为 pPut / pPut2。
-
I/O 分配
|
信号 |
方向 |
含义 |
|---|---|---|
|
|
DI |
喷涂完成信号,来自喷涂机器人 do1 |
|
|
DO |
取放控制,置位触发 Attacher 抓取,复位触发 Detacher 释放 |
-
程序代码
MODULE Module1
CONST robtarget pPick := [...]; ! 示教得到的取料点
CONST robtarget pPut := [...]; ! 示教得到的托盘基准放置点
VAR num n; ! 工件计数器
PROC main()
reset do0;
n:=0;
MoveJ offs(pPick,0,0,100),v2000,fine,tool0\WObj:=wobj0; ! 回到取料安全高度
WHILE TRUE DO
WaitDI di0,1; ! 等待喷涂完成信号
n:=n+1;
IF n>2 THEN ! 跳过前 2 件,从第 3 件开始码垛
MoveL offs(pPick,0,0,100),v2000,z0,tool0\WObj:=wobj0;
MoveL pPick,v2000,fine,tool0\WObj:=wobj0; ! 下降到取料点
set do0;
WaitTime 0.5; ! 延时等待 Attacher 完成吸附
MoveL offs(pPick,0,0,100),v2000,fine,tool0\WObj:=wobj0;
MoveL offs(pPick,0,-200,100),v2000,fine,tool0\WObj:=wobj0;
! Div 整除控制 X 方向换行,Mod 取模控制 Y 方向列偏移,3 件一排
MoveL offs(pPut,-400*((n-3) Div 3),-300*((n-3) MOD 3),100),v2000,z0,tool0\WObj:=wobj0;
MoveL offs(pPut,-400*((n-3) Div 3),-300*((n-3) MOD 3),0),v2000,fine,tool0\WObj:=wobj0;
reset do0;
WaitTime 0.5; ! 延时等待 Detacher 完成释放
MoveL offs(pPut,-400*((n-3) Div 3),-300*((n-3) MOD 3),100),v2000,fine,tool0\WObj:=wobj0;
MoveL offs(pPick,0,-200,100),v2000,fine,tool0\WObj:=wobj0;
MoveL offs(pPick,0,0,100),v2000,fine,tool0\WObj:=wobj0;
ENDIF
ENDWHILE
ENDPROC
ENDMODULE
码垛偏移核心公式:offs(pPut, -400*((n-3) Div 3), -300*((n-3) MOD 3), 0)。其中 Div 整除控制 X 方向换行,Mod 取模控制 Y 方向列偏移,实现 3 件一排的棋盘式整齐码放。
-
步骤 8:配置 I/O 系统
两台机器人的 I/O 配置相同:DI 为 di0 ~ di3,DO 为 do0 ~ do3,全部勾选「已仿真」。若信号未勾选已仿真,RAPID 中的 WaitDI 会一直阻塞、机器人不动。
|
喷涂机器人 I/O 系统:di0~di3、do0~do3 均已仿真 |
码垛机器人 I/O 系统:信号配置与喷涂机器人一致 |
-
步骤 9:工作站逻辑连线(最关键一步)
打开工作站逻辑「作业1」,左侧放入 covIN1、covIN2、covOUT1、covOUT2,中间放入 System6、System7 两台机器人系统,右侧放入 paint1、paint2、ban1、ban2。

-
第一条产线信号连线
|
起点 |
终点 |
作用 |
|---|---|---|
|
covIN1 · doBoxInPos1 |
System6 · di0 |
工件到位,通知喷涂机器人开始喷涂 |
|
System6 · do0 |
paint1 · dipaint1 |
机器人控制喷涂特效开关 |
|
System6 · do1 |
System7 · di0 |
喷涂完成,通知码垛机器人取件 |
|
System7 · do0 |
ban1 · diXi1 |
码垛机器人控制 Attacher / Detacher 抓取与释放 |
第二条产线做完全相同的镜像连线:covIN2 · doBoxInPos2 → 第二台喷涂 di0;喷涂 do0 → paint2 · dipaint2;喷涂 do1 → 第二台码垛 di0;码垛 do0 → ban2 · diXi2。paint1 / paint2 的 Hors1 / Hors2 接仿真启停事件,covOUT 的 ban / ban2 为红色执行连线。
连线区分:绿色线为信号连线(DI / DO 数字信号),红色线为执行连线(组件 Execute / Executed),两者不要接混。
-
步骤 10:仿真测试与调试
-
回到布局页面,点击仿真启动。
-
预期现象:两条传送带自动生成工件并向前流动;传感器检测到位后,喷涂机器人启动喷涂运动,工件表面出现喷涂颜色;喷涂结束输出完成信号,码垛机器人前来抓取;工件吸附跟随机器人移动,放到托盘上按阵列整齐码放,随后循环生产。
-
常见踩坑与排查
|
现象 |
排查方向 |
|---|---|
|
WaitDI 卡住、机器人不动 |
检查工作站逻辑连线是否接反;I/O 信号是否勾选「已仿真」;Smart 组件输出信号是否真正变为 1 |
|
抓取后工件乱飞或不跟随机器人 |
Attacher 的 Parent 必须选机器人工具而非本体;Detacher 勾选 KeepPosition = True;抓取后加 WaitTime 0.3~0.5 s 给组件执行时间 |
|
PaintApplicator 没有喷涂颜色 |
确认机器人 do0 确实连到 paint 组件的 Enabled 端口;Part 是否选对工件;喷涂效果需在仿真运行中才显示 |
|
码垛工件全部重叠在一起 |
检查 Div 与 Mod 偏移公式、offs 参数正负号,以及计数变量 n 是否正确自增 |
|
流水线只跑一次,后续工件不流动 |
检查 covOUT 输出端逻辑:工件被取走后需复位传感器与队列状态,允许 Source 生成下一件工件 |
-
整体时序回顾
Source 生成工件 → 传送带输送 → PlaneSensor 检测到位 → di0 送入喷涂机器人 → WaitDI 触发并运行 Path_10 → set do0 开启喷涂 → 轨迹完成 reset do0 关闭喷涂 → set do1 输出完成信号 → do1 送入码垛机器人 di0 → 码垛机器人到取料点 set do0,Attacher 吸附工件 → 带工件到托盘位置 → reset do0,Detacher 释放工件 → 返回取料位等待下一信号,循环往复。第二条产线独立并行,执行完全相同的流程。
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐








所有评论(0)