ARTICLE DETAIL

资讯详情

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

组态王6.53与S7-200 SMART的大棚温湿度PLC控制与仿真

组态王6.53与S7-200 SMART的大棚温湿度PLC控制与仿真 接到这个项目的时候客户的需求其实很朴素大棚里的温度和湿度要控制在作物生长的舒适区间值班室能随时看到数据温度高了能自动开风机湿度低了能自动加湿出了问题最好能报警。但当我把方案一步步落到组态王6.53和PLC联动仿真这个层面时整个项目就不再是简单的配电箱改造而是一套完整的采集、控制、监控、调试闭环。这篇文章就把这套系统从需求分析、硬件选型、PLC程序、PID整定到组态王画面组态和联合仿真的完整过程写清楚适合正在做农业自动化项目、搞PLC毕业设计或者想入门组态软件的同行参考。1. 项目整体设计与思路拆解1.1 大棚温湿控制的真正需求是什么先说需求分析因为很多初学者一上来就写梯形图、画画面结果现场的作物适应性、控制死区、设备动作频率这些问题全没考虑交付后天天被农场主叫去调。大棚温湿度控制的本质不是把温度稳定在25度这种单一目标而是一个多工况、多设备的协调问题。夏天棚内温度可能到45度以上必须依靠风机、湿帘或者开棚通风降温冬天晚上温度可能掉到5度以下又需要热风炉、电加热甚至热水循环来加温。湿度也一样北方大棚冬天密闭保温时湿度很容易飙到95%以上容易诱发灰霉病这时候要通风降湿反过来夏季高温干热风一刮湿度能掉到30%以下又需要启动喷雾或者滴灌加湿。所以我设计时第一步不是写程序而是把控制需求整理成一张工况表每种工况对应哪几个设备、动作的优先级是什么、是否需要死区保护。这一步直接决定后面的PLC程序结构。比如加温和加湿同时需要时必须先保证温度因为低温对作物的伤害通常是不可逆的而湿度稍微低一点可能只是生长放缓。1.2 系统架构与通讯方案选型系统整体分成三层。最底下是现场设备层温湿度传感器、风机、湿帘水泵、热风炉、加湿器、卷膜电机中间是控制层也就是PLC负责采集模拟量、运行逻辑控制、执行PID最上面是监控层用组态王6.53做上位机负责显示实时数据、历史曲线、报警记录和操作按钮。PLC和组态王之间的通讯我这次选的是Modbus TCP。原因很实际组态王对西门子S7 TCP协议支持也很稳但Modbus TCP在跨品牌、跨版本时更通用而且调试时用网口直连点击测试马上能看到通讯状态排查问题直观。如果以后客户要接MES系统或者数据库Modbus TCP转OPC UA也比较顺畅不会把自己锁死在某一家协议上。这里要给新手一个建议不要一上来就追求高大上的协议。现场环境是网线、交换机、工控机Modbus TCP的稳定程度已经足够而且组态王侧配置非常简单。1.3 为什么选用组态王6.53做上位监控组态王6.53是北京亚控十几年前的产品了按说早该被淘汰但我去很多学校、农企和中小型项目现场看发现它依然是主力。原因很简单稳定、轻量、教程多、驱动文件齐全。农业大棚这种项目上位机不需要多炫酷的3D效果要的是数据准、操作简单、能存历史曲线、能出报表这些组态王6.53都能干得漂亮。选它还有一个更私人的理由就是仿真调试的便利性。组态王的仿真PLC驱动可以在没有真实PLC的情况下先在电脑上把画面、动画、报警逻辑全部跑通。这对于项目前期给客户演示、或者学生做课程设计价值非常大。你可以在完全裸奔的环境里把90%的上位机工作做完最后去现场只是改一下设备地址而已。当然它的坑也得提老版本运行时对Windows 10以上的系统兼容性一般最好用管理员权限启动或者装个Win7虚拟机。画面字体有时会发虚也要单独设置兼容模式。2. 硬件选型与组态配置2.1 PLC选型S7-200 SMART与FX3U对比PLC选型我做了一张对比表来辅助决策这也是每次跟客户沟通方案时最直观的材料。对比项西门子 S7-200 SMART三菱 FX3U模拟量扩展有EM AM06等模块4-20mA信号直接支持需要FX3U-4AD模块同样支持通讯能力自带网口Modbus TCP方便默认串口要加网口模块才能走以太网掉电保持V区默认保持不用额外设置D区普通寄存器不保持需在PLC参数中设置锁存范围编程软件STEP 7-MicroWIN SMARTGX Works2 / GX Developer适合场景中小型自动化、上位机联动小型单机设备、改造项目这次项目我推荐的是S7-200 SMART。除了网口通讯方便最重要的原因就是V区默认掉电保持。大棚控制系统的设定值、PID参数这些关键数据我不希望断电一次就要重新输一遍用SMART几乎不用额外考虑这个问题。输入输出点数按这个来估算温度传感器2路、湿度传感器2路共4路模拟量输入数字量输出有风机、湿帘泵、加热炉、加湿器、卷膜电机两个方向再加上报警灯留一点余量CPU选SR40型配一个EM AM06模拟量模块IO点完全够用。2.2 温湿度传感器选型与信号映射传感器是整套系统的眼睛选型上我坚持用4~20mA输出的二线制变送器。为什么不用0~10V因为大棚现场线路远电压信号容易在长距离传输时衰减而且工业现场干扰比较多电流环抗干扰能力明显更好。量程选的是温度0到50摄氏度湿度0到100%RH。这个量程覆盖了大多数大棚作物的生长范围还留了足够的超量程空间。信号到PLC之后要做换算。S7-200 SMART的模拟量模块采集4mA时对应数值是553020mA时对应27648量程是0到27648。所以工程量百分比的换算公式是工程量实际值 量程下限 (AIW原始值 - 5530) / (27648 - 5530) × 量程跨度。这里有一个初学者特别容易犯的错就是把5530当成了0。很多资料会简化说AIW0对应0到27648但实际上这是0~20mA的对应关系4mA才是标准下限。如果你直接用0到27648去算4~20mA信号湿度在40%RH时算出来会偏低10个百分点左右现场反馈就是数据不对但我说不上哪里不对。这种坑往往要等到拿万用表和手持温湿度计对数据时才能揪出来。2.3 D0-D8断电保持与PLC参数设置既然标题里提到了PLC的断电保持问题这里必须单独讲透。三菱FX3U的D0到D8属于普通寄存器出厂默认断电不保持。大棚项目里如果把温度设定值存在D0一旦系统断电上电后D0回零就等于把控制目标丢掉非常危险。解决办法是在GX Works2里打开PLC参数进入软元件选项卡找到锁存设置把需要保持的区域起始地址和结束地址填进去。比如把D0到D9设置为锁存以后这些寄存器就具备掉电保持功能了。要注意的是设置保持区域后PLC程序里如果用这些寄存器做普通临时计算要格外小心残留数据影响逻辑建议计算类变量用不保持的寄存器设定值类变量才用保持区。西门子S7-200 SMART在这个问题上就省心得多V存储区默认就是掉电保持的不需要任何额外参数设置。这也是我在这类农业项目中主推SMART的原因之一少一个配置步骤就少一个出错点。3. PLC控制程序实现与PID整定3.1 控制逻辑的拆解降温、加温、加湿、除湿PLC程序我习惯按功能块组织而不是一长串梯形图堆到底。这次核心逻辑分成四个模块温度控制模块、湿度控制模块、设备联动与保护模块、报警模块。温度控制模块的思路是温度低于下限启动加热设备温度高于上限启动风机和湿帘泵位于死区范围内所有设备保持当前状态。死区必须存在否则风机会在边界值附近反复启停继电器和接触器几天就烧了。湿度控制模块逻辑类似湿度低于下限时启动喷雾加湿高于上限时启动除湿风机。但这里要加一个优先级判断如果棚内同时处于低温高湿状态通常作物正在经历低温高湿胁迫这种时候先执行温度加热策略因为升温本身就会降低相对湿度避免了又加热又开排风机这种对着干的操作。设备联动与保护模块要考虑的还是安全性。热风炉启动前必须确认风机在运转否则热量憋在炉膛里会发生安全事故湿帘泵启动前要检测水箱液位信号没水时严禁空转。这部分如果写成梯形图建议使用置位复位方式而不是单纯的自锁保停。为什么因为大棚设备一旦开启往往需要保持一段时间置位复位逻辑在后续组态王远程操作和PLC本地操作之间切换时更不容易打架。3.2 PID控制在温湿度上的应用与参数整定温湿度控制要不要上PID取决于设备类型。风机、水泵这类开关型设备用带死区的滞环控制就够这也是大棚行业的主流做法。但如果加热设备是燃气热风炉或者电加热管存在明显的滞后和大惯性纯开关控制会让温度一会儿冲到35度一会儿掉到18度这时候就必须用PID。S7-200 SMART的PID功能建议用编程向导配置。设定回路号为0给定值用实数百分比表示温度设定25度对应50%。PID参数方面我这个项目实测下来的初始值供参考温度回路比例增益2.8积分时间600秒微分时间0秒湿度回路比例增益3.5积分时间300秒微分时间10秒以内。PID波动大是高频问题很多人一上来就调P发现越调越震荡。我的排查顺序是先看采样和输出周期是否匹配再看积分饱和最后才动P和D。温度采样周期设在1秒左右输出控制周期至少保持3到5秒一次让执行机构有响应时间。积分饱和问题通常表现为温度已经超调很多PID输出还停在100%这是积分累积过深解决办法是限制PID输出上限并且启用积分分离功能偏差大于死区时暂停积分。其实这也是为什么开头提到的热搜词里有plc温度pid波动温差大如何调节会被搜爆因为这个问题几乎每个做温度控制的人都会遇到。现场调试我习惯用先P后I再D的路子先把积分微分全部关掉只留比例让输出在设定值附近形成等幅振荡记下临界比例增益和振荡周期再去算合适的P、I、D。虽然理论上能算出参数但现场总会受风道、传感器位置影响所以最终参数还是要微调。3.3 梯形图实现要点与程序片段模拟量换算我习惯用STL助记符来写方便复制修改。这里给一段示意程序注意实际使用时要按你自己的寄存器地址对应调整。Network 1 // 温度通道AIW0换算为工程量结果存VD100 LD SM0.0 ITD AIW0, AC0 DTR AC0, VD100 -R 5530.0, VD100 MOVR VD100, VD104 /R 22118.0, VD104 *R 100.0, VD104 MOVR VD104, VD100这段程序的意思是把AIW0的整数转换实数后减去5530除以22118也就是27648减5530的差值再乘以100得到百分比工程量。湿度通道换成AIW2结果存VD110逻辑完全一样。PID调用部分S7-200 SMART用PID向导生成子程序后在主程序中这样调用Network 2 // 温度PID计算每1秒执行一次 LD SM0.5 CALL PID0_INIT这里的调用条件是SM0.5的1秒时钟脉冲也就是每秒运算一次。给定值存在VD208反馈值从VD100读取输出值存VD204。输出送到模拟量输出模块经外部设备转换为4~20mA信号去控制加热炉阀门开度。设备联动逻辑用梯形图写最直观。风机启动的示意见下面这段简化描述温度高于上限或者湿度高于上限同时不在手动模式则置位风机输出当温度低于下限且湿度低于上限时复位风机输出。置位复位之间要加互锁时间防止输出抖动。4. 组态王6.53画面组态与仿真调试4.1 创建工程与设备驱动配置组态王6.53的工程管理器和Windows资源管理器类似新建工程后双击进入开发系统。第一步不是画画面而是配置设备驱动。在工程浏览器左侧选择设备双击新建设备驱动列表里选S7-200 TCP或者更通用的MODBUS TCP这里我选的是后者。设备地址要填PLC的IP地址默认端口为502。填完点击测试组态王会弹出一个通讯测试对话框如果显示通讯成功剩下的就是采集频率、超时时间等细节。采集周期我一般设300到500毫秒太快了会增加PLC通讯负载太慢了画面会感觉卡顿。这里有个老版本组态王6.53的坑驱动配置完成后新加的变量经常需要重新保存工程并等几秒才能正常刷新数据。我习惯每次改完配置回到工程浏览器保存一次再进运行系统看效果。4.2 数据词典变量关联与报警设置数据词典是组态王6.53连接PLC的桥。这里定义的变量名要尽量和电气图纸一致比如温度当前值就叫Temperature_NOW设定值叫Temperature_SET后续写命令语言时不容易糊涂。变量类型选择I/O型实数连接设备选刚才配置的MODBUS驱动寄存器地址要按Modbus映射表填。比如PLC里的VD100浮点数在组态王里不能直接按浮点去读因为Modbus寄存器是16位的浮点需要两个连续寄存器拼起来组态王选择Float类型后地址填起始寄存器号它会自动连续读两个寄存器。报警功能一定要在变量里提前配好。温度变量设置高报、高高报两个阈值比如35度和40度湿度变量设置低报阈值40%这样就算没人盯着屏幕报警窗口和声音提示也能把值班人员喊过来。这个环节我建议顺便把历史趋势曲线的记录属性打开。组态王的数据记录可以按变化率记录或者定时记录温度和湿度这种缓变量我选择定时1秒记录曲线画出来既能看趋势也能作为项目验收时的数据凭证。4.3 画面绘制与动画连接画面上我没有堆花哨的元件只做了三个区域左侧是温湿度实时数据显示中间是一个大棚侧视图上面有风机、湿帘、加热炉的图标下面是一排操作按钮和状态指示灯右侧是历史趋势曲线和报警信息窗口。动画连接是最有意思的部分。选中风机图标在动画连接对话框里选择隐含或者填充属性关联到PLC输出状态变量Fan_Run。当PLC输出为1时风机图标显示旋转状态或变成高亮颜色为0时恢复灰色。温度显示采用模拟值输出连接这样画面上的数字会随着PLC数据实时跳动。操作按钮要绑定组态王命令语言双击手动启动风机按钮写入一段数据改变命令语言把变量Fan_Manual置1同时把Auto_Manual_Mode切换到手动。这段逻辑不难但一定要记住上位机只发指令真正的安全互锁在PLC里不能靠组态王脚本去保护设备。4.4 仿真运行与联合调试很多人以为仿真必须有PLC其实组态王6.53自带仿真PLC设备。在新建设备时驱动库里选择仿真PLC这时候数据词典的变量就不再绑定真实寄存器而是由组态王内部生成模拟数据。配合用户的按键操作或者脚本赋值画面、报警、曲线全部能跑起来。项目现场没有PLC的时候我就用这种方式把上位机所有功能先演示给客户看比拿PPT讲半天高效多了。具体操作流程是这样先开发好画面和变量点击文件菜单里的切换到运行系统组态王会自动运行当前工程。如果是仿真模式开发系统里还能打开仿真环境窗口手动给变量赋值相当于转动仪表盘模拟现场传感器信号变化。联合调试时先用网线把PLC和工控机连到同一个交换机上确认IP在同一网段。再把组态王设备驱动切换为真实PLC的Modbus TCP运行系统后观察数据词典里的通讯状态变量如果是1就说明通讯正常。这时候我习惯给传感器一个已知的稳定环境比如用手捂住温度探头看画面数值是不是平滑上升这一步能快速验证从传感器到PLC再到组态王的整条链路。5. 常见问题与排查技巧实录5.1 组态王与PLC通讯失败的排查这类问题我遇到太多了直接整理成清单供你对照排查。现象排查方向处理方法组态王变量显示通讯失败网段和IP确认PLC与工控机IP在同一网段用ping命令测试连通性设备状态为0但有网线指示灯驱动选择确认选的是Modbus TCP而不是Modbus串口或S7 TCP驱动不匹配刚启动正常几分钟后断开采集周期把采集周期调大到300ms以上降低通讯负载偶尔断线且重连不上PLC编程口占用确保PLC编程软件关闭组态王单独占用通讯链路如果排查到这里还不行就在组态王开发系统里查看设备通讯状态记录双击变量可以看具体错误码再查设备手册定位。这个思路比瞎猜快得多。5.2 PID波动大参数整定与抗干扰先说一个现场常见场景客户打电话说温度曲线一直在设定点附近上下乱跳波动幅度甚至能达到5度。我以为PID参数有问题跑过去一看温度传感器就挂在热风炉出风口旁边风一吹温度忽高忽低属于典型的采样失真。解决步骤其实是三步第一步把传感器移到大棚中部、离出风口3米以上、避开直射强光的位置。第二步在PLC里对AIW采样值做数字滤波比如连续采样4次去掉最大最小值取平均。第三步按之前说的临界比例法重新整定PID参数先把微分关掉只调比例和积分让曲线稳定下来。还有一个非常值得说的细节PID输出上限要限制。很多人PID输出直接给模拟量模块结果阀门全开全关来回猛切振幅比不调节还大。把输出限制在30%到80%让执行机构的动作变得柔和系统自然就稳了。5.3 仿真和实际运行差距在哪仿真不是神仙工具它最大的局限在于没有真实的物理滞后。PLC仿真器不知道热风炉的热惯性有多大不知道湿帘水分蒸发需要多长时间所以你在电脑上整定出来的PID参数到现场基本都要重新调一轮。我之前犯过的错是过分相信仿真结果以为参数直接拷过去就行。实际是送电后温度超调了8度现场人被吓得够呛。后来我调整了工作方法仿真阶段只验证逻辑正确性和画面联动参数到现场按照先开环测试响应速度再闭环整定的流程来。开着加热炉不投PID观察温度从常温升到设定值用的时间基本能知道系统的惯性时间常数这对初定PID参数非常有用。5.4 现场调试避坑清单最后分享一份按血泪教训换来的避坑清单每条都是我或者朋友在类似项目里真实踩过的。线缆方面模拟量信号线必须用屏蔽双绞线而且屏蔽层要在PLC侧单端接地不要把屏蔽层两头都接现场接地电位差会让干扰变得更严重。传感器供电和PLC供电尽量分开不要从一个开关电源的同一个端子取电否则电机启动瞬间的电压跌落会直接影响采样精度。程序方面设备输出之间加上互锁时间用定时器做至少2秒的延时保护防止逻辑切换时瞬间短路或机械反转冲击。热风炉的风机联锁逻辑必须做到风机不转时加热输出强制为0这是安全底线不能省。组态王方面定期用工程浏览器的备份功能把工程文件打包归档。我见过太多因为误操作把画面删掉而不得不重做一星期的情况。还有凡是做了动画连接或者脚本修改务必退出运行系统再保存否则下次启动经常出现变量不存在的诡异报错。我个人在实际操作中的体会是大棚温湿控制系统这种项目技术难度不算顶尖但非常考验从业者的系统思维。PLC程序、组态画面、传感器布置、通讯配置、PID整定每一环单独拿出来都不难难的是让它们在一起稳定运行。仿真帮了大忙它让我在去现场以前就消灭掉大半的逻辑错误但现场调试依然是整个项目最耗时也最涨经验的部分。最后再分享一个小技巧把第一次现场调试时的整定过程完整记下来包括当时的天气、传感器位置、设备状态、参数变化这些记录在下一次做类似项目时就是最宝贵的参考依据。
返回列表