适用:爱普生六轴 / 重载 SCARA,真空吸盘抓取 50kg 水泥软袋;水泥袋特点:袋体变形、袋口鼓起,路径点必须预留安全间隙,放料需要搜索运动,不能硬压。 爱普生有两种方式:①
Pallet矩阵指令自动生成垛位点;②手写偏移循环;Pallet 只生成 XY 矩阵,Z 高度、奇偶层旋转、搜索放料需要自己写程序实现。
前置:必须先标定Tool 工具坐标系 TCP,吸盘吸附面中心为 TCP,Z 轴垂直向下;填写抓手负载
SetLoad,否则点位漂移。
一、一共需要示教的 7 个基础固定点位
表格
| 点位名称 | 点位标签 | 示教说明(水泥袋工艺) |
|---|---|---|
| 原点安全点 | PHome | 机器人整机安全待机位,远离托盘、输送线,无干涉 |
| 取料上方接近点 | PPickAppro | 输送线袋子上方180‑220mm,避开鼓起袋口;直线下降起点 |
| 取料基准点 | PPick | 吸盘贴到水泥袋表面,TCP 在袋面中心;不要压瘪袋子 |
| 取料抬升点 | PPickUp | 抓取后抬离袋面 150‑200mm |
| 放料上方安全点 | PPlaceAppro | 托盘垛面上方 200mm,所有放料点统一过渡,防止刮蹭袋口 |
| 托盘第一层第 1 袋基准放料点 | Pbase | 托盘第一层第一个袋子,吸盘落在袋面理论位置;Pallet 矩阵以此点为原点 |
| 放料回退点 | PPlaceRet | 放料完成抬升 150‑200mm |
⚠重要:示教所有点位必须带上整套吸盘抓手,不能拆掉吸盘示教;水泥粉尘大,吸盘橡胶磨损后 TCP 漂移,点位需要重新校验。
二、Pallet 托盘矩阵点位定义(SPEL+)
Pallet用 3 点定义托盘矩阵,只生成 XY 平面矩阵,不会自动处理 Z 层高、奇偶层旋转。
'Pallet 托盘号,P0起点,X向终点,Y向终点,X数量,Y数量
Pallet 0,Pbase,Px_end,Py_end,3,2
示例垛型:每层 6 袋,3 列 ×2 行。
Pbase:第一层第一袋(矩阵原点)Px_end:X 方向最后一袋位置(同一层)Py_end:Y 方向最后一袋位置(同一层)
示教 Px_end、Py_end 时,姿态 U 轴和 Pbase 保持一致;矩阵内部袋子中心间距大于袋实物长宽,预留 5‑10mm 间隙,防止袋子互相挤压。
从矩阵读取点位:
PalGet(0,i,j)获取第 i 列 j 行的 XY 矩阵点位。
三、Z 高度处理(水泥软袋重点)
水泥袋受压变薄,不要直接用固定袋厚做 Z。
定义变量:
Dim ceng As Integer '当前层数
Dim bag_thick As Real '袋子标称厚度140mm
Dim z_comp As Real '每层压实补偿,0~‑3mm
每层 Z 叠加:
p_work = PalGet(0,i,j)
p_work.Z = Pbase.Z + (ceng‑1)*(bag_thick + z_comp)
每往上一层,z_comp 可以微量负补偿,抵消袋子被压实变薄,避免上层压包。
四、奇偶层 90° 旋转设置(防止垛倒塌)
Pallet 指令本身不支持姿态旋转,需要程序修改 U 角度:
If Mod(ceng,2)=0 Then
p_work.U = p_work.U + 90.0 '偶数层旋转90°
EndIf
五、软袋防压包:搜索下降点位逻辑(爱普生Search指令)
水泥袋厚薄不一致,不能直接运动到计算出来的 Z 点位,要用搜索运动向下探测袋面。
示教搜索起点:在
p_work上方 120mm,作为搜索起始点。Search 向下搜索,碰到接触 DI 信号立刻停止,再微量下压 3‑5mm 再释放袋子。
MoveL PPlaceAppro,V=300
Search Z,DI(4),p_search_result,p_serch_start,p_work,V=80 'Z轴向下搜索,速度严格≤80mm/s
MoveL Offs(p_search_result,0,0,-5),V=60 '轻微下压5mm
'此处执行破真空IO逻辑
Wait 0.5
MoveL PPlaceRet,V=300
如果没有接触传感器,只能现场反复修正 Z 补偿,风险是压破水泥袋。
六、各段运动速度与点位 Zone 设置
表格
| 运动段 | 运动指令 | 速度 | Zone | 说明 |
|---|---|---|---|---|
| 长距离转运(带料) | MoveJ | V600‑800 | Z50 | 带水泥袋,不能太快 |
| 空载返回 | MoveJ | V800‑1000 | Z100 | 空载可提速 |
| 取料接近 | MoveL | V300 | Z10 | 接近袋子降速 |
| 取料下降 / 搜索 | Search/MoveL | V60‑100 | Fine | 必须到位,禁止圆滑过渡 |
| 放料搜索下降 | Search | V50‑80 | ‑ | 搜索运动必须低速 |
| 放料到位下压 | MoveL | V60 | Fine | 软袋严禁 Zone 圆滑 |
关键点抓取、放料、Search 运动必须
Fine;如果使用 Zone,机器人未完全停稳就开关真空,袋子会被吸盘带走。
七、点位示教实操步骤(RC + 软件)
工具坐标系 Tool 标定完成,设置
SetLoad抓手负载。打开 Point File,JOG 手操机器人,依次示教 PHome、PPickAppro、PPick、PPickUp、PPlaceAppro、Pbase、PPlaceRet;JOG&Teach 保存点位。
示教 Pallet 矩阵另外两点 Px_end、Py_end,完成
Pallet 0矩阵定义。手动单步运行,先空载验证全部路径,确认无干涉。
带料调试:先低速,重点验证 Search 搜索放料效果,微调 Z 补偿。
八、现场高频坑点(水泥码垛)
Pallet 矩阵只算 XY,Z、旋转姿态不会自动处理,很多调试人员直接用 PalGet 点位直接运动,出现越码越高压包、不旋转倒垛。 必须程序改写 Z、U 轴姿态。
示教 Pbase 基准点位时,吸盘压得过深;第一层就压破袋子。 示教时吸盘轻轻贴住袋面即可,不要下压。
放料点使用 Zone 过渡,没有 Fine。 抓取、放料、Search 全部强制 Fine。
没有 Search 搜索,只用固定 Z 高度。水泥袋受压变薄,上层袋子大量压破。 优先增加接触传感器,启用 Search 搜索。
吸盘支架松动,TCP 偏移,所有点位全部偏移。 每次紧固螺栓后重新标定 Tool,复核点位。
简短 SPEL + 程序片段参考
Function Main
SetLoad 1 '抓手负载
ceng=1
While ceng<=8
For i=1 To 3
For j=1 To 2
'====抓取流程====
MoveJ PHome,VJ=50
MoveL PPickAppro,V=300,Z10
MoveL PPick,V=100,Fine
Set DO(1),On '开真空
Wait 0.4
Wait DI(2)=On '真空确认
MoveL PPickUp,V=300,Fine
'====计算放料点位====
p_work=PalGet(0,i,j)
p_work.Z=Pbase.Z+(ceng‑1)*(140‑2)
If Mod(ceng,2)=0 Then
p_work.U=p_work.U+90
EndIf
MoveL PPlaceAppro,V=300,Z10
Search Z,DI(4),p_search_result,Offs(p_work,0,0,120),p_work,V=70
MoveL Offs(p_search_result,0,0,-5),V=60,Fine
Set DO(2),On '破真空吹气
Wait 0.5
Set DO(1),Off
Set DO(2),Off
MoveL PPlaceRet,V=300,Fine
Next j
Next i
ceng=ceng+1
EndWhile
MoveJ PHome
FEnd

