枕包机六轴定位与凸轮控制:基于欧姆龙NJ的完整方案
枕包机这套东西在包装行业里算是典型的“多轴协同”设备送膜、制袋、充填、横封、切断、输出一环扣一环。欧姆龙NJ501-1500在这类设备上用得不少六轴定位控制加凸轮控制再把梯形图程序写得规规矩矩设备就能跑得又稳又顺。今天就从实际项目视角把枕包机电气控制的思路、轴参数整定、凸轮表做法和程序结构从头到尾捋一遍适合正在做枕包机、给袋包装机或类似多轴设备的电气工程师也适合维护人员借这个案例把NJ的运动控制逻辑看明白。你会发现NJ501-1500这种控制器真正拉开差距的不是指令记多少而是能不能把工艺需求翻译成轴配置、凸轮表和梯形图框架。这篇文章不绕弯子直接讲怎么把这套系统搭起来、调通、跑顺以及现场最容易踩的坑。1. 从工艺需求倒推控制方案六轴分工与机型选型1.1 六个伺服轴在枕包机上分别干什么枕包机说到底就是让一卷平膜在前进过程中完成成型、封口、切断变成一个一个独立包装袋。如果只用一个变频器带动整机横封凸轮只能靠机械齿轮箱分速换袋长就得换齿轮或调机械凸轮非常麻烦。现在用伺服轴替代机械传动目的就是让“袋长变化”和“封切相位调整”变成纯软件的事。这套系统里六个轴最常见的划分方式是轴名功能控制模式关键点放卷轴输出包装膜维持张力速度/张力摆动辊或张力传感器反馈牵引轴拉膜前进决定袋长定位/速度电子齿轮比校准、袋长基准纵封轴纵向封口热辊速度跟随必须与牵引轴严格同步横封轴横向封口凸轮从轴凸轮表、封切相位切刀轴切断袋间连点凸轮从轴可与横封联动或独立输出轴输送成品袋速度与主机速度比例跟随有的机型会把切刀和横封做成一体机械结构这时六轴里就可能是充填轴或下料轴但控制思路是一样的一个主轴定袋长一到两个从轴做凸轮同步其余轴做跟随或定位。NJ501-1500这类控制器本质上就是个“逻辑运动”一体化平台你不需要再单独配一个运动控制器去处理CAM曲线梯形图里直接调指令就能完成凸轮同步。这也是它适合枕包机的原因——逻辑扫描、运动控制、伺服通讯在一个系统里闭环时序简单。1.2 为什么选一体化控制器而不是传统“PLC加定位模块”很多老师傅习惯用“PLC定位模块”或者“PLC运动控制器”的结构。这种组合没问题但有个麻烦PLC和运动控制器是两个程序联调时要来回协调扫描周期、通讯握手、报警传递。枕包机这种需要横封凸轮和送膜轴严格同步的设备一旦逻辑层和运动层的周期错开几个毫秒封口点就会飘。用NJ501-1500梯形图程序里可以直接调用PLCopen运动控制指令轴状态、凸轮状态都映射成变量逻辑层和运动层在同一个控制器里同步执行。简单说逻辑是大脑运动是手脚以前大脑和手脚是通过神经传递信号现在直接长在一起了。选型上还要考虑一件事这台控制器走EtherCAT总线六台伺服串在一条网线上省掉了传统脉冲控制的一大堆高速脉冲输出点也不存在脉冲丢失的问题。对于维护人员来说查线也轻松从站断了系统直接报站号定位很快。1.3 梯形图依然有它的价值现在很多人一提到运动控制就只写ST觉得梯形图Low。但包装设备现场维护工程师的普遍习惯还是看梯形图因为生产一线的故障往往不是运动算法的问题而是“门没关、急停被拍、传感器没感应到”这类开关逻辑问题。所以这套项目的思路是主流程、互锁、模式切换全部用梯形图轴参数计算、凸轮表切换这些算术逻辑封装成功能块或ST。这样既保留梯形图的直观性又能在数据计算上利用ST的便利。程序结构清楚现场改起来也不慌。标题里那句“程序经典、结构清晰”说的就是这个意思。2. 六轴定位的组态与参数整定从脉冲换算到回原点2.1 轴单位换算把“每转多少脉冲”变成“每毫米多少脉冲”NJ的轴组态里单位可以设成mm、度、脉冲。很多人图省事直接用脉冲单位因为伺服驱动器默认就是脉冲。但设备到了车间维护人员看轴位置显示“123456 pulse”根本不知道对应的袋长是多少调试时还得拿计算器反推。所以我建议直接把单位设成工程单位毫米或度让触摸屏上的显示和实际机械尺寸一致。换算关系很直接伺服电机每转对应的机械位移取决于减速比和传动机构。假设牵引辊同步轮直径80mm周长π×80≈251.3mm伺服电机到牵引辊减速比3:1电机编码器分辨率2500线四倍频后每转10000脉冲。电机转一圈牵引辊转1/3圈膜走251.3÷3≈83.8mm。那么每毫米对应的脉冲数就是10000÷83.8≈119.3。在Sysmac Studio里把“每转指令单位”和“每转脉冲数”填进去系统会自动按算好的电子齿轮比工作。重点提醒一句电子齿轮比在驱动器端和控制器端只能选一头设不要两边都做否则等于串了两个比例系数改一个地方容易乱套。我习惯的做法是驱动器电子齿轮设成1:1所有比例全部在控制器轴组态里处理这样程序备份里有据可查。2.2 回原点方案怎么定顺序怎么排回原点是这台设备调试时第一个容易出问题的地方。NJ的MC_Home指令支持多种方式枕包机上我用得最多的是“原点输入Z相信号”方式伺服先以设定速度找原点传感器传感器亮起后用Z相脉冲精确锁定位置。只要传感器安装位置合理重复精度基本可以保证在几个脉冲以内。回原点的顺序很关键。不能六个轴同时去找原点得按工艺关系排先回牵引轴和放卷轴让膜路有一个基准位置再回横封轴让横封辊停在热封初始角度然后回切刀轴让切刀与横封建立相位关系最后回纵封轴和输出轴因为这两个轴取决于前几个轴的位置。如果回原点顺序反了比如横封还没回到位切刀就去找原点后面对齐相位时就会发现两个轴的参考角度对不上封口花纹错位。2.3 定位指令的加减速设置送膜轴最怕什么送膜轴、牵引轴高速动作时加减速设置直接决定膜会不会拉断、会不会堆料。NJ的MC_MoveAbsolute、MC_MoveVelocity都支持加减速时间和加加速度S曲线设置。我调试时习惯先按“1秒加速到设定速度”给一个保守值等跑顺了再把加减速时间往下压而不是一上来就追求快。送膜轴最怕的是加加速度太大也就是速度变化太快。膜这种东西弹性很大牵引轴突然加速膜会被拉伸袋长就变了突然减速膜会松堆横封时容易起皱。所以送膜轴和牵引轴我一般设S曲线加减速让速度变化更柔和。横封轴因为要追主轴相位加减速反而要干脆不然跟不上。还有一点经验定位指令的加减速时间和速度值尽量做成配方变量不要写死在程序里。因为不同膜材、不同袋长对加减速的要求不一样现场换一次膜就要调一次做成触摸屏参数省得每次改程序。3. 电子凸轮的关键设计横封和切刀如何跟主轴严格同步3.1 电子凸轮解决了机械凸轮的哪些麻烦传统枕包机的横封和切断是靠机械凸轮驱动的凸轮形状决定了封切动作和送膜动作的时序关系。一旦袋长变化要么换凸轮要么调齿轮箱停机时间长不说备件还得一堆。电子凸轮的本质就是用一个“主轴角度—从轴位置”对应表取代物理凸轮。主轴可以是牵引轴的实际反馈位置也可以是虚拟主轴从轴是横封或切刀伺服。两个轴之间不再有机械连接同步关系完全由凸轮表决定。在NJ里MC_CamIn指令把从轴“挂”到主轴上主轴转动时从轴按凸轮表的曲线跟随。用电子凸轮以后换袋长就变成切换凸轮表的事。一条产线做五六种规格的袋子程序里保存五组凸轮表触摸屏选一下袋长设备自动切换几分钟就能换规这在以前是不可想象的。3.2 凸轮表怎么生成主轴角度与从轴位置的对应关系凸轮表是电子凸轮的核心也是调试中信息量最大的部分。建立凸轮表前要先定义好主轴角度对应的物理意义。假设牵引轴转一圈对应一个袋长200mm那么主轴角度从0°到360°膜走完200mm。横封辊要在膜走到200mm的瞬间完成一次封切所以凸轮表的逻辑就是主轴0°时横封位于开卷位置主轴接近360°时横封完成一次旋转封切回到起点。这里有个知识点旋转式横封辊的封切动作通常只需要横封轴转半圈也就是180°因为横封辊上有两把刀转半圈就完成一次对滚。因此凸轮表从轴行程设计在0°到180°之间曲线按修正梯形或正弦加速度来规划避免速度和加速度突变。实际做凸轮表时我一般把主轴角度每1°取一个点生成360个点从轴位置按曲线公式计算。NJ的凸轮编辑功能可以手工建表也可以从外部表格导入。我的习惯是先用Excel或专门的小工具算好曲线再导入控制器这样曲线平滑性和加速度都能提前算清楚。修正梯形加速度曲线是工程上最常用的因为它的加速度变化平缓对机械冲击小高速运行时横封辊不会有明显顿挫感。如果你用直线过渡从轴速度会突变加速度理论上无穷大高速时机械要么抖要么封切位置漂。3.3 凸轮切入切出与在线相位微调程序里调MC_CamIn不是随便一挂就完事。凸轮切入有个前提主轴和从轴都必须处于凸轮表的起始角度否则切入瞬间从轴会猛跳一下轻则封切错位重则撞机械。所以NJ的MC_CamIn有MasterStart和SlaveStart参数用来指定切入时主轴角度和从轴位置。程序里一般需要先判断当前主轴角度等它到0°也就是一个袋长周期起点时再触发凸轮切入。设备连续运行过程中如果需要调整封口花纹相对袋身的位置不需要停机改凸轮表用MC_Phasing指令直接给从轴加一个相位偏移就行。每次偏移量我设定为0.1°触摸屏上放两个按钮一个“相位”一个“相位-”运行中就能微调。实际效果就像微调机械凸轮的初始安装角但精度高得多。切刀轴如果是独立的还要注意切刀凸轮表和横封凸轮表之间的相位差。通常切刀动作滞后或超前横封一个固定角度这个角度也做成一个可在线调整的配方变量。3.4 现场调整凸轮时要盯住哪几个指标调试凸轮时我最关注三件事跟随误差、负载率、封切痕迹。跟随误差就是从轴实际位置和凸轮表理论位置的差值。NJ里可以直接监控MC_CamIn的跟随状态正常情况下这个误差应该在几个脉冲以内。如果误差持续偏大说明主轴转速波动大或者伺服增益偏低先别急着改凸轮表。负载率可以从伺服驱动器上读如果某个速度段负载率突然飙升大概率是凸轮曲线在加速度峰值的机械冲击太大可以适当把曲线改缓。封切痕迹是最终检验标准横封花纹正不正、间距是否均匀、有没有拉丝和飞边。出现拉丝一般是封切速度追不上主轴速度检查凸轮表封切段的速度是不是和膜速匹配出现飞边则可能是横封压力没跟上那就不是程序问题了得看机械和气压。4. 梯形图程序的经典结构六个区段划分与可维护性4.1 按功能分区初始化、手动、自动、轴控、报警、配方“程序经典”的前提是分区清晰。我见过很多枕包机程序上万步梯形图全部平铺在一个任务里找一段逻辑全靠翻页这种程序维护起来非常痛苦。合理的做法是把程序分成六个功能块区区段名称主要功能维护要点初始化区上电轴参数加载、初始状态复位、配方装载每次上电必须执行手动区单轴点动、回原点、手动盘车、安全门互锁点动速度限制要单独设自动区启动/停止、模式切换、运行状态机启动条件集中在这里轴控制区回原点指令、凸轮切入切出、定位指令调用指令使能条件必须完备报警区驱动器报警、急停、温度、气压、张力异常报警复位必须有先决条件配方区袋长、速度、温度、凸轮组号切换切换前要确认轴停止状态每个区段之间用变量关联比如自动区产生一个“自动运行中”标志轴控制区用这个标志做MC指令的使能条件。不要让轴控制区自己去判断模式那样逻辑会交叉得一塌糊涂。4.2 双线圈和逻辑互锁老生常谈但最见功底梯形图编程里最常见的毛病就是双线圈输出——同一个线圈在两个不同的网络里各写一次。手动模式写一个“运行中”线圈自动模式又写一个“运行中”线圈最后程序按扫描顺序后写覆盖先写逻辑就乱套了。我的原则是一个线圈在整个程序里只允许输出一次其他需要用到这个状态的逻辑都以这个线圈的常开点或常闭点作为输入。这样排查故障时顺着触点就能找到唯一的输出源。互锁方面枕包机有几个位置必须做硬互锁横封凸轮切入前必须确认横封轴已回原点、主轴已建立反馈安全门打开时所有伺服必须断电使能或处于安全停止状态手动模式与自动模式之间要互锁不能手动运行中还能触发自动启动。程序互锁再多也不嫌多因为现场工人的操作习惯五花八门有人就喜欢手动、自动来回切。4.3 典型启动逻辑梯形图拆解启动逻辑看起来简单但最容易漏条件。一台完整的枕包机启动至少要满足以下条件无急停、无报警、安全门关闭、气压正常、加热温度到达设定范围、所有轴回原点完成、放卷张力建立、自动模式已选择。梯形图的写法是把这些条件都串在一个“自动运行允许”网络里常开和常闭触点按逻辑串联输出一个运行允许标志。启动按钮只是触发“运行中”线圈置位停止按钮和故障信号则复位这个线圈。关键点在于启动按钮按下时如果马上出现了某个条件不满足程序不能只是不动作而是要在触摸屏上报出具体是哪条不满足。所以我会把每一个启动条件单独用一个中间变量输出触摸屏上显示“左封温度未到”“横封未回原点”等具体文字而不是只报一个笼统的“不能启动”。4.4 运动控制代码的封装梯形图为主ST功能块为辅其实NJ是支持梯形图、ST和功能块混合编程的。我的做法是MC_Power、MC_Home、凸轮切入这些重复使用的运动控制指令封装成功能块梯形图里只保留条件和输出状态。举个简单的功能块例子把凸轮表选择和凸轮切入封装成FB_CamControlFUNCTION_BLOCK FB_CamControl VAR_INPUT bEnable : BOOL; (* 凸轮使能 *) uiCamNo : WORD; (* 凸轮表组号 *) bMasterRunning : BOOL; (* 主轴运行状态 *) END_VAR VAR_OUTPUT bCamInDone : BOOL; (* 凸轮切入完成 *) bError : BOOL; END_VAR VAR fbCamSel : MC_CamTableSelect; fbCamIn : MC_CamIn; bSelDone : BOOL; bSelBusy : BOOL; bInBusy : BOOL; END_VAR梯形图里调用这个功能块几个网络就能完成原来几十行的逻辑。功能块内部处理指令的触发和状态转换外面的人看不到细节也不会改坏。这样程序的层次感就有了顶层逻辑用梯形图一眼看懂底层运动算法封装掉不用天天翻。5. 调试现场的高频故障与排查实录5.1 上电后伺服使能失败的常见原因枕包机调试第一步通常是轴使能。NJ的MC_Power一触发伺服就应该进入准备状态。如果使能不成功别急着改程序先看几个地方。首先查STO安全回路。现在伺服驱动器的安全转矩关闭功能很常见安全门开关、急停触点任何一个断开STO就激活MC_Power怎么给使能都没用。很多新手在触摸屏上看到“使能失败”第一反应是查EtherCAT通讯其实往往就是门没关严。再看驱动器报警代码。伺服驱动器自己会报过流、过压、编码器异常等这些报警会通过EtherCAT传给控制器NJ报警区里应该能看到。我遇到过一台机器第二个轴一使能就报过载查了半天发现是抱闸没打开。机械抱闸由继电器控制程序里必须先把抱闸输出置位再触发MC_Power顺序反了轴一动就堵转。最后确认轴原点是否完成。如果程序设置了“未回原点不允许使能”的逻辑轴上电后默认在未知位置自然使能不了。这时要把回原点流程走完或者确认设置了原点保持比如绝对值编码器。5.2 凸轮跟随抖动和相位跑偏怎么查凸轮抖动是枕包机高速运行时最头疼的问题现象是横封在封切位置“哆嗦”封口线不直。排查时我按以下顺序来先关掉凸轮跟随让横封轴开环做一个匀速旋转看看机械本身有没有周期性负载波动。如果匀速时负载率已经明显波动那是机械问题比如齿轮箱磨损、轴承间隙、同步带松紧不一跟程序无关。再检查凸轮曲线。把凸轮表导出来看加速度曲线如果加速度曲线有突变尖峰说明凸轮表生成时没有按平滑曲线计算。我曾经处理过一台机器凸轮表是用直线近似S曲线算的每个角度区间之间速度阶跃低速时看不出问题速度一上100包/分钟就抖换用修正梯形曲线后立刻稳定。然后是主轴反馈。凸轮跟随的好不好前提是主轴角度反馈要准确。牵引轴伺服电机的编码器如果有松动或者伺服增益太低主轴角度本身就有微小振荡从轴再按凸轮表放大抖动就明显了。这时候要先把主轴的速度环调稳。5.3 袋长不稳定的追因思路袋长忽长忽短是所有枕包机最头疼的问题因为原因实在太多了。我遇到过的案例里按发生频率排序是一是电子齿轮比或机械系数换算不对。表现为所有袋长都偏差同一个比例比如设定200mm实际201.5mm。这种是固定比例偏差重新校准牵引轴的每毫米脉冲数就好。二是张力波动。放卷轴张力不稳膜在牵引过程中被拉伸量不同袋长就跟着变。这种往往伴随膜表面张力感测不准、摆动辊浮动超范围。处理方法是在牵引轴定位时加张力闭环让放卷轴实时补偿膜卷半径变化带来的张力变化。三是温度影响。热封温度不稳定膜受热收缩量不一样横封位置就会漂。这种问题在开机初期最常见因为温控PID没调好温度过冲大膜的热缩量一直变。建议在温度稳定后再启动自动运行温度波动控制在±2℃以内。四是程序扫描问题。如果梯形图里有大量运算导致主任务周期变长轴指令的执行时刻会抖动袋长也会不稳定。我见过有人在自动区里做了几百行的数组运算把一个5ms周期的任务拖到30ms凸轮同步精度直接报废。对于NJ这种控制器重运算务必放到独立任务或低速任务里别挤占运动控制周期。5.4 EtherCAT通讯和程序下载的坑EtherCAT看着就是一根网线串所有伺服实际调试中问题也不少。最常见的是“从站掉线”出现的原因往往是连接器松动、现场电磁干扰或从站供电不足。排查掉线我习惯先在Sysmac Studio里看从站诊断界面哪一个站断的一目了然。然后再查这个站的连接器有没有插紧屏蔽层有没有接好伺服电源是不是和编码器线走在一起。枕包机的伺服和变频电机距离近动力线干扰如果屏蔽处理不好EtherCAT虽然抗干扰强但长距离高速传输下也可能出问题。程序下载有个容易毁人的习惯直接用在线模式修改程序后下载把旧程序覆盖了。如果当前运行的版本是调好的改完下载后发现新逻辑有问题想退回旧版本却发现没备份只能现场重新排查。我每次都先把项目在Sysmac Studio里整体备份版本号加日期比如“枕包机_v2.3_20240115.smc2”再下载。6. 新设备试车与日常维护的实操经验6.1 试车顺序从单轴点动到高速连续新设备到现场或者旧设备改了控制方案试车顺序一定要按阶梯来不能上来就打自动。第一步单轴点动。把六个轴挨个点动确认方向对不对行程有没有干涉伺服参数是否正常。第二步单轴回原点。每个轴单独回原点确认原点传感器位置、回原点和方向、Z相是否正常。回完原点后记录各轴当前位置确认机械基准是否合理。第三步手动脉冲运行。用手动脉冲发生器让牵引轴低速走一段确认电子齿轮比是否准确袋长计量是否一致。第四步凸轮单机测试。让横封轴和切刀轴作为从轴跟随虚拟主轴运行观察凸轮曲线动作是否平滑、有没有冲击。第五步带膜低速联动。送膜、纵封、横封全部联动先按最高速度的30%跑观察封切位置和袋型。第六步逐步提速。每提高20%速度观察负载率、跟随误差、封切质量记录数据。如果有异常立即降速回退排查不要硬顶着高速跑。每一步都要有记录尤其是负载率和跟随误差。后面设备出问题这些数据就是判断设备状态的重要参照。6.2 交接维护时一定要留下的文档清单设备交付给使用方时光有程序不够维护人员需要的是一套完整的“救命文档”。我自己整理维护资料时至少包含以下内容轴参数表每个轴的电子齿轮比、加减速参数、回原点参数、软限位写明设定值和修改日期。没有这张表后期维护人员根本不敢动参数。凸轮表说明每个配方对应的凸轮组号主轴和从轴的对应关系相位偏移量的初始值。这些如果只存在程序里换一个人来看就会很吃力。触摸屏参数清单袋长、速度、温度、相位微调这几个关键参数在哪个页面、默认值是多少、调整范围是多少。常见故障对照表把调试期间遇到的所有故障现象和处理方法整理成表格贴在电气柜门内侧或者做成PDF存到触摸屏里。报警代码表伺服报警和控制器报警的解释以及对应的处理步骤。我见过太多设备程序跑得好好的但维护人员看不懂一个参数不敢动稍微异常就叫厂家远程。有一套清晰的文档很多小问题现场就能解决。6.3 程序版本管理与备份习惯前面提过下载程序要先备份这里再强调一下版本管理。枕包机这种设备说到底是生产工具程序改动了如果没记录半年后没人说得清楚当时为什么改。我自己的习惯是每次修改程序前先导出当前项目备份到一个固定的文件夹文件名带版本号和日期修改完成后写一个简单的改动说明文档比如“修改了横封凸轮切入条件解决了高速时相位偏移”放到同一个文件夹文件夹以设备编号命名集中管理。这样做的最大好处是一旦新版本上线后发现问题可以马上对比旧版本逻辑快速定位差异。这个习惯坚持下来程序维护的工作量能少一半。关于备份还要说明一点备份文件不要只存在电脑上最好也放到控制器的内置存储里或者U盘备份。现场电脑中毒、硬盘损坏的事情不是没发生过多一份备份多一份保障。最后再分享一点个人体会。做这类设备调试久了我的感受是电气控制的难点从来不在指令本身而在你对工艺的理解是否到位。六轴定位也好凸轮控制也罢本质上都是在解决“膜走到哪、封切怎么动、袋子怎么成型”这几个问题。程序结构清晰的意义也不只是为了好看而是半年后设备出故障时你能在一个小时内找到问题而不是翻三小时程序还在原地打转。记住这句话能让你一年后还在庆幸当初写清楚的程序才是真正经典的程序。