库卡机器人

RoboDK 支持自 KRC2 起的所有 KUKA 机器人控制器,包括 KRC3 和 KRC4 控制器。本文件基于 KRC4 控制器编写。KRC4 机器人控制器运行的是 Microsoft Embedded Windows 7 操作系统。较早的控制器,例如 KRC2,则运行 Windows 95。机器人示教器显示一个称为 “HMI” 的界面,这是 KUKA 专为 Windows 开发的程序,机器人操作员必须通过该界面来操作机器人。

以下章节将展示如何使用 KUKA 机器人的示教器在 RoboDK 中准备一个新程序,并将其传输到机器人上。

传输机器人程序

按照以下步骤,将程序从 USB 设备加载到 KUKA KRC4 机器人控制器中:

1.在机器人控制器上插入USB盘(这比使用示教器连接快得多)

2.如果看不到USB盘,则必须进入管理员模式

3.从USB盘中选择所需的文件

4.选择 Edit➔Copy

5.选择 KRC 单元中的一个文件夹

6.选择 Edit➔Paste

Robots KUKA - 图片 1Robots KUKA - 图片 2

编辑后处理器

在为 KUKA KRC控制器生成机器人程序时,可以根据你在 RoboDK 中输入的坐标系($BASE)和工具($TOOL)来定义这些变量,也可以选择使用编号的坐标系和编号工具。

默认情况下,RoboDK 会以你在软件中输入的方式导出工具和坐标系的完整位姿(XYZABC 数值)。以下代码展示了 RoboDK 为 KUKA 的 SRC 程序所生成的示例内容:

; ---- Setting tool (TCP) ----------

; TOOL_DATA[3]={FRAME: X 116.058,Y 0.0,Z 219.481,A 0.0,B 60.0,C 0.0}

$TOOL = {FRAME: X 116.058,Y 0.0,Z 219.481,A 0.0,B 60.0,C 0.0}

; $TOOL=TOOL_DATA[3]

; ----------------------------------

 

; ---- Setting reference (Base) ----

; BASE_DATA[1]={FRAME: X 640.289,Y -290.0,Z 0.0,A 90.0,B 0.0,C 0.0}

$BASE = {FRAME: X 640.289,Y -290.0,Z 0.0,A 90.0,B 0.0,C 0.0}

; $BASE = BASE_DATA[1]

; ----------------------------------

另一方面,如果你更倾向于将工具($TOOL 变量)和坐标系($BASE 变量)链接到编号的工具和参考坐标系,可以在后处理器中更改以下变量设置:

FRAME_INDEX:将此变量设置为 True,即可将参考坐标系链接至编号的基准框架。你应确保在 RoboDK 工程中已为该坐标系指定编号,如下图所示。

TOOL_INDEX:将此变量设置为 True,即可将工具链接至编号的工具。你应确保在 RoboDK 工程中也为该工具指定编号,如下图所示。

Note:有关如何编辑后处理器的更多信息,请参见后处理器章节。

Robots KUKA - 图片 3

Tip:当使用外部轴时,建议使用编号坐标系。在程序中使用编号坐标系可以避免对 RoboDK 中外轴运动学的精确匹配要求

运行机器人程序

请按照以下步骤在库卡KRC4控制器上启动机器人程序。

1.从KRC存储单元中选择程序

2.在屏幕上选择Select

3.选择按钮"R"(顶部)并Reset program

4.选择示教器上的绿色"Play"按钮启动程序

Robots KUKA - 图片 4Robots KUKA - 图片 5

检索TCP

以下步骤允许你在机器人控制器中创建或修改机器人工具(TCP,也就是 KUKA KRC 机器人程序中的 $TOOL):

1.选择Robots KUKA - 图片 6 KUKA➔Start-up➔Calibrate➔Tool

2.选择一个工具,然后编辑或获取该工具的X、Y、Z位置(即TCP位置)

Robots KUKA - 图片 7Robots KUKA - 图片 8

检索机器人关节

