
这是一篇基于日常实践经验、可完整复现的工业自动化项目手记。整个项目从控制方案选型到博图程序编写再到触摸屏组态和PLCSIM联合仿真形成了一条完整的闭环。文章不绕弯子直接把我踩过的坑、验证过的参数和核心逻辑捋清楚给准备做类似包装线的小伙伴一份参考。1. 项目拆解糖果包装线到底在控制什么先说这个系统的定位。它不是一个简单的电机启停控制而是具备连续输送、自动计数、定量分组、往复推料、热封包装和故障报警功能的完整小型产线。我给它定义的控制对象是一条供料输送带、一台定量分组机构、一套推料气缸组件、一组热封装置以及配套的传感器、变频器和报警系统。为什么要选“糖果包装”这个场景来做整套设计原因在于糖果行业的包装工艺极具代表性——物料小、速度快、计数频繁、动作节拍紧凑正好能覆盖PLC控制系统的大部分典型应用开关量逻辑控制、高速计数、定时控制、顺序控制、模拟量处理和人机交互。你把这个工艺吃透了换到饼干包装、瓜子包装、电子元件计数包装逻辑基本是相通的改的无非是传感器安装位置、气缸行程和节拍参数。我之前接过几个类似的小型包装项目有的用继电器搭逻辑巡视和维修都非常痛苦有的用单片机做抗干扰和后期改参数又是一个大坑。这套系统从一开始就定为“PLC做主控 触摸屏做人机交互 变频器调速 传感器反馈”的四层架构设计目标有三个操作工可以快速上手换产品规格时不用改线、不用改程序在触摸屏上改参数就行系统具备手动/自动双模式调试阶段手动逐点动作生产阶段自动连续运行关键故障堵料、缺料、气缸不到位必须能在触摸屏上直观显示并记录便于维护。这套系统适合作毕业设计、课程设计也适合小型食品厂、包装车间的自动化升级预研。真正做工程项目的同事也可以参考它的框架把传感器和执行机构换成现场实际型号程序结构基本可以平移。2. 硬件选型看似随意其实每一步都有讲究2.1 PLC主机S7-1200系列为何是平衡点这套系统我选用的是西门子S7-1200家族里的CPU 1214C DC/DC/DC具体订货号为6ES7 214-1AG40-0XB0。选择这个型号有几个实际考虑S7-200 SMART虽然便宜但在做相对复杂的顺序控制、配方管理和模拟量扩展时程序容量和指令集捉襟见肘S7-1500当然性能更强但对于一条糖果包装线来说属于资源浪费成本也压不住。1214C恰好卡在中间——它自带14路数字量输入和10路数字量输出还集成了2路模拟量输入对本项目一级扩展就够程序空间和存储区余量充足以后加配方、加报警记录都从容。选DC/DC/DC版本主要为了适配现场电源。食品车间里通常有稳定的24V开关电源传感器、触摸屏、PLC直接共用一组直流母线比AC/DC版本少一个220V转24V环节也少一层干扰。这点在初学阶段容易忽略等你到现场就会被传感器误动作折磨到后悔没选好电源方案。2.2 变频器与电机ABB ACS355带动输送带输送带电机是0.55kW的三相异步电机我给它配了ABB ACS355变频器。这个选型的原因很简单ACS355自带Modbus RTU接口支持通过RS485和S7-1200做通信控制频率、启停、电流反馈全部走通信连模拟量线都省了。走Modbus通信而不是用模拟量端子控制频率在糖果包装线这种场景有实实在在的好处。模拟量控制需要额外加模拟量输出模块还要考虑信号地干扰问题而Modbus通信只需要两根线抗干扰能力强运行频率可以直接从触摸屏设定并写入PLC再由PLC转发给变频器精度和响应速度对输送带来说完全够用。变频器的核心参数设置我放在第3节详细展开这里先提醒一句ACS355和S7-1200做Modbus通信时关键是把变频器的通信协议地址和PLC的Modbus功能码对清楚地址偏移弄错的话烧一天时间都查不出问题。2.3 传感器计数靠光电定位靠接近开关整个系统的传感器配置是这套设计的另一个关键点。输送带入口处装了一个对射式光电传感器型号选欧姆龙E3Z-T61用于糖果下落计数定量分组机构的两端各装一个电感式接近开关型号是PF的NJ4-12GM-N用于气缸往复运动的极限位置检测热封装置的入口装了一个漫反射光电传感器用于检测糖果包是否到位。这里有个不少新手容易踩的坑糖果是透明玻璃纸包装的话对射式光电要选能检测透明物体的型号普通光电对透明物体经常漏检。我最初用普通漫反射光电做糖果计数透明糖纸直接穿透导致计数虚高后来换成对射式才稳住。做项目选传感器时一定要先去现场看物料特性而不是先看手册参数。2.4 触摸屏与通信组网KTP1200如何与PLC对接触摸屏我选的是西门子KTP1200 Basic PN12寸屏足够显示整个产线的主画面、参数设定页和报警页。KTP1200本身支持Profinet和S7-1200通过网线直接组网不需要额外配置网关。整个系统的通信组态如下设备与PLC之间用Profinet总线连接触摸屏和PLC是一组网段变频器的RS485线接到CPU的信号板CB1241上。但如果你用的是1214C不带信号板的版本那就需要加一个通信模块CM1241 RS485这是常见的扩展配置。博图里把两个设备都组态到同一个网络后触摸屏和PLC之间的变量连接是自动建好的但要注意在HMI变量表里把“连接”指向对应的PLC连接这个细节漏了会导致仿真时触摸屏读不到PLC数据后面第5节我会专门讲。CB1241信号板插在CPU本体前面的扩展槽上需要专门的license订货号6ES7 241-1CH30-1XB0做项目时记得提前确认好授权。3. 控制程序搭建博图编程的核心逻辑3.1 程序块规划与调用结构博图V16以上版本建议直接用S7-1200的固件V4.0以上做项目编程语言用梯形图配合少量SCL处理数学计算如果有的话。整个项目我规划了下面的程序块结构OB1主组织块调用所有子程序扫描周期调度FC1手动控制处理单个设备的点动操作FC2自动运行处理整线顺序控制主流程FB1计数与定量使用高速计数器HSC和边沿统计配合DB1存放数量状态FB2气缸推料使用顺序控制模型含中间步和超时检测FC3报警处理汇总报警信号并记录触发时间DB1系统状态存放计数、模式、报警、当前批次数据DB2配方数据存放产品规格参数速度、数量、推料间隔等。这种“OB调度 FC功能分割 FB数据封装”的结构对于中小型PLC项目是稳健的选择。好处是单人开发时逻辑清晰后期维护时也能快速定位问题区域坏处是初学者往往会把所有逻辑堆在OB1里结果程序上千行调试一次哭一次。我强烈建议从一开始就养成“一个功能一个块”的习惯。糖果包装系统的逻辑不算特别复杂但如果你把所有定时器、计数器、气缸动作全部铺在主程序里后面加一个功能就要改一堆联锁而且查故障时让人头皮发麻。3.2 手动/自动双模式设计手动模式的作用是设备调试和故障恢复。这个模式我放置在OB1中通过触摸屏上的“模式切换”按钮来切换程序里用一个M位或者DB变量来标记。手动模式下的操作逻辑比较简单每个执行机构都对应触摸屏上的一个按钮按下时输出接通松开时断开。触碰设备的保护联锁仍然要生效——比如热封装置温度未到手动模式也不能启动热封动作推料气缸手动伸出时行程末端如果被糖果盒卡住也要靠接近开关做位置限制。这些保护逻辑是安全底线不管手动自动都必须在程序里强约束。自动模式是生产的主模式。按下“启动”按钮后程序从上电初始状态开始依次进入“来料检测→输送带启动→计数到设定值→输送带停止→推料气缸伸出→热封动作→气缸缩回→输送带再启动”的循环。这个流程基本固定但每个步骤的进入条件都必须写清楚避免出现两个动作同时触发的现象。3.3 计数与定量控制的实现细节计数是这套系统的“硬骨头”之一。糖果下来速度很快如果用普通扫描周期的计数器来统计脉冲会有漏计的风险。系统里我采用的是S7-1200的高速计数功能给光电传感器信号分配一个专用的数字量输入点本设计用I0.0对应HSC1通过CTRL_HSC指令使能高速计数。HSC与普通计数器最重要的区别在于普通计数器依赖PLC的扫描周期一个扫描周期内如果你的程序没有执行到那一条计数指令脉冲就丢了HSC则是由硬件电路直接计数不占用扫描周期计数上限高不会丢脉冲。对糖果包装这种高速小物件场景来说HSC基本是唯一可靠的选择。程序里我设定的定量数值是一个整数配方参数比如每10颗糖果为一组在DB2中存储。当HSC当前值等于或大于定量值时置位“定量完成”标志然后触发输送带停止进入推料环节。需要注意的是HSC计数的是脉冲边沿因此传感器信号必须干净有抖动的话需要在传感器输出端加一个RC滤波或者在博图里给输入点配置数字量滤波时间我给I0.0配置了0.1ms的滤波实测计数稳定。3.4 气缸推料与热封动作的时序配合推料气缸是整个系统里最容易出问题的动作环节因为它牵扯到机械运动和时间配合。我采用的是双电控电磁阀控制的双作用气缸伸出和缩回分别靠两个输出点驱动。在程序里这两个输出必须有互锁逻辑绝不允许同时输出否则电磁阀线圈会烧毁或气缸会卡死。推料的时序逻辑如下定量完成输送带停止等待0.3秒让糖果稳定之后伸出电磁阀置位气缸开始推动糖果进入热封工位安装在伸出极限位置的接近开关检测到气缸到位后触发热封装置执行并保持1.2秒具体时间根据糖纸材料和加热温度调整热封结束缩回电磁阀置位气缸缩回到达缩回极限位置后输送带重新启动进入下一循环。这个时序里气缸到位信号一定要作为下一步动作的“使能条件”而不是纯粹靠定时器等待。因为气缸动作时间会受气压波动影响如果固定延时气压低了气缸还没到位就执行热封产品全部报废。用接近开关做位置反馈才是顺序控制的正确方式。3.5 配方参数设计与触摸屏联调预留配方数据是整个系统中让我后期维护最省心的部分。我在DB2里预定义了如下参数定量数量每批糖果颗数范围1~999输送带频率变频器运行频率范围0~50Hz热封时间热封装置保持时间单位0.1秒常用值10~15推料间隔气缸伸出前的稳定等待时间单位0.1秒报警停机使能是否在故障时自动停机。这些参数我都映射到HMI的“参数设定”画面里操作工在生产不同规格糖果时直接在触摸屏上改数字就行不用打开博图改程序。项目调试时也方便——比如发现热封时间不够直接在屏上数值加2马上就能看到效果调整。不过配方参数写进DB块后要给每个参数设置合理的上下限范围防止误操作把输送带频率改成55Hz电机长时间超频运行发热损坏。我在每个参数的写访问前都加了限幅逻辑一旦超出范围触摸屏弹窗提示并拒绝写入。4. 触摸屏组态从画面布局到变量连接4.1 画面架构设计KTP1200触摸屏的组态是在博图里完成的这步和PLC程序在同一个项目下编辑省去了单独的组态软件学习成本。触摸屏的画面我分了几个层级第一级是主画面第二级是参数设定、报警记录、手动调试第三级是具体的统计报表和IO监视。主画面显示整线运行状态的概览当前模式手动/自动、输送带运行频率、当前计数、已包装数量、当前报警条。操作工只需要盯住这一个画面就能掌握整体运行情况。主画面底部放两个大按钮——“启动自动”和“停止”这是操作工最常用的按键做得醒目且触控面积大。参数设定画面里放置了配方参数的数值显示和输入框还有“写入PLC”按钮。这个按钮的作用是让操作工修改参数后主动下发到PLC避免每改一个数字就实时通信一次导致界面卡顿。调试画面则把所有输入输出点的状态集中显示方便维护人员查线。4.2 变量连接与通信设置HMI变量在博图里可以手动建立也可以通过拖拽直接从PLC变量表生成后者效率高且不容易出错。KTP1200与S7-1200通过Profinet通信时HMI的变量连接必须选择“S7-1200”连接类型IP地址设置为PLC的同一网段比如PLC是192.168.0.1HMI就设192.168.0.2子网掩码默认即可。HMI变量和PLC变量之间是单向还是双向访问取决于变量的读写属性。我建议把“报警状态”设为只读“设定频率”设为读写防止HMI误写。HMI变量连接不上的问题绝大多数出在IP网段不一致或者是博图里没有把PLC和HMI放在同一个子网下检查这两处基本能解决。4.3 报警组态的三个关键细节报警组态在触摸屏里看着简单实际做起来有三个细节很容易出问题。第一个是报警文本必须绑定到具体变量或位不是简单地在画面上放一个文本第二个是报警类别要区分“故障”和“提示”故障类需要确认且记录提示类只做状态提醒第三个是报警记录的时间戳是从PLC端读取的还是HMI端生成的这点很关键。我实际做下来建议报警文本变量用PLC里的DB变量报警触发时间用PLC读取系统时间后写入DB这样HMI显示的时间和你PLC程序里记录的时间是同一个来源排查问题的时候才能对得上。这正好呼应了之前看到有人在问“西门子KTP1200触摸屏改完时间显示不信任PLC”其实根因就是HMI和PLC使用了不同的时间源或者HMI的时间是手动改的和PLC运行时钟不同步导致报警记录时间和实际发生时间对不上。最稳妥的做法是让HMI和PLC都使用相同的时钟源或者干脆在PLC里统一读系统时间并显示避免各记各的。4.4 KTP1200时间显示与PLC时间不同步的实操处理前面提到时间不同步的问题这里展开讲一下处理步骤。KTP1200默认有一个独立时钟这个时钟可以通过触摸屏的“设置”界面手动修改也可以从PLC同步。但很多情况下如果你只改了HMI的显示时间而没有设置PLC的时间源报警记录里就会出现“HMI显示时间和PLC实际时间不一致”的现象。我的做法是在PLC的OB1里调用“RD_SYS_T”读取系统时间然后把这个时间值写入到一个DB变量中HMI画面不直接显示HMI自己的时钟而是显示PLC传来的时间值。这样即使HMI的时钟因为电池电量不足或手动误改而漂移操作工看到的仍然是PLC的系统时间报警记录也以这个时间为准。KTP1200本身断电时间长了会走不准所以不能依赖它的内置时钟作为生产记录的时间基准每次都从PLC时间走是最可靠的。5. 联合仿真与调试不接一根线也能验证整个系统5.1 博图PLCSIM与触摸屏仿真联动整个项目没有实物硬件也能验证逻辑使用的是博图的PLCSIM仿真功能和KTP1200的HMI仿真功能。博图里选中PLC项目点击“仿真按钮”启动PLCSIM它会模拟S7-1200的CPU运行然后选中HMI项目点击“仿真”启动触摸屏模拟器两者会在同一个博图工程里自动建立通信连接。这套基于仿真的流程解决了一个很实际的痛点——学生在没有硬件的情况下如何完整验证一个系统的可行性。PLCSIM会模拟输入和输出映像区你可以通过在仿真面板里手动置位某个输入点模拟传感器信号触发然后在HMI仿真画面上观察对应状态变化。气动推料、热封时间、输送带频率这些都能在仿真里按PLC程序执行对于验证逻辑完备性来说效果已经很接近实物。5.2 用PLCSIM触发传感器信号做全流程跑通仿真的操作思路是这样的先把PLCSIM启动并下载程序让CPU处于RUN状态然后打开HMI仿真器点“自动模式”按“启动自动”回到PLCSIM的输入表里把“入口传感器”对应的那个输入位手动置1再置0模拟一个糖果落下再置1再置0模拟第二个糖果落下如此反复直到计数达到设定值这时观察HMI画面输送带应该停止推料气缸应该伸出。这种通过修改输入映像来模拟信号的方法在验证计数器、定量逻辑、顺序动作和报警联动时非常高效。我通常把整个循环跑50个糖果确认计数、停止、推料、热封、重新启动的完整循环没有卡死再验证报警触发——比如让某一步意外超时看报警画面是否正确弹窗并停机。仿真阶段跑通的顺现场调试就能省一大半时间。5.3 常见问题与排查技巧实录问题1HMI仿真连不上PLCSIM。这个90%是博图项目里HMI和PLC没有建立真正的子网连接或者HMI变量的连接定义不对。检查方法进入HMI变量表看变量的连接列是否显示“PLC_1”如果显示空白手动选择PLC连接。问题2Modbus通信失败变频器收不到速度给定。排查步骤先用PLC往变频器的通信状态字里写数据看看变频器面板有没有反应确认变频器参数是否启用Modbus检查RS485线A/B是否接反。最常见的是PLC侧Modbus主站的从站地址和变频器里设的从站地址不一致这类问题用调试软件监控通信帧最快就能定位。问题3计数偶尔多跳几个。先查传感器信号是否抖动加滤波时间再查HSC反馈里是否有重复计数。我实测下来对射光电安装位置离糖果下落点太近糖果弹跳会二次遮挡也会导致重复计数因此安装高度和安装角度都要做约束。问题4气缸动作和热封动作时序不对。优先检查接近开关安装位置是否到位其次看程序里步骤切换的条件是否把“气缸到位信号”作为了必要条件。如果确实是信号问题可以通过HMI调试画面看输入点状态是否及时翻转。问题5热封温度没到自动模式就启动导致报废。程序里必须把“热封温度到位”这个模拟量或者开关量条件加进自动启动的联锁逻辑里面温度不到自动启动按钮按下后系统不进入运行状态并在HMI上提示。6. NPN/PNP接法、变频器接线等工程落地关键点6.1 传感器是NPN还是PNP接法怎么定这是现场接线最容易翻车的地方也是从热词里看到最多人搜的问题。S7-1200的数字量输入模块源型输入低电平有效对应NPN传感器漏型输入高电平有效对应PNP传感器。具体来说NPN传感器输出低电平时信号有效因此PLC输入公共端要接电源正极PNP传感器输出高电平时信号有效因此PLC输入公共端要接电源负极即公共端M。热词里提到的“输出脉冲接入西门子PLC的NPNPLC公共端接的电源正接法”实际上指的就是NPN传感器接入源型输入模块时的接线方式传感器棕色线接24V蓝色线接0V黑色信号线接入PLC输入点PLC输入公共端一般是1M或M端接到24V。这样当传感器导通时信号线被拉低也就是给PLC输入端一个低电平有效信号对应输入位为“1”还是“0”取决于你组态时选了“源型”或“漏型”。S7-1200 CPU本体集成的数字量输入默认支持源型和漏型两种形式具体看接线方式公共端接正就是源型接负就是漏型。但不少扩展模块是有明确类型的选型时必须看清楚。如果传感器类型和模块类型不匹配最常见的现象是信号永远不变化或者逻辑取反导致程序怎么调都不对。6.2 ABB变频器与S7-1200的通信实操ABB ACS355与S7-1200做Modbus RTU通信时核心参数设置如下变频器参数设置中将通信协议选为Modbus从站地址设为01波特率设为9600数据格式设为8N1然后通过RS485端子连接PLC的通信模块。ACS355在Modbus协议下的寄存器地址和西门子S7-1200的Modbus通信指令地址映射关系略有差异S7-1200侧我使用Modbus_Comm_Load指令初始化端口再使用Modbus_Master发送读写请求寄存器地址设为40001对应变频器的运行/停止控制字40002对应速度给定。寄存器地址的偏移是Modbus调试中最常见的坑我建议先通过Modbus调试工具读一下变频器的实际寄存器确认数据显示正常后再写PLC程序。6.3 S7-1200寄存器使用与C#上位机采集预留S7-1200寄存器也就是数据块DB和M区地址访问方式有几种上位机常通过西门子S7协议读写。系统里PLC通过Profinet与HMI通信但也预留了以太网口给上位机。后续如果你想做产线数据采集C#通过S7协议访问S7-1200 DB块是比较成熟的做法网上有很多开源封装库通过节点、DB号、偏移地址读写在博图里预先定义好的变量区即可。这个扩展方向在项目设计阶段就应该考虑好我现在会把需要上位机读取的数据集中存放在一个专门的DB块中并在这个DB里做好数据注释。这样做既方便博图里的监视调试也为将来的MES对接、产量统计、设备效率分析留好了数据出口项目后期改造时就不用动PLC核心程序了。6.4 从仿真到真机接线检查和上电顺序从仿真切换到实物调试时上电顺序和检查步骤一定要规范。先检查电源部分确认24V电压正确、极性无误再检查所有传感器和执行机构的接线尤其是公共端的接法和PLC模块的源型/漏型设置是否匹配然后断开执行机构输出用PLC的变量监控表强制各个输出逐个确认电磁阀、变频器启动信号的动作是否正确最后才恢复自动运行逻辑。这个顺序看起来笨但能避免很多低级错误——比如先把程序下载进去却发现输出端子接反了导致气缸反向动作撞坏机械结构。实物调试比仿真多了很多不确定因素哪怕是一个传感器的安装支架松动在你排查逻辑半天后发现是机械问题会非常耗时。所以接线和安装的检查工作一定不能省。7. 实操心得与扩展建议最后分享几个我在这个项目里比较深的体会。第一这套系统的核心难点其实不在PLC程序本身而在于“输入信号是否可靠”。传感器选型、接线方式、安装位置这些看似外围的部分才是决定整个项目成败的关键。计数丢一个推料到不到位气缸有没有卡料反映到程序里就是你逻辑再完美输入信号错了输出也会错。这也是为什么我在第2节花了不少篇幅讲传感器选型和NPN/PNP接法。第二仿真验证一定要真的一步一步跑不能只是编译通过就以为逻辑正确。博图PLCSIMHMI仿真这套组合只要输入信号模拟得够细大部分逻辑漏洞都能在仿真阶段暴露出来。我在仿真中就发现过气缸伸出到位信号和输送带启动条件同时满足导致输送带提前启动的问题如果不是全流程跑通了很难提前发现。第三从这套系统往后扩展可以做几个方向接入称重模块实现缺粒检测增加CCD视觉检测外观缺陷通过以太网把产量和设备状态送到车间MES系统。控制器的容量和通信接口我都已经留好了余量后续升级不需要换PLC本体只需要扩展模块和增加程序段。做项目时提前为升级留好空间这是实际的工程思维也是对系统生命周期的负责。这个项目我实际做下来从方案设计到仿真跑通大概花了两周多的时间后续在现场接线和调试又花了一周。如果有人在做类似题目希望这篇文章能帮你少走一些弯路。