一.简介
KUKA.EthernetKRL软件包提供了通过网络和机器人控制器进行双向通信的功能。使用TCP/IP协议,通过服务器端和客户端方式进行通信,网络传输通过xml进行配置,传输内容也是xml格式。通信延迟在2ms以下。因此可以做一些实时性比较高的任务,比如在线分拣等。
二.准备工作
软件包安装
确保KUKA控制器安装了EthernetKRL软件包。如果没有安装,查看机器人D盘的kuka_option文件夹下是否有,如果有,点击setup安装,如果没有,需要联系机器人厂家购买该软件包。
网线连接与IP地址配置
使用网线把KUKA控制器的x66或者x67接口和pc的网口直接连接到一起。设置KUKA控制器的IP地址和PC端的IP地址,两个IP地址需要在同一个网段,比如192.168.1.100和192.168.1.101。后面例子假设KUKA控制器IP地址为192.168.1.101,PC端IP地址为192.168.1.100。
下载官方例程
库卡官方提供了几个例程:目录结构如下
如果找不到,可以在笔者提供的资源中下载。(资源还在审核中,后续在评论区上传)。
Config文件复制与修改
把Config文件下的xml文件拷贝到kuka控制器的C:\KRC\ROBOTER\Config\User\Common\EthernetKRL路径下,把Program文件夹下的src文件拷贝到kuka编程路径下。
接下来以BinaryFixed为例说明如何进行kuka和PC的通信。
修改BinaryFixed.xml中的
<IP>x.x.x.x</IP>
<PORT>49152</PORT>
为
<IP>192.168.1.100</IP>
<PORT>60000</PORT>
IP修改为PC端IP地址,PORT随意,范围5001-63335,这里以60000为例。
操作EthernetKRL_Server.exe软件
在PC端打开Application目录下的EthernetKRL_Server.exe软件(一定要关闭防火墙)
如下图:
打开配置界面,下拉选择BinaryFixed,端口设置为60000,网卡编号设为0或者1。然后点击绿色三角形按钮。
如果出现下面内容,则代表连接成功
如果出现下面的问题,修改网卡编号。如果0和1都出现这个问题,需要在网络配置中禁用网卡的ipv6功能。
如何禁用ipv6功能
把ipv6前面的对勾去掉。
在kuka中执行BinaryFixed.src
在kuka控制器中执行BinaryFixed.src文件。
该文件顺利执行完毕后可以在下方窗口中看到内容,则说明硬件连接和通信配置等没有问题,可以进行后续自定义通信的开发。
如果执行过程中报错:连接到外部系统失败。则需要检查网线连接和ip,端口配置是否正确。
三.自定义通信内容
本文自定义的通信发送内容包括7个数,分别是指令类型1个数,位姿6个数。接收内容包括12个数,分别是KUKA各关节角度6个和位姿6个数。
通信配置xml文件
<ETHERNETKRL>
<CONFIGURATION>
<EXTERNAL>
<IP>192.168.1.100</IP>
<PORT>60000</PORT>
<TYPE>Server</TYPE>
</EXTERNAL>
</CONFIGURATION>
<RECEIVE>
<XML>
<ELEMENT Tag="Robots/Command" Type="INT" />
<ELEMENT Tag="Robots/Pos/@X" Type="REAL" />
<ELEMENT Tag="Robots/Pos/@Y" Type="REAL" />
<ELEMENT Tag="Robots/Pos/@Z" Type="REAL" />
<ELEMENT Tag="Robots/Pos/@A" Type="REAL" />
<ELEMENT Tag="Robots/Pos/@B" Type="REAL" />
<ELEMENT Tag="Robots/Pos/@C" Type="REAL" Set_Flag="1"/>
</XML>
</RECEIVE>
<SEND>
<XML>
<ELEMENT Tag="Robots/mA1" Type="REAL"/>
<ELEMENT Tag="Robots/mA2" Type="REAL"/>
<ELEMENT Tag="Robots/mA3" Type="REAL"/>
<ELEMENT Tag="Robots/mA4" Type="REAL"/>
<ELEMENT Tag="Robots/mA5" Type="REAL"/>
<ELEMENT Tag="Robots/mA6" Type="REAL"/>
<ELEMENT Tag="Robots/mx" Type="REAL"/>
<ELEMENT Tag="Robots/my" Type="REAL"/>
<ELEMENT Tag="Robots/mz" Type="REAL"/>
<ELEMENT Tag="Robots/ma" Type="REAL"/>
<ELEMENT Tag="Robots/mb" Type="REAL"/>
<ELEMENT Tag="Robots/mc" Type="REAL"/>
</XML>
</SEND>
</ETHERNETKRL>
该文件定义了PC端IP地址为192.168.1.100,使用端口是60000,并且规定PC端是服务器。KUKA控制器接收7个数,运动完成后返回12个数,分别是各关节角度和末端位姿。
KUKA控制器编程
&ACCESS RV1
&REL 12
DEF connect1()
DECL POS Posv
DECL POS Cent
DECL EKI_STATUS RET
DECL INT F
DECL INT RobStatus
EXT BAS (BAS_COMMAND:IN,REAL:IN)
DECL AXIS HOME
BAS(#INITMOV,0)
HOME={
AXIS:A1 0,A2 -90,A3 90,A4 0,A5 0,A6 0}
$BASE=BASE_DATA[8]
$TOOL=TOOL_DATA[8]
;$IPO_MODE=#BASE
;$ORI_TYPE=#CONSTANT
;$CIRC_TYPE=#PATH
$VEL.CP=0.02
$VEL.ORI1=15.000
$VEL.ORI2=15.000
$ACC.CP=2.300
$ACC.ORI1=5.000
$ACC.ORI2=5.000
Posv = {
X 0.0, Y 0.0, Z 0.0, A 0.0, B 0.0, C 0.0}
Cent = {
X 0.0, Y 0.0, Z 0.0, A 0.0, B 0.0, C 0.0}
F =0
$FLAG[1] = FALSE
RobStatus = 0
;PTP HOME
RET=EKI_Init("connect1")
RET=EKI_Open("connect1")
EKI_CHECK(RET,#QUIT)
WHILE (F <> 1)
;WAIT FOR 2
;WAIT SEC 1
;FOLD WAIT Time=1 sec;%{
PE}%R 8.3.31,%MKUKATPBASIS,%CWAIT,%VW