原本ABB机器人与3D视觉相机有直接链接的方式,但是ABB机器人需要购买interface功能软件,成本上有大几千块钱的增加。并且直连的话,机器人如果没有并行调用的功能,那么当相机拍照时,机器人只能运行相机相关程序,等待拍照结果,这样会浪费好几秒钟的节拍。直连的好处就是电气不用发愁相机的控制,安心给机器人发程序号就好了,比较简单。
楼主有个项目就被节拍卡了脖子,需要缩短大概二十秒的节拍时间,毕竟项目经理已经把牛逼吹出去了,那肯定得实现,没办法就得从程序上去优化,想偷懒是不行了。3D相机拍三类工件,机器人抓三次,每一次都会原地等待五六秒钟,加起来就是十几秒。鉴于此就需要用PLC介入,在机器人干活的时候,使用PLC控制相机拍照,存储抓取点,待机器人干完活第一时间将坐标数据发送给机器人,避免机器人发生等待。
PLC和机器人之间走的profinet通讯,要实现上边的功能,难点就是怎么将坐标的浮点数正确的发过去,保证机器人能够识别。关键的数据处理过程是在机器人侧做的,这里主要想说的是profinet是可以的,只不过需要机器人处理一下。
相机控制程序不再赘述。
关键讲一下profinet发送real型数据给ABB机器人,如何正确处理,网上查到的相关资料比较少,我主要也是现场试出来的。
1、 创建Profinet坐标变量,数据类型为real。
2、 将读取到的坐标赋值到Profinet输出中

3、创建功能函数getdata,函数作用是保证Profinet传输的数据转换为需要的数据类型,本例为浮点数数据类型。

4、编辑子程序,目的是将Profinet发送的数据合并处理成坐标变量。

5、上述程序中,ABB内创建的变量例如MM_Pose1_X,因为是西门子PLC,需要高低字节变化,具体配置如下图;

希望能够帮到大家。