JP2009223403A - 制御システム、制御装置および制御方法 - Google Patents

制御システム、制御装置および制御方法 Download PDF

Info

Publication number
JP2009223403A
JP2009223403A JP2008064431A JP2008064431A JP2009223403A JP 2009223403 A JP2009223403 A JP 2009223403A JP 2008064431 A JP2008064431 A JP 2008064431A JP 2008064431 A JP2008064431 A JP 2008064431A JP 2009223403 A JP2009223403 A JP 2009223403A
Authority
JP
Japan
Prior art keywords
function
unit
channel
identification information
argument
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2008064431A
Other languages
English (en)
Other versions
JP4919995B2 (ja
Inventor
Yusuke Doi
井 裕 介 土
Yu Kaneko
子 雄 金
Tomonori Maekawa
川 智 則 前
Masahiro Ishiyama
山 政 浩 石
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba Corp
Original Assignee
Toshiba Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Toshiba Corp filed Critical Toshiba Corp
Priority to JP2008064431A priority Critical patent/JP4919995B2/ja
Priority to US12/403,073 priority patent/US8805557B2/en
Publication of JP2009223403A publication Critical patent/JP2009223403A/ja
Application granted granted Critical
Publication of JP4919995B2 publication Critical patent/JP4919995B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/042Programme control other than numerical control, i.e. in sequence controllers or logic controllers using digital processors
    • G05B19/0421Multiprocessor system
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/20Pc systems
    • G05B2219/25Pc structure of the system
    • G05B2219/25017ASI actuator sensor interface, bus, network
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/20Pc systems
    • G05B2219/25Pc structure of the system
    • G05B2219/25232DCS, distributed control system, decentralised control unit

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Automation & Control Theory (AREA)
  • Programmable Controllers (AREA)

Abstract

【課題】各ユーザからの多数のプログラムを同一の環境で動作させるとき効率良いプログラムの実行を可能とする。
【解決手段】複数の外部センサからのセンサ値に基づいて、あらかじめ与えられた複数の関数を実行することにより複数のアクチュエータを制御する制御装置と、前記制御装置に対し実行するべき関数を提供する関数提供装置と、を備えた制御システムであって、前記関数提供装置は、複数の関数を含むプログラムの入力を受け付けるプログラム入力受付部と、関数の識別情報を複数記憶する識別情報記憶部と、前記識別情報記憶部を検索することにより、前記プログラム入力受付部に入力された前記プログラムに含まれる各前記関数のうち識別情報が記憶されていない関数を検出する関数検出部と、検出された関数の識別情報を前記識別情報記憶部に登録する識別情報登録部と、前記検出された関数を前記制御装置に提供する関数提供部と、を有する。
【選択図】図1

Description

本発明は、外部センサに基づいてアクチュエータを制御する制御システム、制御装置および制御方法に関する。
センサネットワーク応用において、多数のコンピュータに対して柔軟かつ効率的な動作指示を行うことは困難である。利用方法について事前の設計が困難である場合、例えば多様なユーザからの利用を想定する場合には、日々変わる要求に応えるためのシステムを構築することは難しい。
特開2006−344017号 「センサネットワークシステム及びセンサネットワークのデータ処理方法」(日立製作所) は、階層化されたプログラム(スクリプト) をネットワークで接続されたノード間に展開することにより、多数の機器を柔軟にプログラミングする、という課題に取り組んでいる。
特開2006−344017号
特開2006−344017号を含む従来の方式では、多数のユーザが各個にプログラムを記述した場合、類似したプログラムが個々のデバイスに投入されることが考えられる。例えば、センサネットワーク応用において、ある一定領域の温度センサの平均値を取得するといった一般的な処理は、多数のユーザが行うものと考えられる。
この時、多数のユーザが同じ、あるいは類似したプログラムを多数投入することにより、元々少ないセンサノードまたは中継ノードの処理容量を使い切ってしまうことが考えられる。
本発明は、各ユーザからの多数のプログラムを同一の環境で動作させるとき効率良いプログラムの実行を可能とした制御システム、制御装置および制御方法を提供する。
本発明の一態様としての制御システムは、
複数の外部センサからのセンサ値に基づいて、あらかじめ与えられた複数の関数を実行することにより複数のアクチュエータを制御する制御装置と、前記制御装置に対し実行するべき関数を提供する関数提供装置と、を備えた制御システムであって、
(A)前記関数提供装置は、
複数の関数を含み、
各前記関数は、前記複数の外部センサと、前記複数の関数のうち前記関数と異なる他の関数と、のうち少なくとも1つを入力引数として指定し、
前記複数の関数のうちの少なくとも1つは、前記複数のアクチュエータのうちの少なくとも1つを出力引数として指定した
プログラムの入力を受け付けるプログラム入力受付部と、
関数の識別情報を複数記憶する識別情報記憶部と、
前記識別情報記憶部を検索することにより、前記プログラム入力受付部に入力された前記プログラムに含まれる各前記関数のうち前記識別情報記憶部にマッチする識別情報が記憶されていない関数を検出する関数検出部と、
検出された関数の識別情報を前記識別情報記憶部に登録する識別情報登録部と、
前記検出された関数を前記制御装置に提供する関数提供部と、を有し、
(B)前記制御装置は、
前記関数提供装置から、前記関数の提供を受け付ける関数受付部と、
前記関数受付部で受け付けた各関数を記憶保持する関数記憶保持部と、
前記関数記憶保持部で保持される各前記関数の各々について、前記関数の入力引数を受信し、前記関数を実行する関数実行部と、
前記複数の外部センサに対応する複数の第1チャネルを管理し、前記複数の外部センサから前記複数の第1チャネルを介して前記センサ値を受信し、各前記第1チャネルに対応して受信したセンサ値を、各前記第1チャネルに対して各々あらかじめ指定された関数の入力引数として前記関数実行部に送信する第1チャネル管理部と、
前記複数のアクチュエータに対応する複数の第2チャネルを管理し、各前記第2チャネルを介して受け取った値を各々対応する前記アクチュエータに送信する第2チャネル管理部と、
前記関数記憶保持部に保持される各関数のうち前記出力引数を含む関数について、前記出力引数の値を、前記出力引数に指定されたアクチュエータに対応する前記第2チャネルを指定して前記第2チャネル管理部に送信する出力引数送信処理部と、
前記関数受付部で受け付けた関数について、第3チャネルを生成する第3チャネル生成部と、
前記第3チャネル生成部により生成された複数の前記第3チャネルを管理し、各前記第3チャネルを介して受信した値を各前記第3チャネルに対して各々あらかじめ指定された関数の入力引数として前記関数実行部に送信する第3チャネル管理部と、
前記関数記憶保持部に保持される各前記関数の実行により得られた前記関数の出力値を各前記関数に対応する前記第3チャネルを指定して前記第3チャネル管理部に送信する関数出力送信処理部と、
前記関数受付部で受け付けた関数について、前記関数における入力引数に指定された前記外部センサまたは前記他の関数に対応する第1チャネルまたは第3チャネルを特定し、特定した第1チャネルまたは第3チャネルを介して受信された値を前記関数の入力引数として前記関数実行部に送信することを前記第1チャネル管理部または第3チャネル管理部に指示する送信指示部と、を有する
ことを特徴とする。
本発明の一態様としての制御装置は、
複数の外部センサからのセンサ値に基づいて、あらかじめ与えられた複数の関数を実行することにより複数のアクチュエータを制御する制御装置であって、
外部の関数提供装置から、
前記複数の外部センサと、1つ以上のある関数と、のうちの少なくとも1つを入力引数として指定した関数と、
前記複数の外部センサと、1つ以上のある関数と、のうちの少なくとも1つを入力引数として指定し、かつ、前記複数のアクチュエータのうちの少なくとも1つを出力引数として指定した関数と
の提供を受け付ける関数受付部と、
前記関数受付部で受け付けた各関数を記憶保持する関数記憶保持部と、
前記関数記憶保持部で保持される各前記関数の各々について、前記関数の入力引数を受信し、前記関数を実行する関数実行部と、
前記複数の外部センサに対応する複数の第1チャネルを管理し、前記複数の外部センサから前記複数の第1チャネルを介して前記センサ値を受信し、各前記第1チャネルに対応して受信したセンサ値を、各前記第1チャネルに対して各々あらかじめ指定された関数の入力引数として前記関数実行部に送信する第1チャネル管理部と、
前記複数のアクチュエータに対応する複数の第2チャネルを管理し、各前記第2チャネルを介して受け取った値を各々対応する前記アクチュエータに送信する第2チャネル管理部と、
前記関数記憶保持部に保持される各関数のうち前記出力引数を含む関数について、前記出力引数の値を、前記出力引数に指定されたアクチュエータに対応する前記第2チャネルを指定して前記第2チャネル管理部に送信する出力引数送信処理部と、
前記関数受付部で受け付けた関数について、第3チャネルを生成する第3チャネル生成部と、
前記第3チャネル生成部により生成された複数の前記第3チャネルを管理し、各前記第3チャネルを介して受信した値を各前記第3チャネルに対して各々あらかじめ指定された関数の入力引数として前記関数実行部に送信する第3チャネル管理部と、
前記関数記憶保持部に保持される各前記関数の実行により得られた前記関数の出力値を各前記関数に対応する前記第3チャネルを指定して前記第3チャネル管理部に送信する関数出力送信処理部と、
前記関数受付部で受け付けた関数について、前記関数における入力引数に指定された前記外部センサまたは前記ある関数に対応する第1チャネルまたは第3チャネルを特定し、特定した第1チャネルまたは第3チャネルを介して受信された値を前記関数の入力引数として前記関数実行部に送信することを前記第1チャネル管理部または第3チャネル管理部に指示する送信指示部と、
を備えたことを特徴とする。
本発明の一態様としての制御方法は、
複数の各外部センサからのセンサ値に基づいて、複数のアクチュエータを制御する制御方法であって、
複数の関数を含み、
各前記関数は、前記複数の外部センサと、前記複数の関数のうち前記関数と異なる他の関数と、のうち少なくとも1つを入力引数として指定し、
前記複数の関数のうちの少なくとも1つは、前記複数のアクチュエータのうちの少なくとも1つを出力引数として指定した
プログラムの入力を受け付けるプログラム入力受付ステップと、
関数の識別情報を複数記憶する識別情報記憶部を検索することにより、前記プログラム入力受付ステップに入力された前記プログラムに含まれる各前記関数のうち前記識別情報記憶部に識別情報が記憶されていない関数を検出する関数検出ステップと、
検出された関数の識別情報を前記識別情報記憶部に登録する関数登録ステップと、
前記関数検出ステップで検出された各関数を記憶保持する関数記憶保持ステップと、
前記関数記憶保持ステップで保持される各前記関数の各々について、前記関数の入力引数を受信し、前記関数を実行する関数実行ステップと、
前記複数の外部センサに対応する複数の第1チャネルを管理し、前記複数の外部センサから前記複数の第1チャネルを介して前記センサ値を受信し、各前記第1チャネルに対応して受信したセンサ値を、各前記第1チャネルに対して各々あらかじめ指定された関数の入力引数として前記関数実行ステップに送信する第1チャネル管理ステップと、
前記複数のアクチュエータに対応する複数の第2チャネルを管理し、各前記第2チャネルを介して受け取った値を各々対応する前記アクチュエータに送信する第2チャネル管理ステップと、
前記関数記憶保持ステップで保持される各関数のうち前記出力引数を含む関数について、前記出力引数の値を、前記出力引数に指定されたアクチュエータに対応する前記第2チャネルを指定して前記第2チャネル管理ステップに送信する出力引数送信処理ステップと、
前記関数検出ステップで検出された関数について、第3チャネルを生成する第3チャネル生成ステップと、
前記第3チャネル生成ステップにより生成された複数の前記第3チャネルを管理し、各前記第3チャネルを介して受信した値を各前記第3チャネルに対して各々あらかじめ指定された関数の入力引数として前記関数実行ステップに送信する第3チャネル管理ステップと、
前記関数記憶保持ステップに保持される各前記関数の実行により得られた前記関数の出力値を各前記関数に対応する前記第3チャネルを指定して前記第3チャネル管理ステップに送信する関数出力送信処理ステップと、
前記関数受付ステップで受け付けた関数について、前記関数における入力引数に指定された前記外部センサまたは前記他の関数に対応する第1チャネルまたは第3チャネルを特定し、特定した第1チャネルまたは第3チャネルを介した受信した値を前記関数の入力引数として前記関数実行ステップに送信するように前記第1チャネル管理ステップまたは第3チャネル管理ステップに指示する送信指示ステップと、
を備えたことを特徴とする。
本発明により、各ユーザからの多数のプログラムを同一の環境で動作させるとき効率良いプログラムの実行が可能となる。
以下、図面を参照しながら、本発明の実施の形態について説明する。
図1は、本発明の一実施の形態としての制御システム(分散処理システム)の構成を示すブロック図である。多数の作用装置(センサおよびアクチュエータ)11a〜11d、多数の要求処理装置(制御装置)21a〜21c、多数のユーザ装置31a〜31bが存在する中、一つの要求配置装置41(または冗長化され連動する一組の要求配置装置)が、これらを統括する。要求配置装置41とインデックス装置51とは関数提供装置をなしている。以下ではまず本システムの概要について説明し、その後、各構成要素の詳細について説明する。
作用装置11a、11bはセンサ、作用装置11c、11dはアクチュエータであり、これらの作用装置は、環境との相互作用を行う機能を持つ装置である。各作用装置は、要求処理装置(制御装置)と通信する通信機能を持ち、より詳細には、要求処理装置(制御装置)21a〜21cにより管理されるチャネルとの間で相互作用を行うことで通信を行う。個々の作用装置は一意な識別子(ID) を持ち、そのID から算出される識別子をもつチャネル(たとえばそのIDと同一名のチャネル)と相互作用を行う。識別子はたとえばIPアドレス、MACアドレスを用いてもよいし、その他の指標を用いてもよい。作用装置がセンサの場合は、センサ値(観測値)をチャネルに出力し、作用装置がアクチュエータの場合はチャネルから与えられる命令を受けて動作する。後述のように、センサと通信するチャネルは、第1識別子を有する第1チャネル、アクチュエータと通信するチャネルは、第2識別子を有する第2チャネルに相当する。
要求処理装置(制御装置)21a〜21cは、一つの要求配置装置41によって利用される。個々の要求処理装置(制御装置)は、例えばビル管理ネットワークにおけるフロアコントローラに相当し、ネットワークを介して互いに通信可能に接続されている。個々の要求処理装置(制御装置)は、各々が担当される作用装置と、IP( インターネットプロトコル) あるいはBACnet( バックネットASHRAE の商標) などにより接続されている。個々の作用装置は、要求処理装置(制御装置)21a〜21cのいずれかに接続されている。各作用装置に関係するチャネルはそれぞれ担当する要求処理装置(制御装置)において登録(作成)されている。
要求処理装置(制御装置)21a〜21cは、各センサからのセンサ値に基づき関数(要求処理関数)を実行することにより各アクチュエータを制御する。要求処理装置(制御装置)21a〜21cは、ユーザ装置31a〜31bと作用装置11a〜11dとの間に介在し、ユーザ装置により要求配置装置41を介して与えられた要求処理関数を実体化する。すなわち要求処理装置(制御装置)21a〜21cは、該要求処理関数を保持し、該関数を、関連するチャネルに関連づけ、所望のタイミングで実行する。要求処理装置(制御装置)の構成例を図2に示す。
要求処理装置(制御装置)はPublish-subscribeブローカ101と要求処理関数実行環境102とを備える。Publish-subscribeブローカ101は、第1チャネル管理部、第2チャネル管理理部、第3チャネル管理部、を含んでいる。要求処理関数実行環境102は、関数受付部、関数保持部、関数実行部、第3チャネル生成部、関数出力送信処理部、送信指示部を含んでいる。
Publish-subscribeブローカ101は、各作用装置が利用するチャネル、および要求処理関数が利用するチャネルを管理する。要求処理関数実行環境102は複数の要求処理関数の実体化を行う。
各作用装置および要求処理関数間でのデータの送受信はPublish-subscribeブローカ101により管理されるチャネルを介して行われる。すなわち、データの送受信はチャネルを介して行われ、要求処理関数はチャネルからデータを受け取りチャネルにデータを送出する。またセンサはチャネルにデータを送出し、アクチュエータはチャネルからデータを受け取る。
センサからデータを受信し受信したデータを要求処理関数に渡すチャネルは第1チャネル、要求処理関数から関数の出力値を受信し受信した出力値を他の要求処理関数に渡すチャネルは第3チャネル、要求処理関数から出力引数の値を受信し受信した値をアクチュエータに渡すチャネルは第2チャネルに相当する。図では、101aが第1チャネル、101bが第3チャネル、101cが第2チャネルを示す。第3チャネルは、出力値の送信元である要求処理関数の記述からなる識別子(第3識別子)を有する。第1〜第3チャネルはそれぞれ第1〜第3チャネル管理部によって管理される。
ここでチャネルとは、本システムが前提とするPublish-Subscribe モデルに基づく仮想的な通信路のことである。データの生成者と需要者はチャネルを経由してデータを交換する。実際には要求処理装置(制御装置)がいわゆるブローカの役目を担い、生成者(たとえばセンサ、および要求処理関数)と需要者(たとえばアクチュエータ、および要求処理関数)との通信を仲立ちする。
このモデルは、通常の要求-応答モデルと異なり、需要者は、事前に必要なデータが流れるチャネルに対して自分自身の情報を登録し、個々のデータが流れたタイミングでそれぞれのデータを受信する。以後、チャネルにデータを送出することを「パブリッシュ」、チャネルに送信されたデータを受信できるように需要者の情報をチャネルに登録することを「サブスクライブ」と呼ぶことがある。チャネルを介した通信は、同一の要求処理装置(制御装置)内のみならず、異なる要求処理装置(制御装置)間でも可能である。このため各要求処理装置(制御装置)は互いに通信する通信部を有する。
要求処理関数は、一つまたは複数のチャネル(第1チャネルまたは第3チャネルまたはこれらの両方)をサブスクライブし(送信指示部の処理に相当)、それらのチャネルへの入力に対して、あらかじめ定められたタイミングで所定の判断および処理に基づく演算を行い、その演算結果(関数の出力値)または出力引数の値を必要に応じて一つまたは複数のチャネル(第3チャネルまたは第2チャネル)に対してパブリッシュする(関数出力送信処理部および出力引数送信処理部の処理に相当)。判断および処理の結果によっては、パブリッシュを行わない場合もある。要求処理関数は、チャネル(第1または第3チャネルまたはこれらの両方)から受けた情報を入力引数として演算を行うことにより有益な情報を抽出し、チャネル(第2チャネルまたは第3チャネル)に出力する。第2チャネルに関わる要求処理関数により抽出される情報(出力引数の値)は、環境に作用するアクチュエータに対する制御指令に相当する。
ここで、チャネルの実体は、チャネル識別子と、サブスクライバーの宛先リストを保持したオブジェクトである。各チャネルは、入力されたデータを、宛先リストに示される各サブスクライバーに転送するように振る舞う。各チャネルは、後述する要求配置装置41およびインデックス装置51では、どこの要求処理装置(制御装置)に属するかを示すため、チャネル識別子と、要求処理装置(制御装置)識別子との組によって、チャネル情報として識別される。
各チャネルは、それぞれ宛先表を保持し、あるチャネルのデータを必要とする需要者からのサブスクライブ要求あるいはサブスクライブ解除要求に従って、この宛先表を書き換える。また、各チャネルは、送信元(センサあるいは要求処理関数) からのデータがチャネルに到着したら、その時点での宛先表の内容に従い、到着したデータをそれぞれの宛先(アクチュエータあるいは要求処理関数) に送付する。
各センサからデータ入力されるチャネル(第1チャネル)および各アクチュエータへのデータ出力を行うチャネル(第2チャネル)はあらかじめブローカ101に人為的に登録してもよいし、各作用装置(センサおよびアクチュエータ)からの要求に応じて登録してもよい。Publish-Subscribe ブローカ101は、ユーザからの指示によりまたは各作用装置からの要求に応じて第1チャネルおよび第2チャネルを作成する第1チャネル作成部および第2チャネル作成部を有していてもよい。
ユーザ装置31a〜31bはユーザによりセンサネットワークに対する要求を記述したプログラムを入力し、入力したプログラムを要求配置装置41に送出する。ユーザの要求を記述したプログラムは、要求処理関数の種類と、その入出力に関連づけられたチャネルとのリンク(グラフ)として定義される。より詳細にはプログラムは、引数(入力引数、出力引数)を用いて演算を行う複数の要求処理関数を含んでいる。各要求処理関数は、第1チャネル、前記複数の要求処理関数のうち他の要求処理関数のうち少なくとも1つを入力引数に指定している。すなわち、各要求処理関数は、第1チャネルの識別子、他の要求処理関数のうち少なくとも1つを入力引数部分に記述している。また、少なくとも1つの要求処理関数は、少なくとも1つの第2チャネルを出力引数に指定している。すなわち、少なくとも1つの要求処理関数は、少なくとも1つの第2チャネルの識別子を出力引数部分に記述している。プログラムの詳細は後述する。
インデックス装置51は、要求処理関数の文字列(すなわち要求処理関数そのもの)と、チャネル情報(要求処理関数の文字列と、該要求処理関数を実行する要求処理装置(制御装置)の識別子との組)との対応を保持している。インデックス装置51は、要求処理関数の識別情報(たとえば要求処理関数の文字列)を複数記憶する識別情報記憶部を含んでいる。インデックス装置51に保持されるデータの一例を図8に示す。図8には、要求処理関数の文字列と、これに対応するチャネル情報とのペアが複数示されている。図8の詳細は後に説明する。
要求配置装置41は、ユーザ装置から入力されたプログラムに含まれる各要求処理関数が、インデックス装置51に登録済みであるかの検査をインデックス装置51に要求する。つまり、ユーザ装置の要求に対応する上記グラフ(要求処理関数の種類と、その入出力に関連づけられたチャネルとのリンク)から、部分グラフを再帰的に抽出し、個々の部分グラフに対して、インデックス装置51に対し、検査を要求する。インデックス装置51は、要求配置装置41からの要求を受けて各要求処理関数が登録済みであるかどうかを検査し、登録済みであるか否かを示す検査結果を返す。
検索の結果、同一の処理内容を実現する要求処理関数(同一の入力チャネルを用い、同一の出力値が得られる要求処理関数)が登録されていれば、該要求処理関数はすでに要求処理装置(制御装置)において実体化されており共用化可能であることを要求配置装置41は決定する。もし同一の処理内容を実現する要求処理関数がインデックス装置51に登録されていなければ、この要求処理関数を実体化するべき要求処理装置(制御装置)を選択し、この要求処理関数の文字列と、チャネル情報(該文字列と選択した要求処理装置(制御装置)の識別子との組)との登録をインデックス装置51に要求し、インデックス装置51は、これらの情報を登録する。
ここでインデックス装置51に対する検索要求の際、所定の規則にしたがって要求処理関数の文字列を並び替えることにより正規化(詳細は後述)し、正規化された関数に基づき検索要求を行ってもよい。そして、検索がヒットしないときは、正規化された文字列の登録を要求してもよい。また検索要求の際、要求処理関数の文字列を一定の手続に従い符号化し、符号化された文字列(関数の符号表現)に基づき検索要求を行い、検索がヒットしないときは、符号化された文字列の登録を登録してもよい。また、符号化を行う際は、符号化の前に上記正規化を行ってもよい。インデックス装置51は要求処理関数を正規化する正規化部、または要求処理関数のコードを符号化して符号化関数データを生成する符号化部を有していてもよい。
要求配置装置41は、インデックス装置51に登録されていない要求処理関数について、当該要求処理関数の実体化を、選択した要求処理装置(制御装置)に対し要求する。要求を受けた要求処理装置(制御装置)の要求処理関数実行環境102では、この要求処理関数を、入力チャネルおよび出力チャネルと関連づけて保持し、所望のタイミング(たとえばサブスクライブしているチャネルに対してデータが到着したタイミング)で実行する。より詳細には、入力チャネルすでに存在するときは当該入力チャネルとの関連づけを行い、まだ存在しないときは当該入力チャネルが作成されたときに関連づけを行う。また上記要求処理関数の記述により識別される出力チャネル(第3チャネル)を生成し、当該出力チャネルとの関連づけを行う(なお図2の一番上に位置する要求処理関数の出力チャネルは図面の簡単のため図示を省略している)。また、要求処理関数に出力引数が存在するときは、当該出力引数に指定された出力チャネル(第2チャネル)への関連づけを行う(この場合、この関数の出力値は存在しない(NULLである)ため、この関数に対する第3チャネルの生成および関連づけは省略してもよい。図2の一番下に位置する要求処理関数を参照)。
以上に説明した図1の制御システムについてさらに詳細に説明する。
まず図2に示した要求処理装置(制御装置)の詳細について説明する。
上述したように、Publish-Subscribe ブローカ101は複数のチャネルを管理するが、1つのチャネルが複数の要求処理装置(制御装置)によって利用される場合がある。たとえば、複数の要求処理関数によりあるセンサのデータが必要になる場合、あるいはある要求処理関数の出力値が、複数の要求処理関数により必要とされる場合などである。
この場合の一つの実現方法としては、各要求処理装置(制御装置)のブローカ101間でチャネルの宛先表を分割管理した上で、データを必要としているブローカ101を互いにそれぞれの宛先表に含め、お互いに到着したデータを転送し合う、という方式を用いることができる。この場合は、メッセージのループを避ける仕組みが必要である。
また、チャネル毎に一つの要求処理装置(制御装置)がマスタブローカとなり、このチャネルの宛先管理は全て該当の要求処理装置(制御装置)が管理する、という方法を用いることもできる。この場合には、どの要求処理装置(制御装置)でどのチャネルがどのように管理・利用されているかを集約する必要がある。インデックス装置においてこれを行ってもよいし、他のチャネル管理・割り当て手段を用意してもよい。例えば、より大規模な発展が期待される場合は、Scribe(M. Castro, P. Druschel, A-M. Kermarrec, and A. Rowstron. Scalable application-level anycast for highly dynamic groups. In Proceedings of NGC 2003, September 2003.)のようなアプリケーションレベルマルチキャストなどを利用することもできる。
要求処理関数実行環境102は、上述したように、要求配置装置41から提供された要求処理関数の実体化を行う。すなわち、要求処理関数実行環境102は、要求配置装置41から要求処理関数の提供を受け(関数受付部の処理に相当)、提供された要求処理関数を保持し(関数保持部の処理に相当)、入出力チャネルとの関連づけを行い、所望のタイミングで要求処理関数を実行する(関数実行部の処理に相当)。要求処理関数実行環境102としては、具体的には、Java(登録商標) におけるバーチャルマシンまたはサーブレット実行環境のようなものが想定される。
各々の要求処理関数は、上述したように、一つまたは複数のチャネルをサブスクライブし、また一つまたは複数のチャネルに対してパブリッシュすることができる。また、各関数は内部メモリ(状態) を保持してもよい。
要求処理関数実行環境102は、各々サブスクライブしているチャネルに対してデータが到着したタイミングで要求処理関数を起動し、短時間のうちに内部メモリを書き換え、必要なデータ加工を済ませ、またパブリッシュを行う。
なお、要求処理関数を定期的に実行するために、個々のPublish-Subscribe ブローカ101において、仮想的なクロックチャネルを定義してもよい。定期的に実行される必要がある要求処理関数は、該当するクロックチャネルをサブスクライブするものとする。各ブローカ101は、サブスクライブ要求到着時点で仮想的なクロックチャネルを実体化し、要求処理関数へ定期的なイベントを供給することにより、要求処理関数を起動する。
ここで要求処理関数は、少なくとも以下の要素を持つ。
・任意個のチャネル入力
・処理内容(種類)
・1つまたは複数のチャネル出力
ここで、本実施形態で扱うチャネルは、特に、「名前なしチャネル」と称されることもある。名前なしチャネルとは、作用装置の識別子、または、要求処理関数の入力と処理内容、によって一意に定まるチャネルのことである。例えば、作用装置に対応するチャネルがi 個存在するとして、作用装置の識別子をN とすると、識別子N[i] によって識別されるチャネルのことである。
また、要求処理関数内部のチャネル入力部には、内部状態を記録する、非同期動作を実現するためのウィンドウと呼ばれる機構を導入しても良い。ウィンドウは一定量の内部記憶を持つ機構であり、その内容とチャネルからの入力との単純な演算により内部記憶を更新する。ウィンドウは単純な最新値や、一定個数あるいは期間の最大・最小・平均値などが計算できる機能を持っていてもよい。また、ウィンドウは、チャネルに対する修飾子として記述されることができる。例えば、チャネルX に対する最新値はチャネルX.current のように記述する。ただし、以下の例では簡単のため、ウィンドウは明示的には表現せず、全て最新値が取り扱われるものとする。
チャネルの修飾子は、後に述べる要求配置アルゴリズムの処理においては、ウィンドウを変換して単独の要求処理関数を取得し、その内側の項のみを評価する。例えば、(f1 (f2 A).current) とあった場合は(f1 (select (f2 A) “current”)) と変換する。f1,f2は要求処理関数であり、(f2 A)はAを要求処理関数f2で処理したときの出力値、(select (f2 A) “current”)は、(f2 A)の最新値を取得したときのその値である。
ただし、要求処理装置(制御装置)への実体化の段階では、select に対して単独の要求処理関数を実体化してもよいし(すなわち(f2 A)を入力チャネルとし、(f2 A)の最新値を取得する要求処理関数を実体化し、関数の出力値(演算結果)を(select (f2 A) “current”)の名をもつチャネルに出力する)、f1 への入力時の時点で処理しても良い(すなわち(f2 A)を入力チャネルとし、(f2 A)の最新値を取得するとともにf1に基づく処理を行う要求処理関数を実体化し、関数の出力値(演算結果)を、(f1(select (f2 A) “current”))の名をもつチャネルに出力する)。後者の場合、実体化することによりウィンドウが持つ内部メモリを共有化できるメリットがあり、または、ウィンドウを個々の実体化した要求処理関数に含めることで、チャネル数の増大を防ぐ効果がある。上記2つのどちらが、与えられたプログラムに対して効率的かは、要求処理装置(制御装置)が判断してもよい。
ここで複数の要求処理関数は以下の条件で同一化(同一視)できる。
入力チャネルが同一のとき、出力結果が同質となるアルゴリズムに基づく処理では、処理内容と入力チャネルとが一致すれば同質の出力が得られる。すなわち、処理内容と、入力チャネルとが一致する要求処理関数同士は、同一化できる。
また、入力チャネルの順序が結果に与えないものについては、入力チャネルを一定の規則で正規化することで、入力チャネルの順序の異なる要求処理関数同士についても同一視可能とする。
正規化とは、演算結果に影響を与えない範囲において、要求処理関数を書き換えることを示す。具体的には、以下の規則により要求処理関数に与えられる引数を再帰的にソートすることにより行う。
(1)要求処理関数において引数が交換可能である部分のみを対象とする。
(2)交換可能な引数は、型により、例えば以下の順位でソートする。
− 定数
− チャネル
− 要求処理関数
なお、要求処理関数内の引数は、要求処理関数内で同様にソートする。
(3)個々の同一型同士では、その引数の文字列表現を特定のハッシュ関数(例えばSHA-1) にかけた時のハッシュ値で比較し、ハッシュ値の昇順または降順でソートする。
このような正規化により、多様な表現が行われる可能性のあるプログラム処理が、より高い確率で共用化可能となる。
例えば、センサX とセンサY の出力がそれぞれチャネルX とチャネルY から得られるとして、これらのうち最大値を出力する処理を行う要求処理関数を考える。ここで、センサX、Yの最新値のうち最大値を取る要求処理関数の名をMAX とすると、この要求処理関数の実体(インスタンス) は、例えばS 式で以下のように記述できる。
(MAX X Y)
X とY の順序関係は計算の結果に影響を与えないため、これは次の式と同じ意味である。
(MAX Y X)
こういった多様な表現が成立し得るものについては、整列することにより正規化するものとする。
正規化後の表現が(MAX X Y) であったとすると、この計算結果は、(MAX X Y) という名前で識別されるチャネルに自動的に出力される。このため、要求処理装置(制御装置)内の要求処理関数実行環境102における関数実体化機能は、要求配置装置41から、実体化すべき要求処理関数(たとえば正規化されている)を受信すると、この要求処理関数の文字列によって識別されるチャネルをブローカ101に登録し、登録したチャネルに当該要求処理関数の計算結果(関数の出力値)を出力することができる。計算を表現する式自身がチャネルの識別子を兼ねているため、これを特に、名前なしチャネルと呼んでいる。
なお、以上の例では簡単のためにS 式を用いたが、名前なしチャネルは、一定の手順により正規化した、XML あるいはこれに類似した木構造のプログラム表現、その他任意の表現形式においても同様に定義できる。なお、あるシステム内においては同一の計算は表現形式に従うものとすることが望ましい。また、後述する式のネストを考慮すると、個々のチャネルの識別子が長くなってしまうことは実装上不利であるため、表現(例えば(MAX X Y)) を表すバイト列に対してハッシュ値を求め、これをチャネルの識別子としてもよい。
ここで、この要求処理関数の処理を駆動するタイミング(駆動方式) は、MAX の処理自身によって定義するものとする。このタイミングについても、あるチャネルからの入力の更新を契機として(イベント駆動的な用語を用いれば、イベントの到着を契機として) 処理を行う方式(単チャネル駆動) や、複数のチャネルの入力更新の都度処理を行う方式(複数チャネル駆動)、一定の時間間隔で定期的に処理を行う方式(時間駆動) などが考えられる。これらには、要求処理関数において各チャネルに対してウィンドウが与えられることを前提とするものもある。
次に、要求配置装置41の詳細について説明する。
まず要求配置装置41の目的について具体例を用いて説明する。
例えば、ある建物において、センサA,B,C,D,E,F が配置され、それぞれ同名で定義されるチャネルに定期的に気温のデータを出力するとする。また、空調制御用のスイッチX および異常通知用の警報機Y が存在し、それぞれ同名のチャネルからのboolean 入力(“t” あるいは“nil” の2 値入力) により、動作したり、動作を停止したりするとする。なお、スイッチ・警報機は、アクチュエータに相当する。
ここで、この建物に対して、以下の2つのプログラム1およびプログラム2をユーザ装置により投入するとする。
1.A〜F の平均値において、28 度を閾値として、それ以上のときは空調を作動させ(スイッチXをオンにし)、未満のときは空調を停止させる(スイッチXをオフにする)
2.A〜F の最大値において、80 度を閾値として、それ以上のときは警報機を作動させ、未満のときは警報機を停止させる。
これら2つのプログラムは、それぞれお互いのことを考慮せずにたとえば以下のように記述される。
プログラム1: (| (>= (AVERAGE A B C D E F) 28) X)
プログラム2: (| (>= (MAX A B C D E F) 80) Y)
各プログラムはそれぞれ複数の要求処理関数を含んでいる。要求処理関数の種類の一例を表1 に示す。例示された要求処理関数のうち、“|”以外は、要求処理関数の出力値(要求処理関数の演算結果)を、他の要求処理関数で利用できる。一方、“|”(代入関数)は要求処理関数の出力値(要求処理関数の演算結果)を利用するためのものではない。具体的に、“|”は、“|”の第二引数(出力引数)にアクチュエータのチャネル(名前なしチャネル)を与えることにより、チャネルとチャネルとを結合する副作用的なものを定め、プログラムの最終出力先であるアクチュエータを選択するために利用する。
Figure 2009223403
ここで、例に挙げた2つのプログラム1、2は、A〜F までの統計値を利用することにおいて共通している。実際、当該2つのプログラム1,2におけるMAX とAVERAGE は入力が共通しており、また処理内容も似通っている。従って、ここでは、基本統計関数STAT の出力を修飾することにより、ひとつの統計量が取り出せるものとすると、上記プログラム1、2は、STATを用いて、次のように書き換え可能である。
プログラム1:(| (>= (STAT A B C D E F) .average 28) X)
プログラム2:(| (>= (STAT A B C D E F) .max 80) Y)
ここでは、STAT の出力をウィンドウ類似の記法で修飾した。例えば、XML の断片のような、タグ付けされたデータ組から、対応するタグの中に記録された値の最新値を記録するウィンドウを想定する。
こうすると、プログラム1、2中の(STAT A B C D E F) は全く同じ処理(要求処理関数) であることが分かる。特にセンサネットワーク応用においては、このように同様の処理がたくさんあることが想定される。コスト(帯域・遅延・処理能力・電力消耗等) 上昇を阻止すべく、同一の処理はまとめたい。
例えば、上にある2 つのプログラムを実際の処理として展開する際は、共通する要求処理関数(STAT A B C D E F)のみ実体化し、他の要求処理関数はこの要求処理関数(STAT A B C D E F)の出力を共用化する。
図4は、要求処理関数の共用化の具体例を示す。図中、p がSTAT に、q,r が“>=” に、s,t が“|”に対応する。そして、STAT を共用化することにより、もっともデータ転送量が多いA〜F からのデータ転送を2 つのプログラムに対して高々1 度で済ませることができるようになる。
このように上にある2つのプログラムにおいて共通する要求処理関数(STAT A B C D E F)のみ実体化し、他の要求処理関数はこの要求処理関数(STAT A B C D E F)の出力を共用化することにより、同一の処理は高々1 度のみ行えばよいことになる。
本実施形態における要求配置装置は、このようにユーザ装置から入力されるプログラムを解析して、プログラムに含まれる各関数のうち、すでに実体化されている関数についてはそれを共用し、まだ実体化されていない関数のみを実体化する。このように、センサネットワーク環境の分散プログラミング基盤において、多様なプログラムが実行されても共通する要求処理関数を効率的に共用化することで不必要な資源の消費を避けることができる。
図3 は、要求配置装置41の詳細構成を示す。
要求配置装置41は、プログラム入力受付部201、インデックス装置通信部202、 要求処理装置管理部(関数提供部)203および要求配置アルゴリズム実行部(登録要求部、実行先選択部)204を備える。
プログラム入力受付部201は、S 式のような、データ処理の流れを複数の要求処理関数によって記述したプログラムの入力をユーザ装置31aまたはユーザ装置32bから受け付け、入力されたプログラムを要求配置アルゴリズム実行部204に投入する。
要求配置アルゴリズム実行部204は、プログラム入力受付部201から投入されたプログラムを複数の要求処理関数に分解し、各要求処理関数のそれぞれがインデックス装置51に登録済みか否かの検査を、インデックス装置通信部202を介してインデックス装置51に対して要求する。インデックス装置通信部202は要求配置アルゴリズム実行部204とインデックス装置51との通信のインターフェースとして機能する。
インデックス装置51は、前述したように、要求処理関数の文字列と、チャネル情報(要求処理関数の文字列と要求処理装置(制御装置)の識別子との組)との対応表(インデックス表)を持っている(図8参照)。インデックス装置51は、要求処理アルゴリズム実行部204から指示された要求処理関数について、当該要求処理関数の文字列がインデックス表に登録済みか否かを検査し、登録済みか否かを示す検査結果を要求配置アルゴリズム実行部204に返す。この機能は、たとえば関数検出部の機能に相当する。
要求配置アルゴリズム実行部204は、登録済みでないと判断された要求処理関数について、その要求処理関数を実体化するべき要求処理装置(制御装置)を選択し、選択した要求処理装置(制御装置)の識別子と該要求処理関数の文字列との組であるチャネル情報と、該要求処理関数の文字列との登録を、インデックス装置51に要求する。また、登録済みでないと判断された要求処理関数の実体化要求を要求処理装置管理部203に対して行う。要求配置アルゴリズム実行部204の詳細は、別途、後述するものとする
インデックス装置51は、要求処理アルゴリズム実行部204から指示された要求処理関数の文字列およびチャネル情報(要求処理関数の文字列と要求配置装置識別子との組)をインデックス表に登録する。この機能は、たとえば識別情報登録部の機能に相当する。インデックス装置51は、インデックス表の読み出しキャッシュを持ってもよい。
なお、本実施形態では、1つのインデックス装置を1つの要求配置装置が利用する例を示しているが、1つのシステム内に、1つのインデックス装置を利用する複数の要求配置装置が存在してもよい。また、本実施形態では、インデックス装置と要求配置装置とは別体として構成されているが、これらが1つの装置として一体に構成されてもよい。
要求処理装置管理部(関数提供部)203は、要求配置装置が利用可能な要求処理装置(制御装置)の一覧リストと、個々の要求処理装置(制御装置)の状態(負荷・障害有無など)とを管理する。また要求処理装置管理部203は、要求配置アルゴリズム実行部204から、要求処理関数の実体化要求を受けて実体化のための処理を行う。具体的には、実行すべき要求処理関数に対応するオブジェクトコード(Java(登録商標) などのコード)を生成し、要求配置アルゴリズム実行部204により指定された要求処理装置(制御装置)に対して与える。要求処理関数とオブジェクトコードとの変換ルールがあらかじめ与えられ、このルールに基づき、上記要求処理関数に対応するオブジェクトコードを生成する。あるいは、このルールを、ユーザ装置から入力するプログラムに記述してもよい。
要求処理装置(制御装置)は、要求処理装置管理部203から与えられた情報に基づき、要求処理関数を実体化する。具体的には、与えられた要求処理関数(オブジェクトコード)を保持し、この関数における入力チャネルをサブスクライブし、この関数の記述からなる識別子をもつチャネル(出力チャネル)を、Publish-Subscribeブローカ101に登録(作成)する。
ここで、要求配置装置41における要求配置アルゴリズム実行部204は、要求処理関数の実体化するべき要求処理装置(制御装置)を、例えば以下の方法により選択する。
(1)要求処理関数の入力および出力となるチャネルそれぞれについて、あるチャネルを主として管轄するブローカ(マスタブローカ) の役割を果す要求処理装置(制御装置)、および個々のチャネルを既にサブスクライブしている要求処理装置(制御装置)が、それぞれわかるとする。これらの要求処理装置(制御装置)を、該当する要求処理関数を実行することができる要求処理関数実行環境の候補とする。なお、チャネル識別子と要求処理装置(制御装置)との対応関係は、インデックス装置(図8のチャネル情報を参照)や他の手段により管理する。
(2)要求処理関数実行環境の候補は、それぞれ要求処理装置(制御装置)の負荷(時間あたりの通信負荷および計算負荷) を含めた情報を定期的に要求配置装置の要求処理装置管理部203へ報告する。ここで、要求処理装置(制御装置)の負荷が、個々の要求処理装置(制御装置)に設定された上限閾値に達しているものは候補から外される。
(3)残された候補のうち、作用装置あるいは他の要求処理関数により、既にサブスクライブされているチャネルをできるだけ多く含む要求処理装置(制御装置)を選択する。これは、要求処理装置(制御装置)を超えるサブスクライブにより、要求処理装置(制御装置)間の通信コストが新規に発生することによる。
(4)以上の手続きで候補が残らなかった場合、要求処理装置(制御装置)全体でもっとも負荷が低いものを利用する。ただし、要求処理装置(制御装置)が全て過負荷状態となった場合は、要求処理関数の実体化を失敗として、ユーザと管理者に警告(資源過少) してもよい。
図5は、要求配置装置41の動作(要求配置アルゴリズム)を説明するフローチャートである。要求配置装置41に対しては、たとえば、STATを用いた前述のプログラム1またはプログラム2といったプログラムが、ユーザ装置から与えられる。要求配置装置41は、与えられたプログラムを、図5の手順に従って処理し、要求処理装置(制御装置)に配置する。以下、図5の手順について概略的に説明し、その後、具体例を用いてさらに詳しく説明する。
S1:実体化手続き(instantiate)を開始する。ユーザ装置から与えられたプログラムをf とする。たとえばプログラムとして(| (>= (STAT A B C D E F) .average 28) X)が与えられた場合、このプログラムをfとする。
S2:f をfsに退避させる。
S3:インデックス装置51にf の有無を問い合わせ、その結果がchに入力されて返される。インデックス装置51は問い合わせに係るfに対応づけられたチャネル情報が存在すればそれをchに入れて返し、存在しなければnil(空) をchに入れて返す。本ステップは、当該プログラムfの文字列を識別子として有するチャネル(第3チャネル)あるいは当該プログラムfを実行する関数が、すでに、いずれかの要求処理装置(制御装置)に存在するか否かを問い合わせていることと等価である。
S4:インデックス装置51から返されたchの内容 がnil かどうかを確認し、nil でなければステップS14に進み、本処理を終了する。なお終了の際、ユーザ装置に対し処理が正常に行われたことを示すメッセージを返すようにしてもよい。一方、インデックス装置51から返されたchの内容 がnilであるときは、f は実体化する必要があるため、ステップS5に進む。
S5:f に指定される引数は、実際には定数だったり、チャネルだったり、あるいは別の要求処理関数(プログラムの断片) だったりする。ここで、fの引数を順に評価するために、変数i を0 で初期化する。以下、引数は最初の引数から順に、第0 引数、第1 引数、とする。たとえば(| (>= (STAT A B C D E F) .average 28) X)の場合、第0引数は(>= (STAT A B C D E F) .average 28)、 第1引数はXである。引数の記述は、関数の型から判別できる。
S6:i 番目の引数の存在を検証し、もしi 番目の引数が存在しない、つまり全ての引数の評価が終わっていれば、ステップS12 に飛ぶ。一方、i 番目の引数が存在すればステップS7に進む。
S7:f の第i 引数をfi とする。たとえばf0= (>= (STAT A B C D E F) .average 28)とする。
S8:fi の型を判定し、要求処理関数(サブプログラム)であればステップS9 に進む。そうでなければ(すなわち定数またはチャネル識別子の場合など)ステップS11 に進む。f0= (>= (STAT A B C D E F) .average 28)の場合、これは要求処理関数であるので、ステップS9に進む。
S9:fi を引数として、実体化手続き(instantiate) を開始する。すなわち再帰的処理を行うべく、ステップS1から処理を開始する。結果として戻される(再帰処理のステップS14で戻される)、チャネル情報(fiの文字列と、要求処理装置(制御装置)識別子との組)をch_iに代入する。
S10:f に含まれる要求処理関数fiを、チャネル情報ch_iで置換する。
S11:i をインクリメントし、ステップS6 に戻る。
S12:全ての引数の評価が終了したので、f を実体化する要求処理装置(制御装置)を選択し、選択した要求処理装置(制御装置)に対してfの実体化要求を要求処理装置管理部203に送る。また、f の出力を受けるチャネルの情報(たとえばfの文字列そのものと、選択された要求処理装置(制御装置)の識別子との組)をch に代入する。
S13:インデックス装置51にfsの文字列と、fsの出力を受けるチャネルの情報ch(fsの文字列および、選択された要求処理装置(制御装置)の識別子との組)との対応を登録する。このようにして登録された後は、このfの実体化手続きが再度要求されたときは、ステップS3で、このfに対応づけられたチャネル情報chを返せばよい。なお、チャネル情報chに含まれるfsの文字列(後述する図8の右側のフィールドに含まれるfsの文字列)の登録は省略することも可能である。その場合、ステップS3でのインデックス装置51への問い合わせの際には、fの文字列と、識別子との組をチャネル情報chとして返す。
S14:本フローチャートのメイン処理で本ステップに至ったときは処理終了し、再帰処理で本ステップに至ったときは、呼び出し元にチャネル情報ch を返す。
ここで、ステップS2でのインデックス装置51への問い合わせ時、またはステップS12でのインデックス装置51への登録時には、要求処理関数を、前述したようにして正規化してもよい。正規化により、多様な表現が行われる可能性のあるプログラム処理が、より高い確率で共用化可能となる。
図6は、この正規化を適用した場合に、図5のステップS2に代えて行う処理の流れの一例を示したフローチャートである。
ステップS21では、インデックス装置51への問い合わせの前に、fを正規化し、正規化された要求処理関数をfnに代入する。
ステップS22では、fnのハッシュ値を計算し、得られたハッシュ値を鍵として、インデックス装置51への問い合わせを行う。問い合わせ結果がchに入力されて返される。インデックス装置51は問い合わせに対し、対応づけられたチャネル情報が存在すればそれをchに入れて返し、存在しなければnil(空) をchに入れて返す。
図7は、上記正規化を適用した場合は、図5のステップS12に代えて行う処理の流れの一例を示したフローチャートである。
ステップS31では、インデックス装置51への登録前に、fを正規化し、正規化された要求処理関数をfnに代入する。
ステップS32では、fnのハッシュ値を計算し、得られたハッシュ値を鍵とする項目に、fの出力を受けるチャネル情報chを登録する。
ここで実際にユーザ装置からプログラム1である(| (>= (STAT A B C D E F) .average 28) X)が入力された場合を想定して、図5の処理について説明を行う。ただし説明の簡単のため、正規化は行わないものとする。なお、このプログラムにはチャネルの装飾子があるため、以下の処理では、前述したような変換を施し、(| (>= (select (STAT A B C D E F) “average”) 28) X)とされる。ここで、このプログラムについて簡単に補足説明しておくと、このプログラムは、4つの要求処理関数、すなわち、
(STAT A B C D E F)
(select (STAT A B C D E F) “average”)
(>= (select (STAT A B C D E F) “average”) 28)
(| (>= (select (STAT A B C D E F) “average”) 28) X)を含む。
これらの要求処理関数は、少なくとも1つの第1チャネル(ここではA,B,C,D,E,Fが該当する)、他の要求処理関数、第2チャネル(ここではXがそれに該当する)の少なくとも1つを引数として指定している。たとえば3番目の関数は、(select (STAT A B C D E F) “average”)と 28との2つを入力引数として指定している。4番目の要求処理関数は出力引数Xへの出力を定めており、この関数に対応するチャネルの生成は省略してもよい。なお、X以外の引数はすべて入力引数に相当する。以下、図5の処理の具体例を説明する。
(メイン処理)
まずステップS1で実体化手続き(instantiate)を 開始する。ユーザ装置から入力されたプログラムは(| (>= (STAT A B C D E F) .average 28) X)であり、これをf とする。このプログラムにはチャネルの装飾子があるため、前述したような変換を施し、(| (>= (select (STAT A B C D E F) “average”) 28) X)とする。
次に、ステップS2でfをfsに退避する。
次に、ステップS3で、インデックス装置51にfの有無を問い合わせる。インデックス装置51からはnil(空)を含むchが返されるとし、ステップS5に進む。
次にステップS5で、変数i を0 で初期化する。以下、引数は最初の引数から順に、第0 引数、第1 引数、第2引数・・・とする。ここでは第0引数は(>= select (STAT A B C D E F) “average”) 28)、 第1引数はXである。ステップS6に進む。
次にステップS6で、i=0 番目の引数の存在を検証し、i =0番目の引数が存在するためステップS7に進む。
次にステップS7で、第0引数をf0とする。ここではf0は (>= select (STAT A B C D E F) “average”) 28)である。
次にステッS8で、f0の型を判定し、要求処理関数(サブプログラム)であるため、ステップS9に進む。
次にステップS9で、f0 を引数として、実体化手続き(instantiate) を開始する。すなわち再帰処理1に入る。
(再帰処理1)
ステップS1で、f0をfとみなして、ステップS2で退避を行い、ステップS3でインデックス装置への問い合わせを行い、nil(空)を含むchが返されたとして(S4のYES)、ステップS5に進む。
ステップS5で、変数iを0で初期化する。第0変数は(select (STAT A B C D E F) “average”)、第1変数は、28である。i=0番目の引数が存在するため(S6のYES)ステップS7に進み、第0引数をf0とする。ここではf0は、(select (STAT A B C D E F) “average”)である。
次にステッS8で、f0の型を判定し、要求処理関数であるため、ステップS9に進む。
次にステップS9で、f0 を引数として、実体化手続き(instantiate) を開始する。すなわち再帰処理2に入る。
(再帰処理2)
ステップS1で、f0をfとみなして、ステップS2で退避を行い、ステップS3でインデックス装置への問い合わせを行い、nil(空)を含むchが返されたとして(S4のYES)、ステップS5に進む。
ステップS5で、変数iを0で初期化する。第0変数は(STAT A B C D E F)、第1変数は、“average”である。i=0番目の引数が存在するため(S6のYES)ステップS7に進み、第0引数をf0とする。ここではf0は、(STAT A B C D E F)である。
次にステッS8で、f0の型を判定し、要求処理関数であるため、ステップS9に進む。
次にステップS9で、f0 を引数として、実体化手続き(instantiate) を開始する。すなわち再帰処理3に入る。
(再帰処理3)
ステップS1で、f0をfとみなして、ステップS2で退避を行い、ステップS3でインデックス装置への問い合わせを行い、nil(空)を含むchが返されたとして(S4のYES)、ステップS5に進む。
ステップS5で、変数iを0で初期化する。第0変数はA、第1引数はB、 第2変数はC、第3引数はD、 第4変数はE、第5引数はFである。i=0番目の引数が存在するため(S6のYES)ステップS7に進み、第0引数をf0とする。ここではf0は、Aである。
次にステッS8で、f0の型を判定し、要求処理関数でないため、ステップS11に進みiを1だけインクリメントする。
ステップS6に戻り、i=1番目の引数が存在するため(S6のYES)ステップS7に進み、第1引数をf1とする。ここではf1は、Bとなる。
次にステップS8で、f1の型を判定し、要求処理関数でないため、ステップS11に進みiを1だけインクリメントする。
第2変数のC、第3引数のD、 第4変数のE、第5引数のFについていずれも要求処理関数でないため、同様の処理を経て、ステップS6においてNOとなり、ステップS12に進む。
ステップS12では、fを実体化する要求処理装置(制御装置)を選択し、選択した要求処理装置(制御装置)に対するfの実体化要求を要求処理装置管理部203に送る。また、fの出力を受けるチャネルの情報、すなわち、(STAT A B C D E F)と、選択した要求処理装置(制御装置)の識別子との組、をch に代入する。
ステップS13では、インデックス装置51に、(STAT A B C D E F)と、チャネル情報chとの対応を登録する(図8のインデックス表の2行目を参照)。
ステップS14ではチャネル情報chを返すことにより再帰処理3を終了する。すなわち再帰処理2の途中のステップS9に戻り、再帰処理3で返されたチャネル情報chをch_0に代入する。
(再帰処理2)
ステップS10において、fにおける第0引数であるf0をch_0で置換し、iを1だけインクリメントし、ステップS6に戻る。
i=1番目の引数が存在するため(S6のYES)、ステップS7に進み、第1引数をf1とする。ここではf1は、“average”である。
次にステップS8で、f1の型を判定し、要求処理関数でないため、ステップS11に進みiを1だけインクリメントする。
i=2番目の引数は存在しないため(S6のNO)、ステップS12に進む。
ステップS12では、fを実体化する要求処理装置(制御装置)を選択し、選択した要求処理装置(制御装置)に対するfの実体化要求を要求処理装置管理部203に送る。また、チャネル情報、すなわち(select (STAT A B C D E F) “average”)と、選択した要求処理装置(制御装置)の識別子との組をch に代入する。
ステップS13では、インデックス装置51に、(select (STAT A B C D E F) “average”)と、チャネル情報chとの対応を登録する(図8のインデックス表の4行目を参照)。
ステップS14ではチャネル情報chを返すことにより再帰処理2を終了する。すなわち再帰処理1の途中のステップS9に戻り、再帰処理2で返されたチャネル情報chをch_0に代入する。
(再帰処理1)
ステップS10において、f0をch_0で置換し、iを1だけインクリメントし、ステップS6に戻る。
i=1番目の引数が存在するため(S6のYES)、ステップS7に進み、第1引数をf1とする。ここではf1は、28である。
次にステップS8で、f1の型を判定し、要求処理関数でないため、ステップS11に進みiを1だけインクリメントする。
i=2番目の引数は存在しないため(S6のNO)、ステップS12に進む。
ステップS12では、fを実体化する要求処理装置(制御装置)を選択し、選択した要求処理装置(制御装置)に対するfの実体化要求を要求処理装置管理部203に送る。また、チャネル情報、すなわち(>= (select (STAT A B C D E F) “average”) 28)と、選択した要求処理装置(制御装置)の識別子との組をch に代入する。
ステップS13では、インデックス装置51に、(>= (select (STAT A B C D E F) “average”) 28)と、チャネル情報chとの対応を登録する(図8のインデックス表の3行目を参照)。
ステップS14ではチャネルchを返すことにより再帰処理1を終了する。すなわちメイン処理0の途中のステップS9に戻り、再帰処理1で返されたチャネルchをch_0に代入する。
(メイン処理)
ステップS10において、f0をch_0で置換し、iを1だけインクリメントし、ステップS6に戻る。
i=1番目の引数が存在するため(S6のYES)、ステップS7に進み、第1引数をf1とする。ここではf1は、Xである。
次にステッS8で、f1の型を判定し、要求処理関数でないため、ステップS11に進みiを1だけインクリメントする。
i=2番目の引数は存在しないため(S6のNO)、ステップS12に進む。
ステップS12では、fを実体化する要求処理装置(制御装置)を選択し、選択した要求処理装置(制御装置)に対するfの実体化要求を要求処理装置管理部203に送る。また、チャネル情報、すなわち、(| (>= select (STAT A B C D E F) .average 28) X)と、選択した要求処理装置(制御装置)の識別子との組、をch に代入する。
ステップS13では、インデックス装置51に、(| (>= select (STAT A B C D E F) .average 28) X)と、チャネルchとの対応を登録する。
ステップS14に進み、本処理を終了する。
以上のように、本実施形態によれば、多数のプログラムを同一の環境で動作させるとき、各プログラムで共通する処理を行う要求処理関数を共用化することで効率良いプログラム実行が可能となる。これにより同一の環境であればより多くのプログラムを同時に実行できるようになる。また、同一のパフォーマンスを求めるのにより安価な機材でセンサネットワークを構成でき、あるいは、より少ないエネルギーで多くのプログラムを実行できるようになる。
本発明の一実施の形態としての分散処理システムの概略構成を示すブロック図。 要求処理装置(制御装置)の内部構成を示す図。 要求配置装置の内部構成を示す図。 要求処理関数の共用化の例を示す図。 要求配置装置の動作(要求配置アルゴリズム)を説明するフローチャート。 要求処理関数の正規化に対応した要求処理関数問合せ処理の流れを示すフローチャート。 要求処理関数の正規化に対応した要求処理関数登録処理の流れを示すフローチャート。 インデックス装置に記憶されたインデックス表の一例を示す図。
符号の説明
11a〜11b:作用装置(センサ)
11c〜11d:作用装置(アクチュエータ)
21a〜21c:要求処理装置(制御装置)
31a〜31b:ユーザ装置
41:要求配置装置
51:インデックス装置(関数登録装置、識別情報記憶部、関数検出部、識別情報登録部)
101:Publish-Subscribeブローカ(第1チャネル管理部、第2チャネル管理部、第3チャネル管理部)
102:要求処理関数実行環境(関数受付部、関数保持部、関数実行部、出力引数送信処理部、第3チャネル生成部、関数出力送信処理部、送信指示部)
201:プログラム入力受付部
202:インデックス装置通信部
203:要求処理装置管理部(関数提供部)
204:要求配置アルゴリズム実行部(検査要求部、実行先選択部、符号化部、正規化部)

