ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

S7-1500与FANUC机器人焊装线通信全拆解:从PROFINET到PNS选序

S7-1500与FANUC机器人焊装线通信全拆解:从PROFINET到PNS选序 做焊装线的自动化项目十有八九会碰上“西门子S7-1500配FANUC机器人”这对组合。严格讲型号是S7-1500但行业里调设备的老师傅都直接喊“1500PLC”。我最近刚完成一个汽车零部件焊装项目6台FANUC R-30iB Plus机器人、4个气动焊钳和2个伺服焊钳、节拍45秒整套线用一台S7-1500做主控机器人和PLC之间全部走PROFINET。这篇文章就把这个项目里涉及到的通信搭建、PNS选序、焊钳时序、安全回路、现场联调踩坑完整拆一遍给准备做焊装集成或者正在啃这类项目的电气工程师、机器人工程师一个可参考的干活思路。1. 焊装线为什么绕不开“S7-1500 FANUC”这个组合1.1 焊装工艺对控制系统提了三个硬要求焊装项目表面看是机器人和PLC在配合实际上整个系统要管三件事节拍、质量、安全。先说节拍。以我这个项目为例45秒要完成一个分总成的装夹、定位、机器人搬运、十几处点焊、焊钳修磨、下料中间任何一次网络抖动、信号丢失或者时序错位都会直接变成生产节拍的损失。焊装车间的电磁环境又比一般机床单机项目恶劣得多大功率焊机频繁通断、焊钳电缆大电流、变频器起停这些全是干扰源。再说质量。焊点质量不仅靠焊机参数更靠机器人和PLC之间的动作时序。焊钳有没有夹紧、工件定位是否到位、电极磨损到没到极限每个环节都要有信号反馈或者数据记录。最后是安全。焊装线里机器人、变位机、输送线挤在一个区域急停回路、安全门连锁、机器人保护停止、焊机电源切断这些必须环环相扣不能只靠PLC里一个普通输出点去处理。1.2 S7-1500在焊装项目里真正强在哪S7-1500用在这种项目上其实不需要非选最顶配的。一般1511-1 PN或者1516-3 PN就够用了如果整线有安全功能需求再换成1515F-2 PN或1516F-3 PN这类安全型CPU。关键优势有三个第一PROFINET IRT带等时同步模式对伺服焊钳、高速输送线、变位机这类需要精确同步的轴控非常友好。第二PLC内置OPC UA服务器焊装线通常要对接MES系统要产量、焊点数、故障记录、节拍数据S7-1500直接把数据节点开放出去就行不需要额外加网关。第三TIA Portal组态第三方PROFINET从站很成熟FANUC机器人作为IO Device加进项目导入GSDML文件再配好IP和设备名剩下的就是填I/O地址。1.3 FANUC机器人被焊装行业认可靠的是“点焊包 PNS标准接口”FANUC机器人单看运动控制和其它品牌差距并没有天壤之别但在焊装领域它有两点是绕不开的一是点焊功能包也就是SpotTool/SpotPro内置焊机控制、修磨计数、电极寿命管理这些专用功能二是PNS标准接口全称是Program Number Select专门用于和PLC做焊装程序选择。PNS解决的是“一条线有多台机器人、每台机器人有几十个焊接程序PLC怎么选程序”的问题。PLC只需要把程序号发过去给一个选通脉冲机器人内部就会自动切到对应程序并且反馈一个“已选中”的状态给PLC。这样一来程序的增删改全归机器人工程师管PLC工程师不需要去理解每一段TP程序的细节只管“选谁、什么时候启动、怎么知道干完了”。2. 先把网络、I/O、安全这层地基打好再谈功能实现2.1 一个典型焊装工作站的网络拓扑在这个项目里整条线的网络分两层。上层是控制层S7-1500和触摸屏在同一个PROFINET网络里同时PLC通过以太网和MES服务器通信。下层是设备层6台FANUC机器人控制柜、伺服焊钳驱动器、ET200SP远程IO、安全模块全部作为PROFINET IO设备挂到PLC下面。机器人在这里是IO Device不是IO Controller它只和PLC交换I/O数据不和MES直接通信。这样做的好处是通信数据量可控机器人自身的以太网接口还能保留给机器人工程师做备份和调试用。IO刷新周期一般设2到4毫秒焊装项目的动作响应完全够用没必要追求更短的周期周期太短反而会在现场电磁干扰下更容易出通信抖动。2.2 I/O地址规划一张总表胜过所有口头交代焊装线最怕的就是I/O地址混乱。我的习惯是开工前先做一张I/O总表把所有机器人和外围设备的输入输出偏移固定下来。比如设备起始输入字节起始输出字节说明机器人1IB100QB100PNS接口 状态字机器人2IB110QB110PNS接口 状态字机器人3IB120QB120PNS接口 状态字机器人4IB130QB130PNS接口 状态字机器人5IB140QB140PNS接口 状态字机器人6IB150QB150PNS接口 状态字夹具/变位机IB200...QB200...按功能分区安全区域IB10...QB10...安全PLC独立分区每台机器人固定分配16字节输入、16字节输出。PNS标准接口占一部分剩下的留给机器人和PLC之间的自定义握手信号比如干涉区、夹具到位、焊点计数、修磨请求等。这个表看起来简单但联调时能省一大半的扯皮时间。地址一旦固化PLC程序和机器人程序里的符号名都按这张表来命名后面查问题直接按地址和信号名找不用靠猜。2.3 安全回路不是“接线”是“连锁逻辑”焊装线的安全回路有几个点是强制要求急停双通道、安全门联锁、机器人保护停止、焊机电源切断。机器人侧急停和安全门信号必须双通道进入急停触发时机器人要进入保护停止状态同时PLC要切断焊机电源和伺服焊钳的使能。如果选的是S7-1500F安全型CPU可以做PROFIsafe远程安全模块把安全逻辑做到PLC程序里。如果是普通CPU就用安全继电器硬接线到机器人的急停回路和焊机接触器。我在这个项目里用了安全型CPU 硬接线混合的方案急停和安全门走双通道硬接线确保最坏情况下PLC程序跑飞或CPU死机安全链路还能直接切断机器人保护停止信号。这里提醒一句具体安全方案一定根据现场风险评估和验收要求来不要照搬别人的电路安全相关参数必须查官方手册确认。3. S7-1500侧的关键实现从GSD文件到焊钳时序3.1 把FANUC机器人作为PROFINET从站加进TIA步骤很简单但细节决定成败。先找到FANUC机器人对应的GSDML文件这一步容易踩坑。不同机器人软件版本GSDML版本也不一样必须和机器人控制柜里实际安装的PROFINET接口版本一致否则设备组态里会出现黄色感叹号。然后在TIA Portal里添加设备选“PROFINET IO”下的FANUC R-30iB系列设置IP地址和设备名。这里有一个几乎每台机器人都会碰到的问题TIA里的设备名必须和机器人控制柜里设置的PROFINET站名完全一致大小写、连字符、甚至末尾的编号都要一字不差。机器人端一般是在控制柜的面板菜单里进入PROFINET配置页设置IP、子网掩码、站名。两边的设备名对不上PLC下载组态后就会一直报“设备不可用”。3.2 通信数据区怎么定义不要自己发明协议FANUC机器人作为PROFINET从站和PLC交换的数据区一般分两个方向。PLC发给机器人的是控制命令机器人反馈给PLC的是状态和计数。标准的PNS接口里最核心的几个信号是方向信号含义PLC → 机器人Strobe选通脉冲通知机器人读取程序号PLC → 机器人PNS0 ~ PNS7程序号二进制位最多256个程序PLC → 机器人Start启动当前选中程序PLC → 机器人Hold程序暂停进给保持PLC → 机器人Fault Reset故障复位机器人 → PLCReady机器人已准备好使能正常机器人 → PLCProgram Selected程序号已被正确读取机器人 → PLCBusy程序正在运行机器人 → PLCDone程序完成机器人 → PLCFault机器人故障这些信号在FANUC的标准PNS文档里都有明确定义。我建议直接沿用标准不要自己另外设计一套协议。原因很简单标准接口在机器人出厂时就已经测试过后期维护也好查换人接手的时候不需要重新理解一遍“自定义协议”。3.3 PNS选序功能块用SCL写一个FB_RobotSelectPLC侧我封装了一个功能块专门处理“给某台机器人发送程序号并启动”的时序。核心逻辑分四步把要运行的程序号写入PNS区置Strobe为1保持一个或者两个扫描周期等机器人反馈Program Selected或者超时报警Strobe复位为0然后置Start启动程序。这个时序看起来简单但联调时最容易出问题。我见过不少项目把Strobe当成一个普通输出点发送完程序号后直接置1又立即置0结果机器人的程序扫描周期稍微慢一点Strobe脉冲就消失了程序号根本读不到。正确做法是PLC必须等机器人把Program Selected反馈回来之后再去清Strobe。如果3秒内收不到反馈就置一个通信超时报警。3.4 焊钳控制的两种方案取决于焊钳类型焊钳分为气动焊钳和伺服焊钳控制逻辑差别很大。气动焊钳的电磁阀由PLC直接控制机器人运动到焊点位置后机器人给PLC发一个“请求加压”的信号PLC控制电磁阀让焊钳闭合加压同时等待气缸到位信号然后给焊机发焊接启动信号。焊接时间到焊机反馈完成PLC再撤销加压命令。这里要特别注意预压时间电极刚接触工件时接触电阻不稳定马上通焊接电流容易飞溅一定要给足预压时间一般要预留30到50个毫秒具体根据工艺试验定。伺服焊钳的控制要复杂一些。我在项目里用的是PLC通过PROFINET直接控制伺服驱动器实现位置闭环和压力闭环。实际焊接时先让焊钳以较快速度移动到电极与工件表面接近的位置然后切换为压力模式根据压力传感器反馈维持目标压力。电极磨损后要达到同样的压紧力伺服焊钳的行程位置会变所以程序里要做磨损补偿。每一轮修模之后焊钳的零点位置也会变化同样需要补偿。3.5 为什么我坚持用FB封装而不是直接用M点焊装线的PLC程序如果不用功能块六个机器人的控制逻辑写出来就是一大坨重复梯形图看着就头大。我按设备抽象写了三个基础功能块FB_RobotSelect负责PNS选序和启动FB_WeldGunCtrl负责焊钳动作FB_WeldDataRecord负责焊点计数与修模管理。每个机器人的控制逻辑用多重背景实例化同一套FB只是传入不同的背景数据块。这样做的好处非常明显第一程序量大幅减少可读性高第二改逻辑只改FB本体所有机器人同时生效第三现场调试某个机器人出问题直接看到对应的背景DB里的数据就知道当前状态不用一个个去翻M点。3.6 焊点记录和修模阈值焊点计数是焊装线必须做的。我在这条线里每台机器人完成一个焊接程序PLC收到Done信号后就在背景数据块里累加焊点数。累计焊点数达到设定阈值PLC会给机器人发一个“去修模站”的命令机器人自动跑到修模器把电极头修磨一下修模完成后把计数清零继续生产。电极寿命管理也要做但阈值逻辑不同。修模阈值按焊点数换帽阈值按累计修模次数或更大的焊点数设置。比如每200点修一次模修模20次或累计4000点后就要报警通知人工换电极帽。伺服焊钳的磨损补偿要和修模联动修模后电极行程会恢复正常补偿值需要重新校准一次这个动作必须在PLC和机器人程序里都做否则容易出现“修完模反而压不紧”的情况。4. FANUC机器人侧PNS程序选择与点焊质量闭环4.1 机器人端需要提前配好的三件事机器人侧如果只靠PLC工程师去调试很容易卡壳。机器人工程师要先完成三件事第一PROFINET通信配置。在控制柜面板里设置IP地址、子网掩码、网关和站名确保和PLC组态完全一致。第二启用PNS功能。FANUC系统里有对应的PNS选择功能设置需要机器人工程师把程序选择模式切到PNS远程模式否则PLC发过来的程序号不会被机器人接受。第三确认机器人本体程序的状态所有焊装程序要预先做好编号命名规则清晰方便PLC按程序号调用。4.2 PNS背后的握手流程机械地走这个顺序就对了PNS的时序全流程是这样的PLC把程序号写到PNS位PLC置Strobe为1机器人检测到Strobe上升沿后读取PNS位代表的程序号在TP程序里切换到对应程序机器人反馈Program Selected给PLCPLC收到Program Selected后清StrobePLC发送Start或者机器人程序的远程启动条件满足机器人开始执行焊装程序Busy置1程序结束Busy复位Done脉冲置位PLC收到Done后累计焊点数进入下一轮。焊装项目里机器人工程师和PLC工程师各管一端但这个握手流程双方必须都清楚。很多联调问题其实就是双方对握手信号的理解不一致比如机器人提前把Busy清掉了PLC还没收到Done或者PLC一直没回复Program Selected机器人就停在选序界面干等。4.3 一个典型的点焊程序怎么写FANUC的TP程序点焊动作一般是这样组织的1: L P[1] 1000mm/sec FINE ; 2: RO[64:CLOSE] ON ; 3: WAIT RO[66:CLAMPED] OR RO[21:FAULT] ; 4: WELD[1] ; 5: RO[64:CLOSE] OFF ; 6: L P[2] 1500mm/sec FINE ;解释一下机器人先移动到焊接位置P[1]给PLC发“焊钳闭合”请求RO[64:CLOSE]PLC控制焊钳加压等PLC反馈焊钳夹紧RO[66:CLAMPED]后执行WELD指令。FANUC的点焊功能包里WELD指令会向焊机发一个固定的焊接启动序列焊机根据预先设定好的焊接电流和时间完成放电。焊接结束后程序关闭焊钳并移动到下一个点。这里有一个新手容易忽略的点WELD指令的焊接参数并不是写在TP程序里而是存在焊机或者SpotTool的数据表里。需要调整焊接电流、焊接时间时一般直接在焊机面板上改或者通过焊机通信接口下发不需要动机器人程序。4.4 修模完成后机器人程序一定要有一个“恢复计数”的动作修模流程中机器人到达修模站后要执行修模程序比如电极头磨削、自动清帽。修模完成后机器人会重新校准焊钳位置并且把当前累计焊点计数清零。这个清零动作要慎重如果PLC也在独立计一套数机器人清零的同时还得给PLC发一个“修模完成”信号PLC也同步清零保证两边的计数一致。否则会出现“机器人认为还能焊100点PLC认为已经超阈值不再发启动命令”这种闹心的故障。5. 联调阶段最磨人的四个问题我把完整排查过程写在这里5.1 PROFINET通信时断时续最后查出来是交换机端口问题这个现象很典型设备刚上电时通信正常运行半小时后TIA Portal在线诊断里偶尔出现“设备不可用”然后又自己恢复。一开始怀疑是现场电磁干扰把机器人到PLC的网线换成了带屏蔽的工业网线但问题依旧。后来又怀疑是IP冲突全网扫描也没发现问题。最终定位到是交换机的一个端口协商异常。当时的做法是把机器人接入的交换机端口从自动协商改成固定100M全双工。焊装现场大电流设备频繁启停时有些交换机的自动协商机制会抽风固定速率后通信就稳定了。这个坑在有大功率焊机的场合特别常见排查顺序建议是先看线缆和接头再看IP和设备名然后看交换机端口最后才怀疑PLC组态。5.2 Strobe脉冲太短导致机器人偶尔选错程序这个故障发生在第2台机器人上现象是每生产几十个工件就会偶然出现一次“这台机器人焊点了别的工位程序”的情况。排查时先怀疑PNS地址对错后来在PLC程序里跟踪Strobe信号发现PLC发完程序号后Strobe只保持了一个扫描周期。而机器人的程序扫描周期比PLC慢Strobe脉冲在机器人还没来得及读取PNS位时就已经消失了于是机器人读到了上一次残留的程序号。修复方案就是把Strobe时序改成“等待确认”PLC置Strobe后必须等到机器人反馈Program Selected才清Strobe同时增加一个3秒超时。改完之后再也没有出现过选序错乱。5.3 I/O地址错位PLC发1号程序机器人跑的却是3号程序故障现象比较诡异程序号偶尔差2。全面排查时打开PLC在线监控看到QB100发送的是1号程序再去机器人侧看DI状态发现机器人的第一个PNS点对应的是输入字节的第9位而不是第1位。问题出在两边对I/O偏移的理解不一致。PLC里的QB100到机器人端映射到哪个输入字节取决于机器人PROFINET接口配置里设置的“输入输出偏移起始地址”。这个偏移不对齐PLC认为发的是字节100机器人实际读的是字节102。处理方式就是做一张IO对照表PLC工程师和机器人工程师各自对照自己那一侧把设备诊断里的实际地址梳理一遍最终确定偏移后达成一致。5.4 安全回路双通道不同步复位按钮怎么按都没反应设备调试时有几次急停测试按完复位按钮发现整个安全回路无法恢复。打开TIA的诊断缓冲区看到的是安全模块报“安全输入通道1和通道2信号不一致”。这是典型的安全回路双通道不同步急停按钮被按下后又松开但两个通道的触点动作时间有细微差异安全PLC检测到了一眨眼的差异就把安全输出断开并且进入故障状态。处理方法是先找到安全模块对应的通道检查两个通道的接线和触点是否都正常然后再触发一次安全复位序列。有些安全模块必须整条安全链上的所有急停、门锁都处在闭合状态才能接受复位信号所以排查时要从最末端的安全输入逐个确认。有人一看复位没反应就怀疑安全模块坏了其实大概率是某个门锁没关好或者某个急停按钮没完全弹出。5.5 伺服焊钳压力报警不是因为设备坏而是电极磨损到临界伺服焊钳项目里压力报警一度被当成机械故障处理但机械检查没有任何问题。后来发现是电极磨损之后焊钳驱动机构已经接近行程极限在压力闭环模式下驱动器为了追目标压力持续输出更大扭矩触发了伺服驱动器的扭矩报警。这类问题需要在PLC里做两件事一是设置电极磨损上限阈值当焊钳行程超过一定数值就报警提示修模或换帽二是修模后的零点校准要联动更新位置基准。焊装项目里伺服焊钳的报警十有七八不是突然发生而是磨损累积到极限后的必然结果关键是监控曲线而不是只看单个报警点。5.6 现场联调最重要的四个字看信号别猜联调阶段最忌讳“差不多”。机器人说“我这个点焊完了”PLC说“我没收到Done”如果两边都凭感觉去猜一定是查了半天找不到问题。正确做法是同时打开PLC在线监控和机器人I/O界面一边单步动作一边看每一个关键信号是不是按I/O表定义的地址到达。焊装项目联调期间对讲机里听到最多的一句话就是“你那个信号到底在哪”。提前做好I/O表和信号时序表联调时人手一份能让调试时间缩短三分之一。这不是夸张是实打实的经验。6. 项目收尾之后我才彻底想明白的几件事6.1 I/O表和时序表是比PLC程序更值钱的交付物刚做焊装项目时我也觉得程序写完、跑起来就算完事。现在复盘才发现真正值钱的交付物是I/O总表、信号时序表、网络配置记录。这套东西可以直接复用到下一个焊装项目而且新人接手排查问题时给一张完整准确的I/O表比给一份几百行程序有用得多。6.2 标准化模板让第二个项目快了很多第一个焊装项目从设计到量产用了将近三个月第二个类似项目只用了一个半月。差距不在机器人编程也不在PLC基础逻辑而在标准化。FB封装、程序号分配规则、I/O地址规则、通信握手时序这些都是可以沉淀成模板的。再做焊装项目时把模板底层的硬件型号、程序号、节拍参数替换掉剩下的工作量主要是联调和现场调试。6.3 给准备入行焊装的人一句话想进入这一行建议先找机会完整跟一个焊装项目从PLC程序、机器人程序、现场调试到陪产。焊装线本质上是“工艺、机械、电气、机器人、质量”共同协作的系统工程单纯会PLC或单纯会机器人都只能看到一部分。真正把项目做顺的人往往是能站在I/O表和时序表之间把两边串起来的人。
返回列表