十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

基于PLC的智能农业温室大棚控制系统设计与调试实战

基于PLC的智能农业温室大棚控制系统设计与调试实战 前阵子帮人调试了一套基于PLC的智能农业温室大棚控制系统设计整个过程折腾了大概三周从I/O点表捋到梯形图再到MCGS触摸屏组态最后联动运行。说实话这类项目在课程设计和毕业设计里出现的频率非常高但它绝不是把几个传感器接上、写几段梯形图那么简单。温室大棚最麻烦的地方在于环境变量多、执行机构杂、还要兼顾手动和自动两种工况任何一个环节没理顺现场就会出各种幺蛾子。这篇文章我想把这套系统的完整设计思路、硬件选型、程序框架、组态画面和调试经验一次讲透。适合正在做类似课题的同学、刚入行做农业自动化的工程师还有想用PLC替代传统单片机方案的种植基地技术员。文中涉及的控制逻辑和接线方式都是照着能直接落地的标准来写的你可以把它当成一份带讲解的设计复盘来参考。1. 先从需求说起温室大棚到底要控什么1.1 环境因子与控制对象拆解智能温室的核心任务说白了就是把大棚内部的温度、湿度、光照、土壤条件维持在某个适合作物生长的区间内。但维持在区间内这六个字落到现场就是一批具体的控制对象。以最常见的连栋温室或单体拱棚为例执行机构通常包括侧卷膜电机控制通风、顶卷膜电机控制排热、外遮阳网电机控制光照、内保温幕电机夜间保温、湿帘水泵和风机夏季强制降温、喷淋/滴灌电磁阀灌溉、补光灯阴天补光、加热设备冬季升温、CO2气肥阀门促进光合作用。这些执行机构数量一多控制逻辑就要分优先级不能一股脑全上。传感器方面至少需要空气温湿度、土壤湿度、光照强度、CO2浓度这几类信号。如果是水培或育苗场景可能还要加营养液EC/pH、水温等模拟量。输入信号里除了模拟量还有卷膜电机行程限位开关到上限/下限要停、手动/自动切换旋钮、设备运行反馈等开关量信号。我把这些需求整理成一张控制矩阵后面写程序、配I/O都对着它来不遗漏也不会重复环境因子传感器执行机构控制方式空气温度温湿度变送器风机、湿帘、侧卷膜、顶卷膜、加热器分档位式控制高温优先降温空气湿度温湿度变送器喷淋、风机区间控制湿度过高通风土壤湿度土壤水分传感器滴灌电磁阀下阈值开启、上阈值停止可定时光照强度光照变送器遮阳网、补光灯超上限遮阳低于下限补光CO2浓度CO2变送器气肥电磁阀低于下限施放高于上限关闭1.2 为什么选PLC而不是单片机或工控机这个题目被反复拿出来做一个很重要的原因就是PLC在温室场景里的优势太明显了。单片机方案成本确实低但温室现场有电机启停、接触器吸合这些强电干扰源单片机系统在抗干扰、长期稳定性上是有风险的。工控机方案功能强大也适合做复杂的农业AI算法但价格高、现场维护门槛也高一个普通种植基地的技术员不一定玩得转。PLC处在两者之间最舒服的位置梯形图编程直观维护电工看得懂I/O口扩展灵活模拟量、开关量、高速脉冲都能接MTBF平均无故障时间长适合温室这种需要7x24小时运行的环境而且通过串口或以太网接触摸屏和上位机都非常成熟。结合最近很火的那个农业大模型AI实时监测土壤气象的话题PLC这套系统完全可以作为AI决策的底层执行层。也就是说AI负责算算出最优温湿度区间和灌溉策略PLC负责做把决策变成具体的风机、阀门动作。所以现在做温室控制PLC不但没过时反而是智能化落地的关键执行端。2. 硬件选型与I/O分配动笔写程序前最重要的一步2.1 控制器和模块怎么选预算不高的课程设计或小型基地改造我建议直接用西门子S7-200 SMART系列。原因很简单市场上保有量大资料多编程软件STEP 7-MicroWIN SMART免费而且CPU本体自带以太网口连触摸屏和上位机都方便。具体选哪个型号取决于I/O点数和模拟量路数。以一套中等规模的单体大棚为例开关量输入大概需要手动/自动切换1点、卷膜上限位2点、卷膜下限位2点、设备运行反馈若干合计8~12点。开关量输出大概需要各电机接触器、电磁阀、补光灯、加热器、蜂鸣器合计10~14点。模拟量输入需要空气温湿度1路温湿度一体变送器输出1路或2路、土壤湿度2~3路、光照1路、CO2 1路合计5~7路。按照这个规模S7-200 SMART CPU SR2012DI/8DO加一个模拟量扩展模块EM AM064AI/2AO基本够用。如果点位再多就换SR30或SR40或者再接一个EM DR08扩展数字量输出。选型公式就一句话先把I/O点表列出来再按20%的余量去选型号别卡着极限选。2.2 传感器选型和信号类型匹配传感器这块有个容易踩的坑变送器输出的是4~20mA还是0~10V必须和PLC模拟量模块的输入类型匹配。S7-200 SMART的模拟量输入通道通过拨码开关和接线方式支持0~10V和0~20mA但4~20mA电流信号接进去之后要记得在组态里选择对应的量程范围否则读数要么不对要么跳变。温度传感器我试过两种方案一种是SHT30这类数字温湿度传感器加转换模块转成模拟量输出价格便宜但长期稳定性一般另一种是直接上工业温湿度变送器输出4~20mA精度和稳定性都好很多就是贵。课程设计用前者够了实际工程建议用后者。土壤湿度传感器要注意探针的材质不锈钢探针的寿命比普通的铜探针长很多而且长期埋在土里不容易腐蚀。光照变送器最好选带防护罩的避免水滴和灰尘影响读数。CO2传感器属于红外原理价格比较高如果预算紧张可以先用环境温湿度加光照做间接推理不一定非要加CO2。2.3 接线细节NPN和PNP千万别搞混开关量信号这块限位开关、接近开关、按钮都涉及NPN和PNP两种接法这是现场接线出错率最高的地方。我见过好几次接近开关信号死活不进PLC最后发现是NPN和PNP接反了。针对S7-200 SMART的漏型输入即公共端接电源正也就是热词里说的那个npn接法NPN型接近开关的接法是接近开关的棕色线接24V蓝色线接PLC输入公共端1M注意公共端接的是电源正黑色信号线接PLC的I点。这样当开关动作时信号线被拉低电流从公共端流入输入点PLC读取到有效信号。PNP型则相反公共端要接0V信号线输出高电平有效。这里插一句实实在在的提醒S7-200 SMART的数字量输入同时支持漏型和源型接法关键在于公共端1M/2M怎么接。接24V就是漏型输入适合NPN传感器接0V就是源型输入适合PNP传感器。接线前一定要先看传感器型号再看PLC公共端接法两者必须匹配否则轻则信号不动作重则烧毁输入点。模拟量接线也要注意4~20mA变送器一般用两线制正极接24V负极接模拟量输入通道的端通道-端和电源0V共地。信号线务必用屏蔽双绞线屏蔽层单端接地别跟动力线走同一个线槽。3. 程序框架与控制逻辑梯形图这样写才不乱3.1 程序总体架构主程序子程序中断很多初学者写温室控制程序喜欢把所有逻辑堆在OB1主程序里结果程序越来越长查个故障眼睛都看花。正确做法是把功能模块化按手动/自动这个大前提拆开自动模式下再按控制对象分成若干子程序。以S7-200 SMART为例我习惯这样组织主程序OB1调用初始化子程序、模式判断、报警处理子程序SBR_0模拟量采集与工程量转换子程序SBR_1温度控制逻辑风机、湿帘、卷膜、加热子程序SBR_2湿度与灌溉控制逻辑子程序SBR_3光照控制逻辑遮阳网、补光灯子程序SBR_4手动模式操作逻辑中断程序INT_0定时采样比如每隔1秒读取一次模拟量并刷新这样的好处是每个子程序只干一件事调试的时候单独监控一个子程序问题定位非常快。课程设计写报告的时候也能把每个模块的逻辑单独画出来讲内容更清楚。3.2 模拟量采集与工程量转换模拟量信号进PLC后第一步是工程量转换。S7-200 SMART的模拟量输入模块把4~20mA信号线性映射为0~27648的数字量0~20mA对应0~27648。比如一个量程为-40~80℃的温湿度变送器输出4~20mA实际温度值和AIW0读数的关系就是温度 -40 (80 - (-40)) × (AIW0 / 27648)这个公式要写进子程序里用浮点运算指令计算。注意AIW读出来的是整数必须先转换成浮点数再做乘除否则小数点被截断温度要么偏高要么偏低。滤波处理也很关键。温室环境里传感器信号偶尔会有毛刺我一般做连续采样5次取平均值的滑动滤波采样周期1秒既能滤掉瞬时干扰又不会让控制反应太迟钝。如果要求更高可以用一阶惯性滤波公式是Y(n) K×X(n) (1-K)×Y(n-1)K取0.3左右效果比简单平均更平滑。3.3 温控策略分档位式控制别一上来就PID温室温度控制是核心也是最容易写乱的环节。我见过有人一上来就上PID结果参数调不出来现场温度震荡得厉害。实际上温室这种大惯性对象位式控制加滞回区间完全够用PID反而容易因为执行机构频繁启停而缩短设备寿命。我的做法是分三档温度高于T1比如32℃强制启动风机和湿帘关闭加热温度在T1和T2之间比如28~32℃只开风机或卷膜利用自然通风降温温度低于T3比如10℃启动加热设备关闭风机和湿帘关键是要加滞回比较也就是常说的死区。比如风机启动温度设为32℃关闭温度设为30℃中间差2℃避免温度在32℃附近波动时风机频繁启停。这个滞回逻辑用比较指令加自锁位来实现梯形图上就是两个比较块并联后锁定一个中间位。我踩过的一个坑是没有做联锁保护风机和加热器同时启动了。冷热空气对着吹纯属浪费电。后来在程序里加了一条加热器启动条件里必须串联风机未运行和湿帘泵未运行这样从逻辑上杜绝了同时动作的可能。卷膜电机也一样上限位和下限位信号必须串联在正反转回路里防止限位开关失灵导致卷膜机拉坏棚膜。3.4 灌溉策略定时条件双重判断灌溉控制不能只靠土壤湿度这一个条件否则阴雨天土壤湿度本来就高系统可能一整天都不浇晴天又可能浇得太勤。我采用的方案是时间窗口湿度阈值双重判断。具体思路设定每天允许灌溉的时间段比如早上8点到晚上6点在这个时间段内如果土壤湿度低于下限值比如30%RH并且距离上次灌溉已经超过最小间隔时间比如30分钟系统才打开滴灌电磁阀当土壤湿度达到上限值比如60%RH或者灌溉时长达到上限比如15分钟电磁阀关闭。这个逻辑里最小间隔时间和最大灌溉时长两个参数相当于保险丝防止传感器故障时电磁阀一直开着把大棚淹了。定时功能用S7-200 SMART的定时器或读取系统时钟都能实现课程设计用定时器就够了但现场最好读实时时钟因为断电重启后定时器和实际时间会对不上。3.5 手动/自动模式与安全停机温室控制系统必须保留手动模式这是设备调试和应急情况下的保命功能。我的做法是用一个选择开关切换PLC读取这个开关的状态打到自动档程序跑前面说的那些控制逻辑打到手动档操作员通过触摸屏上的按钮直接控制每一个设备。手动模式下的程序逻辑反而是最容易出问题的。如果只是简单地把触摸屏按钮直接映射到输出点操作员在手动模式下点了风机启动切回自动模式时风机可能还在运行自动程序又不知道这个状态就会打架。解决方案是模式切换时做一个软复位从手动切到自动的瞬间把所有输出位复位一遍然后再让自动程序接管。这个细节很小但实际运行中有没有它差别很大。另外还要加一个急停回路急停按钮串接在所有输出回路的公共端按下急停所有执行机构断电。这个环节不能只靠PLC程序里做要在硬件线路上做因为PLC死机或程序跑飞时软件急停是不起作用的。这是安全回路的基本原则千万不能省。4. 触摸屏监控界面设计用MCGS把现场搬进屏幕4.1 工程搭建与设备通信触摸屏我常用MCGS昆仑通态因为和S7-200 SMART的通信配置比较简单而且组态软件免费学习成本低。新建工程后第一步不是画画面而是配置设备通信。在MCGS设备窗口里添加西门子S7-200 SMART驱动设置IP地址为PLC的IP比如192.168.0.2本地IP设为同网段192.168.0.1通信方式选以太网。串口方式也可以S7-200 SMART用PPI协议通过485口连接但以太网明显更方便而且能顺便做程序下载和在线监控。通信参数里有个细节S7-200 SMART的以太网通信默认端口号是102MCGS驱动里一般会自动带出来不用手动改。采集周期默认100ms就够用画面刷新太快反而会增加PLC通信负担尤其是模拟量多的时候。4.2 监控画面规划MCGS画面我一般分四页主监控画面显示大棚结构示意图传感器实时数值温度、湿度、光照、土壤湿度直接标在对应位置设备运行状态用颜色区分运行绿色、停止灰色、故障红色手动操作画面每个设备一个按钮带状态指示只有模式开关打到手动档时这些按钮才有效参数设置画面温度上下限、湿度上下限、灌溉时间窗口、滞回值等参数都能改改完写入PLC的V区报警与历史曲线画面实时报警列表、历史报警记录、温湿度趋势曲线变量连接是最繁琐的一步。MCGS里定义变量时数据类型和PLC地址必须一一对应。比如PLC里的温度工程量存放在VD100浮点MCGS里就要建一个数值型变量通道类型选VD地址写100开关量M0.0对应MCGS的开关型变量通道类型M地址写0.0。这里最容易出错的是浮点和整形的对应关系PLC里VD100占4个字节VW100和VW102MCGS里如果你不小心把另一个变量建到VW102两个变量就会互相覆盖画面数据就乱了。4.3 报警机制与历史数据报警功能是温室系统里非常实用的部分。温度过高、湿度过低、传感器断线、设备故障都要能弹出来。MCGS里做报警的方式是给变量设置报警属性比如温度变量超过35℃触发高温报警低于5℃触发低温报警。报警触发后可以联动声音提示也可以在画面上弹出警告窗口。传感器断线这个报警容易被忽略但现场很重要。4~20mA变送器断线时PLC模拟量通道的读数值会降到0或者跳到最大如果你把这些异常值直接当成真实温度去控制系统就会做出错误动作。我的做法是在程序里加一个量程判断AIW读数小于量程下限比如对应-45℃的数字量或者大于量程上限比如对应85℃的数字量时置一个传感器故障位这个位触发报警的同时自动把所有关联的控制输出断开防止误动作。历史曲线对于后期分析作物生长环境和优化控制策略非常有价值。MCGS支持把数据存到配方或数据库中也可以存成CSV文件导出。课程设计阶段简单做几条实时趋势曲线就够展示效果实际工程中我建议加一个4G DTU把数据传到云平台远程就能看数据、改参数省得天天跑现场。5. 调试中的坑与排查技巧实录5.1 模拟量读数乱跳、偏差大的处理现场最常见的故障就是温度读数一会儿30一会儿80或者始终显示一个固定值。排查思路按三步走先看接线再用万用表测变送器输出信号最后查PLC侧转换程序。接线问题主要是屏蔽层没接地、信号线和动力线走同一个线槽、接线端子松动。用万用表在变送器输出端量电流是否稳定如果电流稳定但PLC读数乱跳问题在PLC侧或通信干扰如果电流本身就不稳定那就是传感器或电源问题。24V开关电源纹波大的时候变送器输出也会跟着抖换个质量好点的电源往往能解决。如果模拟量读数偏差很大但不是乱跳先检查量程设置是否匹配。有一次我遇到温度显示比实际高十几度查了半天发现是变送器铭牌上量程是0~50℃PLC里工程量转换用的却是-40~80℃的公式映射关系整个错位了。这个坑很隐蔽建议拿到传感器先把铭牌拍个照存手机里做转换前对一遍量程。5.2 数字量信号不进PLC前面说的NPN/PNP接反是首要嫌疑。用万用表测信号线对公共端的电压NPN接法下开关不动作时信号线电压接近24V动作时被拉低到0V左右PNP反之。如果测到的规律和预期相反那就是接反了把公共端改接到另一极就行。还有一种是接近开关的指示灯亮了但PLC输入点不亮。这种情况通常是PLC输入点烧了或者公共端没接好。S7-200 SMART的输入点烧了之后没有明显的物理痕迹只能换个点测试。所以我做项目时都会预留20%的备用I/O点就是为了应对这种意外。5.3 触摸屏和PLC通信不上MCGS触摸屏和PLC连不上90%是IP地址问题。先ping一下PLC的IP能不能通能通再看MCGS驱动里的本地IP是否和触摸屏实际IP一致。有时候触摸屏有两个网口驱动配置里默认用的是以太网口你插到另一个网口上就通信失败。另外要注意S7-200 SMART的以太网端口默认允许连接数量有限如果同时开了STEP 7-MicroWIN SMART的在线监控、触摸屏通信、上位机组态软件可能会有一方连不上。把不用的调试工具先关掉给触摸屏优先通信。5.4 系统运行几天后执行机构动作乱套这种用着用着就出问题的故障多半和PLC程序里的数据保持设置有关。S7-200 SMART的V区默认是断电保持的M区默认不保持。如果你用M0.0作为风机运行状态位断电重启后M0.0变成0但实际上风机可能还在运行接触器自锁了程序就不知道设备真实状态了。解决方法是给重要的状态位加断电保持或者上电初始化时重新读取设备的实际状态。我在程序里做了一件事初始化子程序里把所有输出复位一遍确保PLC上电那一刻所有设备都是关闭状态然后操作员手动确认各设备正常后再切到自动模式。这样虽然麻烦一点但能避免很多莫名其妙的乱套。5.5 常见问题速查表现象可能原因处理办法模拟量读数乱跳屏蔽未接地、动力线干扰屏蔽层单端接地信号线远离动力线模拟量读数值固定变送器断线、模块通道损坏万用表测电流换通道测试温度显示偏差大量程映射错误核对变送器铭牌量程与程序公式接近开关不触发NPN/PNP接法错误测信号线电平调整公共端接线PLC输入点不亮输入点烧毁、接线松动换备用点紧固端子触摸屏连不上PLCIP不在同一网段ping测试检查本地IP配置设备自动/手动状态打架模式切换未复位输出切模式时强制复位所有输出位写在最后的一点个人经验做这套系统前前后后改了三版程序最初版本把所有逻辑都揉在主程序里后面越改越痛苦最后彻底重构才顺畅起来。我的体会是温室控制这种多对象、多模式的系统程序结构真的比技巧重要。先花半天把I/O点表、控制矩阵、模式切换逻辑画清楚再动笔写梯形图效率至少翻一倍。另外一个很实际的建议所有参数温度上下限、滞回值、灌溉时间都放在PLC的V区不要写死在程序里。这样调参数只需要在触摸屏上改不用反复下载程序。我见过太多人改一次参数重新下装一次程序现场调试进度全耗在这上面了。这套系统后续还可以扩展的方向不少比如接4G DTU做远程监控配合农业大模型做环境预测和智能决策或者在现有PLC基础上加一套水肥一体化灌溉模块。但不管往哪个方向走底层的这套传感器采集-PLC逻辑控制-执行机构动作-触摸屏监控的骨架是不变的把这套骨架打扎实了扩展什么都顺手。
返回列表