以下步骤可用于从机器人中提取各关节的位置:

1.选择Robots KUKA - 图片 9KUKA➔Display➔Actual position

2.选择"Joints"模式,使用左侧栏选择机器人关节

Robots KUKA - 图片 10Robots KUKA - 图片 11

Tip:你也可以通过监控 $AXIS_ACT 变量,或使用 RoboDK 的 KUKA 驱动器点击“获取机器人关节”按钮,以更高精度(小数点后五位)获取机器人关节位置。

管理员模式

某些菜单部分需要"Expert"或"Administrator"权限。以下步骤允许进入"Expert"模式:

1.选择Robots KUKA - 图片 12KUKA➔Configuration➔User group

2.选择Expert (或Administrator)。

3.如系统要求输入密码,默认密码为"kuka"。

Robots KUKA - 图片 13Robots KUKA - 图片 14

RoboD的KUKA驱动器

机器人驱动器是离线编程的替代方案(即不需要预先生成和传输程序)。通过驱动器,可以直接在机器人上运行仿真,实现在线编程。详情请参阅文档中的机器人驱动器章节。

你可以通过标准以太网(TCP/IP)连接在 RoboDK 和 KUKA 控制器之间建立通信,实现从电脑自动移动机器人,启用 “在机器人上运行” 功能,用于在线调试和控制。

若你的 RoboDK 版本较旧,可能使用的是旧版驱动(apikuka,基于 KUKAVARPROXY 项目)。要使用当前驱动,请确保在“连接到机器人”窗口的“更多选项”中选择驱动程序:kukabridge

Robots KUKA - 图片 15

配置 RoboDK 的 KUKA 驱动器步骤如下:

1.指定链接下载最新版本的C3Bridge安装文件(c3setup.exe)。

2.使用 KUKA 的 HMI 将 c3setup.exe 文件复制到控制器桌面或系统文件夹。

3.可选但推荐:连接鼠标。       
可将 USB 插入示教器或控制器(不需重启)

或建立远程桌面连接

也可直接使用示教器触摸屏与虚拟键盘操作

4.使用KUKA HMI应用,可以通过屏幕左上角的库卡按钮Robots KUKA - 图片 16打开主菜单:

a.Robots KUKA - 图片 17KUKA➔Configuration➔User group➔选择Export(密码:kuka)。

b.Robots KUKA - 图片 18KUKA➔Start-up➔Service➔Minimize HMI(显示桌面)。

5.找到之前复制的 c3setup-X.Y.Z.exe 文件(例如 1.7.1 版本),运行并按照提示完成安装

6.为 TCP/UDP 通信打开端口 7000(或其他端口,详见下方说明)(KRC2 控制器无需此步骤)

a.恢复HMI界面

b.Robots KUKA - 图片 19 KUKA➔Start-up➔Network configuration➔Advanced

c.NAT➔Add port➔Port number 7000

d.设置允许的协议:TCP/UDP

Robots KUKA - 图片 20Robots KUKA - 图片 21Robots KUKA - 图片 22

7.通过桌面快捷方式或“Start Menu”启动 C3 Bridge Server

(若在安装时已勾选“Run C3 Bridge Server”,可跳过此步)

8.若希望系统启动时自动运行 C3 Bridge Server,请将桌面快捷方式复制至“Startup”文件夹

Note:自 2020 年起,新款 KUKA 控制器运行 Windows 10 IOT。若端口 7000 被 nginx 进程占用,请参考“更改C3 Bridge Server端口号”部分进行调整。

C3 Bridge Server 现已就绪,你可以让其常驻后台运行。它支持在 KUKA 控制器与远程 PC 之间交换全局变量、上传下载 KRL 程序、控制程序执行等操作。

控制系统的进一步配置可通过两种方式实现:使用 KRC4 上 kukabridge 驱动的交互模式自动配置,在 KUKA HMI 中手动编辑控制系统文件。

更改C3 Bridge Server端口号

