(57)【要約】【課題】シミュレーションモデルの構築を容易にする。【解決手段】忠実にモデル化した仮想ワークに対して与えられた処理工程のうち、密接に関連して一続きとして行なわれる複数の処理のそれぞれに対応した、忠実にモデル化した仮想リソースによる操作（例えば、タスクａ１、タスクｃ１、ｃ２、タスクａ２、ａ３）を、自動的、連続的に実行するモジュール６２にする。そして、モジュール６２、６４、６６を組み合わせてシミュレーションモデルを作成する。【選択図】　　図３
2004005431.tif 000002
【特許請求の範囲】
【請求項１】
忠実にモデル化した仮想ワークに対して操作を行なう忠実にモデル化した複数の仮想リソースと、これら各仮想リソースのそれぞれが前記仮想ワークに対してなす複数の操作とを記憶させ、前記仮想ワークについて与えられた処理工程における各処理を、記憶させた前記仮想リソースと前記操作とから選択した仮想リソースと操作とにより行なわせ、前記処理工程を実行するシミュレーションモデルの作成方法であって、
前記仮想ワークに対して与えられた処理工程のうち、密接に関連して一続きとして行なわれる複数の処理のそれぞれに対応した前記操作を、自動的、連続的に実行するモジュールにすることを特徴とするシミュレーションモデルの作成方法。
【請求項２】
請求項１に記載のシミュレーションモデルの作成方法において、
前記モジュールの内容および複数のモジュール間の関係並びに目的をもった個々のロジックをスプレッドシートにして記載することを特徴とするシミュレーションモデルの作成方法。
【請求項３】
忠実にモデル化した仮想ワークと忠実にモデル化した仮想リソースとを画面に表示するとともに、前記仮想ワークについて与えられた処理工程と前記仮想リソースによる前記仮想ワークに対する操作の状態とに基づいて、複数の仮想リソースと、各仮想リソースが前記仮想ワークに対してなす複数の操作とから、前記仮想ワークに対して次になす操作と仮想リソースとを選択し、選択した仮想リソースが前記仮想ワークに対してなす選択された操作の状態を画面に表示することを特徴とするシミュレーション方法。
【請求項４】
モデル化した仮想ワークに対して与えられた処理工程のうち、密接に関連して一続きとして行なわれる複数の処理のそれぞれに対応した操作を、自動的、連続的に実行するモジュールとし、
このモジュールの内容および複数のモジュール間の関係並びに目的をもった個々のロジックをスプレッドシートにし、
このスプレッドシートとして与えられた仕様に基づいて、前記仮想ワークとモデル化した仮想リソースとを画面に表示するとともに、
前記仮想ワークについて与えられた処理工程と前記仮想リソースによる前記仮想ワークに対する操作の状態とに基づいて、複数の仮想リソースと、各仮想リソースが前記仮想ワークに対してなす複数の操作とから、前記仮想ワークに対して次になす操作と仮想リソースとを選択し、
選択した仮想リソースが前記仮想ワークに対してなす選択された操作の状態を画面に表示し、
さらに実現手段に対する具体的イメージのない概念検討段階の前記スプレッドシートより実行したシミュレーションに基づいて前記スプレッドシートを更新し、
新たなスプレッドシートに基づくシミュレーションとスプレッドシートの更新とを繰り返すことにより、詳細で忠実にモデル化したシミュレーションを実行する、
ことを特徴とするシミュレーション方法。
【請求項５】
請求項４に記載のシミュレーション方法において、
前記実現手段の概略仕様段階のシミュレーションモデルと、より詳細で忠実にモデル化した段階のシミュレーションモデルとを相互に補いつつシミュレーションモデルを作成することを特徴とするシミュレーション方法。
【請求項６】
忠実にモデル化した仮想ワークに対する操作を行なう忠実にモデル化した複数の仮想リソースと、これら各仮想リソースのそれぞれが前記仮想ワークに対してなす複数の操作とを記憶したタスク記憶部と、
前記仮想リソースが前記仮想ワークに対してなす操作の状態を検知する状態検出手段と、
前記仮想ワークについて予め与えられた処理工程と前記状態検出手段の出力信号とに基づいて、前記処理工程に従って前記タスク記憶手段から前記仮想リソースと前記操作とを選択し、選択した仮想リソースにより前記仮想ワークに対して選択した操作を行なわせる制御手段と、
前記仮想ワークと前記仮想リソースとを表示するとともに、前記仮想リソースが前記仮想ワークに対してなす前記操作の状態を表示する表示手段と、
を有することを特徴とするシミュレーション装置。
【請求項７】
モデル化した仮想ワークに対する操作を行なうモデル化した複数の仮想リソースと、これら各仮想リソースのそれぞれが前記仮想ワークに対してなす複数の操作とを記憶したタスク記憶部と、
前記仮想リソースが前記仮想ワークに対してなす操作の状態を検知する状態検出手段と、
前記仮想ワークについて予め与えられた処理工程と前記状態検出手段の出力信号とに基づいて、前記処理工程に従って前記タスク記憶手段から前記仮想リソースと前記操作とを選択し、選択した仮想リソースにより前記仮想ワークに対して選択した操作を行なわせる制御手段と、
前記仮想ワークと前記仮想リソースとを表示するとともに、前記仮想リソースが前記仮想ワークに対してなす前記操作の状態を表示する表示手段とを有し、
前記制御手段は、前記仮想ワークに対して与えられた処理工程のうち、密接に関連して一続きとして行なわれる複数の処理のそれぞれに対応した前記操作を、自動的、連続的に実行するモジュールとされ、このモジュールの内容および複数のモジュール間の関係並びに目的をもった個々のロジックをスプレッドシートとして与えられた仕様に基づいて、前記タスク記憶部に記憶させた仮想ワーク、仮想リソースと前記状態検知手段とを用いてシミュレーションを自動的に作成する、
ことを特徴とするシミュレーション装置。
【請求項８】
ワークに対して行なわれる処理工程において、密接に関連して一続きとして行なわれる複数の処理のそれぞれに対応した各操作をリソースにより自動的、連続的に実行させるモジュールとし、
このモジュールおよび複数のモジュール間の関係並びに目的をもった個々のロジックを制御手段に入力し、
前記制御手段により、前記モジュール内の操作に対応したリソースを起動してワークに対する操作を実行させるとともに、前記リソースから出力される操作の状態情報に基づいて、前記モジュールの内容をリソースに順次実行させる、
ことを特徴とする監視・制御方法。
【請求項９】
ワークに対して行なう処理に対応した操作を実行するリソースと、
前記ワークに対して行なわれる処理工程において、密接に関連して一続きとして行なわれる複数の処理のそれぞれに対応した各操作をリソースにより自動的、連続的に実行させるために作成したモジュールおよび複数のモジュール間の関係並びに目的をもった個々のロジックを入力可能な入力手段と、
この入力手段により入力された前記モジュールを記憶する実行タスク記憶部と、
この実行タスク記憶部に記憶されている前記モジュール内の操作とリソースとを読み出し、送受信部を介して対応するリソースを起動して前記ワークに対する前記操作を実行させるとともに、前記リソースが送信した操作の状態情報に基づいて、前記実行タスク記憶部に記憶されている前記モジュールをリソースに順次実行させる制御部と、
を有することを特徴とする監視・制御システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、製品の製造工程などのシーケンシャルプロセスを、コンピュータによって模擬的に再現するシミュレーションモデルの作成方法並びにシミュレーション方法および装置に関する。また、シーケンシャルプロセスを監視・制御する方法および装置に関する。
【０００２】
【従来の技術】
図１８は、生産工場等におけるシーケンシャルプロセスの概念図である。シーケンシャルプロセスでは、ワーク（図示せず）が処理工程に従って物理実体である機器に代表される複数のリソース１、２、３、………により搬送、仕分け、変形加工、組立て、分割、化学処理等のオペレーション（操作）による処理を受け、目的とするワーク（製品）に変身していく。この際、一つのリソースが行なうワークに対する処理（オペレーション）は普通、ワークの処理工程全体における処理のごく一部である。そして、ワークは、数多くのリソースをある順序で渡り歩くだけでなく、リソース自体も対象ワークの種類や、ワークがどの処理段階にあるか等によって様々なオペレーションパターンで稼働しワークに作用する。このため、シーケンシャルプロセスでは、ワークに対するリソースによるオペレーションの順序、ある処理まで済んだ他のワークとのタイミングのいい出合いが本質的に重要であり、多数のワークおよびリソースの複雑な状況管理と交通整理が必要不可欠である。この交通整理は、シーケンスコントローラ４が各リソースからの状態情報（広い意味でのセンサ情報）をもとに行なう。
【０００３】
すなわち、シーケンスコントローラ４は、一般にＰＬＣ（Ｐｒｏｇｒａｍｍａｂｌｅ　Ｌｏｇｉｃ　Ｃｏｎｔｒｏｌｌｅｒ）によって形成され、データ入出力部に各リソース１、２、３に設けてあるセンサ５から入力した信号に基づいて、シーケンシャルプロセスの全体を把握し、優先的に処理するワークや起動すべきリソースを決定し、リソースに対して必要なオペレーションを行なわせる。
【０００４】
このようなシーケンシャルプロセスを模したラインシミュレータ（シミュレーション装置）は、工場等における処理工程に基づいたワークの流れをコンピュータによって模擬的に再現し、ワークのスループットの検討等に供される。そして、従来のラインシミュレータは、目的とするワークの流れが得られれば十分であるとして、シミュレーションのための仮想ワークや装置（仮想リソース）などの動きをつくるロジックが、実際のプロセスのロジックとかけ離れていても問題にしていなかった。
【０００５】
すなわち、従来のラインシミュレータにおいては、「もの」をモデル化する場合、「もの」がどのようにシステム内を移動するかを記述し、「事象」をモデル化する場合、システム内の事象がいかに変化するかを記述するだけであった。そして、「もの」を加工するシミュレーションの記述は、もの（Ｅｎｔｉｔｙ）が事象（Ｎｏｄｅ）と挙動（Ａｃｔｉｖｉｔｙ）とで表されたネットワークの中を流れるように記述していた。
【０００６】
さらに、従来、シミュレーションモデルを構築する場合、図１９に示したように、シンボルによってネットワークを記述している。同図（１）に示したネットワークは、待機エリアまたは各機械の後バッファ内にある製品（ワーク）を、次の機械または搬送口に搬送する工程を示している。また、同図（２）に示したネットワークは、搬送車によって搬送されてきた製品を加工、組立処理をする工程を示している。そして、このようにシンボルによって記述したシミュレーションモデルをプログラミングする場合、各シンボルに対応したモジュールごとにプログラミングを行なうようにしている。
【０００７】
このような従来のラインシミュレータは、ワークの流れを簡易的に表現する仕組みとなっているため、対象が単純な場合には、簡易かつ迅速にシミュレーションモデルを構築することができるメリットがある。
【０００８】
【発明が解決しようとする課題】
ところが、従来の上記のようにして構築するラインシミュレータにおいては、多品種少量生産のようにワークが複雑に流れるラインの場合、事象などが簡素に表現されているために、正確に再現して諸特性を詳細に推定しようとすると、一般に困難で時間がかかったり、あるいは分析が不可能であることも多い。さらに、近年は、ワークの流れを再現するだけでなく、ワークを加工、ハンドリングするリソースである設備自体の挙動部分をもシミュレーションで検討する需要が増えており、これに対応することができない。
【０００９】
この対策として、最初からコンピュータの中に現実の機器に近い形状、動きをする機器モデルを作り、機器モデルを現実のシーケンスコントロールと相似のロジックで働かせて仮想ワークを加工、ハンドリングするようにしておけば、シミュレーションを行なったときに、正確な動きとして視覚的に再現できるだけでなく、シミュレーションの構築そのものが実システムのシステム設計および制御設計そのものであるようにでき、トータルとして、ラインシステム構築のコスト節約、品質の向上、ラインシステムを構築する工期短縮に大いに寄与すると期待できる。しかし、このようなメリットがあるものの、従来は、実際に仮想空間の中でセンサ系を系統的に表現し、そのデータをもとに機器モデルの挙動をコントロールするという仕組みがなかった。また、従来は、ラインシミュレーションモデルを構築する場合、特有のシンボルを用いてネットワークを記述し、シンボルに対応したモジュールのプログラミングをＧＰＳＳやＳＩＭＳＣＲＩＰＴなどのシミュレーション言語によって記述しており、複雑なシーケンスコントロールをエンジニアが厳密に、しかも容易に理解できる形で記述し、その記述に従って効率よくシミュレーション装置にシミュレーションモデルを実装できるようなよい方法がなかったため、シミュレーションモデルを作成する効率の向上に対する大きな成果をあげることができなかった。
【００１０】
本発明は、前記従来技術の欠点を解消するためになされたもので、シミュレーションモデルの構築を容易にすることを目的としている。
また、本発明は、現実とよく対応のとれたシミュレーションを可能にすることを目的としている。
また、本発明は、シーケンシャルプロセスの監視・制御システムの構築を容易にすることを目的としている。
【００１１】
【課題を解決するための手段】
本発明に係るシミュレーションモデルの作成方法は、忠実にモデル化した仮想ワークに対して操作を行なう忠実にモデル化した複数の仮想リソースと、これら各仮想リソースのそれぞれが前記仮想ワークに対してなす複数の操作とを記憶させ、前記仮想ワークについて与えられた処理工程における各処理を、記憶させた前記仮想リソースと前記操作とから選択した仮想リソースと操作とにより行なわせ、前記処理工程を実行するシミュレーションモデルの作成方法であって、前記仮想ワークに対して与えられた処理工程のうち、密接に関連して一続きとして行なわれる複数の処理のそれぞれに対応した前記操作を、自動的、連続的に実行するモジュールにすることを特徴としている。モジュールの内容および複数のモジュール間の関係、並びに目的をもった個々のロジックは、スプレッドシートにして記載するとよい。
【００１２】
本発明に係る第１のシミュレーション方法は、忠実にモデル化した仮想ワークと忠実にモデル化した仮想リソースとを画面に表示するとともに、前記仮想ワークについて与えられた処理工程と前記仮想リソースによる前記仮想ワークに対する操作の状態とに基づいて、複数の仮想リソースと、各仮想リソースが前記仮想ワークに対してなす複数の操作とから、前記仮想ワークに対して次になす操作と仮想リソースとを選択し、選択した仮想リソースが前記仮想ワークに対してなす選択された操作の状態を画面に表示することを特徴としている。
【００１３】
また、本発明に係る第２のシミュレーション方法は、モデル化した仮想ワークに対して与えられた処理工程のうち、密接に関連して一続きとして行なわれる複数の処理のそれぞれに対応した操作を、自動的、連続的に実行するモジュールとし、このモジュールの内容および複数のモジュール間の関係並びに目的をもった個々のロジックをスプレッドシートにし、このスプレッドシートとして与えられた仕様に基づいて、前記仮想ワークとモデル化した仮想リソースとを画面に表示するとともに、前記仮想ワークについて与えられた処理工程と前記仮想リソースによる前記仮想ワークに対する操作の状態とに基づいて、複数の仮想リソースと、各仮想リソースが前記仮想ワークに対してなす複数の操作とから、前記仮想ワークに対して次になす操作と仮想リソースとを選択し、選択した仮想リソースが前記仮想ワークに対してなす選択された操作の状態を画面に表示し、さらに実現手段に対する具体的イメージのない概念検討段階の前記スプレッドシートより実行したシミュレーションに基づいて前記スプレッドシートを更新し、新たなスプレッドシートに基づくシミュレーションとスプレッドシートの更新とを繰り返すことにより、詳細で忠実にモデル化したシミュレーションを実行する、ことを特徴としている。
【００１４】
実現手段の概略仕様段階のシミュレーションモデルと、より詳細で忠実にモデル化した段階のシミュレーションモデルとを相互に補いつつシミュレーションモデルを作成することが望ましい。
【００１５】
そして、上記のシミュレーション方法を実施するための本発明に係る第１のシミュレーション装置は、忠実にモデル化した仮想ワークに対する操作を行なう忠実にモデル化した複数の仮想リソースと、これら各仮想リソースのそれぞれが前記仮想ワークに対してなす複数の操作とを記憶したタスク記憶部と、前記仮想リソースが前記仮想ワークに対してなす操作の状態を検知する状態検出手段と、前記仮想ワークについて予め与えられた処理工程と前記状態検出手段の出力信号とに基づいて、前記処理工程に従って前記タスク記憶手段から前記仮想リソースと前記操作とを選択し、選択した仮想リソースにより前記仮想ワークに対して選択した操作を行なわせる制御手段と、前記仮想ワークと前記仮想リソースとを表示するとともに、前記仮想リソースが前記仮想ワークに対してなす前記操作の状態を表示する表示手段と、を有することを特徴としている。
【００１６】
さらに、本発明に係る第２のシミュレーション装置は、モデル化した仮想ワークに対する操作を行なうモデル化した複数の仮想リソースと、これら各仮想リソースのそれぞれが前記仮想ワークに対してなす複数の操作とを記憶したタスク記憶部と、前記仮想リソースが前記仮想ワークに対してなす操作の状態を検知する状態検出手段と、前記仮想ワークについて予め与えられた処理工程と前記状態検出手段の出力信号とに基づいて、前記処理工程に従って前記タスク記憶手段から前記仮想リソースと前記操作とを選択し、選択した仮想リソースにより前記仮想ワークに対して選択した操作を行なわせる制御手段と、前記仮想ワークと前記仮想リソースとを表示するとともに、前記仮想リソースが前記仮想ワークに対してなす前記操作の状態を表示する表示手段とを有し、前記制御手段は、前記仮想ワークに対して与えられた処理工程のうち、密接に関連して一続きとして行なわれる複数の処理のそれぞれに対応した前記操作を、自動的、連続的に実行するモジュールとされ、このモジュールの内容および複数のモジュール間の関係並びに目的をもった個々のロジックをスプレッドシートとして与えられた仕様に基づいて、前記タスク記憶部に記憶させた仮想ワーク、仮想リソースと前記状態検知手段とを用いてシミュレーションを自動的に作成する、ことを特徴ととしている。
【００１７】
そして、本発明に係る監視・制御方法は、ワークに対して行なわれる処理工程において、密接に関連して一続きとして行なわれる複数の処理のそれぞれに対応した各操作をリソースにより自動的、連続的に実行させるモジュールとし、このモジュールおよび複数のモジュール間の関係並びに目的をもった個々のロジックを制御手段に入力し、前記制御手段により、前記モジュール内の操作に対応したリソースを起動してワークに対する操作を実行させるとともに、前記リソースから出力される操作の状態情報に基づいて、前記モジュールの内容をリソースに順次実行させる、ことを特徴としている。
【００１８】
また、本発明に係る監視・制御システムは、ワークに対して行なう処理に対応した操作を実行するリソースと、前記ワークに対して行なわれる処理工程において、密接に関連して一続きとして行なわれる複数の処理のそれぞれに対応した各操作をリソースにより自動的、連続的に実行させるために作成したモジュールおよび複数のモジュール間の関係並びに目的をもった個々のロジックを入力可能な入力手段と、この入力手段により入力された前記モジュールを記憶する実行タスク記憶部と、この実行タスク記憶部に記憶されている前記モジュール内の操作とリソースとを読み出し、送受信部を介して対応するリソースを起動して前記ワークに対する前記操作を実行させるとともに、前記リソースが送信した操作の状態情報に基づいて、前記実行タスク記憶部に記憶されている前記モジュールをリソースに順次実行させる制御部と、を有することを特徴としている。モジュールの内容および複数のモジュール間の関係、並びに目的をもった個々のロジックは、スプレッドシートとして作成され、入力手段によって読み込まれる。
【００１９】
【作用】
上記のようになっている本発明のシミュレーションモデルの作成方法によれば、密接に関連した複数の一続きの処理を、モジュールとしてまとめることにより、複雑な制御内容をわかりやすく簡素にすることが可能となり、シミュレーションモデルの構築を容易、迅速に行なうことができる。そして、モジュールの内容および各モジュール間における関係をスプレッドシートとして記載することにより、シミュレーションの内容を厳密でわかりやすいものとすることができ、エンジニア間や顧客の理解を容易にすることができるとともに、シミュレーションモデルの作成作業を直接かつ円滑に行なえる。　そして、モジュールの内容およびモジュール相互の関係をスプレッドシートとして記述することにより、シミュレーションの内容の理解が容易となり、シミュレーションモデルを作成するための工数の削減が図れ、高品質なシミュレーションを構築できるとともに、作成したシミュレーションモデルの高品質な維持、管理、変更などを容易に行なうことができる。
【００２０】
そして、上記のようになっている本発明は、画面に表示する仮想ワークや仮想リソースを、実際のワーク、実際のリソース（機器など）の形状や寸法、配置ばかりでなく、動作やワークに対する操作なども忠実にモデル化して画像として再現する。そして、モデル化した仮想ワークについての処理工程と、この仮想ワークに対するモデル化した仮想リソースの操作の状態とに基づいて、処理工程に従った仮想リソースと操作とを選択して仮想ワークに対する操作を行なうことにより、実際のシーケンシャルプロセスを視覚的に忠実に再現することができ、現実とよく対応のとれたシミュレーションが可能となる。このため、多品種少量生産などのように、ワークの複雑な流れをも再現することができ、実際の生産設備の設計などが容易に行なえてシステムの構築、コスト節減、工期の短縮、品質の向上などを図ることができる。
【００２１】
特に、模擬センサともいうべき状態検出手段を設け、工程制御部がこの状態検出手段の出力信号により仮想リソースが仮想ワークに対してなしている操作の状態を判断し、処理工程に従って仮想ワークに対してなす操作を選択して仮想ワークの処理を行なうため、実際のシーケンスコントローラの動作を再現することができ、制御設計を容易に行なうことが可能となる。
【００２２】
本発明に係る監視・制御方法は、まず対象となる処理工程のうち、密接に関連して一続きとして行なわれる複数の処理のそれぞれに対応した操作を自動的、連続的に実行するモジュールとし、このモジュールの内容および複数のモジュール間の関係、並びに目的をもった個々のロジックをスプレッドシート上に表現する。ここで、１つの「操作」とは、シミュレーションモデル化された操作を自身が実行するのではなく、実機リソースに対して実際の操作を指示し、その操作が終了したという信号を実機リソースから受け取ることによって完了する処理であることを意味している。このスプレッドシートとして与えられた仕様に基づいて、リソースに対して逐次操作を指示し、またリソースからその操作が終了したという情報を逐次入手する。スプレッドシートの定義するロジックに基づいてリソースに対し次の操作を指示するので正確に制御できる。また、リソースに対する操作の指示に対する完了情報をリソースから受け取るので、全体の工程が完全に捕捉できる。
【００２３】
また、本発明に係る監視・制御装置は、監視・制御の対象となる処理工程のうち、密接に関連して一続きとして行なわれる複数の処理のそれぞれに対応した操作を、自動的、連続的に実行するモジュールとし、このモジュールの内容および複数のモジュール間の関係並びに目的をもった個々のロジックをスプレッドシートと表す。ここで、１つの「操作」とは、シミュレーションモデル化された操作を自身が実行するのではなく、実機リソースに対して実際の操作を指示し、その操作が終了したという信号を実機リソースから受け取ることによって完了する処理であることを意味している。監視・制御装置は、このスプレッドシートとして与えられた仕様に基づいて構成され、実機リソースへの操作指示発信機能および実機リソースからの操作終了信号受信機能が備わっている。スプレッドシートのロジックに従って実機リソースに対して逐次操作を指示し、またリソースからその操作が終了したという情報を逐次入手し、スプレッドシートの定義するロジックに基づいてリソースに対し次の操作を指示する。このことによって実機リソースを制御する。また、リソースに対する操作の指示とその完了情報とを完全に捕捉するので、監視・制御対象がどの工程状態にあるかが把握でき、その状態を画面に表示する。
【００２４】
また、上記のようになっている監視・制御方法および監視・制御システムでは、モジュールの内容および複数のモジュール間の関係並びに目的をもった個々のロジックをスプレッドシートとして表すことにより、スプレッドシートで定義されたロジックに従って実際のリソースにタイミングよく操作指示を出し、またその完了信号によって状態を完全に補足できるため、対象を監視制御できる
【００２５】
【発明の実施の形態】
本発明に係るシミュレーションモデルの作成方法並びにシミュレーション方法および装置、並びに監視・制御方法およびシステムの好ましい実施の形態を、添付図面に従って詳細に説明する。
図１は、本発明の実施の形態に係るシミュレーション装置の一例であるラインシミュレーション装置の概略ブロック図である。図１において、シミュレーション装置１０は、入力手段１２、工程制御手段１４、タスク状態情報手段１６、タスク記憶手段１８、実行タスク記憶・実行手段２０、表示手段２２を有している。
【００２６】
入力手段１２は、通常のキーボードやマウス、外部記憶装置などから構成してあって、実際のワークを忠実にモデル化するための実際のワークに関する形状や寸法、材質などの情報を入力できるとともに、モデル化した仮想ワーク（図示せず）に対する処理工程（どのような処理をどのような順序ですべきか）などを入力できるようになっている。
【００２７】
工程制御手段１４は、入力手段１２に接続してあって、入力手段１２を介して入力されたワークに関する情報や処理工程の情報などが入力する。また、工程制御手段１４は、タスク状態情報手段１６とタスク記憶手段１８と実行タスク記憶・実行手段２０とに接続してあって、詳細を後述するように、入力手段１２から入力された処理工程の情報に基づいて、モデル化した仮想ワークに対して実行すべきタスクをタスク記憶手段１８から選択し、タスク状態情報手段１６と組み合わせて実行タスク記憶・実行手段２０に書き込む。そして、工程制御手段１４は、シーケンシャルプロセスにおけるシーケンスコントローラの役割をなすようになっていて、データ入力／論理演算部２４を有しており、実行タスク記憶・実行手段２０の実行するタスクの状態を監視し、入力手段１２から入力された処理工程に従ってタスクを起動させる。
【００２８】
タスク記憶手段１８は、ソースタスク記憶部２６とリソースタスク記憶部２８とを有している。ソースタスク記憶部２６は、コンピュータプログラムからなる複数のワークタスクａ〜ｎを記憶していて、実際のワークを忠実に画像として再現したワークモデル（仮想ワーク）を形成できるようになっている。すなわち、モデル化した仮想ワークは、ＩＤを付された三次元形状を有する物体（オブジェクト）、例えば半導体基板や鋼板などのほか、組立工程における各種部品やねじなどをモデル化したものであって、一つ一つが相互に識別できるようになっている。ただし、仮想ワークが、樹脂ペレットや溶湯などの原材料である場合、所定の形になったときにＩＤが付される。ワークモデルは、ソースタスクによって形成される以外に、シミュレーションの開始時点で既に存在していてもよい。また、図には示していないが、ワークモデルを消滅させるシンク機能は、必要に応じて配置できる。
【００２９】
また、リソースタスク記憶部２８は、物理実体である実際の機器などの資源（リソース）をモデル化した複数の仮想リソース（リソース）Ａ〜Ｎと、これらのリソースＡ〜Ｎがモデル化した仮想ワークに対して行なう複数のタスクとを記憶している。そして、モデル化した仮想リソース（以下、単にリソースということがある）は、受け入れたモデル化した仮想ワークの形状、組成、性状を変化させたり、複数仮想ワークを結合したり、分割して新しい仮想ワークを形成したりする。また、ある仮想リソースからある仮想リソースまで仮想ワークを移動させるための搬送特化型仮想リソースもある。仮想リソースは、例えば工作機械等の機械加工装置、組立ロボット等の組立装置、コンベア等の据置き型搬送機器、天井クレーン等の自走型搬送機器、熱処理などを行なうプロセス装置等の他、広範囲の業務を柔軟にカバーできる作業員も含む。
【００３０】
そして、タスク記憶手段１８に記憶させたリソース（仮想リソース）Ａ〜Ｎは、現実のリソース（機器）の三次元形状、寸法、機構、動作特性（速度等）を忠実に真似たモデルであり、実際のリソース（複数）のレイアウトも正確に反映されるようにしてある。また、タスクは、実際のリソース（実機リソース）がリソースとしての目的をもって、実際のワークに対してなす具体的な動き（オペレーション）の内容をコンピュータプログラムによって忠実にモデル化したものである。タスクは仮想ワークに作用し、必要に応じてモデル化した仮想リソースを動かしモデル化した仮想ワークを移動したり、ハンドリングしたりする。このリソースタスク記憶部２８に記憶させたタスク群は、丁度実際の工場内の機器が並行して稼動できるように、コンピュータの中で同時並行的に稼動できるようにしてある。これらタスクは、後述するように、ソース（仮想ワークの発生機能）、他のタスク、工程制御手段１４のいずれかで起動される。
【００３１】
タスクとしてモデル化される仮想リソースが仮想ワークに対してなすオペレーション（操作）の代表的な例としては、次のようなものがある。
（１）仮想リソースが工作機械の場合
入力した仮想ワークを加工して出力する。どういう加工（オペレーション）をするかは、入ってきた仮想ワークに応じて仮想リソース自身が判断したり、あるいは上位のシーケンスコントローラに相当する工程制御部１４からの指示によって決まる。
【００３２】
（２）仮想リソースが組立機械の場合
部品供給装置から部品（複数）を取り、それをコンベアによって搬送されてきた中間製品に組み付ける。オペレーションとしては、ワークの違い等によって組立手順を変えるなど、さまざまな内容をとり得る。
【００３３】
（３）仮想リソースがコンベアの場合
決まった位置に入力した仮想ワークを決まった位置まで移動させる。動くのは仮想ワークだけであり、コンベア自体は同じ場所に据付けられて位置を変えない。もっとも単純なオペレーションの一つである。
【００３４】
（４）仮想リソースが天井クレーンの場合
天井クレーンは、仮想ワークを移動させるという意味ではコンベアに似ているが、自身が仮想ワークとともに（ある制限内ではあるが）任意の場所に動けるため、コンベアに比べて大きな柔軟性を持つ搬送リソースである。似た機能をもったリソースにフォークリフト、ＡＧＶなどがある。オペレーションとしては、何を、どこから、どこまで、といったパラメータを持つ柔軟なオペレーションである。高度なシステムでは、これらパラメータは上位の工程制御手段１４から渡される。
【００３５】
（５）仮想リソースがプロセス制御の場合
入力した仮想ワークに対して、熱処理とか電解とかの熱的、化学的作用を加える。出力仮想ワーク（処理終了後の仮想ワーク）は、入力仮想ワーク（処理前の仮想ワーク）と形状、性状ともに全く違う場合もあり得る。上位コントローラから見た場合、オペレーションの違いは仮想ワークの違いによる処理時間の違いとして現れることが多い。
【００３６】
（６）仮想リソースが作業員の場合
仮想ワークを移動するとか、組み立てるとか、他の仮想リソースのスイッチを入れるとか、マニュアル加工をするとか非常に柔軟なオペレーションをする。
【００３７】
タスク状態情報手段１６は、実施形態の場合、複数の状態レジスタによって構成してあって、起動スイッチやセンサの役目などをなす。そして、タスク状態情報手段１６を構成する状態レジスタは、通常、図２に示したように、タスクの前後に配置されて実行タスク記憶・実行手段２０に書き込まれる。状態レジスタは、記憶機能のついた一種の関数（通常、時間要素はもたないが、時間遅延のような例外もある）であり、タスク起動の仲介や仮想リソースによる操作の状態の情報収集を行なう。
【００３８】
タスクの前側に配置された状態レジスタ（例えば、図２の状態レジスタａ２−１、ａ３−１、ｃ１−１など）は、タスク起動のための状態レジスタであって、実線に示したように、工程制御手段１４からの起動信号によって起動され、起動すると設定に従って関連フラグのリセット、カウンタのカウントアップ、リセットなどを行ない、最後に次段のタスクを起動する。また、タスクの後段につけられた状態レジスタ（例えば、状態レジスタａ２−３、ａ３−３、ｃ１−２など）は、仮想リソースの状態情報を収集するための状態レジスタであって、タスクの終了時、タスクによって起動される。そして、起動された状態レジスタは、タスク終了を示すイベントフラグを立てたり、カウンタをカウントアップしたりして必要情報を破線に示したように工程制御手段１４に伝える。
【００３９】
なお、タスクの実行中の状態を工程制御手段１４に伝える必要がある場合には、例えばタスクａ２をタスクａ２−１とタスクａ２−２とのように分割し、分割したタスク間に状態レジスタ（例えば、状態レジスタａ２−２）を挿入して、必要なタイミングでのデータを出力するようにする。この際、最初のタスク（例えば、タスクａ２−１）が終了する時に、挿入された状態レジスタ（状態レジスタａ２−２）を起動し、起動された状態レジスタがその動作の終了時に２番目のタスク（タスクａ２−２）を起動するのは言うまでもない。
【００４０】
このように状態レジスタを使うことにより、イベントフラグを立てて終了情報を伝える以外に、カウンタ的な使い方をしてタスクにループ処理をさせたり、分岐処理のための分岐識別子として使ったりといった高度な処理が可能となる。また、タスク記憶手段１８に記憶させる仮想リソースやタスクの内容、タスク状態情報手段１６の有する状態情報の種類などは、適宜に追加、変更、削除をすることができるようにしてある。
【００４１】
実行タスク記憶・実行手段２０は、図２に示したような各仮想リソースに対応した実行タスク記憶部３０ａ、３０ｂ、３０ｃ、………を有していて、各仮想リソースが仮想ワークに対してなす操作であるタスクが書き込まれる。例えば、実行タスク記憶部３０ａに書き込まれた「タスクａ１／リソースＡ」は、仮想ワークに対するタスクａ１という処理（オペレーション）がリソース（仮想リソース）Ａによって行なわれることを示している。また、各タスクの後段または、分割したタスク間に配置した状態レジスタの横に角カッコによって示した数字は、状態レジスタの取りうる状態の数を示している。すなわち、例えば状態レジスタａ１−１の横に示されている［０，１］は、状態レジスタａ１−１が「０」または「１」の２通りの状態を取りうることを示している。また、状態レジスタａ２−２は、「０」の状態と、整数で「１」〜「９」までの状態とをとりうることを示している。
【００４２】
なお、図２においては、ソースタスクａが実行タスク記憶部３０ａに書き込まれていて、シミュレーションの開始時に、仮想ワークがリソースＡに与えられる（リソースＡから出現する）ことを示しているが、これに限定されるものではなく、必要に応じてリソース（仮想リソース）Ｂやリソース（仮想リソース）Ｃなどから仮想ワークが出現する。
【００４３】
このようになっている実施形態に係るシミュレーション装置１０の作用は、次のとおりである。まず、入力手段１２によって実際のワークの仕様、例えば、形状、寸法、材質、さらにはワークの数量などを入力するとともに、ワークを処理する工程を入力する。ワークの処理のシミュレーションは、実機リソースとこの実機リソースがワークに対して行なう作用（オペレーション）の内容をモデル化したタスクを指定して行なう。このとき、各タスクは、図２に示したように、タスクの前段に配置したタスク起動型状態レジスタ（例えば、状態レジスタａ２−１、ａ３−１、ｂ１−１、ｃ３−１等）と、タスクの後段に配置したシーケンシャルプロセスにおけるセンサに対応した情報収集型状態レジスタ（例えば、ａ２−３、ａ３−３、ｂ１−２、ｃ３−２等）とによって挟んだ状態で入力される。
【００４４】
ただし、最初に行なわれるタスク（この実施形態の場合、図２の左上に示したリソースＡによるタスクａ１）は、タスク起動型状態レジスタの代わりにソースタスクａが指定され、ソースタスクａの終了とともに最初のタスクａ１が自動的に起動される。また、タスクの実行途中において実行中の状態を伝える必要がある場合には、タスクを２つ（３つ以上であってもよい）に分割し、その間に実行中のタスクの状態を出力する状態レジスタを挿入する（例えば、リソースＡのタスクａ２−１、タスクａ２−２および状態レジスタａ２−２）。
【００４５】
これらの状態レジスタは、実施形態の場合、状態値と演算内容とから構成してある。ただし、タスクの前段に配置するタスク起動型状態レジスタは、状態値をもたない場合もある。このタスク起動型状態レジスタは、通常、工程制御手段１４により起動される。そして、タスク起動型状態レジスタの演算内容としては、関連フラグのリセット、カウンタのカウントアップ、リセットなどを行なう。また、タスクの後段に配置された情報収集型状態レジスタは、通常、前段のタスクが終了する前は状態値が「０」、前段のタスクが終了するとイベントフラグを立て、状態値が「１」に変わる。そして、情報収集型状態レジスタの演算内容としては、カウンタをカウントアップしたりする。また、タスクの中間に配置される状態レジスタは、通常、状態値の初期値が「０」であって、前段のタスクが終了するごとに状態値を１ずつ増加するなどの演算を行なう。
【００４６】
入力手段１２から入力された仮想ワークを処理するためのタスクは、工程制御手段１４によってタスク記憶手段１８とタスク状態情報手段１６とから選択され、実行タスク記憶・実行手段２０の記憶部に、図２に示したようにタスク展開型で書き込まれる。また、工程制御手段１４のデータ入力／論理演算部２４には、仮想ワークを所定の順序によって処理するための制御ロジックが与えられる。このデータ入力／論理演算部２４に与えられるロジックの一例は、次のようなものである。
【数１】
2004005431.tif 000003
【数２】
2004005431.tif 000004
【数３】
2004005431.tif 000005
などである。そして、データ入力／論理演算部２４は、上記のような論理演算が「真」であるときに、次のタスクを実行させるタスク起動型状態レジスタを起動する。
【００４７】
このようにして、入力手段１２を介してワークの仕様とワークに対する処理工程とが入力されたのち、工程制御手段１４にシミュレーションの開始命令が与えられると、工程制御手段１４は、この実施形態の場合、実行タスク記憶・実行手段２０のタスク実行部（図示せず）を介して実行タスク記憶・実行手段２０に書き込んだソースタスクａを起動する。これにより、実行タスク記憶・実行手段２０のタスク実行部は、ソースタスクａの内容を実行し、表示手段２２に画像として再現したリソース（仮想リソース）Ａの所定位置に、実際のワークを再現した仮想ワークを生成し、さらにリソースＡによる仮想ワークに対するタスクａ１（処理）を実行する。このタスクの内容は、実際のリソースによる実際のワークに対する操作の内容、動作が忠実に画像として再現されるようになっている。そして、リソースＡによるタスクａ１が終了すると、タスクａ１の後段の状態レジスタａ１−１がタスクａ１の終了によって起動され、イベントフラグを立てて状態値が「１」となる。この状態レジスタａ１−１の状態値の情報は、図示２の破線に示したように、タスク実行部を介して工程制御手段１４のデータ入力／論理演算部２４に入力される。
【００４８】
データ入力／論理演算部２４は、予め与えられている制御ロジックに従って、次のタスクを起動する。すなわち、データ入力／論理演算部２４は、例えば前記した数式１のロジックが与えられている場合、状態レジスタａ１−１の状態値が「１」になると、図２の実線に示したように、実行タスク記憶・実行手段２０のタスク実行部を介して状態レジスタｃ１−１に起動信号を出力する。状態レジスタｃ１−１は、工程制御手段１４から起動信号が入力すると、状態レジスタａ１−１のイベントフラグをリセット（状態値を「０」に）し、その後タスクｃ１起動する。以下同様にして、仮想ワークに対する仮想リソースによる処理（オペレーション）が画像として表示手段２２に再現される。
【００４９】
このようにして、実際のワークを忠実にモデル化した仮想ワークに対して、実際のリソースを忠実にモデル化した仮想リソースによって、表示手段２２の画面上で実際にハンドリングなどの処理を行なうため、実際のシーケンシャルプロセスを忠実に再現することができ、現実とよく対応のとれたシミュレーションが可能となる。このため、シミュレーションを行なったときに、正確な動きとして視覚的に再現できるだけでなく、シミュレーションの構築そのものが実システムのシステム設計および制御設計そのものであるようにでき、トータルとして、システム構築のコスト節約、品質の向上、工期短縮に大いに寄与することができる。
【００５０】
そして、タスク展開型バーチャルシミュレーション（バーチャルシミュレーションインフラ）の各機器（仮想リソース）のオペレーションを、時間ファクタを含むタスクプログラムで表現することによって、自律的かつ並列的稼動という実機器と類似の特性を持たせ、模擬センサ／入出力ＩＯとも言うべき状態レジスタをタスクの前後に付加してリソース状態情報を制御手段１４に入力でき、また仮想リソースを自在に稼働させられるようにし、また時々刻々の状態情報に制御手段１４によって論理演算をすることで、実際のＰＬＣシーケンスコントロールを模擬するという仕組みによって、仮想リソース対機器、オペレーション対タスク、ＰＬＣコントロール工程制御部１４という、現実対仮想がシミュレーションの条件内で同一視できるスキームが作れる。これによって首尾一貫した発展性に富む、高度なバーチャルなシミュレーションが可能になる。
【００５１】
図３は、本発明に係る他の実施形態の要部を示したものであって、実行タスク記憶・実行手段の説明図である。この実施形態に係る実行タスク記憶・実行手段５０は、タスク実行部となるシステムコントローラ５２と実行タスク記憶部５４とからなっている。システムコントローラ５２は、詳細を後述する自律的タスク順次起動機能部５６と、リソースコンフリクト調停機能部５８と、リソース予約／予約解除機能部５９と、タスク優先度基準記憶部６０とを有している。
【００５２】
実行タスク記憶部５４は、仮想ワークに対して実行する処理工程における各処理をするための操作をモデル化したタスクを書き込むようになっている。この実施形態においては、密接に関連して一続きとして行なわれる複数のタスクを、自動的に連続的に実行するモジュールとして一まとめにしている。すなわち、図２に示した前記実施形態においては、各タスクの前段にタスク起動型状態レジスタを配置するとともに、各タスクの後段に情報収集型状態レジスタを配置し、各タスクの終了ごとに工程制御手段１４のデータ入力／論理演算部２４が論理演算を行ない、その論理演算の結果が「真」であるときに、タスク起動型状態レジスタを介して次のタスクを起動していたのに対して、図３に示した実施形態の場合、モジュールとしてまとめられた一連の複数のタスクは、最初のタスクが起動されると、そのモジュールに属する最後のタスクまでが自動的に順次起動するようになっている。
【００５３】
これらのモジュールは、実現したいシミュレーションの目的に沿って、ばらばらに選択されるタスク群を、シミュレーションのシナリオ（処理工程）の要請する因果関係、前後関係を考慮して決定される。このモジュールを構成するタスク群は、それに含まれるタスクが何らかの原因で起動されたら、そのタスク実行後、次段のタスクを自動的に起動し、１つのモジュールに含まれる最後のタスクまで順次起動されていくようになっている。
【００５４】
図３の実施形態の場合、第１の一意シナリオモジュール６２、第２の一意シナリオモジュール６４、第３の一意シナリオモジュール６６がそれぞれ一連の操作のモジュールとなっている。そして、第１の一意シナリオモジュール６２は、実施形態の場合、ソースタスクａ、リソースＡによるタスクａ１、リソースＣによるタスクｃ１、リソースＣによるタスクｃ２、リソースＡによるタスクａ２、リソースＡによるタスクａ３から構成してあって、タスクａ３の後段に前記実施形態と同様の情報収集型状態レジスタｚ１が配置してある。
【００５５】
また、第２の一意シナリオモジュール６４は、先頭に前記したと同様のタスク起動型状態レジスタｘ１が配置してあって、この状態レジスタｘ１に続けてリソースＡによるタスクａ２、リソースＢによるタスクｂ２、リソースＣによるタスクｃ１、タスクｃ１の実行中の状態を伝達するための状態レジスタｙ２、リソースＡによるタスクａ１、リソースＣによるタスクｃ３、タスクｃ３の後段に配置した情報収集型状態レジスタｚ２とからなっている。
【００５６】
さらに、第３の一意シナリオモジュール６６は、タスク起動型状態レジスタｘ２、リソースＡによるタスクａ２、リソースＢによるタスクｂ２、リソースＣによるタスクｃ１、タスクｃ１の後段に設けた情報収集型状態レジスタｚ３とから構成してある。
【００５７】
これらの一意シナリオモジュール６２、６４、６６を作成するルールは、次の（１）〜（５）のようになっている。
（１）各タスクをどういう前後関係、どういう因果関係で起動するかによってシナリオ（タスクの実施順序）を構築できるが、タスクの接続としてあるタスクが終わったら必ずこのタスクが開始する、という関係を持ち、その前後関係と接続関係がシミュレーションの進行の変化手順に拘わらず不変であるものを最長になるまで繋げることができる。そして、シミュレーションのあらゆる局面が必ずどれかの一意シナリオモジュールに属するように、言い換えれば複数の一意シナリオモジュールの集合がシミュレーションの全シナリオをカバーできるようになるまで一意シナリオモジュールを作る。勿論、シナリオシーン（処理工程）の重複があってはならない。タスクが１つしかない一意シナリオモジュールもありうる。一意シナリオモジュールにおいて本質的なことは、前段タスクに対する後継タスクの前後関係の絶対性であり、間に関連しない別のタスクを挟むことはない、ということである。しかしながら、時間的には、前段が終了したら直ぐに後継タスクが開始しなければいけないというものではない。例えばその時、後継タスクが以前に起動された分のオペレーション（タスク）をまだ続行中ならば、それが終わるまで待たなければならないし、後継タスクの仮想リソースが他の一意シナリオモジュール内のあるタスクで既に使われている場合は、それが終わるまで待たなければならない。
【００５８】
（２）一意シナリオモジュールを作成する場合、あるタスクからシミュレーションの変化手順に応じて択一の形で複数のタスクに枝分かれ（選択分岐）が存在するとき、一意シナリオモジュールはそこで終わる。
【００５９】
（３）一意シナリオモジュールの作成においては、あるタスク終了によって後継のタスクを起動する場合に、複数のタスクが一斉（並列分岐）に起動するときは、一番関連が強いタスクを後継として一意シナリオモジュールの作成を続けてもよい（勿論、分岐する前のところで終わってもよいが、続けた方が一般にシナリオが簡明になる）。このように複数に分岐するときは、後述するように、その部分に状態レジスタを挿入して、そこから同時に起動したい他の一意シナリオモジュールを起動することになる。
【００６０】
（４）できた一意シナリオモジュールが全てのシナリオシーン（シミュレーションのすべての処理工程）をカバーするまで一意シナリオモジュールを新たに追加して行く。
【００６１】
（５）一意シナリオモジュールの中で、さらには一意シナリオモジュール間で、同じタスクが何回現れても構わない。重複してならないのはシナリオシーンである。
【００６２】
なお、実施形態においては、便宜上、上記のようにして作成される一意シナリオモジュールの先頭、末尾、場合によっては中間に付加した状態レジスタを含めて、特に混乱を生じるおそれのないときは一意シナリオモジュールと呼ぶ。
【００６３】
このような一意シナリオモジュールを用いたこの実施形態においても、シーケンシャルプロセスにおけるセンサ／制御系に相当するものは、前記実施形態と同様に、タスクとの接点である状態レジスタ群と、状態レジスタから得られた状態データを用いて意思決定を行なう工程制御手段１４によって実現している。
【００６４】
状態レジスタは、前記実施形態と同様に、記憶機能を有する一種の関数（通常は時間要素をもたないが、時間遅延のような例外もある）であり、タスク起動の仲介や仮想リソースの状態情報収集を行なう。そして、タスク起動のための状態レジスタ（例えば、状態レジスタｘ１、ｘ２）は、各一意シナリオモジュールの冒頭に置かれ、工程制御手段１４のデータ入力／論理演算部２４の指令によって起動されると、設定に従って関連フラグのリセット、カウンタのリセット等を行なったのち、次段のタスクを起動する。
【００６５】
仮想リソースの情報収集を行なう状態レジスタ（例えば、状態レジスタｚ１、ｚ２、ｚ３）は、通常、各一意シナリオモジュールの末尾につけられ、一意シナリオモジュールの最後のタスクによって起動される。起動された情報収集型状態レジスタは、その設定に従ってイベントフラグ等を立て、一意シナリオモジュールの情報をデータ入力／論理演算部２４に伝える。
【００６６】
また、一意シナリオモジュールの途中の状態を伝える必要がある場合は、第２の一意シナリオモジュール６４中に示した状態レジスタｙ２のように、状態レジスタを適切なタスクの後ろに挿入し、そのタスクの終了タイミングで挿入した状態レジスタが起動される。ただし、途中に挿入された状態レジスタは、データ入力／論理演算部２４からの指令によって起動してもよい。この場合は、このレジスタ位置から一意シナリオモジュールの最後までのタスクが順次起動されることになる。なお、前記実施形態のように、一意シナリオモジュール中の１つのタスクを複数に分割し、その間に状態レジスタを挿入してもよい。
【００６７】
このように、状態レジスタの記憶機能をイベントフラグだけでなくカウンタや識別番号の記憶機能として使用し、タスクにループ処理をさせたり、一意シナリオモジュールに分岐識別子に基づく分岐をさせることもできる。
【００６８】
工程制御手段１４のデータ入力／論理演算部２４は、前記実施形態と同様であって、状態レジスタからフラグ等の状態データを読み、それに論理演算や遅延等の時間演算を施し、結果が「真」になったら適切な一意シナリオモジュールを、状態レジスタを介して起動する。データ入力／論理演算部２４の行なう演算は、例えば、
【数４】
2004005431.tif 000006
【数５】
2004005431.tif 000007
【数６】
2004005431.tif 000008
などである。
【００６９】
各一意シナリオモジュール６２、６４、６６は、先頭のタスクがタスク実行部であるシステムコントローラ５２を介して工程制御手段１４によって起動され、先頭のタスクが起動されると、一連のタスクがシステムコントローラ５２の自律的タスク順次起動機能部５６によって、図３の上から順に自動的に起動される。
【００７０】
すなわち、自律的タスク順次起動機能部５６は、一意シナリオモジュールの冒頭の状態レジスタがデータ入力／論理演算部２４からの指示によって起動され、あるいは冒頭のソースタスクが動き始め、そのレジスタやソースタスクが終了するとこれを検知して次段のタスクを起動し、この起動されたタスクが終了すると、さらに次のタスクを起動する、という具合に一意シナリオモジュールの末端のタスクまで各タスクの起動を順順にリレーする。そして、タスクが仮想ワークを扱っていれば仮想ワークもリレーされる。また、一意シナリオモジュールの中では、一意シナリオモジュールを構成している複数のタスクが同時に実行状態を取り得る。これが普通のフローチャートで表現されるプログラムと異なる点である。ただし、一意シナリオモジュールにおいて、後継（後段側）タスクが稼動中であれば、前段のタスクはそれが空くまで待つ。
【００７１】
そして、各一意シナリオモジュールは、最後のタスクによる仮想ワークに対する処理が終了すると、一意シナリオモジュールの末尾に配置してある情報収集型状態レジスタ（例えば、状態レジスタｚ１）が最後のタスクによって起動される。この状態レジスタは、起動されるとイベントフラグを立てて状態値が「１」となる。状態レジスタの状態値は、システムコントローラを介して工程制御手段１４のデータ入力／論理演算部２４に入力される。データ入力／論理演算部２４は、所定の論理演算を行ない、この演算が「真」であると、次の一意シナリオモジュールを起動する信号を出力する。
【００７２】
例えば、データ入力／論理演算部２４は、数式４に示したロジックが与えられている場合、一意シナリオモジュール６２の状態レジスタｚ１の状態値が「１」となると、「状態レジスタｘ２を２秒後に起動せよ」との信号をシステムコントローラ５２に出力する。これにより、システムコントローラ５２は、２秒後に状態レジスタｘ２を起動する。状態レジスタｘ２は、起動されると状態レジスタｚ１のイベントフラグをリセット（状態値を「０」にリセット）する。そして、システムコントローラ５２の自律的タスク順次起動機能部５６は、状態レジスタｘ２が状態レジスタｚ１のイベントフラグをリセットすると、状態レジスタｘ２の後段に位置するタスクａ２以下のタスクを順次起動する。以下同様にして各一意シナリオモジュールが起動され、タスクが実行される。
【００７３】
リソースコンフリクト調停機能部５８は、同一の仮想リソースに対して同時に複数のタスクが要求されたときに、どのタスクを優先させて実行するかを調節するようになっている。すなわち、一意シナリオモジュールは、一般に同時並行的に複数が稼動する。各一意シナリオモジュールは、タスクから構成されているので、並行して稼動している複数の一意シナリオモジュール内のタスクが同時に同一の仮想リソースを要求することがありうる。この場合、その仮想リソースのあるタスクが既に走っているときは、それが終了するまで待つ必要があるが、次に動かすタスクとしては、実行を要求された複数のタスクからある基準でひとつのタスクを選択する必要がある。リソースコンフリクト調停機能部５８は、このようなリソースコンフリクトが起こった場合に、タスク優先度記憶部６０に格納してある優先度の基準に従ってタスク間の折り合いをつけ、仮想リソースに属するタスクが同時に２つ以上起動しないようにする。コンフリクト克服の基準としては、タスクごとに予め優先順位を設定する方法、早く要求したタスクを先に実行する方法、さらに別の状態レジスタデータを参照して起動タスクを決定する方法等がある。
【００７４】
リソース予約／予約解除機能部５９は、一意シナリオモジュール内で、近い将来ある仮想リソースを使用することが確実な場合、その仮想リソースを予約することを可能にし、また使用後、仮想リソースの予約を解除することを可能にするようになっている。すなわち、その一意シナリオモジュール内のあるタスクａ２の後ろにいくつかのタスクを挟んでリソース（仮想リソース）Ｃを使用するタスクｃ１がある場合、タスクａ２の直後でリソースＣを予約して他のタスクに使われないようにし、ｃ１の順番がきてリソースＣを使用し終え、さらにリソースＣから仮想ワークを搬出する等、リソースＣを他で使える状態にしたらリソースＣを開放するのである。リソースコンフリクト調停機能が実際に仮想リソースを利用する時点になって働くのに対し、リソース予約／予約解除機能は、将来の利用を見越して働く。
【００７５】
例えば、一意シナリオモジュールで仮想ワークを加工するタスクａ２、その仮想ワークをリソースＣに搬送する天井クレーン（仮想リソース）Ｂのタスクｂ２、リソースＣで仮想ワークを加工するｃ１、リソースＣから仮想ワークを搬出するタスクｂ３の順で並んでいるとする。もしも、リソース予約／予約解除機能がないと、タスクａ２が仮想ワークの加工を終えると直ぐに（リソースＢが空いていれば）リソースＢがリソースＣに仮想ワークを搬送しようとするが、そのときリソースＣが別の仮想ワークで塞がっていれば、リソースＢはそこでリソースＣが空くのを待つ。もしも、リソースＣから仮想ワークを搬出させるタスクがリソースＢに割り当てられているとすると、天井クレーンＢは永遠にリソースＣの前で待つことになる。このようなデッドクロスは、タスクａ２の直後にリソースＣの予約を入れ、タスクｂ３の直後にリソースＣの予約解除を入れれば回避できる。
【００７６】
リソース予約およびリソース予約解除は、「リソース予約」、「リソース予約解除」命令で行ない、一意シナリオモジュールに一種のタスクとして自在に挿入できる。「リソース予約」、「リソース予約解除」命令の因数は、リソース名である。一意シナリオモジュールで上から順にタスクが起動され、「リソース予約」に到達したら、リソース予約／予約解除機能部５９は、その仮想リソースの予約状況を見、先約がなければ予約を登録するとともに、次のタスクを起動するし、もしも既に他の予約が入っていて、仮想リソースが直ぐに使用できない状況であれば、その仮想リソースの待ち行列に予約を加え、自分の番がくるまで待たせるのである。
【００７７】
予約解除命令は、リソースＣの利用後、リソースＣを他のタスクに提供できるようになるところに挿入するが、その挿入場所はシナリオの流れによって決まり、リソース予約の挿入された一意シナリオモジュールと異なるモジュールの場合もありうる。
【００７８】
図４は、一意シナリオモジュールを用いたシミュレーションの仕様記述法（一意シナリオモジュールの連結法）の一例を示したものである。図４に示したように、各一意シナリオモジュール６２、６４、６６は、相互に他と区別のできる塊として記述する。各一意シナリオモジュールは、それぞれタスク欄７０、内容記述欄７２、優先度欄７４を有する。そして、各一意シナリオモジュール６２、６４、６６に属する各タスクは、タスク欄７０に起動する順序に上から下へと書く。また、タスクの属するリソース名もタスク欄７０に明記する。
【００７９】
タスク欄７０に記述した各タスクに対応した内容記述欄７２には、タスクの内容、すなわち仮想リソースによる仮想ワークに対するオペレーションの内容を記述する。ただし、内容記述欄７２に記載される各タスクの内容の詳細は、別シートとしてもよい。さらに、各タスクに対応した優先度欄７４には、そのタスクの優先度情報を記載する。また、適宜、リソース予約、リソース予約解除命令を挿入している。これにより、システムコントローラ５２の自律的タスク順次起動機能部５６およびリソースコンフリクト調停機能部５８およびリソース予約／予約解除機能部５９への必要データが与えられたことになる。
【００８０】
状態レジスタの名称や番号などは、タスク欄７０に記載される。そして、状態レジスタの状態値、演算内容は、内容記述欄７２、優先度欄７４と対応した部分に記述してよい。状態レジスタの状態値は、状態レジスタが取りうる値であって、例えば状態レジスタｚ１の場合、「０」または「１」であり、状態レジスタｙ２の場合、「０」または「１」〜「５」までの整数である。また、状態レジスタの演算内容は、「フラグをリセットする」とか「カウンタをカウントアップする」とかである。
【００８１】
この仕様記述法においては、符号８０に示したように、論理演算部８０を設けて工程制御手段１４のデータ入力／論理演算部２４が行なう演算内容を記述する。この論理演算部８０には、各状態レジスタの起動条件が演算を実行する順に上から下に記述される。勿論、論理演算部は、一箇所にまとめて記述する必要はなく、分かり易さを増すために関係する一意シナリオモジュールに隣接するように分散して記述してもよいし、チャートによる図示を図ってもよい。
【００８２】
このようにして複数の一意シナリオモジュールを作成し、これらを相互に連結してシミュレーションの内容を構築するシミュレーションアーキテクチャによれば、複雑で一見無秩序なシーケンスコントロールの対象を、システムコントローラ５２の自律的タスク順次起動機能部５６とリソースコンフリクト調停機能部５８およびリソース予約／予約解除機能部５９によって、自律的に稼働する複数のタスクからなる一意シナリオモジュールの集まりとして再編成し、一意シナリオモジュール同士の前後関係、因果関係を考えればよいようにできる。従って、シミュレーションの内容（シナリオ）を容易に理解できるようになり、一般性を失うことなくシミュレーション構築作業を簡単化できる。
【００８３】
すなわち、シミュレーションモデルの設計者は、実際のワークの処理工程に沿って複数の一意シナリオモジュールを作成し、これらを図４に示した連結法によって各一意シナリオモジュールを相互に連結した仕様書を作成して、シミュレーションを構築する人に渡すことにより、設計者の意図、シミュレーションの内容を容易に理解でき、正確なシミュレーションを容易に構築することができる。また、タスク展開型の本アーキテクチャとよく整合する図４に示したシミュレーション仕様記述法を採用することにより、エンジニア間、顧客と請負者間で容易かつ厳密なコミュニケーションが可能となるだけでなく、その仕様書からのシミュレーションモデルの作成作業が直接的かつ円滑となり、工数の削減、手戻りの減少が図られる。また、厳密かつ分かりやすい仕様書を作成できるため、作成したシミュレーションモデルの高品質な維持、変更、管理が可能となる。
【００８４】
また、上記のタスク展開型バーチャルシミュレーションアーキテクチャと一意シナリオモジュール連結法の考えを適用してシミュレーションを構築し、その結果得られる一意シナリオモジュール間のシーケンスコントロールと、一意シナリオモジュールに内蔵した自律的順次タスク起動とリソースコンフリクトロジックとリソース予約／リソース予約解除とを顕示化したコントロールとを組み合わせることによって、効率的な実システムのシーケンスコントロール装置を設計することができる。
【００８５】
図５〜図７は、本発明による「効率的シーケンスコントロール実現法およびシミュレーション仕様記述法」に対応した具体的インターフェースの例を示したものである。これらの図は、スプレッドシートに一意シナリオモジュールを縦に配列したもので、論理演算も一意シナリオモジュールの中に記述してある。そして、スプレッドシートの記載内容を明確にするために、６つの一意シナリオモジュールを図５〜図７に分割して示してあるが、１つのスプレッドシートに記載してよいことは勿論である。なお、この実施例は、原石から３つの玉を削りだす処理工程を示している。処理工程の概念図を図８に示す。
【００８６】
各一意シナリオモジュール内では、タスクを実行する順に上から下に並べて記述してある。また、状態レジスタ（状態Ｎｏレジスタ）は、仮想リソースと同等に扱い、１つの状態データと複数の関数を持ちうる。状態レジスタの状態データとしては、整数（状態Ｎｏ）を扱えるものとしている。このスプレッドシートの１列目にはタスク名を示すオペレーションタスクＩＤが記載され、２列目にはリソース名が記載される。また、スプレッドシートの３列〜７列には、状態レジスタの扱う状態Ｎｏ（実施例の場合、整数をとる変数名がレジスタ名と同じ名にしてある）の変域、状態レジスタがとる状態Ｎｏの初期値、状態レジスタが行なう論理演算の際に必要とするＩＮＰＵＴ変数名、状態レジスタが行なった論理演算の結果として出力するＯＵＴＰＵＴ変数名、状態レジスタが行なった論理演算の出力値（ＯＵＴＰＵＴ値）が記述される。
【００８７】
すなわち、図５の一意シナリオモジュールＩの状態ＮｏレジスタＲ１０１は、変域が「０」と「１」との２つであって、初期値が「０」であることを示している。また、状態ＮｏレジスタＲ１０１は、論理演算の結果として出力（ＯＵＴＰＵＴ）する変数がＲ１０１であり、論理演算の結果、変数Ｒ１０１が「１」になることを示している。
【００８８】
また、図６の一意シナリオモジュールＩＶにおける状態レジスタＲ４０１は、変域が「０」と「１」〜「５」の整数とであって、初期値がデフォルト値として「０」が与えられ、論理演算の入力（ＩＮＰＵＴ）に変数Ｒ４０１を必要とし、論理演算結果の出力の変数がＲ４０１とＲ３０２とであることを示している。まら、状態レジスタＲ４０１は、論理演算することにより、変数Ｒ４０１を１ずつカウントアップし、変数Ｒ３０２をリセットして「０」にする。そして、状態ＮｏレジスタＲ４０１は、変数Ｒ３０２が「１」となったときに起動されることを示している。
【００８９】
そして、スプレッドシートの８、９列には、状態レジスタの起動条件を定義するためＩＮＰＵＴ変数名とその条件が記述される。この条件が成立した瞬間に、そのレジスタの関数が起動（状態Ｎｏレジスタ値の演算）されるのである。
【００９０】
このような起動条件の記述は、一般に一意シナリオモジュールにまたがるため、シミュレーションの規模が大きくなるにつれて分かりにくくなる傾向がある。しかしながら、一つひとつのロジックは比較的単純である。そのため、「この一意シナリオモジュールが終わったら、あの一意シナリオモジュールを起動する」とか、「この一意シナリオモジュールのこのタスクからそのタスクまでを１０回繰り返す」といった特定の目的をもったロジック（以下、機能ロジックと称する）に対し、それぞれの機能ロジックに係わる状態レジスタ名と変数名等とをそのロジック特有の識別しやすい記号を用いて統一的に記述し、さらにその機能ロジックを抜き出して別々のシートに記述して管理し、あるいはデータベースに記述して管理し、一意シナリオモジュール中の記述には、それをコピーするという手法をとることによって、ロジックを見やすくし、デバッグを容易にし、ロジックの再利用を可能にし、またロジックの維持・管理を容易にできる。
【００９１】
前記の玉削り出し工程に対してその方法を適用した例を図９に示す。図９で左半に一意シナリオモジュール、右半に機能ロジックを数例示している。一意シナリオモジュールは、図５〜図７の列の順序を入れ換えたり、一部省略しているが、基本は図５〜図７と同等である。図５〜図７の統一性のないレジスタ名称Ｒ４０１などの代わりに、例えばＲ５−０１、Ｓ５−０４のように、１つの機能ロジック中の変数名等を５−ｘｘという記号で統一することによって視認性、検索性を高め、管理しやすくしている。
【００９２】
スプレッドシートの１０列目には、一意シナリオモジュール間のリソースコンフリクト解決のための優先度（プライオリティ）が整数によって記載される（図５〜図７参照）。実施例の場合、整数の値が大きいほど優先度が高くなっている。さらに、スプレッドシートの１１列目には、タスク内容、その他の摘要を記述する。このシートは、単に仕様記述書として使うことができることは勿論、このスプレッドシートとシミュレーションの間にインターフェースをとることにより、この仕様に定義されたとおりのシミュレーションを実行させることもできる。
【００９３】
以上に述べたように、自律的タスク順次起動機能、リソースコンフリクト調停機能、リソース予約／予約解除機能を同時に用いて現実の世界を忠実に再現するシミュレーションを構築できるが、これは詳細なリソースモデル、レイアウト、運用方針等が既にあることを前提としている。しかしながら、最初からこれらが揃っていることは稀であり、本当はむしろ何も決まっていないところから出発して、これらを順次明確化、具体化していきたいのである。
【００９４】
実は、自律的タスク順次起動機能、リソースコンフリクト調停機能、リソース予約／予約解除機能をオン、オフできる機能を装備したシミュレーション装置と、それに対応した方法論によって、漠然としたミッション概念だけがあり、実現手段である機器の具体的イメージは勿論、運用についてもノーアイディアの段階から、必要な機器の台数、機能・性能、形状寸法、全体のレイアウトを、根拠をもって具体化することはもとより、運用についても実際上、実物と同等と考えられるレベルまで詳細に検討することができる。しかも、前段階の成果の上に立って連続的に検討していくとこができるのである。この過程で仕様書も連続的に深化し、概念検討段階の要求書レベルのラフなものから出発して、徐々に具体化、詳細化、厳密化されていく。そのシミュレーションシステムおよび方法の実施例を、図１０ないし図１７に基づいて説明する。
【００９５】
図１０において、符号１００は、一般的なシステム構築のフェーズとフェーズに応じた検討項目を列挙しており、実体の裏づけのない抽象的システム要求を出発点として、最終的にそれを実現する物理的手段を具体化する流れを示している。符号１１０は、シミュレーション装置であって、前記実施形態と同様にタスク記憶部、状態検出手段、制御手段（工程制御手段）、表示手段等を有しており、また自律的タスク順次起動機能、リソースコンフリクト調停機能、リソース予約／予約解除機能をオン、オフできる機能を装備している。さらに、このシミュレーション装置１１０は、前述した仕様記述を入力として、シミュレーションを自動生成する機能を有する。
【００９６】
シミュレーションは、例えば図１１に示す書式の形で仕様が記述されていれば曖昧なく自動生成できる。すなわち、シーケンスは厳密に定義されており、タスクは単なる時間経過なので、仮想リソース（またはタスク）の形状、レイアウトを予め決めておけばシミュレーションに必要なすべての条件が与えられたことになるからである。図１１および図１２の書式からシミュレーションを自動生成するフローを、図１を参照しながら図１６に基づいて、より詳細に説明する。また、図１７には、図１２の書式から自動生成されたシミュレーションのイメージを示す。
【００９７】
図１１は、リソース欄が空白のシミュレーション仕様である。第２列のタスク名は漏れなく記載されており、その目安時間は第６列に記入されている。第１列と第４列の状態レジスタ関連情報も漏れなく記入されている。図１２は、図１１で空白であったリソース名を埋めたものである。シミュレーション自動生成は、これらの仕様から一意的にシミュレーションを作ることを意図している。図１１からは、仮想リソースからの制約のないシミュレーション（以下、抽象プロセスシミュレーションと称する）を作り、図１２からは仮想リソースによる制約を踏まえたシミュレーション（以下、概略実体シミュレーションと称する）を作る（図１１および図１２の例は、たまリソース予約／予約解除命令が含まれていないが、図１６のフローチャートは、リソース予約／予約解除も考慮している）。
【００９８】
シミュレーション自動作成のためには、まず仕様（スプレッドシート）を読み込み（ステップ１５０）、一意シナリオモジュールの数を数える（ステップ１５２）。その数をＮとする。次に、第３列が空白であるかどうかによって、抽象プロセスシミュレーションか概略実体シミュレーションであるかを判断する（ステップ１５４）。
【００９９】
抽象プロセスシミュレーションと判断したときは、ステップ１５６においてＭ＝１として、最初の一意シナリオモジュールにつき、上から順にタスク（図１１の第２列）を抽出し、図１のタスク記憶手段１８にタスク名とタスクを記憶する。タスクの内容は、状態レジスタの場合は図１１の第４列のレジスタ演算内容であり、ソースの場合は図１１の第６列の発生時間間隔等を踏まえたソースタスクであり、その他の場合は図１１の第６列の時間を採用した単純時間経過タスクである。また、各タスクに対応してタスク名と同名のブロックモデルを生成する（ステップ１５８）。続いて、その一意シナリオモジュールの各タスクが上から順に自律的に起動されるよう、自律的タスク順次起動機能部を設定する（ステップ１６０）。そして、Ｍに１を加算してＭ＞Ｎを判断し（ステップ１６２、１６４）、Ｍ＞Ｎでない場合、ステップ１５８の戻ってステップ１５８からステップ１６４までの以上の処理を、残りのすべての一意シナリオモジュールに対しても行う。
【０１００】
それが終わったら、抽象プロセスシミュレーションの場合は、全部の一意シナリオモジュールから、図１１の第１列の起動条件を抽出し、図１のデータ入力／論理演算部２４に記憶する（ステップ１６６）。このようにして過不足のない抽象プロセスシミュレーションが得られる。
【０１０１】
ステップ１５４において抽象プロセスシミュレーションでないと判断した場合、ステップ１５４からステップ１７０に進んで概略実体シミュレーションであるかを判断し、概略実体シミュレーションと判断した場合には、やはりＭ＝１として（ステップ１７２）、最初の一意シナリオモジュールにつき、図１２からタスクを抽出して、図１のタスク記憶手段１８にタスク名とタスク内容とを記憶する。これは、抽象プロセスシミュレーションの場合と同様である。概略実体シミュレーションでは、それに加えてソース名も記憶する。モデルは、仮想リソースに対応してリソース名と同じ名前のブロックを生成する。ただし、最初から同名のモデル（詳細モデル）が存在するときは生成せず、そのモデルを使用する（ステップ１７４）。続いて、その一意シナリオモジュールの各タスクが上から順に自律的に起動されるよう、自律的タスク順次起動機能部を設定する（ステップ１７６）。その後、Ｍに１を加算してＭ＞Ｎを判断し（ステップ１７８、１８０）、Ｍ＞Ｎでないときにはステップ１７４に戻リ、ステップ１７４ないしステップ１８０の以上の処理を、残りのすべての一意シナリオモジュールに対しても行う。図１７に一意シナリオモジュールと自律的タスク順次起動機能部との関係を図示する。
【０１０２】
それが終わったら、概略実体シミュレーションの場合は、全部の一意シナリオモジュールに対して、同一の仮想リソースに属するタスクを括りだし、仮想リソースのコンフリクトが起こった場合にそれが調停されるように、リソースコンフリクト調停機能部を設定する（ステップ１８２）。また、一意シナリオモジュール全体から、同一の仮想リソースに属するリソース予約／予約解除命令を抽出し、その命令のところで仮想リソースが予約あるいは解除されるようにリソース予約／予約解除機能部を設定する（ステップ１８４）。最後に、全部の一意シナリオモジュールから、図１２の第１列に記載された起動条件を抽出し、図１のデータ入力／論理演算部２４に記憶する（ステップ１８６）。このようにして過不足のない概略実体シミュレーションが得られる。図１７にリソースコンフリクト調停機能部と仮想リソースとの関係、データ入力／論理演算部と状態レジスタとの関係を示す。
【０１０３】
また、シミュレーションをユーザが作成し、編集するのを支援するシミュレーション作成・編集機能、シミュレーション実行機能を有する。また、実行しているシミュレーションから各タスクのシミュレーションにおける稼働時間を抽出し、平均値などの統計処理を行なうタスク時間抽出・処理機能を有する。
【０１０４】
図１０の符号１２０は、シミュレーション仕様書であって、その更新の流れを示す。仕様書１２０は、フェーズが進むにつれて次に示すシミュレーションと歩調を合わせて詳細、厳密化される。同図符号１３０は、シミュレーション装置１１０とシミュレーション仕様書１２０とを活用して実施できるシミュレーションであって、シミュレーションの特徴および検討の流れを示している。
【０１０５】
概念の初期段階では、抽象プロセスシミュレーション１３１を実施する。これは、実体のない抽象プロセスをシミュレーションするもので、シミュレーション装置１１０のリソースコンフリクト調停機能およびリソース予約／予約解除機能はオフする。準備としてまず仕様書１２０を作成する必要があるが、これは要求分析を踏まえて機能を洗い出し、システム要求を満たすように機能（プロセス）の流れを考え、全体仕様を図１１のように記述するのである。仕様書１２０を入力として、シミュレーション装置１１０は、本図に図示しない工程制御手段が仕様書１２０に記載された仕様に基づいて、タスク記憶部とタスク状態情報手段を利用して自動で抽象プロセスシミュレーション１３１を生成する。仮想リソースの制約を度外視してプロセスのみに着目し、各プロセスをプロセスに必要な時間経過タスクとして表現する。要求機能レベルの検討を幅広く迅速に実行できるので、全体のプロセスのあるべき流れについての考えをまとめ、仮想リソースの制約を考慮するに当たっての出発点および方針を整理することができる。
【０１０６】
実体のない抽象プロセスを視覚化するため、各タスクに対応してタスクと同じ名前をした簡単な形状も自動生成する。これらの形状のレイアウトは、手動で編集でき、相互に関連の強いプロセスを近くに置くなど、プロセスの直感的把握に役立てることができる。また、シミュレーション中、各タスクが動いているとき、それを表す形状の色を変化させるとともに、仕様記述の備考欄の文章が、画面上にタスクの形状に付随して表示され、抽象プロセスシミュレーション１３１の内容把握が容易になるようにする。そのイメージを図１４に示す。時間経過を記録するためガントチャートも出力する。
【０１０７】
抽象プロセスシミュレーション１３１でプロセスの流れが固まると、次にどのプロセスをどのような実体に割り当てるか、いわゆる機能配分の検討が必要になる。これは、概略実体シミュレーション１３２で行なう。これは、仮想リソースを意識したシミュレーションであり、より現実に近づく。シミュレーション装置１１０は、自律的タスク順次起動機能、概略実体シミュレーションリソースコンフリクト調停機能、リソース予約／予約解除機能をすべてオンにする。
【０１０８】
抽象プロセスシミュレーション１３１でそれぞれ独立としたタスクを、実体であるリソースに割り当てるのであり、１つのリソースが複数のタスクを受け持つことを意味する。抽象プロセスシミュレーション１３１から概略実体シミュレーション１３２に移るにあたって、同じ仮想リソースに属するタスクが同時に稼動できなくなるだけでなく、実体としてのリソースを考慮するためのプロセス追加、例えば段取り替えの追加などの必要性も出てくる。最初は、リソース予約／予約解除機能を使わず、検討が進むにつれて考慮に入れていく。仕様書１２０は図１２のように記述する。
【０１０９】
すなわち、タスクの記述は、抽象プロセスシミュレーション１３１と同様、単純時間経過で表現するが、リソース名としては、リソース欄に実体名を入れる。シミュレーションは、仕様書１２０からシミュレーション装置１１０が前記と同様に自動生成する。リソースモデルは、仕様書のリソース欄に書かれた名称と一致する形状データが存在し、シミュレーションの中に既に定義されている場合は、その形状を使用し、位置情報も踏襲するが、形状データのないリソースについては、簡単なブロック等の形状を自動生成し、配置も自動で行なう。検討の中で、リソースをより現実的な仮想リソースの形状に置き換え、またレイアウトも手動で編集することによって、徐々に現実世界に近づけていくことができる。また、シミュレーション中、タスクが動いているとき、タスクの属する仮想リソースを表す形状の色を変化させるとともに、仕様記述の備考欄の文章が画面に、仮想リソースの形状に付随して表示され、概略実体シミュレーション１３２の内容把握が容易にできるようにしている。そのイメージを図１５に示す。時間経過を記録するためガントチャートも出力する。これによって迅速にプロセスおよび機器への機能配分、レイアウトの大まかな検討をすることができ、代替案を絞り込み、例えば基本設計のための要求仕様として整理することができる。
【０１１０】
概略実体シミュレーション１３２で機器の識別、台数、ラフなレイアウト、ラフな工程時間、運用が得られたら、次はモザイク状シミュレーション１３３を行なう。これは、前記の概略実体シミュレーション１３２の成果をベースにして、シミュレーション装置１１０のシミュレーション作成・編集機能を用いて仮想リソースの形状・構成、タスク、シーケンスコントロールを洗練していく。
【０１１１】
図１３に示すように、仕様書１２０の記述も概略実体シミュレーションのものを継続的に洗練していく。タスクの仕様が備考欄に書ききれないときは、詳細仕様を呼び出す形にする。この洗練化は、全体を一律に行なうのではなく、目的に応じ、一番効果のあるものから実施する。すなわち、概略実体シミュレーション１３２という全体的に木目の粗いシミュレーションから出発し、必要な時、必要なところから詳細化することによって迅速で高い費用対効果を享受できる。
【０１１２】
優先付けの観点は、シミュレーションの時間推定精度の向上とか、プレゼンテーションに重要な視覚効果などであるが、時間推定精度の向上が目的であれば、固定した時間経過では精度よく近似できないタスク／リソースを洗い出し、それを詳細化するだけで、全体の精度向上に大きく貢献できる。例えば、その時々の経路の長短によって所要時間が大きく変動する天井クレーンのオペレーション等がその典型である。
【０１１３】
詳細シミュレーション１３４は、モザイク状シミュレーション１３３の洗練化が究極まで進んだイメージであり、いわゆるバーチャルシミュレーションである。
【０１１４】
概略実体シミュレーション１３２とモザイク状シミュレーション１３３、詳細シミュレーション１３４とは、相補的に使うのが効果的である。概略実体シミュレーション１３２とモザイク状シミュレーション１３３、詳細シミュレーション１３４との間で、シーケンスコントロールは容易に共通化できる。するとその間の違いは、モデルの形状とタスク挙動の詳細度の違いだけである。概略実体シミュレーション１３２は、各プロセスを表すタスクを単純時間経過としているので、作成の容易で計算時間も速いが、タスクの時間の根拠・信頼性という点で難点がある。
【０１１５】
一方、モザイク状シミュレーション１３３、詳細シミュレーション１３４では、時間の精度は、非常に高く見栄えもよいが、一般に作成に時間がかかるし、実行にも多大の時間がかかる。そこで、モザイク状シミュレーション１３３、詳細シミュレーション１３４で得られた各タスクの所要時間を、シミュレーション装置１１０のタスク時間抽出・処理機能部で抽出・記録しておき、平均値を概略実体シミュレーション１３２のタスクの経過時間として戻せば、概略実体シミュレーション１３２は、精度のよい、かつ迅速なシミュレーションを提供できる。
【０１１６】
以上の考えを応用して、監視・制御システムを構成することができる。シミュレーションの場合には、スプレッドシートに前後関係、因果関係を定義された一意シナリオモジュール内のタスクを、その起動タイミングで起動するが、代わりにそのタスクに対応する実機リソースのオペレーションを起動すれば監視・制御システムとして働く。図２０は、監視・制御システムの概略を示すブロック図である。なお、監視・制御システム１５０の説明においては、前記したシミュレーション装置と対応する部分については、同一の符号を付している。
【０１１７】
図２０において、監視・制御システム１５０は、制御装置１５２と、実際の複数のリソース（実機リソース）１６０（１６０Ａ〜１６０Ｎ）とから構成される。制御装置１５２は、前記のシミュレーション装置とほぼ同様に構成してあり、入力手段１２、工程制御手段１４、タスク状態情報手段１６、実行タスク記憶・実行手段５０、表示手段２２を有する。ただし、この制御装置１５２は、タスク記憶部１８を有しておらず、送受信手段１５４を備えている。また、実機リソース１６０は、制御装置１５２により制御され、監視される。
【０１１８】
各実機リソース１６０は、それぞれ送受信部１６２とリソースコントローラ１６４とオペレーション記憶部１６６（図２１参照）とを有する。実機リソース１６０は、送受信部１６２が通信回線１７０に接続してあるとともに、リソースコントローラ１６４に接続してある。一方、制御装置１５２の送受信手段１５４は、工程制御手段１４と通信回線１７０に接続してある。制御装置１５２は、図２１に示したように、実行タスク記憶・実行手段５０にシステムコントローラ５２と実行タスク記憶部５４とを備える。なお、図２１の場合、制御装置１５２は工程制御手段１４と実行タスク記憶・実行手段５０のみが示してあり、また実機リソース１６０の送受信部１６２が省略してある。
【０１１９】
システムコントローラ５２は、自律的タスク順次起動機能部５６、リソースコンフリクト調停機能部５８、タスク優先度６０、リソース予約／予約解除機能部５９を有する。そして、実行タスク記憶部５４は、スプレッドシートとして作成され、入力された一意シナリオモジュール６２、６４、６６などが記憶される。これらの働きは、図３のそれぞれに対応する機能と同一である。異なるのは、一意シナリオ中のタスク処理である。図３では、一意シナリオ内のタスクが起動されると、シミュレーションモデルとしてのタスクが実行される。これは、図１に示されるタスク記憶手段から当該タスクが選択され、実行タスク記憶・実行手段５０で実行されることを意味する。そして、そのタスクが終了したら自律的タスク順次起動機能部５６に伝えられる。これに対し、図２１では、一意シナリオ内のタスクが起動されると、通信回線１７０を通じて、実機リソース１６０の当該オペレーションの起動要求信号を送信する。そして、実機リソース１６０から、そのオペレーションが完了したという信号を受信して、それを自律的タスク順次起動機能部５６に伝えるのである。自律タスク順次起動機能部５６は、オペレーション完了信号（操作の状態情報）を受けると、次のタスクを起動する。
【０１２０】
すなわち、制御装置１５２は、自律タスク順次起動機能部５６がタスクを起動すると、工程制御手段１４がそのタスクに対応したリソース名と操作（オペレーション）名とをシステムコントローラ５２から受け取る。工程制御手段１４は、オペレーション指示として送受信手段１５４に送信させる。各実機リソース１６０の送受信部１６２は、自分に宛てられたオペレーション指示を受信してリソースコントローラ１６４に転送する。リソースコントローラ１６４は、オペレーション指示の内容を解読し、オペレーション記憶部１６６を検索して対応するオペレーションのプログラムを読み出し、図示しないワークに対する操作を実行する。そして、リソースコントローラ１６４は、ワークに対する操作が終了するとオペレーション完了信号を出力する。このオペレーション完了信号は、送受信部１６２を介して制御装置１５２の送受信手段１５４に送られる。送受信手段１５４が受信したオペレーション完了信号は、工程制御手段１４を介して実行タスク記憶・実行手段５０のシステムコントローラ５２に入力される。これにより、自律的タスク順次起動機能部５６は、タスクの完了を検知し、次のタスクを起動する。
【０１２１】
なお、各実機リソース１６０のリソースコントローラ１６４は、送受信部１６２を介してワークに対する操作の状態を時々刻々制御装置１５２に出力する。制御装置１５２は、工程制御手段１４が送受信手段１５４を介してそれを受信し、実行タスク記憶・実行手段５０のシステムコントローラ５２に転送する。システムコントローラ５２は、その操作情報を実機リソース１６０の動作として表示手段２２に表示する。
【０１２２】
図３と図２１とにおけるタスク（操作）の違いを明示するため、図２１では、図３の対応するタスク名の前にＩＯという文字を付加している。図２１では、ＩＯタスクａ２／リソースＡとリソースａとの通信以外は省略しているが、他のタスク、他のリソースについても同様な通信があることは勿論である。このようにして、図２１では、タイミングよくしかるべきリソースにオペレーションを指示し、また、リソースからそのオペレーションについての完了信号を受け取ることによって、常時工程の全容を把握できるので、過不足のない監視・制御系を構成できる。なお、通信機能の実現は、１対１のワイヤリングでもよいし、ＬＡＮ等のネットワーク構成でもよい。
【０１２３】
【発明の効果】
以上に説明したように、本発明によれば、画面に表示する仮想ワークや仮想リソースを、実際のワーク、実際のリソース（機器など）の形状や寸法、配置ばかりでなく、動作やワークに対する操作なども忠実にモデル化して画像として再現し、モデル化した仮想ワークについての処理工程と、この仮想ワークに対するモデル化した仮想リソースの操作の状態とに基づいて、処理工程に従った仮想リソースと操作とを選択して仮想ワークに対する操作を行なうことにより、実際のシーケンシャルプロセスを視覚的に忠実に再現することができ、現実とよく対応のとれたシミュレーションが可能となる。このため、多品種少量生産などのように、ワークの複雑な流れをも再現することができ、実際の生産設備の設計などが容易に行なえてシステムの構築、コスト節減、工期の短縮、品質の向上などを図ることができる。
【０１２４】
特に、模擬センサともいうべき状態検出手段を設け、工程制御部がこの状態検出手段の出力信号により仮想リソースが仮想ワークに対してないしている操作の状態を判断し、処理工程に従って仮想ワークに対してなす操作を選択して仮想ワークの処理を行なうため、実際のシーケンスコントローラの動作を再現することができ、制御設計を容易に行なうことが可能となる。
【０１２５】
また、本発明のシミュレーションモデルの作成方法によれば、密接に関連した複数の一続きの処理を、モジュールとしてまとめることにより、複雑な制御内容をわかりやすく簡素にすることが可能となり、シミュレーションモデルの構築を容易、迅速に行なうことができる。そして、モジュールの内容および各モジュール間における関係をスプレッドシートとして記載することにより、シミュレーションの内容を厳密でわかりやすいものとすることができ、エンジニア間や顧客の理解を容易にすることができるとともに、シミュレーションモデルの作成作業を直接かつ円滑に行なえる。　そして、モジュールの内容およびモジュール相互の関係をスプレッドシートとして記述することにより、シミュレーションモデルを作成するための工数の削減が図れ、高品質なシミュレーションを構築できるとともに、作成したシミュレーションモデルの高品質な維持、管理、変更などを容易に行なうことができる。
【０１２６】
また、前記のシミュレーション装置の基本機能とシミュレーションモデル作成方法を組み合わせて段階的なシミュレーションを行なうことにより、概念検討段階の迅速な概略シミュレーションから詳細設計、運用段階の忠実な詳細シミュレーションまで連続的に効率よく作成することができる。また、詳細シミュレーションで得られた高信頼性データを概略シミュレーションに戻すことにより、高信頼度の迅速なシミュレーションを得ることができる。また、効率的に実システムの監視・制御システムを構築できる。
【図面の簡単な説明】
【図１】本発明の実施の形態に係る−装置の概略ブロック図である。
【図２】実施の形態に係る実行タスク記憶・実行手段に記憶させたタスクの説明図である。
【図３】他の実施の形態に係る実行タスク記憶・実行手段の説明図である。
【図４】実施の形態に係る一意シナリオモジュールの連結方法を説明する図である。
【図５】実施の形態に係る一意シナリオモジュールを記述したスプレッドシートの一例を示す図である。
【図６】実施の形態に係る一意シナリオモジュールを記述したスプレッドシートの一例を示す図であって、図５に続く一意シナリオモジュールの記載例を示す図である。
【図７】実施の形態に係る一意シナリオモジュールを記述したスプレッドシートの一例を示す図であって、図６に続く一意シナリオモジュールの記載例を示す図である。
【図８】実施の形態に係る玉削り出し処理工程の概念図である。
【図９】一意シナリオモジュールから抜き出した機能ロジックの例を示した図である。
【図１０】実施の形態に係る漠然とした概念からシステムを具体化するシミュレーションシステムの説明図である。
【図１１】実施の形態に係る抽象プロセスシミュレーションを作成する仕様書の記述例を示す図である。
【図１２】実施の形態に係る概略実体シミュレーションの仕様書の記述例を示す図である。
【図１３】実施の形態に係るモザイク状シミュレーションの仕様書の記述例を示す図である。
【図１４】実施の形態に係る抽象プロセスシミュレーションの説明図である。
【図１５】実施の形態に係る概略実体シミュレーションの説明図である。
【図１６】実施の形態に係る仕様書からシミュレーションを自動生成する方法を説明するフローチャートである。
【図１７】実施の形態に係る自動生成されたシミュレーションのイメージを示す図である。
【図１８】シーケンシャルプロセスを説明する概念図である。
【図１９】従来のシミュレーションモデルを作成する方法の一例を示す図である。
【図２０】実施の形態に係る監視・制御システムの概略ブロック図である。
【図２１】実施の形態に係る監視・制御システムの作用の説明図である。
【符号の説明】
１０………シミュレーション装置、１２………入力手段、１４………制御手段（工程制御手段）、１６………状態検出手段（タスク状態情報手段）、１８………タスク記憶手段、２０、５０………実行タスク記憶・実行手段、２２………表示手段、２６………ソースタスク記憶部、２８………リソースタスク記憶部、３０ａ〜３０ｃ、５４………実行タスク記憶部、５２………システムコントローラ、６２、６４、６６………モジュール（第１の一意シナリオモジュール、第２の一意シナリオモジュール、第３の一意シナリオモジュール）、１５０………監視・制御システム、１５２………制御装置、１６０Ａ、１６０Ｂ、１６０Ｃ、１６０Ｎ………実機リソース、１６４………リソースコントローラ、１６６………オペレーション記憶部。
【図１】
2004005431.tif 000009
【図２】
2004005431.tif 000010
【図３】
2004005431.tif 000011
【図４】
2004005431.tif 000012
【図５】
2004005431.tif 000013
【図６】
2004005431.tif 000014
【図７】
2004005431.tif 000015
【図８】
2004005431.tif 000016
【図９】
2004005431.tif 000017
【図１０】
2004005431.tif 000018
【図１１】
2004005431.tif 000019
【図１２】
2004005431.tif 000020
【図１３】
2004005431.tif 000021
【図１４】
2004005431.tif 000022
【図１５】
2004005431.tif 000023
【図１６】
2004005431.tif 000024
【図１７】
2004005431.tif 000025
【図１８】
2004005431.tif 000026
【図１９】
2004005431.tif 000027
【図２０】
2004005431.tif 000028
【図２１】
2004005431.tif 000029