HOME > ソフテックだより > 第237号(2015年7月1日発行) 技術レポート「PLCでのModbus通信 〜各メーカーの比較〜」

「ソフテックだより」では、ソフトウェア開発に関する情報や開発現場における社員の取り組みなどを定期的にお知らせしています。
さまざまなテーマを取り上げていますので、他のソフテックだよりも、ぜひご覧下さい。

ソフテックだより(発行日順)のページへ
ソフテックだより 技術レポート(技術分野別)のページへ
ソフテックだより 現場の声(シーン別)のページへ


ソフテックだより 第237号(2015年7月1日発行)
技術レポート

「PLCでのModbus通信 〜各メーカーの比較〜」

1. はじめに

ソフテックだより第133号「PLCでModbus 通信〜横河電機社製での実装例〜」および第155号「PLCでModbus TCP通信〜横河電機社製での実装例〜」にて、横河電機社製でのModbus通信の実装例を紹介しました。
今回はその続編として、三菱電機社・オムロン社・キーエンス社・横河電機社4社のModbus通信の比較を行いましたので、紹介致します。

2. Modbusとは

第133号の技術レポート「PLCでModbus 通信〜横河電機社製での実装例〜」で説明されておりますが、改めてModbusとは何かを説明致します。
米Modicon社が自社PLC用に開発した通信プロトコルです。仕様が公開されて、仕様が比較的容易で制約が少ないことなどから、PLCのみのならず、機器間接続で広く使われているプロトコルです。
Modbus通信にはシリアル通信のModbusRTU及びModbusASCII、TCP/IP通信のModbus/TCPがあります。

Modbus RTUモード
データがコンパクトなバイナリ表現。エラーチェックはCRCを用います。
Modbus ASCIIモード
データに冗長性があるアスキー表現。エラーチェックはLRCを用います。
Modbus/TCP
TCP/IPプロトコルを基本としたプロトコル。エラーチェックはTCP/TP層で行います。

いずれもデータモデルやファンクションコールは共通であり、カプセル化が異なるだけとなります。

3. Modbus RTU通信の比較

3.1 ユニット構成の比較

Modbus RTUモードにて通信する場合のユニット構成を下記に示します。 各社の主なPLCシリーズを参考に比較致します。

三菱電機社 オムロン社 キーエンス社 横河電機社
Fシリーズ Qシリーズ CS1シリーズ
CJ2シリーズ
KVNanoシリーズ KV-5000/3000シリーズ FA-M3Rシリーズ
FX3U-485A
DP-MB
QJ71MB91 CS1W-SCB□
CS1W-SCU□
CJ1W-SCU□
増設カセットにて対応
(コネクタはKV-NC20L)
KV-L21V ModbusRTU通信対応ユニットはありません。
(ModbusTCPのみ対応)

表1.Modbus通信対応ユニット一覧

各社とも対応ユニットが提供されておりますので、接続に困ることはありません。
ただし、横河電機社FA-M3RはModbusRTU通信に対応したユニットは発売されておりません。そのため、ソフテックだより第133号のようにユーザープログラムで処理する必要があります。

また、各社ともにRTUモードの場合はマスタ/スレーブ両方対応可能ですが、ASCIIモードを使用する場合、キーエンス社及びオムロン社はマスタのみの対応となります。

3.2 プログラム構成

各社で準備するPLCプログラムの構成を説明致します。
なお、マスタ側からスレーブに対して、書込み・読出しのプログラムを実行する命令を用意する必要がありますが、スレーブ側はパラメータを準備するだけでプログラムを用意する必要はありません。

3.2.1.三菱電機社製PLC(Fシリーズ)

Fシリーズでは、スレーブに対しての書込みや読み出しの命令は「ADPRW」の命令で実装することができます。「ADPRW」命令の詳細は以下の通りです。

図1. ADPRW命令
図1. ADPRW命令

「ADPRW」命令には、複数のファンクションコードが存在しており、利用する命令ごとにファンクションコードを設定し、それに応じたパラメータを設定する必要があります。
Fシリーズでは、1部の処理を除いて「ADPRW」命令で対応できるため、簡単にModbus通信を実装することができます。

3.2.2. 三菱電機社製PLC(Qシリーズ)

