シーメンス S7-200 SMART Modbus RTU レジスタアドレスマッピング完全ガイド

無料無料技术资料

这篇内容可直接阅读,适合用于基础学习和検索引流。

1. 概要

S7-200 SMART PLC が Modbus RTU のマスターまたはスレーブとして動作する場合、内部記憶領域(I、Q、AIW、V)と標準 Modbus アドレスの間には固定のマッピング関係があります。本記事はシーメンス公式技術文書に基づき、S7-200 SMART の Modbus アドレスマッピングルールを、完全なアドレス対照表、設定手順、通信例、トラブルシューティングガイドとともに詳しく説明します。

S7-200 SMART は2つの Modbus 動作モードをサポートします。

  • Modbus RTU マスター(Master):通信要求を能動的に発行し、スレーブ機器の読み取りや制御を行う
  • Modbus RTU スレーブ(Slave):マスターの読み書き要求に受動的に応答する

2. Modbus アドレスタイプの説明

Modbus プロトコルは4つのデータ領域を定義しており、それぞれに固定のアドレス範囲と機能コードがあります。

Modbus アドレス領域機能コード読み書き属性データ型対応する S7-200 SMART 記憶領域
0xxxx(コイル)01(コイル読み出し)/ 05(単一コイル書き込み)/ 15(複数コイル書き込み)読み/書きビット(1 bit)Q領域 デジタル出力
1xxxx(離散入力)02(離散入力読み出し)読み取り専用ビット(1 bit)I領域 デジタル入力
3xxxx(入力レジスタ)04(入力レジスタ読み出し)読み取り専用ワード(16 bit)AIW アナログ入力
4xxxx(保持レジスタ)03(保持レジスタ読み出し)/ 06(単一レジスタ書き込み)/ 16(複数レジスタ書き込み)読み/書きワード(16 bit)V記憶領域(設定可能)

重要な注意:Modbus アドレスは1始まり(1-based)の番号付けで、1から数えます。一方、PLC 内部アドレスは通常0始まり(0-based)で、0から始まります。

3. S7-200 SMART Modbus アドレスマッピング表

3.1 デジタル出力領域(Q領域)→ 0xxxx コイル

デジタル出力 Q 領域は Modbus の 0xxxx コイル領域にマッピングされ、読み書き操作をサポートします。

Modbus アドレスS7-200 SMART アドレス説明
00001Q0.00チャネル 0ビット
00002Q0.10チャネル 1ビット
00003Q0.20チャネル 2ビット
00004Q0.30チャネル 3ビット
00005Q0.40チャネル 4ビット
00006Q0.50チャネル 5ビット
00007Q0.60チャネル 6ビット
00008Q0.70チャネル 7ビット
00009Q1.01チャネル 0ビット
00010Q1.11チャネル 1ビット
00011Q1.21チャネル 2ビット
00012Q1.31チャネル 3ビット
00013Q1.41チャネル 4ビット
00014Q1.51チャネル 5ビット
00015Q1.61チャネル 6ビット
00016Q1.71チャネル 7ビット
00017Q2.02チャネル 0ビット
00018Q2.12チャネル 1ビット
......以下同様。8アドレスごとに1バイトに対応
00256Q31.7最大アドレス(最大32バイトの出力)

計算式:Modbus アドレス = チャネル番号 × 8 + ビット番号 + 1

例:Q2.3 にアクセスする場合、Modbus アドレス = 2×8 + 3 + 1 = 00020

機能コード:

  • コイル状態の読み出し:機能コード01
  • 単一コイルの書き込み:機能コード05
  • 複数コイルの書き込み:機能コード15(0x0F)

注意事項:

  • Q領域のアドレスマッピングは固定で、追加設定は不要
  • 実際に使用できる Q 点の数は CPU モデルと拡張モジュールに依存する
  • 対応する Q 点がハードウェアに存在しない場合、読み出し値は常に0

3.2 デジタル入力領域(I領域)→ 1xxxx 離散入力

デジタル入力 I 領域は Modbus の 1xxxx 離散入力領域にマッピングされ、読み取り専用です。

