目次

last update: 2024/04

OSレス環境用BSPパッケージ
第5章: MODBUS通信(TCP、RS232経由)
評価ボード:RX72N Envision Kit




テストサンプル

Demo Sample Application Folder:

Application
 └ _Exclude
     ├ MB  ..... MODBUS MASTER機能のデモサンプル
Sample説明
MB_MASTER_ASCIISampleMODBUS/ASCII プロトコルを使用してマスタモード通信を確認します
MB_MASTER_RTUSampleMODBUS/RTU プロトコルを使用してマスタモード通信を確認します
MB_MASTER_TCPSampleMODBUS/TCP プロトコルを使用してLANポート経由でマスタモード通信を確認します
MB_SLAVE_ASCIISampleMODBUS/ASCII プロトコルを使用してスレーブモード通信を確認します
MB_SLAVE_RTUSampleMODBUS/RTU プロトコルを使用してスレーブモード通信を確認します
MB_SLAVE_TCPSampleMODBUS/TCP プロトコルを使用してLANポート経由でスレーブモード通信を確認します

関連設定ファイル:

Config
 |- MB_Conf.h  ............ MODBUSコンフィグレーション設定ファイル
 |- OS
 |   |- libNo_OSLayer_RXv3_L.lib  ..... OSインターフェース設定ファイル
 |
 |- IO
     |- MB_ConfigIO.c  ..... デバッグコンソールIOインターフェース設定ファイル

ビルド方法

プロジェクト設定では「\Application\_Exclude\MB」フォルダはビルド対象外に設定しています。以下のどちらかの方法で動作確認を行うサンプルアプリケーションを選択します。

  1. 「\_Exclude\MB」フォルダ下の対象テストサンプルファイルをビルド対象設定の「\Application」フォルダ下にコピーします。
  2. 「\_Exclude\MB」フォルダ下の対象テストサンプルファイルのみ「ビルド対象外」の設定を解除します。

動作確認方法(TCP経由)

LAN Ethernetポート経由でMODBUS/TCPデータ通信を行いますので、LANドライバインターフェースを定義する「\BSP\Setup\IP_Config_RX72N_ETH.c」ファイルもビルド対象設定であることを確認してください。

テスト環境の設定:

評価ボードのLANポートをテスト用パソコンに接続して、TCP/IPネットワーク通信が正常にできることを確認してください。
パソコン側にMODBUSデモサンプルの動作確認用以下のプログラムを使用します。

Windows
 |- MB
    |- Modbus_Master
    |   |- Modbus_Master.exe  ..... MODBUS SLAVEデモ用テストプログラム
    |
    |- Modbus_Slave
        |- Modbus_Slave.exe   ..... MODBUS MASTERデモ用テストプログラム
PC Setup

ネットワーク環境に合わせて評価ボード側のemNetスタックのコンフィグレーション設定を編集してください。

File: BSP\Setup\IP_Config_RX72N_ETH.c

#define USE_DHCP     1    // Use DHCP client or static IP configuration.

//
// The following parameters are only used when the DHCP client is not active.
//
#define IP_ADDR      IP_BYTES2ADDR(192, 168,  11,  8)
#define SUBNET_MASK  IP_BYTES2ADDR(255, 255, 255,  0)
#define GW_ADDR      IP_BYTES2ADDR(192, 168,  11,  1)
#define DNS_ADDR     IP_BYTES2ADDR(192, 168,  11,  1)

MODBUS MASTERサンプルの動作確認:

  1. 「MB_MASTER_TCPSample.c」プログラムの SLAVE_IP_ADDR マクロにパソコンのIPアドレスを指定します。
    File: BSP\Setup\IP_Config_RX72N_ETH.c
    #define SLAVE_IP_ADDR  IP_BYTES2ADDR(192, 168, 11, 2)  // IP addr. of slave to connect to.
  2. 「MB_MASTER_TCPSample.c」サンプルを選択してプロジェクトを再ビルドします。
  3. LANケーブルを接続して、パソコン側に「Modbus_Slave.exe」プログラムを起動します。
    Setup:Interface type = TCP、Slave Address = 1、Base address = 1000
  4. MODBUS MASTERサンプルプロジェクトのデバッグセッションを開始して、プログラムを実行します。
  5. パソコン側のテストプログラムの画面から結果を確認します。

