机械臂搬运物件小结

工业机器人基本知识
一、 工业机器人硬件结构
包含控制器、驱动器、伺服电机、减速机、机械负载、末端执行机构、系统保护装置、各种输入输出接口等。
工业机器人采用奥地利的 KEBA 工业自动化公司的型号为 CP 263/X 的控制器。

图1.在这工业控制器 (Keba 控制器)

图2.工业控制器 (Keba 控制器)

控制器接口如下:

EtherCAT 1
CAN 1
Serial -
Ethernet 2x 10/100 MBit/s
USB 2x USB 2.0; full speed, highpower
K-Bus Sideward to add modules
Compact Flash Type 1
Graphics DVI (for KEBA operating panel only)
Expandability 1x serial, 1x CAN, 1x PCI
控制器输入输出如下:
Digital inputs 已扩展
Digital outputs 0.5 A 已扩展
Digital outputs A 已扩展
Analog inputs (single-ended) 已扩展
Analog inputs (differential or single-ended) 已扩展
Analog voltage outputs 已扩展
Temperature inputs 已扩展
SSI 已扩展

控制器规格如下:

Dimensions HxWxD [mm] 120 x 270 x 100
Weight [g] 1266

Keba 控制器指令集

关节刻线对齐

工业流程图

图 1 从工位点 A 放置到工位点 B 图 2 从工位点 B 放置到工位点 A
注:本系统是基于位置的控制模式,为了统一标准,利用形如 ij 来表示过渡点
位置矩阵。

