
简介这是一份面向自动化、电气工程及农业工程方向学生的毕业设计参考资料围绕西门子PLC与MCGS组态软件展开智能灌溉系统的完整设计。内容涵盖下位机PLC型号选型、通信协议确定、梯形图与结构文本编程实现灌溉启停逻辑以及基于MCGS触摸屏的实时数据显示、参数设置、报警提示等人机界面搭建并包含系统实验测试与异常自动报警保护方案。资源包共1个docx文档约317KB为完整论文式设计说明含中英文摘要、关键词及PLC与MCGS控制方案论述便于直接参考撰写或对照搭建实验系统。目前已有1906人学习下载说明该选题在毕业设计与课程设计中需求稳定。读者可借此掌握PLC选型与编程思路、上位机组态界面设计方法以及土壤湿度阈值触发灌溉、水源异常自动切断供水等控制逻辑的实现途径对完成同类赛题或项目设计具有较高参考价值。1. 一套能被复现的西门子S7-200MCGS灌溉控制方案卡点从来不在梯形图带过几届 plc毕业设计几乎每届都会出现同一个场景仿真软件里梯形图的灯按预期亮灭一旦把 RS-WS-I20-TR 土壤温湿度传感器接到 PLC 的模拟量端子上触摸屏上的湿度值就开始乱跳电磁阀一动作 PLC 甚至直接重启。基于 PLC 与 MCGS 组态的智能灌溉系统要解决的问题其实很朴素——把土壤温湿度这类连续量稳定采进来跟用户设定的上下限做比较自动决定水泵与电磁阀的启停同时在触摸屏上完成显示、设参与报警。它适合正在做 plc 课程设计、plc毕业设计的同学也适合在苗圃、小型温室、农业园区做小规模自动灌溉改造的现场工程师。整套硬件不复杂S7-200 系列 PLC 做下位机TPC7062Ti 触摸屏跑 MCGS 组态做上位机外面挂土壤传感器、电磁阀和水泵。2. 系统架构与硬件选型S7-200、TPC7062Ti与4-20mA采集链路2.1 上位机与下位机的分工边界这套系统是典型的两层结构下位机 PLC 负责所有和实时性、安全性挂钩的事情上位机 MCGS 负责所有和人挂钩的事情。PLC 以毫秒级扫描周期循环执行输入采样、程序执行、输出刷新三个阶段湿度比较、阀门联锁、超时保护这些逻辑必须放在 PLC 里因为它们要在通信中断的情况下依然生效。MCGS 这边管的是画面刷新、参数下发、报警记录、历史曲线和数据存盘它的刷新周期通常是几百毫秒慢一点不影响灌溉安全。我一般不建议把控制逻辑放在触摸屏的脚本里哪怕是湿度低于 30% 就开阀这种看起来很简单的一句。原因很实际PPI 或 Modbus 链路一旦断线触摸屏下发不了指令田间就没人管了而逻辑写在 PLC 里上位机掉线最多是看不见阀门该停还是会停。反过来如果把阈值写死在 PLC 程序里改一次就得重新下载程序现场调试时非常难受所以阈值必须走 V 存储区由 MCGS 写入并且把 V 区的掉电保持范围在系统块里配好。2.2 PLC机型选择与I/O点数估算选型不要凭感觉先把信号列全再倒推型号。一个双区轮灌的典型配置大致是数字量输入包含手动/自动切换、急停、水源低压、就地启停共 6~8 点数字量输出包含 2 台泵、2 个电磁阀、报警灯、蜂鸣器共 6 点模拟量输入是土壤温度、土壤湿度两路 4-20mA如果还要监测管道压力就是三路。资源类型估算点数典型地址备注数字量输入 DI8I0.0~I0.7含急停、手自动、水位、压力数字量输出 DO6Q0.0~Q0.5泵、阀、声光报警模拟量输入 AI2~3AIW0/AIW2土壤温度、湿度模拟量输出 AO1AQW0变频器频率给定通信口1PORT0PPI 或 Modbus RTU按这个量CPU224XP 是性价比最高的选择24 点 DI、16 点 DO本体自带 2 路模拟量输入和 1 路模拟量输出不需要额外买 EM231 就能把土壤温度和湿度接进来。如果点数继续涨比如三区轮灌就换 CPU226 加 EM231 扩展模块。下面这份点表可以直接抄进设计文档也可以作为接线图的对照表信号名称,类型,地址,电气规格,说明 手动自动切换,DI,I0.0,DC24V,1自动 急停按钮,DI,I0.1,DC24V,常闭,断开即停机 水源低压开关,DI,I0.2,DC24V,常闭 1区就地启动,DI,I0.3,DC24V,按钮 土壤温度,AI,AIW0,4-20mA,经500Ω转2-10V 土壤湿度,AI,AIW2,4-20mA,经500Ω转2-10V 1号水泵,DO,Q0.0,继电器,经中间继电器驱动接触器 1区电磁阀,DO,Q0.1,继电器,AC220V 2区电磁阀,DO,Q0.2,继电器,AC220V 声光报警,DO,Q0.3,继电器,DC24V 变频器频率给定,AO,AQW0,0-10V,接变频器AI1提示CPU224XP 本体自带的模拟量输入是 ±10V 电压型量程不是 0-20mA 电流型。4-20mA 传感器必须并联一只 500Ω、精度 0.1% 的金属膜电阻把电流转成 2-10V 电压再进端子这是新手最容易忽略、也最容易导致读数偏低的一步。2.3 土壤温湿度传感器的六线制接法RS-WS-I20-TR 是六线制输出本质上是两个独立的电流回路加两路公共端。三根线一组电源正负12~24V、温度 I1 与公共端 NC1、湿度 I2 与公共端 NC2。温度和水分走独立的输出口互不干扰这也是它比一体式两线传感器更适合农田的原因。接线时我把 24V 开关电源的 0V 同时接到传感器的电源负和两个公共端两路信号的 () 分别进 X10 端子和 X11 端子对应 AIW0、AIW2 通道的电流输入端。这里有个细节500Ω 取样电阻要装在 PLC 端子侧而不是传感器侧两者之间用屏蔽双绞线连接屏蔽层只在控制柜这一端接 PE传感器端悬空。传感器埋在田间土壤里的电位差很大两端都接地会形成地环流读数会出现规律性的低频摆动。2.4 执行机构与变频调速回路电磁阀和接触器都是感性负载继电器输出的 PLC 虽然标称可以直接驱动但我还是习惯在中间加一级中间继电器把强电和 PLC 输出端子隔开。线圈两端并一只 RC 吸收网络或者续流二极管反向电动势打回来烧掉输出点的情况在现场太常见了。水泵需要调速或者做软启动时用 AQW0 输出 0-10V 电流给定给变频器的模拟量输入。如果后面要接三台甚至更多变频器模拟量输出点就不够用了常见做法是变频器全部改成 Modbus RTU 从站PLC 用自由口轮询写频率寄存器只靠一对 RS-485 线就能管一大片设备。用晶体管输出的 PLC 去驱动这类端子时还要先确认变频器输入端是源型还是漏型NPN 和 PNP 接反了表现为端子没反应不是变频器坏。3. 从AIW到湿度值西门子S7-200灌溉控制程序的梯形图与标定3.1 4-20mA通道的工程量标定S7-200 的模拟量输入通道里读到的 AIW 只是一个整数码值。对 ±10V 双极性输入来说-32000 到 32000 对应 -10V 到 10V经过 500Ω 取样后4mA 对应 2V20mA 对应 10V换算成码值正好是 6400 到 32000。这组数字很整标定公式就非常干净湿度百分比 (AIW - 6400) × 100 / (32000 - 6400)。传感器输出取样电压AIW码值工程量4 mA2 V64000 %8 mA4 V1280025 %12 mA6 V1920050 %16 mA8 V2560075 %20 mA10 V32000100 %先在 PC 上用脚本把公式和边界值验一遍比在 PLC 上反复下载程序快得多# 验证 4-20mA 经 500Ω 取样后的标定关系 def aiw_to_rh(aiw: int) - float: raw_min, raw_max 6400, 32000 # 4mA / 20mA 对应的码值 rh_min, rh_max 0.0, 100.0 # 土壤水分量程 return (aiw - raw_min) * (rh_max - rh_min) / (raw_max - raw_min) for aiw in (6400, 12800, 19200, 32000): print(aiw, round(aiw_to_rh(aiw), 2)) # 断线检测回路断开时电流为 0码值低于 6400必须判为故障而不是 0% 湿度 def judge(aiw: int) - str: if aiw 6000: return 回路断线或传感器故障 if aiw 32500: return 超量程检查取样电阻 return f湿度 {aiw_to_rh(aiw):.2f}%这段脚本的意义不只是算数它明确了两条边界规则码值低于 6000 判定为断线高于 32500 判定为超量程这两种情况都不能当作正常湿度参与比较否则断线时系统会误判为土壤很干然后一直灌溉。PLC 里对应的语句表实现用双整数运算避免整数除法丢精度结果放大 100 倍存到 VW200// 土壤湿度标定AIW2 - VW200湿度 x100单位 0.01% LD SM0.0 ITD AIW2, VD100 // 模拟量整数转双整数 -D 6400, VD100 // 扣除 4mA 对应的码值偏置 *D 10000, VD100 // 放大 10000 倍保留两位小数 /D 25600, VD100 // 除以量程跨度得到 x100 的工程量 DTI VD100, VW200 // 双整数转整数送入 VW200 // 断线判定码值低于 6000 时置故障位 M0.0 LDW AIW2, 6000 M0.0 // M0.0 1 表示传感器回路异常逻辑说明ITD把 16 位整数转成 32 位是因为后面乘 10000 会溢出 16 位范围先减偏置再乘除可以避免大数相乘后再减造成的截断误差。参数说明6400 和 25600 这两个常数由量程决定换成 0-20mA 的模块时偏置要改成 0、跨度改成 32000公式里的数必须跟着改不能直接照抄。3.2 用滞回比较实现灌溉启停如果只用一个阈值做比较湿度在 35% 附近上下浮动一次阀门就会开合十几次接触器和电磁阀的寿命全耗在这种抖动上。正确做法是双阈值滞回低于下限启动高于上限停止中间区域保持当前状态。// 灌溉启停控制VW300下限(35%)VW302上限(55%) LDW VW200, VW300 // 湿度低于下限 AN M0.0 // 且传感器无故障 AN I0.1 // 且急停未动作 S Q0.1, 1 // 置位 1 区电磁阀 LDW VW200, VW302 // 湿度高于上限 R Q0.1, 1 // 复位电磁阀参数说明VW300、VW302 都放在掉电保持区由 MCGS 的参数设置画面写入现场调阈值不用连编程电缆。AN M0.0这一句是安全联锁传感器断线时不允许继续灌溉。3.3 定时器与计数器做分区轮灌两区共用一个水泵时必须互锁不能同时开阀。用一个定时器做切换周期一个计数器做区号轮换就能实现不需要上位机干预的自动轮灌。设定每区灌溉 10 分钟切换间隔 30 秒程序里用 T37 做 100ms 时基的定时器配合 C1 计数计数器当前值等于奇数时开 1 区、偶数时开 2 区。3.4 报警联锁与短信提醒联锁要做三层硬件急停直接切断输出回路PLC 内部用AN I0.1参与每一个输出线圈的使能条件软件再对单次灌溉时长做上限保护比如任何一区连续灌溉超过 30 分钟就强制停泵并置报警位。SIM800A 这类短信模块通过 PLC 的自由口发 AT 指令上报指令只要在报警上升沿发一次即可不能放在每个扫描周期里发否则模块会被指令刷爆。具体做法是在自由口发送前检查忙标志位用 XMT 指令送出一串以回车结尾的 AT 命令发送完成中断里再置位下一个步骤。4. MCGS组态工程设备窗口挂S7-200驱动与画面变量映射4.1 五大组成部分与建工程顺序MCGS 生成的工程由主控窗口、设备窗口、用户窗口、实时数据库和运行策略五部分组成。建工程我一般按这个顺序走先建实时数据库定义变量再进设备窗口挂驱动、连通道然后画用户窗口的画面最后配运行策略和报警。顺序反了会来回返工因为画面上的每一个动画连接最终都要落到实时数据库的变量上。主控窗口管的是工程的运行参数和菜单正常运行时不显示设备窗口是通信的核心所有跟 PLC 打交道的配置都在这里用户窗口是操作者看到的界面实时数据库是所有变量的集散地。把实时数据库当成中间层理解画面只认数据库变量不直接认 PLC 地址这个分层思路能让后期改地址、换 PLC 型号的工作量减少一大半。4.2 设备窗口里挂S7-200驱动与通道连接在设备工具箱里选通用串口父设备再把西门子_S7_200_PPI挂到它下面。串口父设备的关键参数是串口号、波特率 9600 或 19200、数据位 8、无校验、停止位 1必须和 STEP 7-Micro/WIN 里系统块的端口设置完全一致。子设备里填 PLC 站地址默认 2。通道连接时把实时数据库变量和 PLC 的 V 区地址一一对应注意 MCGS 通道的地址格式和寄存器类型要选对数据库变量连接类型PLC地址数据类型说明土壤湿度V寄存器VW200整数实际值 值/100土壤温度V寄存器VW202整数实际值 值/10湿度下限V寄存器VW300整数上位机可写湿度上限V寄存器VW302整数上位机可写阀门状态V寄存器VW210整数0/1 位状态注意通道表里的地址填VW200而不是40001具体格式取决于驱动版本。填错格式表现为通信正常但数值全为 0很容易被误判成接线问题。4.3 实时数据库与用户窗口画面实时数据库里给每个变量配好初值、最小值、最大值和存盘属性。湿度变量建议设成 0~10000 的整数对应 0~100.00%在动画连接里除以 100 显示这样既能保留两位小数又避开了 MCGS 早期版本浮点显示精度的问题。用户窗口至少做四屏主监控屏放工艺流程示意图、实时湿度温度、阀门和泵的状态指示灯参数设置屏放下限、上限、单区灌溉时长、轮灌间隔输入框要做上下限校验防止操作者把下限设得比上限还高报警屏用报警显示构件绑定报警变量趋势屏用实时曲线和历史曲线构件把湿度画成曲线这是判断控制效果最直观的依据。4.4 报警策略与数据存盘报警变量在实时数据库里勾选报警属性设置上下限和报警文本。存盘则走运行策略里的存盘策略把湿度、温度、阀门状态按 1 分钟周期写入数据库表。存完之后可以用 SQL 直接查灌溉行为用来判断阈值整定是否合理-- 查询某天湿度低于 35% 的时段用于核对实际灌溉次数 SELECT 记录时间, 土壤湿度, 阀门状态 FROM 数据存盘表 WHERE 记录时间 2024-06-01 00:00:00 AND 土壤湿度 3500 ORDER BY 记录时间;这条查询的作用是反推。如果一天之内湿度跌破阈值十几次而每次只回升一点点说明上限设得太低或者单区灌溉时长太短需要把 VW302 往下调大而不是继续改程序。5. 现场调试模拟量跳动、PPI掉线、阈值整定的处理技巧5.1 模拟量跳动先看滤波和接地湿度读数在 ±3% 范围内规律摆动九成是干扰而不是传感器问题。先查两件事屏蔽层是不是两端都接了地信号线是不是和动力线走在同一个线槽里。把屏蔽层改成单端接地、信号线单独走槽之后通常能压掉一大半。剩下的高频抖动再用软件移动平均处理S7-200 可以启用定时中断 SMB34 100ms每次中断把 AIW 采样值累加到一个 VD 寄存器计满 10 次后求平均并复位这样送给比较逻辑的就是 1 秒内的平均值。// 定时中断 SMB34100100ms做 10 点移动平均 LD SM0.0 ITD AIW2, VD200 // 本次采样转双整数 D VD200, VD300 // 累加到累加器 VD300 INCW VW400 // 采样计数 1 LDW VW400, 10 // 采满 10 次 DTR VD300, VD400 // 累加和转实数 /R 10.0, VD400 // 求平均值 DTI ... // 再按 3.1 的公式标定 MOVD 0, VD300 // 累加器清零 MOVW 0, VW400 // 计数器清零参数说明采样次数取 10 是折中值再大响应会滞后灌水时土壤湿度变化本来就慢1 秒的平滑完全够用。中断周期必须和主程序里的采样节拍错开不要在同一个扫描周期里既读 AIW 又做平均。5.2 PPI通信失败的排查顺序MCGS 报设备通信失败时按这个顺序查能省掉大量瞎猜先确认编程电缆和运行电缆是不是同一根、有没有同时插在 PORT0 上再用系统命令看串口有没有被别的软件占用然后核对波特率和站地址最后查 RS-485 的 A、B 极性S7-200 的 PORT0 是 9 针口3 脚是 B、8 脚是 A接反了的现象是偶尔通、绝大多数时候超时。多台设备挂在同一条 485 总线上时总线两端各加一只 120Ω 终端电阻中间站不加。# Windows 环境下查看串口参数是否被占用 mode COM3输出里能直接看到波特率、数据位、停止位和校验方式和 MCGS 串口父设备里的配置逐项对齐不一致就改。5.3 阈值整定的现场做法阈值不要拍脑袋定。土壤水分传感器的测量结果受埋深和土质影响很大同一块地埋 20cm 和 40cm 读数能差 10 个百分点。我的做法是在作物主要根系分布层一般 20~30cm埋一支在下方再埋一支做对照用烘干法取一次真实含水率做两点校准把传感器的零点和满度修正系数写进 PLC 的标定公式里。上限建议设在田间持水量的 80% 左右下限设在 60% 左右中间留出足够的滞回带这样电磁阀的动作次数一天能控制在个位数既省水也省设备寿命。整定完成后用第 4 章的存盘查询反查一周数据如果湿度曲线呈现缓慢下降、快速抬升、平台稳定的形状说明上下限和灌溉时长配合到位了。本文还有配套的精品资源点击获取