本記事では、Siemens S7-1200 PLCとT6ドライバ間のModbus RTU通信の設定方法について説明します。
- ハードウェア:
- S7-1200 PLC: CPU 1215C DC/DC/DC
- CM1241: RS422/485
- T6: T6-1000RS, T6M80-1000H2A3-M17S
- 24V電源: S-150-24
- 概要:
S7-1200 PLCがModbus RTUマスタとして動作し、T6ドライバがModbusスレーブとして動作します。PLCはT6ドライバからモータ位置パラメータを読み取ります。
- 実装手順:
- ステップ1:T6ドライバのパラメータを設定する
| パラメータ | 設定値 |
|---|---|
| Pr5.29 = 4 | パリティ:なし、データビット:8、ストップビット:1 |
| Pr5.30 = 6 | ボーレート:115200 |
| Pr5.31 = 1 | RS485スレーブアドレス:1 |
- ステップ2:Modbus RTU通信モジュールを設定する

- ステップ3:システムメモリを有効にする
プロジェクトツリーでPLC_1を選択し、右クリックしてプロパティを開きます。プロパティウィンドウでシステムとクロックメモリに移動し、システムメモリバイトを有効にするのチェックボックスをオンにします。

- ステップ4:MB_COMM_LOAD命令を呼び出す
Main [OB1]ブロックを開きます。命令 → 通信 → 通信プロセッサ → Modbusに移動し、MB_COMM_LOAD命令を以下に示すようにプログラムセグメントにドラッグします。

- ステップ5:データ送受信バッファ領域を作成する
プロジェクトツリーで新しいブロックの追加 → データブロック (DB) → OKを選択します(下図参照)。新しいブロックを追加した後、最適化ブロックアクセスオプションを無効にし、データ送受信バッファ配列を定義します。

- ステップ6:MB_MASTER命令を呼び出す
Main [OB1]ブロックを開きます。命令 → 通信 → 通信プロセッサ → Modbusに移動し、MB_MASTER命令を以下に示すようにプログラムセグメントにドラッグします。

この命令では、MB_ADDR(スレーブアドレス)を1に、MODEを0に設定します。これによりマスタが読み取りモードになります。DATA_ADDRの開始アドレスは424620です。このアドレスはRS485通信用のパラメータPr8.43(モータ位置)に対応しています。Pr8.43のModbusレジスタアドレスは0x602Bで、10進数では24619です。T6ドライバのホールディングレジスタオフセット400001を加算すると:24619 + 400001 = 424620となります。
- ステップ7:プログラムを実行し、Pr8.43を読み取る
PLCプログラムで受信したデータは0x1A9Dで、10進数に変換すると6813です。T6ドライバ側でPr8.43 = 6813であることを確認し、データが正しく読み取られたことを検証します。
- まとめ
本記事では、Siemens S7-1200 PLCとT6ドライバ間の基本的なModbus RTU通信の設定方法について説明しました。同じ手法をS7-1200とその他のStepperOnlineドライバ間の通信にも応用できます。