本記事では、Siemens S7-1200 PLCとSTEPPERONLINE A6-RSシリーズサーボドライバ間でModbus RTU通信を確立する方法について解説します。
アプリケーションシナリオ: S7-1200 PLCをModbus RTUマスタとし、A6-RSサーボドライバをスレーブとします。PLCはサーボドライバからDCバス電圧を読み取ります。
前提条件
作業を開始する前に、以下の項目をご用意ください:
- S7-1200 PLC:CPU 1215C DC/DC/DC
- A6-RSシリーズのサーボモータ(任意)
- RS-485通信ケーブル
手順
1. サーボドライバのパラメータ設定
A6-RSサーボドライバで以下のパラメータを設定します:
| パラメータ | 値 | 説明 |
|---|---|---|
| C0A.00 | 1 | Modbusスレーブアドレス |
| C0A.01 | 7 | Modbusボーレート |
| C0A.02 | 0 | Modbus通信フォーマット |
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に設定(手順1で設定したスレーブアドレス)。
- MODE:0に設定(読取りモード)。
- DATA_ADDR:16#4006に設定し、レジスタU40.06(DCバス電圧)を読み取ります。直接レジスタアドレスを使用してください。Modbusアドレッシングで一般的に使用される40001オフセットは加算しないでください。
7. プログラムの実行
PLCプログラムでU40.06の値をモニタリングします。受信データは16進数形式です。10進数に変換し、A6-RSサーボドライバに表示されるU40.06の値と比較して正しさを確認してください。