安装驱动 ============================ 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 .. figure:: img/abb_ip_setting.png :width: 644px :align: center ABB 设定机械臂 IP,其中Interface下拉选项需要和网线实际接线一致 网络设置完成后重启机械臂生效。 导入程序 +++++++++++++++++++++++++++++++++ 1. 导入程序之前需要先备份 ABB 机器人控制器里的程序。可以通过 RobotStudio 备份或者通过U盘来备份 - 使用 RobotStudio 来备份机器人程序 [1] 准备好一台安装了RobotStudio的电脑。 用网线连接装好 RobotStudio 的电脑和ABB控制柜上的 **X2 服务(Service)口** 。电脑使用自动取得 IP(DHCP),不要手动设置,X2 口会自动分配 192.168.125.* 的 IP 给电脑。 [2] 启动 RobotStudio,依次点击 ``文件``-> ``在线``-> ``一键连接``。 .. figure:: img/abb_robotstudio_connection.png :width: 400px :align: center RobotStudio 连接 ABB 机械臂 [3] 点击 ``控制器(C)``-> ``备份``-> ``创建备份``,存到指定位置。 .. figure:: img/abb_backup_1.png :width: 400px :align: center ABB RobotStudio备份程序 - 使用 U盘备份机器人程序 [1] 准备一个文件系统为FAT32格式的U盘(其他格式的文件系统可能不会被ABB控制器识别) [2] 将U盘插到示教器的U盘口上 [3] 在示教器上依次点击 ``MENU`` -> ``备份与恢复`` -> ``备份当前系统`` 选择备份路径到U盘所在的位置后,点击备份 .. figure:: img/abb_backup_2.png :width: 400px :align: center abb 示教器备份程序 2. 使用文件比对工具,比较备份的文件夹和要导入的 ABB 代码文件夹,并对相应部分进行修改和替换。 文件对比工具推荐使用 Meld (下载地址:https://meldmerge.org/) 或者 Beyond Compare (下载地址:https://www.beyondcomparepro.com/download) **为了防止修改备份的过程中误修改其他文件破坏备份,可以将备份文件重新拷贝一份。** **修改备份文件的时候请不要直接拷贝该文档中的配置内容片段,生成文档时这些片段的格式会被改动,直接拷贝文档中的代码到备份文件,会出现备份文件由于格式问题无法被ABB控制器识别的问题** [1] 删除备份文件夹下的 RAPID 目录,并拷贝 ABB 标准文件夹中 RAPID 文件目录到备份文件夹 [2] 修改 backupinfo.txt 中的 TASK 内容为: .. code-block:: >>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 为: .. code-block:: 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 信号定义 .. code-block:: 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 板卡做好映射后样子。 .. code-block:: 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” 的设备名。 .. code-block:: 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 3. 替换修改完成后,需要把修改后的备份恢复到控制器中。 - 使用 RobotStudio 恢复备份 [1] 按照“导入程序”中“使用 RobotStudio 来备份机器人程序”的前两步将 RobotStudio 和机器人连接 [2] 连接后点击 ``控制器(C)``-> ``备份``-> ``从备份中恢复``,选择修改后的备份文件 .. figure:: img/abb_restore_1.png :width: 400px :align: center RobotStudio恢复备份 [3] 点击确定后,机器人将自动重启进行备份恢复。 - 使用U盘恢复备份 [1] 将修改的备份程序拷贝到U盘中 [2] 将U盘插到示教器的U盘口上 [3] 在示教器上依次点击 ``MENU`` -> ``备份与恢复`` -> ``恢复系统`` 选择U盘中修改后的备份文件路径,点击 ``确定`` .. figure:: img/abb_restore_2.png :width: 400px :align: center 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)`` 中的 ``请求写权限``,然后在示教器上点击 ``同意``。 .. figure:: img/abb_io_setting_robostudio_1.png :width: 400px :align: center RobotStudio 请求写权限 [4] 选择 ``配置`` 中的 ``I/O System``, 然后单击类型栏里的 ``Signal``,开始配置信号 .. figure:: img/abb_io_setting_robostudio_2.png :width: 600px :align: center 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 信号的配置。 .. figure:: img/abb_io_setting_robostudio_3.png :width: 400px :align: center 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 信号的配置。 .. figure:: img/abb_io_setting_robostudio_4.png :width: 400px :align: center RobotStudio 添加 “input0” 端口 - GroupDO信号配置 双击 “Name” 一栏中的 “GroupDO” ,弹出 “GroupDO” 的配置界面。 在 “Assign to Device” 中选择此 GroupDO 信号 使用的 IO 板卡。 在 “Device Mapping” 中输入具体映射到 IO 板卡上端口的范围。 单击配置界面底部的“确定”完成配置。 .. figure:: img/abb_io_setting_robostudio_5.png :width: 400px :align: center RobotStudio 添加 “GroupDO” 端口 可以完成所有信号的配置后再重启控制器,这样可以节省时间。另外信号配置完成后必须重启控制器才能生效。 - 使用示教器设定 [1] 单击示教器左上角的主菜单按钮,进入 ``控制面板`` (首先将机械臂运行模式切换至手动模式,在自动或手动全速模式下无法对信号进行配置操作)。 .. figure:: img/abb_io_setting_pedent_1.png :width: 400px :align: center 示教器主菜单 [2] 选择“配置”。 .. figure:: img/abb_io_setting_pedent_2.png :width: 400px :align: center 示教器配置 [3] 双击 “Signal” (或选中 “Signal” ,然后单击示教器右下角的“显示全部”)。 .. figure:: img/abb_io_setting_pedent_3.png :width: 400px :align: center 示教器信号 [4] 开始 IO 信号和硬件之间的映射。 - IO 信号和数字量输出端口的映射。下面以 IO 信号 “output0” 和 DSQC 652 IO 板卡为例做说明: 在 “Signal” 中找到 “output0” 并选中,然后点击 ``编辑`` 切换到 “output0” 的配置界面。 在 “Assign to Device” 中选择此 IO 信号使用的 IO 板卡。 在 “Device Mapping” 中输入具体映射到 IO 板卡上的端口。 单击配置界面底部的“确定”完成配置。 .. figure:: img/abb_io_setting_pedent_5.png :width: 400px :align: center 示教器添加 “output0” 端口 - IO 信号和数字量输入端口的映射,下面以 IO 信号 “input0” 和 DSQC 652 IO 板卡为例做说明: 在 “Signal” 中找到 “input0” 并选中,然后点击 ``编辑`` 切换到 “input0” 的配置界面。 在 “Assign to Device” 中选择此 IO 信号 使用的 IO 板卡。 在 “Device Mapping” 中输入具体映射到 IO 板卡上的端口。 单击配置界面底部的“确定”完成配置。 .. figure:: img/abb_io_setting_pedent_6.png :width: 400px :align: center 示教器添加 “input0” 端口 - GroupDO信号配置 在 “Signal” 中找到 “GroupDO” 并选中,然后点击 ``编辑`` 切换到 “GroupDO” 的配置界面。 在 “Assign to Device” 中选择此 GroupDO 信号 使用的 IO 板卡。 在 “Device Mapping” 中输入具体映射到 IO 板卡上端口的范围。 单击配置界面底部的“确定”完成配置。 .. figure:: img/abb_io_setting_pedent_7.png :width: 400px :align: center 示教器添加 GroupDO 端口 四轴机械臂需要进行的操作 +++++++++++++++++++++++++++++++++++ 四轴机械臂运行前,需要注释 RAPID 代码中机械臂 Move 命令前后的: ``SingArea \Wrist`` , ``ConfL \On``, ``ConfL \Off`` 代码。 例如: .. code-block:: ! ConfL \On; ! SingArea \Wrist; MoveL target, gMotSpeed, gMotZone, gMotTool \WObj := gMotWobj; ! ConfL \Off; 六轴机械臂完成拆码垛项目需要进行的操作 +++++++++++++++++++++++++++++++++++ 六轴机械臂(比如ABB 6700)运行拆码垛任务前,可以通过锁定机器人四轴使得机器人通过奇异点. 首先需要修改 RAPID 代码中机械臂 Move 命令前后的: ``SingArea \Wrist``代码。将 ``SingArea \Wrist``改成 ``SingArea \LockAxis4`` . 例如: .. code-block:: ConfL \On; SingArea \LockAxis4; MoveL target, gMotSpeed, gMotZone, gMotTool \WObj := gMotWobj; ConfL \LockAxis4; 同时在max中需要将四轴的软限位设为+/-175, 将工作空间调整到竖直向上,以及开启视觉模块中z轴方向修正.