Modbus アドレスS7-200 SMART アドレス説明
10001I0.00チャネル 0ビット
10002I0.10チャネル 1ビット
10003I0.20チャネル 2ビット
10004I0.30チャネル 3ビット
10005I0.40チャネル 4ビット
10006I0.50チャネル 5ビット
10007I0.60チャネル 6ビット
10008I0.70チャネル 7ビット
10009I1.01チャネル 0ビット
10010I1.11チャネル 1ビット
10011I1.21チャネル 2ビット
10012I1.31チャネル 3ビット
10013I1.41チャネル 4ビット
10014I1.51チャネル 5ビット
10015I1.61チャネル 6ビット
10016I1.71チャネル 7ビット
10017I2.02チャネル 0ビット
10018I2.12チャネル 1ビット
......以下同様。8アドレスごとに1バイトに対応
10256I31.7最大アドレス(最大32バイトの入力)

計算式:Modbus アドレス = 10000 + チャネル番号 × 8 + ビット番号 + 1

例:I3.5 にアクセスする場合、Modbus アドレス = 10000 + 3×8 + 5 + 1 = 10030

機能コード:離散入力の読み出しには機能コード02を使用

注意事項:

  • I領域のアドレスマッピングは固定で、追加設定は不要
  • 離散入力は読み取り専用で、マスターは書き込めない
  • 実際に使用できる I 点の数は CPU モデルと拡張モジュールに依存する

3.3 アナログ入力領域(AIW領域)→ 3xxxx 入力レジスタ

アナログ入力 AIW 領域は Modbus の 3xxxx 入力レジスタ領域にマッピングされ、読み取り専用です。

Modbus アドレスS7-200 SMART アドレス説明
30001AIW01番目のアナログ入力チャネル
30002AIW22番目のアナログ入力チャネル
30003AIW43番目のアナログ入力チャネル
30004AIW64番目のアナログ入力チャネル
30005AIW85番目のアナログ入力チャネル
30006AIW106番目のアナログ入力チャネル
30007AIW127番目のアナログ入力チャネル
30008AIW148番目のアナログ入力チャネル
30009AIW169番目のアナログ入力チャネル
30010AIW1810番目のアナログ入力チャネル
......以下同様。ステップは2
30056AIW11056番目のアナログ入力チャネル(最大)

計算式:Modbus アドレス = 30000 + AIW番号 / 2 + 1

例:AIW20 を読み取る場合、Modbus アドレス = 30000 + 20/2 + 1 = 30011

機能コード:入力レジスタの読み出しには機能コード04を使用

注意事項:

  • AIW はワードアドレス指定で、各 AIW は2バイトを占有するため、アドレスのステップ1が AIW のステップ2に対応する
  • 入力レジスタは読み取り専用で、マスターは書き込めない
  • アナログ入力値の範囲は通常 0-32767(単極性)または -32768〜32767(両極性)
  • 実際に使用できる AIW の数はアナログモジュールのチャネル数に依存する

3.4 V記憶領域 → 4xxxx 保持レジスタ

V記憶領域のマッピングは設定可能で、Modbus スレーブ命令 MBUS_INIT の2つのパラメータで定義します。

  • HoldStart:保持レジスタ領域の開始 V アドレス(例:&VB1000)
  • MaxHold:保持レジスタ領域のワード数(単位:ワード、つまり VW の数)

マッピングルール:

Modbus アドレスS7-200 SMART アドレス説明
40001VW[HoldStart]1番目の保持レジスタ
40002VW[HoldStart + 2]2番目の保持レジスタ
40003VW[HoldStart + 4]3番目の保持レジスタ
40004VW[HoldStart + 6]4番目の保持レジスタ
......以下同様。ステップは2バイト
400XXVW[HoldStart + 2 × (XX - 1)]XX番目の保持レジスタ

完全な例:HoldStart = &VB1000、MaxHold = 100 の場合

Modbus アドレスV記憶領域アドレスバイト範囲説明
40001VW1000VB1000-VB10011番目の保持レジスタ
40002VW1002VB1002-VB10032番目の保持レジスタ
40003VW1004VB1004-VB10053番目の保持レジスタ
40004VW1006VB1006-VB10074番目の保持レジスタ
40005VW1008VB1008-VB10095番目の保持レジスタ
............
40100VW1198VB1198-VB1199100番目の保持レジスタ(最後)

機能コード:

  • 保持レジスタの読み出し:機能コード03
  • 単一レジスタの書き込み:機能コード06
  • 複数レジスタの書き込み:機能コード16(0x10)

