
枕包机这种设备程序里最怕的不是点位多而是“联动关系没理清”一旦六轴之间的时序和相位乱了生产出来的东西就是一堆废膜。前段时间调了一套欧姆龙NJ501-1500的枕包机六轴全部走EtherCAT伺服核心是六轴定位控制加电子凸轮控制程序主体用梯形图编程写出来分区干净利落。打开程序的那一刻我是服的——每个功能块都能对上现场动作注释清楚变量命名规整维护的人根本不用翻图纸。这种“程序经典、结构清晰”的项目不是靠天赋写出来的是前面把整个控制思路吃透了才做得出来。这篇文章不打算写成操作手册我更想完整复盘一遍这台设备难在哪、为什么选NJ501-1500、电子凸轮到底怎么落地、梯形图程序怎么组织以及调试时踩过的几个真坑。1. 枕包机控制难点拆解六轴时序、同步精度与凸轮的本质矛盾1.1 工艺段拆解从物料进给到成品输出的六段时序枕包机也叫卧式裹包机常见于饼干、面包、糖果、药盒这类规则的物料包装。物料通过输送链板推进薄膜从放卷架拉出经过成型器被折成筒状把物料包在里面纵封轮加热封住背缝横封滚刀切断出成品。整个流程看起来简单但每个动作都在“运动中”完成不能停。要拆解控制点得先把六轴对应的工序段列清楚进料输送轴推料链/推料板把物料按固定间距送进成型器这个轴的启动和停止必须和主节拍严格配合不然物料会顶到成型器上。送膜牵引轴薄膜走的长度就是袋长这个轴是整台设备最“敏感”的轴它决定了每包袋子切在哪。纵封轮轴两根加热轮连续旋转压合并热封薄膜背缝速度必须跟随膜速否则会把膜拉出褶皱。横封切刀轴一对旋转滚刀完成底边封口和切断通常被当作主节拍轴它的转速直接决定每分钟产包数量。出料输送轴切好的成品袋被送走需要和横封切断节拍配合不能堆包。打码/喷码轴在指定相位触发打码切刀每转一圈打一次码位置要避开纵封和横封的压合区。这六个轴不是互相独立的它们之间的同步关系是这台设备的核心。顺带说一句不同厂家设备“六轴”的定义会有差异比如有些把送纸/放卷单独算一个轴有些把往复式横封拆成上下刀两个轴但原理基本一样。1.2 为什么枕包机天生适合“PLC运动控制器电子凸轮”早期枕包机靠机械凸轮和齿轮箱来保证同步切刀轴和送膜轴之间是纯机械传动。机械方案最大的问题是改一次袋长要换凸轮或者调整齿轮比停机时间按小时算色标偏移只能靠人工调整机械相位很难在线修正。用电子凸轮之后就完全不一样了。横封切刀轴作为主轴连续旋转送膜轴按凸轮表跟随主轴角度两者之间不再是固定齿轮比而是可编程的位置关系。想改袋长就改凸轮表参数想修正切刀相位就加一个动态相位偏置停机时间从“小时级”变成“分钟级”。更关键的一点现代枕包机普遍要求“运动中修正”。比如色标传感器检测到印刷标记位置偏了如果等这一包停下来再调早就废了一堆膜。伺服系统和电子凸轮可以在运动过程中对相位做平滑修正这才是“定位控制”和“凸轮控制”结合的价值所在。普通继电器逻辑加变频器根本做不到这种精度和响应速度。1.3 六轴分配方案与同步关系我用一台滚刀式横封的枕包机举例主节拍轴选横封切刀轴其余轴都围绕它建立同步关系轴号工位执行机构同步方式调试要点1进料输送推料链伺服电子齿轮跟随主轴相位决定物料进入成型器的时间2送膜牵引送膜辊伺服电子凸轮从轴决定袋长、切刀位置接受色标修正3纵封纵封加热轮电子齿轮跟随送膜轴压力与加热温度配合4横封切刀旋转滚刀主轴相位基准刀隙、温度、凸轮曲线5出料输送皮带伺服电子齿轮跟随主轴和横封周期错相防止堆包6打码/喷码打码器伺服主轴相位触发在横封压合区之外触发这里的核心逻辑是横封轴每转一圈代表一个完整包装周期其他轴在一个周期内要完成各自工作。主轴虽然是实轴但在后续凸轮表设计里我更习惯把“主轴角度”抽象为0到360度的周期量这样每个周期内的所有动作都能对应到角度区间排查问题时非常直观。2. NJ501-1500方案选型与硬件架构一套能稳定跑高速的组柜思路2.1 为什么选NJ501-1500而不是“PLC运动控制卡”做这类设备传统的方案是普通可编程控制器配定位模块或者外置运动控制卡再通过通讯或硬接线握手。这种组合过去能用但维护起来很痛苦逻辑程序在PLC里运动程序在运动控制器里报警联动跨平台程序版本都不知道该从哪边同步。欧姆龙NJ501-1500是运动控制和逻辑控制一体化的控制器设备选型时我看中的是三个点第一运动控制和梯形图逻辑跑在同一个任务环境下凸轮表、轴位置、报警标志全部透明可见。现场调试时我在触摸屏上能看到轴的实时位置也能直接判断梯形图哪个网络把它们联锁住不需要来回切换软件。第二内置EtherCAT主站六轴伺服全部挂一条总线减少了硬接线和模拟量速度给定带来的漂移问题。轴与轴之间的同步在伺服驱动器内部走分布时钟同步抖动很小高速横封时稳定得多。第三编程环境统一。Sysmac Studio里面既能写梯形图又能写ST梯形图负责逻辑连锁ST负责复杂计算和凸轮表切换这种混合编程方式对多数电气工程师非常友好我后面会细讲。对比一下传统方案和这个方案的差异项目普通PLC运动控制卡NJ501-1500一体化程序环境两套软件两侧维护一个软件统一变量轴同步依赖通讯或者硬接线EtherCAT分布时钟凸轮表运动卡单独配置NJ内置凸轮表功能故障联动需要额外写握手逻辑同一任务中直接处理维护门槛要求同时懂两套系统掌握一套系统即可单纯从成本上说一体化方案可能比“普通PLC低端运动卡”贵一些但考虑到调试效率、故障率、后期维护我认为这笔投入是值得的。2.2 一套值得参考的组柜硬件清单与接线要点这台设备的硬件清单不算复杂重点是选型和布局明确硬件用途备注NJ501-1500 CPU逻辑运动控制内置EtherCAT主站Sysmac Studio编程调试梯形图、ST、凸轮表配置欧姆龙1S系列伺服驱动器和电机六轴驱动挂在EtherCAT总线上触摸屏操作与监控走EtherNet/IP连接CPU数字量IO模块急停、安全门、传感器分布式IO或CPU本地IO伺服电源、断路器、滤波器动力回路和弱电严格分开接线是我一直强调的重点。EtherCAT网线必须用带屏蔽的工业以太网线RJ45接头要压接可靠伺服动力线、编码器线、网线三者之间不能捆扎在一起走同一线槽。枕包机虽然不像机床那样有强干扰但高速横封滚刀的启停冲击会让伺服驱动器母线电压波动再加上变频器如果有的谐波干扰起来很隐蔽。我当时调整过的一个细节把伺服驱动器的散热风扇、开关电源的220V进线全部绕开EtherCAT网线电源地用星型结构回接到主接地排不要形成环流。现场有一段时间偶尔报通讯超时查到最后就是网线贴着一根伺服动力线走了三十厘米换线槽之后问题消失。2.3 轴参数规划单位、电子齿轮与行程保护NJ里建轴的时候第一件事是定义轴用户单位。建议所有直线轴都用毫米mm旋转轴用度°这样凸轮表数据、触摸屏显示和配方参数全部统一不容易发生单位换算错误。这里给一组送膜轴的规划示例。假设送膜辊直接连伺服电机没有减速机辊直径D100mm送膜辊周长C π × D 3.1416 × 100 ≈ 314.16mm伺服电机每转对应送膜长度 C 314.16mm电机轴用户单位设定为mm则1mm对应360/314.16 ≈ 1.1458度如果电机和辊之间还有减速机把减速比乘进去即可比如减速比i3那么电机每转实际出膜长度为314.16/3 ≈ 104.72mm。轴参数里有几个容易忽略的地方软件限位一定要设位置下限0mm上限要大于最大袋长以及手动调试行程避免误操作把机构顶坏。扭矩限制不要设得过低切刀在高速接触薄膜瞬间会有冲击扭矩上限太低会误触发过载报警。回原点和绝对编码器的策略要提前想好。增量编码器伺服断电后会丢失位置上电后必须回原点如果选绝对值编码器也要确认原点是否被保存在控制器内部否则换电池或者重新上电后相位依旧会乱。3. 电子凸轮从“能转”到“转得准”曲线计算、轴组配置与梯形图落地3.1 先把主轴和从轴的关系理顺枕包机的电子凸轮本质是在一个运动周期内定义“主轴位置”和“从轴位置”的一一对应关系。以我上面说的这台设备为例主轴是横封切刀轴主轴位置用角度表示0到360度代表一圈正好对应一个包装周期。送膜轴是从轴是电子凸轮的执行轴。为什么送膜轴要专门用电子凸轮而不是简单的电子齿轮因为电子齿轮只能保持固定比例但送膜轴在运行中还要做三件事切刀接触段的线速度匹配、色标偏差修正、张力波动补偿。如果只靠固定比例一旦色标检测到偏差送膜轴必须立刻相对主轴调整位置这时候就必须有一个可修改的同步位置偏置这就是电子凸轮的用武之地。纵封轴和出料轴可以用电子齿轮跟随因为它们要求的是严格的固定比例关系不需要在周期内变速。电子凸轮和电子齿轮分开用程序反而更清晰。3.2 一个具体凸轮表计算实例我直接给一组现场常见的参数拆开算一遍。假设目标生产速度120包/分钟袋长L200mm横封切刀轴每转一圈切一包。那么单个周期时间T 60 / 120 0.5秒送膜线速度v L / T 200 / 0.5 400mm/s主轴角速度ω 360 / 0.5 720度/秒主轴转一圈送膜轴必须累计送出200mm膜长这就是凸轮表的起点和终点约束主轴角度送膜轴位置说明0°0mm周期起点90°50mm等速段180°100mm等速段270°150mm等速段360°200mm周期终点这是线性凸轮相当于齿轮比关系。实际设备上不会直接用直线段因为薄膜从成型器出来后不是严格匀速横封滚刀压合瞬间会对膜产生一个极短的扰动所以凸轮表中间要加平滑过渡点让送膜轴在切入段稍微变速保证切刀接触时与膜的线速度一致。如果送膜辊直径100mm辊转一圈送膜314.16mm那一包200mm对应送膜辊转角是200/314.16×360≈229.2度。伺服电机如果带减速机还要再乘以减速比。这个值就是凸轮表“从轴从0到200mm”对应到实际电机物理轴的总位移但在NJ里我们直接以用户单位mm建表物理换算由轴参数自动完成。凸轮表主点之间Sysmac Studio会自动生成样条插值或线性插值。这里有一个我的独家经验不要为了省事全选线性插值。线性插值在拐点处加速度是阶跃跳变高速时会表现为机械振动、噪声大、伺服发烫。至少要选“三次样条”或者“梯形加速度曲线”并在仿真里观察从轴加速度曲线确保最大加速度在伺服允许范围内。3.3 梯形图里怎么调用电子凸轮NJ的运动控制基于PLCopen标准指令集。电子凸轮用的是MC_CamIn功能块。梯形图里做的事情其实就是“什么时候执行凸轮啮合”。我一般会在梯形图里这样组织网络网络一伺服使能条件。急停复位、伺服Ready、气压正常、安全门关闭这些触点全部串联输出到MC_Power功能块的Enable。网络二原点完成判断。主轴和送膜轴都完成回原点后置位一个内部标志位M_HomeOk。网络三调用MC_CamIn。当M_HomeOk为ON且自动运行信号为ON时MC_CamIn的Execute置ON功能块引用凸轮表编号。网络四停止条件。急停按下任一轴报警时MC_CamIn的Execute复位同时执行MC_Stop。如果梯形图里要做凸轮表切换比如从袋长200mm切换到300mm单纯用梯形图写也会比较啰嗦我的做法是在ST功能块里写一小段选择逻辑梯形图只负责调用这个FB// 凸轮表切换当袋长配方改变时执行 IF bChangeCamRequest AND M_HomeOk THEN MC_CamIn_Inst.Execute : FALSE; MC_CamIn_Inst.CamTable : D_CamTableId_New; // 新袋长对应的凸轮表号 MC_CamIn_Inst.Execute : TRUE; bChangeCamRequest : FALSE; END_IF;这种“梯形图为主、ST只干计算”的方式既保持了梯形图的可读性又不犟着用梯形图去写复杂函数。3.4 必须处理好的三类同步补偿电子凸轮能把精确同步关系建起来但现场依然会出问题核心原因是外部条件在变化。我最常处理的是三类补偿色标补偿。卷膜上每隔一段会有印刷标记色标传感器检测到标记时程序计算当前标记位置和理论位置的偏差。偏差在一定窗口内就通过MC_SetPosition或者凸轮表的相位偏置接口在当前周期内平滑地把送膜轴位置修正回去。注意修正量不要一下全部加进去最好分成几步否则送膜轴会像抽风一样抖动。张力补偿。放卷轴的张力波动会造成送膜辊实际送膜量变化特别在料卷直径变化的时候。如果设备配了浮动辊或张力传感器把模拟量信号接入模拟量输入模块偏差经过比例换算后作为送膜轴速度前馈叠加到凸轮输出上。温度补偿。纵封和横封加热温度高的时候薄膜受热会拉长尤其低速段更明显。成熟的设备会在配方里加一个“热延伸补偿系数”根据当前温度和袋长查表修正目标袋长。这个系数一开始可以按0.5%到1%设然后看切出来的实际袋长微调。4. 梯形图程序的“经典”是如何设计出来的层级、状态机与功能块封装4.1 任务周期与POU分区程序结构清晰不是靠后期整理注释整理出来的是建工程的时候就把边界画好了。欧姆龙NJ支持多任务我按这样的规则划分运动控制任务周期设为1ms或2ms负责轴控功能块和凸轮表切换所有MC_开头的指令都放在这里面。主周期任务负责IO刷新、安全联锁、模式切换、报警判断周期10ms。低速任务触摸屏变量交互、数据记录、温度PID逻辑周期50ms或更慢。POU程序组织单元的划分按功能域来而不是按“设备区域”来MainProgram梯形图主流程调用下面所有功能块。AxisInit回原点、轴使能、参数初始化。ManualControl手动模式下的点动、定位、报警屏蔽。AutoProcess自动模式状态机、凸轮啮合控制。FaultManager报警采集、停机处理、报警复位。RecipeManager袋长配方、速度配方、凸轮表映射。这样划分的好处是任何一个新手接手都能按图索骥看报警去FaultManager看手动逻辑去ManualControl看自动切换去AutoProcess不用在一大段梯形图里来回翻。4.2 手动、自动、报警三态状态机枕包机这种设备最忌讳的是“直接在一个梯级里到处置位复位”。程序里一定要有一个显式的运行模式状态字。我用的状态字是M_Mode标准值是0停机待机1回原点中2手动模式3自动运行中4报警停机5急停状态梯形图里用置位复位指令实现状态切换例如按下“自动启动”按钮且当前处于停机待机、原点已完成、无报警则复位M_Mode0置位M_Mode3。自动运行中按下“停止”或者检测到故障则复位M_Mode3置位M_Mode4或M_Mode0。报警复位后必须进入“回原点中”状态不允许直接跳回自动状态。状态机的核心原则是任何状态切换必须经过“停机待机”或“报警停机”这两个中间态不能从“自动运行”直接跳到“手动模式”这样能防止操作人员在设备还在运转时突然切手动导致轴动混乱。4.3 把功能块封装成“备用零件”梯形图写运动控制最怕的是每个轴的控制逻辑在程序里复制三遍改一个轴还得改另外两个。我的做法是做一个通用的“轴控制FB”引脚包含启动、停止、回原点、点动正、点动负、速度设定等内部封装了使能、报警、状态输出。以送膜轴为例梯形图里调用一个“AxisControl_Cam”功能块只需要输入“执行自动”“袋长选择”“色标修正量”几个变量功能块内部再调用MC_Power、MC_Home、MC_CamIn。这样做最大的价值是故障排查时不用钻进每一个轴看细节直接看功能块输入输出状态即可。封装功能块还可以把“轴号和凸轮表号”做成功能块内部变量在调用时传入。比如送膜轴传凸轮表1打码轴传完成标志。这样现场如果调整机械结构、更换电机减速比只需要改轴参数不用改梯形图逻辑。4.4 配方参数、报警代码、版本管理的工程化细节“结构清晰”到最后拼的是工程习惯。我总结了几条必须做到的细节第一变量名和注释要有规范。所有轴状态变量加前缀AX_比如AX_XF.Position、AX_SM.ActualSpeed数字量输入DI_输出DO_中间标志M_参数P_。梯形图网络必须有注释注释里写清“这个网络防止什么情况发生”而不是写“启动”这种一句话。第二袋长配方不要散落在程序里。用全局变量组或者配方数据块每袋长对应凸轮表号、横封刀相位偏置、送膜轴最大加速度、色标修正窗口。换品时一键调取程序几乎不用动。第三报警必须是“有准备的”。我习惯给每个报警分配一个16进制代码对应文本表里的一条描述同时在报警FB里记录发生时的主轴角度和袋长这样故障复现非常快。枕包机最头疼的“突发切刀相位偏移”问题靠这个功能能省下大量排查时间。5. 现场调试踩过的三个坑相位漂移、切割误差与伺服报警排查5.1 断电再上电相位漂移切刀打偏了调试过程中最让我印象深刻的坑是断电再上电后前几包总是切偏。第一次遇到时我还以为是凸轮表参数错了检查半天发现凸轮表没问题问题出在“轴位置重上电后没有恢复到一个物理已知相位”上。枕包机的横封轴和送膜轴之间存在严格的凸轮关系但这个关系依赖两个轴各自的当前坐标。如果伺服电机用增量编码器断电后控制器不知道电机在什么位置上电后如果不回原点就直接进入自动送膜轴的0mm和横封轴的0度并不会落在同一个物理配合点前几包自然就切偏了。处理办法有三步驱动侧尽量选绝对值编码器外接电池保持位置上电后控制器能直接读到绝对位置。每次重新上电不管是不是绝对值编码器都执行一次完整回原点流程且回原点顺序有讲究先把送膜轴回到原点位置再把横封轴回到刀口位置确保两个轴物理原点对应同一相位。进入自动前把横封轴当前角度强制写入凸轮表的“主轴相位基准”变量让MC_CamIn从当前实际角度开始而不是从默认0度开始。用这个流程之后断电再上电切偏的问题基本消失。5.2 色标追剪误差切刀压在了不理想的位置另一个高频问题是生产过程中色标越来越偏到最后切刀压到图案中间。这个坑我排了很久最终发现不是凸轮表的问题而是修正逻辑的窗口和幅度没调好。现象是这样的前100包很正常后面开始逐渐偏移偏移量还带着周期性。我先检查了机械送膜辊在直径方向有一点跳动但不是主要原因接着抓了数据记录发现色标偏差修正量一直在朝一个方向累积说明每次修正都没有完全消除偏差反而因为薄膜张力波动形成了新的偏差。最后我做了三个调整把色标修正量做了限幅单次修正不超过0.5mm避免修正过冲。增加了“修正窗口”判断只有当色标触发时主轴角度在允许范围内才执行修正否则等下一包。在送膜轴的速度前馈里叠加了张力浮辊信号把张力波动引起的送膜误差在源头压掉一部分。改完之后切刀位置稳定在±0.5mm以内。这个精度对于枕包机已经非常够用了毕竟薄膜本身的印刷公差也有误差。5.3 高速时伺服报警抖动过载还是干扰还有一次高速跑到150包/分钟时送膜轴偶尔报过载/过流复位之后又能跑几分钟非常折腾。排查链路我建议按下面这个顺序走检查项现象验证方式机械共振高速时电机座振动明显降低加速度试跑观察报警频率凸轮曲线加速度送膜轴实际速度波动大在Sysmac里查看送膜轴加速度曲线伺服刚性参数刚性过高响应过冲降低伺服增益观察跟踪误差编码器电缆干扰报警随机复位后偶发更换屏蔽网线分离线槽电源谐波/母线波动多轴同时高速时触发加滤波器检查驱动器母线电压那台设备最终定位在机械共振和编码器电缆干扰两个问题上。凸轮表加速段刚好落在机械固有频率附近横封压合瞬间又给轴一个冲击伺服为了纠正偏差电流加大再叠加电缆干扰误触发报警。解决方式是调整凸轮表拐点位置降低该段加速度把伺服动力线和编码器线彻底分开走线伺服刚性参数适当降低。改完之后高速跑了一个下午没有再报。5.4 我的调试心得和最终验证清单我现在的习惯是每次调完枕包机都要按这套清单过一遍缺一项都不敢说这台设备能交付断电再上电后能否直接恢复自动凸轮相位是否稳定色标修正量是否限幅修正窗口是否开启凸轮表主点之间用的什么插值加速度曲线是否平滑急停后各轴状态是什么重新运行时是否需要重新回原点送膜轴、纵封轴、横封轴在高速时是否有报警触摸屏上是否能看到主轴角度、送膜位置、色标偏差三个核心变量最后一个经验也是我现在看别人程序时最先看的一点主轴角度和送膜位置一定要能在监控画面里直观看到。程序写得再漂亮现场如果看不到相位关系出了问题就只能靠猜。把这三个量放出来枕包机的调试和故障排查难度至少下降一半。