- 接続
- Modbus RTU Connection
- 設定
- Modbus RTU Configuration
- Modbus Slaveアドレス
- Modbus RTU Frame Format
- VA(Virtual Address)の設定
- Modbus Tables
- CoolMaster, CooLinkBridge, CooLinkHub Modbus Tables
- Modbus Masterから制御
- Read Coils (ON/OFFの確認)
- Write Single Coil (ON/OFF制御)
- Holding Registers ( Modeの確認)
- Write Single Register (モードの変更)
- まとめ
接続
CoolAutomation のデバイスは、以下の Modbus Organization が定める仕様に従い、Modbus RTU および Modbus IP プロトコルをサポートしています:
- MODBUS アプリケーションプロトコル仕様
- MODBUS シリアルライン仕様および実装ガイド
- MODBUS TCP/IP メッセージング実装ガイド
Modbus RTU は、CoolMaster 製品ライン(以下、CoolMaster)、CooLinkBridge、CooLinkHub および CooLinkNet でサポートされています。
Modbus IP は、CooLinkNet を除く上記すべてのデバイスでサポートされています。
Modbus RTU Connection
Modbus RTU モードにおける CoolAutomation デバイスの物理接続は、EIA/TIA-485 規格に準拠した「2線式」電気インターフェースで行われます。
接続は 485-A 端子および 485-B 端子を介して行います。
接地線の接続は必須ではありませんが、強く推奨されます。

CooLinkNet / CooLinkHub では、Modbus RTU 接続にはライン L3 のみ使用できます。
設定
CoolAutomation デバイスは、Modbus 機能をサポートするために適切に設定されている必要があります。
設定は、各デバイスに対応する Programmer Reference Manual (PRM) 文書で詳しく説明されている、CoolAutomation 独自の ASCII_IF インターフェース を介して行われます。
同一デバイスに対して、複数の Modbus RTU および Modbus IP 接続を同時に持つことが可能です。
Modbus RTU Configuration
CoolAutomation デバイスの Modbus RTU インターフェースモジュールは、適切な通信ラインを割り当てることで有効化する必要があります。
CoolMaster では、L3 ラインの使用が強く推奨されますが、L4、L5、L6、L7 のいずれのラインを使用することも可能です。
一方、CooLinkNet、CooLinkHub、および CooLinkBridge では、Modbus RTU 用として L3 ラインの使用が必須となります。
CoolMaster / CooLinkHub / CooLinkBridge における Modbus RTU 有効化:
まずは各LINEの状態をチェック

CoolLinkHubはCG5になっている必要があるので、

>line type L3 CG5にしたあと,boot 2でリセットを行います。

これでCoolLinkHubでModbus RTUを使う準備ができました。
CoolMaster、CooLinkHub、CooLinkBridge では、Modbus RTU モジュールを使用するように VA を設定する必要があります。
Modbus Slaveアドレス
Modbus スレーブアドレスは、line
コマンドで照会するか、line myid
コマンドで変更することができます。
以下の例では、電源リセット後に新しいスレーブアドレスが 0x51(10進数で81) になります。

CoolAutomation デバイスのデフォルト(工場出荷時)の Modbus スレーブアドレスは、16進数で 0x50(10進数で 80) です。
Modbus RTU Frame Format
CoolAutomation デバイスのデフォルトの Modbus RTU フレーム形式は 9600_8N1 です。
Baud Rate 9600 bps
Data Bits 8
Parity None
Stop Bits 1
VA(Virtual Address)の設定
VA(Virtual Address、仮想アドレス)は CoolMaster、CooLinkBridge、CooLinkHub デバイスで使用されます。
CooLinkNet デバイスには本章は適用されません。
VA(仮想アドレス)は、室内機の識別子/番号(UID)を、関連する Modbus オブジェクト ― すなわち ホールディングレジスタ、入力レジスタ、コイル、ディスクリート入力 ― のアドレスに変換する作業を簡略化するために用いられます。
UID は Ln.XYY という形式の文字列です。例:
- L1.102 – ライン L1 上の室内機 102
- L2.003 – ライン L2 上の室内機 003
CoolAutomation デバイスによって検出(認識)された UID の一覧は、ls
コマンドで取得できます。

各 UID には、関連付けられる VA が存在しない場合、1つだけ、または複数存在する場合があります。
VA は単純な数値で、1 から順に割り当てられます。
デバイスは、既存の(ls
コマンドで確認できる)UID に対して、自動的に VA を割り当て、関連付けることができます。

ベースアドレスとは、VA とその UID に関連付けられた Modbus オブジェクトブロックの開始アドレスを指します。(上記の 0x0011や0x0021)
UID によって参照される室内機に対するすべての操作(ステータスの照会や変更)は、そのブロック内の Modbus オブジェクトを使用して行われます。
室内機用の Modbus オブジェクトブロックのサイズは 16 アドレスです。
この Modbus オブジェクトブロックの内容は CoolMaster Tables に記載されています。
ベースアドレスは以下の式で計算されます:
Base Address = VA × 16 + 1
以下の例は、UID、VA、ベースアドレス、および Modbus オブジェクトの関係を示しています。

VA は、**まとめて割り当て/解放(削除)**することも、個別に割り当て/解放することもできます。
前述のように、自動的に VA を割り当てる場合は va auto
コマンドを使用します。
また、特定の UID に対して VA を割り当てることも可能です。
例えば、UID L1.102 に VA 0004 を割り当てる場合:

Modbus Tables

CoolMaster, CooLinkBridge, CooLinkHub Modbus Tables

Modbus Masterから制御
Modbus MasterというアプリケーションからModbus RTUでCoolLinkHubを制御します。

接続は上記の設定で接続します。
SlaveIDは、81しか接続できなかったので、おそらくCoolLinkHubもCoolPlugもSlaveIDは81、

CoolLinkHubとCoolPlugの違いはアドレスが17か33で分けるのかと予想されます。(事務所にはCoolPlugが1台しかないので、CoolLinkHubとCoolPlugもどちらも同じ挙動です。
Read Coils (ON/OFFの確認)

Read Coilsを行います。
15:26:41: TX 51 01 00 10 00 01 10 5F
15:26:41: RX 51 01 01 01 81 48
15:26:41: Read succeeded: Function code:1

となり、現在、空調機の電源がONであることがわかりました。
Write Single Coil (ON/OFF制御)

アドレス16を0にしてWriteSingleCoilを実行。


空調を消してしまったので、再度、ONにするには

アドレス16を0x0110にしてApplyした後にWriteSingleCoilをおこなうと

- Coil 16 に 1 (ON) が書き込まれ、成功しました。
- これにより、HVAC(エアコン)の 運転開始(ON) がModbus経由でできたことになります。
Holding Registers ( Modeの確認)

BaseAddressの時にHoldingRegistersにはOperationModeの値になります。

Read holdingを行うとアドレス16は0なので 0-cool (冷房)運転という状態が取得できます。
今度は空調機のリモコンから送風モードに変更、Read holdingを行うと

5-Fan(送風)であることが確認できました。
Write Single Register (モードの変更)

1-HeatをWriteSingleRegisterとしたところ、暖房にモードが変更されました。
まとめ
以上、CoolHubLinkとCoolPlugを使ってModbusRTUで接続し状態を取得、制御を行う方法を紹介しました。