(57)【要約】【課題】  制御系等のシステムを構成するサブシステムについてのシミュレーションを簡単に行えるようにして、開発プログラムの検査を効率的に行えるようにすること。【解決手段】  シミュレーション装置は、サブシステムブロックを構成するブロック群の内、サブシステムブロック外であって上層システム内のブロックからデータを受け取る構成にされた入力ポートブロックを、所定のメモリ領域に設定された値を取得する変数読出ブロックに変更する（Ｓ２２０，Ｓ２２５）。また、上記ブロック群の内、サブシステムブロック外であって上層システム内のブロックにデータを引き渡す構成にされた出力ポートブロックを、所定のメモリ領域に値を記録する変数書込ブロックに変更する（Ｓ２４０，２４５）。シミュレーション装置は、この修正後のサブシステムのモデルを用いて、サブシステムについてのシミュレーションを行う。【選択図】  図４
2005352670.tif 000002
【特許請求の範囲】
【請求項１】
基本プログラムの組合せからなるシステムのモデルを用いて、前記システムのシミュレーションを行うシミュレーション装置であって、
前記システム内の所定のサブシステムをモデル化した基本プログラム群を、前記モデルから抽出する抽出手段と、
前記抽出手段が抽出した基本プログラム群の内、この基本プログラム群以外の前記モデル内の基本プログラムからデータを受け取る構成にされた基本プログラムを、第一のメモリ領域からデータを取得するプログラムに変更すると共に、前記抽出手段が抽出した基本プログラム群の内、この基本プログラム群以外の前記モデル内の基本プログラムにデータを引き渡す構成にされた基本プログラムを、第二のメモリ領域にデータを記録するプログラムに変更することにより、前記システムから独立したサブシステムのモデルを生成する独立モデル生成手段と、
前記独立モデル生成手段により生成された前記サブシステムのモデルを用いて、前記サブシステムのシミュレーションを行うサブシステムシミュレーション実行手段と、
を備えることを特徴とするシミュレーション装置。
【請求項２】
前記独立モデル生成手段は、前記システムのモデルに設定された前記所定のサブシステムについての基本プログラム群の実行順序関係を、前記独立したサブシステムのモデル生成時に、前記独立したサブシステムのモデルを構成する基本プログラム群に対して設定することにより、前記システムのモデルにおける前記所定のサブシステムについての前記実行順序関係と、前記独立したサブシステムのモデルにおける基本プログラム群の実行順序関係と、を一致させることを特徴とする請求項１記載のシミュレーション装置。
【請求項３】
システムの構築時に作成された前記システム内のサブシステムとしての機能をコンピュータに実現させるためのプログラム、を検査するための検査装置であって、
検査対象のプログラムを取得する検査対象取得手段と、
前記検査対象のプログラムの引数に設定すべきデータを取得するデータ取得手段と、
前記データ取得手段が取得したデータを引数に設定して、前記検査対象のプログラムをコンピュータに実行させるプログラム実行手段と、
前記システムのモデルから、前記検査対象のプログラムに対応する前記システム内のサブシステムをモデル化した基本プログラム群を抽出する前記抽出手段を備える請求項１又は請求項２記載のシミュレーション装置と、
前記データ取得手段が取得したデータを、前記第一のメモリ領域にセットして、そのデータを用いた前記サブシステムのシミュレーションを、前記サブシステムシミュレーション実行手段に実行させる実行制御手段と、
前記サブシステムシミュレーション実行手段の動作により前記第二のメモリ領域に記録されたデータに基づいて、前記プログラム実行手段の動作によりコンピュータが実行した前記検査対象のプログラムの出力データを検査する検査手段と、
を備えることを特徴とする検査装置。
【請求項４】
前記検査手段は、前記サブシステムシミュレーション実行手段の動作により前記第二のメモリ領域に記録されたデータに基づき、前記検査として、前記検査対象のプログラムの出力データが示す値が、適値であるか否かを判定することを特徴とする請求項３記載の検査装置。
【請求項５】
前記検査手段は、
前記プログラム実行手段の動作によりコンピュータが実行した前記検査対象のプログラムの演算誤差を考慮にいれて、前記検査対象のプログラムの出力データが示す値と、前記サブシステムシミュレーション実行手段の動作により前記第二のメモリ領域に記録された前記データが示す値と、が一致しているか否かを判断する一致判断手段、
を備え、前記一致判断手段にて前記値が一致していると判断されると、前記検査対象のプログラムの出力データが示す値が、適値であると判定することを特徴とする請求項４記載の検査装置。
【請求項６】
前記一致判断手段は、前記検査対象のプログラムの出力データが示す値を基準とした前記演算誤差の範囲内に、前記サブシステムシミュレーション実行手段の動作により前記第二のメモリ領域に記録された前記データが示す値が収まっていると、前記検査対象のプログラムの出力データが示す値と、前記サブシステムシミュレーション実行手段の動作により前記第二のメモリ領域に記録された前記データが示す値と、が一致していると判断することを特徴とする請求項５記載の検査装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、モデル化されたシステムのシミュレーションを行うシミュレーション装置、及び、そのシミュレーション装置を用いたプログラムの検査装置に関する。
【背景技術】
【０００２】
従来、情報処理装置（パーソナルコンピュータ等）に、システムのモデル化やシミュレーション等を簡易に実現するＳｉｍｕｌｉｎｋ（登録商標）等のソフトウェアパッケージを組み込み、このソフトウェアパッケージを用いて、制御システム等のシミュレーションを行う方法が知られている。
【０００３】
Ｓｉｍｕｌｉｎｋ（登録商標）は、ポインティングデバイスから入力される利用者の操作情報に従って、システムのモデルを表すブロック線図を形成する。このソフトウェアパッケージには、ブロック線図に用いることのできる各ブロックについて、そのブロックに対応する機能をコンピュータに実現させるためのプログラムコード（基本プログラム）が用意されており、Ｓｉｍｕｌｉｎｋ（登録商標）は、この基本プログラムを、ブロック線図の内容に従って組み合わせ、これをコンピュータに実行させることにより、上記システムのシミュレーションを実現する。尚、Ｓｉｍｕｌｉｎｋ（登録商標）等のソフトウェアパッケージについては、周知であるので、ここでは先行技術文献を非開示とする。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
ところで、制御システム等に用いるプログラムの検査方法としては、従来、プログラムの実行結果（出力データ）と、検査する者が手計算で論理的に導出した理論値と、を比較することによりプログラムの実行結果が適切であるか否かを検査する方法が知られている。しかしながら、この方法では、検査する者の負担が大きく、また、計算ミスが多いため、検査効率が悪いと言った問題があった。
【０００５】
そこで、本発明者らは、上記Ｓｉｍｕｌｉｎｋ（登録商標）等のソフトウェアパッケージを用いて理論値を算出し、この理論値と、プログラムの実行結果（出力データ）と、を比較することにより、制御システム等に用いるプログラムの実行結果が適切であるか否かを検査する方法を考えた。
【０００６】
しかしながら、上記ソフトウェアパッケージでは、仕様上、システム全体についてのシミュレーションを行うことはできても、そのシステムを構成するサブシステムについてのシミュレーションを、選択的に実行することができない。サブシステム内の基本プログラムは、そのシステム内であってサブシステム外の基本プログラムとデータを授受する構成にされているため、外部から検査用のデータを入力しようとしても、サブシステム外の基本プログラムの処理を経なければ、検査対象のサブシステムにデータを伝達することができないのである。
【０００７】
従って、サブシステムについての単独シミュレーションを行うためには、そのサブシステムについてのブロック線図を、手作業で、一つのシステムのモデルとして新たに作成しなければならず、従来の方法では、サブシステムについての検査効率が悪かった。
【０００８】
本発明は、こうした問題に鑑みなされたものであり、制御系等のシステムを構成するサブシステムについてのシミュレーションを簡単に行えるようにすると共に、開発プログラムの検査を効率的に行えるようにすることを目的とする。
【課題を解決するための手段】
【０００９】
かかる目的を達成するためになされた請求項１記載の発明は、基本プログラムの組合せからなるシステムのモデルを用いて、そのシステムのシミュレーションを行うシミュレーション装置であって、基本プログラムの組合せからなる上記システムのモデルから、上記システムを構成する所定のサブシステムについての基本プログラム群を抽出する抽出手段と、独立モデル生成手段と、サブシステムシミュレーション実行手段と、を備えるものである。
【００１０】
独立モデル生成手段は、抽出手段により抽出された上記基本プログラム群の内、その抽出手段により抽出された基本プログラム群以外の上記モデル内の基本プログラムからデータを受け取る構成にされた基本プログラムを、第一のメモリ領域からデータを取得するプログラムに変更する。
【００１１】
また、この独立モデル生成手段は、抽出手段により抽出された上記基本プログラム群の内、抽出手段により抽出された基本プログラム群以外の上記モデル内の基本プログラムにデータを引き渡す構成にされた基本プログラムを、第二のメモリ領域にデータを記録するプログラムに変更する。
【００１２】
上述したように、サブシステムのモデルを構成する基本プログラム群には、当該基本プログラム群以外の他の基本プログラムとデータを授受して動作する基本プログラムが存在するため、この基本プログラム群を単に用いるだけでは、サブシステムのシミュレーションを行うことができない。そこで、本発明では、独立モデル生成手段により、上記基本プログラム群の一部を他のプログラムに変更しているのである。
【００１３】
独立モデル生成手段の動作によって、上記サブシステムのモデルは、上記システムのモデルから独立したモデルに変換される。即ち、独立モデル生成手段による変更処理後のサブシステムのモデルは、上記システムのモデル内の他の基本プログラムとデータ授受することなく動作可能なモデルとなる。
【００１４】
サブシステムシミュレーション実行手段は、この独立モデル生成手段により生成されたサブシステムのモデルを用いて、サブシステムのシミュレーションを行う。尚、サブシステムシミュレーション実行手段は、外部から取得したデータを、上記第一のメモリ領域にセットして、上記サブシステムのシミュレーションを実行する構成にされてもよいし、外部手段によって第一のメモリ領域にセットされたデータを用いて、サブシステムのシミュレーションを実行する構成にされてもよい。
【００１５】
本発明のシミュレーション装置によれば、抽出手段、独立モデル生成手段、及び、サブシステムシミュレーション実行手段の動作により、上述のソフトウェアパッケージにより作成されたモデルを用いて、サブシステムのシミュレーションを簡単に行うことができる。従って、本発明によれば、制御システム等に用いるプログラムを開発する際、それら各プログラムについての検査を、効率的に行うことができる。
【００１６】
尚、システムのモデルに関する情報として、各基本プログラムに対応するブロックからなるブロック線図を、表示手段に表示させる機能を備えるシミュレーション装置に、本発明を適用する場合には、上記ブロック線図を構成するブロックについての選択指示が入力されると、その選択指示に基づき、抽出対象のサブシステムを決定し、そのサブシステムについての基本プログラム群を抽出するように、上記抽出手段を構成するとよい。
【００１７】
このシミュレーション装置によれば、ブロック線図を用いて、ポインティングデバイス等でサブシステムのブロックを選択する程度で、上記システムとは独立したサブシステムのモデルを独立モデル生成手段に生成させることができるので、操作性がよく、利用者にとっては便利である。
【００１８】
また、独立モデルの生成に際しては、生成したモデルにおける基本プログラムの実行順序と、そのモデルの元となったシステム全体のモデルにおける該当基本プログラムの実行順序と、が一致していないと、演算順序の違いから、システムのモデルを構成するサブシステムのモデル部の出力と、独立モデル生成手段にて生成されたサブシステムのモデルの出力とが、一致しなくなる可能性があるから、独立モデル生成手段では、請求項２記載のように、基本プログラムの置換だけでなく、実行順序関係の設定も行うとよい。
【００１９】
請求項２記載のシミュレーション装置では、独立モデル生成手段が、システムのモデルに設定された上記所定のサブシステムについての基本プログラム群の実行順序関係を、独立したサブシステムのモデル生成時に、そのサブシステムのモデルを構成する基本プログラム群に対して設定することにより、システムのモデルにおける上記所定のサブシステムについての実行順序関係と、独立したサブシステムのモデルにおける基本プログラム群の実行順序関係と、を一致させる構成にされている。
【００２０】
このシミュレーション装置によれば、独立モデル生成手段によって生成したサブシステムのモデルにおける演算順序を、システム全体のモデルと一致させることができるので、システム全体のモデルとは異なるシミュレーション結果が、独立モデル生成手段にて生成されたサブシステムのモデルから出力されるのを防止することができる。
【００２１】
また、システム構築時に作成されたそのシステムを構成するサブシステムとしての機能をコンピュータに実現させるためのプログラム、を検査するための検査装置には、プログラムの出力結果が適切であるか否かを判定するために、上述のシミュレーション装置を用いるとよい。
【００２２】
請求項３記載の検査装置は、検査対象のプログラムを取得する検査対象取得手段と、検査対象のプログラムの引数に設定すべきデータを取得するデータ取得手段とを備え、プログラム実行手段にて、データ取得手段が取得したデータを引数に設定し、検査対象のプログラムをコンピュータに実行させる。また、この検査装置は、上記システムのモデルから、検査対象のプログラムにて実現される予定のサブシステムをモデル化した基本プログラム群を抽出する請求項１又は請求項２記載のシミュレーション装置と、実行制御手段と、検査手段とを備える。
【００２３】
実行制御手段は、データ取得手段が取得したデータを、第一のメモリ領域にセットし、そのデータを用いたサブシステムのシミュレーションを、サブシステムシミュレーション実行手段に実行させる。また、検査手段は、サブシステムシミュレーション実行手段の動作により第二のメモリ領域に記録されたデータに基づき、プログラム実行手段の動作によりコンピュータが実行した上記検査対象のプログラムの出力データを検査する。
【００２４】
この検査装置では、上記シミュレーション装置で実行されたサブシステムのシミュレーション結果に基づき、検査対象のプログラムの動作が検査されるので、従来のように検査する者の手計算により理論値を算出して検査対象のプログラムの出力データを検査する必要がなく、制御システム等に必要な各プログラムについての検査を、効率的に行うことができる。尚、検査手段による検査結果は、ハードディスク等の記録媒体にデータ出力されてもよいし、印刷手段にて印刷出力されてもよいし、表示手段にて表示されてもよい。
【００２５】
また、検査手段における検査方法としては、サブシステムシミュレーション実行手段の動作により第二のメモリ領域に記録されたデータに基づき、検査対象のプログラムの出力データが示す値が適値であるか否かを判定する方法が挙げられる。このような方法で検査を行う請求項４記載の検査装置によれば、プログラム作成者が意図した通りの値を、検査対象のプログラムが出力するか否かを簡単に検査することができる。
【００２６】
但し、検査対象のプログラムが出力するデータの値には、プログラム実行時に生ずる演算誤差の影響が表れるため、検査対象のプログラムの出力データが示す値が適値であるか否かを判定する際には、プログラム実行手段の動作によりコンピュータが実行した検査対象のプログラムの演算誤差を考慮に入れるべきである。
【００２７】
従って、請求項４記載の検査装置においては、請求項５記載のように検査手段を構成するとよい。請求項５記載の検査装置における検査手段は、プログラム実行手段の動作によりコンピュータが実行した検査対象のプログラムの演算誤差を考慮にいれて、検査対象のプログラムの出力データが示す値と、サブシステムシミュレーション実行手段の動作により第二のメモリ領域に記録されたデータが示す値と、が一致しているか否かを判断する一致判断手段を備えるものである。
【００２８】
この検査装置によれば、一致判断手段にて両者の値が一致していると判断されると、検査手段により、検査対象のプログラムの出力データが示す値が、適値であると判定される。このため、当該検査装置によれば、検査手段が演算誤差の影響を受けて不適切な検査結果を導出するのを防止することができ、検査結果の信頼性が低下するのを防止することができる。
【００２９】
尚具体的に、一致判断手段は、検査対象のプログラムの出力データが示す値を基準とした上記演算誤差の範囲内に、サブシステムシミュレーション実行手段の動作により第二のメモリ領域に記録されたデータが示す値が収まっていると、検査対象のプログラムの出力データが示す値と、サブシステムシミュレーション実行手段の動作により第二のメモリ領域に記録されたデータが示す値と、が一致していると判断する構成にされるとよい。
【００３０】
このように構成された請求項６記載の検査装置によれば、高速且つ正確に、検査対象のプログラムの出力データが示す値が適値であるか否かを判定することができる。従って、この発明によれば、一層効率的に開発プログラムの検査を行うことができる。尚、浮動小数点演算を行うプログラムについては、丸め処理により生じる最大誤差を、上記演算誤差として取り扱えばよい。
【００３１】
具体的に、単精度浮動小数点数についての丸め処理が四捨五入の場合には、四則演算１回で最大、有効数字７桁目の数値に対し、±１．１９２０９の誤差が生じる。また、丸め処理が切り捨ての場合には、四則演算１回で最大、有効数字７桁目の数値に対し、±２．３８４１８の誤差が生じる。よって、単精度浮動小数点数を用いて演算を行うプログラムについては、この値を、上記演算誤差として取り扱えばよい。このようにすれば、上記丸め処理による検査の誤判定を防止することができる。
【００３２】
また、浮動小数点演算を行うプログラムについては、丸め処理により生じる最大誤差を所定の桁で切り上げた値を、上記演算誤差として取り扱うと一層好ましい。例えば、単精度浮動小数点数についての丸め処理であって、四捨五入による丸め処理によって生じる最大誤差の小数点一桁目を切り上げる際には、上記演算誤差として±２を設定すればよい。その他、丸め処理が切り捨ての場合には、上記演算誤差として±３を設定すればよい。このように演算誤差を設定すれば、検査を高速に行うことができる。
【発明を実施するための最良の形態】
【００３３】
以下に、本発明の実施例について図面とともに説明する。図１（ａ）は、本発明が適用されたシミュレーション装置１のハードウェア構成を表す説明図であり、図１（ｂ）は、シミュレーション装置１のソフトウェア構成を表す説明図である。
【００３４】
図１（ａ）に示すように、本実施例のシミュレーション装置１は、各種演算処理を行うＣＰＵ１１と、当該シミュレーション装置１の電源投入時に必要なプログラム等を記憶するＲＯＭ１３と、ＣＰＵ１１によるプログラム実行時に作業用メモリとして使用されるＲＡＭ１５と、利用者の操作情報をＣＰＵ１１に入力するためのキーボードやポインティングデバイス等からなる操作部１７と、各種情報を表示するための液晶ディスプレイ等からなる表示部１８と、後述する検査処理等をＣＰＵ１１に実行させるためのプログラムやプログラム実行時に必要なデータ等を記憶するハードディスク装置（ＨＤＤ）１９と、を備える。
【００３５】
ＣＰＵ１１は、ハードディスク装置１９に格納された各種プログラムを実行することにより、図１（ｂ）に示すモデル編集部２１、プログラム生成部２３、及び検査処理部２５としての機能を果たす。モデル編集部２１及びプログラム生成部２３としての機能をＣＰＵ１１に実現させるためのプログラムとしては、システムのモデル化（モデリング）、シミュレーション、プログラミング等を簡易に実現する周知のソフトウェアパッケージ（例えば、Ｓｉｍｕｌｉｎｋ（登録商標）等）を用いることができる。
【００３６】
モデル編集部２１は、ブロック線図に用いることのできるブロックに関する情報を、ハードディスク装置１９に格納されたライブラリＬＢから読み出し、この情報に基づき、表示部１８に、ブロック線図の作成画面を表示させる。このモデル編集部２１は、操作部１７から入力される利用者の操作情報に基づき、利用者がシミュレーション対象としているシステムのブロック線図を作成することで、システムのモデル化を行う。
【００３７】
尚、ライブラリＬＢには、ブロック線図に用いることのできるブロックの識別情報（プロックＩＤ）と、そのブロックのプログラムコードとが互いに関連付けられて記憶されている。プログラムコードは、そのブロックに割り当てられた演算処理をＣＰＵ１１に実行させるためのものであり、周知の言語で記述されている。
【００３８】
モデル編集部２１でモデル化されたシステムに関する情報は、モデルデータとしてハードディスク装置１９に保存される。ここで保存されるモデルデータは、モデルを構成するブロックの配置・接続等に関するモデル構成情報と、各ブロックに対応する演算処理（プログラムコード）の実行順序を表す実行順序情報とからなる。尚、図２には、モデル構成情報の例を示す。
【００３９】
図２に示すように、モデル構成情報は、モデル編集部２１において作成されたブロック線図と等価な情報を備え、モデルを構成するブロックの配置を表す情報、ブロック間の接続を表す情報等からなる。具体的に、図２に示すシステムのモデルＭＬ１は、信号発生ブロックＢ１１と、信号観測ブロックＢ２１と、定数ブロックＢ３１と、加算ブロックＢ４１と、変数読出ブロックＢ５１と、変数書込ブロックＢ６１と、サブシステムブロックＢＳ１と、から構成されている。これらのプロックでは、シミュレーション実行時に、そのブロックに関連付けられたプログラムコードに対応する演算処理がＣＰＵ１１により実行される。
【００４０】
モデルＭＬ１を構成する信号発生ブロックＢ１１は、当該モデルＭＬ１への入力信号を生成するプログラムコードと関連付けられたブロックであり、信号観測ブロックＢ２１は、当該モデルＭＬ１からの出力信号を観測するためのプログラムコードと関連付けられたブロックである。
【００４１】
また、定数ブロックは、自身に設定された定数を、下流のブロックに引き渡すプログラムコードと関連付けられたブロックであり、加算ブロックは、上流のブロックから入力された複数の値の総計を下流のブロックに引き渡すプログラムコードと関連付けられたブロックである。
【００４２】
その他、変数読出ブロックは、所定の変数（変数読出ブロックＢ５１の場合は変数Ａ）に割り当てられたＲＡＭ１５内のメモリ領域にセットされた値を取り込み、これを下流のブロックに引き渡すプログラムコードと関連付けられたブロックであり、変数書込ブロックは、所定の変数（変数書込ブロックＢ６１の場合は変数Ａ）に割り当てられたＲＡＭ１５内のメモリ領域に値を書き込むプログラムコードと関連付けられたブロックである。
【００４３】
また、サブシステムブロックＢＳ１は、入力ポートブロックＢ１２，Ｂ１３と、出力ポートブロックＢ２２，Ｂ２３と、変数Ｂについての変数読出ブロックＢ５３と、サブシステムブロックＢＳ２と、加算ブロックＢ４２，Ｂ４３と、上流のブロックから取り込んだ値を所定倍して下流のブロックに引き渡すプログラムコードと関連付けられたブロックＢ７１と、から構成されている。
【００４４】
尚、入力ポートブロック及び出力ポートブロックは、自身が所属するサブシステムブロックを構成しないモデル内の他のブロックとデータ授受を行うためのプログラムコードと関連付けられたブロックである。具体的に、入力ポートブロックＢ１２，Ｂ１３は、サブシステムブロックＢＳ１外に配置された上流のブロックから値を取り込み、これを下流のブロックに引き渡すプログラムコードと関連付けられたブロックであり、出力ポートブロックＢ２２，Ｂ２３は、上流のブロックから値を取り込み、これをサブシステムブロックＢＳ１外に配置された下流のブロックに引き渡すプログラムコードと関連付けられたブロックである。
【００４５】
また、サブシステムブロックＢＳ２は、入力ポートブロックＢ１４と、変数読出ブロックＢ５４と、定数ブロックＢ３２と、出力ポートブロックＢ２４と、上流のブロックから取り込んだ複数の値を所定の演算式で乗算・除算するプログラムコードと関連付けられた乗除算ブロックＢ８１と、から構成されている。
【００４６】
プログラム生成部２３は、このような構成のモデルデータを、外部からの指令に基づき適宜読出し、各ブロックに対応するプログラムコードをライブラリＬＢから読み出して、これらを組み合わせることにより、ブロック線図で表されたシステムのモデルに対応する演算処理をＣＰＵ１１に実行させるためのシミュレーションプログラムＰｒ１を生成する。また、プログラムＰｒ１生成の際には、モデルデータに含まれる実行順序情報に従って、各ブロックに対応する演算処理がＣＰＵ１１により順に行われるように、プログラムＰｒ１を組み立てる。
【００４７】
本実施例のシミュレーション装置１は、このようにして生成されたシミュレーションプログラムＰｒ１と、検査対象プログラムＰｒ２と、に同一のデータを与えて、その出力値を比較することにより、検査対象プログラムＰｒ２が、シミュレーションプログラムＰｒ１と同一の演算結果を出力するか否かを検査する。
【００４８】
しかしながら、サブシステムブロックＢＳ１には、ブロックＢ７１等に対して、サブシステムブロックＢＳ１外のブロックを介さずに外部から直接データを与えるための手段が存在しないため、このモデル構成情報を備えるモデルデータに基づいて、プログラム生成部２３に、シミュレーションプログラムＰｒ１を生成させても、サブシステムブロックＢＳ１にて表現されたサブシステムについてのシミュレーションを単独で実行することができない。
【００４９】
従って、このサブシステムについてのシミュレーションを行うためには、サブシステムブロックＢＳ１を修正して、システム全体のモデルＭＬ１とは独立したサブシステムのモデルデータを生成する必要があるが、これを利用者による手作業で行うと時間がかかる。
【００５０】
そこで、当該シミュレーション装置１では、システム全体のモデルデータに基づき、検査処理部２５にて、そのシステムとは独立したサブシステムのモデルＭＬ２を構築して、そのモデルＭＬ２に関するモデル構成情報を含むモデルデータを生成し、これを用いてプログラム生成部２３にシミュレーションプログラムＰｒ１を生成させるようにした。
【００５１】
以下には、この検査処理部２５が実行する処理について説明する。図３は、検査処理部２５が実行する検査処理を表すフローチャートである。検査処理部２５は、利用者の操作により操作部１７からサブシステム抽出指令が入力されると、当該検査処理を実行する。
【００５２】
検査処理を実行すると、検査処理部２５は、サブシステム抽出指令にて指定されたモデルデータをハードディスク装置１９から読み出し（Ｓ１１０）、そのモデルデータに基づき、表示部１８に、システム全体のブロック線図（図２参照）を示したＧＵＩ（グラフィカルユーザインタフェース）構成のサブシステム抽出画面を表示させる（Ｓ１３０）。
【００５３】
その後、検査処理部２５は、サブシステム抽出画面に表示されたブロック線図内のサブシステムブロックＢＳ１，ＢＳ２の一つが、ポインティングデバイス等を用いて利用者により選択されるまで待機し（Ｓ１５０）、利用者によりサブシステムブロックＢＳ１，ＢＳ２の一つが選択され、その選択指示情報が操作部１７より入力されると（Ｓ１５０でＹｅｓ）、利用者により選択されたサブシステムブロックＢＳ１，ＢＳ２を、抽出対象に決定し（Ｓ１７０）、独立モデル生成処理を実行する（Ｓ２００）。図４は、検査処理部２５が実行する独立モデル生成処理を表すフローチャートである。
【００５４】
独立モデル生成処理を実行すると、検査処理部２５は、Ｓ１１０にて読み出したモデルデータが保有するシステム全体のモデル構成情報の中から、抽出対象に決定されたサブシステムブロック（ここではサブシステムブロックＢＳ１とする。）についての情報（具体的には、図２中段に示すブロック群からなるモデル構成情報）を抽出し、後続の処理にて置換するブロックの検索範囲を決定する（Ｓ２１０）。
【００５５】
その後、検査処理部２５は、抽出した情報（図２中段に示すモデル構成情報）に基づき、サブシステムブロックＢＳ１に含まれる入力ポートブロックＢ１２，Ｂ１３を検索し、検索された入力ポートブロックＢ１２，Ｂ１３の一つを選択して（Ｓ２２０）、選択した入力ポートブロックＢ１２，Ｂ１３を変数読出ブロックＢ５５，Ｂ５６に置換する修正を、抽出したモデル構成情報に対して施す（Ｓ２２５：図５参照）。
【００５６】
Ｓ２２５での処理を終えると、検査処理部２５は、修正後のモデル構成情報に基づいて、Ｓ２１０で抽出したモデル構成情報に含まれる入力ポートブロックＢ１２，Ｂ１３を、全て変数読出ブロックに置換したか否か判断し（Ｓ２３０）、置換していないと判断すると（Ｓ２３０でＮｏ）、Ｓ２２０に移行して、未処理の入力ポートブロックＢ１２，Ｂ１３を一つ選択し（Ｓ２２０）、これを、変数読出ブロックＢ５５，Ｂ５６に置換する（Ｓ２２５）。
【００５７】
また、検査処理部２５は、抽出したモデル構成情報に含まれる入力ポートブロックＢ１２，Ｂ１３を全て変数読出ブロックに置換したと判断すると（Ｓ２３０でＹｅｓ）、その修正後のモデル構成情報の中から、出力ポートブロックＢ２２，Ｂ２３を一つ選択し（Ｓ２４０）、これを変数書込ブロックＢ６３，Ｂ６４に置換する修正を、上記モデル構成情報に対して施す（Ｓ２４５）。
【００５８】
Ｓ２４５での処理を終えると、検査処理部２５は、上記モデル構成情報に含まれる出力ポートブロックＢ２２，Ｂ２３を全て変数書込ブロックに置換したか否か判断し、出力ポートブロックＢ２２，Ｂ２３を全て変数書込ブロックに置換していないと判断すると（Ｓ２５０でＮｏ）、処理をＳ２４０に戻して、未処理の出力ポートブロックＢ２２，Ｂ２３を一つ選択し（Ｓ２４０）、これを変数書込ブロックＢ６３，Ｂ６４に置換する（Ｓ２４５）。
【００５９】
そして、モデル構成情報に含まれる出力ポートブロックＢ２２，Ｂ２３を全て変数書込ブロックに置換したと判断すると（Ｓ２５０でＹｅｓ）、Ｓ２６０に移行する。尚、Ｓ２１０で抽出したモデル構成情報は、入力ポートブロックＢ１２，１３及び出力ポートブロックＢ２２，Ｂ２３の置換が終了し、検査処理部２５がＳ２５０でＹｅｓと判断した時点で、図５に示す構成にされる。図５は、置換後のサブシステムのモデルＭＬ２を表すモデル構成情報についての説明図である。尚、Ｓ２２０〜Ｓ２５０では、下層のサブシステムブロックＢＳ２を構成する入力ポートブロックＢ１４及び出力ポートブロックＢ２４に対しての置換処理は行われない。
【００６０】
Ｓ２６０に処理を移行すると、検査処理部２５は、サブシステムブロックＢＳ１に含まれる下層のサブシステムのモデルを表すサブシステムブロックＢＳ２をスタブ化するか否か判断する。尚、ここでいうスタブ化とは、入力値に関係なくサブシステムブロックＢＳ２の出力ポートから一定の値を出力するようにサブシステムブロックＢＳ２を再構築する処理のことである。
【００６１】
Ｓ２６０では、スタブ化するか否かについての情報を利用者から取得するための選択画面を表示部１８に表示させ、操作部１７からスタブ化しない旨の操作情報が入力されると（Ｓ２６０でＮｏ）、Ｓ２８０に移行する。一方、操作部１７からスタブ化する旨の操作情報が入力されると（Ｓ２６０でＹｅｓ）、検査処理部２５は、スタブ化処理を実行する（Ｓ２７０）。尚、図６は、スタブ化処理を表すフローチャートである。
【００６２】
スタブ化処理を実行すると、検査処理部２５は、操作部１７から入力される操作情報に従い、スタブ化の対象ブロックを決定し（Ｓ２７１）、スタブ化の対象ブロック（ここでは、サブシステムブロックＢＳ２）に含まれる出力ポートブロックＢ２４を一つ選択する（Ｓ２７２）。
【００６３】
そして、出力ポートブロックＢ２４の上流に位置するブロック（乗除算ブロックＢ８１）の下流に終端ブロックＢ８３（図７参照）を配置して、そのブロック（乗除算ブロックＢ８１）の出力端と終端ブロックＢ８３の入力端とを接続し、出力ポートブロックＢ２４の上流に位置するブロック（乗除算ブロックＢ８１）からの出力信号を、終端ブロックＢ８３で受けるように、上記モデル構成情報を書き換える（Ｓ２７３）。尚、終端ブロックＢ８３は、上流側のブロックから受け付けた値を破棄するプログラムコードに関連付けられたブロックである。
【００６４】
また、検査処理部２５は、Ｓ２７２で選択した出力ポートブロックＢ２４の上流に、変数読出ブロックＢ５７を配置して、変数読出ブロックＢ５７の出力端と出力ポートブロックＢ２４の入力端とを接続し、変数読出ブロックＢ５７が変数Ｏｕｔ３１に割り当てられたＲＡＭ１５内のメモリ領域から読み出した値が、出力ポートブロックＢ２４に入力されるように、モデル構成情報を書き換える（Ｓ２７４）。
【００６５】
Ｓ２７４での処理を終えると、検査処理部２５は、スタブ化の対象ブロックに含まれる全ての出力ポートブロックに対してＳ２７２〜Ｓ２７４までの処理を施したか否か判断し（Ｓ２７５）、全て終了していないと判断すると（Ｓ２７５でＮｏ）、Ｓ２７２に移行し、未処理の出力ポートブロックについて、上述の処理を実行する。一方、全ての出力ポートブロックに対してＳ２７２〜Ｓ２７４までの処理を施したと判断すると（Ｓ２７５でＹｅｓ）、検査処理部２５は、当該スタブ化処理を終了し、Ｓ２８０に移行する。尚、スタブ化処理後のサブシステムブロックＢＳ２は、図７に示すようにされる。図７は、スタブ化処理後のサブシステムブロックＢＳ２の構成を表す説明図である。
【００６６】
Ｓ２８０において、検査処理部２５は、修正後のモデル構成情報に対応する実行順序情報を作成する。この際には、Ｓ１１０で読み出したシステム全体についてのモデルデータに含まれる実行順序情報が参照され、Ｓ１１０で読み出したモデルデータに含まれる実行順序情報が示す実行順序と同様の実行順序で演算が行われるように、実行順序情報を作成する。具体的には、置換されていないブロックについて、その実行順位を、Ｓ１１０で読み出したモデルデータに含まれる実行順序情報が示すものと同一のものとし、置換されたブロックについては、その実行順位を、置換前のブロックと同一の実行順位に設定する。
【００６７】
このように実行順位を設定し実行順序情報を作成した後には、当該独立モデル生成処理にて修正した修正後のモデル構成情報と、Ｓ２８０で作成した実行順序情報と、を格納したモデルデータを新規に作成し、これをハードディスク装置１９に保存する（Ｓ２９０）。Ｓ２９０での処理後、検査処理部２５は、当該独立モデル生成処理を終了する。
【００６８】
同一のブロック線図（モデル構成情報）を用いたシミュレーションであっても、各ブロックに対応するプログラムの実行順序が異なる場合には、実行結果に差異が生じる可能性があるが、この独立モデル生成処理では、システム全体のモデルＭＬ１に設定されているサブシステムブロックＢＳ１を構成するブロック群の実行順序関係と同一の実行順序関係を表す実行順序情報を、サブシステムの独立モデルを表すモデルデータの生成時に、その独立モデルを表すモデル構成情報に付加して、独立モデルに、システム全体のモデルＭＬ１に設定されているサブシステムブロックＢＳ１の実行順序関係と同一の実行順序関係を設定する（Ｓ２９０）ので、独立モデルの実行順序関係と、システム全体のモデルＭＬ１におけるサブシステムブロックＢＳ１についての実行順序関係と、を一致させることができ、当該独立モデル生成処理にて生成したモデルのシミュレーション結果と、システム全体のモデルＭＬ１におけるサブシステムブロックＢＳ１のシミュレーション結果と、に差異が生じるのを防止することができる。
【００６９】
なお、一般的には独立モデル生成過程において、Ｓ２８０を実行する必要があるが、独立モデル生成前後において、その実行順序関係が自然に保たれることが保証される場合には、このような処理を適宜省略することができる。
【００７０】
独立モデル生成処理を終了すると、検査処理部２５は、Ｓ３００にて、シミュレーション処理を実行する。図８は、検査処理部２５が実行するシミュレーション処理を表すフローチャートであり、図９は、このシミュレーション処理で用いられる入出力データシートの構成を表す説明図である。
【００７１】
シミュレーション処理を実行すると、検査処理部２５は、ハードディスク装置１９の所定場所から、サブシステムのシミュレーションに必要な変数の値が記述された入力データを含む入出力データシートＳＴを読み出す（Ｓ３１０）と共に、Ｓ２９０にて新規登録したモデルデータに基づくシミュレーションプログラムＰｒ１を、プログラム生成部２３に生成させる（Ｓ３２０）。
【００７２】
その後、検査処理部２５は、入出力データシートＳＴに含まれる入力変数値の一組ｘ１，ｘ２，ｘ３，ｘ４，ｘ５を入出力データシートＳＴから読み出し、シミュレーションプログラムＰｒ１における変数読出ブロックＢ５３，Ｂ５５，Ｂ５６，Ｂ５４，Ｂ５７に相当するプログラムが値を読出可能なＲＡＭ１５内のメモリ領域Ｓｐ１，Ｓｐ２，Ｓｐ３，Ｓｐ４，Ｓｐ５に、これらを書き込むことで、選択した入力変数値の一組をシミュレーションプログラムＰｒ１の引数に設定する（Ｓ３３０）。
【００７３】
図９に示すように、入出力データシートＳＴには、検査項目毎に、上記一組の入力変数値として、変数Ｂ，Ｉｎ２１，Ｉｎ２２，Ｃ，Ｏｕｔ３１についての値ｘ１，ｘ２，ｘ３，ｘ４，ｘ５が記載されており、Ｓ３３０では、一の検査項目に設定されたこれら各値ｘ１，ｘ２，ｘ３，ｘ４，ｘ５を、シミュレーションプログラムＰｒ１の引数に設定する。
【００７４】
Ｓ３３０での処理を終えると、検査処理部２５は、Ｓ３２０で生成されたシミュレーションプログラムＰｒ１に基づいたサブシステムＢＳ１についてのシミュレーションをＣＰＵ１１に実行させる（Ｓ３４０）。
【００７５】
Ｓ３４０におけるシミュレーションプログラムＰｒ１の実行により、変数書込ブロックＢ６３，Ｂ６４についてのプログラムがＣＰＵ１１により実行され、変数書込ブロックＢ６３，Ｂ６４に割り当てられた変数Ｏｕｔ２１，Ｏｕｔ２２のメモリ領域Ｓｐ６，Ｓｐ７には、シミュレーション結果として、変数Ｏｕｔ２１の値Ｙ１１及び変数Ｏｕｔ２２の値Ｙ１２（以下、この二つの値をまとめて値Ｙ１と表現する。）が書き込まれる。
【００７６】
検査処理部２５は、この値Ｙ１１，Ｙ１２を、Ｓ３５０にて、対応するメモリ領域Ｓｐ６，Ｓｐ７から読み出す。そして、読み出した値Ｙ１を、入出力データシートＳＴの所定位置に書き込むことで、入出力データシートＳＴに、このシミュレーションで用いた入力変数の値ｘ１，ｘ２，ｘ３，ｘ４，ｘ５と関連付けて、値Ｙ１１，Ｙ１２を記憶させる（Ｓ３６０）。
【００７７】
Ｓ３６０での処理を終えると、検査処理部２５は、入出力データシートＳＴに記載の全検査項目についてのシミュレーションが終了したか否か判断し（Ｓ３７０）、終了していないと判断すると（Ｓ３７０でＮｏ）、Ｓ３３０に移行し、未処理の検査項目についての入力変数値ｘ１，ｘ２，ｘ３，ｘ４，ｘ５を入出力データシートＳＴから読み出して、これをシミュレーションプログラムＰｒ１の引数に設定し、後続の処理を実行する。一方、Ｓ３７０で、入出力データシートＳＴに記載の全検査項目についてのシミュレーションが終了したと判断すると、検査処理部２５は、当該シミュレーション処理を終了する。
【００７８】
シミュレーション処理を終了すると、検査処理部２５は、Ｓ４００にて、検査プログラム実行処理を実行する。尚、図１０は、検査処理部２５が実行する検査プログラム実行処理を表すフローチャートである。
【００７９】
検査プログラム実行処理を実行すると、検査処理部２５は、ハードディスク装置１９の所定場所から、検査対象のプログラムＰｒ２を読み出す（Ｓ４１０）。そして、シミュレーション処理により値Ｙ１が付加された入出力データシートＳＴを読み出し（Ｓ４２０）、入出力データシートＳＴに含まれる入力変数値の一組ｘ１，ｘ２，ｘ３，ｘ４，ｘ５を、検査対象プログラムＰｒ２の引数に設定して（Ｓ４３０）、検査対象プログラムＰｒ２をＣＰＵ１１に実行させる（Ｓ４４０）。
【００８０】
この後、検査処理部２５は、検査対象プログラムＰｒ２の実行結果として、ＲＡＭ１５の所定メモリ領域に書き込まれた検査対象プログラムＰｒ２の出力値Ｙ２１，Ｙ２２（以下、この二つの値をまとめて値Ｙ２と表現する。）をＲＡＭ１５から読み出し（Ｓ４５０）、この値Ｙ２を、入出力データシートＳＴの所定位置に書き込む。これにより、入出力データシートＳＴには、Ｓ４３０で用いた入力変数の値ｘ１，ｘ２，ｘ３，ｘ４，ｘ５及び値Ｙ１に関連付けられて、Ｓ４５０で読み出した値Ｙ２１，Ｙ２２が記録される（Ｓ４６０）。
【００８１】
Ｓ４６０での処理を終えると、検査処理部２５は、入出力データシートＳＴに記載の全検査項目について、その入力変数値を引数に設定した検査対象プログラムＰｒ２の実行及び出力値Ｙ２１，Ｙ２２の入出力データシートＳＴへの書き込みが終了したか否か判断し（Ｓ４７０）、終了していないと判断すると（Ｓ４７０でＮｏ）、Ｓ４３０に移行する。
【００８２】
そして、未処理の検査項目についての入力変数値ｘ１，ｘ２，ｘ３，ｘ４，ｘ５を入出力データシートＳＴから読み出し、これを検査対象プログラムＰｒ２の引数に設定し、後続の処理を実行する。一方、入出力データシートＳＴに記載の全検査項目について、その入力変数値を引数に設定した検査対象プログラムＰｒ２の実行及び出力値Ｙ２１，Ｙ２２の入出力データシートＳＴへの書き込みが終了したと判断すると（Ｓ４７０でＹｅｓ）、検査処理部２５は、当該検査プログラム実行処理を終了する。
【００８３】
この検査プログラム実行処理を終了すると、検査処理部２５は、Ｓ５００にて合否判定処理を実行する。図１１は、検査処理部２５が実行する合否判定処理を表すフローチャートである。
【００８４】
合否判定処理を実行すると、検査処理部２５は、値Ｙ１及び値Ｙ２が付加された入出力データシートＳＴを読み出し（Ｓ５１０）、その入出力データシートＳＴに記載されている検査項目の入力変数値と関連付けられた値Ｙ１及び値Ｙ２の一組を検査対象として選択し（Ｓ５２０）、値Ｙ１と値Ｙ２との差が、予め定められた演算誤差Ｅ０以下であるか否かを判断する（Ｓ５４０）。
【００８５】
本実施例では、浮動小数点演算における丸め処理により、１度の四則演算で生じる最大誤差を、演算誤差Ｅ０に設定している。具体的に、検査対象プログラムＰｒ２の引数が単精度浮動小数点数であって、丸め処理が四捨五入の場合には、演算誤差Ｅ０として、有効数字７桁目に対し値１．１９２０９を設定する。
【００８６】
ここで、検査処理部２５は、不等式Ｙ２１−Ｅ０≦Ｙ１１≦Ｙ２１＋Ｅ０、及び、Ｙ２２−Ｅ０≦Ｙ１２≦Ｙ２２＋Ｅ０が満足されていると、値Ｙ１と値Ｙ２との差が予め設定された演算誤差Ｅ０以下である（Ｓ５４０でＹｅｓ）と判断し、上記不等式が満足されていないと、値Ｙ１と値Ｙ２との差が予め設定された演算誤差Ｅ０以下ではない（Ｓ５４０でＮｏ）と判断する。
【００８７】
Ｓ５４０でＹｅｓと判断すると、検査処理部２５は、値Ｙ２は値Ｙ１と一致しているから適値であると判断して、その旨の合格判定情報（本実施例では○印）を、入出力データシートＳＴの所定位置に書き込み、入出力データシートＳＴに、比較した値Ｙ１及び値Ｙ２と関連付けて、合格判定情報を記憶させる（Ｓ５５０）。
【００８８】
一方、Ｓ５４０でＮｏと判断すると、検査処理部２５は、値Ｙ２は値Ｙ１と一致していないから適値ではないと判断して、その旨の不合格判定情報（本実施例では×印）を、入出力データシートＳＴの所定位置に書き込み、入出力データシートＳＴに、比較した値Ｙ１及び値Ｙ２と関連付けて、不合格判定情報を記憶させる（Ｓ５６０）。
【００８９】
Ｓ５５０又はＳ５６０での処理を終えると、検査処理部２５は、入出力データシートＳＴに記載の全検査項目について、値Ｙ１及び値Ｙ２の比較・合否判定が終了したか否か判断し（Ｓ５７０）、終了していないと判断すると（Ｓ５７０でＮｏ）、Ｓ５２０に移行して、未処理の検査項目に関連付けられた値Ｙ１及び値Ｙ２を検査対象として選択し、後続の処理を実行する。
【００９０】
一方、入出力データシートＳＴに記載の全検査項目について、値Ｙ１及び値Ｙ２の比較・合否判定が終了したと判断すると（Ｓ５７０でＹｅｓ）、検査処理部２５は、当該合否判定処理を終了する。この合否判定処理によって、ハードディスク装置１９には、合否判定結果が記載された入出力データシートＳＴが保存される。
【００９１】
以上、本実施例のシミュレーション装置１について説明したが、このシミュレーション装置１によれば、基本プログラム（プログラムコード）の組合せからなるシステムのモデル（シミュレーションプログラム）を用いてシステムのシミュレーションを行う。また、サブシステムについてのシミュレーションを行う際には、シミュレーションプログラムの元データであるモデルデータにおいて、シミュレーション対象のサブシステムに対応するサブシステムブロックＢＳ１を構成するブロック群の内、サブシステムブロックＢＳ１外であってモデルＭＬ１内のブロックからデータを受け取る構成にされた入力ポートブロックＢ１２，Ｂ１３を、夫々、所定のメモリ領域Ｓｐ２，Ｓｐ３にセットされたデータを取得する変数読出ブロックＢ５５，Ｂ５６に変更する（Ｓ２２０，Ｓ２２５）。
【００９２】
また、サブシステムブロックＢＳ１を構成するブロック群の内、サブシステムブロックＢＳ１外であってモデルＭＬ１内のブロックにデータを引き渡す構成にされた出力ポートブロックＢ２２，Ｂ２３を、夫々、所定のメモリ領域Ｓｐ６，Ｓｐ７にデータを記録する変数書込ブロックＢ６３，Ｂ６４に変更する（Ｓ２４０，２４５）。
【００９３】
この処理によって、シミュレーション装置１の検査処理部２５は、上記サブシステムブロックＢＳ１を、上記モデルＭＬ１内の他のブロックから切り出し、変数Ｉｎ２１，Ｉｎ２２を通じて、システム外部からデータをサブシステムブロックＢＳ１内に直接入力でき、又、変数Ｏｕｔ２１，変数Ｏｕｔ２２を通じて、サブシステムブロックＢＳ１での演算結果を、システム外部に直接出力できるモデルＭＬ１から独立した上記サブシステムのモデルＭＬ２を生成する。
【００９４】
また、検査処理部２５は、このモデルＭＬ２についてのモデル構成情報を用いて、プログラム生成部２３にシミュレーションプログラムＰｒ１を生成させ、そのシミュレーションプログラムＰｒ１を用いて、サブシステムブロックＢＳ１に対応するサブシステムについてのシミュレーションをＣＰＵ１１に実行させる（Ｓ３４０）。
【００９５】
このように、本実施例のシミュレーション装置１によれば、モデルＭＬ１についてのモデルデータを編集して、サブシステム単体でのシミュレーションを実行可能としているので、サブシステム単体でのシミュレーションを簡単に行うことができる。また、このシミュレーション装置１によれば、サブシステムのシミュレーションを簡単に行うことができるので、制御システムに用いるプログラム等を開発する際、プログラムの検査を効率的に行うことができる。
【００９６】
特に、本実施例によれば、検査処理部２５が、Ｓ１５０にて選択されたサブシステムに対応する機能をＣＰＵ１１に実現させるための検査対象プログラムＰｒ２の出力値Ｙ２を、上記サブシステムのシミュレーションにて得られたシミュレーション結果（値Ｙ１）に基づいて検査するので、理論値の手計算を行う必要がなく、大変便利である。
【００９７】
即ち、このシミュレーション装置１では、検査処理部２５が、Ｓ４１０でハードディスク装置１９から検査対象プログラムＰｒ２を取得すると共に、Ｓ４２０，Ｓ４３０で検査対象のプログラムの引数に設定すべきデータ（入力変数値ｘ１，ｘ２，ｘ３，ｘ４，ｘ５）を読み出し、その入力変数値ｘ１，ｘ２，ｘ３，ｘ４，ｘ５を引数に設定して検査対象プログラムＰｒ２をＣＰＵ１１に実行させ（Ｓ４３０，Ｓ４４０）、この出力値Ｙ２を入出力データシートＳＴに記録する一方で、検査対象プログラムＰｒ２の引数に設定する値と同一の値を、シミュレーションプログラムＰｒ１の引数に設定し（Ｓ３３０）、その値を用いたサブシステムのシミュレーションを実行して（Ｓ３４０）、そのシミュレーション結果（値Ｙ１）を、入出力データシートＳＴに記録する。
【００９８】
そして、この入出力データシートＳＴに記録された値Ｙ１及び値Ｙ２が一致しているか否かを判断することにより（Ｓ５２０〜Ｓ５４０）、検査対象プログラムＰｒ２の出力値Ｙ２が適値であるか否かを判定し、この判定結果を入出力データシートＳＴに出力する（Ｓ５５０，Ｓ５６０）。従って、本実施例によれば、プログラムＰｒ２についての動作確認をする際、手計算により理論値を算出して、検査対象プログラムＰｒ２の出力値Ｙ２を検査する必要がなく、開発したプログラムＰｒ２についての検査を、効率的に行うことができるのである。
【００９９】
尚、検査対象プログラムＰｒ２の出力値には、プログラムＰｒ２の実行時に生ずる演算誤差が含まれるが、本実施例では、検査対象プログラムＰｒ２の出力値が適値であるか否かを判定する際に、検査対象プログラムＰｒ２の演算誤差Ｅ０を考慮に入れて、検査対象プログラムＰｒ２の出力値Ｙ２と、シミュレーションにより得られた値Ｙ１と、が一致しているか否かを判断するようにした（Ｓ５４０）。
【０１００】
そして、値Ｙ２を基準とした演算誤差Ｅ０の範囲内に、値Ｙ１が収まっていると、検査対象プログラムＰｒ２の出力値Ｙ２と、シミュレーション結果（値Ｙ１）と、が一致しているとして（Ｓ５４０でＹｅｓ）、検査対象プログラムＰｒ２の出力結果を合格判定するようにした（Ｓ５５０）。従って、本実施例のシミュレーション装置１によれば、演算誤差Ｅ０の影響により不適切な検査結果が導出されるのを防止することができる。
【０１０１】
尚、本発明のシミュレーション装置及び検査装置は、シミュレーション装置１に相当する。また、抽出手段は、検査処理部２５が実行するＳ２１０での処理にて実現され、独立モデル生成手段は、検査処理部２５が実行するＳ２２０〜Ｓ２９０での処理にて実現されている。その他、サブシステムシミュレーション実行手段は、検査処理部２５が実行するＳ３４０での処理にて実現され、実行制御手段は、検査処理部２５が実行するＳ３３０での処理にて実現されている。
【０１０２】
また、検査対象取得手段は、検査処理部２５が実行するＳ４１０での処理にて実現され、データ取得手段は、検査処理部２５が実行するＳ３１０，Ｓ４２０での処理にて実現され、プログラム実行手段は、検査処理部２５が実行するＳ４３０，Ｓ４４０での処理にて実現され、検査手段は、検査処理部２５が実行する合否判定処理にて実現されている。その他、一致判断手段は、検査処理部２５が実行するＳ５２０〜Ｓ５４０での処理にて実現されている。
【０１０３】
また、本発明のシミュレーション装置及び検査装置は、上記実施例に限定されるものではなく、種々の態様を採ることができる。
例えば、Ｓ５４０では、浮動小数点演算の丸め処理により１度の四則演算で生じる最大誤差を所定の桁で切り上げた値を、演算誤差Ｅ０として用いてもよい。具体的に、丸め処理が四捨五入の場合であって、単精度浮動小数点数についての丸め処理によって生じる最大誤差の小数点一桁目を切り上げる場合には、演算誤差Ｅ０として、有効数字７桁目に値２を設定すればよい。
【０１０４】
その他、図３に示す検査処理では、Ｓ１１０からＳ３００までの処理を実行する前に、Ｓ４００の処理を実行するようにしてもよい。また、図４に示す独立モデル生成処理では、Ｓ２２０からＳ２３０までの処理、Ｓ２４０からＳ２５０までの処理、及び、Ｓ２６０からＳ２７０までの処理、の実行順序を、入れ替えてもよい。
【図面の簡単な説明】
【０１０５】
【図１】本発明が適用されたシミュレーション装置１のハードウェア構成を表す説明図（ａ）及びソフトウェア構成を表す説明図（ｂ）である。
【図２】モデル構成情報の一例を示した説明図である。
【図３】検査処理部２５が実行する検査処理を表すフローチャートである。
【図４】検査処理部２５が実行する独立モデル生成処理を表すフローチャートである。
【図５】置換後のサブシステムのモデルＭＬ２を表す説明図である。
【図６】検査処理部２５が実行するスタブ化処理を表すフローチャートである。
【図７】スタブ化処理後のサブシステムブロックＢＳ２の構成を表す説明図である。
【図８】検査処理部２５が実行するシミュレーション処理を表すフローチャートである。
【図９】入出力データシートＳＴの構成を表す説明図である。
【図１０】検査処理部２５が実行する検査プログラム実行処理を表すフローチャートである。
【図１１】検査処理部２５が実行する合否判定処理を表すフローチャートである。
【符号の説明】
【０１０６】
１…シミュレーション装置、１１…ＣＰＵ、１３…ＲＯＭ、１５…ＲＡＭ、１７…操作部、１８…表示部、１９…ハードディスク装置、２１…モデル編集部、２３…プログラム生成部、２５…検査処理部、Ｂ１２，Ｂ１３，Ｂ１４…入力ポートブロック、Ｂ２２，Ｂ２３，Ｂ２４…出力ポートブロック、Ｂ５１〜Ｂ５７…変数読出ブロック、Ｂ６１〜Ｂ６４…変数書込ブロック、Ｂ８３…終端ブロック、ＢＳ１，ＢＳ２…サブシステムブロック、ＬＢ…ライブラリ、ＭＬ１，ＭＬ２…モデル、Ｐｒ１…シミュレーションプログラム、Ｐｒ２…検査対象プログラム、ＳＴ…入出力データシート、Ｓｐ１〜Ｓｐ７…メモリ領域
【図１】
2005352670.tif 000003
【図２】
2005352670.tif 000004
【図３】
2005352670.tif 000005
【図４】
2005352670.tif 000006
【図５】
2005352670.tif 000007
【図６】
2005352670.tif 000008
【図７】
2005352670.tif 000009
【図８】
2005352670.tif 000010
【図９】
2005352670.tif 000011
【図１０】
2005352670.tif 000012
【図１１】
2005352670.tif 000013