ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

基于S7-200 PLC与组态王的育苗温室控制系统设计

基于S7-200 PLC与组态王的育苗温室控制系统设计 各位搞自动化、搞设施农业的朋友今天聊一个我亲手做过、也帮别人调过很多次的项目基于西门子S7-200 PLC和组态王的育苗大棚温室控制系统。这活儿不算高精尖但特别典型——从电气接线、PLC梯形图到上位机组态一整套流程走下来能把一个小型自控系统最关键的知识点全部串起来。这篇就把我的完整设计思路、梯形图逻辑、接线要点、组态王联调方法以及调试时踩过的坑一次性讲透。这个系统能做什么简单说就是四个字自动控温。核心任务是把育苗大棚的温度、湿度控制在设定范围内需要的时候自动开风机、开卷帘、开滴灌、关风机同时把大棚里的实时数据传到组态王上显示和记录你在办公室或家里就能盯着大棚状态。适合谁看刚学PLC想做个像样的完整项目练手的或者种苗场、大棚用户想在现有设施基础上做低成本自动化改造的。我用的方案是S7-200 CPU224加上模拟量扩展模块EM231下位机用梯形图上位机用组态王6.55两者走PPI协议通讯。这套方案的优点是成本低、资料多、稳定可靠特别适合中小型温室。我先说个总的原则这种项目别一上来就写程序。我见过太多人拿到任务就开STEP 7-Micro/WIN噼里啪啦一通写写完都编译不过更别说现场能用。正确流程是先想清楚系统里有哪些输入、哪些输出、控制逻辑怎么走把IO表和工艺流程画在纸上再动手。后面的内容我就按这个思路展开。1. 整体设计思路与系统框架拆解1.1 育苗温室控制的真正需求是什么育苗大棚和普通的种植大棚不一样苗期对环境的敏感度极高。种子发芽、幼苗生长都有各自的适宜温湿度区间一旦温度过高或过低轻则长势停滞重则烂根死苗。所以育苗温室控制的核心不是降温或加温这种单点动作而是一个基于温度、湿度的综合联动逻辑。具体到控制对象我把它分成四类通风降温类轴流风机、侧窗卷帘、顶窗。加温类热风炉或电加热器育苗棚常见尤其是早春和晚秋。加湿/灌溉类滴灌电磁阀、喷雾电磁阀。辅助类补光灯阴雨天补光、报警器。这四类设备不是独立工作的。比如夏天气温高、太阳晒棚内温度超过28°C你不光要开风机还得考虑卷帘是否打开如果湿度同时低了幼苗容易脱水可能需要启动喷雾。你如果只用单个温度上限去触发单个设备控制效果会很差。1.2 为什么用S7-200 PLC搭配组态王这个组合在今天的工业环境下可能显得老但用在温室控制上刚刚好。S7-200的优势它虽然已经停产多年但存量市场极大二手模块和全新兼容机都便宜一个CPU224加一个EM231模拟量模块总成本几百块就能搞定。它的指令系统简单尤其是定时器、计数器、比较指令这些对新手极其友好。而且它的PPI通讯协议非常成熟组态王原生支持配置起来几乎不费力气。组态王Kingview的优势国内组态软件的常青树界面做监控画面很灵活内置的图库拿来就能用报表、历史曲线、报警功能都齐全单机版授权也不贵。对育苗棚这种对象来说组态王比WinCC更轻量比触摸屏上位机信息量更大比自写LabVIEW上手门槛低得多。1.3 系统整体架构与信息流整个系统的信息流向是这样的传感器信号温湿度→ EM231模拟量模块 → S7-200 CPU → 梯形图逻辑判断 → 输出模块 → 接触器/继电器 → 风机、卷帘、电磁阀等执行器同时S7-200通过PPI总线连到组态王上位机上位机实时刷新数据、保存历史记录也可以下发设定值。比如你在组态王画面上把上限温度从28改成25PLC里的比较指令会自动按25来动作。这就实现了现场控制器远程监控的两级架构。这样架构的好处是即使上位机挂了、通讯线断了PLC本身依然能独立完成全部控制不会出现电脑一关大棚就失控的尴尬局面。这一点是做农业自动化必须重视的现场环境复杂、电压波动大、电脑稳定性不如工业设备分布式控制结构一定要保底。2. 硬件选型与接线原理图详解2.1 传感器和执行器的选型要点温度传感器我推荐用PT100铂电阻配温度变送器输出4-20mA标准电流信号。为什么不用热电偶因为育苗棚的温区基本在-10°C到60°C之间PT100在这个区间线性度更好、精度更高而且变送器便宜安装也简单。如果你图省事也可以用集成式的温湿度变送器比如RS-WS系列那种一路485输出同时带温度和湿度不过这样要选带通讯功能的S7-200或者自己写Modbus RTU协议而且可能占用通讯口。用模拟量信号更稳定调试也直观。湿度传感器输出类型我建议也统一用4-20mA因为电流信号抗干扰能力比电压信号强尤其是大棚里风机启动、卷帘电机动作的瞬间电压信号容易受干扰跳动。注意了我这里说的4-20mA是两线制接法变送器两根线一根接24V一根接信号输入比四线制的简单而且省一根线。执行器的选择上风机选普通的轴流风机就行功率根据大棚面积算一般每100平方米配一台500W左右的。卷帘电机要带限位开关否则容易过卷。滴灌电磁阀选常闭型、DC24V驱动的别选AC220V的因为S7-200的输出模块是直流24V的方便直接驱动。如果你必须用AC220V的电磁阀那就需要中间继电器转换多加一层器件。2.2 CPU224与EM231的IO分配表我做项目第一步就是固定IO分配这件事绝对不能省。下面是我这个项目实际用的分配表信号类型IO地址接的设备数字量输入I0.0卷帘上限位开关数字量输入I0.1卷帘下限位开关数字量输入I0.2风机热继电器辅助触点数字量输入I0.3手动/自动切换旋钮数字量输出Q0.01#风机接触器数字量输出Q0.12#风机接触器数字量输出Q0.2卷帘电机正转接触器卷帘上卷数字量输出Q0.3卷帘电机反转接触器卷帘下卷数字量输出Q0.4滴灌电磁阀数字量输出Q0.5加温接触器数字量输出Q0.6报警电铃模拟量输入AIW0棚内温度4-20mA模拟量输入AIW4棚内湿度4-20mA注意一个细节其中的模拟量输入地址我用了AIW0和AIW4为什么不是AIW0和AIW1因为我用的EM231模拟量模块是4通道的每个通道对应的寄存器地址在S7-200中是按每通道占2字节连续分配的也就是AIW0、AIW2、AIW4、AIW6。第一个通道是AIW0第二个通道是AIW2自己容易混一定要按模块的使用手册来查。2.3 接线原理图的几个关键细节接线这块我重点说几个容易出问题的地方。第一DC24V电源容量要算够。S7-200 CPU224自带的传感器电源只有300mA左右如果你接一个24V的电磁阀、两个变送器它不一定带得动。而且CPU的24V输出如果电流过大会烧内部电源。我的做法是单独用一个DC24V开关电源给传感器和电磁阀供电CPU的24V输出只给PLC输入端的干接点供电。这样既安全又稳定。第二模拟量输入线的屏蔽层要单端接地。电磁阀和风机动作的时候如果屏蔽层两端都接地反而会产生地环路引入更大的干扰。一般做法是在PLC侧接地传感器侧不接。第三输出端的保护。驱动接触器线圈时必须在接触器线圈两端反向并联一个续流二极管或者RC吸收回路。否则线圈断电瞬间会产生几百伏的反向电动势直接打坏PLC的输出继电器触点。这是新手最容易忽略的我见过不少S7-200输出模块因为这原因烧了。第四卷帘电机的正反转互锁。这个不仅在接触器上面要互锁在梯形图里也要互锁也就是Q0.2和Q0.3绝对不能同时得电。真出了这种事轻则烧接触器重则卷破大棚膜。接线总体上其实不复杂但一定要按照端子号一个个地核对我之前总想着差不多就行结果接错一根线查错查了半天得不偿失。3. 梯形图程序的设计与实现3.1 程序整体结构与模块划分梯形图程序是整个人机逻辑的核心我的建议是不要把所有逻辑塞在一个OB1主程序里那样调试时看着箱头疼。S7-200支持子程序调用我按功能拆分成四个子程序。程序结构SBR_0初始化用首次扫描标志SM0.1复位所有输出、设置定时器初值。SBR_1模拟量采集与换算读取AIW0、AIW4把4-20mA信号换算成实际的温度、湿度值存到VW区。SBR_2温度控制逻辑根据设定值比较控制风机、卷帘、加温。SBR_3湿度与灌溉逻辑根据湿度值控制滴灌和喷雾。SBR_4报警逻辑超限时输出报警信号。主程序OB1里就三行SM0.0调用SBR_0然后SM0.0调用SBR_1再根据模式条件调用其他子程序。看似多此一举实际上后期改逻辑特别方便。你在子程序里改了编译后下载现场调试效率翻倍。3.2 模拟量采集与工程量转换S7-200的模拟量输入AIW0是一个0到32000的整数4-20mA对应6400到320000-20mA对应0到32000。你要做的就是把6400-32000这堆没头没尾的数字映射成-10°C到50°C这样有意义的工程值。换算公式工程值 (原始值 - 6400) × (量程上限 - 量程下限) / (32000 - 6400) 量程下限。比如温度变送器是4-20mA对应0-50°C那么当AIW019200时实际温度 (19200-6400) × 50 / 25600 0 25°C。梯形图实现我一般用整数运算指令。流程是先用双整数减法把AIW0减去6400再乘50最后除以25600。注意这里直接用整数乘法会溢出必须先用DI_I或直接用双整数来做。S7-200里AIW的数据类型是整数你要先转成双整数再运算。实际项目里我不是直接用VW存温度而是把结果放大10倍后再存也就是实际温度25.0°C存成250。这样避免了小数点运算在S7-200里的那些麻烦显示和控制精度也够了。3.3 温度控制的核心梯形图逻辑温度控制是整个系统的关键它的逻辑框架可以这样描述当棚内温度高于上限比如28°C启动1#风机如果温度继续升高超过上限1°C启动2#风机同时卷帘电机上卷全开。当棚内温度回落到下限比如24°C关闭风机停止卷帘动作。当棚内温度低于下限比如10°C启动加温设备等温度升到15°C时停止。这里的关键设计是回差控制。为什么用回差如果只设定单一的上限28°C和下限24°C夏天风机启停会非常频繁对风机、接触器、电网都会产生冲击。用回差逻辑后风机就不会出现上去就开低了就关一开一关反复折腾的振荡现象。回差值一般取2-3°C具体根据大棚的保温性能来调。梯形图里实现回差很简单用比较指令配合置位/复位指令。我习惯用S/R指令而不是纯输出线圈因为S/R能记住之前的状态。也就是说温度升高到28°C时置位M0.0这个M0.0去驱动风机只有当温度降到24°C以下时才复位M0.0。中间段24-28°C风机状态保持原样不产生跳变。3.4 湿度控制与滴灌逻辑湿度控制逻辑我设计得相对简单一些因为它不需要像温度那样频繁动作。逻辑当湿度值低于设定的下限时比如低于40%RH打开滴灌电磁阀同时启动喷雾泵当湿度升到设定上限时比如60%RH关闭电磁阀和喷雾泵。这里同样用了回差控制防止电磁阀频繁启停损害寿命。育苗期不同阶段的湿度需求差异大播种到出苗期一般要求80%-90%幼苗期降到70%左右练苗期更低。所以我建议上位机留一个湿度设定值的输入框操作员按生长阶段调整。滴灌还有一个联动连续滴灌时间限制。我加了一个定时器T37如果滴灌电磁阀持续打开超过30分钟防止管道堵塞或传感器故障导致的误动作强制关闭电磁阀并触发报警提醒人工检查。3.5 梯形图里定时器与报警的实现S7-200的定时器分三种TON延时接通、TOF延时断开、TONR保持型延时。在这个项目里我用得最多的是TON。报警逻辑分两级一级报警温度超过上限3°C或低于下限-3°C触发报警电铃Q0.6同时组态王画面弹出报警条。这个级别属于严重报警需要人工处理。二级报警温度超过上限1°C或低于下限-1°C只在上位机报警界面显示不响铃。另外我加了一个报警确认按钮I0.3或组态王的一个内存变量按一下就可以消音保持报警状态直到故障排除。这个逻辑看似简单但很多新手做不出来——响铃之后如果不人工确认就一直响半夜能把人吵死又不敢直接关掉怕漏掉故障。设一个确认按钮就解决了。4. 组态王画面设计与通讯配置4.1 组态王下的设备连接配置组态王和S7-200之间走的是PPI协议。在组态王工程里配置设备时要选PLC→西门子→S7-200系列PPI这个驱动。配置要点通讯参数必须和PLC一致波特率9600、8位数据位、1位停止位、偶校验。S7-200的PPI口默认是9.6kbps如果你在Micro/WIN里改了组态王这边必须同步改。我的建议是先保持默认如果通讯量大再改187.5k。设备地址要和PLC站地址一致默认S7-200站地址是2组态王里设备地址写2。如果你接了两台PLC分别设站地址2和3。通讯线用PPI电缆国产的USB-PPI电缆几十块钱一条够用。注意别买那种只能编程下载不能组态通讯的简化版要问清楚是否支持组态王通讯。组态王的访问变量地址格式要写成[设备名]VW100这样的形式。比如PLC里把温度值存在VW100组态王变量地址就是[S7200]VW100。它是直接访问PLC的V寄存器的。4.2 组态王变量的三种类型与定义方法在组态王里定义变量我分成三类I/O实数变量用来显示温度和湿度数值对应PLC里的VW100温度和VW104湿度。注意PLC里存的是放大10倍的整数组态王这边要设置转换量程让显示值除以10。如果不想在组态王里做除法也可以在PLC里用浮点运算存成实数但S7-200处理浮点指令多一些实时性稍微差一点。我建议还是整数传输上位机转换。I/O整数变量用来显示风机、卷帘、电磁阀的开关状态对应Q0.0-Q0.6。组态王画面上的运行/停止状态就是靠读取这些位变量来变色显示的。组态王里可以按位读取地址写成[S7200]Q0.0数据类型选开关型位号写00代表最低位具体写法看驱动说明。I/O内存变量写用来下置设定值。比如PLC里的VW200存储温度上限设定值组态王画面上做一个输入框操作员填28点确定后就将28写入VW200。关键是要在PLC程序里用MOV_W指令把VW200的值读入到比较指令的操作数上。4.3 监控画面的布局设计与图库使用组态王的画面设计有个原则画面是给人看的不是给PLC看的。做画面要像做仪表盘一样把主要的运行信息放在最显眼的地方次要信息放角落。我的画面布局是这样的顶部标题育苗大棚温室监控系统加当前时间。中部左侧一个大棚示意图画上风机、卷帘、滴灌管道。用图库里的元件双击改属性绑定变量这样风机转动时图案会对应变色直观反映状态。中部右侧实时数据面板显示温度和湿度的数值用数字格式显示旁边加两个趋势棒图类似温度计效果一眼就能看出当前值是否正常。底部设定值输入区手自动切换按钮报警区。组态王的图库素材很多风机、管道、温室之类的都有。有的图库元件支持动画连接你绑定了变量后数值变化它就会动。说实话图库元件好看是好看但你得确认它支持你要的动画类型有些只是静态贴图没有动作绑定变量了也不动。4.4 历史趋势曲线与报表的配置历史曲线和数据报表是组态王相对有优势的地方不用写代码配置就能出活。历史趋势曲线在画面里插入历史趋势曲线控件设置数据源为温度和湿度两个变量时间范围选1小时或24小时。这样就能看温湿度变化过程特别适合分析大棚保温性能、判断风机控制是否合理。数据报表组态王提供报表向导可以生成日报表、月报表。我把温湿度每小时记录一次生成一个刚好包含24个数据的日报表打印出来贴在值班室墙上。如果你用的是组态王的正式版授权这个功能可以直接用如果用试用版报表可能带水印。还有一个实用功能是数据保存。组态王可以设置数据存储到本地数据库中我一般设置为每分钟一次。这样事后追溯问题很方便比如你说前天半夜温度突降我导一下历史数据立刻就能定位。5. 常见问题与排查技巧实录5.1 组态王与PLC通讯失败的排查这是做得最多、最让人头疼的问题。组态王上显示通讯失败或者变量显示####大多数情况不是设备坏了而是参数没对上。我的排查顺序是这样的先检查通讯线连接和USB转串口驱动。国产USB-PPI线有兼容性问题有的需要装驱动才能被系统识别。打开设备管理器看COM口号是多少组态王里也要选对COM口。检查PPI电缆上有没有拨码开关。有些型号支持PPI和Freeport模式切换如果拨到了Freeport组态王是连不上的。拨回PPI断电重插。检查波特率。Micro/WIN里和组态王里必须一致。经常出现的情况是你用Micro/WIN下载时软件自动改了PLC的波特率而组态王里还默认9600结果一个9600一个19200怎么都连不上。检查PLC是否处于RUN状态。如果PLC在STOP状态PPI通讯虽然能通但有些驱动没法读取IO状态。检查组态王驱动是否被虚拟机或者杀毒软件拦截。组态王6.55在Windows 10上偶尔会有兼容性问题右键属性里选兼容模式-以Windows XP SP3方式运行能解决大部分奇怪问题。5.2 温湿度数据跳变和漂移的处理如果你发现组态王上显示的温度在正常值和乱跳的值之间来回晃大概率是模拟量信号受到了干扰。排查和处理手段用万用表直接在变送器输出端测mA值。如果万用表读数是稳定的说明变送器没问题是传输线路或PLC侧引入干扰。检查屏蔽层是否单端接地。这个问题我前面提示过是最大的干扰源。另外信号线不能和动力线走在同一根线管里回路面积大了感应电压也会增大。如果走线无法避免改用屏蔽双绞线。在程序里加滤波。S7-200的模拟量滤波默认是开启的但如果你设了模拟量滤波无那原始值跳得就很厉害。更好的做法是程序里做均值滤波连续读5次AIW0去掉最大最小值剩下3个求平均。这样处理后的数值非常平滑。漂移问题多出现在用了劣质变送器或温漂大的场合。判断方法拿一个冰水混合物0°C和沸水100°C做两点校准。如果变送器有调节电位器可以微调零点和满度。工业级的做法是PLC程序里做修正其实就是在换算公式里加一个偏移量。5.3 风机频繁启停和卷帘误动作的解决风机频繁启停这个问题根源就是回差设置不合理。你如果设了上升28°C启动风机、下降27.5°C停止风机大棚里温度分布不均传感器感受到的温度会在28上下波动风机就会一会开一会关。设置2-3°C的回差是起步如果你的大棚密闭性好、保温性强回差设到4°C也可以。卷帘误动作的原因大概率是上限位和下限位开关的信号不稳定。限位开关是机械触点风吹日晒久了触点会氧化电阻变大PLC误判为无信号。建议在水磁感应限位开关上并联一个RC滤波器或者在梯形图里加一个延时确认逻辑就像按键消抖一样信号持续200ms以上才算有效。这样即使有瞬时干扰也能滤掉。5.4 组态王运行时的几个小毛病组态王运行系统在实际使用中的一些小问题我挑典型的说一下。第一个是运行系统启动不了报加密锁找不到。如果你用的是正版加密锁检查USB口接触如果用的是破解版或评估版这个问题经常是系统时钟问题组态王对时间校验很敏感你改了系统时间到安装日期之前它就罢工。调回来就行。第二个是画面文字变成方块。绝大多数是字体问题。组态王模板默认字体在中文系统下如果没选中文容易出现乱码。解决办法是选中所有文字框统一改成宋体或微软雅黑。第三个是画面运行时CPU占用率居高不下。一般是历史趋势曲线刷新太频繁或者画面里动画连接太多。可以降低数据采样频率减少不必要的动画连接。这个对大棚监控影响不大但如果你的上位机是很老旧的电脑还是注意一下。6. 从这套系统延伸出去的个人体会项目做完了整套系统运行了一年多我的感受是育苗大棚控制这个项目技术上限不高但它教会了你一个完整的自动化项目流程——从需求分析、IO分配、硬件接线、PLC编程、上位机组态到现场调试。这个流程的价值远大于单个指令的掌握你把这个流程跑通了以后再做电机控制、温度控制、流量控制之类的项目无非是换传感器和执行器而已。有个细节值得分享现场调试时一定要带一个小笔记本把每一次调整的参数都记下来尤其是回差值、启停延时、设定范围这些。因为在现场试的时候你会觉得自己记住了但几天后改其他参数时就会混淆。农业现场值班人员的操作习惯和你的习惯可能不一样把参数记录表贴在控制柜门上让现场人员也知道怎么调比什么都管用。另一个建议是如果你后续想在这个基础上做扩展比较值得做的是接入气象站数据。棚内的控制加上棚外的光照、风速、雨量可以让控制策略更智能——比如风速大于一定值就自动关闭卷帘防止被掀翻夜晚和阴雨天自动补光。S7-200的224XP本身支持两路模拟量输入外加一个EN01通讯扩展模块做以太网或Modbus主站就能把气象站的数据接进来。这些逻辑实现起来和现有的温控逻辑大同小异关键还是做好输入输出规划。做这套系统的过程有一个每次回想都觉得值当的做法我在组态王上做了一个手动调试页面。正常情况下系统是自动运行的但调试时切换到手动模式在画面上逐个按钮控制风机、卷帘、电磁阀启停。这样调接线、查执行器一个人就能搞定不用跑配电柜前拿螺丝刀点端子。而且这个手动页面不仅调试用设备检修时也要用强烈建议你也做一个。
返回列表