多彩编程 多彩编程MZPH · CODE BLOG
ARTICLE DETAIL

文章详情

深耕前端与后端开发技术的一线实战笔记与踩坑复盘。

三菱PLC与MCGS组态音乐喷泉控制系统设计调试全解析

三菱PLC与MCGS组态音乐喷泉控制系统设计调试全解析 去年接了一个音乐喷泉控制系统的活对象是景区入口的一处景观水池甲方要求能手动单台试喷也能自动循环花样最核心的一点是要能跟着音乐节奏改变水柱高低和喷泉组合。我最终选了三菱PLC配MCGS组态这套方案从IO分配、接线图、梯形图到上位机画面全部自己落地整个项目调试完大概用了两周。这篇文章就把这套系统的完整设计思路、梯形图程序的逐步解释、MCGS组态的通信配置以及调试时踩到的坑全部整理一遍。如果你正准备做喷泉、灯光联动或者类似的水景控制系统这套内容基本可以直接参考。很多人一听音乐喷泉就往高大上的专用控制器想但实际工程里小型景观喷泉用可编程控制器加组态软件就够了。三菱FX系列PLC在学校、中小型项目和设备改造里存量非常大程序资料齐全会的人多后续维护不愁没人接手MCGS组态的上手成本也低自带三菱FX的通信驱动不需要自己写协议栈。这套组合无论从采购成本、开发效率还是甲方后期的维护友好度来说都是非常合理的选择。1. 需求拆解音乐喷泉到底要控哪些设备1.1 控制对象与运行模式喷泉不是一个简单的按下按钮就喷水的设备。一套基础的音乐喷泉控制对象一般包括这几类喷泉泵通常有2到4台分别负责不同的水柱造型有的控制中心主柱有的控制外围一圈小水柱。变频器负责调节水泵电机转速转速变了水柱高度就跟着变这是音乐喷泉高低起伏效果的关键。水下景观灯配合喷泉节奏做颜色切换或闪烁。音频信号作为音乐联动的输入源让喷泉动作跟随音乐节奏。运行模式上至少要支持三种手动模式检修和调试时单台设备独立启停自动模式PLC按预设时间轴循环执行几组水形动作音乐联动模式喷泉泵和灯光根据音频信号的强弱自动响应。这三种模式之间还要做到无缝切换不能出现切到一半水泵还在运行的情况。1.2 为什么选三菱FX3U和MCGS组态选型之前我对比过几种方案。西门子S7-200 SMART也不错但甲方和现场维护电工对三菱更熟悉程序将来要改也方便找人。信捷、汇川这类国产PLC性价比更高但音乐喷泉需要模拟量输入、步进指令、通信扩展这些功能用国产低端机型做起来要多绕一些弯。最终定了三菱FX3U-32MR加上一块FX3U-4AD模拟量模块。FX3U在这个项目里的针对性优势很明显自带STL步进梯形图指令非常适合写多状态自动花样4AD模块处理音乐信号的模拟量输入采样精度够用支撑编程口和RS485通信MCGS嵌入式触摸屏可以直接驱动。MCGS这边设备窗口里自带三菱FX系列驱动不用写通信协议用户窗口可以画很直观的喷泉动画水面波动、水柱高度、灯光颜色都能用变量关联起来开发效率比传统按钮面板高出一大截。1.3 系统整体架构整套系统的层级可以分成三层。最底层是电气执行层包括喷泉泵电机、接触器、热继电器、变频器、灯光回路中间层是三菱FX3U PLC负责逻辑判断、模式切换、花样输出、模拟量采集最上层是MCGS组态触摸屏负责状态显示、远程操作、音乐播放时的音量联动。音频信号的处理我采用了硬件方案音乐播放设备的音频输出经过信号隔离器转换成0到10V模拟量接到FX3U-4AD的通道1。PLC周期性采样这个模拟量经过滤波和一阶滞后处理得到代表音乐强弱的数值然后根据数值大小去控制不同喷泉泵和变频器频率。MCGS触摸屏只负责播放音乐和画面监控不参与实时联动这样能避免上位机进程卡顿导致喷泉动作失控。2. 硬件选型与IO分配不把点表定清楚后面全是返工2.1 输入输出点梳理做任何PLC项目第一步永远是把输入输出点一个一个列出来不要上来就写程序。音乐喷泉的点位分配看起来简单但很容易漏掉一些看似不起眼却很重要的点比如低水位保护、热继电器反馈、远程急停状态。输入点从功能上分四类操作指令、模式切换、设备状态反馈、安全保护。操作指令包括启动、停止、手动单台启停模式切换就是手动/自动/音乐联动选择设备状态反馈主要是热继电器过载、变频器故障安全保护包括急停、低水位。输出点相对直接每台泵一个接触器控制位加上变频器运行信号、模拟量频率给定、灯光输出、报警蜂鸣器。我数了下最终需要14个输入点和10个输出点左右。选择FX3U-32MR本机16输入16输出8个输入8个输出做备用完全覆盖项目还要富余。硬件上不用专门扩展IO模块柜内空间也更从容。2.2 IO分配表IO分配没有绝对标准但一定要在图纸和程序里保持一致我习惯在点表里加注释列把每个点对应的设备名称、安装位置、常开常闭都写清楚。这样接线电工不需要来回翻图纸维护人员也能快速定位。地址用途电气类型说明X0系统启动常开按钮自锁回路用X1系统停止常闭按钮断开有效X2手/自动切换旋钮开关闭合为手动X3急停常闭触点串入安全回路X41号泵手动启常开按钮仅手动模式有效X52号泵手动启常开按钮仅手动模式有效X63号泵手动启常开按钮仅手动模式有效X7水池低水位常闭触点水位正常时闭合X10泵过载保护常闭触点热继电器串联反馈X11变频器故障常闭触点故障时断开地址用途电气类型说明Y01号喷泉泵接触器线圈主喷柱Y12号喷泉泵接触器线圈左副喷柱Y23号喷泉泵接触器线圈右副喷柱Y3变频器运行中间继电器启停变频器Y41号喷泉灯中间继电器水下灯Y52号喷泉灯中间继电器水下灯Y63号喷泉灯中间继电器水下灯Y7报警蜂鸣器中间继电器故障提示模拟量部分FX3U-4AD的CH1分配为音乐输入信号0到10V对应D100的0到4000数值CH2分配为手动电位器给定变频器频率调试时可以直接用电位器手动控制水柱高度。2.3 接线原理图里必须强调的几个细节接线图我没有办法在文章里贴出来但关键逻辑一定要讲清楚。首先三菱FX3U输入端子的接法我采用的是漏型接法输入公共端COM接DC24V正极X端子通过按钮开关的常开或常闭触点接到DC24V负极0V。急停按钮和停止按钮做常闭接入好处是断线时PLC能天然识别为停止或紧急状态避免线掉了反而一直运行。输出端接线要注意分组。FX3U-32MR是继电器输出输出端子按公共端分组Y0到Y3共用一组Y4到Y7共用另一组。我习惯把接触器线圈和中间继电器线圈统一接220V控制回路每个输出点的负载回路都串一个熔断器避免一个点短路影响整组输出。水泵电机主回路由接触器主触点控制热继电器的常闭触点反馈到PLC输入X10触点本身串在接触器线圈控制回路里这样发生过载时接触器直接断开PLC也同时收到反馈双重保护。模拟量模块的接线容易被忽略。FX3U-4AD的CH1接音频隔离器输出的0到10V信号正负不能接反信号线用屏蔽双绞线屏蔽层单端接地。CH2接电位器时电位器外壳和滑动端接线距离尽量短否则会引入很大的波动。变频器频率给定用的是4AD的CH2模拟量输出接线到变频器的模拟量输入端子0到10V对应0到50Hz这个对应关系要在变频器参数里设置好。3. 梯形图程序每一步逻辑都要讲明白3.1 程序框架和软元件规划写程序之前我把软元件提前做了规划免得写到最后M点、D点满天飞。M0是系统运行标志位M10是手动模式标志M20是音乐联动模式标志D100存音乐模拟量采样值D200存当前变频器频率给定值。定时器T0到T9留给自动花样循环T10到T19留给泵启动延时和间隔延时。工具类软元件单独留一段比如采样脉冲M8012通用定时器计算用不与工艺流程的定时器混在一起。梯形图整体框架可以分成四部分启停与安全回路、模式选择、自动花样程序、音乐联动与变频器控制。四部分之间靠M点串起来比如音乐联动模式只有在M0运行标志有效、M20联动标志有效时才允许输出自动花样只有在非手动模式下才进入。3.2 启停与安全回路的梯形图逻辑启停回路的梯形图网络就像下面这样三菱指令写成LD X0 OR M0 ANI X1 ANI X3 ANI X7 ANI X10 ANI X11 OUT M0解释一下这行逻辑X0是启动按钮按下后M0得电M0的常开触点并联到X0上形成自锁程序里从此保持运行。停止是常闭点X1急停X3、低水位X7、过载X10、变频器故障X11全部用常闭指令串进去。也就是说任何一个安全条件不满足整条回路都断开M0掉电所有喷泉泵立即停止。这种写法操作上叫集中安全链比在每一段输出里都串条件干净得多。这里有个非常容易被新手忽略的点停止按钮X1用常闭接入梯形图里的ANI指令但是按钮本身要买常闭型。如果你买的是常开按钮并接了常开标签梯形图就必须改成LD X1再OUT M0复位的形式两侧要完全匹配不然启动按钮一松手系统就会停机。类似的项目里我见过太多因为按钮选型错误导致逻辑正好反掉的案例。3.3 自动花样程序用STL步进指令实现状态机自动循环花样是这个项目里的重头戏。喷泉自动运行时要不断切换水形组合顺序可能是单柱喷泉、双柱交叉、三柱齐喷、全停再循环。这种多状态顺序控制如果用普通定时器加辅助继电器去堆互锁条件会越写越复杂后面想改一个动作顺序很容易改乱。所以我用了三菱STL步进梯形图指令。STL本质上就是状态机用S状态继电器表示当前所处的步骤每个状态里可以输出当前水形对应的泵和灯定时器到了就向下一步转移。下面是状态表状态功能说明输出组合转移条件S0初始停止全部关闭启动条件到S20花样一Y0加Y4T0延时5秒S21花样二Y1加Y5T1延时5秒S22花样三Y2加Y6T2延时5秒S23花样四Y0Y1Y2加灯全开T3延时8秒S24花样五全部停止T4延时2秒后跳回S20梯形图里的写法套路是这样LD M0 ANI M10 ANI M20 SET S0 STL S0 LD M0 ANI X2 SET S20 STL S20 OUT Y0 OUT Y4 OUT T0 K50 LD T0 SET S21 STL S21 ...这里需要解释两个事情。第一STL指令会自动复位前一个状态不需要自己写S20复位之类的东西三菱的状态继电器在STL里天然互斥。第二定时器K值单位是100毫秒K50就是5秒写程序注释一定要标清楚不然过两个月自己回来看都容易算错。为了让自动花样循环连贯最后S24的转移条件是T4到达后直接SET S20跳回去重新开始中间不需要再经过S0。停止时X1停止按钮或M0运行标志断开配合STL的ZRST复位指令批量复位S20到S24所有输出全部关断。ZRST S20 S24这个指令放在停止逻辑里比我一个个手动复位高效得多。3.4 音乐联动怎么进PLC音乐联动是本项目最容易被误解的部分。有人以为MCGS触摸屏播放音乐就能直接让PLC跟着动其实MCGS和PLC之间走的是串口通信通信速度和处理节奏根本跟不上音频波形。稳妥的做法是音频信号走硬件模拟量通道进PLCMCGS只负责放音乐和显示状态。程序设计上把音频信号接到4AD通道1后我用READ指令周期性读取模拟量存入D100。然后写了一个阈值滞回逻辑D100大于1200时说明音量强启动主喷柱和灯光D100在600到1200之间说明音量中等只启动副喷柱D100低于600说明音乐弱或间歇所有泵暂停。为了防止波形在阈值附近反复跳动导致喷泉抽搐我还加了连续三次采样判定只有连续三次都满足条件才允许状态翻转。梯形图网络大体上可以写成LD M20 ANI M10 OUT M21 LD M21 RD D100 CMP K600 D100 M30 CMP K1200 D100 M31实际项目里用比较指令配合辅助继电器再结合一个由M8012产生的100毫秒脉冲做滤波计数器。这样处理完喷泉的动作虽然比音乐节拍慢一点点但很有规律不会出现跟着音乐疯狂抽搐的廉价感。这一点在验收时甲方特别满意。3.5 变频器控制和泵的错峰启动变频器控制的顺序在梯形图里也要仔细写。常见错误是启动变频器和给频率两个动作同一扫描周期完成变频器还没进入运行状态频率就已经给过去了。我用的顺序是Y3输出变频器运行信号延时1秒后把D200里存的频率值通过模拟量模块送出这样变频器先建立运行状态再接收频率给定水柱才能平稳起来。喷泉泵的错峰启动同样是关键点。多台大功率泵如果同时启动启动电流叠加会造成电网压降水管内还会产生严重的水锤效应几轮下来管路接头都会漏水。所以程序里每台泵启动之间必须插入延时我用的是Y0启动后T10计时2秒计时到再启动Y1Y1启动后T11计时2秒再启动Y2。停止的时候反而不需要做太多延时因为喷泉水泵断电后水柱自然回落减少延时会显得音乐喷泉收得更干脆。4. MCGS组态画面把冷冰冰的IO点位变成能看的界面4.1 通信驱动与设备连接MCGS组态软件分嵌入版和通用版触摸屏上跑的是嵌入版运行环境开发时在PC上用组态环境编辑工程最后下载到触摸屏。第一步是设备窗口这是很多人忽略但最容易出问题的环节。设备窗口里添加驱动我选了三菱FX系列编程口串口参数必须和PLC侧一致波特率9600、数据位8位、偶校验、停止位1位。物理连接方面FX3U的编程口是圆形RS422接口需要用USB-SC09-FX编程线连到触摸屏的串口或者通过USB转串口接到PC。如果现场距离远可以给FX3U加一块FX3U-485-BD通信板MCGS驱动换成三菱FX系列485走RS485两线制。我项目里触摸屏和PLC电控柜距离不到三米直接编程口线连接线越短通信越稳定。通信参数这里有个典型坑三菱FX3U本体编程口默认参数是9600波特率、偶校验但如果你用GX Works或GX Developer软件改过PLC参数波特率可能被改成了19200或38400。MCGS设备窗口里如果还是默认9600就会发生设备通信异常。排查时先看一眼PLC参数设置再对照MCGS设备窗口两个地方参数必须完全相同。4.2 实时数据库变量定义MCGS的实时数据库是整个组态工程的中枢所有画面动画、按钮操作、趋势曲线都通过它和PLC驱动挂接。我在实时数据库里建立了这么几类变量开关型变量Y0、Y1、Y2对应三台泵的当前输出状态Y4到Y6对应灯光状态这些都是位变量数值型变量D100对应音乐强度D200对应变频器频率给定值还有几个内部变量用来记录当前模式是手动、自动还是音乐联动。这里有一个我做项目养成的习惯MCGS不会直接向PLC的X输入点写值远程启停也不会直接写Y输出点。原因很简单X是输入映像区写入也没有实际意义Y输出在梯形图每一周期都可能被OUT指令重新覆盖MCGS写了也保持不住。正确做法是在梯形图启停回路里并联M100作为远程启动按钮M101作为远程停止按钮MCGS画面上的启动停止按钮对应操作这两个M点置位或复位。按下启动按钮时MCGS向PLC写入M100的置位指令梯形图里M100和本地X0的作用相同M0自锁一吸住MCGS再复位M100整个启动过程稳定可靠。4.3 喷泉画面与动画设计MCGS用户窗口是给甲方看的门面画面设计我花了大概一天时间。底图画一个水池俯视图池子中央画三个圆形喷头对应三台喷泉泵每个喷头关联一个填充颜色的变量Y0为1时喷头填充成蓝色Y0为0时填充成灰色。这样泵一启动画面上对应喷头立刻变成蓝色甲方一看就知道哪台泵在喷。灯光部分同理每个水下灯画成不同颜色的圆点关联Y4、Y5、Y6动态效果更明显。再放一个当前音乐强度的棒图控件数值变量指向D100音乐响起时棒图上下跳动。趋势曲线我加了一个实时曲线窗口横轴时间、纵轴D100值方便调试时观察音频信号的波形和阈值触发点。按钮布局遵循重要按钮显眼、危险按钮独立的原则。启动按钮放在画面左上角绿色停止按钮放在右下角红色面积比启动按钮大一圈模式选择用旋钮状态的切换按钮实现对应M10和M20的置位复位。按钮动作脚本很简单比如启动按钮的按下脚本就是![M100]1这个形式松开脚本再复位。这种写法比用置位按钮更直观也避免按一下触发两次。4.4 运行策略怎么写MCGS运行策略脚本在音乐喷泉项目里主要做两件事一是循环采集PLC的D100值刷新棒图和趋势曲线二是把按钮操作正确转发成PLC的M点置位。其实MCGS的变量和PLC设备变量绑定之后采集和写入是驱动自动完成的不需要每周期手动写脚本。我的循环策略里只放了一段轻量脚本如果有报警标志位M50为1就弹出一个报警提示窗口同时记录报警时间到历史表格。这里想提醒一点不要在MCGS循环策略里写复杂的音频分析、音乐节拍识别之类的逻辑。MCGS脚本引擎的实时性不够拿来做信号处理不仅卡顿还会拖慢画面刷新。音频联动的实时控制一定放在PLC里MCGS只做展示和操作。把上位机当成仪表面板而不是控制器是整个系统稳定的关键。5. 调试实录这套系统最容易踩的坑5.1 通信失败的完整排查链路项目第一次通电时MCGS触摸屏所有数据显示正常唯独设备状态一直显示通信失败。我当时花了一个多小时才定位到问题这里完整记录排查链路给大家一个参考。第一步先排除硬件线缆。USB-SC09-FX线有些便宜型号只能用于程序下载不支持MCGS这种周期性通信我换了一条原装线问题依旧。第二步检查COM口号。USB转串口每次插入电脑分配的COM号可能不同我确认设备管理器里看到的COM7和MCGS设备窗口里选的COM7一致。第三步检查串口参数。我在GX Works里查看PLC参数发现这台FX3U的通信波特率被人改成38400了而MCGS设备窗口里还是默认9600。把PLC参数改回9600偶校验并重新下载通信立刻恢复正常。第四步才是检查MCGS刷新周期默认的几百毫秒一般没问题除非电脑特别老可以适当调大到500毫秒。5.2 模拟量跳变导致喷泉乱换水形音乐联调时遇到的问题最折磨人音量不大的音乐喷泉却频繁开启关闭根本跟不上节拍。我用MCGS趋势曲线观察D100波形发现曲线不是平滑的音频包络而是布满毛刺的跳变信号。原因有两个。一是音频隔离器输出端和4AD模拟量模块之间距离确实绕了远路信号线虽然没有和动力线同槽但经过了一个变频器出线区域变频器的载波干扰串了进来。二是程序里没有做滤波直接拿原始采样值做阈值比较波形一有毛刺喷泉就被误触发。解决分两步物理上把信号线改成屏蔽双绞线屏蔽层在PLC侧单端接地并尽量远离变频器输出线程序上增加平均值滤波连续采集8次D100去掉最大最小各两个值剩下4个平均值作为有效音乐强度。加了这套处理后曲线平滑了很多喷泉动作节奏正常。5.3 多泵同时启动的水锤问题首次做联动测试时三台泵同时启动水柱冲起来的一瞬间管子接口处居然咚了一声震感很明显在场的人都吓了一跳。这是典型的水锤效应多台水泵同步启动时管道内压力波叠加造成的。我在程序里已经预留了错峰逻辑但当时只用在了自动花样状态切换中手动模式和音乐联动模式没有加这个间隔。后来我把错峰启动统一做成一个子程序逻辑所有模式下三台泵的启动都遵循Y0先启动2秒后Y1启动再2秒后Y2启动。停止的时候维持同步停止因为水柱回落快效果反而好看。经过这样处理管路再没有异常冲击。5.4 不要试图在MCGS里直接写Y输出这是在调试现场踩过最尴尬的一个坑。甲方要求触摸屏上加一排手动按钮直接控制每台泵启停。我当时图省事直接在MCGS里把按钮动作写成Y01Y00结果运行起来按钮按了没有任何反应偶尔有反应也是闪一下就没了。原因前面提过PLC梯形图里每个扫描周期都会根据当前输入条件重新执行OUT Y0MCGS写入的输出值在下一个扫描周期就被程序覆盖了。正确做法是建立M点映射梯形图里加一段类似下面的网络LD M100 OR Y0 ANI M101 OUT Y0MCGS按钮按下时写M100置位松开时复位M101梯形图里Y0就能可靠保持。这种远程命令通过M点中转的思路适用于几乎所有触摸屏和PLC组合凡是上位机要与PLC输出直接交互的场合都应该用这个套路。最后再分享一点个人体会音乐喷泉项目看着花哨实际上核心就是IO点表清晰、状态机逻辑严谨、通信参数一致这三件事。MCGS画面做得再漂亮如果PLC侧的程序逻辑不稳固现场一定会反复折腾。我做这个项目最大的收获就是把大部分精力放在梯形图的边界条件处理上把上位机当成纯粹的显示和操作工具系统稳定性和调试效率反而都上来了。如果有朋友正在做类似的三菱PLC配MCGS水景项目这套IO分配和程序框架可以直接抄作业踩坑的部分提前规避能省不少现场时间。
返回列表