1、ABBa-ZH-9ABB 搬运工作站9.1 任 务 目 标 了解 工业 机器 人搬 运工 作站 布局 。 学 会 搬 运 常用 I/O 配置 。 学会 程序 数据 创建 。 学会 目标 点示 教。 学会 程序 调试 。 学会 搬运 程序 编写 。9.2 任 务 描 述本 工 作 站 以 太 阳 能 薄 板 搬 运 为 例 , 利 用 IRB120机 器 人 在 流 水 线 上 拾 取 太 阳 能 薄 板 工 件 , 将 其 搬 运 至 暂 存 盒 中 , 以 便 周 转 至 下 一 工 位 进 行 处 理 。 本 工 作 站 中 已 经 预 设 搬 运 动 作 效 果 , 大 家 需 要 在
2、此 工 作 站 中 依 次 完成 I/O 配 置 、 程 序数 据创 建、 目 标点 示教 、 程 序编 写 及 调试 , 最 终完 成整 个搬 运工 作 站的 搬运 过程 。 通 过本章 的 学 习, 使大 家学 会工 业机 器人 的搬 运应 用, 学会 工业 机器 人搬 运程 序的 编写 技巧 。ABB 机 器 人 在 搬 运 方 面 有 众 多 成 熟 的 解 决 方 案 , 在 3C、 食 品 、 医 药 、 化 工 、 金 属 加 工 、 太 阳 能 等 领 域 均 有广 泛的 应用 , 涉 及物 流输 送 、 周 转、 仓 储等 。采 用机 器人 搬运 可大 幅提 高生 产效 率、
3、 节 省劳 动力 成本 、 提高 定位 精度 并 降 低搬 运过 程 中 的产 品损 坏率 。1. ABB 推 出 的 一 款 迄 今 为 止 最 小 的 多 用 途 工 业 机 器 人 紧 凑 、 敏 捷 、 轻 量 的 六轴 IRB120, 仅 重 25kg,荷重 3kg(垂 直 腕为 4kg) , 工 作 范 围 达 580mm。9.3 知 识 储 备9.3.1RobotStudio 知 识 准 备1.工作 站共 享在 RobotStudio 中, 一 个完 整的 机器 人 工作 站既 包含 前台 所 操作 的工 作站 文 件, 还 包含 一个 后台 运 行的 机 器 人 系 统 文 件
4、 。 当 需 要 共 享 RobotStudio 软 件 所 创 建 的 工 作 站 时 , 可 以 利 用 “文 件 ”菜 单中 的 “共 享 ”功 能 , 使 用 其 中 “打 包 ”功 能 , 可 以 将 所 创 建 的 机 器 人 工 作 站 打 包 成 工 作 包 ( .rspag 格 式) ; 利 用“ 解 包” 功 能, 可 以将 该工 作包 在另 外 的 计算 机上 解 包 使用 。1. 打 包 : 创 建 一 个 包 含 虚 拟 控 制 器 、 库 和 附 加 选 项媒 体库 的工 作站 包。2. 解 包 : 解 包 所 打 包 的 文 件 , 启 动 并 恢 复 虚 拟 控
5、 制器 ,打 开工 作站 。2.加载 RAPID 程序 模块 在 机 器 人 应 用 过 程 中 , 如 果 已 有 一 个 程 序 模 板 , 则 可 以 直 接 将 该 模 板 加 载 至 机 器 人系 统 中 。 例 如 , 已有 1#机 器 人 程 序 , 2#机 器 人 的 应 用 与 1#机 器 人 相 同 , 那 么 可 以 将 1#机 器 人 的 程 序 模 块 直 接 导 入 2#机 器 人 中。 加载 方法 有以下 两种 。(1 ) 软 件加 载在 RobotStudio 中 的 “RAPID”菜 单 中 可 以 加 载 程 序 模 块 。 在 RobotStudio 5.
6、15 之 前 的版 本 中 , 此 功 能在 “离 线” 菜 单的 中 , “在 线 ”菜 单中 也有 该功 能, 前 者针 对的 是 PC 端 仿真 的机 器人 系统 , 后 者针 对的 是 利用网 线连 接的 真实 的机 器 人 系统 。1. 切 换 到 “RAPID”菜 单,展 开 右 侧 RAPID , 右 击 “T_ROB1”, 选 择 “加 载模 块 ”。2. 浏 览 至 需 要 加 载 的 程 序 模 块 文 件 , 单 击 “打 开 ” 按钮 。(2 ) 示 教器 加载在示 教器 中依 次单 击: ABB 菜 单程 序编 辑器 模 块 文 件加 载模 块, 之 后浏 览至 所需
7、 加载 的模 块进 行加 载。1. 在 程 序 编 辑 器 模 块 栏 中 单击 “文件 ”。2. 单击 加载 模块3. 浏 览 至 所 需 加 载 的 程 序 模 块 文 件 , 单 击 “确 定 ” 按钮 。3.加载 系统 参数 在机 器人 应 用 过程 中, 如 果已 有系 统参 数 文 件, 则 可以 直接 将该 参数 文件 加载 至机 器人 系统 中。 例 如,已 有 1#机 器人 I/O 配 置 文 件 , 2#机 器 人 的 应 用与 1#机 器 人 相 同 , 那 么 可 以将 1#机 器 人 的 I/O 配 置文 件 直 接 导 入 2#机 器 人 中 。 系 统 参 数 文
8、 件 存 放 在 备 份 文 件 夹 中的 SYSPAR 文 件 目 录 下 , 其 中 最 常 用 的 是 其 中的 EIO 文 件, 即机 器人 I/O 系统 配置 文 件 。系 统 参数 加载 方法 有以 下两 种:*一 般 地 , 两 台 硬 件 配 置 一 致 的 机 器 人 会 共 享 I/O 设 置 文件 EIO.cfg,其 他 的文 件 可 能会 造 成 系统 故 障 。若错误 加载 参数 后, 可做 一个 “I 启动 ”使机器 人回 到出 厂 初 始状 态。(1 ) 软 件 加载在 RobotStudio 中, “控制 器 ”菜单 的“ 加载 参数 ”功能 可以 用于 加载
9、系统 参数 。1. 在 “控 制 器 ”菜 单 中 单 击 “加 载 参 数 ”2. 勾 选 “ 载 入 参 数 并 覆 盖 重 复 项 ”之后 单击 “打开 ”按钮 。3. 在 “File name”( 即 “文 件 名 称 ”) 中 输 入 “EIO” , 单 击 跳 出 来 的 EIO.cfg, 之后 单击 “Open”按钮 。备 份 文 件 夹 中 的 系 统 参 数 文 件 保 存 在 “SYSPAR” 文 件 夹 下 。 浏 览 至 “SYSPAR”目 录后 , 若 不能 显 示 系 统参 数 文件 , 则 需要 在 “File name”( 即 文 件 名 称 ) 中 输 入 “
10、EIO”, 则 自 动 跳 出 “EIO.cfg”, 单 击 “Open”按 钮 之 后 即 可 打开 。(2 ) 示 教器 加载在示 教器 中依 次单 击: ABB 菜 单控 制面 板配 置文 件 加 载参 数, 加 载方 式一 般也 选取 第三 项, 即“加载 后覆 盖重 复项 ”,之后 浏览 至所 需加 载的 系统 参数 文件 进行 加载 。1. 打开 “文件 ”菜单 。2. 单击 “加载 参数 ”。3. 勾 选“ 加 载参 数并 替换 副本 ”, 之 后单 击 “加载 ”按钮 。4. 浏 览 至 所 需 加 载 的 系 统 参 数 文件 , 选 中 “EIO.cfg”, 单 击 “确
11、定 ”按 钮 , 重 新 启 动 即 可。4.仿真 I/O 信号在 仿 真 过 程 中 , 有 时 需 要 手 动 去 仿 真 一 些 I/O 信 号 , 以 使 当 前 工 作 站 满 足 机 器 人 运 行 条 件 。 在 RobotStudio软 件 的 “仿 真 ”菜 单 中 利 用 “I/O 仿 真 器 ”可对 I/O 信号 进行 仿真 。1. 单 击 “ 仿 真 ” 菜 单 中 的 “I/O 仿 真 器 ”即 可 在 软 件 右 侧 跳 出 “I/O 仿 真器 ”菜单 栏 。2. 在 “ 选 择 系 统 ” 栏 中 选 择 相 应 系 统 , 包含 工作 站信 号 、 机器 人信
12、号以 及智 能组 件信 号 等。3. 单击 需要 仿真 的 信号 , 相应 指示 灯 则会 置为 1, 再 次单 击即 可置 为 0。9.3.2 标 准 I/O 板 配 置ABB 标 准 I/O 板 挂 在 DeviceNet 总 线 上 , 常 用 型 号 有 DSQC651, DSQC652。 在 系 统 中 配 置 标 准 I/O 板 ,至少 需要 设置 以下 四项 参数 :参数 名称 参数 注释Name I/O 单元 名称Type of Unit I/O 单元 类型Connected to Bus I/O 单元 所在 总线DeviceNet Address I/O 单元 所占 用 总
13、线地 址I/O 配 置 详 细 参考 I/O 通信 一章 。9.3.3 数 字 I/O 配 置在 I/O 单 元 上 创 建 一 个 数 字 I/O 信号 ,至少 需要 设置 以下 四项 参数 :参数 名称 参数 注释Name I/O 信号 名称Type of Signal I/O 信号 类型Assigned to Unit I/O 信 号 所在 I/O 单元Unit Mapping I/O 信号 所占 用 单元 地址9.3.4 系 统 I/O 配 置系 统 输 入 : 将 数 字 输 入 信 号 与 机 器 人 系 统 的 控 制 信 号 关 联 起 来 , 就 可 以 通 过 输 入 信
14、号 对 系 统 进 行 控 制(例如 ,电 动机 上电 、程 序启 动等 ) 。 系 统 输 出 : 机 器 人 系 统 的 状 态 信 号 也 可 以 与 数 字 输 出 信 号 关 联 起 来 ,将 系 统 的 状 态 输 出 给 外 围 设 备 作控制 之用( 例如 ,系 统运 行模 式、 程序 执行 错误 等 ) 。9.3.5 常 用 运 动指 令MoveL: 线 性 运动 指 令将 机 器 人 TCP 沿 直 线 运 动 至 给 定 目 标 点 , 适 用 于 对路 径精 度要 求 高 的场 合, 如 切 割、 涂胶 等。例如 :MoveLp20, v1000, z50, tool1
15、WObj:=wobj1;如 图 所 示 , 机 器 人 TCP 从 当 前 位置 p10 处 运 动至p20 处, 运 动轨 迹为 直线 。MoveJ: 关 节 运动 指 令将 机 器 人 TCP 快 速移 动至给 定目 标点 , 运 行轨 迹不 一定 是直 线。例如 :MoveJ p20, v1000, z50, tool1 WObj:=wobj1;如 图 所 示 , 机 器 人 TCP 从 当 前 位 置 p10 处 运 动 至 p20处 , 运 动 轨 迹 不 一 定 为 直 线。MoveC: 圆 弧 运动 指 令将 机 器 人 TCP 沿 圆 弧 运 动 至 给 定 目 标 点 。 圆
16、 弧 运 动 指令 MoveC 在 做 圆 弧 运 动 时 一 般 不 超 过 240, 所 以 一个 完整 的圆通 常 使用 两条 圆弧 指令 来完 成。例如 :MoveC p20, p30, v1000, z50, tool1,WObj:=wobj1;如 图 所 示 , 机 器 人 当 前 位置 p10 作 为 圆 弧的 起点,p20 是圆 弧 上的 一点 , p30 作 为 圆弧 的终点 。MoveAbsj: 绝 对运 动 指 令 将 机器 人各 关节 轴运动 至 给 定位 置。 例如 :PERSjointarget jpos10:=0,0,0,0,0,0,9E+09,9E+09,9E+
17、09,9E+09,9E+09,9E+09;关节 目标 点 数据 中各 关节 轴为 零度 。MoveAbsj jpos10, v1000, z50, tool1WObj:=wobj1;则 机器 人运 行至 各关 节轴 零度 位置 。9.3.6 常 用 I/O 控 制 指 令 Set: 将数 字输 出 信 号 置 为 1 例如 :Set Do1;将数 字 输 出 信号 Do1 置 为 1。注 :Set do1; 等同 于 :SetDO do1, 1;Reset do1; 等同 于:Reset: 将 数 字 输 出 信 号 置 为 0例如 :Reset Do1;将数 字 输 出 信号 Do1 置为
18、0SetDO do1,0;另外 , SetDO 还可 以设 置延 迟时 间:SetDOSDelay:=0.2, do1, 1;则 延迟 0.2s 后将 do1 置为 1。WaitDI: 等 待 一个 输 入 信 号 状态 为 设 定 值例如 :WaitDI Di1,1;等 待 数 字 输 入 信 号 Di1 为 1, 之 后才 执行 下面 的 指令 。WaitDi1,1; 等同 于:WaitUntil di1=1;另 外, WaitUntil 应 用更 为广 泛, 等 待的 是后 面 条 件为 TRUE 才继 续执 行, 如:WaitUntilbRead=False;WaitUntil num
19、1=1;9.3.7 常 用 逻 辑控 制 指 令IF: 满 足 不 同条 件 , 执 行 对应 程 序例如 :IF reg15 THEN Set do1;ENDIF如果 reg15 条 件 满 足 , 则 执行 Set Do1 指令 。FOR:根 据 指 定的 次 数 , 重 复执 行 对 应 程 序例如 :FOR I FROM 1 TO 10 DO Routine1;ENDFOR重 复 执行 10 次 Routine1 里的程 序。FOR 指 令后 面跟 的是 循环 计数 值, 其 不用 再程 序数 据 中 定 义 , 每 次 运 行 一 遍 FOR 循 环中 的指 令后 会自 动执 行 加
20、 1 操作 。WHILE: 如 果 条件 满 足 , 则 重复 执 行 对 应 程序例如 :WHILE reg1ComparePos.trans.x-25 ANDActualPos.trans.xComparePos.trans.y-25 ANDActualPos.trans.yComparePos.trans.z-25 ANDActualPos.trans.zComparePos.rot.q1-0.1 AND ActualPos.rot.q1ComparePos.rot.q2-0.1 AND ActualPos.rot.q2ComparePos.rot.q3-0.1 AND ActualPo
21、s.rot.q3ComparePos.rot.q4-0.1 AND ActualPos.rot.q44 THEN!判断 计数 nCount是否 大于 4, 此 处演 示的 状况 是放 置 4个产 品, 即表 示已 满载 ,需 要更 换暂 存盒 以及 其他 的 复位 操作 ,如 计数 nCount、满 载信 号等nCount:=1;!计数 复位 ,将 nCount赋值 为 1Set do34_BufferFull;!输出 暂存 盒满 载信 号, 以提 示操 作员 或周 边设 备更 换暂 存装 置MoveJ pHome,v100,fine,tGripper;!机器 人移 至 Home点 , 此处
22、可根 据实 际情 况来 设置 机器 人的 动作 , 例如 若是 多工 位放 置, 那么 机器 人可 继续 去其 他的 放置 工位 进行 产品 的放 置任 务WaitDI di00_BufferReady,0;!等待 暂存 装置 到位 信号 变为 0,即 满载 的暂 存装 置已 被取 走Reset do34_BufferFull;!满载 的暂 存装 置被 取走 后, 则复 位暂 存装 置满 载信 号ENDIF ENDIF ENDPROCPROCrCalculatePos()!计算 位置 子程 序 , 检测 当前 计数 nCount的数 值, 以 pPlaceBase为基 准点 , 利用 Offs
23、指令 在坐 标系 WobjBuffer中沿 着X、 Y、Z 方向 偏移 相应 的数 值TESTnCount CASE 1: pPlace:=offs(pPlaceBase,0,0,0);!若 nCount为1 , pPlaceBase点就 是第 一个 放置 位置 ,所 以X 、 Y、 Z偏移 值均 为 0,也 可以 直接 写成 :pPlace:=pPlaceBase; CASE 2: pPlace:=offs(pPlaceBase,nXoffset,0,0);!若 nCount为2 ,位 置 2相对 于 放 置基 准点 pPlaceBase点在 X正方 向偏 移了 一个 产品 间隔CASE 3
24、:pPlace:=offs(pPlaceBase,0,nYoffset,0);!若 nCount为3 ,位 置 3相对 于 放 置基 准点 pPlaceBase点在 Y正方 向偏 移了 一个 产品 间隔CASE 4:pPlace:=offs(pPlaceBase,nXoffset,nXoffset,0);!若 nCount为4 ,位 置 4相对 于 放 置基 准点 pPlaceBase点在 X、Y正方 向各 偏移 了一 个产 品间 隔DEFAULT: TPERASE;TPWRITE“The CountNumber is error,please check it!“; STOP;!若 nCou
25、nt数值 不为 Case中所 列的 数值 ,则 视为 计数 出错 ,写 屏提 示错 误信 息, 并利 用S top指令 停止 程序 循环 ENDTEST ENDPROCPROCrCheckHomePos()!内容 参考 实训 准备 章节ENDPROCFUNCboolCurrentPos(robtargetComparePos,INOUTtooldata TCP)!内容 参考 实训 准备 章节ENDFUNC辅助 程序 :PROCrMoveAbsj() MoveAbsJjposHomeNoEOffs,v100,fine,tGripperWObj:=wobj0;!利用 MoveAbsj移至 机器 人各 关节 轴零 位 置ENDPROCPROCrModPos()!示教 目标 点程 序MoveL pPick,v10,fine,tGripperWObj:=WobjCNV;