
朋友给我打电话时说的是帮我看几台卷帘机和风机等我到了那栋连栋温室的配电间看到的却是满满一柜子继电器、十几个接触器、还有一台已经装了一半的三菱FX3U。他说西红柿马上要定植环控、水肥、遮阳都得一起上问我这些十八般武艺一个PLC能全扛下来吗。这个问题我后来在农场里蹲了整整一个调试季才完全回答上来。先说结论FX3U这种中小型PLC在温室西红柿项目里不仅扛得住而且绰绰有余。但要真正发挥它的价值不能只把它当高级点的继电器柜从传感器选型、模拟量标定、执行机构互锁到水肥逻辑每一条都得认真对待。这篇文章就当是我交的一份作业给准备入坑温室环控的朋友做个参考。1. 一株西红柿背后的控制需求这不是卷帘开关那么简单1.1 从定植到采收温室到底控哪些东西西红柿在温室里活着最敏感的就是环境。白天温度超过32度花粉活力下降坐果率断崖式下跌夜温低于12度根系吸收能力减弱叶片容易积累露水引发灰霉病。湿度更是麻烦低于40%容易诱发病毒病高于90%又给灰霉病、晚疫病创造机会。光照不足的时候植株徒长果实转色差光照过强又得遮阳降温避免日灼。所以一套正经的温室环控系统要管的东西至少包括室内外温度、室内湿度、光照强度、CO2浓度、土壤墒情、营养液EC值、pH值以及执行端的循环风机、湿帘水泵、遮阳帘电机、侧卷膜电机、顶通风电机、补光灯组、滴灌电磁阀、施肥泵、雾化喷淋泵。这些不是各自独立动作而是相互耦合的。比如夏季正午温度升高系统会先开风机再开湿帘同时把遮阳帘放下一部分三个动作必须配合好否则要么温度压不下来要么棚内湿度突然飙升西红柿叶子挂满水珠。传统做法是拿一堆温控器、湿度控制器、时间继电器各自管一段接线乱不说逻辑还互相打架。我当时在配电柜里看到那一堆继电器就知道原来施工方是想用各路独立控制凑合但这套思路在温室里根本撑不住。1.2 为什么继电器方案在温室里容易翻车用温控器控风机用单独的湿度开关控喷雾看上去各干各的没问题但实际运行会出几个典型的逻辑灾难。最经典的一个场景夏季中午温度到了33度温控器先开了湿帘水泵结果同时湿度控制器检测到湿度低于55%又触发了喷雾加湿两种加湿手段叠在一起棚内湿度直接冲到95%雾气散不掉西红柿花果期很容易灰霉病大面积爆发。另一个常见问题出在遮阳帘和侧卷膜上。继电器控制没有到位判定卷膜电机到了限位还在通电行程开关一坏电机或者减速机构就烧了。再一个是停电恢复继电器柜恢复供电后状态全部归零该关的遮阳帘开着该开的循环风机不转等工人第二天早上进棚已经是满棚高温灼伤。PLC的价值就在这里所有动作都变成程序里的逻辑运算传感器数据统一采集、统一判断、统一输出还能做互锁、延时、上限位保护、断电保持。用三菱FX3U这种机型做温室控制正好卡在性价比和时间继电器柜差不多的位置但可靠性和扩展能力完全是另一个层次。1.3 硬件清单和基本控制对象我当时给这个项目定的控制对象列表后来也成了很多朋友问我要的参考原型大致是这样的温度1台循环风机可多级调速、湿帘水泵、侧卷膜、顶通风、遮阳帘湿度雾化喷淋泵、湿帘水泵、侧卷膜/顶通风联动光照遮阳帘、补光灯组CO2CO2钢瓶电磁阀或者燃烧机视设备而定水肥滴灌主电磁阀、A/B母液施肥泵、搅拌泵、清洗电磁阀安全急停、缺相保护、热继电器输入、水塔液位、施肥罐液位、高低温报警I/O点数一列大概就是开关量输入20点、输出15点、模拟量输入8路左右。这个规模FX3U主机加扩展模块正好安排得明明白白再多一点就开始挤。2. 三菱FX3U怎么选型主机、扩展模块与通讯的搭配2.1 主机选型与I/O点数的精打细算温室环境相对潮湿夏天温度高、冬天偶尔零下配电柜放在侧面操作间没有重度粉尘但也不能排除凝露。所以我建议选继电器输出的FX3U-32MR/ES-A32点的主机16点输入16点输出。继电器输出虽然响应速度不如晶体管但在温室这种低频开关场景下完全够用而且触点容量大驱动中间继电器、接触器很皮实维修工人拿万用表也好查。选型的时候一定要把预留量算进去。我按这个项目统计过信号类型实际需要预留合计开关量输入12416开关量输出10414模拟量输入8210通讯口1触摸屏1预留上位机2为什么预留这么重要因为温室项目在现场追加功能太常见了。比如客户看完第一版运行突然说要加一路室外光照传感器做阴雨天补光强制开启或者后面要加第二套灌溉区域得多出一路的阀门输出。没有预留就得再买扩展模块或者换主机非常被动。2.2 模拟量扩展和通讯模块这钱不能省FX3U主机本体没有模拟量输入这是很多新手第一次踩坑的地方。以为PLC能读温度实际上得额外挂FX3U-4AD模块。温室控制里温度、湿度、光照、CO2、土壤水分、EC、pH这七类信号全是模拟量一路4-20mA或者0-10V。我当时的配置是两块FX3U-4AD一块管环境数据温湿度、光照、CO2一块管水肥数据土壤水分、EC、pH各预留一路。通讯上触摸屏和PLC之间我用了FX3U-485-BD扩展板走MODBUS RTU协议。这个扩展板价格不贵但安装时要注意它要插在FX3U主机侧面的通讯扩展口上这个口同时还要考虑和后续物联网网关的冲突。后来我又加了一块FX3U-ENET以太网模块把数据送给上位机做统计报表。如果你预算紧张可以先不加ENET但485口的MODBUS一定要留好很多国产触摸屏和网关都靠它接。2.3 GX Works2编程软件里的几个习惯编程软件用的是GX Works2这个软件对新手不太友好是出了名的但它确实能同时管理梯形图、结构化文本和SFC。温室项目我建议用梯形图做主程序结构清晰后期维护人员上手快。特别是模拟量处理、比较、定时器这些指令梯形图看着一目了然。有一个实操细节值得说工程建立时不要图省事选简单工程要选可带结构化框架的工程这样可以在程序里分程序块把初始化手自动切换环境控制水肥控制报警处理分开写后面查故障会轻松很多。我在这个项目里就是因为一开始偷懒全写在一个程序段里到第三周加遮阳联动逻辑时找触点找得眼睛快花了。3. 模拟量采集与滤波温度湿度光照的真实数据是怎么来的3.1 传感器接线与抗干扰这是最容易被忽视的基本功温室里变频器、接触器、电机频繁启停电磁干扰一点都不比工厂弱。传感器信号如果走普通线PLC读到的温度数据会像心电图一样乱跳。这个项目里我吃过一次亏温度变送器用了普通铜芯线跟在一条槽里敷设结果早上循环风机一启动温度数字漂了三四度遮阳帘直接抽风式了。后来全部改成屏蔽双绞线屏蔽层在PLC侧单端接地信号线和动力线分槽敷设漂移问题基本消失。这里多说一句4-20mA电流信号比0-10V电压信号抗干扰能力强得多温室环境建议能选电流输出就选电流输出。另外传感器的供电不要和图栏里的接触器线圈共用一根开关电源最好单独用一台24V电源或者至少加隔离。3.2 数据标定与平均值滤波别让一个毛刺触发误动作FX3U-4AD模块读回来的数字量得转换成工程值才能比较。比如4-20mA对应0-4000不同版本BFM设置可能不同具体要翻模块手册温度变送器量程是-20度到60度那转换公式就是实际温度 (数字量 - 0) / (4000 - 0) ×工程量程 量程下限。这个转换在程序里用应用指令做每个通道算一遍。但光转换还不行传感器本身会有瞬时波动电机一开偶发的噪声也会扎进来。我习惯在程序里做滑动平均值滤波把最近5个扫描周期的模拟量放在一个数组里每次取平均再去参与逻辑判断。扫描周期在温室程序里不到二三十毫秒取5次平均对响应速度几乎没有影响但稳定性提升非常明显。下面是一段参考逻辑用三菱的梯形图指令写的核心思路具体地址以现场分配为准// 假设 D50 是模块通道转换后的温度原始值 // D51 是最近5次采样缓冲区首地址 // D60 是滤波后的温度值 ASR D51 // 缓冲区右移存入当前值 MOV D50 D51 K4 LD K100 D50 // 如果D50明显超出合理范围本条逻辑强制修正 ...这个写法只是示意重点是缓冲区滚动。实际项目里我会把5个采样值用一条循环或重复读取指令放在一个连续D区再做平均。注意平均值运算用除法时余数要舍掉还是保留取决于你要的温度精度0.1度级别建议先把信号放大10倍再处理。3.3 温度分段控制从两段到PID的务实演进西红柿温室温度控制我用的是分段控制思路而不是一上来就PID。因为温室本身热惯性很大风机开一个和开三个的效果完全不一样PID参数调不好反而会来回震荡。我的逻辑是这样T 设定下限时关闭风机必要时启动加热如果有T在设定区间内保持当前风机状态T超过设定上限先开一台风机5分钟后还降不下来再补一台T超过强停止线比如35度直接拉满全部风机并开启湿帘水泵和遮阳联动。这个阶梯式控制逻辑的好处是简单、可靠、工人看得懂。后来越来越熟练了我开始在恒温区间加了一路FX3U的PID指令做微调让风机按设定偏差线性运行。注意FX3U的PID指令除了给过程值、设定值还要配一组参数区PID参数如果不熟悉先用自整定跑一轮把比例增益、积分时间、微分时间记下来再适当放宽防止过冲把卷膜器带着来回折腾。4. 水肥一体化滴灌阀、EC/pH与施肥泵的联锁4.1 灌溉时序一次滴灌是怎么编排的西红柿苗期的灌溉和花期、果期差异很大但基本流程一致先滴清水冲洗管道再注入母液最后清水冲洗残留。这个时序用时间继电器也能做但复杂的配方切换和轮灌控制还是PLC方便。我写的水肥控制大概是这样的执行流程收到灌溉指令触摸屏按钮或者定时器触发先检测水塔液位是否正常打开滴灌主电磁阀启动清水泵滴灌2分钟把管道冲开启动A母液泵和B母液泵按设定比例注入边注入边检测总出口的EC值EC达到目标范围后稳定运行设定时间关停母液泵继续滴清水3分钟关闭滴灌主阀一次灌溉结束。这里面第3步最关键也是最容易出事的地方。A母液泵和B母液泵如果不同时启动或者一个泵卡住EC值会突变整批西红柿都会受影响。所以我给两个泵加了双泵运行监视PLC发出启动指令后经过接触器辅助触点返回的反馈信号必须在2秒内到位否则认为泵没动作立刻停阀并报警。这个反馈联锁比单纯看电流还直接。4.2 EC/pH的控制策略母液注入不是越准越好EC传感器装在主管道混合后、滴灌分叉之前的位置读到的混合液电导率。pH传感器也装在同一段管道。两个模拟量进PLC后我会先做和上一节一样的滤波然后参与比较。EC控制我用的是间歇式修正检测到EC偏低先按最低动作时间比如1秒启动A泵运行2秒后重新读取EC如果还不够再累加一个脉冲。这样一次性压上泵等EC冲到上限再调回来容易过冲。虽然这种逻辑响应慢几步但水肥混合本身有几秒到十几秒的滞后慢一点反而稳。pH的控制和EC类似但要注意酸液添加和母液添加是反着来的操作前一定要确认执行机构的阀门对应关系我见过项目里把酸罐和肥料罐的泵接反而导致pH直接冲到5以下的现场番茄一片死亡教训惨烈。每次接线完成后先走手动模式逐个泵确认方向不要信图纸上的标号。4.3 安全联锁与清洗排空母液浓度高的时候不能硬灌水肥系统有几条铁律级的联锁水塔液位低绝对不允许启动母液泵防止母液倒灌母液罐低位报警时母液泵停止避免空转主管道低流量或者堵管通过流量开关判断时整车系统停防止滴头堵塞引起局部土壤盐分积累每次灌溉结束必须进行清水冲洗否则下次开阀时植物根系会先接触高浓度残留液。这些逻辑全部写在PLC里除了报警还要有故障锁定功能。所谓故障锁定就是某个联锁条件触发后即使故障信号瞬时消失系统也不能自复位必须人工到触摸屏上确认解除。这在农业现场非常重要因为工人可能没看到报警误以为设备自己恢复正常就会再启动。温室里很多事故都发生在瞬时故障自动复位的叠加场景。5. 遮阳帘、卷膜器与风机的互锁逻辑安全防错设计5.1 正反转电机的到位保护与防碰撞遮阳帘和卷膜器都是正反转电机这种电机最怕两件事持续堵转和两侧同时给电。持续堵转最常见的原因是行程开关坏了或者行程开关位置被震动调偏了。如果PLC只靠行程开关一个信号判断到位那行程开关一失效电机就一直顶着减速机构烧。我现在的做法是行程开关运行时间双重保护。每次启动遮阳帘电机时启动运行定时器比如设定90秒正常情况下早该到位了如果运行到90秒还没收到到位信号PLC立即断开输出并报遮阳帘运行超时故障。这样即使行程开关失效电机也不会一直堵转。触摸屏上再配一个手动复位让维护人员检查后确认再继续用。两侧同时给电这个风险主要出在程序维护时。有人在线修改程序不小心把开和关两个输出同时置ON电机驱动器或者物理结构直接损坏。解决办法很简单梯形图里做硬互锁。LD Y10 // 遮阳帘开输出 ANI Y11 // 禁止关输出同时ON OUT Y10 LD Y11 // 遮阳帘关输出 ANI Y10 // 禁止开输出同时ON OUT Y11原理就是常闭触点互锁任何人都能从图纸上看明白。类似逻辑还要套在侧卷膜开/关、顶通风开/关上。这个习惯我从那台温室项目之后就再没丢过。5.2 风压和湿帘的联动别让湿帘变成漏水墙湿帘水泵的启动有一个前提条件至少一台风机在运行。如果湿帘水泵抽水了但风机不转湿帘完全起不到蒸发降温作用水全洒在地上湿度瞬间飙高叶面结露。所以我的程序里湿帘水泵的启动条件是温度高风机运行中风机数1。反过来风机全部停止时湿帘水泵必须立刻停止。这个联动还要考虑故障场景如果风机因为热继电器跳闸而停止PLC是能收到热继电器反馈的这时也要无条件停湿帘泵。总之湿帘泵永远是跟跑的角色跟着风机状态跑而不是自己独立判断。遮阳帘和侧卷膜之间也要联动。大风天气遮阳帘如果全部展开相当于一张大帆很容易被风撕裂。我后来加了室外风速仪的干接点输入量程到位先不用只判断超限风速超限时不论原来遮阳帘在什么位置一律执行收帘动作同时关闭侧卷膜打开动作。这个功能很多温室项目到后期才会补但我在最初设计时就把这个输入点预留了所以后来接线很顺畅。5.3 手动/自动切换与断电保持现场维护人员的耐心是有限的控制柜面板上必须有手动/自动切换开关。手动模式下PLC不参与思路直接用按钮箱操作接触器。很多工程师觉得手动模式是给工人用的其实它也是给我们调试用的。调模拟量、查接线、试电机转向全得在手动模式下做不然每次强制输出点都提心吊胆。手动/自动切换的逻辑要特别小心从手动切回自动时所有输出必须先复位再重新运算防止切回自动的一瞬间因为当前状态触发一个不该有的动作。比如手动模式把遮阳帘开到一半切回自动时如果程序认为光照强该放下遮阳帘帘子可能突然往下走吓人一跳。我的处理方式是通过定时器做3秒的自启动延迟延迟期间所有输出清零程序重新计算完毕后再根据当前工况输出。断电保持也很重要。FX3U的内部掉电保持区比如D区一部分是带锁存的我用它来保存当前遮阳帘位置状态、风机运行状态、当日灌溉次数、上次灌溉时间。这样停电再来电程序可以恢复到停电前的状态配合触摸屏上的断电恢复确认按钮避免工人不知道设备正在什么状态而误操作。6. 触摸屏、通讯与数据记录把农场数据变成日报表6.1 485通讯与触摸屏组态画面别做得太花哨触摸屏和FX3U之间用485BD走MODBUS RTU组态软件里选择对应的PLC型号地址映射非常方便。画面我建议按照手动控制页自动运行页参数设置页报警历史页四个页面来做。自动运行页放一个大棚的画面上面用趋势图显示温湿度下面排列各设备的运行状态指示灯绿红两色就够不要做太多动画和一个屏幕的圆圈特效现场工人要的是快速看懂。参数设置页要注意给每个设定值加上下限和权限密码。比如温度设定值只能在15度到35度之间EC设定值只能在1.0到4.0之间。植物生长数据有些看似随便输入的参数真出了问题往往都是因为某人在触摸屏上点错一个小数点。权限密码分成操作员级和管理员级现场工人只能改常用目标值管理员能改PID参数和报警上下限。6.2 数据记录用PLC的时钟在掉电保持区做日报上位机不是每个温室项目都愿意上但数据还是要留。我的折中方案是让FX3U每小时记录一次温湿度平均值、光照累计、灌溉次数存在掉电保持D区存够24小时后生成一条日报数据。第二天早上工人操作触摸屏就能看到昨天的最高温度、最低温度、平均湿度、累计灌溉量用来判断今天要不要调整遮阳策略。这个方案虽然没有专业农业物联网平台那么全但成本几乎为零也不依赖网络。后面如果客户想上云平台只需要把那块485-BD的从站地址再加一个网关或者用ENET模块走MODBUS TCP把FX3U的保持区数据读走就行了。预留好通讯口升级一点都不伤筋动骨。6.3 故障记录与追溯每一条报警都要能回答三个问题我在这套系统里把报警分成了三级提示级比如光照偏低、设备级风机热继电器跳闸、系统级水塔液位低EC异常。每一条报警都会附带触发时间、触发值、恢复时间。触摸屏上只显示当前报警上位机里存历史报警。这样后面出了问题真的能回答什么时候开始坏的、坏了多久、最后什么状态三个问题而不用靠猜。历史报警的存储我用的是FX3U的D区循环写分配一段连续地址当环形缓冲区写满后覆盖最老的数据。配合掉电保持能存大概几百条记录对中小型温室已经足够。真要存两三年数据那是物联网平台的事PLC只管最近发生了什么。7. 一些测试阶段才醒悟的细节这个项目调试到最后有几个细节是书本上很难讲到的我顺手记下来对新手应该能省不少学费。第一个是模拟量信号负线的问题。温度变送器接4-20mA两线制有人说负极接模块输入负屏蔽层要不要接负极我实际的建议是严格按照模块手册避免把信号负和屏蔽层在多点接地。我在现场遇到过一次把屏蔽层两端都接了地结果形成地环路晚上水泵一停数据就跳排查了大半天。第二个是PLC的扫描周期对温室控制的影响。温室里很多信号是慢慢变化的扫描周期快慢影响不大。但故障信号不一样热继电器触点抖动可能只有几十毫秒PLC扫描快了反而捕捉到抖动报警慢了又可能漏掉真实的跳闸。所以我在故障信号输入口大都并联了一个RC滤波器或者开一个10ms-50ms的输入滤波让干扰信号过去的也过去的也看不出来。第三个是程序注释。农业项目经常出现设备已经运行一年了突然换个新工人看不懂当初为什么这么编的情况。我在每个子程序块开头写清楚输入输出地址、单位、量程上下限、修改人修改日期特别是遮阳联动这种跨几个子程序的逻辑必须写清楚先决条件和优先顺序。道理谁都懂但实际项目里能坚持的工程师不多写清楚的人后来都被当时的项目组特别感谢过。另外一个想提醒的是关于继电器输出的寿命。温室里的风机电机每天启停可能上百次继电器输出需要外接中间继电器和接触器来隔离PLC的输出点不能直驱大电流接触器线圈。虽然每个输出点本身都有电流上限但把容量用在隔离而不是直接扛负荷系统寿命会明显延长后期维修也不会动不动就拆PLC换点。最后就是那个老生常谈的可扩展性。温室项目需求变化快客户今天只是做一栋棚明年可能就加第二栋。所以从第一套系统开始I/O预留、485接口预留、电源容量预留都尽量按两倍做哪怕前半年用不到。因为后补方案的时候不只是加钱的问题整个控制逻辑、图纸、线槽都跟着翻工最难受。那次西红柿温室落地后朋友又拉我看了两个类似的园区项目每次看到控制柜里躺着的FX3U和整整齐齐的接线我都会想起最初他那个卷帘风机到底用PLC值不值的问题。值不值不好说但从那天起我知道自动化和种植的边界其实就是从这种接地气的十八般武艺开始的。