案例/模板说明

用户需要根据项目情况,编写机械臂前台主程序。

otc的一部分寄存器已经被占用,用户不允许使用这些寄存器,详见 API 说明

CartMove模板

以下为机械臂主控CartMove模板程序,注意对工控机返回的 error_code 进行判断。

用户需要根据项目情况,编写自己的机械臂前台主程序。

CartMove基础模板: MZ04-01-A.001

CartMove二次定位模板:MZ04-01-A.002

TrajMove模板

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

...
...