1.KWS-AC301
|
 |
8つの機能:
電流、電圧、電力、電力量、
運用時間、温度、力率、周波数 |
|
KWS-AC301の内部基板にxとRx端子がある。
この端子信号電圧が0-5(V)でその他はある程度RS232C(ANSI/EIA-232-E)の規格になっているようです。
通信速度は9600bps
| スタートビット | 1ビット固定 | |
| ストップビット | 1ビット | 1 , 1.5 , 2 ビットから選択 |
| データビット長 | 8ビット | 8 , 7 bitから選択 |
パリティ チェック | NONE | パリティチェック無し::NINE、偶数パリティチェック:EVEN、奇数パリティチェック:0DDから選択 |
|
|
 |
|
KWS-AC301Lは上記端子に子基板が付加されており、この基板はRS485(EIA-485)のインターフェース基板になっている。
kWS-301LにはRS485のコネクターが横にあり、そこに接続する事により電力量他の情報を取得することが出来る。 |
2.ModoBus内容
|
| Start |
Address |
Function |
Data |
CRC Check |
End |
| null+null+null+nul |
8bit |
8bit |
8bit×n |
16bit |
null+null+null+null |
|
|
a.マスターフレーム構造 電圧値の要求の場合
パソコン側のデータフレーム構造を言います。
| message[ ] |
0 (3) |
1 (4) |
2 (5) |
3 (5) |
4 (5) |
5 (5) |
6 (6) |
7 (6) |
| 項目説明 |
Address |
Function |
上位 アドレス |
下位 アドレス |
上位 レジスター数 |
下位 レジスター数 |
下位 CRC |
上位 CRC |
| 値 |
0x02 |
0x03 |
0x00 |
0x0E |
0x00 |
0x01 |
0xE5 |
0xFA |
b.スレーブフレーム構造 電圧値を返答
KWS-AC301のデータフレーム構造を言います。
| message[ ] |
0 (3) |
1 (4) |
2 (5) |
4 (5) |
5 (5) |
6 (6) |
7 (6) |
| 項目説明 |
Address |
Function |
データ数 |
データ1 |
データ2 |
下位 CRC |
上位 CRC |
| 値 |
0x02 |
0x03 |
0x02 |
0x04 |
0x15 |
0x3F |
0x4B |
|
|
同じ信号線に接続されているModbus機器を区別するため通常は装置毎に番号を付けれる様になっているが、KWS-AC301は
0x02 固定
になっているので、その他機器と信号線を並列接続する場合は重ならないように注意が必要。
|
(4)ファンクション内容
|
読み込み時は 0x03 、書き込み時は 0x06又は0x10 を使用する。
| 項 目 | 値 | ※B |
概 要 |
| Read Coil Status | 0x01 | × |
スレーブの DO(Discrete Output)の ON / OFF 状態を読出します。 |
| Read Input Status | 0x02 | × |
スレーブの DI(Discrete Input)の ON / OFF 状態を読出します。 |
| Read Holding Register | 0x03 | × |
スレーブの保持レジスタの内容を読出します。 |
| Read Input Register | 0x04 | × |
スレーブの入力レジスタの内容を読出します。 |
| Force Single Coil | 0x05 | 〇 |
スレーブの DO(Discrete Output)の状態を ON / OFF のいずれかに変更(書込み)します。 |
| Preset Single Register | 0x06 | 〇 |
スレーブの保持レジスタの内容を変更(書込み)します。 |
| Diagnostics | 0x08 | × |
マスターとスレーブ間の通信の診断やスレーブの機器の診断ファンクションです。 |
| Fetch Communication Event Counter | 0x0B | × |
スレーブの通信イベントカウンタからステータスワードとイベントカウンタを読出します。 |
| Fetch Communication Event Log | 0x0C | × |
スレーブの通信イベントログ(ステータスワード、イベントカウンタ、メッセージカウントおよびイ ベント)を読出します。 |
| Force Multiple Coils | 0x0F | 〇 |
スレーブの連続した複数の DO(Discrete Output)の状態を、ON / OFF のいずれかに変更(書込み) します。 |
| Preset Multiple Registers | 0x10 | 〇 |
スレーブの連続した複数の保持レジスタの内容を変更(書込み)します。 |
| Report Slave ID | 0x11 | × |
スレーブのコントローラタイプや動作モードなどスレーブの情報を読出します。 |
※Bはブロードキャストに対応しているかを示す。
|
|
一回に呼び出す事ができるデータ最大個数は17個です。 データは4月28日8時
a.読み込みデータ
| Address | R/W | byte | neme | value1 | value1 | 倍率・単位 |
| 0x0000 | R | 2 | パスワード | 0xaabb | ーーーー | |
| 0x0001 | R | 2 | 定格電圧 | 0x55f0 | 22000 | X0.01(V) |
| 0x0002 | R | 2 | 定格電流? | 0x1388 | 5000 | X0.001(A) |
| 0x0003 | R | 2 | | 0x157c | 5500 | |
| 0x0004 | R | 2 | | 0x2536 | 9526 | |
| 0x0005 | R | 2 | ハード型番Lo | 0xbaee | ---- | |
| 0x0006 | R | 2 | ハード型番Hi | 0x52f7 | ---- | |
| 0x0007 | R | 2 | ソフト型番Lo | 0xc4e7 | ---- | |
| 0x0008 | R | 2 | ソフト型番Hi | 0x7b3e | ---- | |
| 0x0009 | R | 2 | プロトコル型番Lo | 0x03e9 | ---- | |
| 0x000A | R | 2 | プロトコル型番Hi | 0x86e6 | ---- | |
| 0x000B | R | 2 | モジュール種類 | 0x1011 | 4113 | |
| 0x000C | R | 2 | 通信ワード | 0x0203 | 515 | |
| 0x000D | R | 2 | パルス定数 | 0x3200 | 12800 | |
| 0x000E 0 | R | 2 | 電圧 | 0x041d | 1053 | X0.1(V) |
| 0x000F 2 | R | 2 | 電流 | 0x01d4 | 468 | X0.001(A) |
| 0x0010 4 | R | 2 | | 0x0000 | 0 | X?(W) |
| 0x0011 6 | R | 2 | 有効電力 | 0x014a | 330 | X0.1(W) |
| 0x0012 8 | R | 2 | | 0x0000 | | |
| 0x0013 10 | R | 2 | | 0x3708 | 14088 | |
| 0x0014 12 | R | 2 | | 0x9bbc | 39868 | |
| 0x0015 14 | R | 2 | 皮相電力 | 0x01fa | 506 | X0.1(VA) |
| 0x0016 16 | R | 2 | | 0x0000 | 0 | |
| 0x0017 18 | R | 2 | 電力量 | 0x001e | 30 | X0.001(kWh) |
| 0x0018 20 | R | 2 | | 0x0000 | 0 | |
| 0x0019 22 | R | 2 | 動作時間 | 0x00c2 | 194 | X1(分) |
| 0x001A 24 | R | 2 | 外温 | 0x0017 | 23 | X1(℃) |
| 0x001B 26 | R | 2 | | 0x599a | 22938 | |
| 0x001C 28 | R | 2 | | 0x0000 | 0 | |
| 0x001D 30 | R | 2 | 力率 | 0x0041 | 65 | X1(%) |
| 0x001E 32 | R | 2 | 周波数 | 0x0258 | 600 | X0.1(Hz) |
| 0x001F | R | 2 | | 0x9380 | 37760 | |
b.読み書きできるデータ
アドレス0x0028〜0X002D
| Address | R/W | byte | neme | value1 | value1 | 倍率・単位 |
| 0x0028 | R/W | 2 | | 0x0000 | 0 | x1(年) |
| 0x0029 | R/W | 2 | | 0x0001 | 1 | x1(月) |
| 0x002A | R/W | 2 | | 0x0001 | 1 | x1(日) |
| 0x002B | R/W | 2 | | 0x0003 | 3 | x1(時) |
| 0x002C | R/W | 2 | | 0x0034 | 52 | x1(分) |
| 0x002D | R/W | 2 | | 0x003a | 58 | x1(秒) |
アドレス0x32〜0x3B しきい値:不明点有り、調査必要
| Address | R/W | byte | neme | value1 | value1 | 倍率・単位 |
| 0x0032 | R/W | 2 | 温度 | 0x00aa | 170 | |
| 0x0033 | R/W | 2 | 電圧 | 0x0a61 | 2657 | |
| 0x0034 | R/W | 2 | 電流 | 0x0000 | 0 | |
| 0x0035 | R/W | 2 | | 0x0000 | 0 | |
| 0x0036 | R/W | 2 | 電力 | 0x0000 | 0 | |
| 0x0037 | R/W | 2 | | 0x0000 | 0 | |
| 0x0038 | R/W | 2 | 時間 | 0x0000 | 0 | |
| 0x0039 | R/W | 2 | | 0x0000 | 0 | |
| 0x003A | R/W | 2 | 電力 | 0x0000 | 0 | |
| 0x003B | R/W | 2 | | 0x0000 | 0 | |
アドレス0x0154〜0x0158
| Address | R/W | byte | neme | value1 | value1 | 倍率・単位 |
| 0x0154 | W | 2 | 電力量 | ---- | ---- | X0.001(kWh) |
| 0x0155 | W | 2 | | ---- | ---- | |
| 0x0156 | W | 2 | | ---- | ---- | |
| 0x0157 | W | 2 | | ---- | ---- | |
| 0x0158 | W | 2 | 動作時間 | ---- | | X1(分) |
|
(6)CRCチェック
|
CRCは16bit=2Byte(2バイト)のバイナリ値で構成されています。
CRCは送信側が計算し、受信側が受信データのCRCを計算し受信データのCRCと比較して違っていればエラーになります。
|
3.例1:ESP12->PC
参考 GitHub
GitHub - SensorsIot/KWS-AC301
KWS-AC301 100A power meter read database write program.
by ESP8266 E12F
(2)結果表示 パソコンのシリアルモニター
■receive_Data(0);の場合
■receive_Data(1);の場合
4.例2:Python
KWS-AC301 100A power meter read database write program.
by Python
(2)結果表示 Viaual Studio Code 画面
5.Wh,Tiemのリセット
WhとTimeのリセットが出来たので紹介します。
ModBusのデータは下記のとおり
Wh下位(CRCなし) 0x02,0x10,0x01,0x54,0x00,0x02,0x04,0x00,0x00,0x00,0x00
wh上位(CRCなし) 0x02,0x10,0x01,0x56,0x00,0x02,0x04,0x00,0x00,0x00,0x00
Time (CRCなし) 0x02,0x10,0x01,0x58,0x00,0x01,0x02,0x00,0x00
|
※連続で削除する場合受信はせず、間に time.sleep(1) を入れること。
また続けてデータを受信する場合は、リセット司令の最後に time.sleep(1) を入れて、入力バッファーのリセット
self.uartport.reset_input_buffer()
を入れること。
|
|
プログラムは太陽光の充電器(JN-MPPT-AL 40A)でも試験使用したプログラムにデータを追加して使用しました。
|

KWS-AC301の表示