1. 项目需求拆解:你搭的到底是一条什么样的灌装线
1.1 饮料灌装线的典型工序段
很多人一听“饮料灌装”,第一反应就是“瓶子到地方灌水”,但真做过产线就明白,灌装只是整条线的中间一环。一条完整的小型灌装产线,工序大概长这样:空瓶上料(很多厂是人工放瓶,好一点的配理瓶机)→ 传送带输送 → 灌装工位定位 → 灌装计量 → 封盖(压盖或旋盖)→ 成品送出,中间还可能穿插贴标、喷码、剔除检漏。你要搭的,不是某个单机,而是一条按节拍顺序工作的连续线。
这意味着什么?意味着控制系统不能只关注“灌装那一下”,要把整条线的来料、定位、动作、放行全部串起来。每个工位单独看都挺简单,但工位和工位之间一旦出现衔接问题——比如瓶子还没到位就灌装、灌装还没完成就被下一瓶顶走——整条线立刻崩掉。所以做这个项目,第一件事不是写程序,而是先把工艺顺序吃透,把“什么条件下允许干什么”列成一张逻辑表,后面所有工作都围绕这张表展开。
1.2 S7-200在产线控制里的角色定位
S7-200作为西门子的老款小型PLC,放到今天依然活跃在大量存量产线里。原因很简单:饮料灌装这种产线的控制特点是开关量多、逻辑联锁多、实时性要求高,但对数据处理和通信要求并不高。S7-200用梯形图处理这些逻辑绰绰有余,而且稳定、便宜、调试工具成熟。你在项目里把它定位成产线的“总指挥”:传感器信号进来,它判断当前状态,决定让哪个气缸动、让传送带跑还是停、让灌装阀开还是关,顺带跟触摸屏通信把状态显示出来。
这里有个现实问题必须说清楚:S7-200已经停产很多年,新项目通常不会选它,而是用S7-200 SMART这类后续型号。但存量产线的技术改造、设备维护、二手产线复现,依然大量用到S7-200。所以这篇文章讲的程序思路和调试方法,放到S7-200 SMART上一样适用,只是一些软件操作细节有差异。
1.3 把工艺需求翻译成I/O清单
做控制系统最忌讳闷头直接写程序。正确路径是:先数清楚这个产线有多少输入、多少输出,每条信号是什么、装在哪个位置、什么类型,列成I/O分配表。我见过不少新手拿到项目就开始编梯形图,编到一半发现“瓶子到位”这个信号不知道接哪个输入点,或者输出点不够用,程序被迫推倒重来。
以一条典型的四工位小型灌装线为例,输入信号大概这些:空瓶到位检测(光电传感器)、灌装工位有瓶检测(光电传感器)、灌装定位气缸伸出到位(磁性开关)、灌装阀状态反馈(限位或磁性开关)、封盖机构到位反馈(磁性开关)、急停按钮、启动/停止按钮、手动/自动切换。输出信号大概这些:传送带电机接触器、灌装阀电磁阀、定位气缸电磁阀、封盖气缸电磁阀、蜂鸣器/报警灯。这已经接近二十个点了。我的经验是,I/O点数在计算的基础上至少留20%的备用余量,不是为凑数,而是调试的时候一定会冒出几个之前没想到的信号,比如中间继电器、放行气缸、或者多一个传感器。
2. 硬件选型:S7-200型号与配套设备怎么定
2.1 CPU型号的选择思路
S7-200家族里常见的有CPU221、222、224、224XP、226。对饮料灌装这种流程型设备,我最常选的是CPU224和CPU224XP。CPU224自带14个数字量输入、10个数字量输出,基本能罩住一条小型产线的全部I/O需求。如果灌装量控制需要模拟量测量(比如接液位变送器),CPU224XP就更合适,它自带两路模拟量输入和一路模拟量输出,直接接传感器,不用额外挂模拟量扩展模块,省一个模块的钱和故障点。
CPU226点数更多(24DI/16DO),但用在饮料灌装上有点浪费。至于CPU221和CPU222,点数太少,除非是极简设备级改造,否则不建议用。很多项目后期都会加信号,一开始选大不选小,是我做过这么多项目后最深的体会之一。
2.2 扩展模块、传感器与执行器的合理搭配
I/O点超了就得挂扩展模块。数字量扩展最常见的是EM223,输入输出混合模块,每一块至少能加8DI/8DO,一个CPU224挂两块,点位就很宽裕了。如果要用流量计、液位变送器,加EM231模拟量输入模块。这里有个坑要提前讲:S7-200的扩展模块地址是跟随模块安装顺序自动分配的,不是你想编哪个就编哪个。插错位置,地址全变,程序里引用的I2.0可能实际物理上根本不是那个传感器。所以模块顺序在硬件安装时要定死,并在图纸上标清楚。
传感器选型上,空瓶检测和灌装工位有瓶检测都用光电传感器,漫反射式就行。气缸到位检测用磁性开关,注意型号要匹配气缸沟槽规格,装反了或松了都会有信号误报。灌装计量如果走定量方案,液位控制用液位开关,精确计量用流量计(脉冲输出型)。执行机构方面,传送带电机功率不大就用接触器;想调速就上变频器,S7-200通过数字量输出给变频器启停信号,模拟量输出给频率给定。灌装阀用电磁阀控制气动阀,这种阀响应快、通径大,比直接用小口径电磁阀灌液体靠谱得多。
2.3 I/O分配表的落地方法
I/O分配表看着是个表格,其实是整个控制系统的“图纸”。我在实际项目中习惯这样做:第一列是PLC地址(I0.0、Q0.0这种),第二列是信号名称(比如“空瓶到位检测”),第三列是连接设备(光电传感器-传送带入口),第四列是信号类型(PNP常开/常闭),最后一列写备注。这里特别要强调信号类型:S7-200的数字量输入分源型和漏型接法,如果传感器选了PNP输出,接线方式和程序里取的逻辑电平不一样,很常见的问题就是“传感器灯亮了,PLC输入点却读不到信号”。
地址分配有个经验法则:数字量输入按传感器安装顺序从I0.0开始排,输出按执行器就近分组排在Q0.0开始,模拟量单独一段。不要为了好看把输入输出交错编排,现场的师傅顺着端子排线会骂人的。分配完之后把表导入软件里的符号表,程序里用符号名写梯形图,别直接写I0.0这种绝对地址。这样后面调试时,看程序一眼就知道这个网络在控制什么东西,排查故障快得多。
3. 控制程序架构与灌装逻辑实现
3.1 程序框架:主程序、子程序与中断的分工
S7-200的程序组织相对简单,但结构和大型PLC一样要讲究。我的习惯是把程序拆成几块:主程序OB1只做流程调度和输入输出的刷新;初始化子程序负责清除输出、初始化状态位、配置高速计数器等,只在第一次扫描时调用一次;灌装控制放一个子程序;封盖和放行放一个子程序;报警处理单独放一个。这样分工的好处是显而易见的:调试时哪个环节有问题就打开哪个子程序,不会在一大坨梯形图里翻来翻去找某个网络。
这里要特别提醒一下定时器的使用。S7-200的TON定时器是通电延时型,分辨率有1毫秒、10毫秒、100毫秒三档,不同编号的定时器分辨率是固定的。比如T37是100毫秒分辨率,你在编程软件里写50,实际延时5秒,不是0.5秒;而T32是10毫秒分辨率,写50就是0.5秒。这个单位问题我见过太多次了,新手以为“50”就是0.5秒,结果延时完全对不上。建议全项目统一用同一种分辨率的定时器,并在注释里写明时间单位。
3.2 灌装量控制:定时灌装还是流量计灌装
灌装是这个项目的核心,计量方式直接决定程序写法和硬件成本。先说定时灌装,也是最常见的低成本方案。它的逻辑很直接:泵的流量大致恒定,灌装时间等于目标容量除以流量。例如泵流量25升/分钟,目标灌装500毫升,时间算出来是1.2秒,用TON定时器到1.2秒就关阀。这个方案胜在便宜,但缺点是精度一般,进液压力波动、泵磨损、液体粘度变化都会导致容积偏差。想调准,就得在实际试灌时反复调整定时值。
再说流量计灌装。流量计输出脉冲信号,每个脉冲代表固定的体积,PLC用高速计数器HSC对脉冲计数,到达目标累计值就关阀。这个精度高,受压力波动影响小。S7-200配置HSC的流程是:初始化子程序里用HDEF指令选定高速计数器号和模式,然后写SMB37这类特殊存储器的控制字节,再执行HSC指令启动,最后在中断程序或主程序里读取当前计数值和目标值做比较。每升脉冲数由流量计标称给出,比如每升1000个脉冲,灌500毫升,就是500个脉冲到。虽然多了一个流量计的投入,但对饮料灌装这种容量精度要求高的场景,这笔投入是值得的。
3.3 传送带启停、定位挡停与封盖动作的联锁
传送带让瓶子连续往前走,但灌装工位上一个一个灌,这就需要一个“只能同时灌一个”的机制。业界通用做法是在灌装工位前加一个定位挡停气缸:光电传感器检测到瓶子进入灌装工位,挡停气缸伸出把瓶子精准拦住,灌装完再缩回放行。这个过程看着简单,联锁条件一列就不少:只有挡停气缸伸出到位信号成立,才允许开灌装阀;灌装阀关闭后,不能立刻缩回挡停,要延时零点几秒等残留液体滴完,否则瓶子带走一管液体;同时还要判断灌装工位的前一个瓶子是否已经离开,避免两个瓶子挤在一起。
封盖工位的联锁也容易漏:空瓶子没灌装就送到封盖机,封盖机构啪一下压下去,轻则瓶子变形,重则机构损坏。我的做法是单独设一个“灌装完成”状态位,灌装过程走完置位,封盖动作必须看到这个状态位才允许启动。等封盖完成,再复位放行。这种“状态位+条件判断”的做法比直接串联常开常闭触点清晰得多,排查逻辑时一眼就能看清楚整个流程走到哪了。
4. 调试流程与常见问题排查实录
4.1 从点动到联动的四步调试法
灌装线调试千万别跳步。第一步,空载逻辑验证:设备不通电不接负载,先把程序下载到PLC,用编程软件的强制表强制输入信号,观察输出变量是否正确翻转。这一步能排查掉大部分程序逻辑问题,而且安全。第二步,手动点动:每个气缸、每台电机单独通电动作,确认方向、行程、限位/磁性开关的反馈全部正确。第三步,单机自动:分别让灌装单元和封盖单元独立运行,看是否能按程序完成一个完整循环。第四步,整线联动:先不放液体,用空瓶跑整线,确认传送带、挡停、灌装阀动作时序配合;一切正常后再灌水测试;最后才灌真实饮料。
这个流程多花半天,但能省后面好几天的返工。我见过最惨的案例是直接整线灌饮料调试,结果挡停时序不对,瓶子倒了一地,饮料漏进控制柜,又把传感器泡了,最后只能停机拆柜清理。调试顺序越谨慎,意外越少。
4.2 常见故障速查与排查方法
在实际调试中,故障基本集中在几个方面。我把高频故障整理成一张速查表,贴在控制柜里非常有用:
| 故障现象 | 可能原因 | 排查方法 |
|---|---|---|
| 气缸不动作 | 电磁阀未得电、气源压力不足、磁性开关信号未到位 | 强制输出点测试电磁阀,检查气源,检查磁性开关安装位置 |
| 传送带不启动 | 接触器损坏、变频器未使能、机械卡死 | 断开负载后强制吸合接触器,看变频器状态面板 |
| 灌装量时多时少 | 进液压力波动、灌装阀阀芯卡滞、定时值偏差 | 检查进液管道压力,清洗阀芯,重新测定灌装时间 |
| 整线突然停机 | 传感器受干扰误动、接线端子松动、电源电压波动 | 先看PLC诊断灯:ERR灯亮查程序和模块,RUN灯正常再查外围输入 |
| 传感器灯亮但PLC读不到输入 | PNP/NPN类型不匹配、接线极性反了、源型漏型设置不对 | 查输入接线图,确认传感器输出类型和PLC公共端接线 |
追踪这类问题,绝对不要靠猜,要用编程软件的“状态表”功能在线监视输入输出位。输入灯不亮就是传感器或接线问题;输入亮但输出没翻转,就是程序逻辑或输出回路问题,这样一划分,排查范围一下就缩小了。
4.3 抗干扰与接地:让“时好时坏”消失
产线里有变频器,就会有干扰,这是灌装线调试绕不开的坎。变频器与PLC柜尽量分开安装,距离近的话变频器的载波频率要调低一点,输出侧有条件就加输出电抗器。信号线,尤其是接PLC高速计数器输入的那根脉冲线,必须用屏蔽双绞线,屏蔽层单端接地,而且走线要远离变频器的输出动力线。接地也要分开:PLC系统和变频器系统分别接接地排,绝对不能串在一个接地螺丝上。
还有一个容易被忽略的点:电磁阀、接触器这些感性负载在断电瞬间会产生很高的反向电动势,如果不在线圈两端并联浪涌抑制器件,干扰脉冲会直接窜进PLC输出点。直流线圈并联续流二极管,交流线圈并联RC吸收器,这个几十块钱的小东西能解决很多“莫名复位”的问题。我遇到过一台设备老是灌到一半突然断阀,查了两天,最后就是接触器线圈没加吸收器,动作瞬间把PLC内部复位信号干扰了。
5. 几个实用习惯与后续扩展方向
5.1 把状态监视做成现场工具
调试产线时,我习惯在柜门上贴一张自己做的“输入输出状态对照表”,或者干脆把触摸屏做成两个页面:操作页和状态监视页。状态页上把每个输入点对应到画面里的图形(比如传感器变成一个圆形指示灯,气缸变成一个方块),哪一步卡住、哪个信号没到位,现场工人一眼就能指出来,而不是拿着万用表一个个端子量。这个习惯在交项目给客户的时候特别好用,客户自己能看状态,售后电话都少了。
5.2 程序设计习惯与升级方向
程序上有一个建议:尽量多用置位复位的写法来完成工序控制,少用自锁回路。自锁回路在状态切换时容易产生“同一输出被多个条件控制”的问题,排故时搞不清谁把输出拉起来了;置位复位按工艺步骤来,一步一个状态位,程序结构和现场工序完全对应,想改流程也很直观。最后,这套东西后续还想升级的话,可以把定时灌装升级成高速计数器配流量计,也可以把传送带电机换成变频器加模拟量调速,再挂个触摸屏做配方管理,想灌250毫升还是500毫升,画面上一键切换,这些都是S7-200还能胜任的活。