(57)【特許請求の範囲】
【請求項１】
ユーザがソフトウェアとして組み込もうとする任意の情報処理機能をブロック図として定義し、この定義されたブロック図に対応させたプログラムを自動生成するソフトウェアの開発支援システムであって、
前記プログラムの動作確認をシミュレーションによって行うシミュレーション装置は、
前記ブロック図を構成する各ブロックに対応する部分的なソースコードとして作成したコード片を元にシミュレーションモデルを作成するに際し、オペレータモデルに演算対象のシミュレーションモデルを関連付け、オペランドモデルにはブロック図の実際の情報を関連付けるシミュレーションモデル作成手段と、
前記シミュレーションモデルの初期値を設定するシミュレーション初期値設定手段と、
前記オペレータモデルの演算結果及び前記オペランドモデルに関連付けられた実際の値を取得するシミュレーションモデル値取得手段と、
前記初期値と前記実際の値とを使用してシミュレーション演算するシミュレーションモデル演算手段と、
前記シミュレーション演算結果を外部表示装置に動作確認用として表示する演算結果表示手段と
を備えたことを特徴とするソフトウェアの開発支援システム。
【請求項２】
入力される現在値を指定した条件でチェックするチェックブロックを作成するチェックブロック作成手段と、
前記チェックブロックをブロック図のブロック間の接続線に関連付けるチェックブロック関連付け手段と、
前記チェックブロックを含めた前記シミュレーションモデルの全ての当該ブロックに初期値が設定された当該シミュレーションモデルのブロック図の線のつながりに従って、シミュレーションを順次実行するシミュレーションモデル実行手段と、
前記チェックブロックが現在値を指定した条件でチェックした結果を外部表示装置に動作確認用として表示するチェック結果表示手段と
を備えたこと
を特徴とする請求項１に記載のソフトウェアの開発支援システム。
【請求項３】
前記シミュレーションモデルにブレークポイント用チェックブロックを作成するブレークポイント用チェックブロック作成手段と、
シミュレーション実行を前記ブレークポイント用チェックブロックの所で一時停止させるシミュレーション一時停止手段と、
前記一時停止させたブレークポイント用チェックブロックを強調表示するブレークポイント強調表示手段と、
前記一時停止しているときに、シミュレーションモデルの現在値を表示するシミュレーションモデル値表示手段と、
前記一時停止しているときに、シミュレーションを再開するシミュレーション再開手段と、
を備えたこと
を特徴とする請求項１または２に記載のソフトウェアの開発支援システム。
【請求項４】
前記ブロック図中のすべてのブロックに対して、一括してシミュレーションモデルを作成する全ブロックシミュレーションモデル作成手段を備え、
前記シミュレーションモデル実行手段は、シミュレーションモデルが作成された全ブロック図のうち、各ブロックが単線で接続された単線ブロック図に対応するシミュレーションモデルに対して線単位のシミュレーションを行う手段を備えたこと
を特徴とする請求項２に記載のソフトウェアの開発支援システム。
【請求項５】
ブロック図のブロック間の通過を確認するための通過用チェックブロックを作成し、この通過用チェックブロックを分岐またはループを含むブロック図中のすべての線に対して配置する通過用チェックブロック作成手段と、
前記シミュレーションモデル実行手段によりシミュレーションを行ったときに、前記通過用チェックブロックのチェック有無を切り替えるチェック有無切替手段と、
前記チェック有無が「無」になる通過用チェックブロックを強調表示するチェック無強調表示手段と
を備えたこと
を特徴とする請求項２に記載のソフトウェアの開発支援システム。
【請求項６】
ユーザがソフトウェアとして組み込もうとする任意の情報処理機能をブロック図として定義し、この定義されたブロック図に対応させたプログラムを自動生成するソフトウェアの開発支援方法であって、
前記プログラムの動作確認をシミュレーションによって行うシミュレーション装置は、
前記ブロック図を構成する各ブロックに対応する部分的なソースコードとして作成したコード片を元にシミュレーションモデルを作成するに際し、オペレータモデルに演算対象のシミュレーションモデルを関連付け、オペランドモデルにはブロック図の実際の情報を関連付けるシミュレーションモデル作成ステップと、
前記シミュレーションモデルの初期値を設定するシミュレーション初期値設定ステップと、
前記オペレータモデルの演算結果及び前記オペランドモデルに関連付けられた実際の値を取得するシミュレーションモデル値取得ステップと、
前記初期値と前記実際の値とを使用してシミュレーション演算するシミュレーションモデル演算ステップと、
前記シミュレーション演算結果を外部表示装置に動作確認用として表示する演算結果表示ステップと
を実行すること
を特徴とするソフトウェアの開発支援方法。
【請求項７】
入力される現在値を指定した条件でチェックするチェックブロックを作成するチェックブロック作成ステップと、
前記チェックブロックをブロック図のブロック間の接続線に関連付けるチェックブロック関連付けステップと、
前記チェックブロックを含めた前記シミュレーションモデルの全ての当該ブロックに初期値が設定された当該シミュレーションモデルのブロック図の線のつながりに従って、シミュレーションを順次実行するシミュレーションモデル実行ステップと、
前記チェックブロックが現在値を指定した条件でチェックした結果を外部表示装置に動作確認用として表示するチェック結果表示ステップと
を実行すること
を特徴とする請求項６に記載のソフトウェアの開発支援方法。
【請求項８】
前記シミュレーションモデルにブレークポイント用チェックブロックを作成するブレークポイント用チェックブロック作成ステップと、
シミュレーション実行を前記ブレークポイント用チェックブロックの所で一時停止させるシミュレーション一時停止ステップと、
前記一時停止させたブレークポイント用チェックブロックを強調表示するブレークポイント強調表示ステップと、
前記一時停止しているときに、シミュレーションモデルの現在値を表示するシミュレーションモデル値表示ステップと、
前記一時停止しているときに、シミュレーションを再開するシミュレーション再開ステップと
を実行すること
を特徴とする請求項６または７に記載のソフトウェアの開発支援方法。
【請求項９】
前記ブロック図中のすべてのブロックに対して、一括してシミュレーションモデルを作成する全ブロックシミュレーションモデル作成ステップを実行し、
前記シミュレーションモデル実行ステップは、シミュレーションモデルが作成された全ブロック図のうち、各ブロックが単線で接続された単線ブロック図に対応するシミュレーションモデルに対して線単位のシミュレーションを行うステップを有すること
を特徴とする請求項７に記載のソフトウェアの開発支援方法。
【請求項１０】
ブロック図のブロック間の通過を確認するための通過用チェックブロックを作成し、この通過用チェックブロックを分岐またはループを含むブロック図中のすべての線に対して配置する通過用チェックブロック作成ステップと、
前記シミュレーションモデル実行ステップによりシミュレーションを行ったときに、前記通過用チェックブロックのチェック有無を切り替えるチェック有無切替ステップと、
前記チェック有無が「無」になる通過用チェックブロックを強調表示するチェック無強調表示ステップと
を実行すること
を特徴とする請求項７に記載のソフトウェアの開発支援方法。
【請求項１１】
請求項６〜１０のいずれか１項に記載のソフトウェアの開発支援方法における処理ステップをコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェアの開発支援システムおよび支援方法に係り、特に組込みソフトウェアとしてブロック図を元にして作成するプログラムの動作確認に関する。
【背景技術】
【０００２】
組込みソフトウェア開発では、演算に関する設計図としてブロック図を作成する。ブロック図の要素としてはブロックと線があり、これらが図面上で接続されることで、ソフトウェアとして実現したい内容を表現する。この設計図を元にして実装を行うにあたっては、実装者が設計図から設計情報を読み取りながら、手作業で実装が行われている。
【０００３】
例えば、図１９に示すように、開発対象の組込み機器が、ＩＮ１とＩＮ２を加えて、その和にＩＮ３を掛ける場合、入力から出力まで、加算や乗算を表すブロックを配置し、ブロック間を線で結んで演算順序を表現する。開発者は、作成したブロック図をもとにプログラムを作成し、専用のコンパイラを使用して作成したプログラムをコンパイルし、実機に組み込んで動作を試験する。
【０００４】
また、ＭＡＴＬＡＢ／Ｓｉｍｕｌｉｎｋに代表されるようなブロック図作成のためのアプリケーションでは、ブロック図を元にソースコードを出力するものもある（例えば、非特許文献１参照）。
【非特許文献１】ＭＡＴＬＡＢ／Ｓｉｍｕｌｉｎｋ（ｈｔｔｐ：／／ｗｗｗ．ｃｙｂｅｒｎｅｔ．ｃｏ．ｊｐ／ｍａｔｌａｂ／ｐｒｏｄｕｃｔｓ／ｐｒｏｄｕｃｔ＿ｌｉｓｔｉｎｇ／ｓｉｍｕｌｉｎｋ／）
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ＭＡＴＬＡＢ／Ｓｉｍｕｌｉｎｋに代表されるような従来のブロック図作成のためのアプリケーションでは、ブロック図の配線情報を元にソースコードを出力する。しかし、組み込みソフトウェアでは、少ないリソースで所望のプログラムとして実現しなければならないため、出力されたソースコードそのものでは組み込みソフトウェアとして利用するのは困難であることが多い。
【０００６】
例えば、一般的なブロック図を用いて出力されたソースコードには、変数（グローバル変数、ローカル変数など）やレジスタなどを指定するような内容は含まれていない。そのため、ブロック図を元に実装を行う際には、手作業によりコーディング作業が行われることになる。これにより、実装時間が多くかかる。また、手作業によるコーディングではブロック図と実装が乖離しやすくなる。
【０００７】
このような課題を解消する手法として、各ブロックのコード片（ブロックに対応する部分的なソースコード）と作成したブロック図から、自動的にプログラムを作成することにより、開発の効率を向上させる手法を、本願出願人は同時に提案している。
【０００８】
例えば、図２０に示すように、ブロック図を構成する各ブロックの演算機能についてそれぞれコード片を自動生成し、各コード片の入出力設定によってプログラムを生成する。この場合、加算ブロックのコード片について、＄ｏｕｔはブロック図のＶＡＲ１に対応し、＄ｓｉｇｎ１は“＋”、＄ｉｎ１はＩＮ１、＄ｓｉｇｎ２は“＋”、＄ｉｎ２はＩＮ２となり、乗算ブロックのコード片について、＄ｏｕｔはＯＵＴ１、＄ｉｎ１はＶＡＲ１、＄ｉｎ２はＩＮ３となるため、プログラムは図２０の右下に示すように自動生成される。
【０００９】
このようにして開発されたプログラムは、専用のコンパイラを使用してコンパイルし、実機に組み込んで動作を試験する。この試験で不具合が発生すると、開発者は、図２１に例を示すように、ブロック図の不具合箇所を修正し、修正したブロック図に対応するプログラムも修正する。修正したプログラムを再コンパイルして、再度実機に組み込んで試験を行う。あるいは、先にプログラムの不具合箇所を修正して、修正したプログラムに対応するブロック図を修正する。修正したプログラムを再コンパイルして、再度実機に組み込んで試験を行う。
【００１０】
上記のブロック図とプログラムの両方を修正する作業は、開発対象の規模が大きくなると多くの手間と時間を要する。また、ブロック図とプログラムの両方に整合性を保ちながら修正しなければならないが、ブロック図を修正してもプログラムの修正を忘れてしまうことや、プログラムを修正してもブロック図の修正を忘れてしまうこともある。これは、次に同じような箇所を変更または修正しようとするときに間違いが発生するなどの問題が発生する。
【００１１】
なお、プログラムを自動生成するシステムでは、ブロック図を修正することでプログラムを再自動生成し、再度実機に組み込んで試験を行うことができ、開発者はブロック図を修正するだけで済み、プログラムの修正を行わなくても良い。しかし、再コンパイルと実機による試験作業には相変わらず手間と時間を要する。
【００１２】
本発明の目的は、ブロック図を元にして作成したプログラムの実機試験を行うことなく、プログラムの動作確認を簡単にしたソフトウェアの開発支援システム、支援方法およびプログラムを提供することにある。
【課題を解決するための手段】
【００１３】
前記の課題を解決するため、本発明は、以下のシステム、方法およびプログラムを特徴とする。
【００１４】
（システムの発明）
請求項１の発明は、ユーザがソフトウェアとして組み込もうとする任意の情報処理機能をブロック図として定義し、この定義されたブロック図に対応させたプログラムを自動生成するソフトウェアの開発支援システムであって、
前記プログラムの動作確認をシミュレーションによって行うシミュレーション装置は、
前記ブロック図を構成する各ブロックに対応する部分的なソースコードとして作成したコード片を元にシミュレーションモデルを作成するに際し、オペレータモデルに演算対象のシミュレーションモデルを関連付け、オペランドモデルにはブロック図の実際の情報を関連付けるシミュレーションモデル作成手段と、
前記シミュレーションモデルの初期値を設定するシミュレーション初期値設定手段と、
前記オペレータモデルの演算結果及び前記オペランドモデルに関連付けられた実際の値を取得するシミュレーションモデル値取得手段と、
前記初期値と前記実際の値とを使用してシミュレーション演算するシミュレーションモデル演算手段と、
前記シミュレーション演算結果を外部表示装置に動作確認用として表示する演算結果表示手段と
を備えたことを特徴とする。
【００１５】
請求項２の発明は、請求項１のソフトウェアの開発支援システムにおいて、
入力される現在値を指定した条件でチェックするチェックブロックを作成するチェックブロック作成手段と、
前記チェックブロックをブロック図のブロック間の接続線に関連付けるチェックブロック関連付け手段と、
前記チェックブロックを含めた前記シミュレーションモデルの全ての当該ブロックに初期値が設定された当該シミュレーションモデルのブロック図の線のつながりに従って、シミュレーションを順次実行するシミュレーションモデル実行手段と、
前記チェックブロックが現在値を指定した条件でチェックした結果を外部表示装置に動作確認用として表示するチェック結果表示手段と
を備えたことを特徴とする。
【００１６】
請求項３の発明は、請求項１または２のソフトウェアの開発支援システムにおいて、
前記シミュレーションモデルにブレークポイント用チェックブロックを作成するブレークポイント用チェックブロック作成手段と、
シミュレーション実行を前記ブレークポイント用チェックブロックの所で一時停止させるシミュレーション一時停止手段と、
前記一時停止させたブレークポイント用チェックブロックを強調表示するブレークポイント強調表示手段と、
前記一時停止しているときに、シミュレーションモデルの現在値を表示するシミュレーションモデル値表示手段と、
前記一時停止しているときに、シミュレーションを再開するシミュレーション再開手段と、
を備えたことを特徴とする。
【００１７】
請求項４の発明は、請求項２のソフトウェアの開発支援システムにおいて、
前記ブロック図中のすべてのブロックに対して、一括してシミュレーションモデルを作成する全ブロックシミュレーションモデル作成手段を備え、
前記シミュレーションモデル実行手段は、シミュレーションモデルが作成された全ブロック図のうち、各ブロックが単線で接続された単線ブロック図に対応するシミュレーションモデルに対して線単位のシミュレーションを行う手段を備えたこと
を特徴とする。
【００１８】
請求項５の発明は、請求項２のソフトウェアの開発支援システムにおいて、
ブロック図のブロック間の通過を確認するための通過用チェックブロックを作成し、この通過用チェックブロックを分岐またはループを含むブロック図中のすべての線に対して配置する通過用チェックブロック作成手段と、
前記シミュレーションモデル実行手段によりシミュレーションを行ったときに、前記通過用チェックブロックのチェック有無を切り替えるチェック有無切替手段と、
前記チェック有無が「無」になる通過用チェックブロックを強調表示するチェック無強調表示手段と
を備えたことを特徴とする。
【００１９】
（方法の発明）
請求項６の発明は、ユーザがソフトウェアとして組み込もうとする任意の情報処理機能をブロック図として定義し、この定義されたブロック図に対応させたプログラムを自動生成するソフトウェアの開発支援方法であって、
前記プログラムの動作確認をシミュレーションによって行うシミュレーション装置は、
前記ブロック図を構成する各ブロックに対応する部分的なソースコードとして作成したコード片を元にシミュレーションモデルを作成するに際し、オペレータモデルに演算対象のシミュレーションモデルを関連付け、オペランドモデルにはブロック図の実際の情報を関連付けるシミュレーションモデル作成ステップと、
前記シミュレーションモデルの初期値を設定するシミュレーション初期値設定ステップと、
前記オペレータモデルの演算結果及び前記オペランドモデルに関連付けられた実際の値を取得するシミュレーションモデル値取得ステップと、
前記初期値と前記実際の値とを使用してシミュレーション演算するシミュレーションモデル演算ステップと、
前記シミュレーション演算結果を外部表示装置に動作確認用として表示する演算結果表示ステップと
を実行することを特徴とする。
【００２０】
請求項７の発明は、請求項６のソフトウェアの開発支援方法において、
入力される現在値を指定した条件でチェックするチェックブロックを作成するチェックブロック作成ステップと、
前記チェックブロックをブロック図のブロック間の接続線に関連付けるチェックブロック関連付けステップと、
前記チェックブロックを含めた前記シミュレーションモデルの全ての当該ブロックに初期値が設定された当該シミュレーションモデルのブロック図の線のつながりに従って、シミュレーションを順次実行するシミュレーションモデル実行ステップと、
前記チェックブロックが現在値を指定した条件でチェックした結果を外部表示装置に動作確認用として表示するチェック結果表示ステップと
を実行することを特徴とする。
【００２１】
請求項８の発明は、請求項６または７のソフトウェアの開発支援方法において、
前記シミュレーションモデルにブレークポイント用チェックブロックを作成するブレークポイント用チェックブロック作成ステップと、
シミュレーション実行を前記ブレークポイント用チェックブロックの所で一時停止させるシミュレーション一時停止ステップと、
前記一時停止させたブレークポイント用チェックブロックを強調表示するブレークポイント強調表示ステップと、
前記一時停止しているときに、シミュレーションモデルの現在値を表示するシミュレーションモデル値表示ステップと、
前記一時停止しているときに、シミュレーションを再開するシミュレーション再開ステップと
を実行することを特徴とする。
【００２２】
請求項９の発明は、請求項７のソフトウェアの開発支援方法において、
前記ブロック図中のすべてのブロックに対して、一括してシミュレーションモデルを作成する全ブロックシミュレーションモデル作成ステップを実行し、
前記シミュレーションモデル実行ステップは、シミュレーションモデルが作成された全ブロック図のうち、各ブロックが単線で接続された単線ブロック図に対応するシミュレーションモデルに対して線単位のシミュレーションを行うステップを有すること
を特徴とする。
【００２３】
請求項１０の発明は、請求項７のソフトウェアの開発支援方法において、
ブロック図のブロック間の通過を確認するための通過用チェックブロックを作成し、この通過用チェックブロックを分岐またはループを含むブロック図中のすべての線に対して配置する通過用チェックブロック作成ステップと、
前記シミュレーションモデル実行ステップによりシミュレーションを行ったときに、前記通過用チェックブロックのチェック有無を切り替えるチェック有無切替ステップと、
前記チェック有無が「無」になる通過用チェックブロックを強調表示するチェック無強調表示ステップと
を実行することを特徴とする。
【００２４】
（プログラムの発明）
請求項１１の発明は、請求項６〜１０のいずれかのソフトウェアの開発支援方法における処理ステップをコンピュータに実行させるためのプログラム。
【発明の効果】
【００２５】
以上のとおり、本発明によれば、ユーザがソフトウェアとして組み込もうとする任意の情報処理機能をブロック図として定義し、この定義されたブロック図の動作確認はブロック単体または全体のシミュレーションを行い、このシミュレーション結果から動作確認するため、ブロック図を元にして作成したプログラムの実機試験を行うことなく、プログラムの動作確認が簡単になる。
【発明を実施するための最良の形態】
【００２６】
（実施形態１）
図１は、本実施形態を示すシミュレーション装置の構成図であり、コンピュータとその資源を利用したソフトウェアで各機能が実現される。
【００２７】
各機能は、組み込みソフトウェアを構成する各ブロック図について個々に作成されたコード片を保存するブロックデータベース１と、このデータベースに保存するコード片からオペレータモデルとオペランドモデル構成のシミュレーションモデルを作成するシミュレーションモデル作成機能２と、シミュレーションモデルのうち、オペレータモデルに演算対象のシミュレーションモデルを関連付ける演算対象関連付け機能３と、シミュレーションモデルのうち、オペランドモデルにブロック図の実際の情報を関連付けるブロック図情報関連付け機能４と、作成したシミュレーションモデルをデータベース５に保存するシミュレーションモデル保存機能６を備える。
【００２８】
シミュレーションモデル実行機能７は、シミュレーションモデル作成機能２で作成したシミュレーションモデル、またはシミュレーションモデルデータベース５から取得機能８が取得するシミュレーションモデルについて、シミュレーションを実行する。このシミュレーションの実行は、後述のように、多数のブロックの接続によって１つのまとまった機能をもたせたプログラムについて、その一連の動作の正常／異常をチェックする場合などに利用する。
【００２９】
ブロック単体に対応するプログラムの動作チェックのためのシミュレーションは機能９〜１５によって実行される。これら各機能は、シミュレーションモデルデータベース５からシミュレーションモデル取得機能８が取得するシミュレーション対象ブロック単体の入力に初期値を設定するシミュレーション初期値設定機能９と、取得したシミュレーション対象ブロック単体について、ブロックデータベース１から実際の値を取得するシミュレーションモデル値取得機能１０と、シミュレーションモデルで取得した値と演算対象から取得した値を使用してシミュレーション演算するシミュレーションモデル演算機能１１と、シミュレーション演算結果を演算結果データベース１２に保存するシミュレーションモデル演算結果保存機能１３と、演算結果データベース１２から演算結果の一部またはすべてを取得する演算結果取得機能１４と、取得した演算結果を外部表示装置（ディスプレイなど）に表示する演算結果表示機能１５で構成される。
【００３０】
上記の各機能によるブロック単体のシミュレーションについて、詳細に説明する。まず、シミュレーションモデル作成機能２はブロックデータベース１に保存されるブロック単体のコード片からシミュレーションモデルを作成する。このモデルは、図２に示すように、演算内容を指示する記号などのオペレータを表すオペレータモデルと、演算対象となる値や変数などのオペランドを表すオペランドモデルに分離構成する。
【００３１】
オペレータモデルは、例えば、図２の加算ブロックのコード片では、代入を表す＝（イコール）オペレータや、加算を表す＋（プラス）オペレータが該当する。これら以外のオペレータモデルがあっても良い。オペランドモデルは、例えば、図２の加算ブロックのコード片では、＄ｉｎ１や＄ｉｎ２の変数名が該当する。これら以外のオペランドモデルがあっても良い。
【００３２】
オペレータモデルとオペランドモデルと共に、シミュレーションモデル作成機能２により、ブロック図のブロックが持っているコード片から、図２中に示すように、オペレータを中心にしたツリー形式のシミュレーションモデルを作成する。
【００３３】
演算対象関連付け機能３は、オペレータモデルに関連する他のオペレータモデルまたはオペランドモデルを関連付ける。例えば、図２の加算ブロックでは、代入を表す＝（イコール）オペレータをシミュレーションモデルのツリーのトップに配置し、代入される左辺「＄ｏｕｔオペランド」と、代入する右辺の演算結果を持つ「＋（プラス）オペレータ」を関連付ける。加算を表す＋（プラス）オペレータは、足される左辺「＄ｉｎ１オペランド」と、足す右辺「＄ｉｎ２オペランド」を関連付け、「＄ｉｎ１オペランド」と「＄ｉｎ２オペランド」にはそれぞれ符合を表す「＄ｓｉｇｎ１オペランド」と「＄ｓｉｇｎ２オペランド」を関連付ける。
【００３４】
さらに、ブロック図情報関連付け機能４は、各オペランドのうち、”＄”で始まるオペランドについて、ブロック図の実際の情報（変数や符号など）に関連付ける。例えば、図２の加算ブロックの場合、＄ｏｕｔはＶＡＲ１、＄ｉｎ１はＩＮ１、＄ｉｎ２はＩＮ２、＄ｓｉｇｎ１は“＋”、＄ｓｉｇｎ２は“＋”をそれぞれ関連付ける。
【００３５】
シミュレーションモデル作成機能２は、コード片の一行毎に、ブロック単体のシミュレーションモデルを作成し、シミュレーションモデル保存機能６により、すべてのステートメントに対するシミュレーションモデルをデータベース５に順番に保存する。例えば、図３の加減算ブロックでは、先ず、一行目“ｖａｒ＝＄ｉｎ１＋＄ｉｎ２”でシミュレーションモデルをツリーで作成し、次に、二行目“＄ｏｕｔ＝ｖａｒ−＄ｉｎ３”でシミュレーションモデルをツリーで作成し、それらを順番にデータベース５に保存する。  
【００３６】
シミュレーションモデル演算機能１１は、上記で作成したブロック単体のシミュレーションモデルのシミュレーションを実行する。このシミュレーションは、シミュレーションモデル取得機能８によりデータベース５から取得したシミュレーションモデルの初期値をシミュレーションモデル初期値設定機能９により設定する。一方、シミュレーションモデル値取得機能１０は、関連付けられているオペレータモデルまたはオペランドモデルから値を取得する。シミュレーションモデル演算機能１１は、シミュレーションモデル初期値とオペランドモデルの値からブロック単体のシミュレーション演算を行う。この演算結果はシミュレーションモデル演算結果保存機能１３により、演算結果データベース１２に保存する。
【００３７】
図４に示すシミュレーションモデルのシミュレーションの場合、シミュレーション対象となる加算ブロックの入力ＩＮ１とＩＮ２に初期値を設定し（Ｓ１）、シミュレーションモデルツリーの先頭にある「＝（イコール）オペレータ」が右辺の「＋オペレータ」から演算結果を取得する（Ｓ２）。「＋オペレータ」は左辺の＄ｉｎ１オペランドと右辺の＄ｉｎ２オペランドの値を取得し（Ｓ３）、これら取得した値の和を計算し（Ｓ４）、この演算結果を変換結果データベース１２に保存する（Ｓ５）。
【００３８】
「＝オペレータ」は、左辺の値ＯＵＴ１に、右辺の「＋（プラス）オペレータ」の演算結果を取得して代入し（Ｓ６）、「＄ｏｕｔオペランド」は代入値を演算結果データベース１２に保存する（Ｓ７）。このとき、「＋オペレータ」は、左辺の値ＩＮ１（プラスである）と右辺の値ＩＮ２（プラスである）を加え、演算結果のＩＮ１とＩＮ２の和を演算結果データベース１２に保存する。
【００３９】
同様に、他のシミュレーションモデル（ブロック単体）の動作について演算を実行する。これらの演算結果は、演算結果取得機能１４が演算結果データベース１２から取得し、演算結果表示機能１５により表示する。演算結果をそのまま文字列として表示しても良いし、演算結果をグラフにして表示しても良い。
【００４０】
したがって、作成されたブロック単体または全体のプログラムに入力を設定して、機能７または１１により演算結果を取得するシミュレーションモデルの実行によって、そのブロックの動作を確認することができる。特に、ブロック単体について、開発者がそのブロック図作成段階で個々に動作確認をすることができ、動作に異常があれば当該ブロック図またはプログラムの修正を行うことができ、動作確認には従来の再コンパイルと実機による試験作業という手間と時間を必要としなくなる。
【００４１】
（実施形態２）
図５は、本実施形態を示すシミュレーション装置の構成図であり、チェックブロックによる動作チェック機能を付加したシミュレーションを可能にする。なお、各ブロック図は分岐やループのない単純な場合で説明する。
【００４２】
同図が図１と異なる機能構成について説明する。ユーザ定義ブロック作成装置２１は、ユーザが定義したブロック図について、そのコード片を自動作成する。この装置２１で順次作成するブロック図に対し、チェックブロック作成機能２２は現在値を指定した条件でチェックするチェックブロックを作成し、チェックブロック関連付け機能２３は作成したチェックブロックをブロック図の線に関連付ける。これら機能２２，２３によるチェックブロックと関連付け情報はブロックデータベース１に保存するブロックと一緒に書き込まれる。また、機能２３による関連付け情報はシミュレーションモデル作成機能２によるモデル作成に際して一緒に書き込まれる。
【００４３】
機能１〜９は、実施形態１と同様に、ブロック図全体のシミュレーションを行う。このうち、シミュレーション初期値設定機能９はブロック図全体のシミュレーションモデルのうち、ブロック単体別に初期値を設定する。また、シミュレーションモデル実行機能７は、ブロック図全体の入力から、ブロック図の線のつながりに従って、シミュレーションモデルのシミュレーションを順次実行する。
【００４４】
次に、値保存機能２４は、シミュレーションモデル取得機能８で取得するモデルに一緒に書き込まれているチェックブロックを抽出し、このチェックブロックに関連付けられている線の現在値を値データベース２５に保存する。値取得機能２６は値データペース２５から値の一部またはすべてを取得し、チェック結果保存機能２７はチェックブロックが現在値を指定した条件でチェックした結果をチェック結果データベース２８に保存する。チェック結果取得機能２９はチェック結果データベース２８からチェック結果の一部またはすべてを取得し、取得したチェック結果をチェック結果表示機能３０が外部表示装置（ディスプレイなど）に表示する。
【００４５】
上記の各追加機能によるブロック全体のシミュレーションにおけるチェックブロックについて、詳細に説明する。
【００４６】
まず、チェックブロックを作成する。開発者は、ユーザ定義ブロック作成装置２１によるブロック作成に際して、ブロック図の線上の値が現在どのような値になっているか、また開発者が指定した条件に合致しているかをチェックする、チェックブロックを用意しておく。
【００４７】
このチェック条件は、例えば、図６にチェックブロックとそのコード片を示すように、上限チェックでは現在値が指定した上限を超えたか否かをチェックし、範囲チェックでは現在値が指定した範囲に入っているか否かをチェックする。チェックブロックはこれら以外でも良い。開発者は、チェックブロック作成機能２２の実行で、値をチェックしたいブロック図の線上にチェックブロック配置し、チェックブロック関連付け機能２３の実行で線とチェックブロックを関連付ける。
【００４８】
シミュレーションモデル作成機能２は、実施形態１と同様に、データベース１に保存されるコード片とブロック図の接続情報とから、シミュレーションモデルを作成する。このモデル作成は、オベレータを表すオペレータモデルを基本に、オペランドを表すオペランドモデルと共に、ツリー形式でシミュレーションモデルを作成する。実施形態１と異なる点は、ブロック図の入力から出力に向かって、線をたどってシミュレーションモデルを作成する点にある。例えば、図７の場合、入力から、加算ブロック、乗算ブロック、出力の順にブロックが存在するので、シミュレーションモデルは、加算ブロックのシミュレーションモデル、乗算ブロックのシミュレーションモデルの順に作成する。
【００４９】
機能７によるシミュレーションモデルの実行は、シミュレーションモデル初期値設定機能９により初期値が入力されたモデルに対して行う。チェックブロックは、値保存機能２４がモデル上で関連付けられている線から現在値を取得し、その値を値データベース２５に保存しておく。また、チェック結果保存機能２７により、チェックの結果（例えば、正常、エラー、警告など）をチェック結果データベース２８に保存しておく。外部からは、値取得機能２６により値データベース２５の一部またはすべての値を取得し、チェック結果取得機能２９によりチェック結果データベース２８の一部またはすべての値を取得する。
【００５０】
例えば、図８に示すブロック構成に対してチェックブロックＣ１１，Ｃ１２が追加されている場合、チェックブロックＣ１１は関連付けられている線から値ＶＡＲ１を取得し（Ｓ１１）、この値がチェック条件を満たしているか否かをチェックし（Ｓ１２）、このチェック結果をデータベース２９に保存する（Ｓ１３）。同様に、チェックブロックＣ１２は関連付けられている線から値ＯＵＴ１を取得し（Ｓ１４）、この値のチェックと保存を行う（Ｓ１５、Ｓ１６）。
【００５１】
以上のチェックブロックの付加とそのチェック処理は、すべてのシミュレーションモデルについてのシミュレーション時に繰り返し実行し、チェック結果表示機能によりチェック結果を表示する。チェック結果は、そのまま文字列として表示しても良いし、チェック結果をグラフや表形式にして表示しても良い。
【００５２】
したがって、ブロック図にチェックブロックを設定しておき、順次シミュレーションモデルを実行することで、ブロック単体に設定したチェックブロック部位の値から動作確認が容易になり、さらにブロック図全体のシミュレーションでの動作確認作業が容易になる。
【００５３】
（実施形態３）
図９は、本実施形態を示すシミュレーション装置の要部構成図であり、ブロック図全体のシミュレーションに、ブレークポイントを設定したシミュレーションを可能にする。なお、各ブロック図は分岐やループのない単純な場合で説明する。
【００５４】
ブレークポイント用チェックブロック作成機能３１は、特定の位置でシミュレーションの実行を一時停止するために、ブレークポイント用チェックブロックをブロック図に書き込んでおく。このブレークポイント用チェックブロックは、シミュレーション実行時に特定の位置でシミュレーションの実行を一時停止したい位置に配置する。
【００５５】
シミュレーション一時停止機能３２は、ブレークポイント用チェックブロックが書き込まれたシミュレーションモデルを実行機能７がシミュレーションを実行する時に、ブレークポイント用チェックブロックの抽出でシミュレーションを一時停止させる。この一時停止で、ブレークポイント強調表示機能３３は、停止しているブレークポイント用チェックブロックを、例えばフリッカさせて強調表示する。強調表示の方法は、フリッカ以外に、印をつけるなどでも良い。
【００５６】
さらに、シミュレーションモデル値表示機能３４により、現在値を例えばツールヒントなどに表示する。現在値の表示方法は、ツールヒント以外に、ブロック図に表示しても良い。
【００５７】
これら表示に対して、シミュレーション再開機能３５は、開発者が再開を指示（例えば、再開用のボタンを押す、再開用のメニューを選択する、など）すると、シミュレーションの実行を一時停止しているブレークポイント用チェックブロックから再開する。
【００５８】
例えば、図１０に示すブロック構成に対してブレークポイント用チェックブロックＣ２１、Ｃ２２が追加されている場合、加算ブロックのシミュレーションモデルをシミュレーション実行し（Ｓ２１）、ブレークポイント用チェックブロックＣ２１に到達すると、そこでシミュレーション実行を一時停止し、ブレークポイント用チェックブロックＣ２１を強調表示し（Ｓ２２）、現在値を値データベースに保存しているシミュレーションモデルが現在値を表示する（Ｓ２３）。その後、ユーザがシミュレーション実行の再開を指示すると（Ｓ２４）、乗算ブロックのシミュレーションモデルをシミュレーションを実行し（Ｓ２５）、ブレークポイント用チェックブロックＣ２２に到達すると、そこでシミュレーション実行を一時停止し、ブレークポイント用チェックブロックＣ２２を強調表示し（Ｓ２６）、現在値を値データベースに保存しているシミュレーションモデルが現在値を表示する（Ｓ２７）。さらに、開発者がシミュレーション実行の再開を指示すると、出力ＯＵＴ１に到達するため、シミュレーション実行は終了する（Ｓ２８）。
【００５９】
したがって、ブレークポイント用チェックブロックを適当に配置することにより、シミュレーション実行を特定の位置で一時停止させ、現在値を確認することができ、ブロック図全体のシミュレーションでの動作確認作業が容易になる。
【００６０】
（実施形態４）
本実施形態は、複数のブロックが単線で接続された（分岐やループ接続されていない）単線ブロック図の動作確認を行う場合である。
【００６１】
前記の実施形態１ではブロック単体の演算シミュレーションを可能にしている。すなわち、シミュレーションモデル作成機能２により作成されたシミュレーションモデルに対して、開発者は各ブロック単位でそれぞれ入力を指定して、シミュレーションモデル演算機能１１によりブロック単体のシミュレーションを実行、さらにブロック単位のシミュレーション動作を確認した後にはシミュレーションモデル実行機能７によりブロック全体のシミュレーションを実行する。また、ブロック単体の演算結果は演算結果取得機能１４により各シミュレーションモデルの演算結果を取得し、演算結果表示機能１５により演算結果を例えば表形式などで表示する。
【００６２】
例えば、図１１に示す単線ブロック図の場合、ブロック図上のすべてのブロックＢ１からＢ３に対して、各ブロックのコード片からシミュレーションモデルを作成し、開発者はブロックＢ１のシミュレーションモデルから順番に入力を指定して演算シミュレーションを行う。図１２はブロック単位の演算シミュレーション手順を示し、ブロック図上の全てのブロックを取得し（Ｓ３１）、ブロックＢ１〜Ｂ３についてそれぞれシミュレーションモデルを作成し（Ｓ３２〜Ｓ３４）、これらシミュレーションモデルへの入力を設定し（Ｓ３５〜Ｓ３７）、これら設定した各シミュレーションモデルの演算結果を取得し（Ｓ３８〜Ｓ４０）、最後に演算結果を一括表示する（Ｓ４１）。図１３は各シミュレーションモデルの演算結果を表形式で表示する場合を示す。
【００６３】
上記のブロック単位のシミュレーションでは、開発者は各ブロックの入力を個々に設定する必要があり、大量のブロック構成となる場合はその作業負担が大きくなる。
【００６４】
そこで、本実施形態は、単線ブロック図では各ブロックが単線で接続されることを利用し、線単位のシミュレーションにより全ブロックの動作確認を容易にする。この全ブロックの動作確認には、ブロック図上のすべてのブロックに対して、各ブロックのコード片から全ブロックシミュレーションモデルを作成しておく。
【００６５】
図１４は単線ブロック図の演算シミュレーションを示し、先頭のブロックの入力に値を設定して演算シミュレーションを行うことで、全ての接続線を通過したシミュレーション結果（出力）を得る。すなわち、単線ブロック図の入力から出力において、ブロック単位の演算シミュレーションを順次実行することで、ブロック図の全ての線を通過したシミュレーション結果を得ることができる。
【００６６】
したがって、単線ブロック図のすべてのブロックについて、入力設定を簡単にした動作試験になる。
【００６７】
（実施形態５）
本実施形態は、複数のブロックが分岐やループを有して接続されたブロック図の動作を確認する場合である。
【００６８】
図１５は分岐やループのあるブロック図の例を示し、ブロックＢ１とＢ２との接続線は分岐点を有してスイッチブロックＳＷ１に分岐し、ブロックＢ３の出力線は分岐点を有してブロックＢ４に分岐し、このブロックＢ４の出力がブロックＢ２にループしている。
【００６９】
このブロック図において、ブロック単位の演算シミュレーションでは、実施形態１と同様に、ブロック図上のすべてのブロックに対して、各ブロックのコード片からシミュレーションモデルを作成する（全ブロックシミュレーションモデル作成機能）。このシミュレーションモデルに対して、開発者はそれぞれ入力を指定して、順番にシミュレーションモデル実行機能により演算シミュレーションを行う。また、演算結果取得機能により各シミュレーションモデルの演算結果を取得し、演算結果表示機能により演算結果を表形式などで表示する。
【００７０】
例えば、図１５の場合、ブロック図上のすべてのブロックＢ１からＢ５およびスイッチブロックＳＷ１に対して、各ブロックのコード片からシミュレーションモデルを作成する。開発者は、ブロックＢ１のシミュレーションモデルから順番に入力を指定して演算シミュレーションを行う。各シミュレーションモデルの演算結果を取得して、例えば表形式に表示する。
【００７１】
この場合、ブロック図に、条件によって演算の流れが変わるスイッチブロック（図１５のＳＷ１）などがあると、入力から出力までの演算シミュレーションにおいて、ブロック図のすべての線を通過したかどうかは確認できない。
【００７２】
そこで、本実施形態では、図１６に要部構成を示すシミュレーション装置とし、ブロック間を接続する全ての線を通過したシミュレーションの実行および動作確認を可能にする。同図において、シミュレーション装置本体４１は、図１等に示す各機能を搭載したシミュレーション装置構成とする。また、全ブロックシミュレーションモデル作成機能４２は、実施形態４における全ブロックシミュレーションモデル作成手段に相当し、分岐やループを含めた全ブロックのシミュレーションモデルを作成する。
【００７３】
この装置に追加する機能として、通過用チェックブロック作成機能４３は、ブロック間の接続線の全てに配置する通過用チェックブロックを作成する。例えば、図１７に示すブロック図では、通過用チェックブロックＣ１〜Ｃ１０を配置する。これらの通過用チェックブロックには、演算シミュレーションを行ったかどうかを表すチェック有無フラグを持つ。チェック有無フラグは演算シミュレーション開始前に「無」に初期化しておき、演算シミュレーションを行うとチェック有無切替機能４４により「有」にする。チェック無強調表示機能４５は、チェック有無切替機能４４による切替え結果がチェック「無」の場合にこれを演算シミュレーションしていないチェックブロックとしてフリッカさせるなどで強調表示する。強調表示の方法は、これ以外に色を変えるなどでも良い。
【００７４】
なお、通過用チェックブロック作成機能４３で作成された通過用チェックブロックは、装置本体４１にもつブロック図情報関連付け機能４により、ブロック図のすべての線に対して関連付ける。
【００７５】
以上の装置構成におけるシミュレーション処理手順を図１８に示す。まず、機能４３がブロック図上のすべての線に対して通過用チェックブロックを作成する（Ｓ４１）。次に、機能４２がブロック図上のすべてのブロックに対してシミュレーションモデルを作成する（Ｓ４２）。さらに、機能４４が全ての通過用チェックブロックに対してチェック有無フラグを「無」に設定し（Ｓ４３）、シミュレーションモデル実行機能７により通過用チェックブロックが全て「無」になるルートについて演算シミュレーションを行う（Ｓ４４）。例えば、図１７ではブロックＢ１→Ｂ２→Ｂ３のルートで演算シミュレーションを行う。
【００７６】
このシミュレーション実行後、次に実行するシミュレーションモデルを取得する（Ｓ４５）。次に実行するシミュレーションが存在し、かつ通過用チェックブロックであるときにこのチェックブロックに対してチェックの有無を「有」に設定し（Ｓ４６）、次に実行するシミュレーションモデルの取得に戻る。この演算シミュレーション終了後、機能４５により、すべての通過用チェックブロックのチェック有無を調べ、すべてのチェック有無が「有」の場合、ブロック図の全ての線を演算シミュレーションしたことになる。１つでもチェックブロックが「無」の場合、そのチェックブロックに関連付けられている線は演算シミュレーションしていないことになり、チェック有無が「無」の通過用チェックブロックを強調表示する（Ｓ４７）。
【００７７】
例えば、図１７の場合、ブロック上のすべての線に通過用チェックブロックＣ１からＣ１０を作成してチェック有無をチェック無に設定しておき、線に関連付ける。開発者は、ブロック図の入力に初期値を指定して演算シミュレーションを行う。このとき、演算シミュレーションを行った通過用チェックブロックＣ１からＣ８のチェック有無をチェック「有」にする。スイッチブロックＳＷ１において、ブロックＢ１からの出力結果が正常の場合、異常の線を通過しないので、その線に関連付けられている通過用チェックブロックＣ９およびＣ１０をフリッカなどで強調表示する。
【００７８】
したがって、分岐やループのあるブロック図でも、ブロック図全体について試験したことを簡単に確認することができる。
【図面の簡単な説明】
【００７９】
【図１】本発明の実施形態１を示すシミュレーション装置の構成図。
【図２】ブロック図とコード片とシミュレーションモデルの関係図。
【図３】加減算ブロックのシミュレーションモデル。
【図４】シミュレーションモデルの実行手順。
【図５】本発明の実施形態２を示すシミュレーション装置の構成図。
【図６】チェックブロックの例。
【図７】加算と乗算ブロックのシミュレーションモデル。
【図８】チェックブロックの実行手順。
【図９】本発明の実施形態３を示すシミュレーション装置の要部構成図。
【図１０】ブレークポイントの実行手順。
【図１１】単線ブロック図の例。
【図１２】ブロック単位の演算シミュレーション手順。
【図１３】演算シミュレーション結果の例。
【図１４】単線ブロック図の演算シミュレーションの例。
【図１５】分岐やループのあるブロック図の例。
【図１６】本発明の実施形態５を示すシミュレーション装置の要部構成図。
【図１７】分岐やループのあるブロック図の演算シミュレーションの例。
【図１８】分岐やループのあるブロック図の演算シミュレーション処理手順。
【図１９】ブロック図の例。
【図２０】ブロック図とコード片とプログラムの関係図。
【図２１】不具合の修正例。
【符号の説明】
【００８０】
１  ブロックデータベース
２  シミュレーションモデル作成機能
３  演算対象関連付け機能
４  ブロック図情報関連付け機能
７  シミュレーションモデル実行機能
９  シミュレーションモデル初期値設定機能
１０  シミュレーションモデル値取得機能
１１  シミュレーションモデル演算機能
２２  チェックブロック作成機能
２３  チェックブロック関連付け機能
２４  値保存機能
３０  チェック結果表示機能
３１  ブレークポイント用チェックブロック作成機能
３３  ブレークポイント強調表示機能
４３  通過用チェックブロック作成機能
４４  チェック有無切替機能
４５  チェック無強調表示機能
【図１】
0005326292.tif 000002
【図２】
0005326292.tif 000003
【図３】
0005326292.tif 000004
【図４】
0005326292.tif 000005
【図５】
0005326292.tif 000006
【図６】
0005326292.tif 000007
【図７】
0005326292.tif 000008
【図８】
0005326292.tif 000009
【図９】
0005326292.tif 000010
【図１０】
0005326292.tif 000011
【図１１】
0005326292.tif 000012
【図１２】
0005326292.tif 000013
【図１３】
0005326292.tif 000014
【図１４】
0005326292.tif 000015
【図１５】
0005326292.tif 000016
【図１６】
0005326292.tif 000017
【図１７】
0005326292.tif 000018
【図１８】
0005326292.tif 000019
【図１９】
0005326292.tif 000020
【図２０】
0005326292.tif 000021
【図２１】
0005326292.tif 000022