
1. 项目背景与控制需求拆解干过热电厂、水泥厂或者矿山皮带输送的朋友应该对“输煤系统”这四个字不陌生。它管的是电厂锅炉的“口粮供应”煤从煤场或者卸煤沟出来经过皮带输送、除铁、筛分、破碎一路送到每个锅炉的煤仓里。流程听着简单但真把它做成一套可靠的自动化控制系统里面的细节远超外人想象。我这次参与的项目核心任务是给一个热电厂的输煤系统换上“大脑”选型最终定为西门子 S7-300 PLC 作为现场控制核心配上 MCGS 组态软件做上位机监控。整套系统要解决的问题很直接一是把皮带机、碎煤机、除铁器、犁煤器这些分散的设备统一管起来二是把操作工的注意力从现场拉到集控室三是用联锁逻辑保证启停车过程不出人身和设备事故。先说清楚这套系统适合谁看。如果你正在做类似的中小型工业控制项目用的是西门子 300/1200/1500 系列 PLC或者你需要用 MCGS 组态一台设备但卡在通信配置上又或者你只是想了解输煤皮带控制系统的联锁逻辑怎么编这篇文章都能给你提供一套可以落地参考的方案。里面涉及的硬件选型、I/O 分配、梯形图逻辑、MCGS 画面规划和通信配置都是实际项目中反复验证过的做法。项目本身算不上“高精尖”但恰恰是这种常见系统最能体现设计思路的成熟度。很多新手容易犯的毛病是只盯着程序写没写通忽略了设备之间的逻辑关系和操作习惯结果现场一开车就掉链子。下面我把这套系统的设计全过程拆开从控制需求说到最后一台设备接线尽量把我踩过的坑和验证过的经验都交代清楚。2. 硬件架构与核心器件选型2.1 为什么选 S7-300 而不是 200 或 1200选型这件事图纸没出之前就要定。当时摆在我面前的选择有好几个S7-200 SMART、S7-1200、S7-300 都能做逻辑控制但结合项目实际情况S7-300 是当时最稳的选择。先看 I/O 点数。整套输煤系统涉及的设备包括四条皮带机、一台碎煤机、两台除铁器、两台电动犁煤器、若干电动挡板加上各种跑偏开关、拉绳开关、速度传感器、料流检测器、温度巡检仪统计下来数字量输入在 100 点左右数字量输出 50 点左右模拟量输入接了皮带秤和碎煤机电流还有少量模拟量输出。S7-300 的扩展能力在这个规模下很从容315-2DP 机架拉两三排扩展机架完全没有压力。再看扩展性和兼容性。热电厂普遍有 DCS 系统输煤系统虽然独立但往往需要把运行信号、故障信号送到 DCS 做全厂监控。S7-300 支持 PROFIBUS-DP 和工业以太网既能自己组站也能做 DP 从站把数据转发给 DCS这个能力比 S7-200 和 1200 的早期版本都要方便。最后讲一个比较实际的原因稳定性和环境适应性。输煤栈桥粉尘大、震动强、夏天温度高S7-300 的导轨安装方式、前连接器接线方式在这种工况下已经被验证了很多年故障率低备件也好买。工控设备很多时候别追求最先进要追求在最恶劣环境下最不容易坏。S7-200 系列虽然便宜但模块集成度高坏了换整个 CPUS7-300 是模块化结构一个 DI 模块坏了只换一块卡检修成本低很多。2.2 控制站硬件组态清单具体到硬件清单我给这套系统配的核心部件如下CPUCPU 315-2DP集成 PROFIBUS-DP 主站/从站接口程序存储容量和处理速度足够跑输煤这种中等规模逻辑电源模块PS 307 5A给 CPU 和背板总线供电同时给一部分现场两线制传感器供 24V 电压数字量输入模块SM 321 DI 32×DC 24V装了 3 块主要接跑偏开关、拉绳开关、位置开关、控制按钮等数字量输出模块SM 322 DO 32×DC 24V/0.5A装了 2 块驱动中间继电器再由中间继电器触点控制接触器线圈模拟量输入模块SM 331 AI 8×12 位接了皮带秤的 4-20mA 信号和碎煤机电流互感器变送信号接口模块IM 360/IM 361用于扩展机架如果控制柜内空间不够可以把部分 I/O 放到第二排以太网通信模块CP 343-1 Lean用于和 MCGS 上位机通信这也是整套系统里非常关键的一个选型点这里有个工程经验值得单独说一下所有的数字量输出PLC 模块不要直接驱动接触器线圈。输煤现场的接触器线圈启动电流大、关断时反电动势高直接接模块容易把输出点烧掉。我在每个 DO 点后面配了一只 DC 24V 中间继电器我用的是一体化继电器模组带 LED 指示和续流二极管中间继电器触点再接 220V 交流接触器线圈。这样做的好处是故障排查特别方便某个设备不动先看对应继电器指示灯亮不亮能快速把问题定位在“PLC 没输出”还是“继电器之后回路有问题”。继电器模组的 LED 指示灯在半夜处理故障的时候真是救命的功能。2.3 现场仪表与保护元件配置输煤系统有一个特殊性设备分散、环境恶劣保护元件必须齐全。有些项目为了省成本把皮带保护装置减配我强烈建议不要这么干。我在这套系统里配置的保护元件如下跑偏开关每条皮带至少装 2 对安装在皮带机头部和尾部皮带跑偏到一级动作时报警二级动作时联锁停车拉绳开关沿皮带全长每隔 50~70 米装一个紧急情况下在皮带任意位置拉绳停车速度传感器装在皮带从动滚筒附近通过检测从动滚筒转速判断皮带是否打滑或断带料流检测器装在皮带上方检测物料是否堆积过高碎煤机前后温度巡检测轴承温度和电机温度超限报警堵煤开关装在碎煤机出料溜槽和皮带下料溜槽处溜槽堵料后及时停车防止皮带压死这些保护元件的信号全部进 PLC 的 DI 模块不经过中间继电器属于“直采直判”的逻辑一旦动作直接参与联锁停车的逻辑判断。我在现场见过有人把这些保护信号串联到接触器控制回路里做硬接线联锁这也不是不行但缺点是没有“记忆”功能故障消失后不知道该设备为什么停过车。接入 PLC 的好处是可以在上位机画面上记录故障时间和故障内容事后分析原因一目了然。3. 控制方案逻辑设计3.1 输煤工艺与流程梳理输煤控制系统的所有程序逻辑本质上都是在回答一个问题煤怎么按照预定路线安全可靠地从源头送到煤仓。所以写程序之前先把工艺流程图吃透这一步比打开 Step 7 写代码重要得多。这套系统的输煤流程大致是卸煤沟或煤场的煤经过 1 号皮带输送到碎煤机间先经过除铁器把煤里的铁器吸走再进入碎煤机破碎到合格粒度然后落到 2 号皮带上2 号皮带尾部有电子皮带秤计量瞬时流量和累计量接着经过一条转运皮带进入主厂房最后通过犁煤器把煤卸到各个原煤仓。这里面每一台设备都有前后关联皮带不能空转太久犁煤器不能没抬起来就启动皮带碎煤机必须先启动再走煤除铁器吸出来的铁器要定期清理堵煤故障发生后不能直接复位开车要人工确认后才能重新启动。这些约束条件转化成了 I/O 表和梯形图逻辑。3.2 启停逻辑逆煤流启动顺煤流停车输煤控制系统字面意义上看是控制皮带启停内核其实是一套成熟的联锁规则。行业内通行的方法是“逆煤流启动顺煤流停车”。什么叫逆煤流启动从煤流方向来看1 号皮带在最源头2 号皮带在碎煤机后面犁煤器对应的皮带在末端。煤流是从 1 号向末端走的启动时就必须从末端开始依次启动前面的设备。也就是说先启动最后一条皮带再启动倒数第二条皮带最后启动 1 号皮带和给料设备。原因很简单如果先把 1 号皮带开起来煤就会送到下游设备上而下游设备还没启动煤就会堆积在皮带头上很快就会压死皮带甚至烧毁电机。逆煤流启动保证任何时刻流到下游的煤下游的设备都已经处于运行状态煤流链路是通的。顺煤流停车则相反需要停机时先停上游给料设备让已经到皮带上的煤继续往前走等皮带上的煤基本清空了再停自身皮带逐级往上游停。这样皮带停机时是空载或者轻载下次启动没有带载启动的问题也避免了皮带上残留大量煤造成再次启动困难。3.3 关键设备联锁条件的梯形图实现这套系统的核心逻辑放在 FC 块里我推荐用带有调用功能的“设备控制块”设计思路。每个设备电机/阀门独立成一个运行逻辑块块的外部入口是启动命令、停止命令、保护信号、联锁信号块的出口是运行输出、故障输出、运行状态反馈。这样程序重复调用同一个 FC就可以控制多台相同类型的设备程序量大幅降低维护时也只需要改一个块。以皮带机为例关键联锁条件如下启动允许条件皮带对应的下游设备已经运行逆煤流启动条件没有拉绳开关动作信号没有跑偏开关二级动作信号没有速度传感器打滑信号皮带没有重故障记忆如热继电器动作未复位皮带启动预告声光报警已经响了 10 秒运行保持条件运行指令存在没有急停信号没有堵煤信号没有皮带跑偏持续超时信号程序里我用了两个定时器来实现启动过程。第一个定时器 T1 用于启动预告鸣响按下启动按钮后先输出声光报警报警持续 10 秒后才允许启动设备提醒现场人员远离设备。第二个定时器 T2 用于启动监视设备启动指令发出后如果在 15 秒之内没有收到运行反馈信号说明设备可能存在故障比如接触器没吸合、热继电器跳了、皮带卡死程序自动停止输出并记录“启动超时”故障。这个启动监视逻辑非常实用能避免设备没起来但操作员一直以为它在运行的危险状态。碎煤机的联锁更严格碎煤机启动前要先启动其润滑系统和冷却风机启动完成后延时一定时间才能启动上游给料皮带。碎煤机运行中如果轴承温度超过设定值报警并延时停机给碎煤机一个“甩煤”的时间避免停机瞬间积煤卡死破碎齿。除铁器和犁煤器的逻辑相对简单除铁器在对应皮带启动后自动投入皮带停止后延时关闭犁煤器则受“卸煤指令”控制按下卸煤按钮后犁煤器放下同时通过限位开关反馈到位信号再启动对应的给料设备。犁煤器没有到位信号时是不允许启动这一路卸煤流程的否则煤会落到犁煤器前面堆成煤山。3.4 故障分类与急停策略输煤系统涉及人身风险故障分类处理我分了三级第一级轻故障只报警不停车。比如皮带跑偏一级动作、现场除尘器运行状态异常、煤仓料位高报警。这些故障不影响当前运行但需要在 MCGS 画面上闪灯提示操作员关注第二级中故障延时停车。比如碎煤机轴承温度高、电动机过载报警热继电器动作前会有一个电流报警信号。这时给运行人员 30 秒处理时间超时后自动停车第三级重故障立即停车。拉绳开关动作、跑偏二级动作、速度传感器打滑信号、急停按钮动作、堵煤开关动作这些都需要第一时间切断设备电源急停策略也有讲究。整个输煤系统我在集控室设了一个总急停按钮同时在 MCGS 画面做了一个急停操作按钮带二次确认弹窗。总急停按下后所有设备立即停止。但这里有个细节碎煤机被急停后再启动时不能直接复位就运行必须人工到现场检查碎煤机腔内是否有积煤确认无误后在机旁箱按“故障复位”按钮集控室才能再操作。这个“现场确认”的步骤用硬接线的旁路方式实现防止遥控操作代替现场判断。3.5 上位机 MCGS 组态的通信架构控制系统除了 PLC 本体还有一层很重要的东西是上位机监控。MCGS 组态软件在这个项目里做了两个大用处一是监控画面二是数据记录和报警管理。通信架构上S7-300 侧通过 CP 343-1 Lean 模块接入工业以太网设置一个固定 IP比如 192.168.1.10MCGS 上位机通过以太网口和 PLC 建立通信链路。MCGS 里面需要选择“西门子 S7-300 TCP”驱动对应配置 PLC 的 IP 地址、机架号、槽号。这里有一个常见误区很多人以为装好了驱动、填对了 IP 就能通信但 S7-300 的通信需要先在 Step 7 硬件组态里把 CP 卡的槽位确定好而且 MCGS 里填的“槽号”指的就是 CP 卡所在插槽序号不是 CPU 的槽号填错了就会出现“通信超时”或者数据“读回来全是 0”。我实际配置中是 CPU 在 2 号槽CP343-1 在机架的 4 号槽那 MCGS 里“PLC 地址”填 192.168.1.10“机架号”为 0“槽号”是 4。如果现场没有以太网环境也可以走 MPI 通信用 PC Adapter 或者 CP5611 卡连接 PLC 的 MPI 口MCGS 驱动选择“西门子 S7-300MPI”。MPI 的优点是配置简单、不需要额外网卡缺点是两个站的通信距离短、速度慢。热电厂输煤系统往往控制室和电气间距离几十米以太网更合适。后来这套系统还扩展了一个从站给除灰系统通过 PROFIBUS-DP 把除灰系统的运行信号上传到输煤 PLC 一起监视就是在 CPU 315-2DP 主站口接一根 DP 电缆的事省了一台上位机性价比很划算。4. MCGS 监控画面与人机交互体验4.1 画面规划的顶层设计思路MCGS 组态真正做到能用、好用关键不在控件多花哨而在画面的信息层次清晰。输煤系统的操作员水平和习惯差异比较大有老师傅也有年轻人所以我的画面规划原则是一屏监控全流程故障一眼看得到操作三步能完成。整套画面我分了五个主要窗口总貌画面用系统示意图把四条皮带、碎煤机、除铁器、犁煤器、煤仓画在同一张图里设备运行状态通过颜色区分绿色运行、红色故障、灰色停止、黄色报警煤流方向用动画线条显示设备操作画面针对每台设备的详细操作包括启动、停止、运行参数、故障复位按设备区域分页电气参数画面显示电机电流、皮带秤瞬时流量、碎煤机轴承温度等实时趋势曲线报警管理画面实时报警列表和历史报警查询报表画面班产量统计、设备运行时长统计、皮带秤累计量报表总貌画面的设计有一点特别关键画面上所有设备状态必须和 PLC 的实际状态完全对应。设备是“备用”还是“检修挂牌”要在画面上用文字标注清楚防止操作员误认为设备可用。4.2 实时数据库与变量连接MCGS 组态的核心工作可以概括成一句话把 PLC 里的地址映射到数据库变量再把数据库变量绑定到画面图元上。变量连接要注意数据类型匹配。S7-300 里的 I/O 地址比如 I0.0、Q0.1映射到 MCGS 里对应的位变量DB 块里的模拟量如 DB10.DBD0映射为浮点数变量。我项目里统一把模拟量规划在 DB 区域数据格式用 REAL32 位浮点数。有一个需要特别小心的坑西门子的 REAL 类型用 IEEE 754 标准MCGS 读这种变量时数据类型选对就行但如果你用 INT 类型存数据且数据可能超过 32767 或者为负值就需要在 PLC 侧换算加上偏移量容易出错。我的经验是模拟量在 PLC 里全部转成 REAL 再扔给 MCGS上位机只负责显示不在画面上做复杂的数学转换。还有一个变量导入的实操技巧MCGS 自带的“变量导入/导出”功能支持从 Excel 批量导入变量定义。项目里几百个变量手工一个个建太痛苦我通常会先在 Excel 里把变量名、数据类型、对应 PLC 地址列出来然后导入 MCGS效率能提升好几倍。这里要注意变量命名规范尽量用“字母下划线”格式MCGS 对中文变量名的支持稍差画面脚本里引用时容易出问题。4.3 画面对象与动画连接MCGS 组态的动画连接功能能把数据库变量的变化直观反映在画面上。我用的最多的几个连接方式颜色变化连接设备状态字的值变化时图形的前景色随之变化运行绿色、故障红色、停止灰色填充程度连接煤仓料位用“填充”动画视觉效果就像煤仓里的煤面在升高降低数值输出连接皮带秤瞬时流量、电机电流、皮带速度直接数值显示在对应设备旁边按钮指令操作单击按钮改变 PLC 里的位变量实现启动、停止操作这里要强调一点MCGS 里的“按钮操作”通常通过“用户策略”或“脚本程序”实现不是画面上放个按钮就完事。比如启动皮带时需要同时满足启动允许条件所以按钮脚本里要先检查联锁状态字联锁条件满足时才把启动位变量置 1条件不满足时弹出“不允许启动请检查联锁”的提示。这个逻辑如果放在 PLC 程序里做也行但放在上位机做可以给操作员更直接的反馈。我采用的是“PLC 逻辑为主上位机做辅助提示”的方案上位机脚本判断联锁状态字后把结果以文本提示框的形式展示出来即使脚本出 bugPLC 侧的联锁逻辑仍然兜底保护不会出事故。4.4 报警与实时趋势曲线配置工业项目里“数据记录”和“报警记录”是检验上位机是否合格的重要指标。MCGS 组态的报警功能配置起来很简单难点在报警信息怎么分类、怎么分级。我给这套系统设计了四类报警设备故障报警红色闪烁、工艺参数越限报警黄色提示、设备状态变化报警如皮带启动成功的提示性报警、系统通信报警PLC 通信异常。前两类报警必须在报警列表中用醒目字体显示并伴随声音提示第三类报警记录到历史日志供事后查看第四类报警出现时整个画面所有数据变成灰色提示操作员“数据可能不可靠”并切换到本地手动控制模式。趋势曲线方面我做了实时曲线和历史曲线两种。实时曲线显示最近 2 小时的电流、温度变化历史曲线可以按时间段查询任意一天的皮带秤累计量变化。实际调试中发现历史曲线查询性能和处理的数据量有关数据存储要定时归档否则运行几个月后查询会越来越慢。MCGS 组态里有“历史数据存储周期”参数我典型配置是模拟量 1 秒存储一次开关量变化时存储这样数据量适中查询速度也可以接受。5. 通信故障排查与项目调试实录5.1 上电调试前的硬件检查清单新系统上电前逐项检查硬件状态。我踩过很多次坑之后总结了一份清单能有效减少上电后的“惊喜”检查所有模块的供电电压CPU 电源、I/O 电源、传感器电源的 24V 是否正常用万用表量不是只看电源指示灯检查每个数字量输入模块的公共端接线S7-300 的 DI 模块有源型/漏型之分公共端接错会导致输入信号全部无效检查数字量输出模块的负载侧隔离继电器模组和 PLC 模块之间是否共地输出模块的 M 端不能悬空检查模拟量模块的接线类型4-20mA 两线制传感器要短接模块的相应端子接成三线制模式会导致读数异常检查通信电缆以太网线是否压接可靠、屏蔽层是否接地、通信距离是否超长检查设备启动回路接触器主触头相序是否正确热继电器整定电流是否和设备额定电流匹配5.2 通信连不上的典型故障场景调试期间通信问题是最常见的我总结出几种典型的“通信不上”场景和对应的排查路径。“MCGS 提示通信超时PLC 侧 RUN 指示灯正常”这种最常见。优先检查 IP 地址是否在同一网段、网线是否插紧、CP343-1 模块指示灯是否正常。如果指示灯常亮但通信还是超时大概率是 MCGS 驱动里的“机架号”或“槽号”填错了。我遇到过最隐蔽的一次问题MCGS 装了全套安全防护软件防火墙把 PLC 通信端口拦截了导致上位机一直连不上 PLC。当时排查了 IP、网线、驱动配置都没问题最后关掉防火墙试了一下立刻通了。这类问题虽然看起来很简单但困扰了我大半天写在这里希望大家少走弯路。“通信正常但画面数据偶尔刷新慢或者有跳变”应该是模拟量信号问题。皮带秤的 4-20mA 信号在电场干扰下会出现抖动。处理方法是信号电缆用屏蔽双绞线屏蔽层在 PLC 柜侧单端接地如果仪表和 PLC 距离比较远中间加装信号隔离器。模拟量信号干扰问题加隔离器几乎是“一劳永逸”的解法成本也不高。“画面数据一直显示 0但 PLC 程序监控有值”多数是因为 MCGS 驱动支持的数据区类型有限。比如你在 PLC 里用的是 DB 块的非优化访问MCGS 有时对“符号寻址”和“绝对寻址”的处理方式不同如果定义变量时选错了寻址方式数据就读不出来。S7-300 的 DB 块访问方式默认是绝对寻址MCGS 里地址写成“DB10,DBD0”这种格式如果写成了“DB10,0.0”就会解析失败。这种细节问题出在组态软件对西门子地址格式兼容性上不是通断问题最难查但查出来后解决也快。5.3 现场联调顺序启停一次成功的关键顺序启停逻辑写好后第一次现场试车是最紧张的。我见过不少项目程序在仿真器里跑得挺好一到现场就不行原因大多是现场信号没有及时到位。顺序启动试车我一般会拆成三步走第一步单独调试每台设备的“单机启动”功能。在 PLC 程序里设置一个“单机/联锁”切换位单机模式下取消下游联锁条件可以单独启动每台皮带或碎煤机目的是验证每台设备的接触器动作、运行反馈、保护信号全部正常。这一步如果设备接线有问题能当场发现并处理。第二步把“单机/联锁”切回联锁模式在设备空载状态下跑一次逆煤流启动和顺煤流停车。空载试车主要验证逻辑链路是否完整启动顺序是否正确、启动预告是否响铃、每个设备的启动反馈是否在设定时间内到位、启动过程有没有“误报故障”。如果空载都启动不起来那肯定是逻辑或者接线问题不需要带煤试车就能排查。第三步空载正常后再进行带煤试车。第一次带煤时开始不要满负荷先小煤量走一遍观察皮带是否跑偏、碎煤机电流是否稳定、犁煤器卸煤是否顺畅。这时最容易发现的是“物料冲击导致皮带跑偏”和“犁煤器位置不到位导致漏煤”这两类工艺问题。小煤量跑通后再逐步加大到正常负荷。这套三步走的方法看起来保守但实际效果非常好。之前有个项目为了赶进度前两步没跑透就直接带煤试车结果启动过程中发现 3 号皮带速度反馈没到整条线启动被中断煤堆在皮带上清理花了整整半天。6. 运行体验与维护优化建议系统投运后重点关注几个运行数据皮带运行效率、故障停车次数、保护动作记录、上位机数据稳定性。这套基于 S7-300 和 MCGS 的组合实际运行下来给我的整体印象是“皮实稳定”。结合后续维护中积累的经验我列出几条值得优化的方向定期更新 PLC 程序的备份文件尤其是做了逻辑修改之后。S7-300 的存储卡容量不大但保存原程序没问题。每次调试后把最终程序上传保存到工程文件夹文件名带日期和修改说明防止过了几个月有人问“这个程序是哪一版”的时候完全答不上来。皮带秤的标定要定期做。输煤量的准确性直接影响煤耗核算建议每季度标定一次。标定方法用链码标定或者实物标定实物标定更准但费人工大多厂子会用链码标定作为日常校验。重视报警记录的分析。不要只看当前有没有故障要定期导出 MCGS 的历史报警记录分析哪台设备故障频率高、哪类保护动作次数多这些数据能指导预防性维护。比如跑偏开关频繁动作可能是皮带跑偏调偏没有调到位、托辊磨损或者物料落料点偏移早点处理能避免皮带边缘磨损和撕裂事故。画面添加检修状态标志。设备检修时在上位机画面上把该设备标记为“检修”程序自动禁止该设备的启动操作同时显示“检修挂牌中”的提示防止远程误操作启动设备造成人身伤害。另外MCGS 组态软件虽然是一款成熟产品但使用中也有些小技巧值得分享。比如画面运行时如果感觉刷新卡顿检查一下是不是有大量的图元启用了不必要的动画刷新建议对状态稳定的设备比如长期运行且状态不变的电机就不用加动画闪烁效果只在状态切换时闪烁提示三五秒即可。这样既保证了提示醒目又减轻了组态软件的画面刷新负担。这套输煤控制系统应该算是“标准工程”的典型做法PLC 负责底层逻辑和安全MCGS 负责操作和监视二者通过以太网联手把一条传统的输煤工艺线打造成了远程可控、故障可查、操作可追溯的自动化系统。复盘整个项目最大的心得就是“先在流程上想明白再在程序里去实现”。有的程序员上来就写梯形图写到一半发现漏了某个联锁条件又回头改逻辑改完逻辑发现 I/O 点不够用这样的人机料法环处处被动。正确的顺序永远是先捋清楚设备、顺序、约束再定 I/O再写程序最后才是配上位机画面。如果你正在做类似的项目希望这篇内容能帮你少走一些弯路。每个电厂的输煤系统在细节上都不一样但控制逻辑的骨架和调试方法是可以通用的。把握好“安全第一、逻辑清晰、分级保护、便于维护”这十六个字这套系统就不会出大问题。