
1. 车间里那声“滴滴滴”为什么 UPS 监控必须升级做工业现场运维的人应该都有同感UPS 这东西平时不显山不露水一旦市电出问题它就是整个控制系统的命根子。可偏偏很多厂里的 UPS 监控还停留在最原始的状态要么 UPS 自带一张 LCD 面板靠人巡检时瞟一眼要么只有一路总告警干接点接到 PLC 里真出了事只能知道“UPS 有问题”具体是哪一路、什么原因、严不严重全得跑过去看。这次做的这个项目核心就是给一台工业 UPS 做监控升级从原来的单点告警扩到14 路自定义干接点告警同时保留并增强 RS485 通讯采集让通讯 硬件触点两套信号互相印证供电安全才算真正有保障。先说说这 14 路是从哪儿来的。我们现场这台 UPS 容量 60kVA给 DCS 系统、PLC 柜、仪表电源还有几个重要变频器供电。原来它自带的干接点就两路一个“市电异常”一个“电池低电压”而实际上设备内部能监测的状态远不止这些整流器故障、逆变器故障、旁路异常、过载、电池电压低、电池开路、充电器故障、温度异常、风扇故障、输出过压/欠压、频率异常、接地故障、维护旁路位置状态、通讯丢失。光把这些列出来就有十几项而且不同厂家、不同型号的叫法和定义还不一样。用户最烦的就是“告警不够细”所以这次升级把干接点从 2 路直接拉到 14 路而且是自定义映射想让哪一路牵到哪个信号随心配。这个项目适合谁参考一类是工厂设备科/动力运维的人守着大量 UPS 想统一监控又不知道怎么下手另一类是做系统集成的工程师需要把 UPS 接入 DCS/SCADA 或者自建监控平台但面对各家 UPS 的告警定义、通讯协议一头雾水。下面我把这次升级的思路、硬件选型、接线踩坑、软件配置、双链路校验的完整过程都写出来能直接照着抄的就直接抄。2. 干接点选型之前得先把“干接点”和“湿接点”这俩概念掰扯清楚2.1 干接点 vs 湿接点区别就在“源”上干接点英文叫 dry contact说白了就是一组纯无源的机械触点它在电气上是完全隔离的本身不带电压。你拿万用表量它的开路状态表笔两端是无穷大闭合状态触点两端是 0 欧。它就像电路里的一个开关你给它接多大的外部电压它就去切换多少伏的回路触点自己不产生任何电能。湿接点就完全相反它自带电源。比如有些 PLC 的数字量输入模块输出端会提供 DC24V然后通过外部传感器的开关通断去拉低或者悬空这个电压模块检测到的是“有电压”还是“没电压”。这种带了源、由设备自己给出电平的接点就叫湿接点有的也叫有源接点、源极接点。实际选型里最要命的一句话别把两个设备的湿接点互相对接。我有一次在两个 24V 供电器件之间硬接结果两边共地不一致产生电位差烧了采集板的通道这个教训后面详细讲。2.2 为什么 UPS 的告警口还是喜欢给干接点UPS 厂家不是不能做有源输出但干接点有几个在工业环境下无法替代的优势第一是隔离。干接点本身是一对物理触点电气隔离可以做到几千伏哪怕 UPS 输出侧或电池组侧出现高压扰动也不会顺着信号线窜到 PLC 或者采集模块里击穿光耦。第二是兼容性极强。你要接 PLC 的数字量输入它就是普通开关量你要接到上一级电力监控的 DI 点它也是开关量你甚至可以直接串进一个报警铃的回路里当控制开关用。不管外部电路是 12V、24V、48V 还是 220V AC触点只负责“闭合/断开”不挑电压。第三是抗干扰能力强。对干接点来说外界感应出来的电压只要不足以驱动外部回路触点状态就不会变。相比模拟量或者通讯信号它是最结实的一种信号形式。这也是为什么明明 UPS 都有通讯接口后期增配监控时大家仍然要把干接点作为一种独立告警渠道保留下来——通讯断了干接点还在采集板坏了通讯还能顶上。2.3 “自定义 14 路”到底在解决什么痛点市面上普遍的 UPS 扩展干接点卡常见是 4 路、8 路而这次要做到 14 路还得能自定义分配。真正的需求倒不在数量本身而在两点一是覆盖所有关键状态。一台工业 UPS 内部监测点有几十上百个但不是所有点都值得拉出来做硬告警。我们最终选了 14 个最有动作价值的物理/逻辑状态既要避免漏报也不能把告警表搞成一堆没意义的“事件堆”让运维人员告警疲劳。二是告警粒度的自定义。大部分 UPS 的干接点输出要么是“单刀双掷”的常开/常闭方式要么是一块继电器卡上固定几个信号。而升级之后用户可以通过配置软件将任意一个 UPS 内部状态映射到任意一个干接点输出通道。比如你觉得“电池温度过高”比“风扇转速低”重要你就把温度告警放在 1 号通道、接现场声光报警器把风扇故障放在另一个通道、只做后台记录。这种自由度是原厂固定卡给不了的。3. 14 路自定义干接点告警的硬件设计从选板到接线全流程3.1 采集端硬件选型继电器输出还是光耦隔离输入先说清楚一个容易混淆的点。干接点告警从 UPS 侧看是“输出”从监控系统侧看是“输入”。我们最终做的是在 UPS 端增加干接点扩展板这板子本身的输出部分是继电器做成的每一路一个独立继电器线圈侧由 UPS 内部逻辑驱动触点侧对外提供纯干接点。而如果 UPS 原机已经内置了若干干接点我们要把这些点接入采集模块那采集模块侧必须是光耦隔离的数字量输入。这次项目两种方式都有因为最终要同时接入多台不同代际的 UPS新升级的这台 UPS通过厂家开放的扩展卡接口加装 14 路继电器干接点板板卡支持通道映射配置老的两台 UPS原机只有 2 路普通干接点我们用一台16 路数字量输入模块DI 采集板来采再配合软件逻辑去拓展功能比如把“市电异常 电池低电压”拆成更多细分告警就没法靠硬件了只能靠通讯补充。选型时我重点看这几个参数参数要求说明输入通道隔离光耦隔离隔离电压≥2500V AC防止电池组侧电压扰动串入采集板触点容量DC30V/1A 以上至少能驱动中间继电器或蜂鸣器通道数16 路备用 2 路14 路告警 2 路作防抖/扩展预留输入方式支持干接点NPN/PNP 可切兼容不同 UPS 常开常闭触点响应时间≤10ms告警动作要及时不能拖3.2 接线隔离和供电别在这步省成本接线这块我吃过亏必须拿出来说。UPS 的干接点输出大多只是一对端子标注往往是“NO/COM”或者“NC/COM”。我们这回配置的 14 路板卡每路都有三根端子NO、NC、COM这样既可以取常开信号平时断开告警闭合也可以取常闭信号平时闭合告警断开。到底用常开还是常闭我的建议是关键告警用常闭NC 断线检测逻辑非关键告警用常开NO。为什么因为常闭触点平时一直是闭合的如果信号线断了、或者触点模块掉了电回路断开后台收到的就是“告警”而非“正常”。你既能捕捉真实告警也能发现回路故障。比如“电池低电压”这种一旦发生就得立刻处理的我就牵到常闭端。而“风扇故障”、“温度过高”这类非即时断电风险的我用了常开减少平时误告警的烦恼。具体接线时还要注意干接点到 DI 采集板之间推荐用屏蔽双绞线屏蔽层单端接地不要两头都接走线需要跟动力电缆尤其是 UPS 输出电缆分开至少 20cm平行走线距离越短越好如果线缆长度超过 30m或者现场变频器特别多建议采集板输入端串一个 RC 滤波器或者选带防抖延时的采集模块。3.3 通道映射设计一张表把 14 路全部定清楚这个环节强烈建议画一张“干接点通道对照表”再动手接线。我们最终方案如下通道UPS 内部状态触点类型去向1市电输入异常常闭PLC DI 中控声光2电池电压低常闭PLC DI 中控声光3整流器故障常闭中控软告警4逆变器故障常闭PLC DI 中控声光5输出过压常开后台记录6输出欠压常开后台记录7输出频率异常常开后台记录8旁路异常常开中控软告警9过载常开中控软告警10温度过高常开中控软告警11风扇故障常开后台记录12充电器故障常开中控软告警13维护旁路未复位常开后台记录14系统综合故障汇总常闭PLC DI 硬接线报警铃为什么要留第 14 路做“综合故障汇总”因为 PLC 的 DI 点数有限前几路已经用了不少点。如果后续想增加点位PLC 那个机架已经全满了再扩机架成本和停机风险都高。所以把 14 路合成一路进 PLC同时保留 14 路全部进后台既照顾了 PLC 的简单性又不丢后台的精细化。提示每一路干接点的“常开/常闭”配置确认之后立刻在端子上贴标签同时在程序里写死。后期要是有人改过接线而程序没同步排查起来会让你怀疑人生。4. 通讯监控怎么接Modbus RS485 才是后台数据的另一条腿4.1 干接点和通讯为什么两个都得要有人问过既然干接点已经覆盖了 14 路告警为什么还要配通讯我的回答是干接点只是“告警开关”它告诉你发生了什么但不告诉你数值。比如 1 号通道报“市电输入异常”但此时市电电压到底是 380V 还是 200V电池电压掉到了多少UPS 当前的负载率是多少这些“量”的信息干接点给不了只有通讯协议能传出来。所以在供电监控里干接点管“状态”通讯管“数据”二者互补。从系统架构看我们最终是双链路冗余链路 A14 路干接点 → DI 采集模块 → RS485Modbus RTU→ 网关 → 后台监控链路 BUPS 自身的 RS485/网口通讯 → Modbus TCP/SNMP → 后台监控。两条链路在后台做“互校验”当通讯正常时后台主要以通讯数据为准一旦通讯心跳超时后台自动切到干接点链路并提示“通讯链路故障当前告警源为干接点”。这个双保险设计非常实用避免了单链路故障导致“假正常”。4.2 Modbus 点位表从手册里抠出来的核心寄存器UPS 通讯基本都逃不出 Modbus RTU常用参数波特率 9600数据位 8停止位 1无校验也有 8E1 或 8O1 的以现场设备为准。重点是拿到厂家提供的点位表之后不要只看寄存器地址要把功能码、数据类型、缩放倍数、读写属性全部理清楚。举几个典型点位寄存器地址常见参数功能码说明0x0011输入相电压 A/B/C03三相电压部分机型按 0.1V 缩放0x0021输出相电压 A03重要监视点0x0038电池电压03判断电池健康度参考0x0050负载率03判断是否长期重载0x0090电池充电电流04充电状态参考0x00A0故障代码/告警位03位映射不是数值大小0x00B0运行模式030正常/1旁路/2电池等这里有个坑很多点位表给的“地址”是协议地址比如它写 0x300018是数据地址而你在组态软件里组 Modbus 时需要把地址换算成从 0 开始或从 1 开始的寄存器编号不同软件要求还不一样。反正我每次都有这样一个校验动作拿到点位表先找一张监控截图或者现场按键翻页确认实际值再用通讯去读对不上号就检查地址换算别拿手册死记。4.3 后台对接从网关到 Spring Boot 再到 SCADA 的落地这次监控后台是我们自建的核心是一个轻量级服务用来跑数据采集、告警判断和界面展示。服务端用 Spring Boot 搭建框架本身比较成熟生态也够用我们在里面实现了几件关键事Modbus TCP 采集器用轮询的方式每 2 秒读一次核心寄存器组每 10 秒读一次完整寄存器组干接点 DI 采集通过网关把 DI 模块挂到以太网上用软网关轮询 DI 状态告警融合引擎把干接点状态和通讯数据做逻辑交叉生成一条格式化告警事件写进数据库。比如干接点 2 号通道变位 通讯读到电池电压低于设定值两条同时成立才判定“电池低电压”真实告警避免单信号误动。如果不想自研把 Modbus 转发到 DCS/SCADA 也是同样思路。像我们现场的霍尼韦尔 DCS 系统就是在 OPC UA 网关里接入 UPS 通讯再做图控界面。SCADA 侧的组态软件基本都带 Modbus TCP 驱动填好 IP、端口、寄存器表就能拉起点。要注意DCS 工程师最反感频繁改点表所以设计阶段就把点位表定死后期尽量不加点。5. 软件层面上的告警逻辑防抖、延时、自恢复怎么配才不闹心5.1 干接点抖动最容易被忽略的虚报干接点信号看着简单实际上会抖。机械触点闭合瞬间由于弹性、氧化、接触电阻不稳定会在几个到几十毫秒内产生一连串开闭脉冲。如果采集板没有硬件滤波或者后台没有防抖逻辑一次真实的告警会被记录成好几条严重时甚至造成误报。我们的处理是在后台统一加防抖逻辑干接点告警须连续保持 500ms 以上才判定有效告警每路告警单独配置延时重要告警市电异常、电池低、逆变器故障延时可以缩短到 200ms非重要告警设到 2s同一个通道在 10 分钟内最多允许 3 次翻转记录多了自动进入“持续抖动抑制”除非人工复位。这样处理之后现场因为开关柜联动、变频器启停造成的误告警明显少了。5.2 告警规则的自定义编排14 路干接点虽然灵活但真正让用户觉得“这系统好用”的是把这些点组合成业务逻辑。比如市电异常 逆变器正常 电池电压低三个状态同时成立判断为“电池供电即将耗尽”需要立刻通知值班人员旁路异常 过载同时出现判定为“严重过载风险”要联动把非关键负载切掉风扇故障 温度过高连续累计超过 3 次判定风扇需要维护保养生成工单建议。这些规则全在监控服务里用简单的定时扫描实现后台配置界面上可以直接选择通道、选择条件、选择动作。用户现场改起来很方便不用改程序。换句话说硬件做了“通道自由映射”软件做了“告警自由编排”两者一配合这套系统才算真正意义上“自定义”。5.3 双链路校验通讯优先干接点兜底前面说过双链路这里说校验细节。我们给每条通讯链路定义了一个“心跳”UPS 通讯正常时会持续更新寄存器里的一个运行计数或者状态字后台每次轮询发现状态字不再变化或者连续 3 次读失败就判定通讯链路故障。当通讯链路故障发生时后台自动切换策略所有点位数据源的优先级从“通讯数据”切换到“干接点状态”触发一条“UPS 通讯中断已切换至干接点冗余监控”的提示干接点链路上若来了告警后台会根据通道映射给出可能的原因范围但不做精确数值判断界面会明显标注“此告警为干接点信号无实时数据”。这套逻辑的目的很直接不能让单一通讯通道的故障变成监控盲区。电力保障这件事除了可靠性还是可靠性。我们后来验收测试时故意把 UPS 通讯线拔掉后台 15 秒内正确提示了通讯故障同时干接点链路上的模拟告警也正常记录了业主看完很放心。6. 现场调试实录踩过的坑、改过的线、缓过来的心跳6.1 坑一干接点对地电位差导致采集板通道烧毁第一版接线我们把 UPS 某一路干接点的 COM 端直接和采集板 DI 模块的公共端接在一起眼看着模块没有问题。但第二次通电时有两路采集板通道的 LED 闪了一下就灭了检查发现光耦输入端击穿。原因非常典型那台 UPS 的电池组负极端与保护地之间存在一个几十伏的电位差而采集板的公共端直接接了保护地干接点在闭合瞬间把电位差直接加到了光耦两端超出耐压。解决做法所有干接点通道信号先过二级隔离继电器中间继电器线圈接 UPS 干接点触点接采集板输入。虽然多花了一点硬件成本但把两套系统的地彻底隔开之后再没出过烧通道的事。这算是我这次最深刻的教训不要相信“COM 就是共地”这句话不同设备的 COM 电位很可能不一样。6.2 坑二变频器启停时干接点狂跳调试期间只要现场一台 22kW 变频器启动后台就会收到好几个干接点告警持续 1 秒左右又恢复。查到最后发现是电磁干扰变频器动力电缆和干接点信号线在同一个线槽里走了大约 15m变频器启动瞬间的共模干扰感应到了干接点线路上让采集板误以为触点动作。处理分了三步把信号线全部换成屏蔽双绞线并保证屏蔽层单端可靠接地信号线从动力线槽中彻底移出走独立弱电线槽在每路采集输入并接一个 0.1uF 的安规电容形成简单 RC 滤波。三步做完再用变频器反复启停测了 20 次再无跳变。这个案例我想强调的是干接点虽然是“最硬”的信号但它依然怕干扰现场布线规范和硬件滤波一个都不能少。6.3 坑三通讯点位表地址换算不一致联调第二台老 UPS 时后台读到的输出电压一直比面板显示大了 10 倍。查点位表发现厂家标注的地址是“40019”数据值是 0.1V 精度但我们在组态软件里直接填了 40019 当成寄存器地址而网关工具默认从 0 开始计算线地址等于错位读到了别的寄存器。最终把地址换算确认了一遍再按缩放倍数做了个除法换算显示值就对了。所以提醒一句拿到点位表先拿万用表或者面板数据做一次“通讯读取 vs 现场实测”的交叉验证不要直接信文档。7. 最后再分享几条实在的经验这套系统交付到现在运行了大半年稳定性不错。有几点经验我觉得值得单独写出来。第一干接点告警通道要预留冗余。14 路听着多实际用起来会发现总有新想法。比如后来业主又提出来想要“UPS 输入开关跳闸”和“输出开关跳闸”两路独立告警幸好当初选了 16 路采集板留了两路不然又得停机加硬件。第二告警记录要带时间戳且后台时钟必须每天对时。有一次发现后台记录的告警时间比实际晚了 6 分钟排查半天发现是网关设备时间没同步。电力故障分析时分钟级的误差都可能导致因果倒置所以监控后台最好做 NTP 对时哪怕本地没有网络也要定期校时。第三不要指望 UPS 厂商的原厂监控软件能包打一切。很多原厂软件只在你买它选配件的时候好用想自定义告警编排、想接入第三方平台它就是个大铁壳。与其在原厂封闭生态里绕弯子不如早点想清楚自己做一套通用的采集逻辑后续扩展完全在掌握中。做工业供电保障这件事我一直觉得“最后一公里”比“前面十公里”更重要。UPS 本身质量再可靠如果监控没有把关键状态传出来出了事还是被动。这次 14 路自定义干接点 通讯双重守护的方案核心思路就是“不把鸡蛋放在一个篮子里”干接点负责实时动作通讯负责数据深度后台负责逻辑编排三道防线加起来才敢说对供电安全做到了心里有底。