MODBUS SLAVEサンプルの動作確認:

  1. 「MB_SLAVE_TCPSample.c」サンプルを選択してプロジェクトを再ビルドします。
  2. LANケーブルを接続して、MODBUS SLAVEサンプルプロジェクトのデバッグセッションを開始して、プログラムを実行します。
  3. パソコン側に「Modbus_Master.exe」プログラムを起動します。
    Setup:TCP、Modbus/TCP Slave = 評価ボードのIPアドレス、Slave Address = 1、Base address = 1000
  4. 評価ボードのLED表示及びパソコン側のテストプログラムの画面から結果を確認します。

動作確認方法(RS232経由)

USB UART変換コネクタ(CN8ポート)経由でMODBUS ASCII/RTUデータ通信を行いますので、UARTドライバインターフェースを定義する「\BSP\USB_UART.c」ファイルもビルド対象設定であることを確認してください。

USB UARTのBaudrate設定値は「115200」を使用します。

File: MB_MASTER_ASCIISample.c, MB_MASTER_RTUSample.c

#define UART_BAUDRATE       115200

テスト環境の設定:

評価ボードの SW3 DIPスイッチを以下のように設定します。

  • SW3-2:Off(Connected to UART pins of MCU)

評価ボードのCN8 USBポートをテスト用パソコンに接続して、パソコン側にMODBUSデモサンプルの動作確認用以下のプログラムを使用します。

Windows
 |- MB
    |- Modbus_Master
    |   |- Modbus_Master.exe  ..... MODBUS SLAVEデモ用テストプログラム
    |
    |- Modbus_Slave
        |- Modbus_Slave.exe   ..... MODBUS MASTERデモ用テストプログラム

MODBUS MASTERサンプルの動作確認:

  1. 「MB_MASTER_ASCIISample.c」又は「MB_MASTER_RTUSample.c」サンプルを選択してプロジェクトを再ビルドします。
  2. 評価ボードのCN8 USBポートをテスト用パソコンに接続して、パソコン側に「Modbus_Slave.exe」プログラムを起動します。
    Setup:Interface type = ASCII / RTU、COMポート番号、Baud:115200、Data bits:8、Parity:None、Stop bits:One、Slave Address = 1、Base address = 1000
  3. MODBUS MASTERサンプルプロジェクトのデバッグセッションを開始して、プログラムを実行します。
  4. パソコン側のテストプログラムの画面から結果を確認します。

MODBUS SLAVEサンプルの動作確認:

  1. 「MB_SLAVE_ASCIISample.c」又は「MB_SLAVE_RTUSample.c」サンプルを選択してプロジェクトを再ビルドします。
  2. 評価ボードのCN8 USBポートをテスト用パソコンに接続して、MODBUS SLAVEサンプルプロジェクトのデバッグセッションを開始して、プログラムを実行します。
  3. パソコン側に「Modbus_Master.exe」プログラムを起動します。
    Setup:Interface type = ASCII / RTU、COMポート番号、Baud:115200、Data bits:8、Parity:None、Stop bits:One、Slave Address = 1、Base address = 1000
  4. 評価ボードのLED表示及びパソコン側のテストプログラムの画面から結果を確認します。

テストレポート

Sample: MB_MASTER_TCPSample

File: MB_MASTER_TCPSample.c (MODBUS SLAVEのIPアドレス設定)

#define SLAVE_IP_ADDR  IP_BYTES2ADDR(192, 168, 1, 3)

パソコン側の Modbus_Slave.exe プログラムのコンソール

PC ModbusSlave

Sample: MB_SLAVE_TCPSample

評価ボード側のMODBUS Slaveプログラムを実行して、PC側の「Modbus_Master.exe」プログラムを実行します。

パソコン側の Modbus_Master.exe プログラムのコンソール

SEGGER Modbus/TCP master V1.02
Compiled on Apr 15 2016 11:41:12

