
做这套水果清洗机控制系统的时候手头刚好有一批老设备要改造原来用的是继电器加时间继电器那套老办法工人操作起来全靠经验洗得干不干净完全看当天手感。甲方提的要求很明确要能看得见、调得了、记得住。说得直白一点就是要一套可追溯的控制系统参数能随时改运行状态能在屏幕上看得一清二楚。我当时选型没有犹豫太久PLC用西门子S7-1200上位画面用博图WinCC做组态软件环境用博图V16。这套组合在中小型食品机械项目里属于非常成熟的搭配硬件性价比高软件上手也快网上资料多后续维护不愁没人会。这篇文章就把整个项目从工艺梳理、硬件配置、程序架构到画面组态、软件安装坑点完整地过一遍给准备做类似项目的同行一个参考。1. 项目背景与工艺需求拆解1.1 水果清洗机的清洗工艺水果清洗机听起来简单但实际上并不是“把水果扔进水槽里泡一泡”那么省事。不同品类的水果比如苹果、梨、柑橘类表皮耐受度不一样清洗方式也得跟着调。这套设备整线一般分成这么几段进料提升段、气泡预洗段、毛刷喷淋段、清水漂洗段和风干出料段。气泡预洗是整个清洗过程的重头戏。设备底部装有气泵通过管路把高压空气打进水里在水槽里形成密集的气泡。水果在气泡翻滚中相互摩擦表层的大部分泥土和农残就被“摇”下来了。这里要控制的不只是气泵的启停还有气泡强度气量太大容易把表皮软的水果打伤太小又洗不干净所以气泵频率需要能调。毛刷喷淋段针对的是表面有凹陷或者果皮较硬的水果比如土豆、红薯、苹果这类。毛刷辊成排布置水果在毛刷辊上前进辊子表面刷毛会裹着水流刷洗果皮表面同时上方高压喷淋持续冲洗。这一段牵扯到两个控制对象毛刷辊电机的转速和高压水泵的压力。再往后是清水漂洗用干净水把前面残留下来的泡沫和脏水冲掉最后是风干段用大功率风机把水果表面的水珠吹散方便后续分选和包装。1.2 控制需求分析把工艺捋清楚之后控制需求就浮出水面了。这套系统需要监控的物理量包括水槽液位、清洗水温、气泵压力或者频率反馈需要控制的执行机构包括输送电机、毛刷辊电机、循环水泵、气泵、风机、补水和排水电磁阀等。逻辑上要解决启停顺序、联锁保护、自动手动切换、报警记录、配方管理这些事。自动运行时的启动顺序很讲究不能一股脑全开。先要启动风机和水泵把管路和风道建立起来再启动毛刷辊和输送电机让物料开始往前走。这样做的原因很简单如果输送先走而喷淋还没建立水果进到设备里就没有水干磨摩擦阻力大容易伤果、也容易把毛刷辊憋坏。停机顺序则反过来先停输送让设备里的水果全部走出清洗段延时后再停水泵和风机。联锁保护主要围绕液位、过载和急停展开。水槽液位太低的时候循环水泵不能启动否则会空转烧泵各电机过载信号要在画面上报警同时切断对应设备的输出急停回路必须硬接线进PLC的DI点不经过中间继电器直接采集确保紧急情况下能快速响应。调度方面不同品种水果的清洗参数不一样所以系统要能存几组配方参数比如毛刷转速、气泡强度、清洗时间工人一键调取不用每次手动输值。1.3 为什么选S7-1200加博图WinCC这套组合这个项目如果单纯论控制点数用S7-200 SMART也完全拉得动成本还能降不少。但为什么选S7-1200加博图WinCC呢原因在于几个现实问题。首先是模拟量处理能力水果清洗机要接液位变送器、温度变送器、变频器反馈S7-1200不管是自带模拟量输入还是扩展SM1231模块精度和处理效率都更稳妥。其次是通信能力PROFINET是西门子家的优势项目HMI和PLC之间一条网线就能解决做画面变量的在线连接非常顺畅。第三点是扩展性。客户允许预留接口后面可能加流量计、电导率仪S7-1200加个通信模块或者扩展IO模块就能搞定不用换主控。第四点是软件生态。博图V16把PLC编程和WinCC组态放在同一个工程里变量共享拖拽关联开发效率比分开用Step7和WinCC flexible高得多。这个项目在博图V16环境里做后期客户自己换人维护找会博图的人比找会老版本Step7的人容易。2. 控制系统方案与硬件选型2.1 硬件配置清单这套系统的硬件配置我按实际点数来的没有盲目追求高配。CPU选的是S7-1200 1214C DC/DC/DC订货号6ES7214-1AG40-0XB0固件版本V4.0以上。这块CPU自带14个数字量输入和10个数字量输出对于这种规模的清洗设备来说基础够用不够的地方再扩展一个数字量输出模块。模拟量这边液位变送器和温度变送器各一路加上两个变频器的频率反馈一共需要4路模拟量输入扩展了一块SM1231 AI 4x13bit模块。如果客户的变频器不用反馈只需要速度给定那用CPU自带的AQ输出就可以模拟量输出模块都可以省掉。HMI用的是KTP700 Basic PN7寸触摸屏支持PROFINET做画面组态时用WinCC Basic版本就够不必上WinCC Professional。还有两个执行机构层面的选型要注意。气泡气泵和主输送电机我建议用变频器驱动不需要太贵的品牌支持Modbus RTU或者端子控制就够。考虑到成本和现场维护难度这个项目选择了端子控制加模拟量给定不搞通信控制简单直接坏了谁都会查。变频器输出频率给到0到10V模拟量信号S7-1200的AQ模块直接给干净利落。2.2 I/O点表梳理做控制柜之前先把I/O点表拉出来这是整个电气设计的基石。数字量输入这一块启动按钮、停止按钮、急停按钮各占一点六个电机或者设备的热继电器过载信号各占一点液位高位开关、低位开关占两点光电传感器检测出料口堵料信号占一点。加起来大概15个左右1214C自带的14个DI差一点点不过有两个过载信号我可以合并成故障汇总信号用一组常开触点串联进一个DI点维修时再对照柜内指示灯逐个排查这样点位上刚刚够用。数字量输出这一块主输送接触器、毛刷辊电机接触器、循环水泵接触器、气泵变频器启动端子、风机接触器、补水电磁阀、排水电磁阀、喷淋电磁阀再加一个三色报警灯总共9个。1214C自带10个DO还剩一个做备用。模拟量部分AI接液位变送器4-20mA、温度变送器4-20mA还有两台变频器的频率反馈4-20mA正好四路。AO接两台变频器的频率给定0-10V用CPU自带的2路模拟量输出。这样分配下来整个系统没有浪费也不紧张后期如果客户要加流量计SM1231上还剩一路备用通道可以顶上。2.3 电气设计与布线要点电气柜设计没什么特别花哨的地方但有几个细节必须跟电工交代清楚。第一个是模拟量信号线和动力线要分开走线信号线用屏蔽电缆屏蔽层单端接地。水果清洗机现场到处都是变频器和接触器电磁干扰非常严重屏蔽做不到位的话温度变送器在画面上跳个两三度都是常事。第二个是急停回路要硬接线。急停按钮串在接触器控制回路里同时把急停状态接到PLC的DI点。这样做的好处有两层急停拍下时设备立即断电PLC同时收到信号把画面切到急停状态弹出报警提示。如果只接PLC不接硬回路程序扫描周期再快也有延迟真出事故的时候几毫秒都不能等。第三个是24V电源容量要留余量。S7-1200自带传感器电源但一般不建议直接把所有传感器都接在上面。我习惯加一个独立的24V开关电源给传感器和中间继电器供电容量按总负载的1.5倍选避免某个传感器短路导致整个PLC供电异常。3. PLC程序架构与关键逻辑实现3.1 程序结构规划PLC程序这块我用的是比较常规的结构化写法OB1作为主循环调用各个功能块。项目里新建了FC1手动控制、FC2自动流程、FC3报警处理、FC100模拟量处理以及DB1输入映射、DB2输出映射、DB3参数设置、DB10 HMI共享数据这么几个块。为什么要把输入输出单独做映射而不是直接在程序里用I点和Q点这算是习惯问题也是维护性的考量。I点直接塞到DB1里程序里看到的是“进料光电”“液位高位”这种符号名而不是I0.3、I0.4这种裸地址。后期万一现场改线只需要调整映射块的分配不用满程序翻找哪里用了这个点。HMI上显示的变量也从DB里面取不会直接读I点。参数块DB3用来存放配方参数。里面建了配方号、每段延时时间、毛刷频率、气泡频率、温度设定值这些字段。HMI上做的配方选择功能本质上就是给DB3里的参数赋上预设值。这样做的好处是程序逻辑和工艺参数完全分离调工艺不用改程序改程序不用动参数。3.2 自动流程与联锁逻辑自动流程的核心是一个顺序控制逻辑我用步标志位来做。每一步对应一个M点或者DB里的Bool变量前一步满足条件后置位下一步标志位同时复位当前步。这种写法比直接用定时器串联更清晰每一步在HMI上都做成指示灯客户看到哪一步绿灯亮了就知道设备当前走到哪个阶段了。启动序列是这么设计的第一步检测启动条件急停复位、各热继电器无过载、液位不低于下限全部满足才能继续。第二步启动气泵风机建立气泡和风幕。第三步延时3秒后启动循环水泵让水循环建立起来。第四步延时5秒后启动毛刷辊电机第五步启动输送电机水果开始进料。每一步之间加延时核心目的是让水、气、刷都准备好再接料。停机序列反向执行先停输送电机让设备上的水果全部走完延时10到15秒等毛刷辊上方没有物料了再停毛刷辊电机最后停水泵和气泵。这样做能防止水果卡在毛刷段也能避免停机后毛刷泡在水里变形。联锁这一层液位低位信号触发时不管当前在什么状态循环水泵和毛刷辊立即停止同时画面弹报警提示“液位低已停泵”。温度超限的时候如果是热水清洗模式要切断加热输出只保留循环继续运行。出料口光电如果持续检测到堵料超过设定时间整个输送段停止防止物料堆积。3.3 模拟量处理与温控模拟量处理这地方要重点说一下。S7-1200自带的模拟量通道数值范围是0到27648这是西门子PLC的标准定标范围。你在博图里组态模块时可以设置测量范围为4-20mA对应0到27648。拿到这个原始值以后程序里用NORM_X和SCALE_X两个指令做定标NORM_X先把原始值归一化到0.0到1.0浮点数SCALE_X再按工程量上下限放大到实际值这样液位显示出来就是0到100.0厘米。这俩指令在博图V16的函数库里面直接拖就行不用自己写公式。但有一点要留意NORM_X的参数MIN和MAX要跟模块组态的测量范围对应如果组态的是0到27648那NORM_X的MIN填0.0MAX填27648.0否则算出来的工程量会偏差很大。我见过有人这两个参数填反了画面液位显示直接超过量程查了半天才找到原因。温度控制这里客户要求热水清洗模式要把水温稳定在一个设定值上下。我用的是博图自带的PID_Compact功能块组态成温度PID控制输出控制一个电加热调节阀的模拟量开度。PID_Compact第一次调试不用手动瞎调直接调用它的自整定功能让系统自动跑一轮阶跃响应它会根据过程特性算出P、I、D参数。整定完成后把参数固化到DB块里后面就不用再动了。要注意自整定的时候水槽液位必须稳定水量不能半大不小否则整出来的参数参考价值不大。4. 博图V16环境下的WinCC画面组态4.1 画面整体规划画面组态这项工作说白了就是把操作人员关心的信息用最直观的方式摆到屏幕上。我这套系统的HMI画面一共分了6页第一页是总览用一张设备侧视图把整条线的运行状态动态展示出来水槽画成蓝色填充矩形液位高低通过填充高度来体现水泵和风机运转时图标会旋转或者闪烁。第二页是自动控制页上面放了启动、停止、复位三个大按钮下面是当前运行状态指示包括当前处于哪个工步、剩余延时时间、故障信息。这一页主要是给操作工日常用的布局要尽量大按钮、大字体工人带着手套也能准确触摸。第三页是参数设置页输入框里可以改各段延时时间、频率设定、温度设定值下面挂了配方调取按钮A、B、C三组配方一键切换。第四页是手动操作页每个执行机构对应一个“点动”按钮和状态指示灯。这页是给调试和检修人员用的设备运行时操作工不需要碰它。第五页报警画面报警控件实时刷新当前和历史报警。第六页用户管理区分操作员和管理员权限参数设置页默认对操作员只读要管理员登录才能修改。4.2 变量表与动画连接博图V16里面做WinCC画面组态最大的优势就是变量共享。PLC程序里建的DB块变量HMI侧可以直接通过“从PLC变量中选择”的方式关联过来不用重新建立一个HMI变量再做连接。操作路径是在HMI变量表里新建变量然后在“连接”栏选择对应的PLC连接再从PLC变量下拉列表里找到那个DB地址。不过这里有个细节要提醒HMI访问PLC的DB块变量属性的“访问”要设置成非优化块访问。S7-1200新建DB块默认是优化的块访问HMI有时候读不到里面的变量内容。我一般的做法是建DB的时候直接右键属性把“优化的块访问”勾选去掉这样地址就是固定的绝对地址HMI和触摸屏访问起来兼容性最好。画面的动态效果本质上是给图形对象绑定变量。比如水槽液位显示我画一个矩形填充颜色选蓝色然后把这个矩形的“填充高度”属性关联到液位变量设好0%到100%的对应范围液位一变矩形填充高度就跟着变。水泵运转的旋转动画更简单给旋转图标的“旋转角度”属性关联一个内部变量通过PLC程序每秒改变这个变量的值每45度跳一次转起来就是大家都在现场看到的那种旋转效果。如果不想让PLC多做这个逻辑直接在HMI里用“可见性”切换做一个三叶片的轮播也能凑合看。4.3 报警、趋势与用户管理报警系统这块我优先用的是HMI自带的报警控件。PLC程序里把每个故障条件对应一个M点比如“电机过载”对应M20.0然后在HMI的报警管理里建对应的报警条目触发变量选M20.0。这样HMI会自己记录报警出现时间和恢复时间不需要PLC额外做历史存储少写很多逻辑。报警条目里面要填报警文本这地方建议写清楚“哪个设备发生了什么问题”和“现场怎么处理”。比如“1号循环水泵过载检查泵体是否卡死检查热继电器整定值”操作工看到以后能直接按提示去处理不用每次都打电话问电工。趋势画面用来记录温度、液位这类连续变量。博图V16的趋势控件在WinCC Professional里功能更全但在KTP精简面板上只能用简单的运行数据记录。如果客户要回看历史曲线我的做法是PLC程序做一个数据缓存每分钟把温度和液位存到DB块里循环覆盖存最近1000条记录HMI趋势控件关联这个DB数组就能看到最近十几个小时的趋势走势。这个方法实现起来很简单不用额外加数据记录服务器。用户管理这里KTP面板上默认有一个管理员账户可以再加普通操作员账户。管理员能进参数设置页修改配方操作员只能启动停止和切换配方。权限控制是在画面切换按钮上做的把按钮的“权限”属性设置成对应的用户组没有权限的用户点按钮会弹出禁止提示。5. 博图V16安装与许可证报错排查5.1 安装环境准备博图V16这个软件本身不是什么难装的东西但对电脑配置有底线要求。我建议至少是i5八代以上的CPU内存16GB起步硬盘预留80到100GB空闲空间系统装在SSD上。博图创建项目时会在后台自动开启一个SQL Server实例机械硬盘跑起来那个项目编译速度会让人怀疑人生SSD能明显改善编译和下载的体验。操作系统方面Windows 10专业版或企业版64位是最稳妥的选择家庭版经常在某些组件上出幺蛾子不建议用来做开发环境。安装前还有几项准备工作。第一关闭杀毒软件和Windows Defender实时保护不然装到一半经常卡在某个组件上不动。第二确保Windows系统自带的所有更新都装完尤其是.NET Framework 3.5和4.8组件博图依赖这两个运行环境缺了会在安装过程报错。第三安装包放到纯英文路径下面不要放在中文目录里安装路径也建议直接用默认的C盘路径不要改到带中文或者特殊字符的地方。安装过程本身是向导式的基本就是一路下一步中间会让你勾选要安装的组件。建议把Step7 Professional和WinCC相关的都勾上反正后面哪个没用上也不碍事。S7-1200编程只需要STEP 7 Professional就够了精智面板的画面组态需要WinCC Comfort精简面板用WinCC Basic就行。如果是刚入行的同行建议先选安装全部组件省得后面要用某个功能时发现没装还得重新跑一遍安装程序耗时很冤枉。5.2 许可证常见错误博图V16用了一段时间的同行基本都见过那几个经典的许可证报错。最常见的是启动时弹窗提示“没有许可证”或者“许可证无效”还有一种是在线下载程序到PLC时提示“项目被锁定”或者“缺少STEP 7许可证”。先排查许可证状态。电脑上打开Automation License Manager看一下右边列表里有没有TIA Portal相关的许可证状态是不是已激活。如果许可证显示没有安装那就需要重新激活一下。插入许可密钥U盘之后在Automation License Manager里选中许可证右键选激活把它激活到本机的磁盘上。激活以后重新打开博图一般问题就解决了。另外一个容易被忽略的原因是Automation License Manager服务没有启动。打开Windows服务管理找到名称里带“Automation License Manager”的服务确认它的启动类型是“自动”并且当前状态是“正在运行”。有时候系统做了精简优化把这个服务设置成手动或者禁用了博图启动时检查不到授权服务就会报许可证错误。解决办法是把服务重新设为自动手动启动它再启动博图就好了。更新系统时间或者改变系统日期后报许可证错误也很常见。西门子的许可证机制会校验系统时间戳系统时间和上次激活时的记录差距太大就会判定许可证无效。解决办法是把系统时间改回正确的当前时间重新激活一次许可证以后不要再乱改时间。这种报错容易发生在一些喜欢调快电脑时间赶工期的开发人员身上真遇到了按上面操作恢复就行。还有一点不支持和盗版有关的激活方式大家还是通过正当渠道获取许可证这样项目的版本和售后才有保障。5.3 其他安装坑除了许可证问题博图V16在安装过程中还有几个很常见的坑。第一个是安装到最后提示“系统必须重新启动”然后退出安装。这种情况一般是前面某个Windows补丁没装完或者上一次卸载软件后注册表里还留着PendingFileRenameOperations记录。处理方式是把注册表里HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager下的PendingFileRenameOperations项清理掉重启以后重新跑安装程序。改注册表之前记得备份一下别手滑把别的键值删了。第二个坑是安装过程中报“SQL Server安装失败”。博图依赖本地SQL Server实例这个实例如果之前装过其他软件产生冲突就容易装不上。处理办法是在安装前用Windows的卸载程序把旧版本SQL Server实例清干净再把Program Files下的Microsoft SQL Server目录改名备份重新安装博图时它会自己重新建一个独立的实例。第三个坑比较隐蔽就是Windows用户名是中文的情况。博图的工程项目管理工具对中文用户名支持不好经常出现项目创建失败或者编译报错。解决办法其实简单给电脑新建一个英文名管理员账户用这个账户来安装博图和开项目就不会有这个烦恼。这个坑我当年踩过一次以后每次都直接交代给客户能省不少调试时间。6. 调试经验与常见问题速查6.1 通讯与仿真调试程序写完之后我习惯先在博图里用PLCSIM跑一遍仿真再下载到真实PLC。PLCSIM V16能模拟S7-1200的指令执行画面组态那边可以配合Simulation模式下运行WinCC Runtime在电脑上把逻辑和画面联动试一遍。仿真阶段重点验证的是自动流程步骤能不能按顺序走延时时间是否正常联锁信号触发后设备会不会正确停止。仿真没问题再下现场能降低百分之七八十的逻辑错误率。到现场连不上PLC是经常出现的问题。第一件事检查电脑网卡的IP地址和PLC的IP是不是同一个网段。S7-1200出厂默认IP是192.168.0.1如果你的电脑是192.168.1.10那肯定连不上手动把电脑网卡改成192.168.0.x网段地址就行。第二件事检查PG/PC接口设置博图顶部菜单里选择在线访问的网卡类型很多人装了虚拟网卡或者无线网卡博图自动选的网卡不对就会导致找不到设备。下载程序时如果提示“模块不存在”或者“固件版本不匹配”要注意S7-1200新固件和博图V16的兼容性。博图V16支持到S7-1200固件版本V4.4左右如果你的PLC固件是V4.5以上V16可能识别不到。这种时候可以通过存储卡或者博图里的更新功能把固件降级也可以直接用更高版本的博图软件做下载。以我经验看现场用的1214C如果是老项目拆机件固件版本往往偏低V16以上版本软件都能兼容下装。6.2 常见故障排查表现场调试时遇见的故障五花八门但总结起来不外乎下面几类。做一张速查表大家对着排查能少走弯路。故障现象可能原因排查方法HMI画面显示“无连接”PLC和HMI不在同一网段网络线松动PLC程序未下载检查IP地址、重新插拔网线、Ping一下PLC地址模拟量显示值跳变屏蔽线未接地信号线与动力线同槽模块量程设置错误检查屏蔽层单端接地、重新布线、核对模块组态量程液位低但泵还在运行液位信号接错DI点程序中联锁条件未生效监控程序在线状态看液位低位标志有没有置位手动能启动自动起不了自动模式未满足启动条件步标志位被卡住检查启动条件状态、在线监视顺序控制的每个步骤变频器频率给定正常但电机转速不变变频器参数未设置外部端子给定AO接线松动核对变频器频率源参数、检查AO端子电压温度超调严重PID参数不合适自整定工况不达标重新做自整定检查液位稳定后再整定必要时手动调整P、I参数触摸屏无法下载组态WinCC版本和面板固件不匹配以太网连接中断确认面板型号和组态版本兼容、检查ProSave连接设置6.3 几个值得注意的细节最后再分享几个常规文档里不会写但实际工程中特别重要的细节。第一个是强制表的使用要谨慎。调试时我用强制表给传感器信号模拟输入验证逻辑对不对但调试完成后一定记得把强制点全部清除。有一次我调试完忘了取消一个强制点第二天操作工来开机设备莫名其妙处在自动运行状态吓得人一跳花了一个多小时才发现是PLC里一个I点还在被强制。所以强制表用完就清养成习惯。第二个是关于DB块数据保持的问题。水果清洗机的配方参数如果存在非保持区PLC断电重启后数据会恢复成初始值客户前一天调好的工艺参数一夜之间全没了肯定要找你麻烦。解决办法是在PLC属性里把参数DB块设置成“保持性”数据块断电后数据能存储在CPU的保持存储器里。设置方法是在DB块属性里把V值勾选上保持性CPU的保持存储区范围要覆盖到这些DB的地址。第三个是程序注释和版本记录。写完一个功能块顺手把修改日期、修改人、修改内容写在块注释里这个习惯关键时刻能救命。有次客户打电话说设备运行不稳定说自从上次调过以后就不对了我一查程序块注释发现最近一次修改是三个月前加温度联锁对照修改记录很快就把问题定位到新加的那段联锁逻辑。项目交付后你不可能永远随叫随到注释写清楚就是在给自己减少后续维护的沟通成本。这套水果清洗机控制系统从设计、组态到交付调试前后花了大概三周时间真正在现场集中调试只用了两天。前期工艺需求理得清楚、硬件选型匹配得当、程序结构搭得合理后期的调试工作量就会小很多。博图V16这套软件用熟了之后从编程到组态可以全程一个工程搞定中间省掉很多来回倒腾数据的功夫。如果你也正准备用S7-1200加WinCC做一套类似的设备控制系统希望这篇项目记录能帮你少踩几个坑多省几天时间。总之这套系统跑起来以后甲方最满意的就是画面上的液位动画和实时报警好多以前靠老师傅经验判断的东西现在屏幕上看得一清二楚。