枕包机这套东西,在包装行业里算是典型的“多轴协同”设备:送膜、制袋、充填、横封、切断、输出,一环扣一环。欧姆龙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_CamControl:
FUNCTION_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盘备份。现场电脑中毒、硬盘损坏的事情不是没发生过,多一份备份多一份保障。
最后再分享一点个人体会。做这类设备调试久了,我的感受是,电气控制的难点从来不在指令本身,而在你对工艺的理解是否到位。六轴定位也好,凸轮控制也罢,本质上都是在解决“膜走到哪、封切怎么动、袋子怎么成型”这几个问题。程序结构清晰的意义,也不只是为了好看,而是半年后设备出故障时,你能在一个小时内找到问题,而不是翻三小时程序还在原地打转。记住这句话:能让你一年后还在庆幸当初写清楚的程序,才是真正经典的程序。