(57)【要約】【課題】従来のソフトウエアのソースコードを用いて従来よりもわかりやすく保守しやすいプラントモデルを正確かつ効率的に再構築する。【解決手段】プラントモデル作成システム１０は、ソフトウエアのソースコードから変数の種類を判定する入出力抽出処理部２１、サブプログラム間の参照をローカル変数で行うサブプログラムを生成する引数化処理部２３、サブプログラムのプログラム構成ツリーと変数の入出力関係表を生成する接続関係情報抽出処理部２２、プログラム構成ツリー、入出力関係表および部品データを参照してソフトウエア部品を配置して結線する部品群配置結線処理部２５、結線後のモデルプログラムのプログラムについてソースコードを生成するプログラムソースコード生成処理部２６およびプログラムを計算し評価する計算評価部２７を備えたソフトウエア部品再構築処理手段１４を具備する。【選択図】  図１
2011034179.tif 000002
【特許請求の範囲】
【請求項１】
既存のソフトウエアからソフトウエア部品を再構築するソフトウエア部品再構築処理手段を具備し、前記ソフトウエア部品再構築処理手段は、
前記既存のソフトウエアのソースコードから、入力変数、出力変数、および、入力と出力の両方が存在する変数のうち、何れの変数であるかを判定する入出力抽出処理部と、
前記既存のソフトウエアに対して、グローバル変数でのサブプログラム間の参照をローカル変数での参照に置き換えたサブプログラムを生成する引数化処理部と、
前記入出力抽出処理部の変数判定結果および引数化処理部の生成したサブプログラムを用いて、前記サブプログラムをモデルオブジェクトとして認識し呼び出し関係を定義したプログラム構成ツリー情報および前記変数の入出力関係情報を生成する接続関係情報抽出処理部と、
前記プログラム構成ツリー情報および入出力関係情報に基づいて、予め生成しておいた部品データから所定の部品を呼び出して部品を配置し、配置した部品同士を結線する部品群配置結線処理部と、
前記部品群の配置および結線の状態と入出力関係情報に基づいてプログラムのソースコードを生成するプログラムソースコード生成処理部と、
前記プログラムソースコード生成処理部が生成したプログラムを計算し評価する計算評価部とを備えることを特徴とするプラントモデル作成システム。
【請求項２】
予めユーザーが定義したアイコンと、前記引数化処理部が引数化したサブプログラムに登場する部品名とを対応付けてソフトウエア部品を生成する部品化処理部をさらに備えることを特徴とする請求項１に記載のプラントモデル作成システム。
【請求項３】
前記接続関係情報抽出処理部は、プログラム構成ツリー情報および入出力関係情報を編集可能に構成されたことを特徴とする請求項１又は２に記載のプラントモデル作成システム。
【請求項４】
前記部品化処理部は、前記ソフトウエア部品を削除可能に構成されたことを特徴とする請求項１乃至３記載の何れか１項に記載のプラントモデル作成システム。
【請求項５】
請求項１または２記載のプラントモデル作成システムにおいて、
前記モデルプログラム再生成する際に、追加・削除されない変数のアドレスは保持されることを特徴とするプラントモデル作成システム。
【請求項６】
請求項１乃至３記載プラントモデル作成システムにおいて、
前記アイコンと対応させた部品は階層構造をもつことを特徴とするプラントモデル作成システム。
【請求項７】
既存のソフトウエアからソフトウエア部品を再構築するソフトウエア部品再構築処理手段を具備するプラントモデル作成システムにおけるプラントモデル作成方法であり、前記ソフトウエア部品再構築処理手段が、
既存のソフトウエアのソースコードから当該ソースコードの中の変数が入力変数、出力変数または入出力変数の何れであるかを判定するステップと、
前記判定ステップでの判定結果を使って前記ソースコードを持つプログラムのプログラム構成ツリーと、当該プログラムのサブプログラム間でやりとりされる変数の入出力関係を規定した入出力関係情報とを抽出するステップと、
前記サブプログラム間におけるグローバル変数での参照をローカル変数での参照に置き換えたサブプログラムを生成するステップと、
前記プログラム構成ツリー、入出力関係情報、サブプログラムおよび予め生成しておいたソフトウエア部品を格納したデータベースを参照して前記ソフトウエア部品を配置し結線するステップと、
前記ソフトウエア部品を結線したプラントモデルのプログラムのソースコードを生成するステップと、
前記プラントモデルと当該プラントモデルの運転手順を示す情報とに基づいてシミュレーションコードを生成し、生成したシミュレーションコードを評価するステップとを備えた処理手順を実行することを特徴とするプラントモデル作成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、シミュレーションモデルを作成する技術に係り、特に、モデルの再構築を正確かつ効率的に行い得るプラントモデル作成システムおよびプラントモデル作成方法に関する。
【背景技術】
【０００２】
原子力プラントにおいては安定運転を確保するために、プラントのプロセス特性や制御装置および操作装置を模擬した運転訓練用シミュレータを用いて、運転訓練が行われている。運転訓練においてはプラントの運転手順に沿った起動停止手順を学習・訓練するとともに、万が一、プラントにおこることが想定される異常事象をシミュレータにより発生させ、これに対する対応操作・措置を訓練する。
【０００３】
訓練においては訓練の条件が実プラントと近いことが訓練の効果を高めるために必要である。模擬している状況が実プラントとプラントの状態、および操作の条件において近いことが臨場感を高めることになる。すなわち、プラントの運転状態の温度、圧力、流量、放射線センサー読み値、スイッチの状態が実プラントの運転状態と近いことの他、運転しているクルーの数、作業の内容が実際の運転の状況とあっていることが望ましい。
【０００４】
このような観点から、プラントの実機と近い環境を作るために多くの機器を模擬するプラントモデル作成システムやプラント模擬装置が提案されている。このような多くの機器を模擬するプラントモデル作成システムやプラント模擬装置では、そのソフトウエアの量は通常膨大なものであり、その開発・製作・保守には多大な労力を要している事情に鑑みて、例えば、特許文献１及び特許文献２に記載されるような労力軽減化を図ったプラントモデル作成システムやプラント模擬装置が提案されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００６−３６００号公報
【特許文献２】特開２００８−２２５８２０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、上述した特許文献に記載されるプラントモデル作成システムに代表される従来のプラントモデル作成システムでは、開発・製作・保守に要する労力の軽減化が必ずしも十分なものではなかった。例えば、上述した特許文献に記載されるプラントモデル作成システムでは、既存のソフトウエアを再利用するため、個別に新しく部品化して再製作する方法が採用されているが、個別の部品化は当該プラントモデル作成システムを使って行ってはいるものの、ユーザーの手作業による入力の負担が多く手間がかかる点は否めないものであった。
【０００７】
そこで、上述した課題を考慮して、再構築する際に、従来のソフトウエアのソースコードよりもわかりやすく保守しやすいソフトウエアとして正確かつ効率的にプラントモデルを再構築し得るプラントモデル作成システムおよびプラントモデル作成方法を提供する。
【課題を解決するための手段】
【０００８】
本発明に係るプラントモデル作成システムは、上述した課題を解決するため、既存のソフトウエアからソフトウエア部品を再構築するソフトウエア部品再構築処理手段を具備し、前記ソフトウエア部品再構築処理手段は、前記既存のソフトウエアのソースコードから、入力変数、出力変数、および、入力と出力の両方が存在する変数のうち、何れの変数であるかを判定する入出力抽出処理部と、前記既存のソフトウエアに対して、グローバル変数でのサブプログラム間の参照をローカル変数での参照に置き換えたサブプログラムを生成する引数化処理部と、前記入出力抽出処理部の変数判定結果および引数化処理部の生成したサブプログラムを用いて、前記サブプログラムをモデルオブジェクトとして認識し呼び出し関係を定義したプログラム構成ツリー情報および前記変数の入出力関係情報を生成する接続関係情報抽出処理部と、前記プログラム構成ツリー情報および入出力関係情報に基づいて、予め生成しておいた部品データから所定の部品を呼び出して部品を配置し、配置した部品同士を結線する部品群配置結線処理部と、前記部品群の配置および結線の状態と入出力関係情報に基づいてプログラムのソースコードを生成するプログラムソースコード生成処理部と、前記プログラムソースコード生成処理部が生成したプログラムを計算し評価する計算評価部とを備えることを特徴とする。
【０００９】
本発明に係るプラントモデル作成方法は、上述した課題を解決するため、既存のソフトウエアからソフトウエア部品を再構築するソフトウエア部品再構築処理手段を具備するプラントモデル作成システムにおけるプラントモデル作成方法であり、前記ソフトウエア部品再構築処理手段が、既存のソフトウエアのソースコードから当該ソースコードの中の変数が入力変数、出力変数または入出力変数の何れであるかを判定するステップと、前記判定ステップでの判定結果を使って前記ソースコードを持つプログラムのプログラム構成ツリーと、当該プログラムのサブプログラム間でやりとりされる変数の入出力関係を規定した入出力関係情報とを抽出するステップと、前記サブプログラム間におけるグローバル変数での参照をローカル変数での参照に置き換えたサブプログラムを生成するステップと、前記プログラム構成ツリー、入出力関係情報、サブプログラムおよび予め生成しておいたソフトウエア部品を格納したデータベースを参照して前記ソフトウエア部品を配置し結線するステップと、前記ソフトウエア部品を結線したプラントモデルのプログラムのソースコードを生成するステップと、前記プラントモデルと当該プラントモデルの運転手順を示す情報とに基づいてシミュレーションコードを生成し、生成したシミュレーションコードを評価するステップとを備えた処理手順を実行することを特徴とする。
【発明の効果】
【００１０】
本発明によれば、プラントモデルを再構築する際に、従来のソフトウエアのソースコードよりもわかりやすく保守しやすいソフトウエアとして正確かつ効率的に行うことができる。
【図面の簡単な説明】
【００１１】
【図１】本発明の実施形態に係るプラントモデル作成システムのシステム構成例を示した概略図。
【図２】本発明が再利用する既存のプログラムのソースの一例を示した説明図。
【図３】本発明に係るプラントモデル作成システムが実行するソースコードソフトウエア部品の再構築処理手順の処理フローを示す説明図。
【図４】本発明の実施形態に係るプラントモデル作成システムの引数化処理部が実行する引数化処理ステップの処理手順を示した説明図。
【図５】本発明の実施形態に係るプラントモデル作成システムの入出力抽出処理部が実行する入出力抽出処理ステップの処理フローを示した説明図。
【図６】本発明の実施形態に係るプラントモデル作成システムにおいて作成される引数定義表の一例を示した説明図。
【図７】本発明の実施形態に係るプラントモデル作成システムの接続関係情報抽出処理部が抽出する接続関係情報としてのプログラム構成ツリーの情報を示した説明図。
【図８】本発明の実施形態に係るプラントモデル作成システムの接続関係情報抽出処理部が抽出した接続関係情報からプログラムのサブプログラム間における変数の入出力関係についてまとめたテーブル（入出力関係表）の一例を示した説明図。
【図９】本発明の実施形態に係るプラントモデル作成システムの引数化処理部が実行する引数化処理ステップ後に得られるソースの一例を示した説明図。
【図１０】本発明の実施形態に係るプラントモデル作成システムの部品データを作成する際に必要となるアイコンの一例を示した説明図。
【図１１】本発明の実施形態に係るプラントモデル作成システムの部品化処理部が作成した部品データの一例およびプログラム再構成の概略例を示す説明図。
【図１２】本発明の実施形態に係るプラントモデル作成システムの部品データに対応する部品の引数定義表であって、（ａ）は部品名「入口境界」の引数定義表、（ｂ）は部品名「出口境界」の引数定義表、（ｃ）は部品名「ポンプ」の引数定義表、（ｄ）は部品名「タンク」の引数定義表を説明する説明図。
【図１３】本発明の実施形態に係るプラントモデル作成システムの部品群配置結線処理部が実行する部品群配置結線処理ステップの処理手順を示した説明図。
【図１４】本発明の実施形態に係るプラントモデル作成システムのプログラムソースコード生成処理部がプログラムの更新・生成の際に作成するメモリーテーブルの一例を示す説明図。
【図１５】本発明の実施形態に係るプラントモデル作成システムのプログラムソースコード生成処理部が作成したプログラムのソースの一例を示した説明図。
【図１６】本発明の実施形態に係るプラントモデル作成システムの計算評価部が実行するシミュレーションコード評価ステップの詳細な処理手順を説明する説明図。
【図１７】本発明の実施形態に係るプラントモデル作成システムにおいて、既存のプログラム構成ツリーを部品追加等によって変更した後のプログラム構成ツリーを示した説明図。
【図１８】本発明の実施形態に係るプラントモデル作成システムにおいて、プログラム構成ツリーの変更に伴い変更された後の入出力関係表を示した説明図。
【図１９】本発明の実施形態に係るプラントモデル作成システムの部品群配置結線処理部が実行する部品群配置結線処理ステップによって変更後のプログラム構成ツリーに対応した部品を配置し結線して作成された結線図を示す説明図。
【図２０】本発明の実施形態に係るプラントモデル作成システムのプログラムの更新・生成の際に作成されるメモリーテーブルの一例であり、プログラムソースコード生成処理部がプログラムを更新した後のメモリーテーブルを示す説明図。
【図２１】本発明の実施形態に係るプラントモデル作成システムで実行されるプログラムソースコード生成処理ステップのサブステップであるメモリーテーブル更新処理ステップの処理フローを示した説明図。
【図２２】本発明の実施形態に係るプラントモデル作成システムで再利用するプラントプログラムに含まれるタンクプログラム（サブプログラム）のソース（引数化処理前）を示した説明図。
【図２３】本発明の実施形態に係るプラントモデル作成システムで再利用するプラントプログラムに含まれるタンクプログラム（サブプログラム）のソースから得られる情報を示す図であって、（ａ）は引数定義表の例を示した説明図、（ｂ）はプログラム構成ツリー情報を示した説明図、（ｃ）は入出力関係表の一例を示した説明図。
【図２４】本発明の実施形態に係るプラントモデル作成システムで再利用するプラントプログラムに含まれるタンクプログラム（サブプログラム）に対して引数化処理ステップ後のソースを示した説明図。
【図２５】タンクプログラム（サブプログラム）を有するプラントプログラムに対して本発明の実施形態に係るプラントモデル作成システムの部品化処理部が作成した部品データの一例およびプログラム再構成の概略例を示す説明図。
【発明を実施するための形態】
【００１２】
以下、本発明の実施形態に係るプラントモデル作成システムの実施形態について、図面を参照して説明する。
【００１３】
図１は、本発明の実施形態に係るプラントモデル作成システムの一実施例であるプラントモデル作成システム１０のシステム構成例を示した概略図である。
【００１４】
プラントモデル作成システム１０は、ハードウエア資源であるコンピュータとソフトウエア資源であるソフトウエア部品再構築処理プログラム（以下、ソフトウエア部品再構築処理ＰＧと称する。）１１とが協働することによって実現されるシステムであり、サブプログラム間の変数の取り合いをローカル変数（ＦＯＲＴＲＡＮ言語では引数）で取り合うようにして処理を実行するシステムである。
【００１５】
図１に示されるプラントモデル作成システム１０は、操作の入力を受け付ける入力手段１２と、処理実行結果等の視覚的な情報をユーザーに提示する表示手段１３と、既存のソフトウエアからソフトウエア部品を再構築するソフトウエア部品再構築処理手段１４と、プログラム、ファイル、データベース等の電子的な情報を記憶して格納可能な記憶領域を有する記憶手段１５と、を具備する。
【００１６】
ソフトウエア部品再構築処理手段１４は、入出力抽出処理部２１と、接続関係情報抽出処理部２２と、引数化処理部２３と、部品化処理部２４と、部品群配置結線処理部２５と、プログラムソースコード生成処理部２６と、計算評価部２７とを備える。
【００１７】
入出力抽出処理部２１は、既存のソフトウエアのソースコードから何れの種類の変数であるか、すなわち、入力変数、出力変数または入力と出力の両方が存在する変数（以下、入出力変数と称する。）の何れであるかを判定する機能を有し、当該機能に基づいて入力変数、出力変数または入出力変数の何れであるかを判定する。
【００１８】
接続関係情報抽出処理部２２は、接続関係情報を抽出する機能を有し、当該機能に基づいて接続関係情報を抽出する。ここで、接続関係情報とは、後述する図７に一例として示されるプログラム構成ツリーの情報と、後述する図８（図６）に一例として示される入出力関係の情報とを含む。
【００１９】
また、接続関係情報抽出処理部２２は、接続関係情報の抽出のみならず、一度抽出され作成されたプログラム構成ツリーの情報および入出力関係の情報を編集（追加や削除等）する機能を有し、当該機能によって、プログラム構成ツリーや入出力関係表の編集を行うことができる。
【００２０】
引数化処理部２３は、ソースコードにおけるコモンラベルの変数をいわゆる引数に追加していく機能を有する。引数化処理部２３は、当該機能を用いて、プログラムを引数化する。具体的には後述する図４に示される処理を行い、既存のソースを後述する図９に示されるソースとする処理を実行する。これによって、再構築後のプログラムにおいて、サブプログラム間の変数の取り合いをローカル変数（ＦＯＲＴＲＡＮ言語では引数）で取り合うようにすることができる。
【００２１】
部品化処理部２４は、予めユーザーが定義したアイコンと、引数化処理部２３によって引数化されたサブプログラム２９に登場する部品とを対応付ける機能を有する。また、部品化処理部２４は、生成したソフトウエア部品のうち不要となったものを削除したり複製したりする機能（ソフトウエア部品編集機能）を有する。
【００２２】
部品化処理部２４は、図３に示されるソースコードソフトウエア部品再構築処理手順（ステップＳ１〜ステップＳ４）のステップＳ２の処理（より詳細には図１０に示される処理）を実行することで、アイコンとサブプログラムに登場する部品名とを対応付けてソフトウエア部品を生成することができる。
【００２３】
部品群配置結線処理部２５は、プログラム構成ツリーおよび入出力関係表（接続関係情報）に基づいて、予め生成しておいた個々の部品から所定の部品を呼び出して部品を配置したり、配置した部品と部品とを結線したりする機能を有し、当該機能に基づいて複数の部品を結線して構成されるモデルプログラム（本実施例ではプラントモデル）の作成をユーザーが容易に行えるようにする。
【００２４】
プログラムソースコード生成処理部２６は、部品群の配置および結線の状態と入出力関係情報に基づいてプログラムのソースコードを生成する機能を有し、当該機能に基づいてプログラムのソースコードを生成する。
【００２５】
計算評価部２７は、プログラムについて計算し評価する機能を有し、当該機能に基づいて、プログラムソースコード生成処理部２６が生成したソースコードに係るプログラムを評価する。
【００２６】
尚、プラントモデル作成システム１０の入力手段１２、表示手段１３、ソフトウエア部品再構築処理手段１４および記憶手段１５は、必ずしも同一のコンピュータ内に存在することを要しない。ソフトウエア部品再構築処理手段１４と入力手段１２、表示手段１３および記憶手段１５がアクセス可能に構成されていれば良く、これらの手段が幾つかのコンピュータに分散して配置されていても構わない。
【００２７】
次に、図１に示されるプラントモデル作成システム１０を適用して、既存のシミュレーションソフトを再利用し、保守しやすいモデルプログラムを再構成する処理内容について説明する。
【００２８】
図２は、既存のプログラムのソースの一例を示した説明図である。ここで、符号２９はサブプログラムである。
【００２９】
図２に示されるように、一般的な計算プログラムのソースコードは、例えばＦＯＲＴＲＡＮ言語で言うコモン変数（ＣＯＭＭＯＮ宣言されたグローバル変数）などグローバルな変数がいたるところに使われている。これは、どこからでもこの宣言を共通にもてば値を参照・定義できるが、対象とするプログラムがどの変数を用いているのか、あるいは再びこのサブプログラムを使ったりグローバル変数を変更しようとしたりする場合に、全てのロジックをチェックする必要が出てきてしまう。このことがソフトウエアの部品を再利用する際の妨げになっている。
【００３０】
図２に示される例は、プラントモデルのソースが、境界条件、タンクおよびポンプのソースから構成されていることを示している。そして、このタンクのソースは質量収支および熱収支のサブプログラムから構成されている。各サブプログラム間の変数のやり取りはいわゆるコモン領域を取ってグローバル変数で渡しているものである。
【００３１】
このとき、機器を追加したりした場合には、このグローバル変数を追加し、全てのソースを修正する必要がある。また、使用される変数が陽に定義されているわけでなく、そのソフトウエアとしての外部との関係や入出力が不明確なものとなっている。例えば、ポンプサブプログラムでは、Ｔ３，Ｔ４は使われていないにもかかわらず宣言部分におく必要がある。
【００３２】
尚、図２に示されるソースはメインのサブプログラム以下はサブプログラムのみを呼ぶ構成となっているが、シミュレーションにおけるプログラムは一般的にこのような形にできるので、以下この形式を例について説明する。
【００３３】
図３は、プラントモデル作成システム１０が実行するソースコードソフトウエア部品の再構築処理の手順を示す説明図である。ここで、図３に示される符号３１〜３７は電子的な情報であり、処理の実行に先立って、または事後的に図１に示される記憶手段１５に格納される。また、必要に応じてデータベース化されている場合もある。
【００３４】
図３に示されるように、ユーザーからの処理実行要求があると、ソースコードソフトウエア部品再構築処理手順（ステップＳ１〜ステップＳ４）を開始する。
【００３５】
まず、ステップＳ１では、ソフトウエア部品再構築処理手段１４が、既存のソフトウエアのソースコード３１から入出力および接続関係情報を抽出して引数化する処理を実行する。具体的には、入出力抽出処理部２１がソースコード３１の中の変数が入力変数、出力変数または入出力変数の何れであるかを判定し、当該判定結果を使って接続関係情報抽出処理部２２が接続関係情報３２を抽出する。また、引数化処理部２３はソースコード３１から当該ソースコードに含まれるサブプログラム２９間におけるグローバル変数での参照をローカル変数（いわゆる引数）での参照に置き換えたサブプログラム２９を生成する引数化処理ステップを行う。
【００３６】
続いてステップＳ２では、ソフトウエア部品再構築処理手段１４（具体的には、部品化処理部２４）が、ステップＳ１で抽出された接続関係情報３２と、引数化されたサブプログラム群３３と、予め作成しておいたアイコンとを用いて部品名とアイコン、その他必要な情報を対応付ける部品化処理、すなわち、ソフトウエア部品を作成する。この結果、色々な部品についての部品データ３４が生成される。尚、ソースコードソフトウエア部品再構築処理手順を何度か実施している場合には、ステップＳ２の処理ステップは省略される場合もある。
【００３７】
続いてステップＳ３では、ユーザーが処理実行の入力操作することによって、入力手段１２からソフトウエア部品再構築処理手段１４に与えられた指示に基づいて、ソフトウエア部品再構築処理手段１４、具体的には、部品群配置結線処理部２５が、ステップＳ１で作成された接続関係情報３２とサブプログラム２９の集合であるサブプログラム群３３とステップＳ２で作成された部品データ３４を参照して、必要なソフトウエア部品を配置し結線する。そして、ソフトウエア部品再構築処理手段１４のプログラムソースコード生成部２６が当該結線後の状態（プラントモデル）のプログラムのソースコードを生成する。この結果、プラントモデル３５が生成される。
【００３８】
続いて、ステップＳ４では、ソフトウエア部品再構築処理手段１４（具体的には、計算評価部２７）が、プラントモデル３５に係るプラントの運転手順を示す情報として予め作成しておいた運転手順情報３６を読み出し、シミュレーション手順を設定する。そして、計算評価部２７は、シミュレーションコードを生成し、生成したシミュレーションコードを評価する。評価結果は、計算評価結果情報３７として、例えば、表示手段１２に表示されたり、記憶手段１５に格納されたりする。
【００３９】
図３に示されるステップＳ１〜ステップＳ４の各処理ステップのより詳細な処理内容について図４〜図１６を引用して説明する。
【００４０】
図４は、引数化処理部２３が実行する引数化処理ステップの処理フローを示した説明図である。
【００４１】
引数化処理部２３は、まず、ソーステキストを読み込み（ステップＳ１１）、ブランク、コメントなどを削除、継続行をつなげ、ソーステキストとして有効な部分を抽出する（ステップＳ１２）。そして、使用したプログラミング言語の言語規則に沿って変数を切り出す（ステップＳ１３）。これは、演算記号、括弧などからソース上の変数を切り出し、予約語などを排除することで可能となる。尚、演算記号、括弧などからソース上の変数を切り出し、予約語などを排除する機能は、一般にＦＯＲＴＲＡＮ，Ｃ言語などのコンパイラーにも備えられているので、これを利用して実行することもできる。続いて、引数化処理部２３は、グローバル変数として使われていたものについては、サブルーチンの引数へ上げ、引数を追加する（ステップＳ１４）。以上のステップＳ１１〜ステップＳ１４が引数化処理部２３の行う引数化処理ステップである。
【００４２】
図５は、入出力抽出処理部２１が実行する入出力抽出処理ステップの処理フローを示した説明図である。
【００４３】
入出力抽出処理部２１は、まず、ソースコード３１を読み出してソースの入力を行い（ステップＳ１５）、変数の切り出しを行う（ステップＳ１６）。そして、切り出した変数がはじめに現れない場合、関数・サブプログラムの出力変数である場合または等式の右辺に来ない場合（ステップＳ１７でＮＯの場合）には、当該変数は出力変数であると判定する（ステップＳ１８）。
【００４４】
一方、入出力抽出処理部２１は、切り出した変数がはじめに現れる場合、関数・サブプログラムの入力変数である場合または等式の右辺に来る場合（ステップＳ１７でＹＥＳの場合）には、入力変数または出力変数と判断し（ステップＳ１９）、２回目以降、常に関数・サブプログラムの入力変数かまたは等式の右辺に来る場合（ステップＳ２０でＹＥＳの場合）には、入力変数であると判断する（ステップＳ２１）。また、そうでない場合（ステップＳ２０でＮＯの場合）には、入出力抽出処理部２１は、入力と出力がある変数であると判断する（ステップＳ２２）。すなわち、入出力抽出処理ステップでは、上記三種類に変数は分けられる。
【００４５】
ここで、図２に示されるプログラムに対して入出力抽出処理ステップおよび接続関係情報抽出処理を実行した場合の例を説明する。
【００４６】
図６は、図２に示されるプログラムに対して入出力抽出処理ステップおよび接続関係情報抽出処理を実行して作成される引数定義表の一例を示した説明図である。尚、図６に示される五つの表は、図２に示される五つのサブプログラム２９に対応する。
【００４７】
入出力抽出処理部２１は、図６に示されるように、例えば、質量Ｍ１については流量の差分（Ｗ１−Ｗ２）＊ＤＴが積算されるため、最初に右辺に来ているということで、入力変数と判断するが、更新されるため出力とも判断する。
【００４８】
ここで、図６に示される表のサブプログラム名および変数の型は、同様にソースリストを構文解析して抽出したものである。例えば、サブプログラム名はＳＵＢＲＯＵＴＩＮＥ文の次に来る単語を抽出すればよい。これらの情報は、入出力関係情報に含まれる情報であり、接続関係情報抽出処理部２２によって抽出することができる。尚、図６に示される引数定義表の例コメントについては、通常ソースリストからは抽出できないため、必要に応じてユーザーが入力すればよい。すなわち、コメントは、プログラムの理解に役立つ任意の情報であって、プログラム構造に影響を与える情報ではない。
【００４９】
一方、接続関係情報抽出処理部２２は、プログラムのソースよりそのプログラムが呼んでいるサブプログラムを、例えばＣＡＬＬ文の次に来る単語ということで抽出することができる。
【００５０】
図７は、接続関係情報抽出処理部２２が抽出する接続関係情報としてのプログラム構成ツリーの情報の一例を示した説明図である。
【００５１】
接続関係情報抽出処理部２２は、図７に示されるように、実行順序とコールしているサブプログラムを示しているプログラム構成ツリーを生成することができる。このとき、同一名のサブプログラム名でも計算しようとしている対象が異なることがある点に鑑み、出現順にその対象の番号（オブジェクト番号）を付加するようにする。例えば、図７に示される例では、Ｏｂｊｅｃｔ＿０からＯｂｊｅｃｔ＿４まで番号をつけている。
【００５２】
次に、図８を引用してサブプログラム間における入出力関係の抽出の処理内容について説明する。
【００５３】
図８は、変数のサブプログラム間の入出力関係についてまとめたテーブル（入出力関係表）の一例を示した説明図である。
【００５４】
接続関係情報抽出処理部２２は、接続関係情報３２に含まれる入出力関係情報（図６）とプログラム構成ツリー情報（図７）とを参照して変数のサブプログラム間における入出力関係（サブプログラム間でやりとりされる変数の入出力関係）を規定したテーブル、すなわち、入出力関係表（図８）を作成することができる。
【００５５】
例えば、図６に示される各サブプログラム２９と対応するテーブル（入出力関係情報）をみると、サブプログラムＢＯＵＮＤ＿Ｉにおいて、変数Ｗ１，Ｔ１は出力と定義されている。一方、変数Ｗ１，Ｔ１は、タンクサブプログラムＴａｎｋにおいて、入力と定義されている。この結果、図８に示されるように、変数Ｗ１，Ｔ１は、サブプログラムＢＯＵＮＤ＿Ｉにおいて定義され出力される変数であり、タンクサブプログラムＴａｎｋで入力される変数として関係が規定される。すなわち、出力と入力との対応付けがなされる。他の変数Ｗ２等についても同様に出力と入力との対応付けがなされる。
【００５６】
図９は、引数化処理部２３が実行する引数化処理ステップの結果、図２に示されるソースから得られる引数化処理ステップ後のソースを示した説明図である。引数化処理ステップにおいては、引数化処理部２３が抽出された図６に示されるテーブル（引数定義表）のコモンラベルの変数をいわゆる引数に追加していくことになる。その処理をした結果は例えば図９に示されるようなものとなる。
【００５７】
次に、図３に示されるステップＳ２の部品化処理ステップのより詳細な処理内容について説明する。
【００５８】
部品化処理ステップでは、ステップＳ１で引数化されたサブプログラム２９（図９）とこれに対応する引数定義情報（図６）およびアイコン４０（図１０）が必要となる。アイコン４０は描画ソフトなどでユーザーが予め定義しておく。
【００５９】
図１０は、部品データ３４作成の際に必要となるアイコン４０の一例を示した説明図である。
【００６０】
図１０に示されるように、アイコン４０は、サブプログラム２９の名称と当該サブプログラム２９に登場する部品名とを対応付けて格納しておく。例えば、図１０に示されるアイコン４０ａは、部品番号「Ｎｏ．１」と、部品名「入口境界」と、サブプログラム名「ＢＯＵＮＤ＿Ｉ」と関連付けられて部品化処理部２４が読み出し可能に格納される。他のアイコン４０ｂ，４０ｃ，４０ｄについても同様である。また、部品名はユーザーが定義して決定する。尚、図１０に示されるアイコン４０はモデルを表す図形と結線ができる端点とを有する構成を採用したものであるが、端点は一つの変数または変数の組をまとめたベクトルのようなものでも良い。
【００６１】
部品データ３４の作成は、部品化処理部２４がソースプログラムから解析して抽出されたプログラム構成ツリーと入出力関係表を含む接続関係情報３２と、図６に示されるサブプログラム２９のソースと引数定義表の情報とを参照して、部品名（又は機器名）およびアイコン４０の情報を対応付けすることでなされる。プログラム構成ツリー、入出力関係表、サブプログラム２９のソース、引数定義表の情報およびアイコン４０の情報が対応付けられることで、ソースリストに対応させることができる。
【００６２】
次に、図９に示される引数化されたサブプログラム２９を用いて結線図を構成することについて説明する。
【００６３】
図１１は部品化処理部２４が作成した部品データ３４の一例およびプログラム再構成の概略例を示す説明図であり、図１２は部品データ３４に対応する部品の引数定義表であり、図１２（ａ）は部品名「入口境界」の引数定義表、（ｂ）は部品名「出口境界」の引数定義表、（ｃ）は部品名「ポンプ」の引数定義表、（ｄ）は部品名「タンク」の引数定義表を説明する説明図、図１３は、部品群配置結線処理部が実行する部品群配置結線処理ステップの処理手順を示した説明図である。
【００６４】
尚、図１１において示される部品名欄４５に表示される部品名とアイコン欄４６に表示されるアイコン４０ａ，４０ｂ，４０ｃ，４０ｄはユーザーが定義したものである。また、サブプログラム欄４７には、図９に示されるサブプログラム２９のうち対応するサブプログラム２９の内容（例えば、部品名がポンプであればポンプのサブプログラム）が記載され、引数定義欄４８には、図１２（ａ）〜図１２（ｄ）の内容が記載される。
【００６５】
図１１に示されるように、プラントモデル作成システム１０は、ソースコード３１からプログラム構成ツリーと入出力関係表と部品データ（部品データ群）３４とを生成する。これは、上述した図３に示されるステップＳ１およびステップＳ２を経てなされる。その後、ユーザーは部品データ群３４からモデル再構築に使用する部品を選択することで、図１１に示されるような結線図のプラントモデル３５が再構築される（図３に示されるステップＳ３）。
【００６６】
図１３に示される部品群配置結線処理ステップは、部品データ３４を配置し結線してプラントモデル３５を作成する処理ステップであり、ユーザーによるプログラム構成ツリーと入出力関係表が確定した旨の情報を受け付けると、その処理が開始される。まず、ステップＳ３１では、部品群配置結線処理部２５が図１１に示されるプログラム構成ツリーと入出力関係表と部品データ３４の情報（図１２に示される引数定義表を含む）に基づいてプログラム構成ツリーに基づき部品を配置する。プログラム構成ツリーには、部品名と対応する機器名が入っているため配置には十分な情報があり、これをすることができる。
【００６７】
続いて、ステップＳ３２では、入出力関係表（図８）に基づき結線する。入出力関係表には変数の入出力の対応関係が記述されており、引数定義表には変数とピンの位置が入っているため両者を参照することで、入出力関係表の出力側から入力側へ結線することで結線図を描くことができる。
【００６８】
図１３において、処理フロー（ステップＳ３１、ステップＳ３２）の右側に示された図は、結線した結果を示す説明図である。出力端より入力端へ矢印を向けているため、流量を計算出力しているＰｕｍｐ部品からの流量（接続端の１に相当）はＰｕｍｐからＴａｎｋ、ＰｕｍｐからＢＯＵＮＤ＿Ｏの向きとなっている。
【００６９】
次に、プラントモデル作成システム１０におけるプログラムの更新・生成について説明する。
【００７０】
図１４はプログラムソースコード生成処理部２６がプログラムの更新・生成の際に作成するメモリーテーブル５０の一例を示す説明図であり、図１５はプログラムソースコード生成処理部２６が作成したプログラムのソース５１の一例を示した説明図である。
【００７１】
プラントモデル作成システム１０において、プログラムの更新・生成は、プログラムソースコード生成処理部２６が、プログラムソースコード生成処理ステップを実行することによってなされる。プログラムの更新・生成は、結線図を描く場合と同様にして行うことができる。具体的には以下の通りである。
【００７２】
プログラムソースコード生成処理部２６は、まず、プログラム構成ツリーの順にサブプログラムを呼ぶよう並べるステップを実行する。そして、その引数は入出力関係表を参照して、ひとつの部品の出力から入力への結線関係が在るものは同一変数を取っていくようにし、残った部品固有の変数については追加していくステップを実行する。このようにして変数を取っていくとプログラムの変数並びは図１４に示されるメモリーテーブル５０のようになり、サブプログラムの変数を呼ぶ関係も埋めることができる。
【００７３】
プログラムソースコード生成処理部２６は、上記二つのステップ（プログラムソースコード生成処理ステップのサブステップ）を実行することによって、メモリーテーブル５０が作成される。このメモリーテーブル５０は、例えば、記憶手段１５等の読み出し可能な記憶領域に格納される。この場合のプログラムのソースコード５１は図１５に示される。
【００７４】
次に、生成されたプログラムのソースコード５１が適切であるかの評価（図３に示されるステップＳ４）について説明する。
【００７５】
図１６は、計算評価部２７が実行するシミュレーションコード評価ステップ（図３に示されるステップＳ４）の詳細な処理手順を説明する説明図である。
【００７６】
実際のシミュレーションにおいては、生成されたプログラムに対して初期値およびパラメータを設定し、また、動作させる変数を設定して計算し、出力される変数をプロットなどして評価するのが一般的である。
【００７７】
シミュレーションコード評価ステップは、図１６に示されるように、計算評価部２７が初期値およびパラメータを設定し（ステップＳ４１）、時刻ｔｉｍｅを初期化し（ステップＳ４２）、時刻ｔｉｍｅ＞終了時刻ｔstopの条件を満たす場合（ステップＳ４３でＹＥＳの場合）には、シミュレーションコード評価ステップを終了する。
【００７８】
一方、時刻ｔｉｍｅ＞終了時刻ｔstopの条件を満たさない場合（ステップＳ４３でＮＯの場合）、変更すべきパラメータは、時刻のある時点において変更するということになるため、時刻を更新するループの内側で変更することになる。すなわち、ステップＳ４３でＹＥＳとなるまでステップＳ４３からステップＳ４７の処理ステップを繰り返す。具体的には、運転条件を変更し（ステップＳ４４）、評価対象となるプログラムを呼び出して状態量を計算し（ステップＳ４５）、時々刻々の計算結果を出力し（ステップＳ４６）、時刻を更新（ステップＳ４７）した後、ステップＳ４３に進み、時刻ｔｉｍｅ＞終了時刻ｔstopの条件を満たすかを確認する。
【００７９】
次に、図３に示されるソースコードソフトウエア部品再構築処理手順を経て再構築されたプログラムモデルを部分的に削除したり追加したりして変更する場合の一例について説明する。
【００８０】
図１７はプログラム構成ツリーの情報の一例であり、図７に示されるプログラム構成ツリーを部品追加等によって変更した後のプログラム構成ツリーを示した説明図であり、図１８はプログラム構成ツリーの変更に伴い変更された後の入出力関係表を示した説明図である。
【００８１】
例えば、図７に示されるような構成ツリーを持つプログラムモデルを、図１７に示されるように部分的に削除したり追加したりして変更したい場合には、図７に示されるプログラム構成ツリーおよびこれに対応する入出力関係表（図８）にサブプログラム名、機器名、変数名、入出力関係などを追加していけば良い。
【００８２】
例えば、図１７に示されるプログラム構成ツリーでは、図７に示されるプログラム構成ツリーに対して、Ｏｂｊｅｃｔ＿３（ポンプ）を削除して新たにポンプ（Ｏｂｊｅｃｔ＿５）、タンク（Ｏｂｊｅｃｔ＿７）およびポンプ（Ｏｂｊｅｃｔ＿６）を追加するものとする。尚、上記で追加したポンプ（Ｏｂｊｅｃｔ＿５）、タンク（Ｏｂｊｅｃｔ＿７）およびポンプ（Ｏｂｊｅｃｔ＿６）は既に部品データ３４に格納されているポンプ部品およびタンク部品とする。
【００８３】
図１８に示される入出力関係表は、図１７に示されるプログラム構成ツリーと対応するので、図１７の部品の削除および追加に対応して、削除したＯｂｊｅｃｔ＿３（ポンプ）の入出力関係データ（入出力関係表）を削除し、追加したポンプ（Ｏｂｊｅｃｔ＿５）、タンク（Ｏｂｊｅｃｔ＿７）およびポンプ（Ｏｂｊｅｃｔ＿６）の入出力関係データ（入出力関係表）を追加する。入出力関係表は部品データ３４の作成時には作成されているため、格納されているデータを参照してデータの削除や追加をすることができる。この結果、プログラム構成ツリーと当該プログラム構成ツリーに対応する入出力関係表が確定するので、その後の部品の配置および結線については、上述の説明の通りである。
【００８４】
図１９は、変更後のプログラム構成ツリーに対応した部品、すなわち、入口境界（Ｏｂｊｅｃｔ＿１）、出口境界（Ｏｂｊｅｃｔ＿２）、ポンプ（Ｏｂｊｅｃｔ＿５とＯｂｊｅｃｔ＿６）およびタンク（Ｏｂｊｅｃｔ＿４とＯｂｊｅｃｔ＿７）を配置し結線して作成された結線図を示す説明図である。
【００８５】
部品群配置結線処理部２５が、図１７に示されるプログラム構成ツリーと図１８に示される入出力関係表を参照して図１３に示される部品群配置結線処理ステップ（ステップＳ３１およびステップＳ３２）を実行すると、図１９に示される結線図を作成する。プログラム構成ツリー、入出力関係表および部品データ３４への部品の追加は、例えば、ワークシートなどで追加していけば良い。
【００８６】
次に、部品を追加した場合（図１７および図１８に示される例）におけるプログラムの更新について説明する。
【００８７】
図２０は、プログラムの更新・生成の際に作成されるメモリーテーブルの一例であり、プログラムソースコード生成処理部２６がプログラムソースコードを更新した後のメモリーテーブル５０を示す説明図である。
【００８８】
図１７および図１８に示される例のように、ポンプ等の部品を追加した場合、プログラム（ここではプラントのプログラム）のソースコード５１を更新する必要がある。ソースコード５１の更新は、ソースコード５１を生成する場合と同様にプログラムソースコード生成処理部２６が行う。
【００８９】
まず、変更後のプログラム構成ツリー（図１７）の順にサブプログラム２９を呼ぶように並べていく。その引数は入出力関係表（図１８）を参照して、一つの部品の出力から入力への結線関係が在るものは同一変数を取っていくようにする。そして、残った部品固有の変数については追加する。このようにして変数を取っていくと、プログラムの変数並びは図２０に示されるようになり、サブプログラム２９の変数を呼ぶ関係も埋めることができる。
【００９０】
次に、図２０に示されるメモリーテーブル５０に更新する際の処理内容（メモリーテーブル更新処理ステップ）について説明する。
【００９１】
図２１は、プログラムソースコード生成処理部２６が実行するプログラムソースコード生成処理ステップのサブステップであるメモリーテーブル更新処理ステップの処理フローを示した説明図である。
【００９２】
部品の追加や削除等の変更があった場合、変更の無い部分のメモリー配置は変わらない方が、これまでのデータセットが使えるので有効である。メモリーテーブル更新処理ステップは、この既存の部分を変更しないように配慮した処理内容になっている。具体的には、まず、プログラムソースコード生成処理部２６がメモリー再利用指令の入力を認識すると（ステップＳ５１）、図２０に示されるメモリーテーブル５０のメモリー利用状態フラグを参照し、ここが０，１，２の何れであるかを判断する（ステップＳ５２）。ここで、０は記憶領域が未使用である、１は記憶領域が使用中である、２は部品削除に伴い情報が削除されて現在は記憶領域が未使用である、ことを意味する。
【００９３】
メモリーテーブル５０のメモリー利用状態フラグに０が存在しない（１又は２のみが存在する）場合（ステップＳ５２でＮＯの場合）には、プログラムソースコード生成処理部２６がフラグの２の記憶領域を探し、当該記憶領域のフラグを２から０に書き換えて（ステップＳ５３）、使用できる記憶領域を確保する。一方、メモリーテーブル５０のメモリー利用状態フラグに０が存在する場合（ステップＳ５２でＹＥＳの場合）には、何も行わない。
【００９４】
このような処理ステップを実行することによって、削除した領域を再度使うこともでき、部品の追加や削除等の変更があった場合でも変更の無い部分のメモリー配置（メモリー利用状態フラグを１の記憶領域）を変えることなく、これまでのデータセットが使えて有効である。
【００９５】
尚、図１〜図２１を引用して説明した上述の例では、プラントプログラムに対してサブプログラムが一層である場合を示していたが、これは一層に限らず階層化されていても良い。そこで、プラントプログラムに対してサブプログラムが階層化されている場合について図２２から図２５を引用して説明する。
【００９６】
図２２は、プラントプログラムに対してタンクプログラム（サブプログラム）が階層化されている場合の一例であり、タンクプログラムのソースを示した説明図である。また、図２３は、図２２に示されるタンクプログラムから得られる情報を説明する図であり、図２３（ａ）は引数定義表の例を示した説明図（図６に対応）、図２３（ｂ）はプログラム構成ツリー情報を示した説明図（図７に対応）、および、図２３（ｃ）は入出力関係表の一例を示した説明図（図８に対応）である。さらに、図２４は、図２２に示されるタンクプログラムに対して引数化処理ステップ後のソースを示した説明図である。
【００９７】
例えば、図２２に示されるように、タンクプログラムＴａｎｋがマスバランスを表すサブプログラムＭＡＳＳとＨＥＡＴから構成されている場合、この３つのプログラムに対しても、上述したように、接続関係情報３２に含まれる入出力関係情報（図２３（ａ））、プログラム構成ツリー（図２３（ｂ））、および、入出力関係表（図２３（ｃ））を作成することができる。また、プログラム構成ツリーおよび入出力関係表の情報があれば、引数化処理部２３が引数化処理ステップを実行して、図２４に示されるようなソースを得ることができる。
【００９８】
図２５は、図２２に示されるタンクプログラム（サブプログラム）を有するプラントプログラムに対してプラントモデル作成システム１０の部品化処理部２４が作成した部品データ３４の一例およびプログラム再構成の概略例を示す説明図である。
【００９９】
図２２に示される引数化処理前のソースから図２４に示される引数化処理後のソースを得た後は、それぞれ、部品名、機器名、アイコンを対応させることで図２５に示されるように結線図を生成することができる。また、同様にこれら部品のソースから新たにｔａｎｋ部品のソースの再構成および部品を削除等して変更した場合のタンク部品のソースを生成することができる。
【０１００】
以上、プラントモデル作成システム１０、プラントモデル作成方法としてのソースコードソフトウエア部品再構築処理手順、およびコンピュータをプラントモデル作成システムとして機能させる若しくはコンピュータにソースコードソフトウエア部品再構築処理手順を実行させるソフトウエア部品再構築処理ＰＧ１１によれば、プラントモデルを再構築する際に、従来のソフトウエアのソースコードよりもわかりやすく保守しやすいソフトウエアとして正確かつ効率的に行うことができる。
【０１０１】
すなわち、既存のプログラム（ソースコード３１）に対して、グローバル変数でのサブプログラム間の参照をローカル変数での参照に置き換えたサブプログラム２９、サブプログラム２９をモデルオブジェクトとして認識し呼び出し関係を定義したプログラム構成ツリーおよび変数の入出力関係表を生成し、アイコン４０と対応させた部品を集めた部品データ（データベース）３４から必要な部品データ３４を読み出して配置し、結線することで、モデルプログラムの結線図を生成して当該結線図に対応するモデルプログラムを再生成することができる。
【０１０２】
また、プログラム構成ツリーと入出力関係表を含む接続関係情報３２をユーザーが入力手段１２を介して容易に編集することができ、編集後は編集後のサブプログラム２９、接続関係情報３２および必要な部品データ３４を読み出して配置し、結線することができるので、モデルプログラムの改修も容易に行うことができる。
【０１０３】
尚、本発明は上記の各実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化しても良い。また、プラントモデルの作成を例にしているが、これに限定されず、他のシミュレーションモデルのプログラムについて適用できる。
【符号の説明】
【０１０４】
１０  プラントモデル作成システム
１１  ソフトウエア部品再構築処理ＰＧ
１２  入力手段
１３  表示手段
１４  ソフトウエア部品再構築処理手段
１５  記憶手段
２１  入出力抽出処理部
２２  接続関係情報抽出処理部
２３  引数化処理部
２４  部品化処理部
２５  部品群配置結線処理部
２６  プログラムソースコード生成処理部
２７  計算評価部
２９  サブプログラム
３１  ソースコード
３２  接続関係情報
３３  サブプログラム群
３４  部品データ
３５  プラントモデル
３６  運転手順情報
３７  計算評価結果情報
４０（４０ａ，４０ｂ，４０ｃ，４０ｄ）  アイコン
４５  部品名欄
４６  アイコン欄
４７  サブプログラム欄
４８  引数定義欄
５０  メモリーテーブル
５１  プログラムのソースコード
【図１】
2011034179.tif 000003
【図２】
2011034179.tif 000004
【図３】
2011034179.tif 000005
【図４】
2011034179.tif 000006
【図５】
2011034179.tif 000007
【図６】
2011034179.tif 000008
【図７】
2011034179.tif 000009
【図８】
2011034179.tif 000010
【図９】
2011034179.tif 000011
【図１０】
2011034179.tif 000012
【図１１】
2011034179.tif 000013
【図１２】
2011034179.tif 000014
【図１３】
2011034179.tif 000015
【図１４】
2011034179.tif 000016
【図１５】
2011034179.tif 000017
【図１６】
2011034179.tif 000018
【図１７】
2011034179.tif 000019
【図１８】
2011034179.tif 000020
【図１９】
2011034179.tif 000021
【図２０】
2011034179.tif 000022
【図２１】
2011034179.tif 000023
【図２２】
2011034179.tif 000024
【図２３】
2011034179.tif 000025
【図２４】
2011034179.tif 000026
【図２５】
2011034179.tif 000027