(57)【要約】      （修正有）【課題】ネットワークを介して他の制御装置に接続された他の機器を簡単に制御する機器制御装置、機器制御システム、機器制御方法及び機器制御プログラムを提供する。【解決手段】制御装置Ａは、ネットワーク接続された他の制御装置Ｂに接続され、制御装置Ｂが制御する他の機器Ｙの制御情報を取得する。制御装置Ａは、他の制御装置Ｂに接続された他の機器Ｙの制御時には、制御装置Ａ内のインタフェース同様の形式を有し、制御装置Ａ以外の識別子を付与した所定のコマンドを実行し、他の制御装置Ｂからの応答を、実行したコマンドに対する結果として用いる。【選択図】図１
2019186802.tif 000002
【特許請求の範囲】
【請求項１】
制御装置に接続された機器、またはネットワークを介して他の制御装置に接続された他の機器を制御するためのオブジェクトを生成するオブジェクト生成部と、
前記ネットワークの情報に含まれる前記機器または他の前記機器の通信パラメータを参照して、前記オブジェクトにアクセスする情報を得る通信処理部と、
前記オブジェクトを所定のパケットに変換し、通信方式に対応するポートを選択して前記パケットを出力するパケット処理部と、
前記パケットを該当する前記機器、または他の前記機器が接続された他の前記制御装置に送信する通信部と、
を有することを特徴とする機器制御装置。
【請求項２】
前記オブジェクト生成部は、制御対象の前記機器または他の前記機器を制御するための名前と、関数名と引数情報からなるオブジェクトを生成し、
前記通信処理部は、予め設定した前記ネットワークの情報に含まれる前記機器または他の前記機器の通信方式、および通信パラメータを参照して、前記オブジェクトにアクセスする情報を取得し、
前記パケット処理部は、前記オブジェクト名、関数名、および引数情報を所定のパケットに変換し、前記通信方式に対応するポートを選択して、前記パケットを前記通信部に出力することを特徴とする請求項１に記載の機器制御装置。
【請求項３】
前記通信部は、自身の制御装置が前記ネットワークに参加時、自身の前記オブジェクト名を前記ネットワークに配信することを特徴とする請求項２に記載の機器制御装置。
【請求項４】
前記通信部は、自身の制御装置が所望する前記オブジェクトが生じたとき、前記オブジェクト名を前記ネットワークを介して他の前記制御装置に問い合わせ、前記オブジェクト名を有する他の前記制御装置から前記ネットワークの情報を取得することを特徴とする請求項２または３に記載の機器制御装置。
【請求項５】
前記通信部は、自身の制御装置が新たなオブジェクトを追加したとき、当該オブジェクト名を前記ネットワークに配信することを特徴とする請求項２〜４のいずれか一つに記載の機器制御装置。
【請求項６】
制御装置に接続された機器、または他の制御装置に接続された他の機器を制御する機器制御システムであって、
前記制御装置は、
制御対象の前記機器または他の前記機器を制御するための名前と、関数名と引数情報からなるオブジェクトを生成するオブジェクト生成部と、
予め設定されたネットワークの情報に含まれる前記機器または他の前記機器の通信方式、および通信パラメータを参照して、前記オブジェクトにアクセスする情報を得る通信処理部と、
前記オブジェクト名、関数名、および引数情報を所定のパケットに変換し、前記通信方式に対応するポートを選択して、前記パケットを引き渡すパケット処理部と、
前記パケットを該当する前記機器、または他の前記機器が接続された他の前記制御装置に送信する通信部と、
を有することを特徴とする機器制御システム。
【請求項７】
制御装置が他の制御装置に通信接続された他の機器を制御する機器制御システムであって、
前記制御装置は、
他の前記制御装置に接続され、当該他の制御装置が制御する他の前記機器の制御情報を取得する取得部と、
他の前記制御装置に接続された他の前記機器に対する所定の制御時には、前記制御装置内のインタフェース同様の形式を有し、前記制御装置以外の識別子を付与した所定のコマンドを実行し、
前記制御情報を参照して前記所定のコマンドに対応する要求を他の前記制御装置に送信し、
他の前記制御装置からの応答を、前記実行したコマンドに対する結果として用いる実行部と、
前記要求を送信し、前記要求の返答を受信する通信部と、
を有することを特徴とする機器制御システム。
【請求項８】
前記制御装置は、他の前記制御装置とネットワーク接続されたことを特徴とする請求項６または７に記載の機器制御システム。
【請求項９】
前記制御装置と他の前記制御装置は、同一装置内のＣＰＵ間接続であることを特徴とする請求項６または７に記載の機器制御システム。
【請求項１０】
制御装置に接続された機器、またはネットワークを介して他の制御装置に接続された他の機器を制御するための名前と、関数名と引数情報からなるオブジェクトを生成し、
前記ネットワークの情報に含まれる前記機器または他の前記機器の通信方式、および通信パラメータを参照して、前記オブジェクトにアクセスする情報を得て、
前記オブジェクト名、関数名、および引数情報を所定のパケットに変換し、前記通信方式に対応するポートを選択して、前記パケットを引き渡し、
前記パケットを該当する前記機器、または他の前記機器が接続された他の前記制御装置に送信する、
処理をコンピュータが実行することを特徴とする機器制御方法。
【請求項１１】
他の前記制御装置は、
受信した前記パケットから前記オブジェクト名、関数名、引数情報を復元し、制御処理を実行し、
実行結果の戻り値を所定のパケットに変換して、前記制御装置に送信し、
前記制御装置は、
他の前記制御装置が送信した前記戻り値を受信する、
ことを特徴とする請求項１０に記載の機器制御方法。
【請求項１２】
前記制御装置と、他の前記制御装置との間にサーバを設け、
前記制御装置、または他の前記制御装置は、オブジェクトのネットワーク上の位置情報を前記サーバに登録し、
前記オブジェクトにアクセスする前記制御装置、または他の前記制御装置は、アクセス先の制御装置のネットワーク上の位置情報を前記サーバに問い合わせ、
前記問い合わせにより得たネットワーク上の位置情報に基づき、所望する前記制御装置のオブジェクトに対し、前記ネットワーク上の位置情報を用いてアクセスする、
ことを特徴とする請求項１０または１１に記載の機器制御方法。
【請求項１３】
制御装置が他の制御装置に接続された他の機器を制御する機器制御方法であって、
前記制御装置のコンピュータは、
他の前記制御装置に接続され、当該他の制御装置が制御する他の前記機器の制御情報を取得する処理、
他の前記制御装置に接続された他の前記機器に対する所定の制御時には、前記制御装置内のインタフェース同様の形式を有し、前記制御装置以外の識別子を付与した所定のコマンドを実行するとともに、
前記制御情報を参照して前記所定のコマンドに対応する要求を他の前記制御装置に送信する処理、
他の前記制御装置からの応答を、前記実行したコマンドに対する結果として用いる処理、
を実行することを特徴とする機器制御方法。
【請求項１４】
前記制御装置に接続された前記機器の制御は、前記制御装置の接続ポートを指定し、
他の前記制御装置に接続された他の前記機器の制御は、当該制御に対応する所定のコマンドのポートを前記制御装置以外として設定する、
ことを特徴とする請求項１３に記載の機器制御方法。
【請求項１５】
前記制御情報には、他の前記機器の機能と、機能別の識別子を含み、
前記制御装置は、前記制御情報を参照し、所望する機能の制御に対応した識別子の情報を他の前記制御装置に送信する、
ことを特徴とする請求項１３または１４に記載の機器制御方法。
【請求項１６】
前記制御装置は、他の前記機器の制御情報を予め取得し、格納保持しておくことを特徴とする請求項１３〜１５のいずれか一つに記載の機器制御方法。
【請求項１７】
前記制御装置は、他の前記機器の制御情報を他の前記制御装置から取得することを特徴とする請求項１３〜１６のいずれか一つに記載の機器制御方法。
【請求項１８】
他の前記機器の制御情報を他の前記制御装置が接続されたサーバが収集し、
前記制御装置は、前記サーバから他の前記機器の制御情報を取得することを特徴とする請求項１３〜１７のいずれか一つに記載の機器制御方法。
【請求項１９】
他の前記制御装置は、前記制御装置からの要求時に、他の前記機器の制御情報に基づき、他の前記機器が接続された接続ポートを指定し、他の前記機器を制御することを特徴とする請求項１３〜１８のいずれか一つに記載の機器制御方法。
【請求項２０】
制御装置に接続された機器、またはネットワークを介して他の制御装置に接続された他の機器を制御するための名前と、関数名と引数情報からなるオブジェクトを生成する処理、
予め設定されたネットワークの情報に含まれる前記機器または他の前記機器の通信方式、および通信パラメータを参照して、前記オブジェクトにアクセスする情報を得る処理、
前記オブジェクト名、関数名、および引数情報を所定のパケットに変換し、前記通信方式に対応するポートを選択して、前記パケットを引き渡す処理、
前記パケットを該当する前記制御装置に接続された前記機器、または他の前記機器が接続された他の前記制御装置に送信する処理、
をコンピュータに実行させることを特徴とする機器制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、ネットワーク等に接続された各機器の制御を行う機器制御装置、機器制御システム、機器制御方法および機器制御プログラムに関する。
【背景技術】
【０００２】
従来、ネットワーク等を介して接続された機器が相互に制御可能な技術が提案されている（例えば、下記特許文献１参照。）。特許文献１は、ＥＣＨＯＮＥＴ（Ｅｎｅｒｇｙ  Ｃｏｎｓｅｒｖａｔｉｏｎ  ａｎｄ  ＨＯｍｅｃａｒｅ  ＮＥＴｗｏｒｋ）規格にしたがい、ネットワークを介する機器を所定のプロトコルを用いて制御する技術である。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００９−２２５４８１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来の技術では、ある制御装置に接続された機器の制御と、ネットワーク上の他の制御装置に接続された他の機器の制御は制御方法が異なっている。制御装置は、機器に直接アクセスしてプログラミング可能である。しかし、制御装置がネットワークを介して他の制御装置に接続された他の機器を制御するためには、ネットワークの通信プログラムを追加しなければならない。例えば、上記特許文献１の技術は専用プロトコルを用いるため、ネットワーク間通信に専用のＩ／Ｆが必要となる。
【０００５】
このように、制御装置は直接接続された機器に対する制御を行うクローズドシステムである。同様に、他の制御装置も直接接続された他の機器に対する制御を行うクローズドシステムである。このため、これらクローズドシステム間を跨いでの機器制御はネットワークの通信が間に介在するため、通信処理のプログラムが別途必要となる。したがって、従来、制御装置がネットワークを介して他の機器を制御するためには、プログラミングのステップ数が大幅に増えるという問題を生じる。
【０００６】
また、制御対象を、制御装置に接続されている機器からネットワーク上の他の機器に変更する場合、プログラムの変更工数が増大するという問題が生じた。
【０００７】
例えば、制御装置Ａ，ＢがそれぞれＣＰＵを備えた制御装置であり、互いにネットワーク接続されているとする。制御装置Ａは、この制御装置Ａに直接接続された機器Ｘ（家電機器１）を制御する。制御装置Ｂは、この制御装置Ｂに直接接続された機器Ｙ（家電機器２）を制御する。そして、制御装置Ａによって、機器Ｙ（家電機器２）を制御するとする。この場合、機器Ｙ（家電機器２）は、制御装置Ｂに固有のプログラムによって制御されているため、制御装置Ａでは、機器Ｙ（家電機器２）を制御するために、ネットワークの通信プログラムを追加する必要が生じた。さらに、制御装置Ａでは、制御装置Ｂのプログラムにしたがったプログラム調整を行わなければならず、手間がかかった。
【０００８】
本発明は、上記課題に鑑み、ネットワークを介して他の制御装置に接続された他の機器を簡単に制御できることを目的とする。
【課題を解決するための手段】
【０００９】
上記目的を達成するため、本発明の機器制御装置は、制御装置に接続された機器、またはネットワークを介して他の制御装置に接続された他の機器を制御するためのオブジェクトを生成するオブジェクト生成部と、前記ネットワークの情報に含まれる前記機器または他の前記機器の通信パラメータを参照して、前記オブジェクトにアクセスする情報を得る通信処理部と、前記オブジェクトを所定のパケットに変換し、通信方式に対応するポートを選択して前記パケットを出力するパケット処理部と、前記パケットを該当する前記機器、または他の前記機器が接続された他の前記制御装置に送信する通信部と、を有することを特徴とする。
【００１０】
また、前記オブジェクト生成部は、制御対象の前記機器または他の前記機器を制御するための名前と、関数名と引数情報からなるオブジェクトを生成し、前記通信処理部は、予め設定した前記ネットワークの情報に含まれる前記機器または他の前記機器の通信方式、および通信パラメータを参照して、前記オブジェクトにアクセスする情報を取得し、前記パケット処理部は、前記オブジェクト名、関数名、および引数情報を所定のパケットに変換し、前記通信方式に対応するポートを選択して、前記パケットを前記通信部に出力することを特徴とする。
【００１１】
また、前記通信部は、自身の制御装置が前記ネットワークに参加時、自身の前記オブジェクト名を前記ネットワークに配信することを特徴とする。
【００１２】
また、前記通信部は、自身の制御装置が所望する前記オブジェクトが生じたとき、前記オブジェクト名を前記ネットワークを介して他の前記制御装置に問い合わせ、前記オブジェクト名を有する他の前記制御装置から前記ネットワークの情報を取得することを特徴とする。
【００１３】
また、前記通信部は、自身の制御装置が新たなオブジェクトを追加したとき、当該オブジェクト名を前記ネットワークに配信することを特徴とする。
【００１４】
また、本発明の機器制御システムは、制御装置に接続された機器、または他の制御装置に接続された他の機器を制御する機器制御システムであって、前記制御装置は、制御対象の前記機器または他の前記機器を制御するための名前と、関数名と引数情報からなるオブジェクトを生成するオブジェクト生成部と、予め設定されたネットワークの情報に含まれる前記機器または他の前記機器の通信方式、および通信パラメータを参照して、前記オブジェクトにアクセスする情報を得る通信処理部と、前記オブジェクト名、関数名、および引数情報を所定のパケットに変換し、前記通信方式に対応するポートを選択して、前記パケットを引き渡すパケット処理部と、前記パケットを該当する前記機器、または他の前記機器が接続された他の前記制御装置に送信する通信部と、を有することを特徴とする。
【００１５】
また、本発明の機器制御システムは、制御装置が他の制御装置に通信接続された他の機器を制御する機器制御システムであって、前記制御装置は、他の前記制御装置に接続され、当該他の制御装置が制御する他の前記機器の制御情報を取得する取得部と、他の前記制御装置に接続された他の前記機器に対する所定の制御時には、前記制御装置内のインタフェース同様の形式を有し、前記制御装置以外の識別子を付与した所定のコマンドを実行し、前記制御情報を参照して前記所定のコマンドに対応する要求を他の前記制御装置に送信し、他の前記制御装置からの応答を、前記実行したコマンドに対する結果として用いる実行部と、前記要求を送信し、前記要求の返答を受信する通信部と、を有することを特徴とする。
【００１６】
また、前記制御装置は、他の前記制御装置とネットワーク接続されたことを特徴とする。
【００１７】
また、前記制御装置と他の前記制御装置は、同一装置内のＣＰＵ間接続であることを特徴とする。
【００１８】
また、本発明の機器制御方法は、制御装置に接続された機器、またはネットワークを介して他の制御装置に接続された他の機器を制御するための名前と、関数名と引数情報からなるオブジェクトを生成し、前記ネットワークの情報に含まれる前記機器または他の前記機器の通信方式、および通信パラメータを参照して、前記オブジェクトにアクセスする情報を得て、前記オブジェクト名、関数名、および引数情報を所定のパケットに変換し、前記通信方式に対応するポートを選択して、前記パケットを引き渡し、前記パケットを該当する前記機器、または他の前記機器が接続された他の前記制御装置に送信する、処理をコンピュータが実行することを特徴とする。
【００１９】
また、他の前記制御装置は、受信した前記パケットから前記オブジェクト名、関数名、引数情報を復元し、制御処理を実行し、実行結果の戻り値を所定のパケットに変換して、前記制御装置に送信し、前記制御装置は、他の前記制御装置が送信した前記戻り値を受信する、ことを特徴とする。
【００２０】
また、前記制御装置と、他の前記制御装置との間にサーバを設け、前記制御装置、または他の前記制御装置は、オブジェクトのネットワーク上の位置情報を前記サーバに登録し、前記オブジェクトにアクセスする前記制御装置、または他の前記制御装置は、アクセス先の制御装置のネットワーク上の位置情報を前記サーバに問い合わせ、前記問い合わせにより得たネットワーク上の位置情報に基づき、所望する前記制御装置のオブジェクトに対し、前記ネットワーク上の位置情報を用いてアクセスする、ことを特徴とする。
【００２１】
また、本発明の機器制御方法は、制御装置が他の制御装置に接続された他の機器を制御する機器制御方法であって、前記制御装置のコンピュータは、他の前記制御装置に接続され、当該他の制御装置が制御する他の前記機器の制御情報を取得する処理、他の前記制御装置に接続された他の前記機器に対する所定の制御時には、前記制御装置内のインタフェース同様の形式を有し、前記制御装置以外の識別子を付与した所定のコマンドを実行するとともに、前記制御情報を参照して前記所定のコマンドに対応する要求を他の前記制御装置に送信する処理、他の前記制御装置からの応答を、前記実行したコマンドに対する結果として用いる処理、を実行することを特徴とする。
【００２２】
また、前記制御装置に接続された前記機器の制御は、前記制御装置の接続ポートを指定し、他の前記制御装置に接続された他の前記機器の制御は、当該制御に対応する所定のコマンドのポートを前記制御装置以外として設定する、ことを特徴とする。
【００２３】
また、前記制御情報には、他の前記機器の機能と、機能別の識別子を含み、前記制御装置は、前記制御情報を参照し、所望する機能の制御に対応した識別子の情報を他の前記制御装置に送信する、ことを特徴とする。
【００２４】
また、前記制御装置は、他の前記機器の制御情報を予め取得し、格納保持しておくことを特徴とする。
【００２５】
また、前記制御装置は、他の前記機器の制御情報を他の前記制御装置から取得することを特徴とする。
【００２６】
また、他の前記機器の制御情報を他の前記制御装置が接続されたサーバが収集し、前記制御装置は、前記サーバから他の前記機器の制御情報を取得することを特徴とする。
【００２７】
また、他の前記制御装置は、前記制御装置からの要求時に、他の前記機器の制御情報に基づき、他の前記機器が接続された接続ポートを指定し、他の前記機器を制御することを特徴とする。
【００２８】
また、本発明の機器制御プログラムは、制御装置に接続された機器、または他の制御装置に接続された他の機器を制御するための名前と、関数名と引数情報からなるオブジェクトを生成する処理、予め設定されたネットワークの情報に含まれる前記機器または他の前記機器の通信方式、および通信パラメータを参照して、前記オブジェクトにアクセスする情報を得る処理、前記オブジェクト名、関数名、および引数情報を所定のパケットに変換し、前記通信方式に対応するポートを選択して、前記パケットを引き渡す処理、前記パケットを該当する前記制御装置に接続された前記機器、または他の前記機器が接続された他の前記制御装置に送信する処理、をコンピュータに実行させることを特徴とする。
【００２９】
上記構成によれば、制御装置は、他の制御装置に接続された他の機器を直接制御できる。他の機器は、他の制御装置に固有のプログラムによって制御されているが、制御装置は、ネットワークの通信プログラム等を追加せずとも他の制御装置に接続された他の機器を制御できる。
【発明の効果】
【００３０】
本発明によれば、制御装置は、ネットワークを介して他の制御装置に接続された他の機器を簡単に制御できるという効果を奏する。
【図面の簡単な説明】
【００３１】
【図１】図１は、制御装置から他の制御装置に接続された機器へのアクセスの概要を説明する図である。
【図２Ａ】図２Ａは、制御装置のハードウェア構成例を示すブロック図である。
【図２Ｂ】図２Ｂは、制御装置の機能ブロック図である。
【図３】図３は、機器制御システムの全体構成を示す図である。
【図４】図４は、制御装置の制御プログラム例を示す図である。
【図５】図５は、制御装置が他の制御装置の機器にアクセスするための具体例を説明する図である。
【図６】図６は、組み込み機器におけるプログラム作成の具体例を示す図である。
【図７】図７は、異なる制御装置に接続された機器へのアクセスの具体例を示す図である。
【図８】図８は、他の制御装置のオブジェクト読み出しを説明する図である。
【図９】図９は、異なるＣＰＵが共有メモリによってデータを送受信する構成例を示す図である。
【図１０】図１０は、アプリケーションの公開インタフェースの呼び出しを説明する図である。（その１）
【図１１】図１１は、リモート呼び出し可能な公開インタフェースの定義例を示す図表である。
【図１２】図１２は、アプリケーションの公開インタフェースの呼び出しを説明する図である。（その２）
【図１３】図１３は、制御装置間のＮＡＴ越えの構成例を示す図である。
【図１４】図１４は、新規参加の制御装置による他の制御装置への通知例を示す図である。
【図１５】図１５は、制御装置から他の制御装置への問い合わせ例を示す図である。
【図１６】図１６は、制御装置で新たにサービス追加を行った際の通知例を示す図である。
【図１７】図１７は、従来のネットワーク接続された他の装置の制御処理プログラム例を示す図である。
【発明を実施するための形態】
【００３２】
（実施の形態）
以下に添付図面を参照して、この発明にかかる機器制御装置、機器制御システム、機器制御方法および機器制御プログラムの好適な実施の形態を詳細に説明する。この発明の機器制御装置は、以下に説明する制御装置Ａ，Ｂそれぞれに相当する。
【００３３】
（他の制御装置に接続された他の機器へのアクセスの概要）
図１は、制御装置から他の制御装置に接続された機器へのアクセスの概要を説明する図である。制御装置Ａには機器Ｘが接続され、制御装置Ｂには機器Ｙが接続されており、制御装置Ａがネットワークを介して機器Ｙへアクセスする例を説明する。
【００３４】
制御装置Ａは、ＣＰＵがアプリケーション等のプログラムＰ１を実行し、このプログラムＰ１は、制御装置Ｂに接続された機器Ｙの情報の取得にかかる処理（図示の例ではＲｅａｄ関数をｃａｌｌ）を行い（ステップＳ１０１）、Ｒｅａｄコマンドを発行する（ステップＳ１０２）。
【００３５】
次に、制御装置ＡのプログラムＰ１の下位層は、機器Ｙに対するコマンドを解釈し、機器Ｙの制御情報が示された処理テーブルＴを参照し、機器Ｙの情報を取得するコマンドを発行する（ステップＳ１０３）。処理テーブルＴは、機器Ｙが接続された制御装置Ｂに予め用意されるものである。
【００３６】
ステップＳ１０３では、制御装置Ａは、処理テーブルＴを制御装置Ｂ等から取得したものを参照する。また、制御装置Ａは、ステップＳ１０３により発行されたコマンドを、汎用の通信Ｉ／Ｆを介して制御装置Ｂに送信する。
【００３７】
ここで、制御装置Ａは、機器Ｙを制御するコマンドそのものを送信するのではなく、処理テーブルＴの参照により、コマンドを解釈してこのコマンドに対応する制御の要求を送信する。制御装置Ｂは、処理テーブルＴを有しており、処理テーブルＴの参照により、制御装置Ａから送信された要求に対応する制御を行うことができる。
【００３８】
制御装置Ｂでは、制御装置ＡからのＲｅａｄコマンドを受け取り、Ｒｅａｄコマンドに対応して、機器Ｙから情報を取得し（ステップＳ１０４）、制御装置Ａに対して情報を送付する（ステップＳ１０５）。
【００３９】
図２Ａは、制御装置のハードウェア構成例を示すブロック図である。図２において、制御装置Ａは、制御部（ＣＰＵ）２０１と、Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ（ＲＯＭ）２０２と、Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ（ＲＡＭ）２０３と、半導体メモリやディスクドライブ等の補助記憶部２０４と、通信インタフェース（Ｉ／Ｆ）２０５と、を含む。これらＣＰＵ２０１〜通信インタフェース２０５は、バス２０６によってそれぞれ接続されている。
【００４０】
また、この制御装置Ａには、バス２０６を介して被制御装置である機器Ｘが接続される。制御装置Ａは、通信Ｉ／Ｆ２０５あるいは入出力Ｉ／Ｆ２１０を介して制御装置Ａに接続されてもよい。
【００４１】
入出力Ｉ／Ｆ２１０には、ディスプレイ、キーボード、マウス、スキャナ、プリンタ、ディスプレイ等を接続することができる。
【００４２】
ＣＰＵ２０１は、制御装置Ａの全体の制御を司る演算制御装置である。ＲＯＭ２０２は、制御装置Ａのプログラム等を記憶する不揮発性メモリである。ＲＡＭ２０３は、ＣＰＵ２０１によるプログラムの演算処理実行時のワークエリアとして使用される揮発性メモリである。
【００４３】
通信Ｉ／Ｆ２０５は、ネットワークＮＷと内部のインタフェースを司り、制御装置Ｂとの間のデータの入出力を制御する。具体的に、通信Ｉ／Ｆ２０５は、通信回線を通じてネットワークＮＷとなるＬｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ（ＬＡＮ）、Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ（ＷＡＮ）、インターネットなどに接続され、ネットワークＮＷを介して制御装置Ｂに接続される。通信Ｉ／Ｆ２０５には、例えば、ルータ、モデム、ＬＡＮアダプタなどを採用することができる。
【００４４】
図２Ａに示したＣＰＵ２０１は、ＲＯＭ２０２に格納されたプログラムＰ１を実行し、この際ＲＡＭ２０３を作業領域として用いることにより、図１に示した処理を行うことができる。
【００４５】
制御装置Ｂについても、制御装置Ａ同様に図２Ａに記載のハードウェアにより構成することができる。この際、図２Ａに示したＲＡＭ２０３（あるいは補助記憶部２０４）は、図１に示した処理テーブルＴを保持する。
【００４６】
図２Ｂは、実施の形態にかかる制御装置の機能ブロック図である。制御装置Ａは、オブジェクト生成部２１０、通信処理部２１１、パケット処理部２１２、通信部２１３を含む。制御装置Ｂも制御装置Ａと同様の機能を有する。
【００４７】
オブジェクト生成部２１０は、制御装置Ａに接続された機器Ｘ、またはネットワークを介して他の制御装置Ｂに接続された他の機器Ｙを制御するためのオブジェクトを生成する。例えば、オブジェクト生成部２１０は、制御対象の機器Ｘまたは他の機器Ｙを制御するための名前と、関数名と引数情報からなるオブジェクトを生成する。
【００４８】
通信処理部２１１は、ネットワークＮＷの情報に含まれる機器Ｘまたは他の機器Ｙの通信パラメータを参照して、生成されたオブジェクトにアクセスする情報を得る。例えば、通信処理部２１１は、予め設定したネットワークＮＷの情報に含まれる機器Ｘまたは他の機器Ｙの通信方式、および通信パラメータを参照して、オブジェクトにアクセスする情報を取得する。
【００４９】
パケット処理部２１２は、生成されたオブジェクトを所定のパケットに変換し、通信方式に対応するポートを選択してパケットを出力する。例えば、パケット処理部２１２は、オブジェクト名、関数名、および引数情報を所定のパケットに変換し、通信方式に対応するポートを選択して、パケットを通信部２１３に出力する。
【００５０】
通信部２１３は、パケットを該当する機器Ｘ、または他の機器Ｙが接続された他の制御装置Ｂに送信する。また、通信部２１３は、自身の制御装置ＡがネットワークＮＷに参加時、自身のオブジェクト名をネットワークＮＷに配信する。また、通信部２１３は、自身の制御装置Ａが所望するオブジェクトが生じたとき、オブジェクト名をネットワークＮＷに問い合わせ、オブジェクト名を有する他の制御装置ＢからネットワークＮＷの情報を取得する。また、通信部２１３は、自身の制御装置Ａが新たなオブジェクトを追加したとき、当該オブジェクト名をネットワークＮＷに配信する。
【００５１】
図３は、機器制御システムの全体構成を示す図である。機器制御システム３００は、制御装置Ａと制御装置ＢとがネットワークＮＷを介して接続されている。
【００５２】
制御装置Ａには機器Ｘが接続され、制御装置Ａは機器Ｘを制御する。制御装置Ｂには、機器Ｙが接続され、制御装置Ｂは機器Ｙを制御する。
【００５３】
制御装置Ａは、ネットワークＮＷを介して制御装置Ｂを複数接続することができる。また、制御装置Ｂには、異なる機能等の機器Ｙを複数接続することができる。これら制御装置Ｂと機器Ｙは、固有のＩＤにより識別できる。
【００５４】
制御装置Ａは、ネットワークＮＷを介していずれかの制御装置Ｂに接続された機器Ｙを直接制御する。制御装置Ａ、および制御装置Ｂは、ネットワークＮＷに接続可能な汎用の通信Ｉ／Ｆと通信プログラムを備えている。
【００５５】
図４は、制御装置の制御プログラム例を示す図である。図４の（ａ）は、制御装置Ａに接続されている機器Ｘの制御プログラム例である。また、図４の（ｂ）は、制御装置Ｂに接続されている機器Ｙの制御プログラム例である。
【００５６】
図４の（ａ），（ｂ）のプログラムＰ１が示す制御内容は同じものとなる。このように、制御装置Ａは、被制御対象である機器Ｘ、機器Ｙが自身（制御装置Ａ）に接続されている／いないにかかわらず、プログラム内容は同じとなる。
【００５７】
したがって、プログラマは、制御装置ＡのプログラムＰ１を作成する際に、機器Ｘ、および機器Ｙについて、制御装置Ａと制御装置Ｂ間の通信にかかる処理を意識することなく、プログラムＰ１を作成することができるようになる。
【００５８】
また、制御装置Ａ、制御装置Ｂに接続される機器Ｘ、機器Ｙの故障や機能変更等に応じてハードウェアの変更が生じた場合、制御装置Ｂの処理テーブルＴを変更するだけで対応できる。この際、図４に示したプログラムＰ１（アプリケーション層のソフトウェア）の変更は不要にできる。
【００５９】
図５は、制御装置が他の制御装置の機器にアクセスするための具体例を説明する図である。この例では、機器Ｙが接続された制御装置Ｂは、起動時にプログラムＰ２が上記の処理テーブルＴとして関数呼び出しテーブルＴ２を作成する。なお、関数呼び出しテーブルＴ２は、プログラムＰ２の起動時に限らず、任意のタイミングで作成してもよく、手作業で作成したものを外部から入力する構成としてもよい。
【００６０】
このプログラムＰ２には、起動時に関数呼び出しテーブルＴ２を作成する処理と、機器Ｙの情報を取得する処理（ｒｅａｄＰｏｒｔ）と、読み出した情報に対して所定の関数演算等の処理と、が記述（設定）されている。
【００６１】
関数呼び出しテーブルＴ２は、機器ＹのＩＤ（ＩＤ１）と、この機器Ｙが接続された制御装置Ｂのポートのアドレスからなる。この例では、ＩＤ１には、機器Ｙから情報を読み出すためのｒｅａｄＰｏｒｔのアドレスが設定されている。このほか、関数呼び出しテーブルＴ２は、図１の処理テーブルＴに示したように、ＩＤ別に書き込み（Ｗｒｉｔｅ）、起動（Ｓｔａｒｔ）、停止（Ｓｔｏｐ）等の制御機能をそれぞれ設定しておくことができる。
【００６２】
関数呼び出しテーブルＴ２の設定は、図５に示したように「ｒｅａｄＰｏｒｔ」のような文字列に限らず、ポートを読む旨を示す「１００１」のような数値列としてもよい。
【００６３】
通信処理タスク５０３は、ネットワークＮＷに対する制御装置Ａとの間の通信処理（受信および送信）を実行し、制御装置Ａから機器Ｙに対する要求時には、該当するＩＤを用いた関数呼び出しテーブルＴ２を検索し、要求に対応したプログラムＰ２の関数演算を実行する。
【００６４】
以下、実施の形態にかかる制御装置Ａから機器Ｙへのアクセスを行うための手順を順に説明する。はじめに、制御装置ＢのプログラムＰ２が起動すると、制御装置Ｂは、関数呼び出しテーブルＴ２を作成する（ステップＳ５０１）。
【００６５】
この際、制御装置ＢのプログラムＰ２は、制御装置Ｂに接続されている機器Ｙの接続ポートを検出し、情報を読み出す機能のＩＤにｒｅａｄＰｏｒｔのアドレスを関連付けた設定を関数呼び出しテーブルＴ２に作成する。同様に、制御装置Ｂは、制御装置Ｂが実行可能な制御（関数演算等）の機能について、所定のＩＤ（図示の例ではＩＤ２）を関数呼び出しテーブルＴ２に設定する。
【００６６】
そして、制御装置Ａは、制御装置Ｂが作成した関数呼び出しテーブルＴ２を任意のタイミングで取得する。制御装置Ａによる、関数呼び出しテーブルＴ２の取得タイミングは、機器Ｙの機能、およびこの機器Ｙが接続されている制御装置Ｂの所在等を把握している場合には、制御装置Ａが直接、制御装置Ｂにアクセスして取得する。
【００６７】
また、制御装置ＢがネットワークＮＷ上に関数呼び出しテーブルＴ２を公開している場合がある。この場合、この公開された関数呼び出しテーブルＴ２を参照した制御装置Ａのうち、機器Ｙの制御を所望する（情報を取得要求する）制御装置Ａが、制御装置Ｂにアクセスして取得する構成とすることもできる。
【００６８】
この後、制御装置Ａが制御装置Ｂに対して、機器Ｙの情報を取得する制御を行ったとする（ステップＳ５０２）。例えば、制御装置ＡのプログラムＰ１が機器Ｙの情報の取得にかかる処理（ＯｂｊＹ．ｒｅａｄＤａｔａ（））を実行する。
【００６９】
この場合、制御装置ＡのプログラムＰ１は、機器Ｙに対するｒｅａｄコマンド（ｒｅａｄＤａｔａ（）を発行する（ステップＳ５０３）。そして、制御装置ＡのプログラムＰ１の下位層は、機器Ｙに対するコマンドを解釈し、制御装置Ｂから取得しておいた関数呼び出しテーブルＴ２を参照し、機器Ｙの情報の取得に該当する識別子ＩＤ１を指定して、機器Ｙの情報を取得するコマンド（ｒｅａｄＰｏｒｔ（他））に対応する要求ＩＤ１を制御装置Ｂに送信する（ステップＳ５０４）。他とは、他の制御装置Ｂのポートを示す。
【００７０】
ここで、制御装置Ａは、制御装置Ｂに対して機器Ｙの制御のコマンドそのものを送信するのではなく、関数呼び出しテーブルＴ２の参照により、制御内容を含む識別子ＩＤだけを送信すればよいため、送信するデータ量を削減できる。
【００７１】
（組み込み機器のプログラムの具体例）
図６は、組み込み機器におけるプログラム作成の具体例を示す図である。実施の形態の制御装置Ａおよび制御装置Ｂは、組み込み機器、例えば、リモコンやデジカメ、ＩＣレコーダ、車載装置、医療装置、監視カメラや侵入検知器等、用途（動作）が限定された特定用途の機器Ｘ，Ｙの制御部として機能する。
【００７２】
図６に示すプログラムＰ１には、クラスの定義６０１に基づき、制御装置Ａの制御ソフト１のオブジェクト６０２と、コマンド６０３が定義される。オブジェクト６０２の装置（機器Ｘ）は、自コンピュータ（制御装置Ａ）上にあることを示し、ＯｂｊＸは、内部のフラグ（ｆｌｇ）に自コンピュータの情報をセットする。オブジェクト６０２の装置（機器Ｙ）は、他コンピュータ（制御装置Ｂ）上にあることを示し、ＯｂｊＹは、内部のフラグ（ｆｌｇ）に他コンピュータの情報をセットする。
【００７３】
そして、プログラムＰ１は、読み出し（ｒｅａｄＤａｔａ）のコマンド６０３について、自コンピュータ（制御装置Ａ）に対するものであれば、指定の自インタフェース（Ｉ／Ｏポート）からデータをｒｅａｄしてその値をリターンする。また、プログラムＰ１は、読み出し（ｒｅａｄＤａｔａ）のコマンド６０３について、他コンピュータ（制御装置Ｂ）に対するものであれば、該当する制御装置Ｂと会話して、返された値をリターンする。
【００７４】
図５に戻り説明すると、制御装置Ｂは、通信処理タスク５０３が制御装置Ａからの要求ＩＤ１を受信する（ステップＳ５０５）。通信処理タスク５０３は、関数呼び出しテーブルＴ２を参照し（ステップＳ５０６）、プログラムＰ２に識別子ＩＤ１に対応する関数（ｒｅａｄＰｏｒｔ）を実行させる（ステップＳ５０７）。
【００７５】
この後、制御装置Ｂは、プログラムＰ２がＩＤ１に対応して、Ｉ／Ｏポート読出処理を行い、該当する機器Ｙの情報を読み出し（ｒｅａｄＰｏｒｔ）、通信処理タスク５０３に返す（ステップＳ５０８）。
【００７６】
そして、制御装置Ｂは、通信処理タスク５０３がｒｅａｄＰｏｒｔの結果、読み出した機器Ｙの情報を制御装置Ａに送信する（ステップＳ５０９）。
【００７７】
制御装置Ａは、プログラムＰ１が発行したｒｅａｄＰｏｒｔ（他）の返答として機器Ｙから送信された情報をｒｅａｄＤａｔａ（）に変換し（ステップＳ５１０）、機器Ｙの情報の取得にかかる処理（ＯｂｊＹ．ｒｅａｄＤａｔａ（））の結果として、対応する機器Ｙの情報を取得する（ステップＳ５１１）。
【００７８】
上記処理によれば、制御装置Ａは、自装置内の処理であるか、制御装置Ｂの処理であるかを、プログラムＰ１が指定する引数（アクセス対象名）によって切り分ける。この際、制御装置Ａは、外部（制御装置Ｂ）へのアクセスについては、予め取得した関数呼び出しテーブルＴ２を参照し、該当する制御装置Ｂにアクセスする。
【００７９】
また、制御装置Ｂの通信処理タスク５０３と関数呼び出しテーブルＴ２は、ソフトウェア実行に限らず、ハードウェアチップを用いて構成することもできる。
【００８０】
また、上記の関数呼び出しテーブルＴ２は、上述したように、制御装置Ａが取得するに限らず、制御装置ＢがネットワークＮＷ上に公開する構成とすることもできる。そして、関数呼び出しテーブルＴ２が示す、機器Ｙの機能（Ｒｅａｄ，Ｗｒｉｔｅ，Ｓｔａｒｔ，Ｓｔｏｐ）は、ネットワークＮＷ上の任意の制御装置Ａによって取得し、制御（使用）できるようになる。
【００８１】
すなわち、制御装置Ａは、関数呼び出しテーブルＴ２を取得することにより、制御装置Ｂに接続された機器Ｙの機能を知ることができ、制御装置Ａは、ネットワークＮＷの通信方式（手順）を隠蔽して制御装置Ｂに接続された機器Ｙを制御できるようになる。
【００８２】
これにより、制御装置Ａは、機器Ｘと機器Ｙが同一の部屋内や異なる場所に設置された場合においても、この設置場所に限定されず、機器Ｙを制御できるようになる。
【００８３】
例えば、制御装置Ａは、同一の部屋内に設けた異なる機能の機器Ｘと、機器Ｙの異なる監視機能を制御できるようになる。一方、制御装置Ａは、制御装置Ａで処理できない演算を制御装置Ａの制御によって遠隔地の制御装置Ｂにより演算処理できるようになる。
【００８４】
さらに、制御装置Ｂの関数呼び出しテーブルＴ２は、ネットワークＮＷ上のサーバに保持しておくこともでき、複数の制御装置Ｂ毎の関数呼び出しテーブルＴ２として保持できる。これにより、所定の機能を要求する制御装置Ａは、サーバへのアクセスによって該当する機能（機器Ｙ）を容易に検索することができるようになる。また、制御装置Ａは、機器Ｙが接続された制御装置Ｂへのアクセスを容易に行えるようになる。
【００８５】
上記実施の形態によれば、制御装置Ａおよび制御装置Ｂは、処理実行するＣＰＵやＯＳに依存せず、互いに自制御装置あるいは他の制御装置に接続されている機器Ｘおよび機器Ｙをネットワーク接続の有無に関係なく簡単に制御できるようになる。
【００８６】
また、制御装置Ａは、自制御装置Ａにないメモリのリード／ライトや、関数実行についても同様に行えるようになる。したがって、制御装置Ａと制御装置Ｂは、ネットワーク接続されたものに限らず、同一装置内での異なるＣＰＵ間通信についても同様に適用することができる。
【００８７】
これにより、制御装置Ａは、自制御装置Ａに接続された機器Ｘに対するクローズド制御に限らず、ネットワーク等を介して他の制御装置Ｂに接続された他の機器Ｙについても、通信（プロトコル）を意識せずに制御でき、プログラム作成についても通信を意識せずに作成できるため、プログラム作成を容易に行えるようになる。すなわち、制御装置Ａは、間に介在するネットワークの通信プログラムや専用Ｉ／Ｆを追加せずとも他の制御装置Ｂの機器Ｙを制御できるようになる。
【００８８】
関数呼び出しテーブルＴ２は、制御装置Ｂに接続された機器Ｙが故障や仕様変更などでの交換や、追加の場合に更新される。これにより、制御装置Ａは、機器Ｙの機能が変更された場合であっても、関数呼び出しテーブルＴ２を参照するだけで、所望する機器Ｙの制御を行え、また、機器Ｙが交換等されてもプログラム変更を不要にできる。
【００８９】
そして、制御装置Ａ，Ｂ同様に、特定用途の機能を有する組み込み機器は、他の装置に対する制御を行って機能拡張が行えるようになる。また、制御装置Ａ，Ｂ同様に、汎用のＰＣ等の情報制御装置は、所望する機能の機器Ｘ，Ｙに対する制御を容易に行えるようになる。具体的には、これら組み込み機器や情報制御装置は、ＥＣＨＯＮＥＴやＡＵＴＯＳＡＲ等の規格に縛られず、専用Ｉ／Ｆや専用の通信プログラムを設けなくても、任意の他の機器Ｘ，Ｙに対する制御が可能となる。
【００９０】
（物理的位置に依存しないシームレスな装置アクセスの具体例）
図７は、異なる制御装置に接続された機器へのアクセスの具体例を示す図である。制御装置Ａと、制御装置Ｂは、それぞれ、アプリケーションプログラム７０３と、コア層７０４と、外部と通信を行う通信装置や、装置内のボードとのアクセス処理の実装部７０５と、プラットフォーム（ハードウェア、ＯＳ、ドライバ）７０６と、を有する。
【００９１】
制御装置Ａの通信層１（７０５ａ）は、制御装置Ａに直接接続される機器Ｘにアクセスする他、ネットワーク７１０を介して制御装置Ｂの機器Ｙにアクセス可能である。通信層２（７０５ｂ）は、制御装置Ａ内のボードｘ等にアクセス可能である。同様に、制御装置Ｂの通信層１（７０５ａ）は、制御装置に直接接続される機器Ｙにアクセスする他、ネットワーク７１０を介して制御装置Ａの機器Ｘにアクセス可能である。通信層２（７０５ｂ）は、制御装置Ｂ内のボードｙ等にアクセス可能である。
【００９２】
コア層７０４は、Ｂａｓｉｃ  Ｃｌａｓｓ  Ｌｉｂｒａｒｙ７３１と、処理部Ｘ７３２と、通信方式抽象化層１（７３３）と、通信方式抽象化層２（７３４）と、プラットフォーム抽象化層１（７３５）と、プラットフォーム抽象化層２（７３６）とを有する。Ｂａｓｉｃ  Ｃｌａｓｓ  Ｌｉｂｒａｒｙ７３１は、複数のオブジェクト、例えばＩ／Ｏ処理、リアルタイムモニタ、イベント監視、異常監視、データ収集、一括設定等の各種オブジェクトを管理する。
【００９３】
処理部Ｘ７３２は、Ｂａｓｉｃ  Ｃｌａｓｓ  Ｌｉｂｒａｒｙ７３１からコールされるオブジェクト関連の処理に対応して、下記のタイプ１〜３の処理を行う。
【００９４】
１．アプリケーションプログラムが、オブジェクトに対して要求する処理について、オブジェクトがアプリ内部に存在するのか、ＬＡＮ上に存在するのか、さらにＷＡＮ上に存在するのかを確認する。
【００９５】
２．処理部Ｘ７３２は、アプリケーションプログラムからＢａｓｉｃ  Ｃｌａｓｓ  Ｌｉｂｒａｒｙ７３１経由で呼び出される各処理要求の中で指定されたＮａｍｅ（名前）の実態を取り出す処理を行う。この名前の実態は、ネットワーク設定で予め設定されている。
【００９６】
３．処理部Ｘ７３２は、オブジェクトがＬＡＮ／ＷＡＮ上に存在する場合には、そのオブジェクトに対する通信経路を確保し、リクエストを送受信する。
【００９７】
通信方式抽象化層１（７３３）は、処理部Ｘ７３２からコールされる通信処理を抽象化するためのＩ／Ｆである。通信方式抽象化層１（７３３）の各関数は、各アクセス対象への個別の通信処理を実装した通信層１（７０５ａ）の関数をコールする。
【００９８】
プラットフォーム抽象化層１（７３５）は、Ｂａｓｉｃ  Ｃｌａｓｓ  Ｌｉｂｒａｒｙ７３１からコールされるプラットフォーム依存処理を抽象化するためのＩ／Ｆである。プラットフォーム抽象化層１（７３５）の各関数の中からは、各アクセス対象への個別のアクセス処理やＯＳが提供する機能を適合させて実現するＲＴＯＳ処理等を実装した通信層２（７０５ｂ）の関数をコールする。
【００９９】
通信層１（７０５ａ）は、通信方式抽象化層２（７３４）からコールされる各アクセス対象への個別の通信処理の実装部である。通信層１（７０５ａ）は、処理部Ｘ７３２→通信方式抽象化層１７３３→通信方式抽象化層２（７３４）経由で渡される引数（ｈａｎｄｌｅ）によってアクセス対象を特定して、対応する実装処理を行う。
【０１００】
通信層２（７０５ｂ）は、プラットフォーム抽象化層２（７３６）からコールされる各アクセス対象への個別のアクセス処理やＯＳが提供する機能を適合させて実現するＲＴＯＳ処理などを作成する実装部である。通信層２（７０５ｂ）は、処理部Ｘ７３２→プラットフォーム抽象化層１（７３５）→プラットフォーム抽象化層２（７３６）経由で渡される引数（ｈａｎｄｌｅ）によってアクセス対象を特定して、対応する実装処理を行う。
【０１０１】
（制御装置Ａによる機器Ｘ，Ｙの具体的制御例）
図８は、他の制御装置のオブジェクト読み出しを説明する図である。以下、機器Ｘ，Ｙが印字処理するプリンタを例に、処理の流れ順に説明する。
【０１０２】
１．制御装置Ａでは、はじめに、アプリケーションプログラム７０３により名前を指定してオブジェクトを生成し、オブジェクトがもつ関数を呼び出す。
【０１０３】
２．次に、制御装置Ａは、処理部Ｘ７３２により、Ｎｅｔｗｏｒｋ  Ｃｏｎｆｉｇｕｒａｔｉｏｎ  Ｄａｔａ８００の内容に基づき、オブジェクト名によりオブジェクトにアクセスするための通信方式、通信パラメータ（位置情報）を解決する。
【０１０４】
３．４．そして、制御装置Ａは、処理部Ｘ７３２により、オブジェクト名や関数名、および、引数情報をパケットに変換し、抽象化層７３３〜７３６を介して、２．で解決した通信方式を実装するポートにこれを引き渡す。この際、制御装置Ａの外部に出て行くパケットは所定の暗号化を施す。
【０１０５】
５．制御装置Ｂでは、処理部Ｘ７３２でパケットを受信し、暗号化されたパケットを復号する。さらに、バイトデータからオブジェクト名、関数名、引数情報を復元し、印字処理の実態を呼び出す。
【０１０６】
６．上記５．の印字処理の実態は、プラットフォーム抽象化層１（７３５）／プラットフォーム抽象化層２（７３６）を介して実際の印字を行う。
【０１０７】
７．制御装置Ｂのプラットフォーム抽象化層１（７３５）／プラットフォーム抽象化層２（７３６）は、印字処理の結果である戻り値を受け取る。
【０１０８】
８．制御装置Ｂの通信方式抽象化層１（７３３）／通信方式抽象化層２（７３４）は、戻り値をパケットに変換し、暗号化して呼び出し元（制御装置Ａ）に送信する。
【０１０９】
９．制御装置Ａの処理部Ｘ７３２は、戻り値を含むパケットを受信し、暗号化されたパケットを復号する。
【０１１０】
１０．制御装置ＡのＢａｓｉｃ  Ｃｌａｓｓ  Ｌｉｂｒａｒｙ７３１は、戻り値を呼び出し元（アプリケーションプログラム７０３）に返却する。
【０１１１】
上記処理において、制御装置Ａのアプリケーションプログラム７０３が自制御装置Ａに接続されたプリンタＸにアクセスし、印字処理する場合には、図８の１．２．３．４．７．１０の処理を実行する。この際、制御装置Ａの処理部Ｘ７３２では、名前の実態をＮｅｔｗｏｒｋ  Ｃｏｎｆｉｇｕｒａｔｉｏｎ  Ｄａｔａ８００により、制御装置Ａに接続されたプリンタＸのシリアルポートの情報に基づき接続先を解決する。
【０１１２】
また、制御装置Ａのアプリケーションプログラム７０３が他の制御装置Ｂに接続されたプリンタＹにアクセスし、印字処理させる場合には、図８の１．〜１０．の処理を順次実行する。この際、制御装置Ａの処理部Ｘ７３２では、名前の実態をＮｅｔｗｏｒｋ  Ｃｏｎｆｉｇｕｒａｔｉｏｎ  Ｄａｔａ８００により、制御装置Ｂへの接続方法（外部通信、アドレス等の位置情報に基づき接続先を解決する。
【０１１３】
（ＣＰＵＡ，Ｂ間の通信の制御例）
上記説明では、異なる制御装置Ａ，Ｂに接続された機器Ｘ，Ｙの制御例を説明したが、これに限らず、異なるＣＰＵＡ，Ｂ間の通信の制御にも同様に適用することができる。
【０１１４】
図９は、異なるＣＰＵが共有メモリによってデータを送受信する構成例を示す図である。このような共有メモリ９００を介した同一装置内のＣＰＵＡ，Ｂ間での機能呼び出しも可能になる。具体的には、ＣＰＵＡのアプリケーションプログラム７０３が他のＣＰＵＢに接続されたプリンタＹにアクセスし印字処理させる場合には、共有メモリ９００を介して図８に示した１．〜１０．の処理を順次実行する。ＣＰＵＡの処理部Ｘ７３２では、名前の実態をＮｅｔｗｏｒｋ  Ｃｏｎｆｉｇｕｒａｔｉｏｎ  Ｄａｔａ８００により、ＣＰＵＢへの接続方法（外部通信、ＣＰＵＢ、の情報）に基づき接続先を解決する。
【０１１５】
この場合、ＣＰＵＡ，ＣＰＵＢの通信方式抽象化層１（７３３）と、通信方式抽象化層２（７３４）を、共有メモリ９００を介して実装するポーティング層に差し替えるだけで対応可能になる。制御装置Ａのアプリケーションプログラム７０３は、図８に示したネットワークを介する場合の例と全く変わらずシームレスに処理を実行できる。
【０１１６】
（アプリケーションの公開インタフェース呼び出しの例１）
図１０は、アプリケーションの公開インタフェースの呼び出しを説明する図である。制御装置Ａ，Ｂには、それぞれアプリケーションプログラム７０３と、Ｂａｓｉｃ  Ｃｌａｓｓ  Ｌｉｂｒａｒｙ７３１との間にＵｓｅｒ  Ｅｘｔｅｎｄｅｄ  Ｃｌａｓｓｅｓ１００１を設ける。Ｕｓｅｒ  Ｅｘｔｅｎｄｅｄ  Ｃｌａｓｓｅｓ１００１では、Ｂａｓｉｃ  Ｃｌａｓｓ  Ｌｉｂｒａｒｙ７３１のクラスを継承して、独自のクラスを定義し、その機能を制御装置Ａの外部から呼び出せる形で公開する。図１０の例では、Ｕｓｅｒ  Ｅｘｔｅｎｄｅｄ  Ｃｌａｓｓｅｓ１００１がプリンタクラスを継承したＵｓｅｒ  Ｐｒｉｎｔｅｒクラスを定義し、制御装置Ａ，Ｂ間でこの機能を呼び出した際の流れを示している。
【０１１７】
図１０に示すように、制御装置Ａのアプリケーションプログラム７０３が自制御装置Ａに接続されたプリンタＸにアクセスし、印字処理する場合には、図１０の１．２．３．４．７．１０の処理を実行する。この際、制御装置Ａの処理部Ｘ７３２では、名前の実態をＮｅｔｗｏｒｋ  Ｃｏｎｆｉｇｕｒａｔｉｏｎ  Ｄａｔａ８００により、制御装置Ａに接続されたプリンタＸのシリアルポートの情報に基づき接続先を解決する。
【０１１８】
また、制御装置Ａのアプリケーションプログラム７０３が他の制御装置Ｂに接続されたプリンタＹにアクセスし、印字処理させる場合には、図１０の１．〜１０．の処理を順次実行する。この際、制御装置Ａの処理部Ｘ７３２では、名前の実態をＮｅｔｗｏｒｋ  Ｃｏｎｆｉｇｕｒａｔｉｏｎ  Ｄａｔａ８００により、制御装置Ｂへの接続方法（外部通信、アドレス等の位置情報）に基づき接続先を解決する。
【０１１９】
そして、制御装置ＢのＵｓｅｒ  Ｅｘｔｅｎｄｅｄ  Ｃｌａｓｓｅｓ１００１では、１０．プリンタクラスを継承したＵｓｅｒ  Ｐｒｉｎｔｅｒクラスを定義し、例えばネットワーク上に公開する。これにより、制御装置Ａは、他の制御装置Ｂ，Ｃ，…が公開されたＵｓｅｒ  Ｐｒｉｎｔｅｒクラスに基づき、該当するプリンタＹへのアクセスが可能となる。
【０１２０】
図１１は、リモート呼び出し可能な公開インタフェースの定義例を示す図表である。図１１に示す例では、Ｃ言語で表現される構造により、インタフェースを定義している。これにより、制御装置Ａは、名前により他の制御装置Ｂをリモート呼び出しすることができる。
【０１２１】
図１１に示す例では、引数リストや返却値リストには、型のサイズや型のデータをパケット化、およびパケットから復元する関数へのポインタをもつ。例えば、他の制御装置Ｂは、インタフェース名と、インタフェースを実装する関数へのポインタを、公開インタフェースのリストとしてネットワーク上で公開することで、制御装置Ａは、他の制御装置Ｂを呼び出すことができる。
【０１２２】
さらに、各制御装置Ａ，Ｂ〜ｎは、上記公開するリストと、Ｎｅｔｗｏｒｋ  Ｃｏｎｆｉｇｕｒａｔｉｏｎ  Ｄａｔａ８００から得られる位置情報をネットワークにブロードキャストし、各ノード（制御装置Ａ，Ｂ〜ｎ）がこれらの情報を保持することにより、各制御装置Ａ〜ｎは、互いに公開しているインタフェース情報を共有することができる。
【０１２３】
（アプリケーションの公開インタフェース呼び出しの例２）
図１２は、アプリケーションの公開インタフェースの呼び出しを説明する図である。図１２に示すように、制御装置Ａ，Ｂは、アプリケーションのオブジェクト自身に、複数のオブジェクトの機能を機能群ｘとして定義し、機能群ｘを使用するためのインタフェースを公開する構成とすることもできる。
【０１２４】
図１２の例では、制御装置Ａが制御装置Ｂの機器（プリンタ）Ｙにアクセスする際に、上記１．〜１０．同様の手順でアクセスし、その過程において制御装置Ｂは、集計した結果を６．７．データベースクラスと、プリンタクラスを作成し、データベースクラスをデータベース１２００に登録する。また、集計結果をプリンタＹからレポート出力する。
【０１２５】
制御装置Ｂのアプリケーションプログラム７０３は、機能群ｘを制御装置Ｂに接続された外部インファーフェースとして外部に公開する。同様に、制御装置Ａは、制御装置Ａの機能群についてデータベース１２００に登録する。
【０１２６】
（ネットワーク接続のＮＡＴ越えについて）
実施の形態では、制御装置Ａ，Ｂ間のネットワーク接続において、例えば、相手側のＮＡＴ装置を用いたプライベートネットワークに属するホストを直接指定できない（ＮＡＴ通過できない）問題について、ＮＡＴ越えのための情報を登録しておくことで解決できる。
【０１２７】
図１３は、制御装置間のＮＡＴ越えの構成例を示す図である。ＮＡＴを越えてオブジェクトにアクセスする場合は、制御装置Ａ，Ｂは、ロケーションサーバ１３００を用いてオブジェクトの位置情報を管理する。図１３の例では、制御装置Ｂの起動時に、オブジェクトは、制御装置Ｂ自身の位置情報をロケーションサーバ１３００に登録する（ステップＳ１３０１）。
【０１２８】
この制御装置Ｂにアクセスする制御装置Ａの処理部Ｘ７３２は、通信に先立って、アクセス先のオブジェクトの位置情報をロケーションサーバ１３００に問い合わせる（ステップＳ１３０２）。制御装置Ａは、問い合わせた結果得られる位置情報（Ｎｅｔｗｏｒｋ  Ｃｏｎｆｉｇｕｒａｔｉｏｎ  Ｄａｔａ８００の制御装置Ｂのゲートウェイアドレス）を使用して、制御装置Ｂのリモートオブジェクトにアクセス可能となる。なお、一度解決した位置情報は、制御装置Ａのメモリ等にキャッシュすることで、制御装置Ａは、次回の呼び出し時にはロケーションサーバ１３００に問い合わせることなく、制御装置Ｂを高速に呼び出すことができる。
【０１２９】
（制御装置のシステム拡張例）
次に、ネットワーク上で制御装置が他の制御装置のオブジェクトを直接検知するシステム拡張例について説明する。上記説明では、制御装置Ａ，Ｂ間で事前に設定したパラメータ（オブジェクト名、ネットワークパラメータ）を参照することで、制御装置Ａ，Ｂ間で相互にオブジェクトの呼び出しを行う。あるいは、制御装置Ａ，Ｂがサーバにパラメータを登録しておき、制御装置Ａ，Ｂがサーバに登録されたパラメータを参照することで、制御装置Ａ，Ｂ間で相互にオブジェクトの呼び出しを行う。このような事前設定による静的な通知に対し、以下の説明では、サーバ等を配置せず、制御装置Ａ，Ｂ間のみで直接、動的にオブジェクトを通知する各例について説明する。
【０１３０】
図１４は、新規参加の制御装置による他の制御装置への通知例を示す図である。図１４（ａ）に示すように、ネットワークＮＷ上に制御装置（センサーデバイス）Ａが新規参加したとする。この場合、センサーデバイスＡは、ネットワークＮＷ上に挨拶のＤｉｓｃｏｖｅｒ通知１４０１をブロードキャスト等で配信して他の制御装置（スマートホン）Ｂ、制御装置（センサーデバイス）Ｃ、制御装置（スマートホン）Ｄに通知する。
【０１３１】
この際、センサーデバイスＡは、自身が持つパラメータ（オブジェクト名等）を含めて通知する。なお、不図示であるが制御装置（センサーデバイス）Ａは、例えば、上述した機器Ｘ（例えばセンサー）の機能を含み、他の制御装置Ｂ〜Ｄについても機器Ｙ等の機能を含む。
【０１３２】
この後、図１４（ｂ）に示すように、センサーデバイスＡのＤｉｓｃｏｖｅｒ通知１４０１を受け取った他の制御装置Ｂ〜Ｄは、センサーデバイスＡが保有するオブジェクト名を知る。そして、センサーデバイスＡの参加許可後、これら他の制御装置Ｂ〜Ｄは、それぞれが保有するオブジェクト名をセンサーデバイスＡに返す返答通知１４０２を行う。これにより、制御装置（センサーデバイス）Ａは、他の制御装置Ｂ〜Ｄがそれぞれ保有するオブジェクト名を知ることができ、他の制御装置Ｂ〜Ｄのサービス（機器Ｘ，Ｙに相当する機能）をリモートで呼び出すことができる。
【０１３３】
図１５は、制御装置から他の制御装置への問い合わせ例を示す図である。図１４等の制御により参加済みの制御装置（スマートホン）ＢがネットワークＮＷ上のいずれかの制御装置Ａ，Ｃ，Ｄの新たなオブジェクト（サービス）を検出する例を説明する。
【０１３４】
図１５（ａ）に示すように、スマートホンＢは、自身が呼び出したい所望のオブジェクトのネットワークの情報（通信方式、通信パラメータ等）を知らない状態であるとき、スマートホンＢは、問い合わせるオブジェクト名を含むＬｏｏｋｕｐ通知１５０１をネットワークＮＷにブロードキャスト等で配信する。
【０１３５】
この後、図１５（ｂ）に示すように、スマートホンＢのＬｏｏｋｕｐ通知１５０１を受け取った制御装置Ａ，Ｃ，Ｄのうち、該当するオブジェクト名をセンサーデバイスＣが持っていたとする。この場合、制御装置（センサーデバイス）Ｃは、スマートホンＢへオブジェクト名に対応するネットワークパラメータを通知する（通知１５０２）。これにより、制御装置（スマートホン）Ｂは、制御装置（センサーデバイス）Ｃが保有するサービスをリモートで呼び出すことができる。
【０１３６】
図１６は、制御装置で新たにサービス追加を行った際の通知例を示す図である。図１４等の制御により参加済みの制御装置（センサーデバイス）Ａが新たなサービスを追加した場合、このセンサーデバイスＡは、新たなサービスに対応するオブジェクト名を追加し、オブジェクト名とネットワークパラメータの関連付けの処理（Ｂｉｎｄ）を行う。そして、センサーデバイスＡは、動的に追加した新しいオブジェクト名１６０１をネットワークＮＷを介して他の制御装置Ｂ〜Ｄにブロードキャストで通知する。これにより、制御装置（センサーデバイス）Ａは、新しいサービスを保有していることを、他の制御装置Ｂ〜Ｄに通知することができ、他の制御装置Ｂ〜Ｄでは、制御装置（センサーデバイス）Ａが有するサービスをリモートで呼び出すことができる。
【０１３７】
（従来技術の問題点）
図１７は、従来のネットワーク接続された他の装置の制御処理プログラム例を示す図である。図１７の（ａ）に示すように、制御装置Ａに接続された機器Ｘへのアクセス（オープン、クローズ）については、通信にかかる処理を考慮せずに、少ない工数でプログラミングできる。
【０１３８】
しかしながら、図１７の（ｂ）に示すように、制御装置Ａが他の制御装置Ｂに接続された機器Ｙへアクセス（オープン、クローズ）する場合には、制御装置Ａと制御装置Ｂとの間のネットワークの通信にかかる通信プログラムに追加行１００１ａ〜１００１ｃ、および修正行１００２が必要となり、作業工数が増えてしまう。
【０１３９】
従来、制御装置は直接接続された機器に対する制御を行い、他の制御装置も直接接続された他の機器に対する制御を行うクローズドシステムであり、これらクローズドシステム間を跨いでの機器制御はネットワークの通信が間に介在するため、通信処理のプログラムが別途必要となった。このため、従来、制御装置がネットワークを介して他の機器を制御するためには、プログラミングのステップ数が大幅に増えるという問題を生じる。また、制御対象を、制御装置に接続されている機器からネットワーク上の他の機器に変更する場合、プログラムの変更工数が増大するという問題が生じる。
【０１４０】
上述の説明では、制御装置Ａと制御装置Ｂがネットワークを介して接続されることを前提に説明したが、これら制御装置Ａ，Ｂがそれぞれ分散・マルチコアのＣＰＵ、共有メモリ等を備えた構成においても、ＣＰＵ間の通信において同様の問題を生じる。
【０１４１】
これに対し、実施の形態では、制御装置Ａは、制御対象の機器ＸまたはネットワークＮＷを介して接続された他の制御装置Ｂに接続された他の機器Ｙを制御するための名前と、関数名と引数情報からなるオブジェクトを生成する。そして制御装置Ａは、ネットワークＮＷの情報に含まれる機器Ｘまたは他の機器Ｙの通信方式、および通信パラメータを参照して、オブジェクトにアクセスする情報を得て、オブジェクト名、関数名、および引数情報を所定のパケットに変換し、通信方式に対応するポートを選択して、パケットを該当する機器Ｘ、または他の機器Ｙが接続された他の制御装置Ｂに送信する。
【０１４２】
これにより、制御装置Ａは、制御装置Ｂに接続された機器Ｙの機能を知ることができ、制御装置Ａは、ネットワークＮＷの通信方式（手順）を隠蔽して制御装置Ｂに接続された機器Ｙを制御できるようになる。この際、制御装置Ａは、制御装置Ｂに対して機器Ｙの制御のコマンドそのものを送信するのではなく、制御装置Ｂの処理テーブルＴの参照により、制御内容を含む識別子ＩＤだけを送信すればよいため、送信するデータ量を削減できる。
【０１４３】
また、制御装置Ａに接続された機器Ｘの制御と、ネットワークＮＷ上の他の制御装置Ｂに接続された他の機器Ｙの制御方法が異なった場合でも、制御装置Ａは、機器Ｙに直接アクセスしてプログラミング可能である。そして、制御装置Ａは、ネットワークＮＷを介して他の制御装置Ｂに接続された他の機器Ｙを制御する際、ネットワークの通信プログラムの追加が不要であり、ネットワーク間通信に新たに専用のＩ／Ｆを設ける必要がない。
【０１４４】
なお、本発明の実施の形態で説明したプログラムは、予め用意されたプログラムを機器制御装置のプロセッサに実行させることにより実現することができる。また、本プログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ−Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）、フラッシュメモリ、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）メモリ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本プログラムは、インターネット等のネットワークを介して配布してもよい。
【産業上の利用可能性】
【０１４５】
以上のように、本発明は、制御装置に接続された装置以外の他の装置を制御する各種制御装置、例えば、特定用途の機能を有する組み込み機器や汎用の機器制御装置、およびこれら組み込み機器や機器制御装置のソフトウェア開発に有用である。
【符号の説明】
【０１４６】
２０１  制御部（ＣＰＵ）
２０２  ＲＯＭ
２０３  ＲＡＭ
２０４  補助記憶部
２０５  通信Ｉ／Ｆ
３００  機器制御システム
５０３  通信処理タスク
６０１  クラスの定義
６０２  オブジェクト
６０３  コマンド
７０３  アプリケーションプログラム
７０４  コア層
７０５  実装部
７１０  ネットワーク
７３３〜７３６  抽象化層
９００  共有メモリ
１３００  ロケーションサーバ
Ａ，Ｂ  制御装置
Ｘ，Ｙ  機器
ＮＷ  ネットワーク
Ｐ１，Ｐ２  プログラム
Ｔ  処理テーブル
Ｔ２  関数呼び出しテーブル
【図１】
2019186802.tif 000003
【図２Ａ】
2019186802.tif 000004
【図２Ｂ】
2019186802.tif 000005
【図３】
2019186802.tif 000006
【図４】
2019186802.tif 000007
【図５】
2019186802.tif 000008
【図６】
2019186802.tif 000009
【図７】
2019186802.tif 000010
【図８】
2019186802.tif 000011
【図９】
2019186802.tif 000012
【図１０】
2019186802.tif 000013
【図１１】
2019186802.tif 000014
【図１２】
2019186802.tif 000015
【図１３】
2019186802.tif 000016
【図１４】
2019186802.tif 000017
【図１５】
2019186802.tif 000018
【図１６】
2019186802.tif 000019
【図１７】
2019186802.tif 000020