西门子S7-200与MCGS组态在温室大棚自动化中的应用
做温室大棚自动化的项目这几年经手的也不少。从最早的继电器定时器控制到后面单片机方案再到PLC加触摸屏组态我个人的感觉是如果项目要稳定、要能论保护、要客户能自己改参数那西门子S7-200配上MCGS组态依然是很顺手的一套组合。尤其是黑木耳这类食用菌大棚对温湿度的要求比普通蔬菜大棚苛刻得多白天晚上温差波动一大菌棒就容易出问题。这套方案用梯形图把逻辑写死再用MCGS把画面做出来基本能做到“无人值守、异常报警”这篇文章就把我实际做的项目拆开来讲透从接线到编程再到组态一步一步说清楚。1. 项目需求与整体方案设计1.1 温室大棚自动化到底要解决什么问题黑木耳种植和普通叶菜不太一样。菌丝培养阶段需要暗光、高湿出耳阶段又需要散射光和较大的昼夜温差刺激原基形成。如果全靠人工去大棚里观察再手动开风机、拉卷帘、开喷淋一来人不可能二十四小时盯在那里二来人的判断标准不统一同样温度有人觉得该通风有人觉得不用。自动化要做的事情本质上就是把这几个环境因子管住棚内空气温度高了要通风降温低了要保温甚至加温报警。空气相对湿度特别是出耳期湿度低于六七十就容易干棒需要喷雾加湿。土壤或基质湿度浇水不能按天算应该按含水量算缺水自动滴灌够了自动停。光照与换气卷帘的开关控制遮阳和通风同时能配合风机做强制对流。报警与保护温度探头异常、执行器过载、停电后来电都得有明确的提示。所以这个项目的控制对象并不复杂复杂的是要把这些逻辑理清楚让手动和自动两种模式都能操作让客户能直接在触摸屏上改温度上限、湿度下限这些参数而不是每次都要拿电脑重下程序。1.2 S7-200加MCGS方案为什么值得选选型的时候我也纠结过要不要用更新一些的S7-200 SMART但客户现场原来就有一台老款S7-200 CPU224而且手头的扩展模块也是EM231模拟量输入模块。这种情况下没必要推翻重来S7-200虽然停产多年但二手设备和配件都便宜资料满天飞梯形图编程用STEP 7 Micro/WIN老工程师都会。关键是它的PPI口跟MCGS触摸屏通信非常成熟MCGS的驱动库里直接有S7-200的驱动组态时填一下站号就能连上。MCGS这边我选的是嵌入版配合原装触摸屏具体型号是TPC7062系列七寸屏显示分辨率够用画大棚示意图、趋势曲线、报警页面都放得下。MCGS的真正优势在于变量绑定做得直观PLC里的V存储区、M中间继电器、Q输出点在组态里对应建立变量然后图元和变量一绑PLC那边一运行屏上就实时刷新不需要写通信代码。这套方案的另一个好处是抗干扰能力强。大棚现场有水泵、风机、卷帘电机全都是感性负载启停瞬间的干扰很厉害。S7-200的开关量输入输出本身有滤波模拟量用EM231的4-20mA信号传输走屏蔽双绞线只要接地和处理得当基本不会出现漂移或者误动作。2. 硬件选型与接线图解析2.1 元器件清单与选型理由硬件的选择直接决定项目能不能稳定运行我列一下这套系统实际用到的清单也顺便说清楚为什么选这些型号而不是随便找个替代品。类别元件名称型号/规格数量作用主控PLC CPU西门子S7-200 CPU2241逻辑控制核心扩展模拟量输入模块EM2314路1采集温湿度信号传感器温度变送器PT100加变送器4-20mA输出2棚内温度和基质温度传感器湿度变送器电容式4-20mA输出2空气湿度和土壤湿度执行器轴流风机380V 1.1kW2通风降温执行器水泵/滴灌电磁阀220V 电磁阀 DN252滴灌与喷雾执行器卷帘电机380V 0.75kW1卷膜通风/遮阳执行器补光灯220V LED植物补光灯1组弱光补偿保护断路器、接触器、热继电器按负载选型若干主回路保护人机界面MCGS触摸屏TPC7062KX1监控与参数设置选温湿度传感器的时候特别说一句一定要选带变送器的输出标准4-20mA信号。以前图便宜买过PT100直连的距离超过二十米以后导线电阻影响很大还得在PLC程序里做三线制补偿麻烦得很。换成变送器之后远距离传输靠电流信号抗干扰能力强接线也简单两根线一正一负直接进EM231端子。2.2 PLC输入输出分配表这部分我在做项目时第一件事就是画I/O分配表画不好后面编程全是坑。分配的原则是按钮、开关这些输入量放在低位执行器输出放在低位模拟量固定占用CPU的AIW偶数地址。这套系统的分配如下类型地址名称说明开关量输入I0.0启动按钮系统上电使能开关量输入I0.1停止按钮系统暂停自动控制开关量输入I0.2手动/自动切换自动模式时自动运行开关量输入I0.3卷帘上限位卷膜全开到位开关量输入I0.4卷帘下限位卷膜全关到位模拟量输入AIW0棚内温度变送器4-20mA对应0-50摄氏度模拟量输入AIW2空气湿度变送器4-20mA对应0-100%RH模拟量输入AIW4基质温度变送器4-20mA对应0-50摄氏度模拟量输入AIW6土壤湿度变送器4-20mA对应0-100%RH开关量输出Q0.0风机1接触器大棚强制通风开关量输出Q0.1风机2接触器大棚辅助通风开关量输出Q0.2喷雾电磁阀空气加湿开关量输出Q0.3滴灌电磁阀基质浇水开关量输出Q0.4卷帘电机正转卷膜开启开关量输出Q0.5卷帘电机反转卷膜关闭开关量输出Q0.6补光灯接触器光照补充开关量输出Q0.7声光报警器越限报警注意几个细节一是卷帘电机正反转在PLC程序里必须做互锁也就是说Q0.4和Q0.5不允许同时输出否则电机控制接触器会直接短路。硬件接线上正转接触器和反转接触器也加了机械互锁双保险。二是模拟量地址跳过AIW0下面的AIW1因为S7-200的模拟量地址都是偶数地址AIW0、AIW2、AIW4这样排下去没有AIW1这个地址。2.3 接线图设计关键点接线图我这里不说画图的软件操作重点讲几个容易出问题的位置。电源系统要先理清。现场是大棚三相电进线我给控制柜做了一个总断路器分出三路一路给PLC开关电源220V转24V DC一路给接触器控制回路220V一路直接给电机回路380V。PLC的24V输出端子不能用来驱动大负载我单独配了一个明纬24V/5A的开关电源专门给传感器和中间继电器供电。EM231模块上的24V电源也要注意如果传感器多尽量用独立电源别直接从PLC的传感器电源端子取太多电流。模拟量信号的接线要特别注意屏蔽和接地。4-20mA信号线用屏蔽双绞线屏蔽层在控制柜这一端单点接地。变送器那端的屏蔽层悬空不要在传感器端也接地否则会形成地环路电流信号就会叠加干扰。我在项目里就吃过这个亏当初图省事两头都接地结果AIW0读出来的温度上下跳了快两度排查了很久才发现是地环路。EM231在测量4-20mA信号时需要先设置模块上的DIP拨码开关。EM231的拨码开关是配合量程用的具体配置在手册里有表。我记得常用的设置是把量程拨到4-20mA对应的数据格式是0到320004mA对应640020mA对应32000。这个细节太重要了程序里做工程量换算全靠这个基准拨错档位读出来的数值全都不对。3. PLC梯形图程序设计详解3.1 程序框架结构与模拟量工程量转换S7-200的梯形图用STEP 7 Micro/WIN软件来写。项目程序我分成主程序、两个子程序和两个中断程序。主程序里放网络0到网络20包括初始化、模拟量读取、温度逻辑、湿度逻辑、卷帘逻辑、报警逻辑。子程序一个用于通信数据打包一个用于手动控制逻辑。这样可以避免主程序太长调试的时候也方便单独看某一部分。模拟量读取是整个控制的基础。EM231把传感器信号变成数字量之后PLC读到的原始值是0到32000的整数但这个数字不是温度得先换算成工程量。换算公式是温度值 AIW读取值 - 6400/ 32000 - 6400 × 测量量程举例来说温度变送器量程是0到50摄氏度如果AIW0读到的原始值是12800那么温度就是12800 - 6400/ 25600 × 50等于12.5摄氏度。程序里我用浮点运算来做先开一个双字VD区存浮点结果再用整数转浮点指令处理原始值。梯形图里大致是这样LD SM0.0 MOVW AIW0 VW200 // 原始值存入VW200 I_DI VW200 VD204 // 转换为双整数 DI_R VD204 VD208 // 转换为实数 -DR VD208 6400.0 // 减去零点偏移 /R VD208 25600.0 // 除以量程 *R VD208 50.0 // 乘以满量程 MOVR VD208 VD300 // VD300就是棚内温度空气湿度、基质温度、土壤湿度都是同样的套路只是量程不同。我习惯把这些转换结果统一放到V区路径是VD300、VD304、VD308、VD312后面所有的比较指令都直接用这些浮点数。这样做的最大好处是MCGS组态里绑定变量时可以直接对应V区不用再去算原始值。3.2 温度控制逻辑设计温度控制我分了两档启动风机和启动卷帘。棚内温度超过28摄氏度时启动第一台风机超过30摄氏度时第二台风机和卷帘同时动作把棚两侧的卷膜往上提利用自然通风加强制通风迅速降温。温度回落到26摄氏度以下时先关第二台风机回落到24摄氏度以下时关第一台风机并落下卷帘。梯形图里用浮点数比较指令来实现。S7-200的浮点比较指令是LD、LPS、AR 这样的组合。我这样写的Network 6 温度超上限启动风机 LD SM0.0 AR VD300 VD320 // VD320是温度上限设定值默认28.0 S Q0.0 1 // 启动风机1 AR VD300 VD316 // VD316是回差下限默认24.0 R Q0.0 1 // 关闭风机1这里用到回差控制而不是单一的比较点。如果只设一个28度触发的点风机会在28度上下反复启停接触器受不了。我设了上限28度启动、24度停止中间四度的回差区间让风机一次动作至少能稳定运行一段时间。这个经验很实用特别是在夜间温度波动的时候没有回差控制一晚上风机可能启停几十次。卷帘控制因为有上限位和下限位两个限位开关逻辑上要用到位信号。温度高时卷帘上升碰到上限位开关I0.3就把Q0.4断开温度恢复正常后卷帘下降碰到下限位I0.4把Q0.5断开。这里我还加了一个时间保护卷帘运行超过40秒还没碰到限位就强制停掉并报警防止限位开关坏了之后电机一直堵转烧毁。3.3 湿度与灌溉控制逻辑黑木耳大棚的湿度控制分两路一路管空气湿度一路管基质湿度。空气湿度主要用于喷淋雾化目标区间是65%到85%RH。低于65%启动喷雾电磁阀高于85%停止。考虑到电动阀频繁启停容易发热我在程序里加了一个保护时间喷雾一次最短运行30秒也就是说即使湿度回升很快也不会刚开启就被立刻关断。实现的思路是电路里用TON定时器启动条件成立时定时器开始计时30秒后置位一个中间继电器把这个中间继电器的常开触点串联在关闭条件里保证最短运行时间。基质湿度就是滴灌浇水目标区间按基质重量含水量算设定为30%启动、50%停止。这里比空气湿度多了一步需要排除雨天的影响。我在程序里设定了一个外部干接点输入用来接雨水传感器或手动雨天开关如果检测到下雨滴灌逻辑直接禁用防止棚外雨水足够还要浇水。这个细节客户当初觉得多余后来一场连阴雨下来就知道有用了基质湿度一直维持在合理区间没有过湿。灌溉管路的电磁阀我选了带手动开关的型号万一PLC出故障现场还能靠手动打开阀门手动浇水。这个设计不算先进但很实用农业现场维护人员不一定懂PLC留一个机械手动功能紧急情况下能保生产。3.4 手动自动切换与安全互锁手动自动切换我用的是I0.2拨动开关。自动模式下所有执行器由程序逻辑控制手动模式下触摸屏上的手动操作按钮直接控制各个输出点。这个功能在调试阶段特别有用先用手动模式单独测试风机转向、卷帘开合、阀门通断确认接线没问题了再切自动模式跑逻辑。手动逻辑其实很简单就是用触摸屏的按钮把对应的M中间继电器置位或复位然后把M点和PLC输出点之间做逻辑。比如手动开风机触摸屏按一下M10.0置位Q0.0输出。自动模式下M10.0不参与控制由温度比较结果直接控制Q0.0。安全互锁是梯形图里必须要有的东西。最典型的是卷帘电机正反转我在输出段写了Network 15 卷帘电机正转输出 LD Q0.5 NOT A M10.2 // 手动正转按钮 O M20.0 // 自动正转条件 AN I0.3 // 上限位 AN Q0.5 // 与反转互锁 Q0.4反转出口的逻辑里同样串了Q0.4的常闭点。这样即使程序某处有bug同时置位了正反转条件输出端也会因为互锁而只有一个生效。另外电机主回路的接触器在硬件上也做了联动PLC输出控制中间继电器中间继电器再控制接触器线圈接触器辅助常闭点串联在对方线圈回路里实现了硬件级互锁。报警输出方面我设置了几个独立的报警条件棚内温度超过38度或低于5度基质湿度低于20%模拟量采集值小于1000对应断线卷帘运行时间超时。任何一个条件成立Q0.7报警器就响。报警信号同时作为一个状态字写到V区供MCGS在画面上显示具体报警文本。4. MCGS组态画面设计与通信配置4.1 MCGS工程创建与PLC通信设置MCGS这边我用的是嵌入版组态环境版本是7.7。新建工程第一步是确认设备窗口。MCGS的设备窗口就是整个组态跟外部设备打交道的入口必须先把S7-200的驱动加进来。在设备工具箱里选择“西门子S7-200”双击加入设备窗口然后配置通信参数。S7-200的通信接口是PPI协议默认参数是9600波特率、8数据位、1停止位、偶校验。MCGS触摸屏的COM1口通过一根RS485线连到PLC的Port0通信口上。站号设置要注意PLC的站号默认是2MCGS驱动的设备地址也要填2两边对不上就通信失败。设备窗口里还要添加通道。每个通道对应PLC的一个地址比如把AIW0映射成MCGS的“棚内温度”变量把Q0.0映射成“风机1运行”把VD300映射成“温度显示”。这里有个坑MCGS变量类型要对应准确V区的浮点数据要选浮点型开关量选开关型整数选整数型。选错了数据在画面上不是乱码就是不动。我当时把VD300定义成了32位浮点结果画面上显示正常温度如果错选成16位无符号整数读出来的就是原始整数除以不知道哪个值完全对不上。4.2 监控主画面与参数设置画面主画面我按大棚实际布局画了一张示意图。棚中间是黑木耳菌棒放置区顶部是两个风机图标侧面是卷帘的图形底部是滴灌管路。每个执行器图标旁边放一个状态指示灯运行是绿色停止是灰色。这种画面客户看着直观不需要懂PLC就能判断设备状态。画面上最重要的区域是实时数据显示温度、湿度、基质水分这些数值用大字显示旁边配一个色块超上限变红正常变绿低于下限变蓝。MCGS在动画组态里提供了“颜色动画连接”直接绑定变量值的范围比如温度大于28度变红色这个功能比我当初预想的方便不用写脚本就能实现。参数设置画面是客户最常用的页面。我把温度上限、温度回差下限、空气湿度上限、空气湿度下限、基质湿度上下限这些设定值都做成了输入框绑定到对应的V区变量比如VD320是温度上限VD316是回差下限。客户在触摸屏上直接改参数PLC下个扫描周期就能读到新值不需要停机下载。这也是我当初坚持用V区存设定值而不是用S7-200的SMB区的原因V区可以通过通信直接读写。参数设置画面的输入框要设置数值范围MCGS里可以限制最小值和最大值。温度上限我限制在20到45度湿度上限限制在50到95防止客户不小心输入一个离谱的数值把逻辑搞乱。范围限制这个功能别嫌麻烦一定要做现场操作工手指头快输错一个数字设备动作就乱套了。4.3 报警功能与历史趋势曲线报警功能MCGS有两种做法一种是把PLC里的报警状态字传到组态然后由组态判断显示另一种是组态自己监控变量越限直接弹窗。我两种结合用了。PLC侧有报警状态字VW400MCGS在设备窗口添加了VW400这个通道然后在实时数据库里建一个“报警状态”的开关型变量通过脚本把VW400的各个位拆出来驱动画面上对应的报警文本显示。历史趋势曲线这个功能很值钱。黑木耳种植户想知道一晚上温度到底波动了多少、湿度最低落到了多少光靠瞬时值根本看不出来。MCGS里我加了两个趋势曲线控件一个显示棚内温度和基质温度的历史曲线一个显示空气湿度和土壤湿度的历史曲线。数据来源是MCGS自己的历史数据库只要组态在运行变量就会按设定的采样周期记录。采样周期我设的是10秒一次数据量不大但能精细还原一整天温湿度的变化过程。报警记录页面也很关键。MCGS的报警功能在运行策略里配置把需要报警的变量拖进去设置报警类型和报警值。报警产生后会自动记录到报警数据库中客户可以回看昨天几点温度超限了是哪个风机没启动还是卷帘卡住了。这些功能在调试时看不出多重要但真正运行起来一条可靠的报警记录能帮人少跑好几趟大棚。4.4 触摸屏运行与下装注意事项MCGS的工程在电脑上用组态环境开发好之后要下载到触摸屏里。下装的方式有两种一种是用网线通过以太网下载一种是U盘拷贝。TPC7062KX支持网口下载但我在现场经常遇到触摸屏和电脑IP不在同一网段的问题最稳妥的方法是把触摸屏的IP改成电脑同一网段比如电脑是192.168.1.10触摸屏就设成192.168.1.20。下装完成后触摸屏会自动重启运行刚才的组态工程。下装之前一定要检查设备窗口和运行策略有没有编译错误。MCGS的编译错误提示有时候不够明确我曾经遇到一个“变量未定义”的错误排查了半天才发现是画面上一个图元绑定的变量在实时数据库里已经被删除了。所以修改画面时删掉一个数据库变量之前先想清楚所有绑定了这个变量的图元会不会变成失效引用。正常运行后触摸屏和PLC之间是主从通信关系MCGS作为主站周期读取PLC的数据。如果通信断了画面上的数据会停在最后一个值但不影响PLC执行程序。这个特性我特意和客户交代过不然他们看到画面数据刷新慢了或者不刷新以为PLC死机了慌慌张张跑过来喊我。5. 常见问题排查与调试心得5.1 通讯时断时续怎么处理MCGS触摸屏和S7-200通信失败是最常碰到的问题症状是画面上的数据刷新卡顿或者一些变量显示乱码。排查顺序我总结了一套先看通信线是不是接对了S7-200的Port0口注意Port0的3号脚是RS485的B正8号脚是A负很多新手把正负接反再看MCGS驱动的站号是不是PLC站号PPI协议站号不一致直接连不上最后看波特率两边必须一致。如果通信线、站号、波特率都没问题还时断时续那就要怀疑干扰了。我处理过一个现场触摸屏画面一直跳数字后来发现PLC通信电缆和控制电缆走在了同一个线槽里风机一启动画面就乱。解决办法是把通信线单独穿管走离动力电缆至少二十公分以上通信线两端加磁环问题马上解决。MCGS触摸屏的通信口旁边一般有两个接地端子别忘了把触摸屏的接地端子和控制柜的接地排连起来好多通信不稳定都是接地没接好导致的。5.2 模拟量数值上下乱跳的真相温度显示乱跳这个问题我调试的前几个项目几乎都遇到后来总结原因主要集中在三处。第一处是EM231模块的DIP拨码开关拨到电流档之后有没有给模块提供外部24V电源有的接线方式是直接插到CPU的扩展总线上模块供电由CPU提供但如果同一总线上挂了多个扩展模块电源容量不够模拟量就会漂移。第二处是变送器信号的负载电阻EM231内部有采样电阻外部不需要并联电阻有些电工顺手并了一个100欧电阻进去电压被拉低读数就不准了。第三处是屏蔽层单端接地还是没有接地用万用表量信号线和地线之间的电压如果频繁跳动先查接地。还有一个小细节传感器变送器上电后要等稳定一般上电后一到两秒输出才稳定。PLC程序读取频率如果太高会偶尔采到启动瞬间的跳变值。我程序里没有对模拟量特别做滤波只是把采样周期放在了子程序里每隔500毫秒读取一次。这个频率对温室大棚这个慢时变的控制对象完全够了蔬菜大棚温度变化再快也快不过几秒。5.3 项目中踩过的几个坑和心得第一个坑是卷帘电机堵转。最开始我把正反转互锁做了但没做运行时间超时保护。有一次现场限位开关被卷膜缠住卷帘电机一直转直接把减速箱齿打坏了。从那之后所有正反转控制的电机我都加超时保护卷帘40秒没到位就自动停报警灯闪提醒人去处理。第二个坑是停电后来电的问题。大棚供电经常因为雷雨跳闸来电动后PLC自动运行如果当时温度超上线风机立刻启动这个没问题。但如果基质湿度低于下限滴灌也要开始浇水而现场停电时操作工可能正在检修管路。所以我在PLC程序里加了一个“停电保持”的启动确认逻辑断电恢复后Q0.0到Q0.7全部先复位操作工必须到触摸屏上按一次“运行确认”按钮系统才重新进入自动控制。这个逻辑用S7-200的保持型存储器M存储一个标志位来实现断电用超级电容保持来电后读取标志位为0就锁住自动输出。客户一开始觉得麻烦后来有一次检修管道时跳闸来电后系统没有自动浇水才理解了这道保险的价值。第三个心得是关于程序注释。S7-200的STEP 7 Micro/WIN支持给每个网络写注释我在每个网络标题里都写了中文说明比如“Network 5 温度上限自动启动风机1”还在梯形图旁边加了工艺说明。当时觉得是耽误时间但后续有一次设备改了控制逻辑需要我远程指导客户改参数客户照着注释和屏幕上的中文提示居然自己就把回差值改了没让我跑一趟现场。这件事让我意识到好的工控程序不只是控制功能正确还要让不写程序的人能大概看懂在干什么。5.4 MCGS组态画面运行优化的几个建议触摸屏上不要放太多动画效果。MCGS的图元动画绑定做起来很方便但没必要把每个图标都做成闪烁效果。闪烁在报警时用一下就够了平时一直闪反而让人麻木。我见过有人把风机状态做成一秒闪三次的动画运行半小时现场操作工眼睛就看花了。状态显示用颜色变化是最好的方案绿色稳定、红色报警一眼看懂。数据刷新速度也要控制。PLC扫描周期本身很短但触摸屏没必要跟着那么快把MCGS的采集周期设置成一秒就够用了。设置得太快通信负担重反而影响稳定性特别是带了多块仪表一起通信的时候刷新速度要统一规划。此外组态工程做好后最好在电脑上用模拟运行功能先测试一遍画面逻辑。MCGS组态环境里可以直接启动模拟运行不连PLC也能看到画面和数据变化情况。我用这个功能检查过画面上的按钮变量名是否拼错、趋势曲线曲线是否存在冲突。等模拟运行没问题了再下装到触摸屏连PLC联调能省下大量现场调试时间。写在最后的经验沉淀做农业自动化项目跟做工厂自动化完全是两种节奏。工厂里的控制逻辑相对标准设备动作时序严格而大棚里全是模拟量环境因素控制结果没有一个绝对准确的标准更多是靠经验和回差来维持一个合适的环境区间。这套S7-200加MCGS的项目做下来我最深的体会是PLC梯形图不是越复杂越好把逻辑写清楚、把保护机制做全比炫技重要得多。触摸屏画面也不是越花哨越好让操作工一眼能看到温度湿度、知道哪个设备在运行、有问题能报警能查到记录这就是一套好系统。如果后续谁要在这个基础上扩展我建议可以做手机远程监控用MCGS的物联功能加一个4G模组把现场温湿度数据上传到云平台人在家里就能看到大棚情况。这个方向的需求现在越来越大特别是种植户往往不止一个大棚集中监控已经成刚需了。不管怎么升级底层的PLC逻辑和组态画面设计思路都是通用的把基础打扎实了后面接什么平台都不慌。
上一篇/下一篇内容由系统自动关联
返回资讯列表 →