
做过锂电设备的老哥应该都懂一台全自动贴胶检测机看着不复杂但真正要把节拍、精度、稳定性三样同时抓起来控制系统的程序设计至少占一半的功夫。今天聊的项目是产线里那台CE型电芯贴胶检测机——CE是Cell Edge的意思核心工作是电芯边缘极耳贴胶、压合和外观检测控制器用的欧姆龙CJ2M加CP2E组成的分布式结构编程环境是CX-Programmer。这篇文章把我从选型、程序架构、关键功能实现到现场调试踩坑的完整过程拆一遍给正在上类似设备的朋友做个参考。1. 先把工艺吃透CE锂电贴胶检测机到底在做什么1.1 工艺流程与工位拆解很多人拿到设备题目第一反应是写程序但我建议先花半天把工艺彻底走一遍。贴胶检测机不是简单一个气缸压下去就完事它本质上是“送料-裁切-贴附-辊压-检测”五个动作的高度耦合。这台CE机型走的是方壳电芯边缘贴保护胶带的路线。胶带的作用是保护极耳根部防止后续装配时折弯、划伤甚至短路。整机工艺流程大致分几段电芯上料后先做定位校平机械手抓取电芯放到贴胶工位贴胶机构把胶带从卷料上拉出一段设定长度裁切后吸住胶带移到电芯边缘指定位置贴附再用辊压机构压一遍消除气泡最后视觉系统检查胶带位置、贴附平整度和极耳状态OK的往下流传NG的自动剔除。工位结构上常见两种布局转盘式和直线式。我们这台用的直线式好处是每一站独立调试时单站单调不会牵一发而动全身。控制对象包括伺服驱动的送胶辊、贴胶头升降轴、压合气缸、切刀气缸、辊压气缸、输送线电机、真空发生器和吹气阀。数量不算多但时序要求很严任何一个动作提前或滞后都会造成胶带歪斜、褶皱。1.2 为什么选欧姆龙CJ/CP而不是运动控制PLC设备选型时有人问过我为什么不直接上NJ系列加EtherCAT伺服原因很简单这台设备的控制需求是“逻辑为主、定位为辅”贴胶位置精度要求±0.5mm左右速度也不过每秒几百毫米CJ/CP系列的脉冲输出完全跑得动。用欧姆龙CJ/CP还有一个现实优势锂电产线里设备种类多很多配套工装和上下游设备都是欧姆龙或者兼容欧姆龙编程习惯的控制器统一品牌后备件、程序、通讯都省心。CJ2M作为主站负责核心贴胶逻辑和高速检测CP2E作为从站负责周边的入料出料、剔除和状态汇总。两者之间用串口或以太网通讯主从分工清楚调试时可以一个人盯主机、一个人盯从机互不干扰。如果真用NJ当然也可以但本质是杀鸡用牛刀。而且CJ/CP用梯形图写逻辑现场电工和售后维护的人都熟后续设备维护成本低不少。对设备厂来说少一个技术门槛就少一次售后投诉。1.3 控制系统硬件清单与控制对象映射我把硬件清单列出来方便你对着看后面程序里每个地址是干嘛的。部件型号/用途备注PLC主站欧姆龙CJ2M-CPU3x系列内置高速脉冲输出无外部定位模块PLC从站欧姆龙CP2E-N60周边逻辑控制与IO扩展通讯模块CJ1W-PRM21Profibus-DP主站/从站连接现场总线设备伺服系统欧姆龙OMNUC G系列送胶辊、贴胶头升降视觉系统欧姆龙FH系列或第三方CCD胶带位置、气泡、极耳检测触摸屏NB系列配方、报警、产量统计检测元件光纤传感器、色标传感器、接近开关胶带到位、气缸到位、原点检测控制对象映射到IO时我做了一张Excel表每个气缸的伸出/缩回到位传感器、每个阀的输出点都单独列出来再和PLC地址一一对应。这张表是整个程序设计的“宪法”后面所有逻辑都按它来写能省掉很多后期对点时间。2. 程序架构与数据区规划让CPU干活不乱2.1 任务划分主循环任务与中断任务的配合欧姆龙CJ系列支持周期性任务、中断任务和追加任务。写贴胶机程序时我一般把任务分成三层。第一层是主循环任务处理常规状态机、气缸动作、伺服运行和报警逻辑。第二层是中断任务处理对时间敏感的信号比如贴胶位置检测传感器触发瞬间记录当前位置、编码器高速计数、视觉拍照触发信号。第三层是IO刷新和通讯任务这层往往容易被忽略其实很关键尤其是和PRM21通讯模块相关的数据交换必须保证在通讯周期内稳定刷新。举个例子。贴胶头在压合过程中电芯边缘的阻挡传感器一旦检测到胶带头PLC需要马上把当前送胶伺服位置锁存下来用来判断贴附位置是否在公差内。如果把这个信号放在主循环里扫描扫描周期哪怕只有5ms胶带移动速度一快位置误差就被放大了。用中断任务处理这类信号才能保证每次都能稳定捕捉而不是碰运气。2.2 数据区规划CIO、W区、H区、D区怎么用才不乱欧姆龙程序里数据区多新手最容易犯的毛病是地址乱写一气今天用CIO明天用D区程序一长自己都找不到。我的习惯是建立一套命名和分区规范。I/O和外部设备相关的地址放CIO区这是它的本职。纯内部中间变量和过渡状态放W区也就是“工作字区”它可以按位用也可以按字用相当于PLC的临时草稿纸。凡是需要在断电后保持的数据比如配方、累计产量、补偿系数一律放H区或D区带电池备份。关键报警标志和模式切换位我固定放在H区这样即使设备掉电重启报警状态也不会丢方便事后追溯。用符号表是另一个必须养成的习惯。不要直接写地址而是在CX-Programmer的符号表里给每个变量起一个英文名或拼音缩写比如送胶伺服目标速度叫Feed_Speed压合到位传感器叫Press_Sensor。符号定义好之后梯形图里显示的就不是一堆冷冰冰的地址而是有语义的名字。排查问题的时候扫一眼图形就能知道这一段在干嘛效率完全不一样。2.3 用状态机组织贴胶流程程序的核心骨架贴胶动作是一串严格串行的操作我强烈建议用状态机的方式来写而不是传统的“一段动作一段定时器”往下排。定时器堆叠的方式最怕中途报警或急停复位之后乱七八糟状态机则可以随时复位到安全的初始状态。我定义的状态大致是这样S0 空闲等待启动信号初始化各轴原位S10 取胶准备切刀复位到原点压胶轮抬起S20 送胶伺服按设定长度拉出胶带S30 裁切与拾取切刀切断真空吸嘴吸附胶带S40 贴附机械手移送至电芯边缘压合气缸伸出S50 辊压滚轮沿胶带长度方向走一遍S60 检测视觉/传感器检测位置与外观S70 放行检测OK则放行NG则剔除状态转移条件全部用“动作完成到位信号确认延时”来触发禁止只用一个时间到就跳走。PLC程序里实现状态机很简单用几个保持位表示当前状态再用DIFU上升沿指令做转移触发每个状态内部先复位上一状态的输出再置位当前状态的输出。附一段助记符伪代码方便大家理解写法LD S20 // 送胶状态 AND Feed_Done // 送胶完成标志 DIFU Trans_20_30 // 产生一个扫描周期的上升沿 LD Trans_20_30 SET S30 // 进入裁切状态 RSET S20用状态机之后每个状态还可以顺带挂一个状态超时定时器比如S20送胶状态最多运行2秒超时还没收到完成信号就报警停机。这个设计在现场救了我很多次胶带卡住、电机堵转时能第一时间暴露故障位置而不是整机傻等。2.4 节拍估算这台设备到底能跑多快程序还没写之前我就先做了一版节拍估算表原因很简单如果节拍达不到客户要求后期改程序改到吐。动作预计耗时取胶准备、切刀复位0.3s伺服送胶长度80mm速度300mm/s0.3s裁切、真空拾取0.5s移送至贴附位0.6s压合、保压0.6s辊压抚平0.5s视觉检测0.4s放行与复位0.3s合计约3.5s单工位理论节拍在3.5秒左右每分钟大约17个电芯。实际做了双工位交错设计一个工位在贴胶的时候另一个工位在检测节拍可以压到2秒以内。这里要提醒一句节拍瓶颈往往不在PLC扫描速度而在气缸动作时间和视觉曝光时间。有些朋友一上来就要求PLC扫描周期越快越好其实换个思路把动作重叠起来比单纯提高扫描速度有效得多。3. 核心功能实现从送胶长度到检测判定3.1 伺服送胶长度与速度的脉冲计算送胶长度控制是整个设备最关键的地方胶带长度多一毫米少一毫米都会直接影响贴附质量。用伺服电机驱动送胶辊是最常见的方案计算核心是脉冲数折算。送胶辊转一圈带过去的胶带长度等于辊的周长。假设送胶辊直径D24.5mm周长就是π×D76.9mm。如果伺服编码器分辨率是10000脉冲/转减速比1:1那么送80mm胶带需要的脉冲数就是N (80 ÷ 76.9) × 10000 10403脉冲这个公式很简单但实际调试时有几个坑。第一送胶辊表面通常包一层聚氨酯直径会磨损用久了实际周长变小贴出来的胶带会偏长。第二胶带卷的张力变化会导致送胶辊和胶带之间有轻微打滑。第三裁切刀离贴合点有一段机械距离这个距离必须在长度设定里补偿掉否则贴出来的胶带实际位置永远偏后。我的处理方式是在触摸屏上留一个“送胶长度补偿系数”比如默认1.000实测偏长就把系数调小。程序里每个配方存两组参数设定长度和补偿系数。调试时用塞尺和游标卡尺量实际胶带长度反向计算补偿系数比改机械结构快得多。伺服速度曲线也不能忽略。如果加速度太猛胶带会被瞬间拉长甚至拉断尤其是薄型胶带。CX-Programmer里控制脉冲输出时先设目标频率再设加/减速率。我的经验是加速度设定让送胶过程在0.05秒内从0加速到设定速度启动时再给一个短促的低速“爬行段”比如前2mm用低速跑避免起步冲击。3.2 贴胶压合与裁切时序的控制送胶完成后紧接着是裁切和压合这段时序我做了严格的互锁。原则是压胶轮没有抬起时绝对不允许送胶切刀没有回到原位时绝对不允许进入下一循环。现场最容易出问题的是裁切环节。气动切刀动作很快但切胶带的瞬间会产生胶带碎屑这些碎屑飘到光纤传感器头上检测信号就开始乱跳。我后来做了两个改进一是把切刀下方加一个吹气口切断瞬间同步吹走碎屑二是在程序里给切刀完成信号加30ms的滤波确认确认后才允许进入贴附状态。贴附压合时序用移位处理。电芯到位后贴胶头下降压合气缸伸出先低压接触确认电芯边缘位置传感器点亮后延时100ms再转高压压紧。这样做的好处是避免气缸高速接触瞬间把胶带撞歪。辊压过程我用的是一根独立的滚轮气缸滚轮沿电芯边缘走一遍。程序里辊压速度要和压合气压匹配气压太高容易把胶带边缘压出褶皱太低气泡排不干净。这个参数没有固定值需要根据胶带厚度和电芯外壳材料现场标定我一般以视觉检测气泡面积小于某个阈值作为气压合格标准。3.3 检测环节视觉与传感器数据如何参与判定检测环节是这台的“眼睛”但再好的眼睛也得有大脑来裁决。我的检测逻辑分两层。第一层是传感器层。电芯边缘贴胶完成后一组光纤传感器在贴胶位置划过检查胶带头是否在规定窗口内如果有遮挡就说明位置偏了。这里要特别注意光纤传感器的响应速度要和送胶/出料速度匹配我习惯把检测时输送线速度降到100mm/s以下给传感器足够的时间去分辨。第二层是视觉层。电芯到视觉检测站后相机触发拍照软件输出胶带位置坐标、边缘直线度、气泡面积和极耳状态。数据通过串口或以太网回传PLC。PLC拿到数据后不是直接判NG而是做一个综合判定矩阵位置偏差在±0.5mm内、气泡面积小于0.5平方毫米、极耳无歪斜三项全过才放行任何一项超差就NG剔除。视觉判定的准确性很大程度上依赖拍照触发时机。我在程序里用的是“飞拍”逻辑电芯经过视觉工位时接近开关触发一个高速输入中断PLC立即输出拍照信号给相机相机曝光完成后再返回一个拍照完成信号给PLC。中断处理保证每次拍照位置一致不会因为扫描周期抖动导致画面偏移。另外连续3次检测结果一致才确认结论防止光源闪烁或电芯晃动造成单帧误判。3.4 配方管理与断电恢复设备不可能只生产一种电芯换型号是家常便饭。我用H区存储4组配方每组配方包含电芯宽度、贴胶长度、送胶速度、压合气压、辊压速度、检测阈值和补偿系数。触摸屏上做成配方选择画面操作工选完配方号按下“载入”PLC自动把H区的配方数据拷贝到工作变量区。配方切换时的安全校验必须做。比如新的贴胶长度超出送胶机构的行程范围程序应该直接拒绝载入并报警而不是等机械撞了限位才停。我遇到过一次因为配方里误输入了0.5mm长度设备启动后送胶辊只走了一点点切刀在错误位置切胶带整个胶带路径卡死。从那以后所有配方参数载入时都做上下限范围检查超范围直接报“配方参数错误”。断电恢复也是锂电设备的高频痛点。设备运行到一半突然停电重启后不能直接接着跑因为气缸和伺服位置全丢了。我的做法是上电后先进入“复位状态”所有气缸回到初始位伺服回原点状态机强制回到S0同时触摸屏弹出提示要求操作工确认电芯是否已取出。确认完毕后设备才允许重新启动。这样可以避免断电重启后机械手带着电芯乱跑造成撞机。4. PRM21通讯模块与外部设备联调实录4.1 PRM21定位Profibus-DP总线上的欧姆龙玩家CJ1W-PRM21是欧姆龙CJ系列挂在Profibus-DP总线上的通讯模块它既支持做主站也可以做从站。我们这条产线里上下工序的设备有几台是其他品牌PLC产线中控用的也是Profibus-DP总线。没有PRM21之前欧姆龙和外面通讯只能靠串口速率低、抗干扰差而且中间还要转接麻烦得很。装上PRM21之后欧姆龙CJ2M直接作为DP从站挂在产线总线上中控PLC通过DP总线读取欧姆龙侧的运行状态、产量数据和报警信息。反过来在另一条单机设备上我也用过PRM21做主站下挂几个DP远程IO模块用来节省PLC本体的I/O点数把电芯到位信号、气压检测信号、安全门信号全部通过DP总线收上来。组态PRM21时要特别注意两点一是GSD文件必须和模块硬件版本匹配用旧GSD新模块会在组态软件里报参数错误二是总线波特率自动检测但现场如果有多台设备混用必须在通讯调试阶段统一所有从站的波特率和站地址否则总线根本建不起来。站地址设重了的现象很迷惑设备单看都是好的一联网就报警“总线故障”查了半天才发现两个站都是12号。4.2 与视觉系统通讯对接的几种方式视觉系统对接是贴胶机程序里最容易被低估的一环。我做过几种方案各有优劣。最简单粗暴的是IO对接相机把OK/NG信号输出到PLC输入点PLC只需要判断一个点。优点是稳定、实时性好缺点是只能传一位结果传不了坐标数据、面积数据。对于只需要简单判定合格不合格的小项目IO方案完全够用。需要回传数据时我会用串口通讯。欧姆龙CJ2M串口支持协议宏CX-Programmer里可以编辑协议宏帧通过PMCR指令发送接收。和相机约定的帧格式一般是ASCII字符比如“P123;456;78;1”这种分号分隔坐标、面积和结果。PLC收到后解析字符串再把数据拆到各个变量里。这个过程必须处理超时和帧头校验不然偶尔一条乱码就会让PLC里出现一个天文数字。还有一种方案是走以太网FH系列视觉控制器和CJ2M通过Ethernet/IP直接交换标签数据编程量最小但需要两个设备都在同一个网段而且Ethernet/IP通讯的刷新周期不如串口稳定高速场合我反而用得少。实际项目里我一般这么选只判OK/NG用IO需要数据又追求稳定用串口协议宏数据交互多且网线环境好才用Ethernet/IP。4.3 通讯故障的典型表现与定位方法通讯故障比机械故障难查因为它看不见摸不着。我总结了几类高频问题。第一类是DP总线偶发掉站。现象是设备跑着跑着触摸屏弹“总线报警”但过几秒又自己恢复。排查顺序是先看终端电阻Profibus-DP两端必须接120欧终端电阻很多人只在一端接了另一端悬空信号反射一多就掉站。然后看屏蔽层接地DP电缆屏蔽层应该单端接地现场如果两头都接地地电位差会形成环路电流干扰更严重。第二类是串口通讯数据乱码。这通常和线材长度、接地、波特率误差有关。我之前遇到过一次相机串口和PLC串口波特率都设置成115200但相机实际偏差稍大短距离没问题线一长就开始乱码。后来统一改成38400反而稳定了因为波特率越低对时钟误差容忍度越高。第三类是连接不上CX-Programmer。很多初学者在Windows下用USB转串口调试怎么也连不上PLC先别怀疑PLC坏了。检查一下设备管理器里COM口是否被其他软件占用比如相机调试软件、串口监视工具再确认PLC的通信设置是“自动在线”还是“指定上位机链接”。我习惯让PLC处于“Host Link”模式下调试等调试完再切回生产过程模式这样可以避免产线中控和编程软件抢同一个通讯端口。5. 现场调试踩坑实录与排查速查表5.1 贴胶位置漂移程序问题、机械问题还是干扰问题调试中最常见的怪现象是前50片贴得挺好后面慢慢偏移到第80片已经肉眼可见歪了。第一次遇到时我以为伺服丢步换了伺服驱动器还是不行最后才发现是送胶辊直径磨损加胶带张力变化的双重作用。排查贴胶位置漂移我习惯按三步走。第一步在程序里监控目标脉冲数如果脉冲数没变但贴出来长度变了基本是机械或材料问题。第二步用千分尺量胶带实际长度如果实际长度比设定值逐渐变长重点检查送胶辊和胶带之间是否打滑。第三步查机械送胶辊轴承是否松动、压紧轮压力是否衰减。解决手段上程序里加“自动修正”是最轻量级的方案——视觉检测出实际位置偏差后PLC自动修改下一片的送胶长度补偿系数形成闭环。这个功能我后来一直保留着效果不错。还有一条容易忽略脉冲线被动力线干扰。伺服脉冲线如果没有用双绞屏蔽线或者屏蔽层没接地变频器一启动脉冲就会丢。排查时可以看伺服驱动器面板的实际接收脉冲数如果PLC发了10000个脉冲驱动器只收到9990个那就是丢脉冲线材问题实锤。5.2 偶发报警“灵异事件”怎么破设备调试到后期最磨人的是时有时无的报警。我碰到过一次设备运行二十分钟后贴胶工位偶尔报“切刀未归位”复位又能继续跑。查了传感器、气缸、电磁阀都正常后来发现是切刀气缸的磁性开关线破皮和旁边24V线短接PLC输入信号被干扰偶发读到错误电平。另外一次是某个气缸到位信号和另一个气缸的动作指令共用了同一个24V直流电源支路气缸动作瞬间电流波动导致输入信号抖动。PLC程序里已经做了信号滤波但仍然偶尔误判。后来把传感器供电单独拉了一路开关电源问题彻底消失。锂电设备上电机启停频繁、电流冲击大传感器的24V电源最好不要和大电流负载共用这是当初布线省成本的代价后面全部返工。还有一类“灵异事件”其实是程序逻辑问题。欧姆龙PLCTIM定时器编号在同一个任务内不能重复曾经有人把两个延时定时器都编成TIM111在线监控时一个定时器动作另一个也跟着动作查了半天才在交叉引用表里发现编号冲突。我的经验是程序写完做一次“交叉引用”全局排查把所有定时器编号、计数器编号重复的情况一次性查出来。5.3 CX-Programmer工程管理与程序移植要点最后说说工程管理。欧姆龙程序开发用的是CX-Programmer现在集成在CX-One里面。工程管理这块有几点特别想提醒大家。第一版本兼容性。厂家、客户的工程大概率是不同版本的CX-Programmer做的低版本软件打不开高版本工程高版本打开低版本工程也会有转换警告。上门服务前最好确认客户电脑上的软件版本否则现场装驱动、装软件就耗掉半天。第二程序上传和下载的身份问题。在线工作时把PLC程序上传到电脑容易但如果电脑里的程序比PLC里的新贸然“传输到PLC”会把现场正在跑的版本覆盖掉。我吃过一次亏在办公室改完程序没做版本号管理到现场忘了下载结果把客户正在调好的旧程序覆盖了。后来我在程序里固定了一段“版本信息”注释区每次改动都更新版本号和日期下载前先对比PLC和电脑里的版本号确认无误再操作。第三注释和符号表要随程序一起存。PLC里存的是编译后的机器码注释、符号名、段名这些全在电脑的工程文件里。如果工程文件丢了就只能从PLC上传出一份没有任何注释的程序后期维护痛苦不堪。我每个月都做一次工程文件双备份一份在项目服务器一份在移动硬盘这个习惯救了我好多次。5.4 快速排查速查表把现场常客总结成一张表贴在我电脑屏幕边上每次调试先对表。故障现象可能原因排查方向处理建议贴胶位置逐渐偏移送胶辊磨损、张力变化、脉冲丢失监控PLC脉冲数量实际胶带长度加补偿系数检查压紧轮换屏蔽线偶发气缸到位信号丢失磁性开关线破皮、供电干扰看输入点闪断摇线束排查单独供电加长滤波时间PLC连接不上COM口占用、驱动未装、波特率不一致设备管理器确认COM任务管理器查占用程序重启软件卸载其他串口工具DP总线偶发报警终端电阻缺失、屏蔽层接地不良检查总线两端电阻测屏蔽层通断两端120欧单端接地视觉误判NG光源频闪、触发抖动、曝光不足查拍照触发时序开视觉调试画面用中断触发拍照多帧确认断电重启后乱动作气缸掉电复位状态机不可恢复检查上电初始化程序上电强制回原点进入复位状态结束前的几句实在话这套设备前前后后调试了两个多月最大的体会是PLC程序只是控制系统的一部分真正决定设备能不能稳定跑的是程序逻辑是否贴合工艺细节、通讯方案是否经得起现场干扰、数据规划是否方便后期维护。最后再分享一个我一直沿用的土办法每一版程序下载到PLC之前先在CX-Programmer里做一次完整的内存分配检查和注释完整性检查再把关键状态机的T图截屏发给机械工程师和装配工程师确认。因为很多时候程序写的逻辑没错机械装配和程序理解之间差了半拍动作顺序就会别扭。多花十分钟做同步对齐比到现场反复试错省几天时间。希望这些经验对你有用。