尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

温室大棚PLC控制系统设计:基于西门子S7-300与WinCC flexible的实战复盘

温室大棚PLC控制系统设计:基于西门子S7-300与WinCC flexible的实战复盘 做温室大棚控制的项目这几年我接过不少。大多数用户一开始都会问能不能用温控器加继电器搞定但当大棚里需要同时管温度、湿度、光照、灌溉还要看历史趋势、报警记录甚至后期要接上位机做数据分析时继电器柜那一堆线就成了灾难现场。我最近完成的一套基于西门子S7-300 PLC加WinCC flexible触摸屏的温室大棚控制系统算是把这类中小型农业自动化项目的典型玩法完整走了一遍。这套系统的核心价值不在于用了多高级的硬件而在于用梯形图把农业工艺逻辑拆解得足够清晰再配合触摸屏把操作门槛降下来让大棚管理员不用懂PLC也能正常使用。这篇文章我会从项目需求拆解、硬件选型与接线、梯形图程序架构、WinCC flexible画面组态、现场调试踩坑几个方面完整复盘。适合正在做类似农业控制项目的电气工程师、自动化专业的初学者以及想评估PLC方案是否适合自己的种植用户。我会把关键参数、程序思路、组态步骤和调试中遇到的真实问题都写出来方便你直接参考。1. 控制需求拆解温室大棚到底需要PLC管什么先别急着选PLC型号、画梯形图。很多项目失败都是因为一开始需求就没理清楚。你以为只是控制个风机但实际运行起来才发现还要管遮阳网、湿帘水泵、侧窗开度、补光灯甚至营养液配比。所以我接到这个项目的第一件事是跟种植户一起把整个大棚的控制对象列成一张表。1.1 控制对象与控制指标这个项目对应的是一个约500平方米的连栋温室主要种植叶菜。控制对象包括顶开窗电机正反转限位反馈侧卷膜电机正反转限位反馈内遮阳网电机正反转限位反馈外遮阳网电机正反转限位反馈循环风机2台启停湿帘水泵1台启停补光灯3组启停灌溉电磁阀4路开关加温循环泵1台冬季使用启停模拟量输入包括空气温度大棚东西两侧各1个、空气湿度、光照强度、土壤湿度2路、CO2浓度。模拟量输出基本没有因为执行器都是开关型不需要比例调节。核心控制逻辑看起来多但归纳起来其实五句话温度高开窗 - 风机 - 湿帘按优先级顺序温度低关窗 - 加温循环泵湿度过大加强通风光照太强拉外遮阳网光照不足开补光灯土壤干湿定时手动强制灌溉这些逻辑用继电器也能做一部分但一旦涉及“优先级排序”“温度回差控制”“手自动切换”“时间表轮询”继电器电路就会变得极其笨重。PLC的价值就是把逻辑变成软件改参数不用改线。1.2 为什么选S7-300、WinCC flexible而不是小型PLC按I/O点数估算开关量输入约20点开关量输出约18点模拟量输入6路。这个规模用S7-200 SMART或者S7-1200也完全够但业主原有一套S7-300的维护经验仓库里还有备用模块而且后续希望把数据接到园区监控中心S7-300的通讯扩展能力更稳。WinCC flexible是西门子专门用于S7-300系列触摸屏组态的经典软件配合MPI/DP通讯非常成熟。虽然现在西门子主推WinCC Unified但对于存量S7-300项目WinCC flexible仍然是稳定且够用的选择。所以我最终确定的核心硬件如下部件型号数量用途PLC CPUS7-300 CPU315-2 PN/DP1主控数字量输入模块SM321 DI161限位、按钮、手自动信号数字量输出模块SM322 DO161控制接触器/继电器模拟量输入模块SM331 AI81温湿度、光照、土壤、CO2触摸屏西门子MP277 10寸1HMI操作显示24V开关电源明纬 S-250-241PLC、传感器供电通讯电缆MPI电缆及DP接头若干PLC与HMI通讯个人建议S7-300虽然是老平台但在农业环境里它的抗干扰能力和模块更换便利性仍然有优势。DI/DO模块建议各预留20%备用点模拟量输入至少预留2路给以后扩展。1.3 手自动设计要求温室大棚不同于工厂生产线现场经常有种植工人进行农事操作比如临时掀开某个区域的膜、手动补水。所以系统必须支持手自动无扰切换。自动模式由PLC按程序控制手动模式由触摸屏上的按钮或现场按钮直接控制输出。这里的关键在于程序里要用中间变量区分“操作指令”和“执行指令”避免切换瞬间输出跳动。2. 硬件选型与电气接线那些容易翻车的细节硬件选型决定系统稳不稳定接线决定系统能不能调通。PLC程序写得再好接线端子松了或者地线没接好现场一样够你折腾。2.1 电气原理图的核心回路设计这套系统的电气原理图分三块主回路、PLC控制回路、信号采集回路。主回路很简单三相380V进线经过总断路器分别供给各电机接触器。每台电机配热继电器或电机保护断路器手自动切换开关放在控制回路中。需要注意的是卷膜电机、开窗电机都是正反转接触器必须电气互锁程序里也要软件互锁双重保险。PLC控制回路中输出模块SM322每个通道的驱动能力有限不能直接驱动接触器线圈。正确的做法是PLC输出先驱动中间继电器比如DC24V线圈的中间继电器再用中间继电器的常开触点接通接触器线圈。这样既保护了PLC输出点也方便后期更换接触器。我习惯用带有续流二极管的继电器底座避免断开时反电动势冲击。信号采集回路的接线要特别注意温湿度传感器和光照传感器多数是4-20mA电流型或0-10V电压型。长距离传输时首选4-20mA因为电流信号抗干扰能力强。我这次全部选用了4-20mA输出的变送器供电采用DC24V信号线使用屏蔽双绞线。屏蔽层单端接地接在控制柜的接地排上另一端悬空这是模拟量信号稳定最基础也最关键的一点。2.2 传感器与执行器的安装位置传感器位置直接影响控制效果。我见过有人把温度传感器装在风机旁边开机后测到的温度比棚内实际温度低好几度导致控制逻辑混乱。正确做法是空气温湿度传感器要放在大棚中部偏通风路径的位置避免阳光直射最好加防辐射罩。如果大棚跨度大可以分两侧安装取平均值。光照传感器安装在棚顶附近但要避开遮阳网形成的阴影区。土壤湿度传感器插在根系密集层一般距离滴头20cm左右否则滴灌刚结束就测出高湿度数据的滞后性会严重影响补水决策。CO2传感器不要放在风口处放在作物冠层高度。执行器方面卷膜电机和开窗电机都要装限位开关。限位开关接入PLC的DI点程序里要用限位状态来停止电机而不是靠时间继电器。因为链条传动有打滑、卡滞的风险只靠时间控制容易让电机堵转烧掉。2.3 控制柜布局与防干扰的几项硬规矩控制柜布局看起来是“装好就行”但实际调试时不合理的布局会让你哭。我的经验是PLC电源、传感器电源、输出执行器电源尽量分开走线至少不能把24V传感器线和220V动力线扎在同一个线槽里。如果柜内空间紧张中间必须有屏蔽隔板。模数转换模块SM331要尽量远离变频器或软启动器如果大棚里用了变频器控制柜内要加EMC滤波器。地线要单独接到接地桩不能与零线混用。实测下来很多模拟量跳变、触摸屏通讯偶尔断开最后都查出是接地问题。接线完成后的自检也很重要用万用表测量24V对地电阻确认没有短路或严重漏电检查所有屏蔽层是否只有一端接地检查继电器线圈方向和指示灯极性有没有接反。3. 梯形图程序架构把农业工艺翻译成PLC语言程序是整个系统的灵魂。S7-300的编程软件是STEP 7虽然界面老但指令丰富结构化编程能力强。我这边采用的是主程序OB1 多个功能FC的架构而不是把所有逻辑堆在OB1里这样后续维护和排查问题会轻松很多。3.1 程序结构划分我的程序组织如下块功能OB1主循环调用所有FC并处理急停逻辑FC10模拟量处理把SM331读取的原始值转换为工程量值FC20温度控制逻辑风机关窗湿帘加温等FC21湿度控制逻辑通风除湿与加湿联动FC22光照控制逻辑内外遮阳网与补光灯FC23灌溉控制逻辑定时与土壤湿度联合判断FC30手自动切换逻辑FC40报警与联锁逻辑OB1里最重要的一件事是把公共的“安全条件”算好。比如急停信号、手动/自动总开关、风机过载信号如果这些条件不满足所有输出封锁。这个封装在FB安全输出里我用一个FC40输出一个“允许运行”中间标志所有输出逻辑都和这个标志串联。3.2 模拟量信号的工程量转换S7-300的SM331模块读到的原始值是0~27648对应4~20mA需要自己标定成实际工程值。梯形图里没有现成的“线性换算”指令块老版本没有SCALE指令时就得手搓我一般用浮点运算来做。以4-20mA对应0~50℃的温度传感器为例计算公式实际温度 原始值 - 5530 * 50 - 0 / 27648 - 5530其中5530是4mA对应S7-300的原始值。为什么不是0因为S7-300默认把4mA对应0但实际零点可能偏移所以我习惯用两线制变送器标定后的量程来算。为了避免每次都重写计算我在FC10里把6路模拟量全部转换为浮点数存在DB块里后面FC20~FC23直接用。这里有个易错点S7-300的浮点运算要先把整数转为浮点I_DI指令再DI_R。很多初学者直接拿INT做乘法就会溢出或者精度丢失。建议所有模拟量中间值都用REAL类型存储。3.3 温度控制优先级逻辑与回差设计温度控制如果只是“超30度开风机低于28度关风机”风机启停会非常频繁寿命大大缩短。所以必须设计回差滞回区间。比如设定目标温度24℃回差2℃那么高于26℃启动风机低于22℃停止风机。这样风机不会在临界点反复启停。实际逻辑链是这样的FC20中若棚内平均温度 上限1比如30℃先开顶窗顶窗开到位后再启动循环风机若温度继续升高 上限2比如35℃启动湿帘水泵若温度回落并低于回差下限按反顺序停止湿帘 - 风机 - 关闭顶窗这个顺序很重要。如果先开湿帘再开风机水汽会直接吹到作物叶片上容易引发病害。顺序控制用梯形图实现时我使用“步骤标志”位来记录状态而不是在每个输出线圈前面写一堆复杂的自锁互锁。Network 1: 温度步骤判断 // 步骤1不动作步骤2开窗步骤3开风机步骤4开湿帘 L #当前温度 L #上限1 R S #步骤标志.2 CALL #温度步骤管理 ...梯形图里具体的S/R置位复位写法其实就是在每个步骤的进入条件和退出条件之间加置位/复位指令。使用中间“步骤标志”后逻辑便读性大大提高后期做仿真测试也非常方便。3.4 湿度、光照、灌溉控制逻辑湿度控制相对简单相对湿度超过85%时自动把顶窗开到指定开度如果有步进执行器或启动风机通风。低于70%时关闭。但要注意阴雨天室外湿度本身就很高盲目通风反而会让棚内湿度更高所以我在湿度控制逻辑里加了“湿度优先判断”只有当室外湿度低于棚内湿度时才允许通风除湿。这就是工业控制里常说的“前馈反馈”思想梯形图里再加一个DI信号室外湿度是否超标即可。光照控制分两路遮阳网和补光灯。光照强度 60000 Lux时拉开外遮阳网光照回落到40000 Lux以下时收回。回差设计依然适用。光照强度 3000 Lux且处于白昼时段时打开补光灯超过4000 Lux关闭。补光灯判断白昼时段靠PLC的实时时钟STEP 7里有读取系统时间的指令也可以手动在触摸屏设定补光开始和结束时间。要避免深夜突然光照波动导致补光灯频繁启动。灌溉控制我采用了“定时循环 土壤湿度校验”双条件每2小时一个灌溉周期每个周期内电磁阀依次打开10分钟但在开启前先检测土壤湿度如果土壤湿度高于设定上限比如60%则跳过本周期如果土壤湿度低于设定下限比如25%且不在定时周期内也允许启动紧急补水。这个逻辑用梯形图写时要注意两个定时器相互锁定的问题。建议使用TONR保持型定时器记录每天的累计灌溉时间防止定时器被反复触发丢失计数。3.5 手自动无扰切换与报警联锁手自动无扰切换是竣工验收时业主最关注的点。我的实现方法把每个输出点分成“指令”和“使能”自动模式下使能由程序逻辑控制手动模式下使能由触摸屏按钮控制。两个模式共用一个输出执行区切换时只切换使能来源而不是在线圈处切换。这样当从自动切手动时当前输出状态不会突然改变操作工不会吓一跳。报警联锁里我设置了几个关键点各电机过载信号一旦触发必须手动复位才能重新启动温度超过45℃时不管手动自动强制打开所有风机和湿帘水泵干抽保护如果湿帘水泵运行但湿帘供水管路的压力开关无信号立即停泵并报警这些联锁用普通继电器也能做但PLC做的最大优势是可以在触摸屏上直接看到是哪一联锁条件触发了而不是让电工拿万用表对着端子一个一个量。4. WinCC flexible触摸屏组态让操作工看得懂才是真的会做WinCC flexible这个软件虽然是老一代但组态逻辑很清晰。S7-300和MP277触摸屏之间通过MPI/DP连接硬件组态里设置好站地址和通讯速率然后在变量表里把HMI变量和PLC符号关联起来画面上的每个按钮、显示控件就有了生命。我认为触摸屏组态的核心是三个词层次分明、变量一致、按钮防错。4.1 画面结构设计我把触摸屏画面分为5个层级主画面大棚整体示意图显示关键温度、湿度、光照数值以及风机、湿帘、遮阳网、灌溉的实时状态。用不同色块表示设备运行/停止状态绿色运行、灰色停止、红色报警。手自动控制画面每个设备一栏显示手自动切换开关、手动启动/停止按钮、当前状态反馈。参数设定画面温度上限、温度下限、湿度范围、光照阈值、灌溉定时时间等全部做成可输入控件。报警画面显示当前报警、历史报警记录带确认按钮。趋势曲线画面显示最近24小时的温度、湿度、光照变化曲线方便管理员分析大棚环境波动。主画面的布局特别重要。操作工不是程序员他们只看“现在棚里什么状态”“要按哪个按钮”。所以主画面我用了一张大棚的简易示意图把风机、湿帘、遮阳网这些用图标放在对应位置一目了然。这比一堆文字列表要直观得多。4.2 变量连接的致命坑WinCC flexible里的变量必须与PLC符号表一致名称可以不同但地址必须绝对对应。我在项目初期就踩过坑在PLC里用M0.0控制风机触摸屏里变量绑定的是Q0.0结果按钮按下去没反应查了半天才发现变量地址绑错了。关于变量一致性我总结了两条规矩所有HMI需要读写的PLC地址统一规划到DB块中并且定义符号名。例如“DB1.TempAverage”就是棚内平均温度触摸屏里引用这个符号就不会乱。尽量不要在触摸屏里直接访问M区临时变量。M区地址容易被程序其他部分复用一旦改动触摸屏画面上的数据就可能突然变成乱码。我习惯把所有面向HMI的数据都集中在一个DB比如DB100里面包括模拟量工程值、设备状态位、手自动标志、参数设定值。有一点要提醒S7-300的DB块访问在WinCC flexible里变量地址要写“DB1.DBX0.0”或“DB1.DBD2”这种格式不要漏了DB编号。漏了就出“访问错误”报警。4.3 数据记录与趋势曲线配置MP277本身有存储卡可以把运行数据记录在CF卡中。为了让趋势曲线能显示24小时的数据我在WinCC flexible里配置了数据记录周期10秒记录一次平均值到数据记录数据源PLC中的温度、湿度、光照模拟量工程值显示方式趋势图控件横轴时间纵轴工程量。数据记录功能还有一个妙用停电重启后历史数据依然存在。这就方便种植户分析昼夜温差变化。需要注意的是存储卡容量有限如果记录间隔太短、变量太多存储卡会快速写满。建议只记录关键模拟量并且每周自动覆盖旧数据。4.4 用户权限管理触摸屏上有参数设定功能不可能让所有操作工随意改温度上下限。我在WinCC flexible里设了三级权限观察员权限1只能浏览画面操作员权限10可以手动启停设备、确认报警管理员权限20可以修改所有参数每级权限对应不同的口令。触摸屏的“用户切换”按钮放在主画面右上角。这样做既满足了生产需要也符合设备管理的安全规范。西门子WinCC flexible的用户管理在“运行系统用户管理”里配置注意淡出时间按需求设置不要设成永久有效否则就失去权限管控意义了。5. 现场调试与排错从仿真到真实环境的完整复盘程序写到WINCC flexible组态完只是完成了“纸面工作”。真正的考验在现场联调。这部分我按调试顺序写把容易踩的坑、排查思路都列出来。5.1 先做离线仿真再上电我把梯形图和触摸屏工程在电脑里先做了离线仿真。STEP 7的PLCSIM可以模拟S7-300的CPU运行WinCC flexible也有仿真功能两者可以联合起来在电脑上跑通整个流程。这一步能省下现场大量时间尤其是把手自动逻辑、报警联锁这些在仿真阶段就验证过现场只需看传感器接线和通讯是否正常。仿真时我习惯把数值手工强制成特定值比如把温度模拟量强制成45℃看湿帘水泵是否立即启动把光照强制成0 Lux看补光灯是否正确打开。这些测试在PLCSIM里的速度比现场等实际环境变化快得多。5.2 MPI通讯连接不上上电后第一反应是触摸屏黑屏或者显示“连接中断”。最常见的原因有三个MPI地址冲突PLC的MPI地址是2触摸屏的MPI地址要设成1或3等不同地址必须在硬件组态里一致。波特率不一致MPI网络默认187.5kbps有时候有多个站点接入比如编程电脑也接入了波特率必须全部一致。终端电阻未拨到ONMPI总线两端要接终端电阻否则信号反射严重通讯时断时续。有一次现场怎么都连不上后来发现是MPI接头的进线和出线接反了。西门子DP头上有两排接线端子In/Out方向一定要按菊花链顺序接不能把两个设备的线都接在In端。5.3 模拟量跳变与实际偏差大上电后触摸屏显示温度30℃但是水银温度计测出来是22℃整整偏了8℃。排查过程如下第一步怀疑变送器故障用万用表量4-20mA信号发现电流是11.3mA折算温度约为31.6℃说明变送器输出和PLC显示基本一致问题不在PLC换算。第二步检查安装位置发现传感器安装在靠近侧窗的位置当时正刮风气流直接影响传感器。但即便这样也不应该偏8℃。继续查发现传感器没有加防辐射罩阳光直射外壳导致探头温度升高。第三步加了防辐射罩并挪到离侧窗2米的位置后温度显示变成23.5℃还是略高一点。最后检查屏蔽层接地发现屏蔽层接在了柜内的24V负极上而负极没有接地。把屏蔽层改接到大地PE端后数值稳定在22.2℃与水银温度计一致。这个案例说明模拟量不准往往不是程序问题而是传感器安装和接地不规范。这种经验写进程序注释里一点用都没有写进项目验收报告才有价值。5.4 触摸屏按钮偶尔失效调试中遇到一个奇怪现象手动模式下按触摸屏上的风机启动按钮有时候要按两三次才能启动。这个问题的排查路线比较典型先怀疑触摸屏按钮变量绑定错误但仿真里一切正常。又怀疑PLC输出点有问题但用现场按钮直接启动风机是正常的说明输出线路没问题。最后用WinCC flexible的“变量状态监控”功能实时查看按钮按下瞬间发现M0.3的值变化了但PLC程序里对应线圈没有动作。查梯形图才发现这个输出点在我程序里接了多条串联条件其中某条条件里有“风机过载未复位”的常闭触点触点在非正常状态下处于断开状态导致输出被锁死。触摸屏上又没有显示过载报警因为报警逻辑里没有把“风机过载信号”连到报警画面。这就把问题从“触摸屏按钮失效”引到了“报警遗漏”上。解决方法是把过载信号也做成报警变量并在程序里增加一条“过载时输出禁止”的逻辑说明触摸屏上明确显示是哪台设备过载。这个案例我记了很久因为它说明了一个通用道理很多表面上看是HMI的问题根因往往在PLC逻辑里或者说在报警设计不完整上。5.5 控制系统接地与雷击防护温室大棚在空旷田野里雷电感应是必须考虑的问题。整套系统虽然是中小型项目但我在电源入口加装了一级防雷器在传感器信号线上也装了浪涌保护器。PLC的24V电源负端不要直接接地而是通过一个RC阻容网络接地这个做法能有效抑制共模干扰。如果预算紧张至少要做到信号屏蔽层可靠接地控制柜外壳有独立接地极接地电阻不大于4Ω。6. 这套系统的扩展方向与我的实际体会项目交付后业主用了两个种植季整体反馈是稳定、直观。但作为从业者我更想聊聊这套系统还能怎么玩因为S7-300平台的数据通讯能力远不止给触摸屏看。6.1 接入上位机监控与云平台S7-300 CPU315-2 PN/DP自带PN口可以走Profinet或者通过以太网模块接入园区局域网。配上组态王、WinCC、LabVIEW等上位机软件就能把多套温室大棚的数据汇总到一个监控中心。如果业主想用手机看数据还可以通过OPC UA网关转发到云平台当然这需要增加网关设备。触摸屏端目前只做了现场显示后期要远程报警的话可以用西门子的工业物联网方案也可以把报警变量通过MODBUS TCP转给第三方网关。总之PLC数据接口都是现成的硬件上预留以太网口就不会卡脖子。6.2 环境数据的积累对种植工艺的意义大棚自动控制的直接收益是节省人工、降低风险但长期收益其实是积累了连续、可靠的环境数据。比如连续记录三个月大棚内温湿度曲线结合每次采摘的产量记录就能分析出哪个设定参数组合更适合作物生长。我用Excel把PLC历史数据导出来简单做了个温度区间与产量的散点图就已经看到明显的相关性。这个方向对农业种植者来说价值远超那套控制柜本身。6.3 几点掏心窝的提醒最后说几个我在类似项目里反复强调的经验第一别过度设计。温室大棚控制对象再多也没有必要把每一路电机都做成PID闭环调节。大多数开关型执行机构用回差逻辑就够了盲目上PID只会让调试复杂还会出现电机频繁动作的烦恼。第二触摸屏不是给工程师用的是给种了二十年地的老师傅用的。按钮要大文字要清楚故障提示要白话。不要用“FC20错误”这种提示直接写“顶窗电机过载请检查链条是否卡住”。第三资料一定要齐。把I/O分配表、接线图、梯形图符号表、触摸屏变量表全部整理成图纸包交付给业主机电负责人。这样两年后系统出问题接手的电工不用靠猜。这套系统从需求分析到交付调试前后大约三周时间。S7-300加WinCC flexible虽然不算新潮但它的稳重和可维护性特别适合农业现场尤其是春夏之交雷雨多、夏冬季环境温差大的情况下系统的稳定表现让我觉得当初的选型没有错。如果你也在考虑用PLC替换传统继电器控制温室希望这篇复盘能帮你少走几步弯路。
返回列表