一、安装夹具

  1. 导入一个IRB2600机器人
  2. 移动夹具的本地坐标原点,使原点位置为顶面中心(与法兰盘连接的部位)

  3. 对齐夹爪Smart组件的本地坐标和机器人末端法兰盘的坐标,使夹具的本地坐标与法兰盘的本地坐标重合,为下一步安装夹具做准备。
  4. 在布局菜单内,将夹具拖动到IRB2600机器人上,完成夹具的安装

    二、创建传送带

  5. 导入传送带并设定传送带的位置
  6. 创建码垛用的物体,并将其移动到传送带的起点。

  7. 创建一个Smart组件,用于传送带物体的运动。添加如下组件
  8. 对各个组件进行设置




三、创建码垛底盘

四、创建机器人系统



选项内选择如下选项

五、仿真系统设置

  1. 在仿真设定中,将机器人系统后面的框选去除。
  2. 运行仿真,使物块到达面传感器处,然后停止仿真,捕捉几个目标点。(后面两个目标点是为了码垛时,物块会有两种拜访姿态,所以使用两个目标点)
  3. 旋转第三个目标点,使其绕Z轴旋转-90度。
  4. 为目标点配置参数
  5. 使机器人回到机械原点,然后创建一个空路径,将三个目标点依次拖动到路径中。

  6. 同步到工作站

  7. 删除之前仿真出来的物块的copy物体。
  8. 添加两个信号,一个是到位信号,用于传送带的等待,另一个是夹具信号。添加完成后重启控制器。



  9. 打开控制器,可以看到RAPID/T_ROB1下的程序模块,接下来就可以进行程序编写了。

    程序编写

    main程序代码如下

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    MODULE Module1
    CONST robtarget Target_10:=[[347.037,682.5,875.06],[1,0,0,0],[0,0,0,0],[9E9,9E9,9E9,9E9,9E9,9E9]];
    CONST robtarget Target_20:=[[500,-300,100],[1,0,0,0],[-1,0,-1,0],[9E9,9E9,9E9,9E9,9E9,9E9]];
    CONST robtarget Target_30:=[[500,-300,100],[0,0,0,1],[-1,0,1,0],[9E9,9E9,9E9,9E9,9E9,9E9]];
    VAR num layer:=1;
    VAR num x:=0;
    VAR num z:=0;
    PROC main()
    FOR i FROM 0 TO 20 DO
    SetDO JiaJu0,0;
    MoveJ Offs(Target_10,0,0,200),v500,fine,Tool1;
    WaitDI DaoWei0,1;
    MoveL Offs(Target_10,0,0,0),v500,fine,Tool1;
    SetDO JiaJu0,1;
    WaitTime 1;
    MoveL Offs(Target_10,0,0,200),v500,fine,Tool1;

    IF layer MOD 2 = 1 THEN
    IF i MOD 5 < 4 and i MOD 5 <> 0 THEN
    MoveL Offs(Target_30,90+x,-150,300+z),v500,fine,Tool1;
    MoveL Offs(Target_30,90+x,-150,100+z),v500,fine,Tool1;
    SetDO JiaJu0,0;
    WaitTime 1;
    MoveL Offs(Target_30,90+x,-150,300+z),v500,fine,Tool1;
    x:=x+210;
    IF i MOD 5 = 3 THEN
    x:=0;
    ENDIF
    ELSE
    MoveL Offs(Target_20,150+x,-410,300+z),v500,fine,Tool1;
    MoveL Offs(Target_20,150+x,-410,100+z),v500,fine,Tool1;
    SetDO JiaJu0,0;
    WaitTime 1;
    MoveL Offs(Target_20,150+x,-410,300+z),v500,fine,Tool1;
    x:=x+300;
    ENDIF
    IF i MOD 5 = 0 THEN
    layer:=2;
    x:=0;
    z:=z+100;
    ENDIF

    ELSE
    IF i MOD 5 < 3 THEN
    MoveL Offs(Target_20,150+x,-100,300+z),v500,fine,Tool1;
    MoveL Offs(Target_20,150+x,-100,100+z),v500,fine,Tool1;
    SetDO JiaJu0,0;
    WaitTime 1;
    MoveL Offs(Target_20,150+x,-100,300+z),v500,fine,Tool1;
    x:=x+300;
    IF i MOD 5 = 2 THEN
    x:=0;
    ENDIF
    ELSE
    MoveL Offs(Target_30,100+x,-350,300+z),v500,fine,Tool1;
    MoveL Offs(Target_30,100+x,-350,100+z),v500,fine,Tool1;
    SetDO JiaJu0,0;
    WaitTime 1;
    MoveL Offs(Target_30,100+x,-350,300+z),v500,fine,Tool1;
    x:=x+210;
    ENDIF
    IF i MOD 5 = 0 THEN
    layer:=1;
    x:=0;
    z:=z+100;
    ENDIF
    ENDIF

    ENDFOR
    z:=0;
    ENDPROC
    ENDMODULE

仿真测试

  1. 将代码同步到工作站
    1. 删除Path_10路径,只保留main路径
  2. 设置工作站逻辑
  3. 进行仿真