UPSの状態と制御
FREQUPS FシリーズでのUPSの状態の取得と制御についてです。
シリアル接続
当初のモデルから用意されているシリアル接続による制御です。
- シリアル接続で使用するケーブルは、(何も細工のない)ストレートのRS232Cケーブルです。
- モデムの制御ラインで状態の取得とUPSの制御をします。言い替えれば、シリアル接続での通常のデータ通信を行なっているわけではありません。
- DTR: UPSに停止の指示
- CTS: UPSから停電の状態を通知
- CAR: UPSからバッテリー残量の低下を通知
三菱電機からソースも公開されているツールが提供されていますが、pkgsrcにあるbkpupsdを使用すると同用にモデムの制御ラインで扱える他社のUPSも扱えます。
ただ原因は不明なのですが、旧機種と違ってシリアルポートの状態が安定しません。実害はなく、2012年11月21日の京都市内の停電の時も停電(正確には1秒未満の電圧低下らしい)をきちんと検知してくれました。以下のように少々暴れます。
Nov 22 04:09:49 ns bkpupsd[616]: status changed: -500(CAR|DSR)
Nov 22 04:09:50 ns bkpupsd[616]: status changed: +500(CAR|DSR)
Nov 22 04:09:59 ns bkpupsd[616]: status changed: -500(CAR|DSR)
Nov 22 04:10:00 ns bkpupsd[616]: status changed: +100(CAR)
Nov 22 04:10:01 ns bkpupsd[616]: status changed: +400(DSR)
Nov 22 04:10:41 ns bkpupsd[616]: status changed: -500(CAR|DSR)
この安定しない状態はNetBSDのバグだったようで、いつの間にか出なくなりました。
USB接続
仕様ではシリアル接続とは排他使用となっています。三菱電機の提供するUPSの制御ソフトウェアでは、特別にUSB用のものは用意されていなくて、USBシリアルとして認識されるはずです。
残念ながら、NetBSDではシリアルポートとして認識することはできていません。USB 1.xをサポートしているチップで、ucycom(4)で扱えるものと互換チップらしいですが、そもそもucycom(4)ではハードウェアのフロー制御をサポートしていないため、肝心のモデム制御のラインの状態を取得できないと考えられます。
FreeBSDでは、きちんと実装されているようなので、そちらを参照して直せば良いのでしょうけれど、今時USB 1.xだけのシリアル接続の機器というのもあまりないでしょうし、誰かが直してくれるのを待つのも無理そうな気配です。
Copyright © 2011-2024 Takahiro Kambe all rights reserved.