Claims (10)

  1. 複数の外部センサからのセンサ値に基づいて、あらかじめ与えられた複数の関数を実行することにより複数のアクチュエータを制御する制御装置と、前記制御装置に対し実行するべき関数を提供する関数提供装置と、を備えた制御システムであって、
    (A)前記関数提供装置は、
    複数の関数を含み、
    各前記関数は、前記複数の外部センサと、前記複数の関数のうち前記関数と異なる他の関数と、のうち少なくとも1つを入力引数として指定し、
    前記複数の関数のうちの少なくとも1つは、前記複数のアクチュエータのうちの少なくとも1つを出力引数として指定した
    プログラムの入力を受け付けるプログラム入力受付部と、
    関数の識別情報を複数記憶する識別情報記憶部と、
    前記識別情報記憶部を検索することにより、前記プログラム入力受付部に入力された前記プログラムに含まれる各前記関数のうち前記識別情報記憶部にマッチする識別情報が記憶されていない関数を検出する関数検出部と、
    検出された関数の識別情報を前記識別情報記憶部に登録する識別情報登録部と、
    前記検出された関数を前記制御装置に提供する関数提供部と、を有し、
    (B)前記制御装置は、
    前記関数提供装置から、前記関数の提供を受け付ける関数受付部と、
    前記関数受付部で受け付けた各関数を記憶保持する関数記憶保持部と、
    前記関数記憶保持部で保持される各前記関数の各々について、前記関数の入力引数を受信し、前記関数を実行する関数実行部と、
    前記複数の外部センサに対応する複数の第1チャネルを管理し、前記複数の外部センサから前記複数の第1チャネルを介して前記センサ値を受信し、各前記第1チャネルに対応して受信したセンサ値を、各前記第1チャネルに対して各々あらかじめ指定された関数の入力引数として前記関数実行部に送信する第1チャネル管理部と、
    前記複数のアクチュエータに対応する複数の第2チャネルを管理し、各前記第2チャネルを介して受け取った値を各々対応する前記アクチュエータに送信する第2チャネル管理部と、
    前記関数記憶保持部に保持される各関数のうち前記出力引数を含む関数について、前記出力引数の値を、前記出力引数に指定されたアクチュエータに対応する前記第2チャネルを指定して前記第2チャネル管理部に送信する出力引数送信処理部と、
    前記関数受付部で受け付けた関数について、第3チャネルを生成する第3チャネル生成部と、
    前記第3チャネル生成部により生成された複数の前記第3チャネルを管理し、各前記第3チャネルを介して受信した値を各前記第3チャネルに対して各々あらかじめ指定された関数の入力引数として前記関数実行部に送信する第3チャネル管理部と、
    前記関数記憶保持部に保持される各前記関数の実行により得られた前記関数の出力値を各前記関数に対応する前記第3チャネルを指定して前記第3チャネル管理部に送信する関数出力送信処理部と、
    前記関数受付部で受け付けた関数について、前記関数における入力引数に指定された前記外部センサまたは前記他の関数に対応する第1チャネルまたは第3チャネルを特定し、特定した第1チャネルまたは第3チャネルを介して受信された値を前記関数の入力引数として前記関数実行部に送信することを前記第1チャネル管理部または第3チャネル管理部に指示する送信指示部と、を有する
    ことを特徴とする制御システム。
  2. 前記識別情報記憶部に記憶される各前記関数の識別情報は、各前記関数の文字列であり、
    前記関数提供装置は、前記プログラムに含まれる前記関数の文字列を正規化する正規化部をさらに有し、
    前記関数提供装置における前記関数検出部は、正規化された文字列に基づき前記識別情報記憶部を検索し、
    前記関数提供装置における前記識別情報登録部は、前記正規化された文字列にマッチする文字列が記憶されていないとき、前記正規化された文字列を前記識別情報記憶部に登録し、
    前記関数提供装置における前記関数提供部は、前記正規化された文字列からなる関数を前記制御装置に提供する、
    ことを特徴とする請求項1に記載の制御システム。
  3. 前記識別情報記憶部に記憶される各前記関数の識別情報は、各前記関数の符号表現であり、
    前記関数提供装置は、前記プログラムに含まれる前記関数を符号化して符号表現を得る符号化部をさらに有し、
    前記関数提供装置における前記関数検出部は、前記プログラムに含まれる前記関数について得られた符号表現に基づき前記識別情報記憶部を検索し、
    前記関数提供装置における前記識別情報登録部は、前記関数検出部により検出された関数について、前記関数の符号表現を前記識別情報記憶部に登録する、
    ことを特徴とする請求項1または2に記載の制御システム。
  4. 複数の前記制御装置を備え、
    前記関数提供装置は、前記検出された関数を実行するべき制御装置を選択する実行先選択部をさらに備え、
    前記関数提供部は、前記検出された関数を前記実行先選択部により選択された制御装置に提供する
    ことを特徴とする請求項1ないし3のいずれか一項に記載の制御システム。
  5. 複数の前記制御装置はネットワークを介して互いに接続され、
    各前記制御装置は、異なる前記外部センサおよび異なる前記アクチュエータに接続され、
    前記制御装置における前記出力引数送信処理部は、前記第2チャネルが他の前記制御装置に存在するとき、前記他の制御装置における前記第2チャネル管理部に前記送信を行い、
    前記制御装置における前記第1チャネル管理部は、前記あらかじめ指定された関数が前記他の制御装置に存在するとき、前記他の制御装置における前記関数実行部に前記送信を行い、
    前記制御装置における前記第3チャネル管理部は、前記あらかじめ指定された関数が前記他の制御装置に存在するとき、前記他の制御装置における前記関数実行部に前記送信を行い、
    前記制御装置における前記送信指示部は、前記第1チャネルまたは第3チャネルが前記他の制御装置に存在するとき、前記他の制御装置における前記第1チャネル管理部または第3チャネル管理部に指示を行う
    ことを特徴とする請求項4に記載の制御システム。
  6. 前記関数提供装置の前記実行先選択部は、前記検出された関数により指定される入力引数および出力引数に対応する前記第1チャネルおよび前記第3チャネルを、最も多くまたは閾値以上有する制御装置を選択することを特徴とする請求項4または5に記載の制御システム。
  7. 前記関数提供装置における前記実行先選択部は、前記複数の制御装置のうち最も低いまたは閾値以下の負荷をもつ制御装置を選択することを特徴とする請求項4ないし6のいずれか一項に記載の制御システム。
  8. 前記関数提供装置は、
    前記プログラム入力受付部と、前記関数提供部とを含む要求配置装置と、
    前記識別情報記憶部と、前記関数検出部と、前記識別情報登録部とを含むインデックス装置とからなり、
    前記要求配置装置は、前記プログラムに含まれる各前記関数の識別情報が識別情報記憶部に登録されているか否かの検査を前記インデックス装置に対して要求し、前記インデックス装置から前記各関数が登録済みか否かを示す検査結果の通知を受ける検査要求部をさらに有し、
    前記インデックス装置における前記関数検出部は、前記要求配置装置からの検査要求を受けて前記識別情報記憶部を検索し、前記検査結果を前記要求配置装置に通知する
    ことを特徴とする請求項1ないし7のいずれか一項に記載の制御システム。
  9. 複数の外部センサからのセンサ値に基づいて、あらかじめ与えられた複数の関数を実行することにより複数のアクチュエータを制御する制御装置であって、
    外部の関数提供装置から、
    前記複数の外部センサと、1つ以上のある関数と、のうちの少なくとも1つを入力引数として指定した関数と、
    前記複数の外部センサと、1つ以上のある関数と、のうちの少なくとも1つを入力引数として指定し、かつ、前記複数のアクチュエータのうちの少なくとも1つを出力引数として指定した関数と
    の提供を受け付ける関数受付部と、
    前記関数受付部で受け付けた各関数を記憶保持する関数記憶保持部と、
    前記関数記憶保持部で保持される各前記関数の各々について、前記関数の入力引数を受信し、前記関数を実行する関数実行部と、
    前記複数の外部センサに対応する複数の第1チャネルを管理し、前記複数の外部センサから前記複数の第1チャネルを介して前記センサ値を受信し、各前記第1チャネルに対応して受信したセンサ値を、各前記第1チャネルに対して各々あらかじめ指定された関数の入力引数として前記関数実行部に送信する第1チャネル管理部と、
    前記複数のアクチュエータに対応する複数の第2チャネルを管理し、各前記第2チャネルを介して受け取った値を各々対応する前記アクチュエータに送信する第2チャネル管理部と、
    前記関数記憶保持部に保持される各関数のうち前記出力引数を含む関数について、前記出力引数の値を、前記出力引数に指定されたアクチュエータに対応する前記第2チャネルを指定して前記第2チャネル管理部に送信する出力引数送信処理部と、
    前記関数受付部で受け付けた関数について、第3チャネルを生成する第3チャネル生成部と、
    前記第3チャネル生成部により生成された複数の前記第3チャネルを管理し、各前記第3チャネルを介して受信した値を各前記第3チャネルに対して各々あらかじめ指定された関数の入力引数として前記関数実行部に送信する第3チャネル管理部と、
    前記関数記憶保持部に保持される各前記関数の実行により得られた前記関数の出力値を各前記関数に対応する前記第3チャネルを指定して前記第3チャネル管理部に送信する関数出力送信処理部と、
    前記関数受付部で受け付けた関数について、前記関数における入力引数に指定された前記外部センサまたは前記ある関数に対応する第1チャネルまたは第3チャネルを特定し、特定した第1チャネルまたは第3チャネルを介して受信された値を前記関数の入力引数として前記関数実行部に送信することを前記第1チャネル管理部または第3チャネル管理部に指示する送信指示部と、
    を備えた制御装置。
  10. 複数の各外部センサからのセンサ値に基づいて、複数のアクチュエータを制御する制御方法であって、
    複数の関数を含み、
    各前記関数は、前記複数の外部センサと、前記複数の関数のうち前記関数と異なる他の関数と、のうち少なくとも1つを入力引数として指定し、
    前記複数の関数のうちの少なくとも1つは、前記複数のアクチュエータのうちの少なくとも1つを出力引数として指定した
    プログラムの入力を受け付けるプログラム入力受付ステップと、
    関数の識別情報を複数記憶する識別情報記憶部を検索することにより、前記プログラム入力受付ステップに入力された前記プログラムに含まれる各前記関数のうち前記識別情報記憶部に識別情報が記憶されていない関数を検出する関数検出ステップと、
    検出された関数の識別情報を前記識別情報記憶部に登録する関数登録ステップと、
    前記関数検出ステップで検出された各関数を記憶保持する関数記憶保持ステップと、
    前記関数記憶保持ステップで保持される各前記関数の各々について、前記関数の入力引数を受信し、前記関数を実行する関数実行ステップと、
    前記複数の外部センサに対応する複数の第1チャネルを管理し、前記複数の外部センサから前記複数の第1チャネルを介して前記センサ値を受信し、各前記第1チャネルに対応して受信したセンサ値を、各前記第1チャネルに対して各々あらかじめ指定された関数の入力引数として前記関数実行ステップに送信する第1チャネル管理ステップと、
    前記複数のアクチュエータに対応する複数の第2チャネルを管理し、各前記第2チャネルを介して受け取った値を各々対応する前記アクチュエータに送信する第2チャネル管理ステップと、
    前記関数記憶保持ステップで保持される各関数のうち前記出力引数を含む関数について、前記出力引数の値を、前記出力引数に指定されたアクチュエータに対応する前記第2チャネルを指定して前記第2チャネル管理ステップに送信する出力引数送信処理ステップと、
    前記関数検出ステップで検出された関数について、第3チャネルを生成する第3チャネル生成ステップと、
    前記第3チャネル生成ステップにより生成された複数の前記第3チャネルを管理し、各前記第3チャネルを介して受信した値を各前記第3チャネルに対して各々あらかじめ指定された関数の入力引数として前記関数実行ステップに送信する第3チャネル管理ステップと、
    前記関数記憶保持ステップに保持される各前記関数の実行により得られた前記関数の出力値を各前記関数に対応する前記第3チャネルを指定して前記第3チャネル管理ステップに送信する関数出力送信処理ステップと、
    前記関数受付ステップで受け付けた関数について、前記関数における入力引数に指定された前記外部センサまたは前記他の関数に対応する第1チャネルまたは第3チャネルを特定し、特定した第1チャネルまたは第3チャネルを介した受信した値を前記関数の入力引数として前記関数実行ステップに送信するように前記第1チャネル管理ステップまたは第3チャネル管理ステップに指示する送信指示ステップと、
    を備えたことを特徴とする制御方法。