Enter network address of Modbus/TCP slave [127.0.0.1]: 192.168.1.12
Enter slave address (dec.) [1]:
Enter base address of registers (dec.) [1000]:

Executing blinky on slave addr. 1 by toggling coils on addr. 1000 & 1001 .

Press any key to close.

Sample: MB_MASTER_ASCIISample

PC側の「Modbus_Slave.exe」プログラムを実行して以下のようにパラメータを設定します。
※COMポート番号は環境に合わせて設定してください。

Enter interface type (1:TCP|2:RTU|3:ASCII) [TCP]: 3
Enter COM port to use (dec.) [COM1]: 8
Enter Baud rate to use (dec.) [38400]: 115200
Enter the number of data bits (dec. 4 - 8) [8]:
Enter the parity (0:None|1:Odd|2:Even|3:Mark|4:Space) [None]:
Enter the number of stop bits (0:One|1:One and half|2:Two) [One]:

COM configuration used:
        COM8, Baud:115200, Data bits:8, Parity:None, Stop bits:One

Enter slave address (dec.) [1]: 1
Enter base address of registers (dec.) [1000]: 1000

パソコン側の Modbus_Slave.exe プログラムのコンソール

PC ModbusSlave

Sample: MB_SLAVE_ASCIISample

評価ボード側のMODBUS Slaveプログラムを実行して、PC側の「Modbus_Master.exe」プログラムを実行します。

パソコン側の Modbus_Master.exe プログラムのコンソール

SEGGER Modbus master V1.02
Compiled on Apr 15 2016 11:41:12

Enter interface type (1:TCP|2:RTU|3:ASCII) [TCP]: 3
Enter COM port to use (dec.) [COM1]: 8
Enter Baud rate to use (dec.) [38400]: 115200
Enter the number of data bits (dec. 4 - 8) [8]:
Enter the parity (0:None|1:Odd|2:Even|3:Mark|4:Space) [None]:
Enter the number of stop bits (0:One|1:One and half|2:Two) [One]:
COM configuration used:
        COM8, Baud:115200, Data bits:8, Stop bits:One, Parity:None

Enter slave address (dec.) [1]:
Enter base address of registers (dec.) [1000]:

Executing blinky on slave addr. 1 by toggling coils on addr. 1000 & 1001 .

Press any key to close.

Sample: MB_MASTER_RTUSample

PC側の「Modbus_Slave.exe」プログラムを実行して以下のようにパラメータを設定します。
※COMポート番号は環境に合わせて設定してください。

Enter interface type (1:TCP|2:RTU|3:ASCII) [TCP]: 2
Enter COM port to use (dec.) [COM1]: 8
Enter Baud rate to use (dec.) [38400]: 115200
Enter the number of data bits (dec. 4 - 8) [8]:
Enter the parity (0:None|1:Odd|2:Even|3:Mark|4:Space) [None]:
Enter the number of stop bits (0:One|1:One and half|2:Two) [One]:

COM configuration used:
        COM8, Baud:115200, Data bits:8, Parity:None, Stop bits:One

Enter slave address (dec.) [1]: 1
Enter base address of registers (dec.) [1000]: 1000

PC側の「Modbus_Slave.exe」プログラム実行後に評価ボード側のMODBUS Masterプログラムを実行します。

パソコン側の Modbus_Slave.exe プログラムのコンソール

PC ModbusSlave

Sample: MB_SLAVE_RTUSample

評価ボード側のMODBUS Slaveプログラムを実行して、PC側の「Modbus_Master.exe」プログラムを実行します。

パソコン側の Modbus_Master.exe プログラムのコンソール

SEGGER Modbus/RTU master V1.02
Compiled on Apr 15 2016 11:41:12

COM configuration used:
        COM8, Baud:115200, Data bits:8, Stop bits:One, Parity:None

Enter slave address (dec.) [1]:
Enter base address of registers (dec.) [1000]:

Executing blinky on slave addr. 1 by toggling coils on addr. 1000 & 1001 .

Press any key to close.
前の章

HTTPクライアント、JSONパーサー

次の章

セキュリティ機能の評価