(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-05-26
(45)【発行日】2022-06-03
(54)【発明の名称】機器制御装置、機器制御システム、機器制御方法および機器制御プログラム
(51)【国際特許分類】
H04M 11/00 20060101AFI20220527BHJP
H04Q 9/02 20060101ALI20220527BHJP
H04Q 9/00 20060101ALI20220527BHJP
【FI】
H04M11/00 301
H04Q9/02 B
H04Q9/00 301D
(21)【出願番号】P 2018077195
(22)【出願日】2018-04-12
【審査請求日】2021-02-08
(73)【特許権者】
【識別番号】594081294
【氏名又は名称】株式会社アイ・エル・シー
(74)【代理人】
【識別番号】100104190
【氏名又は名称】酒井 昭徳
(72)【発明者】
【氏名】許斐 浩祐
(72)【発明者】
【氏名】山崎 泰伯
【審査官】望月 章俊
(56)【参考文献】
【文献】国際公開第2015/063959(WO,A1)
【文献】特開平08-016537(JP,A)
【文献】特開平10-320340(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 13/00
H03J 9/00-9/06
H04M 3/00
3/16-3/20
3/38-3/58
7/00-7/16
11/00-11/10
H04Q 9/00-9/16
(57)【特許請求の範囲】
【請求項1】
制御装置に接続された機器、またはネットワークを介して他の制御装置に接続された他の機器を制御するためのオブジェクトを生成するオブジェクト生成部と、
前記ネットワークの情報に含まれる前記機器または他の前記機器の通信パラメータを参照して、前記オブジェクトにアクセスする情報を得る通信処理部と、
前記オブジェクトを所定のパケットに変換し、通信方式に対応するポートを選択して前記パケットを出力するパケット処理部と、
前記パケットを該当する前記機器、または他の前記機器が接続された他の前記制御装置に送信する通信部と、
を有し、
前記オブジェクト生成部は、制御対象の前記機器または他の前記機器を制御するための名前と、関数名と引数情報からなるオブジェクトを生成し、
前記通信処理部は、予め設定した前記ネットワークの情報に含まれる前記機器または他の前記機器の通信方式、および通信パラメータを参照して、前記オブジェクトにアクセスする情報を取得し、
前記パケット処理部は、前記オブジェクト名、関数名、および引数情報を所定のパケットに変換し、前記通信方式に対応するポートを選択して、前記パケットを前記通信部に出力し、
前記通信部は、
自身の制御装置が前記ネットワークに参加した時には、自身が保有する前記オブジェクト名を前記ネットワークに配信し、自身の制御装置が新たなサービスに対応する前記オブジェクトを追加したとき、当該新たなオブジェクトを含む前記オブジェクト名を前記ネットワークに配信し、
自身の制御装置が所望するオブジェクトが生じた時には、所望する前記オブジェクト名を前記ネットワークを介して他の前記制御装置に問い合わせ、前記オブジェクト名を有する他の前記制御装置から前記ネットワークの情報を取得し、所望する前記オブジェクトを他の前記制御装置から取得する、
ことを特徴とする機器制御装置。
【請求項2】
制御装置に接続された機器、または他の制御装置に接続された他の機器を制御する機器制御システムであって、
前記制御装置は、
制御対象の前記機器または他の前記機器を制御するための名前と、関数名と引数情報からなるオブジェクトを生成するオブジェクト生成部と、
予め設定されたネットワークの情報に含まれる前記機器または他の前記機器の通信方式、および通信パラメータを参照して、前記オブジェクトにアクセスする情報を得る通信処理部と、
前記オブジェクト名、関数名、および引数情報を所定のパケットに変換し、前記通信方式に対応するポートを選択して、前記パケットを引き渡すパケット処理部と、
前記パケットを該当する前記機器、または他の前記機器が接続された他の前記制御装置に送信する通信部と、を有し、
前記通信部は、
自身の制御装置が前記ネットワークに参加した時には、自身が保有する前記オブジェクト名を前記ネットワークに配信し、自身の制御装置が新たなサービスに対応する前記オブジェクトを追加したとき、当該新たなオブジェクトを含む前記オブジェクト名を前記ネットワークに配信し、
自身の制御装置が所望するオブジェクトが生じた時には、所望する前記オブジェクト名を前記ネットワークを介して他の前記制御装置に問い合わせ、前記オブジェクト名を有する他の前記制御装置から前記ネットワークの情報を取得し、所望する前記オブジェクトを他の前記制御装置から取得する、
ことを特徴とする機器制御システム。
【請求項3】
制御装置が他の制御装置に接続された他の機器を制御する機器制御方法であって、
前記制御装置のコンピュータは、
前記制御装置に接続された機器、またはネットワークを介して他の前記制御装置に接続された他の前記機器を制御するための名前と、関数名と引数情報からなるオブジェクトを生成し、
前記ネットワークの情報に含まれる前記機器または他の前記機器の通信方式、および通信パラメータを参照して、前記オブジェクトにアクセスする情報を得て、
前記オブジェクト名、関数名、および引数情報を所定のパケットに変換し、前記通信方式に対応するポートを選択して、前記パケットを引き渡し、
前記パケットを該当する前記機器、または他の前記機器が接続された他の前記制御装置に通信する、処理を実行し、
前記通信する処理は、
自身の制御装置が前記ネットワークに参加した時には、自身が保有する前記オブジェクト名を前記ネットワークに配信し、自身の制御装置が新たなサービスに対応する前記オブジェクトを追加したとき、当該新たなオブジェクトを含む前記オブジェクト名を前記ネットワークに配信し、
自身の制御装置が所望するオブジェクトが生じた時には、所望する前記オブジェクト名を前記ネットワークを介して他の前記制御装置に問い合わせ、前記オブジェクト名を有する他の前記制御装置から前記ネットワークの情報を取得し、所望する前記オブジェクトを他の前記制御装置から取得する、
ことを特徴とする機器制御方法。
【請求項4】
制御装置が他の制御装置に接続された他の機器を制御する機器制御プログラムであって、
前記制御装置のコンピュータに、
前記制御装置に接続された機器、またはネットワークを介して他の前記制御装置に接続された他の前記機器を制御するための名前と、関数名と引数情報からなるオブジェクトを生成する処理、
予め設定されたネットワークの情報に含まれる前記機器または他の前記機器の通信方式、および通信パラメータを参照して、前記オブジェクトにアクセスする情報を得る処理、
前記オブジェクト名、関数名、および引数情報を所定のパケットに変換し、前記通信方式に対応するポートを選択して、前記パケットを引き渡す処理、
前記パケットを該当する前記制御装置に接続された前記機器、または他の前記機器が接続された他の前記制御装置に通信する処理、を実行させ、
前記通信する処理は、
自身の制御装置が前記ネットワークに参加した時には、自身が保有する前記オブジェクト名を前記ネットワークに配信し、自身の制御装置が新たなサービスに対応する前記オブジェクトを追加したとき、当該新たなオブジェクトを含む前記オブジェクト名を前記ネットワークに配信し、
自身の制御装置が所望するオブジェクトが生じた時には、所望する前記オブジェクト名を前記ネットワークを介して他の前記制御装置に問い合わせ、前記オブジェクト名を有する他の前記制御装置から前記ネットワークの情報を取得し、所望する前記オブジェクトを他の前記制御装置から取得する、
ことを特徴とする機器制御プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
この発明は、ネットワーク等に接続された各機器の制御を行う機器制御装置、機器制御システム、機器制御方法および機器制御プログラムに関する。
【背景技術】
【0002】
従来、ネットワーク等を介して接続された機器が相互に制御可能な技術が提案されている(例えば、下記特許文献1参照。)。特許文献1は、ECHONET(Energy Conservation and HOmecare NETwork)規格にしたがい、ネットワークを介する機器を所定のプロトコルを用いて制御する技術である。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、従来の技術では、ある制御装置に接続された機器の制御と、ネットワーク上の他の制御装置に接続された他の機器の制御は制御方法が異なっている。制御装置は、機器に直接アクセスしてプログラミング可能である。しかし、制御装置がネットワークを介して他の制御装置に接続された他の機器を制御するためには、ネットワークの通信プログラムを追加しなければならない。例えば、上記特許文献1の技術は専用プロトコルを用いるため、ネットワーク間通信に専用のI/Fが必要となる。
【0005】
このように、制御装置は直接接続された機器に対する制御を行うクローズドシステムである。同様に、他の制御装置も直接接続された他の機器に対する制御を行うクローズドシステムである。このため、これらクローズドシステム間を跨いでの機器制御はネットワークの通信が間に介在するため、通信処理のプログラムが別途必要となる。したがって、従来、制御装置がネットワークを介して他の機器を制御するためには、プログラミングのステップ数が大幅に増えるという問題を生じる。
【0006】
また、制御対象を、制御装置に接続されている機器からネットワーク上の他の機器に変更する場合、プログラムの変更工数が増大するという問題が生じた。
【0007】
例えば、制御装置A,BがそれぞれCPUを備えた制御装置であり、互いにネットワーク接続されているとする。制御装置Aは、この制御装置Aに直接接続された機器X(家電機器1)を制御する。制御装置Bは、この制御装置Bに直接接続された機器Y(家電機器2)を制御する。そして、制御装置Aによって、機器Y(家電機器2)を制御するとする。この場合、機器Y(家電機器2)は、制御装置Bに固有のプログラムによって制御されているため、制御装置Aでは、機器Y(家電機器2)を制御するために、ネットワークの通信プログラムを追加する必要が生じた。さらに、制御装置Aでは、制御装置Bのプログラムにしたがったプログラム調整を行わなければならず、手間がかかった。
【0008】
本発明は、上記課題に鑑み、ネットワークを介して他の制御装置に接続された他の機器を簡単に制御できることを目的とする。
【課題を解決するための手段】
【0009】
上記目的を達成するため、本発明の機器制御装置は、制御装置に接続された機器、またはネットワークを介して他の制御装置に接続された他の機器を制御するためのオブジェクトを生成するオブジェクト生成部と、前記ネットワークの情報に含まれる前記機器または他の前記機器の通信パラメータを参照して、前記オブジェクトにアクセスする情報を得る通信処理部と、前記オブジェクトを所定のパケットに変換し、通信方式に対応するポートを選択して前記パケットを出力するパケット処理部と、前記パケットを該当する前記機器、または他の前記機器が接続された他の前記制御装置に送信する通信部と、を有し、前記オブジェクト生成部は、制御対象の前記機器または他の前記機器を制御するための名前と、関数名と引数情報からなるオブジェクトを生成し、前記通信処理部は、予め設定した前記ネットワークの情報に含まれる前記機器または他の前記機器の通信方式、および通信パラメータを参照して、前記オブジェクトにアクセスする情報を取得し、前記パケット処理部は、前記オブジェクト名、関数名、および引数情報を所定のパケットに変換し、前記通信方式に対応するポートを選択して、前記パケットを前記通信部に出力し、前記通信部は、自身の制御装置が前記ネットワークに参加した時には、自身が保有する前記オブジェクト名を前記ネットワークに配信し、自身の制御装置が新たなサービスに対応する前記オブジェクトを追加したとき、当該新たなオブジェクトを含む前記オブジェクト名を前記ネットワークに配信し、自身の制御装置が所望するオブジェクトが生じた時には、所望する前記オブジェクト名を前記ネットワークを介して他の前記制御装置に問い合わせ、前記オブジェクト名を有する他の前記制御装置から前記ネットワークの情報を取得し、所望する前記オブジェクトを他の前記制御装置から取得する、ことを特徴とする。
【0014】
また、本発明の機器制御システムは、制御装置に接続された機器、または他の制御装置に接続された他の機器を制御する機器制御システムであって、前記制御装置は、制御対象の前記機器または他の前記機器を制御するための名前と、関数名と引数情報からなるオブジェクトを生成するオブジェクト生成部と、予め設定されたネットワークの情報に含まれる前記機器または他の前記機器の通信方式、および通信パラメータを参照して、前記オブジェクトにアクセスする情報を得る通信処理部と、前記オブジェクト名、関数名、および引数情報を所定のパケットに変換し、前記通信方式に対応するポートを選択して、前記パケットを引き渡すパケット処理部と、前記パケットを該当する前記機器、または他の前記機器が接続された他の前記制御装置に送信する通信部と、を有し、前記通信部は、自身の制御装置が前記ネットワークに参加した時には、自身が保有する前記オブジェクト名を前記ネットワークに配信し、自身の制御装置が新たなサービスに対応する前記オブジェクトを追加したとき、当該新たなオブジェクトを含む前記オブジェクト名を前記ネットワークに配信し、自身の制御装置が所望するオブジェクトが生じた時には、所望する前記オブジェクト名を前記ネットワークを介して他の前記制御装置に問い合わせ、前記オブジェクト名を有する他の前記制御装置から前記ネットワークの情報を取得し、所望する前記オブジェクトを他の前記制御装置から取得する、ことを特徴とする。
【0018】
また、本発明の機器制御方法は、制御装置が他の制御装置に接続された他の機器を制御する機器制御方法であって、前記制御装置のコンピュータは、前記制御装置に接続された機器、またはネットワークを介して他の前記制御装置に接続された他の前記機器を制御するための名前と、関数名と引数情報からなるオブジェクトを生成し、前記ネットワークの情報に含まれる前記機器または他の前記機器の通信方式、および通信パラメータを参照して、前記オブジェクトにアクセスする情報を得て、前記オブジェクト名、関数名、および引数情報を所定のパケットに変換し、前記通信方式に対応するポートを選択して、前記パケットを引き渡し、前記パケットを該当する前記機器、または他の前記機器が接続された他の前記制御装置に通信する、処理を実行し、前記通信する処理は、自身の制御装置が前記ネットワークに参加した時には、自身が保有する前記オブジェクト名を前記ネットワークに配信し、自身の制御装置が新たなサービスに対応する前記オブジェクトを追加したとき、当該新たなオブジェクトを含む前記オブジェクト名を前記ネットワークに配信し、自身の制御装置が所望するオブジェクトが生じた時には、所望する前記オブジェクト名を前記ネットワークを介して他の前記制御装置に問い合わせ、前記オブジェクト名を有する他の前記制御装置から前記ネットワークの情報を取得し、所望する前記オブジェクトを他の前記制御装置から取得する、ことを特徴とする。
【0028】
また、本発明の機器制御プログラムは、制御装置が他の制御装置に接続された他の機器を制御する機器制御プログラムであって、前記制御装置のコンピュータに、前記制御装置に接続された機器、またはネットワークを介して他の前記制御装置に接続された他の前記機器を制御するための名前と、関数名と引数情報からなるオブジェクトを生成する処理、予め設定されたネットワークの情報に含まれる前記機器または他の前記機器の通信方式、および通信パラメータを参照して、前記オブジェクトにアクセスする情報を得る処理、前記オブジェクト名、関数名、および引数情報を所定のパケットに変換し、前記通信方式に対応するポートを選択して、前記パケットを引き渡す処理、前記パケットを該当する前記制御装置に接続された前記機器、または他の前記機器が接続された他の前記制御装置に通信する処理、を実行させ、前記通信する処理は、自身の制御装置が前記ネットワークに参加した時には、自身が保有する前記オブジェクト名を前記ネットワークに配信し、自身の制御装置が新たなサービスに対応する前記オブジェクトを追加したとき、当該新たなオブジェクトを含む前記オブジェクト名を前記ネットワークに配信し、自身の制御装置が所望するオブジェクトが生じた時には、所望する前記オブジェクト名を前記ネットワークを介して他の前記制御装置に問い合わせ、前記オブジェクト名を有する他の前記制御装置から前記ネットワークの情報を取得し、所望する前記オブジェクトを他の前記制御装置から取得する、ことを特徴とする。
【0029】
上記構成によれば、制御装置は、他の制御装置に接続された他の機器を直接制御できる。他の機器は、他の制御装置に固有のプログラムによって制御されているが、制御装置は、ネットワークの通信プログラム等を追加せずとも他の制御装置に接続された他の機器を制御できる。
【発明の効果】
【0030】
本発明によれば、制御装置は、ネットワークを介して他の制御装置に接続された他の機器を簡単に制御できるという効果を奏する。
【図面の簡単な説明】
【0031】
【
図1】
図1は、制御装置から他の制御装置に接続された機器へのアクセスの概要を説明する図である。
【
図2A】
図2Aは、制御装置のハードウェア構成例を示すブロック図である。
【
図3】
図3は、機器制御システムの全体構成を示す図である。
【
図4】
図4は、制御装置の制御プログラム例を示す図である。
【
図5】
図5は、制御装置が他の制御装置の機器にアクセスするための具体例を説明する図である。
【
図6】
図6は、組み込み機器におけるプログラム作成の具体例を示す図である。
【
図7】
図7は、異なる制御装置に接続された機器へのアクセスの具体例を示す図である。
【
図8】
図8は、他の制御装置のオブジェクト読み出しを説明する図である。
【
図9】
図9は、異なるCPUが共有メモリによってデータを送受信する構成例を示す図である。
【
図10】
図10は、アプリケーションの公開インタフェースの呼び出しを説明する図である。(その1)
【
図11】
図11は、リモート呼び出し可能な公開インタフェースの定義例を示す図表である。
【
図12】
図12は、アプリケーションの公開インタフェースの呼び出しを説明する図である。(その2)
【
図13】
図13は、制御装置間のNAT越えの構成例を示す図である。
【
図14】
図14は、新規参加の制御装置による他の制御装置への通知例を示す図である。
【
図15】
図15は、制御装置から他の制御装置への問い合わせ例を示す図である。
【
図16】
図16は、制御装置で新たにサービス追加を行った際の通知例を示す図である。
【
図17】
図17は、従来のネットワーク接続された他の装置の制御処理プログラム例を示す図である。
【発明を実施するための形態】
【0032】
(実施の形態)
以下に添付図面を参照して、この発明にかかる機器制御装置、機器制御システム、機器制御方法および機器制御プログラムの好適な実施の形態を詳細に説明する。この発明の機器制御装置は、以下に説明する制御装置A,Bそれぞれに相当する。
【0033】
(他の制御装置に接続された他の機器へのアクセスの概要)
図1は、制御装置から他の制御装置に接続された機器へのアクセスの概要を説明する図である。制御装置Aには機器Xが接続され、制御装置Bには機器Yが接続されており、制御装置Aがネットワークを介して機器Yへアクセスする例を説明する。
【0034】
制御装置Aは、CPUがアプリケーション等のプログラムP1を実行し、このプログラムP1は、制御装置Bに接続された機器Yの情報の取得にかかる処理(図示の例ではRead関数をcall)を行い(ステップS101)、Readコマンドを発行する(ステップS102)。
【0035】
次に、制御装置AのプログラムP1の下位層は、機器Yに対するコマンドを解釈し、機器Yの制御情報が示された処理テーブルTを参照し、機器Yの情報を取得するコマンドを発行する(ステップS103)。処理テーブルTは、機器Yが接続された制御装置Bに予め用意されるものである。
【0036】
ステップS103では、制御装置Aは、処理テーブルTを制御装置B等から取得したものを参照する。また、制御装置Aは、ステップS103により発行されたコマンドを、汎用の通信I/Fを介して制御装置Bに送信する。
【0037】
ここで、制御装置Aは、機器Yを制御するコマンドそのものを送信するのではなく、処理テーブルTの参照により、コマンドを解釈してこのコマンドに対応する制御の要求を送信する。制御装置Bは、処理テーブルTを有しており、処理テーブルTの参照により、制御装置Aから送信された要求に対応する制御を行うことができる。
【0038】
制御装置Bでは、制御装置AからのReadコマンドを受け取り、Readコマンドに対応して、機器Yから情報を取得し(ステップS104)、制御装置Aに対して情報を送付する(ステップS105)。
【0039】
図2Aは、制御装置のハードウェア構成例を示すブロック図である。
図2において、制御装置Aは、制御部(CPU)201と、Read-Only Memory(ROM)202と、Random Access Memory(RAM)203と、半導体メモリやディスクドライブ等の補助記憶部204と、通信インタフェース(I/F)205と、を含む。これらCPU201~通信インタフェース205は、バス206によってそれぞれ接続されている。
【0040】
また、この制御装置Aには、バス206を介して被制御装置である機器Xが接続される。制御装置Aは、通信I/F205あるいは入出力I/F210を介して制御装置Aに接続されてもよい。
【0041】
入出力I/F210には、ディスプレイ、キーボード、マウス、スキャナ、プリンタ、ディスプレイ等を接続することができる。
【0042】
CPU201は、制御装置Aの全体の制御を司る演算制御装置である。ROM202は、制御装置Aのプログラム等を記憶する不揮発性メモリである。RAM203は、CPU201によるプログラムの演算処理実行時のワークエリアとして使用される揮発性メモリである。
【0043】
通信I/F205は、ネットワークNWと内部のインタフェースを司り、制御装置Bとの間のデータの入出力を制御する。具体的に、通信I/F205は、通信回線を通じてネットワークNWとなるLocal Area Network(LAN)、Wide Area Network(WAN)、インターネットなどに接続され、ネットワークNWを介して制御装置Bに接続される。通信I/F205には、例えば、ルータ、モデム、LANアダプタなどを採用することができる。
【0044】
図2Aに示したCPU201は、ROM202に格納されたプログラムP1を実行し、この際RAM203を作業領域として用いることにより、
図1に示した処理を行うことができる。
【0045】
制御装置Bについても、制御装置A同様に
図2Aに記載のハードウェアにより構成することができる。この際、
図2Aに示したRAM203(あるいは補助記憶部204)は、
図1に示した処理テーブルTを保持する。
【0046】
図2Bは、実施の形態にかかる制御装置の機能ブロック図である。制御装置Aは、オブジェクト生成部210、通信処理部211、パケット処理部212、通信部213を含む。制御装置Bも制御装置Aと同様の機能を有する。
【0047】
オブジェクト生成部210は、制御装置Aに接続された機器X、またはネットワークを介して他の制御装置Bに接続された他の機器Yを制御するためのオブジェクトを生成する。例えば、オブジェクト生成部210は、制御対象の機器Xまたは他の機器Yを制御するための名前と、関数名と引数情報からなるオブジェクトを生成する。
【0048】
通信処理部211は、ネットワークNWの情報に含まれる機器Xまたは他の機器Yの通信パラメータを参照して、生成されたオブジェクトにアクセスする情報を得る。例えば、通信処理部211は、予め設定したネットワークNWの情報に含まれる機器Xまたは他の機器Yの通信方式、および通信パラメータを参照して、オブジェクトにアクセスする情報を取得する。
【0049】
パケット処理部212は、生成されたオブジェクトを所定のパケットに変換し、通信方式に対応するポートを選択してパケットを出力する。例えば、パケット処理部212は、オブジェクト名、関数名、および引数情報を所定のパケットに変換し、通信方式に対応するポートを選択して、パケットを通信部213に出力する。
【0050】
通信部213は、パケットを該当する機器X、または他の機器Yが接続された他の制御装置Bに送信する。また、通信部213は、自身の制御装置AがネットワークNWに参加時、自身のオブジェクト名をネットワークNWに配信する。また、通信部213は、自身の制御装置Aが所望するオブジェクトが生じたとき、オブジェクト名をネットワークNWに問い合わせ、オブジェクト名を有する他の制御装置BからネットワークNWの情報を取得する。また、通信部213は、自身の制御装置Aが新たなオブジェクトを追加したとき、当該オブジェクト名をネットワークNWに配信する。
【0051】
図3は、機器制御システムの全体構成を示す図である。機器制御システム300は、制御装置Aと制御装置BとがネットワークNWを介して接続されている。
【0052】
制御装置Aには機器Xが接続され、制御装置Aは機器Xを制御する。制御装置Bには、機器Yが接続され、制御装置Bは機器Yを制御する。
【0053】
制御装置Aは、ネットワークNWを介して制御装置Bを複数接続することができる。また、制御装置Bには、異なる機能等の機器Yを複数接続することができる。これら制御装置Bと機器Yは、固有のIDにより識別できる。
【0054】
制御装置Aは、ネットワークNWを介していずれかの制御装置Bに接続された機器Yを直接制御する。制御装置A、および制御装置Bは、ネットワークNWに接続可能な汎用の通信I/Fと通信プログラムを備えている。
【0055】
図4は、制御装置の制御プログラム例を示す図である。
図4の(a)は、制御装置Aに接続されている機器Xの制御プログラム例である。また、
図4の(b)は、制御装置Bに接続されている機器Yの制御プログラム例である。
【0056】
図4の(a),(b)のプログラムP1が示す制御内容は同じものとなる。このように、制御装置Aは、被制御対象である機器X、機器Yが自身(制御装置A)に接続されている/いないにかかわらず、プログラム内容は同じとなる。
【0057】
したがって、プログラマは、制御装置AのプログラムP1を作成する際に、機器X、および機器Yについて、制御装置Aと制御装置B間の通信にかかる処理を意識することなく、プログラムP1を作成することができるようになる。
【0058】
また、制御装置A、制御装置Bに接続される機器X、機器Yの故障や機能変更等に応じてハードウェアの変更が生じた場合、制御装置Bの処理テーブルTを変更するだけで対応できる。この際、
図4に示したプログラムP1(アプリケーション層のソフトウェア)の変更は不要にできる。
【0059】
図5は、制御装置が他の制御装置の機器にアクセスするための具体例を説明する図である。この例では、機器Yが接続された制御装置Bは、起動時にプログラムP2が上記の処理テーブルTとして関数呼び出しテーブルT2を作成する。なお、関数呼び出しテーブルT2は、プログラムP2の起動時に限らず、任意のタイミングで作成してもよく、手作業で作成したものを外部から入力する構成としてもよい。
【0060】
このプログラムP2には、起動時に関数呼び出しテーブルT2を作成する処理と、機器Yの情報を取得する処理(readPort)と、読み出した情報に対して所定の関数演算等の処理と、が記述(設定)されている。
【0061】
関数呼び出しテーブルT2は、機器YのID(ID1)と、この機器Yが接続された制御装置Bのポートのアドレスからなる。この例では、ID1には、機器Yから情報を読み出すためのreadPortのアドレスが設定されている。このほか、関数呼び出しテーブルT2は、
図1の処理テーブルTに示したように、ID別に書き込み(Write)、起動(Start)、停止(Stop)等の制御機能をそれぞれ設定しておくことができる。
【0062】
関数呼び出しテーブルT2の設定は、
図5に示したように「readPort」のような文字列に限らず、ポートを読む旨を示す「1001」のような数値列としてもよい。
【0063】
通信処理タスク503は、ネットワークNWに対する制御装置Aとの間の通信処理(受信および送信)を実行し、制御装置Aから機器Yに対する要求時には、該当するIDを用いた関数呼び出しテーブルT2を検索し、要求に対応したプログラムP2の関数演算を実行する。
【0064】
以下、実施の形態にかかる制御装置Aから機器Yへのアクセスを行うための手順を順に説明する。はじめに、制御装置BのプログラムP2が起動すると、制御装置Bは、関数呼び出しテーブルT2を作成する(ステップS501)。
【0065】
この際、制御装置BのプログラムP2は、制御装置Bに接続されている機器Yの接続ポートを検出し、情報を読み出す機能のIDにreadPortのアドレスを関連付けた設定を関数呼び出しテーブルT2に作成する。同様に、制御装置Bは、制御装置Bが実行可能な制御(関数演算等)の機能について、所定のID(図示の例ではID2)を関数呼び出しテーブルT2に設定する。
【0066】
そして、制御装置Aは、制御装置Bが作成した関数呼び出しテーブルT2を任意のタイミングで取得する。制御装置Aによる、関数呼び出しテーブルT2の取得タイミングは、機器Yの機能、およびこの機器Yが接続されている制御装置Bの所在等を把握している場合には、制御装置Aが直接、制御装置Bにアクセスして取得する。
【0067】
また、制御装置BがネットワークNW上に関数呼び出しテーブルT2を公開している場合がある。この場合、この公開された関数呼び出しテーブルT2を参照した制御装置Aのうち、機器Yの制御を所望する(情報を取得要求する)制御装置Aが、制御装置Bにアクセスして取得する構成とすることもできる。
【0068】
この後、制御装置Aが制御装置Bに対して、機器Yの情報を取得する制御を行ったとする(ステップS502)。例えば、制御装置AのプログラムP1が機器Yの情報の取得にかかる処理(ObjY.readData())を実行する。
【0069】
この場合、制御装置AのプログラムP1は、機器Yに対するreadコマンド(readData()を発行する(ステップS503)。そして、制御装置AのプログラムP1の下位層は、機器Yに対するコマンドを解釈し、制御装置Bから取得しておいた関数呼び出しテーブルT2を参照し、機器Yの情報の取得に該当する識別子ID1を指定して、機器Yの情報を取得するコマンド(readPort(他))に対応する要求ID1を制御装置Bに送信する(ステップS504)。他とは、他の制御装置Bのポートを示す。
【0070】
ここで、制御装置Aは、制御装置Bに対して機器Yの制御のコマンドそのものを送信するのではなく、関数呼び出しテーブルT2の参照により、制御内容を含む識別子IDだけを送信すればよいため、送信するデータ量を削減できる。
【0071】
(組み込み機器のプログラムの具体例)
図6は、組み込み機器におけるプログラム作成の具体例を示す図である。実施の形態の制御装置Aおよび制御装置Bは、組み込み機器、例えば、リモコンやデジカメ、ICレコーダ、車載装置、医療装置、監視カメラや侵入検知器等、用途(動作)が限定された特定用途の機器X,Yの制御部として機能する。
【0072】
図6に示すプログラムP1には、クラスの定義601に基づき、制御装置Aの制御ソフト1のオブジェクト602と、コマンド603が定義される。オブジェクト602の装置(機器X)は、自コンピュータ(制御装置A)上にあることを示し、ObjXは、内部のフラグ(flg)に自コンピュータの情報をセットする。オブジェクト602の装置(機器Y)は、他コンピュータ(制御装置B)上にあることを示し、ObjYは、内部のフラグ(flg)に他コンピュータの情報をセットする。
【0073】
そして、プログラムP1は、読み出し(readData)のコマンド603について、自コンピュータ(制御装置A)に対するものであれば、指定の自インタフェース(I/Oポート)からデータをreadしてその値をリターンする。また、プログラムP1は、読み出し(readData)のコマンド603について、他コンピュータ(制御装置B)に対するものであれば、該当する制御装置Bと会話して、返された値をリターンする。
【0074】
図5に戻り説明すると、制御装置Bは、通信処理タスク503が制御装置Aからの要求ID1を受信する(ステップS505)。通信処理タスク503は、関数呼び出しテーブルT2を参照し(ステップS506)、プログラムP2に識別子ID1に対応する関数(readPort)を実行させる(ステップS507)。
【0075】
この後、制御装置Bは、プログラムP2がID1に対応して、I/Oポート読出処理を行い、該当する機器Yの情報を読み出し(readPort)、通信処理タスク503に返す(ステップS508)。
【0076】
そして、制御装置Bは、通信処理タスク503がreadPortの結果、読み出した機器Yの情報を制御装置Aに送信する(ステップS509)。
【0077】
制御装置Aは、プログラムP1が発行したreadPort(他)の返答として機器Yから送信された情報をreadData()に変換し(ステップS510)、機器Yの情報の取得にかかる処理(ObjY.readData())の結果として、対応する機器Yの情報を取得する(ステップS511)。
【0078】
上記処理によれば、制御装置Aは、自装置内の処理であるか、制御装置Bの処理であるかを、プログラムP1が指定する引数(アクセス対象名)によって切り分ける。この際、制御装置Aは、外部(制御装置B)へのアクセスについては、予め取得した関数呼び出しテーブルT2を参照し、該当する制御装置Bにアクセスする。
【0079】
また、制御装置Bの通信処理タスク503と関数呼び出しテーブルT2は、ソフトウェア実行に限らず、ハードウェアチップを用いて構成することもできる。
【0080】
また、上記の関数呼び出しテーブルT2は、上述したように、制御装置Aが取得するに限らず、制御装置BがネットワークNW上に公開する構成とすることもできる。そして、関数呼び出しテーブルT2が示す、機器Yの機能(Read,Write,Start,Stop)は、ネットワークNW上の任意の制御装置Aによって取得し、制御(使用)できるようになる。
【0081】
すなわち、制御装置Aは、関数呼び出しテーブルT2を取得することにより、制御装置Bに接続された機器Yの機能を知ることができ、制御装置Aは、ネットワークNWの通信方式(手順)を隠蔽して制御装置Bに接続された機器Yを制御できるようになる。
【0082】
これにより、制御装置Aは、機器Xと機器Yが同一の部屋内や異なる場所に設置された場合においても、この設置場所に限定されず、機器Yを制御できるようになる。
【0083】
例えば、制御装置Aは、同一の部屋内に設けた異なる機能の機器Xと、機器Yの異なる監視機能を制御できるようになる。一方、制御装置Aは、制御装置Aで処理できない演算を制御装置Aの制御によって遠隔地の制御装置Bにより演算処理できるようになる。
【0084】
さらに、制御装置Bの関数呼び出しテーブルT2は、ネットワークNW上のサーバに保持しておくこともでき、複数の制御装置B毎の関数呼び出しテーブルT2として保持できる。これにより、所定の機能を要求する制御装置Aは、サーバへのアクセスによって該当する機能(機器Y)を容易に検索することができるようになる。また、制御装置Aは、機器Yが接続された制御装置Bへのアクセスを容易に行えるようになる。
【0085】
上記実施の形態によれば、制御装置Aおよび制御装置Bは、処理実行するCPUやOSに依存せず、互いに自制御装置あるいは他の制御装置に接続されている機器Xおよび機器Yをネットワーク接続の有無に関係なく簡単に制御できるようになる。
【0086】
また、制御装置Aは、自制御装置Aにないメモリのリード/ライトや、関数実行についても同様に行えるようになる。したがって、制御装置Aと制御装置Bは、ネットワーク接続されたものに限らず、同一装置内での異なるCPU間通信についても同様に適用することができる。
【0087】
これにより、制御装置Aは、自制御装置Aに接続された機器Xに対するクローズド制御に限らず、ネットワーク等を介して他の制御装置Bに接続された他の機器Yについても、通信(プロトコル)を意識せずに制御でき、プログラム作成についても通信を意識せずに作成できるため、プログラム作成を容易に行えるようになる。すなわち、制御装置Aは、間に介在するネットワークの通信プログラムや専用I/Fを追加せずとも他の制御装置Bの機器Yを制御できるようになる。
【0088】
関数呼び出しテーブルT2は、制御装置Bに接続された機器Yが故障や仕様変更などでの交換や、追加の場合に更新される。これにより、制御装置Aは、機器Yの機能が変更された場合であっても、関数呼び出しテーブルT2を参照するだけで、所望する機器Yの制御を行え、また、機器Yが交換等されてもプログラム変更を不要にできる。
【0089】
そして、制御装置A,B同様に、特定用途の機能を有する組み込み機器は、他の装置に対する制御を行って機能拡張が行えるようになる。また、制御装置A,B同様に、汎用のPC等の情報制御装置は、所望する機能の機器X,Yに対する制御を容易に行えるようになる。具体的には、これら組み込み機器や情報制御装置は、ECHONETやAUTOSAR等の規格に縛られず、専用I/Fや専用の通信プログラムを設けなくても、任意の他の機器X,Yに対する制御が可能となる。
【0090】
(物理的位置に依存しないシームレスな装置アクセスの具体例)
図7は、異なる制御装置に接続された機器へのアクセスの具体例を示す図である。制御装置Aと、制御装置Bは、それぞれ、アプリケーションプログラム703と、コア層704と、外部と通信を行う通信装置や、装置内のボードとのアクセス処理の実装部705と、プラットフォーム(ハードウェア、OS、ドライバ)706と、を有する。
【0091】
制御装置Aの通信層1(705a)は、制御装置Aに直接接続される機器Xにアクセスする他、ネットワーク710を介して制御装置Bの機器Yにアクセス可能である。通信層2(705b)は、制御装置A内のボードx等にアクセス可能である。同様に、制御装置Bの通信層1(705a)は、制御装置に直接接続される機器Yにアクセスする他、ネットワーク710を介して制御装置Aの機器Xにアクセス可能である。通信層2(705b)は、制御装置B内のボードy等にアクセス可能である。
【0092】
コア層704は、Basic Class Library731と、処理部X732と、通信方式抽象化層1(733)と、通信方式抽象化層2(734)と、プラットフォーム抽象化層1(735)と、プラットフォーム抽象化層2(736)とを有する。Basic Class Library731は、複数のオブジェクト、例えばI/O処理、リアルタイムモニタ、イベント監視、異常監視、データ収集、一括設定等の各種オブジェクトを管理する。
【0093】
処理部X732は、Basic Class Library731からコールされるオブジェクト関連の処理に対応して、下記のタイプ1~3の処理を行う。
【0094】
1.アプリケーションプログラムが、オブジェクトに対して要求する処理について、オブジェクトがアプリ内部に存在するのか、LAN上に存在するのか、さらにWAN上に存在するのかを確認する。
【0095】
2.処理部X732は、アプリケーションプログラムからBasic Class Library731経由で呼び出される各処理要求の中で指定されたName(名前)の実態を取り出す処理を行う。この名前の実態は、ネットワーク設定で予め設定されている。
【0096】
3.処理部X732は、オブジェクトがLAN/WAN上に存在する場合には、そのオブジェクトに対する通信経路を確保し、リクエストを送受信する。
【0097】
通信方式抽象化層1(733)は、処理部X732からコールされる通信処理を抽象化するためのI/Fである。通信方式抽象化層1(733)の各関数は、各アクセス対象への個別の通信処理を実装した通信層1(705a)の関数をコールする。
【0098】
プラットフォーム抽象化層1(735)は、Basic Class Library731からコールされるプラットフォーム依存処理を抽象化するためのI/Fである。プラットフォーム抽象化層1(735)の各関数の中からは、各アクセス対象への個別のアクセス処理やOSが提供する機能を適合させて実現するRTOS処理等を実装した通信層2(705b)の関数をコールする。
【0099】
通信層1(705a)は、通信方式抽象化層2(734)からコールされる各アクセス対象への個別の通信処理の実装部である。通信層1(705a)は、処理部X732→通信方式抽象化層1733→通信方式抽象化層2(734)経由で渡される引数(handle)によってアクセス対象を特定して、対応する実装処理を行う。
【0100】
通信層2(705b)は、プラットフォーム抽象化層2(736)からコールされる各アクセス対象への個別のアクセス処理やOSが提供する機能を適合させて実現するRTOS処理などを作成する実装部である。通信層2(705b)は、処理部X732→プラットフォーム抽象化層1(735)→プラットフォーム抽象化層2(736)経由で渡される引数(handle)によってアクセス対象を特定して、対応する実装処理を行う。
【0101】
(制御装置Aによる機器X,Yの具体的制御例)
図8は、他の制御装置のオブジェクト読み出しを説明する図である。以下、機器X,Yが印字処理するプリンタを例に、処理の流れ順に説明する。
【0102】
1.制御装置Aでは、はじめに、アプリケーションプログラム703により名前を指定してオブジェクトを生成し、オブジェクトがもつ関数を呼び出す。
【0103】
2.次に、制御装置Aは、処理部X732により、Network Configuration Data800の内容に基づき、オブジェクト名によりオブジェクトにアクセスするための通信方式、通信パラメータ(位置情報)を解決する。
【0104】
3.4.そして、制御装置Aは、処理部X732により、オブジェクト名や関数名、および、引数情報をパケットに変換し、抽象化層733~736を介して、2.で解決した通信方式を実装するポートにこれを引き渡す。この際、制御装置Aの外部に出て行くパケットは所定の暗号化を施す。
【0105】
5.制御装置Bでは、処理部X732でパケットを受信し、暗号化されたパケットを復号する。さらに、バイトデータからオブジェクト名、関数名、引数情報を復元し、印字処理の実態を呼び出す。
【0106】
6.上記5.の印字処理の実態は、プラットフォーム抽象化層1(735)/プラットフォーム抽象化層2(736)を介して実際の印字を行う。
【0107】
7.制御装置Bのプラットフォーム抽象化層1(735)/プラットフォーム抽象化層2(736)は、印字処理の結果である戻り値を受け取る。
【0108】
8.制御装置Bの通信方式抽象化層1(733)/通信方式抽象化層2(734)は、戻り値をパケットに変換し、暗号化して呼び出し元(制御装置A)に送信する。
【0109】
9.制御装置Aの処理部X732は、戻り値を含むパケットを受信し、暗号化されたパケットを復号する。
【0110】
10.制御装置AのBasic Class Library731は、戻り値を呼び出し元(アプリケーションプログラム703)に返却する。
【0111】
上記処理において、制御装置Aのアプリケーションプログラム703が自制御装置Aに接続されたプリンタXにアクセスし、印字処理する場合には、
図8の1.2.3.4.7.10の処理を実行する。この際、制御装置Aの処理部X732では、名前の実態をNetwork Configuration Data800により、制御装置Aに接続されたプリンタXのシリアルポートの情報に基づき接続先を解決する。
【0112】
また、制御装置Aのアプリケーションプログラム703が他の制御装置Bに接続されたプリンタYにアクセスし、印字処理させる場合には、
図8の1.~10.の処理を順次実行する。この際、制御装置Aの処理部X732では、名前の実態をNetwork Configuration Data800により、制御装置Bへの接続方法(外部通信、アドレス等の位置情報に基づき接続先を解決する。
【0113】
(CPUA,B間の通信の制御例)
上記説明では、異なる制御装置A,Bに接続された機器X,Yの制御例を説明したが、これに限らず、異なるCPUA,B間の通信の制御にも同様に適用することができる。
【0114】
図9は、異なるCPUが共有メモリによってデータを送受信する構成例を示す図である。このような共有メモリ900を介した同一装置内のCPUA,B間での機能呼び出しも可能になる。具体的には、CPUAのアプリケーションプログラム703が他のCPUBに接続されたプリンタYにアクセスし印字処理させる場合には、共有メモリ900を介して
図8に示した1.~10.の処理を順次実行する。CPUAの処理部X732では、名前の実態をNetwork Configuration Data800により、CPUBへの接続方法(外部通信、CPUB、の情報)に基づき接続先を解決する。
【0115】
この場合、CPUA,CPUBの通信方式抽象化層1(733)と、通信方式抽象化層2(734)を、共有メモリ900を介して実装するポーティング層に差し替えるだけで対応可能になる。制御装置Aのアプリケーションプログラム703は、
図8に示したネットワークを介する場合の例と全く変わらずシームレスに処理を実行できる。
【0116】
(アプリケーションの公開インタフェース呼び出しの例1)
図10は、アプリケーションの公開インタフェースの呼び出しを説明する図である。制御装置A,Bには、それぞれアプリケーションプログラム703と、Basic Class Library731との間にUser Extended Classes1001を設ける。User Extended Classes1001では、Basic Class Library731のクラスを継承して、独自のクラスを定義し、その機能を制御装置Aの外部から呼び出せる形で公開する。
図10の例では、User Extended Classes1001がプリンタクラスを継承したUser Printerクラスを定義し、制御装置A,B間でこの機能を呼び出した際の流れを示している。
【0117】
図10に示すように、制御装置Aのアプリケーションプログラム703が自制御装置Aに接続されたプリンタXにアクセスし、印字処理する場合には、
図10の1.2.3.4.7.10の処理を実行する。この際、制御装置Aの処理部X732では、名前の実態をNetwork Configuration Data800により、制御装置Aに接続されたプリンタXのシリアルポートの情報に基づき接続先を解決する。
【0118】
また、制御装置Aのアプリケーションプログラム703が他の制御装置Bに接続されたプリンタYにアクセスし、印字処理させる場合には、
図10の1.~10.の処理を順次実行する。この際、制御装置Aの処理部X732では、名前の実態をNetwork Configuration Data800により、制御装置Bへの接続方法(外部通信、アドレス等の位置情報)に基づき接続先を解決する。
【0119】
そして、制御装置BのUser Extended Classes1001では、10.プリンタクラスを継承したUser Printerクラスを定義し、例えばネットワーク上に公開する。これにより、制御装置Aは、他の制御装置B,C,…が公開されたUser Printerクラスに基づき、該当するプリンタYへのアクセスが可能となる。
【0120】
図11は、リモート呼び出し可能な公開インタフェースの定義例を示す図表である。
図11に示す例では、C言語で表現される構造により、インタフェースを定義している。これにより、制御装置Aは、名前により他の制御装置Bをリモート呼び出しすることができる。
【0121】
図11に示す例では、引数リストや返却値リストには、型のサイズや型のデータをパケット化、およびパケットから復元する関数へのポインタをもつ。例えば、他の制御装置Bは、インタフェース名と、インタフェースを実装する関数へのポインタを、公開インタフェースのリストとしてネットワーク上で公開することで、制御装置Aは、他の制御装置Bを呼び出すことができる。
【0122】
さらに、各制御装置A,B~nは、上記公開するリストと、Network Configuration Data800から得られる位置情報をネットワークにブロードキャストし、各ノード(制御装置A,B~n)がこれらの情報を保持することにより、各制御装置A~nは、互いに公開しているインタフェース情報を共有することができる。
【0123】
(アプリケーションの公開インタフェース呼び出しの例2)
図12は、アプリケーションの公開インタフェースの呼び出しを説明する図である。
図12に示すように、制御装置A,Bは、アプリケーションのオブジェクト自身に、複数のオブジェクトの機能を機能群xとして定義し、機能群xを使用するためのインタフェースを公開する構成とすることもできる。
【0124】
図12の例では、制御装置Aが制御装置Bの機器(プリンタ)Yにアクセスする際に、上記1.~10.同様の手順でアクセスし、その過程において制御装置Bは、集計した結果を6.7.データベースクラスと、プリンタクラスを作成し、データベースクラスをデータベース1200に登録する。また、集計結果をプリンタYからレポート出力する。
【0125】
制御装置Bのアプリケーションプログラム703は、機能群xを制御装置Bに接続された外部インファーフェースとして外部に公開する。同様に、制御装置Aは、制御装置Aの機能群についてデータベース1200に登録する。
【0126】
(ネットワーク接続のNAT越えについて)
実施の形態では、制御装置A,B間のネットワーク接続において、例えば、相手側のNAT装置を用いたプライベートネットワークに属するホストを直接指定できない(NAT通過できない)問題について、NAT越えのための情報を登録しておくことで解決できる。
【0127】
図13は、制御装置間のNAT越えの構成例を示す図である。NATを越えてオブジェクトにアクセスする場合は、制御装置A,Bは、ロケーションサーバ1300を用いてオブジェクトの位置情報を管理する。
図13の例では、制御装置Bの起動時に、オブジェクトは、制御装置B自身の位置情報をロケーションサーバ1300に登録する(ステップS1301)。
【0128】
この制御装置Bにアクセスする制御装置Aの処理部X732は、通信に先立って、アクセス先のオブジェクトの位置情報をロケーションサーバ1300に問い合わせる(ステップS1302)。制御装置Aは、問い合わせた結果得られる位置情報(Network Configuration Data800の制御装置Bのゲートウェイアドレス)を使用して、制御装置Bのリモートオブジェクトにアクセス可能となる。なお、一度解決した位置情報は、制御装置Aのメモリ等にキャッシュすることで、制御装置Aは、次回の呼び出し時にはロケーションサーバ1300に問い合わせることなく、制御装置Bを高速に呼び出すことができる。
【0129】
(制御装置のシステム拡張例)
次に、ネットワーク上で制御装置が他の制御装置のオブジェクトを直接検知するシステム拡張例について説明する。上記説明では、制御装置A,B間で事前に設定したパラメータ(オブジェクト名、ネットワークパラメータ)を参照することで、制御装置A,B間で相互にオブジェクトの呼び出しを行う。あるいは、制御装置A,Bがサーバにパラメータを登録しておき、制御装置A,Bがサーバに登録されたパラメータを参照することで、制御装置A,B間で相互にオブジェクトの呼び出しを行う。このような事前設定による静的な通知に対し、以下の説明では、サーバ等を配置せず、制御装置A,B間のみで直接、動的にオブジェクトを通知する各例について説明する。
【0130】
図14は、新規参加の制御装置による他の制御装置への通知例を示す図である。
図14(a)に示すように、ネットワークNW上に制御装置(センサーデバイス)Aが新規参加したとする。この場合、センサーデバイスAは、ネットワークNW上に挨拶のDiscover通知1401をブロードキャスト等で配信して他の制御装置(スマートホン)B、制御装置(センサーデバイス)C、制御装置(スマートホン)Dに通知する。
【0131】
この際、センサーデバイスAは、自身が持つパラメータ(オブジェクト名等)を含めて通知する。なお、不図示であるが制御装置(センサーデバイス)Aは、例えば、上述した機器X(例えばセンサー)の機能を含み、他の制御装置B~Dについても機器Y等の機能を含む。
【0132】
この後、
図14(b)に示すように、センサーデバイスAのDiscover通知1401を受け取った他の制御装置B~Dは、センサーデバイスAが保有するオブジェクト名を知る。そして、センサーデバイスAの参加許可後、これら他の制御装置B~Dは、それぞれが保有するオブジェクト名をセンサーデバイスAに返す返答通知1402を行う。これにより、制御装置(センサーデバイス)Aは、他の制御装置B~Dがそれぞれ保有するオブジェクト名を知ることができ、他の制御装置B~Dのサービス(機器X,Yに相当する機能)をリモートで呼び出すことができる。
【0133】
図15は、制御装置から他の制御装置への問い合わせ例を示す図である。
図14等の制御により参加済みの制御装置(スマートホン)BがネットワークNW上のいずれかの制御装置A,C,Dの新たなオブジェクト(サービス)を検出する例を説明する。
【0134】
図15(a)に示すように、スマートホンBは、自身が呼び出したい所望のオブジェクトのネットワークの情報(通信方式、通信パラメータ等)を知らない状態であるとき、スマートホンBは、問い合わせるオブジェクト名を含むLookup通知1501をネットワークNWにブロードキャスト等で配信する。
【0135】
この後、
図15(b)に示すように、スマートホンBのLookup通知1501を受け取った制御装置A,C,Dのうち、該当するオブジェクト名をセンサーデバイスCが持っていたとする。この場合、制御装置(センサーデバイス)Cは、スマートホンBへオブジェクト名に対応するネットワークパラメータを通知する(通知1502)。これにより、制御装置(スマートホン)Bは、制御装置(センサーデバイス)Cが保有するサービスをリモートで呼び出すことができる。
【0136】
図16は、制御装置で新たにサービス追加を行った際の通知例を示す図である。
図14等の制御により参加済みの制御装置(センサーデバイス)Aが新たなサービスを追加した場合、このセンサーデバイスAは、新たなサービスに対応するオブジェクト名を追加し、オブジェクト名とネットワークパラメータの関連付けの処理(Bind)を行う。そして、センサーデバイスAは、動的に追加した新しいオブジェクト名1601をネットワークNWを介して他の制御装置B~Dにブロードキャストで通知する。これにより、制御装置(センサーデバイス)Aは、新しいサービスを保有していることを、他の制御装置B~Dに通知することができ、他の制御装置B~Dでは、制御装置(センサーデバイス)Aが有するサービスをリモートで呼び出すことができる。
【0137】
(従来技術の問題点)
図17は、従来のネットワーク接続された他の装置の制御処理プログラム例を示す図である。
図17の(a)に示すように、制御装置Aに接続された機器Xへのアクセス(オープン、クローズ)については、通信にかかる処理を考慮せずに、少ない工数でプログラミングできる。
【0138】
しかしながら、
図17の(b)に示すように、制御装置Aが他の制御装置Bに接続された機器Yへアクセス(オープン、クローズ)する場合には、制御装置Aと制御装置Bとの間のネットワークの通信にかかる通信プログラムに追加行1001a~1001c、および修正行1002が必要となり、作業工数が増えてしまう。
【0139】
従来、制御装置は直接接続された機器に対する制御を行い、他の制御装置も直接接続された他の機器に対する制御を行うクローズドシステムであり、これらクローズドシステム間を跨いでの機器制御はネットワークの通信が間に介在するため、通信処理のプログラムが別途必要となった。このため、従来、制御装置がネットワークを介して他の機器を制御するためには、プログラミングのステップ数が大幅に増えるという問題を生じる。また、制御対象を、制御装置に接続されている機器からネットワーク上の他の機器に変更する場合、プログラムの変更工数が増大するという問題が生じる。
【0140】
上述の説明では、制御装置Aと制御装置Bがネットワークを介して接続されることを前提に説明したが、これら制御装置A,Bがそれぞれ分散・マルチコアのCPU、共有メモリ等を備えた構成においても、CPU間の通信において同様の問題を生じる。
【0141】
これに対し、実施の形態では、制御装置Aは、制御対象の機器XまたはネットワークNWを介して接続された他の制御装置Bに接続された他の機器Yを制御するための名前と、関数名と引数情報からなるオブジェクトを生成する。そして制御装置Aは、ネットワークNWの情報に含まれる機器Xまたは他の機器Yの通信方式、および通信パラメータを参照して、オブジェクトにアクセスする情報を得て、オブジェクト名、関数名、および引数情報を所定のパケットに変換し、通信方式に対応するポートを選択して、パケットを該当する機器X、または他の機器Yが接続された他の制御装置Bに送信する。
【0142】
これにより、制御装置Aは、制御装置Bに接続された機器Yの機能を知ることができ、制御装置Aは、ネットワークNWの通信方式(手順)を隠蔽して制御装置Bに接続された機器Yを制御できるようになる。この際、制御装置Aは、制御装置Bに対して機器Yの制御のコマンドそのものを送信するのではなく、制御装置Bの処理テーブルTの参照により、制御内容を含む識別子IDだけを送信すればよいため、送信するデータ量を削減できる。
【0143】
また、制御装置Aに接続された機器Xの制御と、ネットワークNW上の他の制御装置Bに接続された他の機器Yの制御方法が異なった場合でも、制御装置Aは、機器Yに直接アクセスしてプログラミング可能である。そして、制御装置Aは、ネットワークNWを介して他の制御装置Bに接続された他の機器Yを制御する際、ネットワークの通信プログラムの追加が不要であり、ネットワーク間通信に新たに専用のI/Fを設ける必要がない。
【0144】
なお、本発明の実施の形態で説明したプログラムは、予め用意されたプログラムを機器制御装置のプロセッサに実行させることにより実現することができる。また、本プログラムは、ハードディスク、フレキシブルディスク、CD-ROM(Compact Disc-Read Only Memory)、DVD(Digital Versatile Disk)、フラッシュメモリ、USB(Universal Serial Bus)メモリ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本プログラムは、インターネット等のネットワークを介して配布してもよい。
【産業上の利用可能性】
【0145】
以上のように、本発明は、制御装置に接続された装置以外の他の装置を制御する各種制御装置、例えば、特定用途の機能を有する組み込み機器や汎用の機器制御装置、およびこれら組み込み機器や機器制御装置のソフトウェア開発に有用である。
【符号の説明】
【0146】
201 制御部(CPU)
202 ROM
203 RAM
204 補助記憶部
205 通信I/F
300 機器制御システム
503 通信処理タスク
601 クラスの定義
602 オブジェクト
603 コマンド
703 アプリケーションプログラム
704 コア層
705 実装部
710 ネットワーク
733~736 抽象化層
900 共有メモリ
1300 ロケーションサーバ
A,B 制御装置
X,Y 機器
NW ネットワーク
P1,P2 プログラム
T 処理テーブル
T2 関数呼び出しテーブル