JP2008064431A 2008-03-13 2008-03-13 制御システム、制御装置および制御方法 Expired - Fee Related JP4919995B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2008064431A JP4919995B2 (ja) 2008-03-13 2008-03-13 制御システム、制御装置および制御方法
US12/403,073 US8805557B2 (en) 2008-03-13 2009-03-12 Control system, control device, and control method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008064431A JP4919995B2 (ja) 2008-03-13 2008-03-13 制御システム、制御装置および制御方法

Publications (2)

Publication Number Publication Date
JP2009223403A true JP2009223403A (ja) 2009-10-01
JP4919995B2 JP4919995B2 (ja) 2012-04-18

Family

ID=41063911

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008064431A Expired - Fee Related JP4919995B2 (ja) 2008-03-13 2008-03-13 制御システム、制御装置および制御方法

Country Status (2)

Country Link
US (1) US8805557B2 (ja)
JP (1) JP4919995B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015500520A (ja) * 2011-11-18 2015-01-05 トムソン ライセンシングThomson Licensing エンドユーザデバイス、およびそれぞれのエンドユーザデバイスの遠隔管理のためのパブリッシュ/サブスクライブブローカを備えるシステム
JP2016522946A (ja) * 2013-05-20 2016-08-04 パックサイズ,エルエルシー ローカルまたは分散型コンピュータ・システムにおける柔軟なノード構成方法およびシステム

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102011107646A1 (de) * 2011-07-12 2013-01-17 Phoenix Contact Gmbh & Co. Kg Verfahren und System zur dynamischen Verteilung von Programmfunktionen in verteilten Steuerungssystemen
US9958860B2 (en) * 2014-05-01 2018-05-01 Rockwell Automation Technologies, Inc. Systems and methods for broadcasting data and data tags associated with an industrial automation system
US9817676B2 (en) * 2015-06-23 2017-11-14 Mcafee, Inc. Cognitive protection of critical industrial solutions using IoT sensor fusion

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01183704A (ja) * 1988-01-18 1989-07-21 Fujitsu Ltd ロボット制御方式
JP2002157231A (ja) * 2000-09-07 2002-05-31 Fujitsu Ltd 仮想通信路および仮想通信路を制御するエージェント連携システムおよびエージェント連携方法
WO2007028690A1 (en) * 2005-09-07 2007-03-15 International Business Machines Corporation Allocating resources in an autonomic sensor network ecosystem

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5978850A (en) * 1997-07-02 1999-11-02 National Instruments Corporation System and method for accessing parameters in a fieldbus network using a tag parameters interface
US6185581B1 (en) * 1999-08-19 2001-02-06 Sun Microsystems, Inc. Train-algorithm-based garbage collector employing fixed-size remembered sets
CA2441950A1 (en) * 2001-04-27 2002-11-07 International Business Machines Corporation Method and apparatus for controlling processor operation speed
WO2002091117A2 (en) * 2001-05-04 2002-11-14 Invensys Systems, Inc. Process control loop analysis system
JP2006344017A (ja) 2005-06-09 2006-12-21 Hitachi Ltd センサネットワークシステム及びセンサネットワークのデータ処理方法
US7561930B2 (en) * 2006-10-02 2009-07-14 Fisher-Rosemount Systems, Inc. Dynamic modifier function blocks for use in a process control system

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01183704A (ja) * 1988-01-18 1989-07-21 Fujitsu Ltd ロボット制御方式
JP2002157231A (ja) * 2000-09-07 2002-05-31 Fujitsu Ltd 仮想通信路および仮想通信路を制御するエージェント連携システムおよびエージェント連携方法
WO2007028690A1 (en) * 2005-09-07 2007-03-15 International Business Machines Corporation Allocating resources in an autonomic sensor network ecosystem

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015500520A (ja) * 2011-11-18 2015-01-05 トムソン ライセンシングThomson Licensing エンドユーザデバイス、およびそれぞれのエンドユーザデバイスの遠隔管理のためのパブリッシュ/サブスクライブブローカを備えるシステム
JP2016522946A (ja) * 2013-05-20 2016-08-04 パックサイズ,エルエルシー ローカルまたは分散型コンピュータ・システムにおける柔軟なノード構成方法およびシステム
US10491687B2 (en) 2013-05-20 2019-11-26 Packsize Llc Method and system for flexible node composition on local or distributed computer systems

