去年给某厂一台小型电加热蒸汽锅炉做控制系统改造,老柜子是继电器加电接点压力表的方案,操作工得守在柜子跟前,夜班稍微打个盹,压力顶到上限就直接跳机。甲方提的要求倒是不复杂:值班室要能看到压力、液位、温度,能设定运行压力,历史报警要能查,还得有两套独立的安全联锁。预算不大、柜体空间又紧,最后定的方案很常见——西门子S7-200 SMART PLC 加昆仑通态触摸屏。这套组合在中小型锅炉、换热站、热处理设备里出镜率极高,PLC管逻辑和调节,触摸屏管显控和人机交互,性价比合适,调试工具成熟,维修电工也能很快上手。这篇就把从选型、编程、组态到现场调试的完整过程复盘一遍,适合正在做设备改造、非标成套的电工和自控工程师参考。
1. 选型逻辑:为什么S7-200 SMART和昆仑通态组合在中小锅炉项目里这么顺
1.1 老方案的核心痛点在哪里
原来的继电器加仪表方案,本质上是把每个控制条件变成一根硬线、一个触点。启动条件多了,柜子里全是中间继电器和时间继电器,逻辑稍微改一下就要重新接线,图纸和实际对不上是常态。更麻烦的是没法做连续调节,加热管要么全开要么全关,蒸汽压力在设定值附近来回冲,阀门和接触器磨损很快。
甲方这次提的需求里有一条很关键——要能查报警记录和趋势。这在老方案里完全做不到,电接点压力表只能告诉你“跳了”,不能告诉你“跳之前压力是怎么爬上去的”。这时候就必须上带存储和通信的控制设备,PLC加触摸屏是最自然的替代方案。
1.2 为什么选S7-200 SMART而不是S7-1200或国产PLC
先算一下IO点。以小型电加热蒸汽锅炉为例,数字量输入:启动、停止、急停、手自动切换、液位上限、液位下限、压力上限、故障复位、水泵反馈、接触器反馈,约10到14点。数字量输出:加热接触器两组到三组、补水泵、声光报警器、运行指示灯,约8到10点。模拟量输入:蒸汽压力、炉水液位、炉膛或蒸汽温度,算3路。模拟量输出:如果要控制电动调节阀或变频器,预留1路。加起来也就是24个DI、16个DO、4路AI、1路AO的水准。
S7-200 SMART的SR40本体带24DI和16DO,扩展一个EM AM06(4路AI加2路AO)就全部搞定,连第二个扩展模块都用不着。S7-1200当然也能做,但CPU、软件授权、通信模块加起来价格翻出去好几倍,对这个项目来说性能过剩。S7-200 SMART自带以太网口,和触摸屏通信不需要额外加通信模块或DP接头,这是选它很重要的原因——少一个环节就少一个故障点。
1.3 触摸屏为什么配昆仑通态而不是其他品牌
昆仑通态的TPC系列在中小项目里用得多,核心原因是组态软件免费、上手快、供货稳定,而且报警、趋势、数据存盘这些功能都是标配。之前我也用过一些进口品牌的触摸屏,画面流畅度确实好,但软件授权贵,遇到现场改画面还得专门找有加密狗的人,甲方后期维护成本太高。
有人会问,既然S7-200 SMART有网口,为什么不直接用PC加组态软件做上位机?原因是这台锅炉的控制室没有专门放电脑的位置,甲方也不希望操作工对着电脑系统操作。触摸屏一体化的可靠性高,上电就进运行画面,不会出现电脑开机卡死、Windows更新重启的问题。操作工看到的是“仪表盘”,心理上更容易接受。
2. 先把锅炉工艺想清楚再动程序:控制需求逐项拆解
2.1 锅炉控制的本质是能量平衡和水量平衡
锅炉不管烧电、烧气还是烧油,控制逻辑的底层都是两件事:一是让产热和用热匹配,二是让进水和蒸发匹配。用热负荷大了,蒸汽压力往下掉,就要增加加热功率;水位低了,说明蒸发量大于补水量,就要补水。理解这个平衡关系,再去写程序,思路会非常清晰。
以电加热蒸汽锅炉为例,加热管把水加热产生蒸汽,蒸汽输出到分汽缸供生产使用。用户端用汽量变化时,蒸汽压力会跟着波动。控制目标就是把蒸汽压力稳定在设定值附近,同时保证汽包水位在安全范围内。温度这个量在这类锅炉里更像是监视量,比如炉水温度、排烟温度,用于判断加热器是否异常、换热是否正常。
2.2 三个模拟量、两个控制回路、一组保护
我把控制需求拆成表,方便后面编程时对照:
| 控制对象 | 传感器类型 | 信号类型 | 用途 |
|---|---|---|---|
| 蒸汽压力 | 压力变送器 | 4-20mA | PID调节加热功率,超压联锁 |
| 炉水液位 | 液位变送器 | 4-20mA | 补水启停或PID补水,低水位联锁 |
| 炉水/烟温 | 温度变送器 | 4-20mA | 温度监视,超温联锁 |
| 电接点压力表 | 开关量 | 硬接线 | 独立于PLC的超压硬保护 |
| 液位开关 | 浮球开关 | 开关量 | 独立于PLC的低水位硬保护 |
两个控制回路分别是压力/温度调节回路和水位调节回路。压力回路在连续负荷变化的工况下建议用PID,把输出映射到加热管分组投切上;如果锅炉只在固定负荷下间断运行,用两位式控制加滞回也能凑合,但压力波动会大一些。水位回路我习惯用“低限启泵、高限停泵、中间死区”的逻辑,比PID水位调节更皮实,毕竟补水泵频繁启停不是好事。
2.3 手自动检修三种模式必须分开
程序一开始就要把运行模式分成手动、自动和检修三种。手动模式用于设备调试和故障处理,操作员可以直接启停每一路输出;自动模式是正常生产模式,所有设备由程序逻辑控制;检修模式则把输出全部切断,只保留监视功能,防止调试过程中设备突然动作伤人。
这三种模式要在程序里做硬互锁,不能靠操作员自觉。具体做法是:手动和自动模式通过选择开关切换,切换时输出全部复位,避免在切换瞬间接触器误动作;检修模式用一个带钥匙的旋钮控制,钥匙只有维护人员有。别小看这个设计,现场出事故往往不是在程序逻辑复杂的地方,而是在这种“觉得不会出错”的模式切换点上。
3. 硬件拓扑与接线细节:这些地方出错比程序错还难查
3.1 一套完整的硬件清单
下面是我在这个项目里实际使用的硬件清单,供参考:
| 设备 | 型号/规格 | 数量 | 说明 |
|---|---|---|---|
| PLC CPU | S7-200 SMART SR40 | 1 | 24DI/16DO继电器输出 |
| 模拟量扩展 | EM AM06 | 1 | 4AI/2AO,满足全部模拟量需求 |
| 触摸屏 | 昆仑通态TPC7062TX | 1 | 7寸,画面对简单系统够用 |
| 压力变送器 | 4-20mA两线制,0-1.6MPa | 1 | 蒸汽压力 |
| 液位变送器 | 4-20mA两线制,0-5m | 1 | 锅炉水位 |
| 温度变送器 | Pt100配变送器输出4-20mA | 1 | 炉水温度 |
| 电接点压力表 | 上限触点可调 | 1 | 超压硬保护 |
| 浮球液位开关 | 低水位触点 | 1 | 低水位硬保护 |
| 开关电源 | 24V/5A | 1 | PLC及变送器供电 |
| 交换机 | 工业级5口 | 1 | PLC、触摸屏、电脑联网 |
| 接触器/继电器 | 按负载电流选 | 若干 | 加热组、水泵、报警 |
柜体空间紧张的话,7寸屏可能刚好够,但如果后期要加画面、配方、多组趋势,建议直接上10寸,价格差不了太多,操作体验完全不同。
3.2 模拟量接线的几个隐藏规则
模拟量信号看着简单,实际上是最容易出鬼的地方。我的经验是这几个规则必须遵守:第一,PLC模拟量模块上没用的输入通道要把正负端子短接,否则悬空的通道会产生悬浮电压,串扰到旁边正在使用的通道,现场表现就是压力值无规律跳动;第二,两线制变送器的供电最好单独从开关电源引,不要和PLC输出回路的24V共用同一组端子排,特别是接触器多、启停频繁的柜子,电压波动会直接砸到模拟量上;第三,屏蔽层必须单端接地,在PLC柜内这一端接地,变送器那一端不接,两边都接地反而会形成地环流。
温度变送器如果用Pt100,现场我习惯直接买“温度变送器+Pt100”的组合,输出4-20mA进EM AM06,而不是把Pt100直接接到热电阻模块。原因很简单,维护人员手里备用的都是4-20mA信号发生器,以后校表、查线都方便。
3.3 安全联锁为什么要硬接线
程序里的联锁做得再好,也只是“软保护”。PLC有可能死机、程序有可能跑飞、模拟量模块有可能断线,这时候如果唯一的安全保障在程序里,风险就太大了。所以超压和低水位这两个最严重的故障,必须同时有硬保护回路。
我在主接触器线圈回路上串了电接点压力表的上限触点和浮球液位开关的低水位触点,不管PLC处于什么状态,只要这两个触点动作,主接触器直接断电,加热管立即停止。这套硬回路不需要任何程序参与,是真正的最后一道防线。调试时我专门做了一次测试:拔掉PLC网线让程序停止,然后手动短接压力表触点模拟超压,接触器照常断开,效果可靠。现场验收时,甲方还会专门看这个演示。
4. PLC程序设计的核心:PID、补水联锁和手自动切换
4.1 程序结构和模块划分
S7-200 SMART的编程软件是STEP 7-Micro/WIN SMART,梯形图为主,也支持STL。程序我分成主程序、手动子程序、自动子程序、连锁保护子程序和模拟量处理子程序。不要把逻辑全堆在主程序里,否则在线监控时根本分不清哪段是哪段,出了问题只能一段段翻,效率极低。
模拟量处理子程序负责把AIW原始值换算成工程值。S7-200 SMART模拟量输入是0到27648对应4到20mA,换算公式是:工程值 = (AIW原值 − 0) × (量程上限 − 量程下限) / 27648 + 量程下限。注意,量程下限不等于变送器量程下限,而是0mA对应的值0,但实际我们只用4到20mA这一段,所以更准确的写法是:工程值 = (AIW − 5530) × (量程上限 − 量程下限) / (27648 − 5530) + 量程下限。5530是4mA对应的数字量,我习惯按这个算,初始量程误差小很多。
4.2 用PID向导生成压力控制回路
S7-200 SMART的PID向导在Micro/WIN SMART里直接调用,设定回路号、给定值、过程值和输出即可。对锅炉压力这种大惯性对象,我在向导里把比例增益先放到2到3,积分时间放到5分钟左右,微分直接关闭。这里有个容易犯的错误:微分对噪声极其敏感,而锅炉压力信号本身就有波动,微分稍微起作用,输出就会剧烈抖动,加热管跟着频繁投切。
PID输出不能直接去控制接触器,要先把0到100%的输出映射成加热管的投切组数。比如三组加热管,PID输出在0到33%投一组,33到66%投两组,66%以上投三组,并且在切换时采用“先投后切”或者“循环投切”的策略,避免某一组加热管一直工作、其他两组长期休息。我在这里加了一个小的滞回区,输出在阈值附近时不动作,防止接触器反复跳动。
4.3 水位补水逻辑
水位控制我用的是带死区的两位式逻辑:液位低于20%时启动补水泵,高于80%时停止补水泵,中间区域保持原状态。这个逻辑简单可靠,泵不会频繁启停。如果甲方要求更高,希望连续调节补水阀开度,可以把PID输出给到电动调节阀,但相应要增加一路模拟量输出和阀门反馈信号,成本和维护量都会上涨。
补水还有一个细节:如果锅炉正在超压联锁状态下,补水泵不应该启动,因为此时炉内压力异常,补水可能引发危险。我把补水泵的启动条件里加上了“无超压、无急停、非检修模式”,逻辑上多串几个触点,运行起来就少很多隐患。
4.4 联锁保护逻辑的记忆与复位
联锁保护的核心不只是“断输出”,还要“保持故障状态”。否则压力瞬间超了一下,程序把加热停了,压力又跌回正常值,程序自动恢复输出,这种自动复位在现场是危险的——操作工还没到现场检查,设备自己又启动了。
我用了“置位优先”的记忆回路,STL大概是这样的:
LD I0.0 // 急停按钮常闭触点,断开表示急停 O M10.0 // 原故障保持位 AN M10.1 // 故障复位按钮 = M10.0 // 停炉状态 LD M10.0 AN I0.1 // 非超压触点 AN I0.2 // 非低水位触点 = Q0.0 // 主加热接触器故障发生后M10.0置位,即使故障条件消失也保持,直到操作员到现场确认后按复位按钮。每个报警条件在触摸屏上有单独的状态显示,操作员不用猜到底哪里出了问题,直接看屏幕就能知道是超压、低水位还是急停。
5. 昆仑通态触摸屏组态思路:画面不是画得好看,而是要让人看得懂
5.1 画面划分和首屏设计
昆仑通态的组态软件是MCGS嵌入版,画面设计的原则是“一屏看懂,三秒上手”。我把整个工程分成了五块:总览画面、参数设置画面、手动操作画面、报警记录画面和趋势查询画面。画面之间通过固定位置的切换按钮跳转,按钮在每一屏的同一位置,操作工习惯之后不需要找。
首屏放了锅炉和水泵的简化示意图,用几个矩形和圆形图元拼出来,旁边直接显示压力、液位、温度的实时数值,运行状态用红绿颜色区分,报警状态闪烁显示。操作工关心的不是画面多精美,而是“现在到底正不正常”。所以首屏上我把三个模拟量数值做得特别大,报警灯放在最显眼的位置,辅助的文字说明全部去掉。
5.2 建立变量连接
MCGS的设备窗口里添加设备驱动,选择S7-200 SMART对应的驱动,填入PLC的IP地址和端口。变量连接时要注意数据类型两边必须一致,否则读出来的数全是乱的。我在PLC程序里把PID内部计算用的浮点数,统一放大成整数存放在VW区,触摸屏读取VW时按16位无符号数处理,再乘上对应的系数。这样通信数据量小,稳定性高,也不容易出现浮点数地址对齐的问题。
| PLC地址 | 数据类型 | MCGS变量 | 说明 |
|---|---|---|---|
| VW100 | 16位无符号 | 当前压力 | 实际压力=读数/100,单位MPa |
| VW104 | 16位无符号 | 当前液位 | 实际液位=读数/10,单位% |
| VW108 | 16位无符号 | 当前温度 | 实际温度=读数/10,单位℃ |
| M0.0 | 位 | 急停状态 | 1表示急停动作 |
| M0.1 | 位 | 超压状态 | 1表示超压 |
| Q0.0 | 位 | 主加热运行 | 1表示加热投入 |
5.3 报警记录与数据存盘
报警功能是触摸屏最值钱的功能之一。我在MCGS里给压力、液位、温度分别配了上限和下限报警,报警触发后显示在报警画面,同时写入存盘。为了不误报,报警判断我放在PLC程序里做,加了2秒延时确认,而不是在触摸屏里直接拿原始值比较,这样现场信号稍有波动也不会乱报。
数据存盘方面,MCGS可以设置存盘周期,把压力、液位、温度实时存到触摸屏的U盘里。甲方后续想查某个时间段的运行趋势,直接把U盘拔下来拷贝就行。我一般建议客户把存盘周期设成5秒一次,既能看清趋势,U盘寿命也比较好。
5.4 用户权限怎么设计
操作员和工程师的权限必须分开。普通操作员只能看画面、启动和停止设备,不能修改压力设定值、PID参数和报警限值;工程师和管理员才有参数修改权限。我在MCGS的用户管理里设置了两个用户组,参数设置画面分配了权限,操作员登录后打开设置画面会提示“无权限”。这个功能看起来不起眼,但验收时甲方特别满意,因为以前有人乱改参数导致设备报警,事后又没人承认。
6. 通信组态与现场故障排查:S7协议对接的实操细节
6.1 PLC和触摸屏的IP地址分配
S7-200 SMART和昆仑通态触摸屏走以太网通信,首先要做的是把IP地址规划好。我用了一个工业交换机把PLC、触摸屏和笔记本电脑连在一起,IP分配如下:
| 设备 | IP地址 | 子网掩码 |
|---|---|---|
| PLC CPU | 192.168.2.10 | 255.255.255.0 |
| 触摸屏 | 192.168.2.20 | 255.255.255.0 |
| 编程电脑 | 192.168.2.30 | 255.255.255.0 |
PLC的IP地址在Micro/WIN SMART的系统块里设置,设置完要下载到PLC才会生效。触摸屏的IP地址在MCGS的设备窗口里设置,下载工程时会一并写入屏内。注意,触摸屏组态里填的IP地址是PLC的地址,别填成了触摸屏自己的地址,这个错误我见别人犯过好几次。
6.2 工程下载和上电顺序
调试时先把PLC程序下载进去,用Micro/WIN SMART在线监控确认输入输出正常,再下载触摸屏工程。触摸屏工程通过网线配合MCGS嵌入版软件下载,也可以把工程拷到U盘插到触摸屏上升级,后者在现场没有电脑时非常方便。
上电顺序我们按“先总闸、再触摸屏、最后PLC”来执行,断电时反过来,避免带载插拔通信线产生瞬态脉冲。有一次调试中通信突然断开,排查了半天发现是触摸屏的网线接口被现场的电磁干扰影响,水晶头重新压了一遍就正常了。所以通信电缆的水晶头一定用带屏蔽的成品线,现场手工压线容易压不实。
6.3 通信失败的排查链路
通信问题是最容易让人头秃的。我总结了一套排查顺序,遇到通信失败就按这个来:
| 现象 | 可能原因 | 验证方法 |
|---|---|---|
| 编程软件ping不通PLC | 网线没插好、IP不在同一网段 | 命令行ping,先解决物理层 |
| 触摸屏报“设备连接失败” | PLC地址填错、端口不对、PLC未运行 | 检查触摸屏设备配置里的IP和端口号 |
| 通信时断时续 | 网线屏蔽差、电源干扰、交换机质量差 | 换工业交换机,检查电源纹波 |
| 数据能通但数值不对 | 数据类型不匹配、地址偏移错误 | 对照地址映射表逐点核对 |
我在这里特别提醒一个事:PLC和触摸屏用交换机连,而不是直连。直连在理论上可行,但调试时电脑也要连PLC,换来换去非常麻烦。交换机用工业级的,家用交换机在柜内电磁环境下偶尔会死机,工业级的价格也没贵多少。
7. 现场调试中踩过的几个坑:从液位漂移到PID振荡
7.1 液位信号漂移
设备运行到第二天,操作工反映液位数值会慢慢从40%爬到90%,但实际锅炉水位并没有变。我过去查了之后发现,液位变送器的取样管里有气泡,气泡逐渐聚集,差压值跟着变大,液位显示就越来越高。处理方法是打开排污阀排掉气泡,同时让取样管保持坡度,防止气泡积聚。
这类问题其实不是程序问题,而是仪表安装问题。我的教训是,调试前期就要把取样管路固定好、排气管朝上、排污阀门装到位,别等到运行了再返工。液位信号如果还在跳,程序里可以加一个一阶惯性滤波,时间常数设2到3秒,能滤掉一部分波动,但根本解决还得靠现场管路处理。
7.2 PID输出一跳一跳
压力接近设定值时,PID输出在20%到80%之间来回跳,加热管组也跟着频繁切换,这是我调试时遇到最头疼的问题。最初怀疑PID参数不合适,把比例增益从3降到1,积分时间拉长到10分钟,情况有改善但没根治。
后来仔细查了才发现,问题出在过程值信号的噪声上。蒸汽压力波动本身就带高频分量,微分项虽然设为零,但PID向导里的输出变化率限幅我没设置,导致输出在极短时间内可以大幅变化。把输出变化率限幅设为每周期最大变化5%,输出立刻平缓下来,加热组切换次数明显减少,接触器温升也正常了。
7.3 联锁测试中的临界抖动
联锁测试时发现一个尴尬问题:压力到达上限值附近时,由于变送器输出有微小波动,压力一会儿大于上限、一会儿小于上限,导致联锁动作后很快又复位,来回切换。这个问题的根源是比较指令没有回差,临界点上任何一个数字抖动都会触发翻转。
解决方法是把联锁比较改成“动作值+回差值”:压力超过1.5MPa时联锁动作,但必须回落到1.45MPa以下才能解除。回差设成量程的1%到2%,既不影响安全性,又避免临界抖动。这个思路同样适用于液位保护和温度保护。我在程序里统一封装了一个“带回差的比较块”,后续项目直接调用,省了很多事。
7.4 断线测试和断电重启测试不能跳过
程序写完不等于系统可靠,现场测试阶段我习惯做三个破坏性测试:一是模拟量断线测试,直接拆掉压力变送器的信号线,观察PLC是否进入超压联锁或故障报警状态,因为4-20mA断线时AIW可能变成0或超上限,程序必须能识别并停炉;二是断电重启测试,在设备运行状态下直接断掉PLC电源再恢复,看程序是否进入安全状态,而不是自动启动加热;三是手自动切换测试,在自动运行中去拨手动开关,观察输出是否复位、有没有接触器抖动。
这三个测试看着简单,很多项目却因为没做而在投运后出洋相。尤其是断电重启,如果PLC重新上电后故障记忆丢失,加热管直接投入,后果可能很严重。我在程序里用了断电保持的V区来存储故障状态,保证重新上电时设备不会自动恢复运行。这点建议同行们务必留意。
写到最后,我个人的体会是:这套系统能稳定跑起来,关键不在PID参数调得多高级,而在于把安全逻辑先立住、把信号干扰处理好。那台锅炉交付后,甲方最常夸的其实是报警记录和趋势查询,以前出了事只能靠猜,现在能在触摸屏里翻到几分钟前的压力曲线。如果以后接类似项目,我会直接把通信参数和地址映射表整理成文档存档,调试沟通能省一半时间。另外再啰嗦一句,超压保护和低水位保护这种安全回路,无论如何都要硬接线和PLC软逻辑双保险,这是对自己负责,也是对现场的操作工负责。