1. 项目概述:当PLC遇见农田
在华北平原的某个蔬菜大棚里,老张头正蹲在配电柜前,眯着眼睛观察那些闪烁的信号灯。这个种了三十年地的老把式,如今每天最关心的不是天气,而是PLC控制柜上的运行指示灯。"这铁疙瘩比俺还懂庄稼渴不渴",他笑着拍了拍身边的西门子S7-200 PLC控制柜。这就是现代智慧农业的缩影——用工业自动化技术精准伺候每一株作物。
本次要搭建的自动灌溉系统,核心是通过PLC实时监测土壤墒情,智能控制灌溉设备。系统硬件以西门子S7-200系列PLC为核心,搭配组态王上位机软件实现可视化监控。相比传统定时灌溉,这套系统能节约30%以上的用水量,同时避免过度灌溉导致的土壤板结问题。
关键优势:湿度阈值触发机制+分区轮灌策略,既确保灌溉及时性,又避免水资源浪费
2. 硬件系统设计详解
2.1 核心控制器选型
选择西门子S7-200 CPU224XP是经过多重考量的结果:
- 内置14DI/10DO满足基本控制需求
- 自带2AI/1AO模拟量接口可直接连接传感器
- 6K字节程序存储空间足够开发复杂逻辑
- 0.22μs/指令的运算速度确保实时响应
- 扩展能力支持7个模块(最终选用1个EM231 4AI模块)
对比其他型号:
| 型号 | 数字量I/O | 模拟量I/O | 存储空间 | 扩展能力 |
|---|---|---|---|---|
| CPU221 | 6DI/4DO | 无 | 2KB | 无 |
| CPU222 | 8DI/6DO | 无 | 4KB | 2模块 |
| CPU224XP | 14DI/10DO | 2AI/1AO | 6KB | 7模块 |
| CPU226 | 24DI/16DO | 无 | 10KB | 7模块 |
2.2 I/O分配与外围设备
完整的I/O分配方案如下表所示:
| 地址 | 设备类型 | 技术参数 | 接线要点 |
|---|---|---|---|
| I0.0 | 急停按钮(NC) | 施耐德XB2BA31C急停开关 | 使用常闭触点接入 |
| I0.1 | 手动/自动切换开关 | 欧姆龙A165L-JRM-5-2D | 带机械自锁功能 |
| I0.2 | 雨水传感器 | 常开型雨滴传感器 | 需加10K上拉电阻 |
| AIW0 | 土壤湿度传感器 | 维特智能SHT20(0-10V输出) | 屏蔽线单端接地 |
| Q0.0 | 水泵接触器 | 正泰NCH8-20/11 3P接触器 | 线圈并联RC吸收电路 |
| Q0.1 | A区电磁阀 | 亚德客2W025-08-B电磁阀 | 并接续流二极管IN4007 |
| Q0.2 | B区电磁阀 | 亚德客2W025-08-B电磁阀 | 并接续流二极管IN4007 |
| AQW0 | 变频器频率给定 | 三菱FR-D700变频器 | 4-20mA电流输出配置 |
传感器安装规范:
- 土壤湿度传感器埋深30cm,距作物根部15-20cm
- 每1000㎡布置3个监测点,取平均值作为控制依据
- 传感器与PLC距离超过50m时需加信号放大器
3. 控制程序设计精要
3.1 梯形图核心逻辑解析
完整的控制程序包含5个关键网络:
网络1 - 数据采集处理
ld复制LD SM0.0
MOVW AIW0, VW100 // 原始湿度值存储
/I 32000, VW100 // 转换为0-100%量程
MOVW VW100, VW102 // 滤波缓冲区
网络2 - 灌溉触发逻辑
ld复制LD I0.1 // 自动模式使能
A> VW102, VW200 // 比较当前湿度与阈值
TON T37, 50 // 5秒延时防抖动
= M0.0 // 灌溉使能标志
网络3 - 分区轮灌控制
ld复制LD M0.0
AN T38
TON T38, 600 // 1分钟定时器
CTU C0, 2 // 2区计数器
网络4 - 输出控制
ld复制LD M0.0
A C0.0
= Q0.1 // A区电磁阀
LD M0.0
A C0.1
= Q0.2 // B区电磁阀
LD M0.0
= Q0.0 // 水泵控制
网络5 - 异常处理
ld复制LD I0.0 // 急停信号
O SM0.5 // 看门狗超时
R M0.0, 1 // 复位灌溉标志
R Q0.0, 3 // 关闭所有输出
3.2 高级功能实现
湿度动态阈值算法
在VB500开始的区域建立季节参数表:
stl复制MOVB &VB500, VB510 // 春季基础阈值
MOVB &VB501, VB511 // 夏季基础阈值
MOVB &VB502, VB512 // 秋季基础阈值
MOVB &VB503, VB513 // 冬季基础阈值
LD SM0.5 // 每分钟执行一次
EU
MOVB LB0, AC0
JMP = 0, Spring
JMP = 1, Summer
JMP = 2, Autumn
JMP = 3, Winter
Spring:
MOVW VW510, VW200
JMP End
Summer:
MOVW VW511, VW200
JMP End
Autumn:
MOVW VW512, VW200
JMP End
Winter:
MOVW VW513, VW200
End: NOP
数据记录功能
每小时记录一次数据到VW300开始的区域:
stl复制LD SM0.4 // 小时脉冲
EU
MOVW VW102, *VD300 // 记录当前湿度
INCD VD300 // 指针递增
MOVW T37, *VD300 // 记录灌溉次数
INCD VD300
4. 组态王界面开发技巧
4.1 主监控画面设计
-
动态元素制作
- 土壤湿度用填充动画显示,设置0-100%对应绿色渐变
- 水泵运行状态用管道流动动画表示
- 电磁阀状态用开关型指示灯,带点击手动功能
-
参数设置界面
cpp复制// 湿度阈值设置脚本 if (GetTagBit("手动设置使能")) { SetTagWord("阈值地址", InputValue); WriteToPLC("VW200", InputValue); } -
报警管理配置
- 分级报警策略:
- 低级报警:湿度超限(弹窗提醒)
- 中级报警:传感器故障(声音报警)
- 高级报警:水泵过载(自动停机)
- 分级报警策略:
4.2 数据存储方案
采用环形存储结构,配置要点:
- 创建SQLite本地数据库
- 设置每15分钟自动记录:
sql复制INSERT INTO history (time, humidity, runtime) VALUES (datetime('now'), {humidity}, {runtime}) - 设置自动清理策略:
sql复制DELETE FROM history WHERE time < date('now','-30 day')
5. 安装调试实战经验
5.1 电气安装规范
-
布线要点
- 信号线与动力线分开走线槽,间距>20cm
- 模拟量信号使用双绞屏蔽线,屏蔽层单端接地
- 电磁阀控制线截面积≥1.5mm²,距离超过50m时加大线径
-
抗干扰措施
- 所有继电器线圈并联RC吸收电路(100Ω+0.1μF)
- PLC接地电阻<4Ω,单独接地不与强电共地
- 变频器输出端加装磁环滤波器
5.2 调试常见问题
传感器校准方法
- 将传感器置于完全干燥环境中,读取AIW0值记为AD0
- 将传感器浸入蒸馏水中,读取AIW0值记为AD100
- 在程序中添加标度变换:
stl复制MOVW AIW0, VW110 -I AD0, VW110 *I 100, VW110 /I (AD100-AD0), VW110 MOVW VW110, VW100
典型故障处理表
| 故障现象 | 排查步骤 | 解决方案 |
|---|---|---|
| 湿度显示值跳变 | 1. 检查传感器供电 2. 测量信号线间电压 |
1. 稳定24V电源 2. 更换屏蔽线 |
| 电磁阀偶尔不动作 | 1. 测试线圈电阻 2. 检查续流二极管 |
1. 更换电磁阀 2. 补装二极管 |
| 组态王数据不更新 | 1. 检查PLC通讯灯 2. 测试PPI电缆 |
1. 重启通讯服务 2. 更换电缆 |
6. 系统优化与扩展
6.1 节能优化方案
-
变频水泵控制
- 在AQW0输出4-20mA信号控制变频器
- 根据同时工作的电磁阀数量调节频率:
stl复制LD Q0.1 XOR Q0.2 MOVW 16000, AQW0 // 单区工作50Hz LD Q0.1 A Q0.2 MOVW 8000, AQW0 // 双区工作25Hz
-
雨水回收利用
- 增加雨水传感器信号I0.2
- 修改控制逻辑:
stl复制LD I0.2 R M0.0, 1 // 下雨时禁止灌溉
6.2 物联网扩展
通过EM241模块实现GPRS远程监控:
-
配置短信报警功能:
stl复制LD SM0.5 A M10.0 // 报警标志 ATCH INT1, 10 // 触发短信发送 -
手机APP监控开发:
- 使用TCP/IP协议与PLC通信
- 开发Android端数据展示界面
- 关键代码示例:
java复制public void updateHumidity() { String cmd = "RD VW100"; String resp = plcClient.sendCommand(cmd); float humidity = Integer.parseInt(resp) / 100.0f; runOnUiThread(() -> humidityView.setText(humidity + "%")); }
这套系统在我负责的多个农业项目中表现稳定,最长的已连续运行5年无故障。有个细节值得注意:定期用压缩空气清理传感器探头能延长其使用寿命。最近我们正在试验将气象预报数据接入系统,通过OB35中断程序实现灌溉量动态调整,这可能是智慧农业的下一个突破点。