用 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% 设硬边界,再叠加相对历史基线的越限规则,给规则加持续时间门槛避免瞬态误报。
浙公网安备 33010602011771号