Modbusの利用 (17) 電源の周波数を見る
2022年、東京近辺は、電力が足りなくなる日々が続いています。東京電力は、リソースを巧みに制御しながら、供給を続けています。その様子をうかがい知る方法の一つに、周波数の変動があるようです。
●電力量モニタKM-N1-FLK
この器材では、AC100Vの電力ラインの、
- 電圧
- 電流
- 力率
- 周波数
- 有効電力
- 無効電力
などが測定できます。
周波数は、測定範囲;45~65Hz、0.2Hzの分解能です。
●接続
KM-N1-FLKは、電流を検出するためのCTを四つつなげられます。ここではKM-NCT-5A/50Aを一つ接続しています。KM-N1-FLKは、本体にAC100Vにつなぐことで、電圧を取得します。
PCとの接続は、USB-RS485変換ボードを利用します。アマゾンで入手しました。
USB To RS485 485 コンバータ 変換 アダプタ win7 8 XP Vista Linux Mac OS を サポート
ダウンロードしてインストールした【小型電力用モニタ/電力量モニタ】KM-Nシリーズ 設定ツールを使って、IDをデフォルトの1から9へ、デフォルトの同社のプロトコルからModbus/RTUへ、通信条件を、8ビット、パリティなし、Xon/offなし、ストップ・ビット2に変更します。
すごく操作がわかりずらいツールなので、何度かクリックしていると理解が進みます。
パリティなしを選ぶと、ストップ・ビットは2以外が選べません。
●プログラム
Windows10のコマンド・プロンプトを起動します。Pythonは3.10.5です。二つ、モジュールを追加します。
pip install Pyserial
pip install modbus_tk
PORT = 'COM21'は、USB To RS485 485 コンバータのCOMポートです。デバイスマネージャで確認できます。
import time
import serial
import modbus_tk.defines as cst
from modbus_tk import modbus_rtu
PORT = 'COM21'
Address = 9
ser = serial.Serial(port=PORT, baudrate=9600, bytesize=8, parity='N', stopbits=2, xonxoff=0)
master = modbus_rtu.RtuMaster(ser)
master.set_timeout(1.0)
master.set_verbose(True)
print("connected")
A1 = master.execute(Address, cst.READ_HOLDING_REGISTERS, 0x0000, 2)[1]
print(A1/10,'V')
A2 = master.execute(Address, cst.READ_HOLDING_REGISTERS, 0x0006, 2)[1]
print(A2,'mA')
A3 = master.execute(Address, cst.READ_HOLDING_REGISTERS, 0x000e, 2)[1]
print(A3/10,'Hz')
READ_HOLDING_REGISTERSは、電圧や電流が保存されている領域で、0x0000や0x0006がアドレスです。
実行例です。