
简介面向工业机器人调试人员与自动化产线工程师的FANUC码垛堆积示教编程文档作为系列第二讲系统讲解码垛堆积功能的实际操作流程。压缩包为单个docx文件大小1.34MB包含完整图文说明已有984人学习下载。文档从码垛堆积指令B、BX、E、EX的选用切入详细展示初期资料输入、堆上/堆下种类选择、码垛寄存器设置、行/列/层排列方法、直线示教、自由示教、间隔指定等排列方式以及固定/分割姿势、辅助点有无等关键参数配置并结合示教画面逐步说明点位示教、层式样数等操作。还特别提醒中途中断初期资料会使已设值无效、按下F5前进后码垛寄存器自动初始化等易错细节可为现场编程和离线预演提供直接参考。整体结构清晰适合按步骤对照学习。1. 码垛堆积示教是定义规则不是记录点位FANUC机器人的码垛堆积功能在习惯用普通示教点位写程序的工程师眼里第一感觉往往是“点位怎么这么少”。一个十层托盘、每层六件产品的码垛任务示教时只记录少数几个代表点运行时不依赖任何外部传感器机器人就能把六十个堆上点按顺序走完。这个反直觉的结果来自码垛堆积的底层逻辑示教器上录入的不是点位坐标本身而是堆叠规则。规则包含行数、列数、层数、排列顺序、姿势控制方式和寄存器运算方式。执行码垛堆积动作时控制系统根据规则实时计算目标点码垛寄存器负责记录当前堆到第几层。下面分六个部分拆解示教流程重点落在参数含义和边界条件上。2. 码垛堆积指令B/BX/E/EX的选择与画面入口在FANUC机器人控制系统中码垛堆积不是单条指令而是由三条指令组成的指令组码垛堆积指令、码垛堆积动作指令、码垛堆积结束指令。示教时只要选择一条码垛堆积指令系统就会自动插入另外两条。这个自动插入机制经常被忽略导致新人在程序里看到多出来的指令时不敢动手处理其实它们是码垛堆积的固定结构少一条程序都无法正常循环。2.1 四种指令的功能约束码垛堆积指令分为B、BX、E、EX四类其中EX支持全部码垛堆积功能B、BX、E在不同维度上受到限制。选型时不能只按名字长度判断要根据现场是否需要堆下、分割姿势、辅助点来决定。功能项BBXEEX堆上/堆下仅堆上仅堆上堆上堆下堆上堆下姿势控制固定固定固定分割固定分割辅助点无无有有层式样数固定为1固定为1最多16最多16功能完整度基础基础中等完整如果应用只需要单规则箱体码垛使用B指令即可示教画面更简洁误操作空间也更小。需要堆下卸垛、辅助梯形堆叠或分层式样循环时直接用EX避免后续改程序时才发现功能受限。BX通常用于系统中已存在同类指令的旧程序维护新项目不建议选它。提示不同系统版本显示的指令名称可能略有差异。若在码垛子菜单中看不到PALLETIZING-EX先确认控制系统已安装码垛堆积功能包。2.2 从程序编辑画面调出码垛堆积示教的按键路径示教器处于有效状态且停留在程序编辑画面时按NEXT键翻页按下F1【指令】显示辅助菜单选择“7 码垛”再选“4 PALLETIZING-EX”系统随即进入码垛堆积编辑画面。# FANUC示教器按键序列R-30iB系列 NEXT # 翻出第二排功能键 F1 [指令] # 调出指令辅助菜单 7 码垛 # 选择码垛堆积功能组 4 PALLETIZING-EX # 选择EX指令进入示教画面NEXT键的作用是把当前功能键菜单翻到下一页因为第一排功能键默认显示的是常用指令。F1【指令】弹出的是程序编辑画面的指令辅助列表。“7 码垛”和“4 PALLETIZING-EX”是两级菜单前者定位功能组后者定位具体指令版本。选择EX后画面不会直接展示程序插入结果而是先进入码垛堆积初期资料输入画面。如果此时反悔退出码垛堆积指令不会插入程序刚才的选择操作只是打开了编辑入口。2.3 自动插入的三条指令的结构和职责完成示教后回到程序编辑画面可以看到三条新指令。码垛堆积指令负责指定寄存器运算规则码垛堆积动作指令负责实际搬运动作码垛堆积结束指令负责在完成一个堆上点后更新寄存器。三条指令的插入位置由系统自动安排用户不需要手动维护但理解它们如何协作对排查层数错乱问题很有帮助。# 码垛堆积示教完成后程序段示意具体显示文本与系统版本相关 : 码垛堆积_1 ; : L P[1] 500mm/sec FINE ; : L P[2] 500mm/sec FINE ; : 码垛堆积动作_1 ; : 码垛堆积结束_1 ;这个程序段示意是从真实示教结果里总结出来的通用结构。先执行码垛堆积指令完成参数初始化再走两条运动指令把机器人送到堆上点然后触发码垛堆积动作指令执行抓放最后用码垛堆积结束指令更新寄存器并判断是否切换层式样。如果寄存器没有按预期变化优先检查码垛堆积结束指令的参数而不是动作指令。画面顶部显示的“码垛堆积_4”编号表示这是程序中的第4个码垛堆积指令。当程序里有多条码垛堆积调用时这个编号用于区分不同指令实例不要在后续写程序时手动修改它系统会按插入顺序自动维护。3. 初期资料输入种类、增加数、码垛寄存器与顺序联动初期资料是码垛堆积示教的第一屏数据它决定的是“怎么堆”的宏观策略。很多调试人员习惯快速填完这一屏不关心每个参数背后的运算关系直到运行中发现某几层位置不对才回头一项项核对效率很低。下面把这一屏的每个参数单独拆开。3.1 码垛堆积种类堆上与堆下的语义差异码垛堆积种类只有堆上、堆下两个选项。堆上是标准状态适用于成品入库码垛机器人从低层开始逐层往上叠。堆下适用于从高位料架往下取料的场景比如出库端机器人逐层把箱子取下来放到输送线上。选择堆下时码垛寄存器的运算方向与堆上相反初始值通常按最高层数计算每完成一个周期做减法。很多首次使用堆下的人会忽略一个细节接近点和逃点的方向同样会翻转。如果上一步示教的接近点位于料箱正上方堆下动作时机器人仍会沿用这个方向一旦最上层料箱高度变化就存在碰撞风险。因此从堆上改成堆下前应重新推演一遍接近点的位姿是否仍然成立。3.2 增加数与码垛寄存器运算对象和冲突边界增加数指定每隔几个堆上或堆下周期对码垛寄存器执行一次加法或减法运算标准值为1。设置成2以上的值常见于两件产品共享一个码垛位置的场景。此时码垛堆积动作指令每周期仍然执行抓放但码垛堆积结束指令只在累加次数达到增加数时才更新寄存器。码垛寄存器号码的选择是本环节最大的风险点。不同码垛堆积指令如果使用同一个寄存器号码会互相覆盖当前层数。更隐蔽的情况是一条码垛堆积在运行中修改了寄存器同号另一条码垛堆积在后续周期读到错误初始值。程序里存在多条码垛堆积指令时应在程序头部用注释记录寄存器分配表# 码垛寄存器分配表示例 # 一号码垛机 A线R[10] R[11] 备用 # 一号码垛机 B线R[12] # 二号码垛机 A线R[20] # 二号码垛机 B线R[21] # 原则每条码垛堆积指令独占一个寄存器程序编辑器里的注释只是辅助手段真正稳妥的是在寄存器数据画面把每一行寄存器的注释字段填入物料编号。这样查看报警历史和数据画面时寄存器的作用一目了然避免下次维护时重新猜参数。注意码垛寄存器应避免同时被多个码垛堆积指令使用。新编程序或修改旧程序前先做一次寄存器交叉引用检索。3.3 顺序设定行列层联动机制顺序参数有行列层、列行层等多个选项表示堆上点的遍历优先级。每选择第二个条目第三个条目自动确定因为三个轴向上的排列关系只有固定的几种组合确定两个后剩余一个的遍历顺序已经唯一。实际选型主要看托盘支撑面和机器人走位半径。行列层顺序适合托盘横向宽度大、纵向深度小的摆法列行层顺序适合宽深比接近1的托盘走位轨迹更紧凑。顺序设定完成后第3个条目自动变为灰色不可编辑状态。如果发现顺序和预期不符只能回头重新选择前两个条目不能单独修改第3个。3.4 注释输入与F1中断的两个副作用注释输入需要把光标移到注释栏按ENTER进入字符界面使用上下箭头切换大小写、标点和其他符号。注释内容建议控制在20个字符以内过长会导致程序列表显示折行影响后续阅读。初期资料设定中按F1【中断】会退出当前编辑状态已经输入的全部初期资料失效。中断针对的是整个初期资料区块不只是当前光标所在字段。更需要注意的副作用是中断后如果直接按F5前进系统不会提示“资料不完整”而是以未定义值进入下一步极易在后缘层式样计算里报错。中断后重新进入应逐项核对再继续。3.5 F5前进时码垛寄存器自动初始化输入完所有数据后按F5【前进】系统进入堆上式样示教画面同时码垛寄存器被自动初始化为初始状态。这意味着如果在初期资料修改了寄存器号码或增加数旧的寄存器数据不会残留后续计算结果以本次初始化为准。利用这个行为可以在调试时通过修改增加数再触发F5的方式快速重置寄存器的当前值而不需要单独编写清零语句。4. 接近点、逃点与经路式样码垛动作的轨迹边界码垛堆积示教的推进顺序是先在初期资料里登记接近点数和逃点数再到堆上式样示教里指定具体位置。接近点是机器人从线路点行进到堆上点之前的过渡点逃点是离开堆上点后的过渡点。两者都作为码垛堆积动作指令的组成参数被自动写入程序。4.1 接近点数与逃点数的常见配置默认情况下接近点数为1、逃点数为1。大多数箱体码垛场景下一个接近点和一个逃点足够保证路径稳定。接近点的位置通常设定在堆上点正上方Z方向抬高150mm到300mm处具体数值以夹具完全离开箱体顶面再加安全裕量为准。当夹具结构不规则或箱体间隙小直线逼近会与邻层产品产生干涉时应将接近点数增加到2。系统会按顺序依次执行两个接近点的运动指令把直线路径拆成两段第一段快速近场第二段低速对位。逃点同理从堆上点退出时先低速垂直抬升到逃点再以高速直线返回线路点。# 接近点/逃点数与运行速度的配合参考 # 接近点1速度500mm/s用于大范围接近堆叠区域 # 接近点2速度250mm/s用于低速对准堆上点 # 堆上点速度50mm/s FINE精确到位 # 逃点速度500mm/s抬升后快速离开实际写入程序时这些速度参数在运动指令里单独修改。接近点数量的变化只影响点位数量不改变动作指令结构调试时不需要担心多出来的点位破坏堆叠逻辑。4.2 经路式样数的作用与边界经路式样数表示机器人从线路点到达接近点的路径方式类别。经路式样数增加机器人可选的路径规划策略也随之增加系统会在运行时根据当前工具姿态和障碍物范围自动选择最优逼近方式。该参数只影响轨迹不产生额外的示教点位。在窄小空间的码垛任务中把经路式样数设置为2通常能明显减少运动干预。继续增大到3以上系统规划时间会增加在节拍要求高的产线上可能引起周期性停顿。实际项目中应先保持默认值运行一遍观察轨迹是否有明显的无效走行再按需增加。4.3 线路点的示教顺序线路点虽然不是堆上点但它的位置直接影响接近点和逃点的空间可达性。示教线路点时应站在产品流动方向的角度观察进入码垛区之前线路点必须保证夹具能够避开托盘边沿离开时同样要留出摆动空间。线路点示教完成后程序段中会形成“线路点→接近点→堆上点→逃点→线路点”的闭环结构运行时机不顺畅时优先检查这个闭环的首尾段。4.4 两点接近时前接近点的位置选择当接近点数为2时第一个接近点作为大范围移动的安全避让点第二个作为精确定位的减速点。常见做法是把第一个接近点设置在距堆上点300到500毫米的位置方向与来料方向一致第二个接近点设置在约100毫米处方向沿堆上点法线。第一个接近点距离过小会让机器人频繁变速影响节拍和减速机寿命距离过大则失去避让意义。5. 堆上式样示教代表点、排列方法、姿势控制与层式样循环初期资料按F5前进后进入码垛堆积堆上式样示教画面。这一部分是整个码垛堆积示教中点位工作量最大的环节。画面会按初期资料中登记的信息显示所有需要示教的位置一览。操作者按顺序把机器人移动到每个代表点并记录完成后由控制系统计算全部堆上点。5.1 无辅助点的四顶点示教没有辅助点时需要对第1层四角形的4个顶点依次示教。系统以这四个点建立平面基准根据初期资料中设定的行、列、层数在平面内插值生成所有堆上点并按顺序整理出执行序列。四个顶点的示教顺序应保持同一方向推进比如沿托盘外圈顺时针否则生成的堆上点排列方向可能与预期相反。常见错误是四个顶点高度不一致。虽然系统允许Z方向存在偏差但会以第1个点为参考做倾斜补偿导致后续堆上点带上无法预料的倾斜量。示教前先把工具末端调到同一高度再依次记录。5.2 辅助点与梯形形状的补偿逻辑当第1层形状不是标准矩形时需要通过辅助点来修正。辅助点作为四角形之外的第五个顶点用于描述梯形或平行四边形中不完整的那条边。选择有辅助点后画面会追加一个辅助点示教步骤并询问姿势控制方式固定或分割。辅助点只在E和EX指令中可用。使用辅助点之后系统不再把所有堆上点都按矩形网格计算而是依据梯形几何关系重新推算。对于梯形堆叠辅助点应尽可能靠近倾斜边的中点位置放偏会导致整层点位分布不均看起来会呈现一边松一边紧的效果。5.3 直线示教、自由示教与间隔指定的选择排列方法分为直线示教、自由示教和间隔指定。直线示教只需示教边缘的2个代表点其余点按方向均匀推算是最常用的方式。自由示教要求对行、列和层方向的所有点逐一示教点位多、效率低但适合完全不规则的布局。间隔指定通过指定行方向和列方向的直线以及直线之间的间距来完成排布适合箱体间隔固定、需要留取叉车孔的堆叠场景。排列方法代表点数量自动推算能力适用场景直线示教每方向2点全自动计算规则箱体、矩形托盘自由示教全部点无异形布局、非均匀堆叠间隔指定每方向2点间隔值按间隔计算固定间距、预留叉孔直线示教虽然效率高但前提是托盘自身平整且箱体外形误差小。自由示教在点数超过12个时建议分两次完成中间回HOME点确认当前坐标再继续避免长时间示教后出现累积误差。间隔指定的间隔值单位是毫米加减量要精确到毫米级否则最后一列会超出托盘边界。5.4 姿势控制固定与分割的执行差异固定姿势表示所有堆上点统一使用当前示教的姿态不做插值。分割姿势表示系统在直线示教的两个边界点之间对姿态进行线性分割使中间点的工具方向逐渐过渡。分割姿势适合箱体表面带有斜面的场景例如桶装物料堆码时桶盖存在倾角每个堆上点需要略微调整轴向。自由示教时使用分割姿势系统的插值依据是各点独立示教的姿态过渡结果可能不平滑所以自由示教下优先选固定姿势。固定的代价是夹具在部分堆上点可能与产品表面不完全贴合需要在示教时验证最后一层位置是否依旧可靠。5.5 层式样数16层上限与自动循环层式样数直接决定隔几层切换一种排列方式。假设层式样数为2那么第1层用式样1第2层用式样2第3层又回到式样1循环往复。第1层必定从式样1开始。每层的层方向位置通过式样1的示教点位推算不要求对每个式样单独示教层方向位置。层式样数最多可设定16但不能超过实际全层数。如果全层数原为10层式样数设为8再把全层数改成6层式样数会自动收缩为6。这个设定在修改时没有额外提示收缩后原来的第7、8层式样数据被丢弃无法恢复。# 层式样循环逻辑示意用于理解FANUC内部计算 def pattern_for_layer(layer, pattern_count, total_layers): if pattern_count total_layers: pattern_count total_layers return (layer - 1) % pattern_count 1 for layer in range(1, 11): print(f第{layer}层 - 层式样{pattern_for_layer(layer, 3, 10)})这段示例模拟了层式样数为3、总层数为10时的分配结果第4层回到式样1第7层再次回到式样1。真实系统不需要用户写这类循环但理解这个取模逻辑才能在排错时快速判断某层点位是否符合预期。注意变更全层数使其小于当前层式样数时层式样数会自动收缩为全层数超出部分的层式样数据不可恢复。6. 码垛寄存器冲突与层式样收缩三条验证路径最后回到实操层面示教完成不代表程序可靠。项目交付前按下面三条路径逐项验证能覆盖码垛堆积最常见的隐蔽故障。6.1 寄存器号冲突排查示教完成后打开寄存器数据画面观察码垛堆积运行过程中寄存器当前值是否持续递增或递减。若某个寄存器值跳变明显或出现负数大概率是与其他码垛堆积指令共用了寄存器号。处理方式是在程序编辑画面检索所有码垛堆积指令将每条指令对应的寄存器号记录后重新编号。这个检查在生产线改动码垛参数后尤其重要因为新旧程序混跑时寄存器号最容易重叠。6.2 断点恢复与中断保护现场调试中F1【中断】按键误触碰是数据丢失的高发原因。一个实用做法是把示教器挂绳调到紧贴身前的位置手指离开功能键区域前先看一眼画面左上角是否处于编辑态。如果确实中断了先拍照存档当前画面重新进入初期资料后按照片逐项恢复。对堆上式样示教中的点位单独记录每个点位的六轴坐标值放在设备看板旁边方便故障后快速恢复。6.3 层式样变更后的空跑验证再常见不过的坑把全层数从8改成5层式样数没改系统自动收缩后运行到第6层时点位异常。空跑验证时让程序连续运行三个完整循环。第一个循环观察第1层到第N层的点位序列第二个循环重点观察第N1层跳转回层式样1的动作轨迹第三个循环保持空抓状态检查速度曲线是否存在突变。# 空跑验证时的临时调试程序段 : 1: JMP LBL[10] # 跳过生产逻辑 : 2: LBL[20] # 验证循环开始 : 3: 码垛堆积动作 1 ; : 4: WAIT R[95]1 ; # 每层暂停等待检查 : 5: JMP LBL[20] ;这段程序在正式生产前使用验证结束后删除。WAIT指令模拟每层停机检查确认当前层号和堆上点坐标无误后手动继续能够把层式样循环中的错位及时发现。验证通过后删除临时调试程序段把码垛堆积参数表存档到设备档案。下次维护时按参数表依次复核寄存器号、层式样数和点位坐标比重新示教整个码垛流程快得多。本文还有配套的精品资源点击获取