资讯动态

基于S7-200 PLC与组态王的养殖场环境测控系统设计与实现

发布时间:2026/10/5 15:56:41 来源:尧图企业网站定制
前阵子帮朋友改造他家的养鸡场一进门就闻到一股刺鼻的氨气味温度计显示舍内已经32度。风机是工人凭感觉开的白天热了开两台晚上凉快了又全关鸡群蔫蔫的产蛋率明显往下掉。这个问题其实很典型养殖场环境控制的痛处不在于设备贵不贵而在于没人能24小时盯着温湿度和空气质量更没有人能做到根据设定值自动启停风机、加热器和报警设备。后来我用了西门子S7-200 PLC加上组态王KingView搭了一套养殖场测控系统把温度、湿度、氨气浓度这几个关键参数全部接到PLC里再由组态王做上位机画面负责实时显示、历史曲线、报警记录和手动远程操作。整套系统成本不高逻辑可靠调试完朋友看了直说“比人靠谱”。这篇内容不是教科书式的原理堆砌而是把这套系统从接线图原理图、梯形图程序解释到组态王画面组态的完整过程捋一遍尤其适合正在做PLC毕业设计、养殖场自动化改造或者准备用组态王做项目的人参考。1. 这套养殖场测控系统到底在测什么、控什么1.1 控制对象与测点清单先别急着画图任何自动化项目第一步都是把“需求”翻译成“输入输出点”。养殖场测控看起来花哨剥开来就三类东西环境参数、执行设备、报警装置。我这次做的项目主要监控四个参数温度、湿度、氨气浓度、光照度控制端对应风机、加热器、湿帘水泵、照明灯和声光报警器。测点清单和控制对象可以用一张表列清楚类型测点/设备传感器或执行器PLC地址量程/说明模拟量输入舍内温度4-20mA温度变送器0~50℃AIW0通过EM231模块接入模拟量输入舍内湿度4-20mA湿度变送器0~100%RHAIW2通过EM231模块接入模拟量输入氨气浓度4-20mA氨气传感器0~100ppmAIW4通过EM231模块接入开关量输入启动按钮自复位按钮I0.0手动启动系统开关量输入停止按钮自复位按钮I0.1手动停止系统开关量输入手动/自动切换旋钮开关I0.2打到自动时PLC接管开关量输入风机过载反馈热继电器辅助触点I0.3常闭点接入开关量输入加热器过载反馈热继电器辅助触点I0.4常闭点接入开关量输出风机1接触器交流接触器线圈Q0.0控制主排风机开关量输出加热器接触器交流接触器线圈Q0.1控制电加热器开关量输出湿帘水泵接触器交流接触器线圈Q0.2控制降温水泵开关量输出照明灯中间继电器Q0.3定时/手动照明开关量输出声光报警器继电器驱动Q0.4超限报警实际项目里还可以加光照传感器、风速传感器甚至二氧化碳传感器但道理都一样模拟量输入负责采集数字量输出负责控制数字量输入负责把现场设备状态和按钮信号收回来。这里的S7-200选的是CPU224XP自带14个DI/10个DO、2路AI/1路AO但因为温湿度和氨气一共三路模拟量CPU自带AI不够就扩展了一块EM231模拟量模块。如果你手头是CPU224不带XP版本那模拟量通道更少扩展模块基本是必须的。1.2 为什么选S7-200和组态王而不是触摸屏或单片机现在很多人一上来就推触摸屏HMI或者干脆用单片机但养殖场这个场景S7-200加组态王是性价比很稳的组合。先说PLC单片机或Arduino确实便宜但现场环境粉尘大、湿度高、电压波动单片机控制板一旦复位就全乱了没有看门狗和工业级隔离工人也不敢用。而S7-200虽然已经停产多年但二手市场量很大CPU224 XP几百块就能拿到手用十多年完全没问题高校里学PLC用的也是这套技术资料满天飞。再说组态王。很多人觉得触摸屏就够了但触摸屏适合单台设备就近操作养殖场管理房离鸡舍往往有几十上百米你总不能每次蹲在设备旁边看数据。组态王装在办公室电脑上通过PPI或者以太网把PLC数据拉上来画面里可以同时看到几栋鸡舍的温湿度趋势曲线、历史报表、报警记录还能做权限管理这些触摸屏做起来费劲组态王却是一天就能搭出来的事。而且组态王对S7-200的支持非常成熟你搜“组态王6.60 sp4”就能找到大量的驱动说明和案例官方也提供物联网网关之类的方案以后想上云也方便。这套组合的逻辑关系其实很清晰PLC管现场逻辑组态王管人机交互。PLC即使断开组态王照样能独立运行组态王即使关机PLC的自动控制也不受影响。对养殖场来说稳定永远大于花哨这种“上下位机各干各的”架构正是最合适的。1.3 系统信号流向与运行模式整套系统信号流向可以这样理解传感器把物理量变成4-20mA电流信号EM231模块把电流值转成PLC内部的数字量0~32000PLC通过梯形图程序做比较和运算输出结果到Q点再由继电器/接触器驱动风机、加热器这些设备。组态王作为上位机通过串口或网口周期性读取PLC的V区或M区数据把温度值、设备启停状态显示在画面上操作员也能从组态王画面写数据到PLC的V区实现远程手动控制。运行模式我当时设计了两种手动模式和自动模式用I0.2旋钮切换。手动模式下组态王画面上的“开风机”“开加热器”按钮直接置位PLC的M点PLC据此驱动Q输出方便检修和设备测试。自动模式下按钮失效环境参数由PLC内部逻辑决定。报警在任何模式下都生效温度超过上限或氨气浓度超标Q0.4会直接驱动声光报警器这是不管你在自动还是手动的保底逻辑。2. 从图纸到实物接线图原理图拆解与I/O分配2.1 硬件模块选型与清单确定好需求后就是采购和接线。这套系统的核心硬件不复杂但每个东西的型号和用途要提前定死否则现场会乱成一锅粥。我当时列的清单大概是这样的PLC CPU西门子S7-200 CPU224XPDC/DC/DC版本工作电源24V DC模拟量扩展模块EM2314路模拟量输入0~20mA/4~20mA可选通过扁平排线挂在CPU右侧编程电缆USB-PPI编程电缆既要下载程序也要和组态王通信温度变送器PT100探头配温度变送器输出4-20mA量程0~50℃防护等级要IP65以上湿度变送器壁挂式输出4-20mA量程0~100%RH氨气传感器电化学式输出4-20mA量程0~100ppm这类传感器一定要买带标定证书的中间继电器24V DC线圈带LED指示灯用来隔离PLC输出点和接触器线圈交流接触器根据风机电机功率选我用的三相接触器线圈220V AC热继电器保护风机电机过载常闭辅助触点接入PLC的I0.3/I0.4开关电源明纬24V/5A给PLC和变送器供电声光报警器24V DC带蜂鸣器和旋转灯组态王上位机普通工控机或二手商用机Windows系统组态王6.60 sp4。你可能注意到CPU224XP自带的是24V DC电源型为什么不选220V AC供电的因为养殖场环境电压波动大220V供电的PLC电源模块容易受干扰用单独的开关电源给PLC供24V DC电源质量更可控而且传感器通常也是24V供电方便统一。当然开关电源的功率必须留足余量别抠门至少留30%的余量给后续扩展。2.2 端子接线表与原理图要点图纸这东西画的时候觉得多余现场接线和后期排查故障时才知道多重要。我这里把关键的端子接线关系列出来你拿着可以对照着画自己的接线图。电源回路方面220V AC进线先经过一个带保险丝的断路器然后分成两路一路接24V开关电源的一次侧另一路去接触器主触点。开关电源24V正极接到PLC的L端子负极接到M端子同时给变送器供电。注意PLC的传感器电源M端子和开关电源M端子必须共地否则模拟量信号会飘。EM231模块的供电从PLC的24V传感器电源引出但电流不够时不要让EM231和多个传感器共用同一个24V电源端口建议用端子排分配。模拟量输入回路温度变送器、湿度变送器、氨气传感器的电流输出正极分别接到EM231的A和B等通道输入端子负极接模块的A-和B-或者说公共端。这里有个常见坑很多两线制变送器的“负极”既是信号负极又是供电负极你不能直接把电源正极接到传感器再让负极进PLC需要看变送器是两线制还是四线制。两线制变送器接线是电源24V正极接变送器红色线变送器信号输出线接PLC模块输入端四线制变送器则是传感器独立供电输出信号线只接PLC。我建议优先选两线制省线、抗干扰也不差。开关量输入回路I0.0、I0.1、I0.2接的是普通按钮和旋钮一端接PLC的24V传感器电源正另一端接对应输入端子PLC输入内部自带公共端和LED指示。I0.3、I0.4的热继电器辅助触点属于无源干接点接线方式一样把常闭触点串联到输入回路里一旦过载脱扣PLC就能收到信号。开关量输出回路PLC的Q0.0/Q0.1/Q0.2/Q0.3/Q0.4输出端接到中间继电器线圈的正极线圈负极接PLC的M点中间继电器触点再控制接触器线圈。为什么要隔一层中间继电器因为PLC的晶体管输出本身只能带很小的直流负载直接接220V交流接触器线圈既不安全也不耐用而且接触器吸合瞬间的反电动势很容易把PLC输出点打坏。加上中间继电器后PLC只管弱电强电交给接触器隔离和寿命问题都解决了。接触器主回路接触器主触点串联风机电机或加热器的三相电源热继电器串在电机主回路里。风机和加热器最好分在不同接触器并且加热器回路里还要加一个独立的空气开关方便检修断电。原理图里还必须画清楚保护环节总断路器、各支路熔断器或空气开关、热继电器、急停按钮串联在PLC输入回路或输出回路中。我习惯把“急停”做成硬件回路控制的按下去直接切断接触器线圈电源而不是只给PLC一个信号让程序去处理因为程序处理有扫描周期延时硬件切断才是秒断。这道防线在养殖场这种有粉尘、潮湿的环境里非常有必要。2.3 电源与接地设计里最容易犯的错电源和接地是现场干扰的根源也是很多初学者最容易翻车的地方。我这次就踩过一个大坑一开始变送器的屏蔽线没有在PLC侧单端接地结果温度值在正常范围内上下乱跳最多能跳两三度风机启停像抽风一样。正确的做法有几点模拟量信号线必须用屏蔽双绞线屏蔽层在PLC侧单端接地另一端悬空。不要两头同时接地否则会形成地环路干扰更大。24V开关电源的负极M最好和系统的保护地PE通过电容或者直接短接让电源有个稳定的参考地。但要注意如果现场有其他设备也接了PE可能存在电位差建议先用万用表量一下对地电压再做决定。PLC和组态王上位机的通信线USB-PPI尽量走远离动力电缆的路径不要和风机电源线捆在一个线槽里。如果现场干扰实在压不住模拟量信号可以在EM231前加一个信号隔离器几百块钱能把传感器和PLC之间完全电气隔离之后信号稳如老狗。这些内容在接线图原理图上都应该标注出来别只画一条信号线写上“屏蔽层单端接地”才是合格的图纸。3. 梯形图程序逐段注释S7-200控制逻辑的灵魂3.1 编程前的准备符号表、数据块、扫描周期理解硬件接好后就是编程环节。我当时使用Step7 Micro/WIN软件写程序S7-200的编程语言是梯形图LAD和指令表STL。很多人喜欢直接拖触点不看符号表但项目一长你会发现复位软件工程根本找不着北。所以第一步就把符号表填好绝对地址对应什么符号。比如I0.0叫“启动按钮”M0.0叫“自动运行标志”VW100叫“温度工程量值×10”这样看梯形图就像看中文说明。另外要理解PLC的扫描周期。S7-200是循环扫描程序读输入、执行程序、写输出。组态王读取的V区数据和现场状态之间存在一个扫描周期级别的刷新延迟通常几十毫秒用户完全感知不到但你在编程时要注意不要在触摸屏或组态王的按钮上按一下“启动”就期望当前扫描周期立刻看到状态变化按钮信号经过输入映像区刷新、程序执行、再输出至少要等两个扫描周期。调试时用你自己的耐心去适应这个节奏否则会觉得PLC“反应慢”。3.2 核心程序段逐条解释启保停、温度滞回、定时轮询、报警下面我按网络Network顺序把程序的核心逻辑写出来并加上注释。S7-200梯形图说白了就是串联是“与”、并联是“或”线圈是输出。我们用指令表写看起来更紧凑逻辑一目了然。网络1系统启停保持回路LD I0.0 // 启动按钮按下 O M0.0 // 或者运行标志已经为ON AN I0.1 // 且停止按钮没有被按下常闭 M0.0 // 输出运行标志这段就是标准的“起保停”电路。I0.0是启动按钮按下后M0.0置位并自锁I0.1是停止按钮按下后断开回路M0.0复位。M0.0是整个系统的运行总开关后面所有控制逻辑都先跟它串联系统不运行所有设备都不许动。网络2模拟量滤波并转换为工程量值×10这里用里一个循环采样加平均滤波的思路。S7-200中有定时中断或定时器我采用定时器每2秒触发一次做累加平均。为了简化假设已经用浮点运算指令算出温度值的整数部分和小数部分并存在VW100里表示“实际温度×10”。比如32.5℃就存成325。LD SM0.0 // 每个扫描周期都执行 MOVW AIW0, VW200 // 读原始模拟量到VW200 -I 6400, VW200 // 减去4mA对应的数字量 ITD VW200, VD204 // 转换为双整数 DTR VD204, VD204 // 转换成浮点数 MOVR VD204, VD208 // 复制 *R 50.0, VD208 // 乘以量程0~50℃ /R 25600.0, VD208 // 除以数字量程 *R 10.0, VD208 // 放大10倍 ROUND VD208, VD212 // 四舍五入为整数 MOVW VD212, VW100 // 最终结果存VW100表示0.1℃这段是浮点运算初学者看得头大没关系你只要知道AIW0里的原始数字量是0~320004-20mA对应6400~32000温度范围0℃~50℃把“减去6400、除以25600、乘以50”就是温度值。为什么乘10再存因为S7-200的整数比较指令只能比较整数如果你直接比较浮点数太麻烦把温度放大十倍存成整数比较时直接把设定值也放大十倍就行。比如30℃就是30025℃就是250。网络3温度自动控制风机的滞回逻辑LDW VW100, 300 // 温度高于等于30.0℃ O M0.1 // 或者风机已经在运行 AN M0.2 // 且温度没有降到下限以下 AN M0.0 // 且系统总运行标志为OFF时禁止启动 M0.1 // 风机运行标志这段实现的是“滞回控制”不是普通的“高于开、低于关”。怎么理解呢如果单纯设成32℃开风机28℃关风机风机就会在临界点附近反复启停寿命短还费电。滞回控制给了一个死区温度升到30℃时启动风机然后要降到25℃才关风机。这样避免频繁翻转。上面这段M0.1是风机运行标志温度300时置位M0.1M0.2是“低温关风机”标志温度250时通过另一段网络复位M0.1。中间的电平差就是滞回区间。网络4加热器控制加热器同样做滞回温度低于10℃开高于15℃关。代码结构和风机相似只是比较值反过来。同时要加联锁风机和加热器不能同时开启否则一边吹风一边加热既费电又控制不了温度。所以加热器输出条件里要串联“风机未运行”的常闭点。LDW VW100, 100 // 温度低于等于10.0℃ O M0.3 // 或加热器已经在运行 AN M0.4 // 且温度没有高于上限 AN M0.1 // 且风机没有运行联锁 AN M0.0 // 且系统总运行标志 M0.3 // 加热器运行标志网络5氨气浓度报警LDW VW104, 800 // 氨气浓度放大10倍后80ppm M0.5 // 置位报警标志氨气传感器量程0~100ppm处理方式跟温度一样放大十倍后存在VW104里。超过80ppm必须报警并启动强排风机不管温度多少。所以报警段的联锁条件只有系统总运行标志不受温度和风机状态限制。网络6输出驱动把M0.1、M0.3、M0.5这些逻辑标志映射到物理输出点LD M0.1 // 风机运行标志 O M0.5 // 氨气报警时强制开启风机 AN I0.3 // 风机热继电器未过载 Q0.0 // 输出到风机接触器这里I0.3是热继电器常闭触点信号过载时断开PLC立刻停止输出。加热器输出则串联I0.4过载反馈和M0.1常闭点防止风机运行期间加热器启动。3.3 模拟量工程量换算为什么是6400和32000这个公式值得单独拿出来讲因为很多人栽在这里。S7-200模拟量模块默认把4-20mA映射成0~32000吗不对实际是0~32000对应0~20mA4mA对应的数字量是640020mA对应32000。所以你拿到的AIW0原始值在6400到32000之间对应你的量程低限到高限。通用换算公式是工程量 (AIW0 - 6400) × (量程上限 - 量程下限) ÷ (32000 - 6400) 量程下限。比如温度变送器量程是0~50℃那么温度 (AIW0 - 6400) × 50 ÷ 25600。如果变送器量程是-20~80℃那就用100作为量程差最后减去20。湿度传感器同理量程0~100%RH湿度 (AIW0 - 6400) × 100 ÷ 25600。组态王那边不需要你再做一次换算它可以直接把AIW0原始值读取上来在组态王里写个表达式转换。但更好的办法是让PLC把转换后的VW100存好组态王只读VW100这样即使以后换人维护也容易理解。3.4 手动/自动切换与故障联锁的编程方法前面提到I0.2是手动/自动切换。程序里我用了一个很常用的结构两个中间继电器M1.0代表“自动模式允许”M1.1代表“手动模式允许”。I0.2为ON时M1.0得电自动逻辑有效I0.2为OFF时M1.1得电手动逻辑有效。然后在Q0.0输出回路里把“自动风机信号”和“手动风机遥控信号”并联LD M1.0 // 自动模式 A M0.1 // 自动风机标志 O M1.1 // 手动模式 A M2.0 // 组态王手动开风机按钮 AN I0.3 // 过载保护 Q0.0这种写法比在组态王里直接写Q0.0要安全得多因为手动信号是组态王写到PLC的M区M2.0程序再统一判断过载、联锁等条件杜绝了组态王误操作直接驱动设备的可能。任何时候热继电器过载Q0.0都无条件断开。4. 组态王上位机把PLC数据变成监控画面和操作台4.1 组态王6.60 sp4工程创建与S7-200设备驱动配置PLC程序下载并脱机测试没问题后就轮到组态王上场。我用的是组态王6.60 sp4版本这个版本在Win7环境下兼容性还行你要是用Win10注意要右键“以管理员身份运行”安装否则授权和驱动会莫名其妙失效。新建工程的步骤不复杂打开组态王新建一个项目名称叫“某养殖场测控系统”然后进入开发系统。第一步配置设备也就是告诉组态王PLC在哪、怎么通信。在设备配置向导里选择“PLC设备”——“西门子S7-200系列”通信方式有PPI、MPI以及通过以太网模块的TCP方式。我用的是USB-PPI编程电缆所以选PPI。PPI设置里关键参数PLC站地址默认是2组态王作为主站地址设为0通信波特率要和PLC系统块里的设置一致通常是9600或187500。这里有个很多人忽略的点S7-200的通信波特率是在Micro/WIN的“系统块”里设置的下载到PLC后才生效。如果你在组态王里填了187500但PLC系统块实际是9600那永远连不上。统一为187500时要用支持高速PPI的编程电缆普通USB-PPI电缆走9600更稳。如果用的是CP243-1以太网模块那就选TCP协议填PLC的IP地址和端口号默认102。后者速度快但组态王杀毒软件或防火墙可能拦需要放行。4.2 数据词典映射I/Q/V/AIW变量怎么对应设备配好后要建数据词典。这是组态王的核心它决定了画面上的每一个数字对应PLC的哪个寄存器。我在数据词典里建的变量主要有这几类组态王变量名变量类型连接设备寄存器读写属性温度实际值I/O实数PLC1VW100只读湿度实际值I/O实数PLC1VW102只读氨气实际值I/O实数PLC1VW104只读风机状态I/O离散PLC1Q0.0只读加热器状态I/O离散PLC1Q0.1只读组态王开风机I/O离散PLC1M2.0读写组态王开加热器I/O离散PLC1M2.1读写这里要注意地址格式。组态王里访问S7-200 V区通常写V100就是指VB100如果你想访问VW100一个字有的版本要写成V100反正我当时翻了不少文档最终用的方式是在寄存器里选择“V”然后地址填100数据类型选“INT16位有符号”对应VW100。如果你要看M区位比如M2.0就在寄存器选“M”地址填20数据类型选Bit。Q0.0就选“Q”地址0数据类型Bit。多试几次组态王有“测试”按钮能实时读到数据就说明地址对了。一个非常容易踩的坑S7-200的AIW0在组态王里怎么读很多教程会告诉你用“AIW0”但我发现组态王6.60对AIW的地址支持有点怪最稳妥的办法是PLC程序里把AIW0滤波转换后的结果放到VW100上位机统一读V区。这样还能顺便规避模拟量模块类型不同导致的地址偏移问题。你只要记住上位机不是必须直连物理IOPLC已经把你要的数据搬运到V区了上位机读V区最简单。4.3 画面组态要点趋势曲线、报警、手动操作按钮、安全权限组态王的画面部分我做了三个主画面一个“监控总览”一个“趋势曲线”一个“报警记录”再加一个“参数设置”。监控总览画面我放了一个养殖舍的俯视示意图用图库里的风机、加热器、灯泡图形摆出大致位置画面中间放一个大的数字显示框绑定温度实际值变量并设置“数值量程变化时闪烁”。把PLC的Q0.0、Q0.1这些状态变量关联到风机图形的“填充属性”上风机运转时图形变色停止时灰色这样操作员扫一眼就知道设备状态。下面再做两排按钮“自动模式指示灯”“手动开风机”“手动关风机”“手动开加热器”“手动关加热器”。手动按钮的弹起/按下命令语言里给M2.0或M2.1赋值1或0。趋势曲线画面更简单但很有用。组态王里有“实时趋势曲线”和“历史趋势曲线”控件分别绑定温度、湿度变量X轴显示时间Y轴显示量程。我在实际使用中把实时曲线周期设为500毫秒历史趋势存盘周期设为10秒一天下来的温湿度变化一目了然。一般养殖户不会看但作为管理依据这数据太关键了比如可以根据昨晚温度波动调整通风策略。报警窗口也很重要。组态王里“报警”有两种方式一种是读取PLC里的报警标志位比如M0.5另一种是在组态王里对变量本身设置上下限报警。我的做法是两者结合PLC程序判断超限后置位M0.5组态王把这个离散变量关联到报警窗口报警文本写“氨气浓度高请检查通风”同时该变量触发时可以把画面上报警灯变为红色闪烁。这样即使PLC和组态王因为通信原因短暂断开重连后报警状态也能恢复不会丢。安全权限这块组态王有用户管理器。我给普通饲养员设置“操作员”权限只能看画面和按手动按钮给场长或技术员设置“管理员”权限才能改趋势曲线参数和报警上下限。参数设置画面里我放了一个内存变量“温度上限设定值”操作员输入后通过组态王命令语言把它写到PLC的VW110。PLC程序读VW110作为新的比较值这样不用改PLC程序就能调整控制逻辑。实际做下来这个功能比预期好用得多因为养殖户会根据季节和禽类日龄频繁调整舒适温度。4.4 运行系统与PLC通讯调试PPI/以太网常见地址问题调试组态王和PLC通讯时最大的拦路虎是地址格式和通信驱动设置。我把常见问题和排查顺序写下来第一步先确认PLC本身在运行且程序能正常控制设备不要一上来就怪组态王。把PLC拨到RUN状态看Q点指示灯是否按程序闪动。第二步在组态王安装目录下找一下设备测试工具或者直接在数据词典里点“测试”输入一个你已知的寄存器地址比如VW100。如果测试值显示当前温度通信就通了。第三步如果测试读不到检查PPI电缆是否插在COM口上组态王设备配置里的COM口号是否和系统设备管理器里一致。USB-PPI电缆经常被识别成COM3或COM5组态王默认也许填COM1不对应就是死路一条。第四步重启组态王运行系统。我遇到过驱动加载不正确导致通信失败的情况重启后恢复。还有一个很老的坑S7-200的PPI地址是2但有些第三方电缆或老版本组态王默认期望地址是0你要在PLC系统块里把站地址改为2组态王设备配置里填2。如果地址不对组态王会提示“初始化通信失败”。组态王运行后如果你用USB-PPI电缆常年在电脑和PLC之间连着你要是碰上“电脑无法关机”这种怪问题别慌——多半是USB-PPI电缆的驱动占用了系统电源管理拔掉编程电缆再关机或者更新一下USB转串口驱动就能解决。细节听起来琐碎但现场调试最耗时间的往往就是这种小事。5. 现场调试实录模拟器、通讯、干扰与联锁避坑5.1 用S7-200模拟器先跑逻辑不建议直接在真机上调逻辑尤其模拟量换算那部分出错了可能把设备折腾得一会开一会关。我是在电脑上用S7-200模拟器网上常说的那种绿色模拟器具体名字不写了你搜S7-200模拟器能找到先仿真运行了一遍梯形图。模拟器能仿真大部分数字量逻辑起保停、比较、定时器、计数器都能跑。但模拟器不支持模拟量扩展模块和通信怎么办呢我自己用一个很土的方法在程序里临时把AIW0的读取替换成VW300然后在数据块里给VW300赋一个初始值比如32000模拟传感器20mA满量程再改成6400模拟4mA下限。这样就能测出工程量转换程序到底算得对不对。等真机上把AIW0换回去替换MOVE指令那段临时代码删除就行。调试逻辑顺序非常重要。把程序分成段先单独测试网络1的起保停再用VW300模拟值测温度滞回确认风机会在300和250两个阈值间动作确认加热器和风机联锁正常最后测报警标志。我调试时就用模拟器把M0.5强制置位检查Q0.4是否驱动再把I0.3强制断开确认风机输出真的会被切断。5.2 组态王连不上PLC先查这四件事真到现场联调时组态王“连不上”是最高频的问题。我总结了一个检查顺序按这个顺序排查大部分毛病五分钟内暴露第一看PLC是否在RUN状态。不在RUN组态王是读不到数据的。第二看USB-PPI电缆的COM口号。打开设备管理器找到“端口”确认当前COM号然后到组态王设备向导里改成一致保存后重新启动运行系统。第三看波特率是否一致。PLC系统块里的波特率、组态王设备配置里的波特率、编程电缆实际支持的波特率三者必须一致。我曾经被坑过一次PLC下载程序时系统块设的是187500但组态王设备里填的是9600结果画面所有数据都是0而且偶尔能连上、偶尔连不上后来统一改成9600就稳定了。S7-200整定波特率后必须重新下载系统块并且让PLC断电重启。第四看驱动是否报错。组态王运行系统的信息窗口会打印通信信息如果看到“设备初始化失败”“读超时”之类的字眼按前三条对号入座。如果信息窗口完全没有通信记录多半是驱动没加载或被防火墙拦截关闭防火墙或添加例外再试。5.3 信号跳变与误报警屏蔽、滤波和隔离器前文提到的信号跳变在养殖场这种环境里太常见了。温度变送器到PLC的线只有十几米但沿途和风机动力电缆在同一个桥架动力线一启动温度数字光速乱跳。我排查的过程是这样的先拿万用表量变送器输出电流看是否稳定。如果输出电流就抖说明传感器或供电有问题如果电流稳定但PLC读数跳说明问题出在信号传输或PLC模块侧。我那次量下来电流很稳所以直奔信号线。换屏蔽双绞线、屏蔽层PLC侧接PE后改善不少但还有轻微波动。最后在PLC程序里加了数字滤波——连续采样4次去掉最大最小值取中间两个的平均结果数据平滑多了。数字滤波的梯形图写起来也不难用循环采集和比较指令就可以。但如果想要省事S7-200也支持自带滤波的模拟量模块设置。组态王侧也可以对变量做“允许死区”设置比如温度变化小于0.5℃时不刷新画面这对显示稳定性很有帮助。如果你不想改程序直接加变送器隔离器也行。隔离器卡在变送器和EM231之间DIN导轨安装接线就是穿线进去穿线出来效果立竿见影。缺点是多花钱多占导轨空间。我建议预算够就上一路隔离器尤其是氨气传感器这种电化学式的现场干扰更敏感。5.4 联锁保护测试清单养殖场自动化跑到现场我最怕的不是功能缺失而是该有的保护没生效。联锁保护必须一条条测到真的有用才算过关。我列个测试清单给你参考风机过载时即使PLC程序要求风机运行Q0.0也必须为0。实测方法是压一下热继电器测试按钮手动脱扣看组态王风机状态是否变成停止。加热器在风机运行时不能启动。把温度设成低于下限先看风机是否因为温度低而停机再确认加热器是否启动如果不满足逻辑程序里那个M0.1常闭点就白写了。氨气报警时风机必须无条件启动。这个我把氨气传感器拿到窗边吹一下就能触发或者直接在数据词典里把氨气变量值改高验证组态王和PLC的报警联动。手动模式下自动控制不能抢权限。把模式旋钮拨到手动组态王自动温度控制按钮的变量锁定然后故意让温度超限PLC不应自动启动风机。急停按下时所有接触器线圈必须全部断电。急停我接的是硬件回路按下去接触器主回路直接断即使PLC还在输出Q0.0也没用。这些测试做完系统才能算初步可用。别嫌麻烦养殖场设备一旦误动作烧电机、闷死鸡损失动辄几千上万测试半小时比事后赔钱划算。5.5 报警阈值标定与真实养殖环境的关系最后把报警阈值认真校一遍。这里的“校”不是拿个计算器算出理论值就完事而是要在养殖舍真实环境里观察半天。我发现温度变送器在静止空气里和实际鸡群周围温度有偏差传感器挂的位置不同读数能差2℃。所以标定的时候把温度传感器放在鸡群活动区域、避开直射阳光和出风口的位置拿一支经过校准的电子温度计在旁边同时读数对比变送器反馈在组态王里对变量做线性偏置比如PLC算出来的值加0.8℃。氨气传感器的标定更不能糊弄。电化学传感器使用一段时间后会漂移实测发现有时零点电压会变。不过你不需要自己配标气简单做法是选一个清晨通风较差、人能闻到明显氨味的时段对比便携式氨气检测仪读数和PLC值如果偏差大就在组态王里加一个偏置系数同时在维护记录里注明下次校准日期。农业环境里别追求工业级精准重点是趋势可靠、报警不误报也不漏报。整套系统运行了半个多月后我又调了一次风机滞回的下限从25℃改成24℃因为实际发现鸡舍南侧有阳光照射时温度会局部偏高提早关风机会让北侧闷起来。这类调节如果没有组态王趋势曲线做参考基本靠猜。复现这套系统并不难核心就是先把点位清单和图纸画准梯形图每个网络写清楚注释组态王的数据词典和画面绑定别偷懒然后按调试清单一项项测。我自己在这些环节里踩过的坑其实都是“以为很简单结果很狼狈”的典型——比如模拟量公式算错导致温度显示老板脸都绿了比如波特率不一致让组态王显示全零急了一下午。如果你正要动手做养殖场测控或者类似的PLC毕业设计我建议你把我的做法当成起点然后一定结合实际环境去调整阈值因为每个养殖场的设备布局、通风条件差异都很大别人给的图纸和程序只能送到你门口最后一脚还是要你自己跨过去。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