Step 3:预定义“搬运”程序变量
(1)新建程序,示教器→主菜单→文件→新建项目:项目名称(PickOne)→新
西安工程大学工业机器人实验参考资料(内部资料)
14
建程序:程序名称(main) 。
(2)新建子程序,文件→新建程序:程序名称(Pick);文件→新建程序:程
序名称(PickReturn) 。
(3)定义位置变量:
示教器→主菜单→变量→变量监测【注:禁止建立全局变量,慎用】→
项目[PickOne] →变量→新建→位置→变量:CARTPOS→名称:XPUDot10 →确定。
项目[PickOne] →变量→新建→位置→变量:CARTPOS→名称:XPUDot11
→确定。
项目[PickOne] →变量→新建→位置→变量:CARTPOS→名称:XPUDot20
→确定。
项目[PickOne] →变量→新建→位置→变量:CARTPOS→名称:XPUDot21
→确定。
项目[PickOne] →变量→新建→位置→变量:CARTPOS→名称:XPUHome
→确定。
(4)定义速度变量:
项目[PickOne] →变量→新建→动力学及重叠优化→变量:DYNAMIC→名称:
XPUSpeed →确定。
(5)定义气阀开合变量:
项目[PickOne] →变量→新建→输入输出模块→变量:DOUT→名称:
XPUOpenClose →确定。
Step4:变量与输入输出关联。
(1) 关 联 气 阀 开 合 变 量 : 监 测 → 变 量 → 检 测 变 量 → 选 中
XPUOpenClose(Port:MAPTO BOOL: IoDOut→键盘:输入 0)。
(2)编写“搬运”代码。
Step 5: 编写“搬运”程序 main 函数:
主菜单→项目→PickOne →main →加载
→新建→系统:LABLE(命名:XPULoop) 【注意:第一个“编辑”是修改指
令】
→新建→运动:PTP(pos:POSITON_ (XPUHome)、dyn:DYNAMIC_(XPUSpeed))
→确认
→新建→系统功能:WaitTime(500) →确认 【时间单位:ms】
→新建→系统:CALL →程序:Pick→确认 【从工位点 1 移动到工位点 2】
→新建→系统功能:WaiTTime(500) →确认
→新建→系统:KILL →程序:Pick→确认
西安工程大学工业机器人实验参考资料(内部资料)
15
→新建→运动:WaitIsFinished() →确认 【防止自动预读执行后续程序】
→新建→系统:CALL →程序:PickReturn→确认 【从工位点 2 移动到工
位点 1】
→新建→系统功能:WaitTime(500) →确认
→新建→系统:KILL →程序:PickReturn→确认
→新建→运动:PTP(pos:POSITON_ (XPUHome)、dyn:DYNAMIC_(XPUSpeed))
→确认【回到原点】
→新建→系统功能:WaitTime(3000) →确认
→新建→系统:GOTO(XPULoop) →确认
Step 6:编写 Pick 子函数:
. 主菜单→项目→PickOne →Pick →加载
【变量赋值】
→新建→系统功能: … := …(赋值)→更改→项目[PickOne] →XPUDot11→确
认→更换赋值量→替换→变量→XPUDot10→确定。【工位点 10 值赋给 11】
→新建→系统功能: … := …(赋值)→更改→项目[PickOne] →XPUDot11:z
→确认→更换赋值量→替换→变量→XPUDot10:z→新增+→替换→键盘→150→
确定。【给工位点 11 的 z 轴赋值】
→新建→系统功能: … := …(赋值)→更改→项目[PickOne] →XPUDot21→确
认→更换赋值量→替换→变量→XPUDot20→确定。【工位点 20 值赋给 21】
→新建→系统功能: … := …(赋值)→更改→项目[PickOne] →XPUDot21:z
→确认→更换赋值量→替换→变量→XPUDot20:z→新增+→替换→键盘→150→
确定。【给工位点 21 的 z 轴赋值】
【从工位点 11 移动到工位点 10】
→新建→运动:WaitIsFinished() →确认 【防止自动预读执行后续程序】
→新建→运动:Lin(XPUDot11,XPUSpeed) →确认
→新建→运动:Lin(XPUDot10,XPUSpeed) →确认
→新建→运动:WaitIsFinished() →确认 【防止自动预读执行后续程序】
【气阀闭合】
→新建→开关量输入输出:DOUT:Set(DOUT:XPUOpenClose,value:BOOL(TRUE) )
→确认
→新建→系统功能:WaitTime(300) →确认
→新建→运动:WaitIsFinished() →确认 【防止自动预读执行后续程序】
【从工位点 10 移动到工位点 11】
→新建→运动:Lin(XPUDot11,XPUSpeed) →确认
西安工程大学工业机器人实验参考资料(内部资料)
16
【从工位点 11 移动到工位点 21】
→新建→运动:Lin(XPUDot21,XPUSpeed) →确认
【从工位点 21 移动到工位点 20】
→新建→运动:Lin(XPUDot20,XPUSpeed) →确认
→新建→运动:WaitIsFinished() →确认
【气阀开启】
→新建→开关量输入输
出:DOUT:Set(DOUT:XPUOpenClose,value:BOOL(FALSE) ) →确认
→新建→系统功能:WaitTime(300) →确认
【从工位点 20 移动到工位点 21】
→新建→运动:Lin(XPUDot21,XPUSpeed) →确认
Step 7:编写 PickReture 子函数:
. 主菜单→项目→PickOne →PickReturn →加载
【变量赋值】
→新建→系统功能: … := …(赋值)→更改→项目[PickOne] →XPUDot11→确
认→更换赋值量→替换→变量→XPUDot10→确定。【XPUDot11:=XPUDot10;工位
点 10 值赋给 11】
→新建→系统功能: … := …(赋值)→更改→项目[PickOne] →XPUDot11:z
→确认→更换赋值量→替换→变量→XPUDot10:z→新增+→替换→键盘→150→
确定。【XPUDot11.z:=XPUDot10.z+150;给工位点 11 的 z 轴赋值】
→新建→系统功能: … := …(赋值)→更改→项目[PickOne] →XPUDot21→确
认→更换赋值量→替换→变量→XPUDot20→确定。【XPUDot21:=XPUDot20;工位
点 20 值赋给 21】
→新建→系统功能: … := …(赋值)→更改→项目[PickOne] →XPUDot21:z
→确认→更换赋值量→替换→变量→XPUDot20:z→新增+→替换→键盘→150→
确定。【XPUDot21.z:=XPUDot20.z+150;给工位点 21 的 z 轴赋值】
→新建→运动:WaitIsFinished() →确认 【防止自动预读执行后续程序】
【气阀开启】
→ 新 建 → 开 关 量 输 入 输
出:DOUT:Set(DOUT:XPUOpenClose,value:BOOL(FALSE) ) →确认
→新建→运动:Lin(XPUDot21,XPUSpeed) →确认
→新建→运动:Lin(XPUDot20,XPUSpeed) →确认
→新建→运动:WaitIsFinished() →确认 【防止自动预读执行后续程序】
【气阀闭合】
西安工程大学工业机器人实验参考资料(内部资料)
17
→新建→开关量输入输出:DOUT:Set(DOUT:XPUOpenClose,value:BOOL(TRUE) )
→确认
→新建→系统功能:WaitTime(300) →确认
→新建→运动:Lin(XPUDot21,XPUSpeed) →确认
→新建→运动:Lin(XPUDot11,XPUSpeed) →确认
→新建→运动:Lin(XPUDot10,XPUSpeed) →确认
→新建→运动:WaitIsFinished() →确认
【气阀开启】
→ 新 建 → 开 关 量 输 入 输
出:DOUT:Set(DOUT:XPUOpenClose,value:BOOL(FALSE) ) →确认
→新建→系统功能:WaitTime(300) →确认
→新建→运动:WaitIsFinished() →确认
→新建→运动:Lin(XPUDot11,XPUSpeed) →确认
Step 8:实例化对象(即示教):
. 主菜单→PickOne→加载→main→加载→示教器上“★”→STEP 模式。
【实例化 XPUHome 点】
手动上伺服【钥匙要旋至最左端】→将各个关节旋转到适合工艺需求的位置
→光标选中 PTP(XPUHome,XPUSpeed)→设置 PC→编辑【示教器第一个编辑】→示
教。
→Start+伺服→ Pick→Lin(XPUDot11) →切换直角坐标系【Jog 模式→“★”
切换到直角坐标系位置,即 X,Y,Z,A,B,C】 →返回 Step 模式→示教器 Start→
利用手柄调整到 XPUDot11 点【注意:设计过程中技巧问题 1 先调整工位 10 的
位置;2 设置 PC→赋值语句即可】。

