(57)【特許請求の範囲】
【請求項１】
ハードウェアの動作を制御する制御モジュールを複数記憶する制御モジュール記憶手段と、
前記複数の制御モジュールの１つ以上で構成される制御プログラムのアーキテクチャに共通したプログラム構造であるアーキテクチャパタンを表すパタン情報を複数記憶するパタン情報記憶手段と、
前記記憶されたパタン情報を選択するパタン選択情報を取得するパタン選択情報取得手段と、
前記パタン選択情報で選択されたパタン情報で表されるアーキテクチャパタンを有する制御プログラムの実行時間に課される時間的制限であって、前記制御プログラムを構成する複数の制御モジュールの総実行時間の制限を表す制限情報を取得する制限情報取得手段と、
前記制限情報で表される総実行時間の制限が課せられた複数の制御モジュールのそれぞれに対して実行時間を推定する実行時間推定手段と、
前記制限情報で表される総実行時間の制限と、前記実行時間推定手段で推定された実行時間と、に基づいて、前記制限に対する余裕時間を算出する余裕時間算出手段と、
前記選択されたパタン情報で表されるアーキテクチャパタンと、前記アーキテクチャパタンを有する制御プログラムのプログラム構造と、前記制御プログラムを構成する制御モジュールの推定された実行時間と、前記取得された制限情報で表される時間的制限と、前記余裕時間算出手段で算出された余裕時間と、を対応付けて表示部に表示させる表示制御手段と、
前記制御プログラムのプログラム構造に対する変更内容を記述する記述情報を取得する記述情報取得手段と、
前記取得された記述情報に基づいて、前記制御プログラムのプログラム構造を編集するプログラム構造編集手段と、
前記編集されたプログラム構造に基づいて前記制御モジュール記憶手段に記憶された制御モジュールを連結することで、ハードウェアを制御する制御プログラムを生成するプログラム生成手段と、を備え、
前記制御モジュールは、前記ハードウェアの制御を行わない、又は前記ハードウェアを待機させる制御を行う待機モジュールを含み、
前記プログラム構造編集手段は、前記余裕時間算出手段で算出された余裕時間が正の値である場合に、前記複数の制御モジュールの実行順序の先頭、中間、及び最後のいずれかにおいて、実行時間の長さが前記余裕時間の長さに等しい待機モジュールが実行されるように、前記制御プログラムのプログラム構造を編集する、
制御プログラム生成装置。
【請求項２】
前記生成された制御プログラムの実行を検証する検証範囲を表す検証範囲情報を取得する検証範囲情報取得手段と、
前記取得された検証範囲情報で表される検証範囲で、前記生成された制御プログラムの実行を模擬するプログラム実行模擬手段と、
前記プログラム実行模擬手段の模擬結果から、前記生成された制御プログラムを構成する制御モジュールを識別する識別情報と、前記制御モジュールが模擬実行された時刻と、を解析する解析手段と、をさらに備え、
前記表示制御手段は、前記解析手段による解析結果を表示するように前記表示部を制御する、
請求項１に記載の制御プログラム生成装置。
【請求項３】
前記パタン情報記憶手段は、ハードウェアが使用される範囲であるドメインを表すドメイン情報と、前記範囲で使用される複数のハードウェアをそれぞれ制御する複数の制御プログラムのアーキテクチャに共通したアーキテクチャパタンを表すパタン情報とを対応付けて複数記憶し、
前記記憶されたドメイン情報を選択するドメイン選択情報を取得するドメイン選択情報取得手段、をさらに備え、
前記パタン選択情報取得手段は、前記取得されたドメイン選択情報で選択されたドメイン情報に対応付けて記憶されたパタン情報を選択するパタン選択情報を取得する、
請求項１又は２に記載の制御プログラム生成装置。
【請求項４】
コンピュータを、
ハードウェアの動作を制御する制御モジュールを複数記憶する制御モジュール記憶手段、
前記複数の制御モジュールの１つ以上で構成される制御プログラムのアーキテクチャに共通したプログラム構造であるアーキテクチャパタンを表すパタン情報を複数記憶するパタン情報記憶手段、
前記記憶されたパタン情報を選択するパタン選択情報を取得するパタン選択情報取得手段、
前記パタン選択情報で選択されたパタン情報で表されるアーキテクチャパタンを有する制御プログラムの実行時間に課される時間的制限であって、前記制御プログラムを構成する複数の制御モジュールの総実行時間の制限を表す制限情報を取得する制限情報取得手段、
前記制限情報で表される総実行時間の制限が課せられた複数の制御モジュールのそれぞれに対して実行時間を推定する実行時間推定手段、
前記制限情報で表される総実行時間の制限と、前記実行時間推定手段で推定された実行時間と、に基づいて、前記制限に対する余裕時間を算出する余裕時間算出手段、
前記選択されたパタン情報で表されるアーキテクチャパタンと、前記アーキテクチャパタンを有する制御プログラムのプログラム構造と、前記制御プログラムを構成する制御モジュールの推定された実行時間と、前記取得された制限情報で表される時間的制限と、前記余裕時間算出手段で算出された余裕時間と、を対応付けて表示部に表示させる表示制御手段、
前記制御プログラムのプログラム構造に対する変更内容を記述する記述情報を取得する記述情報取得手段、
前記取得された記述情報に基づいて、前記制御プログラムのプログラム構造を編集するプログラム構造編集手段、
前記編集されたプログラム構造に基づいて前記制御モジュール記憶手段に記憶された制御モジュールを連結することで、ハードウェアを制御する制御プログラムを生成するプログラム生成手段、として機能させ、
前記制御モジュールは、前記ハードウェアの制御を行わない、又は前記ハードウェアを待機させる制御を行う待機モジュールを含み、
前記プログラム構造編集手段は、前記余裕時間算出手段で算出された余裕時間が正の値である場合に、前記複数の制御モジュールの実行順序の先頭、中間、及び最後のいずれかにおいて、実行時間の長さが前記余裕時間の長さに等しい待機モジュールが実行されるように、前記制御プログラムのプログラム構造を編集する、
制御プログラム生成プログラム。
【請求項５】
ハードウェアの動作を制御する１つ以上の制御モジュールでそれぞれ構成される複数の制御プログラムのアーキテクチャに共通したプログラム構造であるアーキテクチャパタンを表すパタン情報を、パタン情報記憶手段の記憶する複数のパタン情報から選択するパタン選択情報を取得するパタン選択情報取得ステップと、
前記パタン選択情報で選択されたパタン情報で表されるアーキテクチャパタンを有する制御プログラムの実行時間に課される時間的制限であって、前記制御プログラムを構成する複数の制御モジュールの総実行時間の制限を表す制限情報を取得する制限情報取得ステップと、
前記制限情報で表される総実行時間の制限が課せられた複数の制御モジュールのそれぞれに対して実行時間を推定する実行時間推定ステップと、
前記制限情報で表される総実行時間の制限と、前記実行時間推定ステップで推定された実行時間と、に基づいて、前記制限に対する余裕時間を算出する余裕時間算出ステップと、
前記選択されたパタン情報で表されるアーキテクチャパタンと、前記アーキテクチャパタンを有する制御プログラムのプログラム構造と、前記制御プログラムを構成する制御モジュールの推定された実行時間と、前記取得された制限情報で表される時間的制限と、前記余裕時間算出ステップで算出された余裕時間と、を対応付けて表示部に表示させる表示制御ステップと、
前記制御プログラムのプログラム構造に対する変更内容を記述する記述情報を取得する記述情報取得ステップと、
前記取得された記述情報に基づいて、前記制御プログラムのプログラム構造を編集するプログラム構造編集ステップと、
前記編集されたプログラム構造に基づいて前記制御モジュールを連結することで、ハードウェアを制御する制御プログラムを生成するプログラム生成ステップと、を有し、
前記制御モジュールは、前記ハードウェアの制御を行わない、又は前記ハードウェアを待機させる制御を行う待機モジュールを含み、
前記プログラム構造編集ステップでは、前記余裕時間算出ステップで算出された余裕時間が正の値である場合に、前記複数の制御モジュールの実行順序の先頭、中間、及び最後のいずれかにおいて、実行時間の長さが前記余裕時間の長さに等しい待機モジュールが実行されるように、前記制御プログラムのプログラム構造を編集する、
制御プログラム生成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ハードウェアを制御する制御プログラムを生成する制御プログラム生成装置、制御プログラム生成プログラム、及び制御プログラム生成方法に関する。
【背景技術】
【０００２】
近年、短期間で多様な仕様の製品を開発するために、プロダクトライン開発が行われている。このプロダクトライン開発では、開発する製品の使用範囲をドメインとして特定し、特定されたドメインに属する他の複数製品に共通した機能を有する部分を再利用（つまり、流用）すると共に、共通しない機能を有する部分（つまり、差分）に限って開発を行うことで、製品の開発効率を向上させている。【０００３】
このように開発済みのソフトウェアプログラムを新製品の開発に再利用するため、所定の電気機器に対して所定の動作を行わせるためのプログラムを複数記憶した記憶部から、当該電気機器に実行させる一連の動作手順に基づいて複数のプログラムを選択すると共に、選択した複数のプログラムを連結することで、当該電気機器を制御するマイクロプロセッサの実行プログラムを自動生成する方法が提案されている（例えば、特許文献１参照）。【０００４】
また、プログラムの設計に用いられるダイアグラムの作成を支援するために、あるプログラムの設計に用いられたある種類のダイアグラムと、他のプログラムの設計に用いられた他の種類のダイアグラムとの間の関係知識に基づいて、異なる種類のダイアグラム間で生じる矛盾を検証するシステムが提案されている（例えば、特許文献２参照）。【０００５】
さらに、生成された制御プログラムによって制御されるハードウェアを、コンピュータを用いて仮想的に形成すると共に、形成した仮想的なハードウェアの動作タイミングと、仮想的なハードウェアに対して実行させる制御プログラムの動作タイミングとを現実の動作タイミングに対応させるソフトウェア実行装置が提案されている（例えば、特許文献３参照）。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平０４−２８３８０２号公報
【特許文献２】特開平０７−１５２５４４号公報
【特許文献３】特開平１０−１６１９０６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、特許文献１に開示された方法では、プログラムの基本設計（つまり、アーキテクチャ）に基づいてプログラムを生成していない。このため、既に生成されたプログラムとアーキテクチャのパタンが共通するプログラムを作成する場合であっても、既に作成され、実際に運用されるなどして信頼性が確保されたアーキテクチャパタンを再利用できないので、信頼性の高いプログラムを効率良く開発できなかった。【０００８】
また、特許文献２に開示されたシステムでは、プログラムの構造を記述する方法が開示されていない。このため、プログラムの構造をプログラムの設計者が認識することが困難であり、プログラムモジュール及びアーキテクチャの再利用が困難であった。【０００９】
さらに、特許文献３に開示されたソフトウェア実行装置では、制御プログラムに課せられる時間的制限と、制御プログラムを構成する制御モジュールの実行時間とを表示できない。このため、どのような制御モジュールを再利用して制御プログラムを作成すれば、時間的制限を満足できるプログラムを生成できるかを設計者が認識することが困難であり、プログラムモジュール及びアーキテクチャの再利用が困難であった。【００１０】
本発明は、上記実情に鑑みてなされたものであり、その目的とするところは、プログラムモジュール及びアーキテクチャを再利用することで、信頼性の高いハードウェアの制御プログラムを効率的に生成できる制御プログラム生成装置、制御プログラム生成プログラム、及び制御プログラム生成方法を提供することにある。
【課題を解決するための手段】
【００１１】
上記目的を達成するため、本発明の第１の観点に係る制御プログラム生成装置は、
ハードウェアの動作を制御する制御モジュールを複数記憶する制御モジュール記憶手段と、
前記複数の制御モジュールの１つ以上で構成される制御プログラムのアーキテクチャに共通したプログラム構造であるアーキテクチャパタンを表すパタン情報を複数記憶するパタン情報記憶手段と、
前記記憶されたパタン情報を選択するパタン選択情報を取得するパタン選択情報取得手段と、
前記パタン選択情報で選択されたパタン情報で表されるアーキテクチャパタンを有する制御プログラムの実行時間に課される時間的制限であって、前記制御プログラムを構成する複数の制御モジュールの総実行時間の制限を表す制限情報を取得する制限情報取得手段と、
前記制限情報で表される総実行時間の制限が課せられた複数の制御モジュールのそれぞれに対して実行時間を推定する実行時間推定手段と、
前記制限情報で表される総実行時間の制限と、前記実行時間推定手段で推定された実行時間と、に基づいて、前記制限に対する余裕時間を算出する余裕時間算出手段と、
前記選択されたパタン情報で表されるアーキテクチャパタンと、前記アーキテクチャパタンを有する制御プログラムのプログラム構造と、前記制御プログラムを構成する制御モジュールの推定された実行時間と、前記取得された制限情報で表される時間的制限と、前記余裕時間算出手段で算出された余裕時間と、を対応付けて表示部に表示させる表示制御手段と、
前記制御プログラムのプログラム構造に対する変更内容を記述する記述情報を取得する記述情報取得手段と、
前記取得された記述情報に基づいて、前記制御プログラムのプログラム構造を編集するプログラム構造編集手段と、
前記編集されたプログラム構造に基づいて前記制御モジュール記憶手段に記憶された制御モジュールを連結することで、ハードウェアを制御する制御プログラムを生成するプログラム生成手段と、を備え、
前記制御モジュールは、前記ハードウェアの制御を行わない、又は前記ハードウェアを待機させる制御を行う待機モジュールを含み、
前記プログラム構造編集手段は、前記余裕時間算出手段で算出された余裕時間が正の値である場合に、前記複数の制御モジュールの実行順序の先頭、中間、及び最後のいずれかにおいて、実行時間の長さが前記余裕時間の長さに等しい待機モジュールが実行されるように、前記制御プログラムのプログラム構造を編集する。
【発明の効果】
【００１２】
本発明に係る制御プログラム生成装置、制御プログラム生成プログラム、及び制御プログラム生成方法によれば、信頼性の高いハードウェアの制御プログラムを効率的に生成できる。
【図面の簡単な説明】
【００１３】
【図１】（ａ）は、本発明の実施形態に係る制御プログラム生成装置で構成されるシステムの一例を表すシステム構成図である。（ｂ）は、制御プログラム生成装置の一構成例を表すハードウェア構成図である。
【図２】制御プログラム生成装置が実行する制御プログラム生成処理の一例を表すフローチャートである。
【図３】（ａ）は、制御プログラム生成装置が有する機能の一例を表す機能ブロック図である。（ｂ）は、プログラム編集部の一構成例を表す図である。
【図４】（ａ）は、ドメインパタンテーブルの一例を表す図である。（ｂ）は、パタン構造記述テーブルの一例を表す図である。（ｃ）は、構造記述テーブルの一例を表す図である。（ｄ）は、仕様テーブルの一例を表す図である。（ｅ）は、制御モジュールテーブルの一例を表す図である。
【図５】（ａ）は、編集画面の一例を表す図である。（ｂ）は、構造テンプレート表示エリアの一例を表す図である。
【図６】プログラム構造の一例を表す図である。
【図７】言語オントロジー（仕様）の一例を表す図である。
【図８】（ａ）は、結合点仕様及び制限仕様について詳細に説明するための図である。（ｂ）は、制御モジュールの実行時間の表示例を表す図である。（ｃ）は、余裕時間の表示例を表す図である。
【図９】（ａ）は、処理の繰り返し構造を表す言語オントロジー（仕様）の一例を表す図である。（ｂ）は、多入力処理又は多出力処理を表す言語オントロジー（仕様）の一例を表す図である。
【図１０】制御プログラム生成装置が実行する制限情報表示制御処理の一例を表すフローチャートである。
【図１１】（ａ）は、検証範囲の一例を表す図である。（ｂ）は、解析結果表示画面の一例を表す図である。（ｃ）は、解析結果表示画面の他例を表す図である。
【発明を実施するための形態】
【００１４】
以下、本発明の実施形態に係る制御プログラム生成装置１００で構成される制御プログラム生成システム１について、添付図面を参照しつつ説明する。
【００１５】
制御プログラム生成システム１は、図１（ａ）に示すような制御プログラム生成装置１００と、試験用実機２００とを含んで構成される。
先ず、制御プログラム生成装置１００について説明する前に、試験用実機２００について説明する。
【００１６】
試験用実機２００は、例えば、空調機器（以下、空調という）のコントローラで構成され、制御プログラム生成装置１００と、不図示の空調とに接続されている。試験用実機２００は、制御プログラム生成装置１００で生成された制御プログラムを実行することでハードウェアである空調機器を制御する実機であって、制御プログラムの試験を行う機能が追加されている。この試験用実機２００は、制御プログラム生成装置１００から制御プログラムを受信すると、受信した制御プログラムを試験実行する。その後、試験用実機２００は、実行が終了すると実行結果を表す試験結果情報を制御プログラム生成装置１００へ返信する。この試験結果情報は、例えば、制御プログラムを構成する制御モジュールを識別するモジュールＩＤ又はモジュール名と、制御モジュールの実行時刻を表す実行時刻情報とを対応付けた情報を含む。
【００１７】
なお、制御モジュールの実行時刻は、実行開始時刻と実行終了時刻とを含み、試験結果は、制御モジュールを識別するモジュールＩＤ又はモジュール名と、制御モジュールの実行開始時刻から実行終了時刻までの実行期間を表す実行期間とを含む。また、試験結果は、実行時刻と、当該実行時刻における制御モジュールの変数値とをさらに含んでも良い。
【００１８】
また、実機は、空調のコントローラに限定されず、ビルで使用されるエレベータ、照明、駐車場、及びセキュリティ装置などのハードウェアを制御するコントローラであっても良いし、家庭（以下、ホームという）で使用される太陽光発電機、エアコン、床暖房、給湯機、換気装置、及びセキュリティ装置などのハードウェアを制御するコントローラであっても良い。
【００１９】
制御プログラム生成装置１００は、図１（ｂ）に示すように、ＣＰＵ（Central Processing Unit）１００ａ、ＲＯＭ（Read Only Memory）１００ｂ、ＲＡＭ（Random Access Memory）１００ｃ、ハードディスク１００ｄ、メディアコントローラ１００ｅ、ＬＡＮカード（Local Area Network）１００ｆ、ビデオカード１００ｇ、ＬＣＤ（Liquid Crystal Display）１００ｈ、キーボード１００ｉ、及びポインティングデバイス（以下単に、マウスという）１００ｊを含んで構成される。
【００２０】
ＣＰＵ１００ａは、ＲＯＭ１００ｂ又はハードディスク１００ｄに保存されたプログラムに従ってソフトウェア処理（つまり、情報処理）を実行することで、制御プログラム生成装置１００の全体制御を行う。ＲＡＭ１００ｃは、ＣＰＵ１００ａによるプログラムの実行時において、処理対象とする情報（つまり、データ）を一時的に記憶する。
【００２１】
ハードディスク１００ｄは、後述するような、各種の情報（つまり、データ）を保存した表（つまり、テーブル）を記憶する。尚、制御プログラム生成装置１００は、ハードディスク１００ｄの代わりに、フラッシュメモリを備えても良い。
【００２２】
メディアコントローラ１００ｅは、記録媒体から各種のデータ及びプログラムを読み出す。尚、記録媒体は、フラッシュメモリ、ＣＤ（Compact Disc）、ＤＶＤ（Digital Versatile Disc）、及びブルーレイディスク（Blu-ray Disc）を含む。
【００２３】
ＬＡＮカード１００ｆは、通信網１０を介して接続する試験用実機２００との間でデータ及びコマンドを送受信する。
【００２４】
ビデオカード１００ｇは、ＣＰＵ１００ａから出力されたデジタル信号に基づいて画像を描画（つまり、レンダリング）すると共に、描画された画像を表す画像信号を出力する。ＬＣＤ１００ｈは、ビデオカード１００ｇから出力された画像信号に従って画像を表示する。尚、制御プログラム生成装置１００は、ＬＣＤ１００ｈの代わりに、ＰＤＰ（Plasma Display Panel）又はＥＬ（Electroluminescence）ディスプレイを備えても良い。
【００２５】
キーボード１００ｉ及びマウスｊは、ユーザの操作に応じた信号を入力する。尚、制御プログラム生成装置１００は、キーボード１００ｉ及びマウスｊの代わりにタッチパネルを備えても良い。
【００２６】
次に、制御プログラム生成装置１００が実行する処理について説明する。
制御プログラム生成装置１００のＣＰＵ１００ａが、図２の制御プログラム生成処理を実行することで、図３（ａ）に示すプログラム編集部１１０、アーキテクチャパタンライブラリ（以下、パタン情報記憶部という）１２０、制御プログラム再利用ライブラリ（以下、制御モジュール記憶部という）１３０、制御プログラム構造記述言語仕様ライブラリ（以下、記述情報記憶部）１４０、ドメイン選択情報取得部１５１、パタン選択情報取得部１５２、制限情報取得部１５３、記述情報取得部１５４、検証範囲情報取得部１５５、表示制御部１６０、プログラム生成部１７０、情報通信部１８０、プログラム模擬部１９０、及び動作解析部１９５として機能する。
【００２７】
図２の制御プログラム生成処理の実行を開始すると、プログラム編集部１１０は、図３（ａ）のパタン情報記憶部（つまり、アーキテクチャパタンライブラリ）１２０に記憶された複数のテーブルの１つである、図４（ａ）に示すようなドメインパタンテーブルから、プログラム生成部１７０で生成される制御プログラムで制御されるハードウェアのドメインを表すドメイン情報を取得する（ステップＳ０１）。
【００２８】
ここで、ドメインとは、ハードウェアが使用される範囲をいう。例えば、ハードウェアがエレベータ、空調、照明、駐車場、又はセキュリティ装置であれば、これらのハードウェアは、ビルで使用される。このため、これらのハードウェアのドメインは、ビル分野を含む。また例えば、ハードウェアが太陽光発電機、エアコン、換気装置、給湯器、又はセキュリティ装置であれば、これらのハードウェアは、一般家庭で使用される。このため、これらのハードウェアのドメインは、ホーム分野を含む。なお、図４（ａ）のドメインパタンテーブルは、ドメイン情報としてドメイン名を表す情報とドメインを識別するドメインＩＤとを保存し、ドメイン名には、ビル分野及びホーム分野が含まれる。
【００２９】
次に、図３（ａ）の表示制御部１６０は、プログラム編集部１１０が取得したドメイン情報で表されるドメイン名を一覧表示するように、図１（ａ）のＬＣＤ１００ｈを制御する（ステップＳ０２）。
【００３０】
次に、図３のドメイン選択情報取得部１５１は、ユーザ（つまり、制御プログラムの開発者）に操作されたキーボード１００ｉ及びマウス１００ｊの１つ以上（以下、入力部という）から、表示されたドメイン名のドメインであって、生成する制御プログラムのドメインとして選択されたドメイン（以下、選択ドメインという）を表すドメイン選択情報を取得する（ステップＳ０３）。例えば、一般家庭で使用されるハードウェアを制御する制御プログラムを生成する場合には、ホーム分野をドメインとして選択する。
【００３１】
次に、プログラム編集部１１０は、ステップＳ０３で取得された選択ドメインを表すドメイン情報（以下、選択ドメイン情報という）と対応付けられたパタン情報を、図４（ａ）のドメインパタンテーブルから１以上検索する（ステップＳ０４）。ここで、パタン情報は、パタンを識別するパタンＩＤと、パタン名を表す情報と、パタン内容を表す情報とを含む。
【００３２】
なお、本明細書で使用されるパタンという語は、あるドメインで使用される制御プログラムのアーキテクチャに共通したプログラム構造（以下、共通構造という）であるアーキテクチャパタンをいう。また、アーキテクチャとは、プログラムの構造的な基本設計をいう。
【００３３】
プログラム編集部１１０は、ステップＳ０４において、選択ドメイン情報に基づいてパタンＩＤを検索し、検索されたパタンＩＤと対応付けられたパタン名を表す情報及びパタン内容を表す情報を、図３（ａ）のパタン情報記憶部（つまり、アーキテクチャパタンライブラリ）１２０に記憶された複数のテーブルの１つである、図４（ｂ）のパタン構造記述テーブルから検索する。
【００３４】
図２のステップＳ０４の後、図３（ａ）の表示制御部１６０は、プログラム編集部１１０が検索した情報に基づいて、選択ドメインのドメインＩＤと対応付けられたパタンＩＤで識別される１以上のパタンのパタン名及びパタン内容の一覧を生成した後、生成した一覧を、図５（ａ）に示すような編集画面Ｆの構造テンプレート表示エリアＦＳに表示するようにＬＣＤ１００ｈを制御する（ステップＳ０５）。あるドメインで使用される複数のハードウェアは、共通の機能を有することが多いため、それらのハードウェアを制御する制御プログラムは、基本的な設計を共通にする（つまり、共通のアーキテクチャを有する）ことが多いためである。
【００３５】
なお、編集画面Ｆは、制御プログラムのプログラム構造及びプログラム構造の編集内容が表示される画面である。また、編集画面Ｆの構造テンプレート表示エリアＦＳは、図５（ｂ）に示すような、選択されたドメインに属する制御プログラムに共通のプログラム構造であって、見本（つまり、テンプレート）となるもの（つまり、アーキテクチャパタン）のパタン名及びパタン内容が表示される領域である。
【００３６】
なお、編集画面ＦのアイコンＩＣは、例えば、編集画面Ｆを用いた制御プログラムの作成作業の手順を案内するナビゲーション表示、ヘルプ表示、又は後述するシミュレーション結果の要約表示を行うように命じるコマンドと関連付けられている。
【００３７】
図５（ｂ）の構造テンプレート表示エリアＦＳに表示されたアーキテクチャパタンについて具体的に説明すると、「運転停止」というアーキテクチャパタンのパタン内容は、ハードウェアであるコントローラに制御画面などの所定の「画面」を表示させる処理を最初とし、制御画面に表示された運転停止ボタンに対するタッチ操作を検出した後に、運転停止状態を表すパラメタに運転停止を表す値を「格納」する処理を中番とし、運転停止を命じるコマンドをハードウェアへ「通信」する処理を最後とするプログラム構造である。
【００３８】
図２のステップＳ０５の後に、パタン選択情報取得部１５２は、ユーザに操作された入力部から、表示されたパタン名のパタンであって、生成する制御プログラムのアーキテクチャとして使用するアーキテクチャパタンを選択するパタン選択情報を取得する（ステップＳ０６）。
【００３９】
次に、プログラム編集部１１０は、ステップＳ０６で取得されたパタン選択情報で選択された選択パタンのパタンＩＤと対応付けられた構造記述ＩＤを、図４（ｂ）のパタン構造記述テーブルから検索する。次に、プログラム編集部１１０は、検索した構造記述ＩＤと対応付けられた構造記述情報を、図３（ａ）のパタン情報記憶部（つまり、アーキテクチャパタンライブラリ）１２０に記憶された複数のテーブルの１つである、図４（ｃ）に示すような構造記述テーブルから検索する（ステップＳ０７）。
【００４０】
ここで、構造記述ＩＤとは、構造記述を識別する情報をいい、構造記述情報とは、構造記述を表す情報をいう。また、構造記述とは、本実施形態において、プログラム構造を記述する特別な言語であるプログラム構造記述言語を用いて表されたプログラム構造の記述をいう。
【００４１】
ここで、一旦、図６を参照して、プログラム構造記述言語で記述されたプログラム構造の一例について説明する。
図６のプログラム構造は、空調を制御するコントローラで実行される制御プログラムのプログラム構造を表す。この制御プログラムは、コントローラの立ち上げから１０秒後に、スケジュールリストに保持された空調制御を１つずつ実行すると共に、空調の制御状態を表す変数を更新するプログラムである。
【００４２】
図６のプログラム構造は、言語オントロジー（以下単に、仕様という）Ｎ０１からＮ１１で表される。仕様Ｎ０１は、プログラム関数の開始点を表す。仕様Ｎ０１から仕様Ｎ０２へ向かう矢印と連結された仕様Ｎ０２は、関数の実行を開始すると、下部の四角形の中に記載された数字で表される秒（つまり、「10」秒）だけウェイト処理（以下、待機処理という）を行うことを表す。
【００４３】
仕様Ｎ０２から仕様Ｎ０３へ向かう矢印と連結された仕様Ｎ０３は、仕様Ｎ０２の処理の後に何らかの条件分岐を行うことを表す。同様に、仕様Ｎ０４は、仕様Ｎ０３の処理の後に何らかの条件分岐を行うこと表す。仕様Ｎ０４と仕様Ｎ０５とを結ぶ線分と連結された仕様Ｎ０５は、スケジュールリストの要素番号を表す変数「Schedule」に対して仕様Ｎ０４の条件分岐における判別処理で使用された変数値を格納（つまり、データストア）することを表す。
【００４４】
「Ｎ」の文字が右側に付された、仕様Ｎ０４から仕様Ｎ０３へ戻る矢印は、仕様Ｎ０４の条件分岐における判別結果が「偽」の場合に、再度仕様Ｎ０３の処理が繰り返されることを表す。これに対して、「Ｙ」の文字が下側に付された、仕様Ｎ０４から仕様Ｎ０６へ向かう矢印と連結された仕様Ｎ０６は、仕様Ｎ０４の条件分岐における判別結果が「真」の場合に、空調の制御状態を更新する関数を実行することを表す。また、仕様Ｎ０６と仕様Ｎ０７とを結ぶ線分と連結された仕様Ｎ０７は、変数「Schedule」に対して仕様Ｎ０６の処理で使用される変数値を格納することを表す。仕様Ｎ０８及びＮ０９は、それぞれ仕様Ｎ０７及びＮ０４と同様であるので説明を省略する。
【００４５】
「Ｎ」の文字が左側に付された、仕様Ｎ０９から仕様Ｎ１０へ向かう矢印と連結された仕様Ｎ１０は、仕様Ｎ０９の条件分岐における判別結果が「偽」の場合に、変数「Schedule」の値を値「1」だけインクリメントする処理を表す。
【００４６】
仕様Ｎ１０からＮ０３へ向かう矢印は、仕様Ｎ１０の処理の後に、仕様Ｎ０３の処理が再度繰り返されることを表す。また、「Ｙ」の文字が下側に付された、仕様Ｎ０９から仕様Ｎ１１へ向かう矢印と連結された仕様Ｎ１１は、仕様Ｎ０９の条件分岐における判別結果が「真」の場合に、関数処理の実行を終了することを表す。なお、仕様は、再帰的に記載されても良い。つまり、関数を表す仕様は、関数に含まれる複数の処理を表す複数の仕様で表されても良い。
【００４７】
ここで、プログラム構造を表す言語オントロジー（つまり、仕様）は、図６に示した仕様Ｎ０１からＮ１１に限定されるものではない。例えば、図７に示すような、値操作処理（つまり、データに対する演算処理）を表す仕様Ｎ２５、初期化処理を表す仕様Ｎ２６、メッセージ通信処理を表す仕様Ｎ２８、例外処理を表す仕様Ｎ２９、結合点（つまり、シンクロナイゼーションポイント）を表す仕様Ｎ３０、制御プログラムの実行時間又は制御プログラムを構成する複数の制御モジュールの実行時間の総和に課せられる時間的制限を表す仕様Ｎ３１及び時間的制限条件を表す仕様Ｎ３２、並びにプロセスの制御を表す仕様Ｎ３３を含む。なお、仕様Ｎ２１からＮ２４及び仕様Ｎ２７については、図６を用いて既に説明したため繰り返しの説明を省略する。
【００４８】
次に、図７の結合点を表す仕様（以下、結合点仕様という）Ｎ３０と、時間的制限を表す仕様（以下、制限仕様という）Ｎ３１とについて、図８（ａ）を参照して詳細に説明する。
図８（ａ）に示すプログラム構造は、関数を表す仕様（以下、関数仕様という）Ｎ２１ａからＮ２１ｃ、結合点仕様Ｎ３０ａ及びＮ３０ｂ、及び制限仕様Ｎ３１で表される。
【００４９】
結合点仕様Ｎ３０ａからは、２本の矢印が生じているため、結合点仕様Ｎ３０ａは、２つのプロセスを生成するフォーク処理を表す。結合点仕様Ｎ３０ａから生じた上側の矢印は、関数仕様Ｎ２１ａに到達した後に、結合点仕様Ｎ３０ｂに到達する。これに対して、結合点仕様Ｎ３０ａから生じた下側の矢印は、関数仕様Ｎ２１ｂ及びＮ２１ｃに順に到達した後に、結合点仕様Ｎ３０ｂに到達する。このため、結合点仕様Ｎ３０ｂは、結合点仕様Ｎ３０ａの処理で生成された２つのプロセスが、それぞれ関数仕様Ｎ２１ａの処理、並びに関数仕様Ｎ２１ｂの処理及び関数仕様Ｎ２１ｃの処理を実行し終えるのを待つ（つまり、同期を取る）処理を表す。また、制限仕様Ｎ３１は、結合点仕様Ｎ３０ａから延びる点線と結合点仕様Ｎ３０ｂから延びる点線とを用いて、結合点仕様Ｎ３０ａの処理から、結合点仕様Ｎ３０ｂの処理までを３ミリ秒で実行完了する（つまり、スループットが３ミリ秒となる）という時間的制限が制御プログラムに課せられていることを表す。
【００５０】
この構成によれば、制御対象とするハードウェアにより定まる制御プログラムの実行時間に課せられる制限（つまり、時間的制限）を明確にすることができる。
【００５１】
なお、プログラム構造を表す言語オントロジー（つまり、仕様）は、図９（ａ）に示す「while文」を表す仕様Ｎ４１、「Do-while文」を表す仕様Ｎ４２、及び「For文」を表す仕様Ｎ４３のように、処理の繰り返し構造（つまり、ループ構造）を表しても良い。
【００５２】
また、言語オントロジーは、図９（ｂ）に示すような、例えば、構造体（つまり、Structure Value）などを入力する処理（つまり、多入力処理）を表す仕様Ｎ５１、及び構造体などを出力する処理（つまり、多出力処理）を表す仕様Ｎ５２を含んでも良い。
【００５３】
ここで、図２に戻り、ステップＳ０７から引き続き制御プログラム生成処理の説明を行う。
ステップＳ０７で検索に用いられる図４（ｃ）の構造記述テーブルは、構造記述ＩＤと、構造記述ＩＤで識別される構造記述を表す構造記述情報とを対応付けて保存するテーブルである。構造記述テーブルの構造記述情報は、仕様（つまり、言語オントロジー）を識別する仕様ＩＤと、仕様から延びる矢印と連結する（つまり、連結先である）仕様の仕様ＩＤ（以下、連結先ＩＤという）と、仕様が条件分岐を表す場合に、矢印の脇に記載される「Ｙ」又は「Ｎ」を表す分岐条件情報などを含むその他の情報とを対応付けた情報である。
【００５４】
この仕様ＩＤは、図３（ａ）の記述情報記憶部（つまり、制御プログラム構造記述言語仕様ライブラリ）１４０が記憶する複数のテーブルの１つである、図４（ｄ）の仕様テーブルに、仕様を表す仕様情報と対応付けて保存されている。なお、仕様情報は、図６から図９を参照して説明した仕様の種類、及びそれぞれの仕様種類が処理を表すために必要なその他の情報をいう。例えば、仕様が関数を表す場合には、その他情報は関数名を表し、仕様が時間制限を表す場合には、その他情報は制限時間と、制限の課せられる複数の仕様とを表す。
【００５５】
ここで、図２に戻り、引き続き制御プログラム生成処理について説明を行う。
ステップＳ０７の後に、図３（ａ）の表示制御部１６０は、プログラム編集部１１０が検索した構造記述情報に基づいて、選択パタンのプログラム構造を、図５（ａ）の編集画面Ｆの作業エリアＦＷに表示するように図１（ｂ）のＬＣＤ１００ｈを制御する（ステップＳ０８）。
【００５６】
次に、例えば、図１（ｂ）のマウス１００ｊをユーザが操作することで、ＬＣＤ１００ｈに表示されたカーソルを、図５（ａ）の作業エリアＦＷに表示されたボタンＢＴに重ね合わせた後に、ユーザが行ったクリック操作に応じてマウス１００ｊが入力した信号に基づいて、図３（ａ）のプログラム生成部１７０は、制御プログラムの生成を指示されたか否かを判別する（ステップＳ０９）。
【００５７】
ステップＳ０９において、制御プログラムの生成を指示されなかったとプログラム生成部１７０が判別すると（ステップＳ０９；Ｎｏ）、プログラム編集部１１０は、ユーザに操作された入力部から、図３の制限情報取得部１５３が制限情報と、対象情報とを取得したか否かを判別する（ステップＳ１０）。なお、制限情報とは、生成する制御プログラムの実行時間に課される時間的制限、若しくは、生成する制御プログラムを構成し、かつ順次実行される複数の制御モジュールで表される関数の総実行時間に対する時間的制限を表す情報をいう。また、対象情報は、時間的制限が課せられる制御プログラム又は関数を表す情報をいう。
【００５８】
ステップＳ１０において、制限情報が取得されたとプログラム編集部１１０が判別すると、図１０に示すような制限情報表示制御処理が実行される（ステップＳ１１）。
【００５９】
図１０の制限情報表示制御処理が開始されると、図３（ｂ）に示すようなプログラム編集部１１０が有する実行時間推定部１１１は、取得された制限情報で表される時間制限が課せられるそれぞれの関数の関数ＩＤ又は関数名に基づいて、図４（ｅ）に示すような制御モジュールテーブルから、関数処理を表す制御モジュールを特定する。なお、制御モジュールテーブルは、図３（ａ）の制御モジュール記憶部（つまり、制御プログラム再利用ライブラリ）１３０に記憶された複数のテーブルの１つである。
【００６０】
次に、実行時間推定部１１１は、例えば、特定した制御モジュールのそれぞれについて、制御モジュールのステップ数と、入力部から入力された情報で表される制御プログラムを実行する実機の性能（つまり、ＣＰＵ性能など）とに基づいて、関数の実行時間を推定する（ステップＳ３１）。次に、表示制御部１６０は、推定された実行時間を、制御モジュールに対応した関数仕様と対応付けて表示するようＬＣＤ１００ｈを制御する（ステップＳ３２）。その後、実行時間推定部１１１は、時間制限が課せられる１以上の制御モジュールの実行時間の総和を算出する（ステップＳ３３）。
【００６１】
次に、図３（ｂ）に示すプログラム編集部１１０が有する余裕時間算出部１１２は、制限情報で表される時間制限から、ステップＳ３３で算出された総推定実行時間を減算することで、余裕時間を算出する（ステップＳ３４）。次に、図３（ｂ）に示すプログラム編集部１１０が有するプログラム構造編集部１１３は、算出された余裕時間が正の値であるか否かを判別する（ステップＳ３５）。
【００６２】
ステップＳ３５において、余裕時間が負の値であるとプログラム構造編集部１１３によって判別されると（ステップＳ３５；Ｎｏ）、図３（ａ）の表示制御部１６０は、余裕時間を表示し、かつ時間的制限に違反する旨のエラーメッセージを表示するように、図１（ｂ）のＬＣＤ１００ｈを制御する（ステップＳ３６）。その後、制限表示制御処理の実行が終了される。
【００６３】
ステップＳ３５において、余裕時間が正の値であるとプログラム構造編集部１１３によって判別されると（ステップＳ３５；Ｙｅｓ）、図３（ａ）の表示制御部１６０は、余裕時間を表示するように、図１（ｂ）のＬＣＤ１００ｈを制御する（ステップＳ３７）。次に、プログラム構造編集部１１３は、制御対象とするハードウェアの制御を行わない処理、又はハードウェアを余裕時間だけ待機させる制御処理（つまり、待機処理）を行う制御モジュールを、図３（ａ）の制御モジュール記憶部（つまり、制御プログラム再利用ライブラリ）１３０から検索する。次に、プログラム構造編集部１１３は、検索した制御モジュールを用いて実行される関数を表す仕様を、時間的制限が課せられる複数の仕様の実行順序の先頭、中間、及び最後のいずれかに追加する。その後、表示制御部１６０は、追加された仕様を表示するようにＬＣＤ１００ｈを制御する（ステップＳ３８）。その後、制限表示制御処理の実行が終了される。
【００６４】
具体例としては、図８（ｂ）に示すように、仕様Ｎ３０ａからＮ３０ｂの間に仕様Ｎ２１ａ及び仕様Ｎ２１ｂが記述され、これらの仕様Ｎ２１ａで表される関数Ａと、Ｎ２１ｂで表される関数Ｂとが、総実行時間３ミリ秒で実行される必要があるという時間的制限が課せられている場合を例に挙げて説明する。この場合に、実行時間推定部１１１は、関数Ａの実行時間と関数Ｂの実行時間とが共に「0.5」ミリ秒であると推定し、推定した実行時間の総和を「1」ミリ秒と算出する。次に、表示制御部１６０は、関数Ａを表す仕様Ｎ２１ａよりも所定量だけ下の表示位置と関数Ｂを表す仕様Ｎ２１ｂよりも所定量だけ下の表示位置に、推定された実行時間が「0.5」ミリ秒である旨の表示を行うようＬＣＤ１００ｈを制御する。
【００６５】
次に、余裕時間算出部１１２は、時間的制限「3」ミリ秒から推定された関数Ａの実行時間と関数Ｂの実行時間との和「1」ミリ秒を減算し、余裕時間を「2」ミリ秒であると算出する。なお、表示制御部１６０は、仕様Ｎ２１ａと関数Ｂと関連付けて、総実行時間が「1」ミリ秒である旨の表示を行うよう表示制御しても良い。
【００６６】
その後、プログラム構造編集部１１３は、図８（ｃ）に示すように、「2」ミリ秒に亘って実行される待機処理を表す仕様Ｎ２１ｃを、仕様Ｎ２１ａ及び仕様Ｎ２１ｂの後であって、仕様Ｎ３０ｂの前に追加し、表示制御部１６０は、仕様Ｎ２１ｃよりも所定量だけ下の表示位置に、余裕時間が「2」ミリ秒である旨の表示を行うようＬＣＤ１００ｈを制御する。なお、待機処理を表す仕様Ｎ２１ｃは、仕様Ｎ２１ａと仕様Ｎ２１ｂとの前に追加されても良いし、仕様Ｎ２１ａと仕様Ｎ２１ｂとの間に追加されても良い。
【００６７】
図２のステップＳ１１の後に、プログラム編集部１１０は、ユーザに操作された入力部から、表示されたプログラム構造に対する変更内容を記述する記述情報を、図３（ａ）の記述情報取得部１５４が取得したか否かを判別する（ステップＳ１２）。
【００６８】
なお、図５に示す編集画面の部品表示エリアＦＰには、図３（ａ）の記述情報記憶部（つまり、制御プログラム構造記述言語仕様ライブラリ）１４０に記憶された言語オントロジー（つまり、仕様）が表示される領域であり、ユーザは、入力部を操作することで、部品表示エリアＦＰに表示された言語オントロジーを、プログラム構造が表示された作業エリアＦＷにドラッグアンドドロップしたり、ドロップした仕様を編集するなどして、プログラム構造の変更内容を記述する記述情報を入力部に入力させる。
【００６９】
ステップＳ１２において、プログラム編集部１１０は、記述情報が取得されなかったと判別すると（ステップＳ１２；Ｎｏ）、ステップＳ０９に戻り上記処理が繰り返される。これに対して、プログラム編集部１１０は、記述情報が取得されたと判別すると（ステップＳ１２；Ｙｅｓ）、取得された記述情報に基づいて、表示されたプログラム構造を編集する（ステップＳ１３）。その後、表示制御部１６０は、編集されたプログラム構造を表示するようＬＣＤ１００ｈを制御する（ステップＳ１４）。その後、ステップＳ０９に戻り上記処理が繰り返される。
【００７０】
ステップＳ０９において、制御プログラムの生成を指示されたとプログラム生成部１７０が判別すると（ステップＳ０９；Ｙｅｓ）、プログラム生成部１７０は、表示されたプログラム構造（以下、表示プログラム構造）に用いられる制御モジュールを、既に説明した図４（ｄ）の仕様テーブル及び図４（ｅ）の制御モジュールテーブルを用いて、図３（ａ）の制御モジュール記憶部（つまり、制御プログラム再利用ライブラリ）１３０から取得する（ステップＳ１５）。また、プログラム生成部１７０は、取得できない制御モジュール（つまり、再利用できない新しい制御モジュールなど）を、表示された仕様に基づいて生成する。次に、プログラム生成部１７０は、取得した制御モジュールを、表示プログラム構造に基づいて連結することで、制御プログラムを生成する（ステップＳ１６）。
【００７１】
なお、プログラム生成部１７０は、例えば、表示された仕様に基づいて生成された制御プログラムを識別する識別情報又はプログラム名を表す情報と、表示された仕様で表された制限情報及び対象情報とを対応付けて、図３の記述情報記憶部１４０に保存する。
【００７２】
その後、図３（ａ）の情報通信部１８０は、生成された制御プログラムを試験用実機２００へ送信する（ステップＳ１７）。なお、試験用実機２００は、送信された制御プログラムをインストールし、インストールしたプログラムを試験モードで実行する。試験用実機２００は、試験モードで制御プログラムを実行すると、制御プログラムの実行状態と実行時刻とを対応付けた実行結果を表す試験結果情報を試験用実機２００が有する記憶部に保存する。なお、本実施形態において、実行結果は、制御プログラムの実行時刻と、制御プログラムを構成する制御モジュールを識別する識別情報若しくは名称、又は当該制御モジュールの関数を識別する識別情報（つまり、関数ＩＤ）若しくは名称（つまり、関数名）と、当該制御モジュールが実行されたプロセスを識別するＩＤとを含む。その後、試験用実機２００は、試験結果情報を情報通信部１８０へ返信する。
【００７３】
ステップＳ１７の後に、図３（ａ）の検証範囲情報取得部１５５は、ユーザに操作された入力部から、制御プログラムの実行を検証する検証範囲を表す検証範囲情報を取得する（ステップＳ１８）。
【００７４】
具体例として、生成した制御プログラムのプログラム構造が、図１１（ａ）に示すような仕様Ｎ２１ａからＮ２１ｈで表される場合を挙げて説明する。ユーザは、検証範囲を指定するために、入力部を操作することで、図１１（ａ）に示すようなプローブを、仕様Ｎ２１ａからＮ２１ｈの間の位置に挿入する。例えば、ユーザが、プローブＰＢ１を仕様Ｎ２１ａ、Ｎ２１ｄ、及びＮ２１ｇの前に挿入し、プローブＰＢ２を仕様Ｎ２１ｅ、及びＮ２１ｈの後に挿入した場合には、検証範囲は、あるスレッドにおける仕様Ｎ２１ｄで表される処理の開始から仕様Ｎ２１ｅで表される処理の終了まで、及び他のスレッドにおける仕様Ｎ２１ｇで表される処理の開始から仕様Ｎ２１ｈで表される処理の終了までとなる。
【００７５】
また例えば、ユーザが、プローブＰＢ１を仕様Ｎ２１ａ、Ｎ２１ｄ、及びＮ２１ｇの前に挿入し、プローブＰＢ３を仕様Ｎ２１ｃ、及びＮ２１ｆの後に挿入した場合には、検証範囲は、第１スレッドにおける仕様Ｎ２１ａの処理開始から仕様Ｎ２１ｃの処理終了まで、第２スレッドにおける仕様Ｎ２１ｄの処理開始から仕様Ｎ２１ｆの処理終了まで、及び第３スレッドにおける仕様Ｎ２１ｇの処理開始から仕様Ｎ２１ｈの処理終了までとなる。
【００７６】
図２のステップＳ１８の後に、図３（ａ）のプログラム模擬部１９０は、制御対象とするハードウェアを模擬するシミュレーションプログラムを実行することで仮想的なハードウェアを形成する。次に、プログラム模擬部１９０は、生成された制御プログラムを検証範囲情報で表される検証範囲で実行することで、仮想的なハードウェアを制御する制御動作を模擬する（ステップＳ１９）。プログラム模擬部１９０は、制御プログラムの制御動作を模擬する際に、模擬結果を表す模擬結果情報を生成する。
【００７７】
具体的には、プログラム模擬部１９０は、ステップＳ１８で取得された検証範囲情報で表される検証範囲に含まれる関数の内で、最も早い実行順序の関数と、最も遅い実行順序の関数を特定する。次に、プログラム模擬部１９０は、検証範囲において制御プログラムを実行するために使用される変数値に対して、ユーザに操作された入力部から取得された値を初期値として代入する。その後、プログラム模擬部１９０は、最も早い実行順序の関数をコールする処理又から、最も遅い実行順序の関数からリターンする処理までを模擬実行する。
【００７８】
この模擬結果情報は、試験結果情報と同様に、例えば、制御プログラムの実行時刻と、制御プログラムを構成する制御モジュールを識別する識別情報（つまり、モジュールＩＤ）若しくは名称（つまり、モジュール名）、又は当該制御モジュールの関数を識別する識別情報（つまり、関数ＩＤ）若しくは名称（つまり、関数名）と、当該制御モジュールが実行されたプロセスを識別するＩＤとを含む。なお、制御モジュールの実行時刻は、実行開始時刻と実行終了時刻とを含み、模擬結果は、制御モジュールのモジュールＩＤ又はモジュール名と、制御モジュールの模擬実行が開始された実行開始時刻から模擬実行が修了された実行終了時刻までの実行期間を含む。また、検証結果は、実行時刻と、当該実行時刻における制御モジュールの変数値をさらに含んでも良い。
【００７９】
ステップＳ１９の後に、図３（ａ）の情報通信部１８０は、試験用実機２００から試験結果情報を受信する（ステップＳ２０）。その後、動作解析部１９５は、ステップＳ１９で生成された模擬結果情報で表される模擬結果、又はステップＳ２０で受信された試験結果情報で表される試験結果から、ステップＳ１８で取得された検証範囲情報で表される検証範囲において、制御モジュール及び当該制御モジュールを構成する各関数が模擬実行又は試験実行された時刻と、当該制御モジュールを識別する識別情報又は名称と、当該制御モジュールの関数を識別する識別情報又は名称と、当該制御モジュールが実行されたプロセスを識別する識別情報とを解析する（ステップＳ２１）。その後、表示制御部１６０は、ステップＳ２１の解析結果を表示するよう、図１（ｂ）のＬＣＤ１００ｈを制御した後に（ステップＳ２２）、制御プログラム生成処理の実行を終了する。
【００８０】
具体的には、ＬＣＤ１００ｈは、図１１（ｂ）に示すような解析結果表示画面ＦＡ１を表示する。図１１（ｂ）の解析結果表示画面ＦＡ１は、横軸で表される実行時間軸を有し、制御プログラムの実行により生成される第１プロセスで実行される制御モジュールの関数名「Ａ」から「Ｃ」及び関数ＩＤ「F0001」から「F0003」、第２プロセスで実行される制御モジュールの関数名「Ｄ」から「Ｆ」及び関数ＩＤ「F0004」から「F0006」、第３プロセスで実行される制御モジュールの関数名「Ｇ」及び「Ｈ」及び関数ＩＤ「F0007」及び「F0008」を、画面の上側から順に表示する。つまり、第１プロセスで実行される関数ＩＤ「F0001」で識別される関数Ａと、第２プロセスで実行される関数ＩＤ「F0002」で識別される関数Ｂとは、略同一の時刻に実行が開始されたことを表す。なお、解析結果表示画面ＦＡ１に表示される関数名及び関数ＩＤは、それぞれモジュール名及びモジュールＩＤでも良い。
【００８１】
また、動作解析部１９５は、上記各関数の実行時刻に基づいて制御モジュール及び制御モジュールを構成する関数の実行時間を解析する。次に、動作解析部１９５は、試験実行又は模擬実行された制御プログラムの識別情報又は名称に基づいて、当該制御プログラムに課せられた制限を表す制限情報及び当該制限が課せられる対象を表す対象情報とを、図３の記述情報記憶部１４０から検索する。その後、動作解析部１９５は、検索した対象情報で表される関数の総実行時間又は制御モジュールの実行時間を算出し、算出した実行時間が検索された制限情報で表される時間的制限に違反するか（つまり、解析された試験実行時間又は模擬実行時間が制限時間よりも長いか）否かを判別する。
【００８２】
その後、表示制御部１６０は、動作解析部１９５の判別結果などを表す、図１１（ｃ）の解析結果表示画面ＦＡ２をＬＣＤ１００ｈに表示させる。図１１（ｃ）の解析結果表示画面ＦＡ２は、図１１（ｂ）の解析結果表示画面ＦＡ１と同様に、横軸で表される実行時間軸を有する。また、図１１（ｃ）の解析結果表示画面ＦＡ２は、第１プロセスを識別するプロセスＩＤ「P0001」と、第１プロセスで実行される制御モジュールの関数名「Ａ」及び関数ＩＤ「F0001」など、第２プロセスを識別するプロセスＩＤ「P0002」と、第２プロセスで実行される制御モジュールの関数名「Ｄ」及び関数ＩＤ「F0004」など、第３プロセスを識別するプロセスＩＤ「P0003」と、第３プロセスで実行される制御モジュールの関数名「Ｇ」及び関数ＩＤ「F0007」などを画面の上側から順に表示する。
【００８３】
また、解析結果表示画面ＦＡ２は、関数ＩＤ「F0001」から「F0008」でそれぞれ識別される関数の試験実行時間又は模擬実行時間を、関数名の下側に表示する。特に、関数ＩＤ「F0007」で識別される関数Ｇ及び関数ＩＤ「F0008」で識別される関数Ｈは、それぞれの試験実行時間又は模擬実行時間の下側に、関数Ｇ及び関数Ｈの総実行時間に課せられた時間制限を表示する。さらに、解析結果表示画面ＦＡ２は、関数Ｇ及び関数Ｈの総試験実行時間又は総模擬実行時間が時間制限を違反したか否かという動作解析部１９５の判定結果を、時間制限の表示から吹き出した文字で表示する。
【００８４】
これらの構成によれば、複数のタスク（つまり、マルチプロセス）が並行実行されることにより、複数のタスクが同じハードウェアを制御することなどにより発生するデッドロックなどの交互干渉をユーザが容易に把握できる。
【００８５】
これらの構成によれば、生成する制御プログラムのアーキテクチャのみならず、生成する制御プログラムに課せられる時間制限、及び制御プログラムを構成する制御モジュールの実行時間をも表示部に表示できる。このため、ハードウェアを制御する制御プログラムのプログラム構造だけでなく、制御プログラムを構成するそれぞれの制御モジュールに課せられる時間的制限をも、制御プログラムの設計者が容易に把握できる。よって、記憶された作成済みの制御モジュール及びアーキテクチャを再利用して、信頼性の高い新たな制御プログラムを効率的に生成できる。
【００８６】
また、これらの構成によれば、制御プログラムに課せられる実行時間の時間的制限と、時間的制限に対する余裕時間とを表示するため、ユーザは、生成する制御プログラムが時間的制限を満足するか否かを容易に確認できるので、制御プログラムを効率的に生成できる。さらに、これらの構成によれば、制御プログラムの試験実行又は模擬実行に要した時間と、当該制御プログラムに課せられた時間的制限とを表示するため、ユーザは、生成した制御プログラムが時間的制限を満足したか否かを容易に確認できるので、制御プログラムを効率的に試験できる。またさらに、これらの構成によれば、制御プログラムの試験実行又は模擬実行に要した時間が、当該制御プログラムに課せられた時間的制限に違反したか否かを表示するため、ユーザは、生成した制御プログラムが時間的制限に違反したか否かをより容易に確認できるので、制御プログラムをより効率的に試験できる。
【００８７】
さらに、これらの構成によれば、実行時間の長さが余裕時間の長さに等しい待機モジュールが時間的制限の課せられた複数の制御モジュールの実行順序の先頭、中間、及び最後のいずれかで実行されるように、制御プログラムのプログラム構造が編集されるため、時間的制限を満足する信頼性の高い制御プログラムを容易に生成できる。
【００８８】
またさらに、これらの構成によれば、検証範囲で制御プログラムの実行を模擬すると共に、模擬結果に基づいて制御モジュールの識別情報と、制御モジュールが模擬実行された時刻とを表示するため、少ない計算時間で制御モジュールの実行結果を容易に確認できる。
【００８９】
また、これらの構成によれば、選択ドメインで使用されるプログラムを制御する制御プログラムであって、選択ドメインで既に運用された制御プログラムに共通した１以上のアーキテクチャパタンを有する制御プログラムを、既に選択ドメインで運用された１以上の制御モジュールに連結して生成する。このように、既に選択ドメインで運用されたアーキテクチャ及び制御モジュールを再利用して制御プログラムを生成することで、選択ドメインで使用されるハードウェアの制御を行う信頼性の高い制御プログラムを短時間かつ少ない工数で効率的に生成できる。
【００９０】
さらに、これらの構成によれば、再利用したアーキテクチャパタンに基づいて制御プログラムを生成するため、制御モジュールのようなコンピュータプログラムのみならず、アーキテクチャパタンというプログラム構造の基本的な設計ノウハウをも再利用できる。
【００９１】
尚、本実施形態に係る機能を実現するための構成を予め備えた制御プログラム生成装置１００として提供できることはもとより、プログラムの適用により、既存の制御プログラム生成装置を本実施形態に係る制御プログラム生成装置１００として機能させることもできる。すなわち、上記の実施形態で例示した制御プログラム生成装置１００による各機能構成を実現させるための制御プログラムを、既存の制御プログラム生成装置を制御するコンピューター（ＣＰＵなど）が実行できるように適用することで、本実施形態に係る制御プログラム生成装置１００として機能させることができる。また、本発明に係る制御プログラム生成方法は、制御プログラム生成装置１００を用いて実施できる。
【００９２】
また、上述の機能を、ＯＳ（Operating System）が分担して実現する場合又はＯＳとアプリケーションとの協働により実現する場合等には、ＯＳ以外の部分のみを媒体に格納して配布してもよく、また、ダウンロード等しても良い。
【００９３】
このようなプログラムの配布方法は任意であり、例えば、メモリカード、ＣＤ−ＲＯＭ、又はＤＶＤ−ＲＯＭなどの記録媒体に格納して配布できる他、インターネットなどの通信媒体を介して配布することもできる。
【００９４】
また、本発明は、本発明の広義の精神と範囲を逸脱することなく、様々な実施形態及び変形が可能とされるものである。また、上述した実施形態は、本発明を説明するためのものであり、本発明の範囲を限定するものではない。つまり、本発明の範囲は、実施形態ではなく、特許請求の範囲によって示される。そして、特許請求の範囲内及びそれと同等の発明の意義の範囲内で施される様々な変形が、本発明の範囲内とみなされる。
【００９５】
以上本発明の好ましい実施例について詳述したが、本発明は係る特定の実施例に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形、変更が可能である。
【００９６】
本出願は、２０１０年８月１６日に出願された日本国特許出願２０１０−１８１８９７号に基づく。本明細書中に日本国特許出願２０１０−１８１８９７号の明細書、特許請求の範囲、図面全体を参照として取り込むものとする。
【産業上の利用可能性】
【００９７】
本発明は、ハードウェアを制御する制御プログラムを生成する制御プログラム生成装置において、ビル分野又はホーム分野で使用される設備機器を制御する制御プログラムを生成する制御プログラム生成装置に適する。
【符号の説明】
【００９８】
１        制御プログラム生成システム
１００    制御プログラム生成装置
１００ａ  ＣＰＵ
１００ｂ  ＲＯＭ
１００ｃ  ＲＡＭ
１００ｄ  ハードディスク
１００ｅ  メディアコントローラ
１００ｆ  ＬＡＮカード
１００ｇ  ビデオカード
１００ｈ  ＬＣＤ
１００ｉ  キーボード
１００ｊ  マウス
１１０    プログラム編集部
１１１    実行時間推定部
１１２    余裕時間算出部
１１３    プログラム構造編集部
１２０    アーキテクチャパタンライブラリ
１３０    制御プログラム再利用ライブラリ
１４０    制御プログラム構造記述言語仕様ライブラリ
１５１    ドメイン選択情報取得部
１５２    パタン選択情報取得部
１５３    制限情報取得部
１５４    記述情報取得部
１５５    検証範囲情報取得部
１６０    表示制御部
１７０    プログラム生成部
１８０    情報通信部
１９０    プログラム模擬部
１９５    動作解析部
２００    試験用実機
【図１】
0005536892.tif 000002
【図２】
0005536892.tif 000003
【図３】
0005536892.tif 000004
【図４】
0005536892.tif 000005
【図５】
0005536892.tif 000006
【図６】
0005536892.tif 000007
【図７】
0005536892.tif 000008
【図８】
0005536892.tif 000009
【図９】
0005536892.tif 000010
【図１０】
0005536892.tif 000011
【図１１】
0005536892.tif 000012