案例/模板说明

机械臂主控主函数说明

以下为机械臂主控模板,这里介绍前台程序的用法以及相关寄存器的用途,寄存器的全部定义请参照lua文件的开头部分。

-------------------------cart_move_basic.jbi----------------------------------

//
NOP

S1:连接到上位机
// start backend connection
// xyz_bkgd is the first lua script
STARTLUA INDEX=1  //启用xyz_master.lua脚本

S2: 初始化参数
// 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  //调用通讯程序

S3: 切换工件
// 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

S4: 移动到home点,需要提前设置好home点位置
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

S5: 眼在手上
// send current pose
IF LB001=0 THEN
    S6: 移动到拍照位
    MOVJ P001 VJ=50 PL=0 ACC=50 DEC=50
    S7: 发送拍照位姿给上位机
    SET B002 513            //设置cmd寄存器值为513
    SET V002 0,0,0,0,0,0    //设置要发送给上位机的cart pose
    CALL JOB:xyz_send_recv  //调用通讯程序
ENDIF

S8: 请求抓取位姿
// request grasp pose
SET B002 507                //设置cmd寄存器值为507
SET B011 0                  //设置ws_id
CALL JOB:xyz_send_recv      //调用通讯程序

S9: 获取抓取位姿
// 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

S10: 移动到抓取位并抓取
注意,可能需要添加一些过渡点
MOVL V001 AV=400.0 MM/S CR =10.0MM   //移动到grasp pose
DOUT OT# (1) ON                      //触发DO抓取
TIMER T=0.5
S11: 移动到放置位并放置
MOVL V003 AV=400.0 MM/S CR =10.0MM   //移动至放置点
DOUT OT# (1) OFF                     //触发DO放置

ENDWHILE

END


-------------------------cart_move_repo.jbi----------------------------------
//
NOP
S1: 连接到上位机
// start backend connection
// xyz_bkgd is the first lua script
STARTLUA INDEX=1        //启用xyz_master.lua脚本

S2: 初始化参数
// 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  //调用通讯程序

S3: 切换工件
// 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

S4: 移动到home点,需要提前设置好home点位置
MOVJ P001 VJ=50 PL=1 ACC=50 DEC=50   //运动到某一示教点

S5: 请求抓取位姿
// 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

S6: 获取抓取位姿
// get grasp pose
SET B002 508                //设置cmd寄存器值为508
SET B013 0                  //设置token
CALL JOB:xyz_send_recv      //调用通讯程序

S7:
IF B014 < 1 THEN
    S15: 上位机切换至识别隔板, 工作空间中已经没有工件,需要先取走隔板
    // switch item
    SET B002 528            //设置cmd寄存器值为502
    SET B004 3              //选用后台预留的第三个作字符串为item name
    SET B011 0              //设置ws_id
    CALL JOB:xyz_send_recv  //调用通讯程序

    S16: 请求隔板抓取位姿
    // request grasp pose
    SET B002 507            //设置cmd寄存器值为507
    SET B011 0              //设置ws_id
    CALL JOB:xyz_send_recv  //调用通讯程序

    S17: 获取隔板抓取位姿
    // get grasp pose
    SET B002 508                //设置cmd寄存器值为508
    SET B013 0                  //设置token
    CALL JOB:xyz_send_recv      //调用通讯程序

    S18: 移动到抓取位并抓取隔板
    MOVL V001 AV=400.0 MM/S CR =10.0MM      //移动到抓取点
    DOUT OT# (1) ON

    S19: 移动到放置位并放置
    MOVL V001 AV=400.0 MM/S CR =10.0MM      //移动到放置点
    DOUT OT# (1) OFF

    S20: 上位机切换至识别工件
    // 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
    S8: 移动到拍照位,需要先示教该拍照位
    MOVL V003 AV=400.0 MM/S CR =10.0MM

    S9: 发送拍照位姿
    // send current pose
    SET B002 513            //设置cmd寄存器值为513
    SET V002 0,0,0,0,0,0    //设置要发送给上位机的cart pose
    CALL JOB:xyz_send_recv  //调用通讯程序

    S10: 上位机切换至识别工件
    // switch item
    SET B002 528            //设置cmd寄存器值为502
    SET B004 2              //选用后台预留的第三个作字符串为item name
    SET B011 1              //设置ws_id
    CALL JOB:xyz_send_recv  //调用通讯程序

    S11: 请求抓取位姿
    // request grasp pose
    SET B002 507            //设置cmd寄存器值为507
    SET B011 1              //设置ws_id
    CALL JOB:xyz_send_recv  //调用通讯程序

    S12: 获取抓取位姿
    // get grasp pose
    SET B002 508                //设置cmd寄存器值为508
    SET B013 0                  //设置token
    CALL JOB:xyz_send_recv      //调用通讯程序

    S13: 移动到抓取位并抓取
    MOVL V001 AV=400.0 MM/S CR =10.0MM      //移动到放置点
    DOUT OT# (2) ON

    S14: 移动到放置位并放置
    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
