安装驱动

abb 机械臂驱动文件列表

abb机械臂的标准驱动文件如下所示

– BACKINFO

– backinfo.txt

– RAPID
– TASK1 (运动相关程序)
– PROGMOD
  • xyz_libconst.mod (函数用到的常数变量)

  • xyz_libmotpkt.mod (数据包解析处理函数)

  • xyz_libsock.mod (socket 相关函数)

  • xyz_main.mod (程序运行起点)

  • xyz_master.mod (机械臂主控函数主体)

  • xyz_motion.mod (工控机主控函数主体)

– SYSMOD
  • user.sys

– TASK2 (机械臂发送状态程序)
– PROGMOD
  • xyz_libsock.mod (socket 相关函数)

  • xyz_libstapkt.mod (数据包解析处理函数)

  • xyz_status.mod (机械臂发送状态函数主体)

  • xyz_status_task.mod (程序运行起点)

– SYSMOD
  • user.sys

– SYSPAR
  • EIO.cfg

  • SIO.cfg

  • SYS.cfg

除了上述文件外,在 SYSPAR 文件夹下还有其他文件,这些文件不是 ABB 系统所必须,也不必导入到控制器里。这些文件的作用是为了方便 IO 信号的设置,具体使用方法 会在“导入程序”环节讲到。

– SYSPAR
  • eio_d652.cfg (DSQC 652 IO 板卡的 IO 信号配置模板)

  • eio_local_io.cfg (Local_IO 的 IO 信号配置模板)

设定机械臂 IP

MENU-> 控制面板-> 配置,切换主题为 Communication,进入 IP Setting。若有配置,修改如下;如果没有任何配置,则点击 添加,修改如下:

  • “IP”设置为:192.168.37.100

  • “Subnet”设置为:255.255.255.0

../../../_images/abb_ip_setting.png

ABB 设定机械臂 IP,其中Interface下拉选项需要和网线实际接线一致

网络设置完成后重启机械臂生效。

导入程序

  1. 导入程序之前需要先备份 ABB 机器人控制器里的程序。可以通过 RobotStudio 备份或者通过U盘来备份

  • 使用 RobotStudio 来备份机器人程序

    [1] 准备好一台安装了RobotStudio的电脑。 用网线连接装好 RobotStudio 的电脑和ABB控制柜上的 X2 服务(Service)口 。电脑使用自动取得 IP(DHCP),不要手动设置,X2 口会自动分配 192.168.125.* 的 IP 给电脑。

    [2] 启动 RobotStudio,依次点击 文件-> 在线-> 一键连接

    ../../../_images/abb_robotstudio_connection.png

    RobotStudio 连接 ABB 机械臂

    [3] 点击 控制器(C)-> 备份-> 创建备份,存到指定位置。

    ../../../_images/abb_backup_1.png

    ABB RobotStudio备份程序

  • 使用 U盘备份机器人程序

    [1] 准备一个文件系统为FAT32格式的U盘(其他格式的文件系统可能不会被ABB控制器识别)

    [2] 将U盘插到示教器的U盘口上

    [3] 在示教器上依次点击 MENU -> 备份与恢复 -> 备份当前系统 选择备份路径到U盘所在的位置后,点击备份

    ../../../_images/abb_backup_2.png

    abb 示教器备份程序

  1. 使用文件比对工具,比较备份的文件夹和要导入的 ABB 代码文件夹,并对相应部分进行修改和替换。

