
1. 项目背景与核心难点拆解干工控这行的朋友应该都有过这种体验现场那套SCADA系统用了七八年甚至十几年PLC、仪表、DCS的数据采集、画面组态、历史趋势都跑得好好的厂里天天靠它盯着生产。可时代变了生产部门的要求也变了光有画面和趋势已经不够大家要的是异常提前预警、告警推送到手机、故障自动分级通知。这时候你回头看一眼那套老旧SCADA发现一个很现实的问题它压根不支持这些功能甚至连告警推送都没有。直接换系统那是伤筋动骨的大工程。老旧系统的点位表动辄几千个画面组态、历史库、操作权限这些都要迁移停产周期根本批不下来。更麻烦的是现场设备还在持续运行数据链路完全不能断。我这次做的项目就是解决这个矛盾在老SCADA系统完全不动的前提下无损增加告警能力。核心思路是旁路加装边缘计算网关用一路独立的采集通道把现场设备的数据“抄”一份出来在网关里做告警规则解析和通知推送。整个过程不碰原有的PLC程序、不改SCADA组态、不断生产老系统那边一根线都不动。先把这个项目的核心需求拆开看其实就三点第一采集要独立。新的告警系统不能在老SCADA的链路上做任何串联操作否则老系统一旦出问题责任说不清。旁路方案的本质是让告警系统和原有系统并行存在各走各的通道。第二告警要实时。老旧SCADA里很多告警是靠值班人员盯着画面发现的人总有走神的时候。边缘计算网关需要做到秒级数据采集和规则判断第一时间把告警发出去。第三通知要落地。光在网关本地亮个灯没用告警要能推到中控室的大屏、值班组长的手机、运维人员的微信/钉钉/短信。这条链路在老SCADA里是没有的必须靠边缘网关补上。2. 为什么选旁路架构方案选型的取舍过程接到这个需求时有人可能会想直接改老SCADA的组态加几个告警脚本进去。这事理论上可行但实际操作中坑非常多。老SCADA多是国外品牌或者早期国产组态软件底层是闭源的你想在它里面加告警推送逻辑得看它支不支持外部接口。有些老组态软件连数据库都只能导出CSV更别提调Webhook了。换个思路在PLC和SCADA之间串一个网关做数据转发这叫做串接方案。这个方案的问题是中间任何一个环节出故障整条数据链路就断了老SCADA的画面直接僵死。现场工艺人员对这种事是零容忍的出一次问题以后就别想再碰他们的系统了。旁路架构为什么安全本质上是利用网络交换机的镜像口或者加一个分路器把现场设备和老SCADA之间的通信报文复制一份给边缘网关。网关只收不改老系统该收什么还收什么两边完全隔离。打个比方这就好比你家里原来的宽带有线网络跑得好好的你想加一个Wi-Fi不是去把网线剪断了重新接一个路由器而是在光猫旁边并联一台无线路由器原来的有线口照常工作无线路由器单独从光猫分出来的口取信号。旁路就是这个道理老系统和新增系统各走各的路互不干扰。方案选型时我还对比过另外一种方式——直接从PLC的编程口或调试口去读数据。很多PLC都带有额外的编程口或者以太网调试口理论上可以从这里采集数据。但问题在于很多老现场的设备通信链路是环网或者串行总线你在设备端多挂一个采集器会影响原有通信的时序。有些老PLC的编程口在程序运行时会锁死外部读取会导致PLC进入调试模式严重的话直接停机。这个风险太大方案直接否决。最终确定的旁路链路是现场PLC/仪表 —— 工业以太网交换机 —— 老SCADA服务器 | ———— 边缘计算网关旁路镜像采集三种方案的对比整理成表格更方便决策方案类型对现有系统影响实施风险告警实时性后期拓展性修改老SCADA组态需停机修改风险高高依赖老系统差链路串接网关单点故障影响全线中高快中旁路镜像采集无影响完全隔离极低快毫秒级好3. 边缘计算网关选型与关键参数分析旁路方案确定后核心任务就是选一台合适的边缘计算网关。市面上的工业边缘网关产品很多几百到几万的都有但真正要满足这个项目的需求有几个参数是硬指标。3.1 必须支持端口镜像采集市面上有些网关标称支持Modbus TCP采集但那是主动去轮询设备。旁路场景下网关更多是被动接收交换机镜像过来的报文。这里要区分两种工作模式主动轮询模式网关作为Modbus主站主动去读PLC的寄存器。这种模式不需要镜像口但会占用PLC的通信带宽而且需要在网关里配置每个点位地址。被动镜像模式网关监听交换机镜像口的数据包从SCADA和PLC的通信报文里解析出点位数据。这种模式完全不占用PLC通信资源但对网关的协议解析能力要求高。我这次选的是同时支持两种模式的网关但实际部署用的是被动镜像模式。原因很简单老SCADA每隔几百毫秒本来就在轮询PLC这些报文里已经包含了我们需要的所有点位数据网关在旁边“监听”就行完全不需要额外通信开销。3.2 协议解析范围要匹配现场老旧系统的通信协议五花八门Modbus RTU、Modbus TCP是主流但也可能碰到三菱MC协议、西门子S7协议、欧姆龙FINS这些。选网关前先弄清楚现场PLC和SCADA之间用的是哪种协议。我这个项目现场是老旧的Modbus TCP协议网关解析起来没什么压力。如果你现场是西门子的S7协议注意要选支持S7-300/400/1200/1500全系列解析的网关而且解析深度要够能直接读到DB块的数据。3.3 算力和内存要求边缘计算网关毕竟不是普通的路由器它要承担告警规则判断和告警消息推送的工作。现场点位如果只有三五百个双核处理器加256MB内存就够用了。如果点位超过两千个建议上四核加1GB内存的配置否则在高频率数据刷新下网关的CPU占用率会飙升导致告警判断延迟。3.4 通信接口要够用边缘计算网关至少要具备以下接口2个以上千兆以太网口一个接镜像口一个接上层网络支持PoE供电选装现场取电方便的话更好RS485串口备用有些仪表只有串口输出4G/5G模块插槽如果告警要通过公网推送这个就很有必要针对这个项目的选型实际参数配置是这样的项目参数要求本项目配置处理器双核以上4核ARM Cortex-A53内存256MB以上1GB DDR4存储8GB以上16GB eMMC以太网口至少2个千兆口4个千兆口协议支持Modbus TCP/RTU、S7、MC、FINSModbus TCP/RTU为主支持扩展告警推送HTTP/HTTPS、MQTT、短信模块MQTT HTTP Webhook工作温度工业级-40℃~70℃-30℃~70℃供电DC 12~36V宽压DC 24V4. 核心实现从镜像口配置到告警上线的完整流程这部分是整个项目的实操核心。从现场勘察到告警真正推送到手机我按步骤把关键环节写透。4.1 交换机镜像口配置旁路方案的第一个关键步骤是把交换机上连接老SCADA服务器的那个端口配置成镜像源端口然后指定一个空闲端口作为镜像目的端口连接到边缘计算网关。不同品牌的交换机配置命令差异比较大以最常见的H3C和Cisco为例H3C交换机配置命令[H3C] mirroring-group 1 local [H3C] mirroring-group 1 mirroring-port GigabitEthernet 1/0/1 both [H3C] mirroring-group 1 monitor-port GigabitEthernet 1/0/2Cisco交换机配置命令Switch(config)# monitor session 1 source interface GigabitEthernet 0/1 both Switch(config)# monitor session 1 destination interface GigabitEthernet 0/2这里要特别注意镜像方向一定选both就是双向流量都要镜像。因为SCADA读取PLC数据是发送读请求报文PLC回复的报文里才带着实际数据值两个方向都需要解析。如果现场交换机不支持端口镜像比如一些老的傻瓜交换机那还有一个备选方案加一个分路器TAP。分路器纯物理复制信号不需要配置插上就能用稳定性也高但需要额外采购设备。有条件的情况下我还是推荐用镜像口少一个物理节点少一个故障点。4.2 网关网络参数规划接下来给边缘计算网关规划IP。这里有个经验之谈网关的IP千万不要和老SCADA、PLC在同一网段冲突哪怕你觉得不会冲突也不要。万一某天有人手动改了一台电脑的IP正好撞上车位那现场就热闹了。建议规划方式设备角色IP地址规划说明老SCADA服务器192.168.10.10原有地址不动PLC设备192.168.10.11 ~ 192.168.10.20原有地址不动边缘计算网关镜像口192.168.10.250旁路监听口同网段但高位静态IP边缘计算网关上行口192.168.88.88单独管理网段用于访问用镜像口配成同网段是为了让网关能直接解析二层的Modbus TCP报文这里不需要网关主动发包所以不会和现有设备产生冲突。如果交换机上开了端口隔离或者VLAN策略要确认镜像口能收到数据。4.3 点位表映射与告警规则配置网关拿到数据后第一件事是把原始报文里的寄存器地址映射成有意义的业务点。这个工作在网关的Web管理界面里完成有些网关也支持导入Excel点位表大批量点位还是Excel导入靠谱。比如现场有一台空压机它的运行状态存在PLC的保持寄存器40001地址中0表示停机1表示运行排气温度存在40002地址数值单位是摄氏度。在网关里配置点位点位名称寄存器地址数据类型采集周期告警阈值空压机运行状态40001Word500ms停机告警空压机排气温度40002Word500ms95℃告警配置告警规则时有几个细节值得注意。死区和回差值必须设置。Modbus TCP的轮询频率高数据很容易出现瞬时波动。比如压力值正常在0.6MPa如果告警阈值设成低于0.5MPa就报警那么系统加压过程中的瞬时抖动就可能导致误报。这时候给告警规则加一个回差值比如触发值为0.5MPa恢复值为0.55MPa可以有效过滤抖动。边缘计算网关的优势就在这里老SCADA的告警逻辑无法现场修改而网关里的规则随时可以调。告警分级和通知策略要结合现场。我一般把告警分成两级一是设备级告警比如PLC通信中断、设备停机、温度超限这类告警直接推送给值班长和维修工二是系统级告警比如SCADA服务器CPU过高、控制器故障这类告警推送给中控室主管和系统管理员。不同级别对应不同的通知渠道避免信息轰炸淹没关键告警。4.4 告警通知渠道打通告警通知是边缘计算网关最核心的附加值。老SCADA没有这个能力而网关可以做到告警消息秒级推送。通知渠道的配置方式有几种这里按优先级排序说明。Webhook推送到钉钉或企业微信。这个是目前最常用、成本最低的方案。在钉钉群里添加一个自定义机器人拿到Webhook地址后在网关里填上去然后在告警规则里绑定“发送到钉钉群”动作。网关内部会把告警信息拼装成JSON格式通过HTTP POST请求送过去。钉钉机器人的Webhook地址格式是https://oapi.dingtalk.com/robot/send?access_tokenxxxxxxxxxxxxxx网关侧配置告警推送内容模板发出来的消息能带点位名称、当前值、触发时间、告警等级这些信息。可以配置一个链接触发器实现首报和恢复通知的联动。MQTT推送到自建告警平台。如果厂里已经有物联网平台或者数据中台网关支持MQTT协议就非常方便。网关作为MQTT客户端把告警消息发布到指定Topic由平台统一汇总展示。这种方式的好处是告警数据能沉淀下来做后续分析。短信网关推送。有些无人值守站场值班人员不一定在电脑旁边短信是最可靠的兜底方案。边缘网关支持插4G模块并内置短信发送接口告警触发时直接把短信发到指定手机号。注意短信费用问题一般只对最高级别的告警开短信通知。结合前面提到的Zabbix告警实践。现在很多工厂的IT运维组都用Zabbix监控工业主机网络设备告警通知走钉钉或者企业微信Webhook已经很成熟了。边缘计算网关把SCADA设备层的告警也接入同一条Webhook链路这样中控室和IT运维在一个群里就能同时看到设备告警和IT基础设施告警避免信息孤岛。4.5 告警消息的确认与恢复机制老SCADA做告警值班人员可以在操作员站上确认消音。旁路加装的边缘计算网关也要考虑这个问题不然告警只能发出去无法确认时间长了会被当成“狼来了”。网关的告警引擎支持以下状态流转触发态告警条件满足立即推送首报通知保持态告警避免重复推送内部进行去抖恢复态采集值恢复到正常范围推送恢复通知确认态人工在网关Web页面或第三方平台确认告警这里面最关键的是告警去抖逻辑。比如温度在95℃附近来回跳如果不加去抖网关会反复发送几十条告警把钉钉群直接刷屏。去抖时间的设置建议按告警类型区分对直接停机的联锁信号去抖可以设短一点比如5秒对温度、压力这类缓变量去抖设30~60秒更合理。5. 老SCADA和PLC的区别与关系给非自动化背景读者的知识铺垫这里单独写一节因为很多搞IT或者搞管理的朋友看这类项目时经常会混淆几个概念。简单说清楚SCADA、HMI、PLC分别是什么角色。PLC是可编程逻辑控制器本质是现场设备的大脑。它直接控制电机启停、阀门开闭、温度调节这些物理动作根据传感器输入信号执行程序逻辑。PLC输出端接的可能是接触器、变频器、电磁阀它运行在设备层。HMI是人机界面本质是操作面板。传统意义上HMI就是触摸屏或工控机上显示的画面操作员通过它按按钮、看数据、确认报警。HMI直接和PLC通信一般部署在设备旁边。SCADA是数据采集与监控系统本质是工厂级的中枢。它把分布在车间甚至厂区各处的PLC、仪表、DCS的数据汇总到中控室在同一套画面上统一展示、趋势分析、集中告警、历史归档。SCADA通常跑在服务器上操作员站通过网络访问。用一个通俗的类比PLC是现场员工负责干活HMI是贴在工位上的操作说明书和按钮板员工旁边就有一份SCADA是车间主任的控制室能看到全车间所有工位的状态哪个工位出问题了它最清楚本项目加装边缘计算网关就是在车间主任的会议室里额外放了一套独立的监督设备它自己装了一套传感器镜像口去监听各个工位的情况发现异常就绕过主任直接打电话给维修队。好处是主任原来的工作不受打扰维修队也能第一时间收到消息。这个背景对非自动化专业的同事、领导汇报项目思路时特别有用建议收藏备用。6. 旁路加装实施过程中的常见问题与排查技巧老系统加装旁路最难的不是技术而是过程中各种意想不到的现场问题。我把这次实施过程中遇到的一些典型问题和排查方法整理出来供同行参考。6.1 镜像口收不到数据这是实施第一天最容易遇到的问题。交换机镜像口配置好了网线也插上了但网关管理界面里显示数据流量为0。排查顺序先看网口物理状态灯亮不亮网线是不是损坏再登录交换机看镜像配置是否生效很多交换机配置完镜像口后需要用display mirroring-group all确认状态接下来抓包在网关侧用Wireshark抓一下镜像口进来的报文看有没有数据帧。如果交换机配置没问题但依然收不到数据要重点检查是不是交换机把镜像口设成了单方向镜像。有些工程师图省事只镜像了rx或tx单方向而Modbus TCP的读响应数据是在另一个方向漏了就解析不出数值。确认是both双向镜像。另外网管型交换机有些默认开了流量抑制storm-control异常情况下会丢弃镜像口的广播包这种时候需要临时关掉抑制策略试一下。6.2 网关解析出的数据和老SCADA画面对不上数据能收到了但网关侧看到的值和老SCADA操作站画面上的值不一致。这种情况通常是寄存器地址对应错了。老SCADA的点表地址可能做了偏移比如从40001开始对应Modbus协议地址是0x0000有些网关的地址填写习惯不一样填40001还是0x0000得确认清楚。还有一种是字节顺序问题。Modbus报文里一个16位寄存器的高低位顺序不同PLC厂家定义不同。同一个寄存器高位在前和低位在前解析出来的值完全不一样。遇到数值特别离谱、有明显倍数关系比如差256倍的的情况基本就是字节序设置错了。在网关里把点的字节序从AB改成BA再试一下。6.3 告警误报过多告警上线后钉钉群一晚上被刷屏这是很常见的现象。问题基本出在告警阈值和回差设置不合理。有一个原则阈值不要设置在正常值的波动范围内。比如排气温度正常运行在85℃波动范围可能达到±2℃你设88℃报警就很容易误报至少留出5~8℃的余量再设告警线。另外回差值建议设置为阈值的三分之一以上。阈值100℃触发回差至少设3℃恢复值97℃这样避免温度在阈值边缘震荡时反复报警。还有一种误报来源是PLC通信瞬间中断。Modbus TCP是TCP连接当PLC或者交换机的某个端口闪断重连网关会解析到一堆乱码或者超时误判为设备故障。这种需要在网关里给通信状态做一个连续判定次数比如连续3次采集失败才算通信故障避免偶发性的网络闪断直接报故障。6.4 旁路网关自身故障了会不会影响老系统这是工艺方最关心的问题也是这个方案能实施成功的关键。旁路架构从物理链路上就保证了隔离网关的网线只接交换机镜像口交换机做镜像只是把报文复制了一份出来不会对原有转发造成影响。即使网关断电、网线拔掉、甚至交换机镜像口物理损坏老SCADA服务器到PLC的数据链路完全不受影响。不过为了保险起见我还做了一个冗余措施在网关的串口调试口接了一个断电短信报警模块。一旦网关断电无论是因为停电还是有人误拔电源第一时间给运维人员发短信不用等巡检发现问题。6.5 老旧系统兼容性排查有些老SCADA系统用的是非标准的Modbus实现比如报文里附带了一些特殊填充字节或者寄存器寻址不是标准线性布局。这类问题只能在调试阶段逐一确认。每添加一个点位就对照老SCADA画面上的实际值去反查网关解析结果。点位少的现场可能一两天就能核对完点位上千的现场建议分区域逐步上线不要一次性把两千个点全配上。7. 项目落地后的效果与扩展可能性旁路加装边缘计算网关完成后这套系统已经连续运行了几个季度效果符合预期。告警从原来的“人盯画面”变成了“系统主动推送”告警响应时间从分钟级压缩到秒级。下面是几个实际场景场景一深夜空压机排气温度异常升高值班人员原本要靠每小时的巡检记录才能发现。现在温度超过95℃的告警阈值后网关10秒内就把告警消息推送到维修班的钉钉群维修人员起床查看趋势图提前做好维修准备减少了设备损坏的风险。场景二某台老PLC偶尔发生通信闪断之前这种故障SCADA画面上只会闪一下红色等人员注意到了可能已经过了半小时。现在网关针对通信状态单独设置告警规则连续3次失败才报故障既过滤了抖动又能让运维第一时间得知PLC通信不稳定提前检查网线接头和交换机端口。做完这个项目我结合实际经验谈谈扩展可能性。边缘计算网关只是旁路采集的第一步。数据既然已经通过镜像口拿到了它能做的事情远不止告警一件事。网关内置的存储空间可以保留一定时间的历史数据未来想上数据分析、设备预测性维护甚至做一套独立于老SCADA的Web可视化大屏都可以在这个边缘网关的基础上扩展。数据出口也可以直接给厂里的MES、ERP提供设备状态数据打通生产管理层和现场控制层的信息通道。如果现场未来计划对老SCADA系统进行升级这套旁路网关还能作为一个平滑过渡的桥梁。新老系统并行运行期间告警、数据采集都走边缘网关等新系统稳定后再切换过来生产数据从始至终不断层。8. 最后分享一点个人体会做完这个项目我最大的感受是老的SCADA系统不一定就要推翻重来“无损增加新能力”这个思路在工业现场改造中很有价值。很多被淘汰的系统核心功能其实依然可靠只是没有跟上智能化、移动化的需求。旁路加装边缘计算网关让老系统继续干它擅长的事同时把新能力以独立模块的形式叠加进去既控制了风险又快速满足了生产需求。实际操作中还要注意和现场技术人员打交道的方式。改造前做一次充分的技术交底是值得的把旁路架构的隔离原理讲清楚让工艺和自控团队放心老系统不会被影响、告警规则可以随时调整。技术方案再好人不支持也推不动这一点在老旧系统改造项目中尤为重要。如果你的现场也有类似的老SCADA系统也有“想加告警但不敢动老系统”的顾虑不妨参考这套旁路加装边缘计算网关的思路。投资不大风险极低实施周期短效果却立竿见影。