Qシリーズ(QJ71MB91)では、以下の専用命令を使います。

  • MBRW・・・スレーブに対してModbusデバイスの読出し及び書込みを行います。
  • MBREQ・・・スレーブに対して任意のプロトコルデータ部の要求伝文フォーマットで通信を行います。

各命令の詳細は以下の通りです。

図2.MBRW命令
図2.MBRW命令

図3.MBREQ命令
図3.MBREQ命令

Qシリーズでも、Fシリーズ同様容易にModbus通信を実装する事ができます。

3.2.3オムロン社製PLC

オムロン社製PLCでは、命令をModbus通信プロトコル用に変換する必要があります。
その場合、変換する際はFINSコマンド(※1)を使います。
コマンド命令の詳細は以下のとおりになります。

図4. FINSコマンド命令
図4. FINSコマンド命令

Modbus RTU関連のFINSコマンドコードは”2804HEX”と決まっております。
そこから、Modbus RTU関連のコマンドを送り通信します。
Modbus RTU関連のコマンドを以下に紹介します。

項目 設定値
Modbus RTUへの変換 2804HEX
Modbus RTUへの変換スレーブアドレス 02HEX
ファンクションコード(10HEX=データ書込み) 10HEX
書込みデータのレジスタ 0002HEX
書込みデータのレジスタ個数 0001HEX
添付データのバイト数 0200HEX

表2.Modbus RTU関連のコマンド

オムロン社製PLCでは、Modbus通信をするためにコマンドをModbus通信用のコマンドに変換する必要があり、その分プログラムが複雑になるため、Modbus通信を実装するには多少敷居が高いという印象です。

3.2.4.キーエンス社製PLC

キーエンス社製PLCでは、はじめにユニット設定で、動作モードを「Modbusマスタモード」に設定する必要があります。
後は、DM先頭番号を設定する事によって、決められるアドレスに必要なデータを書込み、コマンド送信要求のリレーをONする事で、コマンドが送信されます。
代表的なアドレスについて以下に紹介いたします。

DM先頭番号 +1 スレーブ局番の設定
+2 ファンクションコード
01H:コイル読出し
05H:コイル1点書込み
+6 データ格納単位
+7 読出し先頭アドレス
+8 読出し点数
+9 書込み先頭アドレス
+10 書込み点数

表3.代表的なアドレス一覧

キーエンス社製PLCでは、特殊なコマンドは使用しません。
他社製PLCと比べてプログラムの構成が違い先頭のアドレスを準備する必要がありますが、その後はすでに処理するアドレスが決まっています。
そのため、Modbus通信は、必要な処理をするためのアドレスの使い方を理解していれば、すぐにプログラムを実装することができ簡単だと思います。

4. おわりに

今回、各社製PLCでのModbus RTU通信の比較をしてみた結果、個人的に使いやすいと感じたものは、三菱電機社製PLCのFシリーズです。
三菱電機社製PLCに慣れ親しんでいるというのもありますが、一番の理由として、ほとんどの処理を「ADPRW」命令でまかなえるため、複雑にプログラムを準備する必要がないためです。
最後になりますが、本レポートでは、三菱電機社製PLC(Fシリーズ/Qシリーズ)、キーエンス社製PLC、オムロン社製PLCでのModbus RTU通信を紹介しておりますが、弊社では第133号及び第155号で紹介している横河電機社製PLCによるModbus通信プロトコルを利用した開発実績もございます。他にも様々な通信ソフトウェア開発の経験がございますので、またの機会にご紹介できればと思います。

(M.T.)

[参考文献]
・「MELSECQシリーズ MODBUSインターフェースユニットユーザーズマニュアル(詳細編)」三菱電機株式会社
・「FX3S・FX3G・FX3GC・FX3U・FX3UCシリーズマイクロシーケンサ ユーザーズマニュアル(MODBUS通信編)」三菱電機株式会社
・「SYSMAC CS/CJ/CPシリーズ、SYSMAC One Nsjシリーズ通信コマンドリファレンスマニュアル」オムロン株式会社
・「シリアルコミュニケーションユニット KV-L21V ユーザーズマニュアル」株式会社キーエンス
[注釈]
※1 FINSコマンド: Factory Interface Network Serviceの頭文字。
オムロンのFAネットワーク上のコントローラ間でメッセージ通信を行うためのプロトコル。

関連ページへのリンク

関連するソフテックだより

ページTOPへ