简介:面向PLC课程设计的一份完整课题报告,以西门子S7系列PLC为平台,围绕喷水池的启动、停止、单步/连续控制以及四种花样喷水模式切换展开。资源包为单个doc文档,仅956KB,内容涵盖硬件配置图、I/O地址分配表、PLC外部接线图、主电路图、系统流程图和梯形图程序,并附有Step7软件仿真调试的运行结果。报告对四种喷水模式给出了详细逻辑:选择开关位置1时逆序延时2s喷水后共喷15s;位置2时顺序延时2s喷水后共喷30s;位置3时1、3号与2、4号交替运行5次后全喷30s;位置4则先顺序延时喷水,再反向顺序延时喷水。适合自动化、电气工程类专业学生完成课程设计或入门PLC编程时对照参考,已有1754人学习下载。借助该范例,读者可以完整走通从硬件设计、地址分配到程序实现与仿真验证的全流程,是一份结构清晰、可直接借鉴的课设范本。
1. 基于PLC的花式喷水池控制:为什么说它本质是时序设计
花式喷水池的观赏效果,全在于一组水泵、电磁阀和彩灯在时间轴上的排列组合。同一个喷头,开10秒关5秒是一种效果,开1秒关1秒又是一种效果,几十个这种点叠加在一起就是“花式”。PLC在这里解决的不是“能不能自动”,而是“换花式不用拆线、不用改继电器,改程序或改参数就能实现”,同时把手动调试、自动运行和检修互锁收进同一套系统。这正是这套方案值不值得投入的核心:前期多花在程序结构上的一点心思,后期换花式时能省下大量现场时间。
适合读这篇笔记的人有三类:做景观喷泉工程、负责设备维护改造、以及刚接触PLC想找个完整案例复现的人。我会按实际项目习惯,从点位统计讲到程序结构、触摸屏编辑和现场安装,再把最容易翻车的几个地方单独列出来。代码采用类ST语法表达,只要见过梯形图,对照注释即可落地。
2. 系统拆解:花式水型、I/O 清单与硬件选型
甲方需求经常只有一句话:“要好看,能换花样。”这句话落到图纸上,答案是一张点位表。花式喷水池里每个水型背后都有一个可控的执行点,先搞清这些点是什么,才能谈程序怎么写。很多设计一上来就画梯形图,结果点位统计错误,后面返工非常痛苦。
2.1 从喷头到控制点:一个水型对应一路输出
常见水型与执行机构的对应关系大致如下。
| 水型 | 执行机构 | 控制要点 |
|---|---|---|
| 直喷 / 花柱 | 水泵 + 喷头 | 泵启停决定出水,压力稳定决定柱形 |
| 涌泉 | 潜水泵 | 水位低时禁止开机,防止空转 |
| 喇叭花 | 电磁阀 + 分水盘 | 稳压阀不可省,压力波动会散花 |
| 摇摆 | 摆动电机 | 电机正反转时序单独编程 |
| 喷雾 | 高压雾化泵 | 不宜频繁启停,需延时保护 |
这张表的关键在于:每种水型都对应一个可控的“执行点”。直喷和涌泉如果共用同一台泵,二者只是流量分配不同,仍然要靠电动阀或分区阀来切分,控制上按独立点位看待。水压不稳是所有喷头的共同敌人,所以工程上通常会配一台稳压泵或变频恒压供水,把主管压力稳定在一个区间,再做花式动作。很多项目把精力全放在“花样”上,结果喷头压力不足,再漂亮的花式也出不来,这是第一类常见的翻车现场。
另外,无论什么花式,水池本质上是一个循环水系统:水从池底被泵抽走,经喷头喷出再落回池子。经过蒸发和飘散,水位会下降,必须配液位计、补水阀和止回阀。这些看起来不参与“花式”的设备,恰恰是自动程序里最高优先级的保护条件,后面会专门讲。
2.2 控制需求归纳:模式、互锁和模拟量
一个完整的花式喷水池,控制需求可以归纳成五块:
- 检修模式:单点动作,泵和阀可以点动,输出电源由现场维修开关硬切除。
- 手动模式:在触摸屏上逐路开或关,用于调试喷头角度、试水型。
- 自动模式:按花式表运行,可手动切换花式序号。
- 音乐联动:可选功能,模拟量信号进入PLC后映射成变频器频率。
- 安全互锁:池水液位高低限、泵过载、漏电保护、急停。
这五块里,前三个靠PLC程序实现,第四个要加模拟量通道,第五个必须同时在程序和硬件电路上做,不能只在梯形图里写一段互锁就完事。程序互锁解决的是“逻辑上不该同时出现的状态”,硬件上还要解决“程序崩溃、下载覆盖、人员误操作”这些程序控制不了的边界条件。这是一个容易忽略的认知,我见过不少项目只做了程序互锁,检修时照样出险情。
2.3 硬件选型怎么定:点数、输出类型和变频器
按我的习惯,先做点位清单,再定PLC本体。下面是一个中小型池子的示例。
| 信号类型 | 点位数 | 内容 |
|---|---|---|
| 数字量输入 DI | 8 | 急停、模式选择(2点)、液位上下限、启动、停止、变频故障 |
| 数字量输出 DO | 14 | 水泵接触器4、电磁阀8、彩灯2 |
| 模拟量输入 AI | 1 | 音乐信号(音频处理板输出 0-10V) |
| 模拟量输出 AO | 1 | 变频器频率给定 4-20mA |
这张表对应四台泵、八路阀、两组灯的小型池子。实际喷头多时,DO会到几十点,I/O不够就要选扩展模块或中型PLC。我一般按最终点位再加20%余量来定CPU本体的点数,避免后面加灯光或喷头时换主机,这是选型阶段最容易后悔的一件事。
输出类型要看负载:水泵、电磁阀这类低频开关负载,继电器输出型就能满足,成本低、耐压高;想做喷泉灯亮度渐变或几十毫秒级跑马闪烁,继电器输出扛不住,必须选晶体管输出型。水下彩灯如果要PWM调光,继电器输出型几乎没法直接驱动,只能加调光模块或固态继电器。所以先定负载再定PLC类型,别先定PLC品牌再对负载,顺序反了后面全是将就。
变频器不是所有花式池都要,但摇摆电机要平滑变速、音乐泵要按节奏调速、供水泵要做恒压时建议配。中小功率泵常用单相220V输入、三相220V输出的变频器;大泵选三相输入,输入侧加电抗器或滤波器。注意变频器控制方式必须设成外部端子加模拟量给定,这样PLC才能在运行中随时改变频率,而不是每次都要跑到变频器面板上按参数。
3. 程序怎么写:模式互锁、跑马花式和表驱动
3.1 三档模式互锁:手动、自动、检修不能同时成立
程序第一段通常是模式选择。用类ST表达如下。
// 三个模式位:M0.0 手动,M0.1 自动,M0.2 检修 IF DI_模式开关1 AND NOT DI_模式开关2 THEN M0.0 := TRUE; M0.1 := FALSE; M0.2 := FALSE; ELSIF NOT DI_模式开关1 AND DI_模式开关2 THEN M0.0 := FALSE; M0.1 := TRUE; M0.2 := FALSE; ELSIF DI_模式开关1 AND DI_模式开关2 THEN M0.0 := FALSE; M0.1 := FALSE; M0.2 := TRUE; END_IF // 检修模式下强制全部输出清零 IF M0.2 THEN QW0 := 0; QW2 := 0; END_IF逻辑说明:三个模式位由两位模式选择开关组合决定,程序里不允许出现“既手动又自动”的状态。QW0、QW2是输出字,检修模式下强制输出全0,防止输出保持。这种互锁很简单,但它只防“程序导致的互窜”,不防“硬件短接误动”,所以现场还要在PLC输出供电回路上做检修断电,第5章会专门讲。
参数说明:模式开关建议用两位选择开关,物理上保证三档互锁;如果只有按钮,程序里要用置位复位逻辑,且必须定优先级。我一般把检修模式优先级放最高,其次是手动,自动最低,这样任何状态下切到检修,所有自动输出立刻停止。
3.2 用移位寄存器写跑马追逐花式
跑马和追逐是花式池最常用的效果之一。思路:一个“活动位”在寄存器里循环移动,活动位指向哪个花式,哪个花式就执行。
// 1Hz循环移位:MW10 中活动位从左往右走,到最右回到最左 IF TON_1S.Q THEN MW10 := SHL(MW10, 1); // 左移1位 IF MW10 = 0 THEN // 高位移出后可能全0 MW10 := 1; // 重新从第0位开始 END_IF TON_1S(IN := FALSE); END_IF // 输出映射:第0位对应花式A,第1位对应花式B QW0 := MW10;逻辑说明:TON_1S 是每秒一个脉冲的定时器;MW10 每一位代表一种花式。SHL把活动位向左推进,每1秒跳到下一种花式。MW10 直接送输出字,所以“活动位在哪,哪路输出就亮”。注意 SHL 是普通左移,最高位移出后变为0,所以要补一个“全0回写1”的保护,否则跑几圈后寄存器空了,花式会全停。
参数说明:1秒的定时值不要硬编码,把它放到D区寄存器(比如D0),HMI上做成“花式切换速度”,操作员就能调快调慢。想反向跑,改用循环右移 ROR 即可,这是触摸屏上“正跑/反跑”按钮的底层实现。要实现两路追逐,就用两个寄存器位同时移动,相位错开一半周期,否则两路同时亮,追逐感就没了。
3.3 表驱动:用一个数据块管理所有花式
跑马适合简单循环,真实工程的花式往往是“直喷3秒+涌泉2秒+摇摆5秒+灯变色”这种组合序列。这时候再用移位寄存器就不够直观,我一般用“花式表”。
| 记录偏移 | 数据类型 | 内容 |
|---|---|---|
| +0 | 字 | 本步持续时间,单位 100ms |
| +2 | 字 | 输出掩码,第n位对应第n路输出 |
| +4 | 字 | 输出掩码扩展,灯组、备用设备 |
| +6 | 字 | 保留字,可存放变频器频率设定 |
程序每次只做“读表、计时、输出、跳步”四件事。
// 花式表驱动核心(类ST) IDX := IDX + 1; IF IDX > 总步数 THEN IDX := 0; END_IF 步地址 := 表起始地址 + IDX * 4; // 每条记录4个字 本步时间 := 数据块[步地址]; // 单位 100ms 输出字1 := 数据块[步地址 + 1]; 输出字2 := 数据块[步地址 + 2]; QW0 := 输出字1;逻辑说明:IDX 是当前执行到第几步;步地址用“表起始地址+偏移”计算,偏移=步序号×每条记录字数。数据块由触摸屏或编程软件直接填,比如第0条记录时间填30(即3秒),输出掩码填0x0003,表示直喷加涌泉同时开。程序逻辑只保留读表和输出,完全不用为每一种花式写独立网络,这就是把“程序”和“数据”分开的好处。
参数与边界:总步数决定程序循环范围,上限用“总步数-1”做比较,防止跳过头。每条记录长度是4个字,加字段时所有记录的偏移要同步改。运行中直接改写正在执行的表会花式乱跳,最常见的现象是“花式做到一半突然换组”。解决有两种:一是HMI先停自动再改表,二是PLC里做双表切换——当前表和编辑表分开,用“装载新表”命令把编辑表整份复制到当前表,等当前步骤结束再启用。第二种体验好,推荐给想做得专业的项目。
3.4 变频与模拟量:让花式跟着音乐动
音乐喷泉是花式池的加分项,工程上不是让PLC去做FFT频谱分析,而是用音频处理板把音乐强弱变成一路0-10V模拟量,PLC读进来映射成变频器频率,控制音乐泵水压或摇摆电机转速。
// 模拟量映射:0-10V输入对应0-50Hz 模拟值 := AI通道0; // 12位分辨率,满量程27648 目标频率 := (模拟值 / 27648) * 50.0; // 速率限幅:每循环最多变化0.5Hz,防止泵急剧冲击 IF 目标频率 > 当前频率 + 0.5 THEN 当前频率 := 当前频率 + 0.5; ELSIF 目标频率 < 当前频率 - 0.5 THEN 当前频率 := 当前频率 - 0.5; ELSE 当前频率 := 目标频率; END_IF AO通道0 := 当前频率;逻辑说明:直接让频率跟着模拟量走,会出现一个明显问题:音乐鼓点变化太快,变频器急加速急减速,水泵和水管会被冲击,所以要加速率限幅,让频率变化平滑但又不丢节奏。12位分辨率对应0~27648是常见整型满量程,如果PLC模拟量是16位满量程,分母要换成对应满量程值,这是必须按实际控制器查的参数。
参数说明:速率限幅0.5Hz每循环是保守值,适合带水负载;摇摆机构这类轻负载可以放宽到2Hz。低频下限建议设到20Hz以上,让泵保持一定压力,避免转速过低出水断流。现场调参时,先用“手动给定固定频率”确认水型和压力正常,再切音乐联动,这样能快速分清是映射问题还是水压问题。
4. 触摸屏编程与现场安装:让花式可改、系统可维护
逻辑装进PLC只是第一步。没有好的界面,操作员不敢动;没有规范的安装,系统跑不了一年。这两个环节决定项目能不能交付给非程序人员使用。
4.1 触摸屏画面怎么分:主控、编辑、检修三页
我建议最少三页。
主画面用于日常运行,显示当前模式、当前花式步骤号、运行循环数、故障列表、液位状态、急停状态。操作员在这页按下启动、停止、切换花式。花式编辑页是一张表格,用户填每步时间和输出掩码,这页要设操作权限口令,避免游客乱点。检修页放每路输出的单独按钮,和自动运行互斥,由模式互锁保证,页面本身不直接切断输出。
一个容易忽略的细节:检修页手动按钮必须经过“确认+互锁”,防止误触。常见做法是点按钮弹确认框,或者要求按住2秒才动作。检修页针对的是在水池边、甚至池内作业的场景,按钮触发条件越严格,越安全。主画面还要留一块故障报警区,不要只在面板上放一个“故障”指示灯,要让操作员能直接看到是哪台泵过载、哪个液位低了。
4.2 D区在触摸屏上怎么填:当前表和编辑表分开
花式表数据放在D区后,触摸屏直接做数值输入就能写表。这里有个界面连动问题:用户在表格里改一格,触摸屏立即写PLC,就会和正在自动运行的程序产生冲突。我的做法是两级结构。
HMI编辑区(内存) → 点“保存到设备” → PLC编辑表(D区) PLC当前步结束 → 编辑表复制到当前表 → 后续按新表运行这条两步机制能解决运行中改花式的抖动。如果嫌复杂,最简方案是“改表前先按停止”,但实际操作时,使用者往往改着改着忘了恢复运行,或者表只改了一半,我强烈建议按双表方案做。成本不高,体验差别很大。
D区位字映射的细节:PLC输出字QW0的第3位代表某路电磁阀,HMI想做“第2路阀状态指示灯”,就映射QW0.2,直接反映真实输出,而不是去映射内部M位。把输出状态直接映射到HMI,现场检修时看到的就是设备真实状态,排查故障会省大量时间。这个习惯在我经手的项目里反复被验证。
4.3 现场布线:屏蔽、防水和等电位
花式喷水池的电气环境比普通设备恶劣:水雾弥漫、柜内凝露、水下电缆、泵和变频器同柜。布线时这几条不能省。
模拟量信号线用双绞屏蔽线,屏蔽层在PLC侧单端接地。信号线走独立金属桥架,和动力电缆尽量隔开30cm以上;交叉处尽量垂直,不要全程平行走线。变频器主回路和PLC电源分开供电,变频器按手册接输入侧电抗器和输出侧滤波器。PLC柜放在水雾区外,柜内加加热器或通风防凝露。水下电缆进柜走防水格兰头,格兰头拧不齐是柜内进水的重要原因。
水池本体要做等电位联结,水下灯和泵的金属外壳统一接等电位端子。水下灯建议低压供电,配隔离变压器,不要直接220V进水面以下。漏电保护按泳池场景选剩余电流动作值,不能按普通插座回路的参数配。这些是安全底线,出事就是大事。如果PLC“死机”总发生在后半夜或清晨,先查柜内凝露,再看电源,最后才怀疑程序。
5. 花式喷水池控制的 5 个常见坑与排查
以下是几个项目里反复遇到的同类问题,每条按现象、原因、解决写。标题里的“花式”再好看,也架不住这些基础问题翻车。
5.1 电磁阀把PLC输出点烧了
现象:系统运行一阵后,某几个DO点无输出,PLC模块对应通道LED变暗或不亮,电磁阀偶尔不动作。
原因:电磁阀线圈是感性负载,断开瞬间产生反向电动势和拉弧。继电器输出型PLC触点分断感性负载时拉出火花,通道寿命大幅缩短;晶体管输出若没加保护,反向电压直接击穿。市面不少电磁阀标称DC24V、几瓦功率,实际吸合瞬间电流有尖峰,叠加潮湿环境,问题更严重。
解决:直流电磁阀在线圈两端反向并联续流二极管,选1N4007或1N5408,注意极性;交流电磁阀并联RC阻容吸收,参考值电阻100~150Ω、电容0.1μF / 630V。更省心的做法是PLC输出不直接接阀线圈,而是接中间继电器,用中间继电器触点去带阀。PLC侧负载小,触点寿命消耗在中间继电器上,坏了换一个几块钱,不用动PLC模块。
5.2 水池水位不足,水泵长时间空转烧了
现象:池水蒸发或维修放水后,液位下降到泵吸口以下,水泵还在自动运行,最后过热烧毁,部分泵的过载保护没有动作。
原因:只做了“液位高时允许补水”,没做“液位低时禁止运行”;或者浮球液位开关装在泵附近,被水流扰动频繁触发,维护人员嫌烦把它短接了。水泵空转时温度上升快,但电流不一定超,过载保护常常跟不上。
解决:加两个独立信号:低液位停泵、超高水位报警。低液位信号进PLC后必须“自锁停泵”,液位恢复后不能自动重启,要人工确认。浮球在波浪池里可靠性很差,换成静压式或超声波液位计更省心。管路出口加止回阀,防止停机后回水倒灌,让泵腔保持有水。
5.3 变频器一启动,模拟量频率就乱跳
现象:触摸屏上频率设定值稳定,变频器一运行,实际转速忽高忽低;音乐联动时鼓点一到,水压乱窜,甚至触发变频器过流报警。
原因:模拟量信号线长期和变频器输出电缆绑在同一个桥架或线管内,变频器高速开关的谐波耦合进信号线;屏蔽层两端都接地形成地环路,反而引入共模干扰。喷泉这种“水泵+变频+长距离+潮湿”的场景,问题特别容易复发。
解决:信号线重新独立走线,用双绞屏蔽电缆;屏蔽层只在PLC柜内单端接地,另一端悬空。PLC、变频器、电机地线按单点汇接到总接地排处理,不要各自接地形成环路。还可以在PLC模拟量输入端并联一个0.1μF小电容滤高频,或者加信号隔离器切断地环路。判断干扰来源有个实用方法:把变频器给定切到面板电位器,如果面板给定也跳,说明是变频器主回路的电磁兼容问题,先处理主回路;如果面板稳、PLC给定跳,才是信号通道问题。
5.4 改一个花式的时间,要翻十几条定时器
现象:甲方说“第三个花样缩短两秒”,工程师打开程序,找到第三个花式对应定时器网络改常数,还要检查其他联动位置,下载后现场又反馈另一个花式被影响。
原因:花式时间被硬编码在多个定时器里,程序没有把时间和动作集中管理。梯形图定时器用起来顺手,但数量一多,时间参数散落在几十个网络间,改点全靠翻页,还容易漏。这是新手程序里最普遍的问题。
解决:用第3.3节的花式表,把所有时长、输出掩码放进D区,改一个花式只改表里一条记录,不动梯形图逻辑。如果项目已经是散落定时器写法,改造思路是定时器时间改为读D区,例如定时值K30改成读D100,再在HMI上写D100。改造要改几十个网络,但只改一次,后续需求变更全部在HMI完成,不需要编程软件再下载。
5.5 检修时“自动又启动了”
现象:维修工在水池里换喷头,触摸屏上明明按了“暂停”或“检修”,过一会儿某台泵突然启动。轻则吓一跳,重则伤人。
原因:触摸屏的“暂停”只是PLC程序里的一个位。如果程序里有“上电自动运行”“启动保持”等逻辑,或者旧程序下载时覆盖了检修状态位,这个位就可能被复位。程序互锁再严密,也挡不住下载程序时的初始化和触摸屏误操作。
解决:检修模式必须在硬件上实现“硬切除”:检修选择开关直接切断PLC输出模块供电或中间继电器电源。只要开关在检修位,无论如何程序都输出不了,这是程序之外的第二道保险。检修前断开总开关并挂牌上锁,检修作业人员随身带锁,不能只靠别人“帮你断电”。水池检修至少两人在场,严禁单人下池。这条不是参数问题,是安全习惯,但它比任何程序都重要。
6. 进阶玩法:音乐喷泉、远程组态和表驱动习惯
6.1 音乐喷泉的工程落地:阈值触发比频谱更实用
真正上过音乐喷泉项目的人都会告诉你,PLC不是用来做音频频谱分析的,它擅长的是开关时序和模拟量映射。工程落地常用方案是用音频处理板把音乐强弱变成一路模拟量,PLC读进来后要么直接映射频率,要么做阈值触发。
// 音频模拟量阈值触发花式:不同音量区间触发不同水型 音量 := AI通道0; // 0~27648 IF 音量 > 20000 THEN 输出字1 := 花式高潮; // 大直喷+摇摆+全灯 ELSIF 音量 > 12000 THEN 输出字1 := 花式中段; // 直喷+涌泉 ELSIF 音量 > 5000 THEN 输出字1 := 花式低段; // 涌泉 END_IF阈值触发的好处是稳定:音乐强弱变化不会让每路输出频繁抖动,配合第3.4节的速率限幅,水型切换也不会有冲击感。调试时先放一段固定音量的测试音,标出模拟量数值,再设定分档阈值,比对着现场乱试高效得多。
6.2 远程组态与控制边界:只读监测加表驱动收尾
不少项目会要求值班室远程监控。常见做法是PLC配以太网,用MODBUS-TCP协议把运行状态、液位、当前花式号传给组态软件,或直接让HMI做网内镜像。我的习惯是远程只做监测和模式切换,不做程序修改权限,更不开放在线下载,给上位机一个只读的数据区,比起开放全部中间变量,隔离性和安全性都更好。
最后说一下我个人的习惯收尾。我做过的程序里,凡是把每个花式的时长直接写在定时器常数里的,后期改起来都特别痛苦。后来我全部改成“花式表+D区参数”的结构:程序逻辑只保留一套读表和执行逻辑,所有花式内容都放进数据块。这样运营方要改节奏,操作员在触摸屏上填表就行;要新增花式,只需要加表记录,梯形图一行不用动。数据结构和逻辑分离之后,程序的可维护性完全上了个台阶,这也是这个标题背后最值得投入的方向。希望帮到你。
本文还有配套的精品资源,点击获取