C3Bridge服务器将其设置保存在WindowsNote册表中。请按照以下步骤更改网络端口:

1.终止C3桥接服务器。

2.打开注册表编辑器,导航至路径:HKEY_CURRENT_USER\SOFTWARE\C3 Bridge Interface

3.NetworkTcpPort键值更改为除 7000 外的其他端口(例如 7001)。

4.重新启动 C3 Bridge Server,并重复上一节中第 6 步的操作(打开所用端口的访问权限)。

新版本的 C3 Bridge Server(1.7.1 及更高)支持命令行参数。你可以通过 -tcpPort 参数更改服务器端口,例如:

c3bridge.exe -tcpPort 7001

使用脚本自动配置

位于 C:\RoboDK\Library\Scripts 文件夹中的脚本 KUKA_Auto_Configuration.py 可用于自动配置 KUKA 控制系统。前提:当前 RoboDK 工程中需至少包含一个已设置正确 IP 和端口在连接机器人窗口。你可以通过RoboDK菜单栏 “工具➔运行脚本”或使用快捷键 Shift+S 运行此脚本。

Robots KUKA - 图片 23

自动配置步骤

前提条件:RoboDK 版本为 5.5.2 或更高,操作系统为 Windows,安装路径为 C:\RoboDK。

1.打开命令提示符:用START➔All programs➔ Accessories➔Command PromptSTART➔Run➔cmd

2.切换至RoboDK安装目录并启动kukabridge.exe:

c:

cd C:\RoboDK\bin

..\api\Robot\kukabridge.exe

3.此时KUKA桥接驱动进入交互模式。

4.输入以下命令连接控制系统:CONNECT <robot IP address> <port> <number of robot axes>

CONNECT 172.1.1.10 7000 6

5.如果连接成功,你将看到以下输出:

SMS:Connecting

Connected

SMS:Working...

SMS:Ready

6.输入CJNT命令,请求当前机器人关节位置:

CJNT

SMS:Working...

JNTS 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000

SMS:Ready

7.使用CONFIGUREFORCE命令执行自动配置:

CONFIGURE FORCE

SMS:Working...

Requesting robot program state

Current robot program state is #P_FREE

Reading current configuration ($config.dat)

Read complete, updating configuration

Adding definition of variable COM_ACTION

Adding definition of variable COM_ACTCNT

Adding definition of variable COM_ROUNDM

Adding definition of variable COM_VALUE1

Adding definition of variable COM_VALUE2

Adding definition of variable COM_VALUE3

Adding definition of variable COM_VALUE4

Adding definition of variable COM_E6AXIS

Adding definition of variable COM_FRAME

Adding definition of variable COM_POS

Adding definition of variable COM_E6POS

Configuration lines have been updated: 11 added, 0 removed, 0 updated, 659 total

Checking existence of old backup file ($config.bak)

Old backup file exists, deleting it

Creating new backup file ($config.bak)

Backup completed, writing new configuration

New configuration was successfully written

Checking existence of program file (RoboDKsync543.src)

Program file does not exists

Writing program file to robot system

Configuration is complete

SMS:Ready

Robots KUKA - 图片 24

8.配置完成后,选择并运行程序RoboDKsyncVER.src(VER 为版本号,如 543)。

手动配置步骤

接下来为配置处理机器人动作的主程序:

1.声明以下全局变量:   
使用KUKA HMI修改文件:KRC:\R1\SYSTEM\$CONFIG.DAT

也可以通过Windows路径访问:C:\KRC\ROBOTER\KRC\R1\SYSTEM\$CONFIG.DAT

INT COM_ACTION=0

INT COM_ACTCNT=0

REAL COM_ROUNDM=0

REAL COM_VALUE1=0

REAL COM_VALUE2=0

REAL COM_VALUE3=0

REAL COM_VALUE4=0

DECL E6AXIS COM_E6AXIS

DECL FRAME COM_FRAME

DECL POS COM_POS

DECL E6POS COM_E6POS

