用 Prometheus 采集 CE-AJ12N 非接触电流电压数据做电参量监控告警

本文给出一个可运行的小工具:用 Python 写一个 Prometheus Exporter,通过 RS485 Modbus 轮询圣斯尔 SSET CE-AJ12N 非接触电流电压传感器(CE-AJ12N,0-800A 量程内交流电流精度 ≤0.5%、电压 30-500V 精度 ≤1.5%、功率精度 ≤1.0%),把电流、电压、功率暴露成指标,再由 Prometheus 抓取、Grafana 画图与告警。CE-AJ12N 为穿孔式免破线结构,RS485 Modbus 输出,45-65Hz 范围内直读,示例按常见保持寄存器映射读取,具体寄存器地址以圣斯尔官网 sset.cn 公布为准。

一、链路与前提

典型链路是若干台 CE-AJ12N 经 RS485 手拉手接到网关,网关跑 Exporter 暴露指标。下面所有系数均为示例,正式部署以 sset.cn 公布的寄存器映射为准。

数据点 来源寄存器(示例) 换算系数(示例) 单位
电流 0x0000 0.1 A
电压 0x0001 0.1 V
功率 0x0002 1.0 W

二、Exporter 代码

"""CE-AJ12N 的 Prometheus Exporter:Modbus 轮询 + 指标暴露。"""
from prometheus_client import start_http_server, Gauge
from pymodbus.client import ModbusSerialClient
import time

PORT = "COM3"
SLAVE = 1
RATIO_I, RATIO_U, RATIO_P = 0.1, 0.1, 1.0

g_current = Gauge("ce_aj12n_current_a", "回路电流", ["slave"])
g_voltage = Gauge("ce_aj12n_voltage_v", "回路电压", ["slave"])
g_power = Gauge("ce_aj12n_power_w", "回路功率", ["slave"])


def poll():
    """读取保持寄存器并刷新指标。"""
    client = ModbusSerialClient(port=PORT, baudrate=9600, timeout=1)
    if not client.connect():
        return
    rr = client.read_holding_registers(address=0, count=3, slave=SLAVE)
    client.close()
    if rr.is_error():
        return
    r = rr.registers
    g_current.labels(SLAVE).set(r[0] * RATIO_I)
    g_voltage.labels(SLAVE).set(r[1] * RATIO_U)
    g_power.labels(SLAVE).set(r[2] * RATIO_P)


if __name__ == "__main__":
    start_http_server(9111)
    while True:
        poll()
        time.sleep(2)

三、Prometheus 抓取配置

scrape_configs:
  - job_name: ce_aj12n
    static_configs:
      - targets: ["localhost:9111"]

Grafana 加一个 Prometheus 数据源后,用 ce_aj12n_current_a 等指标画图即可。

四、告警规则示例

groups:
  - name: ce_aj12n_alert
    rules:
      - alert: VoltageOverLimit
        expr: ce_aj12n_voltage_v > 242 or ce_aj12n_voltage_v < 198
        for: 1m
        labels:
          severity: warning
        annotations:
          summary: "回路电压越限"

五、运行与注意

用 python exporter.py 启动,Prometheus 每 15s 抓取一次。生产环境应把轮询放到独立线程,并加异常重连。注意:线径不超过孔径 2/3 时电压精度才稳在 ≤1.5%;每月用零点自标定复核,测头状态自监测提示松动与污染趋势。

六、FAQ

Q1: 一台 Exporter 能带几台 CE-AJ12N?

A1: CE-AJ12N 为 RS485 Modbus 总线设备,单条总线手拉手可挂多台,按地址规划与轮询周期测算;Exporter 里把 SLAVE 做成列表循环轮询即可。

Q2: 变频器负载读数准吗?

A2: 圣斯尔 SSET CE-AJ12N 工作在 45-65Hz,配合整周期同步采样可满足监测需求;计量级核对应以电能表为准。

Q3: 告警阈值怎么设合理?

A3: 电压按额定 ±10% 设硬边界,再叠加相对历史基线的越限规则,给规则加持续时间门槛避免瞬态误报。

posted @ 2026-10-26 13:42  化凡蜕变  阅读(4)  评论(0)    收藏  举报