
包膜机这个项目我从接手到稳定量产花了差不多四个月中间踩过的坑比想象中多。这篇东西不打算写得像产品说明书那样一条条念参数就按我自己做项目时的推进顺序——工艺拆解、程序架构、HMI组态、联调排错——把整个思路和一些关键细节摊开来讲希望能给正在做类似包装设备项目的朋友省点弯路。1. 包膜机控制需求到底在控什么先把工艺动作拆明白很多人一上来就急着写程序其实做非标设备或者说做单机自动化第一件事永远是把工艺吃透。包膜机听着名字简单但不同行业里的“包膜”差别极大。我这次做的是一台热收缩膜包装机用在食品日化线的后端把成摞的纸盒或者瓶装产品用PE热收缩膜裹紧再经过收缩炉加热让薄膜紧贴产品表面。整套设备从动作拆解上看大致分六个环节。1.1 六个核心工位和它们的时间配合关系第一个是送膜机构由主动送膜辊和从动张紧辊组成膜卷经过导辊进入成型器这个环节最关键的是送膜速度要和主输送线保持同步否则薄膜要么拉断要么堆积起皱第二个是成型器把平膜折成筒状包住产品第三个是横封机构一般用气动或伺服驱动的封刀做上下压合把前后产品的膜切断封口这个环节最怕封刀温度不够导致封口不牢或者温度过高把膜烫穿第四个是纵封机构封住膜筒的纵向搭接缝第五个是整型推料机构把包好的产品推到收缩炉入口的输送带上最后才是收缩炉利用热风循环让膜收缩贴紧产品。从控制角度说这几个工位的动作不是简单的顺序执行而是存在重叠和节奏匹配。比如横封在封切时送膜不能停否则下一包的长度就不够推料机构必须在横封抬起之后立刻动作但又要避开封刀落下的时间窗。我当时用了一个很土但有效的办法画工位时序图把每个气缸和电机的动作时间轴画在一张纸上标出哪些动作可以并行、哪些必须互锁然后才去分配PLC的I/O和编写程序框架。1.2 从设备动作推导I/O点表和硬件选型时序图出来之后I/O点表就顺理成章了。这台设备我统计下来数字量输入大概需要24点——前后门安全开关、急停、各气缸的原位和到位磁性开关、送膜和输送变频器的运行反馈、缺膜检测、堵包检测等数字量输出大概18点——各气缸的电磁阀、蜂鸣器、三色灯、封刀加热接触器、变频器启停。另外横封和纵封的封刀温度需要两路热电偶输入收缩炉温度需要一路膜长检测的编码器需要一路高速计数器。控制器选型上我直接用了S7-1200 CPU 1214C DC/DC/DC集成14DI/10DO扩展一块SM 1223数字量模块解决输入点不够的问题再加一块SM 1231 AI 4×13bit处理四路模拟量温度这块其实用SM 1231 RTD模块更专业但当时手里刚好有现货的热电偶变送器就直接把4-20mA信号送进模拟量模块了实际用下来精度也够。这里多说一句CPU选择时要把程序复杂度和通信需求考虑进去1214C的工作存储器有100KB对于这种中小型设备来说绰绰有余没必要盲目上1500系列。信号类型点数用途DI 24V DC24安全开关、气缸到位、变频反馈、检测传感器DO 24V DC18电磁阀、接触器、三色灯、蜂鸣器AI 4-20mA3横封温度、纵封温度、收缩炉温度HSC编码器输入1送膜长度检测通信接口2触摸屏以太网、变频器Modbus RTU硬件清单定下来之后电气图纸的绘制、柜内布局这些我就不展开了但要提醒一句包膜机现场往往有变频器和加热元件这两样都是干扰源PLC的24V电源最好是单独的开关电源传感器和电磁阀的电源分开走模拟量线用屏蔽双绞线且单端接地这些基础的抗干扰措施如果前期不做后面联调够你喝一壶。2. S7-1200程序架构手动单步、自动连续、配方切换这三层必须分开写程序架构是我觉得最能体现一个电气工程师水平的地方。很多人写设备程序喜欢从头到尾一个OB1堆到底几百个Network摞在一起当时能跑就谢天谢地了。但设备一多、工艺一改这种程序就是灾难。我写包膜机程序用的是“状态机功能块”的思路把整个程序分成三层。2.1 主程序框架OB1调度与FB功能块的划分逻辑OB1只做三件事调用初始化功能块、调用模式管理功能块、调用各个工艺功能块。工艺功能块按工位划分送膜控制一个FB、横封一个FB、纵封一个FB、推料一个FB、温度控制一个FB、输送线一个FB。每个FB内部再用步序控制这样改任何一个工位的逻辑都不用动其他工位排查问题也方便。温度控制我单独拿出来做成一个FB没有和主流程混在一起因为温度是连续控制而动作是离散控制两者的扫描周期需求完全不同。温度PID的采样周期我设的是500ms动作逻辑的扫描周期就是PLC默认的OB1循环两者互不干扰。这里要详细说下程序里几个关键块的写法因为我发现很多人对S7-1200的FB和DB使用有些误解。2.2 手动/自动/回原点三种模式的互锁设计设备操作模式我分了三档手动模式、自动模式、回原点模式。手动模式用于调试和维修每个气缸和电机都可以单独动作但安全门打开时必须强制停止所有运动部件——这里我用的是一个带安全等级的中断OB而不是简单地写个IF判断因为PLC扫描周期内如果安全信号变化扫描不到就可能发生设备伤人的风险。回原点模式用在开机或急停复位后让横封机构、推料机构回到初始位置这个模式优先级介于手动和自动之间。三种模式的切换必须在程序里有严格的互锁逻辑。我的做法是在模式切换时先把所有输出复位一遍然后延迟200ms再执行新模式下的第一拍。这个200ms的延迟保证了气缸电磁阀有足够的泄压时间避免两个模式切换瞬间发生误动作。自动模式下手动按钮无效——但调试时经常需要临时微调某个气缸的位置所以我加了一个“自动暂停后允许单步”的功能在暂停状态下可以手动操作单个气缸但重新启动前必须要把所有手动操作过的气缸回到自动状态下的期望位置这个检查逻辑放在自动启动条件里。2.3 横封切断的核心逻辑编码器测长与飞剪式同步横封是整个包膜机里技术上最有意思的部分。薄膜是连续送进的但横封刀是上下往复运动的要在薄膜连续运动的情况下完成封口加切断这对运动的同步性要求很高。我用的方案是飞剪式控制编码器装在送膜辊上PLC通过高速计数器实时读取膜长位置当检测到累计长度达到设定膜长时触发横封气缸下降。这里面有两个关键参数一是横封触发提前量二是封刀接触时间。触发提前量怎么算要看气缸从电磁阀得电到封刀真正压住薄膜需要多长时间这个时间包括电磁阀响应时间约20-40ms、气缸动作时间取决于气压和气缸缸径一般50-150ms。假设总滞后是100ms送膜速度是0.5m/s那提前量就是50mm。所以程序里我在高速计数器累计值达到“设定膜长 - 提前量”时就发横封下降指令。这个提前量我在触摸屏上做成可调参数方便现场根据实际效果微调。封刀接触时间的控制则是通过气缸磁性开关反馈和定时器配合完成的封刀压住薄膜后保持200ms左右让薄膜充分熔化粘合再抬起这个保持时间也做成了可调参数。设置得太短封口强度不够太长则会烫穿薄膜实际调试时我通常从250ms开始往下调观察封口质量来确定最优值。2.4 温度PID控制在S7-1200里的具体实现S7-1200的PID控制有现成的PID_Compact指令比S7-200 SMART时代手写PID算法省力不少。PID_Compact我用的是带前馈的版本因为在收缩炉温度控制里有个明显的特点——产品刚进炉时冷负载会吸收大量热量导致炉温明显下降如果只靠PID反馈去调节温度回滞时间会很长影响收缩质量。我加了一个前馈量当检测到推料机构动作时PID输出叠加一个固定的加热功率增量相当于预先判断负载变化这样炉温的波动幅度大概能减少一半以上。PID参数整定我用的方法是先只加比例项从小往大调直到温度出现等幅振荡记录此时的比例增益和振荡周期然后根据经验公式计算PID参数再微调。实际跑到最后横封温度控制的稳态精度在±2℃以内收缩炉在±5℃以内对于热收缩膜工艺来说已经完全够用。这里给个实用参数范围供参考如果封刀温度设定在150℃左右比例系数在8-15之间积分时间在60-120秒之间微分时间建议设0因为温度对象本身惯性大微分容易引入噪声。3. 威纶通触摸屏组态不是画画面而是设计操作逻辑触摸屏这块我用的是威纶通MT8071iP10寸不到但对于这台设备来说刚好——挂在机架上不占地方操作工戴手套也能准确点按。威纶通和西门子的搭配在包装机械行业非常常见因为威纶通对S7-1200的以太网通信支持得非常好驱动成熟设置简单。3.1 画面架构从开机到故障恢复的操作路径规划触摸屏的画面设计我遵循一个原则——操作工不看使用手册也能用。我把画面分成三个层级一级是主监控画面显示设备当前状态、产量计数、故障报警信息、主要运行参数温度、速度、膜长同时提供“自动启动”“自动停止”“急停复位”三个大按钮这是操作工日常工作停留时间最长的画面二级是参数设置画面包括配方管理、温度设定、速度设定、膜长设定、气缸动作时间设定等这个画面需要密码权限才能进入三级是手动调试画面对应PLC里的手动模式可以逐点操作各个气缸电机这个画面不仅现场调试用设备维修时也靠它来排查故障。这个三级架构看起来简单但很多设备厂做出来就是一锅粥所有参数堆在同一个画面里操作工误触的概率极高现场维护的工程师改参数还得在一堆控件里翻找。我的建议是每一级画面只保留必要的操作项其他东西统统放到子页面去。3.2 变量关联与S7-1200通信的地址映射配置威纶通和S7-1200的通信配置我说的具体一点。新建工程后在“设备列表”里选择PLC类型为“Siemens S7-1200”通信接口选以太网填入PLC的IP地址。S7-1200的默认IP是192.168.0.1实际项目里我改成192.168.1.10触摸屏设成192.168.1.11直接网线连接或者通过交换机都可以。关键点是必须勾选“Fetch/Write通信”因为S7-1200默认不开放非优化DB块的访问威纶通需要这个选项才能正确读写PLC的数据块。变量关联时我踩过一个比较深的坑就是S7-1200默认的DB块是“优化访问”模式这种模式下变量的偏移地址是由编译器自动分配的外部设备无法按固定地址访问。所以凡是需要触摸屏读写的DB块必须在建立DB时取消勾选“优化的块访问”这样变量才会有固定的偏移地址威纶通那边才能映射上。这是我做这个项目时最初遇到的典型问题第一次映射变量时全部显示读取失败后来查资料才搞清楚原因。地址映射的规则是这样位变量用“DB块号.DBX偏移.位号”来表示比如DB3.DBX0.0字节变量用“DB块号.DBB偏移”字变量用“DB块号.DBW偏移”双字用“DB块号.DBD偏移”。在威纶通的“元件”属性里设备地址这一栏按这个格式填。例如配方中横封温度的保持时间存在DB10.DBW10那触摸屏上对应的数值显示元件的地址就是DB10.DBW10。位置PLC地址HMI地址格式数据类型用途横封温度设定值DB10.DBD0DB10.DBD0REAL触点压力保持时间膜长设定值DB10.DBW8DB10.DBW8INT送膜长度横封提前量DB10.DBW10DB10.DBW10INT飞剪触发提前量当前膜长位置ID1000ID1000DINT编码器高速计数实时值3.3 配方功能与权限管理在包膜机上的实用设置包膜机换产品规格时膜长、温度、速度这些参数都要跟着变如果每次都在触摸屏上一个一个改不仅效率低而且容易出错。威纶通的配方功能正好解决这个问题。我在配方里建了三个通道——A规格、B规格、C规格每个通道包含横封温度、纵封温度、收缩炉温度、膜长、送膜速度、横封触发提前量、封刀接触保持时间这七个变量。换规格时操作工进入配方画面选好通道点“写入PLC”所有参数一次性灌进去整个过程不到五秒。配方数据的存储位置在触摸屏的内部存储器里换电也不会丢。我建议设备出厂时每个配方通道的默认值都调好现场用户直接调用就行这也是减少售后技术支持量很有效的一招。权限管理这里多说一句。操作工能进的画面只有主监控和配方选择参数设置画面我设了二级密码只有设备工程师知道手动调试画面设了三级密码基本上只有厂家调试人员和设备主管能进去。很多小设备厂认为密码管理多余但实际生产中由于操作工误改参数导致的设备故障占了售后维修的一大部分加个密码锁能挡掉很多不必要的麻烦。3.4 报警功能的工程化处理不是亮个灯就完事威纶通的报警功能在包膜机上我用了两层设计。第一层是“实时报警”设备发生故障时比如缺膜、堵包、温度超限立即弹窗显示报警信息同时PLC那边驱动三色灯的红灯闪烁、蜂鸣器鸣叫。第二层是“历史报警”记录故障发生的时间、内容和恢复时间方便事后分析设备停机原因。这层很重要很多时候客户抱怨设备总是停机但说不出具体原因有了历史报警记录我远程让客户把报警记录导出来发给我基本就能判断问题出在哪里。报警信息的文本设置我这里有个建议不要用“ALARM_001”这种代码操作工看不懂也记不住。用完整的中文描述比如“横封封刀温度低于下限请检查加热管”“送膜机构缺膜请更换膜卷”操作工一看就知道该干什么不会因为看不懂报警而误操作或反复报修。4. 联调阶段的坑通信、干扰、温度这三个方向占了80%的问题设备装机完成、程序写完后联调阶段才是真正考验人的时候。这个阶段出现的问题往往不是单独一个模块的问题而是多个因素叠加导致的综合性故障。我把自己在这个项目里遇到的几个比较典型的坑以及排查过程和解决方案整理出来分享给大家。4.1 触摸屏读不到PLC数据的完整排查链路这个是我刚开始联调时遇到的最早的问题。触摸屏上所有数值都显示“#####”明显是通信断了。我当时整理的排查步骤是这样的第一步先查物理连接。网线插没插牢、交换机端口指示灯是否正常、网线做的是不是交叉线——后来才知道现在的设备网口都支持Auto-MDI/X交叉线直通线无所谓所以这一项排除。第二步查IP地址。触摸屏和PLC的IP必须在同一个网段子网掩码一致。注意西门子PLC和威纶通触摸屏在同一个交换机下时网关地址可以留空但要确保两者的前三段IP是一样的。我当时PLC设的192.168.1.10触摸屏设的192.168.1.11这个没问题。第三步在电脑上用S7-1200的编程软件TIA Portal直接监控DB块确认PLC程序运行正常、DB块里的数值确实在变化。如果PLC自身程序就没跑起来那触摸屏肯定读不到数据。第四步关键一步——用威纶通自带的“在线模拟”功能把触摸屏程序在电脑上模拟运行看能否读到PLC的数据。如果能读到说明通信配置本身没问题问题出在触摸屏的程序下载或者固件版本兼容性上如果读不到说明通信配置有问题需要检查设备类型选择、驱动配置、Fetch/Write选项。第五步我当时卡了很久的地方一直到排查到这里才发现——原来我用的S7-1200固件版本是4.5而威纶通软件里的S7-1200驱动是旧版不支持这个固件版本。解决办法很简单把威纶通组态软件升级到新版本驱动更新一下再下载触摸屏程序通信立即恢复正常。这个兼容性问题在设备联网项目里非常典型特别是西门子这种频繁更新固件的厂商。4.2 现场干扰导致温度读数跳变屏蔽和接地的实战处理设备在客户现场跑起来之后又出现了一个棘手的问题——横封温度在PLC上显示时好时坏有时候直接跳到二三百度的异常值导致PID以为温度不够持续满功率加热差点把封刀烧坏。这种问题在现场特别危险必须优先解决。排查过程是这样的首先确认热电偶变送器本身输出的4-20mA信号是否正常。我拿万用表串在信号回路里观察电流值是否稳定地对应实际温度——发现在正常时段电流是稳定的但设备启动变频器后电流开始波动这就说明干扰来自变频器一侧。处理方案从三方面入手。一是模拟量信号线的屏蔽层原本我在柜内把屏蔽层接到了柜体接地端子上但柜体和真正的大地之间接地电阻有点大后来加了一根独立的接地线从柜体直接接到厂房接地网干扰幅度立刻小了很多二是信号线和动力线的布线距离变频器输出线如果和模拟量信号线走在同一个线槽里感应干扰会非常严重我把模拟量信号线单独走了一个线槽和动力线保持至少20cm以上的距离三是PLC的电源隔离变频器启动瞬间会造成母线电压波动如果PLC和变频器共用一个电源这种波动会传导到模拟量模块的供电上我在PLC侧加了一个隔离变压器把控制电源和动力电源彻底分开。这三板斧下来温度读数就变得非常稳定了。这类问题在包装设备上非常普遍因为设备上有变频器、伺服、加热元件等多种干扰源共存前期电气柜设计时不注意抗干扰后期排查成本远比前期做防护高。4.3 封口质量不稳定的原因分析有伺服、有气缸、还有温度封口质量不稳定是最难排查的一种故障因为影响因素太多了。薄膜材质批次不同、封刀温度波动、气缸压力不稳、封刀接触时间不准确都会导致封口要么不牢要么烫穿。我当时调试时遇到的情况是连续生产几百包之后偶尔会出现个别产品封口不牢而且没有明显规律。我第一步是查封刀温度历史曲线看有没有周期性波动。因为调取触摸屏的历史报警和PLC内部的数据日志发现横封温度在正常范围内波动不超过±2℃这条排除了。第二步检查气缸动作时间。我在程序里给每个气缸的到位反馈做了时间戳记录统计后发现横封气缸从“下降指令发出”到“到位信号反馈”的时间不是固定的有时候60ms有时候90ms偶尔还会超过100ms。气压不稳是最常见的原因但现场的气压表显示压力在0.5-0.6MPa之间波动幅度不算大。第三步我怀疑是封刀接触时间被“飞剪触发提前量”影响导致实际封合位置偏了薄膜封口没有完全对准加热区域。我重新计算了不同气压下的触发提前量发现气压偏低时气缸动作变慢封刀接触薄膜的位置往后偏了几毫米这几毫米的偏移就可能导致局部封口不牢。所以最终解决方案是两个方面一是稳定供气压力在气源处加一个稳压罐减小压力波动二是加了一个闭环微调逻辑——PLC根据气缸实际到位时间动态补偿触发提前量气缸动作慢一点就提前一点触发动作快就延后一点触发。这个逻辑写进去之后再连续跑了几千包封口质量一直很稳定。5. 程序调试和HMI模拟时的高频困惑新手最容易卡住的几个点最后这部分想聊几个我在做这个项目和带新人过程中经常碰到的高频问题都不是特别复杂但稍不注意就会卡住半天。5.1 优化访问DB块导致通信失败怎么区分和避免前面在讲威纶通变量映射时提到过“优化的块访问”问题这里再展开说明白一些。S7-1200里建立的DB块默认是“优化”状态也就是变量的地址不是人为指定的而是编译器自动分配的这样做的好处是PLC内部访问速度快而且程序更健壮。但坏处是外部设备触摸屏、上位机无法直接通过固定地址读写这个DB块。如果你在威纶通或者WinCC里读到的PLC地址总是无效先别急着怀疑通信配置到TIA Portal里看一下这个DB块是不是勾选了“优化的块访问”。如果是又确实需要外部访问就把这个勾选去掉。但要注意取消优化访问后DB块的起始地址偏移量可能会变最好在取消优化后再编译一次然后去查看变量的实际偏移地址再在触摸屏里填那个实际地址。5.2 威纶通固件和组态软件版本不匹配的应对方法触摸屏工程的下载失败和运行异常有相当高的比例是软件版本和固件版本不匹配导致的。威纶通组态软件EBPro升级非常频繁每次打开软件都会提示新版本如果你公司有多台电脑组态软件版本不一致很容易出现A电脑保存的工程文件B电脑打不开的情况。解决办法是公司统一组态软件版本并每个版本做好存档。触摸屏固件升级这件事我的建议是“没有明显问题就不要升级”因为固件版本变了工程文件可能需要重新编译下载稍有不慎就会引入新的问题。触摸屏在设备上稳定运行着你非要手痒去升级固件一旦出问题就是整台设备停机代价太大。5.3 调试时如何安全地单步测试每一个气缸电磁阀手动调试画面上我放了一个“安全门状态”的显示灯如果安全门没关好手动操作所有气缸和电机的按钮都会被禁用——这是安全逻辑不是多余的麻烦。另外手动测试气缸时有一个细节不要反复快速点动启停按钮。电磁阀频繁通断会导致阀芯磨损加快而且气缸活塞高速冲击端盖时间长了会漏气。正确的做法是点一下启动等气缸动作到位并保持一小会儿再点停止让气缸泄压回落。这个习惯也能让你准确判断磁性开关的好坏和气缸动作是否顺畅。如果你在手动调试时发现气缸不动作按下按钮没反应建议按这个顺序排查一查PLC输出点亮的LED是否有输出二查输出到中间继电器的线是否松动三查电磁阀线圈有没有得电四查气源是否打开、减压阀压力是否正常。大多数时候问题出在最后一步接头没插紧、气管折弯导致气路不通基本不会是PLC程序的问题。5.4 从空机调试到带料调试的切换要点空机调试时设备没有产品也没有膜所有动作都能正常跑但这只是第一步。真正容易出问题的是第一次带料调试。我遇到过的情况是空机时横封动作节奏完美一带上薄膜编码器的膜长计数就开始出现误差——因为空机时编码器靠摩擦力带动带上薄膜后薄膜张力变化会影响编码器打滑导致实际膜长和设定膜长不一致。解决方案是在编码器安装方式上做调整把编码器从“靠辊面摩擦带动”改成“靠齿轮或联轴器直连主动送膜辊”这样薄膜张力变化就不会影响编码器测量了。如果设备结构上不允许改编码器安装方式另一个办法是在程序里做动态补偿——比较接近开关检测到的实际膜长和编码器计算膜长算出差值自动修正。但这种方法精度有限不如从机械结构上解决来得彻底。带料调试还有一个要注意的点就是温度要先预热至少15-20分钟再开始生产否则封刀中心和边缘的温差还没稳定前面的产品很容易出现封口不良。在触摸屏的主监控画面上我特意加了一个“温度就绪”指示灯所有温度都达到设定范围后这个灯才会亮在此之前自动启动按钮是灰色不可操作的从逻辑上杜绝了操作工在温度不达标时强行启动生产。6. 关于程序注释、版本管理和现场交付的几个顺手建议程序注释这件事我觉得怎么强调都不过分。西门子的TIA Portal项目里我给每一个FB、每一个Network都写了详细的注释标明这段话是控制什么的、修改时的注意事项、以及修改日期和修改人。现场设备交付时我把这些注释完整保留下来客户维修人员拿到项目程序能够快速理解逻辑而不是靠猜。版本管理这块建议养成习惯用“日期功能描述”的方式命名项目归档比如“packing_machine_20231021_v1.3_增加气压补偿逻辑”这样后期维护时看到文件名立马能定位到版本的变更内容而不是面对一堆“最终版”“最终版2”“最终改完版”这种文件名头大。我习惯每周五下班前把当周的项目文件压缩备份一份到本地和网盘各一份宁可多存也不能丢。现场交付时的技术培训我做了三件事。第一件事是给操作工做两个小时的屏端操作培训重点讲自动启动、换规格配方调用、常见报警怎么处理——操作工其实只需要会这几件事就够了第二件事是给设备工程师和维修电工做半天培训讲设备故障时怎么用触摸屏查看报警、怎么进手动调试画面、怎么看PLC的实时状态——让他们能独立处理90%以上的常见故障第三件事是把程序、说明书、电气图纸、触摸屏工程文件一起刻盘或者存到U盘里随设备交付给客户。这三件事做完设备后续的售后维修量会降到最低。最后说一个我自己这几年做设备总结出来的一句话自动化项目的核心不是“把设备跑起来”而是“让设备稳定地跑下去”。你在程序里多写一个注释、多做一个边界条件判断、多留一个调试参数后期都会转化为实实在在的效率提升和故障减少。做包膜机也好做其他非标设备也好都应该把售后维护的体验当作设计目标之一来对待。这也是我在这个项目里最大的体会。