案例/模板说明
机械臂主控主函数说明
以下为机械臂主控模板,这里介绍前台程序的用法以及相关寄存器的用途,寄存器的全部定义请参照lua文件的开头部分。
-------------------------cart_move_basic.jbi----------------------------------
//
NOP
// start backend connection
// xyz_bkgd is the first lua script
STARTLUA INDEX=1 //启用xyz_master.lua脚本
// init communication
CALL JOB:xyz_init //调用初始化程序
// switch flow
SET B002 502 //设置cmd寄存器值为502
SET B004 1 //elite没有字符串寄存器,后台预留了五个字符串
//B004的值代表选用的是第几个字符串,现在选用第一个作为flow name
CALL JOB:xyz_send_recv //调用通讯程序
// switch item
SET B002 528 //设置cmd寄存器值为502
SET B004 2 //选用后台预留的第二个作字符串为item name
SET B011 0 //设置ws_id
CALL JOB:xyz_send_recv //调用通讯程序
DOUT OT# (1) OFF //设置DO
MOVJ P001 VJ=50 PL=0 ACC=50 DEC=50 //运动到某一示教点
SET LB000 0
SET LB001 0
// loop start //循环开始
WHILE LB000=0 DO
LABEL *loop_start
// send current pose
IF LB001=0 THEN
SET B002 513 //设置cmd寄存器值为513
SET V002 0,0,0,0,0,0 //设置要发送给上位机的cart pose
CALL JOB:xyz_send_recv //调用通讯程序
ENDIF
// request grasp pose
SET B002 507 //设置cmd寄存器值为507
SET B011 0 //设置ws_id
CALL JOB:xyz_send_recv //调用通讯程序
// get grasp pose
SET B002 508 //设置cmd寄存器值为508
SET B013 0 //设置token
CALL JOB:xyz_send_recv //调用通讯程序
IF B014 < 1 THEN
TIMER T=5 //未识别,重新拍照
JUMP *loop_start
ENDIF
MOVL V001 AV=400.0 MM/S CR =10.0MM //移动到grasp pose
DOUT OT# (1) ON //触发DO抓取
TIMER T=0.5
MOVL V003 AV=400.0 MM/S CR =10.0MM //移动至放置点
DOUT OT# (1) OFF //触发DO放置
ENDWHILE
END
-------------------------cart_move_repo.jbi----------------------------------
//
NOP
// start backend connection
// xyz_bkgd is the first lua script
STARTLUA INDEX=1 //启用xyz_master.lua脚本
// init communication
CALL JOB:xyz_init //调用初始化程序
// switch flow
SET B002 502 //设置cmd寄存器值为502
SET B004 1 //elite没有字符串寄存器,后台预留了五个字符串
//B004的值代表选用的是第几个字符串,现在选用第一个作为flow name
CALL JOB:xyz_send_recv //调用通讯程序
// switch item
SET B002 528 //设置cmd寄存器值为502
SET B004 2 //选用后台预留的第二个作字符串为item name
SET B011 0 //设置ws_id
CALL JOB:xyz_send_recv //调用通讯程序
DOUT OT# (1) OFF //设置DO
DOUT OT# (2) OFF
MOVJ P001 VJ=50 PL=1 ACC=50 DEC=50 //运动到某一示教点
// request grasp pose
SET B002 507 //设置cmd寄存器值为507
SET B011 0 //设置ws_id
CALL JOB:xyz_send_recv //调用通讯程序
SET LB000 0
// loop start //循环开始
WHILE LB000=0 DO
LABEL *loop_start
// get grasp pose
SET B002 508 //设置cmd寄存器值为508
SET B013 0 //设置token
CALL JOB:xyz_send_recv //调用通讯程序
IF B014 < 1 THEN
// switch item
SET B002 528 //设置cmd寄存器值为502
SET B004 3 //选用后台预留的第三个作字符串为item name
SET B011 0 //设置ws_id
CALL JOB:xyz_send_recv //调用通讯程序
// request grasp pose
SET B002 507 //设置cmd寄存器值为507
SET B011 0 //设置ws_id
CALL JOB:xyz_send_recv //调用通讯程序
// get grasp pose
SET B002 508 //设置cmd寄存器值为508
SET B013 0 //设置token
CALL JOB:xyz_send_recv //调用通讯程序
MOVL V001 AV=400.0 MM/S CR =10.0MM //移动到抓取点
DOUT OT# (1) ON
// switch item
SET B002 528 //设置cmd寄存器值为502
SET B004 2 //选用后台预留的第三个作字符串为item name
SET B011 0 //设置ws_id
CALL JOB:xyz_send_recv //调用通讯程序
// request grasp pose
SET B002 507 //设置cmd寄存器值为507
SET B011 0 //设置ws_id
CALL JOB:xyz_send_recv //调用通讯程序
JUMP *loop_start
ELSE
MOVL V003 AV=400.0 MM/S CR =10.0MM
// send current pose
SET B002 513 //设置cmd寄存器值为513
SET V002 0,0,0,0,0,0 //设置要发送给上位机的cart pose
CALL JOB:xyz_send_recv //调用通讯程序
// switch item
SET B002 528 //设置cmd寄存器值为502
SET B004 2 //选用后台预留的第三个作字符串为item name
SET B011 1 //设置ws_id
CALL JOB:xyz_send_recv //调用通讯程序
// request grasp pose
SET B002 507 //设置cmd寄存器值为507
SET B011 1 //设置ws_id
CALL JOB:xyz_send_recv //调用通讯程序
// get grasp pose
SET B002 508 //设置cmd寄存器值为508
SET B013 0 //设置token
CALL JOB:xyz_send_recv //调用通讯程序
MOVL V001 AV=400.0 MM/S CR =10.0MM //移动到放置点
DOUT OT# (2) ON
MOVL V004 AV=400.0 MM/S CR =10.0MM
DOUT OT# (2) OFF
ENDIF
// switch item
SET B002 528 //设置cmd寄存器值为502
SET B004 2 //选用后台预留的第二个作字符串为item name
SET B011 0 //设置ws_id
CALL JOB:xyz_send_recv //调用通讯程序
// request grasp pose
SET B002 507 //设置cmd寄存器值为507
SET B011 0 //设置ws_id
CALL JOB:xyz_send_recv //调用通讯程序
ENDWHILE
END
-------------------------traj_move_sync.jbi----------------------------------
//
NOP
// start backend connection
// xyz_bkgd is the first lua script
STARTLUA INDEX=1 //启用xyz_master.lua脚本
// init communication
CALL JOB:xyz_init //调用初始化程序
// switch flow
SET B002 502 //设置cmd寄存器值为502
SET B004 1 //elite没有字符串寄存器,后台预留了五个字符串
//B004的值代表选用的是第几个字符串,现在选用第一个作为flow name
CALL JOB:xyz_send_recv //调用通讯程序
// switch item
SET B002 528 //设置cmd寄存器值为502
SET B004 2 //选用后台预留的第二个作字符串为item name
SET B011 0 //设置ws_id
CALL JOB:xyz_send_recv //调用通讯程序
DOUT OT# (1) OFF //设置DO
MOVJ P001 VJ=50 PL=0 ACC=50 DEC=50 //运动到某一示教点
SET LB000 0
// loop start //循环开始
WHILE LB000=0 DO
LABEL *loop_start
// request pick and place
SET B002 517 //设置cmd寄存器值为517
SET B011 0 //设置ws_id
CALL JOB:xyz_send_recv //调用通讯程序
// get pick in result
SET B002 518 //设置cmd寄存器值为518
SET B011 0 //设置ws_id
CALL JOB:xyz_send_recv //调用通讯程序
PAUSE IF B014 < 1 //清筐
CALL JOB:xyz_exectraj //执行轨迹
DOUT OT# (1) ON
// get pick out result
SET B002 519 //设置cmd寄存器值为519
SET B011 0 //设置ws_id
CALL JOB:xyz_send_recv //调用通讯程序
CALL JOB:xyz_exectraj //执行轨迹
// get place in result
SET B002 520 //设置cmd寄存器值为520
SET B011 0 //设置ws_id
CALL JOB:xyz_send_recv //调用通讯程序
CALL JOB:xyz_exectraj //执行轨迹
DOUT OT# (1) OFF
// get place out result
SET B002 521 //设置cmd寄存器值为521
SET B011 0 //设置ws_id
CALL JOB:xyz_send_recv //调用通讯程序
CALL JOB:xyz_exectraj //执行轨迹
ENDWHILE
END
-------------------------traj_move_async.jbi----------------------------------
//
NOP
// start backend connection
// xyz_bkgd is the first lua script
STARTLUA INDEX=1 //启用xyz_master.lua脚本
// init communication
CALL JOB:xyz_init //调用初始化程序
// switch flow
SET B002 502 //设置cmd寄存器值为502
SET B004 1 //elite没有字符串寄存器,后台预留了五个字符串
//B004的值代表选用的是第几个字符串,现在选用第一个作为flow name
CALL JOB:xyz_send_recv //调用通讯程序
// switch item
SET B002 528 //设置cmd寄存器值为502
SET B004 2 //选用后台预留的第二个作字符串为item name
SET B011 0 //设置ws_id
CALL JOB:xyz_send_recv //调用通讯程序
DOUT OT# (1) OFF //设置DO
MOVJ P001 VJ=50 PL=0 ACC=50 DEC=50 //运动到某一示教点
// request pick and place
SET B002 517 //设置cmd寄存器值为517
SET B011 0 //设置ws_id
CALL JOB:xyz_send_recv //调用通讯程序
SET LB000 0
// loop start //循环开始
WHILE LB000=0 DO
LABEL *loop_start
// get pick in result
SET B002 518 //设置cmd寄存器值为518
SET B011 0 //设置ws_id
CALL JOB:xyz_send_recv //调用通讯程序
PAUSE IF B014 < 1 //清筐
CALL JOB:xyz_exectraj //执行轨迹
DOUT OT# (1) ON
// get pick out result
SET B002 519 //设置cmd寄存器值为519
SET B011 0 //设置ws_id
CALL JOB:xyz_send_recv //调用通讯程序
CALL JOB:xyz_exectraj //执行轨迹
// request pick and place
SET B002 517 //设置cmd寄存器值为517
SET B011 0 //设置ws_id
CALL JOB:xyz_send_recv //调用通讯程序
// get place in result
SET B002 520 //设置cmd寄存器值为520
SET B011 0 //设置ws_id
CALL JOB:xyz_send_recv //调用通讯程序
CALL JOB:xyz_exectraj //执行轨迹
DOUT OT# (1) OFF
// get place out result
SET B002 521 //设置cmd寄存器值为521
SET B011 0 //设置ws_id
CALL JOB:xyz_send_recv //调用通讯程序
CALL JOB:xyz_exectraj //执行轨迹
ENDWHILE
END