1. 注塑机控制到底在控什么
说实话,现在市面上聊S7-200的教程已经不太多了,但我一直觉得,这机器放在注塑机控制这个场景里,依然是性价比极高的选择。你要明白一个现实:很多中小型注塑厂里,设备要么是老旧机型改造,要么是预算有限的新购设备,你让他们上一套S7-1500加伺服总线方案,成本直接劝退。而S7-200 CPU226加上几个扩展模块,几百块钱就能搞定整套控制逻辑,耐造、稳定、资料全,老师傅多半也摸过,这就是它到现在还能打的原因。
这篇内容适合谁看?主要是这几类人:刚入行做PLC编程、想找个真实项目练手的;厂里正好有注塑机或周边辅机设备,需要自己做维护改造的;以及做非标自动化、偶尔要碰注塑机上下料和机械手控制的工程师。看完之后,你至少能搞清楚一台注塑机从开模到顶出这整个循环里,PLC每一步到底在干什么、怎么干、干了之后怎么知道干对了。
先拆解一下注塑机的工艺循环。一台标准的卧式注塑机,它的核心动作可以简化成这样一个流程:合模、注射座前进、保压、冷却、预塑/计量、注射座后退、开模、顶出,然后循环。这个流程看着不复杂,但难点在于每个动作之间有严格的条件互锁和时序关系,比如开模没到位绝对不能顶出、安全门没关绝对不能合模、料筒温度没到设定值绝对不能启动注射,这些逻辑一旦出错,轻则产品报废,重则模具直接撞烂。
注塑机控制的关键词其实就三个:时序、条件、互锁。时序决定了动作执行的先后顺序,条件决定了下一步能不能走,互锁决定了出现异常时能不能立刻停下来保护设备和人身安全。S7-200这种老牌PLC跑这种逻辑完全够用,梯形图本身也特别适合表达这种继电器式的逻辑关系,天然就是干这个活的。
2. 硬件组态与IO分配
2.1 控制系统的硬件选型思路
做注塑机控制,第一步不是急着写程序,而是先把硬件方案理清楚。我见过不少新手一上来就对着电脑撸梯形图,结果到了现场发现输入点不够用、输出带不动负载,整套系统根本跑不起来,最后只能返工。这个坑踩一次就够了,所以硬件选型这件事必须放在最前面。
基于S7-200的注塑机控制系统,我建议的配置是这样的:CPU选CPU226,自带40点IO(24输入、16输出),这样基础的点位就够用了,而且CPU226支持两个通信口,一个接触摸屏,一个留出来接上位机或者后续扩展。如果设备规模不大、点位数在40点左右就能覆盖,那CPU224(14输入、10输出)也可以,但我会建议留点余量。
注塑机的传感器和执行器类型比较杂。输入这边,合模限位、开模限位、顶出限位、注射座进退限位基本都是机械式行程开关,注射和保压阶段会有压力传感器信号,料筒各段有热电偶测温。输出这边,控制电磁阀驱动油路切换,控制接触器驱动油泵电机和加热圈,如果是伺服电机驱动的注射系统,还要输出脉冲信号控制伺服驱动器。
2.2 IO点表的设计是程序的骨架
IO分配是整个控制系统的骨架,分配得好不好直接决定程序好不好写、好不好调。我一般按照功能区域来分区分配地址,而不是按随机顺序填,这样后期查线、调试都舒服很多。
下面是我在实际项目中用过的一张IO分配表,你可以直接参考:
| 地址 | 功能说明 | 信号类型 | 备注 |
|---|---|---|---|
| I0.0 | 急停按钮 | 常闭输入 | 必须用常闭,断线保护 |
| I0.1 | 安全门左关闭到位 | 常开输入 | 两个安全门串联/分别检测 |
| I0.2 | 安全门右关闭到位 | 常开输入 | 同上 |
| I0.3 | 合模限位(模紧到位) | 常开输入 | 确认合模完成 |
| I0.4 | 开模限位(开模到位) | 常开输入 | 确认开模完成 |
| I0.5 | 顶出前进到位 | 常开输入 | |
| I0.6 | 顶出后退到位 | 常开输入 | |
| I0.7 | 注射座前进到位 | 常开输入 | |
| I1.0 | 注射座后退到位 | 常开输入 | |
| I1.1 | 注射压力上限(压力开关) | 常开输入 | 超压报警 |
| I1.2 | 料斗缺料检测 | 常开输入 | 缺料报警 |
| I1.3 | 油泵电机过载 | 常闭输入 | 热继电器信号 |
| I1.4 | 加热器过载/断线检测 | 常闭输入 | 可分组 |
| Q0.0 | 油泵电机启动 | 输出 | 接触器控制 |
| Q0.1 | 合模电磁阀 | 输出 | YV1 |
| Q0.2 | 开模电磁阀 | 输出 | YV2 |
| Q0.3 | 顶出电磁阀 | 输出 | YV3 |
| Q0.4 | 注射座前进电磁阀 | 输出 | YV4 |
| Q0.5 | 注射座后退电磁阀 | 输出 | YV5 |
| Q0.6 | 注射电磁阀 | 输出 | YV6 |
| Q0.7 | 料筒一段加热 | 输出 | 固态继电器/接触器 |
| Q1.0 | 料筒二段加热 | 输出 | 同上 |
| Q1.1 | 料筒三段加热 | 输出 | 同上 |
| Q1.2 | 报警指示灯(三色灯) | 输出 | 可单独分频闪/长亮 |
这张表有几个地方需要特别解释。首先,急停和油泵过载这两个点我用的是常闭信号,也就是说正常情况下这个输入点一直是通的,一旦断线或者被按下,信号断开,PLC马上能识别到故障状态。这是安全回路设计里的基本原则:故障安全型设计,宁可误报也不能漏报。
第二个要注意的是安全门检测。注塑机的安全门是保护操作员的核心装置,合模动作触发前必须确认两个安全门都关到位,否则绝对不能合模。有些设备会加装安全继电器做硬逻辑互锁,PLC这边再做一遍软件互锁,双重保险。
温度检测这块比较特殊,S7-200的CPU本身不带热电偶直接采集通道,需要配EM231热电偶模块或者用温度变送器转成4-20mA信号接到模拟量模块。这个后面单独展开讲。
2.3 接线环节容易踩的坑
接线这块,我建议所有电磁阀线圈两端都并联一个RC吸收回路或者续流二极管,因为电磁阀是感性负载,断电瞬间会产生很高的反向感应电动势,直接接在PLC输出端会缩短继电器触点寿命,严重的话会击穿晶体管输出。PLC输出端接隔离二极管的做法,本质上就是为了吸收这种反向冲击。
还有一点,PLC的输出公共端和负载电源的接线方式务必看清楚说明书。继电器输出型可以接交流也可以接直流,但晶体管输出型只能接直流,而且正负极不能接反。我见过有人把晶体管输出接成220V交流,结果一整排输出点瞬间全烧了,那个维修成本真不如一开始就好好看手册。
3. 程序架构设计
3.1 主程序、子程序和中断的分工
S7-200的程序结构说简单也简单,无非就是主程序加子程序加中断程序,但实际项目里怎么组织才不乱,这是有讲究的。我见过有人把注塑机控制的所有逻辑全写在主程序里,一条扫描周期从头刷到尾,几百行梯形图堆在一起,调试的时候查一个输出点到底在哪段逻辑里控制的,翻半天翻不到。
推荐的做法是按照功能块拆成子程序,主程序只做调度和条件总控。可以先按这个思路搭建:OB1主程序里写循环调度的框架,然后拆成各个功能子程序,比如启动停止控制、手动模式控制、自动模式控制、温度控制、报警处理、机械手联动。每个子程序负责一个独立的控制功能,内部逻辑相对独立,主程序按模式切换去调用对应的子程序。
子程序调用的好处有两个。一是结构清晰,查问题的时候直奔对应的子程序,方便得多。二是扫描效率高,比如温度PID运算不需要每个扫描周期都跑,可以定时执行。S7-200提供了定时中断功能,把温度控制的PID运算放到定时中断里,用固定时间间隔触发,控制效果远比在普通扫描周期里执行要稳定得多。
3.2 用状态位搭建自动运行时序
注塑机自动循环的核心,是时序控制。最简单的实现方式是步进梯形图指令(SCR),S7-200有专用的SCR指令,把每一步动作放到独立的SCR段里,每段有明确的转移条件和动作输出。对于注塑机这种典型的顺序控制场景,SCR几乎是量身定做的工具。
我习惯的做法是先用状态寄存器(比如M0.0到M0.15)定义每一个工步,这样每一步对应一个M位。下面的梯形图逻辑描述的是每一步切换的核心思路:
// 步0:待机,等待启动条件 LD M0.0 A I0.1 // 安全门左关到位 A I0.2 // 安全门右关到位 A M2.0 // 启动按钮已按下(取脉冲) S M0.1 // 进入合模步 R M0.0 // 步1:合模 LD M0.1 A I0.4 // 开模限位已复位(模具可以合) S Q0.1 // 合模电磁阀输出 A I0.3 // 合模到位 S M0.2 // 进入下一步:注射座前进 R M0.1实际项目中我不会把所有步骤堆在几个截图里讲,因为每个厂家的设备动作细节不一样,步与步之间的转移条件要结合具体设备来写,但思路是通用的:一扇门打开,另一扇门关上,先判断转移条件是否满足,满足就锁定下一步状态,同时复位当前步状态。
这样做最大的好处是,任何时候你看一眼M位就知道设备现在走到哪一步了,排查故障的效率能翻好几倍。而且状态位一旦锁定,即使中间的输出信号抖动也不会导致误切换,稳定性也有保障。
3.3 手动/自动模式的切换处理
注塑机的操作模式一般有手动、半自动、全自动三种。手动模式用于调试和模具安装,每个动作靠按钮单独触发;半自动模式是操作员按一下启动按钮,机器走完一个完整的循环;全自动模式是循环结束后自动开始下一个循环,中间不需要人工干预。
模式切换的处理有几个细节需要注意。第一,从手动切到自动之前,所有动作必须处于初始状态,比如模具必须处于开模到位状态,顶出杆必须处于后退到位状态,否则不能启动自动循环。第二,模式切换的过程中要防止输出信号跳变,我一般会在切换指令前后加一个解锁延时,确保输出稳定后再进入下一步。第三,手动模式下每个动作都要有单独的互锁条件,防止误操作导致设备损坏。
4. 核心工艺功能实现
4.1 料筒温度控制的PID调节
注塑机料筒的温度控制直接决定塑料熔融质量,温度高了塑料分解发黄,温度低了塑化不均匀,产品全是瑕疵。S7-200的温度控制最实用的方案是使用PID指令块加热电偶输入模块。
如果你用的是EM231热电偶模块,它直接把热电偶信号转换成数字量存入AIW寄存器,然后通过PID指令运算输出控制量,再通过数字量输出点控制固态继电器通断加热圈。PID指令块需要设置给定值、过程值、比例增益、积分时间、微分时间这几个参数。注塑机料筒温度控制一般用PI就够了,微分项容易引入噪声干扰,实际效果反而不好。
PID参数整定我建议用经验法起步:先将积分时间设到最大、微分关闭,只留比例项,从小到大调比例增益,让温度开始震荡,记下临界比例增益和震荡周期,再根据齐格勒-尼科尔斯经验公式算出合适的PID参数。这个方法的起点靠谱,比盲调快得多。
不过温度控制有个更隐蔽的问题:加热圈的响应滞后很大,热电偶检测到的温度变化比实际加热动作晚了很久。所以温度到达设定值前需要提前减小输出,否则温度会冲过头,这就是所谓的超调。我一般会加一个输出限幅功能,温度接近设定值前自动把PID输出限制在50%以内,等温度稳定后再放开限幅。
4.2 注射速度与压力的分段控制
注塑机的注射阶段是整个成型过程中最关键的环节。好的注塑机控制系统,注射速度不是恒定不变的,而是根据产品结构分多段控制。比如薄壁区域要快速填充防止冷料,厚壁区域要减速防止困气和烧焦,最后补缩阶段要低压低速防止飞边。
这个话题正好能看到S7-200的一个玩法:如果你用的是伺服电机驱动的注射系统,S7-200可以输出高速脉冲控制伺服驱动器,通过改变脉冲频率实现注射速度的分段调节。脉冲输出指令(PLS)加脉宽调制指令在S7-200里都能用,伺服速度曲线可以通过IO点切换对应的速度预设值来实现。
如果是普通液压系统,速度调节一般靠比例流量阀。PLC通过模拟量输出模块(EM232)输出0-10V电压信号给比例阀放大器,电压大小对应阀门开度,也就对应了注射速度。分段控制的核心就是:在不同注射位置切换到不同的模拟量输出值。位置检测可以靠电子尺,也可以靠接近开关和编码器组合。S7-200的高速计数器功能(HDEF、HSC)可以用来读编码器的脉冲数实时计算螺杆位置,从而实现按位置触发的多段速度切换。
这里有一个非常实用的技巧:分段切换条件尽量使用当前值比较指令,而不是等限位信号。因为限位开关的机械位置一旦磨损就要重新调,而编码器的位置值只要设置一次就永远准确。
4.3 伺服电机驱动与机械手联动
注塑机旁边经常配一台取件机械手,机械手负责开模之后把成品取出来,放到输送带上。机械手的动作通常由独立控制器控制,但需要和注塑机的主控PLC做信号交互。S7-200在这里扮演的角色主要是通过IO点与机械手控制器联机,发送允许取件信号和接收取件完成信号,本质上是一个握手协议。
联动时序这样走:注塑机开模到位之后,PLC输出一个“允许取件”信号给机械手;机械手收到信号后开始取件动作,动作完成之后反馈一个“取件完成”信号回来;PLC收到这个信号才允许进入顶出或者下一个循环。这里必须加超时保护:如果PLC发出允许取件信号之后X秒内没收到完成信号,马上进入报警状态,防止机械手故障导致整机卡死。
如果是PLC直接控制气缸机械手,那就要用到S7-200控制气缸的逻辑。气缸控制的核心是双向电磁阀,PLC输出两个点分别控制电磁阀的左右位,气缸就伸出缩回。但是气缸运动速度控制是个难题,普通电磁阀只有通断两种状态,想调速就得用节流阀或者比例阀。
实际项目中,我用S7-200控制机械手的常用方式是:一个动作用一个输出点,到位检测用磁性开关,磁性开关装在气缸缸体上,检测活塞磁环位置。编程时要注意磁性开关在高速运动时可能产生抖动,输入信号需要做滤波处理。S7-200输入点自带数字滤波设置,一般把滤波时间调到0.2ms到6.4ms这个区间,具体看运动速度,太灵敏容易误触发,太迟钝又容易漏信号。
4.4 注塑机与变频器的配合应用
注塑机液压系统的油泵电机,如果直接用工频运行,不仅耗电大,而且油温容易升高。很多节能改造项目会给油泵电机加装变频器,根据注塑机的实际动作需求实时调节电机转速,这样能耗能降20%到40%。这也就是热词里为什么有"ABB变频器与西门子PLC"的原因——变频器和PLC配合是注塑机节能改造的经典方案。
S7-200控制变频器的方式有三种:开关量端子控制、模拟量给定控制、通信控制。开关量端子控制最简单,通过PLC输出点控制变频器的启动停止和正反转,频率靠变频器面板预设。模拟量给定控制稍微高级一些,PLC通过模拟量输出模块给变频器一个0-10V或者4-20mA信号,频率可以在线实时调节。通信控制是基于RS-485总线,S7-200用USS协议和西门子变频器通信,或者用Modbus RTU协议和第三方变频器通信。
USS协议是西门子专用的变频器通信协议,S7-200的库里有现成的USS指令可以调用,用起来特别方便。只要几条指令就能实现对变频器启停、频率设定、频率读取和状态监控。用通信方式的好处是省了一大堆控制线,而且能读到变频器的实时运行状态,方便做故障诊断。注意RS-485总线的终端电阻要接好,线不要太长,通信速率建议设9600或19200,更稳定。
5. 触摸屏、上位机与通信组网
5.1 威纶通触摸屏与S7-200的对接
注塑机上配一块触摸屏做操作界面和人机交互已经非常普遍了。威纶通触摸屏在国产设备里占有率很高,它和S7-200做通信,走的是西门子的PPI协议。PPI是S7-200的专用串行通信协议,基于RS-485物理层。在威纶通的组态软件EBPro里,新建工程的时候选择S7-200的驱动,设置好通信端口和站号,就能直接读取和写入S7-200的变量地址了。
这里有一个关键点,触摸屏上显示的数据地址要和PLC程序里的变量地址一一对应。比如PLC程序里料筒温度存放在VD100,触摸屏上就建一个数值显示元件,地址设置成VD100,数据类型选32位浮点数。地址写错是HMI调试最常见的错误,我建议做一张变量映射表,把PLC地址和触摸屏地址的对应关系写清楚,减少沟通成本和时间浪费。
5.2 西门子触摸屏的时间同步设置
热词里面有个很具体的问题:“西门子ktp1200触摸屏改完时间显示不信任plc”,这个问题有实际工作经验的人应该都知道。KTP1200触摸屏改完系统时间之后,过一段时间又跳回去了,或者显示时间不对,很多人第一反应是触摸屏的时钟芯片坏了,其实不一定是。
KTP1200这种精简系列触摸屏,如果配置了和PLC做时间同步,触摸屏会定期从PLC读取时间覆盖自己的系统时间。你改的是触摸屏的本地时间,但PLC那边的时间没更新,下次同步周期一到,触摸屏时间又被PLC拉回去了,看起来就像“不信任”你的修改。解决办法是要么在PLC程序里改时间让触摸屏跟随,要么在触摸屏的HMI设置里把时间同步功能关闭,然后纯靠触摸屏本地时钟走时。
5.3 PLC与DCS系统的对接思路
在一些大型注塑车间,注塑机并不是孤立运行的,它们要接入车间级的集中监控系统,或者和DCS系统做数据交换。S7-200和DCS系统通信的方案,常见的是通过Modbus RTU协议。S7-200的端口0可以用Modbus RTU从站功能(库里有现成的指令),DCS作为主站来读取注塑机的运行数据和状态信息。
通信格式和三菱PLC类似,也都是寄存器地址映射。比如DCS读注塑机的运行状态,映射到保持寄存器40001,DCS读温度实际值,映射到40002等等。S7-200这边要做的事情是:在程序里调用Modbus从站初始化指令,配置好从站地址、波特率、校验方式,然后把需要上报给DCS的数据整理到对应的保持寄存器里。
5.4 PLC控制系统的网络冗余方案
注塑机如果参与连续生产,PLC控制系统宕机一次就可能造成整批产品报废,所以有些关键设备会做冗余方案。但说实话,S7-200这个级别的PLC做硬件冗余并不合适,毕竟它的可靠性设计本身就不错,PLC本体故障的概率很低。更实用的做法是做通信链路的冗余:主通信链路用PPI,备用链路用Modbus,两条链路同时在线,一条断了自动切到另一条。
实际现场还见过这样做的:把注塑机上两个PLC通信口分别接到两个触摸屏,一个生产操作用,一个设备监控用,即使其中一块屏坏了,另一块还能正常操作,这在生产连续性要求高的场景里是性价比很高的方案。
6. 常见问题与排查技巧实录
6.1 输入信号误触发与抖动问题
注塑机现场的电磁干扰是出了名的严重,油泵电机启停、电火花、变频器谐波都会在控制线上感应出干扰信号。我遇到过最典型的问题:安全门没有关,但PLC显示安全门关闭到位,这就是干扰导致输入点误触发。
排查思路是这样的:先在系统菜单里监控输入点的实时状态,确认信号是不是真的有问题。然后检查输入信号线的屏蔽层接地情况,屏蔽层单端接地,不能双端接地。最后在PLC输入点并联电容或者在STEP 7-Micro/WIN软件里调整数字量滤波参数。S7-200每个输入点都可以单独设置滤波时间,我一般对有干扰的输入点设置6.4ms滤波器,效果立竿见影。
6.2 输出点驱动能力不足
PLC的输出点直接驱动大功率接触器和电磁阀,经常会遇到带不动的问题。S7-200的输出点驱动能力有限,继电器输出型一般能带2A的负载,但接触器线圈的涌流可能达到额定电流的5到10倍,直接接在PLC输出点上,触点寿命会大幅缩短。
正确做法是:PLC输出信号先驱动中间继电器,中间继电器的触点再驱动接触器和电磁阀。中间继电器起到了电气隔离和功率放大的作用,保护PLC的输出点。另外,输出点接感性负载的时候一定要并联RC吸收回路,很多人会忽略这一步,时间长了才知道后果。
6.3 报错代码与通信故障排查速查
S7-200的程序运行中可能出现各种各样的报错,这里整理一个排查速查表:
| 故障现象 | 可能原因 | 排查方法 |
|---|---|---|
| PLC的SF灯亮(系统故障) | 程序逻辑错误、硬件故障、扩展模块丢失 | 连接编程软件查看PLC信息 |
| 通信连不上 | 通信端口设置错误、站号冲突、线缆接线错误 | 检查PPI参数、终端电阻、通信线A/B |
| 程序能下载但无法运行 | 特殊存储器SM配置错误、程序指针越界 | 检查SM0.1、SM0.0使用情况 |
| 模拟量读数为乱跳 | 传感器或变送器干扰 | 检查屏蔽线接地、信号线远离动力线 |
| PID输出不稳定 | 参数设置不当、反馈信号噪声 | 调低比例增益、增加积分时间、对反馈做平滑滤波 |
| 时间继电器(TON)计时不准 | 扫描周期太长或中断冲突 | 确保扫描周期在允许范围内,区分定时中断和扫描周期 |
排查的时候有个顺序问题:先查硬件,再查通信,最后查程序。很多新手一上来就翻程序逻辑,找了半天发现是接线松了,浪费时间也浪费心情。硬件问题可以先通过PLC面板指示灯判断,输入点有没有信号指示,输出点有没有驱动到,这些指示灯一亮一灭之间,很多问题就清楚了。
6.4 S7-200固件与程序上传的注意事项
S7-200的固件版本有时候会影响一些指令功能的支持情况,如果遇到莫名奇妙的程序行为,可以查一下PLC固件版本。STEP 7-Micro/WIN软件里能直接查看CPU的固件版本信息,网上可以找到对应版本的固件升级包,用编程线缆就能更新,操作不复杂。
关于程序上传,S7-200和很多PLC不一样的地方在于,它默认允许上传程序,但上传出来的程序可能不包含注释和符号表,因为注释信息保存在编程软件项目文件里,PLC存储卡里只有纯代码逻辑。如果你想从PLC反推完整的带注释程序,那基本做不到,这也提醒我们:源文件一定要保管好,分版本存,每次改动都留一份备份,不然过几个月自己都看不懂自己写的逻辑了。
7. 注塑机PLC控制的项目经验总结
做了这么多注塑机PLC项目,有几个深刻的体会想分享出来。第一个体会是关于程序注释的:写程序的时候一定要把注释写清楚,特别是在每个子程序开头写清楚这个子程序干什么用、输入什么变量、输出什么变量、有什么互锁条件。我之前接手过一个别人的项目,程序完全不写注释,维护成本高得离谱,后来痛定思痛,自己写的每一行程序都习惯性配上注释,哪怕是再简单的一句逻辑。
第二个体会是调试阶段一定要求稳不求快。注塑机这种设备涉及高温、高压、高速运动,调试过程中任何一步疏忽都可能造成安全事故。我调试合模动作的时候,第一遍绝对不用自动模式,而是在手动模式先把每一步动作单独走一遍,确认限位信号、电磁阀动作、压力都正常,然后再切换到自动模式跑空循环,最后才放料实际生产。这套流程看着繁琐,但能避免绝大多数现场事故。
第三个体会是S7-200虽然老了,但它在注塑机控制这个场景内的稳定性是真的过硬。我见过不少设备已经连续运行十几年没动过控制系统的,PLC本体从来没换过,最多就是外部继电器和接触器换了几轮。
所以如果你问我,现在还要不要学S7-200?我的答案是:如果你干维修、做改造、跑售后,那S7-200这块内容一定绕不开,存量市场摆在那里,设备还在运转,就永远有需求。学会了S7-200,再往S7-1200、S7-1500走,逻辑基础完全是相通的,无非是新的软件平台和通信方式需要适应。反过来,如果一上来就只学博途,到了现场面对老设备反而无从下手,这才尴尬。
最后再给一个很实用的小技巧,很多老师傅可能都不知道:S7-200的程序下载完以后,记得把CPU的运行开关拨到RUN状态,然后断电重启一次,让程序冷启动初始化一遍。这一步能清掉调试过程中残留的中间状态,确保生产开始之后设备处于一个干净的初始状态。别小看这一步,很多“莫名其妙的第一次启动故障”其实都是这个原因。