案例/模板说明 ============================ 用户需要根据项目情况,编写机械臂前台主程序。 otc的一部分寄存器已经被占用,用户不允许使用这些寄存器,详见 :doc:`./api`。 CartMove模板 ++++++++++++++++++++++++++++++++ 以下为机械臂主控CartMove模板程序,注意对工控机返回的 error_code 进行判断。 用户需要根据项目情况,编写自己的机械臂前台主程序。 CartMove基础模板: MZ04-01-A.001 CartMove二次定位模板:MZ04-01-A.002 TrajMove模板 ++++++++++++++++++++++++++++++++ .. code-block:: INCLUDE "VARIABLE" ' 初始化并启动后台程序 CallProc MasterInit() KILLMCR 300, 0, 10000 DELAY 2 FORKMCR 300, 10000 DELAY 2 ' ' 连接服务端 ' ' 设置服务端ip地址(ip地址的最后一段) V3% = 101 ' 设置服务端端口 V4% = 11111 CallProc xyzMasterConnect() ' ' 切换app ' ' 设置项目名称 L1$ = "111" CallProc xyzSwitchApp(L1$) ' 需要对返回的error_code(V21%)进行判断,以下每条语句同理 IF V21% <> 0 STOP ENDIF *MAIN_LOOP ' ' 请求pick ' CallProc xyzReqPick() IF V21% <> 0 STOP ENDIF ' ' 获取pick_in轨迹 ' CallProc xyzGetPickIn() IF V21% <> 0 STOP ENDIF ' 轨迹点数量>0时运行轨迹 IF V27% > 0 CallProc ExecTraj() ENDIF ' ' 获取pick_out轨迹 ' CallProc xyzGetPickOut() IF V21% <> 0 STOP ENDIF ' 轨迹点数量>0时运行轨迹 IF V27% > 0 CallProc ExecTraj() ENDIF ' ' 获取place_in轨迹 ' CallProc xyzGetPlaceIn() IF V21% <> 0 STOP ENDIF ' 轨迹点数量>0时运行轨迹 IF V27% > 0 CallProc ExecTraj() ENDIF ' ' 获取pick_out轨迹 ' CallProc xyzGetPlaceOut() IF V21% <> 0 STOP ENDIF ' 轨迹点数量>0时运行轨迹 IF V27% > 0 CallProc ExecTraj() ENDIF GOTO *MAIN_LOOP END ' ************************************************************************************************************** ' SUB FUNCTIONS ' ************************************************************************************************************** UsrProc ExecTraj() ' ' set your own speed/override... here ' 如果需要分别调整出筐/入筐等的轨迹、圆滑值,可以在这里自定义调整 ' ' IF V12% = 518 ' ' set pick_in speed/override... ' ELSEIF V12% = 519 ' ' set pick_out speed/override... ' ELSEIF V12% = 520 ' ' set place_in speed/override... ' ELSEIF V12% = 521 ' ' set place_out speed/override... ' ELSEIF V12% = 525 ' ' set update_obj_pose_to_hand speed/override... ' ELSE ' STOP ' ENDIF ' V27%: traj pose num L100% = V27% - 1 FOR L101% = 0 TO L100% STEP 1 V19! = V![301+6*L101%] V20! = V![302+6*L101%] V21! = V![303+6*L101%] V22! = V![304+6*L101%] V23! = V![305+6*L101%] V24! = V![306+6*L101%] IF V%[29+L101%] = 11 ' JOINTS_MOVEJ MOVEX A=3, AC=0, SM=0, M1J, P, (V19!,V20!,V21!,V22!,V23!,V24!),R=100.0,MS ELSEIF V%[29+L101%] = 12 ' JOINTS_MOVEL MOVEX A=3, AC=0, SM=0, M1J, L, (V19!,V20!,V21!,V22!,V23!,V24!),R=100.0,MS ELSEIF V%[29+L101%] = 21 ' CART_MOVEJ MOVEX A=3, AC=0, SM=0, M1X, P, (V19!,V20!,V21!,V22!,V23!,V24!),R=100.0,MS ELSEIF V%[29+L101%] = 22 ' CART_MOVEL MOVEX A=3, AC=0, SM=0, M1X, L, (V19!,V20!,V21!,V22!,V23!,V24!),R=100.0,MS ELSE STOP ENDIF NEXT EndProc ... ...