2.将 KUKA 的 SRC 程序 RoboDKsyncVER.src 复制到 KRC\R1\PROGRAM 文件夹

文件名中 VER 表示版本号(如 RoboDKsync543.src)

3.手动启动 RoboDKsyncVER.src 程序,使机器人监听来自电脑的命令

即便程序未运行,只要 C3 Bridge Server 在控制器上运行,RoboDK 仍能读取机器人关节信息。

KUKA旧版驱动

传统 KUKA 驱动名为apikuka,配合KUKAVARPROXY使用。此方案已过时,RoboDK 正在停止其支持。若你仍需使用,请确保在连接至机器人窗口的“更多选项”中选中该驱动。

配置旧版驱动步骤如下:

1.可选但建议:连接鼠标
可插入 USB 设备至示教器或控制器(无需重启)

或使用远程桌面连接

也可通过示教器的触摸屏和虚拟键盘完成操作

2.使用KUKA HMIRobots KUKA - 图片 25打开主菜单:

a.Robots KUKA - 图片 26KUKA➔Configuration➔User group➔选择Administrator (密码: kuka)

b.Robots KUKA - 图片 27KUKA➔Start-up➔Service➔Minimize HMI (显示窗口)

3.将 KUKAVARPROXY 文件夹复制到桌面或控制器电脑的任意位置

4.打开端口 7000(KRC2 控制器不需要):

a.打开HMI

b.Robots KUKA - 图片 28 KUKA➔Start-up➔Network configuration➔Advanced

c.NAT➔Add port➔端口号7000

d.设置允许的协议:TCP/UDP

5.启动 KUKAVARPROXY.EXE 程序(Windows 环境中运行)

Note:自 2020 年起,KUKA KRC4 控制器使用 Windows 10 IOT,启动 KUKAVARPROXY.EXE 前需停止 nginx.exe 进程,以释放端口 7000。

6.让驱动程序随系统启动自动运行(推荐):

a.创建 KUKAVARPROXY.EXE 的快捷方式

b.在Windows中,开始菜单 ➔ 所有程序 ➔ 启动(右键点击 ➔ 打开)

c.将快捷方式粘贴至“启动”文件夹

此时 KUKAVARPROXY 服务器已就绪,可以常驻运行。

接下来的步骤是设置处理机器人动作的主程序:

1.添加以下全局变量的声明:    
为此,请通过库卡(HMI)找到并修改文件"KRC:\R1\SYSTEM\$CONFIG.DAT"。KRC:(R1)"文件夹也可以通过以下Windows路径从C:\驱动器访问:"c:\krc\roboter\krc\"。

INT COM_ACTION=0

INT COM_ACTCNT=0

REAL COM_ROUNDM=0

REAL COM_VALUE1=0

REAL COM_VALUE2=0

REAL COM_VALUE3=0

REAL COM_VALUE4=0

DECL E6AXIS COM_E6AXIS

DECL FRAME COM_FRAME

DECL POS COM_POS

DECL E6POS COM_E6POS

2.将KUKA SRC程序RoboDKsyncVER.src复制到文件夹KRC\R1\PROGRAM中。文件名中的后缀VER表示程序的版本(例如RoboDKsync543.src)。

3.手动启动RoboDKsyncVER.src程序,让机器人监听来自电脑的指令。

即使 RoboDKsyncVER.src 程序未运行,只要控制器上 KUKAVARPROXY 正在运行,RoboDK 仍可读取机器人关节数据。

故障排除

本节介绍了如何确定、诊断和修复在RoboDK中使用库卡(Kuka)机器人驱动器时可能遇到的问题。

检查端口7000可用性

你应进入库卡控制器上的专家用户组,以排除7000端口的故障问题。

1.Robots KUKA - 图片 29 KUKA➔Configuration➔User group➔选择Expert (密码: kuka)。