Also Published As

Publication number Publication date
JP4919995B2 (ja) 2012-04-18
US8805557B2 (en) 2014-08-12
US20090234468A1 (en) 2009-09-17

Similar Documents

Publication Publication Date Title
CN108809972B (zh) 基于开源生态系统的物联网综合实验及应用开发平台
US8407349B2 (en) Discovering and identifying manageable information technology resources
JP5104489B2 (ja) 分散イベント検出システム、分散イベント検出方法、及び分散イベント検出用プログラム
JP4919995B2 (ja) 制御システム、制御装置および制御方法
US20130262366A1 (en) Generic Reasoner Distribution Method
JP2005174201A (ja) リソース割り当てシステム、方法及びプログラム
CN101313292A (zh) 对等数据传送指挥协调
CN106537347B (zh) 用于分发和处理流的系统和方法
Sahlmann et al. Ontology-driven device descriptions for IoT network management
Al-Jaroodi et al. PsCPS: A distributed platform for cloud and fog integrated smart cyber-physical systems
Misra et al. An interoperable realization of smart cities with plug and play based device management
CN1653423A (zh) 交换基础设施系统和方法
JP2005322222A (ja) 通信機能付加方法、プログラム、記録媒体及び通信装置
CN110933952B (zh) 用于分布式数据系统的语义搜索及规则的方法
US7499936B2 (en) Generic SNMP proxy
JP5809743B2 (ja) 分散システムにおける異種システムデータ提供方法
US9866651B2 (en) Entity creation for constrained devices
Thramboulidis Service-oriented architecture in industrial automation systems-the case of IEC 61499: A review
CN113965608A (zh) 一种数控设备数据收集及指令下发系统
JP6370277B2 (ja) 機器制御装置及び機器管理システム
Wided et al. A new agent based load balancing model for improving the grid performance
CN103886075B (zh) 分布式网络感知信息存储和查询系统
WO2020213325A1 (ja) 管理システム
US11044320B2 (en) Data distribution method for a process automation and internet of things system
Berryman The open control architecture

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20101021

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20111226

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120104

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120131

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150210

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees