安装驱动 ============================ kuka 机械臂驱动文件列表 +++++++++++++++++++++++++++++++++ -- src - RobotData.dat (存放的是 src 文件使用的全局变量) - sps.sub (后台运行程序) - xyz_CartMove_reposition.dat (同名文件的变量存储文件,以下dat皆是) - xyz_CartMove_reposition.src (**座标移动二次定位程序**) - xyz_CartMove_template.dat - xyz_CartMove_template.src (**座标移动模板程序**) - xyz_TrajMove_Async.dat - xyz_TrajMove_Async.src (**轨迹移动异步模板程序**) - xyz_TrajMove_Sync.dat - xyz_TrajMove_Sync.src (**轨迹移动同步模板程序**) - xyz_libmotpkt.src (协议处理相关函数) - xyz_libsock.src (socket 相关函数) - xyz_master_api.src (机械臂主控 api) - xyz_master_example.dat - xyz_master_example.src (机械臂主控 api 测试程序) - xyz_motion.src (**工控机主控运行程序**) (**以下为PLC外部启动专用,老版本中可能没有**) - xyz_ext_control.dat - xyz_ext_control.src(外部启动程序) -- 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 .. figure:: img/kuka_network_configuration_1.png :width: 300px :align: center kuka 设定机械臂 IP 1 .. figure:: img/kuka_network_configuration_2.png :width: 300px :align: center kuka 设定机械臂 IP 2 网络设置完成后重启机械臂生效(也可在导入程序完成后进行重启)。 注:若”网络配置”无法按下,或无法删除文件,尝试按”R”或”S”->取消选择程序。 拆码垛机器人额外需要进行的操作 +++++++++++++++++++++++++++++++++ 在程序导入到示教器之前,修改 xyz_motion 代码,修改 xyzSetJointsMovej()函数,按照提示,将注释的三行代码反注释, 即: .. code-block:: 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`` 。点击示教器底部菜单“编辑”->"复制" .. figure:: img/kuka_import_src_1.png :width: 300px :align: center U盘导入程序 1 - 在 R1 文件夹下,点击底部菜单“新”,”新建 xyz_robotics 文件夹 .. figure:: img/kuka_import_src_2.png :width: 300px :align: center U盘导入程序 2 - 在 xyz_robotics 文件夹下,点击底部菜单 “编辑” -> “添加”,这时文件开始粘贴 .. figure:: img/kuka_import_src_3.png :width: 300px :align: center U盘导入程序 3 - 按照相同拷贝过程,将U盘中的 ``sps.sub`` 拷贝到 ``R1/System`` 路径下. 注意,需要先将正在运行的 sub 程序停止(管理员权限点击顶部的 ``S`` 的停止),再进行拷贝。否则,可能覆盖失败。 .. figure:: img/kuka_import_src_4.png :width: 300px :align: center U盘导入程序 4 - 将 xml文件夹下的所有 xml 文件拷贝到 ``C:\KRC\ROBOTER\Config\User\Common\EthernetKRL\`` .. figure:: img/kuka_import_src_5.png :width: 300px :align: center U盘导入程序 5 此时,程序已经全部导入。 工控机主控时 IO 相关设定 +++++++++++++++++++++++++++++++++ - 设定数字输出 xyzSetDigitalOutput 不需要进行端口绑定,直接在 MAX 中输入实际的端口号。 - 获取数字输入 DigitalInput 不需要进行端口绑定,直接在 MAX 中输入实际的端口号。 - 另外,xyzSendRobotStatus() 也会在后台定时不断发送机械臂关节角、位姿、数组输入,要注意进行 di 绑定设置。 .. code-block:: 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