(前提技術の概要説明)
まず、前提技術の概要として、複数のタスクを半順序関係で整列したワークフローベースのシステムデザインを説明する。プロジェクトであれ定型業務であれ、順序づけられたタスクの集合という意味でのワークフローは、何らかの仕事を体系立てて整理し、理解し、実行するための基本的な認識の単位である。ワークフローは、ワークフローを構成する個々のタスクに対して、実際にタスクを遂行するリソースを割り当てていき、一連の作業、サービスを実現する。
実際にタスクを遂行するリソースは、例えば人、プログラム、機器等であってよく、以下「エージェント」とも呼ぶ。特に、インターネット等のネットワークに接続されて外部機器と通信可能なエージェントを「IOT(Internet Of Things)機器」とも呼ぶ。
様々なセンサやコントローラ、アクチュエータ等、膨大な数のエージェントを対象として、あるワークフローにおいてこれらの制御を行う場合に、各エージェントの並列作業を効率的に管理する手法は、これまで十分な提案がなされていない。ワークフロー内のタスク間の関係は、線形順序(すなわち全順序)ではなく半順序構造を持つことがある。例えば、あるタスクの後に実行可能な複数のタスクがあり、これら複数のタスクのどちらが先に実行されてもよいことがしばしばある。これら複数のタスクは並列関係と言え、各タスクの遂行を並列実行することができる。この並列性は、同じタスクが割り当てられた複数のエージェント間でのタスク遂行の並列性とは次元が異なる。
ワークフローが定めるタスクを、実行順序を制御するための因果順序のシンボルとして用いる場合に「タスクステージ」と呼ぶ。ワークフローの各タスクステージに対応するエージェントの活動は、個々のノード(例えばエージェントが実装されたセンサ等、各種機器)において自律動作を行うプログラムとして記述されていることが前提となる。個々のノードは、現在どのタスクステージであるかを示す情報を取得し、そのタスクステージに対応する個々のエージェントプログラムを起動する。また、個々のエージェントはタスクステージに対応する処理が終了したことをワークフロー側へ報告し、次のタスクの指示を待つ。
ワークフローにもとづいて、実世界のエージェント個々によるタスクの実行順序を制御する機能を「タスクマネージャ」と呼ぶ。タスクマネージャは、ワークフローの実行エンジンとも言え、今どのタスクステージを実行すべきであるかをエージェントへ通知する。さらにタスクの完了通知をエージェントから受け取り、適宜タスクステージを進める。このように、タスクマネージャとエージェント間にはタスク管理のためのデータフローが生じる。
以下、分散した環境で自律的に動作する個々のエージェントを、全体として協調して動作するよう制御することを「分散協調制御」とも呼ぶ。前提技術ではワークフローを使用して分散協調制御を実現する。また、分散協調制御により、自律した個々のエージェントを全体として協調動作させるシステムを「自律分散協調システム」とも呼ぶ。前提技術では、ネットワークを介して結ばれたIOT機器の間での分散協調的ワークフローの管理技術を提案する。
自律分散協調システムでは、個々のエージェント間におけるデータストリームの意味でのデータフローも重要になる。例えば、あるタスクステージにおける計測タスクや計算タスクの実行結果は、その結果を入力とする別のタスクステージにおける計算タスクや制御タスクへ受け渡さなければならない。また、このようなエージェント間のデータフローはタスクマネージャを経由する必要はない。
前提技術では、タスクマネージャとエージェント間のデータフロー、および、あるエージェントと別のエージェント間のデータフローをパブリッシュ・サブスクライブ(以下「PUBーSUB」とも呼ぶ。)のスキームを使って実現する。PUB−SUBスキームは、送信元と送信先でデータを共有するために、ブローカと呼ばれる特殊なエージェントを用いる。
送信先の主体に対して渡すべきデータにトピックと呼ばれるタグを付加し、トピックを付加したデータをブローカへ送信する送信元の主体はパブリッシャと呼ばれる。また、特定のトピックが付加されたデータの転送リクエストをブローカへ登録する主体(すなわちデータの送信先の主体)はサブスクライバと呼ばれる。ブローカへパブリッシュされたデータのうち、サブスクライバが登録したトピックを有するデータを、ブローカはサブスクライバへ配信する。
PUB−SUBは、アドレス等の概念なしに必要なデータを必要な所に、多対多で送ることができるスキームである。前提技術では、タスクマネージャとエージェント間においてタスクステージに関する管理情報を転送するための管理ブローカと、複数のエージェント間でタスク遂行に必要なデータを転送するためのデータブローカの2つを使用するシステムを提案する。
タスクマネージャとエージェントの基本的な動作を説明する。
(1)タスクマネージャは、管理ブローカに、現在実行可能なタスクステージ名をパブリッシュする。エージェントは、予め自分の遂行するタスクステージ名をブローカへ登録しておき、登録したタスクステージ名がパブリッシュされると、その事実を管理ブローカからサブスクライブしてタスクを遂行する。タスクの遂行が終了したエージェントは、タスクステージの終了と必要な管理情報を管理ブローカへパブリッシュするとともに、必要なトピックを付して他のエージェントによるタスク遂行用のデータをデータブローカへパブリッシュする。
(2)タスクマネージャは、タスクステージの遷移可否を判断する。これを決めるのがタスク遷移述語である。タスク遷移述語は、エージェントから受け付けたタスク終了情報や管理データなどにもとづいて、次のタスクステージへ遷移してよいかを判定するプログラムである。
例えば、エージェントとしてのセンサを数百個設置して所定の環境状態(温度等)を計測し、環境状態の平均値を求めて何らかの制御を実行するシステムを考える。このシステムのタスクマネージャには、半数のセンサが計測(すなわちタスク処理)を終了してタスク終了情報を送ってくれば、次のステージに遷移してよいことを定めるタスク遷移述語を実装してもよい。また、分散ストリーム計算においては、計算が無事終了したことを示すタスク終了情報の受け付けをもってステージの遷移を決定するタスク遷移述語を実装してもよい。また、計算が異常終了した旨のタスク終了情報を受け付けた場合に、通常のワークフローから非常用のワークフローへ遷移する等の分岐の判断についてもタスク遷移述語に実装する。
(3)上記(1)(2)のプロセスを繰り返すことで、タスクマネージャはタスクステージ毎に実世界のエージェントとのハンドシェイクを遂行していく。この場合、タスクステージ間の並列性は、複数のタスクステージ名を並列してパブリッシュすることで実現される。また、同じタスクステージに属する複数のエージェントは、実世界において並列にタスクを遂行する。エージェント間の並列処理は、順序が入れ替わったり遅延があったとしても、タスクマネージャによる判定結果には影響がない。これは、人間によるプロジェクト管理においても、ワークフローを用いた分散協調制御においても同様である。
次に分散協調制御の事例を説明する。
事例1.センサによる機器の管理とエネルギー会計の制御:
この例では、複数の温度センサと複数の照度センサのデータから、平均温度と最小照度を計算し、それをもとにコントローラがエアコンと照明を制御する。また、エアコンと照明の稼働状態にもとづいてエネルギー消費を計算し、その計算結果をステークホルダへ通知する処理を制御する。
図1は、事例1の制御のためのタスクステージと、各タスクステージへのリソースマッピングを示している。事例1では、センサ(図中の「S」)によるデータ収集のタスクステージに対して複数のセンサが割り当てられている。また、各タスクステージに対するリソースの割当は固定的である。図2は、ブローカを介したデータ連携を模式的に示している。事例1では、タスクマネージャと実世界エージェント間のステージ管理を仲介する管理ブローカであるステージブローカと、複数のエージェント間のデータフローを仲介するデータブローカの2つが、制御フローとデータフローのそれぞれをPUB−SUBスキームで仲介する。
図2では、複数のエージェント間のデータフローをシーケンス図で示している。シーケンス図の特性上、矢印の記載位置(上下関係)により処理の前後関係があるように見えるが、実際には並列実行される処理を含む。例えば、センサから計算ノードへのデータの転送はどの順序で実行されてもよい。また、計算ノード1、2からそれぞれコントローラ1、2への計算結果の転送も順序に依存しない。なお旧来のアクティビティ図は、図1の図式と同様に見えるが、制御のメカニズムは定式化されていない。
事例2.内装工事のワークフローとタスク管理:
図3は、マンション等の内装工事のプロジェクトを簡略化して示している。ここでは、タスクの遂行リソース(実世界エージェント)を電気工、配管工、床工、壁貼り工、塗装工とする。また、図3に示すプロジェクトが部屋の数だけあるとする。この場合、図3のワークフローを制御する複数のタスクマネージャを並行して動作させ、各エージェントは、各タスクマネージャからの指示にしたがって特定の部屋の作業を実施する。実際には、各エージェントは、PCやスマートフォン、タブレット端末等の情報端末を保持し、タスクマネージャは当該情報端末との間でタスクステージ情報を送受する。
各エージェントは、割り当てられた部屋の担当タスクが終了すると、その終了の事実を情報端末へ入力し、タスクマネージャは各エージェントの情報端末からの終了通知にもとづいてタスクステージを適宜進行させる。各エージェントは、別の部屋の担当タスクを、それが遂行可能な状態にあるならば着手する。遂行可能な状態にあるとは、すなわち前段階のタスクステージが終了し、タスクマネージャから別の部屋のタスクに対応するタスクステージの開始が通知されたことである。このようにヒューマン・エージェント(人が保持する情報端末を含む)は、タスクマネージャからステージの着手可能信号を受け取ることを契機としてタスクに着手する。
本発明者が考えるリアルワールド・オペレーティングシステム(以下「実世界OS」とも呼ぶ。)は、実世界のエージェントの複雑で分散協調的な相互作用を、これまでに述べたタスクマネージャの機能を中核にして、ワークフロー単位で管理し、実行させるための仕組みである。これからのIOE(Internet Of Everything)時代には、分散環境にある様々な自律的エージェントが同期し、協調し、全体としてワークフローとしてデザインされたサービスを提供することが求められる。実世界OSは、膨大なエージェントが結びついた様々なシステムを設計、実装、管理するための基幹プラットフォームになる。
図4は、実世界OSのビジョンを示し、実世界OSによる制御範囲を模式的に示す。図の左側は仮想領域であり、シミュレーションによる仮想エージェントを含む。また図の右側は実世界エージェントの管理領域である。図4で示すように、タスクマネージャはエージェントベースのシミュレーションのコアエンジンになり、また、実世界エージェントの制御エンジンにもなる。これにより、仮想世界でのエージェントベースモデリングから、実世界でのエージェントコンピューティングまでシームレスに繋ぐことができる。シミュレーションによる設計と実世界エージェントを対象としたワークフローの管理の間で、仮想世界でシミュレーションをしたワークフローとプログラムとしてのエージェントを、実世界のエージェントに部分的に入れ替えること(部分実装)を行いながら、プロトタイピングを様々に行う設計方式が可能となり、最終的には実世界エージェントの管理のための動的な設計図として、エージェントベースのシミュレーションが残る。
実世界OSが、IOTエージェントに対して分散協調制御を実行することで提供可能なサービスの例として、以下の(1)〜(7)が想定される。
(1)センサリング&コントロール系サービスとして、HEMS、BEMS、CEMSでのエネルギーセンサリングとそれによる機器制御のサービス、また、家やオフィス、コミュニティにおける見守りサービスやセキュリティサービスを提供する。
(2)データの分散検索系サービスとして、複数の病院の電子カルテの並列検索サービスを提供する。
(3)ビジネスデータ処理系サービスとして、図1〜図3で示すような自律分散的なビジネスデータ処理を提供する。
(4)安心安全やコミュニティ系のサービスとして、4−1)災害時のデータ収集とデータ共有サービス、4−2)災害時の電子カルテサービス、4−3)日常的なコミュニティでのアンケート調査と、調査結果の共有および加工サービスを提供する。
(5)センサリング&統計・会計処理系サービスとして、HEMS、BEMS、CEMSでのエネルギーセンサリングにもとづくエネルギー統計サービスや会計処理サービスを提供する。
(6)ライフログ系サービスとして、様々なライフログの収集・利用システムを提供する。
(7)ファクトリー系サービスとして、工場のエネルギー管理システムから工場のセンサネットワークを提供する。
このように、生活世界や産業社会の諸サービスは多かれ少なかれIOTエージェントを利活用した自律分散協調システムとしてデザインできる。その自律分散協調システムの設計、実装、制御を支援することが実世界OSの重要なミッションとなる。なお、実世界におけるIOTエージェントの複雑な相互作用をバーチャルにデザインし、エミュレーションによるテストを行いつつ、徐々に実世界エージェントに置き換えていくこと、そして最終的に実世界エージェントによる自律分散協調システムを実現するという新しいシステム開発手法も想定される。
(前提技術の詳細説明)
以下では、上記の概要で説明した分散協調制御を実現するワークフロー管理装置を詳細に説明する。図5は、前提技術のIOT機器制御システム10を示す。IOT機器制御システム10は、自律分散協調システムを具現化した情報処理システムである。IOT機器制御システム10は、IOT機器11、ワークフロー管理装置12、ステークホルダ端末13、ブローカ15を備える。
IOT機器11は、実世界に存在する複数種類のエージェント機器である。各IOT機器11は、インターネットに接続されており、それぞれ自律して動作する。例えば、ワークフロー管理装置12から通信網を介してステージが通知された場合に、そのステージに対応する動作を実行するものであり、この動作を実行するためのプログラム(およびプログラムを実行するためのMPU等)を搭載したものであってよい。前提技術のIOT機器11は、センサ機器20、計算ノード30、コントローラ40、サービス機器50を含む。
センサ機器20は、公知の種々のセンサを備える機器である。例えばセンサ機器20は、周囲の環境状態を検出し、その環境状態を示す情報を出力する。また例えば、周囲の環境状態が特定の状態になった場合にその事実を検出し、出力する。前提技術のセンサ機器20は、複数の温度センサ22と複数の照度センサ24を含む。例えば、工場に設置された数百個の温度センサを含み、また、オフィスビルのある居室に設置された数十個の照度センサを含む。
計算ノード30は、各種の計算処理を実行する情報処理装置である。計算ノード30は、温度計算ノード32、照度計算ノード34、会計計算ノード36を含む。温度計算ノード32は、複数の温度センサ22により計測された温度にもとづき平均温度を計算し、照度計算ノード34は、複数の照度センサ24により計測された照度にもとづき最小照度を計算する。会計計算ノード36は、エアコンの設定温度と、照明のオンオフ状態にもとづいて、所定のエネルギー会計計算を実行する。例えば、エネルギーの消費量や消費金額等を算出し、またエネルギー簿記を実行する。
サービス機器50は、電気やガス等のエネルギーを消費しつつ生活世界や産業社会の諸サービスをユーザへ提供する機器であり、エネルギー消費機器とも言える。サービス機器50は、エアコン52と照明54を含む。コントローラ40は、サービス機器50の動作を制御する制御機器である。コントローラ40は、エアコンコントローラ42と照明コントローラ44を含む。エアコンコントローラ42は、エアコンの設定温度を制御し、照明コントローラ44は、照明のオンオフを制御する。
ワークフロー管理装置12は、概要で説明したタスクマネージャと実世界OSを具現化した情報処理装置である。ワークフロー管理装置12は、ワークフローで定められたタスクステージ(以下、単に「ステージ」と呼ぶ。)の遷移にしたがって、複数のIOT機器11の動作を制御する。ワークフロー管理装置12の詳細な機能は後述する。なおワークフロー管理装置12の物理的な態様に制限はなく、例えばPCやサーバでもよく、マイクロコントローラ、シングルボードコンピュータであってもよい。
ステークホルダ端末13は、IOT機器11が設置された企業の担当者等、所定のステークホルダーにより操作される情報端末である。ステークホルダ端末13は、会計計算ノード36による計算結果であるエネルギー会計情報を取得し、適宜ディスプレイ等に表示させる。
ブローカ15は、PUB−SUBスキームにより装置間でのデータ送受を仲介する装置である。ブローカ15は、公知のメッセージキュー製品やメッセージ指向ミドルウェアにより実現されてもよい。図5の各装置は、LAN・WAN・インターネット等の通信網を介し、ブローカ15が定める通信プロトコルにしたがってPUB−SUBのスキームにてブローカ15と通信し、装置間でデータを送受する。
ブローカ15は、ステージブローカ16とデータブローカ17を含む。ステージブローカ16は、上述の管理ブローカであり、ワークフロー管理装置12と各IOT機器11間におけるステージの開始・終了に関する管理情報の送受を仲介する。データブローカ17は、IOT機器11同士、または、IOT機器11とステークホルダ端末13間におけるデータの送受を仲介する。
ここでIOT機器制御システム10では、ワークフロー管理装置12が管理するワークフローがどのようなステージを有するか、また、各ステージにおいてエージェントがどのような処理をすべきかが予め決められ、IOT機器11の製造者に公開される。各IOT機器11は、ワークフロー管理装置12から特定のステージが通知された場合に、そのステージに応じた処理を行うよう実装される。
例えば、後述の温度収集ステージについて、周囲の温度を取得するタスクを実行すべきであることが予め定められ、公開される。温度センサ22は、温度収集ステージの通知をサブスクライブしたことを契機に、周囲の温度を測定し、タスクの終了をステージブローカ16へパブリッシュし、測定した温度をデータブローカ17へパブリッシュするよう実装される。また後述の平均温度計算ステージについて、複数の温度データの平均を算出するタスクを実行すべきであることが予め定められ、公開される。温度計算ノード32は、平均温度計算ステージの通知をサブスクライブしたことを契機に、複数の温度センサ22が測定した温度の平均値を算出し、タスクの終了をステージブローカ16へパブリッシュし、算出した平均温度をデータブローカ17へパブリッシュするよう実装される。
図6は、図5のワークフロー管理装置12の機能構成を示すブロック図である。ワークフロー管理装置12は、通信部60、制御部70、データ記憶部80を備える。通信部60は、所定の通信プロトコルにしたがって外部装置とデータを送受する。例えば、予め定められたメッセージプロトコルにしたがって、ステージブローカ16とのPUB−SUBスキームでのデータ送受を実行する。
制御部70は、ワークフロー管理装置12の動作を制御する。また、ワークフロー管理、言い換えれば、複数のIOT機器11を分散協調制御するためのデータ処理を実行する。データ記憶部80は、制御部70によるデータ処理において参照され、また更新される各種データを記憶する記憶領域である。
本明細書のブロック図で示す各ブロックは、ハードウェア的には、コンピュータのCPUやメモリをはじめとする素子や機械装置で実現でき、ソフトウェア的にはコンピュータプログラム等によって実現されるが、ここでは、それらの連携によって実現される機能ブロックを描いている。したがって、これらの機能ブロックはハードウェア、ソフトウェアの組合せによっていろいろなかたちで実現できることは、当業者には理解されるところである。
例えば、制御部70の各機能ブロックに対応するソフトウェアモジュールを備えるアプリケーションプログラムがワークフロー管理装置12にインストールされてもよい。そして、ワークフロー管理装置12のCPUが、各ソフトウェアモジュールをメモリに読み出して実行することにより、制御部70の各機能ブロックの機能が発揮されてもよい。また、データ記憶部80の各機能ブロックは、ストレージやメモリ等の記憶装置がデータを記憶することにより実現されてもよい。
データ記憶部80は、ワークフロー情報保持部82とステージ情報保持部84を含む。ワークフロー情報保持部82は、ワークフロー情報として、ワークフローが定める各ステージの前後関係と、各ステージから次のステージへ移行させる条件を保持する。典型的な移行条件は、ステージに予め対応づけられたタスクを終了したエージェントから、当該ステージのタスクを終了した旨の通知を受け付けることである。
ただし、複数のエージェントが1つのステージのタスクを並列実行する場合、当該ステージから次のステージへの移行条件として、一部のエージェントからタスク終了通知を受け付けたことをもって次のステージへの以降を許可得することを定めることができる。言い換えれば、タスクを実行させた複数のエージェントの全てからタスク終了通知を受け付けなくても、複数のエージェントのうち所定数以上のエージェントからタスク終了通知を受け付ければ次のステージへ移行させることを定めることができる。
図7は、前提技術のワークフローを模式的に示す。前提技術のワークフローは、概要で説明した事例1(例えば図1)に対応する形で、複数のステージ間の遷移を定め、また複数種類の実世界エージェントの動作を制御する。
ワークフロー情報保持部82は、各ステージの前後関係として、ワークフロー開始後に、温度収集ステージ100と照度収集ステージ102に移行すること、温度収集ステージ100の次が平均温度計算ステージ104であることを示す情報を保持する。また、平均温度計算ステージ104の次がエアコン制御ステージ108であり、エアコン制御ステージ108の次がエネルギー会計計算ステージ112であることを示す情報を保持する。また、照度収集ステージ102の次が最小照度計算ステージ106であり、最小照度計算ステージ106の次が照明制御ステージ110であり、照明制御ステージ110の次がエネルギー会計計算ステージ112であることを示す情報を保持する。また、エネルギー会計計算ステージ112の終了によりワークフローが終了することを示す情報を保持する。
またワークフロー情報保持部82は、温度収集ステージ100から平均温度計算ステージ104への移行条件として、100個の温度センサ22のうち50個以上の温度センサ22から温度測定タスクの終了が通知されることを定めている。また、平均温度計算ステージ104からエアコン制御ステージ108への移行条件として、温度計算ノード32から平均温度計算タスクの終了が通知されることを定めている。また、照度収集ステージ102から最小照度計算ステージ106への移行条件として、20個の照度センサ24のうち15個以上の照度センサ24から照度測定タスクの終了が通知されることを定めている。また、最小照度計算ステージ106から照明制御ステージ110への移行条件として、照度計算ノード34から最小照度計算タスクの終了が通知されることを定めている。
図6に戻り、ステージ情報保持部84は、ワークフローが現在どのステージであるかを示すステージ情報を保持する。ステージ情報には、ワークフローのステージがそれまでとは異なる新たなステージに移行した場合に、新たなステージの識別情報(名称やID等)が記録される。
ステージ情報は、現在のステージとして、複数のステージが同時に記録されることを許容する。図7の例では、温度収集ステージ100〜平均温度計算ステージ104〜エアコン制御ステージ108と、照度収集ステージ102〜最小照度計算ステージ106〜照明制御ステージ110が並列して進められる。したがってステージ情報保持部84は、現在のステージが温度収集ステージ100であり、かつ、照度収集ステージ102、最小照度計算ステージ106、照明制御ステージ110のいずれかでもあることを示すステージ情報を保持し得る。またステージ情報保持部84は、現在のステージが照度収集ステージ102であり、かつ、温度収集ステージ100、平均温度計算ステージ104、エアコン制御ステージ108のいずれかでもあることを示すステージ情報を保持し得る。
制御部70は、ステージ通知部72、終了通知受付部74、移行判定部76、ステージ更新部78を含む。ステージ通知部72は、ステージ情報保持部84に保持されたステージ情報を監視し、ステージ情報が更新された場合に、現在のステージを示す情報(以下「現在ステージ情報」と呼ぶ。)をステージブローカ16へ送信する。これにより、現在のステージを1つ以上のIOT機器11へ通知し、現在のステージに応じた動作を1つ以上のIOT機器11に並列実行させる。
ステージ通知部72が送信する現在ステージ情報は、現在のステージを識別可能な情報(例えばステージ名称やID)を含む。例えば、現在のステージの識別情報を示すトピックを付加したメッセージである。その一方、IOT機器11の動作態様を指定する内容は現在ステージ情報から排除されている。例えば現在ステージ情報は、IOT機器11の動作を直接的に規定するコマンドや、IOT機器11の動作時に参照され、IOT機器11の動作を間接的に規定するパラメータを含まない。このようにワークフロー管理装置12は、IOT機器11に対して現在のステージを通知しつつ、現在のステージに対する具体的な動作は各IOT機器11の実装に委ねる。これにより、IOT機器制御システム10における各IOT機器11の独立性を高め、またセキュリティを高める。
終了通知受付部74は、各IOT機器11から送信された動作終了通知をステージブローカ16から受信する。動作終了通知は、ワークフローの現在のステージに対応する処理、言い換えれば、現在のステージで実行するよう定められたタスクが終了したことを示す情報であり、「タスク終了通知」とも言える。動作終了通知は、IOT機器11側で動作を終了したステージの識別情報を含むものであってよい。ただし動作終了通知は、IOT機器11におけるタスク処理で得られたデータ、例えば温度データや平均温度データを含まない。これらのデータは、データブローカ17を介して、IOT機器11同士で送受される。これにより、ワークフロー管理装置12は、ステージの開始、終了、移行判断に専念することができる。
移行判定部76は、終了通知受付部74における動作終了通知の受信状況にもとづいて、ワークフローの現在のステージについてワークフロー情報保持部82に保持された次のステージへの移行条件が充足されたか否かを判定する。移行判定部76は、移行条件が充足されたことを検出すると、移行元のステージと移行先のステージの組み合わせをステージ更新部78へ通知する。
例えば、温度収集ステージ100から平均温度計算ステージ104への移行条件として、100個の温度センサ22のうち半分の温度センサ22から温度測定タスクの終了が通知されることを定めることができる。この場合、移行判定部76は、温度収集ステージ100の動作が終了した旨を示す動作終了通知が50個以上受信された場合に上記移行条件が充足されたと判定してもよい。同様に、照度収集ステージ102から最小照度計算ステージ106への移行条件として、20個の照度センサ24のうち15個以上の照度センサ24から照度測定タスクの終了が通知されることを定めることができる。この場合、移行判定部76は、照度収集ステージ102の動作が終了した旨を示す動作終了通知が15個以上受信された場合に上記移行条件が充足されたと判定してもよい。
ステージ更新部78は、現在のステージの移行条件が充足されたことが移行判定部76により判定された場合に、現在のステージを次のステージへ進めるようステージ情報保持部84に保持されたステージ情報を更新する。具体的には、移行判定部76から移行元ステージと移行先ステージの組み合わせが通知された場合に、ステージ情報に記録された移行元ステージを、移行先ステージへ切り替えるようステージ情報を更新する。
またステージ更新部78は、複数のステージが現在のステージとしてステージ情報に記録されている場合、それら複数のステージのうち移行判定部76から通知された移行元ステージを、移行先ステージへ切り替えるようステージ情報を更新する。その一方、複数のステージのうち移行元ステージとして指定されないステージは、ステージ情報に記録されたままとし、すなわち現在のステージとして維持する。
例えば、現在のステージが温度収集ステージ100と照度収集ステージ102であり、温度収集ステージ100の移行条件のみが充足された場合、ステージ更新部78は、現在のステージを平均温度計算ステージ104と照度収集ステージ102とするようステージ情報を更新する。その後、平均温度計算ステージ104の移行条件のみが充足された場合、ステージ更新部78は、現在のステージをエアコン制御ステージ108と照度収集ステージ102とするようステージ情報を更新する。このように、複数のステージを並列して進めるようワークフローが規定されている場合、IOT機器11の動作制御および次のステージへの遷移を、並列するステージ毎に独立して実行する。
以上の構成によるIOT機器制御システム10の動作を以下説明する。
図8は、IOT機器制御システム10の動作を示すシーケンス図である。図8は、図7のワークフローにしたがってワークフロー管理装置12がIOT機器11を制御する際の動作を示している。また図8は、概要で説明した事例1(例えば図2)に対応する。シーケンス図上、並列するステージ(例えば照度収集ステージ102と平均温度計算ステージ104等)の処理に前後関係があるように見えるが、並列するステージの処理は結果として前後関係が生じるものの、本質的には同時並列的に実行される。
前提として、IOT機器11のそれぞれは、自身が動作すべき特定のステージに対して予め定められたトピック名をステージブローカ16およびデータブローカ17に事前に登録しておく。これにより、各IOT機器11は、上記特定のステージの開始を示すメッセージ、また、タスクを実行するために必要なデータを含むメッセージのサブスクライバとして動作する。また各IOT機器11は、上記特定のステージに対応する動作が実装される。例えば、温度センサ22は、温度収集ステージの開始を示す所定のトピック名をステージブローカ16に登録しておき、また、温度収集ステージにおいて温度測定処理を実行するよう定めたプログラムを搭載している。
ワークフロー管理装置12は、定期的に、もしくは、ユーザの指示に応じて図7のワークフローを開始する。ワークフロー管理装置12のステージ更新部78は、現在のステージを、温度収集ステージ100および照度収集ステージ102とするようステージ情報を更新する。ステージ通知部72は、温度収集ステージを示すトピックを付加した現在ステージ情報をステージブローカ16へパブリッシュし(S2)、それとともに照度収集ステージのトピックを付加した現在ステージ情報をステージブローカ16へパブリッシュする(S4)。
複数の温度センサ22のそれぞれは、温度収集ステージを示すトピックが付加された現在ステージ情報をステージブローカ16からサブスクライブし(S6)、周囲の温度を測定する。そして、温度測定結果を示すトピックを付加し、温度データを本文に含むメッセージをデータブローカ17へパブリッシュする(S8)。各温度センサ22は、温度収集ステージについての動作終了通知をステージブローカ16へパブリッシュし(S10)、ワークフロー管理装置12の終了通知受付部74は、各温度センサ22からの動作終了通知をステージブローカ16からサブスクライブする(S12)。
これに並行して、複数の照度センサ24のそれぞれは、照度収集ステージを示すトピックが付加された現在ステージ情報をステージブローカ16からサブスクライブし(S14)、周囲の照度を測定する。そして、照度測定結果を示すトピックを付加し、照度データを本文に含むメッセージをデータブローカ17へパブリッシュする(S16)。各照度センサ24は、照度収集ステージについての動作終了通知をステージブローカ16へパブリッシュし(S18)、ワークフロー管理装置12の終了通知受付部74は、各照度センサ24からの動作終了通知をステージブローカ16からサブスクライブする(S20)。
ワークフロー管理装置12の移行判定部76は、温度収集ステージについての動作終了通知の受信状況に応じて、温度収集ステージ100から平均温度計算ステージ104への移行条件が満たされたと判定する。例えば、数百個の温度センサ22のうち移行条件が定める個数である50個の温度センサ22からパブリッシュされた50個の動作終了通知をサブスクラブした場合に、移行条件が満たされたと判定する。ステージ更新部78は、現在のステージを温度収集ステージ100から平均温度計算ステージ104へ切り替えるようステージ情報を更新する。これに並行して、移行判定部76は、照度収集ステージについての動作終了通知の受信状況に応じて、照度収集ステージ102から最小照度計算ステージ106への移行条件が満たされたと判定する。例えば、数十個の照度センサ24のうち移行条件が定める個数の照度センサ24からパブリッシュされた当該個数の動作終了通知をサブスクラブした場合に、移行条件が満たされたと判定する。ステージ更新部78は、現在のステージを照度収集ステージ102から最小照度計算ステージ106へ切り替えるようステージ情報を更新する。
このように前提技術のワークフローでは、複数のステージ間の実行順序(言い換えれば前後関係)として半順序関係を規定することを許容する。例えば、温度収集ステージ100と照度収集ステージ102は半順序関係である。すなわち、これらのステージ間の実行順序は一意に定められておらず、ステージ間の実行順序を比較することはできない。言い換えれば、どちらのステージを先に開始してもよく、どちらのステージを先に終了してもよい。また、温度収集ステージ100の次の平均温度計算ステージ104と照度収集ステージ102も半順序関係である。すなわち、これらのステージ間の実行順序は一意に定められておらず、ステージ間の実行順序を比較することはできない。既述したように、このようなステージ間の順序関係はワークフロー情報保持部82に保持される。
ステージ更新部78は、ワークフロー情報保持部82に保持された順序関係を参照し、温度収集ステージ100から平均温度計算ステージ104への移行条件が満たされた一方、照度収集ステージ102から最小照度計算ステージ106への移行条件が満たされていない場合、ワークフローの現在ステージが平均温度計算ステージ104であり、かつ、照度収集ステージ102でもあることを示すようステージ情報を更新する。すなわち、温度収集ステージ100・平均温度計算ステージ104側のステージ移行と、照度収集ステージ102・最小照度計算ステージ106側のステージ移行を独立して実行する。
温度計算ノード32は、温度測定結果を示すトピックが付加された複数の温度データをデータブローカ17からサブスクライブする(S22)。照度計算ノード34は、照度測定結果を示すトピックが付加された複数の照度データをデータブローカ17からサブスクライブする(S24)。
ワークフロー管理装置12のステージ通知部72は、平均温度計算ステージを示すトピックを付加した現在ステージ情報をステージブローカ16へパブリッシュし(S26)、温度計算ノード32はその現在ステージ情報をステージブローカ16からサブスクライブする(S28)。温度計算ノード32は、複数の温度センサ22で測定された温度にしたがって平均温度を算出し、平均温度計算結果を示すトピックを付加し、平均温度データを本文に含むメッセージをデータブローカ17へパブリッシュする(S30)。温度計算ノード32は、平均温度計算ステージについての動作終了通知をステージブローカ16へパブリッシュし(S32)、ワークフロー管理装置12の終了通知受付部74はその動作終了通知をステージブローカ16からサブスクライブする(S34)。エアコンコントローラ42は、平均温度計算結果を示すトピックが付加された平均温度データをデータブローカ17からサブスクライブする(S36)。
これに並行して、ワークフロー管理装置12のステージ通知部72は、最小照度計算ステージを示すトピックを付加した現在ステージ情報をステージブローカ16へパブリッシュし(S38)、照度計算ノード34はその現在ステージ情報をステージブローカ16からサブスクライブする(S40)。照度計算ノード34は、複数の照度センサ24で測定された照度にしたがって最小照度を算出し、最小照度計算結果を示すトピックを付加し、最小照度データを本文に含むメッセージをデータブローカ17へパブリッシュする(S42)。照度計算ノード34は、最小照度計算ステージについての動作終了通知をステージブローカ16へパブリッシュし(S44)、ワークフロー管理装置12の終了通知受付部74はその動作終了通知をステージブローカ16からサブスクライブする(S46)。照明コントローラ44は、最小照度計算結果を示すトピックが付加された最小照度データをデータブローカ17からサブスクライブする(S48)。
ワークフロー管理装置12の移行判定部76は、平均温度計算ステージについての動作終了通知の受信状況にしたがって、平均温度計算ステージ104からエアコン制御ステージ108への移行条件が満たされたと判定する。ステージ更新部78は、現在のステージを平均温度計算ステージ104からエアコン制御ステージ108へ切り替えるようステージ情報を更新する。これに並行して、移行判定部76は、最小照度計算ステージについての動作終了通知の受信状況にしたがって、最小照度計算ステージ106から照明制御ステージ110への移行条件が満たされたと判定する。ステージ更新部78は、現在のステージを最小照度計算ステージ106から照明制御ステージ110へ切り替えるようステージ情報を更新する。
ワークフロー管理装置12のステージ通知部72は、エアコン制御ステージを示すトピックを付加した現在ステージ情報をステージブローカ16へパブリッシュし(S50)、エアコンコントローラ42はその現在ステージ情報をステージブローカ16からサブスクライブする(S52)。エアコンコントローラ42は、温度計算ノード32で決定された平均温度にしたがってエアコン52の新たな設定温度を決定し、その設定温度で動作するようエアコン52を制御する(S54)。この例ではエアコンコントローラ42とエアコン52が直接接続されるが、データブローカ17を介して間接的に接続されてもよい。
エアコンコントローラ42は、エアコン制御結果を示すトピックを付加し、新たな設定温度を本文に含むメッセージをデータブローカ17へパブリッシュする(S56)。また、エアコンコントローラ42は、エアコン制御ステージについての動作終了通知をステージブローカ16へパブリッシュし(S58)、ワークフロー管理装置12の終了通知受付部74はその動作終了通知をステージブローカ16からサブスクライブする(S60)。
これに並行して、ワークフロー管理装置12のステージ通知部72は、照明制御ステージを示すトピックを付加した現在ステージ情報をステージブローカ16へパブリッシュし(S62)、照明コントローラ44はその現在ステージ情報をステージブローカ16からサブスクライブする(S64)。照明コントローラ44は、照度計算ノード34で決定された最小照度にしたがって照明54のオンもしくはオフを決定し、照明54を点灯もしくは消灯させる(S66)。この例では照明コントローラ44と照明54が直接接続されるが、データブローカ17を介して間接的に接続されてもよい。
照明コントローラ44は、照明制御結果を示すトピックを付加し、照明54のオンオフ状態を本文に含むメッセージをデータブローカ17へパブリッシュする(S68)。また、照明コントローラ44は、照明制御ステージについての動作終了通知をステージブローカ16へパブリッシュし(S70)、ワークフロー管理装置12の終了通知受付部74はその動作終了通知をステージブローカ16からサブスクライブする(S72)。
会計計算ノード36は、エアコン制御結果を示すトピックが付加された設定温度データをデータブローカ17からサブスクライブする(S74)。これに並行して、会計計算ノード36は、照明制御結果を示すトピックが付加された照明オンオフ情報をデータブローカ17からサブスクライブする(S76)。
ワークフロー管理装置12の移行判定部76は、エアコン制御ステージについての動作終了通知の受信状況にしたがって、エアコン制御ステージ108からエネルギー会計計算ステージ112への移行条件が満たされたと判定する。また移行判定部76は、照明制御ステージについての動作終了通知の受信状況にしたがって、照明制御ステージ110からエネルギー会計計算ステージ112への移行条件が満たされたと判定する。ステージ更新部78は、エアコン制御ステージ108からエネルギー会計計算ステージ112への移行条件が満たされ、かつ、照明制御ステージ110からエネルギー会計計算ステージ112への移行条件も満たされた場合に、現在のステージを、エアコン制御ステージ108および照明制御ステージ110から、エネルギー会計計算ステージ112へ切り替えるようステージ情報を更新する。
このように前提技術のワークフローでは、複数のステージ間の実行順序として半順序関係を規定することを許容する。例えば、エアコン制御ステージ108と照明制御ステージ110は半順序関係である。すなわち、これらのステージ間の実行順序は一意に定められておらず、ステージ間の実行順序を比較することはできない。言い換えれば、どちらのステージを先に開始してもよく、どちらのステージを先に終了してもよい。またここでは、エネルギー会計計算ステージ112は、エアコン制御ステージ108と照明制御ステージ110の両方が終了したことを条件として実行可能である。既述したように、このようなステージ間の順序関係はワークフロー情報保持部82に保持される。
ステージ更新部78は、ワークフロー情報保持部82に保持された順序関係を参照し、エアコン制御ステージ108からエネルギー会計計算ステージ112への移行条件が満たされた一方、照明制御ステージ110からエネルギー会計計算ステージ112への移行条件が満たされていない場合に、エアコン制御ステージ108が終了した状態であり、かつ、照明制御ステージ110でもあることを示すようステージ情報を更新する。その後、照明制御ステージ110からエネルギー会計計算ステージ112の移行条件が満たされると、ステージ更新部78は、現在のステージをエネルギー会計計算ステージ112へ切り替えるようステージ情報を再度更新する。これにより、ワークフローをエネルギー会計計算ステージ112へ移行させる。
ワークフロー管理装置12のステージ通知部72は、エネルギー会計計算ステージを示すトピックを付加した現在ステージ情報をステージブローカ16へパブリッシュし(S78)、会計計算ノード36はその現在ステージ情報をステージブローカ16からサブスクライブする(S80)。会計計算ノード36は、エアコンコントローラ42で決定されたエアコン52の設定温度と、照明コントローラ44で決定された照明54のオンオフにしたがって、エネルギー会計計算処理を実行する。会計計算ノード36は、エネルギー会計計算結果を示すトピックを付加し、エネルギー会計データを本文に含むメッセージをデータブローカ17へパブリッシュする(S82)。また、会計計算ノード36は、エネルギー会計計算ステージについての動作終了通知をステージブローカ16へパブリッシュする(S84)。
ワークフロー管理装置12の終了通知受付部74は、エネルギー会計計算ステージについての動作終了通知をステージブローカ16からサブスクライブする(S86)。移行判定部76がエネルギー会計計算ステージ112からエンドステージへの移行条件が満たされたと判定すると、ワークフロー管理装置12における図7のワークフローの1サイクルの処理が完了する。なお、所定時間(10分等)が経過するたびに、ワークフロー管理装置12は図7のワークフローの処理を繰り返してもよく、すなわち、図8に示す動作を定期的に繰り返してもよい。
ステークホルダ端末13は、エネルギー会計計算結果を示すトピックが付加されたエネルギー会計データをデータブローカ17からサブスクライブし(S88)、そのデータを所定の記憶装置に記憶させる。ステークホルダ端末13は、会計計算ノード36から定期的に通知されるエネルギー会計データを蓄積してもよく、複数回に亘り通知されたエネルギー会計データを1日単位や1月単位で集計する処理を実行してもよい。また、その集計結果を所定の記憶装置に記憶させ、また、ディスプレイや印刷装置へ出力してもよい。
前提技術のワークフロー管理装置12は、並列する複数のステージのタスクを複数のエージェントに並列して割当て、各エージェントにタスクを並列して実行させる。また、並列する各ステージを次のステージへ進めるか否かを、タスク割当先の各エージェントが互いに独立して送信するタスク終了通知の受信状況にもとづいて決定する。これにより、制御対象のエージェント数が増加しても、各エージェントを協調動作させたサービスの提供を効率的に実現することができる。すなわち、1つのサービス提供のために実行すべき複数のタスクの処理順序を半順序で定義可能にすることで、多数のエージェントによるタスク処理を効率的に制御し、効率的なサービス提供を実現する。
例えば、あるステージの移行条件として、当該ステージのタスクを割当てた複数のエージェントのうち所定数のエージェントからタスク終了通知を受け付けた場合に次のステージへ移行することを定めることができる。この場合、具体的にどのエージェントからタスク終了通知を受け付けたかにはよらず、受信したタスク終了通知の個数が所定数に達したことを契機にステージ移行がなされる。これにより、タスク終了通知の送信元がエージェントAである場合の処理、エージェントBである場合の処理等、多くの種類の処理を定義する必要がなく、制御対象のエージェント数が増加しても、各エージェントを協調動作させたサービスの提供を効率的に実現することができる。
また、前提技術のIOT機器制御システム10では、ワークフロー管理装置12とIOT機器11間のデータフローのためのステージブローカ16と、IOT機器11同士のデータフローのためのデータブローカ17を別個に設けた。これにより、中継対象のデータの特性に合わせて、パフォーマンスやセキュリティ等の設定を最適化したブローカを設けることができ、システム全体のパフォーマンスやセキュリティを効果的に高めることができる。例えば、ステージブローカ16は、パフォーマンスよりもセキュリティを重点的に高めた設定とすることが望ましい。その一方、データブローカ17は、仲介するデータ数の多寡やデータサイズの大小に応じた設定がなされてもよく、仲介するデータの特性に応じて複数のデータブローカ17を設けてもよい。
以上、本発明を第1実施例をもとに説明した。この実施例は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。以下変形例を挙げる。
第1の変形例を説明する。上記前提技術では、ワークフロー管理装置12による制御対象のエージェントとしてIOT機器11を示したが、概要の事例2で示したように、エージェントは人であってもよい。この場合、ワークフロー管理装置12は、人が保持する情報端末に対して現在のステージを通知してもよい。この情報端末は、通知されたステージに応じたタスクの内容をディスプレイに表示させてもよい。人(すなわちタスク作業者)は、タスクが完了するとその旨を情報端末へ入力し、情報端末はワークフロー管理装置12へタスク終了通知を送信し、ワークフロー管理装置12は、そのタスク終了通知にしたがってステージを進行させてもよい。
第2の変形例として、ステージの移行条件を含むタスク遷移述語について付言する。ワークフロー情報保持部82は、各ステージについて定められたタスク遷移述語を保持し、ステージ更新部78は、タスク遷移述語にしたがって各ステージの移行態様を決定する。タスク遷移述語には、ステージ移行に関する様々なAND条件、OR条件、NOT条件を記述可能である。
あるステージのタスク遷移述語は、移行条件が満たされた場合に次のステージへ移行することを定め、かつ、現在のステージ情報を外部へ通知後(もしくは現在のステージへ移行後)の所定時間内に次のステージへの移行条件が満たされない(例えばタイマによるタイムアウトを検出した)場合に、代替的・例外的なステージ移行を実行することを定めてもよい。所定時間内に次のステージへの移行条件が満たされないとは、例えば、IOT機器11からのタスク終了通知を待つべき所定の待機時間が経過した場合である。同様に、タスク遷移述語は、タスクを実行したIOT機器11から異常を示すタスク終了通知が返された場合に、代替的・例外的なステージ移行を実行することを定めてもよい。
ステージ更新部78は、所定時間内に移行条件が満たされない、または異常を示すタスク終了通知が返された場合に、代替的・例外的なステージ移行を実行してもよい。代替的・例外的なステージ移行は、それまでのワークフロー、もしくはそれまでとは異なるワークフローの特定のステージへ移行することでもよい。例えば、ワークフロー管理装置12が複数のワークフローによる外部機器の制御を並行して実行する場合に、どのワークフローで例外やエラーが検出された際にも、例外処理用の共通のワークフローの特定のステージへ移行することを規定したものでもよい。本変形例によると、ワークフローにおける多様なステージ遷移を実現でき、また、ワークフローによる外部機器制御に要求される様々なエラー処理、例外処理に柔軟に対応できる。
第3の変形例を説明する。上記前提技術では言及していないが、ワークフロー管理装置12により制御対象となるIOT機器11は、複数のタスクステージに対応した複数の機能を備えてもよく、それら複数の機能を呼び出すための複数のAPIを備えてもよい。複数のAPIは、例えば、ワークフロー管理装置12からステージAの開始が通知された場合に呼び出されるインタフェースAと、ステージBの開始が通知された場合に呼び出されるインタフェースBを含んでもよい。これにより、物理的に1つのIOT機器11に複数種類の役割(すなわちタスク)を実行させることができる。
例えば、1つのIOT機器11が、複数種類の環境情報を検知するマルチセンサ機器の場合に、温度収集ステージ100を通知することで温度センサ22として機能させ、また、照度収集ステージ102を通知することで照度センサ24として機能させることができる。また例えば、1つのIOT機器11が、複数機器を集中制御するコントローラの場合に、エアコン制御ステージ108を通知することでエアコンコントローラ42として機能させ、また、照明制御ステージ110を通知することで照明コントローラ44として機能させることができる。
なお、1つのIOT機器11は、1つのワークフロー管理装置12で動作する複数のワークフロー、または、複数のワークフロー管理装置12で動作する複数のワークフローからステージの通知を受け付け、各ワークフローから通知されたステージに応じたタスクを実行してもよい。すなわち、1つのIOT機器11によるサービスを複数のワークフローが利用してもよい。
また、IOT機器11は、ワークフローとステージの組み合わせを単位としてタスクを識別してもよく、言い換えれば、ワークフローとステージの組み合わせと、実行すべきタスクとの対応関係を保持してもよい。この場合、ワークフロー管理装置12は、ワークフローの識別情報とステージの識別情報の組み合わせを、現在ステージ情報としてIOT機器11へ送信してもよい。IOT機器11は、呼び出し元のワークフローが異なれば、同じステージ名が通知されても異なるタスクを実行してもよく、逆に、呼び出し元のワークフローが異なれば、異なるステージ名が通知されても同じタスクを実行してもよい。
第4の変形例を説明する。上記前提技術では、ブローカを介したメッセージ技術により、ワークフロー管理装置12とIOT機器11間のデータフローと、複数のIOT機器11間のデータフローを実現したが、他の技術によりデータを送受してもよい。例えば、データの送信元装置と送信先装置間で公知のユニキャスト通信、マルチキャスト通信、P2P通信を実行してもよい。また、公知のデータ共有技術を使用してもよい。また、一方の装置がクラウドシステムへデータをアップロードし、他方の装置がクラウドシステムからデータをダウンロードすることで、情報通知およびデータ共有を実現してもよい。
(第1実施例の概要説明)
工場におけるロット管理の生産システムや建築現場における作業等、様々なプロジェクトは、複数のタスク(前提技術のステージに対応)の集合を、プロジェクトの開始から終了まで、半順序構造で順序づけたものとして把握される。実施例のプロジェクトは、製品・サービス・所産等の所定の成果物を創造するために実施される有期性の業務を意味する。また、前提技術のワークフローにしたがって所定の成果物を生産する活動とも言える。プロジェクトは、例えば、工場での一品生産を含み、工場でのロット単位あるいは製造番号単位で各タスクが実行される生産システムを含む。また、建築現場における内装工事のようなサービスプロセスを含み、躯体工事のような建設プロセスを含む。さらにまた、様々なサービスの提供プロセス等、多彩な活動を含む。
従来、プロジェクトにおけるタスクの遂行は人が中心となっており、また、タスクの遂行場所も限定されていた。しかし、IoT時代には、タスクの遂行は人だけでなく、様々なハードウェア、ソフトウェア、およびそれらの協働により遂行されうる。さらにタスクの遂行場所も限定されない。このようなネットワーク上のタスクを含むプロジェクトの遂行と管理に関して、本発明者は以下の2つが要請されると考えた。
(1)プロジェクトを構成する個々のタスクが自律分散的にその活動を行うことを、プロジェクト全体として適切に管理することが必要になる。この管理は、例えば、機械の管理に用いられるシーケンス制御よりも自律分散的なものである必要がある。また、タスクの遂行状態を管理するためには、その遂行状態を見える化し、把握可能にすることが必要となる。とりわけ、個々のタスクの開始と終了を人間が管理するプロジェクトでは、各タスクの遂行状態を見える化し、把握可能にすることがきわめて重要である。
(2)個々のタスクの遂行中に生じる様々な情報をタスクと紐づけて管理することは、モノやサービスの生産プロジェクトにおける品質管理や、プロセスイノベーション、さらに生産したモノやサービスに問題が生じた場合のトレーサブルなプロセス管理に必須となる。センシング技術の向上により、工場や様々なサービス生産の現場で多くのデータがリアルタイムに把握できるようになっても、検出された様々なデータを個々のタスクに紐づけることができなければ、検出されたデータに基づいて、製品や仕掛品を改善することは難しい。また、生産プロセスのイノベーションを生み出すことも難しい。しかし、現状は、個々のタスクの遂行中に生じる様々な情報を、遂行中のタスクと紐づけて管理することが十分になされているとは言えない。
ここでプロジェクトの事例を説明する。図9は、モノを製造するプロジェクトの一例を示す。同図のプロジェクトでは、1)鉄板の切削加工タスク、2)銅板の切削加工タスク、3)切削された銅板と鉄板のプレスタスク、4)プレスされた板の塗装タスクが遂行される。鉄板切削加工タスクと、銅板切削加工タスクは、半順序の関係であり、並行して実行可能である。ただし、この事例では、1台の切削加工装置で、鉄板切削加工タスクと銅板切削加工タスクを順次実行し、すなわち鉄板切削加工タスクと銅板切削加工タスクを同時実行することはない。
図10は、図9のプロジェクトにおけるスケジュールの一例を示す。同図では、図9のプロジェクトを識別子「P1」で表している。また、鉄板切削加工タスク(所要時間は2時間)を識別子「A」、銅板切削加工タスク(所要時間は1時間)を識別子「B」、プレスタスク(所要時間は1時間)を識別子「C」、塗装タスク(所要時間は1時間)を識別子「D」で表している。このスケジュールでは、最初の2時間で鉄板切削加工タスクが遂行され(P1:A)、以降1時間ごとに、銅板切削加工タスク(P1:B)、プレスタスク(P1:C)、塗装タスク(P1:D)の順に遂行されていき、開始から5時間後にプロジェクトが終了する。
ところで、現実のプロジェクトでは様々な理由で計画とのずれが生じる。例えば、工作機械(切削加工装置等)が故障等により停止することがある。また、機械や職人等の資源が他のプロジェクトへ優先的に割り当てられ、本プロジェクトのタスクの遂行が遅延することもある。そのため、タスクの開始と終了を把握可能にすることは生産管理においてきわめて重要である。
図11も、図9のプロジェクトにおけるスケジュールの一例を示す。同図では、図9のプロジェクトが3回実行され、3つの成果物が生産される場合のスケジュールを示している。図11(a)〜(c)で示すように、切削加工装置1台、プレス装置1台、塗装装置1台の場合に3つのプロジェクト(それぞれのIDはP1、P2、P3)を遂行するには資源のスケジューリングが必要となり、また、タスクに対する資源割当基準の種類によって異なるスケジュールが導かれる。
図11(a)は、「最長タスク優先スケジューリング」を適用したスケジュールを示している。図11(a)では、同じ資源を使用する複数のタスクがあれば所要時間が相対的に長いタスクに優先的に資源を割り当てている。図11(b)は、「最短タスク優先スケジューリング」を適用したスケジュールを示している。図11(b)では、同じ資源を使用する複数のタスクがあれば所要時間が相対的に短いタスクに優先的に資源を割り当てている。図11(c)は、「ワークフロー順かつ最長タスク優先スケジューリング」を適用したスケジュールを示している。図11(c)では、可及的に多くのプロジェクトでタスクを実行することを優先し、その上で、同じ資源を使用する複数のタスクがあれば所要時間が相対的に長いタスクに優先的に資源を割り当てている。
図12は、図11(a)のスケジュールによるタスクの遂行過程を模式的に示す。同図では、3つのプロジェクト(P1、P2、P3)それぞれについて、1時間を1Tick(時間単位)として、上から下へ時系列にタスクの遂行過程を示している。また、完了したタスクを網掛けで示している。このような単純な事例においても各タスクの進行状況は複雑であるが、実際には1プロジェクトあたり数百のタスクが存在することがあり、また、数十から数百のプロジェクトが並行して稼働することがある。したがって、モノやサービスを生産する実際のプロジェクトにおいて、タスクの遂行プロセスを可視化して管理することは容易でなかった。
本実施例では、所定の成果物(サービス等の無体物を含む)を生産するためのプロジェクトを構成する複数のタスクについて、個々のタスク遂行時に発生した様々な情報を管理する情報処理装置(以下「管理装置」とも呼ぶ。)を提案する。実施例の管理装置は、プロジェクト管理装置とも言え、タスク遂行情報管理装置とも言える。実施例の管理装置は、ネットワーク上の人、モノ、ソフトウェアが混在しつつタスクが遂行される環境下で、各タスクの区切りを明確にしてタスク自体の見える化を実現する。同時に、プロジェクトにおけるタスク進行と、個々のタスク内部で得られる様々な計測情報とをIoTを用いてタスク単位でパッキング(データ梱包)する。これにより、プロジェクトで生み出される部品・製品・サービスと各タスクとの紐付けを可能にする。
個々のタスクに紐付けられ管理されるべき情報は、当該タスクの担当者や担当機械のようなタスクで利用されるファブリケーション生産サービスに関する物的資本(生産機械)や人的資本(担当者や職工)に関する情報を含んでもよい。また、タスクで加工される物質や原料に関する情報、廃棄物や屑等の出力情報、サービスを提供される顧客の情報、生産管理のための機械の稼働情報、品質管理のための計測情報を含んでもよい。さらにまた、タスク遂行の現場でタスクに結びつけられる様々な情報を含んでもよく、例えば、タスクでの付加価値生産に関わる簿記データであり、実物簿記形式での生産の複式記述を含んでもよい。これらの情報を、個々のタスクにきちんと紐づけることで、後述するように様々な分析が可能となる。
今日、ビックデータ等、様々な形で計測されている多くのデータは、プロジェクト全体に紐づけられることはあっても、個々のタスクに紐づけられることはまれである。その背後には、タスクの数が数百から数万にも及ぶプロジェクトにおいて、各タスクに情報を紐付け管理する管理装置(タスク遂行情報管理装置)の不在がある。実施例で提案する管理装置は、この課題に答えることを1つの目的とする。
実施例の管理装置は、(1)ステージによるタスクの並列かつ順序づけられた実行の管理、(2)プロジェクトの遂行に関して得られる情報の、タスクを単位としたパッキング(データ梱包)とその管理、の2つの機能を実現する。このうち(1)の機能は、前提技術に記載のワークフロー管理装置により実現される。以下では(2)の機能を説明する。
複数のタスクで構成されるプロジェクトの遂行過程では、様々な情報がそれぞれのタスクに関連して得られ或は使用される。これらの情報は正しくそれに関連するタスクに紐づけられる必要がある。実施例では、個々のタスクに関連した情報は、それぞれのタスクの遂行に際して実空間上で得られ、得られた情報が管理装置において適切にデータ梱包される。これにより、プロジェクトを構成する各々のタスクの開始と終了をそれぞれのタスクの側で管理しつつ、管理装置側でもその情報を把握し、さらにタスク内部で計測されるタスクの遂行に関する諸データをタスク単位で収集し管理することができる。
既述したように、実施例では、プロジェクトの各タスクの情報として、タスク名情報、タスクの上で加工等の作業がなされるロット情報、タスクの開始情報、タスクの終了情報を一つのまとまったロットの作業・計測データのパッキング(以下「タスクデータ梱包」とも呼ぶ。)として認識するための枠組みを導入する。この枠組みを「タスクデータの梱包枠組」とも呼ぶ。
タスクデータの梱包枠組は、プロジェクトID(後述のプロジェクトインスタンスID)・タスクIDの組みにより識別される。プロジェクトIDは、ロット単位で生産活動が行われるプロジェクトであればロットIDでもよく、プロジェクトで最終的に生産される成果物のID(製造番号等)でもよく、プロジェクトが提供するサービスのIDでもよい。実施例では、同じプロジェクト(言い換えれば同じワークフロー)が実行される場合でも、タスクの遂行単位(タイミングやロット等)が異なれば、異なるプロジェクトID(後述のプロジェクトインスタンスID)を付与する。タスクIDは、プロジェクトを構成する複数のタスクのうち1つのタスクをユニークに識別可能なIDである。プロジェクトIDとタスクIDの組に対して、様々な計測データが紐づけられることにより、生産やサービスに関するデータをリアルタイムに見える化することができる。また後述するように、様々な計測データを、組織内および組織間での品質管理やカイゼンのための分析に用いることができる。
タスクデータの梱包枠組は、タスクの遂行が開始した日時と終了した日時に関する情報、当該タスクで必要とするファブリケーションサービスなどのサービスに用いられる物的資源(機械装置等)と人的資源(職工や担当者等)の情報を必須の情報として含む。これにより、タスクへの資源割当とタスクの遂行状態との見える化が可能となる。タスクの遂行に関して収集された諸情報は、タスクデータの梱包枠組によって、当該プロジェクトでのタスク遂行(例えば仕掛品の加工や何らかのサービスの提供)における担当者や、製品、仕掛品、サービスに関する諸情報を正しくタスクに紐づけて管理することが可能になる。
タスクデータの梱包枠組において各タスクに紐づけられ管理される情報は以下を含む。
1)タスクの開始と終了の時間情報。
2)タスク遂行のためのファブリケーションサービスなどのタスク機能の遂行サービスで用いられる機械装置(物的資源)や職工や担当者(人的資源)の割当情報。
3)機械装置を用いるタスクの場合、当該タスクでの加工に用いられた資源としての工作機械の作動状況。
4)タスクでの加工品の品質等に関する諸計測情報。
5)タスクでの生産に関する原価計算情報。
6)タスク遂行時の温度・湿度などの環境情報。
7)その他タスクの状態や状況を示す様々な情報。
なお、上記5)については、本発明者が提案した情報システムおよびエネルギー情報の記録装置(国際公開第2013/168419号)を参照。国際公開第2013/168419号の内容は参照により本明細書に組み込まれる。
以下、プロジェクトの雛形として、プロジェクトを構成する複数のタスクの順序関係を定めたデータを「プロジェクトタイプ」とも呼ぶ。また、特定のプロジェクトタイプにしたがってモノやサービスを生産するために、当該プロジェクトタイプに対して、物的資源(原料や部品、工作機械等)や人的資源を割り当てたものを「プロジェクトインスタンス」とも呼ぶ。プロジェクトタイプとプロジェクトインスタンスを区別しない場合、単に「プロジェクト」と呼ぶ。なお、後述のプロジェクトインスタンスIDは、1つのプロジェクトタイプに対して物的資源や人的資源を割り当てる生産計画システムが発行・採番してもよく、生産計画システムから製造現場および管理装置122へ通知されてもよい。
(第1実施例の詳細説明)
図13は、第1実施例のプロジェクト管理システムの構成を示す。プロジェクト管理システム120は、管理装置122、メッセージブローカ123、状態通知装置126で総称される状態通知装置126a、状態通知装置126b、状態通知装置126c、バーコードリーダ128で総称されるバーコードリーダ128a、バーコードリーダ128b、バーコードリーダ128cを備える。これらの装置は、LAN・WAN・インターネット等を含む通信網124を介して接続される。
管理装置122は、前提技術のワークフロー管理装置12に対応する情報処理装置である。管理装置122は、プロジェクトと、そのプロジェクトを構成する複数のタスクに関する情報を管理する情報処理装置である。管理装置122の詳細は後述する。
メッセージブローカ123は、メッセージングサービスを提供し、クライアント装置間でのメッセージの交換を仲介する情報処理装置である。具体的には、メッセージブローカ123は、所定のプロトコル(例えばMQTT(MQ Telemetry Transport)プロトコル)にしたがって、クライアント装置から送信(パブリッシュ)されたメッセージを受け付けて蓄積する。ここでメッセージにはトピック名が付与される。メッセージブローカ123は、トピック名を指定したサブスクライブ要求をクライアント装置から受け付ける。メッセージブローカ123は、サブスクライブ要求で指定されたトピック名が付与されたメッセージを要求元のクライアント装置へ送信する。
管理装置122と状態通知装置126は、メッセージブローカ123に対するクライアント装置として動作し、メッセージブローカ123を介してメッセージを送受する。例えば、状態通知装置126は、タスクに関するデータをメッセージブローカ123へパブリッシュし、管理装置122は、タスクに関するデータをメッセージブローカ123からサブスクライブする。
バーコードリーダ128は、タスクのID、タスクの対象となるロットのID、工作機械(言い替えればタスクへの投入資源)のIDを、タスクの遂行場所(例えば工場の製造ライン等)に予め設けられたバーコードから読み込む。これらのIDは、タスクごと、ロットごと、工作機械ごとに予め定められる。また、実施例のロットは、1つのプロジェクトの1つのタスクにおける作業単位であり、ロットのIDは、当該1つのタスクの成果物に付与されるロット番号であってもよい。
状態通知装置126は、タスク遂行時に生じた様々な情報であり、タスク遂行の状態、状況、環境等を示すデータ(以下「タスク状態データ」とも呼ぶ。)をメッセージブローカ123へ送信する。状態通知装置126は、バーコードリーダ128と接続される装置(PC等)を含む。この装置は、バーコードリーダ128で読み取られたデータ(例えばタスクID、ロットID、工作機械ID等)を含むメッセージをメッセージブローカ123へ送信する。
また、状態通知装置126は、タスクの開始時に押すべき開始ボタンと、タスクの終了時に押すべき終了ボタンとを備える開始・終了通知装置を含む。開始・終了通知装置は、開始ボタンが押下された場合に、タスクの開始を示すメッセージ(例えばタスクの開始日時を示すメッセージ)をメッセージブローカ123へ送信する。その一方、終了ボタンが押下された場合に、タスクの終了を示すメッセージ(例えばタスクの終了日時を示すメッセージ)をメッセージブローカ123へ送信する。
また、状態通知装置126は、タスクが遂行される環境(温度・湿度等)、機器(工作機械)の状態や、タスクの成果物の状態(塗装むら等)を検知する様々な計測機器(センサ等)を含む。計測機器は、検知した環境、機器、成果物の状態を示すメッセージをメッセージブローカ123へ送信する。また、状態通知装置126は、タスクの遂行に関与すべき作業者により操作されるPC、スマートフォン、タブレット端末を含む。例えばPCは、作業者から入力された操作に対応するメッセージや、作業者により入力されたデータを含むメッセージをメッセージブローカ123へ送信する。
状態通知装置126aとバーコードリーダ128bは、1つのプロジェクトの第1のタスクを遂行する側の装置(例えば図9の鉄板切削加工タスクおよび銅板切削加工タスクの遂行に関連する装置)である。状態通知装置126bとバーコードリーダ128bは、上記1つのプロジェクトの第2のタスクを遂行する側の装置(例えば図9のプレスタスクの遂行に関連する装置)である。状態通知装置126c、バーコードリーダ128cは、上記1つのプロジェクトの第3のタスクを遂行する側の装置(例えば図9の塗装タスクの遂行に関連する装置)である。なお、タスク・ロット・工作機械のIDをバーコードから読み取ることは一例であり、公知の方法により、タスク・ロット・工作機械のIDが状態通知装置126から管理装置122へ通知されてよい。
図14は、図13の管理装置122の機能構成を示すブロック図である。管理装置122は、制御部130、記憶部132、通信部134を備える。制御部130、記憶部132、通信部134は、前提技術におけるワークフロー管理装置12の制御部70、データ記憶部80、通信部60に対応する。図14には不図示だが、制御部130は、図6に記載した制御部70内の機能を含んでよく、記憶部132は、図6に記載したデータ記憶部80内の機能を含んでよい。すなわち、第1実施例の管理装置122は、前提技術のワークフロー管理装置12の機能を含んでもよい。
記憶部132は、タスク順序記憶部136とタスクデータ記憶部138を含む。タスク順序記憶部136は、前提技術のワークフロー情報保持部82に対応し、プロジェクトタイプを構成する複数のタスクの遂行順序を保持する。図15は、複数のタスクの遂行順序を定めたデータの例を示す。同図は、図9のプロジェクト事例におけるタスクの実行順序を示しており、言わばワークフローを示している。タスク順序記憶部136は、プロジェクトを構成する複数のタスク間の順序関係(全順序関係または半順序関係)を定めたデータを保持してもよい。なお、タスク順序記憶部136は、複数種類のプロジェクトタイプ(言い換えればワークフロー)を保持してもよい。例えば、製品Aの製造工程を定めた第1のプロジェクトタイプ(すなわち複数のタスクの遂行順序)と、製品Bの製造工程を定めた第2のプロジェクトタイプを保持してもよい。
図14に戻り、タスクデータ記憶部138は、既述した梱包枠組が適用されるデータであり、プロジェクトインスタンスが遂行される中で、そのプロジェクトインスタンスを構成する複数のタスクそれぞれの遂行に際して得られたデータをタスク単位にまとめたタスクデータを保持する。図16はタスクデータの例を示す。タスクデータは、タスクIDとプロジェクトインスタンスIDの組をキーとし、タスクの開始日時および終了日時、投入資源のデータ、工作機械の状態を示すデータ、センサ等による計測値や環境の状態を示すデータを含む。詳細は後述するが、1つのタスクデータの複数の情報項目は、1つのタスクの遂行中の異なる時点で生成され、1つのタスクデータに順次記録される。
図14に戻り、制御部130は、タスク遂行状況取得部140、タスクデータ更新部142、タスクデータ出力部144を含む。タスク遂行状況取得部140は、プロジェクトを構成する複数のタスクのうち1つのタスクの遂行に関連する外部機器から送信された、1つのタスクの開始を示すデータを取得するとともに、1つのタスクの終了を示すデータを取得する。
例えば、図9の鉄板切削加工タスクに関連する状態通知装置126(ここでは開始・終了通知装置とする)において開始ボタンが押された場合、状態通知装置126aは、鉄板切削加工タスクの開始日時を示すメッセージをメッセージブローカ123へパブリッシュする。タスク遂行状況取得部140は、上記開始日時を示すメッセージのトピック名を指定した購読要求を予めメッセージブローカ123に登録しておき、上記開始日時を示すメッセージをメッセージブローカ123からサブスクライブする。
また、タスク遂行状況取得部140は、プロジェクトを構成する複数のタスクのうち1つのタスクの遂行に関連する外部機器から送信された、1つのタスク遂行における状態や状況に関するタスク状態データを取得する。例えば、図9の鉄板切削加工タスクに関連する状態通知装置126(ここではセンサとする)は、自機で検出した周囲の温度を示すメッセージをタスク状態データとしてメッセージブローカ123へパブリッシュする。タスク遂行状況取得部140は、上記温度を示すメッセージのトピック名を指定した購読要求を予めメッセージブローカ123に登録しておき、タスク状態データをメッセージブローカ123からサブスクライブする。
タスクデータ更新部142は、1つのタスクの開始を示すデータが取得された場合、当該タスクに関するタスクデータに開始時刻を記録し、1つのタスクの終了を示すデータが取得された場合、当該タスクに関するタスクデータに終了時刻を記録する。また、タスクデータ更新部142は、1つのタスクの開始を示すデータが取得された後、当該タスクの終了を示すデータが取得される前に、当該タスクの遂行に関するタスク状態データが取得された場合、当該タスクに関するタスクデータにタスク状態データを記録する。
実施例では、タスクの開始を示すデータ、タスクの終了を示すデータ、タスク状態データ(以下、これらを総称して「通知データ」とも呼ぶ。)のいずれにも、プロジェクトインスタンスIDとタスクIDの組が設定される。既述したように、プロジェクトインスタンスIDは、タスクの対象を示す識別子である。例えばタスクの成果物の識別子であってもよく、製造番号であってもよく、ロット番号(ロットID)であってもよい。タスクデータ更新部142は、タスク単位(言い換えればタスクID単位)かつタスクの対象単位(言い換えればプロジェクトインスタンスID単位)にタスクデータを設定し、タスク単位かつタスクの対象単位のタスクデータに、開始時刻、終了時刻、タスク状態データを順次記録する。
具体的には、タスクデータ更新部142は、通知データがサブスクライブされた場合に、その通知データに設定されたプロジェクトインスタンスIDとタスクIDの組に基づいて、タスクデータ記憶部138に保持された複数のタスクデータの中から更新対象のタスクデータを識別する。通知データに設定されたプロジェクトインスタンスIDとタスクIDの組を有するタスクデータが存在しない場合、タスクデータ更新部142は、通知データに設定されたプロジェクトインスタンスIDとタスクIDの組をキーとする新たなタスクデータをタスクデータ記憶部138に格納する。
タスクデータ更新部142は、1つのタスクのIDが登録後(すなわちタスクデータの生成後)、当該タスクの開始を示すデータが取得される前に、プロジェクトインスタンスIDおよびタスクIDが一致する当該タスクのタスク状態データが取得された場合、当該タスクのタスクデータにタスク状態データを追加することを抑制してもよい。また、タスクデータ更新部142は、1つのタスクの終了を示すデータが取得された後、言い換えれば、1つのタスクの終了時刻を記録後に、プロジェクトインスタンスIDおよびタスクIDが一致する当該タスクのタスク状態データが取得された場合、当該タスクのタスクデータに、タスク状態データを追加することを抑制してもよい。これにより、タスク遂行に直接関係がないタスク状態データをタスクデータから除外し、後の分析の正確度を高めることができる。
タスクデータ出力部144は、タスクデータの閲覧要求を受け付けた場合に、タスクデータ記憶部138に格納された複数のタスクデータのうち閲覧要求で指定された条件に合致するタスクデータを抽出し、閲覧要求元の装置(不図示のPC等)へ送信する。タスクデータの閲覧要求では、タスクデータの抽出条件として、1つ以上のタスクID、1つ以上のプロジェクトインスタンスID(ロットID等)、工作機械のID(言い換えれば投入資源の識別子)のうち少なくとも1つが指定されてもよい。例えば、タスクデータの抽出条件として1つのタスクIDが指定された場合、タスクデータ出力部144は、指定されたタスクIDを含むタスクデータであり、プロジェクトインスタンスIDが異なる複数のタスクデータを抽出してもよい。
また、タスクデータ出力部144は、タスクデータの閲覧要求に応じて特定のタスクデータ(ここでは「第1タスクデータ」と呼ぶ。)を抽出した場合に、タスク順序記憶部136に保持されたプロジェクトタイプにおける複数のタスクの実行順序を参照して、第1タスクデータの前のタスクデータ(ここでは「第2タスクデータ」と呼ぶ。)、および/または、後のタスク(ここでは「第3タスクデータ」と呼ぶ。)をさらに抽出してもよい。タスクデータ出力部144は、第1タスクデータに加えて、第2タスクデータおよび/または第3タスクデータを閲覧要求元の装置へ送信してもよい。さらにタスクデータ出力部144は、第1タスクデータ、第2タスクデータ、第3タスクデータの順序関係(言い換えれば前後関係)を示す態様で、これらのタスクデータを並べた画面データを閲覧要求元の装置へ送信して表示させてもよい。
さらにまた、タスクデータ出力部144は、プロジェクトインスタンスの進捗状況を示すプロジェクトインスタンスリストの閲覧要求を外部装置から受け付けてもよい。タスクデータ出力部144は、タスクデータ記憶部138に記憶された複数のタスクデータを、プロジェクトインスタンスID単位に集計してもよい。そして、複数のプロジェクトインスタンスそれぞれの進捗状況をプロジェクトインスタンスリストの各レコードに設定して、プロジェクトインスタンスリストのデータを閲覧要求元の装置へ送信してもよい。ここで、プロジェクトインスタンスの進捗状況は、例えば、未開始のタスク(開始時刻が未記録のタスク)、遂行中のタスク(開始時刻が記録済、終了時刻が未記録のタスク)、終了済のタスク(終了時刻が記録済のタスク)を区別可能に示すものであってもよい。これにより、各プロジェクトインスタンスの進捗状況の見える化を実現できる。
この場合、管理装置122は、プロジェクトインスタンスIDの発行主体である生産計画システム等から通知されたプロジェクトインスタンスIDと、プロジェクトタイプとの対応関係を予め保持してもよい。また、プロジェクトインスタンスIDをキーとして生産計画システム等から対応するプロジェクトタイプの情報を取得してもよい。タスクデータ出力部144は、プロジェクトインスタンスIDに対応するプロジェクトタイプが定める複数のタスクの順序情報をタスク順序記憶部136から取得してもよい。そして、プロジェクトインスタンスを構成する複数のタスクをプロジェクトタイプが定める順序に整列させたデータであり、未開始のタスク、遂行中のタスク、終了済のタスクを異なる態様に設定したデータ(例えば図15のワークフローを示すGUIデータ)をプロジェクトインスタンスリストに設定してもよい。
以上の構成によるプロジェクト管理システム120の動作を説明する。ここでは、図9で示した事例に基づいて、物作りの工程を構成する複数のタスクの開始と終了を正しく識別し、各タスクに対して、各タスクで加工される生産ロットと、加工機械の稼働状況を紐付ける例を示す。
図17は、プロジェクトの遂行過程を模式的に示す。ここでは、鉄板切削加工タスクと銅板切削加工タスクを同一の切削加工装置(Cutting M1)が遂行し、鉄板切削加工タスク、銅板切削加工タスク、プレスタスク、塗装タスクの順にプロジェクトが進行する。本事例では、4つのタスクに亘る共通のプロジェクトインスタンスIDとしてロットID(lot P1)が使用される。なお、プロジェクトインスタンスIDは、実際のプロジェクト(工場や生産現場等)におけるIDの体系に応じて定められてよく、例えば、各タスクの成果物が異なるロット番号で管理される場合、ロット番号とは異なるプロジェクトインスタンスIDが使用されてもよい。
まず、鉄板切削加工タスクの作業者は、工作機械バーコード(Cutting M1)、ロットバーコード(lot P1)、タスクバーコード(Steel Cutting)をバーコードリーダ128aに読み取らせる。バーコードリーダ128aと接続された状態通知装置126aは、バーコードリーダ128aで読み取られた工作機械・ロット・タスクのIDを示すタスク識別メッセージをメッセージブローカ123へパブリッシュする。管理装置122は、メッセージブローカ123からタスク識別メッセージをサブスクライブし、工作機械・ロット・タスクのIDを含むタスクデータ150をタスクデータ記憶部138に新たに格納する。
鉄板切削加工タスクの作業者は、工作機械(Cutting M1)による鉄板切削加工を始める際に、状態通知装置126aの開始ボタン(S)を押下する。状態通知装置126aは、ロット・タスクのIDに加えて、鉄板切削加工タスクの開始時刻(典型的には現在時刻)を示すタスク開始メッセージをメッセージブローカ123へパブリッシュする。管理装置122は、メッセージブローカ123からタスク開始メッセージをサブスクライブし、ロット・タスクのIDにより識別されるタスクデータ150に鉄板切削加工タスクの開始時刻を記録する。
本事例の状態通知装置126aには、工作機械の状態や環境の状態を検知する1つ以上の計測機器(センサ等)が含まれる。状態通知装置126aとしての各計測機器は、工作機械(Cutting M1)の動作状態、切削むらの状態、温度・湿度等をタスク状態データとして検出する。状態通知装置126aとしての各計測機器は、ロット・タスクのIDに加えて、タスク状態データを含むタスク状態メッセージをメッセージブローカ123へ自律的にパブリッシュする。管理装置122は、メッセージブローカ123からタスク状態メッセージをサブスクライブし、ロット・タスクのIDにより識別されるタスクデータ150にタスク状態データ(タスクデータ150のM1稼働データ、切削むら計測データ、温度・湿度・環境情報)を記録する。
鉄板切削加工タスクの作業者は、工作機械(Cutting M1)による鉄板切削加工が終了すると、状態通知装置126aの終了ボタン(E)を押下する。状態通知装置126aは、ロット・タスクのIDに加えて、鉄板切削加工タスクの終了時刻(典型的には現在時刻)を示すタスク終了メッセージをメッセージブローカ123へパブリッシュする。管理装置122は、メッセージブローカ123からタスク終了メッセージをサブスクライブし、ロット・タスクのIDにより識別されるタスクデータ150に鉄板切削加工タスクの終了時刻を記録する。
続いて、銅板切削加工タスクの作業者は、工作機械バーコード(Cutting M1)、ロットバーコード(lot P1)、タスクバーコード(Copper Cutting)をバーコードリーダ128aに読み取らせる。バーコードリーダ128aと接続された状態通知装置126aは、バーコードリーダ128aで読み取られた工作機械・ロット・タスクのIDを示すタスク識別メッセージをメッセージブローカ123へパブリッシュする。管理装置122は、メッセージブローカ123からタスク識別メッセージをサブスクライブし、工作機械・ロット・タスクのIDを含むタスクデータ152をタスクデータ記憶部138に新たに格納する。
銅板切削加工タスクの作業者は、工作機械(Cutting M1)による銅板切削加工を始める際に、状態通知装置126aの開始ボタン(S)を押下する。状態通知装置126aは、ロット・タスクのIDに加えて、銅板切削加工タスクの開始時刻を示すタスク開始メッセージをメッセージブローカ123へパブリッシュする。管理装置122は、メッセージブローカ123からタスク開始メッセージをサブスクライブし、ロット・タスクのIDにより識別されるタスクデータ152に銅板切削加工タスクの開始時刻を記録する。
鉄板切削加工タスクの遂行時と同様に、状態通知装置126aとしての1つ以上の計測機器は、工作機械(Cutting M1)の動作状態、切削むらの状態、温度・湿度等をタスク状態データとして検出する。状態通知装置126aとしての各計測機器は、ロット・タスクのIDに加えて、タスク状態データを含むタスク状態メッセージをメッセージブローカ123へ自律的にパブリッシュする。管理装置122は、メッセージブローカ123からタスク状態メッセージをサブスクライブし、ロット・タスクのIDにより識別されるタスクデータ152にタスク状態データ(タスクデータ152のM1稼働データ、切削むら計測データ、温度・湿度・環境情報)を記録する。
銅板切削加工タスクの作業者は、工作機械(Cutting M1)による銅板切削加工が終了すると、状態通知装置126aの終了ボタン(E)を押下する。状態通知装置126aは、ロット・タスクのIDに加えて、銅板切削加工タスクの終了時刻を示すタスク終了メッセージをメッセージブローカ123へパブリッシュする。管理装置122は、メッセージブローカ123からタスク終了メッセージをサブスクライブし、ロット・タスクのIDにより識別されるタスクデータ152に銅板切削加工タスクの終了時刻を記録する。
続いて、プレスタスクの作業者は、工作機械バーコード(Press M)、ロットバーコード(lot P1)、タスクバーコード(Pressing)をバーコードリーダ128bに読み取らせる。バーコードリーダ128bと接続された状態通知装置126bは、バーコードリーダ128bで読み取られた工作機械・ロット・タスクのIDを示すタスク識別メッセージをメッセージブローカ123へパブリッシュする。管理装置122は、メッセージブローカ123からタスク識別メッセージをサブスクライブし、工作機械・ロット・タスクのIDを含むタスクデータ154をタスクデータ記憶部138に新たに格納する。
プレスタスクの作業者は、工作機械(Press M)によるプレス加工を始める際に、状態通知装置126bの開始ボタン(S)を押下する。状態通知装置126bは、ロット・タスクのIDに加えて、プレスタスクの開始時刻を示すタスク開始メッセージをメッセージブローカ123へパブリッシュする。管理装置122は、メッセージブローカ123からタスク開始メッセージをサブスクライブし、ロット・タスクのIDにより識別されるタスクデータ154にプレスタスクの開始時刻を記録する。
本事例の状態通知装置126bには、工作機械の状態や環境の状態を検知する1つ以上の計測機器(センサ等)が含まれる。状態通知装置126bとしての各計測機器は、工作機械(Press M)の動作状態、プレスむらの状態、温度・湿度等をタスク状態データとして検出する。状態通知装置126bとしての各計測機器は、ロット・タスクのIDに加えて、タスク状態データを含むタスク状態メッセージをメッセージブローカ123へ自律的にパブリッシュする。管理装置122は、メッセージブローカ123からタスク状態メッセージをサブスクライブし、ロット・タスクのIDにより識別されるタスクデータ154にタスク状態データ(タスクデータ154のプレス機械稼働データ、プレスむら計測データ、温度・湿度・環境情報)を記録する。
プレスタスクの作業者は、工作機械(Press M)によるプレス加工が終了すると、状態通知装置126bの終了ボタン(E)を押下する。状態通知装置126bは、ロット・タスクのIDに加えて、プレスタスクの終了時刻を示すタスク終了メッセージをメッセージブローカ123へパブリッシュする。管理装置122は、メッセージブローカ123からタスク終了メッセージをサブスクライブし、ロット・タスクのIDにより識別されるタスクデータ154にプレスタスクの終了時刻を記録する。
続いて、塗装タスクの作業者は、工作機械バーコード(Painter A)、ロットバーコード(lot P1)、タスクバーコード(Painting)をバーコードリーダ128cに読み取らせる。バーコードリーダ128cと接続された状態通知装置126cは、バーコードリーダ128cで読み取られた工作機械・ロット・タスクのIDを示すタスク識別メッセージをメッセージブローカ123へパブリッシュする。管理装置122は、メッセージブローカ123からタスク識別メッセージをサブスクライブし、工作機械・ロット・タスクのIDを含むタスクデータ156をタスクデータ記憶部138に新たに格納する。
塗装タスクの作業者は、工作機械(Painter A)による塗装処理を始める際に、状態通知装置126cの開始ボタン(S)を押下する。状態通知装置126cは、ロット・タスクのIDに加えて、塗装タスクの開始時刻を示すタスク開始メッセージをメッセージブローカ123へパブリッシュする。管理装置122は、メッセージブローカ123からタスク開始メッセージをサブスクライブし、ロット・タスクのIDにより識別されるタスクデータ156に塗装タスクの開始時刻を記録する。
本事例の状態通知装置126cには、工作機械の状態や環境の状態を検知する1つ以上の計測機器(センサ等)が含まれる。状態通知装置126cとしての各計測機器は、工作機械(Painter A)の動作状態、ペイントむらの状態、温度・湿度等をタスク状態データとして検出する。状態通知装置126cとしての各計測機器は、ロット・タスクのIDに加えて、タスク状態データを含むタスク状態メッセージをメッセージブローカ123へ自律的にパブリッシュする。管理装置122は、メッセージブローカ123からタスク状態メッセージをサブスクライブし、ロット・タスクのIDにより識別されるタスクデータ156にタスク状態データ(タスクデータ156の塗装むら計測データ、温度・湿度・環境情報)を記録する。
塗装タスクの作業者は、工作機械(Painter A)による塗装処理が終了すると、状態通知装置126cの終了ボタン(E)を押下する。状態通知装置126cは、ロット・タスクのIDに加えて、塗装タスクの終了時刻を示すタスク終了メッセージをメッセージブローカ123へパブリッシュする。管理装置122は、メッセージブローカ123からタスク終了メッセージをサブスクライブし、ロット・タスクのIDにより識別されるタスクデータ156に塗装タスクの終了時刻を記録する。
図17の事例では、タスクの開始と終了を人が状態通知装置126aへ入力したが、タスクの開始と終了が自動で検出されてもよい。具体的には、工作機械がタスクの処理を開始する際に(例えばCutting M1が切削加工処理の開始指示を受け付けた際に)、当該工作機械もしくは工作機械に接続された状態通知装置126aが、タスク開始メッセージを自律的にメッセージブローカ123へパブリッシュしてもよい。同様に、工作機械がタスクの処理を完了した際に、当該工作機械もしくは工作機械に接続された状態通知装置126が、タスク終了メッセージを自律的にメッセージブローカ123へパブリッシュしてもよい。
タスクデータ150、タスクデータ152、タスクデータ154、タスクデータ156に示すように、図17の事例では、P1というプロジェクトインスタンスID(例えばロットID)と、「Steel Cutting」等のタスクIDの組がタスクデータの梱包枠組となり、この梱包枠組に対して、生産機械や職工等の物的・人的資源の情報、タスクの作業開始時刻、作業終了時刻等、様々なデータが紐付けて記録される。
各タスクデータにおいて必須かつ基本となる項目は、タスクの進行に必要な資源情報(例えば工作機械の識別子)と、タスクの開始日時と終了日時の情報である。これらの情報は、計画時点で想定されているとしても、実際には様々な要因でずれが生じる。これらの情報を記録することで、ロット毎(もしくはプロジェクトインスタンス毎)のタスクの進行状況や資源の割り当て情報を正確に把握することができる。
また、図10にも関連するが、図17の事例では、鉄板切削加工タスクが、2時間で完了予定のところ2時間30分かかっている。実施例の管理装置122では、ロット単位(プロジェクトインスタンス単位)かつタスク単位でタスク遂行情報をまとめて蓄積するため、例えば図17で示すように、計画装置(不図示)で作成された計画データとタスクデータとを比較することも容易になる。
管理装置122においてタスク毎にパックしたタスクデータはさらに、(1)複数のプロジェクトインスタンスにおけるタスク単位のデータ解析、(2)複数のプロジェクトインスタンスにおける資源単位でのデータ解析、(3)プロジェクトインスタンス単位のサプライチェーンにおけるデータ利用、を支援することができる。以下具体的に説明する。
(1)複数のプロジェクトインスタンスにおけるタスク単位のデータ解析:
同じプロジェクトタイプに基づくプロジェクトインスタンスで記録されたタスクデータであり、例えば、同じモノまたはサービスの生産に関するタスクデータをプロジェクトインスタンスを横断して収集することで、モノやサービスの改善につながる知見を様々に収集できる。例えば図17の事例では、タスクID「Painting」をキーとしてタスクデータを抽出することにより、プロジェクトインスタンス横断的に塗装工程の色むらを解析できる。また例えば、100個のプロジェクトインスタンスの塗装タスクを比較し、色むらの大きなタスクを特定し、その原因が、温度であること或は特定の塗装工の仕事であること等の原因分析が可能になる。同様に切削工程のむらや、プレス工程のむら等についても、複数のプロジェクトインスタンスを横断して他の測定データとの比較を行うことで原因の解析が可能となる。
(2)複数のプロジェクトインスタンスにおける資源単位でのデータ解析:
切削加工装置やプレス装置等の機械装置の資源や、塗装工等の人的資源に関して、それらに関連したデータを横断的に解析することもまた、プロセスイノベーションやタスクの改善の為に重要である。例えば、着目した切削加工装置、プレス装置、あるいは塗装工に関する諸データをプロジェクトインスタンス横断的またはタスク横断的に分析し、他の装置や他の塗装工の仕事(品質等)と比較することで、資源固有の問題や改善点を見いだすことが可能となる。
(3)プロジェクトインスタンス単位のサプライチェーンにおけるデータ利用:
製造工程やサービス工程に関する様々なデータはサプライチェーンの中で管理され、製品やサービスに問題が発見された際には、複数の組織に跨がるサプライチェーンのデータを遡って(トレースバックして)問題がどこで生じたかを見いだすこと、言い換えれば、トレーサビリティを確保することが今後ますます重要となる。
ところで、サプライチェーンは、あるプロジェクトで製造された半製品(部品)が、次のステップの製造過程において投入原料として用いられるという形で接続される。このサプライチェーンを、最終製品を起点としてトレースバックしていき、最終製品の部品や、部品の部品、さらには部品の原料、部品の製造工程のデータを知る事は、最終製品に異常が生じた時の品質改善や原因の特定に必須となる。また、そのために、部品製造のプロジェクト情報を梱包したもの(すなわちタスクデータ)を単に保存するだけでなく、それが改竄されていない事の保証もまた必要となる。
このような改竄がなされないことを保証するシステムとして従来はトップダウンの巨大な管理システムが構築されることが多かった。しかし、実施例の管理装置122で生成されるタスクデータを、改竄不可能にし、かつ、製品からトレースバックすることのできるトレーサビリティのあるデータとして組織の壁を越え利活用するためには、近年着目されているブロックチェーン技術が好適である。なお、改竄不可能とは、仮にタスクデータが改竄された場合にその事実を検出可能という意味である。
具体的には、各タスクについて生成されたタスクデータに対して次のステップにてブロックチェーンを生成してもよい。
ステップ1)当該の企業で生成したプロジェクトインスタンス単位の梱包データを圧縮暗号化する。プロジェクトインスタンス単位の梱包データ(以下「プロジェクトデータ」とも呼ぶ。)は、タスクデータ記憶部138に記憶された複数のタスクデータの中から特定のプロジェクト(例えば当該企業が他企業へ出荷する部品のうち特定の1個の製造プロジェクトインスタンス)に紐付く複数のタスクデータをプロジェクトインスタンスIDまたはロットIDをキーとして抽出したものであってもよい。なお、暗号化は例えば公開鍵暗号を用いれば多量のプロジェクトに対しても簡単に暗号圧縮ができる。
ステップ2)暗号圧縮化したプロジェクトデータのハッシュ値を計算する。
ステップ3)サプライチェーンの次のステップの他企業(言い換えれば部品出荷先の他企業)に対して、部品とともに、2)で算出した当該部品のハッシュ値を渡す。すなわち、出荷対象の部品毎に、部品固有のプロジェクトデータを圧縮暗号化し、ハッシュ値を求め、そのハッシュ値を部品とともにサプライチェーンの次のステップに渡す。
ステップ4)サプライチェーンの次のステップの企業は、当該企業におけるプロジェクトインスタンス単位の梱包データ(すなわちプロジェクトデータ)を圧縮暗号化する際に、3)で渡された部品のハッシュ値を一緒に梱包して圧縮暗号化する。これにより、サプライチェーンの前工程で製造された部品のハッシュ値が一緒に保存される。以下、サプライチェーンが終了するまで、2)〜4)を繰り返す。これにより、サプライチェーンの前工程で製造された部品のハッシュ値が、後工程で製造された部品のハッシュ値に組み込まれる。
仮にサプライチェーンの最終製品に異常があり、サプライチェーンを遡って部品等のデータ(例えばタスクデータ等)を検証する必要が生じた場合、当該部品の圧縮梱包データ(すなわち圧縮暗号化されたプロジェクトデータ)の提供を受け、そのハッシュ値を計算し、それが過去受け渡されたハッシュ値と一致することを検証することにより、プロジェクトデータが改竄されていないことを確認できる。その上で、契約に基づいて、暗号と圧縮を解除することで改竄されていない事が保証されたデータ(すなわち平文のプロジェクトデータ)を入手できる。このように、実施例のデータ梱包技術とブロックチェーン技術とを組み合わせることで、サプライチェーンに関わる複数の企業が各々分散してデータを保管しつつも、サプライチェーン全域に渡りトレーサビリティを確保することができる。
既述したように、管理装置122は、プロジェクトインスタンスIDの発行主体である生産計画システム等から通知されたプロジェクトインスタンスIDと、プロジェクトタイプとの対応関係を予め保持してもよい。また、プロジェクトインスタンスIDをキーとして生産計画システム等から対応するプロジェクトタイプの情報を取得してもよい。これにより、プロジェクトインスタンスの成果物である製品に不具合があった場合に、当該プロジェクトインスタンスのIDに紐付けられたタスクデータを確認することに加えて、当該プロジェクトインスタンスと同じプロジェクトタイプに基づく他のプロジェクトインスタンスのタスクデータを確認することができる。例えば、同じプロジェクトタイプに基づく複数のプロジェクトインスタンスに亘って、特定のタスクIDのデータが工作機械の異常を示す場合、その特定のタスク(工作機械)が製品不具合の原因であると推定できる。
なお、管理装置122のタスクデータ出力部144は、特定のプロジェクトインスタンスIDを指定する検索要求を受け付けると、そのプロジェクトインスタンスIDに対応付けられたタスクデータを横軸方向に並べ、当該プロジェクトインスタンスと同じプロジェクトタイプに基づく他のプロジェクトインスタンスを縦軸方向に並べた2次元の表情報を検索結果として要求元の装置へ送信してもよい。この表情報では、同じプロジェクトタイプに基づく複数のプロジェクトインスタンスにおける同一タスクの情報が縦一列に並び、プロジェクトインスタンス横断的な比較や確認を支援できる。
以上、本発明を第1実施例をもとに説明した。この実施例は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。以下変形例を挙げる。
第1変形例を説明する。バーコードリーダ128は、タスクの遂行(部品製造等)において投入される資源(例えば原料、部品等)に付与されたID(ロットID等)を所定のバーコードから読み取ってもよく、状態通知装置126は、投入資源のIDを管理装置122へ通知してもよい。管理装置122は、タスクにおける投入資源のIDを当該タスクのタスクデータに記録してもよい。或るタスクのタスクデータに記録される投入資源のIDは、典型的には、より以前に実行されたタスクであり、すなわち投入資源の製造タスクにおけるプロジェクトID(プロジェクトインスタンスIDとも言える)に相当する。この態様によると、プロジェクトインスタンスの成果物である製品等で異常が発生した場合に、プロジェクトインスタンスのタスクフローを遡って各タスクのタスクデータを確認することが容易になり、トレーサビリティを確保しやすくなる。
第2変形例を説明する。上記実施例では、状態通知装置126がメッセージブローカ123へパブリッシュするメッセージ(通知データ)に、プロジェクトインスタンスIDとタスクIDが設定されることとした。変形例として、温度・湿度等の環境状態を示すメッセージでは、タスクIDが指定される一方、プロジェクトインスタンスIDが未指定であってもよい。ここでタスクIDは、状態通知装置126(工作機械やセンサ等を含む)の種類、設置場所等に基づいて予め決定されておけばよい。
管理装置122のタスクデータ更新部142は、プロジェクトインスタンスIDが未指定のメッセージが取得された場合、そのメッセージが示すタスクIDが設定されたタスクデータをまず抽出し、その中から開始日時が設定済、かつ、終了日時が未設定の1つ以上のタスクデータを更新対象として抽出してもよい。タスクデータ更新部142は、更新対象の1つ以上のタスクデータのそれぞれに、メッセージが示す環境状態データを設定してもよい。この態様によると、センサが状態通知装置126として機能する場合に、当該センサはプロジェクトインスタンスIDを取得する必要がなく、当該センサ自体が直接ネットワークに接続してメッセージをパブリッシュすることの実現を容易なものにできる。
第3変形例を説明する。上記実施例では言及していないが、前提技術のIOT機器制御システム10と同様に、管理装置122は、タスクの開始を指示する開始指示メッセージをメッセージブローカ123へパブリッシュし、タスク遂行側機器(例えば作業者のPCやタブレット端末、工作機械等)は、開始指示メッセージをメッセージブローカ123からサブスクライブする構成であってもよい。この場合、管理装置122は、タスク遂行側機器(状態通知装置126)からタスク終了通知を受け付けた場合、タスク順序記憶部136を参照して次に実行すべきタスクを識別し、識別したタスクの開始を指示する開始指示メッセージをパブリッシュしてもよい。また管理装置122は、タスク開始メッセージの送信時に、開始対象タスクのタスクデータにおける開始日時を設定してもよい。
(第2実施例の概要説明)
第2実施例の概要を説明する。上記第1実施例のタスクデータにおける特に重要なデータとして、工作機械の動作状態を示すデータ(以下「機器動作状態データ」とも呼ぶ。)がある。例えば図17の事例では、鉄板切削加工タスクが、2時間で完了予定のところ2時間30分かかっているが、この原因を特定するために、切削加工装置「Cutting M1」の機器動作状態データが有用である。
一般的な工作機械では、工作機械の内部状態がパトランプの点灯状態に反映される。そこで第2実施例では、工作機械の動作状況を示すために普遍的に用いられているパトランプの点灯状態を示すリレーの電圧データをフォトカプラで取得し、それをメッセージブローカ123へパブリッシュすることで、任意の場所に設置されたシステム(例えば管理装置122)において工作機械の動作状況を検出する技術を提案する。ただし第2実施例の技術の適用範囲は、工作機械におけるパトランプ情報の取得に制限されず、内部状態をリレーのチャンネルにアナログ出力可能な機械であれば広く適用可能である。
このようなリレー接点の利用は、もともとアナログな外部表示器(パトランプ等)などを点灯させることで機械装置の内部状態を表示することを想定したものである。第2実施例では、シーケンサーのプログラムやフロントパネルでの設定により柔軟に機械装置の内部状態をリレー設定情報として表現し、管理装置122等がIoTデータとしてリレー設定情報を取得し、機械装置の内部状態を判別(記録)することが可能になる。
なお、第2実施例の技術は、本来のリレー接点の利用の延長であり、外部装置を直接駆動する代わりに、フォトカプラを経由してその信号を取得するものであるため、機械装置メーカが定める規約(メンテナンス契約等)に抵触しないというメリットがある。第2実施例で提案する機械装置の内部状態の取得方法は、工作機械のみならず、様々な種類のタスク遂行機器(制御盤等)に対して適用可能である。
(第2実施例の詳細説明)
図18は、第2実施例のタスク遂行側機器の構成をブロック図である。同図の構成は、図13のタスク遂行側機器に適用可能である。タスク遂行側機器は、工作機械160と状態通知装置126を備える。工作機械160は、図17の事例では切削加工装置、プレス装置、塗装装置が該当する。
工作機械160は、制御部162、リレー164、パトランプ166を含む。制御部162は、工作機械160の動作全般を制御し、タスク遂行のための処理(例えば鉄板および銅板の切削加工処理)の動作を制御する。また制御部162は、工作機械160の動作状態(異常の有無等)を管理する。パトランプ166は、工作機械160の動作状態を外部の作業者等へ提示する表示器であり、警告灯とも言える。制御部162は、工作機械160の動作状態に応じて、パトランプ166の表示態様(例えば点灯の有無、点灯または点滅の種別、色等)を制御するための制御信号を出力する。
リレー164は、制御部162から入力される工作機械160の動作状態に基づく信号に応じて開閉する。実施例では、リレー164に、工作機械160の動作状態に応じた表示態様となるようにパトランプ166を制御するための制御信号が入力される。リレー164は、その制御信号にしたがってパトランプ166の表示態様を切り替える。リレー164は、開閉状態を切り替えることにより、パトランプ166へ入力される電圧を変化させる。これにより、上記制御信号で指定された態様にてパトランプ166が点灯または消灯する。
状態通知装置126は、フォトカプラ170、メッセージ生成部172、メッセージ出力部174を備える。フォトカプラ170は、工作機械160のリレー164と接続され、リレー164の開閉状態を示す状態信号を出力する。状態信号は、工作機械160において制御部162からリレー164へ印加された電圧または電流の状態を示す信号と言え、工作機械160においてリレー164からパトランプ166へ印加された電圧または電流の状態を示す信号とも言える。
メッセージ生成部172は、フォトカプラ170から出力された状態信号に基づいて、工作機械160の状態を示すタスク状態データを生成し、タスク状態データ、タスクID、プロジェクトインスタンスIDを含むメッセージを生成する。例えば、メッセージ生成部172は、状態信号の複数種類の態様(内容)と、管理装置122への複数種類の通知内容との対応関係を予め保持し、実際の状態信号の態様に対応する通知内容をタスク状態データとして設定したメッセージを生成してもよい。また、メッセージ生成部172は、状態信号の複数種類の態様と、パトランプ166の複数種類の表示態様との対応関係を保持してもよい。メッセージ生成部172は、実際の状態信号の態様に対応するパトランプ166の表示態様を識別し、識別したパトランプ166の表示態様を示すメッセージを生成してもよい。
さらにまた、メッセージ生成部172は、状態信号の複数種類の態様と、工作機械160の複数種類の動作状態との対応関係を保持してもよい。メッセージ生成部172は、実際の状態信号の態様に対応する工作機械160の動作状態を識別し、識別した動作状態を示すメッセージを生成してもよい。メッセージ生成部172は、工作機械160の動作状態を検出し、または、パトランプ166の表示態様を検出する状態検出部として機能すると言える。
メッセージ出力部174は、メッセージ生成部172により生成されたメッセージをメッセージブローカ123へパブリッシュする。当該メッセージをサブスクライブした管理装置122は、メッセージ内の接点データを図16の機械稼働データとして、メッセージで指定されたタスクデータに記録する。なお、図16の機械稼働データは、図17における「M1稼働データ」「プレス機械稼働データ」等が該当する。なお、管理装置122は、接点データの種類と、パトランプ166の表示態様との対応関係、または、接点データの種類と、工作機械160の動作状態との対応関係を保持してもよい。管理装置122は、接点データに対応するパトランプ166の表示態様を示すデータ、または、接点データに対応する工作機械160の動作状態を示すデータをタスクデータに記録してもよい。
第2実施例の状態通知装置126は、工作機械160のリレー164内部の接点の状態を、フォトカプラ170を用いて電気的に絶縁しつつ取得する。これにより、リレー164内部の接点の状態を取得する際の安全性を高め、工作機械160のメーカが定める規約(安全基準等)からの逸脱を回避できる。
以上、本発明を第2実施例をもとに説明した。この実施例は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
変形例として、工作機械160は、リレー164に代えて他の種類のスイッチを使用してもよく、例えば半導体スイッチ(MOSFET、IGBT等)を使用してもよい。この場合、状態通知装置126のフォトカプラ170は、半導体スイッチのオン/オフ状態に応じた状態信号を出力してもよい。また、状態通知装置126は、フォトカプラ170に代えて他の種類の絶縁素子を使用してもよい。
上述した実施例および変形例の任意の組み合わせもまた本発明の実施の形態として有用である。組み合わせによって生じる新たな実施の形態は、組み合わされる実施例および変形例それぞれの効果をあわせもつ。請求項に記載の各構成要件が果たすべき機能は、実施例および変形例において示された各構成要素の単体もしくはそれらの連携によって実現されることも当業者には理解されるところである。