分享

运动中通过信号改变行进轨迹

 反恐精英秃鹫 2020-03-12

转载请先后台留言,大家一起支持原创,推动机器人使用和发展

本公众号对各类ABB机器人应用,仿真,毕业设计提供技术支持,详细后台留言

本公众号诚挚希望与各机器人培训机构,机器人使用单元合作,提供技术支持,详细后台留言

1. 机器人希望从上图位置Target_10Target_20走,在到达Target_2020mm(位于Target_50位置)时判断信号,若信号di01则机器人继续走到Target30,信号di00则机器人走到目标点Target_40

2.    机器人前进轨迹不希望中断(即不希望机器人准确走到Target_20停止再判断信号),以提高节拍。

3.    若采用如下代码

则有可能由于机器人预读机制,机器人在刚执行13行代码时(机器人刚开始从Target_10Target_20运动),光标已经预读,此时由于信号di0还没有产生,机器人光标判断14行代码无效,光标直接预读至17

4.   若采用如下代码,则机器人会在13行等待机器人运行完毕再往下执行,机器人动作准确,但机器人会在Target_20点停止。

5. 实际希望机器人在行进时在Target_2020mm位置处判断信号为1,机器人轨迹如上图黑色轨迹,即机器人会在Target_20处以z10效果圆滑过去,而不会走到Target_20点。

6.  可以利用TriggInt,配合TriggL来实现,即在目标点前几mm处触发中断,中断内机器人判断信号并修改标志位,TriggL下一句判断标志位后继续运动。整个运动过程中,转弯半径不使用fine,以避免机器人停止。

TriggInttrigg1,5,intno1 表示在目标点前5mm触发中断程序

7. 具体代码如下:

VAR intnum intno1; VAR triggdata trigg1; VAR bool flag1; VAR bool flag2;
PROC Path_30() flag1:=FALSE; flag2:=FALSE; IDelete intno1; CONNECT intno1 WITH tr_read; TriggInt trigg1,20,intno1; !目标点前20mm触发中断,也可使用提早时间等 MoveL Target_10,v1000,z10,MyTool\WObj:=wobj0; TriggL Target_20,v50,trigg1,z10,MyTool\WObj:=wobj0; !目标点前20mm触发中断 waituntil flag2=TRUE; !等待flag2,阻止预读 IF flag1 THEN MoveL Target_30,v100,z10,MyTool\WObj:=wobj0; ELSE MoveL Target_40,v100,z10,MyTool\WObj:=wobj0; ENDIF ENDPROC TRAP tr_read IF di0=1 THEN flag1:=TRUE; !执行中断时判断信号 ELSE flag1:=FALSE; ENDIF flag2:=TRUE; !完成信号读取并修改标志位flag2 ENDTRAP

********************************

如何获取更多经典文章?

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多