本案例通过 RobotStudio 搭建一个简单的搬运工作站,实现:
从工具架拿取吸盘工具
使用吸盘从传送带抓取棋子
将棋子搬运到棋盘指定位置
放下棋子
归还吸盘工具
通过该案例,可以综合练习工具坐标、工件坐标、有效载荷、I/O信号以及例行程序的使用。
一、工具数据(ToolData)
本项目使用两个工具坐标。
1. 夹子工具(tGrip)
机器人默认夹持工具,用于夹取吸盘工具。
用途: 夹取和归还吸盘工具2. 吸盘工具(tVacuum)
带真空吸盘的工具。
用途: 吸取棋子 放置棋子吸盘工具安装后,机器人末端 TCP 将切换为 tVacuum。
二、工件坐标(WorkObject)
本项目使用三个工件坐标。
1. 工具架(WobjGJJ)
用于存放吸盘工具。
2. 传送带(WobjCSD)
用于抓取棋子。
3. 棋盘(WobjQP)
用于放置棋子。
三、有效载荷(LoadData)
为了保证机器人运动更加真实,需要设置有效载荷。
1. 空载(load0)
机器人未抓取任何工件。
2. 棋子(loadQZ)
机器人吸附棋子后使用。
四、例行程序
本项目主要包含以下例行程序。
rPickVacuum 拿取吸盘工具 rPutVacuum 归还吸盘工具 rPickQZ 抓取棋子 rPutQZ 放置棋子 main 主程序五、拿取吸盘工具
机器人首先使用夹子工具到工具架拿取吸盘工具。
程序代码
PROC rPickVacuum() ! 回Home点 MoveJ pHome, maxSpeed, z50, tGrip; ! 移动到吸取点上方100mm MoveJ Offs(pPickVacuum,0,0,100), maxSpeed, z50, tGrip\WObj:=wobjGJJ; ! 下降到吸取位置 MoveL pPickVacuum, maxSpeed, fine, tGrip\WObj:=wobjGJJ; ! 夹吸盘工具 Set do10_1; ! 等待1s WaitTime 1; ! 提升到安全高度 MoveL Offs(pPickVacuum,0,0,100), minSpeed, z50, tGrip\WObj:=wobjGJJ; ! 返回Home点 MoveJ pHome, maxSpeed, fine, tGrip; ENDPROC程序流程
Home ↓ 工具架上方 ↓ 取工具 ↓ 夹紧 ↓ 等待 ↓ 抬起 ↓ Home六、抓取棋子
机器人切换到吸盘工具后,从传送带抓取棋子。
程序代码
PROC rPickQZ() ! 设置空载荷 GripLoad load0; ! 回Home点 MoveJ pHome, maxSpeed, z50, tGrip; ! 移动棋子上方50mm MoveJ Offs(pPickQZ,0,0,50), maxSpeed, z50, tVacuum\WObj:=wobjCSD; ! 下降位置 MoveL pPickQZ, maxSpeed, fine, tVacuum\WObj:=wobjCSD; ! 吸取 Set do10_2; ! 等待 WaitTime 1; ! 更新负载数据 GripLoad loadQZ; ! 提升到安全高度 MoveL Offs(pPickQZ,0,0,50), minSpeed, z50, tVacuum\WObj:=wobjCSD; ENDPROC七、放置棋子
机器人将棋子放到棋盘指定位置。
程序代码
PROC rPutQZ() ! 当前负载为抓棋子 GripLoad loadQZ; ! 移动到棋盘点上方50mm MoveJ Offs(pPutQZ,0,0,50), maxSpeed, z50, tVacuum\WObj:=wobjQP; ! 下降到棋盘位置 MoveL pPutQZ, maxSpeed, fine, tVacuum\WObj:=wobjQP; ! 放开 Reset do10_2; ! 等待 WaitTime 1; ! 恢复空载荷 GripLoad load0; ! 提升到安全高度 MoveL Offs(pPutQZ,0,0,50), minSpeed, z50, tVacuum\WObj:=wobjQP; ENDPROC八、放回吸盘工具
吸盘工具放回工具架。
程序代码
PROC rPutVacuum() ! 回Home点 MoveJ pHome, maxSpeed, z50, tGrip; ! 移动到工具架上方100mm MoveJ Offs(pPickVacuum,0,0,100), maxSpeed, z50, tGrip\WObj:=wobjGJJ; ! 下降 MoveL pPickVacuum, maxSpeed, fine, tGrip\WObj:=wobjGJJ; ! 松开夹子 Reset do10_1; ! 等待 WaitTime 1; ! 提升到安全高度 MoveL Offs(pPickVacuum,0,0,100), minSpeed, z50, tGrip\WObj:=wobjGJJ; ! 返回Home点 MoveJ pHome, maxSpeed, fine, tGrip; ENDPROC九、主程序
程序代码
PROC main() !真空吸盘取料 rPickVacuum; !================================================= ! Step2:启动传送带 ! do10_0 = 1 !================================================= Set do10_0; !================================================= ! Step3:等待工件到位信号 ! di10_0 = 1 时继续运行 !================================================= WaitDI di10_0,1; !================================================= ! Step4:停止传送带 ! do10_0 = 0 !================================================= Reset do10_0; !================================================= ! Step5:抓取QZ工件 !================================================= rPickQZ; !================================================= ! Step6:放置QZ工件 !================================================= rPutQZ; !================================================= ! Step7:释放真空吸盘工件 !================================================= rPutVacuum; ENDPROC流程图
拿取吸盘工具 ↓ 启动传送带 ↓ 等待棋子到位 ↓ 抓取棋子 ↓ 放置棋子 ↓ 归还吸盘工具逻辑信号图
小结
通过本案例可以掌握:
ToolData(工具坐标)
WorkObject(工件坐标)
LoadData(有效载荷)
RAPID例行程序
WaitDI信号等待
Offs偏移函数
真空吸盘控制
RobotStudio工作站逻辑
这是一个典型的机器人搬运项目,也是后续学习码垛、上下料、装配等项目的重要基础。