1.3 实时发送机器人的位置
PLC希望实时获取机器人当前的位置(如0.2s刷新一次数据,如图1-21所示),如何快速实现呢?
图1-21 机器人实时发送当前的位置给PLC
机器人的位置分为笛卡儿空间的点位数据(XYZ,ABC)和6个轴角度的点位数据(a1~a6)。机器人的位置信息均为实数,可以采用1.1节所述的方法,通过总线发送实数。也可将所有数据放大1000倍,转化为整数,通过总线发送DINT类型的数据(带符号整数)。下面举例说明机器人如何发送DINT类型的数据。
假设需要发送的机器人数据是笛卡儿空间类型的点位,则:
(1)在机器人控制器中创建6个组输出信号,每个信号占用32位(bit),共4字节,具体设置如表1-6所示。组输出信号配置完成后的效果如图1-22所示。
表1-6 组输出信号的具体设置
图1-22 组输出信号设置完成后的效果
(2)在ABB工业机器人的RAPID编程中,通过函数CRobt()获取当前机器人的笛卡儿空间位置。
(3)通过创建定时中断的方式定时读取当前机器人的位置,并将相关数据通过组输出信号发送给PLC。
实现以上功能的机器人代码如代码1-4所示。
代码1-4
(4)使用函数CJointT()获取当前机器人各关节角度的位置。
(5)在PLC端创建变量并编写处理程序。此处举例使用CODESYS V3.5 SP9,机器人与PLC使用PROFINET总线进行通信。
(6)进入CODESYS软件,在“工具”-“设备库”中添加ABB工业机器人的PROFINET GSDML,如图1-23所示。
图1-23 导入ABB工业机器人的PROFINET GSDML文件
(7)在图1-24中,鼠标右键单击“Device(CODESYS Control Win V3)”,添加PROFINET工业总线和ABB工业机器人从站模块。
图1-24 在CODESYS中添加PROFINET工业总线和ABB工业机器人从站模块
(8)在PLC端的程序中,创建代码1-5中的若干变量来获取机器人的位置数据。
代码1-5
(9)在PLC端,对接收到的数据进行处理,如代码1-6所示。
代码1-6
(10)启动PC的CODESYS Control Win V3 SysTray,如图1-25所示。下载编写好的PLC端的程序,并启动运行PLC。此时可以看到CODESYS的PN总线通信正常,如图1-26所示。
图1-25 CODESYS Control Win V3 SysTray
图1-26 CODESYS与机器人PROFINET通信正常
(11)机器人运行程序后,在PLC侧可以看到如图1-27所示的机器人实时数据。此时机器人当前的位置如图1-28所示。
图1-27 CODESYS正常读取机器人当前的位置
图1-28 机器人实际当前的位置