文件对比工具推荐使用 Meld (下载地址:https://meldmerge.org/) 或者 Beyond Compare (下载地址:https://www.beyondcomparepro.com/download)

为了防止修改备份的过程中误修改其他文件破坏备份,可以将备份文件重新拷贝一份。

修改备份文件的时候请不要直接拷贝该文档中的配置内容片段,生成文档时这些片段的格式会被改动,直接拷贝文档中的代码到备份文件,会出现备份文件由于格式问题无法被ABB控制器识别的问题

[1] 删除备份文件夹下的 RAPID 目录,并拷贝 ABB 标准文件夹中 RAPID 文件目录到备份文件夹

[2] 修改 backupinfo.txt 中的 TASK 内容为:

>>TASK1: (T_ROB1,,)
PROGMOD\xyz_motion.mod @
SYSMOD\user.sys @
PROGMOD\xyz_libsock.mod @
PROGMOD\xyz_main.mod @
PROGMOD\xyz_libmotpkt.mod @
PROGMOD\xyz_master.mod @
PROGMOD\xyz_libconst.mod @

>>TASK2: (STATUS,,)
SYSMOD\user.sys @
PROGMOD\xyz_libsock.mod @
PROGMOD\xyz_status_task.mod @
PROGMOD\xyz_libstapkt.mod @
PROGMOD\xyz_status.mod @

请不要直接拷贝上述配置内容片段来修改备份文件中的 backupinfo.txt 。请根据 ABB 标准驱动文件中的 backupinfo.txt 来修改。

[3] 修改 SYS.cfg 中的 CAB_TASKS 为:

CAB_TASKS:

-Name "T_ROB1" -Type "NORMAL" -MotionTask

-Name "STATUS" -Task_in_forground "STATUS" -Type "NORMAL"

请不要直接拷贝上述配置内容片段来修改备份文件中的 SYS.cfg 。请根据 ABB 标准驱动文件中的 SYS.cfg 来修改。

[4] 修改 EIO.cfg 文件。需要在 EIO.cfg 文件中的 EIO_SIGNAL: 条目下添加如下的 IO 信号定义

EIO_SIGNAL:

  -Name "output0" -SignalType "DO"

  -Name "output1" -SignalType "DO"

  -Name "output2" -SignalType "DO"

  -Name "output3" -SignalType "DO"

  -Name "output4" -SignalType "DO"

  -Name "output5" -SignalType "DO"

  -Name "output6" -SignalType "DO"

  -Name "output7" -SignalType "DO"

  -Name "output8" -SignalType "DO"

  -Name "output9" -SignalType "DO"

  -Name "output10" -SignalType "DO"

  -Name "output11" -SignalType "DO"

  -Name "output12" -SignalType "DO"

  -Name "output13" -SignalType "DO"

  -Name "output14" -SignalType "DO"

  -Name "output15" -SignalType "DO"

  -Name "input0" -SignalType "DI"

  -Name "input1" -SignalType "DI"

  -Name "input2" -SignalType "DI"

  -Name "input3" -SignalType "DI"

  -Name "input4" -SignalType "DI"

  -Name "input5" -SignalType "DI"

  -Name "input6" -SignalType "DI"

  -Name "input7" -SignalType "DI"

  -Name "input8" -SignalType "DI"

  -Name "input9" -SignalType "DI"

  -Name "input10" -SignalType "DI"

  -Name "input11" -SignalType "DI"

  -Name "input12" -SignalType "DI"

  -Name "input13" -SignalType "DI"

  -Name "input14" -SignalType "DI"

  -Name "input15" -SignalType "DI"

  -Name "GroupDO" -SignalType "GO"

以上只是定义了程序所使用的 IO 信号,并没有把这些IO信号和物理设备上的信号做映射。如果需要把 IO 信号映射到如理设备, 可以在每个 IO 信号的定义后面加上 “-Device” 字段并填入 IO 设备的名称,加上 “-DeviceMap” 字段并填入映射到 IO 设备上的端口号。 下面片段展示的是 IO 信号和 DSQC 652 IO 板卡做好映射后样子。

EIO_SIGNAL:

  -Name "output0" -SignalType "DO" -Device "d652" -DeviceMap "0"

  -Name "output1" -SignalType "DO" -Device "d652" -DeviceMap "1"

  -Name "output2" -SignalType "DO" -Device "d652" -DeviceMap "2"

  -Name "output3" -SignalType "DO" -Device "d652" -DeviceMap "3"

  -Name "output4" -SignalType "DO" -Device "d652" -DeviceMap "4"

  -Name "output5" -SignalType "DO" -Device "d652" -DeviceMap "5"

  -Name "output6" -SignalType "DO" -Device "d652" -DeviceMap "6"

  -Name "output7" -SignalType "DO" -Device "d652" -DeviceMap "7"

  -Name "output8" -SignalType "DO" -Device "d652" -DeviceMap "8"

  -Name "output9" -SignalType "DO" -Device "d652" -DeviceMap "9"

  -Name "output10" -SignalType "DO" -Device "d652" -DeviceMap "10"

  -Name "output11" -SignalType "DO" -Device "d652" -DeviceMap "11"

  -Name "output12" -SignalType "DO" -Device "d652" -DeviceMap "12"

  -Name "output13" -SignalType "DO" -Device "d652" -DeviceMap "13"

  -Name "output14" -SignalType "DO" -Device "d652" -DeviceMap "14"

  -Name "output15" -SignalType "DO" -Device "d652" -DeviceMap "15"

  -Name "input0" -SignalType "DI" -Device "d652" -DeviceMap "0"

  -Name "input1" -SignalType "DI" -Device "d652" -DeviceMap "1"

  -Name "input2" -SignalType "DI" -Device "d652" -DeviceMap "2"

  -Name "input3" -SignalType "DI" -Device "d652" -DeviceMap "3"

  -Name "input4" -SignalType "DI" -Device "d652" -DeviceMap "4"

  -Name "input5" -SignalType "DI" -Device "d652" -DeviceMap "5"

  -Name "input6" -SignalType "DI" -Device "d652" -DeviceMap "6"

  -Name "input7" -SignalType "DI" -Device "d652" -DeviceMap "7"

  -Name "input8" -SignalType "DI" -Device "d652" -DeviceMap "8"

  -Name "input9" -SignalType "DI" -Device "d652" -DeviceMap "9"

  -Name "input10" -SignalType "DI" -Device "d652" -DeviceMap "10"

  -Name "input11" -SignalType "DI" -Device "d652" -DeviceMap "11"

  -Name "input12" -SignalType "DI" -Device "d652" -DeviceMap "12"

  -Name "input13" -SignalType "DI" -Device "d652" -DeviceMap "13"

  -Name "input14" -SignalType "DI" -Device "d652" -DeviceMap "14"

  -Name "input15" -SignalType "DI" -Device "d652" -DeviceMap "15"

  -Name "GroupDO" -SignalType "GO" -Device "d652" -DeviceMap "0-15"

如果需要配置的 ABB 机器人使用的是 DSQC 652 IO 板卡,请不要直接拷贝上述配置内容片段来修改备份文件中的 EIO.cfg 。而是根据 ABB 标准驱动文件中的 eio_d652.cfg 来修改。 如果需要配置的 ABB 机器人使用的是 Local_IO 板卡,请根据 ABB 标准驱动文件中的 eio_local_io.cfg 来修改 EIO.cfg 文件。修改时请一定注意格式,每个 IO 信号的定义之间会有空行, EIO.cfg 文件的最后一行也需要有空行。

关于 IO 设备的名称可以在 EIO.cfg 文件和设备相关的条目下查看。以下代码展示 ABB 机器人上常用的两种 IO 设备, 一种是 DEVICENET_DEVICE: 条目下定义通过 DeviceNet 通信的 DSQC 652 IO 板卡, 一种是 ETHERNETIP_DEVICE 条目下定义的 ABB Local I/O Device。 在设备信息中 “-Name” 后的名字是 IO 信号需要映射到的 “-Device” 的设备名。

DEVICENET_DEVICE:

  -Name "d652" -VendorName "ABB Robotics" -ProductName "24 VDC I/O Device"\
  -Label "DSQC 652 24 VDC I/O Device" -Address 10 -ProductCode 26\
  -DeviceType 7 -ConnectionType "COS" -OutputSize 2 -InputSize 2

ETHERNETIP_DEVICE:

  -Name "Local_IO" -VendorName "ABB Robotics" -ProductName "DSQC1030"\
  -Label "ABB Local I/O Device" -Address "192.168.125.100" -VendorId 75\
  -ProductCode 29 -DeviceType 12 -OutputAssembly 100 -InputAssembly 101\
  -ConfigurationAssembly 102 -InputConnectionType "POINT2POINT"\
  -ConnectionPriority "SCHEDULE" -OutputSize 2 -InputSize 2\
  -ConfigurationSize 8\
  -ConfigurationData00 "01 02 09 10 01 08 10 01 00 00 00 00 00 00 00 00"\
  -O2T_RPI 40000 -T2O_RPI 40000
  1. 替换修改完成后,需要把修改后的备份恢复到控制器中。

  • 使用 RobotStudio 恢复备份

    [1] 按照“导入程序”中“使用 RobotStudio 来备份机器人程序”的前两步将 RobotStudio 和机器人连接

    [2] 连接后点击 控制器(C)-> 备份-> 从备份中恢复,选择修改后的备份文件

    ../../../_images/abb_restore_1.png

    RobotStudio恢复备份

    [3] 点击确定后,机器人将自动重启进行备份恢复。

  • 使用U盘恢复备份

    [1] 将修改的备份程序拷贝到U盘中

    [2] 将U盘插到示教器的U盘口上

    [3] 在示教器上依次点击 MENU -> 备份与恢复 -> 恢复系统 选择U盘中修改后的备份文件路径,点击 确定

    ../../../_images/abb_restore_2.png

    U盘恢复备份

    [4] 点击 恢复 机器人将自动重启进行备份恢复.

配置 IO 信号

如果在导入程序的步骤中对 EIO.cfg 文件中的 IO 信号和 IO 板卡做了映射,那么就不需要在配置 IO 信号。另外如果只是 机械臂主控,进行 标定 操作,也可以不把IO信号映射到物理设备上。 本步骤适合 EIO.cfg 文件只定义了 IO 信号,没有把 IO 信号映射到 IO 板卡上,或者修改已经映射好的 IO 信号。

  • 使用 RobotStudio 配置 IO 信号(建议

    [1] 用网线连接装好 RobotStudio 的电脑和控制柜上的 X2 服务(Service)口 。电脑使用自动取得 IP(DHCP),不要手动设置,X2 口会自动分配 192.168.125.* 的 IP 给电脑。

    [2] 启动 RobotStudio,依次点击 文件-> 在线-> 一键连接

    [3] 点击 控制器(C) 中的 请求写权限,然后在示教器上点击 同意

    ../../../_images/abb_io_setting_robostudio_1.png

    RobotStudio 请求写权限

    [4] 选择 配置 中的 I/O System, 然后单击类型栏里的 Signal,开始配置信号

    ../../../_images/abb_io_setting_robostudio_2.png

    RobotStudio 配置 I/O System

    [5] 开始 IO 信号和硬件之间的映射。

    • IO 信号和数字量输出端口的映射。下面以 IO 信号 “output0” 和 DSQC 652 IO 板卡为例做说明:

      双击 “Name” 一栏中的 “output0” ,弹出 “output0” 的配置界面。

      在 “Assign to Device” 中选择此 IO 信号 使用的 IO 板卡。

      在 “Device Mapping” 中输入具体映射到IO板卡上的端口。

      单击配置界面底部的“确定”完成配置。

      完成后即可将 “output0” 映射到 DSQC 652数字量输出的0号端口上。按照此方法完成 “output0” 到 “output15” 这十六个数字量输出 IO 信号的配置。

    ../../../_images/abb_io_setting_robostudio_3.png

    RobotStudio 添加 “output0” 端口

    • IO 信号和数字量输入端口的映射,下面以 IO 信号 input0 和 DSQC 652 IO 板卡为例做说明:

      双击 “Name” 一栏中的 “input0” ,弹出 “input0” 的配置界面。

      在 “Assign to Device” 中选择此 IO 信号使用的 IO 板卡。

      在 “Device Mapping” 中输入具体映射到 IO 板卡上的端口。

      单击配置界面底部的“确定”完成配置。

      完成后即可将 “input0” 映射到 DSQC 652 数字量输入的0号端口上。按照此方法完成 “input0” 到 “input15” 这十六个数字量输入 IO 信号的配置。

      ../../../_images/abb_io_setting_robostudio_4.png

      RobotStudio 添加 “input0” 端口

    • GroupDO信号配置

      双击 “Name” 一栏中的 “GroupDO” ,弹出 “GroupDO” 的配置界面。

      在 “Assign to Device” 中选择此 GroupDO 信号 使用的 IO 板卡。

      在 “Device Mapping” 中输入具体映射到 IO 板卡上端口的范围。

      单击配置界面底部的“确定”完成配置。

      ../../../_images/abb_io_setting_robostudio_5.png

      RobotStudio 添加 “GroupDO” 端口

    可以完成所有信号的配置后再重启控制器,这样可以节省时间。另外信号配置完成后必须重启控制器才能生效。

  • 使用示教器设定

    [1] 单击示教器左上角的主菜单按钮,进入 控制面板 (首先将机械臂运行模式切换至手动模式,在自动或手动全速模式下无法对信号进行配置操作)。

    ../../../_images/abb_io_setting_pedent_1.png

    示教器主菜单

    [2] 选择“配置”。

    ../../../_images/abb_io_setting_pedent_2.png

    示教器配置

    [3] 双击 “Signal” (或选中 “Signal” ,然后单击示教器右下角的“显示全部”)。

    ../../../_images/abb_io_setting_pedent_3.png

    示教器信号

    [4] 开始 IO 信号和硬件之间的映射。

    • IO 信号和数字量输出端口的映射。下面以 IO 信号 “output0” 和 DSQC 652 IO 板卡为例做说明:

      在 “Signal” 中找到 “output0” 并选中,然后点击 编辑 切换到 “output0” 的配置界面。

      在 “Assign to Device” 中选择此 IO 信号使用的 IO 板卡。

      在 “Device Mapping” 中输入具体映射到 IO 板卡上的端口。

      单击配置界面底部的“确定”完成配置。

    ../../../_images/abb_io_setting_pedent_5.png

    示教器添加 “output0” 端口

    • IO 信号和数字量输入端口的映射,下面以 IO 信号 “input0” 和 DSQC 652 IO 板卡为例做说明:

      在 “Signal” 中找到 “input0” 并选中,然后点击 编辑 切换到 “input0” 的配置界面。

      在 “Assign to Device” 中选择此 IO 信号 使用的 IO 板卡。

      在 “Device Mapping” 中输入具体映射到 IO 板卡上的端口。

      单击配置界面底部的“确定”完成配置。

    ../../../_images/abb_io_setting_pedent_6.png

    示教器添加 “input0” 端口

    • GroupDO信号配置

      在 “Signal” 中找到 “GroupDO” 并选中,然后点击 编辑 切换到 “GroupDO” 的配置界面。

      在 “Assign to Device” 中选择此 GroupDO 信号 使用的 IO 板卡。

      在 “Device Mapping” 中输入具体映射到 IO 板卡上端口的范围。

      单击配置界面底部的“确定”完成配置。

    ../../../_images/abb_io_setting_pedent_7.png

    示教器添加 GroupDO 端口

四轴机械臂需要进行的操作

四轴机械臂运行前,需要注释 RAPID 代码中机械臂 Move 命令前后的: SingArea \WristConfL \OnConfL \Off 代码。

例如:

! ConfL \On;
! SingArea \Wrist;
MoveL target, gMotSpeed, gMotZone, gMotTool \WObj := gMotWobj;
! ConfL \Off;

六轴机械臂完成拆码垛项目需要进行的操作

六轴机械臂(比如ABB 6700)运行拆码垛任务前,可以通过锁定机器人四轴使得机器人通过奇异点. 首先需要修改 RAPID 代码中机械臂 Move 命令前后的: SingArea \Wrist``代码。将 ``SingArea \Wrist``改成 ``SingArea \LockAxis4 .

例如:

ConfL \On;
SingArea \LockAxis4;
MoveL target, gMotSpeed, gMotZone, gMotTool \WObj := gMotWobj;
ConfL \LockAxis4;

同时在max中需要将四轴的软限位设为+/-175, 将工作空间调整到竖直向上,以及开启视觉模块中z轴方向修正.