注意事項:

  • V記憶領域のマッピングは設定可能で、MBUS_INIT 命令の HoldStart と MaxHold パラメータで設定する
  • HoldStart は &VB1000 のように VB アドレスを指す必要がある
  • MaxHold の単位はバイト(VB)ではなくワード(VW)
  • 保持レジスタ領域は PLC プログラムで使用中の V 記憶領域と競合してはならない
  • MaxHold を100に設定した場合、VB1000-VB1199 の計200バイトを占有する

4. PLC スレーブの設定手順

4.1 Modbus スレーブ命令ライブラリのインストール

  1. STEP 7-Micro/WIN SMART プログラミングソフトを開く
  2. 命令ツリーで「ライブラリ」フォルダを探す
  3. Modbus Slave ライブラリがない場合は先にインポートする:「ライブラリ」を右クリック →「ライブラリのインポート」→ Modbus Slave ライブラリファイルを選択
  4. ライブラリファイルは通常シーメンス公式サイトからダウンロードし、名称は「Modbus Slave」

4.2 MBUS_INIT 命令を呼び出してスレーブを初期化

最初のスキャン周期(SM0.1)で MBUS_INIT 命令を呼び出します。パラメータは以下のとおりです。

パラメータ名値の範囲説明
Mode0 / 10=Modbus スレーブを無効化し通常のフリーポートに戻す、1=Modbus スレーブを有効化
Baud1200-115200ボーレート。よく使う値:9600、19200、38400、115200
Parity0 / 1 / 2パリティ:0=なし、1=奇数、2=偶数
Port0 / 1通信ポート:0=オンボード RS485 ポート、1=シグナルボード SB CM01 の RS485 ポート
SlaveAddr1-247Modbus スレーブアドレス。同一バスで重複不可
HoldStart&VBxxx保持レジスタ領域の開始 V アドレスへのポインタ(例:&VB1000)
MaxHold0-10000保持レジスタ領域のワード数(単位:ワード)。100なら100個の VW
DoneBOOL初期化完了フラグビット
ErrorBYTEエラーコード

4.3 MBUS_SLAVE 命令のメインポーリング

メインプログラムループで、毎スキャン周期 MBUS_SLAVE 命令を呼び出す必要があります。

  • この命令は Modbus マスターから送られた要求を処理する
  • 呼び出さないとスレーブはマスターに応答できない
  • パラメータ:Done(完了フラグ)、Error(エラーコード)

4.4 V記憶領域データの設定

HoldStart で指定した V アドレス領域に読み書きするデータを格納します。

  • マスターから書き込まれたデータはこの領域に保存される
  • PLC プログラムはこの領域からデータを読み取って処理する
  • プログラムで使用中の他の V アドレスと競合しないよう注意する

5. PLC マスターの設定と読み取り例

5.1 MBUS_CTRL 命令を呼び出してマスターを初期化

最初のスキャン周期(SM0.1)で MBUS_CTRL 命令を呼び出し、Modbus マスターを初期化します。

パラメータ名値の範囲説明
Mode0 / 10=Modbus マスターを無効化、1=Modbus マスターを有効化
Baud1200-115200ボーレート。スレーブと一致させる必要がある
Parity0 / 1 / 2パリティ。スレーブと一致させる必要がある
Port0 / 1通信ポート:0=オンボード RS485、1=シグナルボード
Timeout1-32767 msスレーブ応答を待つタイムアウト時間。1000ms を推奨
DoneBOOL初期化完了フラグビット
ErrorBYTEエラーコード

5.2 MBUS_MSG 命令を呼び出して読み書き要求を発行

MBUS_MSG 命令は1回の Modbus 読み書き要求を発行するために使用します。

パラメータ名値の範囲説明
FirstBOOL初回実行パルス。立ち上がりエッジを検出すると要求を発行
Slave1-247スレーブアドレス
RW0 / 10=読み取り要求、1=書き込み要求
AddrModbus アドレスアクセスする Modbus アドレス。40001なら1番目の保持レジスタ
Count1-120読み書きするレジスタ/コイルの数
DataPtr&VBxxxデータバッファへのポインタ(例:&VB2000)
DoneBOOL今回の要求の完了フラグビット
ErrorBYTEエラーコード

5.3 保持レジスタ読み取り例

アドレス1のスレーブ機器から10個の保持レジスタ(40001-40010)を読み取る場合:

  1. First:パルス信号でトリガー
  2. Slave:1
  3. RW:0(読み取り)
  4. Addr:40001
  5. Count:10
  6. DataPtr:&VB2000

読み取り成功後、VB2000 から始まる20バイトに10個のレジスタのデータが格納されます。

