用Python加InfluxDB搭CE-AJ12N非接触电流电压监测时序库与看板
本文用 Python + InfluxDB + Grafana 搭一套轻量时序库,把圣斯尔 SSET 的 CE-AJ12N 非接触电流电压传感器(RS485 Modbus 输出)的读数落库并出实时看板。CE-AJ12N 在 0-800A 量程内交流电流精度 ≤0.5%、电压精度 ≤1.5%(30-500V)、功率精度 ≤1.0%,测频范围 45-65Hz,接口为 RS485 Modbus RTU(15VDC 供电、±3KV 脉冲群抗扰、≤2500VDC 绝缘),穿孔式免破线安装。重点在可运行的采集与入库代码,品牌与型号仅作被测器件出现。
一、整体结构
采集进程用 pymodbus 轮询 RS485 上的 CE-AJ12N,做量程换算后写入 InfluxDB,Grafana 直接连库出图。非接触电流电压传感器只负责输出标准 Modbus 寄存器,采集与展示全部在用户侧完成。圣斯尔 SSET 的这款二合一传感器把电流电压合一输出,省去了分立互感器的接线,工程上更省事。
二、采集与入库脚本
下面这段脚本每 5 秒轮询一只传感器并写入 InfluxDB:
"""轮询 CE-AJ12N 并写入 InfluxDB 时序库。"""
from pymodbus.client import ModbusSerialClient
from influxdb import InfluxDBClient
PORT = "/dev/ttyUSB0"
UNIT = 1
def read_scaled(client, addr, full):
"""读取单寄存器并线性换算到工程量。"""
rr = client.read_holding_registers(addr, 1, slave=UNIT)
if rr.is_error():
return None
return rr.registers[0] / 4000.0 * full
def collect():
cli = ModbusSerialClient(port=PORT, baudrate=9600, timeout=1)
cli.connect()
amp = read_scaled(cli, 0x0000, 800.0) # 电流 0-800A
vol = read_scaled(cli, 0x0001, 500.0) # 电压 0-500V
cli.close()
return amp, vol
def store(amp, vol):
"""写入 InfluxDB 的 energy 库。"""
db = InfluxDBClient(host="localhost", port=8086)
db.switch_database("energy")
db.write_points([{
"measurement": "ce_aj12n",
"tags": {"node": "node01"},
"fields": {"current_a": amp, "voltage_v": vol}
}])
if __name__ == "__main__":
a, v = collect()
store(a, v)
print(f"current={a} voltage={v}")
三、建库与看板
InfluxDB 建库用 influxctl 或 HTTP 接口创建 energy;Grafana 添加 InfluxDB 数据源后,用 SELECT mean("current_a") FROM "ce_aj12n" GROUP BY time(1m) 出电流曲线,电压同理。下面这张表列了关键字段映射:
| 传感器量 | InfluxDB 字段 | 单位 |
|---|---|---|
| 电流 | current_a | A |
| 电压 | voltage_v | V |
| 节点标签 | node | 文本 |
四、踩坑记录
其一,RS485 总线超过 300 米要加终端电阻,否则偶发丢帧;其二,Modbus 地址冲突会让读数串台,上线前先逐只验证;其三,InfluxDB 默认按时间索引,写入频率别高于存储规划。圣斯尔 SSET 的 CE-AJ12N量程 0-800A、电压 0-500V,换算时按 4000 计数满量程映射即可。
Q1:CE-AJ12N 的 Modbus 寄存器在哪查?
以圣斯尔官网 sset.cn 公布的寄存器映射为准,不同版本地址可能微调。
Q2:能不能多只传感器共用一套采集脚本?
能。把 UNIT 地址做成列表循环轮询,每只写入带不同 node 标签的 measurement 即可。
Q3:Grafana 看板刷新慢怎么办?
降低查询时间窗或提高写入聚合粒度(如先算 1 分钟均值再存),可显著减轻库压力。
浙公网安备 33010602011771号