JP6547580B2 - 分散制御方法、分散制御システム、および分散制御プログラム - Google Patents

分散制御方法、分散制御システム、および分散制御プログラム Download PDF

Info

Publication number
JP6547580B2
JP6547580B2 JP2015206704A JP2015206704A JP6547580B2 JP 6547580 B2 JP6547580 B2 JP 6547580B2 JP 2015206704 A JP2015206704 A JP 2015206704A JP 2015206704 A JP2015206704 A JP 2015206704A JP 6547580 B2 JP6547580 B2 JP 6547580B2
Authority
JP
Japan
Prior art keywords
event
notification
identification information
information
detection
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.)
Active
Application number
JP2015206704A
Other languages
English (en)
Other versions
JP2017078968A (ja
Inventor
上野 仁
仁 上野
健一 阿比留
健一 阿比留
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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2015206704A priority Critical patent/JP6547580B2/ja
Priority to US15/295,182 priority patent/US9911304B2/en
Publication of JP2017078968A publication Critical patent/JP2017078968A/ja
Application granted granted Critical
Publication of JP6547580B2 publication Critical patent/JP6547580B2/ja
Active 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/418Total factory control, i.e. centrally controlling a plurality of machines, e.g. direct or distributed numerical control [DNC], flexible manufacturing systems [FMS], integrated manufacturing systems [IMS] or computer integrated manufacturing [CIM]
    • G05B19/4184Total factory control, i.e. centrally controlling a plurality of machines, e.g. direct or distributed numerical control [DNC], flexible manufacturing systems [FMS], integrated manufacturing systems [IMS] or computer integrated manufacturing [CIM] characterised by fault tolerance, reliability of production system
    • GPHYSICS
    • G08SIGNALLING
    • G08BSIGNALLING OR CALLING SYSTEMS; ORDER TELEGRAPHS; ALARM SYSTEMS
    • G08B21/00Alarms responsive to a single specified undesired or abnormal condition and not otherwise provided for
    • G08B21/18Status alarms
    • 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/418Total factory control, i.e. centrally controlling a plurality of machines, e.g. direct or distributed numerical control [DNC], flexible manufacturing systems [FMS], integrated manufacturing systems [IMS] or computer integrated manufacturing [CIM]
    • G05B19/41815Total factory control, i.e. centrally controlling a plurality of machines, e.g. direct or distributed numerical control [DNC], flexible manufacturing systems [FMS], integrated manufacturing systems [IMS] or computer integrated manufacturing [CIM] characterised by the cooperation between machine tools, manipulators and conveyor or other workpiece supply system, workcell
    • 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/25056Automatic configuration of monitoring, control system as function of operator input, events
    • 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/25413Interrupt, event, state change triggered
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02PCLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
    • Y02P90/00Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
    • Y02P90/02Total factory control, e.g. smart factories, flexible manufacturing systems [FMS] or integrated manufacturing systems [IMS]

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Manufacturing & Machinery (AREA)
  • Quality & Reliability (AREA)
  • Automation & Control Theory (AREA)
  • Business, Economics & Management (AREA)
  • Emergency Management (AREA)
  • Telephonic Communication Services (AREA)

Description

本発明は、分散制御方法、分散制御システム、および分散制御プログラムに関する。
従来、複数の通知装置の各通知装置が、複数の事象のある事象を検出する検出装置と協働して、複数の事象に応じた処理を分割した各処理を実行することにより、複数の通知装置が分散処理を実行する技術がある。
関連する先行技術として、例えば、発行−購読ネットワークに関して、通知の伝送における失敗を示す指示情報を受け取る処理およびこの指示情報に応じて通知を再送する技術がある。また、あるノードが既に参加している論理チャンネルから離脱する場合、あるノードは、自らの論理チャンネルのオーナを管理するテーブルを検索し、検索されたオーナに対して離脱要求を示すデータをユニキャスト送信する技術がある。また、リクエストされた肯定応答に応じて時宜を得た肯定応答を受信すると、その肯定応答に関連するすべての未処理メッセージを再送待ち行列から除去する技術がある。
特開2009−163753号公報 特開2011−53978号公報 特開2001−186210号公報 特開2011−72004号公報
しかしながら、従来技術によれば、複数の通知装置の各通知装置が、複数の事象のある事象を検出する検出装置と協働して、複数の事象に応じた処理を分割した各処理を実行することにより複数の通知装置が実行する分散処理を継続させることができない場合がある。
例えば、分散処理として、ある検出装置がある事象を検出した場合、ある検出装置に接続するある通知装置が、ある事象の検出を他の通知装置に通知し、他の通知装置が、ある事象の検出に応じた処理として他の事象の検出の有無を他の検出装置に問い合わせる。このような場合に、他の検出装置が移動する場合があり、他の検出装置が移動すると、分散処理を継続させることができない場合がある。具体的には、ある通知装置と、他の検出装置の移動元の通知装置と、他の検出装置の移動先の通知装置とが、他の検出装置がどこから移動したか特定することができず、分散処理を継続させることができなくなる。
具体的には、移動先の通知装置は、移動元の通知装置を特定することはできない。また、移動元の通知装置は、他の検出装置と通信できなくなるが、通信の混雑が生じた等により他の検出装置と通信できなかっただけなのか、または他の検出装置の電源が供給されていなかったのか、または他の検出装置が移動したのか特定することはできない。また、ある通知装置は、ある事象の検出を移動元の通知装置に通知すると、ある事象の検出に応じた処理を実行することができない旨の否定応答を受信するが、否定応答では、他の検出装置が移動したか否かは特定できない。
1つの側面では、本発明は、複数の通知装置の各通知装置が、複数の事象のある事象を検出する検出装置と協働して、複数の事象に応じた処理を分割した各処理を実行することにより複数の通知装置が実行する分散処理を継続させることができる分散制御方法、分散制御システム、および分散制御プログラムを提供することを目的とする。
本発明の一側面によれば、それぞれ異なる位置に配置された複数の通知装置と、複数の通知装置のうちの自装置の位置に応じた通知装置に事象の検出を通知する検出装置とを含む分散制御システムにおける第1の事象を検出する検出装置に接続した第1の通知装置が、第1の事象を検出する検出装置から第1の事象の検出を受信した場合、第2の事象を検出する検出装置に接続した第2の通知装置の識別情報と第1の事象の識別情報とを対応付けた通知先情報を参照して、第1の事象の検出を第2の通知装置に通知し、第2の通知装置から第1の事象の検出に応じた処理を実行することができない旨の否定応答を受信した場合、第1の事象の識別情報と第2の通知装置の識別情報とを対応付けて否定応答情報に記憶し、第2の事象を検出する検出装置に接続した第3の通知装置から第1の事象の検出の通知の依頼を受信したことに応じて、否定応答情報に第1の事象の識別情報が含まれるか否かを判断し、否定応答情報に第1の事象の識別情報が含まれると判断した場合、通知先情報と否定応答情報とから、第1の事象の識別情報に対応付けられた第2の通知装置の識別情報を削除する分散制御方法、分散制御システム、および分散制御プログラムが提案される。
本発明の一態様によれば、複数の通知装置の各通知装置が、複数の事象のある事象を検出する検出装置と協働して、複数の事象に応じた処理を分割した各処理を実行することにより複数の通知装置が実行する分散処理を継続させることができるという効果を奏する。
図1は、本実施の形態にかかる分散制御システム100の動作例を示す説明図である。 図2は、分散制御システム100の一例を示す説明図である。 図3は、サーバのハードウェア構成例を示す説明図である。 図4は、携帯端末102のハードウェア構成例を示す説明図である。 図5は、条件判定の分散処理の一例を示す説明図である。 図6は、携帯端末102への条件情報の設定例を示す説明図である。 図7は、Pub/Sub技術を用いた条件判定の分散処理の実行例を示す説明図である。 図8は、CCN101の機能構成例を示す説明図である。 図9は、Subscriberリスト811の記憶内容の一例を示す説明図である。 図10は、CCN−Subscribe数リスト812の記憶内容の一例を示す説明図である。 図11は、再送信待ちリスト813の記憶内容の一例を示す説明図である。 図12は、Publishの後にSubscribeが通知される場合のメッセージ送信例を示す説明図である。 図13は、SUS201からのSubscribe受信時処理手順の一例を示すフローチャートである。 図14は、第1のPublish処理手順の一例を示すフローチャートである。 図15は、Registerおよび条件設定要求受信処理手順の一例を示すフローチャートである。 図16は、CCN101からのSubscribe受信時処理手順の一例を示すフローチャートである。 図17は、Publishの前にSubscribeが通知される場合のメッセージ送信例を示す説明図である。 図18は、第2のPublish処理手順の一例を示すフローチャートである。 図19は、Expire時刻到来時の各リストの記憶内容の一例を示す説明図(その1)である。 図20は、Expire時刻到来時の各リストの記憶内容の一例を示す説明図(その2)である。 図21は、Expire時刻到来時処理手順の一例を示すフローチャートである。
以下に図面を参照して、開示の分散制御方法、分散制御システム、および分散制御プログラムの実施の形態を詳細に説明する。
図1は、本実施の形態にかかる分散制御システム100の動作例を示す説明図である。分散制御システム100は、フィールドの属性が何らかの条件を満たした際に利用者に通知するサービスを提供するシステムである。分散制御システム100は、複数の通知装置と、自装置の位置に応じた通知装置に事象の検出を通知する検出装置とを含む。分散制御システム100に含まれる他の装置については、図2で説明する。複数の通知装置は、フィールドの複数の箇所の各箇所に配置されており、利用者から受け付けた条件が成立したら、条件で指定された情報を付与して利用者に通知する。以下、通知装置を、CCN(Condition Check Node)と称する。
検出装置は、事象を検出する装置である。例えば、検出装置は、携帯端末やラップトップPC等である。以下の例では、検出装置が、携帯端末であるとして説明する。事象とは、観察によって得られる結果である。例えば、事象は、携帯端末が有するセンサによって取得することができる。事象の検出例としては、携帯端末が有する温度センサによって測定された温度が所定の閾値以上となった場合や、携帯端末の有する音センサによって測定された音圧が所定の閾値以上となった場合である。または、事象の検出を、単に、携帯端末が有する温度センサから温度を取得したとしてもよい。または、携帯端末が有する温度センサから温度を取得してCCNに取得した温度を通知し、CCNが通知を受けた温度と所定の閾値を比較して、通知を受けた温度が所定の閾値以上となった場合に、事象を検出したとしてもよい。
フィールドは、例えば、工場や、圃場等である。例えば、フィールドが工場であるとする。そして、通常の状態では工場内の空調設備の電源はオンとなっているが、工場内のある部屋の温度がある温度以上であり、かつ、工場内の別の部屋の温度がある温度以下である場合には、工場内の空調設備の電源をオフにしたいとする。この場合、工場内に分散制御システム100を適用することにより、管理者は、工場内のある部屋の温度がある温度以上であり、かつ、工場内の別の部屋の温度がある温度以下である場合に、通知を受けることができる。通知を受けた管理者は、工場内の空調設備の電源をオフにすることができる。
また、他の例として、フィールドが複数の圃場であるとする。そして、通常の状態では複数の圃場に農薬を散布しているが、複数の圃場のうちのある圃場の温度がある温度以上であり、かつ、複数の圃場の別の圃場の温度がある温度以下ならば農薬を散布しないとする。この場合、複数の圃場に分散制御システム100を適用することにより、複数の圃場の管理者は、ある圃場の温度がある温度以上であり、かつ、別の圃場の温度がある温度以下である場合に、通知を受けることができる。通知を受けた管理者は、農薬の散布を停止することができる。
このようなサービスを提供するために、分散制御システム100は、複数のCCNが、携帯端末と協働して、複数の事象に応じた処理を分割した各処理を実行することにより実現する分散処理を行う。例えば、ある携帯端末がある事象を検出した場合、ある携帯端末に接続するあるCCNが、ある判定処理が成立したとして、ある事象の検出を他のCCNに通知する。ある事象の検出の通知を受けた他のCCNは、ある事象の検出に応じた処理として他の判定処理を行う。そして、他のCCNは、条件判定処理の中で、他の事象の検出の有無を他の携帯端末に問い合わせる。ここで、他のCCNが、他の携帯端末と通信不可能であると、分散処理を継続させることができなくなる。そこで、他のCCNは、他の携帯端末と通信不可能である場合には、所定回数同じ通知を行う。この場合、携帯端末が多いほど、同じ通知が多く発生することになる。
また、他の携帯端末が移動する場合があり、他の携帯端末が移動すると、分散処理を継続させることができない場合がある。具体的には、あるCCNと、他の携帯端末の移動元のCCNと、他の携帯端末の移動先のCCNとが、他のCCNがどこから移動したか特定することができず、分散処理を継続させることができなくなる。
具体的には、移動先のCCNは、移動元のCCNを特定することはできない。また、移動元のCCNは、他の携帯端末と通信できなくなるが、通信の混雑が生じた等により他の携帯端末と通信できなかっただけなのか、または他の携帯端末の電源が供給されていなかったのか、または他の携帯端末が移動したのか特定することはできない。また、あるCCNは、ある事象の検出を移動元のCCNに通知すると、ある事象の検出に応じた処理を実行することができない旨の否定応答を受信するが、否定応答では、他の携帯端末が移動したか否かは特定できない。また、他の携帯端末は、CCNの代表URL(Uniform Resource Locator)しか記憶していない。
そこで、本実施の形態では、あるCCNが、判定処理内のある条件の成立を通知した移動元のCCNから否定応答を受け、移動先のCCNからある条件の成立の通知の依頼を受けたら、ある条件の成立時の通知先を移動先のCCNに変更することについて説明する。
具体的には、図1を用いて分散制御システム100の動作例について説明する。図1に示す分散制御システム100は、CCN101#1〜#3と、携帯端末102#A、#Bとを含む。分散制御システム100の全体については、図2で説明する。また、携帯端末102#A、Bは、事象の検出に用いるセンサとして、それぞれ、温度センサ103#A、Bを有する。CCN101#1、2は、Localnet1により接続する。また、CCN101#3は、Localnet2により接続する。Localnet1、2は、互いに接続する。
ここで、図1に示すCCN101#1は、分散処理の一部の処理となる判定処理が示された条件情報C1を記憶する。条件情報C1には、「携帯端末102#Aの温度が30度より大きい」という第1の事象を検出した場合、CCN101#2に第1の事象の検出を通知する処理を行うことが示されている。同様に、CCN101#2は、分散処理の一部の処理となる判定処理が示された条件情報C2を記憶する。条件情報C2には、CCN101#1から第1の事象の検出を受信し、かつ、「携帯端末102#Bの温度が25度未満」という第2の事象を検出した場合、利用者に通知するという処理を行うことが示されている。
以下、説明を簡略化するため、「#数字」の記号が付与された符号は、「CCN101#数字」に関するものであるとする。また、「#アルファベット」の記号が付与された符号は、「携帯端末102#アルファベット」に関するものであるとする。
また、CCN101#1〜3は、それぞれ、フィールドfを分割した領域に配置される。また、図1の例では、携帯端末102#Aは、CCN101#1の領域に存在する。従って、携帯端末102#Aは、自装置の位置に基づき、最も近い位置にあるCCN101#1に接続する。同様に、携帯端末102#Bは、自装置の位置に基づき、最も近い位置にあるCCN101#2に接続する。以下の説明において、携帯端末102が、あるCCN101の領域に存在する場合、「あるCCN101の配下の位置にある携帯端末102」と呼称する場合がある。CCN101#1と携帯端末102#Aとは、無線または有線により接続される。同様に、CCN101#2と携帯端末102#Bとは、無線または有線により接続される。
また、CCN101#1は、事象の検出を通知する通知先を管理する通知先情報111#1を記憶する。ここで、通知先情報111には、事象の検出の通知の依頼を受けた装置の識別情報と、事象を識別する情報とが対応付けて格納される。事象の検出の通知の依頼を、以下、「購読」と称する。購読を行う装置は、事象の検出の通知先となる装置そのものである場合もあるし、事象の検出の通知先となる装置とは別の装置である場合もある。
この状態で、図1の上部における(1)で示すように、携帯端末102#Bが、CCN101#2の配下の位置から、CCN101#3の配下の位置に移動したとする。そして、携帯端末102#Bが移動した後、図1の上部における(2)で示すように、第1の通知装置となるCCN101#1が、携帯端末102#Aにアクセスして、「携帯端末102#Aの温度が30度より大きい」という第1の事象を検出したとする。
第1の事象を検出した場合、CCN101#1は、図1の上部における(3)で示すように、第1の事象の検出を第2の通知装置となるCCN101#2に通知する。通知を受けたCCN101#2は、第1の事象の検出に応じた処理を実行するため、携帯端末102#Bにアクセスしようとするが、携帯端末102#Bは既に移動済であるため、アクセスできない。従って、CCN101#2は、予め指定された回数だけリトライした後、図1の上部における(4)で示すように、第1の事象の検出に応じた処理を実行することができない旨の否定応答(nack)を通知する。
nackを受信した場合、CCN101#1は、第1の事象の識別情報とCCN101#2の識別情報とを対応付けて、否定応答情報112#1に格納する。CCN101#1は、否定応答情報112#1を参照して、第1の事象の検出の再送を行う。
次に、図1の下部における(5)で示すように、CCN101#1は、第3の通知装置となるCCN101#3から第1の事象の検出の購読を受ける。ここで、CCN101#3は、条件情報C2に基づいて、CCN101#1に第1の事象の検出の購読を送信する。CCN101#3が条件情報C2の取得する方法については、図6で説明する。
そして、第1の事象の検出の購読を受けることに応じて、図1の下部における(6)で示すように、CCN101#1は、否定応答情報112#1に含まれる、CCN101#2の識別情報を削除できるか否かを判断する。例えば、CCN101#1は、事象ごとに、購読を受けた数と、否定応答情報112#1に含まれる否定応答を送信した装置の数とを比較し、一致した場合に、CCN101#2の識別情報を削除できると判断する。
または、図1の例では、第1の事象を購読するCCN101が分散制御システム100内で同時に1つしかないことが予めわかっていたとする。例えば、利用者が指定した条件を分割した装置が、第1の事象の検出の通知を1つのCCN101にすればよいと判断できたときである。このような場合、CCN101#3から第1の事象の検出の購読を受けた場合、CCN101#1は、否定応答情報112に、第1の事象の識別情報が含まれているか判断する。そして、否定応答情報112に、第1の事象の識別情報が含まれている場合に、CCN101#2の識別情報を削除できると判断する。
図1の例では、CCN101#1は、CCN101#2の識別情報を削除できると判断し、図1の下部における(7)で示すように、通知先情報111と否定応答情報112とから第1の事象に対応付けられたCCN101#2の識別情報を削除する。これにより、分散制御システム100は、分散処理を継続することができる。次に、図2を用いて、分散制御システム100全体について説明する。
図2は、分散制御システム100の一例を示す説明図である。分散制御システム100は、サービス利用者サーバ(SUS:Service User Server)201と、条件管理サーバ202と、位置管理サーバ203と、CCN101#1〜6と、携帯端末102#A、Bとを含む。また、条件管理サーバ202、位置管理サーバ203、CCN101#1〜6は、Wide Area NWによりそれぞれ接続する。また、CCN101#1、2は、Localnet1により接続する。また、CCN101#3、4は、Localnet2により接続する。また、CCN101#5、6は、Localnet3により接続する。Wide Area NWは、Localnet1〜3と接続する。
SUS201は、利用者から条件を受け付けるサーバである。SUS201は、インターネット211を経由して、CCN101#1〜6、条件管理サーバ202、位置管理サーバ203と接続する。
位置管理サーバ203は、利用者の携帯端末102の位置を管理する。条件管理サーバ202は、位置管理サーバ203が有する携帯端末102の位置情報に用いるSUS201が受け付けた条件を分割し、分割した条件を携帯端末102近傍のCCN101に配布する。ここで、条件管理サーバ202は、条件が成立する際には、可能な限り早く通知できるように、条件を分割する。また、条件管理サーバ202は、条件判定に用いる監視情報の収集や配信を可能なトラフィックコストで行えるように、条件を分割する。例えば、条件管理サーバ202は、通信コストとして、ホップ数が小さくなるように、条件を分割する。従って、条件管理サーバ202は、条件成立後の通知が一定時間内で行え、かつ、分散制御システム100にかかるトラフィックが最小となるように、条件を分割する。
CCN101#1〜6は、それぞれ、フィールドfを分割した領域に配置される。また、図2の例では、携帯端末102#Aは、CCN101#1の領域に存在する。また、携帯端末102#Bは、CCN101#3の領域に存在する。
図3は、サーバのハードウェア構成例を示す説明図である。ここで、サーバとは、図1に示したCCN101と、図2に示したSUS201と、条件管理サーバ202と、位置管理サーバ203と、である。図3において、サーバは、CPU301と、ROM(Read−Only Memory)302と、RAM303と、を含む。また、サーバは、ディスクドライブ304およびディスク305と、通信インターフェース306と、を含む。また、CPU301〜ディスクドライブ304、通信インターフェース306はバス307によってそれぞれ接続される。
CPU301は、サーバの全体の制御を司る演算処理装置である。また、サーバは、複数のCPUを有してもよい。ROM302は、ブートプログラムなどのプログラムを記憶する不揮発性メモリである。RAM303は、CPU301のワークエリアとして使用される揮発性メモリである。
ディスクドライブ304は、CPU301の制御に従ってディスク305に対するデータのリードおよびライトを制御する制御装置である。ディスクドライブ304には、例えば、磁気ディスクドライブ、光ディスクドライブ、ソリッドステートドライブなどを採用することができる。ディスク305は、ディスクドライブ304の制御で書き込まれたデータを記憶する不揮発性メモリである。例えばディスクドライブ304が磁気ディスクドライブである場合、ディスク305には、磁気ディスクを採用することができる。また、ディスクドライブ304が光ディスクドライブである場合、ディスク305には、光ディスクを採用することができる。また、ディスクドライブ304がソリッドステートドライブである場合、ディスク305には、半導体素子によって形成された半導体メモリ、いわゆる半導体ディスクを採用することができる。
通信インターフェース306は、ネットワークと内部のインターフェースを司り、他の装置からのデータの入出力を制御する制御装置である。具体的に、通信インターフェース306は、通信回線を通じてネットワークを介して他の装置に接続される。通信インターフェース306には、例えば、モデムやLAN(Local Area Network)アダプタなどを採用することができる。
また、分散制御システム100の管理者が、サーバを直接操作する場合、サーバは、ディスプレイ、キーボード、マウスといったハードウェアを有してもよい。
図4は、携帯端末102のハードウェア構成例を示す説明図である。図4において、携帯端末102は、CPU401と、ROM402と、RAM403と、ディスクドライブ404と、ディスク405と、通信インターフェース406と、ディスプレイ407と、タッチパネル408と、温度センサ409と、を有する。また、CPU401〜ディスクドライブ404、通信インターフェース406〜温度センサ409は、バス410によってそれぞれ接続される。
ここで、CPU401は、携帯端末102の全体の制御を司る。ROM402は、ブートプログラムなどのプログラムを記憶する。RAM403は、CPU401のワークエリアとして使用される。ディスクドライブ404は、CPU401の制御に従ってディスク405に対するデータのリード/ライトを制御する。ディスク405は、ディスクドライブ404の制御で書き込まれたデータを記憶する。ディスクドライブ404には、例えば、ソリッドステートドライブ等を採用することができる。ディスクドライブ404がソリッドステートドライブである場合、ディスク405には、半導体メモリ、いわゆる半導体ディスクを採用することができる。
通信インターフェース406は、通信回線を通じてネットワークに接続され、ネットワークを介して他のコンピュータに接続される。そして、通信インターフェース406は、ネットワークと内部のインターフェースを司り、他のコンピュータからのデータの入出力を制御する。
ディスプレイ407は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。ディスプレイ407は、例えば、TFT(Thin Film Transistor)液晶ディスプレイなどを採用することができる。
タッチパネル408は、利用者によるタッチ操作やドラッグ操作を検出する。温度センサ409は、携帯端末102の周囲の気温を得るセンサである。なお、図5に示した携帯端末102は、スマートフォンやタブレット端末である。また、携帯端末102は、携帯電話でもよい。また、携帯端末102は、音センサ、湿度センサ、光度センサ等といったセンサを有してもよい。また、分散制御システム100は、携帯端末102の代わりに、持ち運び可能なラップトップPCを検出装置としてもよい。次に、図5を用いて、条件判定の分散処理の一例を説明する。
図5は、条件判定の分散処理の一例を示す説明図である。SUS201から登録された条件が、複数個所にある携帯端末102の情報で形成される場合、条件管理サーバ202は、条件を分割し、分割した条件を携帯端末102近傍のCCN101に配布する。これにより、条件管理サーバ202は、条件判定を分散させる。
図5の例では、SUS201から登録された条件情報501の内容が、「If 携帯端末102#Aの温度>30度 AND 携帯端末102#Bの温度<25度 Then 通知(サービス利用者、携帯端末102#Bの温度)」であるとする。ここで、携帯端末102#A、Bの温度とは、携帯端末102#A、Bが有する温度センサが計測した温度を示す。また、通知(サービス利用者、携帯端末102#Bの温度)は、サービス利用者に、携帯端末102#Bが有する温度センサが計測した温度を通知することを示す。
条件情報501を受け付けた条件管理サーバ202は、位置管理サーバ203から得た携帯端末102#A、Bの位置に基づいて、条件情報501を、条件情報C1と条件情報C2とに分割する。図5で示すように、携帯端末102#Aは、CCN101#1の近傍にあり、携帯端末102#Bは、CCN101#3の近傍にあるとする。
条件情報C1の内容は、「If 携帯端末102#Aの温度>30度 Then 通知(CCN101#3、C1)」である。ここで、通知(CCN101#3、C1)は、CCN101#3に、条件情報C1が示す条件が成立したことを通知することを示す。また、条件情報C2の内容は、「If CCN101#1からC1が成立したことを受信 AND 携帯端末102#Bの温度<25度 Then 通知(サービス利用者、携帯端末102#Bの温度)」である。次に、図6を用いて、携帯端末102への条件情報の設定例について説明する。
図6は、携帯端末102への条件情報の設定例を示す説明図である。分散制御システム100は、携帯端末102にも分割した条件情報を記憶させる。そして、携帯端末102が、例えば携帯端末102の利用者の移動により、現在のCCN101の配下の位置から、他のCCN101の配下の位置に移動するとする。この場合、移動した携帯端末102は、移動先のCCN101に、記憶した条件情報を通知する。これにより、条件管理サーバ202からCCN101への条件設定処理にかかる負荷を減らすことができる。
具体的には、CCN101は、条件管理サーバ202から条件情報が設定されると、設定した条件情報のIf〜Thenの間にIDが含まれる携帯端末102にも条件情報を設定する。また、新たな条件情報が設定されたCCN101は、新たな条件情報のIf〜Thenの間に他のCCN101のIDがあれば、他のCCN101に購読の通知を行う。
図6の例では、携帯端末102#Bが、CCN101#3の配下の位置からCCN101#の配下の位置に移動したとする。移動後、携帯端末102#Bは、CCN101#5に、条件情報C2を通知する。条件情報C2を受信したCCN101#5は、条件情報C2のIf〜Thenの間に“CCN101#1から”とあるため、CCN101#1に購読の通知を行う。
図7は、Pub/Sub技術を用いた条件判定の分散処理の実行例を示す説明図である。図7では、分散制御システム100を、Pub/Sub技術を用いて実現する例を示す。Pub/Sub技術は、OSS(Open Source Software)等でミドルウェア化されており、開発工数を下げるために利用されることが多い。
Pub/Sub技術では、Publishメッセージと、Subscribeメッセージとを用いる。以下の説明では、Publishメッセージを、単に、「Publish」と呼称する。同様に、Subscribeメッセージを、単に、「Subscribe」と呼称する。
具体的には、CCN101上で、Pub/Subサーバアプリ701と、センサアダプタアプリ702とが動作する。Pub/Subサーバアプリ701は、Pub/Sub技術を実現するソフトウェアである。センサアダプタアプリ702は、リクエストを受け付けて、あたえられた動作に従って処理をするソフトウェアである。
具体的には、図7に示す(1)の処理において、条件管理サーバ202は、Subscribe(C1,CCN101#3.adp)を、CCN101#1のPub/Subサーバアプリ701#1に通知する。ここで、Subscribe()は、図1で説明した購読を行うメッセージである。Subscribe()の第1引数は、購読先となる装置が購読する情報の識別情報を示し、Pub/Sub技術では、Topicと称する。Subscribe()の第2引数は、購読先となる装置の識別情報を示す。また、CCN101#3.adpは、センサアダプタアプリ702#3を示す。
また、図7に示す(2)の処理において、条件管理サーバ202は、Subscribe(C2,SUS201)を、CCN101#3のPub/Subサーバアプリ701#3に通知する。
次に、図7に示す(3)の処理において、センサアダプタアプリ702#1は、携帯端末102#Aから、携帯端末102#Aが有する温度センサが測定した温度を取得する。図7の例では、取得した温度が35度であり、条件情報C1に示された30度を超えたことにより、センサアダプタアプリ702#1は、条件情報C1が示す条件が成立したと判断する。判断後、センサアダプタアプリ702#1は、図7に示す(4)の処理において、条件情報C1が成立した際に行う処理として、Pub/Subサーバアプリ701#1に、Publish(C1,35)を通知する。Publish()は、Topicの通知を行うメッセージである。Publish()の第1引数は、通知するTopicを示す。Publish()の第2引数は、Topicの内容となる情報を示す。
Publish(C1,35)を受信したPub/Subサーバアプリ701#1は、図7に示す(5)の処理において、Publish(C1,35)を、センサアダプタアプリ702#3に通知する。
そして、図7に示す(6)の処理において、Publish(C1,35)を受信したセンサアダプタアプリ702#3は、携帯端末102#Bから、携帯端末102#Bが有する温度センサが測定した温度を取得する。図7の例では、CCN101#1から条件情報C1が示す条件が成立したことを受信しており、かつ、取得した温度が20度であるため25度を下回ることにより、センサアダプタアプリ702#3は、条件情報C2が示す条件が成立したと判断する。判断後、センサアダプタアプリ702#3は、図7に示す(7)の処理において、条件情報C2が成立した際に行う処理として、Pub/Subサーバアプリ701#3に、Publish(C2,20)を通知する。
Publish(C2,20)を受信したPub/Subサーバアプリ701#3は、図7に示す(8)の処理において、Publish(C2,20)を、SUS201に通知する。以下では、分散制御システム100を、Pub/Sub技術を用いて実現した例を用いて説明を行う。
(CCN101の機能構成例)
図8は、CCN101の機能構成例を示す説明図である。CCN101は、制御部800を有する。制御部800は、通知部801と、格納部802と、判断部803と、削除部804と、送信部805と、実行部806とを含む。制御部800は、記憶装置に記憶されたプログラムをCPU301が実行することにより、各部の機能を実現する。記憶装置とは、具体的には、例えば、図3に示したROM302、RAM303、ディスク305などである。また、各部の処理結果は、CPU301のレジスタや、CPU301のキャッシュメモリ等に格納される。
また、CCN101は、条件情報C、Subscriberリスト811、CCN−Subscribe数リスト812、再送信待ちリスト813にアクセス可能である。条件情報C、Subscriberリスト811、CCN−Subscribe数リスト812、再送信待ちリスト813は、RAM303、ディスク305といった記憶装置に格納されている。ここで、Subscriberリスト811は、図1に示した通知先情報111に相当する。また、再送信待ちリスト813は、図1に示した否定応答情報112に相当する。
通知部801〜削除部804は、図1に示すCCN101#1の機能である。通知部801〜削除部804の説明では、図7の例を用いて、第1のTopicを検出する携帯端末102が、携帯端末102#Aであるとし、第2のTopicを検出する携帯端末102が、携帯端末102#Bであるとする。そして、携帯端末102#Bが、CCN101#3の配下の位置からCCN101#5の配下の位置に移動したとする。
通知部801は、第1のTopicの検出を受信した場合、Subscriberリスト811を参照して、第1のTopicのPublishをCCN101#3に通知する。
格納部802は、CCN101#3から第1のTopicのPublishに応じた処理を実行することができない旨のnackを受信した場合、第1のTopicの識別情報とCCN101#3の識別情報とを対応付けて再送信待ちリスト813に格納する。
判断部803は、CCN101#5から第1のTopicの検出のSubscribeを受信したことに応じて、再送信待ちリスト813に第1のTopicの識別情報が含まれるか否かを判断する。
削除部804は、再送信待ちリスト813に第1のTopicの識別情報が含まれると判断した場合、Subscriberリスト811と再送信待ちリスト813とから、第1のTopicの識別情報に対応付けられたCCN101#3の識別情報を削除する。
次に、Publishの後にSubscribeが通知される場合の機能について説明する。CCN101#1が、nackを受信した後にCCN101#5から第1のTopicのSubscribeを受信したとする。Subscribeを受信したことに応じて、判断部803は、再送信待ちリスト813に含まれる第1のTopicの識別情報に対応付けられたCCN101の識別情報の数と、Subscribeを送信したCCN101の数とが一致するか否かを判断する。TopicごとのSubscribeを送信したCCN101の数は、CCN−Subscribe数リスト812に記憶される。
そして、削除部804は、第1のTopicに関する2つの数が一致すると判断した場合、Subscriberリスト811と再送信待ちリスト813とから、第1のTopicの識別情報に対応付けられたCCN101#3の識別情報を削除する。
Publishの後にSubscribeが通知される場合については、図12〜図16でより詳細に説明する。次に、Publishの前にSubscribeが通知される場合の機能について説明する。
通知部801は、nackを受信する前にCCN101#5からSubscribeを受信した後に、第1のTopicの検出を受信した場合、第1のTopicのPublishを、CCN101#3に加えて、さらに、CCN101#5に通知する。
また、判断部803は、nackを受信したことに応じて、再送信待ちリスト813に含まれる第1のTopicの識別情報に対応付けられたCCN101の識別情報の数と、Subscribeを送信した通知装置の数とが一致するか否かを判断する。
そして、削除部804は、第1のTopicに関する2つの数が一致すると判断した場合、Subscriberリスト811と再送信待ちリスト813とから、第1のTopicの識別情報に対応付けられたCCN101#3の識別情報を削除する。
Publishの前にSubscribeが通知される場合については、図17、図18でより詳細に説明する。次に、nackを受信した時刻に基づいた期限時刻を超えた場合の機能について説明する。
格納部802は、nackを受信した場合、第1のTopicの識別情報とCCN101#3の識別情報とnackを受信した時刻に基づいた期限時刻を示す値とを対応付けて再送信待ちリスト813に格納する。以下、期限時刻を「Expire時刻」と称する。
そして、判断部803は、現在時刻が期限時刻となったことに応じて、再送信待ちリスト813に含まれる第1のTopicの識別情報に対応付けられた通知装置の識別情報の数と、依頼を送信した通知装置の数とが一致するか否かを判断する。
次に、削除部804は、第1のTopicに関する2つの数が一致すると判断した場合、Subscriberリスト811と再送信待ちリスト813とから、第1のTopicの識別情報に対応付けられたCCN101#3の識別情報を削除する。
Expire時刻を超えた場合については、図19〜図21でより詳細に説明する。次に、送信部805、実行部806の説明を行う。送信部805、実行部806は、図1に示したCCN101#2、3の機能である。まず、図1に示したCCN101#2における機能について説明する。
送信部805は、CCN101#1から第2のTopicとは異なる第1のTopicのPublishを受信した場合、条件情報Cを参照して、携帯端末102#Bに第2のTopicの検出の有無の送信要求を送信する。ここで、条件情報Cは、他のCCN101から他のTopicの検出を受信し、かつ、いずれかのTopicを検出したかを示す条件と条件を満たす際の所定の処理とを示す情報である。所定の処理は、どのようなものでもよく、例えば、SUS201に通知する処理でもよいし、別のCCN101にPublishを通知する処理でもよい。
そして、送信部805は、送信要求に対する応答がない場合、他のTopicの検出に対応する処理を実行することができない旨の否定応答をCCN101#1に送信する。
次に、図1に示したCCN101#3における機能について説明する。送信部805は、条件情報Cを記憶しており第2のTopicを検出する携帯端末102#Bと接続してから条件情報Cを受信した場合、第1のTopicのSubscribeをCCN101#1に送信する。そして、送信部805は、第1のTopicのPublishをCCN101#1から受信した場合、条件情報Cを参照して、第2のTopicを検出する携帯端末102#Bに第2のTopicの検出の有無の送信要求を送信する。
実行部806は、第2のTopicを検出する携帯端末102#Bから第2のTopicの検出を受信した場合、条件情報Cを参照して所定の処理を実行する。
図9は、Subscriberリスト811の記憶内容の一例を示す説明図である。図9に示すSubscriberリスト811は、エントリ901−1、2を有する。
Subscriberリスト811は、Topicと、SubscriberIPというフィールドを含む。Topicフィールドには、SubscriberIPで示される装置が購読する情報の識別情報が格納される。SubscriberIPフィールドには、SubscriberIPで示される装置のIPアドレスが格納される。図9の例では、SubscriberIPフィールドには、説明の簡略化のため、装置の名称に符号を付与した文字列が格納される。なお、Subscriberリスト811とは別のリストにも、SubscriberIPフィールドが存在するものがあるが、全て同様とする。
例えば、エントリ901−1は、条件情報C1が示す条件が成立した場合、条件情報C1が示す条件が成立したことを示す情報を、CCN101#3に送信することを示す。
図10は、CCN−Subscribe数リスト812の記憶内容の一例を示す説明図である。図10に示すCCN−Subscribe数リスト812は、エントリ1001−1を有する。
CCN−Subscribe数リスト812は、Topicと、CCN−Subscribe数というフィールドを含む。Topicフィールドには、なんらかの装置が購読する情報の識別情報が格納される。CCN−Subscribe数フィールドには、Topicフィールドに格納された情報を購読する装置の数が格納される。
例えば、エントリ1001−1は、条件情報C1が示す条件が成立したことを示す情報の購読先となる装置が1つであることを示す。
図11は、再送信待ちリスト813の記憶内容の一例を示す説明図である。図11に示す再送信待ちリスト813は、エントリ1101−1を有する。
再送信待ちリスト813は、Topicと、SubscriberIPと、PublishMsgと、Expireというフィールドを含む。Topicフィールドには、なんらかの装置が購読する情報の識別情報が格納される。SubscriberIPフィールドには、Topicフィールドに格納された情報を購読する装置のIPアドレスが格納される。PublishMsgフィールドには、再送信するメッセージの内容が格納される。Expireフィールドには、メッセージの再送信を打ち切る時刻が格納される。
例えば、エントリ1101−1は、送信先がCCN101#3[”topic”:”C1”,”temp”:”35”]というメッセージを、2014年12月28日18時30分までは再送することを示す。
次に、携帯端末102が移動する際に発生するPublishの再送を抑制する3つの例を、それぞれ、図12〜図16と、図17および図18と、図19〜図21とで説明する。ここで、携帯端末102が移動する場合、別のCCN101に登録されるだけであり、分散制御システム100全体で登録されている携帯端末102の総数に変化がないという特徴がある。この特徴を利用して、分散制御システム100は、nackによる再送待ちの数と、新たに届いたSubscribeの数が一致した場合、nackによる再送待ちを削除することにより、Publishの再送を抑制する。
(Publishの後にSubscribeが通知される場合)
次に、図12〜図16を用いて、Publishの後にSubscribeが通知される場合に、携帯端末102が移動することにより発生するPublishの再送を抑制する例を説明する。
図12は、Publishの後にSubscribeが通知される場合のメッセージ送信例を示す説明図である。図12で示す状態では、携帯端末102#Bが、CCN101#3配下の位置から、CCN101#5配下の位置に移動したとする。このとき、図12で示す(3)の処理によるPublishの後に、携帯端末102の移動により発生する図12で示す(7)の処理によるSubscribeが通知されたものとする。
図12に示す(1)の処理において、センサアダプタアプリ702#1は、携帯端末102#Aから、携帯端末102#Aが有する温度センサが測定した温度を取得する。図12の例では、取得した温度が35度であり、条件情報C1に示された30度を超えたことにより、センサアダプタアプリ702#1は、条件情報C1が示す条件が成立したと判断する。判断後、センサアダプタアプリ702#1は、図12に示す(2)の処理において、条件情報C1が成立した際に行う処理として、Pub/Subサーバアプリ701#1に、Publish(C1,35)を通知する。
Publish(C1,35)を受信したPub/Subサーバアプリ701#1は、第1のPublish処理を実行する。第1のPublish処理については、図14で示す。そして、Pub/Subサーバアプリ701#1は、第1のPublish処理の一部として、図12に示す(3)の処理において、Publish(C1,35)を、センサアダプタアプリ702#3に通知する。
Publish(C1,35)を受信したセンサアダプタアプリ702#3は、携帯端末102#Bが有する温度センサにアクセスしようとする。しかし、携帯端末102#Bは移動しており、センサアダプタアプリ702#3は、携帯端末102#Bが有する温度センサにアクセスすることはできない。センサアダプタアプリ702#3は、予め指定された回数だけリトライした後、図12に示す(4)の処理において、Pub/Subサーバアプリ701#1に、nackを通知する。
nackを受信したPub/Subサーバアプリ701#1は、第1のPublish処理の一部として、図12の(5)の処理において、再送待ちの数を1増やす。具体的には、Pub/Subサーバアプリ701#1は、再送信待ちリスト813に再送するメッセージを登録する。
そして、図12に示す(3)の処理より後となった図12に示す(6)の処理において、Registerおよび条件設定要求を携帯端末102#Bから受信したセンサアダプタアプリ702#5は、Registerおよび条件設定要求受信処理を実行する。Registerおよび条件設定要求受信処理については、図15で示す。そして、Registerおよび条件設定要求受信処理の一部として、図12に示す(7)の処理において、センサアダプタアプリ702#5は、Pub/Subサーバアプリ701#1にSubscribe(C1)を通知する。
Subscribe(C1)を受信したPub/Subサーバアプリ701#1は、CCN101からのSubscribe受信時処理を実行する。CCN101からのSubscribe受信時処理については、図16で示す。そして、CCN101からのSubscribe受信時処理の一部として、図12に示す(8)の処理により、Pub/Subサーバアプリ701#1は、nackによる再送待ちの数と、新たに届いたSubscribeの数とを比較する。図12の例では、nackによる再送待ちの数が1であり、新たに届いたSubscribeの数が1であるため、一致することになる。従って、この場合、Pub/Subサーバアプリ701#1は、nackによる再送待ちを削除する。
次に、分散制御システム100で行われる処理を示すフローチャートを、図13〜図16を用いて説明する。
図13は、SUS201からのSubscribe受信時処理手順の一例を示すフローチャートである。SUS201からのSubscribe受信時処理は、SUS201からSubscribeを受信した際にPub/Subサーバアプリ701が行う処理である。例えば、SUS201からのSubscribe受信時処理は、図7で示す(1)や(2)の処理の後、Pub/Subサーバアプリ701が実行する。
Pub/Subサーバアプリ701は、SUS201から受信したSubscribeから、Topicと、SubscribeIPとを取得する(ステップS1301)。そして、Pub/Subサーバアプリ701は、取得したTopicと、SubscribeIPとをSubscriberリスト811に登録する(ステップS1302)。ステップS1302の処理終了後、Pub/Subサーバアプリ701は、SUS201からのSubscribe受信時処理を終了する。SUS201からのSubscribe受信時処理を実行することにより、Pub/Subサーバアプリ701は、購読対象となる情報と、購読対象を購読する装置とを対応付けて管理することができる。
図14は、第1のPublish処理手順の一例を示すフローチャートである。第1のPublish処理は、Pub/Subサーバアプリ701が行う処理であり、Publishを送信する処理である。
Pub/Subサーバアプリ701は、Publish処理の起動理由を確認する(ステップS1401)。新規Publishを受信したことによりPublish処理を起動した場合(ステップS1401:新規Publish受信)、Pub/Subサーバアプリ701は、TopicをキーにSubscriberリスト811を検索する(ステップS1402)。そして、Pub/Subサーバアプリ701は、Subscriberリスト811から、キーとしたTopicに対応したSubscriberIPの一覧を取得する(ステップS1403)。
一方、再送のため定期起動によりPublish処理を起動した場合(ステップS1401:定期起動)、Pub/Subサーバアプリ701は、再送信待ちリスト813を参照して、SubscriberIPの一覧を取得する(ステップS1404)。
ステップS1403、ステップS1404のうちのいずれか一方の処理終了後、Pub/Subサーバアプリ701は、SubscriberIPの一覧から、SubscriberIPを一つ選択する(ステップS1405)。そして、Pub/Subサーバアプリ701は、選択したSubscriberIPへ、Publishを通知する(ステップS1406)。そして、Pub/Subサーバアプリ701は、Publishに対するackを受信したか否かを判断する(ステップS1407)。Publishに対するnackを受信した場合(ステップS1407:No)、Pub/Subサーバアプリ701は、Publishを再送信待ちリスト813に登録する(ステップS1408)。
Publishに対するackを受信した場合(ステップS1407:Yes)、Pub/Subサーバアプリ701は、SubscriberIPの一覧の全てのSubscriberIPにPublishを送信したか否かを判断する(ステップS1409)。SubscriberIPの一覧の中で、Publishを送信していないSubscriberIPがある場合(ステップS1409:No)、Pub/Subサーバアプリ701は、ステップS1405の処理に移行する。一方、SubscriberIPの一覧の全てのSubscriberIPにPublishを送信した場合(ステップS1409:Yes)、Pub/Subサーバアプリ701は、第1のPublish処理を終了する。
第1のPublish処理を実行することにより、Pub/Subサーバアプリ701は、Topicに登録しているSubscriberへTopicが示す情報を通知することができる。
図15は、Registerおよび条件設定要求受信処理手順の一例を示すフローチャートである。Registerおよび条件設定要求受信処理は、携帯端末102からRegisterおよび条件設定要求を受信した際に行う処理である。
センサアダプタアプリ702は、携帯端末102からRegisterおよび条件設定要求を受信した場合、受信したデータに、条件情報が含まれるか否かを判断する(ステップS1501)。条件情報が含まれる場合(ステップS1501:Yes)、センサアダプタアプリ702は、配下センサリストに、センサIDと条件情報とを登録する(ステップS1502)。ここで、配下センサリストは、CCN101が記憶するリストであり、配下となる領域に含まれるセンサを管理するリストである。そして、センサアダプタアプリ702は、条件情報のIf〜Thenの間にCCNのIDが含まれるか否かを判断する(ステップS1504)。条件情報のIf〜Thenの間にCCNのIDが含まれる場合(ステップS1504:Yes)、センサアダプタアプリ702は、条件情報のIf〜Thenの間にIDが含まれていたCCNに、条件情報を示すIDを引数としたSubscribeを通知する(ステップS1505)。
一方、条件情報が含まれない場合(ステップS1501:No)、センサアダプタアプリ702は、配下センサリストに、センサIDを登録する(ステップS1503)。ステップS1503またはステップS1505の処理終了後、または、条件情報のIf〜Thenの間にCCNのIDが含まれない場合(ステップS1504:No)、センサアダプタアプリ702は、Registerおよび条件設定要求受信処理を終了する。Registerおよび条件設定要求受信処理を実行することにより、センサアダプタアプリ702は、移動してきた携帯端末102が条件情報を有する場合に、条件情報が示す条件の一部の成立条件を有する装置にsubscribeを通知することができる。
図16は、CCN101からのSubscribe受信時処理手順の一例を示すフローチャートである。CCN101からのSubscribe受信時処理は、他のCCN101からSubscribeを受信した際にPub/Subサーバアプリ701が行う処理である。
Pub/Subサーバアプリ701は、受信したSubscribeから、Topicと、SubscribeIPとを取得する(ステップS1601)。次に、Pub/Subサーバアプリ701は、取得したTopicと、SubscribeIPとをSubscriberリスト811に登録する(ステップS1602)。そして、Pub/Subサーバアプリ701は、取得したTopicに対するCCN−Subscribe数をインクリメントする(ステップS1603)。次に、Pub/Subサーバアプリ701は、再送信待ちリスト813から、Topicに対するエントリ数を計数する(ステップS1604)。
そして、Pub/Subサーバアプリ701は、CCN−Subscribe数と再送信待ちリスト813のエントリ数とが同一のTopicがあるか否かを判断する(ステップS1605)。CCN−Subscribe数と再送信待ちリスト813のエントリ数とが同一のTopicがある場合(ステップS1605:Yes)、Pub/Subサーバアプリ701は、再送信待ちリスト813から、数が同一のTopicを有するエントリを削除する(ステップS1606)。また、Pub/Subサーバアプリ701は、Subscriberリスト811から、再送信待ちリスト813から削除したエントリに対応するエントリを削除する(ステップS1607)。そして、Pub/Subサーバアプリ701は、再送信待ちリスト813にあるメッセージを送信する(ステップS1608)。なお、ステップS1608について、再送信待ちリスト813のエントリ数が0となった場合には、Pub/Subサーバアプリ701は、メッセージを送信しない。
ステップS1608の処理終了後、または、CCN−Subscribe数と再送信待ちリスト813のエントリ数とが同一のTopicがない場合(ステップS1605:No)、Pub/Subサーバアプリ701は、CCN101からのSubscribe受信時処理を終了する。
CCN101からのSubscribe受信時処理を実行することにより、Pub/Subサーバアプリ701は、CCN−subscribe数と再送信待ちリスト813のエントリ数とが同一であれば、nackによる再送待ちを削除することができる。
(Publishの前にSubscribeが通知される場合)
図17、図18を用いて、Publishの前にSubscribeが通知される場合に、携帯端末102が移動することにより発生するPublishの再送を抑制する例を説明する。
図17は、Publishの前にSubscribeが通知される場合のメッセージ送信例を示す説明図である。図12で示す状態では、携帯端末102#Bが、CCN101#3配下の位置から、CCN101#5配下の位置に移動したとする。このとき、図17で示す(5)の処理によるPublishの前に、携帯端末102の移動により発生する図17で示す(2)の処理によるSubscribeが通知されたものとする。
図17に示す(1)の処理において、Registerおよび条件設定要求を携帯端末102#Bから受信したセンサアダプタアプリ702#5は、Registerおよび条件設定要求受信処理を実行する。そして、Registerおよび条件設定要求受信処理の一部として、図17に示す(2)の処理において、センサアダプタアプリ702#5は、Pub/Subサーバアプリ701#1にSubscribe(C1)を通知する。
Subscribe(C1)を受信したPub/Subサーバアプリ701#1は、CCN101からのSubscribe受信時処理を実行する。次に、図17に示す(3)の処理において、センサアダプタアプリ702#1は、携帯端末102#Aから、携帯端末102#Aが有する温度センサが測定した温度を取得する。図17の例では、取得した温度が35度であり、条件情報C1に示された30度を超えたことにより、センサアダプタアプリ702#1は、条件情報C1が示す条件が成立したと判断する。判断後、センサアダプタアプリ702#1は、図17に示す(4)の処理において、条件情報C1が成立した際に行う処理として、Pub/Subサーバアプリ701#1に、Publish(C1,35)を通知する。
Publish(C1,35)を受信したPub/Subサーバアプリ701#1は、第2のPublish処理を実行する。第2のPublish処理については、図18で示す。そして、Pub/Subサーバアプリ701#1は、第2のPublish処理の一部として、図17に示す(5)の処理において、Publish(C1,35)を、センサアダプタアプリ702#3とセンサアダプタアプリ702#5とに通知する。
Publish(C1,35)を受信したセンサアダプタアプリ702#5は、携帯端末102#Bが有する温度センサにアクセスし、ackをPub/Subサーバアプリ701#1に送信する。引き続き、センサアダプタアプリ702#5は、条件情報C2が示す条件が成立するか否かを判定する。
一方、Publish(C1,35)を受信したセンサアダプタアプリ702#3は、携帯端末102#Bが有する温度センサにアクセスしようとする。しかし、携帯端末102#Bは移動しており、センサアダプタアプリ702#3は、携帯端末102#Bが有する温度センサにアクセスすることはできない。センサアダプタアプリ702#3は、予め指定された回数だけリトライした後、図17に示す(6)の処理において、Pub/Subサーバアプリ701#1に、nackを通知する。
nackを受信したPub/Subサーバアプリ701#1は、第2のPublish処理の一部として、図17に示す(7)の処理により、Pub/Subサーバアプリ701#1は、nackによる再送待ちの数と、新たに届いたSubscribeの数とを比較する。図17の例では、nackによる再送待ちの数が1であり、新たに届いたSubscribeの数が1であるため、一致することになる。従って、この場合、Pub/Subサーバアプリ701#1は、nackによる再送待ちを削除する。
次に、第2のPublish処理を示すフローチャートを、図18を用いて説明する。なお、CCN101からのSubscribe受信時処理を示すフローチャートについては、図16で示したものと同一となるため、説明を省略する。
図18は、第2のPublish処理手順の一例を示すフローチャートである。第2のPublish処理は、Pub/Subサーバアプリ701が行う処理であり、Publishを送信する処理である。
Pub/Subサーバアプリ701は、Publish処理の起動理由を確認する(ステップS1801)。新規Publishを受信したことによりPublish処理を起動した場合(ステップS1801:新規Publish受信)、Pub/Subサーバアプリ701は、TopicをキーにSubscriberリスト811を検索する(ステップS1802)。そして、Pub/Subサーバアプリ701は、Subscriberリスト811から、キーとしたTopicに対応したSubscriberIPの一覧を取得する(ステップS1803)。
一方、再送のため定期起動によりPublish処理を起動した場合(ステップS1801:定期起動)、Pub/Subサーバアプリ701は、再送信待ちリスト813を参照して、SubscriberIPの一覧を取得する(ステップS1804)。
ステップS1803、ステップS1804のうちのいずれか一方の処理終了後、Pub/Subサーバアプリ701は、SubscriberIPの一覧に含まれるSubscriberのそれぞれに対し、Publishを通知する(ステップS1805)。次に、Pub/Subサーバアプリ701は、Publishに対するnackを受信したか否かを判断する(ステップS1806)。Publishに対するnackを受信した場合(ステップS1806:Yes)、Pub/Subサーバアプリ701は、受信したnackに対するPublishを、再送信待ちリスト813に登録する(ステップS1807)。そして、Pub/Subサーバアプリ701は、再送信待ちリスト813から、Topicに対するエントリ数を計数する(ステップS1808)。
次に、Pub/Subサーバアプリ701は、CCN−Subscribe数と再送信待ちリスト813のエントリ数とが同一のTopicがあるか否かを判断する(ステップS1809)。CCN−Subscribe数と再送信待ちリスト813のエントリ数とが同一のTopicがある場合(ステップS1809:Yes)、Pub/Subサーバアプリ701は、再送信待ちリスト813のSubscriberIPにあるノードを、Subscriberリスト811から削除する(ステップS1810)。そして、Pub/Subサーバアプリ701は、CCN−Subscribe数リスト812および再送信待ちリスト813から、数が同一のTopicを有するエントリを削除する(ステップS1811)。そして、Pub/Subサーバアプリ701は、第2のPublish処理を終了する。
また、Publishに対するnackを受信していない場合(ステップS1806:No)、またはCCN−Subscribe数と再送信待ちリスト813のエントリ数とが同一のTopicがない場合(ステップS1809:No)、Pub/Subサーバアプリ701は、第2のPublish処理を終了する。
第2のPublish処理を実行することにより、Pub/Subサーバアプリ701は、Topicに登録しているSubscriberへTopicが示す情報を通知することができる。さらに、Pub/Subサーバアプリ701は、Publishの前にSubscribeが通知されても、CCN−subscribe数と再送信待ちリスト813のエントリ数とが同一であれば、nackによる再送を抑制することができる。
(Expire時刻が到来した場合)
次に、図19〜図21を用いて、Expire時刻が到来した場合に、携帯端末102が移動することにより発生するPublishの再送を抑制する例を説明する。
図19は、Expire時刻到来時の各リストの記憶内容の一例を示す説明図(その1)である。また、図20は、Expire時刻到来時の各リストの記憶内容の一例を示す説明図(その2)である。図19、図20では、CCN101#1におけるSubscriberリスト811#1、CCN−Subscribe数リスト812#1、再送信待ちリスト813#1の記憶内容を用いて説明を行う。
図19に示す状態1901では、図5で示した状態から、さらに、CCN101#5の配下の位置に、携帯端末102#Cがあるとする。また、CCN101#5および携帯端末102#Cには、図19で示す条件情報C3が登録されている。条件情報C3の内容は、「If CCN101#1からC1が成立したことを受信 AND 携帯端末102#Cの温度<25度 Then 通知(サービス利用者、携帯端末102#Cの温度)」である。この状態で、Subscriberリスト811#1は、状態1901の枠内で示したように、エントリ1911−1〜3を有する。
状態1901から携帯端末102#Bが離脱した後、Pub/Subサーバアプリ701#1が、センサアダプタアプリ702#1からPublish(C1,35)を受信したとする。この場合、Pub/Subサーバアプリ701#1は、Subscriberリスト811#1を参照して、通知先としてCCN101#3、5を得る。そして、Pub/Subサーバアプリ701#1は、通知先となるCCN101#3、5にPublish(C1,35)を通知する。Publish(C1,35)を受信したCCN101#3は、条件情報C2に従って、携帯端末102#Bにアクセスしようとするが、携帯端末102#2が離脱しているためアクセスできない。従って、CCN101#3は、nackをCCN101#1に送信する。
CCN101#3からのnackをCCN101#1が受信して、nackに対するPublishを再送信待ちリスト813#1を登録した状態が、図19に示す状態1902である。この状態で、再送信待ちリスト813#1は、状態1902の枠内で示したように、エントリ1912−1を有する。
状態1902から携帯端末102#Cが離脱した後、Pub/Subサーバアプリ701#1が、センサアダプタアプリ702#1からPublish(C1,35)を受信したとする。この場合、Pub/Subサーバアプリ701#1は、Subscriberリスト811#1を参照して、通知先としてCCN101#3、5を得る。しかしながら、CCN101#3は再送信待ちリスト813に登録されているため、Pub/Subサーバアプリ701#1は、CCN101#5に、Publish(C1,35)を通知する。Publish(C1,35)を受信したCCN101#5は、条件情報C3に従って、携帯端末102#Cにアクセスしようとするが、携帯端末102#Cが離脱しているためアクセスできない。従って、CCN101#5は、nackをCCN101#1に送信する。
CCN101#5からのnackをCCN101#1が受信して、nackに対するPublishを再送信待ちリスト813#1を登録した状態が、図19に示す状態1903である。この状態で、再送信待ちリスト813#1は、状態1903の枠内で示したように、エントリ1912−1、2を有する。
状態1903から、携帯端末102#BがCCN101#4の領域に到着したとする。この場合、CCN101#4は、Registerおよび条件設定要求を携帯端末102#Bから受信する。そして、CCN101#4は、条件情報C2に基づいて、SubscribeをCCN101#1に送信する。
CCN101#1からのSubscribeを受信してSubscriberリスト811#1と、CCN−Subscribe数リスト812#1とを更新した状態が、図19に示す状態1904である。この状態で、Subscriberリスト811#1は、状態1904の枠内で示したように、エントリ1911−4が追加されて、エントリ1911−1〜4を有する。同様に、CCN−Subscribe数リスト812#1は、エントリ1913−1を有する。
また、状態1904においてPub/Subサーバアプリ701#1は、再送信待ちリスト813#1とCCN−Subscribe数リスト812#1とについて、Topicごとの数を確認し、一致するか否かを判断する。この場合、条件情報C1について、再送信待ちリスト813#1には、2エントリあり、CCN−Subscribe数リスト812#1には1エントリあり、数が異なる。従って、Pub/Subサーバアプリ701#1は、何もせず次の処理に進む。
状態1904から、携帯端末102がどのCCN101にも登録せず、エントリ1912−1のExpire時刻が到来したとする。この場合、Pub/Subサーバアプリ701#1は、Expire時刻到来時処理として、再送信待ちリスト813#1からExpire時刻が到来したエントリ1912−1を削除する。合わせて、Pub/Subサーバアプリ701#1は、Subscriberリスト811#1から、エントリ1911−1を削除する。また、Expire時刻到来時処理については、図21で示す。2つのエントリを削除した状態が、図20で示す状態2001である。
2つのエントリを削除した後、Pub/Subサーバアプリ701#1は、再送信待ちリスト813#1とCCN−Subscribe数リスト812#1とについてTopicごとの数を確認し、一致するか否かを判断する。この場合、条件情報C1について、再送信待ちリスト813#1、CCN−Subscribe数リスト812#1ともに1エントリであり、数が一致する。従って、Pub/Subサーバアプリ701#1は、再送信待ちリスト813#1から、数が一致したTopicであるエントリ1912−2を削除する。合わせて、Pub/Subサーバアプリ701#1は、Subscriberリスト811#1から、エントリ1911−3を削除する。2つのエントリを削除した状態が、図20で示す状態2002である。このように、Pub/Subサーバアプリ701#1は、nackによる再送を停止することが可能になる。
次に、Expire時刻到来時処理を示すフローチャートを、図21を用いて説明する。
図21は、Expire時刻到来時処理手順の一例を示すフローチャートである。Expire時刻到来時処理は、Expire時刻が到来する際に行う処理である。
Pub/Subサーバアプリ701は、再送信待ちリスト813からExpire時刻が到来したエントリと、Subscriberリスト811から当該SubscriberIPのエントリを削除する(ステップS2101)。次に、Pub/Subサーバアプリ701は、CCN−Subscribe数と再送信待ちリスト813のエントリ数とが同一のTopicがあるか否かを判断する(ステップS2102)。CCN−Subscribe数と再送信待ちリスト813のエントリ数とが同一のTopicがある場合(ステップS2102:Yes)、Pub/Subサーバアプリ701は、再送信待ちリスト813から、数が同一のTopicを有するエントリを削除する(ステップS2103)。続けて、Pub/Subサーバアプリ701は、Subscriberリスト811から、再送信待ちリスト813から削除したエントリに対応するエントリを削除する(ステップS2104)。
ステップS2104の処理終了後、または、CCN−Subscribe数と再送信待ちリスト813のエントリ数とが同一のTopicがない場合(ステップS2102:No)、Pub/Subサーバアプリ701は、Expire時刻到来時処理を終了する。Expire時刻到来時処理を実行することにより、Pub/Subサーバアプリ701は、Expire時刻が到来してエントリを削除する。そして、Pub/Subサーバアプリ701は、エントリを削除したことにより、CCN−subscribe数と再送信待ちリスト813のエントリ数とが同一になれば、数が一致したエントリを削除して、nackによる再送を抑制することができる。
以上説明したように、分散制御システム100によれば、あるTopicのnackをCCN101#3から受信し、あるTopicのSubscribeをCCN101#5から受信したら、あるTopicのSubscriberをCCN101#5に変更する。これにより、分散制御システム100は、携帯端末102#Bの移動を認識することができ、分散処理を継続させることができる。
また、分散制御システム100によれば、Publishの後にSubscribeが通知される場合、Topicごとに、再送信待ちリスト813に含まれるCCN101の数と、Subscribeを送信したCCN101の数とが一致するか判断してもよい。これにより、分散制御システム100は、Publishの後にSubscribeが通知される場合でも、nackによる再送を停止させることが可能になる。
また、分散制御システム100によれば、Publishの前にSubscribeが通知される場合、Topicごとに、再送信待ちリスト813に含まれるCCN101の数と、Subscribeを送信したCCN101の数とが一致するか判断してもよい。これにより、分散制御システム100は、Publishの前にSubscribeが通知される場合でも、nackによる再送を停止させることが可能になる。
また、分散制御システム100によれば、Expire時刻が到来した場合に、Topicごとに、再送信待ちリスト813に含まれるCCN101の数と、Subscribeを送信したCCN101の数とが一致するか判断してもよい。これにより、分散制御システム100は、Expire時刻が到来した際に、nackによる再送を停止させることが可能になる。
そして、nackによる再送を停止させることにより、ネットワークにかかるコストや、センサアダプタアプリ702の処理を削減することができる。例えば、再送を行う回数の上限が10回であるとすると、かかるコストは最大で1/10以下となる。また、本実施の形態にかかる方法は、移動先のセンサアダプタアプリが、移動元のセンサアダプタアプリに伝えるようにする方法に比べて、実施コストも低くなる。
なお、本実施の形態で説明した分散制御方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本分散制御プログラムは、ハードディスク、フレキシブルディスク、CD−ROM(Compact Disc−Read Only Memory)、DVD(Digital Versatile Disk)等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本分散制御プログラムは、インターネット等のネットワークを介して配布してもよい。
上述した実施の形態に関し、さらに以下の付記を開示する。
(付記1)それぞれ異なる位置に配置された複数の通知装置と、前記複数の通知装置のうちの自装置の位置に応じた通知装置に事象の検出を通知する検出装置とを含む分散制御システムにおける分散制御方法であって、
第1の事象を検出する検出装置に接続した第1の通知装置が、
前記第1の事象を検出する検出装置から前記第1の事象の検出を受信した場合、第2の事象を検出する検出装置に接続した第2の通知装置の識別情報と前記第1の事象の識別情報とを対応付けた通知先情報を参照して、前記第1の事象の検出を前記第2の通知装置に通知し、
前記第2の通知装置から前記第1の事象の検出に応じた処理を実行することができない旨の否定応答を受信した場合、前記第1の事象の識別情報と前記第2の通知装置の識別情報とを対応付けて否定応答情報に格納し、
前記第2の事象を検出する検出装置に接続した第3の通知装置から前記第1の事象の検出の通知の依頼を受信したことに応じて、前記否定応答情報に前記第1の事象の識別情報が含まれるか否かを判断し、
前記否定応答情報に前記第1の事象の識別情報が含まれると判断した場合、前記通知先情報と前記否定応答情報とから、前記第1の事象の識別情報に対応付けられた前記第2の通知装置の識別情報を削除する、
処理を実行することを特徴とする分散制御方法。
(付記2)前記判断する処理は、
前記否定応答を受信した後に前記第3の通知装置から前記依頼を受信したことに応じて、前記否定応答情報に含まれる前記第1の事象の識別情報に対応付けられた通知装置の識別情報の数と、前記依頼を送信した通知装置の数とが一致するか否かを判断し、
前記削除する処理は、
前記否定応答情報に含まれる前記第1の事象の識別情報に対応付けられた通知装置の識別情報の数と前記依頼を送信した通知装置の数とが一致すると判断した場合、前記通知先情報と前記否定応答情報とから、前記第1の事象の識別情報に対応付けられた前記第2の通知装置の識別情報を削除する、
ことを特徴とする付記1に記載の分散制御方法。
(付記3)前記通知する処理は、
前記否定応答を受信する前に前記第3の通知装置から前記依頼を受信した後に、前記第1の事象を検出する検出装置から前記第1の事象の検出を受信した場合、さらに、前記第1の事象の検出を前記第3の通知装置に通知し、
前記判断する処理は、
前記否定応答を受信したことに応じて、前記否定応答情報に含まれる前記第1の事象の識別情報に対応付けられた通知装置の識別情報の数と、前記依頼を送信した通知装置の数とが一致するか否かを判断し、
前記削除する処理は、
前記否定応答情報に含まれる前記第1の事象の識別情報に対応付けられた通知装置の識別情報の数と前記依頼を送信した通知装置の数とが一致すると判断した場合、前記通知先情報と前記否定応答情報とから、前記第1の事象の識別情報に対応付けられた前記第2の通知装置の識別情報を削除する、
ことを特徴とする付記1または2に記載の分散制御方法。
(付記4)前記格納する処理は、
前記否定応答を受信した場合、前記第1の事象の識別情報と前記第2の通知装置の識別情報と前記否定応答を受信した時刻に基づいた期限時刻を示す値とを対応付けて前記否定応答情報に格納し、
前記判断する処理は、
現在時刻が前記期限時刻となったことに応じて、前記否定応答情報に含まれる前記第1の事象の識別情報に対応付けられた通知装置の識別情報の数と、前記依頼を送信した通知装置の数とが一致するか否かを判断し、
前記削除する処理は、
前記否定応答情報に含まれる前記第1の事象の識別情報に対応付けられた通知装置の識別情報の数と前記依頼を送信した通知装置の数とが一致すると判断した場合、前記通知先情報と前記否定応答情報とから、前記第1の事象の識別情報に対応付けられた前記第2の通知装置の識別情報を削除する、
ことを特徴とする付記1〜3のいずれか一つに記載の分散制御方法。
(付記5)それぞれ異なる位置に配置された複数の通知装置と、前記複数の通知装置のうちの自装置の位置に応じた通知装置に事象の検出を通知する検出装置とを含む分散制御システムであって、
第1の事象を検出する検出装置に接続した第1の通知装置は、
前記第1の事象を検出する検出装置から前記第1の事象の検出を受信した場合、第2の事象を検出する検出装置に接続した第2の通知装置の識別情報と前記第1の事象の識別情報とを対応付けた通知先情報を参照して、前記第1の事象の検出を前記第2の通知装置に通知し、
前記第2の通知装置から前記第1の事象の検出に応じた処理を実行することができない旨の否定応答を受信した場合、前記第1の事象の識別情報と前記第2の通知装置の識別情報とを対応付けて否定応答情報に格納し、
前記第2の事象を検出する検出装置に接続した第3の通知装置から前記第1の事象の検出の通知の依頼を受信したことに応じて、前記否定応答情報に前記第1の事象の識別情報が含まれるか否かを判断し、
前記否定応答情報に前記第1の事象の識別情報が含まれると判断した場合、前記通知先情報と前記否定応答情報とから、前記第1の事象の識別情報に対応付けられた前記第2の通知装置の識別情報を削除する、
ことを特徴とする分散制御システム。
(付記6)それぞれ異なる位置に配置された複数の通知装置と、前記複数の通知装置のうちの自装置の位置に応じた通知装置に事象の検出を通知する検出装置とを含む分散制御システムにおける分散制御プログラムであって、
第1の事象を検出する検出装置に接続した第1の通知装置に、
前記第1の事象を検出する検出装置から前記第1の事象の検出を受信した場合、第2の事象を検出する検出装置に接続した第2の通知装置の識別情報と前記第1の事象の識別情報とを対応付けた通知先情報を参照して、前記第1の事象の検出を前記第2の通知装置に通知し、
前記第2の通知装置から前記第1の事象の検出に応じた処理を実行することができない旨の否定応答を受信した場合、前記第1の事象の識別情報と前記第2の通知装置の識別情報とを対応付けて否定応答情報に格納し、
前記第2の事象を検出する検出装置に接続した第3の通知装置から前記第1の事象の検出の通知の依頼を受信したことに応じて、前記否定応答情報に前記第1の事象の識別情報が含まれるか否かを判断し、
前記否定応答情報に前記第1の事象の識別情報が含まれると判断した場合、前記通知先情報と前記否定応答情報とから、前記第1の事象の識別情報に対応付けられた前記第2の通知装置の識別情報を削除する、
処理を実行させることを特徴とする分散制御プログラム。
(付記7)それぞれ異なる位置に配置された複数の通知装置のうちのいずれかの事象を検出する検出装置に接続したいずれかの通知装置に、
前記複数の通知装置のうちの前記いずれかの通知装置とは異なる他の通知装置から前記いずれかの事象とは異なる他の事象の検出を受信した場合、前記他の通知装置から前記他の事象の検出を受信し、かつ、前記いずれかの事象を検出したかを示す条件と前記条件を満たす際の所定の処理とを示す条件情報を参照して、前記いずれかの事象を検出する検出装置に前記いずれかの事象の検出の有無の送信要求を送信し、
前記送信要求に対する応答がない場合、前記他の事象の検出に対応する処理を実行することができない旨の否定応答を前記他の通知装置に送信する、
処理を実行させることを特徴とする分割制御プログラム。
(付記8)それぞれ異なる位置に配置された複数の通知装置のうちのいずれかの事象を検出する検出装置に接続したいずれかの通知装置に、
前記複数の通知装置のうちの前記いずれかの通知装置とは異なる他の通知装置から前記いずれかの事象とは異なる他の事象の検出を受信し、かつ、前記いずれかの事象を検出したかを示す条件と前記条件を満たす際の所定の処理とを示す条件情報を記憶しており前記いずれかの事象を検出する検出装置と接続して前記検出装置から前記条件情報を受信した場合、前記他の事象の検出の通知の依頼を前記他の通知装置に送信し、
前記他の事象の検出を前記他の通知装置から受信した場合、前記条件情報を参照して、前記いずれかの事象を検出する検出装置に前記いずれかの事象の検出の有無の送信要求を送信し、
前記いずれかの事象を検出する検出装置から前記いずれかの事象の検出を受信した場合、前記条件情報を参照して前記所定の処理を実行する、
処理を実行させることを特徴とする分割制御プログラム。
100 分散制御システム
101 CCN
102 携帯端末
103 温度センサ
800 制御部
801 通知部
802 格納部
803 判断部
804 削除部
805 送信部
806 実行部
811 Subscriberリスト
812 CCN−Subscribe数リスト
813 再送信待ちリスト

Claims (6)

  1. それぞれ異なる位置に配置された複数の通知装置と、前記複数の通知装置のうちの自装置の位置に応じた通知装置に事象の検出を通知する検出装置とを含む分散制御システムにおける分散制御方法であって、
    第1の事象を検出する検出装置に接続した第1の通知装置が、
    前記第1の事象を検出する検出装置から前記第1の事象の検出を受信した場合、前記第1の事象の識別情報と、前記第1の事象の検出の通知を依頼する通知装置の識別情報とを対応付けた通知先情報を参照して、前記第1の事象の識別情報に対応付けられた識別情報の第2の通知装置に、前記第1の事象の検出を通知し、
    前記第2の通知装置から前記第1の事象の検出に応じた処理を実行することができない旨の否定応答を受信した場合、前記第1の事象の識別情報と前記第2の通知装置の識別情報とを対応付けて否定応答情報に格納し、
    第2の事象を検出する第2の検出装置が前記第2の通知装置の配下の位置から第3の通知装置の配下の位置に移動した際に前記第2の検出装置から前記第3の通知装置に通知される条件情報に、前記第1の通知装置の識別情報が含まれる場合に前記第3の通知装置から通知される、前記第1の事象の検出の通知の依頼を受信したことに応じて、前記否定応答情報に前記第1の事象の識別情報が含まれるか否かを判断し、
    前記否定応答情報に前記第1の事象の識別情報が含まれると判断した場合、前記通知先情報と前記否定応答情報とから、前記第1の事象の識別情報に対応付けられた前記第2の通知装置の識別情報を削除する、
    処理を実行することを特徴とする分散制御方法。
  2. 前記判断する処理は、
    前記否定応答を受信した後に前記第3の通知装置から前記依頼を受信したことに応じて、前記否定応答情報に含まれる前記第1の事象の識別情報に対応付けられた通知装置の識別情報の数と、前記依頼を送信した通知装置の数とが一致するか否かを判断し、
    前記削除する処理は、
    前記否定応答情報に含まれる前記第1の事象の識別情報に対応付けられた通知装置の識別情報の数と前記依頼を送信した通知装置の数とが一致すると判断した場合、前記通知先情報と前記否定応答情報とから、前記第1の事象の識別情報に対応付けられた前記第2の通知装置の識別情報を削除する、
    ことを特徴とする請求項1に記載の分散制御方法。
  3. 前記通知する処理は、
    前記否定応答を受信する前に前記第3の通知装置から前記依頼を受信した後に、前記第1の事象を検出する検出装置から前記第1の事象の検出を受信した場合、さらに、前記第1の事象の検出を前記第3の通知装置に通知し、
    前記判断する処理は、
    前記否定応答を受信したことに応じて、前記否定応答情報に含まれる前記第1の事象の識別情報に対応付けられた通知装置の識別情報の数と、前記依頼を送信した通知装置の数とが一致するか否かを判断し、
    前記削除する処理は、
    前記否定応答情報に含まれる前記第1の事象の識別情報に対応付けられた通知装置の識別情報の数と前記依頼を送信した通知装置の数とが一致すると判断した場合、前記通知先情報と前記否定応答情報とから、前記第1の事象の識別情報に対応付けられた前記第2の通知装置の識別情報を削除する、
    ことを特徴とする請求項1または2に記載の分散制御方法。
  4. 前記格納する処理は、
    前記否定応答を受信した場合、前記第1の事象の識別情報と前記第2の通知装置の識別情報と前記否定応答を受信した時刻に基づいた期限時刻を示す値とを対応付けて前記否定応答情報に格納し、
    前記判断する処理は、
    現在時刻が前記期限時刻となったことに応じて、前記否定応答情報に含まれる前記第1の事象の識別情報に対応付けられた通知装置の識別情報の数と、前記依頼を送信した通知装置の数とが一致するか否かを判断し、
    前記削除する処理は、
    前記否定応答情報に含まれる前記第1の事象の識別情報に対応付けられた通知装置の識別情報の数と前記依頼を送信した通知装置の数とが一致すると判断した場合、前記通知先情報と前記否定応答情報とから、前記第1の事象の識別情報に対応付けられた前記第2の通知装置の識別情報を削除する、
    ことを特徴とする請求項1〜3のいずれか一つに記載の分散制御方法。
  5. それぞれ異なる位置に配置された複数の通知装置と、前記複数の通知装置のうちの自装置の位置に応じた通知装置に事象の検出を通知する検出装置とを含む分散制御システムであって、
    第1の事象を検出する検出装置に接続した第1の通知装置は、
    前記第1の事象を検出する検出装置から前記第1の事象の検出を受信した場合、前記第1の事象の識別情報と、前記第1の事象の検出の通知を依頼する通知装置の識別情報とを対応付けた通知先情報を参照して、前記第1の事象の識別情報に対応付けられた識別情報の第2の通知装置に、前記第1の事象の検出を通知し、
    前記第2の通知装置から前記第1の事象の検出に応じた処理を実行することができない旨の否定応答を受信した場合、前記第1の事象の識別情報と前記第2の通知装置の識別情報とを対応付けて否定応答情報に格納し、
    第2の事象を検出する第2の検出装置が前記第2の通知装置の配下の位置から第3の通知装置の配下の位置に移動した際に前記第2の検出装置から前記第3の通知装置に通知される条件情報に、前記第1の通知装置の識別情報が含まれる場合に前記第3の通知装置から通知される、前記第1の事象の検出の通知の依頼を受信したことに応じて、前記否定応答情報に前記第1の事象の識別情報が含まれるか否かを判断し、
    前記否定応答情報に前記第1の事象の識別情報が含まれると判断した場合、前記通知先情報と前記否定応答情報とから、前記第1の事象の識別情報に対応付けられた前記第2の通知装置の識別情報を削除する、
    ことを特徴とする分散制御システム。
  6. それぞれ異なる位置に配置された複数の通知装置と、前記複数の通知装置のうちの自装置の位置に応じた通知装置に事象の検出を通知する検出装置とを含む分散制御システムにおける分散制御プログラムであって、
    第1の事象を検出する検出装置に接続した第1の通知装置に、
    前記第1の事象を検出する検出装置から前記第1の事象の検出を受信した場合、前記第1の事象の識別情報と、前記第1の事象の検出の通知を依頼する通知装置の識別情報とを対応付けた通知先情報を参照して、前記第1の事象の識別情報に対応付けられた識別情報の第2の通知装置に、前記第1の事象の検出を通知し、
    前記第2の通知装置から前記第1の事象の検出に応じた処理を実行することができない旨の否定応答を受信した場合、前記第1の事象の識別情報と前記第2の通知装置の識別情報とを対応付けて否定応答情報に格納し、
    第2の事象を検出する第2の検出装置が前記第2の通知装置の配下の位置から第3の通知装置の配下の位置に移動した際に前記第2の検出装置から前記第3の通知装置に通知される条件情報に、前記第1の通知装置の識別情報が含まれる場合に前記第3の通知装置から通知される、前記第1の事象の検出の通知の依頼を受信したことに応じて、前記否定応答情報に前記第1の事象の識別情報が含まれるか否かを判断し、
    前記否定応答情報に前記第1の事象の識別情報が含まれると判断した場合、前記通知先情報と前記否定応答情報とから、前記第1の事象の識別情報に対応付けられた前記第2の通知装置の識別情報を削除する、
    処理を実行させることを特徴とする分散制御プログラム。
JP2015206704A 2015-10-20 2015-10-20 分散制御方法、分散制御システム、および分散制御プログラム Active JP6547580B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2015206704A JP6547580B2 (ja) 2015-10-20 2015-10-20 分散制御方法、分散制御システム、および分散制御プログラム
US15/295,182 US9911304B2 (en) 2015-10-20 2016-10-17 Distributed control method, distributed control system, and non-transitory computer-readable storage medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015206704A JP6547580B2 (ja) 2015-10-20 2015-10-20 分散制御方法、分散制御システム、および分散制御プログラム

Publications (2)

Publication Number Publication Date
JP2017078968A JP2017078968A (ja) 2017-04-27
JP6547580B2 true JP6547580B2 (ja) 2019-07-24

Family

ID=58523008

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015206704A Active JP6547580B2 (ja) 2015-10-20 2015-10-20 分散制御方法、分散制御システム、および分散制御プログラム

Country Status (2)

Country Link
US (1) US9911304B2 (ja)
JP (1) JP6547580B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10999388B2 (en) 2017-08-15 2021-05-04 Microsoft Technology Licensing, Llc Managing subscriptions for event notifications

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5400246A (en) * 1989-05-09 1995-03-21 Ansan Industries, Ltd. Peripheral data acquisition, monitor, and adaptive control system via personal computer
US5959529A (en) * 1997-03-07 1999-09-28 Kail, Iv; Karl A. Reprogrammable remote sensor monitoring system
US6775707B1 (en) 1999-10-15 2004-08-10 Fisher-Rosemount Systems, Inc. Deferred acknowledgment communications and alarm management
CN100458767C (zh) 2002-03-28 2009-02-04 普里凯许公司 用于在公共预订网络中可靠并且高效地进行基于内容的路由、查询以及响应的方法和设备
JP4806605B2 (ja) * 2006-08-30 2011-11-02 株式会社日立製作所 センサネットワークシステム及びセンサネットワークのデータ管理方法
JP5104489B2 (ja) * 2008-04-03 2012-12-19 日本電気株式会社 分散イベント検出システム、分散イベント検出方法、及び分散イベント検出用プログラム
JP2011053978A (ja) 2009-09-02 2011-03-17 Thinktube Ltd 非同期型マルチキャストミドルウェアを用いた機械設備間通信システム
US9736226B2 (en) * 2012-10-23 2017-08-15 Nec Corporation Rule distribution server, event processing system and method, and program

Also Published As

Publication number Publication date
JP2017078968A (ja) 2017-04-27
US9911304B2 (en) 2018-03-06
US20170109995A1 (en) 2017-04-20

Similar Documents

Publication Publication Date Title
US8533293B1 (en) Client side cache management
TWI631475B (zh) 用於能力監控之系統及方法
JP4753052B2 (ja) コンテンツ配信方法及びシステム
US9294546B2 (en) Sending files from one device to another device over a network
CN112929676A (zh) 一种直播数据流获取方法、装置、节点及系统
KR20140009931A (ko) 컨텐츠 이름 기반의 컨텐츠 중심 네트워크에서 컨텐츠 및 실시간 스트리밍 컨텐츠 제공을 위한 컨텐츠 요청자 및 컨텐츠 제공자의 통신 방법
US9432449B2 (en) Managing connection failover in a load balancer
JP5847185B2 (ja) コンテンツ中心のネットワーク環境でグループ変更に関する情報を用いるコンテンツ共有方法及び装置
JP2016527817A (ja) ユーザデバイスに対する、インターネットプロトコル(ip)アドレスと、メディアアクセス制御(mac)アドレスと、ロケーションとを関係付けるための方法およびシステム
CN111212134A (zh) 一种请求报文处理方法、装置、边缘计算系统和电子设备
CN112087644A (zh) 拉流请求处理方法、装置、系统、电子设备和存储介质
US20160373268A1 (en) Information processing system, information processing method, and storage medium
JPWO2014188530A1 (ja) 監視システム、設備管理装置、監視方法及びプログラム
JP6865593B2 (ja) 不均一ネットワークにまたがるコンテンツ配送
KR20180019162A (ko) 하이퍼텍스트 전송 프로토콜 요청을 재송신하는 방법과 디바이스, 및 클라이언트 단말
US20220046090A1 (en) System and method for migrating an agent server to an agent client device
JP6547580B2 (ja) 分散制御方法、分散制御システム、および分散制御プログラム
JPWO2009107511A1 (ja) 複合イベント検出/配信システム、複合イベント検出/配信方法、及び複合イベント検出/配信用プログラム
WO2018086575A1 (zh) 媒体资源的控制方法及装置
KR20210044281A (ko) 클라우드 저하 모드에서 지속적인 디바이스 동작 안정성을 보장하기 위한 방법 및 장치
JP4646931B2 (ja) サーバ装置およびリクエスト整理方法
US20140079067A1 (en) Information centric network (icn) node based on switch and network process using the node
WO2017097027A1 (zh) 基于因特网内容适配协议的数据处理方法、装置和系统
WO2018090315A1 (zh) 数据请求的处理方法及缓存系统
JP2002259197A (ja) アクティブコンテンツキャッシュ制御システムと、アクティブコンテンツキャッシュ制御装置及び方法と、アクティブコンテンツキャッシュ制御処理用プログラム及びそのプログラムの記録媒体

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180706

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190319

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190320

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190520

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: 20190528

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190610

R150 Certificate of patent or registration of utility model

Ref document number: 6547580

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150