简介:这是一份面向电气工程及自动化专业学生的课程设计/毕业设计文档,围绕基于PLC的自动浇灌系统,从课题背景、PLC与传感器选型到控制程序设计给出完整方案,适合需要完成同类课题或了解智能灌溉系统搭建的读者。文档为1个doc格式文件,压缩包约925KB,内容按论文章节展开,涵盖PLC机型与容量选择、温度/湿度传感器选型、电动机启动方式及电气控制电路、EM235模拟量模块配置和温度/湿度监控程序等关键设计环节。与普通继电器控制方案相比,该系统通过传感器采集环境参数并交由PLC逻辑判断,可自动启停水泵,实现节水节能;同时支持手动/自动模式切换,降低劳动强度。目前已有132人学习浏览,适合作为课程设计参考、毕业设计模板或农业自动化入门学习材料。 去年给一个生态园做温室自动浇灌时,被需求反复折腾了几轮。几十个分区要独立浇水,要根据土壤湿度自动启停,还要在园区中控室看到每一路的状态,天气不好时能一键切手动。市面上的成品智能浇灌控制器很快就暴露了短板:分区一多就捉襟见肘,逻辑写死在固件里改不了,更别提接入现有的监控平台。最后绕了一圈,还是回到基于PLC的自动浇灌系统这条路上来。这套系统从选型、接线到梯形图编程和现场调试,我完整走了一遍,踩了不少坑,也攒下一些在书本上看不到的细节。这篇文章把整个过程摊开讲,给正在做类似项目,或者在做PLC课程设计、毕业设计的同学一个可参考的完整样本。
1. 为什么一个浇灌系统要上PLC——方案选型的真实思考
1.1 需求到底长什么样
动工之前,我建议先把需求写成一条条硬指标,而不是笼统的“能自动浇水就行”。我当时的清单是这样的:
- 4个浇灌分区,每个分区需要独立控制电磁阀。
- 每个分区安装土壤湿度传感器,湿度低于设定下限开始浇灌,高于上限停止。
- 水泵由PLC直接控制,水池低液位时禁止启动。
- 现场要求手动/自动双模式,自动模式下也能通过旋钮或触摸屏单独操作每个阀。
- 故障时声音+灯光报警,比如浇灌超时、传感器断线、低液位。
- 为后续接入上位机监控预留通信接口。
这些需求看着不复杂,但“4个独立分区”和“传感器断线报警”这两点就足以把很多成品方案挡在门外。
1.2 四个候选方案放在一起比
同类项目里常用的方案有四种,我罗列对比一下:
| 方案 | 成本 | 可靠性 | 维护性 | 扩展性 | 适合场景 |
|---|---|---|---|---|---|
| 单片机/Arduino | 低 | 一般 | 低 | 低 | 实验室原型、DIY |
| 成品智能浇灌控制器 | 中 | 中 | 中 | 低 | 小规模家庭绿化 |
| 农用专用控制器 | 中高 | 较高 | 中 | 中 | 固定场景的农业种植 |
| PLC+HMI+传感器 | 中高 | 高 | 高 | 高 | 工程化项目、毕设综合展示 |
单片机便宜灵活,但现场环境复杂,温棚里温差大、湿度高、动力设备启停频繁,单片机的抗干扰能力和长期稳定性让人不放心。更现实的问题是,一旦项目交付,后续换人维护,单片机代码的交接成本远高于梯形图。成品控制器和农用专用控制器只适合标准化场景,想加一路传感器、改一个逻辑阈值往往要换整机,这在项目中是不可接受的。
PLC这条路前期投入稍高,但多分区逻辑、故障处理、手动自动切换这些东西写起来就是几个触点的事,改逻辑也不用动硬件。对工程交付来说,后期省下来的调试和维护时间早就把成本拉回来了。
1.3 给做课程设计/毕业设计的同学几句实在话
如果你的场景是课程设计,没必要追求“大而全”,重点把I/O分配表和梯形图逻辑讲清楚,这是老师最看重的。如果按工程项目的标准做,那核心反而在可靠性和故障保护上:缺相保护、低液位联锁、超时强制停止、手动自动互锁,这些才是体现专业度的地方。我下面写的系统兼顾了这两个方向,不管是交作业还是实际落地,都能直接用上。
2. 系统架构与硬件选型:先算清楚I/O再下单
2.1 系统组成与信号流向
整套系统按信号链路可以分成四层:
- 传感层:土壤湿度传感器输出4-20mA模拟量信号,进入模拟量输入模块;液位开关输出开关量信号,进入PLC的数字量输入端子。
- 控制层:PLC作为核心,运行梯形图程序,完成阈值判断、模式切换、定时保护等逻辑。
- 执行层:PLC输出端子驱动中间继电器,再驱动电磁阀和交流接触器,控制各分区水路和水泵启停。
- 人机层:触摸屏通过串口或以太网与PLC通信,实时显示湿度、阀门状态,并支持参数设置。
这里要特别提醒一点:PLC的输出点一般不直接驱动接触器和电磁阀线圈。24V直流电磁阀电流虽然不大,但线圈是感性负载,通断瞬间的反电动势足以损坏输出点或引起CPU重启,中间隔离是必须的。
2.2 PLC主机与模拟量模块怎么选
我这次用的是三菱FX3U-32MR/ES-A,选它的原因很简单:I/O点数够用,继电器输出带载能力强,价格适中,资料多,学生和工程师都熟悉。同级别的信捷、汇川等国产PLC也完全能做,思路是一样的,只是指令系统和软元件编号不同。
选型时先算I/O点。数字量输入方面:手动启动一个、自动启动一个、急停一个、手自动切换开关一个、低液位开关一个,5个点;数字量输出方面:4路电磁阀、1路水泵接触器、1路故障报警、1路运行指示,7个点。这样输入输出加起来12个点,选32点的FX3U-32MR就从容得多,以后加装设备也不用换主机。
模拟量部分要注意:FX3U本体不带模拟量输入通道,需要加扩展模块。我用的是FX3U-4AD,4通道模拟量输入,可以接4-20mA电流信号。选购时要看清模块是电流型还是电压型,以及通道量程和分辨率。FX3U-4AD采集回来的数字量范围通常是0到4000,做比例换算时要依据这个值。
晶体管输出和继电器输出的选择:继电器输出的优点是触点容量大,交流和直流负载都能带,缺点是机械寿命有限、响应慢;晶体管输出响应快、寿命长,但只能带直流负载,而且一般要外接续流二极管保护。在浇灌系统这种低频开关场合,继电器输出的PLC最适合,接线也随意。
2.3 传感器、执行器和HMI的选型细节
土壤湿度传感器是这套系统的“眼睛”,选型上踩坑最多。市面上便宜的是电阻式探头,两个金属插针插进土里测电阻,价格几十块钱。但这种探头直流供电时间长会极化腐蚀,读数越漂越厉害,在黏土地里撑不过一个浇水季。工程项目我建议用电容式土壤湿度传感器,利用土壤介电常数与含水量的关系测湿度,输出4-20mA或RS485信号,长期稳定性好得多。电容式传感器也需要针对园区土壤类型做两点标定,沙土和黏土的基准差异很大,直接拿默认参数用误差会很大。
电磁阀选常闭型,断电时阀门自动关闭,这样即使系统掉电或故障,管路也不会持续漏水。管径小用24V直流电磁阀,安全性好,接线方便;主管路大管径可以考虑220V交流电磁阀,但一定要配合中间继电器隔离。水泵控制用交流接触器,配热继电器做过载保护,不要直接用接触器接小功率电机就算完事。
HMI我选的是7寸国产触摸屏,威纶通或昆仑通态都行,支持串口或以太网与三菱PLC通信。如果项目预算紧张,前期也可以不装屏,用一个文本显示器,或者干脆用按钮旋钮先跑起来,后面再补触摸屏。
2.4 完整硬件清单
| 设备 | 参考型号/规格 | 数量 | 作用 |
|---|---|---|---|
| PLC主机 | 三菱FX3U-32MR/ES-A | 1 | 逻辑控制核心 |
| 模拟量输入模块 | FX3U-4AD | 1 | 采集4路湿度模拟量 |
| 土壤湿度传感器 | 电容式,4-20mA,24VDC | 4 | 检测各分区土壤湿度 |
| 液位开关 | 浮球式常闭 | 1 | 水池低液位保护 |
| 电磁阀 | 24VDC常闭型,DN20 | 4 | 各分区水路通断 |
| 交流接触器 | 根据水泵功率选 | 1 | 水泵启停 |
| 中间继电器 | 24VDC线圈 | 7 | PLC输出隔离放大 |
| 开关电源 | 24V,5A | 1 | PLC、传感器、继电器供电 |
| 触摸屏 | 威纶通MT8071iP或同级 | 1 | 现场监控与参数设置 |
| 按钮、旋钮、指示灯 | 急停、启停、手自动旋钮等 | 若干 | 现场手动操作 |
3. 电气接线与I/O分配:细节决定晚上能不能睡好觉
3.1 输入输出点分配表
I/O分配是PLC项目的第一步,也是最应该花时间的一项工作。分配表定下来,电气图纸和梯形图才能接着画。我当时的分法是这样的:
| 地址 | 信号名称 | 说明 |
|---|---|---|
| X0 | 自动启动按钮 | 常开,上升沿有效 |
| X1 | 手动启动按钮 | 常开,用于手动模式点动 |
| X2 | 急停按钮 | 常闭触点,断开即急停 |
| X3 | 手动/自动选择开关 | 常开为自动,断开为手动 |
| X4 | 水池低液位信号 | 常闭,低液位时断开 |
| Y0 | 1号分区电磁阀 | 输出 |
| Y1 | 2号分区电磁阀 | 输出 |
| Y2 | 3号分区电磁阀 | 输出 |
| Y3 | 4号分区电磁阀 | 输出 |
| Y4 | 水泵接触器 | 输出 |
| Y5 | 故障报警灯/蜂鸣器 | 输出 |
| Y6 | 浇灌运行指示灯 | 输出 |
输入端子接线要注意急停按钮用常闭触点,这样断线时系统会立即停机,符合“故障安全”原则。如果急停用了常开触点,线断了反而检测不到急停,这是原则性错误。
3.2 供电与主回路的隔离原则
供电是现场故障的高发区。我把系统分成三路:
- PLC主机、模拟量模块、传感器、中间继电器使用24V直流供电,由明纬开关电源提供。
- 电磁阀回路使用独立24V直流供电,与PLC输出点通过中间继电器隔离。
- 水泵主回路用220V交流供电,经交流接触器主触点和热继电器接到水泵电机。
动力线和信号线必须分开走线槽,至少间隔20厘米以上。水泵启动瞬间的大电流会在动力线上产生很强的电磁干扰,如果模拟量信号线和动力线贴在一起走,湿度数据就会在浇水瞬间乱跳。传感器信号线用屏蔽双绞线,屏蔽层在PLC侧单端接地,两端都接地反而会因为地电位差形成环流,引入更多干扰。
3.3 模拟量信号接线与抗干扰
湿度传感器是两线制4-20mA变送器,正极接24V电源正,负极接模拟量模块的电流输入通道。接线看起来简单,但有几个细节没做到位就会出怪问题。
- 传感器电源建议单独从开关电源引一路,不要和继电器线圈共用同一根电源线,继电器动作时线圈电流变化会引起电源电压波动,影响测量精度。
- 4-20mA信号线在进模拟量模块前,我加装了一只信号隔离器。当时考虑的是传感器到控制柜距离长,隔离器能切断地环路,还能防雷击浪涌。实际调试中确实少了很多烦恼。
- 接线端子要用屏蔽接线端子或固定好屏蔽层,现场振动松脱是常见故障源。
现场施工时,我还用了一次绝缘摇表测试模拟量信号线的绝缘电阻,当时发现有一根线在穿管时外皮破损,幸好测出来了。这种隐蔽问题如果不提前查,调试阶段排查起来相当痛苦。
4. 梯形图控制逻辑:滞回、互锁、超时保护一个都不能少
4.1 控制策略:用滞回代替单阈值
这是程序设计的核心思想。如果只用单一阈值,比如湿度低于50%开阀、高于50%关阀,传感器数值在临界点附近波动时,电磁阀会频繁开关,水泵也跟着频繁启停,阀门和电机寿命都会被迅速消耗。
滞回控制是工业上常见的解决办法。我设的下限是40%,上限是55%,只有当湿度降到40%以下时才开始浇灌,升到55%以上才停止。中间这15个百分点的区间就是“死区”。比如传感器读数在48%附近振荡,系统不会动作,这对保护执行器非常关键。
4.2 手自动切换与安全互锁
手动和自动模式下,程序逻辑完全隔离,靠X3选择开关切换。自动模式下,阀门动作由湿度比较结果决定;手动模式下,可以直接按面板按钮单独启停每个阀和水泵。
两类逻辑之间要加互锁。这里说的互锁不是Web开发的“分布式锁”,而是梯形图里最常见的“常闭触点串联”。自动模式下,手动回路被切断;手动模式下,自动回路被切断。优先级更高的是急停,只要X2急停信号断开,所有输出全部强制复位,不管系统处于什么模式。
每次启动浇灌前,还要检查水泵的接触器辅助触点状态。如果水泵接触器粘连或者主回路缺相,就要避免电磁阀先开、水泵却不转的情况,防止管路长时间空灌。
4.3 核心梯形图逻辑解读
下面用指令表风格的文本给出1号分区自动浇灌的核心逻辑,三菱PLC可以直接对应翻译成梯形图:
; 变量说明 ; M0: 自动模式允许位(X3=ON且无急停) ; M1: 1号区湿度低于下限(D0 < K1600,对应40%) ; M2: 1号区湿度高于上限(D0 > K2200,对应55%) ; M5: 浇灌超时故障位 ; Y0: 1号区电磁阀输出 ; T0: 最长浇灌时间定时器,100ms单位,K6000=600秒=10分钟 ; 1号分区自动浇灌主逻辑 LD M0 ; 在自动模式 AND M1 ; 湿度低于下限 ANI M2 ; 湿度未高于上限 AND X4 ; 水池液位正常 ANI M5 ; 无超时故障 OUT Y0 ; 打开1号区电磁阀 ; 1号分区最长浇灌时间保护 LD Y0 ; 电磁阀已打开 OUT T0 K6000 ; 累计浇灌时间达到10分钟 LD T0 SET M5 ; 置故障位,切断浇灌 RST Y0 ; 强制关闭电磁阀这里有两点要说明。第一,模拟量模块读到的数字量是0到4000,对应4-20mA和0%到100%湿度,所以40%和55%分别对应K1600和K2200。这个换算必须和模块分辨率严格对应,否则程序逻辑再对,实际动作也不对。第二,M1、M2这两个比较位是用比较指令实时刷新得到的,实际工程里用CMP或ZCP指令配合区间比较来做。
4.4 几层保护:超时、低液位、断线报警
- 超时保护:正常情况下浇灌十几分钟湿度就能升上来。如果出现管路破裂、传感器失灵、阀门卡住等情况,定时器到10分钟就会强制关闭阀门并报警,避免水漫金山。
- 低液位保护:X4使用常闭信号,水池液位正常时X4为ON,液位低的时候X4为OFF,程序里串联常开触点X4,水位低时整个自动浇灌回路被切断,防止水泵空转烧毁。
- 传感器断线报警:4-20mA信号如果断线,模拟量读数为0,相当于低于4mA。我单独加了一段判断,当模拟量通道读数小于K100时,判定传感器断线或故障,点亮报警灯,不再参与自动控制。这个设计后来在巡查时真的报了警,一看果然是传感器线被老鼠咬断了。
5. 现场调试踩坑实录:湿度探头、电磁阀和那场“自动浇灌蹦迪”
5.1 湿度探头越测越不准是怎么回事
系统上电第一天就发现1号区传感器读数异常,从40%到80%来回跳。排查下来是两个原因叠加:一是安装位置太靠近滴灌带出水口,浇灌时水分直接冲刷探头,读数瞬间飙升;二是普通土壤探头的“湿滞效应”,就是土壤已经干了探头还显示湿润,或者反过来。
解决方式分两步。探头位置挪到滴灌带两个出水点之间的位置,深度保持在根系主要分布层,大约15到20厘米,避开石头和根系密集区。同时程序里对模拟量做了一阶惯性滤波,PLC扫描周期200毫秒,滤波系数取0.2,实测波动幅度降了一大半。这种滤波用一条MOV指令加加法、乘法就能实现,不必依赖高端指令。
5.2 电磁阀关断瞬间为什么会“咬”输出点
调试到第三天,发现自动模式下Y1输出点异常,1号电磁阀不受控制。检查后发现PLC输出点和中间继电器线圈之间没有加续流二极管,电磁阀关断瞬间线圈产生的反向电动势直接灌回了输出回路,把输出继电器触点打得发黑。
处理办法很老套但必须做:在每个中间继电器线圈两端反向并联一只续流二极管,极性注意是二极管负极接电源正、正极接电源负,把线圈断电时的反向电流旁路掉。水泵接触器线圈两端则用RC阻容吸收,抑制浪涌更彻底。从这里开始,所有感性负载回路都按这个标准处理。
5.3 自动浇灌为什么会变成“蹦迪”
有一段时间系统出现“浇2分钟、停1分钟、再浇2分钟”的循环,整个管路像在跳迪斯科。排查发现不是程序逻辑问题,而是传感器安装在喷头正下方,浇灌时水直接滴到探头上,湿度瞬间突破上限停机;水渗走之后湿度又快速回落到下限,又一次启动。
本质上这是传感器响应速度过快和实际土壤水分响应不同步的冲突。除了挪传感器位置,我还把滞回上限从55%调整到60%,下拉区间加大,让系统在开阀后有一个“冷却期”。同时程序里加了浇灌间隔锁定,一个分区停止浇灌后至少5分钟内不允许再次启动,靠定时器实现。这之后动作次数大幅减少,水泵启停次数肉眼可见地降了下来。
5.4 4-20mA信号在雨天乱跳的排查
有天夜里下大雨,值班室跟我说系统异常报警。到现场发现四个湿度通道数值全都不正常,有负值也有超量程,明显是模拟量信号被干扰了。
排查链路是这样的:先量开关电源输出,24V稳定;再量每个传感器的供电电压,正常;然后在模拟量模块端子处短接输入,数值稳定归零,说明模块本身没坏;最后把所有传感器接头拆开检查,发现屏蔽层在多个设备间形成了环路,而且下雨天电缆沟积水,绝缘阻抗下降,干扰被放大了。
处理措施:屏蔽层只在PLC柜侧单端接地,信号线全部换成屏蔽双绞线并避开动力线走线,传感器进线端子处加了一只信号隔离器。处理完后再下了一场暴雨,数据纹丝不动。这类问题在现场很常见,排查顺序务必从供电到信号、从模块到线缆,一步步缩小范围。
5.5 小技巧:程序里增加断线报警
这是我在接线时顺手加的,但价值很大。两线制变送器断线时电流变成0mA,对应AD读数接近0,而这在正常工作时几乎不可能出现。我在每个通道上加了一段“读数小于K100持续2秒”就置故障位的逻辑,配合报警灯和HMI弹窗。调试期间通过这个功能发现过两次接线松脱,都是提前处理的,没有影响浇灌计划。
6. 从本地控制到智慧农业:HMI监控、SCADA接入与后续扩展
6.1 加一块触摸屏,现场体验完全不一样
没有触摸屏时,改湿度上下限要拿笔记本连PLC改程序,虽然能改现场没人敢动。上了HMI之后,参数全部放到触摸屏上,菜农都可以自己调。
HMI上我做了几个页面:总览页显示四个分区的实时湿度、阀门状态、水泵状态、故障报警;参数设置页可以修改每个分区的湿度下限、上限、最长浇灌时间;手动操作页在手动模式下逐个控制阀和水泵。触摸屏和PLC之间用RS485串口通信,三菱FX系列PLC用专用协议或者Modbus都行,通信参数设成一致后基本一次连通。
6.2 HMI和SCADA到底是什么关系
很多初学者分不清HMI和SCADA。简单说,HMI是“设备层面”的人机交互界面,直接面对现场设备,负责显示和控制,一般就装在设备旁边;SCADA是“系统层面”的监控和数据采集平台,它可以同时对接多套PLC、多个HMI站点,集中做历史数据存储、趋势曲线、报表,覆盖范围是整个车间或园区。
在我这个项目里,触摸屏属于HMI,负责现场操作。如果园区有一间中控室,想在一台电脑上同时看四个PLC的数据,那就上了SCADA。
目前项目阶段只配了HMI,我在程序里预留了以太网口和Modbus TPC通信的地址映射表。等中控室系统上线时,直接用组态软件读取相应的数据寄存器就能对接,不需要再改PLC程序。
6.3 后面还能往哪个方向扩展
- 4G DTU远程通信:加一个4G模块把PLC数据传到云平台,手机上就能看湿度数据和设备状态,也能下发控制指令。
- 流量统计:主管路加一个流量计,把每次浇灌的水量累计下来,可以做用水量统计和水费分摊。
- 天气联动:接一个雨量传感器或者直接对接天气预报API,雨天自动暂停浇灌计划。
- 结构化封装:如果把每个分区的浇灌逻辑在编程软件里封装成一个功能块,信捷等国产PLC的编程环境里也有类似FB的机制,这样新增分区的时候只需复制FB实例、分配I/O地址和参数表,程序结构会干净很多。
这套系统从头到尾做完,我最大的体会是:做自动化项目,第一版不用追求大而全,先把手动/自动切换、滞回控制、超时和低液位保护这几件基本功做扎实,后续的物联网、SCADA、数据报表全是锦上添花。正在做课程设计的同学,按需求分析、I/O分配、电气图、梯形图、调试这个顺序走下来,每一步都有据可查,答辩时也能把“为什么这样设计”讲得明明白白,这本身就是一套很有说服力的工程思路。
本文还有配套的精品资源,点击获取