[AB] ABB机器人和PLC仿真通信运行和位置传输

[复制链接]
查看28629 | 回复0 | 2024-12-10 08:18:42 | 显示全部楼层 |阅读模式


video: https://mp.weixin.qq.com/mp/readtemplate?t=pages/video_player_tmpl&action=mpvideo&auto=0&vid=wxv_3737240922505920524
ABB机器人的编程软件是所有机器人软件中仿真功能最强大的,我搭了个简单的拆垛机器人动作模型,机器人将托盘上的物品通过吸盘或夹具1个个夹起,放到输送带上。

拆垛一般会用到视觉,由于没有视觉实物,所以我想的是把PLC当做控制中心,视觉拍托盘上的物体,得到位置坐标,发送给PLC,PLC把位置坐标发送给机器人,并给出运行ready信号,机器人按照接收的位置,抓取和放置。视觉先不弄了,把它当成1个传感器就好,打通PLC和机器人先。

上面的演示中,我写了个简单的机器人动作流程程序,机器人准备就绪打到自动模式时,先回原点,然后运行到待机位置,PLC给出ready信号后,机器人开始抓取物体,并按照路径运行,放置到输送带上,完成后发出done信号给plc,PLC再发送新的位置和运行信号,进行下一周期的运动。



机器人和plc的通信仿真用的是RSConnectDIOToSnap7/RSConnectGIOToSnap7这个插件,具体用法网上可查询。

PLC和机器人采用的S7通信,所以PLC也可以无实物,直接plcsim advanced就行。实际的ABB机器人应该是不支持S7通信的,有PN通信板可选安装。

仿真插件设置好,点播放后,就可以实现PLC和机器人的实时读写。下面可以看到PLC发送给机器人的ready,PLC接受机器人的tool信号都是OK的。



这种bool数据的通信还是比较简单的,不过要PLC发送位置数据给机器人就繁琐很多。第一个就是机器人位姿数据有很多,有坐标trans数据xyz,有角度rot四元数q1 q2 q3 q4,一般在PLC发送时也可以用欧拉角ex ey ez发送,在机器人进行转换。
第二个麻烦之处在于,机器人位姿的浮点数和plc浮点数传输时字节顺序不同,需要进行转换。



上面是我找的一些资料,然后写的转换函数,实际测试是可行的,经过这个转换后,PLC可以直接发位姿的浮点数到机器人的robtarget数据类型上。


上面的图片可以看到plc的xyz坐标发送到机器人后,机器人的robtarget点位pauto的xyz相同,经过多番测试,是可行的。另外分享下机器人循环运行的主程序部分,这是比较简陋的,实际项目可能需要优化。在循环动作中加了1个中断程序,中断程序为暂停动作,任何时候PLC可以发出暂停信号,机器人即暂停,取消暂停,机器人继续当前的动作运行。停止运行信号取的系统启停,将系统自带的启停和IO关联起来,给出停止信号机器人急停。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册哦

x
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则