2.Robots KUKA - 图片 30KUKA➔Start-up➔Service➔Minimize HMI(出现窗口

3.在Windows系统,START➔All programs➔ Accessories➔Command Prompt          
START➔Run➔cmd

4.使用该命令请求查看所有连接和监听端口的列表:

netstat -a -b -n -o -p TCP | findstr :7000

5.如果响应不包含任何字符串,则端口7000空闲,可用于驱动器操作。可以跳过后续步骤。

6.如果对第4步命令的响应是这样的

TCP    0.0.0.0:7000           0.0.0.0:0              LISTENING       1840

7.上面一行的最后一个数字是进程标识符(PID)。可以使用以下命令获取有关进程名称的信息(应使用自己的编号而不是1840):

tasklist/fi"PIDeq1840"

8.任务列表命令的结果包含正在监听端口7000的进程信息。输出示例

Image Name                     PID Session Name        Session#    Mem Usage

========================= ======== ================ =========== ============

c3bridge.exe                  1840 Console                    1      5,912 K

 

9.如果端口被KukavarProxy.exec3bridge.exe进程占用,则系统可以使用所选驱动器。如果端口被其他程序占用,则必须终止该程序或更改C3 Bridge Server端口号

卸载旧版驱动器

如果你一直在使用KUKAVARPROXY,并希望升级到C3BridgeServer,则无需特殊的卸载程序。将库卡(HMI)最小化,关闭KUKAVARPROXY并确保系统启动时不会自动加载(START➔Allprograms➔Startup中没有快捷方式)。无需删除KUKAVARPROXY可执行文件。

配置错误

自动手动配置控制系统的程序可能会失败。最常见的原因是无法覆盖$config.dat文件。该文件只能由具有高级权限(专家)的用户编辑。另一个条件是停止所有解释器:机器人和提交。要停止机器人解释器,只需取消任何选定的程序,如果控制系统刚刚加载,则不选择任何程序。要取消提交解释器,请使用HMI,如下图所示,分别用于KRC2和KRC4系统:

Robots KUKA - 图片 31

Robots KUKA - 图片 32

如果在停止所有解释器后$config.dat文件仍被锁定,则可以完全停止机器人控制系统软件部分的执行。在KRC2系统中,点击状态指示器(SIR)旁边的矩形区域,然后点击Cancel按钮:

Robots KUKA - 图片 33

在KRC4系统中,点击托盘区的绿色机器人图标,然后选择"Stop KRC"

Robots KUKA - 图片 34

停止控制软件后,可以使用任何文本编辑器修改文件:C:\KRC\ROBOTER\KRC\R1\System\$config.dat。重新启动操作系统以应用更改。

外轴

即使有转台等外轴,你也可以在库卡机器人控制器上使用驱动器和后处理器。我们建议你使用编号坐标系或已在机器人控制器上定义了正确机器定义的坐标系。

Important:如果你有转台,请确保已正确测量了根点。否则,请按照程序正确定义转台根点。更多信息可以在校准转台找到。

库卡机器人控制器的下列文件将帮助你了解库卡系统的构建过程:

KRC\R1\System\$config.dat

KRC\R1\System\bas.src

KRC\R1\Mada\$machine.dat

如果有转盘,则应在config.dat文件的MACHINE_DEF变量中定义转盘的原点位置。安装系统的人应该会提供一个示例,根据BAS功能使用同步转盘生成程序。

例如,当你在SRC文件中使用ex_BASE标志和某个索引(如索引9)调用BAS函数时:

BASE_DATA[9] = {FRAME: X 0, Y 0, Z 0, A 0, B 0, C 0}

BAS(#ex_BASE,9)

你的意思是要使用MACHINE_FRAME_DAT中的索引9。你还应该查看BAS和EX_BASE定义,了解你的控制器默认引用的机器索引(MACH_IDX)。在调用SRC文件中的BAS函数之前定义的BASE_DATA数组可能只是安装在转盘上的夹具的偏移量。

Note:查看自定义后处理器案例,了解更多有关设置坐标系时如何自定义程序输出的信息。你可以在论坛中关于如何配置外轴的对话中找到更多信息。

如果转台与机械臂同步,你可能需要通过后处理器或驱动器手动更改$BASE变量,使其成为转台的原点。

例如,如果有可用的BASE_DATA索引9,则应在驱动器中使用以下代码。

  ;--------

  ; Replace this the $BASE definition by the following 2 lines

  ;    to make the KUKA RoboDKSynch driver work with external axes:

  ; $BASE = {FRAME: X 0, Y 0, Z 0, A 0, B 0, C 0} ; Comment this line

  BASE_DATA[9] = {FRAME: X 0, Y 0, Z 0, A 0, B 0, C 0}

  BAS(#ex_BASE,9)

  ; the BAS ex_BASE function links to a fixed MACHINE_DEF index

  ;   visible in the BAS function

 

  ; The previous two lines are equivalent to the following,

  ;   if the BAS function uses index 2 for the Machine definition

  ; BASE_DATA[9] = {FRAME: X 0, Y 0, Z 0, A 0, B 0, C 0}

  ; $BASE=EK(MACHINE_DEF[2].ROOT,MACHINE_DEF[2].MECH_TYPE,BASE_DATA[9])

  ;--------

Note:你也可以使用EK功能自行构建机器人加轨道和/或转盘系统,而无需依赖BAS功能。

Important:当你为库卡机器人生成程序,并拥有额外的同步轴(如直线轴或转台)时,你可能会在库卡SRC程序中看到以下一行定义基础坐标系的代码。

$BASE=EK(EX_AX_DATA[1].ROOT,EX_AX_DATA[1].EX_KIN,EX_AX_DATA[1].OFFSET)

对于后处理器,如果你想考虑转盘和夹具之间的偏移,可以替换后处理器setFrame功能中的前一行,使用$BASE定义:

$BASE=EK(MACHINE_DEF[2].ROOT, MACHINE_DEF[2].MECH_TYPE, {%s})' % self.pose_2_str(pose)

另外,在使用驱动器时,你也可以按照下面描述的步骤隔离坐标系(这样就不需要在RoboDK中完全匹配外轴的运动学)。

例如,为了能够默认使用RoboDK驱动程序,机器人控制器中定义的外轴运动学应该与RoboDK中创建的运动学相匹配。此外,如果你有一个转盘,转盘的根点应与RoboDK中定义的转盘位置一致。

请按照以下步骤使用已知坐标系使用驱动器:

1.菜单栏选择:工具➔选项➔驱动器选项卡。

2.选中"提供相对于参照物的笛卡尔坐标"选项。

Robots KUKA - 图片 35

3.RoboDKsync.src程序文件中的$BASE变量替换为你要使用的坐标系。

例如,如果你想使用编号为5的基准参考坐标系,RoboDKsync.src文件应该是这样的(第一行有注释,可以在在第25行左右看到):

; $BASE = {FRAME: X 0,Y 0,Z 0,A 0,B 0,C 0}

$BASE = BASE_DATA[5]

该坐标系必须已在库卡机器人控制器中定义,RoboDK不会覆盖该值。

Note:应确保RoboDK中的程序使用与$BASE变量(活动参考)中定义的坐标系相同的坐标系。

校准机器人

你可以使用RoboDK来校准已由库卡公司使用绝对精度选项校准过的库卡机器人。不过,你应确保在库卡机器人控制器中停用该选项。当你校准已由库卡(Kuka)使用绝对精度选项校准过的库卡机器人时,必须停用此选项,以便使用RoboDK进行校准。

要停用库卡的绝对精度,应将变量DEACTIVATE_ABS_ACCUR设为"true"。你可以在文件KRC:\STEU\MADA\$custom.dat中找到该变量(约第73行)。

你可以通过将机器人移动到已知位置(例如,将真实机器人和RoboDK中的机器人轴移动到原点位置),并确保机器人控制器显示的笛卡尔位置与RoboDK显示的笛卡尔位置一致,从而确保库卡的绝对精度选项已正确停用。