运行“搬运”程序
主菜单→项目→PickOne→加载→钥匙旋至中间档位,即自动挡→上伺服 示
教器上 PWR

附录:参考代码
main 函数代码:
LABEL XPULoop
西安工程大学工业机器人实验参考资料(内部资料)
18
PTP(XPUHome, XPUSpeed)
WaitTime(500)
CALL pick()
WaitTime(500)
KILL pick
WaitIsFinished()
CALL pickreturn()
WaitTime(500)
KILL pickreturn
PTP(XPUHome, XPUSpeed)
WaitTime(3000)
GOTO XPULoop
PickOne 函数代码:
XPU11 := XPU10
XPU11.z := XPU10.z + 150
XPU21 := XPU20
XPU21.z := XPU20.z + 150
WaitIsFinished()
Lin(XPU11)
Lin(XPU10, XPUSpeed)
WaitIsFinished()
XPUOpenClose.Set(TRUE)
WaitTime(300)
WaitIsFinished()
Lin(XPU11, XPUSpeed)
Lin(XPU21)
Lin(XPU20)
WaitIsFinished()
XPUOpenClose.Set(FALSE)
WaitTime(300)
Lin(XPU21)
PickReturn 函数代码:
XPU11 := XPU10
XPU11.z := XPU10.z + 150
西安工程大学工业机器人实验参考资料(内部资料)
19
XPU21 := XPU20
XPU21.z := XPU20.z + 150
WaitIsFinished()
XPUOpenClose.Set(FALSE)
Lin(XPU21)
Lin(XPU20)
WaitIsFinished()
XPUOpenClose.Set(TRUE)
WaitTime(300)
Lin(XPU21)
Lin(XPU11)
Lin(XPU10)
WaitIsFinished()
XPUOpenClose.Set(FALSE)
WaitTime(300)
WaitIsFinished()
Lin(XPU11)

总结:刘老师编写了本次实验指导书,我再次摘抄部分内容。
通过动手操作,进一步了解了工业机器人的使用步骤以及开发流程。刘老师在讲解实验的过程中也谈到了知识和能力的关系,并进一步阐述如何将学到的知识用于实际生产实践。话虽然不多,但蕴含的意思很受用。
整个编程过程中也出现了一些问题,看着自己小组工作进程从第一名不断落后,不断编程,不断调试,出现的问题也不同。我们应对的方案最多的就是重启,重启……;整个实验共持续两天。从对工业机器人一窍不通到实现老师要求的搬运动作。第二天早上同样的BUG仍没有解决,跟着小组组长还有另一名成员,我三个没有去吃午饭,仍然在调试。下午1点,其他小组成员都在忙着拍最后工作完成的视频,我们还在调试。
副组长灵机一动,在机器人指导书上找到了解决方案。

原来是我们在编程过程中忽略了机械臂从A位置到B位置过程中位姿发生了变化,进而其模式也发生了变化。
这一点经过改正后,机器人正常运转,动作流畅。
组长说“不要着急,要有科研精神”
哈哈!
谨于2019.1.11——16时14分

(图太大了传不了,尬!)

发布了14 篇原创文章 · 获赞 5 · 访问量 2404

猜你喜欢

转载自blog.csdn.net/m0_37536859/article/details/86291845