(57)【特許請求の範囲】
【請求項１】
コントローラと、該コントローラと通信を行う複数の制御機器を含む通信システムであって、
前記複数の制御機器のそれぞれには、連続するアドレスが割り当てられており、
前記コントローラは、該コントローラの電源投入後、
前記複数の制御機器のそれぞれに機器情報の要求を送信し、
前記各制御機器から、該制御機器のアドレス、マルチキャスト通信に対応か否かを示す情報を含む機器情報を受信し、
受信した前記各制御機器からの機器情報を機器管理テーブルに記憶し、
前記機器管理テーブルを参照して、マルチキャスト通信対応の制御機器のアドレスが連続になっているか否かを確認し、連続になっていない場合には、アドレスが連続になるように、アドレスの変更が必要な制御機器にアドレス変更要求を送信し、
前記アドレス変更要求の送信後、マルチキャスト通信であることを示す特定の値を含むデータ要求を、前記複数の制御機器のうち前記特定の値で管理される複数の制御機器に送信し、
最初に前記データ要求に対する応答を送信した制御機器以外の各制御機器は、前記データ要求を受信すると、他の制御機器からの前記データ要求に対する応答の内容を確認し、該応答に含まれる応答送信元制御機器のアドレスを確認し、該アドレスの値が自制御機器のアドレスの値より小さい場合に、前記自制御機器のアドレスを含む応答を前記コントローラに送信する、
ことを特徴とする通信システム。
【発明の詳細な説明】
【技術分野】
【０００１】
プログラマブルロジックコントローラ（ＰＬＣ）に接続される制御対象機器へのデータ転送方式に関する。
【背景技術】
【０００２】
プログラマブルロジックコントローラ(以下、PLCと呼ぶ)とは、シーケンスプログラムを実行し、接続された制御機器をシーケンス制御する機器である。このようなPLCにおいて、CPUモジュール内蔵のPLC本体にはバスを介して複数のI/Oモジュールが接続されている。PLC本体は内蔵するCPUモジュールによりシーケンスプログラムを実行することで、例えばI/Oモジュールに対してデータ送信要求を行い、I/Oモジュールは要求に対する応答として入力デバイスが取得したデータをCPUモジュールに送信する。
【０００３】
図１に示すPLC１１０において、バス１１２にはCPUモジュール１２０と、複数のI/Oモジュール１２２、１２４、１２６が接続されている。I/Oモジュール１２２、１２４、１２６は、インバータ１３０、圧縮機１４２、サーボモータ１３４といった制御対象機器(以下、制御機器と呼ぶ)が接続される。
【０００４】
I/Oモジュール１２２、１２４，１２６と制御機器であるインバータ１３０、圧縮機１４２、サーボモータ１３４の間はシリアル通信プロトコルを利用してデータの送受信が行われる。特にFAネットワークにおけるシリアル通信プロトコルの規格として、Modbus(登録商標)やCC-Link(登録商標)等がある。
【０００５】
ModbusやCC-Linkといったシリアル通信プロトコルは、マスタ機器がスレーブ機器毎に要求を送信するユニキャスト通信と、ネットワーク上に存在する全てのスレーブ機器に対して要求を送信するブロードキャスト通信をサポートしている。そのため、ネットワーク上に存在する全てのスレーブ機器に対して同一の要求を送信する場合にはブロードキャスト通信は有効であるが、複数のスレーブ機器に対して要求を送信するマルチキャスト通信を行う場合には、ユニキャスト通信を機器毎に行う必要がある。
【０００６】
更に、シリアル通信プロトコルには衝突を検知・回避する仕組みが搭載されていない。そのため、複数のスレーブ機器に対して同一の要求を送信する場合、一旦、スレーブ機器に対して要求を送信したマスタ機器は、要求を受信したスレーブ機器からの応答を受信するまで、別のスレーブ機器に要求を送信することができない。特にネットワーク上に処理速度の遅い機器が存在する場合や故障などに依って応答を送信できない機器が存在する場合には、複数のスレーブ機器への要求が完了するまでに多大な時間を要するといった問題点がある。
【０００７】
上記の問題点を解決する手段として、マスタ機器の要求に対してスレーブ機器が応答を送信するタイミングを事前に設定した方式(特許文献１、特許文献２参照)やマスタ機器の要求に対して応答を送信したスレーブ機器が次に応答を送信する機器に対して信号を送信する方式(特許文献３)がある。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２０１０−２１８６６
【特許文献２】特開２００７−６０４００
【特許文献３】特開２００７−１６６０４３
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかし、従来技術では、以下のような課題がある。
【００１０】
従来技術１、ならびに従来技術２を利用することにより、応答を送信するタイミングをスレーブ機器間で異なる値を設定することができるため、マルチキャスト通信を行うことが可能となる。しかし、上記を実現するためには、マスタ機器とスレーブ機器の間で予め時刻同期を行っておく必要があり、スレーブ機器に時刻同期を行う仕組みを搭載する必要があるという問題点がある。従来技術３は応答を送信したスレーブ機器が次に応答を送信するスレーブ機器を決定するため、時刻同期のような仕組みを搭載する必要はないが、各スレーブ機器が次に応答を送信するスレーブ機器の情報を事前に知っておく必要があるという問題点がある。  
そこで、時刻同期を必要とせず、各スレーブ機器が他のスレーブ機器のアドレス情報を事前に知らずとも、マルチキャスト通信でコマンドの送信とコマンドに対する応答を行うことが可能な技術を提供する。
【課題を解決するための手段】
【００１１】
コントローラと当該コントローラに接続される複数の制御対象機器とを有する通信システムであって、
複数の制御対象機器には、所定のルールに従ってアドレスが割り当てられており、
コントローラが制御対象機器に対する要求をマルチキャスト送信すると、
要求を受信した複数の制御対象機器は各々、所定のルールに基いて定まる順番で、要求に対する応答をマルチキャスト送信する。
【発明の効果】
【００１２】
応答を送信することが可能なマルチキャスト通信を行うことが可能となり、マスタ機器が複数のスレーブ機器に要求を送信するために要する時間を短縮することができる。
【図面の簡単な説明】
【００１３】
【図１】機器制御システムの構成を例示する図。
【図２（ａ）】CPUモジュールの構成例を示す図。
【図２（ｂ）】Ｉ／Ｏモジュールの構成例を示す図。
【図２（ｃ）】インバータの構成例を示す図。
【図３】機器管理テーブルの構成を例示する図。
【図４】PLCの電源投入時のフローチャートを例示する図。
【図５】機器情報を取得するシーケンスを例示する図。
【図６】マルチキャスト通信におけるPLCの基本動作シーケンスを例示する図。
【図７】マルチキャスト通信におけるPLCの例外シーケンスを例示する図。
【図８】マルチキャスト通信におけるPLCの例外シーケンスを例示する図。
【図９】シリアル通信プロトコルのメッセージフレームを例示する図。
【発明を実施するための形態】
【００１４】
以下、本発明の実施形態を図面に基づいて詳細に説明する。尚、本発明の実施形態を説明する図において、同一部には同一の符号を付し、その繰り返しの説明は、省略することにする。
【００１５】
(第1の実施形態)
図１は、本発明の第1の実施形態における機器制御システムの一例を示した図である。
【００１６】
機器制御システムとは、PC１００とPLC(プログラマブルロジックコントローラ)１１０とインバータ１３０、圧縮機１３２、サーボモータ１３４といった制御機器を含んで構成されるシステムであり、例えば、FAネットワークシステムなどが該当する。
【００１７】
PLC１１０とインバータ１３０、圧縮機１３２、サーボモータ１３４といった制御機器間のデータ送受信にはシリアル通信プロトコルが利用される。特に、FAネットワークにおけるシリアル通信プロトコルの規格として、ModbusやCC-Link等がある。
【００１８】
図９はシリアル通信プロトコルの規格の一つであるModbusのメッセージフレームを示した図である。
【００１９】
Modbusのメッセージフレームは、STARTフィールド９１０、ADDRESSフィールド９２０、FUNCTIONフィールド９３０，DATAフィールド９４０，LRCフィールド９５０，ENDフィールド９６０から構成される。尚、ModbusのメッセージフレームにはASCIIモードとRTUモードの2種類のメッセージフレームがあるが、本説明では、ASCIIモードの場合のみを説明する。
【００２０】
STARTフィールド９１０は、メッセージフレームの開始を示すフィールドであり、”０ｘ３Ａ”が設定される。
【００２１】
ADDRESSフィールド９２０は、メッセージフレームの送信先のアドレスを設定するフィールドである。Modbusの場合、”０ｘ００”がブロードキャスト通信向けのアドレスであり、それ以外の値はユニキャスト通信向けのアドレスである。
【００２２】
FUNCTIONフィールド９３０は、ファンクションコードを設定するフィールドである。ファンクションコードとは、マスタ機器がスレーブ機器に対して要求を送信する際に、要求内容を示すコードである。
【００２３】
DATAフィールド９４０は、FUNCTIONフィールド９３０に設定されたファンクションコードに沿ったデータをマスタ機器、ならびにスレーブ機器が設定するフィールドである。
【００２４】
LRCフィールド９５０は、LRC(Longitudinal Redundancy Check)方式に基づいたエラーチェックコードを設定するフィールドである。
【００２５】
ENDフィールド９６０は、メッセージフレームの終了を示すフィールドであり、“０ｘ０Ｄ，０ｘ０Ａ”が設定される。
【００２６】
以上がModbusのメッセージフレームの説明である。尚、本発明は、マスタ機器がスレーブ機器に対して、ブロードキャスト通信、ならびにユニキャスト通信を行う通信プロトコルであれば、適用することが可能である。また、以下の説明では、Modbusをシリアル通信プロトコルとして説明をする。
【００２７】
PLC１１０は、CPUモジュール１２０と複数のI/Oモジュール１２２，１２４，１２６を含んで構成される。CPUモジュール１２０と複数のI/Oモジュール１２２、１２４，１２６はバス１１２を介して接続される。I/Oモジュール１２２，１２４，１２６には、インバータ１３０、圧縮機１３２、サーボモータ１３４といった制御機器が接続される。尚、CPUモジュール１２０やI/Oモジュール１２２の他に、電源モジュールや通信モジュール、カウンタモジュールといった他の機能を持つモジュールを、バス１１２を介して接続してもよい。尚、以下の説明では、マスタ機器をPLC１１０、スレーブ機器を制御機器(インバータ１３０、圧縮機１３２、サーボモータ１３４など)とする。
【００２８】
CPUモジュール１２０は、格納されたシーケンスプログラムを実行し、各I/Oモジュールを介して接続された制御機器をシーケンス制御するモジュールである。
【００２９】
図２はCPUモジュール１２０とI/Oモジュール１２２、インバータ１３０の構成の一例を示した図である。
【００３０】
CPUモジュール１２０は、モジュールハードウェア２１０、記憶装置２２０，OS２３０、機器制御アプリケーション２４０を含んで構成される。
【００３１】
モジュールハードウェア２１０はCPUモジュール１２０のシーケンスプログラム２２６を動作させるために必要なハードウェアであり、CPU２１２、タイマ２１４、通信インタフェース２１６、I/Oインタフェース２１８等を含んで構成される。
【００３２】
通信インタフェース２１６は、PC１００とデータ通信を行うためのインタフェースであり、各I/Oモジュールと制御機器とを接続するシリアルインタフェースでも、無線インタフェースでも、イーサネット(登録商標)でも構わない。
【００３３】
I/Oインタフェース２１８は、CPUモジュール１２０と各I/Oモジュールを接続するインタフェースである。
【００３４】
記憶装置２２０はCPUモジュール１２０の動作に必要なデータ、例えばシーケンスプログラム２２６や機器管理テーブル２２２を保存し、例えば、不揮発性の半導体メモリや磁気記憶媒介などの媒介で構成される。
【００３５】
図３は機器管理テーブル２２２の詳細を示した図である。
【００３６】
機器管理テーブル２２２は、PLC１１０が各I/Oモジュールを介して制御を行う制御機器に関する情報を保存するためのテーブルであり、アドレス３０１、機器名３０２、メーカ名３０３、型番３０４、応答時間３０５、マルチキャスト通信フラグ３０６等を含んだ構成である。
【００３７】
アドレス３０１とは、PLC１１０の管理下にある制御機器を一意に識別する識別子であり、ADDRESSフィールド９１０に設定する値である。
【００３８】
機種名３０２とは、インバータや圧縮機、サーボモータといった制御機器の種類を示す。
【００３９】
機器管理テーブル２２２には、メーカ名３０３や型番３０４といった制御機器に関する情報を含んだ構成でもよい。
【００４０】
応答時間３０５とは、PLC１１０が各制御機器に要求を送信してから各制御機器の応答を受信するまでの時間である。応答時間３０５は、ＰＬＣ１１０が各制御機器に対してコマンドを発行した後、タイマ２１４を起動して当該制御機器から応答を待つ際に、タイマ２１４にタイムアウト値として設定する値の他、ＰＬＣ１１０が各制御機器に対してアドレスを割り当てる際に参照する値として使用してもよい。尚、応答時間３０５をタイマ２１４のタイムアウト値やアドレス割り当ての参照値として利用することは一例であって、タイムアウト値やアドレスが予め定められた値が設定されていても良い。
【００４１】
応答時間の測定方法としては、後述する電源起動シーケンスにおいて、PLC１１０が各制御機器に送信する機器情報要求コマンドを利用してこのコマンドへの応答時間を測定する方法、PLC１１０が制御対象機器に送信する全ての要求についてその応答時間を測定してその平均値もしくはその最大値を求める方法、PLC１１０が応答時間を測定するために特別なコマンドを各制御機器に送信してこのコマンドへの応答時間を測定する方法など様々な方法がある。尚、以下の説明では、機器情報要求コマンドを利用する方法にて応答時間を測定することとする。
【００４２】
OS２３０は、CPUモジュール１２０の動作を統括的に制御する基本ソフトウェアである。
【００４３】
機器制御アプリケーション２４０は、記憶装置２２０に保存してあるシーケンスプログラム２２６を用いて、I/Oインタフェース２１８を介して制御機器の制御を行うアプリケーションであり、I/Oインタフェース２１８を介して各I/Oモジュールに送信するメッセージを作成するメッセージ生成機能２４２や各I/Oモジュールから受信したメッセージを解析するメッセージ解析機能２４４を含んだ構成である。
【００４４】
以上がCPUモジュール１２０の構成の一例である。
【００４５】
次にI/Oモジュール１２２の内部構成の一例を説明する。
【００４６】
I/Oモジュール１２２は、CPU２４０、I/Oインタフェース２４２、入出力データバッファ２４４、入出力インタフェース２４６を含んで構成される。
【００４７】
I/Oインタフェース２４２は、CPUモジュール１２０と接続するインタフェースである。
【００４８】
入出力バッファ２４４は、I/Oインタフェース２５２を介して送受信するメッセージを格納する領域である。
【００４９】
入出力インタフェース２４６は、I/Oモジュール１２２に接続された制御機器とデータ通信を行うインタフェースである。
【００５０】
以上がI/Oモジュール１２２の内部構成の一例である。
【００５１】
次にインバータ１３０の内部構成の一例を説明する。
【００５２】
インバータ１３０は、通信モジュール２５０と制御モジュール２６０を含んで構成される。
【００５３】
通信モジュール２５０は、I/Oモジュール１２２を介してPLC１１０と通信を行うモジュールであり、入出力インタフェース２５２、タイマ２５４、メッセージ解析部２５６、メッセージ生成部２５８を含んで構成される。
【００５４】
メッセージ解析部２５６とは、I/Oモジュール１２２を介してPLC１１０が送信したメッセージを解析するモジュールである。
【００５５】
メッセージ生成部２５８とは、I/Oモジュール１２２を介してPLC１１０に送信するメッセージを生成するモジュールである。
【００５６】
制御モジュール２６０は、PLC１１０との通信以外を行うモジュールである。
【００５７】
尚、本説明では、インバータ１３０を例として制御機器の説明を行ったが、圧縮機１３２やサーボモータ１３４の他の制御機器も同様の構成とする。
【００５８】
図４はPLC１１０の電源投入時の処理フローチャートの一例を示した図である。
【００５９】
電源投入後、PLC１１０は各I/Oモジュールに接続されている全ての制御機器から機器情報を取得する(ステップ４０１)。
【００６０】
図５はPLC１１０が電源投入後、接続対象機器から機器情報を取得する処理のシーケンスの一例を示した図である。尚、本説明では、インバータ１２０にはアドレス０ｘ０１、圧縮機１２２にはアドレス０ｘ０２が電源投入前に既にアドレスが割り当てられていることとする。
【００６１】
PLC１１０はADDRESSフィールド９２０に０ｘ０１を設定した機器情報要求コマンドを各I/Oモジュールを介して送信する(ステップ５００)。尚、Modbusの場合、機器情報要求コマンドとして”Ｒｅｐｏｒｔ  Ｓｌａｖｅ  ＩＤ(ファンクションコード：０ｘ１１）”が相当する。
【００６２】
PLC１１０はコマンドを送信した後、そのコマンドに対する応答を受信するまでの時間を測定するため、タイマ２１４を起動する(ステップ５０２)。
【００６３】
コマンドを受信したインバータ１３０は、メッセージ解析部２５６を利用して、受信したコマンドを解析し、ADDRESSフィールド９２０に自身のアドレスである０ｘ０１が設定されていること、ならびにそのコマンドが機器情報要求コマンドであることを確認した後、自身の機器情報をPLC１１０に応答として送信する(ステップ５３０、ステップ５３２、ステップ５３４)。
【００６４】
機器情報とは、メーカ名や型番の他に、本説明によるマルチキャスト通信に対応か否かを示すフラグを含んだ情報である。
【００６５】
機器情報を受信したPLC１１０は、メッセージ解析機能２４４を利用して、受信した機器情報を解析した後、タイマ２１４を利用して測定した応答が返ってくるまでの時間とともに、機器管理テーブル２２２に設定する(ステップ５０４、ステップ５０６)。もし、受信したメッセージが期待通りの項目を含んでいない場合には、通信インタフェース２１６を介してPC１００に問い合わせてもよい。
【００６６】
次にPLC１１０はADDRESSフィールド９２０に０ｘ０２を設定した機器情報要求コマンドを各I/Oモジュールを介して送信する(ステップ５０８)。
【００６７】
PLC１１０はコマンドを送信した後、そのコマンドに対する応答を受信するまでの時間を測定するため、タイマ２１４を起動する(ステップ５１０)。
【００６８】
コマンドを受信した圧縮機１３２は、メッセージ解析部２５６を利用して、受信したコマンドを解析し、ADDRESSフィールド９２０に自身のアドレスである０ｘ０２が設定されていること、ならびにそのコマンドが機器情報要求個万であることを確認した後、自身の機器情報をPLC１１０に応答として送信する(ステップ５４０、ステップ５４２、ステップ５４４)。
【００６９】
機器情報を受信したPLC１１０は、ステップ５０４、ステップ５０６と同様の処理を行い、ADDRESSフィールド９２０に０ｘ０３を設定した機器情報要求コマンドを各I/Oモジュールを介して送信し、タイマ２１４を起動する(ステップ５１２、ステップ５１４、ステップ５１６、ステップ５１８)。尚、アドレス０ｘ０３を持つ制御機器はPLC１１０には接続されていないため、応答は返ってこない。
【００７０】
PLC１１０はタイマ２１４を利用して機器情報要求コマンドを送信してから一定期間経過しても応答が返ってこないことを確認すると、アドレス０ｘ０３を持つ制御機器がPLC１１０には接続されていないと判断する。尚、本説明では、再送の仕組みに関しては記載していないが、複数回の再送を行った後、そのアドレスを持つ制御機器が接続されていないことを判断してもよい。
【００７１】
PLC１１０は上記に示したシーケンスをアドレス０ｘ０１〜アドレス０ｘＦＦまで行い、機器管理テーブル２２２を作成、ならびに存在しないアドレスを確認する。
【００７２】
以上が、PLC１１０が各制御機器から機器情報を取得するシーケンスの説明である。
【００７３】
本発明のマルチキャスト通信は、マルチキャスト通信によるフレームをPLC１１０から受信した各制御機器はネットワーク上に流れる他の制御機器の応答を確認し、自身のアドレスのひとつ前のアドレスを持つ制御機器からの応答がネットワーク上を流れたことを確認した後、自身の応答を送信する仕組みにより実現する。そのため、マルチキャスト通信可能な制御機器のアドレスは連続な順にしておく必要がある。
【００７４】
そこで、機器情報要求コマンドを全てのアドレスに送信した後、作成した機器管理テーブル２２２を解析し、上記に示したようにマルチキャスト通信対応の制御機器のアドレスが連続になっていることを確認する(ステップ４０２、ステップ４０３)。
【００７５】
確認した結果、連続になっていない場合には、アドレスが連続になるようにアドレスの変更が必要な制御機器にアドレス変更要求を送信する(ステップ４０４)。尚、アドレスの設定方法として、単純に連続になるように並べる他に、応答時間を利用して、応答時間が短い順にアドレスを並べる方法や、複数のマルチキャスト通信に対応できるように、マルチキャスト通信の種類ごとにアドレスを並べる方法がある。
【００７６】
尚、マルチキャスト通信可能な制御機器のアドレスは所定のルールに従って定められていれば、各制御機器は当該ルールに従って自身の応答順番（応答タイミング）を検出することができる。本実施例ではこの所定のルールを「マルチキャスト通信が可能な制御機器のアドレスが連続した値である」と定めたが、これは一例であって、別のルールであっても構わない。
【００７７】
以上が、電源投入後のPLC１１０のフローチャートの説明である。尚、本動作を電源投入後以外にも定期的に行ってもよい。また、一度、機器管理テーブル２２を作成した後、PLC１１０に接続する制御機器に変更がない場合には、次回以降の電源投入時には本動作を行わなくてもよい。
【００７８】
図６は、PLC１１０が接続している制御機器に対して要求コマンドを送信する場合の基本シーケンスを示した図である。
【００７９】
先ず、PLC１１０がユニキャスト通信を利用してインバータ１３０に対してデータ要求を行う場合を説明する。
【００８０】
PLC１１０はADDRESSフィールド９２０に０ｘ０１を設定したデータ要求コマンドをI/Oモジュールを介して送信する(ステップ６００)。
【００８１】
PLC１１０はコマンドを送信した後、要求に対するタイムアウト時間を測定するため、タイマ２１４を起動する(ステップ６０２)。
【００８２】
コマンドを受信したインバータ１３０は、メッセージ解析部２５６を利用して、受信したコマンドを解析し、ADDRESSフィールド９２０に自身のアドレスである０ｘ０１が設定されていること、ならびにそのコマンドがデータ要求コマンドであることを確認した後、要求に合ったデータをPLC１１０に応答として送信する(ステップ６１０、ステップ６１２、ステップ６１４)。
【００８３】
要求データを受信したPLC１１０は、メッセージ解析機能２４４を利用して、受信したデータを解析する(ステップ６０４、ステップ６０６)。
【００８４】
以上が、ユニキャスト通信を利用したデータ通信のシーケンスの説明である。
【００８５】
次に、PLC１１０がマルチキャスト通信を利用してインバータ１３０、ならびに圧縮機１３２に対してデータ要求を行う場合を説明する。尚、ADDRESSフィールド９２０やFUNCTIONフィールド９３０やDATAフィールド９４０等に特定の値をPLC１１０が設定することにより、PLC１１０が送信するフレームがマルチキャスト通信であることを示す。また、マルチキャスト通信を行う前に、ブローキャスト通信にて全制御機器に対して、マルチキャスト通信向けの要求を届けることを通知する方法により、マルチキャスト通信であることを示してもよい。以下の説明では、ADDRESSフィールド９２０に特定の値を設定することにより、マルチキャスト通信であることを示すこととする。
【００８６】
PLC１１０はADDRESSフィールド９２０に本フレームがマルチキャスト通信であることを示す０ｘＦＥを設定したデータ要求コマンドを各I/Oモジュールを介して送信する(ステップ６２０)。
【００８７】
PLC１１０はコマンドを送信した後、要求に対するタイムアウト時間を測定するため、タイマ２１４を起動する(ステップ６２２)。このときタイマ２１４に設定されるタイムアウト値は、例えば、機器管理テーブル２２２にマルチキャスト通信可能な機器として登録されている機器の内、最も小さい値のアドレスを持つ機器の応答時間３０５である。
【００８８】
コマンドを受信したインバータ１３０は、メッセージ解析部２５６を利用して、受信したコマンドを解析し、ADDRESSフィールド９２０にマルチキャスト通信を示すアドレス０ｘＦＥが設定されていること、そのコマンドがデータ要求であること、ならびに自身のアドレスが０ｘ０１であることから、要求に対して最初に応答を返す必要があることを確認した後、要求に合ったデータをPLC１１０に応答としてマルチキャスト通信にて送信する(ステップ６４０、ステップ６４２、ステップ６４４)。応答には応答の送信元制御機器の識別情報（例えばアドレス３０１）がデータとして含まれている。
【００８９】
インバータ１３０からの応答を受信したPLC１１０はメッセージ解析機能２４４を利用して、受信したデータを解析し、インバータ１３０からデータを受信したことを確認する。そしてＰＬＣ１１０は、次に応答を送信するアドレス０ｘ０２を持つ制御機器からデータ受信するため、タイマ２１４を起動する(ステップ６２４、ステップ６２６、ステップ６２８)。この時タイマ２１４に設定されるタイムアウト値は、例えば、機器管理テーブル２２２にマルチキャスト通信可能な機器として登録されている機器の内、二番目に小さい値のアドレスを持つ機器の応答時間３０５である。
【００９０】
コマンドを受信した圧縮機１３２は、メッセージ解析部２５６を利用して、受信したコマンドを解析し、ADDRESSフィールド９２０にマルチキャスト通信を示すアドレス０ｘＦＥが設定されていること、そのコマンドがデータ要求であること、ならびに自身のアドレスが０ｘ０２であることから、アドレス０ｘ０１を持つ制御機器が送信する応答を待つ必要があること確認し、その応答が送信されることを待つ(ステップ６５０、ステップ６５２、ステップ６５４)。
【００９１】
圧縮機１３２はネットワーク上をマルチキャストされた応答を検出すると、メッセージ解析部２５６を利用してこの応答を解析する。そしてアドレス０ｘ０１を持つ制御機器が応答を送信したことを確認すると、圧縮機１３２はＰＬＣ１１０からの要求に合ったデータをPLC１１０に応答として送信する(ステップ６５６、ステップ６５８)。
【００９２】
圧縮機１３２からの応答を受信したPLC１１０はメッセージ解析機能２４４を利用して、受信したデータを解析する(ステップ６３０、ステップ６３２)。
【００９３】
以上がマルチキャスト通信を利用したデータ通信の基本シーケンスの説明である。
【００９４】
上記に示した方法により機器間の時刻同期といった複雑な処理を行うことなく、マルチキャスト通信を行うことが可能となる。しかし、例えば、インバータ１３０が故障などを原因により、マルチキャスト通信に対する応答を送信できない場合、インバータ１３０よりアドレスが大きい制御機器は応答を返すことが出来ないといった問題点が生じる。そこで、一定期間、制御機器から応答がなった場合には、マルチキャスト通信をキャンセルするコマンドを用意することにした。
【００９５】
図７は、マルチキャスト通信を解除するシーケンスを示した図である。尚、本説明ではインバータ１３０が故障により応答を返すことが出来ないこととする。
【００９６】
PLC１１０はADDRESSフィールド９２０に本フレームがマルチキャスト通信であることを示す０ｘＦＥを設定したデータ要求コマンドを各I/Oモジュールを介して送信する(ステップ７００)。
【００９７】
PLC１１０はコマンドを送信した後、要求に対するタイムアウト時間を測定するため、タイマ２１４を起動する(ステップ７０２)。タイマ２１４に設定されるタイムアウト値は先述の通りである。
【００９８】
タイマ２１４がタイムアウトし、PLC１１０がアドレス０ｘ０１を持つ制御機器から応答が送信されないことを確認すると、ＰＬＣ１１０は先ほど送信したデータ要求コマンドをキャンセルするコマンド(データ要求取消コマンド)をブロードキャスト通信で送信する(ステップ７０４、ステップ７０６)。
【００９９】
データ要求コマンドを受信した圧縮機１３２はアドレス０ｘ０１を持つ機器の応答を待っているが、その応答待ちの中でデータ要求取消コマンドを受信すると、新たにPLC１１０からの要求を待つ状態に移行する(ステップ７２０、ステップ７２２、ステップ７２４、ステップ７２６、ステップ７２８、ステップ７３０)。
【０１００】
データ要求取消コマンドを送信したPLC１１０は、アドレス０ｘ０１を持つ制御機器は故障していると判断し、アドレス０ｘ０２を持つ圧縮機１３２に対してユニキャスト通信にてデータ要求コマンドを送信する(ステップ７０８)。
【０１０１】
PLC１１０はコマンドを送信した後、要求に対するタイムアウト時間を測定するため、タイマ２１４を起動する(ステップ７１２)。
【０１０２】
以降は図６にて説明したユニキャスト通信と同様の手順であるため説明を省略する(ステップ７１４、ステップ７１６、ステップ７３２、ステップ７３４、ステップ７３６)。
【０１０３】
以上が、マルチキャスト通信をキャンセルするシーケンスに関する説明である。尚、故障している機器が検知された場合、アドレスの再割り当てを行ってもよい。
【０１０４】
図８は図７のようにマルチキャスト通信をキャンセルすることなく、故障機器が存在した場合でも対応するシーケンスを示した図である。
【０１０５】
PLC１１０はADDRESSフィールド９２０に本フレームがマルチキャスト通信であることを示す０ｘＦＥを設定したデータ要求コマンドを各I/Oモジュールを介して送信する(ステップ８００)。
【０１０６】
コマンドを受信した圧縮機１３２は、メッセージ解析部２５６を利用して、受信したコマンドを解析し、ADDRESSフィールド９２０にマルチキャスト通信を示すアドレス０ｘＦＥが設定されていること、そのコマンドがデータ要求であること、ならびに自身のアドレスが０ｘ０２であることから、アドレス０ｘ０１を持つ制御機器が送信する応答を待つ必要があること確認し、タイマ２５４を起動した後、応答が送信されることを待つ(ステップ８１０、ステップ８１２、ステップ８１４、ステップ８１６)。ここでタイマ２５４に設定されるタイムアウト値は予め定められた所定の値である。各制御機器には、その制御機器のアドレスに応じて異なる値のタイムアウト値がタイマ２５４に設定されているのが望ましい。例えば、最も小さな値をアドレスとして持つ制御機器には最も小さなタイムアウト値が設定され、アドレスの値が大きくなるにつれて制御機器に設定されるタイムアウト値も大きくなるよう設定される。また、各該制御機器のタイマ２５４に設定されるタイムアウト値は、当該制御機器のアドレスより小さな値のアドレスを有する制御機器の応答時間３０５を合計した値より大きくなるよう設定されても良い。
【０１０７】
一定期間待った後、タイマ２５４がタイムアウトしてアドレス０ｘ０１を持つ制御機器からの応答がないことを確認すると、アドレス０ｘ０１を持つ制御機器が故障している判断し、要求されたデータを応答して送信する(ステップ８１８、ステップ８２０)。
【０１０８】
圧縮機１３２からの応答を受信したPLC１１０はメッセージ解析機能２４４を利用して、受信したデータを解析し、インバータ１３０が故障していることを検知し、アドレスの再割り当て等を行う(ステップ８０２、ステップ８０４)。
【０１０９】
以上によりマルチキャスト通信をキャンセルすることなく、故障した機器が存在した場合でもマルチキャスト通信を行うことできる方法である。尚、アドレス０ｘ０１の応答待ちする時間などに関しては、事前に設定しておくこととする。
【０１１０】
以上、実施形態を具体的に説明したが、上記開示に限定されるものでなく、その趣旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
【符号の説明】
【０１１１】
１００・・・PC
１１０・・・PLC(プログラマブルロジックコントローラ)
１１２・・・バス
１２０・・・CPUモジュール
１２２・・・I/Oモジュール1
１２４・・・I/Oモジュール2
１２６・・・I/OモジュールN
１３０・・・インバータ
１３２・・・圧縮機
１３４・・・サーボモータ
２１０・・・モジュールハードウェア
２１２・・・ＣＰＵ
２１４・・・タイマ
２１６・・・通信インタフェース
２１８・・・I/Oインタフェース
２２０・・・記憶装置
２２２・・・機器管理テーブル
２２４・・・シーケンスプログラム
２３０・・・ＯＳ
２４０・・・機器制御アプリケーション
２４２・・・メッセージ解析機能
２４４・・・メッセージ変換機能
２４０・・・CPU
２４２・・・I/Oインタフェース
２４４・・・入出力データバッファ
２４６・・・入出力インタフェース
２５０・・・通信モジュール
２５２・・・入出力インタフェース
２５４・・・タイマ
２５６・・・メッセージ解析部
２５８・・・メッセージ生成部
２６０・・・制御モジュール
【図１】
0005380478.tif 000002
【図２（ａ）】
0005380478.tif 000003
【図２（ｂ）】
0005380478.tif 000004
【図２（ｃ）】
0005380478.tif 000005
【図３】
0005380478.tif 000006
【図４】
0005380478.tif 000007
【図５】
0005380478.tif 000008
【図６】
0005380478.tif 000009
【図７】
0005380478.tif 000010
【図８】
0005380478.tif 000011
【図９】
0005380478.tif 000012