(57)【要約】  ＰＬＣ４００は、ＰＬＣ４００、ＰＬＣ５００、パーソナルコンピュータ２００の各々のノード情報キーを結合して生成されたネットワーク構成キーを記憶しており、ＰＬＣ５００及びパーソナルコンピュータ２００から、各々のシリアルナンバー、各々が保有するリソースを用いて生成された新たなノード情報キーを受信し、ＰＬＣ４００のシリアルナンバー、リソースを用いて生成された新たなノード情報キーとＰＬＣ５００及びパーソナルコンピュータ２００から受信した新たなノード情報キーを結合して新たなネットワーク構成キーを生成し、新たなネットワーク構成キーと記憶しているネットワーク構成キーとを比較し、両者が一致しない場合に、ネットワークの誤構成、ネットワーク構成の変化、リソースの変化があったと判断できる。
2011117977.tif 000002
【特許請求の範囲】
【請求項１】
各々を一意に識別可能な識別子が設けられている１つ以上の機器が接続されているネットワークを管理する管理装置であって、
各機器の識別子を用いて各機器で生成された各機器の機器情報に対して所定の演算を行って生成された照合情報を記憶する照合情報記憶部と、
各機器の識別子を用いて各機器で生成された機器情報を、各機器から受信する通信部と、
前記通信部により受信された各機器の機器情報に対して、前記照合情報の生成時の演算と同じ演算を行う情報演算部と、
前記情報演算部による演算結果と前記照合情報記憶部に記憶されている前記照合情報とを比較する情報比較部とを有することを特徴とする管理装置。
【請求項２】
前記照合情報記憶部は、
各機器の識別子と各機器に搭載されている機器リソースの情報を用いて各機器で生成された各機器の機器情報に対して所定の演算を行って生成された照合情報を記憶し、
前記通信部は、
各機器の識別子と各機器に搭載されている機器リソースの情報を用いて各機器で生成された各機器の機器情報を、各機器から受信することを特徴とする請求項１に記載の管理装置。
【請求項３】
前記情報比較部は、
前記情報演算部による演算結果と前記照合情報記憶部に記憶されている前記照合情報とが一致しない場合に、前記照合情報の生成時と比較して、前記ネットワークに接続されている機器の組合せ及びいずれかの機器における機器リソースの構成の少なくともいずれかに変更が生じていると判断することを特徴とする請求項２に記載の管理装置。
【請求項４】
前記照合情報記憶部は、
各機器の機器リソースの情報として、各機器に搭載されているソフトウェアの情報及びファームウェアの情報の少なくともいずれかを用いて各機器で生成された各機器の機器情報に対して所定の演算を行って生成された照合情報を記憶し、
前記通信部は、
各機器の機器リソースの情報として、各機器に搭載されているソフトウェアの情報及びファームウェアの情報の少なくともいずれかを用いて各機器で生成された各機器の機器情報を、各機器から受信することを特徴とする請求項２又は３に記載の管理装置。
【請求項５】
前記管理装置は、
順序が設定されている複数の機器が接続されているネットワークを管理し、
前記情報演算部は、
前記通信部により受信された各機器の機器情報を機器の順序に従って結合する演算を行うことを特徴とする請求項１〜４のいずれかに記載の管理装置。
【請求項６】
前記情報演算部は、
前記通信部により受信された各機器の機器情報を機器の順序に従って結合する演算を行い、結合結果に対して所定の一方向演算を行うことを特徴とする請求項５に記載の管理装置。
【請求項７】
前記照合情報記憶部は、
前記情報演算部による演算結果を新たな照合情報として前記照合情報に置き換えて記憶することを特徴とする請求項１〜６のいずれかに記載の管理装置。
【請求項８】
前記管理装置は、
前記管理装置を一意に識別可能な識別子が設けられ、前記ネットワークに接続されており、
前記管理装置は、更に、
前記管理装置の識別子を用いて前記管理装置の機器情報を生成する機器情報生成部を有し、
前記照合情報記憶部は、
各機器で生成された各機器の機器情報と前記機器情報生成部により生成された前記管理装置の機器情報に対して所定の演算を行って生成された照合情報を記憶し、
前記機器情報生成部は、
前記通信部が各機器の機器情報を受信する際に、前記管理装置の識別子を用いて前記管理装置の機器情報を生成し、
前記情報演算部は、
前記通信部により受信された各機器の機器情報と、前記機器情報生成部により生成された前記管理装置の機器情報に対して、前記照合情報の生成時の演算と同じ演算を行うことを特徴とする請求項１〜７のいずれかに記載の管理装置。
【請求項９】
前記通信部は、
繰り返し発生する所定イベントの発生ごとに、各機器に対して機器情報の送信を指示する機器情報送信指示を送信し、機器情報送信指示に対する応答として、各機器から機器情報を受信し、
前記照合情報記憶部は、
ｎ−１回目（ｎ≧２）の機器情報送信指示に対して前記通信部が受信した各機器の機器情報に対して所定の演算を行って生成された照合情報を記憶し、
前記情報演算部は、
ｎ回目の機器情報送信指示に対して前記通信部が受信した各機器の機器情報に対して、前記照合情報の生成時の演算と同じ演算を行うことを特徴とする請求項１〜８のいずれかに記載の管理装置。
【請求項１０】
各々を一意に識別可能な識別子が設けられている１つ以上の機器が接続されているネットワークをコンピュータが管理する管理方法であって、
前記コンピュータが、各機器の識別子を用いて各機器で生成された各機器の機器情報に対して所定の演算を行って生成された照合情報を記憶し、
各機器の識別子を用いて各機器で生成された機器情報を、前記コンピュータが、各機器から受信し、
受信された各機器の機器情報に対して、前記コンピュータが、前記照合情報の生成時の演算と同じ演算を行い、
前記コンピュータが、前記演算による演算結果と記憶されている前記照合情報とを比較することを特徴とする管理方法。
【請求項１１】
各々を一意に識別可能な識別子が設けられている１つ以上の機器が接続されているネットワークを管理するコンピュータである管理装置に、
各機器の識別子を用いて各機器で生成された各機器の機器情報に対して所定の演算を行って生成された照合情報を記憶する照合情報記憶処理と、
各機器の識別子を用いて各機器で生成された機器情報を、各機器から受信する通信処理と、
前記通信処理により受信された各機器の機器情報に対して、前記照合情報の生成時の演算と同じ演算を行う情報演算処理と、
前記情報演算処理による演算結果と前記照合情報記憶処理に記憶されている前記照合情報とを比較する情報比較処理とを実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えば、ネットワーク構成の変更やネットワークに接続されている機器のソフトウェアの変更を検出する技術に関する。
【背景技術】
【０００２】
パーソナルコンピュータや組み込み機器が接続されているネットワークは、システム管理者が想定している通りに構成されていなければならない。
また、ネットワークへ接続されているパーソナルコンピュータや組み込み機器へインストールされているソフトウェアも同様に、システム管理者が想定しているバージョンのソフトウェアがインストールされていなければならない。
しかし、システムの構築時に、システム構築者が、システム管理者が想定しているものとは異なったシステムを誤構築してしまう可能性がある。
また、システム管理者以外の人間が、システム管理者の知らない内に、ネットワーク構成やネットワーク上の機器にインストールされているソフトウェアを変更する可能性がある。
このように、システムの誤構築やシステムに変更が発生した場合に、誤構築や変更を検出し、システム管理者へ通知する必要がある。【０００３】
システムの誤構成を検出する従来の方法として、特許文献１に記載の技術がある。
特許文献１では、ネットワークの誤構成を検出するための分析装置をネットワークへ接続し、分析装置とネットワーク上のノード間でフレームを送受信し、分析装置が、フレーム送信時のトラフィックパターンとフレーム受信時トラフィックパターンを監視することで、ネットワーク誤構成を検出することが開示されている。
また、関連する技術として、特許文献２に記載の技術がある。
特許文献２では、ネットワークから一定の時間間隔でＭＩＤ（管理情報ベース）データを収集し、ＭＩＤデータからエネルギ・プロットを構築、分析することにより、ネットワーク異常（ＩＰアドレス空間の重複、パケット・フィルタリングの誤構成、無限ルーティング・ループ、分散型サービス拒否攻撃）を検出する方法が開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００５−７３２４８号公報
【特許文献２】特開２００６−６７５６９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上記特許文献１に記載の方法は、ネットワークの誤構成の検出は可能だが、ネットワークへ接続されている機器にインストールされているソフトウェアの変更は検出できないという課題がある。
上記特許文献２に記載の方法は、ネットワーク異常の検出は可能だが、ネットワークの誤構成やネットワーク構成の変更は検出できないという課題がある。
また、ネットワークへ接続されている機器にインストールされているソフトウェアの変更は検出できないという課題もある。【０００６】
本発明は、上記のような課題を解決することを主な目的の一つとしており、ネットワークの誤構成やネットワーク構成の変更の検出と、ネットワーク上の機器にインストールされているソフトウェアの変更の検出を行えるようにすることを目的とする。
【課題を解決するための手段】
【０００７】
本発明に係る管理装置は、
各々を一意に識別可能な識別子が設けられている１つ以上の機器が接続されているネットワークを管理する管理装置であって、
各機器の識別子を用いて各機器で生成された各機器の機器情報に対して所定の演算を行って生成された照合情報を記憶する照合情報記憶部と、
各機器の識別子を用いて各機器で生成された機器情報を、各機器から受信する通信部と、
前記通信部により受信された各機器の機器情報に対して、前記照合情報の生成時の演算と同じ演算を行う情報演算部と、
前記情報演算部による演算結果と前記照合情報記憶部に記憶されている前記照合情報とを比較する情報比較部とを有することを特徴とする。
【発明の効果】
【０００８】
本発明によれば、各機器の機器情報から生成され、照合情報記憶部に記憶されている照合情報と、各機器から受信した機器情報に照合情報と同じ演算が行われた演算結果とを比較するため、比較の結果によりネットワークに接続されている機器の組み合わせの変化やネットワークの誤構成を検出することができ、また、機器情報にソフトウェア等のリソースの情報を含ませることにより各機器のリソースの変化を検出することができる。
【図面の簡単な説明】
【０００９】
【図１】実施の形態１に係るシステム構成例を示す図。
【図２】実施の形態１に係るＰＬＣ（管理局）の構成例を示す図。
【図３】実施の形態１に係るＰＬＣ（通常局）の構成例を示す図。
【図４】実施の形態１に係るパーソナルコンピュータ内のボードの構成例を示す図。
【図５】実施の形態１に係る動作例を示す図。
【図６】実施の形態１に係る動作例を示す図。
【図７】実施の形態１に係る動作例を示す図。
【図８】実施の形態１に係る動作例を示す図。
【図９】実施の形態１に係る通常局のファームウェア起動時の動作例を示すフローチャート図。
【図１０】実施の形態１に係る管理局のファームウェア起動時の動作例を示すフローチャート図。
【図１１】実施の形態３に係るＰＬＣの構成例を示す図。
【図１２】実施の形態３に係るユニット（マスタ）の構成例を示す図。
【図１３】実施の形態３に係るユニット（スレーブ）の構成例を示す図。
【図１４】実施の形態３に係るユニット（スレーブ）の構成例を示す図。
【図１５】実施の形態３に係る動作例を示す図。
【図１６】実施の形態３に係る動作例を示す図。
【図１７】実施の形態３に係る動作例を示す図。
【図１８】実施の形態３に係る動作例を示す図。
【図１９】実施の形態３に係るユニット（スレーブ）のファームウェア起動時の動作例を示すフローチャート図。
【図２０】実施の形態３に係るユニット（マスタ）のファームウェア起動時の動作例を示すフローチャート図。
【図２１】実施の形態１に係るパーソナルコンピュータの構成例を示す図。
【図２２】実施の形態１に係る管理局のプログラム構成例を示す図。
【図２３】実施の形態１に係る通常局のプログラム構成例を示す図。
【発明を実施するための形態】
【００１０】
実施の形態１．
図１は、本実施の形態に係るシステム構成例を示す。
図１では、一例として、ＰＬＣ（Ｐｒｏｇｒａｍａｂｌｅ  Ｌｏｇｉｃ  Ｃｏｎｔｒｏｌｅｒ）を含むＦＡ（Ｆａｃｔｏｒｙ  Ａｕｔｏｍａｔｉｏｎ）システムを説明する。
図１の構成例では、ネットワークへパーソナルコンピュータ２００、ＰＬＣ４００、ＰＬＣ５００を接続する。
また、ＰＬＣ４００、ＰＬＣ５００へは、ＦＡ機器３００を接続する。
図１の構成例では、ネットワークへ接続するパーソナルコンピュータの数は１台、ＰＬＣの数は２台だが、これに限らず、ネットワークへ接続するパーソナルコンピュータ、ＰＬＣは何台でもよい。
また、ＰＬＣへ接続するＦＡ機器は何台でもよいし、接続しなくてもよい。
【００１１】
ネットワークへ接続するパーソナルコンピュータ、ＰＬＣの内、任意のノード（ＰＬＣ４００／ＰＬＣ５００／パーソナルコンピュータ２００）を管理局とし、その他のノードを通常局とする。
ネットワークへ接続しているノードの数が１台の場合は、そのノードを管理局とする。管理局はネットワークへ接続されているノード数を検知でき、通常局は検知できないとする。
図１の例では、ＰＬＣ４００を管理局とし、ＰＬＣ５００及びパーソナルコンピュータ２００を通常局とする。
なお、管理局であるＰＬＣ４００は管理装置の例であり、通常局であるＰＬＣ５００及びパーソナルコンピュータ２００は機器の例である。
【００１２】
また、図１の例では、ネットワークはトークンリングとし、ケーブル１００は二重ループとする。
そのため、ネットワーク上に、電源未投入や故障、断線等により、通信ができないノードが存在しても、他の正常なノード間では通信が可能である。
ケーブル１００ではトークン２０が１つ巡回している。トークン２０は時計周りに巡回していても、反時計周りに巡回していてもよい。
本実施の形態では、トークン２０は反時計周りに巡回しているとする。
なお、本実施の形態が対象にするネットワークは、トークンリングに限らず、順序が設定されている複数のノードが接続されているネットワークであればどのようなものでもよい。
例えば、ノードにデータの転送順序が設けられているディジーチェーン構成のネットワークでもよい。
【００１３】
次に、ＰＬＣ４００、ＰＬＣ５００の構成例を説明する。
ＰＬＣ４００の構成は図２に示し、ＰＬＣ５００の構成例は図３に示す。
【００１４】
まず、図４を参照してＰＬＣ４００の構成例を示す。
ＰＬＣ４００はＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）４０２、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）４０１、不揮発性メモリ４１０、通信デバイス４１１を備える。
通信デバイス４１１は、ネットワークからデータを受信し、また、ネットワークにデータを送信するための物理インタフェース（ハードウェア）である。
不揮発性メモリ４１０には、Ｆ／Ｗ（Ｆｉｒｍ  Ｗａｒｅ）４０３、ノード情報キー４０４、ネットワーク構成キー４０５、ノード情報変更フラグ４０６、Ｆ／Ｗのバージョン番号４０７、プログラム４０８、シリアルナンバー４０９が保存されている。
Ｆ／Ｗ４０３は、ＰＬＣ４００を制御するためのファームウェアである。
プログラム４０８は、ＰＬＣ４００へ接続されたＦＡ機器３００を制御するためのソフトウェアである。プログラム４０８はバイナリ形式で保存されている。
Ｆ／Ｗのバージョン番号４０７は、Ｆ／Ｗ４０３のバージョンを識別するための情報である。
シリアルナンバー４０９は、ＰＬＣ４００を一意に識別可能な識別子である。
ノード情報変更フラグ４０６は、Ｆ／Ｗ４０３やプログラム４０８に変更が生じた場合に、ＯＮに設定される。
ノード情報キー４０４は、ＰＬＣ４００のリソースの情報である、Ｆ／Ｗのバージョン番号４０７、プログラム４０８のバイナリのバイト列と、ＰＬＣ４００の識別子であるシリアルナンバー４０９を結合したバイト列のハッシュ値である。
ネットワーク構成キー４０５は、通常局であるＰＬＣ５００、パーソナルコンピュータ２００から受信したノード情報キーと、ＰＬＣ４００のノード情報キー４０４を結合したバイト列のハッシュ値である。
なお、ネットワーク構成キー４０５は、照合情報の例である。
また、ＰＬＣ５００、パーソナルコンピュータ２００から受信したノード情報キーと、ＰＬＣ４００のノード情報キー４０４は、それぞれ機器情報の例である。
また、不揮発性メモリ４１０は、照合情報記憶部の例である、
【００１５】
次に、図３を参照してＰＬＣ５００を説明する。
ＰＬＣ５００のＣＰＵ４０２、ＲＡＭ４０１、不揮発性メモリ４１０及び通信デバイス４１１はＰＬＣ４００と同じだが、Ｆ／Ｗ５０３、Ｆ／Ｗのバージョン番号５０７、プログラム５０８、ノード情報変更フラグ５０６はＰＬＣ４００のものと同じであってもよいし、異なってもよい。
シリアルナンバー５０９はＰＬＣ５００を一意に識別可能な識別子であり、ＰＬＣ４００のシリアルナンバー４０９とは値が異なる。
ノード情報キー５０４は、ＰＬＣ５００のリソースの情報である、Ｆ／Ｗのバージョン番号５０７、プログラム５０８のバイナリのバイト列と、ＰＬＣ５００の識別子であるシリアルナンバー５０９を結合したバイト列のハッシュ値である。
ノード情報キー５０４は、シリアルナンバー５０９を要素としているため、ＰＬＣ４００のノード情報キー４０４とは値が異なる。
【００１６】
次に、図４及び図２１を参照して、パーソナルコンピュータ２００の構成を説明する。
パーソナルコンピュータ２００には、ネットワークで通信するためのボード６００が装着されている。
また、パーソナルコンピュータ２００には、ボード６００を制御するドライバ３０がハードディスク２０３に保存されている。
ボード６００は、ＣＰＵ６０２、ＲＡＭ６０１、不揮発性メモリ６１０、通信デバイス６１１を備える。
通信デバイス６１１は、ネットワークからデータを受信し、また、ネットワークにデータを送信するための物理インタフェース（ハードウェア）である。
不揮発性メモリ６１０には、ボード６００を制御するＦ／Ｗ６０３、ボード６００を制御するドライバのバージョン番号６０７、ボード６００を一意に識別可能な識別子であるシリアルナンバー６０９、ノード情報変更フラグ６０６、ノード情報キー６０４が格納されている。
ノード情報キー５０４は、パーソナルコンピュータ２００のリソースの情報である、ドライバのバージョン番号６０７と、パーソナルコンピュータ２００の識別子であるシリアルナンバー６０９を結合したバイト列のハッシュ値である。
【００１７】
なお、図２〜図４において、ノード情報キー４０４、ネットワーク構成キー４０５、ノード情報キー５０４、ノード情報キー６０４は２５６ｂｉｔとし、ノード情報変更フラグは最低１ｂｉｔとする。
また、ＰＬＣ４００のＦ／Ｗ４０３、プログラム４０８、ＰＬＣ５００のＦ／Ｗ５０３、プログラム５０８は更新可能である。
一方、シリアルナンバー４０９及びシリアルナンバー５０９は変更不可である。
また、パーソナルコンピュータ２００のドライバ３０は更新可能であるが、ボード６００のＦ／Ｗ６０３、シリアルナンバー６０９は変更不可である。
ＰＬＣのＦ／Ｗを別のＦ／Ｗへ更新すると、更新後のＦ／Ｗのバージョン番号がＰＬＣの不揮発性メモリへ書き込まれる。
パーソナルコンピュータ２００のドライバ３０を別のドライバへ更新すると、更新後のドライバのバージョン番号がドライバのバージョン番号６０７としてボード６００の不揮発性メモリ６１０に書き込まれる。
【００１８】
ＰＬＣのＦ／Ｗ、またはＦＡ機器を制御するプログラムをＰＬＣへ新規インストールした場合、または、更新した場合は、ＰＬＣのＦ／Ｗが不揮発性メモリ上のノード情報変更フラグを立てる。
パーソナルコンピュータ２００のドライバ３０を新規インストール／更新した場合は、パーソナルコンピュータ２００のＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）がボード６００のＦ／Ｗ６０３へ指示を出し、ボード６００のＦ／Ｗ６０３が不揮発性メモリ６１０上のノード情報変更フラグ６０６を立てる。
【００１９】
次に、本実施の形態における管理局として機能するためのプログラム構成例及び通常局として機能するためのプログラム構成例を説明する。
図２２は、管理局として機能するためのプログラム構成例を示す。
図２３は、通常局として機能するためのプログラム構成例を示す。
図２２及び図２３に示される各プログラムは、例えば、不揮発性メモリ４１０又は他の不揮発性の他の記憶媒体に格納されており、プログラムの実行時にＲＡＭを通じてＣＰＵ４０２にロードされる。
図２２は、管理局として動作するＰＬＣ４００のＣＰＵ４０２（管理局ＣＰＵともいう）に、プログラムがロードされている状態を示している。
図２３は、通常局として動作するＰＬＣ５００のＣＰＵ４０２（通常局ＣＰＵともいう）に、プログラムがロードされている状態を示している。
なお、図２２及び図２３に示すプログラムの少なくとも一部は、Ｆ／Ｗにより実現されてもよい。
なお、パーソナルコンピュータ２００においても、図２３と同じプログラムの構成となる。
【００２０】
まず、図２２について説明する。
通信部４０２１は、通信デバイス４１１の管理、伝送制御手順の管理、ネットワーク接続手順の管理等を行いながら、ＰＬＣ５００及びパーソナルコンピュータ２００と通信を行う。
より具体的には、通信部４０２１は、ＰＬＣ５００及びパーソナルコンピュータ２００にノード情報キー５０４及びノード情報キー６０４の送信を要求するノード情報キー取得要求を送信し、また、ＰＬＣ５００及びパーソナルコンピュータ２００からノード情報キー５０４及びノード情報キー６０４を受信する。
【００２１】
取得要求生成部４０２２は、所定のタイミングにて、前述したノード情報キー取得要求を生成する。
【００２２】
ノード情報キー生成部４０２３は、Ｆ／Ｗのバージョン番号４０７、プログラム４０８のバイナリのバイト列、シリアルナンバー４０９を結合し、結合したバイト列に対して所定のハッシュ演算（一方向演算の例）を行ってノード情報キー４０４を生成する。
ノード情報キー生成部４０２３は、機器情報生成部の例である。
【００２３】
ネットワーク構成キー生成部４０２４は、ＰＬＣ５００及びパーソナルコンピュータ２００から受信したノード情報キー５０４及びノード情報キー６０４と、ノード情報キー生成部４０２３が生成したノード情報キー４０４を結合し、結合したバイト列に対して所定のハッシュ演算（一方向演算の例）を行ってネットワーク構成キーを生成する。
ネットワーク構成キー生成部４０２４が行う結合演算及びハッシュ演算は、不揮発性メモリ４１０に格納されているネットワーク構成キー４０５の生成時に行われた結合演算及びハッシュ演算と同じである。
ノード情報キー生成部４０２３は、情報演算部の例である。
【００２４】
情報比較部４０２５は、ネットワーク構成キー生成部４０２４により生成されたネットワーク構成キーと不揮発性メモリ４１０に格納されているネットワーク構成キー４０５とを比較する。
比較の結果、両者が一致する場合は、情報比較部４０２５は、ネットワーク構成キー４０５の生成時と比較して、ネットワークに接続されている機器の組み合わせ及び各機器の機器リソース（Ｆ／Ｗ、プログラム、シリアルナンバー、ドライブ）の構成に変更がないと判断する。
一方、両者が一致しない場合は、情報比較部４０２５は、ネットワーク構成キー４０５の生成時と比較して、ネットワークに接続されている機器の組み合わせ及び各機器の機器リソースの構成の少なくともいずれかに変更が生じていると判断する。
【００２５】
次に、図２３について説明する。
通信部４０２１及びノード情報キー生成部４０２３は、図２２に示したものと同様である。
但し、図２３の通信部４０２１では、ＰＬＣ４００よりノード情報キー取得要求を受信し、また、ノード情報キー生成部４０２３により生成されたノード情報キー５０４（ノード情報キー６０４）をＰＬＣ４００に送信する。
取得要求解析部４０２６は、通信部４０２１が受信したメッセージがノード情報キー取得要求であるかを解析し、通信部４０２１が受信したメッセージがノード情報キー取得要求である場合に、不揮発性メモリ４１０（不揮発性メモリ６１０）からノード情報キー５０４（ノード情報キー６０４）を取得し、通信部４０２１にノード情報キー５０４（ノード情報キー６０４）を渡す。
【００２６】
次に、図５〜図１０を参照して本実施の形態に係る動作を説明する。
なお、図５は、ＰＬＣ４００からノード情報キー取得要求５０の送信する際の概要を示す。
図６は、ＰＬＣ５００及びパーソナルコンピュータ２００からノード情報キー５０４及びノード情報キー６０４を送信する際の概要を示す。
図７は、ＰＬＣ４００におけるネットワーク構成キー６０の生成過程の概要を示す。
図８は、ノード情報キー４０４、ノード情報キー５０４、ノード情報キー６０４、ネットワーク構成キー６０の具体例を示す。
図９は、通常局のＦ／Ｗ起動時の動作例を示すフローチャートである。
図１０は、管理局のＦ／Ｗ起動時の動作例を示すフローチャートである。
【００２７】
まず、ノードの電源を投入すると、各ノードのＦ／Ｗは、自ノードのノード情報を元にノード情報キーを算出する。
ＰＬＣ４００のノード情報とは、ＰＬＣ４００のＦ／Ｗ４０３のバージョン番号４０７、プログラム４０８、ＰＬＣ４００のシリアルナンバー４０９である。
ＰＬＣ５００のノード情報とは、ＰＬＣ５００のＦ／Ｗ５０３のバージョン番号５０７、プログラム５０８、ＰＬＣ５００のシリアルナンバー５０９である。
パーソナルコンピュータ２００のノード情報とは、ボード６００を制御するドライバ３０のバージョン番号６０７、ボード６００のシリアルナンバー６０９である。
また、ＰＬＣのノード情報キーとは、ＰＬＣのＦ／Ｗのバージョン番号、プログラムのバイナリのバイト列、ＰＬＣのシリアルナンバーを結合したバイト列のハッシュ値である。
パーソナルコンピュータ２００のノード情報キーとは、ドライバ３０のバージョン番号６０７、ボード６００のシリアルナンバー６０９を結合したバイト列のハッシュ値である。
ハッシュ関数は、例えば、ＳＨＡ（Ｓｅｃｕｒｅ  Ｈａｓｈ  Ａｌｇｏｒｉｔｈｍ）−２５６を使用する。
ＳＨＡ−２５６のハッシュサイズは２５６ｂｉｔであり、ハッシュ値の衝突はない。
【００２８】
ハッシュ関数をｈとすると、ＰＬＣのノード情報キーは、ｈ（“ＰＬＣのＦ／Ｗのバージョン番号”“プログラムのバイナリのバイト列”“ＰＬＣのシリアルナンバー”）となる。
ハッシュ関数の引数として与える文字列／バイト列の順は、“ＰＬＣのＦ／Ｗのバージョン番号”、“プログラムのバイナリのバイト列”、“ＰＬＣのシリアルナンバー”とする。
ＰＬＣのＦ／Ｗのバージョン番号が“ｖｅｒｓｉｏｎ００１”、プログラムのバイナリのバイト列が“０ｘ００ＦＦ”、ＰＬＣのシリアルナンバーが“ｓｅｒｉａｌ００１”の場合、ＰＬＣのノード情報キーは、ｈ（“ｖｅｒｓｉｏｎ００１０ｘ００ＦＦｓｅｒｉａｌ００１”）となる。
パーソナルコンピュータ２００のノード情報キーは、ｈ（“ボード６００のドライバ３０のバージョン番号６０７”“ボード６００のシリアルナンバー６０９”）となる。
ハッシュ関数の引数として与える文字列の順は、“ボード６００のドライバ３０のバージョン番号６０７”、“ボード６００のシリアルナンバー６０９”とする。
ボード６００のドライバ３０のバージョン番号６０７が“ｖｅｒｓｉｏｎ００２”、ボード６００のシリアルナンバー６０９が“ｓｅｒｉａｌ００２”の場合、パーソナルコンピュータ２００のノード情報キーは、ｈ（“ｖｅｒｓｉｏｎ００２ｓｅｒｉａｌ００２”）となる。
【００２９】
通常局であるＰＬＣ５００とパーソナルコンピュータ２００の電源投入時の動作を図９に従って説明する。
【００３０】
ＰＬＣ５００の電源を投入すると、ＰＬＣ５００のＣＰＵ４０２が、不揮発性メモリ４１０からＦ／Ｗ５０３をＲＡＭ４０１に読み出し、Ｆ／Ｗ５０３を起動する。
ここで、Ｆ／Ｗ５０３はノード情報キー生成部４０２３として機能し、不揮発性メモリ４１０からノード情報変更フラグ５０６をＲＡＭ４０１へ読み出す。
ノード情報変更フラグ５０６が立っている場合（Ｓ００１でＹＥＳ）、ノード情報キー生成部４０２３は、不揮発性メモリ４１０からＦ／Ｗ５０３のバージョン番号５０７、プログラム５０８、シリアルナンバー５０９をＲＡＭ４０１に読み出し、ＰＬＣ５００のノード情報キーを生成する。
ノード情報キー生成部４０２３は、生成したノード情報キーを不揮発性メモリ４１０へ格納し（Ｓ００２）、ノード情報変更フラグ５０６を下げる（Ｓ００３）。
ノード情報変更フラグ５０６が立っていない場合は、ノード情報キー生成部４０２３は、不揮発性メモリ４１０からノード情報キー５０４を読み出す。
【００３１】
パーソナルコンピュータ２００の電源を投入すると、ボード６００のＣＰＵ６０２が、不揮発性メモリ６１０からＦ／Ｗ６０３をＲＡＭ６０１に読み出し、Ｆ／Ｗ６０３を起動する。
ここで、Ｆ／Ｗ６０３はノード情報キー生成部４０２３として機能し、不揮発性メモリ６１０からノード情報変更フラグ６０６をＲＡＭ６０１へ読み出す。
ノード情報変更フラグ６０６が立っている場合、ノード情報キー生成部４０２３は、不揮発性メモリ６１０からドライバのバージョン番号６０７、シリアルナンバー６０９をＲＡＭ６０１に読み出し、ボード６００のノード情報キーを生成する。
ノード情報キー生成部４０２３は、生成したノード情報キーを不揮発性メモリ６１０へ格納し（Ｓ００２）、ノード情報変更フラグ６０６を下げる（Ｓ００３）。
ノード情報変更フラグ６０６が立っていない場合は、ノード情報キー生成部４０２３は、不揮発性メモリ６１０からノード情報キー６０４を読み出す。
【００３２】
次に、管理局であるＰＬＣ４００の電源投入時の動作を図１０に従って説明する。
【００３３】
ＰＬＣ４００の電源を投入すると、ＰＬＣ４００のＣＰＵ４０２が、不揮発性メモリ４１０からＦ／Ｗ４０３をＲＡＭ４０１に読み出し、Ｆ／Ｗ４０３を起動する。
ここで、Ｆ／Ｗ４０３はノード情報キー生成部４０２３として機能し、不揮発性メモリ４１０からノード情報変更フラグ４０６をＲＡＭ４０１へ読み出す。
ノード情報変更フラグ４０６が立っている場合（Ｓ００６でＹＥＳ）、ノード情報キー生成部４０２３は、不揮発性メモリ４１０からＦ／Ｗ４０３のバージョン番号４０７、プログラム４０８、シリアルナンバー４０９をＲＡＭ４０１に読み出し、ＰＬＣ４００のノード情報キーを生成する。
ノード情報キー生成部４０２３は、生成したノード情報キーを不揮発性メモリ４１０へ格納し（Ｓ００７）、ノード情報変更フラグ４０６を下げる（Ｓ００８）。
ノード情報変更フラグ４０６が立っていない場合は、ノード情報キー生成部４０２３は、不揮発性メモリ４１０からノード情報キー４０４を読み出す。
【００３４】
次に、取得要求生成部４０２２がノード情報キー取得要求５０を生成し、通信部４０２１が通信デバイス４１１から通常局であるＰＬＣ５００、パーソナルコンピュータ２００へノード情報キー取得要求５０を送信する（図５参照）（Ｓ００９）。
ＰＬＣ５００、パーソナルコンピュータ２００では、通信部４０２１が通信デバイス４１１、通信デバイス６１１を介してノード情報キー取得要求５０を受信し（Ｓ００４）、取得要求解析部４０２６がノード情報キー取得要求５０を受信したことを確認し、不揮発性メモリ４１０、不揮発性メモリ６１０内のノード情報キー５０４、ノード情報キー６０４を通信部４０２１に渡し、通信部４０２１が通信デバイス４１１、通信デバイス６１１を介してノード情報キー５０４、ノード情報キー６０４をＰＬＣ４００へ送信する（図６参照）（Ｓ００５）。
【００３５】
ＰＬＣ４００では、通信部４０２１が通信デバイス４１１を介してネットワーク上の全ノードからノード情報キーを受信し（Ｓ０１０）、また、ネットワーク構成キー生成部４０２４が不揮発性メモリ４１０からノード情報キー４０４を取得し、受信したノード情報キーと、不揮発性メモリ４１０から取得したノード情報キー４０４を結合する演算を行い、結合したバイト列を元にネットワーク構成キー６０を算出する（図７参照）（Ｓ０１１）。
【００３６】
ネットワーク構成キー６０の生成手順を述べる。
ネットワーク構成キー生成部４０２４は、ＰＬＣ４００のノード情報キー４０４、ＰＬＣ５００のノード情報キー５０４、パーソナルコンピュータ２００のノード情報キー６０４をある規則に従った順に並び変え、結合する。
ネットワーク構成キー生成部４０２４は、まず、管理局であるＰＬＣ４００のノード情報キー４０４を先頭のバイト列とする。
次に、管理局を起点としてネットワークを反時計周りに隣接するノード（本実施の形態ではＰＬＣ５００）のノード情報キー５０４をＰＬＣ４００のノード情報キー４０４の末尾へ結合する。
次に、ＰＬＣ５００を起点としてネットワークを反時計周りに隣接するノード（本実施の形態ではパーソナルコンピュータ２００）のノード情報キー６０４をＰＬＣ５００のノード情報キー５０４の末尾へ結合する。
そして、ネットワーク構成キー生成部４０２４は、結合したバイト列のハッシュ値をネットワーク構成キー６０とする。
使用するハッシュ関数は、例えば、ＳＨＡ−２５６とする。
ハッシュ関数をｈ、ＰＬＣ４００のノード情報キー４０４が０ｘ０００１、ＰＬＣ５００のノード情報キー５０４が０ｘ０００２、パーソナルコンピュータ２００のノード情報キー６０４が０ｘ０００３の場合、ネットワーク構成キー６０は、ｈ（０ｘ０００１  ０ｘ０００２  ０ｘ０００３）となる（図８参照）。
本実施の形態では、管理局のノード情報キーをバイト列の先頭とし、管理局を起点として反時計周りにネットワークをたどり、辿り着いたノードのノード情報キーをバイト列の末尾へ順次結合し、結合したバイト列を元に、ネットワーク構成キーを算出したが、時計周りにネットワークを辿って、辿り着いたノードのノード情報キーをバイト列の末尾へ順次結合して、ネットワーク構成キーを算出しても良い。
【００３７】
ＰＬＣ４００では、ネットワーク構成キー６０が算出されると、情報比較部４０２５が、不揮発性メモリ４１０へ保存されているネットワーク構成キー４０５をＲＡＭ４０１へ読み出す。
ネットワーク構成キー４０５は、ＰＬＣ４００の前回起動時に算出したネットワーク構成キーである。
このため、ネットワーク構成キー４０５の生成手順と、ネットワーク構成キー６０の生成手順は同じである。
情報比較部４０２５は、ネットワーク構成キー４０５とネットワーク構成キー６０を比較する（Ｓ０１２）。
比較結果が同じである場合、ＰＬＣ４００の前回起動時のシステム構成と、現在のシステム構成が同じということを意味し、情報比較部４０２５は、比較結果をシステム管理者へ通知する（Ｓ０１３）。
比較結果が異なる場合、ＰＬＣ４００の前回起動時のシステム構成と、現在のシステム構成が異なる（ネットワークに接続される機器の組み合わせが異なる場合、各機器のリソース構成が異なる場合の少なくともいずれか）ということを意味し、情報比較部４０２５は、比較結果をシステム管理者へ通知する（Ｓ０１３）。
比較結果をシステム管理者へ通知する方法は何でも良い。
比較結果が同じであれば、例えば、ＰＬＣ４００に配置されているＬＥＤ（Ｌｉｇｈｔ  Ｅｍｉｔｔｉｎｇ  Ｄｉｏｄｅ）を青色に点灯し、比較結果が異なれば、ＬＥＤを赤色に点灯するという方法が考えられる。
管理局がパーソナルコンピュータ２００であれば、比較結果をアプリケーションで表示するという方法が考えられる。
最後に、情報比較部４０２５は、算出されたネットワーク構成キー６０をネットワーク構成キー４０５に置き換えて不揮発性メモリ４１０へ格納する（Ｓ０１４）。
【００３８】
なお、以上では、ＰＬＣ４００は自身のノード情報キー４０４を用いてネットワーク構成キー６０を生成することとした。
しかし、ＰＬＣ４００のリソースに変更が生じないことが確実な場合は、ノード情報キー４０４を用いずにＰＬＣ５００のノード情報キー５０４、パーソナルコンピュータ２００のノード情報キー６０４のみを用いてネットワーク構成キー６０を生成するようにしてもよい。
【００３９】
また、以上では、ノードの電源投入をトリガーに、各ノードがノード情報キーを生成し、管理局となるノードにノード情報キーを送信している。
しかし、ノード情報の生成のトリガーは、電源投入に限らず、繰り返し発生するイベントであればどのようなイベントでもよい。各ノードは、繰り返し発生するイベントの発生ごとに、ノード情報を生成し、管理局となるノードにノード情報キーを送信するようにしてもよい。
【００４０】
ここで、本実施の形態による主な効果を述べる。
システム管理者は、管理局が起動すると、管理局の前回起動時のシステム構成と現在のシステム構成が同じか異なるかを認識できる。
システム構成の変更の例として、ＰＬＣのＦ／Ｗやプログラムの更新、ボードのドライバの更新、ネットワーク構成の変更、ネットワークへ接続していたＰＬＣ／ボードの機種の変更、ノードの電源ダウンや故障、断線等が挙げられる。
システム管理者が知らない内に、システム管理者以外の人間がシステム構成を変更したり、また、悪意を持った人間がシステムの不正動作を目的として、システム構成を変更した場合でも、システム管理者は、管理局起動時にシステム構成に変更があったかどうかを認識できる。
【００４１】
以上、本実施の形態では、機器情報を一意に表すバイト列を算出する手段と、同一ネットワーク上の他の全ての機器へ前記バイト列の取得要求を送信する手段と、同一ネットワーク上の他の全ての機器から受信した、前記機器情報を一意に表すバイト列を元に、システム構成を一意に表すバイト列を算出する手段と、前記システム構成を一意に表すバイト列と、機器内の不揮発性メモリへ格納されているシステム構成を一意に表すバイト列とを比較する手段と、比較結果をシステム管理者へ通知する手段を備える機器を説明した。
【００４２】
また、本実施の形態では、機器情報を一意に表すバイト列は、機器のＦ／Ｗのバージョン番号、機器のドライバのバージョン番号、機器が制御する装置の装置制御プログラムのバイナリのバイト列、機器のシリアルナンバーを組み合わせたバイト列のハッシュ値であることを説明した。
【００４３】
また、本実施の形態では、システム構成を一意に表すバイト列は、機器情報を一意に表すバイト列を、ある一定の規則で組み合わせたバイト列のハッシュ値であることを説明した。
【００４４】
また、本実施の形態では、機器が前回起動時に算出したシステム構成を一意に表すバイト列と、機器が現在起動時に算出したシステム構成を一意に表すバイト列を比較することで、システム構成が変更したかを機器が認識することを説明した。
【００４５】
実施の形態２．
システム構築者が、システムを実際に動作させる場所（例えば客先の工場等）とは別の場所で、動作確認等の実施が目的で、システムを構築する場合がある。
このような場合、その後に、ネットワーク上のノードをケーブルから外し、システムを実際に動作させる場所（例えば、客先の工場等）へ、ノード及びケーブルを移動し、動作確認時と同じシステムを再構築する。
本実施の形態は、このような動作確認のために構築したシステムと、工場等で再構築したシステムとの間で差異がないことを確認する例を説明する。
なお、本実施の形態に係るシステム構成は実施の形態１と同じとする。
【００４６】
本実施の形態における動作を述べる。
システム構築者は、システムの動作確認を目的として、図１に示すシステムを構築する。
構築したシステムの構成は正しいとする。
ネットワーク上の各ノードの電源を投入すると、ＰＬＣ４００、ＰＬＣ５００、パーソナルコンピュータ２００は自ノードのノード情報キーを算出する（Ｓ００２、Ｓ００７）。
管理局であるＰＬＣ４００は通常局であるＰＬＣ５００、パーソナルコンピュータ２００へノード情報キー取得要求を送信する（Ｓ００９）。
ＰＬＣ５００、パーソナルコンピュータ２００はＰＬＣ４００へ自ノードのノード情報キーを送信する（Ｓ００５）。
ＰＬＣ４００は受信したＰＬＣ５００、パーソナルコンピュータ２００のノード情報キーとＰＬＣ４００のノード情報キー（Ｓ０１０）を元にネットワーク構成キー６０を算出する（Ｓ０１１）。
算出したネットワーク構成キー６０は、管理局であるＰＬＣ４００の不揮発性メモリ４１０にネットワーク構成キー４０５として保存する（Ｓ０１４）。
【００４７】
システム構築者は、各ノードをケーブルから外し、ノード及びケーブルを、システムを実際に動作させる場所へ移動し、システムを再構築する。
システムを再構築すると、システム構築者は、ネットワーク上の各ノードの電源を投入する。
ＰＬＣ４００、ＰＬＣ５００、パーソナルコンピュータ２００は自ノードのノード情報キーを算出する（Ｓ００２、Ｓ００７）。
管理局であるＰＬＣ４００は通常局であるＰＬＣ５００、パーソナルコンピュータ２００へノード情報キー取得要求を送信する（Ｓ００９）。
ＰＬＣ５００、パーソナルコンピュータ２００はＰＬＣ４００へ自ノードのノード情報キーを送信する（Ｓ００５）。
ＰＬＣ４００は受信したＰＬＣ５００、パーソナルコンピュータ２００のノード情報キーとＰＬＣ４００のノード情報キーを元にネットワーク構成キー６０を算出する（Ｓ０１１）。
ＰＬＣ４００の不揮発性メモリ４１０には、動作確認時に構築したシステムのネットワーク構成キー４０５が格納されている。
ＰＬＣ４００は、ネットワーク構成キー４０５を不揮発性メモリから読み出し、ネットワーク構成キー６０と比較する（Ｓ０１２）。
比較結果は、実施の形態１と同様、例えばＰＬＣのＬＥＤや、パーソナルコンピュータのアプリケーションを使用し、システム構築者へ通知する。
比較結果が同一であれば、再構築したシステム構成と、動作確認時に構築したシステム構成は同じであり、システムを正しい構成で再構築したということを意味する。
比較結果が異なれば、再構築したシステム構成と、動作確認時に構築したシステム構成は異なり、システムを誤った構成で再構築したということを意味する。
【００４８】
以上のように、正しい構成のシステムの構築後、ネットワーク上のノードをケーブルから外し、再度、同じシステムを構築する場合、ネットワーク構成の間違いや断線等、システムを誤構築する可能性がある。
しかし、本実施の形態のように、システムが正しい構成で構築された時のネットワーク構成キーを、管理局の不揮発性メモリへ格納しておき、システムの再構築時に、再構築したシステムのネットワーク構成キーと、管理局の不揮発性メモリ上のネットワーク構成キーを比較すれば、システムが正しく再構築されたかの確認が可能となる。
【００４９】
実施の形態３．
本実施の形態では機器に設けられている複数ユニットにおいて実施の形態１に示した方法を適用する。
図１１は、本実施の形態に係る構成例を示す。
図１１では、機器の例としてＰＬＣ１０００を示す。
図１１に示すように、ＰＬＣ１０００には３つのユニットが装着されている。
ＰＬＣ上の各ユニットはバス１１００で接続されており、バス１１００を介してユニット間の通信が可能である。
本実施の形態では、ＰＬＣ１０００に接続されているユニットの内、任意の１つのユニットをマスタとし、その他のユニットをスレーブとする。マスタはＰＬＣへ接続されているユニット数、およびユニットが装着されている位置を検知でき、スレーブは検知できないとする。
本実施の形態では、ユニット７００をマスタ（管理装置）とし、ユニット８００及びユニット９００をスレーブ（機器）とする。
このように、図１１のバス１１００を図１のケーブル１００とみなし、図１１のユニット７００、８００、９００を図１のＰＬＣ４００、ＰＬＣ５００、パーソナルコンピュータ２００とみなすことができる。
そして、図１１のユニット７００をマスタとし、図１のＰＬＣ４００と同じ動作を行わせ、図１１のユニット８００及びユニット９００をスレーブとし、図１のＰＬＣ５００及びパーソナルコンピュータ２００と同じ動作を行わせることで、ＰＬＣ１０００内で、実施の形態１で説明したネットワークのように、ユニットの変動やユニットのリソースの変動を検出することができる。
【００５０】
なお、ＰＬＣ１０００上の各ユニットの用途は何でも良い。
例えば、ＦＡ機器を接続して制御するユニットでもよいし、ネットワークケーブルを接続して通信を行うユニットでも良い。
また、各ユニットには、ユニットを一意に識別できるシリアルナンバーが付与されている。
【００５１】
次に、図１２を用いて、マスタとして動作するユニット７００の構成を述べる。
ユニット７００はＣＰＵ７０２、ＲＡＭ７０１、不揮発性メモリ７１０、通信デバイス７１１を備える。
これらは、図３に示したＣＰＵ４０２、ＲＡＭ４０１、不揮発性メモリ４１０、通信デバイス４１１と原則として同じである。
不揮発性メモリ７１０には、ユニット７００を制御するＦ／Ｗ７０３、Ｆ／Ｗ７０３のバージョン番号７０７、ユニット７００のシリアルナンバー７０９、ノード情報変更フラグ７０６、ネットワーク構成キー７０５、ノード情報キー７０４が格納されている。
また、マスタとして動作するユニット７００のプログラム構成も図２２に示したものと同様である。
【００５２】
次に、図１３を用いて、スレーブとして動作するユニット８００の構成を述べる。
ユニット８００はＣＰＵ８０２、ＲＡＭ８０１、不揮発性メモリ８１０、通信デバイス７１１を備える。
これらは、図４に示したＣＰＵ４０２、ＲＡＭ４０１、不揮発性メモリ４１０、通信デバイス４１１と原則として同じである。
不揮発性メモリ８１０には、ユニット８００を制御するＦ／Ｗ８０３、Ｆ／Ｗ８０３のバージョン番号８０７、ＦＡ機器を制御するプログラム８０８、ユニット８００のシリアルナンバー８０９、ノード情報変更フラグ８０６、ノード情報キー８０４が格納されている。
また、スレーブとして動作するユニット８００のプログラム構成も図２３に示したものと同様である。
なお、図１３の例では、ユニット８００はＦＡ機器を接続し、制御するユニットである。このため、不揮発性メモリ８１０には、プログラム８０８が格納されている。
【００５３】
次に、図１４を用いて、スレーブとして動作するユニット９００の構成を述べる。
ユニット９００はＣＰＵ９０２、ＲＡＭ９０１、不揮発性メモリ９１０、通信デバイス９１１を備える。
これらは、図４に示したＣＰＵ４０２、ＲＡＭ４０１、不揮発性メモリ４１０、通信デバイス４１１と原則として同じである。
不揮発性メモリ９１０には、ユニット９００を制御するＦ／Ｗ９０３、Ｆ／Ｗ９０３のバージョン番号９０７、ユニット９００のシリアルナンバー９０９、ノード情報変更フラグ９０６、ノード情報キー９０４が格納されている。
また、スレーブとして動作するユニット８００のプログラム構成も図２３に示したものと同様である。
【００５４】
次に、図１５〜図２０を参照して本実施の形態に係る動作を説明する。
なお、図１５は、ユニット７００からノード情報キー取得要求５０を送信する際の概要を示す。
図１６は、ユニット８００及びユニット９００からノード情報キー８０４及びノード情報キー９０４を送信する際の概要を示す。
図１７は、ユニット７００におけるネットワーク構成キー６０の生成過程の概要を示す。
図１８は、ノード情報キー７０４、ノード情報キー８０４、ノード情報キー９０４、ネットワーク構成キー６０の具体例を示す。
図１９は、ユニット８００及びユニット９００のＦ／Ｗ起動時の動作例を示すフローチャートである。
図２０は、ユニット７００のＦ／Ｗ起動時の動作例を示すフローチャートである。
【００５５】
ＰＬＣ１０００の電源を投入すると、ユニット７００、ユニット８００及びユニット９００のノード情報キー生成部４０２３は、各々のノード情報変更フラグを参照し（Ｓ０１５、Ｓ０２０）、ノード情報変更フラグが立っている場合は、各ユニットのノード情報キーを算出し、不揮発性メモリにノード情報キーを格納する（Ｓ０１６、Ｓ０２１）。
また、各ユニットでノード情報キー生成部４０２３は、ノード情報変更フラグを下げる（Ｓ０１７、Ｓ０２２）。
ユニット７００、ユニット９００では、ノード情報キー生成部４０２３は、Ｆ／Ｗのバージョン番号、シリアルナンバーを元にノード情報キーを算出する。
一方、ユニット８００では、ノード情報キー生成部４０２３は、Ｆ／Ｗのバージョン番号、プログラム、シリアルナンバーを元にノード情報キーを算出する。
マスタであるユニット７００では、取得要求生成部４０２２がノード情報キー取得要求を生成し、通信部４０２１がスレーブであるユニット８００、ユニット９００へノード情報キー取得要求をバス１１００を介して送信する（Ｓ０２３）（図１５参照）。
【００５６】
ユニット８００、ユニット９００では、通信部４０２１が、ユニット７００からのノード情報キー取得要求を受信し（Ｓ０１８）、取得要求解析部４０２６が不揮発性メモリからノード情報キーを読み出し、通信部４０２１がユニット７００へノード情報キーを送信する（Ｓ０１９）（図１６参照）。
【００５７】
ユニット７００では、通信部４０２１が、ユニット８００、ユニット９００のノード情報キーを受信し（Ｓ０２４）、ネットワーク構成キー生成部４０２４が、ユニット８００、ユニット９００のノード情報キーとユニット７００のノード情報キーを結合し、結合したバイト列を元にネットワーク構成キー６０を算出する（Ｓ０２５）（図１７参照）。
【００５８】
ここで、ユニット７００におけるネットワーク構成キー６０の生成手順を述べる。
ユニット７００のネットワーク構成キー生成部４０２４は、ユニット７００のノード情報キー、ユニット８００のノード情報キー、ユニット９００のノード情報キーをある規則に従った順に並び変え、結合する。
まず、マスタであるユニット７００のノード情報キーを先頭のバイト列とする。
次に、ユニット（マスタ）を起点としてバスを反時計周りに隣接するノード（本実施の形態ではユニット９００）のノード情報キーをユニット７００のノード情報キーの末尾へ結合する。
次に、ユニット９００を起点としてバスを反時計周りに隣接するノード（本実施の形態ではユニット８００）のノード情報キーをユニット９００のノード情報キーの末尾へ結合する。
そして、ネットワーク構成キー生成部４０２４は、結合したバイト列のハッシュ値をネットワーク構成キー６０とする。
使用するハッシュ関数はＳＨＡ−２５６とする。
ハッシュ関数をｈ、ユニット７００のノード情報キーを０ｘ０００１、ユニット８００のノード情報キーを０ｘ０００２、ユニット９００のノード情報キーを０ｘ０００３とした場合、ネットワーク構成キー６０は、ｈ（０ｘ０００１  ０ｘ０００３  ０ｘ０００２）となる。
また、ユニット８００がマスタ、ユニット７００、ユニット９００がスレーブだった場合、ネットワーク構成キー６０はｈ（０ｘ０００２  ０ｘ０００１  ０ｘ０００３）となる。
また、ユニット９００がマスタ、ユニット７００、ユニット８００がスレーブだった場合、ネットワーク構成キー６０はｈ（０ｘ０００３  ０ｘ０００２  ０ｘ０００１）となる（図１８参照）。
本実施の形態では、ユニット（マスタ）を起点として反時計周りに各ユニットを辿り、ノード情報キーを結合したが、代わりに、ユニット（マスタ）を起点として時計周りに各ユニットを辿り、ノード情報キーを結合してもよい。
【００５９】
ネットワーク構成キー６０が算出されると、ユニット７００では、情報比較部４０２５が、不揮発性メモリ７１０へ保存されているネットワーク構成キー７０５をＲＡＭ７０１へ読み出す。
ネットワーク構成キー７０５は、ＰＬＣ１０００の前回起動時に算出したネットワーク構成キーであり、ＰＬＣ１０００の前回起動時のＰＬＣ１０００のシステム構成を示す。
情報比較部４０２５は、ネットワーク構成キー７０５とネットワーク構成キー６０を比較し（Ｓ０２６）、比較結果をシステム管理者へ通知する（Ｓ０２７）。
比較結果が同じである場合、ＰＬＣ１０００の前回起動時のＰＬＣ１０００のシステム構成と、現在のＰＬＣ１０００のシステム構成が同じということを意味する。
一方、比較結果が異なる場合、ＰＬＣ１０００の前回起動時のシステム構成と、現在のシステム構成が異なる（ＰＬＣ１０００内のユニットの組み合わせが異なる場合、各ユニットのリソース構成が異なる場合の少なくともいずれか）ということを意味する。
比較結果をシステム管理者へ通知する方法は何でも良い。
例えば、比較結果が同じであれば、ＰＬＣ１０００に設けられているＬＥＤを青色に点灯し、比較結果が異なれば、ＬＥＤを赤色に点灯するという方法が考えられる。
最後に、情報比較部４０２５は、算出されたネットワーク構成キー６０を不揮発性メモリ７１０にネットワーク構成キー７０５として保存する（Ｓ０２８）。
【００６０】
ここで、本実施の形態による主な効果を述べる。
システム管理者は、ＰＬＣが起動すると、前回起動時のＰＬＣのシステム構成と現在のＰＬＣのシステム構成が同じか異なるかを認識できる。
例えば、３つのいずれかのユニットのＦ／Ｗやプログラムの更新、ユニットの装着位置の変更、ＰＬＣへ装着するユニットの機種の変更、新たなユニットの装着、ユニットの取り外し、ユニットの故障等が起こった場合、前回起動時のＰＬＣのシステム構成と現在のＰＬＣのシステム構成が異なることをシステム管理者は認識できる。
システム管理者の知らない内に、システム管理者以外の人間がＰＬＣのシステム構成を変更したり、または悪意を持った人間がＰＬＣの不正動作を目的としてＰＬＣのシステム構成を変更した場合に、システム管理者は、ＰＬＣの起動時にＰＬＣのシステム構成に変更があったかどうかを認識できる。
【符号の説明】
【００６１】
２０  トークン、３０  ドライバ、５０  ノード情報キー取得要求、６０  ネットワーク構成キー、１００  ケーブル、２００  パーソナルコンピュータ、２０３  ハードディスク、３００  ＦＡ機器、４００  ＰＬＣ、４０１  ＲＡＭ、４０２  ＣＰＵ、４０３  Ｆ／Ｗ、４０４  ノード情報キー、４０５  ネットワーク構成キー、４０６  ノード情報変更フラグ、４０７  Ｆ／Ｗのバージョン番号、４０８  プログラム、４０９  シリアルナンバー、４１０  不揮発性メモリ、４１１  通信デバイス、５００  ＰＬＣ、５０３  Ｆ／Ｗ、５０４  ノード情報キー、５０６  ノード情報変更フラグ、５０７  Ｆ／Ｗのバージョン番号、５０８  プログラム、５０９  シリアルナンバー、６００  ボード、６０１  ＲＡＭ、６０２  ＣＰＵ、６０３  Ｆ／Ｗ、６０４  ノード情報キー、６０６  ノード情報変更フラグ、６０７  ドライバのバージョン番号、６０９  シリアルナンバー、６１０  不揮発性メモリ、６１１  通信デバイス、７００  ユニット（マスタ）、７０１  ＲＡＭ、７０２  ＣＰＵ、７０３  Ｆ／Ｗ、７０４  ノード情報キー、７０５  ネットワーク構成キー、７０６  ノード情報変更フラグ、７０７  Ｆ／Ｗのバージョン番号、７０９  シリアルナンバー、７１０  不揮発性メモリ、７１１  通信デバイス、８００  ユニット（スレーブ）、８０１  ＲＡＭ、８０２  ＣＰＵ、８０３  Ｆ／Ｗ、８０４  ノード情報キー、８０６  ノード情報変更フラグ、８０７  Ｆ／Ｗのバージョン番号、８０８  プログラム、８０９  シリアルナンバー、８１０  不揮発性メモリ、８１１  通信デバイス、９００  ユニット（スレーブ）、９０１  ＲＡＭ、９０２  ＣＰＵ、９０３  Ｆ／Ｗ、９０４  ノード情報キー、９０６  ノード情報変更フラグ、９０７  Ｆ／Ｗのバージョン番号、９０９  シリアルナンバー、９１０  不揮発性メモリ、９１１  通信デバイス、１０００  ＰＬＣ、１１００  バス、４０２１  通信部、４０２２  取得要求生成部、４０２３  ノード情報キー生成部、４０２４  ネットワーク構成キー生成部、４０２５  情報比較部、４０２６  取得要求解析部。
【図１】
2011117977.tif 000003
【図２】
2011117977.tif 000004
【図３】
2011117977.tif 000005
【図４】
2011117977.tif 000006
【図５】
2011117977.tif 000007
【図６】
2011117977.tif 000008
【図７】
2011117977.tif 000009
【図８】
2011117977.tif 000010
【図９】
2011117977.tif 000011
【図１０】
2011117977.tif 000012
【図１１】
2011117977.tif 000013
【図１２】
2011117977.tif 000014
【図１３】
2011117977.tif 000015
【図１４】
2011117977.tif 000016
【図１５】
2011117977.tif 000017
【図１６】
2011117977.tif 000018
【図１７】
2011117977.tif 000019
【図１８】
2011117977.tif 000020
【図１９】
2011117977.tif 000021
【図２０】
2011117977.tif 000022
【図２１】
2011117977.tif 000023
【図２２】
2011117977.tif 000024
【図２３】
2011117977.tif 000025
【国際調査報告】
2011117977.tif 000026
2011117977.tif 000027