6. よくある問題とトラブルシューティングガイド

6.1 通信が無応答、スレーブが返答しない

  • 配線確認:RS485 の A+ と B- が逆接続されていないか。これが最も多いミス
  • パラメータ一致性の確認:マスターとスレーブのボーレート、データビット、ストップビット、パリティは完全に一致する必要がある
  • スレーブアドレス確認:SlaveAddr が正しいか。バス上に重複アドレスがあってはならない
  • バス電圧の測定:A線(D+)は B線(D-)より約200mV 以上高い必要がある
  • 終端抵抗の確認:バス両端に120Ωの終端抵抗があるか(長距離で必要)
  • Port パラメータ確認:正しい通信ポート(0または1)を選んでいるか

6.2 データを読み取れない、またはデータが正しくない

  • アドレス形式の確認:Modbus アドレスには1始まりと0始まりの2種類の書き方があり、区別に注意
  • HoldStart の確認:保持レジスタの開始アドレス設定が正しいか確認
  • MaxHold の確認:保持レジスタ数が十分か確認
  • アドレス範囲の確認:読み取るアドレスが MaxHold で定義した範囲内か
  • バイトオーダーの確認:32ビットデータの上位/下位ワード順がマスターと合っているか

6.3 データが文字化けする、または数値が正しくない

  • データ形式の確認:16ビット整数、32ビット整数、浮動小数点数のいずれか確認
  • バイトオーダーの確認:ビッグエンディアンとリトルエンディアンが一致しているか
  • ワード順の確認:32ビットデータの上位/下位ワード順が正しいか
  • スケーリングの確認:倍率が必要か(例:0.1℃単位の値は10で割る)
  • 負数処理の確認:負数は2の補数で表現される。符号付きと符号なしの違いに注意

6.4 偶発的な通信失敗

  • シールド線の確認:RS485 線にシールド付きツイストペアケーブルを使い、シールドを片側接地しているか
  • バス長の確認:9600bps で最大1200m、115200bps で最大約100m
  • スレーブ数の確認:1本の RS485 バスに接続できるスレーブは最大32台(リピータなし)
  • 電磁干渉の確認:通信線が動力線と平行に配線されていないか、干渉源がないか
  • タイムアウト設定の確認:Timeout パラメータが小さすぎないか。適切に大きくして試す

6.5 Error エラーコードの説明

エラーコード説明解決方法
0エラーなし-
1パリティエラーパリティ設定を確認
2ボーレート非対応ボーレートパラメータを確認
3タイムアウトエラー配線、スレーブ電源、タイムアウト設定を確認
4スレーブアドレスエラーSlaveAddr パラメータを確認
5確認応答未受信スレーブが無応答。配線とパラメータを確認
10ゲートウェイエラーゲートウェイ設定を確認

7. まとめ

S7-200 SMART の Modbus アドレスマッピングルールは明確で分かりやすいものです。

  • 0xxxx コイル領域 → Q領域のデジタル出力に対応、読み書き
  • 1xxxx 離散入力領域 → I領域のデジタル入力に対応、読み取り専用
  • 3xxxx 入力レジスタ領域 → AIW アナログ入力に対応、読み取り専用
  • 4xxxx 保持レジスタ領域 → V記憶領域に対応、設定可能、読み書き

このマッピング関係を理解すれば、S7-200 SMART とサードパーティ機器の Modbus RTU 通信をすばやく実現できます。実際の運用では、まず Modbus Poll などのデバッグソフトで通信をテストし、アドレスマッピングが正しいことを確認してから PLC プログラムを作成することをおすすめします。

8. 関連リンク

  • Modbus RTU 通信基礎チュートリアル
  • Modbus 機能コードの詳細解説
  • シーメンス S7-200 SMART Modbus マスター設定実例
  • RS485 バス配線規格
この資料を実際のプロジェクトに活用しませんか?

ツールセンターで電文解析、CRCチェック、デバイスデバッグを行うか、要件を送信して選定と接続のアドバイスを受けましょう。

エンジニア会員

この記事を実行可能なデバッグ資料に

登録すると、高度な電文解析、資料パックのダウンロード、コード例、エンジニアリングケース、優先技術サポートが利用可能に。実際のプロジェクト納品に最適です。

高度なツール無制限
資料パックとコードパック
完全なエンジニアリングケースライブラリ
優先技術サポート窓口

发表回复

あなたのメールアドレスアドレス不会被公开。 必須項目已用 * 标注