趣味のお部屋

やってみたいと思ったことが趣味…それを極めたらプロかな?

ハイブリッドインバーターのModbusについて|д゚)まとめ

ハイブリッドインバーターRS485と呼ばれるバスを使用してWi-FiやUSBでModbusと呼ばれる通信方式でデータ転送が可能です。

ハイブリッドインバーターにはRS485データ信号は2回線あり、

RS485-1:Wi-Fi

RS485-2:BMS

と割り振られており、設定32でRS485-2をPCに接続するかBMSに接続するかを選択可能となっています。

ただし24V系ではサイズの関係上1つのRJ45入力にRS485が2系統入っており、Wi-Fiロガーを取り付けるとBMSが使用できないという変な仕様になっています。

RS485にCH340と呼ばれるRS485-USB変換チップが接続さており、USBによるデータ転送も可能となっています。

しかしRS485のWi-Fiロガーを使用する場合、USB接続してデータロギングすると高確率で両デバイスがフリーズします(;´・ω・)

これはModbus通信でマスター機器が2台存在することとなり、通信が正しく出来なくなる為、ビジー状態になってしまうことが原因と思われます。

これをやってしまうと、システムを再起動しないと復旧できません(;´Д`)

その為HF系機種ではWi-FiロガーとUSBの同時使用はNGとなります。

 

さて、本題のModbusについてですが、過去の記事でも度々触れているので、内容が重複する部分もあります。

 

⇓ Modbus通信を使用した遠隔操作によるハイブリッドインバーターの初期化

msn-06s.hatenablog.jp

 

⇓ Modbus通信ソフトを利用した有線によるハイブリッドインバーターの設定変更方法

msn-06s.hatenablog.jp

 

今回は総合的にまとめてみました(・ω・)ノ

 

まずModbusというのは産業界で使用されている通信プロトコルで、基本的な通信方法は規格化されている為、レジスタアドレスとデータ規則さえ把握すれば使用可能です。

 

SmartESSiPowerといったソフトウェアもModbusデータを読み込んで視覚的にわかりやすく|д゚)?表示しているだけです。

 

※以降の内容はグレーな部分も多く、機器の正しい使用方法とは異なる為、最悪機器や家電を壊す結果となる可能性があることを承知してください。

これによる不具合や事故等が起きても、当方は一切責任を負いません。

 

⇓ SRNE系ハイブリッドインバーターのModbusに関する資料は下記からDLできます

pdfcoffee.com

SRNE Hybrid Solar Inverter MODBUS Protocol V1.7

恐らく正式な資料では無いと思われますが、SRNE系ハイブリッドインバーターのModbus資料の中では、唯一ASF系までを網羅しています。

ちなみにSRNE系とはSRNEのOEMを含むため、Lvyuan、Renogy、Li time、Bluesun等のハイブリッドインバーターも含まれます。

BMS制御機能については、この資料にも公表されていません。

また、チャージコントローラー等のModbusとも互換性がある為、ハイブリッドインバーターでは機能しないレジスタアドレスも存在します。

 

Modbusの基本フォーマット

基本フォーマットは決まっているので、これが正しくないと通信できません。

1.通信フォーマット

SRNE系ハイブリッドインバーターでModbus通信を行う為には、通信フォーマットを一致させる必要があります。

シリアルポートレート⇒9600bps

チェックビット⇒None

データビット⇒8bit

ストップビット⇒1bit

 

2.データフォーマット

通信データの書式は下記になります。

1.Start character: >10ms
2.Address code:1バイト

範囲:01H~F7H(10進数1~247)、00Hはすべてのスレーブが応答するブロードキャストアドレスですが、コマンドは返しません。

備考1: Address codeとして FFH を使用すると、データを返すローカル デバイス アドレスをバイパスできます。これは通常、一般的な監視画面、Bluetooth などのスタンドアロンバイスとして使用されます。FFH アドレスは、複数の 485 バス アクセスには適していません。

備考2: ハイブリッドインバーターを並列接続している場合、各ハイブリッドインバータに割振られたIDがAddress codeに該当する。

3.Function code: 1 バイト

4.Data: N バイト

5.Error check: 2 バイト

アドレス コード、機能コード、およびデータの各バイトの CRC チェックサムです。
6.End character: >10ms

 

※備考
1) レジスタ アドレスとデータ自体は 2 バイトで、上位バイトが最初に送信され、次に下位バイトが送信されます。CRC の場合、下位バイトが最初に送信され、次に上位バイトが送信されます。
2) エラー コードは、サーバーが送信したフレーム データにエラーがある場合にクライアントから返されるエラー応答機能コードです。

エラー コード = 機能コード 80H。

1) 例外コードの説明
a、01H -- 機能コードがサポートされていません
b、02H -- PDU 開始アドレスが正しくないか、PDU 開始アドレス + データ長
c、03H -- 読み取りまたは書き込みレジスタのデータ長が大きすぎます
d、04H -- クライアントがレジスタの読み取りまたは書き込みに失敗しました
e、05H -- サーバーから送信されたデータ チェック コードが正しくありません

 

3.データ読出し

(ファンクションコード:03H)

※一度に読込み可能なレジスタ数は32以下

送信 [機器ID][03h][レジスタアドレス][データ数][CRC

受信成功 [機器ID][03h][データ数][読出データ][CRC

エラー受信[機器ID][83h][エラーコード][CRC

 

4.シングル書込み

(ファンクションコード:06H)

送信 [機器ID][06h][レジスタアドレス][書込データ][CRC

受信成功 [機器ID][06h][レジスタアドレス][書込データ][CRC

エラー受信[機器ID][86h][エラーコード][CRC

 

5.データ書込み

(ファンクションコード:10H)

※一度に読込み可能なレジスタ数は32以下

送信 [機器ID][10h][レジスタアドレス][データ数][書込データ][CRC

受信成功 [機器ID][10h][レジスタアドレス][データ数][CRC

エラー受信[機器ID][90h][エラーコード][CRC

 

6.エラーコード

 

Modbusレジスタアドレス

チャージコントローラー等他のSRNE製品との上位互換の為、使用されていないアドレスも存在します。また、未公開部分もある為、完全なものとは言えません。

※SRNE Hybrid Solar Inverter MODBUS Protocol V1.7を基に当方なりにまとめたものとなっています

※2025/2/6一覧を見やすく修正・一部記載修正

P00:製品情報

0x000Ah~0x0049h※読出専用

製品に関する情報データエリアです。

製品ID以外はHF2430U60-100、HF2430S80-H、HYP4850U100-H全て同じでした。

0x0021h~0x0048h:

製品ID(本体に貼られているシリアルナンバー)と製造年月日の情報がASCIIコードで格納されています。

※グレーのアドレスに関しては未使用

 

P01:コントローラーデータエリア

0x0100h~0x0111h※読出専用

MPPTコントローラーに関する計測データエリアです。

0x010Fh~0x111h:

ASF等の単相三線式ハイブリッドインバーター

※グレーのアドレスに関しては未使用

 

P02:インバーターデータエリア

0x0200h~0x023Fh※020Ch~020Eh以外は読出専用

インバータ―に関する計測データエリア

0x022Ah~0x0239h:

ASF等の単相三線式ハイブリッドインバーター

※グレーのアドレスに関しては未使用

 

P03:デバイスコントロールエリア

0xDF00h~0xDF0Fh※書込専用

システムコントロールエリアです。

基本的に0:disable1:enable

※赤以外のアドレスの機能に関しては未確認です。

 

P04:アップグレードコマンドエントリーアドレス

0x0438h~0x0439h ※資料もなく詳細不明

 

P05:バッテリー関連パラメーター設定エリア

0xE000h~0xE039h

設定値については当方の機種の値です。

※黄色のアドレスに関しては機種による

※グレーのアドレスに関しては不明

 

 

P06:システムパラメーター設定エリア(仮)

0xE100h~0xE131h ※資料が無く詳細不明

設定値については当方の機種の値です。

赤字については機種ごとにデータが違うアドレスです。

 

P07:インバーターパラメーター設定エリア

0xE200h~0xE21Bh

0xE218h~0x21Bh:

HF系では未実装

黄色のアドレスについては機種による

設定63はRenogy5kWモデルに実装されている機能と思われSRNE系で使えるか不明

 

P08:電力統計履歴エリア

0xF000h~0xF04Dh※読出専用

0xF031h~0xF033h:

未使用

 

P09:障害履歴記録エリア

0xF800h~0xF901h

 

Modbusの使い方

1.USB接続によるModbus通信方法

CH340のドライバーをインストールする必要があります。

⇓ 下記よりiPowerをDLすればドライバーが入っています

https://smart-trading.co.jp/wp-content/themes/wp/dl/iPower_split-phase_u.zip

 

USBによるModbus通信のでは、ComTestProを使用するのが一番楽です。

⇓ ComTestProは下記からDLできます

www.baseblock.com

ComTestProの使用方法

こちらのソフトでは

Step1:通信フォーマット入力

Step2:データフォーマット設定

Step3:データ入力及び実行

必要なレジスタアドレスとレジスタデータさえ判っていれば面倒なCRCチェックサムの入力も必要が無いので、遠隔操作用のデバッグコード作成も容易となります。

また10進数でのデータ入力も可能なので、時刻等の数値データを入力する場合は16進数に変換する必要もなく直感で入力できます。

16進数のデータを入力する際は語尾に”h”を付けます。

 

実行をすると[Raw Data]デバッグコードが出力されるので、それをメモってSmartESS等のデバッグモードから実行すればModbus通信が可能です。

⇓ 上記の設定で実行すると下記コードが作成されます

この場合、レジスタデータ数を32で指定しているので、このように長いコードになります。

またデバックコードを作成するだけであれば、ハイブリッドインバーターと接続をしなくてもソフト単体で実行すればエラーは出ますが「Raw data」にコードが出力されます(・ω・)ノ

 

2.Wi-Fi接続によるModbus通信方法

こちらはWi-Fiドングルが必要となります。

ドングルは2種類存在しており、

 

MS-W09:対応アプリ「SmartESS」

 ⇒Web版Dessmonitor

 ※国内だとチェリーベルで主に販売。海外向けSRNEサイト公式アプリ

 

LSW-5A8153-RS485対応アプリ「Solarman」

 ⇒Web版SOLARMAN Smart

 ※国内だとLvyuanで主に販売。日本向けSRNEサイト公式アプリ

 

2つのドングルはクラウドサーバーが違う為、互換性はありません。

当方はSmartESSしか使えないのでSolarmanにデバック機能があるかどうかは不明。

ココではSmartESSやDessmonitorを使った例を記述しますが、Solarmanでもデバッグ機能が実装されていれば使用方法は同じと思います。

SmartEss及びDessmonitorの使用方法

SmartEssのデバックモードの入り方は下記を参照

⇓ SmartESSのデバッグ機能を利用した遠隔Modbus通信方法

msn-06s.hatenablog.jp

Dessmonitorののデバックモードの入り方はDebugをクリックするだけです。

⇓ Dessmonitorのデバッグ機能を利用した遠隔Modbus通信方法

msn-06s.hatenablog.jp

 

下記画像はPCに入れているandroidエミュレーター上のSmartEssの古いバージョンですが、使用方法はSmartEssもDessmonitorも全て同じです。



上段の255という数値を機器ID(ハイブリッドインバーター設定30)に変更します。
Wi-Fiロガーに接続している機器IDが一致していないと通信はできません。

 

中段はデバックコードを入力します。

 例では0x0210hから16個のデータを読み出すようにしています。

 

実行すると下段にデータが送信されます。

エラーの場合はエラーコードが送信されるのでレジスタアドレスや入力データが間違っていないか確認する必要があります。

 

 

設定変更に関しては、初期化や並列運転のようにリセットを実行してハイブリッドインバーターを再起動しないと反映されないものもあるので、稼働中に変更できるレジスタばかりではありません。

ただModbusを使用することでハイブリッドインバーターの動作を色々とコントロールすることが可能となります。

 

誰か使い勝手のよいPCアプリを公開してください|д゚)ノ