(57)【特許請求の範囲】
【請求項１】
自動でワークを搬送し加工するトランスファラインの生産システムを構成する各種構成要素について構成要素の動作シミュレーションを行なうシミュレーションプログラムを記述した要素定義ファイルをパーソナルコンピュータ内に準備しておくとともに、これらの要素定義ファイルのシミュレーションプログラムに従って、関連する構成要素間で変数をやり取りして前記生産システムのシミュレーションを行なう工程シミュレーションシステムにおいて、
パーソナルコンピュータ内に、前記生産システムの各種構成要素の配置を、工程識別名称と構成要素名称との組み合わせにより記述すると共にワークの流れに沿って記述した文字情報の追加削除等の編集が可能な汎用ソフトウエアを用いて作られる表形式の行、列データであり、表の縦方向にワーク流れ方向を設定し、表の横方向に工程識別名称と構成要素名称とを記述した前記生産システムの工場内の装置配置図である要素配置データと、
要素名称記述部と、変数記述部と、プログラム記述部とから成る前記要素定義ファイルと、
パーソナルコンピュータ上で動作させるシステムプログラムにより構成し、その要素配置データと前記要素定義ファイルを参照して、要素配列と、変数配列と、外部参照変数対応配列と、初期処理プログラム配列と、シミュレーションプログラム配列とを作成するシミュレーション手段と、
作成した初期処理プログラム配列、及びシミュレーションプログラム配列に配列した初期処理プログラムとシミュレーションプログラムを実行して、初期処理と動作シミュレーションを行なうプログラム実行手段とを備え、
前記要素配置データに、前記要素定義ファイルに記述されている変数名を別の変数名に置換するための変数名称置換データを記述可能で、前記シミュレーション手段に、当該変数名称置換データが記述されている変数名を別の変数名とする変数名置換手段を備え、
前記要素定義ファイルは、変数記述部に、内部変数と、外部参照変数と、取出変数の３つの属性を持つ変数を記述し、内部変数を、自己のプログラムで使用する変数と定義し、その初期値と共に記述し、外部参照変数を、他の要素定義ファイルの変数を参照する変数と定義し、要素定義ファイルに参照先変数名または変数テーブル名と、参照先工程名と、モジュール名と共に記述し、取出変数を、他の要素定義ファイルに変数を参照させる変数と定義し、外部参照変数に参照させる要素定義ファイルに取出変数を初期値と共に記述し、
前記変数テーブルは、取出変数としてのテーブル変数を有し、該テーブル変数は複数の構成要素間に亘り同一名称で記述された構成要素の同種変数であり、該テーブル変数をまとめて管理するための登録エリアを前記変数配列内に必要数展開して作成され、
前記要素定義ファイルのプログラム記述部は、初期処理プログラム記述部と、シミュレーションプログラム記述部とを有し、初期処理プログラム記述部には、外部参照変数として変数テーブルが定義されている場合に、変数テーブル名と対応する外部参照変数名とを指定したデータ格納命令である登録手段と、内部変数へのデータ設定を行なうプログラムの命令を記述した初期処理プログラムを記述する一方、シミュレーションプログラム記述部には、夫々の構成要素の動作をシミュレートする命令群から成るシミュレーションプログラムを記述し、
前記要素配列は、当該配列内における構成要素の「要素配列内位置」と、「工程識別名称」と、「構成要素名」と、前記変数配列において要素配列内の各構成要素に対応した変数の「変数先頭位置」と、「個数」とを記録するエリアを備え、
前記変数配列は、当該配列内での各変数の位置データを示す「アドレス」と、前記変数の「属性」と、要素定義ファイルの変数記述部に記述されている各変数の「変数名」と、「値または位置」とを記録するエリアを備え、
前記外部参照変数対応配列は「外部参照変数名」と、「参照先変数名」と、「参照先モジュール名工程名」と、これらの変数を記述した構成要素の前記要素配列内における順位である「要素配列内位置」とを記録するエリアを備え、
前記初期処理プログラム配列と前記シミュレーションプログラム配列は、要素定義ファイルに夫々のプログラムの記述がある場合に、夫々のプログラムを前記要素配列の要素名順に並べて登録して作成した配列であり、
前記シミュレーション手段は、
前記要素配置データから構成要素名称を工程識別名称と組み合わせた状態で順次読み込むステップ（Ｓ１）と、
読み込んだ１行の工程識別名称と、構成要素名称とを順に並べ、構成要素名に関する変数名置換データがあれば、置換後の要素名で構成要素名を置換し、前記要素配列に備えた所定エリアにその要素名を格納して前記要素配列を作成するステップ（Ｓ２）と、
作成した要素配列の要素名から、対応する前記要素定義ファイルを探し出して読み込むステップ（Ｓ３）と、
その要素定義ファイルの変数記述部に記述されている全ての変数名と値とを、変数の属性と共に読み出して前記変数配列の所定エリアに並べて記録し、変数名に関する変数名置換データがあれば、指定された変数名が読み込んだ変数名にあるか検索して、もし置換すべき変数名があれば置換後の変数名を当該配列の「変数名」記録エリアに記録し、「アドレス」記録エリアに各変数の位置を順に付与して前記変数配列を作成するステップ（Ｓ４）と、
外部参照変数が定義されている要素定義ファイルでは、外部参照変数名と、参照先変数名と、参照先工程と、モジュール名とを一行ずつ読み出し、前記外部参照変数対応配列を作成し、前記変数名置換データに参照先要素名の置換変数名があれば、置換後の参照先要素として当該配列の「参照先モジュール名工程名」記録エリアに登録するステップ（Ｓ５）と、
要素定義ファイルに前記初期処理プログラムがあれば、その初期処理プログラムを読み出して前記初期処理プログラム配列に登録するステップ（Ｓ６）と、
前記シミュレーションプログラムを読み込み、前記シミュレーションプログラム配列に登録するステップ（Ｓ７）と、
これらのステップが、要素配置データの末行まで行なわれると、全要素配置についての読み込みを完了させるステップ（Ｓ８）と、
前記変数配列において空白となっている外部参照変数の値または位置を書き込む欄に、対応する取出変数の変数配列内の変数位置を書き込む外部参照変数と参照先変数との対応処理を、前記外部参照変数対応配列を参照しながら行なうステップ（Ｓ９）と、
前記初期処理プログラム配列に並んだ前記初期処理プログラムを、前記プログラム実行手段により実行し、要素定義ファイルにデータ格納命令が記述されている場合には、前記登録手段が実行され、前記データ格納命令で指定した変数テーブル名に対応する内部変数のアドレスを、指定された外部参照変数の値または位置を記憶するエリアに登録された位置データが示すアドレスの値または位置を記憶するエリアに書き込むと共に、変数テーブルの登録個数を登録し、前記変数配列にシミュレーションで用いる全ての内部変数と、外部参照変数と取出変数とテーブル変数を並べて、前記変数配列の参照で各変数の値を認定可能とするステップ（Ｓ１０）と、
パーソナルコンピュータに接続された入力手段からシミュレーションの実行を指示するステップ（Ｓ１１）と、
前記シミュレーションプログラム配列に前記要素配列に従って並べられた前記シミュレーションプログラムを、前記プログラム実行手段によって先頭から順番に記述された命令に従って実行するステップ（Ｓ１２）と、
構成要素を特定してシミュレーション結果表示を指示し、前記要素配列から前記変数配列の変数格納範囲が読み出され、パーソナルコンピュータに接続された出力手段に、工程識別名称、及び構成要素名と共に変数名とその値を表示するステップ（Ｓ１３）と、
を実行することを特徴とする工程シミュレーションシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、複数の加工ユニット、クランプユニット、搬送ユニット等が相互連繋により動作する、例えば，トランスファラインのような生産システムの工程シミュレーションシステムに関するものである。
【背景技術】
【０００２】
従来、このような工程シミュレーションシステムとして、特許文献１には、生産システムの各構成要素のシミュレーションモデルを表形式で表現し、内部記憶部に展開して、関連するモデルの間で関連フレームリストを参照しつつデータのやり取りを行いながらシミュレーションを実行するものが開示され、オペレータ、生産セル、搬送系に関するモデルが例示されている。
また、特許文献２には、工作機械、段取りステーション、搬送装置、加工ワークなどに関する変数データを入力データファイルに入力し、その変数データに基づいて工程シミュレーションを行ない、シミュレート結果を出力するものが記載されている。
特許文献３には、ＬＳＩ製造工程の装置夫々について、シミュレーションモデル及びパラメータが別個に設定できるものが開示されている。
【特許文献１】特開平４−６４１６４号公報
【特許文献２】特開昭６１−６１７５２号公報
【特許文献３】特開平１０−３３５１９３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
本発明は、これらの従来技術に鑑み、シミュレーションプログラム生成が容易なシミュレーションシステムを提供しようとするものである。また、工程の増加、削除等、要素配置データの編集が容易な上記システムを提供することを目的とする。
【課題を解決するための手段】
【０００４】
この発明の工程シミュレーションシステムは、自動でワークを搬送し加工するトランスファラインの生産システムを構成する各種構成要素について構成要素の動作シミュレーションを行なうシミュレーションプログラムを記述した要素定義ファイルをパーソナルコンピュータ内に準備しておくとともに、これらの要素定義ファイルのシミュレーションプログラムに従って、関連する構成要素間で変数をやり取りして前記生産システムのシミュレーションを行なう工程シミュレーションシステムにおいて、
パーソナルコンピュータ内に、前記生産システムの各種構成要素の配置を、工程識別名称と構成要素名称との組み合わせにより記述すると共にワークの流れに沿って記述した文字情報の追加削除等の編集が可能な汎用ソフトウエアを用いて作られる表形式の行、列データであり、表の縦方向にワーク流れ方向を設定し、表の横方向に工程識別名称と構成要素名称とを記述した前記生産システムの工場内の装置配置図である要素配置データと、
要素名称記述部と、変数記述部と、プログラム記述部とから成る前記要素定義ファイルと、
パーソナルコンピュータ上で動作させるシステムプログラムにより構成し、その要素配置データと前記要素定義ファイルを参照して、要素配列と、変数配列と、外部参照変数対応配列と、初期処理プログラム配列と、シミュレーションプログラム配列とを作成するシミュレーション手段と、
作成した初期処理プログラム配列、及びシミュレーションプログラム配列に配列した初期処理プログラムとシミュレーションプログラムを実行して、初期処理と動作シミュレーションを行なうプログラム実行手段とを備え、
前記要素配置データに、前記要素定義ファイルに記述されている変数名を別の変数名に置換するための変数名称置換データを記述可能で、前記シミュレーション手段に、当該変数名称置換データが記述されている変数名を別の変数名とする変数名置換手段を備え、
前記要素定義ファイルは、変数記述部に、内部変数と、外部参照変数と、取出変数の３つの属性を持つ変数を記述し、内部変数を、自己のプログラムで使用する変数と定義し、その初期値と共に記述し、外部参照変数を、他の要素定義ファイルの変数を参照する変数と定義し、要素定義ファイルに参照先変数名または変数テーブル名と、参照先工程名と、モジュール名と共に記述し、取出変数を、他の要素定義ファイルに変数を参照させる変数と定義し、外部参照変数に参照させる要素定義ファイルに取出変数を初期値と共に記述し、
前記変数テーブルは、取出変数としてのテーブル変数を有し、該テーブル変数は複数の構成要素間に亘り同一名称で記述された構成要素の同種変数であり、該テーブル変数をまとめて管理するための登録エリアを前記変数配列内に必要数展開して作成され、
前記要素定義ファイルのプログラム記述部は、初期処理プログラム記述部と、シミュレーションプログラム記述部とを有し、初期処理プログラム記述部には、外部参照変数として変数テーブルが定義されている場合に、変数テーブル名と対応する外部参照変数名とを指定したデータ格納命令である登録手段と、内部変数へのデータ設定を行なうプログラムの命令を記述した初期処理プログラムを記述する一方、シミュレーションプログラム記述部には、夫々の構成要素の動作をシミュレートする命令群から成るシミュレーションプログラムを記述し、
前記要素配列は、当該配列内における構成要素の「要素配列内位置」と、「工程識別名称」と、「構成要素名」と、前記変数配列において要素配列内の各構成要素に対応した変数の「変数先頭位置」と、「個数」とを記録するエリアを備え、
前記変数配列は、当該配列内での各変数の位置データを示す「アドレス」と、前記変数の「属性」と、要素定義ファイルの変数記述部に記述されている各変数の「変数名」と、「値または位置」とを記録するエリアを備え、
前記外部参照変数対応配列は「外部参照変数名」と、「参照先変数名」と、「参照先モジュール名工程名」と、これらの変数を記述した構成要素の前記要素配列内における順位である「要素配列内位置」とを記録するエリアを備え、
前記初期処理プログラム配列と前記シミュレーションプログラム配列は、要素定義ファイルに夫々のプログラムの記述がある場合に、夫々のプログラムを前記要素配列の要素名順に並べて登録して作成した配列であり、
前記シミュレーション手段は、
前記要素配置データから構成要素名称を工程識別名称と組み合わせた状態で順次読み込むステップ（Ｓ１）と、
読み込んだ１行の工程識別名称と、構成要素名称とを順に並べ、構成要素名に関する変数名置換データがあれば、置換後の要素名で構成要素名を置換し、前記要素配列に備えた所定エリアにその要素名を格納して前記要素配列を作成するステップ（Ｓ２）と、
作成した要素配列の要素名から、対応する前記要素定義ファイルを探し出して読み込むステップ（Ｓ３）と、
その要素定義ファイルの変数記述部に記述されている全ての変数名と値とを、変数の属性と共に読み出して前記変数配列の所定エリアに並べて記録し、変数名に関する変数名置換データがあれば、指定された変数名が読み込んだ変数名にあるか検索して、もし置換すべき変数名があれば置換後の変数名を当該配列の「変数名」記録エリアに記録し、「アドレス」記録エリアに各変数の位置を順に付与して前記変数配列を作成するステップ（Ｓ４）と、
外部参照変数が定義されている要素定義ファイルでは、外部参照変数名と、参照先変数名と、参照先工程と、モジュール名とを一行ずつ読み出し、前記外部参照変数対応配列を作成し、前記変数名置換データに参照先要素名の置換変数名があれば、置換後の参照先要素として当該配列の「参照先モジュール名工程名」記録エリアに登録するステップ（Ｓ５）と、
要素定義ファイルに前記初期処理プログラムがあれば、その初期処理プログラムを読み出して前記初期処理プログラム配列に登録するステップ（Ｓ６）と、
前記シミュレーションプログラムを読み込み、前記シミュレーションプログラム配列に登録するステップ（Ｓ７）と、
これらのステップが、要素配置データの末行まで行なわれると、全要素配置についての読み込みを完了させるステップ（Ｓ８）と、
前記変数配列において空白となっている外部参照変数の値または位置を書き込む欄に、対応する取出変数の変数配列内の変数位置を書き込む外部参照変数と参照先変数との対応処理を、前記外部参照変数対応配列を参照しながら行なうステップ（Ｓ９）と、
前記初期処理プログラム配列に並んだ前記初期処理プログラムを、前記プログラム実行手段により実行し、要素定義ファイルにデータ格納命令が記述されている場合には、前記登録手段が実行され、前記データ格納命令で指定した変数テーブル名に対応する内部変数のアドレスを、指定された外部参照変数の値または位置を記憶するエリアに登録された位置データが示すアドレスの値または位置を記憶するエリアに書き込むと共に、変数テーブルの登録個数を登録し、前記変数配列にシミュレーションで用いる全ての内部変数と、外部参照変数と取出変数とテーブル変数を並べて、前記変数配列の参照で各変数の値を認定可能とするステップ（Ｓ１０）と、
パーソナルコンピュータに接続された入力手段からシミュレーションの実行を指示するステップ（Ｓ１１）と、
前記シミュレーションプログラム配列に前記要素配列に従って並べられた前記シミュレーションプログラムを、前記プログラム実行手段によって先頭から順番に記述された命令に従って実行するステップ（Ｓ１２）と、
構成要素を特定してシミュレーション結果表示を指示し、前記要素配列から前記変数配列の変数格納範囲が読み出され、パーソナルコンピュータに接続された出力手段に、工程識別名称、及び構成要素名と共に変数名とその値を表示するステップ（Ｓ１３）と、
を実行することを特徴とする。
【発明の効果】
【０００６】
本願装置では、生産システムの要素配置データを工程識別名称と構成要素名称との組み合わせで記述し、その要素配置データに従って読み込んだ構成要素名称から対応する要素定義ファイルを読み込んでそこに記述されているシミュレーションプログラムをシミュレーションプログラム配列に格納してシミュレーションプログラムを作り、これを実行するようにしたので、要素配置データ上で異なる配置位置にある同一の構成要素は、工程識別名称との組み合わせにより別の構成要素として識別され、同一の構成要素の要素定義データについては、１種類のみ記述しておけば足り、シミュレーションプログラムを生成するに当たっての要素定義データの作成作業が容易となる。また、要素配置データに基づいて、シミュレーションプログラム配列が作成されるので、別のシミュレーションを行なうために要素配置データが変更されたときでも、その変更された配置に対するシミュレーションプログラムを容易に生成できる。
また、文字情報を入力し、追加削除等の編集が可能なソフトウエアを用いて、要素配置データを作成したので、その要素配置データに新たに工程識別名称と構成要素名称の組み合わせを追加したり、削除することがソフトウェアの編集機能を利用して容易に行なうことができ、工程の増加、削除に関して要素配置データを極めて容易に作成できる。
まとめて管理すると都合のよい変数、例えば、機械の故障状態といった変数について、要素定義ファイルに予めその旨を記述しておき、それらの変数を予め準備した変数テーブルでまとめて管理するようにしたので、機械の故障状態を探して作業員が修理に向かう、などのシミュレートをするときに、そのまとまった変数テーブルに対する変数状態の判別を行なうことにより機械の故障状態を探すといったシミュレーションを短い実行時間で行ない得る。
要素定義ファイル内に定義されている変数名称を、外部から別の変数名称に置換できるので、例えば要素定義ファイルにおいて外部参照変数の参照先名称を一般的な変数名称で記述してこれを要素配置データ上の具体的な参照先名称に置換することで、１つの要素定義ファイルを用いて参照先として種々の参照先を指定できる。また、同一加工工程において、同種の加工ユニットが複数配置されるときには、加工ユニットを示す一般的変数を加工ユニットを区別する別の変数名に置換することにより、これらのユニットを、同じ加工ユニットの要素定義ファイルを用いて区別することができる。
また、シミュレーションプログラムをラダー言語方式で記述したので、複雑な分岐命令を使うことなく、構成要素の動作シミュレーションを記述できる。
【実施例】
【０００７】
図１において、本願システム全体構成を示す。シミュレーションシステム１は、シミュレーション目的のために作られたコンピュータプログラムをパーソナルコンピュータＰＣ上で動作させて実現されるものであり、図７に示すフローチャートに従うシステムプログラムにより構成されるシミュレーション手段２により、要素配置データ３と要素定義ファイル４を参照しつつ、後述する要素配列５、変数配列６、外部参照変数対応配列７、初期処理プログラム配列８、シミュレーションプログラム配列９を作成する。また、プログラム実行手段１０は、作成された初期処理プログラム配列８、シミュレーションプログラム配列９に配列された初期処理プログラム、シミュレーションプログラムを実行して、初期処理と動作シミュレーションを行なうものである。パーソナルコンピュータＰＣには、ソフトウエアを起動、停止させるためのマウスやキーボードなどの入力手段１１や、シミュレーション結果を表示するＣＲＴなどの表示装置１２が接続されている。
【０００８】
以下、生産システムとして、前ストッカのワークをコンベアで接続台に送り込み、その接続台に送り込まれたワークを、リフトアンドキャリー方式の搬送装置で加工ステーション（１４０Ｔ・１ＳＴ）と加工ステーション（１４０Ｔ・２ＳＴ）で加工して、排出側の接続台に排出し、その排出側の接続台からコンベアで搬出して後ストッカにストックする、というシステムで説明する。このシステムには、機械保全のための人員が２名（保全メンバＡ，Ｂ）居るものとする。
【０００９】
このような生産システムのシミュレーションを行なうとき、本願シミュレーションシステム１では、先ず、シミュレートしようとする生産システムを構成する構成要素（装置）に関する要素配置データ３を準備する。要素配置データ３は、基本的には工場内の装置配置図である。この要素配置データ３は、文字情報を追加削除、置換などの編集することのできるソフトウエア、例えば、汎用の表計算ソフト（ＭＩＣＲＯＳＯＦＴ社のＥＸＣＥＬ（登録商標））で作成される表形式のデータシートである。表形式のデータシートは、テキストエディタのような編集ソフトで作ってもよい。このデータシートは、図２に示すように、基本的には、列（表の縦方向：行並び方向）にワーク流れ方向が設定され、行（表の横方向：列並び方向）には、工程識別名称と構成要素名称とが、工程識別名称で区別される工程ごとに１行ずつ記述されている。具体的には、各行のＢ列セルにモジュール名が、Ｃ列セルには工程名が、Ｄ列セル以後の任意なセルには、構成要素名称が記述されている。工程識別名称は、同一行のモジュール名と工程名から成り、工程名が省略されている場合もある。１つの要素配置データ３内で、工程識別名称は全て互いに異なる名称となるように記述されている。
【００１０】
構成要素は、同一仕様のものについては同じ名称で記述されている。ここでは、２つの加工ユニットがすべて同一の”ユニット１”であり、２つのジグが全て同一の”ジグ１”でり、さらに２つのコンベア、接続台、保全メンバも夫々同一の仕様であるものとして、各同一名称で記述している。実際の工場には配置されることのない構成要素が、この要素配置データ３に記述されている。構成要素”総合１”は、モジュール１４０Ｔ内で、シミュレーション実行時にまとめて管理するのが便利な変数情報を集めておくための要素であり、後述のように、２つのジグ１のアンクランプに関する変数をまとめて管理する”アンクランプＴ”テーブルや図示しないが、各ユニット１の”原位置”データをまとめて管理する変数テーブルを持ち、ＬＦ搬送に対して、そのアンクランプ情報を基にして、全てのジグがアンクランプし、かつ、全てのユニットが原位置にある時、搬送可能という情報を流すというシミュレーションを行なう。また、構成要素”保全指令１”は、生産システム内でのシミュレーション実行時にまとめて管理するのが便利な変数情報を集めておくための要素であり、具体的には後述するが、例えば、全ての機械の稼動状況や保全メンバの作業状況などのデータを集めておく。
【００１１】
これらの構成要素名称の夫々と対応して、図３〜５に示す要素定義ファイル４、４ａ〜４ｊが夫々予め準備されている。各要素定義ファイル４の一般的構成としては、図３に示すように、先頭に要素名称記述部４Ａ、続いて変数記述部４Ｂ、プログラム記述部４Ｃとから成る。変数記述部４Ｂには、自己のプログラム内で使用する内部変数が初期値と共に記述される他（例えば、ユニット１（加工ユニットである）では、加工時の前進速度や後退速度など）、他の要素定義ファイルの変数を参照する要素定義ファイルにおいてはその変数記述部４Ｂには、参照先変数を指定して外部参照変数を定義し、他の要素定義ファイルに変数を参照させる要素定義ファイルにおいては取出変数を初期値と共に定義するようになっている。
取出変数、外部参照変数を具体的に説明する。外部参照変数は、次のルールで記述されている。
自ファイルでの変数名（外部参照変数）  参照先変数名（又は変数テーブル名）  参照先工程名    モジュール名
【００１２】
参照先工程名、モジュール名は、その外部参照変数が定義される要素定義ファイルの構成要素に対して、相対的な位置関係を示す語を用いて記述されてもよいし、特定のモジュール名、工程名を記述してもよい。相対的位置関係を示す語、とは、”前工程””自工程””次工程”、あるいは”前モジュール”、”自モジュール”、”次モジュール”といった記述である。”前工程”は、自要素に対して要素配列データ３上で同じ列の上側にある構成要素のモジュール名と工程名を示し、”自工程”は、自要素と同一行の構成要素のモジュール名と工程名を示し、”後工程”は、自要素に対して同じ列の下側にある構成要素のモジュール名と工程名を示す。前、自、次モジュール、についても、自モジュールに関する相対的位置を示している。参照先変数名（または参照先変数テーブル名）は、指定されたモジュール、工程内で他の変数名と重複しないようにしてある。
【００１３】
例えば、ユニット１とジグ１とでは、同じ工程に含まれるジグ１のクランプ完了でユニット１が加工を開始し、加工が完了するとその加工完了信号でジグ１がアンクランプする、というシーケンス動作が行なわれるが、この情報のやり取りを行なうために、図５のユニット１の要素定義ファイル４ｇにおいては、”自工程加工準備完了”（外部参照変数）として”自工程”の”加工準備完了”（参照先変数名）を参照する、と定義されている。これに対して、ジグ１では、取出変数として”加工準備完了”（ワーククランプの完了の意味である）が定義されている。また、ジグ１では外部参照変数としての”ユニット加工完了”を”自工程”の”加工完了”を参照すると定義し、ユニット１では、”加工完了”を取出変数としている。従って、これらのジグ１とユニット１とが同じ工程に配置された状態では、ユニット１と同じ行（つまり、自工程）に配列されたジグ１との間で取出変数と外部参照変数が対応することになる。他にも同様の取出、外部参照の関係が、図４においては、接続台とコンベア、接続台とＬＦ搬送との間で例示されている。
【００１４】
参照先変数が変数テーブルである例を説明する。図５のユニット１では、
”保全指令・機械状態    機械状態Ｔ  ＮＯＮＥ  保全指令”
と外部参照変数が定義されている。”ＮＯＮＥ”は、工程名が無いことを示している。要するに、変数”保全指令・機械状態”は、モジュール名”保全指令”の”機械状態Ｔ”という変数テーブルに対応する、ということである。その他の構成要素でも”機械状態”に関する外部参照変数が定義してあり、ジグ１の要素定義ファイル４ｆやＬＦ搬送の要素定義ファイル４ｅにも同様の記述が例示されている。これに対応するように、図５における”保全指令１”の要素定義シート４ｉには、取出変数として、
[１１]機械状態Ｔ    
と記述されている。[  ]内は装置数である。この記述があるときには、後述の変数配列６作成時に、要素定義ファイル”保全指令１”を読み込んだときの配列エリア中に、装置数（ここでは１１）＋１個のデータ登録エリアを展開して、図１２（Ａ）に示すように、”機械状態Ｔ[０]〜機械状態[１１]”までのテーブル変数を持つ”機械状態Ｔ”という変数テーブル２０を作るようになっている。保全指令１と総合１を除く各要素（保全指令１と総合１は、架空要素であるから変数”機械状態”はない）の”保全指令・機械状態”という外部参照変数は、この取出変数としてのテーブル変数”機械状態Ｔ[１]〜[１１]”に順に対応付けられるようにしてある。同様の変数テーブル２０として、図９，１０に示す変数配列６には、保全指令１で作られる”作業員状態Ｔ”テーブルや、総合１で作られる”アンクランプＴ”テーブルが例示されている。
【００１５】
要素配置データ３上で配置した結果、外部参照変数の参照先を、単純に自工程の前、次工程との関連で記述できないような場合がある。たとえば、図２における接続台は、前後の搬送要素を繋ぐものであり、前後の搬送要素を外部参照変数の参照先としている。図２の要素配置データ３では、ワーク流れ方向の上流側のものについては、前工程は”１４０Ｔ・コンベア”であるが、後工程は”１４０Ｔ・１ＳＴ”であって、前後の参照先が整合しない。また、後ろの接続台では、前工程は”１４０Ｔ・２ＳＴ”となり、後工程は”１４０Ｔ・搬出コンベア”であって、これも参照先が整合していない。そこで、図４に示すように、接続台の要素定義ファイル４ｃでは、外部参照変数の参照先工程名として、”後搬送”、”前搬送”といった一般的な変数名称で記述し、要素配置データ３に該一般的な変数名称を別の変数名称に置換する変数名置換データを記述して、シミュレーション手段２の変数名置換手段２ａにより変数名を置換するようにしている。要素配置データ３では、上流側の接続台では、前搬送が”コンベア”であり、後搬送が”搬送”であり、一方、下流側のものでは、前搬送は”搬送”であり、後搬送は、”搬出コンベア”であるから、各接続台に関しては、前搬送、後搬送が違っているので、本来は、別々のコンベアとして要素定義ファイルを作成しなければならないが、このように変数名を置換することで、１つの要素定義ファイルで前、後搬送工程が違っている場合にも対応できるようにしてある。
【００１６】
変数名置換データは、構成要素名の設定されたセルの次セルに記述され、その記述のルールは、
置換後変数名＝置換前変数名
であり、複数の変数を置換したい時には、この記述が同一行に並べて記述される。
このような変数置換は、外部参照変数の参照先工程名に限らず、各要素定義ファイルに記述されている変数名の全てについて置換できる。たとえば、図１６に示すように１４０Ｔ・１ＳＴの２つのユニットは、単純に”モジュール名＋工程名”との組み合わせでは、夫々を区別できないので、この変数名置換手段２ａで、要素名を替えてやるようにすればよい。図１６では、上側のユニット１をＬユニットに、下側のユニット１をＲユニットと置換し、各ユニット原位置も区別するようにしている。
【００１７】
プログラム記述部４Ｃは初期処理プログラム記述部４Ｃ１とシミュレーションプログラム記述部４Ｃ２とを有する。初期処理プログラム記述部４Ｃ１では、前記した変数テーブル２０に、該当する変数の変数位置を格納するためのデータ格納命令（ＳＥＴ  ＴＢＮＯ）や、シミュレーションプログラムを実行するための変数へのデータ設定などが行なわれるプログラムが記述されている。
シミュレーションプログラム記述部４Ｃ２には、夫々の構成要素の動作をシミュレートするプログラムが記述されている。前ストッカでは、後工程となるコンベアからワーク要求信号があって、ストッカ上にワークがあるときには前ストッカ上のワークをコンベアに受け渡すといった動作、コンベアでは、ワークがない時に前工程要素にワーク要求信号を出したり、後工程要素からワーク要求があって前工程要素からワーク受渡しされているときには、前進動作してワークを後工程要素に受け渡すといった動作、接続台は、搬送要素と搬送要素を繋ぐものであって、ワークの有無を判断して前搬送要素にワーク要求信号を出し、あるいは、次搬送要素にワーク準備完了信号を出すといった動作、ＬＦ搬送では、前搬送要素からワーク準備完了信号を受け取り、しかも、自モジュール内の全てのジグ１がアンクランプでユニット１も原位置である場合には、リフトアンドキャリー動作を行ない、ワークを順次搬送するといった動作、ジグ１では、ＬＦ搬送が完了したことを確認してワークをクランプし、ユニット１による加工完了を待ってアンクランプするといった動作、ユニット１では、ジグ１によるクランプを確認して原位置から前進し、加工し、後退して原位置に戻るといった動作、後ストッカでは、ストッカ上にワークが無ければ、前工程要素にワーク要求するといった動作、保全メンバでは、保全を要する機械に対して、予め設定してある保全作業時間が経過したかどうかを判断して、保全作業実行中か、空いているのかなどをシミュレートするプログラムが夫々記述されている。
【００１８】
これらのプログラムは、ストアードプログラムサイクリック処理方式，いわゆるラダー言語方式の命令群で記述されている。例えば、ユニット１について説明すれば、図６の左側に実際のシミュレーションプログラムが示され、右側にそのシミュレーションプログラムをラダー表示したものを示している。
”ＭＯＴＩＯＮ”命令は、動作のシミュレート命令であり、命令の後に、前進動作、後退動作の別が指示され、この命令が実行される度に、動作対象の位置、速度などの変数値が刻々変化していく。”ＴＭＲ”はタイマのシミュレート命令であり、”前進端タイマ設定”という変数に設定された時間が経過すると接点を閉じるというものである。”ＭＯＶ”命令は、前の変数値を、後の変数にコピーするもの、”ＯＵＴ”は、後ろの変数をＯＮ（”１”）とするものである。また、”ＬＤ”命令は、回路ブロックの始まりであり、”ＬＤＦ”は判別を伴った回路ブロックの始まりである。”ＡＮＤ”命令は、論理積、ＡＮＤＮＯＴは否定の論理積、ＡＮＤＦは比較を伴なった論理積、”ＳＵＢ”は先頭の変数から真中の変数値を差し引いて３番目の変数にいれるもの、”ＳＥＴ”命令は、変数に”１”をセットするものである。
【００１９】
プログラムの命令群Ｃ１〜Ｃ８は、ラダー図のＲ１〜Ｒ８に対応しており、両者を対照することで上記命令の意味が理解されることと思われるが、詳細に説明すれば、命令群Ｃ１では、自工程加工準備完了（ジグがクランプ）でユニットが原位置にあり、機械が故障中で無く、加工完了していないときに前進指令を出し、命令群Ｃ２では、前進指令で前進動作させ、命令群Ｃ３では、前進動作の結果、前進端に至ったら前進端タイマをＯＮとし、命令群Ｃ４では、前進端タイマが設定された時間経過したら加工完了とし、命令群Ｃ５、Ｃ６では、加工完了してユニットが原位置になければ後退指令を出して後退動作させるというものである。
【００２０】
また、命令群Ｃ７以下は故障発生に関するシミュレーションプログラムであり、”故障発生時間ｃｏｕｎｔ”という変数が”０”以上で、故障発生実行という変数が”０”以上（これは故障を発生させる、という意味である）であることを判断して、両方の条件が整えば、”故障発生時間ｃｏｕｎｔ”に設定されている時間データからシミュレーションプログラムを実行させる時の１スキャン分の時間（スキャンピッチ）を差し引いて”故障発生時間ｃｏｕｎｔ”へ格納するという意味であり、”故障発生時間ｃｏｕｎｔ”には、各機械毎に予め定めてある故障発生までの時間（故障発生時間）を初期処理プログラムでコピーしてあるので（図５のユニット１の定義ファイル４ｇにおける初期処理プログラム（ＭＯＶ）を参照）、ここではシミュレーション開始からの経過時間を故障発生時間から減じるという計算をしている。次の命令群Ｃ８では、命令群Ｃ７での演算結果が、”０”以下となった、つまり、故障発生するだけの時間が経過したことを判断し、そのときに機械状態が”ゼロ”（故障していない）であれば、機械状態という変数を”１”（故障）とするというシミュレーションを行なっている。命令としてはこの他にもいくつか準備され、各構成要素の動作シミュレーションを行なうのに必要な命令群を構成している。別の命令としては、変数テーブル２０に対して一定の条件で検索を行なう命令や、回転動作をシミュレートするための命令などもある。このようなラダー記述方式では、ある命令群で記述した条件が整わない場合は、次の命令群を処理する、というようにシーケンシャルに処理が行なわれるので、いくつかの条件に応じていくつかの処理を行なわせるような場合、複雑なＩＦ文で、プログラム処理の飛び先をいくつか指定するような形式の条件式に比べて、簡単な記述となって扱いやすい。
【００２１】
次に図７に示すフローチャートに従って、本願システムの動作を各配列作成と共に説明する。先ず、ステップＳ１（要素配置データ読み込み手段）で、準備された要素配置データ３を１行読み込む。ステップＳ２で読み込んだ１行のモジュール名、工程名、要素名を順に図８に示す要素配列５の一行に並べていく。モジュール名の前には要素配列５内の位置を示すアドレスが記録され、その要素配列５内の位置に示されるアドレスは、要素配置データ３を１行読むと１ずつ増えていく。また、要素名の後ろには、後述の変数配列６における各要素に対応した変数の格納位置が、先頭変数位置と変数個数で格納されるエリアが設けられる。このとき、要素名に関する変数名置換データがあれば、置換後の変数名で要素名を置換する。
【００２２】
次に構成要素名から対応する要素定義ファイル４ａ〜４ｊを探し出して読み込む（ステップＳ３：要素定義ファイル読み込み手段）。ステップＳ４（変数配列作成手段）で定義ファイル４の変数記述部４Ｂに記述されている全ての変数名と値とを、変数の属性（内部変数、取出変数、外部参照変数）と共に読み出し、図９，１０に示すように変数配列６に並べる。属性の前側に変数配列６内での各変数の位置を示すアドレスが順に付されていく。ここでも、変数名に関する変数名置換データがあるときには、指定された変数名が読み込んだ変数名にあるか検索して、もし置換すべき変数名があれば置換後の変数名を変数配列６に記録する。外部参照変数は、変数名の後ろには、参照先変数名と参照先工程・モジュール名が記述されていて、具体的な数値が入っていないので、このステップＳ４の時点では属性と変数名のみを読み込み、値は空白である（図１１（Ａ），１２（Ａ））。変数テーブル２０も同様に読み込まれる。前述のように変数テーブル２０では、宣言された登録エリア＋１の登録エリアを持つ変数テーブル２０に展開されて変数配列６内に登録される。
【００２３】
また、外部参照変数が記述されている要素定義ファイルでは、外部参照変数名、参照先変数名、参照先工程、モジュール名が一行ずつ読み出され、図１３に示す外部参照変数対応配列７を生成する。この配列を生成するときも、変数名置換データに、参照先要素名の置換変数名があれば、置換後の参照先要素として配列に登録する。例えば、１４０Ｔ・接続台・接続台では、要素定義ファイル４ｃに記述の外部参照変数において、”前搬送”が”コンベア”に置換され、”後搬送”が”搬送”と置換されて登録される。
次にステップＳ６で、要素定義ファイル４に初期処理プログラムがあれば、その初期処理プログラムが読み出されて図１４に示すように初期処理プログラム配列８に登録される。ステップＳ７（シミュレーションプログラム配列作成手段）では、要素定義ファイル４のシミュレーションプログラムが読み出されて図１４に示すようにシミュレーションプログラム配列９に登録される。これらのプログラムの読み込みの際、プログラム中で使用する変数は、前記変数配列６に配列された当該変数の変数位置（アドレス）と対応付けられる。以上の処理が、要素配列５データを１行読んで、１つの要素定義データを読み込むたびに行なわれ、この作業が、要素配列５データの末行まで行なわれるとステップＳ８で全要素配置についての読み込みが完了する。
【００２４】
この時点では、外部参照変数と参照先変数との対応が取れていないので（図１１（Ａ））、ステップＳ９（変数対応手段）でその対応処理が前記外部参照変数対応配列７を参照しながら行なわれ、変数配列６において空白となっている外部参照変数の値／位置の欄に、対応する取出変数の変数配列６内の変数位置（アドレス）が書き込まれる。例えば、図１１（Ａ）において１４０Ｔ・１ＳＴ・ユニット１の外部参照変数”自工程加工準備完了”には、同じ工程のジグ１の取出変数”加工準備完了”が対応しているので、外部参照変数”自工程加工準備完了”には、アドレスＲ５が図１１（Ｂ）のように登録される。
【００２５】
取出変数として変数テーブル２０が登録されている場合には、その変数テーブル２０に対応する外部参照変数の値／位置欄には、変数テーブル２０の変数配列６内での位置が順に登録されていく。図１２（Ａ）に示すように、前述の”機械状態Ｔ”という変数テーブル２０の各テーブル変数には、各機械の外部参照変数”保全指令・機械状態”が対応しているので、変数配列作成当初には空白であった各機械の”保全指令・機械状態”の値／位置欄、例えば”保全指令・機械状態”という変数を持つ要素配置データ３で６つ目の要素（１４０Ｔ・１ＳＴ・ユニット１）の変数”保全指令・機械状態”には、変数テーブル”作業状態Ｔ”の６番目の取出変数の変数位置（ここではＴ０＋６）が登録される（図１２（Ｂ））。
【００２６】
次に、ステップＳ１０で初期処理プログラムが実行される。初期処理プログラム配列８に並んだ初期処理プログラムが一命令ずつ、プログラム実行手段１０により実行される。初期処理プログラムとして、”ＳＥＴ  ＴＢＮＯ”命令が実行されると、そこで指定された変数の変数配列６内位置データを、指定された外部参照変数の示すテーブル変数の値／位置欄に書き込み、同時に、そのテーブル変数の先頭テーブル変数”作業状態Ｔ[０]”のデータとしての登録個数を”１”加算する、という作業が行なわれる。上述の１４０Ｔ・１ＳＴ・ユニット１では、
ＳＥＴ  ＴＢＮＯ    ”機械状態”データ位置    保全指令・機械状態  
と記述され、変数”機械状態”の変数配列６内位置データ（Ｑ６）を”保全指令・機械状態”の示すアドレス”Ｔ０＋６”の変数”機械状態[６]の値欄に書き込むということが行なわれる（図１２（Ｃ））。同様の処理が、「アンクランプＴ」という変数テーブル２０と２つのジグ１の変数”アンクランプ”との間で行なわれている点が例示されている（図９）。”ＳＥＴ  ＴＢＮＯ”命令は、変数テーブル２０に対応する変数位置とテーブルへの登録数を登録する登録手段を構成する。
【００２７】
こうして、図９、図１０に示すように、変数配列６に、シミュレーションで用いる全ての内部変数、外部参照変数、取出変数が並べられ、外部参照変数と取出変数が対応付けられ、かつ、まとめて管理すると好適な変数とその変数をまとめて管理する変数テーブル２０とが対応付けられたので、全ての変数は、この変数配列６を参照することで値を知ることができる。
ついで、入力手段からシミュレーションの指示があると（ステップＳ１１）、ステップＳ１２では、シミュレーションプログラム配列９に要素配列５に従って並べられたシミュレーションプログラムが、プログラム実行手段１０によって先頭から順番に記述された命令に従って実行される。シミュレーションプログラムは、各命令の記述が文字情報であるので、その命令を読む都度、プログラム実行手段１０が文字情報による命令記述を解釈して実行してもよいが、予め各命令をそれらの各命令に対応して設定された数値に置き換えておき、その命令に対応する数値を読み出して、その数値に対応した命令処理をプログラム実行手段１０が実行するようにすると、実行速度が上がって好ましい。シミュレーションプログラムが実行されると、変数配列６の対応する変数の値が刻々と変化する。
【００２８】
シミュレーションプログラムは先頭から末尾まで一定のスキャンピッチ（シミュレーションする上での経過時間：例えば０．１秒間隔）で繰り返し実行され、実行に当たって、変数配列６の各変数が参照される。このスキャンピッチは任意に設定でき、たとえば、実際の機械の動作時間（実時間）でシミュレーションするように設定することもできるし、逆に短くして早送りのようにシミュレーションすることも可能である。外部参照変数では、参照先変数が、その外部参照変数の示すアドレス（変数配列内位置）を頼りに読み出される。シミュレーションする上で所定の時間経過した時点で（あるいは１スキャン終わるごとに）、実行を停止できる。ステップＳ１３により、構成要素を特定してシミュレーション結果表示が指示されると、要素配列５から変数配列６の変数格納範囲が読み出され、コンピュータに接続された出力装置（ＣＲＴ）１２上に、工程識別名称、構成要素名と共に変数名とその値が表示され、これにより、シミュレーション結果を確認できる。構成要素を表示画面上でアニメーション表示するようにし、変数値の変化をアニメーションで動作表示させると、なお判りやすい。
【００２９】
シミュレーションプログラムの実行時、保全指令１では、”機械状態Ｔ”テーブルを用いて全ての機械状態（異常なしか、故障中か）を判断し、”作業員状態Ｔ”テーブルにより空いている保全メンバを検索して、空いている保全メンバを要修理機械の修理に向かわせる、といったシミュレーションが行なわれる。
【００３０】
このようなシミュレーションにおいて、変数テーブル２０として”機械状態Ｔ”テーブルを持たなくても、変数配列６を先頭から末尾まで順に検索すれば、全ての”機械状態”データを知ることができるが、本願では、構成要素ごとの機械状態データについて、その変数位置（変数配列６内でのアドレス）をまとめて”機械状態Ｔ”テーブルに集約しているため、その限られた記憶領域のデータについて参照することで短時間で全ての”機械状態”データを知ることができ、シミュレーションプログラム実行時間を短くできる。
【００３１】
こうしてある要素配置データ３に関するシミュレーションを行なうことができるが、更に１４０Ｔ・２ＳＴの後に１４０・２ＳＴと同じ工程を増やしてシミュレーションしたい場合には、要素配置データ３に、表計算ソフトの編集機能を利用して１４０Ｔ・２ＳＴの１行をコピーして１４０Ｔ・２ＳＴの下に１行追加してこれを１４０Ｔ・３ＳＴとし、この加工工程（ジグ１、ユニット１）の追加により変更しなければならない関連するデータ（例えば、”アンクランプＴ”テーブルのデータ登録エリア数、”機械状態Ｔ”テーブルのデータ登録エリア数など）を修正して、図７に示すプログラムを実行してやれば、追加したジグ１とユニット１間での変数間対応については、要素配置データ３上での配置により、ジグ１、ユニット１の要素定義データにおいて記述されている相対的な参照先指示により一義的に定まるから、要素定義データに変更がない限り、新たに追加した工程を含んだシミュレーションプログラム配列９、変数配列６、その他の配列が作成されることになり、そのようにして作られたシミュレーションプログラム配列９で並べられた一連のシミュレーションプログラムを実行すれば、別の工程編成による工程シミュレーションが容易に実行できる。
【図面の簡単な説明】
【００３２】
【図１】本願シミュレーションシステムの全体ブロック図である。
【図２】要素配置データを示す図である。
【図３】要素定義ファイルの一般的形態を示す図である。
【図４】要素定義ファイルの具体例である。
【図５】要素定義ファイルの具体例である。
【図６】シミュレーションプログラムの具体的記述を説明する図である。
【図７】本願シミュレーションシステムのフローチャートである。
【図８】要素配列を示す図である。
【図９】変数配列を示す図である。
【図１０】変数配列を示す図であり、図９の続きである。
【図１１】外部参照変数と取出変数の対応を説明する図である。
【図１２】変数テーブルと外部参照変数との対応を説明する図である。
【図１３】外部参照変数対応配列を示す図である。
【図１４】初期処理プログラム配列を示す図である。
【図１５】シミュレーションプログラム配列を示す図である。
【図１６】変数名置換データを適用した他の例である。
【符号の説明】
【００３３】
１  シミュレーションシステム
２  シミュレーション手段
２ａ  変数名置換手段
３  要素配置データ
４・４ａ〜４ｊ  要素定義ファイル
４Ａ  要素名称記述部
４Ｂ  変数記述部
４Ｃ  プログラム記述部
５  要素配列
６  変数配列
７  外部参照変数対応配列
８  初期処理プログラム配列
９  シミュレーションプログラム配列
１０  プログラム実行手段
２０  変数テーブル
ＰＣ  パーソナルコンピュータ
【図１】
0004707946.tif 000002
【図２】
0004707946.tif 000003
【図３】
0004707946.tif 000004
【図４】
0004707946.tif 000005
【図５】
0004707946.tif 000006
【図６】
0004707946.tif 000007
【図７】
0004707946.tif 000008
【図８】
0004707946.tif 000009
【図９】
0004707946.tif 000010
【図１０】
0004707946.tif 000011
【図１１】
0004707946.tif 000012
【図１２】
0004707946.tif 000013
【図１３】
0004707946.tif 000014
【図１４】
0004707946.tif 000015
【図１５】
0004707946.tif 000016
【図１６】
0004707946.tif 000017