Hobby Lab 趣味のモノ作り実験のサイトです。
測定器・計器 pzem -017全般
1.PZEM-017
2.接続方法
3.ModBus マスター
 (1)フレーム構造
 (2)Device Address
 (3)Function
 (4)DataAddress
 (5)DataRegister
 (6)CRC
4.ModBus スレーブ
 (1)フレーム構造
 (2)保持レジスター
 (3)入力レジスター
 (4)電力量リセット
5.特性確認
 (1)電流特性
 (2)電圧特性

Mod Bus関係 プロトコル
 MODBUS
装置
 電力量計:KWS-AC301
 測定器(交流):pzem-016
 測定器(直流):pzem-017
 充電器(太陽光):BDZ 60A
 充電器(太陽光):AL40A

Ms:Measuring 計測器関係
Ms:オシロ
MSO5104
 操作全般
Ms:●Calibrator
CA100
 充電池変更
Ms:電力量計
KWS-AC301(AC Power)
 操作全般
 Modbus RS485
 RS232C信号絶縁化
PZEM(Modbus対応 測定器)
 交流(016)操作全般
 直流(017)操作全般
Ms:温度測定制御
STC-3008
 ケース取付
Ms:特性試験器
 DCCT試験器
 BHカーブトレーサ
Ms:交流電圧変換器
 RMSアンプ
Ms:振動計
 軸受振動とは
 軸受振動計の製作

1.PZEM-017

モジュールの概要について説明します。このモジュールは直流の電圧、電流、有効電力、消費電力量の測定に使用されます。表示機能は備えておらず、データはRS485インターフェースを介して読み取られます。
RS485通信インターフェースのボーレートは9600、データビットは8ビット、ストップビットは2ビット、パリティはなしです。
電圧閾値を設定できます。高電圧閾値と低電圧閾値に分割でき、測定電圧が閾値を超えるとアラームを発します。デフォルトの高電圧閾値は300V、低電圧閾値は7Vです。
このモジュールは peacefair社のDC Communication Module PZEM-003/017で 私が購入したものは左写真の100Aのシャントが付属したものでPZEM-017と言います。
型 番 PZEM-003PZEM-017
電流測定範囲(A)0.01~100.02~500.02~1000.02~2000.02~300
検出シャント内蔵外部 50A/75mV外部 100A/75mV外部 200A/75mV外部 300A/75mV
分解能(A)0.01
精度(%)1
電圧測定電圧(V) 0.05~300
電圧分解能(V)0.01
電圧精度1
電力範囲(kW)0.1~3 0.2~90
解像度(W)0.1
精度(%)1
電力量範囲(kWH)0~9999
解像度(Wh)1
精度(%)1
が有り、その他RS485に接続するUSBアダプターがついた物もあります。



2.接続方法

測定電圧 < 7(V)の場合は、USBポートを使用して電源を供給してください(PCのUSBポートの使用は禁止されています。PCが損傷する可能性があります)。
RS485インターフェースはパッシブ出力であり、外部に5V電源を接続する必要があり、外部電源は100mA以上である必要があります。



3.ModBus マスター

 マスターは測定器に指示するパソコンを言います。
 そのパソコンからの指示の後続から説明します。

(1)フレーム構造

★通常
No Bytes01234567
項目Device
Address
FunctionDataTop
Address
DataLower
Asddress
Top
Register
Lower
Register
Top
CRC
Lower
CRC
★キャリブレーションの時は
No Bytes012345
項目0xF80x410x370x21TopCRCLowerCRC
★電力量のリセット(アドレス0xXXは0x01〜0xF7)
No Bytes0123
項目0xXX0x42TopCRCLowerCRC

(2)Device Address

アドレスは0xF8が汎用アドレスになっている。
キャリブレーション(ファンクションNo0x41)は汎用アドレスの時に実施することができます。
ブロードキャストアドレスは0x00です。
設定できるアドレスの範囲は0x01〜0xF7です。

(3)Function

概要
0x03保持レジスタの読み取り
0x04入力レジスタの読み取り
0x06単一レジスタの書き込み
0x41キャリブレーション
0x42エネルギーリセットなど
エネルギーリセットの0x42はDstaAddressとDataRegisterのデータは不要なので、信号は
0xxx(Device Address) + 0x42 + CRC(Lo) +CRC(Hi)
になります。

(4)DataAddress

