基于PLC的智能农业温室大棚控制系统设计与调试实战
2026/9/9 11:45:05 网站建设 项目流程

前阵子帮人调试了一套基于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 SR20(12DI/8DO)加一个模拟量扩展模块EM AM06(4AI/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的以太网通信默认端口号是102,MCGS驱动里一般会自动带出来,不用手动改。采集周期默认100ms就够用,画面刷新太快反而会增加PLC通信负担,尤其是模拟量多的时候。

4.2 监控画面规划

MCGS画面我一般分四页:

  • 主监控画面:显示大棚结构示意图,传感器实时数值(温度、湿度、光照、土壤湿度)直接标在对应位置,设备运行状态用颜色区分(运行绿色、停止灰色、故障红色)
  • 手动操作画面:每个设备一个按钮,带状态指示,只有模式开关打到手动档时这些按钮才有效
  • 参数设置画面:温度上下限、湿度上下限、灌溉时间窗口、滞回值等参数都能改,改完写入PLC的V区
  • 报警与历史曲线画面:实时报警列表、历史报警记录、温湿度趋势曲线

变量连接是最繁琐的一步。MCGS里定义变量时,数据类型和PLC地址必须一一对应。比如PLC里的温度工程量存放在VD100(浮点),MCGS里就要建一个数值型变量,通道类型选"VD",地址写100;开关量M0.0对应MCGS的开关型变量,通道类型"M",地址写0.0。这里最容易出错的是浮点和整形的对应关系,PLC里VD100占4个字节(VW100和VW102),MCGS里如果你不小心把另一个变量建到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逻辑控制-执行机构动作-触摸屏监控"的骨架是不变的,把这套骨架打扎实了,扩展什么都顺手。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询