简介这是面向FANUC机器人调试与运维人员的PNS自动运行设置指导手册专门解决多任务生产线中程序号选择与自动调用的配置难题。手册以步骤化方式完整梳理PNS功能原理、系统登录、机器人程序创建、3100等PNS参数设定、外部信号触发启动等核心环节强调每个程序号须对应有效且完整的作业程序并避免空号或重复号。结合多品种小批量生产、流水线作业、物料搬运等典型场景说明如何通过预设程序号实现产品切换与动作衔接从而减少人工干预、提升产线灵活性。资源为单个docx文档整体约1.61MB除操作流程外还补充了安全区域确认、系统状态监控、错误代码定位、故障排查步骤及人员培训维护建议便于现场按章查阅。目前已有977人学习下载适合电气工程师、自动化项目人员及机器人维护工程师作为PNS配置与排错的实操参考。 做机器人集成这几年最常被现场问到的问题不是“怎么让机器人动起来”而是“怎么让机器人自己动起来”。FANUC机器人自动运行的核心环节之一就是PNSProgram Number Select程序号选择模式——PLC把要运行的程序号发给机器人机器人自动执行对应的程序。这个功能在R-30iB、R-30iB Mate控制器上非常常见网上资料不少但大多只讲参数开关不讲完整配置思路和现场坑。我这次把一套可落地的PNS设置流程整理出来包括硬件接线、信号映射、系统参数、程序调度和安全时序适合正在做自动化集成的电气工程师、调试工程师参考也适合想远程启动PNS的新手按图索骥。1. 先搞清楚PNS是什么别一上来就开配置页PNS的全称是Program Number Select翻译过来就是“程序号选择”。在FANUC的自动运行生态里它不是单纯指某一个按钮或信号而是一整套联动机制外部控制器一般是PLC通过现场总线或硬接线把目标程序号送到机器人控制器机器人控制器确认号码有效后把对应的程序设为“待执行状态”然后再接收启动信号程序开始运行。整个过程可以理解为PLC是“调度员”机器人是“执行员”PNS是两者之间的“任务单传递协议”。1.1 PNS和RSR两种远程启动方式的差异很多人会把PNS和RSR搞混。RSRRobot Service Request远程启动请求解决的是“远程启动/停止某一个固定程序”的问题而PNS解决的是“远程选择并启动任意一个程序”的问题。从名字也能看出来RSR的核心在“Request”PNS的核心在“Number Select”。我自己的选型经验是如果产线只需要远程启停同一个程序用RSR更省事如果一条线要切换多种工件、多种节拍流程那PNS才是对的。比如一个焊接工作站要兼容三款产品每个产品有不同的焊接路径和参数那PLC就必须根据不同产品型号下发对应程序号这种情况PNS几乎是标准答案。选错模式后续改起来很麻烦PNS的配置量比RSR大不少但灵活性和扩展性也好得多。1.2 PNS在自动化产线中的典型位置一条典型的PNS自动化产线里机器人不是“孤岛”而是整个控制环路上的一个执行节点。上层PLC负责总调度比如读取传感器、识别产品型号、判断工位状态当PLC决定“该让机器人干活了”就会把程序号通过总线发给机器人同时给一个启动信号机器人执行完程序后通过UO信号回传“完成”状态PLC收到后再放行下一工位。这套环节看似简单但里面有个关键点PNS通信节点在机器人控制柜内部它对接的不是某个用户程序而是FANUC控制器底层的程序选择机制。如果你不了解这条链路现场碰到“信号通了但机器人不干活”就会一头雾水。2. 开工前先盘硬件通信模块、信号规划与接线2.1 确认控制器型号和通信协议PNS配置的第一步不是碰示教器而是先把硬件盘清楚。FANUC目前在产线上常见的控制器有R-30iB、R-30iB Mate老一点的R-J3、R-J31iB也能支持PNS但菜单和参数叫法略有差异。本文以R-30iB/Mate为例新老机型在思路上完全一致。通信协议的选择则取决于你这条线用的什么PLC。FANUC支持DeviceNet、Profibus-DP、EtherNet/IP、CC-Link等主流现场总线控制柜里需要安装对应的通信从站模块。如果现场没有总线系统也可以直接用控制器的DI/DO硬接线但程序号位数一多布线量和点位开销会直线上升。我建议能用总线就用总线后面扩容、排查都方便。注意选通信模块时不要只看型号还要确认模块的从站地址、波特率、数据长度这几个参数。很多“信号没反应”的问题追根溯源都是PLC和机器人两侧的通信参数没对齐。2.2 UI/UO信号怎么规划才不会乱在FANUC的体系里UIUniversal Input是“来自PLC的指令”UOUniversal Output是“回给PLC的状态”。PNS模式下程序号、启动、暂停、复位这些信号都通过UI进入机器人机器人的运行中、完成、故障、准备就绪等状态则通过UO反馈给PLC。动手接线前我强烈建议先在电脑上做一张信号规划表把每个UI/UO的含义、映射的总线地址、正常状态值全部列出来。比如“UI[1]用于启动”“UO[3]用于程序完成反馈”“UO[5]用于急停状态”。这张表既是你自己的调试依据也是日后甲方设备维护的救命文档。信号方向功能类型场景说明UI输入程序号选择PLC将目标程序号编码后送入UI输入启动/暂停/复位控制机器人运行状态切换UO输出运行中/完成/故障PLC据此决定下一步动作UO输出当前程序号回传用于双向确认避免选错程序2.3 接线防坑三件事一是屏蔽层要单端接地不要两端都接避免形成地环路二是信号线尽量远离动力线缆尤其不要和变频器输出线走同一个线槽三是24V电源不要图省事直接从机器人柜里乱拉先确认模块供电容量再决定是柜内供电还是外部独立电源。另外R-30iB的急停回路是双通道设计接线时一定要保证所有急停触点正常闭合。现场经常遇到“明明没按急停但机器人报IMSTP输入”的报警其实就是急停回路中间某个触点松动或者线断了。这块问题我后面第5章还会细说。3. R-30iB/Mate控制器PNS配置全流程3.1 打开系统配置里的PNS总开关硬件和信号规划做完才轮到碰示教器。PNS配置的第一道开关藏在系统配置里按MENU进入菜单选择SYSTEM再进Config配置页找到Program Number Select这项把默认的DISABLE改成ENABLE。这一步有几个容易踩的坑一是很多控制器的Config页面需要专家模式或管理员权限才能看到普通操作员账户进去根本找不到这个选项二是改完这个参数后控制器会提示需要重启不重启不生效这是最常见的“改了跟没改一样”的原因三是改系统参数前最好先导出一份完整备份万一改出一个奇怪的行为也好恢复。提示在配置页里别只盯着Program Number Select这一项同一页还有几个和程序选择机制相关的选项。如果项目里用到了外部程序选择最好把这几个选项一起看避免只改一处导致其他地方打架。3.2 UI/UO信号映射到现场总线PNS总开关打开并重启后第二步是把UI/UO信号映射到具体的总线地址。操作路径是MENU、I/O找到你安装的通信模块DeviceNet、Profibus等在I/O分配页面里把UI[1]到UI[8]、UO[1]到UO[8]对应到通信模块的DI/DO地址。这一步的本质是告诉FANUC控制器“PLC发过来的这个位代表的是UI哪个信号”。很多新手会问为什么不能让PLC直接发一个数字到机器人内存因为FANUC的PNS机制是靠这些UI/UO点来工作的系统不会主动去解析某个寄存器里的数字除非你通过宏程序把外部数据读进来再转换成程序号。所以UI/UO映射是PNS能跑起来的基础。调试技巧第一次接线时先别接PLC直接在示教器的I/O监控画面里强制置位某个UI信号看机器人有没有反应。这样能把问题分成两段排查——先确认机器人侧信号链路通不通再接上PLC联调。3.3 程序号与程序的对应规则信号链路通了以后接下来要想清楚“程序号N到底对应哪个程序”。这里有两种常见实现方式我分别说优缺点。第一种是依赖FANUC内置的PNS机制让控制器根据PLC发来的程序号直接去选对应编号的程序。这种方式配置简单如果程序名和编号能严格对上比如PNS号1对应程序PROG_00012对应PROG_0002直接就能用。但缺点是程序名一旦带产品型号编号规则很容易乱排查时得拿着表去对特别费劲。第二种是自建调度程序写一个主程序作为“调度入口”PNS号先落到某个寄存器或系统变量里主程序用SELECT语句根据号码跳转到对应的子程序。我在现场更推荐这种方式因为逻辑完全可见增删程序时只需要改主程序的跳转表不用动系统配置。! 主程序MAIN示例 R[1]$SBR[1].$PARAM[47] ! 读取PNS程序号缓存 SELECT R[1] CASE 1 CALL PROG_PRODUCT_A ! 产品A流程 CASE 2 CALL PROG_PRODUCT_B ! 产品B流程 CASE 3 CALL PROG_PRODUCT_C ! 产品C流程 END SELECT注意上面这段只是示意。实际项目中PNS号来源可能是寄存器也可能是专用系统变量读取方式要根据你的控制器版本和信号映射方式来定。关键思路是“号码先落地主程序统一调度”。3.4 系统变量$SBR[n].$PARAM[47]与宏调度搜索技术社区经常能看到有人问$SBR[n].$PARAM[47]这个变量怎么用。这其实是用宏/TP程序做PNS调度时常用到的一组系统变量本质上是子程序参数区里的一个存储位。常见玩法是PLC通过总线把程序号写进这个变量机器人主程序读取出来做分支跳转相当于把FANUC内置的PNS选择机制绕过去自己做一套“软PNS”调度。但用这套方案要特别注意编码一致性。PLC发过来的程序号到底是二进制还是BCD码两边必须完全对齐否则你在示教器上看到的值和PLC发出的值会对不上。我们在现场最快的一次排查程序号错位问题就是因为PLC那边默认发了BCD机器人这边按二进制解析结果PLC想选3号程序机器人一直准备跑7号程序。打印出原始十六进制数据一对比问题立刻暴露。4. 自动运行的启动时序、安全策略与多程序调度4.1 一次完整的PNS启动时序PNS配置完成后真正考验人的是启动时序。一次规范完整的PNS自动运行应该这样走PLC把目标程序号稳定输出到UI信号区并保持至少一个扫描周期。机器人控制器锁存程序号确认程序存在且允许运行。PLC再发送启动信号START。机器人闭合伺服、开始执行对应程序。程序运行结束机器人通过UO输出“完成”信号。PLC收到完成信号后再决定是复位、切换到下一个程序还是继续等待。这里最要紧的一个原则是先给程序号后给启动信号。如果两个信号同时变化机器人可能在启动瞬间读到上一个程序号轻则跑错程序重则造成安全事故。我在现场见过不止一次“并行下发”导致的诡异问题把启动时序错开后故障直接消失。4.2 远程模式下的安全回路配置PNS模式一旦启用机器人就能脱离示教器被PLC远程启动这时候的安全策略必须比手动示教模式更严格。急停双回路、安全门、光幕这些外围保护设施一定要接入安全继电器或安全PLC不要图省事只接普通继电器。另外我建议在远程自动运行模式里增加一个速度倍率限制。调试期把程序运行速度限制在比较保守的值跑顺了再放开。再一个容易被忽略的点任何一次修改过PNS相关参数或程序后第一次合伺服、第一次自动运行都一定要有人站在急停按钮旁边盯着别一上来就全自动跑。4.3 多程序调度的程序结构建议程序多的时候最怕的是“改了一个程序带到另一个程序”。我习惯把程序分成三层主调度程序、产品子程序、公共工具程序。主调度程序只做逻辑跳转不写具体动作产品子程序只放该产品专属的路径和工艺参数公共工具程序统一处理报警、日志、信号复位这些通用功能。这样分下来新增一个产品时只需要复制一个子程序模板改参数再在主调度里加一行CALL。除此之外我还会在程序开头加一段“自检逻辑”比如校验当前PNS寄存器里的值是否等于PLC回传的当前程序号双向确认无误后才开始走动作。5. 高频问题与排查经验5.1 故障速查表PNS调试过程里遇到过的坑我整理成了一张速查表。绝大多数现场问题都能在下面这几类里找到影子现象可能原因排查建议机器人不进自动模式PNS功能未使能或参数没生效检查Config中Program Number Select改完后必须重启PLC发了程序号但机器人没反应信号映射没对齐或总线通信断开在示教器I/O监控页面看对应DI/UI状态是否变化程序号总是错位编码方式不一致二进制/BCD或位序反了两端确认编码格式打印原始十六进制值对比程序启动后瞬间报警急停类急停回路未闭合、安全输入断线检查急停双通道和端子接线排除虚接远程启动后运行速度不对倍率信号被外部拉低或速度限制参数异常检查UI中倍率选择信号确认自动速度上限5.2 程序号错位这类“慢性病”怎么治程序号错位是最难复现、也最容易扯皮的问题。总结下来有三个高频来源第一编码格式不一致二进制/BCD各说各话第二PLC扫描周期短于机器人信号锁存周期号码还没稳定就被刷新掉了所以启动信号必须晚于程序号至少一个周期第三寄存器被其他逻辑意外改写这种情况多发生在宏程序里排查时先看当前值再查是哪个任务在往里面写。我处理这类问题的固定套路是先在PLC侧把所有程序号做成一张常量表不允许手写数字然后在机器人侧加一段程序开始时的号码校验逻辑最后把两边的原始值都打印出来对比。三层下来绝大多数错位问题都能定位到具体环节。5.3 几条调试阶段的心得第一先用硬线短接模拟UI信号把机器人侧跑通再接PLC联调。这样做的好处是问题边界清晰不用一上来就面对两边都是黑的局面。第二改PNS相关参数前一定用U盘做镜像备份顺带把系统变量也导出来。第三验收时要让PLC连续切换10次以上程序号反复验证锁存稳定性不能只跑一两个循环就说“没问题了”。另外我强烈建议在程序里用宏统一中转外部信号不要直接在业务程序里判断物理DI点。这个习惯能让你在后期改I/O映射时只改一处而不是翻遍所有程序。我在现场的习惯是每台机器人交付前都在程序里放一组“运行自注释”宏把PNS号、启动时间、完成时间写到寄存器并输出给上位机。这样后面不管是设备报警还是产量对不上翻数据就能定位到是调度问题还是机器人问题。PNS设置本身不难真正体现水平的是配置思路和调试细节希望这篇整理能帮你少走几趟现场。本文还有配套的精品资源点击获取
