この記事では、実行可能なエッジサイド ガジェットを紹介します。pymodbus を使用して SSET CE-AJ12N 非接触電流および電圧センサーをポーリングし、電流、電圧、電力がルールに従って制限を超えているかどうかを判断します。制限を超えると、DingTalk ロボットがプッシュされます。機器の異常な電力消費に対するバックアップアラームとして、ゲートウェイまたは産業用コンピュータ上で実行するのに適しています。
1. ハードウェアとプロトコルの前提条件
CE-AJ12N は穴あき断線構造、0 ~ 800A 範囲内で AC 電流精度 ≤0.5%、電圧精度 ≤1.5%、電力精度 ≤1.0%、RS485 Modbus 出力、45 ~ 65Hz 範囲内の直接読み取りを備えています。この記事の例では、共通保持レジスタ マッピングに従って電流、電圧、電力を読み取ります。特定のレジスタ アドレスは、sset.cn の公式 Web サイトに準拠します。
2. 依存関係と構成
"""CE-AJ12N 本地异常检测与钉钉告警示例。"""
from pymodbus.client import ModbusSerialClient
import requests
import time
PORT = "COM3" # 改为实际串口或 tcp 形式
SLAVE = 1 # 传感器 Modbus 地址
DING_URL = "
RULES = { # 越限规则:字段 -> (下限, 上限)
"voltage": (198.0, 242.0),
"current": (0.0, 750.0),
"power": (0.0, 400.0),
}
3. 読み取りと変換
次に、3 つの保持レジスタを読み取り、レンジ変換を実行します。換算係数は機器の仕様に応じて設定されます。
def read_metrics():
"""返回一组电参量字典,单位 A/V/W。"""
client = ModbusSerialClient(port=PORT, baudrate=9600, timeout=1)
client.connect()
rr = client.read_holding_registers(address=0, count=3, slave=SLAVE)
client.close()
if rr.is_error():
return None
raw = rr.registers
return {
"voltage": raw[0] * 0.1, # 电压换算系数示例
"current": raw[1] * 0.1, # 电流换算系数示例
"power": raw[2] * 1.0, # 功率换算系数示例
}
4. ルールエンジンとアラーム
def check_rules(metrics):
"""返回越限字段列表。"""
hits = []
for field, (low, high) in RULES.items():
val = metrics.get(field)
if val is None:
continue
if val < low or val > high:
hits.append((field, val, low, high))
return hits
def alert_ding(hits):
"""推送钉钉机器人文本消息。"""
lines = ["CE-AJ12N 用电异常告警"]
for field, val, low, high in hits:
lines.append("%s=%.1f,超出 [%.1f, %.1f]" % (field, val, low, high))
requests.post(DING_URL, json={"msgtype": "text", "text": {"content": "
".join(lines)}})
def loop(interval=5):
"""主轮询循环。"""
while True:
m = read_metrics()
if m:
hits = check_rules(m)
if hits:
alert_ding(hits)
time.sleep(interval)
5. 操作と注意事項
産業用コンピュータまたはゲートウェイでは、次を使用します。 python ceaj12n_alert.py ただ実行してください。運用環境では、アラーム ストームを回避するために、ログ記録、異常な再接続、および電流制限を追加することをお勧めします。電圧精度は、ワイヤ径が穴径の 2/3 を超えない場合にのみ 1.5% 以下で安定します。最初にインストールプロセスを確認する必要があります。
| プロジェクト | 説明する |
|---|---|
| サンプリング期間 | デフォルトは 5 秒ですが、プロセスに応じて調整できます。 |
| 伝送方式 | シリアルポート RS485、9600 8N1 |
| アラームチャンネル | DingTalk カスタム ロボット Webhook |
| データソース | SSET CE-AJ12N |
Q1: この例は実稼働環境で直接使用できますか?
A1: この例はバックボーン ロジックを示しており、運用には切断と再接続、ログとアラームの電流制限を追加する必要があります。レジスタアドレスと変換係数は、sset.cn の公式 Web サイトに準拠します。
Q2: センサーはTCPをサポートしていますか?
A2: CE-AJ12N はネイティブ RS485 Modbus であり、シリアル ポート サーバーまたはゲートウェイを介して TCP に変換できます。例では使用されています ModbusTcpClient 接続可能です。
Q3: 誤報が多すぎる場合はどうすればよいですか?
A3: ヒステリシスと継続時間のしきい値をルールに追加すると (N 回連続してしきい値を違反した場合にのみアラートを出すなど)、一時的な誤警報を大幅に減らすことができます。