基于S7-200 PLC与MCGS组态王的温室温湿度控制系统
1. 温室大棚自动化的切入点为什么非得盯住温湿度不放干这行的朋友都清楚温室大棚里的作物长得好不好很大程度上不是看化肥打得多不多而是看温湿度这两个参数压得稳不稳。白天棚内温度能冲上40多度夜间又可能掉到10度以下湿度更是极端——中午能低到30%灌溉后或阴天能接近饱和。种番茄、黄瓜这类喜温作物花期授粉对温度极其敏感坐果率直接受影响湿度一旦长期偏高灰霉病、霜霉病就跟着来。传统人工管理靠的是老师傅的经验凭感觉开风口、拉卷帘、启水泵人不可能24小时盯得住尤其夏天高温天半小时不通风棚里就是一场灾难。我做的这套系统核心就是围绕温湿度做闭环控制硬件上选西门子S7-200 PLC当下位机执行逻辑上位机用MCGS组态王做监控界面。S7-200负责采集温湿度传感器信号、驱动风机水泵卷帘等执行机构MCGS组态王跑在监控室的电脑上显示实时数据、画趋势曲线、存历史记录、下发参数设定。整套东西并不复杂但胜在稳定、直观、成本可控而且完全符合设施农业里现场无人值守、远程可监控的基本要求。这套方案适合谁参考如果你是学自动化、电气工程或者农业工程的学生做课程设计或毕业设计正好能覆盖PLC编程、组态软件、传感器选型、电气接线这些完整环节如果你是园区里负责设备维护的技术员想把手动大棚改成半自动甚至全自动这篇的硬件选型和调试心得也能帮你少走弯路。下面我就按从硬件到软件、从下位机到上位机的顺序把整个系统的设计思路和实测中的坑都摊开讲。2. 系统搭建的前期准备选型、架构与IO分配2.1 整体架构传感器—PLC—执行器—上位机这套系统在物理上分三层。最底层是现场设备包括温湿度变送器、风机接触器、水泵接触器、卷帘电机正反转接触器、加热接触器中间是控制层也就是S7-200 PLC它通过模拟量输入模块读传感器的4-20mA信号通过数字量输出点控制接触器最上层是监控层MCGS组态王安装在工控机上通过RS485串口和PLC通信。信号流向是这样的传感器把温湿度变成4-20mA电流信号经模拟量模块转换成数字量存入PLC的AIW寄存器PLC程序做标定、比较、滞回控制然后驱动Q输出点同时把数据放到V存储区供上位机读取。MCGS通过PPI协议周期性地读取PLC中的数据寄存器也把操作员设定的温度上/下限、湿度上/下限写进PLC的V区。整个过程不需要人为干预值班员在监控室看画面就行。2.2 传感器选型不要一味图便宜温湿度传感器是整个系统的眼睛选型直接决定控制精度。市面上有几种常见选择数字式DHT22、SHT30传感器便宜且接线简单但信号传输距离有限走线超过10米就容易丢数据或者跳变而且这类传感器大多需要外接单片机或者通信模块直接进PLC模拟量模块不太方便工业温湿度变送器则靠谱得多输出4-20mA标准电流信号两线制供电只要给个24V直流电信号线直接进PLC模拟量输入端子传输几百米都没问题。我这次用的是户外百叶箱式温湿度变送器测温范围-40到80度湿度0到100%RH精度分别为0.5度和3%RH足够温室控制用了。一个重要的接线细节4-20mA电流信号进入S7-200模拟量模块时模块内部有250欧姆采样电阻电流信号会转换成1-5V电压供ADC采样。接线时信号正极接模块的A端子信号负极接B-端子千万不能把24V电源负极和信号负极混在一个端子上否则干扰会极大这一点我后面实测踩过坑后面再说。2.3 PLC选型与IO分配S7-200家族里我选的是CPU224 DC/DC/DC14路数字量输入、10路数字量输出搭配一块EM231 4路模拟量输入模块。CPU224的性价比在中小型温室控制项目里刚刚好IO点数留了余量以后加光照传感器、土壤湿度传感器都方便。EM231模块是4路模拟量输入默认配置跳线在4-20mA档位通道0接温度通道1接湿度剩下两路备用。执行机构方面IO分配是这样的Q0.0轴流风机接触器Q0.1湿帘水泵接触器滴灌/微喷共用Q0.2加热器接触器Q0.3卷帘电机正转卷帘上升/打开Q0.4卷帘电机反转卷帘下降/关闭Q0.5报警输出声光报警器数字量输入留给了手动/自动选择开关、急停按钮、卷帘限位开关、风机热继电器反馈这几类。手动模式下PLC直接按按钮启停设备自动模式下PLC根据温湿度逻辑自动判断这样检修或极端情况下操作员还能人工干预。2.4 电气接线与保护设计接线看似简单但有两个地方必须注意。第一所有接触器线圈必须并联RC吸收或压敏电阻防止感性负载断开时产生的高压反电动势干扰PLC内部电路第二PLC输出端必须加中间继电器做隔离不要让接触器线圈直接挂PLC输出点S7-200输出点允许电流不大接触器线圈启动瞬间的浪涌很容易烧点。我实际用的是欧姆龙MY2NJ中间继电器安装在端子排上层方便更换。电源方面用了两个开关电源一个24V/5A专门给传感器和中间继电器供电另一个24V/2A给PLC供电两者共地但分开走线能把传感器信号干扰降到最低。工控机电源直接用220V中间加了带滤波功能的插排实测下来数据稳定很多。3. 下位机程序S7-200的控制逻辑应该怎么写3.1 模拟量标定从AIW原始值到工程值S7-200的EM231模块把4-20mA电流信号转换为0-32000的数字量实际是6400-32000对应4-20mA。要得到温度和湿度的工程值需要做一次线性变换。温度变送器量程是-40到80度那么标定公式就是温度T (AIW0 - 6400) * (80 - (-40)) / (32000 - 6400) (-40)湿度量程0到100%RH同理。我程序里用的是浮点数运算先把AIW0转成实数再套公式。Micro/WIN里的指令就是MOVW、ITD、DTR、加减乘除这几条网上教程一大把这里不贴完整代码了但有个细节值得说每次扫描周期都做浮点运算没问题S7-200 CPU224处理这点计算量绰绰有余但如果你要做的通道很多建议把标定过程放到一个子程序里统一调用程序结构会清爽很多。我实际把采集子程序和标定子程序分开了。采集子程序读AIW0和AIW1标定子程序把原始值换算成浮点数的工程值存到VD100温度和VD104湿度这两个地址也就是后面MCGS要读的变量。3.2 控制策略滞回比较比到点就切强多了温湿度控制的常见坑是继电器或接触器频繁启停。风机如果温度一到上限就启动、一到下限就停止传感器噪声和温度波动会导致输出点一分钟内动作好几次接触器寿命急剧下降而且大棚内温度惯性大这种频繁切换根本没有必要。我采用的是滞回比较策略实际上就是上下限分开设置形成一个缓冲区。温度控制逻辑如下当温度大于上限值滞回值比如28度时启动风机当温度降到上限值26度时才停止风机这样风机启动和停止之间有了2度的差值避免临界点抖动。湿度控制同理湿度低于下限时开启喷雾/湿帘水泵升到下限滞回值时停止。滞回值不是固定死的我把它做成PLC里的一个可写参数在MCGS界面上设置默认2.0调试时可以改成1.0或3.0观察效果。温度控制上还做了优先级设计当温度超过35度时不管湿度是否超限优先保证通风降温湿帘水泵同步启动利用蒸发降温效果这就是联锁逻辑。3.3 手自动切换与运行安全控制系统最怕的不是程序复杂而是人在紧急情况下不知道怎么干预。我在PLC程序开头做了手自动切换逻辑拨到手动模式时程序跳过所有自动判断直接执行按钮输入对应的输出拨到自动模式时按钮输入被忽略执行滞回逻辑。但特别注意卷帘电机的控制。卷帘电机属于单相电容启动正反转电机正转和反转接触器绝对不能同时吸合否则短路。我做的是软互锁硬互锁双重保险程序里自锁互锁逻辑两个输出点不会同时为1硬件上接触器也装了机械互锁装置。卷帘上升和下降都接了限位开关到顶或到底自动切断。自动模式下卷帘的启停逻辑是这样的白天温度超过30度且持续5分钟自动卷起通风傍晚温度低于18度或光照不足自动放下保温。这个持续5分钟用定时器实现就是为了防止阵风或短时云层遮挡导致卷帘频繁动作。3.4 报警和断电保持报警逻辑分了三级温度超过上限但未到危险值MCGS画面弹出黄色提示超过危险值比如40度输出声光报警传感器断线或短路AIW值小于6400或大于32000视为故障立刻停止所有自动输出防止执行机构误动作。这个设计后来真的救了一次现场——有次工人误拔了传感器插头系统没有疯了一样乱开风机而是直接停机报警车间负责人说这比啥都值。另外一个容易忽略的是数据保持。S7-200的M区和V区在掉电后默认不保持如果不做设置断电重启后所有设定参数恢复为0控制逻辑直接失效。解决办法是在系统块里设置V区掉电保持范围把设定参数和累计值区域全部设为保持。我保持范围设定为VB0到VB200足够覆盖所有配方参数。4. 上位机组态MCGS组态王怎么把现场数据搬到屏幕上4.1 设备组态与通信参数MCGS组态王和S7-200通信走的是PPI协议这是西门子的点对点接口协议物理层就是RS485。工控机通常没有RS485口需要配一块USB转RS485转换器。网上很多便宜的转换器用不住现场一开风机数据就断流我最后换了带光电隔离的工业级转换器稳定很多。打开MCGS组态环境后在设备窗口添加通用串口父设备再在父设备下挂西门子S7-200PPI驱动。串口参数必须和PLC一致波特率96008位数据位偶校验1位停止位。这个参数如果不匹配MCGS会一直报通信失败而且不会告诉你具体原因只能自己排查。设备通道这一块要注意MCGS操作S7-200的V区是按字节读取的你添加变量的时候要指明数据类型。比如温度工程值存的是VD100双字浮点数在MCGS里对应变量类型就要选32位浮点数地址写100MCGS会自动映射到VW100开始的4个字节。如果类型选错了读出来的数完全不对这是组态里最常犯的错。4.2 实时数据库上位机和PLC之间的翻译官MCGS里的实时数据库是整个监控界面的数据中枢。每个变量都要先在实时数据库中定义比如叫温度实际值湿度上限设定风机状态等然后在设备组态里把实时数据库变量和PLC的地址关联起来。MCGS会按设定的采集周期自动读写这些通道不需要你写任何通信代码。采集周期默认是1000ms我实际设置的是500ms。太快了协议开销大太慢了趋势曲线会显得很钝500ms对温室这种大惯性对象足够。写操作比如修改温度上限是MCGS自动检测变量值变化后写入PLC的所以操作员在界面上输入新数值回车数据就会下发。一个容易踩的坑PLC程序里如果把设定值存在VB100和VB101MCGS里也要拆成两个字节变量分别设定高字节和低字节或者干脆在PLC里定义为VD100并在MCGS里用双字变量。我推荐直接把所有上位机可写的设定参数集中放到PLC的一个V区段程序里统一读取这样MCGS的变量列表也清晰。4.3 画面组态主监控画面与操作界面MCGS的画面是用图元拖拽搭起来的。我做了一个主监控画面上面是温室的俯视背景图用设备形状摆风机、水泵、卷帘的位置每个设备旁边放一个状态指示灯——运行时绿色停止时灰色。温湿度用数据显示框实时刷新同时有一个实时趋势曲线控件显示过去一小时内温度和湿度的变化曲线值班员扫一眼就能看出趋势。参数设置画面单独做一页温度上限、温度下限、湿度上限、湿度下限、滞回值、报警阈值都在这一页输入。这个页面设置了一个操作员权限输入密码才能修改参数防止不相干的人乱改。另外还有一页是手动操作模式显示当前手动/自动状态操作员可以在手动模式下点击按钮直接启停设备。MCGS的动画连接功能很方便把图元的填充颜色和变量值关联起来就能实现状态变化。比如风机运行时风机图形填充绿色停止时填充灰色。趋势曲线控件需要添加温度实际值和湿度实际值两个数据源曲线颜色、刷新周期都可以调。4.4 历史存储与报表数据不能白存得能用MCGS组态王的存盘功能非常实用。我在策略组里建了一个循环策略每10秒把当前温湿度、设备状态、设定的上下限参数写入存盘数据库。存盘数据可以在存盘数据浏览窗口里按时间查询也能自动生成历史曲线和报表。我另外用ODBC方式把数据同步到Access数据库这样后续想用Excel做农艺分析或者能耗统计都很方便。5. 上下位机联调真正让人头秃的问题都出在通信和干扰上5.1 联调前必做的三件事程序写完、画面搭好之后不要急着把PLC和MCGS连起来。先做三件准备工作第一确认PPI通信口没有被人占用。S7-200的编程口同时也是PPI通信口如果Micro/WIN还连着PLC在调试程序MCGS是抢不到通信权的。很多人一联调就报通信失败其实就是忘了断开编程电缆或者关闭Micro/WIN软件。第二检查RS485的A、B线不要接反。RS485是差分信号A接A、B接B接反了则会完全通信不上。USB转485转换器上都有A/B标识PLC侧是DB9头的3号脚B和8号脚A这个接线方式网上有图纸但现场实操时新手经常接错。第三给PLC和MCGS都上电先用一条最简单的变量比如CPU224自带的状态字节测试通信是否建立。MCGS设备调试窗口里能实时看到通道值通了再接入完整的数据变量。5.2 通信超时与数据断流排查链路还原我现场调试时遇到过最头疼的问题是通信偶尔掉线有时候几分钟恢复有时候要重启MCGS才能恢复。一开始怀疑是RS485转换器质量差换了一个还是一样。后来我干脆把USB口从电脑前面板换到后面板故障频率降低了一些但没根治。最终排查到真正的根因是传感器信号线和RS485通信线走了同一根线槽。传感器4-20mA信号虽然没有大电流但24V开关电源的纹波和接触器动作时产生的干扰会耦合到通信线上。解决方案是通信线改用屏蔽双绞线屏蔽层单端接地传感器线和通信线分槽走距离至少20厘米接触器线圈增加RC吸收回路。这些动作做完运行一周再没见过通信掉线。5.3 传感器数值跳变与滤波还有一个问题也值得分享温度数值在屏幕上偶尔会从25.3度跳变到-15度然后马上恢复。从代码上看标定公式没错用万用表量传感器4-20mA信号也确实稳定。问题出在传感器接头松动和接线端子氧化大棚里湿度大普通端子特别容易氧化导致接触电阻变化信号偶尔断开又接上。换成镀金端子并拧紧后问题消失。PLC程序里我加了一层软件滤波连续采集10次去掉最大最小取平均这个平均值再参与控制判断。代价是响应速度慢了大约2秒对温室来说完全可接受但对消除随机干扰非常有帮助。5.4 浮点数通信的一个隐藏坑最后提一个藏得很深的坑就是MCGS从S7-200读取浮点数时字节序的问题。S7-200的浮点数存储格式是高位字节在前而MCGS默认读取也是高位在前一般情况下对得上。但如果你混用了不同固件版本的S7-200或者驱动版本不一致有时会出现读出来的数差出好几个数量级。我的处理办法是在MCGS设备调试窗口里对着看如果数据明显异常把浮点数的两个相邻字交换一下再绑定。这个技巧要是不说很多人会误以为是传感器坏了花大半天查硬件。6. 运行数据与实际效果这套系统能不能扛住大棚搬迁怎么扩展6.1 连续运行三个月的实测数据系统在去年夏天完成改造并投入运行我整理了三个月的运行数据。在7月最热的时段大棚外气温36到38度棚内启用风机加湿帘联动的降温逻辑后内部温度能稳定在28到31度范围内相对湿度在60%到75%之间。以前人工管理时中午温度经常飙到35度以上叶片萎蔫现象很常见改造后基本没有出现过。能耗方面风机和水泵加起来功率大约4.5千瓦按每天累计运行8到10小时计算夏季平均每天电费大约30到40元。相比作物减产和病害造成的损失这笔电费很划算。另一个惊喜是数据报表看出了一些规律——午后高温时段风机连续运行超过3个小时夜间湿度上升期湿帘水泵基本不启停这说明滞回参数设置得比较合理系统状态很稳定。6.2 后续还能做什么远程监控与策略优化这套系统的框架留了扩展余地S7-200的剩余模拟量通道可以接光照传感器和土壤水分传感器MCGS画面也预留了相应的变量位置。我最近在考虑把数据通过4G模块上传到云端这样人不在园区也能用手机看数据、收报警。S7-200本身不支持直接上云但可以通过加一个串口联网模块实现MCGS组态王这边再配置一套MQTT转发驱动整体改造量不大。控制策略方面滞回控制虽然稳定但在春秋两季温差大、光照变化快的时候还是显得笨了一些。如果后续想做得更精细可以把温度控制从简单位式升级为PID调节调节对象是风机的变频器频率S7-200的PID指令本身就支持MCGS里只需要再加一个设定值输入框和当前输出百分比显示框。对设施农业这种大惯性、纯滞后对象来说PID参数整定要花不少功夫我的建议是先小范围试运行不要指望一次调好。6.3 最后说点实在的这套系统从硬件选型、接线、写程序到组态画面前后大概用了两周时间绝大多数工作量其实不在编程而在现场调试和抗干扰处理。如果你第一次做类似的项目我的建议是传感器和通信这两块别省钱其他能凑合就凑合。传感器不准再好的控制算法都是白搭通信不稳定画面再漂亮也成了摆设。另外一个经验是任何时候都要保留手动操作功能并且把手动/自动切换开关装在容易操作的地方。自动化系统的价值是减轻劳动强度、提高一致性而不是取代人的应急判断。大棚种植的现场情况千差万别一场大风、一次断电都可能需要人立刻介入。系统做得越聪明越要给操作员留一个傻瓜式的后手。这套系统的意义就在于日常管理交给PLC和MCGS这对搭档关键时刻人依然说了算。
上一篇/下一篇内容由系统自动关联
返回资讯列表 →