S1: 连接上位机
// start backend connection
// xyz_bkgd is the first lua script
STARTLUA INDEX=1  //启用xyz_master.lua脚本

S2: 初始化参数
// 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  //调用通讯程序

S3: 切换工件
// 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

S4: 移动到home点,需要提前设置好home点位置
MOVJ P001 VJ=50 PL=0 ACC=50 DEC=50 //运动到某一示教点

SET LB000 0

// loop start           //循环开始
WHILE LB000=0 DO
LABEL *loop_start

S5: 请求抓取和放置规划
// request pick and place
SET B002 517                //设置cmd寄存器值为517
SET B011 0                  //设置ws_id
CALL JOB:xyz_send_recv      //调用通讯程序

S6: 获取抓取入筐轨迹
// get pick in result
SET B002 518                //设置cmd寄存器值为518
SET B011 0                  //设置ws_id
CALL JOB:xyz_send_recv      //调用通讯程序

PAUSE IF B014 < 1           //清筐

S7: 执行抓取入筐轨迹
CALL JOB:xyz_exectraj       //执行轨迹
DOUT OT# (1) ON

S8: 获取抓取出筐轨迹
// get pick out result
SET B002 519                //设置cmd寄存器值为519
SET B011 0                  //设置ws_id
CALL JOB:xyz_send_recv      //调用通讯程序

S9: 执行抓取出筐轨迹
CALL JOB:xyz_exectraj       //执行轨迹

S10: 获取放置入筐轨迹
// get place in result
SET B002 520                //设置cmd寄存器值为520
SET B011 0                  //设置ws_id
CALL JOB:xyz_send_recv      //调用通讯程序

S11: 执行放置入筐轨迹
CALL JOB:xyz_exectraj       //执行轨迹
DOUT OT# (1) OFF

S12: 获取放置出筐轨迹
// get place out result
SET B002 521                //设置cmd寄存器值为521
SET B011 0                  //设置ws_id
CALL JOB:xyz_send_recv      //调用通讯程序

S13: 执行放置出筐轨迹
CALL JOB:xyz_exectraj       //执行轨迹

ENDWHILE

END


-------------------------traj_move_async.jbi----------------------------------
//
NOP

S1: 连接到上位机
// start backend connection
// xyz_bkgd is the first lua script
STARTLUA INDEX=1  //启用xyz_master.lua脚本

S2: 初始化参数
// 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  //调用通讯程序

S3: 切换工件
// 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

S4: 移动到home点,需要提前设置好home点位置
MOVJ P001 VJ=50 PL=0 ACC=50 DEC=50 //运动到某一示教点

S5: 请求抓取和放置规划
// 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

S6: 获取抓取入筐轨迹
// get pick in result
SET B002 518                //设置cmd寄存器值为518
SET B011 0                  //设置ws_id
CALL JOB:xyz_send_recv      //调用通讯程序

PAUSE IF B014 < 1           //清筐

S7: 执行抓取入筐轨迹
CALL JOB:xyz_exectraj       //执行轨迹
DOUT OT# (1) ON

S8: 获取抓取出筐轨迹
// get pick out result
SET B002 519                //设置cmd寄存器值为519
SET B011 0                  //设置ws_id
CALL JOB:xyz_send_recv      //调用通讯程序

S9: 执行抓取出筐轨迹
CALL JOB:xyz_exectraj       //执行轨迹

S10: 请求下一次的抓取和放置规划
// request pick and place
SET B002 517                //设置cmd寄存器值为517
SET B011 0                  //设置ws_id
CALL JOB:xyz_send_recv      //调用通讯程序

S11: 获取放置入框轨迹
// get place in result
SET B002 520                //设置cmd寄存器值为520
SET B011 0                  //设置ws_id
CALL JOB:xyz_send_recv      //调用通讯程序

S12: 执行放置入筐轨迹
CALL JOB:xyz_exectraj       //执行轨迹
DOUT OT# (1) OFF

S13: 获取放置出筐轨迹
// get place out result
SET B002 521                //设置cmd寄存器值为521
SET B011 0                  //设置ws_id
CALL JOB:xyz_send_recv      //调用通讯程序

S14: 执行放置出筐轨迹
CALL JOB:xyz_exectraj       //执行轨迹

ENDWHILE

END