安装驱动
kuka 机械臂驱动文件列表
- – src
xyz_motion.src (工控机主控运行程序)
xyz_master.src (机械臂主控运行程序)
xyz_CartMove_template.src (座标移动模板程序)
xyz_CartMove_reposition.src (座标移动二次定位模板程序)
xyz_libmotpkt.src (协议处理相关函数)
xyz_libsock.src (socket 相关函数)
RobotData.dat (存放的是 src 文件使用的全局变量)
sps.sub (后台运行程序)
- – xml
MasterClient.xml (机械臂主控 socket 配置文件)
MotionClient.xml (工控机主控 motion socket 配置文件)
StatusClient.xml (工控机主控 status socket 配置文件)
设定机械臂 IP
进入用户组选择界面,选择专家登录,密码为 kuka。以下设定均需在 专家模式 下。
从“主菜单”中选择“投入运行” -> “网络配置”,然后分别选择“IP地址”,“子网隐码”,“标准网关”进行修改。
“IP地址”设置为:192.168.37.100
“子网隐码”设置为:255.255.255.0
“标准网关”设置为:0.0.0.0
网络设置完成后重启机械臂生效(也可在导入程序完成后进行重启)。
注:若”网络配置”无法按下,或无法删除文件,尝试按”R”或”S”->取消选择程序。
拆码垛机器人额外需要进行的操作
在程序导入到示教器之前,修改 xyz_motion 代码,修改 xyzSetJointsMovej()函数,按照提示,将注释的三行代码反注释, 即:
DEFFCT INT xyzSetJointsMovej()
; for palleting, uncomment the following sentences
curJoint = $AXIS_ACT
Target_Jnt.a4 = curJoint.A4
Target_Jnt.a5 = curJoint.A5
使用U盘导入程序
切换用户为专家或更高权限
将 MAX 安装目录下的 share/robot_code 中 kuka 文件夹拷入U盘,插入示教器USB口或控制柜U盘口
在U盘找到 src 程序,选中程序
*.src
,*.dat
。点击示教器底部菜单“编辑”->”复制”
在 R1 文件夹下,点击底部菜单“新”,”新建 xyz_robotics 文件夹
在 xyz_robotics 文件夹下,点击底部菜单 “编辑” -> “添加”,这时文件开始粘贴
按照相同拷贝过程,将U盘中的 sps.sub 拷贝到
R1/System
路径下
将 xml文件夹下的所有 xml 文件拷贝到
C:\KRC\ROBOTER\Config\User\Common\EthernetKRL\
此时,程序已经全部导入。
工控机主控时 IO 相关设定
设定数字输出 xyzSetDigitalOutput 不需要进行端口绑定,直接在 MAX 中输入实际的端口号。
获取数字输入 DigitalInput 不需要进行端口绑定,直接在 MAX 中输入实际的端口号。
另外,xyzSendRobotStatus() 也会在后台定时不断发送机械臂关节角、位姿、数组输入,要注意进行 di 绑定设置。
GLOBAL DEF xyzSendRobotStatus()
DECL STATE_T status_state
DECL EKI_STATUS status_ret
E6AXIS curJoint
INT i
CHAR Str[256]
BOOL flag
REAL J1, J2, J3, J4, J5, J6
CHAR Port_state[16]
CHAR RECV_STR[128]
INT status_offset
status_offset = 0
IF $FLAG[3] == FALSE THEN
gRet = EKI_Open("StatusClient")
WAIT FOR $FLAG[3]
ENDIF
IF $FLAG[3] == TRUE THEN
gRet = EKI_ClearBuffer("StatusClient","Buffer")
curJoint = $AXIS_ACT
J1 = curJoint.a1
J2 = curJoint.a2
J3 = curJoint.a3
J4 = curJoint.a4
J5 = curJoint.a5
J6 = curJoint.a6
flag = STRCLEAR(Str[])
status_offset = 0
FOR i=1 TO 16 STEP 1
Port_state[i] = 0
ENDFOR
; Bind DigitalInput with port here !!! 在这里进行 DI 的绑定
;For example,$IN[500] 绑定端口 0
;IF $IN[500] == True THEN
;Port_state[0] = 1 ; port number:0
;ELSE
;Port_state[0] = 0
;ENDIF
SWRITE(Str[], status_state, status_offset, "200,")
SWRITE(Str[], status_state, status_offset, "201,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%d,%d,", J1, J2, J3, J4, J5, J6, 0, 0)
SWRITE(Str[], status_state, status_offset, "202,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%d,", $pos_act.x, $pos_act.y, $pos_act.z, $pos_act.A, $pos_act.B, $pos_act.C, 0)
SWRITE(Str[], status_state, status_offset, "203,%d,%d,%d,%d,%d,%d,%d,%d,", Port_state[1], Port_state[2], Port_state[3], Port_state[4], Port_state[5], Port_state[6], Port_state[7], Port_state[8])
SWRITE(Str[], status_state, status_offset, "%d,%d,%d,%d,%d,%d,%d,%d,", Port_state[9], Port_state[10], Port_state[11], Port_state[12], Port_state[13], Port_state[14], Port_state[15], Port_state[16])
gRet = Eki_Send("StatusClient", Str[])
FOR i = 1 TO 128 STEP 1
RECV_STR[i] = 0
ENDFOR
WAIT FOR $FLAG[4]
status_ret = EKI_GetString("StatusClient","Buffer", RECV_STR[])
$FLAG[4] = FALSE
ENDIF
END