a.保持レジスタ
概要
0x0000高電圧閾値(5〜350V)ディフォルトは300V 1LSB=0.01V
0x0001低電圧閾値(1〜350V)ディフォルトは7V 1LSB=0.01V
0x0002Modbusのデバイスアドレス(0x0001〜0x00F7)
0x0003シャント 0x0000=100A 0x0001=50A 0x0002=200A 0x0003=300A
b.入力レジスタ
概要
0x0000電圧値 1LSB=0.01V
0x0001電流値 1LSB=0.01A
0x0002電力下位16but 1LSB=0.1W
0x0003電力上位16bit
0x0004電力量下位16bit 1LSB=1Wh
0x0005電力量上位16bit
0x0006高電圧警報状態 0xFFFFはアラーム、0x0000アラームなし
0x0007低電圧警報状態 0xFFFFはアラーム、0x0000アラームなし

(5)DataRegister

ファンクション0x04の時はDataAddressを始めとして幾つのデータを送るか指定します。
1つのデータアドレスでデータは16bit = 2bytになります。

(6)CRC

CRCは16bit=2Byte(2バイト)のバイナリ値で構成されています。
CRCは送信側が計算し、受信側が受信データのCRCを計算し受信データのCRCと比較して違っていればエラーになります。



4.ModBus スレーブ

(1)フレーム構造

No Bytes0123456
項目Device
Address
FunctionData数
(単位はByte)
Top
Register
Lower
Register
Top
CRC
Lower
CRC
Data数 n = 単位は1Byteです。
ModBusのレジスターのデータは通常2Byteなので通常最低値は n = 2 となります。

(2)保持レジスタ(書き込みは『単一レジスタ』で一括の書き込みは出来ません。)

a.スレーブ構造として全ての保持レジスタを読み取り指示を出した場合を示します。
マスターから 0x1 0x3 0x0 0x0 0x0 0x4 0x44 0x9 を送信すると
スレーブから 0x1 0x3 0x8 0x75 0x30 0x2 0xbc 0x0 0x1 0x0 0x0 0x63 0x36 が送られてきます。
内容は
アドレス =0x0 0x1 0x20x3
Data(Hex)=0x7530 0x2bc 0x10x0
値 = 300.00(V)7.00(V)0x1 0
となります。
b.スレーブのアドレスを変更する時は
アドレスを0x1→0x11へ変更する。
マスターから 0x1 0x6 0x0 0x2 0x0 0x11 0xe8 0x6
スレーブから 0x1 0x6 0x0 0x2 0x0
アドレスが変更になったか確認する
マスターから 0xf8 0x3 0x0 0x2 0x0 0x1 0x31 0xa3
スレーブから 0xf8 0x3 0x2 0x0 0x11 0xe4 0x5c
0x11に変更されていることが判る。

(3)入力レジスタ

スレーブ構造として全ての入力レジスタを読み取り指示を出した場合を示します。
pzem-017に26(V)の電圧と10(A)の電流また今までの電力量1154(Wh)の場合
マスターから 0x1 0x4 0x0 0x0 0x0 0x8 0xf1 0xcc を送信すると
スレーブから 0x1 0x4 0x10 0xa 0x29 0x13 0x8a 0x32 0xd2 0x0 0x0 0x4 0x82 0x0 0x0 0x0 0x0 0x0 0x0 0x76 0x8a が送られてきます。
内容は
アドレス =0x00x10x20x30x40x50x60x7
Data(Hex)=0xa290x138a0x32d20x00x4820x00x00x0
値 =26.01(V)50.02(A)1301.0(W)0(W)
[上位]
1154(Wh)0(Wh)
[上位]
0[なし]
[高電圧警報]
0[なし]
[低電圧警報]
となります。

(4)電力量のリセット

現在の値を読み出します。
マスターから 0x1 0x4 0x0 0x4 0x0 0x2 0x30 0xa
スレーブから 0x1 0x4 0x4 0x4 0x89 0x0 0x0 0x2b 0x5e
データは 0x0489(下位) = 1161(Wh)  0x00(上位)=0

続いてリセット要求を送信
マスターから 0x1 0x42 0x80 0x11
スレーブから 0x1 0x42 0x80 0x11
※もしスレーブの信号を受信しない場合は0.2秒ほど待って、受信バッファーをリセットすること。

変更の確認
マスターから 0x1 0x4 0x0 0x4 0x0 0x2 0x30 0xa
スレーブから 0x1 0x4 0x4 0x0 0x0 0x0 0x0 0xfb 0x84
データがリセットされた事が判る。

(5)キャリブレーション

後日




5.特性確認

(1)電流特性

特性試験状況

(1)電圧特性

更新日 2025/12/20 11:41  管理者 平林 剛Hirabayashi Takeshi