(57)【要約】  プログラム生成装置である端末装置（３００）は、リモートコントロール装置（２００）で実行される動作プログラムの配置エリアを特定するプログラムエリア特定情報を生成する。また、端末装置（３００）は、プログラムエリア特定情報と、リモートコントロール装置（２００）のプログラムカウンタ値とに基づいて、リモートコントロール装置（２００）で実行された動作プログラムを特定するプログラム特定処理を、動作プログラムの実行状態を計測する計測プログラムに対して追加する。これにより、ソフトウェアの動作に与える影響を軽減しながらソフトウェアの動作状態の変化を即時的に計測する計測プログラムを生成できる。
2012070254.tif 000002
【特許請求の範囲】
【請求項１】
機器を制御するコントローラで実行される動作プログラムの配置エリアを特定するプログラムエリア特定情報を生成する情報生成手段と、
前記情報生成手段で生成されたプログラムエリア特定情報と、前記コントローラのプログラムカウンタ値とに基づいて、前記コントローラで実行された動作プログラムを特定するプログラム特定処理と、前記特定された動作プログラムを識別する識別情報を送信する識別情報送信処理とを、前記動作プログラムの実行状態を計測する計測プログラムに対して追加する計測処理追加手段と、を備える、
プログラム生成装置。
【請求項２】
前記情報生成手段は、前記コントローラが前記動作プログラムの実行に用いるスタックエリアを特定するスタックエリア特定情報を、さらに生成し、
前記計測処理追加手段は、前記情報生成手段で生成されたスタックエリア特定情報と、前記コントローラのスタックポインタ値とに基づいて、前記スタックエリアを用いて前記コントローラで実行されたタスクを特定するタスク特定処理を前記計測プログラムに対して、さらに追加し、
前記識別情報送信処理は、前記特定されたタスクを識別する識別情報を、さらに送信する、
請求項１に記載のプログラム生成装置。
【請求項３】
前記識別情報送信処理では、所定レベルの信号値を出力した後に、前記所定レベルの信号値と前記所定レベルの信号値を反転させた信号値とで前記特定された動作プログラムの識別情報を表す信号を出力し、前記識別情報を表す信号の送信が終了すると前記所定レベルを反転させた信号を出力する、
請求項２に記載のプログラム生成装置。
【請求項４】
前記識別情報送信処理は、前記特定された動作プログラムの識別情報が変化した場合に、変化後の識別情報と、前記変化後の識別情報で識別される動作プログラムの実行状態が実行開始状態であることを表す開始状態情報とを、さらに送信し、
前記コントローラで実行される前記動作プログラムの識別情報と、前記開始状態情報とを前記コントローラから受信する通信手段と、
前記通信手段で受信された識別情報で識別される動作プログラムのプログラム名と、前記開始状態情報の受信時刻に基づいて算出された前記動作プログラムの実行時間と、前記動作プログラムの実行時間に課せられる制約時間とを表示する表示手段と、をさらに備える、
請求項１から３のいずれか一項に記載のプログラム生成装置。
【請求項５】
前記算出された前記動作プログラムの実行時間が、前記動作プログラムの実行時間に課せられる制約時間を超えたか否かを計測する計測手段、をさらに備え、
前記表示手段は、前記計測手段が計測した結果をさらに表示する、
請求項４に記載のプログラム生成装置。
【請求項６】
前記コントローラは、動作プログラムを複数のタスクにおいてそれぞれ異なるスタックエリアを用いて並列的に実行し、
前記識別情報送信処理は、前記特定されたタスクの識別情報が変化した場合に、変化後の識別情報と、前記変化後の識別情報で識別されるタスクにおける動作プログラムの実行状態が実行開始状態であることを表す開始状態情報とを、さらに送信し、
前記通信手段は、前記コントローラで実行される前記タスクの識別情報と、前記開始状態情報とを前記コントローラから受信し、
前記表示手段は、前記通信手段で受信された識別情報で識別されるタスクの識別情報と、前記タスクにおいて実行される動作プログラムのプログラム名と、前記開始状態情報の受信時刻とを対応付けて表示する、
請求項５に記載のプログラム生成装置。
【請求項７】
コンピュータを、
機器を制御するコントローラで実行される動作プログラムの配置エリアを特定するプログラムエリア特定情報を生成する情報生成手段、
前記情報生成手段で生成されたプログラムエリア特定情報と、前記コントローラのプログラムカウンタ値とに基づいて、前記コントローラで実行された動作プログラムを特定するプログラム特定処理と、前記特定された動作プログラムを識別する識別情報を送信する識別情報送信処理とを、前記動作プログラムの実行状態を計測する計測プログラムに対して追加する計測処理追加手段、として機能させる、
プログラム生成プログラム。
【請求項８】
機器を制御するコントローラで実行される動作プログラムの配置エリアを特定するプログラムエリア特定情報を生成する情報生成ステップと、
前記情報生成ステップで生成されたプログラムエリア特定情報と、前記コントローラのプログラムカウンタ値とに基づいて、前記コントローラで実行された動作プログラムを特定するプログラム特定処理と、前記特定された動作プログラムを識別する識別情報を送信する識別情報送信処理とを、前記動作プログラムの実行状態を計測する計測プログラムに対して追加する計測処理追加ステップと、を有する、
プログラム生成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラム生成装置、プログラム生成プログラム、及びプログラム生成方法に関し、更に詳しくは、機器を制御するコントローラによる動作プログラムの実行状態を計測する計測プログラムを生成するプログラム生成装置、プログラム生成プログラム、及びプログラム生成方法に関する。
【背景技術】
【０００２】
ソフトウェアの動作状態を他の動作状態に遷移させる際にソフトウェアが満足する複数の状態遷移条件から、互いに排他性を有する状態遷移条件を抽出できるソフトウェア開発支援装置が提案されている（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００９−１５７７５１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、特許文献１に開示された技術では、ソフトウェアの動作に与える影響を軽減しながらソフトウェアの動作状態の変化を即時的に計測できる計測プログラムを生成できないという問題があった。【０００５】
本発明は、上述の事情の下になされたもので、ソフトウェアの動作に与える影響を軽減しながらソフトウェアの動作状態の変化を即時的に計測する計測プログラムを生成できるプログラム生成装置、プログラム生成プログラム、及びプログラム生成方法を提供すること等を目的とする。
【課題を解決するための手段】
【０００６】
上記目的を達成するため、本発明のプログラム生成装置は、
機器を制御するコントローラで実行される動作プログラムの配置エリアを特定するプログラムエリア特定情報を生成する情報生成手段と、
前記情報生成手段で生成されたプログラムエリア特定情報と、前記コントローラのプログラムカウンタ値とに基づいて、前記コントローラで実行された動作プログラムを特定するプログラム特定処理と、前記特定された動作プログラムを識別する識別情報を送信する識別情報送信処理とを、前記動作プログラムの実行状態を計測する計測プログラムに対して追加する計測処理追加手段と、を備える。
【発明の効果】
【０００７】
本発明に係るプログラム生成装置、プログラム生成プログラム、及びプログラム生成方法によれば、ソフトウェアの動作に与える影響を軽減しながらソフトウェアの動作状態の変化を即時的に計測する計測プログラムを生成できる。
【図面の簡単な説明】
【０００８】
【図１】本発明の実施形態に係る実行状態計測システムの一例を表す構成図である。
【図２】リモートコントロール装置の一構成例を表すハードウェア構成図である。
【図３】端末装置の一構成例を表すハードウェア構成図である。
【図４】（ａ）は、端末装置が実行するプログラム生成処理の一例を表すフローチャートである。（ｂ）は、リモートコントロール装置が実行するプログラム保存処理の一例を表すフローチャートである。
【図５】（ａ）は、リモートコントロール装置が有する機能及び端末装置が有する機能の一例を表す機能ブロック図である。（ｂ）は、自動生成部の一構成例を表す図である。
【図６】端末装置が表示するプログラム組立画面の一例を表す図である。
【図７】端末装置が実行する自動プログラム生成処理の一例を表すフローチャートである。
【図８】リモートコントロール装置が実行するプログラム実行処理の一例を表すフローチャートである。
【図９】（ａ）は、識別マーカを構成するコマンド部及びデータ部の一例を表す図である。（ｂ）は、リモートコントロール装置が出力する信号の一例を表す図である。
【図１０】リモートコントロール装置が実行する識別マーカ出力処理の一例を表すフローチャートである。
【図１１】端末装置が実行する状態計測処理の一例を表すフローチャートである。
【図１２】（ａ）は、端末装置が表示する結果表示画面の一例を表す図である。（ｂ）は、端末装置が表示する結果表示画面の他例を表す図である。
【発明を実施するための形態】
【０００９】
以下、本発明の実施形態に係る実行状態計測システム１について、添付図面を参照しつつ説明する。
【００１０】
本発明の実施形態に係る実行状態計測システム１は、図１に示すように、空気調和装置１００、リモートコントロール装置（以下、リモコンという）２００、及び端末装置３００を含んで構成されている。空気調和装置１００は、例えば、ビルに設置されたエア・コンディショナー（つまり、エアコン）とエアコンの室外機とを含んで構成される。リモコン２００は、例えば、ビルや家の壁に設置され、信号線を介して空気調和装置１００に接続する。リモコン２００は、例えば、設定温度及び室内温度、空気調和装置１００による送風量及び風速、並びに動作モードなどの空気調和装置１００に設定される状態量を制御する。尚、リモコン２００は、複数台の空気調和装置を制御しても良い。
【００１１】
端末装置３００は、本発明に係るプログラム生成装置である。端末装置３００は、例えば、パーソナル・コンピュータで構成され、計測プログラムを呼び出す（計測プログラムを埋め込まれた）動作プログラムを生成する。
【００１２】
ここで、動作プログラムとは、リモコン２００において実行されるプログラムであって、空気調和装置１００の動作制御を含むリモコン２００の動作に用いられるプログラムをいう。具体的には、動作プログラムは、空気調和装置１００との通信を行う通信プログラム、通信により空気調和装置１００の動作を制御する制御プログラム、並びに通信結果、制御結果、及び空気調和装置１００の動作状態量などを表示させる表示プログラムを含む。これらの通信プログラム、制御プログラム、及び表示プログラムは、リモコン２００において、並行して（つまり、並列的に）実行される必要があり、かつ即時性（リアルタイム性）が要求される。このため、動作プログラムの実行状態を計測するために、これらのプログラム（つまり、通信プログラム、制御プログラム、及び表示プログラム）のいずれか１つ以上の実行を停止させることが困難である。また、これらのプログラムは、並列的に実行されるため、例えば、状態遷移表などを用いてもこれらのプログラムが用いるリソースを調停することが困難である。
【００１３】
ここで、計測プログラムとは、当該計測プログラムが埋め込まれる動作プログラムの実行状態を計測するプログラムをいう。ここで、動作プログラムの実行状態は、動作プログラムの実行が開始された実行開始状態、動作プログラムが実行中である実行中状態、動作プログラムの実行が待機された待機中状態、及び動作プログラムの実行が終了された実行終了状態を含む。
【００１４】
リモコン２００は、図２に示すように、ＣＰＵ（Central Processing Unit）２００ａ、ＲＯＭ（Read Only Memory）２００ｂ、ＲＡＭ（Random Access Memory）２００ｃ、フラッシュメモリ２００ｄ、通信回路２００ｆ、ビデオカード２００ｇ、ＬＣＤ（Liquid Crystal Display）２００ｈ、及び操作キー２００ｉで構成される。
【００１５】
ＣＰＵ２００ａは、ＲＯＭ２００ｂ又はフラッシュメモリ２００ｄに保存されたプログラムに従ってソフトウェア処理を実行することで、リモコン２００の全体制御を行う。フラッシュメモリ２００ｄが記憶するプログラムは、端末装置３００によって書き換えられる。ＲＡＭ２００ｃは、ＣＰＵ２００ａによるプログラムの実行時において、処理対象とする情報（つまり、データ）を一時的に記憶する。
【００１６】
通信回路２００ｆは、例えば、３線式の通信回線を介して接続する空気調和装置１００及び端末装置３００との間でデータ信号を送受信する。操作キー２００ｉは、ユーザの操作に応じた信号又は情報を入力する。
【００１７】
ビデオカード２００ｇは、ＣＰＵ２００ａから出力されたデジタル信号に基づいて画像を描画（つまり、レンダリング）すると共に、描画された画像を表す画像信号を出力する。ＬＣＤ２００ｈは、ビデオカード２００ｇから出力された画像信号に従って画像を表示する表示部である。尚、リモコン２００は、ＬＣＤ２００ｈの代わりに、ＰＤＰ（Plasma Display Panel）又はＥＬ（Electroluminescence）ディスプレイを備えても良い。
【００１８】
端末装置３００は、図３に示すように、ＣＰＵ３００ａ、ＲＯＭ３００ｂ、ＲＡＭ３００ｃ、ハードディスク３００ｄ、メディアコントローラ３００ｅ、通信回路３００ｆ、ビデオカード３００ｇ、ＬＣＤ３００ｈ、キーボード３００ｉ、スピーカ３００ｊ、及びポインティングディバイス（以下、マウスという）３００ｋを含んで構成される。
【００１９】
ＣＰＵ３００ａは、ＲＯＭ３００ｂ又はハードディスク３００ｄに保存されたプログラムに従ってソフトウェア処理を実行することで、端末装置３００の全体制御を行う。ＲＡＭ３００ｃ、通信回路３００ｆ、ビデオカード３００ｇ、及びＬＣＤ３００ｈは、ＲＡＭ２００ｃ、通信回路２００ｆ、及びビデオカード２００ｇと同様であるので説明を省略する。
【００２０】
ハードディスク３００ｄは、各種の情報（つまり、データ）を保存した表（つまり、テーブル）、各種のプログラムのソースコードを表す電子ファイル（以下、ソースファイルという）、及び各種のプログラムで呼び出されるライブラリプログラムを記憶する。ハードディスク３００ｄが記憶する各種のソースファイルには、動作プログラムの部品となる部品プログラム（以下、動作部品プログラムという）のソースファイルと、動作プログラムに埋め込まれる計測プログラムの部品となる部品プログラム（以下、計測部品プログラムという）のソースファイルとが含まれる。尚、端末装置３００は、ハードディスク３００ｄの代わりに、フラッシュメモリを備えても良い。
【００２１】
メディアコントローラ３００ｅは、フラッシュメモリ、ＣＤ（Compact Disc）、ＤＶＤ（Digital Versatile Disc）、及びブルーレイディスク（Blu-ray Disc）（登録商標）を含む記録媒体から各種のデータ及びプログラムを読み出す。
【００２２】
キーボード３００ｉ及びマウス３００ｋは、ユーザの操作に応じた信号又は情報を入力する。スピーカ３００ｊは、ＣＰＵ３００ａから出力された信号に基づいて音声を出力する。
【００２３】
端末装置３００のＣＰＵ３００ａが、図４（ａ）のプログラム生成処理を、図３に示したハードウェアを用いて実行することで、図５（ａ）に示すようなプログラム組立部３０１、自動生成部３０２、端末記憶部３０３、信号出力部３０４、及び結果表示部３０９が実現される。尚、自動生成部３０２は、図３（ｂ）の計測処理追加部３０２ａ及び情報生成部３０２ｂを含んで構成される
【００２４】
図４（ａ）のプログラム生成処理は、所定周期で発生するタイマ割り込み又はイベントの発生をトリガとして実行される。プログラム生成処理の実行を開始すると、プログラム組立部３０１は、図１（ｂ）のキーボード３００ｉ及びマウス３００ｊを含んで構成される入力部から入力された信号を確認することで、動作プログラムの生成を求める要求（以下、プログラム生成要求という）がユーザによってなされたか否かを判別する（ステップＳ０１）。このとき、プログラム生成要求がないと判別された場合には（ステップＳ０１；Ｎｏ）、プログラム組立部３０１は、プログラム生成処理の実行を終了する。
【００２５】
ステップＳ０１において、プログラム生成要求があると判別された場合には（ステップＳ０１；Ｙｅｓ）、プログラム組立部３０１は、図６に示すようなプログラムの組み立てに用いる画面（以下、プログラム組立画面という）ＦＡを結果表示部３０９に表示させる。その後、プログラム組立部３０１は、入力部から入力された信号に基づいてプログラムを組み立てる（つまり、プログラムを構成する部分プログラムが実行時に呼び出される順序などを定める）（ステップＳ０２）。
【００２６】
図６のプログラム組立画面ＦＡには、開始地点表示ＩＳ、プログラム開始コマンド表示ＩＣＳ、部品プログラム表示ＩＰ１及びＩＰ２、プログラム終了コマンド表示ＩＣＰ、及び終了地点表示ＩＰと、制約時間表示ＩＬとが表示されている。
【００２７】
開始地点表示ＩＳは、生成される動作プログラムの先頭を表現する。プログラム開始コマンド表示ＩＣＳは、生成される動作プログラムが実行開始状態となったことを表すコマンド（以下、プログラム開始コマンドという）を送信する計測部品プログラムを表現する。部品プログラム表示ＩＰ１及びＩＰ２は、例えば、動作プログラムで呼び出される動作部品プログラムを表現する。プログラム終了コマンド表示ＩＣＰは、生成される動作プログラムが実行終了状態となったことを表すコマンド（以下、プログラム終了コマンドという）を送信する計測部品プログラムを表現する。終了地点表示ＩＰは、生成される動作プログラムの末尾を表現する。制約時間表示ＩＬは、プログラム開始コマンドの送付からプログラム終了コマンドの送付までの時間が制約時間より短くなければならないことを表現する。空気調和装置１００の動作制御に用いられる動作プログラムは、リアルタイム性が要求されるためである。
【００２８】
動作部品プログラム及び計測部品プログラムを含む部品プログラムは、動作プログラムと比べると小規模で、ひとまとまりにされた所定の処理の実行に用いられるプログラムをいう。部品プログラムを用いて実行される処理の種類は、例えば、「例外処理」、「条件判定処理」、「代入処理」、「保存処理」、「計測処理」などがある。「例外処理」は、既定された例外条件が満足された場合に部分プログラム、又は部分プログラムを呼び出した動作プログラム若しくは計測プログラムの実行を中止する処理である。「条件判定処理」は、指定された実行条件論理式が真の場合に実行される処理である。「代入処理」は、指定された演算又は指定された関数の呼び出しを行い、呼び出された関数の戻値を指定された変数に対して代入する処理である。「計測処理」は、動作プログラムの実行状態を計測するために用いられる処理である。尚、これら各種の部品プログラムのソースファイルは、図５（ａの端末記憶部３０３に予め記憶されている。勿論、部品プログラムのソースファイルは、生成される動作プログラムに応じて端末装置３００で新たに生成されても良い。
【００２９】
図６のプログラム組立画面ＦＡにおいて、画面に向かってより左側に位置する表示によって表現される部品プログラムほど、動作プログラム実行時において先に呼び出される又は実行されるように組み立てられる。つまり、プログラム組立画面ＦＡは、部品プログラムを表現するブロック状の表示を、部品プログラムが実行される順序に従って並べる視覚的なタイムチャート又はブロックチャートを表示する画面である。
【００３０】
次に、プログラムの組立方法について説明する。プログラム組立部３０１は、端末記憶部３０３に記憶された部品プログラムのプログラム名などを、プログラム組立画面ＦＡに表示するように結果表示部３０９を制御する。次に、ユーザは、表示されたプログラム名などに基づいて組み立てに用いる部品プログラムを決定する。その後、プログラム組立部３０１は、入力部から入力される信号に基づいて、組み立てに用いるようにユーザによって指示された部品プログラムを特定し、入力部から入力される信号に基づいてユーザに指定されたプログラム組立画面ＦＡ上の位置を特定する。次に、プログラム組立部３０１は、特定されたプログラム組立画面ＦＡ上の位置に、指示された部品プログラムの表示を行うように結果表示部３０９を制御する。この構成によれば、ユーザは、入力部を操作して部品プログラムを表現する表示の位置を変更するだけで、動作プログラム実行時における部品プログラムの呼出順序を容易に変更できる。
【００３１】
また、プログラム組立部３０１は、入力部から入力される信号に基づいて動作プログラムの実行開始から終了までの時間（つまり、実行時間）に課せられる制限時間を特定する。その後、プログラム組立部３０１は、図６のプログラム開始コマンド表示ＩＣＳと、プログラム終了コマンド表示ＩＣＰとを結ぶ線分をプログラム組立画面ＦＡに表示し、当該表示させる線分に対応した位置に制限時間を表示するように結果表示部３０９を制御する。
【００３２】
図４（ａ）のステップＳ０２が実行された後に、自動生成部３０２は、ステップＳ０２で組み立てられたプログラムを自動的に生成する、図７に示すような自動プログラム生成処理を実行する（ステップＳ０３）。
【００３３】
図７の自動プログラム生成処理の実行が開始されると、図５（ｂ）に示す自動生成部３０２の計測処理追加部３０２ａは、例えば、実行中の動作プログラム及び実行中のタスクの変化を所定周期で計測するために、図６のプログラム組立画面ＦＡに表示された順序と無関係に実行される計測プログラム（つまり、タイマの割込みによって動作する計測プログラム）のソースコードを、例えば、タイマ割り込み用の計測部品プログラムのソースコードを用いて生成し、生成したソースコードをソースファイルに対して追加出力する（ステップＳ１１）。尚、ステップＳ１１で追加されるコードは、後述する図８のステップＳ４５からＳ５０のような計測処理を表すコードを含む。
【００３４】
図７のステップＳ１１の後に、自動生成部３０２は、プログラム組立部３０１で組み立てられたプログラムのソースコードをソースファイルへ出力し始める（ステップＳ１２）。具体的には、自動生成部３０２は、図６のプログラム組立画面ＦＡ上に並べられた複数のブロック表示を、処理の開始に近い位置（つまり、画面に向かって左側）に表示されたブロック表示から順に処理対象とし、処理対象としたブロック表示で表現される部品プログラムのソースコードをソースファイルに対して出力し始める。
【００３５】
次に、自動生成部３０２は、ソースコードの出力対象となる部品プログラムが、動作部品プログラムであるか、計測部品プログラムであるかを判別する（ステップＳ１３）。このとき、自動生成部３０２は、動作部品プログラムであると判別すると（ステップＳ１３；Ｙｅｓ）、出力対象となる動作部品プログラムのソースコードを、図５（ａ）の端末記憶部３０３から検索し、検索されたソースコードを動作プログラムのソースファイルへ追加出力（つまり、追加記載）する（ステップＳ１４）。尚、ステップＳ１４で追加されるコードは、後述する図８のステップＳ４２及びＳ４４のような処理を表すコードを含んでもよい。
【００３６】
これに対して、部品プログラムが計測部品プログラムであると判別されると（ステップＳ１３；Ｎｏ）、計測処理追加部３０２ａは、ステップＳ１４と同様にソースコードを検索し、検索された計測部品プログラムのソースコードを計測プログラムのソースファイルへ追加出力し、必要に応じて計測プログラムの呼び出し処理のソースコードを動作プログラムのソースファイルへ追加出力する（ステップＳ１５）。尚、ステップＳ１５で追加されるコードは、ステップＳ１１で追加されるコードと同様に、後述する図８のステップＳ４４からＳ５０のような計測処理を表すコードを含む。
【００３７】
ステップＳ１４又はステップＳ１５の実行後、自動生成部３０２は、プログラムに組み込まれた部品プログラムのソースコードを全て出力したか否かを判別する（ステップＳ１６）。このとき、自動生成部３０２は、未だ全てのソースコードを出力していないと判別すると（ステップＳ１６；Ｎｏ）、上記ステップＳ１３から上記処理を繰り返す。これに対して、自動生成部３０２は、全てのソースコードを出力したと判別すると（ステップＳ１６；Ｙｅｓ）、ソースコードファイルをプレコンパイルしてバイナリデータ（つまり、バイナリプログラム）を生成し、生成したバイナリプログラムに対してプレリンクを行う（ステップＳ１７）。このとき、自動生成部３０２は、生成されるプログラムをコントロール装置２１０が実行するために用いるスタックエリアの範囲（以下、スタック範囲という）及び生成されるプログラムがコントロール装置２１０に配置される範囲（以下、プログラム範囲という）を確定させる。
【００３８】
ここで、リモコン２００が有するＣＰＵ２００ａは、タイムスケジューリングにより各タスクで複数の動作プログラムを順番に実行する。このとき、リモコン２００は、同一のプログラムを複数のタスクで実行する場合もある。この場合、各タスクでは、同じプログラムが実行されるが、プログラムの実行に使用されるスタック領域（以下、スタックエリアという）が異なる。スタックエリアは、図２のＲＡＭ２００ｃにおける記憶領域であって、タスクにおいてＣＰＵ２００ａがプログラムを実行する際に、プログラムの実行に用いられる変数を一時的に記憶させるエリアをいう。
【００３９】
ステップＳ１７の後に、図５（ｂ）に示す自動生成部３０２の情報生成部３０２ｂは、画定したスタックエリアの識別情報（以下、スタックＩＤという）を生成した後に、生成されたスタックＩＤを表すデータと、スタックエリアの開始アドレスを表すデータ及び終了アドレスを表すデータとをスタックエリアリストに追加する。その後、自動生成部３０２は、データを追加されたスタックエリアリストを電子ファイル（以下、スタックエリアリストファイルという）に出力する（ステップＳ１８）。
【００４０】
尚、スタックエリアリストは、例えば、リモコン２００のアドレスバスのバス幅が４バイト幅である場合、スタック範囲の開始アドレスを表す４バイトのデータ、スタック範囲の終了アドレスを表す４バイトのデータ、及びスタックＩＤを表す２バイトのデータを１つの組とした１０バイトのデータを、最大２５６個まで保持可能なリストである。
【００４１】
ステップＳ１８の後に、情報生成部３０２ｂは、生成した動作プログラムの識別情報（以下、動作プログラムＩＤという）を生成した後に、生成されたプログラムＩＤを表すデータと、動作プログラムのプログラム範囲の開始アドレスを表すデータ及び終了アドレスを表すデータとをプログラムエリアリストに追加する。その後、自動生成部３０２は、データを追加されたプログラムエリアリストを電子ファイル（以下、プログラムエリアリストファイルという）に出力する（ステップＳ１９）。
【００４２】
尚、プログラムエリアリストは、プログラムが配置される範囲の開始アドレスを表す４バイトのデータ、プログラムが配置される範囲の終了アドレスを表す４バイトのデータ、及び動作プログラムＩＤを表す２バイトのデータを１つの組とした１０バイトのデータを複数保持可能なリストである。尚、プログラムエリアリストの開始アドレスを表すデータ、終了アドレスを表すデータ、及び動作プログラムＩＤを表すデータは、それぞれ必ずしも４バイト、４バイト、及び２バイトである必要はない。
【００４３】
ステップＳ１９を実行した後に、自動生成部３０２は、スタックエリアリストファイルと、プログラムエリアリストファイルとをコンパイル対象に含めてから再度コンパイルを実行する（ステップＳ２０）。この処理により、例えば、ステップＳ１７で生成されたバイナリプログラムがスタックエリア及びプログラムエリアリストを参照可能になる。
【００４４】
ステップＳ２０の後に、自動生成部３０２は、プログラム組立部３０１で特定された制約時間を表す情報と、生成された動作プログラム（つまり、制約時間が課せられたプログラム）のプログラムＩＤとを対応付けて情報記憶部２０２へ保存した後に、自動プログラム生成処理の実行を終了する。
【００４５】
図４（ａ）のステップＳ０３の処理を実行した後に、図５の信号出力部３０４は、ステップＳ０３で生成された動作プログラム、動作プログラムから呼び出される計測プログラム、計測プログラムによって参照されるプログラムエリアリストファイル及びスタックエリアリストファイルと、これらを保存するアドレスを指定する情報とをリモコン２００へ送信した後に（ステップＳ０４）、プログラム生成処理の実行を終了する
【００４６】
次に、端末装置３００から送信されたプログラムを受信するリモコン２００について説明する。
図２に示したリモコン２００のＣＰＵ２００ａが、図２に示したハードウェアを用いて、図４（ｂ）に示すようなプログラム保存処理を実行することにより、図５に示すような信号入力部２０１及び情報記憶部２０２が実現される。
【００４７】
リモコン２００の端末装置３００に対する接続を検知すると、図５の信号入力部２０１は、図４（ｂ）のプログラム保存処理の実行を開始する。先ず、信号入力部２０１は、所定時間に亘ってプログラムの受信（例えば、情報記憶部２０２にプログラムを書き込むように命じる書込命令の受信）を待った後に（ステップＳ３１）、プログラムを受信したか否か判別する（ステップＳ３２）。このとき、信号入力部２０１は、プログラムを受信しなかったと判別した場合には（ステップＳ３２；Ｎｏ）、ステップＳ３１から上記処理を繰り返す。これに対して、信号入力部２０１は、プログラムを受信したと判別した場合には（ステップＳ３２；Ｙｅｓ）、端末装置３００から転送された動作プログラム、計測プログラム、プログラムエリアリストファイル、及びスタックエリアリストファイルと、これらを保存するアドレスを指定する情報とを受信し、受信した情報で指定された情報記憶部２０２のアドレスに、これらプログラム及びファイルを保存する（ステップＳ３３）。その後、信号入力部２０１は、保存したプログラム及びファイルの内容が正常であることを確認する。このとき、信号入力部２０１は、正常であることを確認するとプログラム保存処理の実行を終了する。これに対して、信号入力部２０１は、異常であることを確認すると、保存したプログラム及びファイルを情報記憶部２０２から削除した後にプログラム保存処理の実行を終了する。
【００４８】
ここで、図２に示したリモコン２００の電源が投入されると、リモコン２００のＣＰＵ２００ａは、情報記憶部２０２に保存された動作プログラム及び計測プログラムを実行する、図８に示すようなプログラム実行処理を開始する。ＣＰＵ２００ａが、図２に示したハードウェアを用いてこのプログラム実行処理を実行することで、図５に示すような実行部２０３、タイマ２０４、信号出力部２０５、通信部２０８、及び動作表示部２０９が実現される。
【００４９】
図８のプログラム実行処理が開始されると、図５の実行部２０３は、情報記憶部２０２に記憶された動作プログラム及び動作プログラムに埋め込まれた計測プログラムの実行を開始する（ステップＳ４１）。具体的には、実行部２０３は、情報記憶部２０２に記憶された制御プログラム、通信プログラム、及び表示プログラムなどの複数の動作プログラムをタスク毎に起動する。この際、実行部２０３は、情報記憶部２０２に記憶されたスタックエリアリストに記載された開始アドレスと終了アドレスに従って、起動したタスクにおいて動作プログラムの実行に用いられるスタックエリアを定める。次に、実行部２０３は、定めたスタックエリアのスタックＩＤとタスクのタスクＩＤとを対応付けて情報記憶部２０２に保存する。その後、実行部２０３は、タイムスケジューリングにより各タスクにおいて動作プログラムを所定の順番で実行する（以下、タスクを実行するという）。
【００５０】
ステップＳ４１の後に、実行部２０３は、次に実行されるプログラムが計測プログラムであるか否かを判別する（ステップＳ４２）。尚、実行部２０３は、タイマ２０４が所定周期のタイマイベントを発生させた場合、又は端末装置３００のユーザがプログラムの組立において指定した位置にプログラムカウンタが到達した場合に、計測プログラムを実行する。
【００５１】
ステップＳ４２において、実行部２０３は、次に実行されるプログラムが計測プログラムでないと判別すると（ステップＳ４２；Ｎｏ）、動作プログラムを実行する（ステップＳ４３）。具体的には、実行部２０３は、リモコン２００の動作を制御したり、空気調和装置１００の動作制御を行う命令を送信するように通信部２０８を制御したり、通信結果、制御結果、及び空気調和装置１００の動作状態量などを表示するように動作表示部２０９を制御した後に、ステップＳ４２に戻り上記処理を繰り返す。
【００５２】
ステップＳ４２において、実行部２０３は、次に実行されるプログラムが計測プログラムであると判別すると（ステップＳ４２；Ｙｅｓ）、ＣＰＵ２００ａのスタックポインタレジスタの値及びプログラムカウンタレジスタの値を読み出し、読み出した値を情報記憶部２０２へ保存する（ステップＳ４４）。尚、プログラムカウンタレジスタは、ＣＰＵ２００ａが実行しているプログラム命令の位置を示す。プログラムカウンタレジスタが示す位置の命令をＣＰＵ２００ａが実行すると、プログラムカウンタレジスタの値は、値「1」だけインクリメントされる。
【００５３】
次に、実行部２０３は、計測プログラムに従ってステップＳ４５からＳ５０の処理を実行する。ステップＳ４５では、実行部２０３は、情報記憶部２０２に記憶されたスタックエリアリストから、情報記憶部２０２へ保存したスタックポインタレジスタ値よりも開始アドレスが前で、かつスタックポインタレジスタ値よりも終了アドレスが後のスタックエリアのスタックＩＤを検索する（ステップＳ４５）。その後、実行部２０３は、スタックＩＤと対応付けて情報記憶部２０２が記憶するタスクＩＤを検索する。
【００５４】
その後、実行部２０３は、情報記憶部２０２に記憶されたプログラムエリアリストから、情報記憶部２０２へ保存したプログラムカウンタレジスタ値よりも開始アドレスが前で、かつプログラムカウンタレジスタ値よりも終了アドレスが後のプログラムエリアのプログラムＩＤを検索する（ステップＳ４６）。
【００５５】
実行部２０３は、後述するステップＳ５０で情報記憶部２０２に既に保存されたスタックＩＤと、ステップＳ４５で検索されたスタックＩＤとに基づいて、プログラムの実行に用いられるスタックエリアが変化したか否か、及び後述するステップＳ５０で保存されたプログラムＩＤと、ステップＳ４６で検索されたプログラムＩＤとに基づいて、実行中のプログラムが変化したか否かを判別する（ステップＳ４７）。
【００５６】
ステップＳ４７において、実行部２０３は、使用中のスタックエリア及び実行中のプログラムのどちらも変化しなかったと判別すると（ステップＳ４７；Ｎｏ）、ステップＳ４２に戻り上記処理を繰り返す。これに対して、実行部２０３は、使用中のスタックエリア又は実行中のプログラムが変化したと判別すると（ステップＳ４７；Ｙｅｓ）、図９（ａ）に示すような、識別マーカのコマンド部及びデータ部の値を算出する（ステップＳ４８）。
【００５７】
ここで、識別マーカとは、信号に付与されるマーカであり、実行状態が変化したプログラム又はタスクを識別すると共に、変化した実行状態を表す標識をいう。具体的には、識別マーカは、ビット列による非同期通信用の信号である。識別マーカは、図９（ａ）に示すようなタスク開始コマンド、タスク終了コマンド、プログラム開始コマンド、及びプログラム終了コマンドを含む。これらのコマンドは、それぞれ１バイトのコマンド部とデータ部とで構成される２バイト（つまり、１６ビット）のビット列である。ビット列は、電圧レベルによって「High」レベルと「Low」レベルとの２値で表現される。
【００５８】
タスク開始コマンドは、図９（ａ）に示すように、タスクの実行が開始されたことを表すコマンド部「0x01」と、実行開始状態となったタスクのタスクＩＤを表すデータ部とで構成される。同様に、タスク終了コマンドは、タスクの実行が終了されたことを表すコマンド部「0x02」と、実行終了状態となったタスクのタスクＩＤを表すデータ部とで構成される。さらに、プログラム開始コマンドは、プログラムの実行が開始されたことを表すコマンド部「0x03」と、実行開始状態となったプログラムのプログラムＩＤを表すデータ部とで構成される。同様に、プログラム終了コマンドは、プログラムの実行が終了されたことを表すコマンド部「0x04」と、実行終了状態となったプログラムのプログラムＩＤを表すデータ部とで構成される。
【００５９】
つまり、ステップＳ４８において、実行部２０３は、使用中のスタックエリアが変化したと判別すると（ステップＳ４７；Ｙｅｓ参照）、「0x01」のコマンド部と、ステップＳ４５で検索されたスタックＩＤで識別されるスタックを用いて実行されたタスクＩＤを表すデータ部とで構成されるタスク開始コマンドを生成し、「0x02」のコマンド部と、ステップＳ５０で保存されたタスクＩＤを表すデータ部とで構成される識別マーカ（つまり、タスク終了コマンド）を生成する。同様に、実行部２０３は、実行中のプログラムが変化したと判別すると、「0x03」のコマンド部と、ステップＳ４６で検索されたプログラムＩＤを表すデータ部とで構成されるプログラム開始コマンドを生成し、「0x04」のコマンド部と、ステップＳ５０で保存されたプログラムＩＤを表すデータ部とで構成されるプログラム終了コマンドを生成する。
【００６０】
ステップＳ４８の後に、実行部２０３は、識別マーカ（つまり、コマンド）を送信キューに追加した後に、送信キューに蓄積された識別マーカを出力するように信号出力部２０５に対して指示を行う。その後、信号出力部２０５は、図１０に示すような識別マーカ出力処理を、実行部２０３からの指示に従って実行する（ステップＳ４９）。
【００６１】
図１０の識別マーカ出力処理を開始すると、信号出力部２０５は、現在の出力信号レベルを記憶する（ステップＳ６１）。次に、信号出力部２０５は、出力信号の信号レベルを「Low」レベルにする（ステップＳ６２）。その後、信号出力部２０５は、送信キューに格納されている識別マーカを１つに読み出した後に、読み出した識別マーカのコマンド部（８ビット）の１ビット目から８ビット目を順に出力してから（ステップＳ６３）、識別マーカのデータ部（８ビット）の１ビット目から８ビット目を順に出力する（ステップＳ６４）。次に、信号出力部２０５は、送信キューに識別マーカが残っているか否かを判別し（ステップＳ６５）、識別マーカが残っていると判別すると（ステップＳ６５；Ｙｅｓ）、ステップＳ６３に戻り上記処理を繰り返す。
【００６２】
これに対して、信号出力部２０５は、送信キューに識別マーカが残っていないと判別すると（ステップＳ６５；Ｎｏ）、ステップＳ６１で情報記憶部２０２に保存した信号レベルを反転させたレベルで信号出力を開始した後に（ステップＳ６６）、識別マーカ出力処理の実行を終了する。
【００６３】
具体例としては、信号出力部２０５は、図９（ｂ）に示すような識別マーカ１を出力した後から識別マーカ２を出力するまでの時間Ｔ２においては、識別マーカ１を出力する前の時間Ｔ１における信号レベル「Low」を反転させた「High」レベルの信号を出力する。また、信号出力部２０５は、識別マーカ２を出力した後から次に識別マーカを出力するまでの時間Ｔ３においては、時間Ｔ２における信号レベル「High」を反転させた「Low」レベルの信号を出力する。
【００６４】
これらの構成によれば、所定レベルの信号値を出力した後に、例えば、データ部のような動作プログラム又はタスクの識別情報（つまり、プログラムＩＤ又はタスクＩＤ）を表す信号を出力し、識別情報を表す信号の送信が終了すると所定レベルを反転させた信号を出力する。このため、信号値の反転によって動作プログラム又はタスクの実行状態が変化してから次に実行状態が変化するまでの時間（つまり、動作プログラム又はタスクの実行時間）を、例えば、オシロスコープを用いて容易に計測できる。また、所定レベルの信号値と所定レベルの信号値を反転させた信号値とで動作プログラムの識別情報（つまり、プログラムＩＤ）を表すので、動作プログラム又はタスクの実行状態を把握するために、ＵＡＲＴ（Universal Asynchronous Receiver Transmitter）などの非同期通信を用いてタスクのディスパッチログを出力する場合と異なり、出力された信号に対する専用のデコーダを必要としない。さらに、ＵＡＲＴを用いる場合と比べて、即応性が良く、かつ動作プログラムの実行に与える影響が少ない。
【００６５】
図８のステップＳ４９の後に、実行部２０３は、ステップＳ４５及びＳ４６でそれぞれ検索されたスタックＩＤ、タスクＩＤ、及びプログラムＩＤを情報記憶部２０２へ保存した後に（ステップＳ５０）、ステップＳ４２から上記処理を繰り返す。
【００６６】
リモコン２００から出力された信号を受信する端末装置３００のＣＰＵ３００ａは、図２に示したハードウェアを用いて、図１１に示すような状態計測処理を実行することにより、図５に示すような信号入力部３０７、計測部３０８、及び結果表示部３０９として機能する。
【００６７】
リモコン２００から出力された信号の立ち上がりエッジをトリガとして、信号入力部３０７は、図１１の状態計測処理の実行を開始する。信号入力部３０７は、先ず、１６ビット分のデータを受信する（ステップＳ７１）。次に、信号入力部３０７は、受信したデータ（つまり、識別マーカ）と、データの受信時刻を表す情報とを対応付けて情報記憶部２０２へ保存する（ステップＳ７２）。
【００６８】
次に、計測部３０８は、保存されたデータがタスク開始コマンドであるか否かを判別する（ステップＳ７３）。具体的には、計測部３０８は、保存されたデータのコマンド部が、図９（ａ）に示すようなタスク開始コマンドのコマンド部「0x01」であるか否かを判別する。このとき、計測部３０８は、保存されたデータがタスク開始コマンドであると判別すると（ステップＳ７３；Ｙｅｓ）、保存されたデータからタスクＩＤを表すデータ部を抽出し、情報記憶部２０２に画定された画面バッファのタスク用のスタック変数に対して、抽出されたデータ部で表されるタスクＩＤをプッシュする（ステップＳ７４）。また、計測部３０８は、画面バッファの変数値であって、当該タスクＩＤで識別されるタスクの状態を表す変数の値を、タスクが実行中である実行中状態を表す値に変更する。
【００６９】
ステップＳ７３において、保存されたデータがタスク開始コマンドでないと判別すると（ステップＳ７３；Ｎｏ）、計測部３０８は、保存されたデータがタスク終了コマンドであるか否かを判別する（ステップＳ７５）。具体的には、計測部３０８は、保存されたデータのコマンド部が、図９（ａ）に示すようなタスク終了コマンドのコマンド部「0x02」であるか否かを判別する。このとき、計測部３０８は、保存されたデータがタスク終了コマンドであると判別すると（ステップＳ７５；Ｙｅｓ）、保存されたデータからタスクＩＤを表すデータ部を抽出した後に、抽出されたデータ部で表されるタスクＩＤをタスク用のスタック変数からポップする（ステップＳ７６）。また、計測部３０８は、当該タスクＩＤで識別されるタスクの状態を表す変数の値を、タスクの実行が待機されている待機中状態を表す値に変更する。
【００７０】
ステップＳ７５において、保存されたデータがタスク終了コマンドでないと判別すると（ステップＳ７５；Ｎｏ）、計測部３０８は、保存されたデータがプログラム開始コマンドであるか否かを判別する（ステップＳ７７）。具体的には、計測部３０８は、保存されたデータのコマンド部が、図９（ａ）に示すようなプログラム開始コマンドのコマンド部「0x03」であるか否かを判別する。このとき、計測部３０８は、保存されたデータがプログラム開始コマンドであると判別すると（ステップＳ７７；Ｙｅｓ）、保存されたデータからプログラムＩＤを表すデータ部を抽出した後に、抽出されたデータ部で表されるプログラムＩＤを画面バッファのプログラム用のスタック変数へプッシュする（ステップＳ７８）。また、計測部３０８は、当該プログラムＩＤで識別される動作プログラムの状態を表す変数の値を、プログラムが実行されている実行中状態を表す値に変更する。
【００７１】
ステップＳ７７において、保存されたデータがプログラム開始コマンドでないと判別すると（ステップＳ７７；Ｎｏ）、計測部３０８は、保存されたデータがプログラム終了コマンドであるか否かを判別する（ステップＳ７９）。具体的には、計測部３０８は、保存されたデータのコマンド部が、図９（ａ）に示すようなプログラム終了コマンドのコマンド部「0x04」であるか否かを判別する。このとき、計測部３０８は、保存されたデータがプログラム終了コマンドであると判別すると（ステップＳ７９；Ｙｅｓ）、保存されたデータからプログラムＩＤを表すデータ部を抽出した後に、抽出されたデータ部で表されるプログラムＩＤをプログラム用のスタック変数からポップする（ステップＳ８０）。また、計測部３０８は、当該プログラムＩＤで識別される動作プログラムの状態を表す変数の値を、プログラムの実行が待機されている待機中状態を表す値に変更する。
【００７２】
ステップＳ７４、ステップＳ７６、ステップＳ７８、又はステップＳ８０の後に、計測部３０８は、画面バッファのタスクの状態を表す変数の値及び動作プログラムの状態を表す変数の値の変化と、これらの変数値が変化した時刻（つまり、情報記憶部２０２に保存したコマンドの受信時刻）とを対応付けて表示するように結果表示部３０９を制御する（ステップＳ８１）。その後、計測部３０８は、状態計測処理の実行を終了する。
【００７３】
具体的には、ステップＳ８１において、結果表示部３０９は、図１２（ａ）に示すような結果表示画面ＦＣ１を表示する。結果表示画面ＦＣ１は、動作プログラムの実行時刻を表現するタイムラインＴＬと、表示プログラムの実行状態を表す表示ブロックＰＤ、通信プログラムの実行状態を表す表示ブロックＰＴ、及び制御プログラムの実行状態を表す表示ブロックＰＣとが表示されている。
【００７４】
具体例として、信号入力部３０７が、時刻ｔ１において、通信プログラムのプログラムＩＤを表すデータ部を有するプログラム開始コマンドを入力し、時刻ｔ２において、通信プログラムのプログラムＩＤを表すデータ部を有するプログラム終了コマンドを入力した場合を挙げて説明する。結果表示部３０９は、通信プログラムの実行状態を表す表示ブロックＰＴの表示を、時刻ｔ１から実行中状態を表す表示に切り替えた後に、時刻ｔ２から表示ブロックＰＴの表示を、待機中状態を表す表示に切り替える。
【００７５】
その後、計測部３０８は、通信プログラムのプログラムＩＤと対応付けて情報記憶部２０２に記憶された制約時間を表す情報を検索し、検索された情報で表される制約時間を通信プログラムのプログラム名又はプログラムＩＤと対応付けて表示する。また、計測部３０８は、検索された情報で表される制約時間が時刻ｔ１から時刻ｔ２までの時間（つまり、通信プログラムの実行時間）より所定時間以上短いか否かを計測（つまり、判別）する。計測部３０８は、制約時間よりも通信プログラムの実行時間が所定時間以上短いことを計測すると、例えば、「想定内に収まっています。」などの制約時間よりも実行時間が短かったことを表す表示を行う。これに対して、計測部３０８は、制約時間よりも通信プログラムの実行時間が所定時間以上長いことを計測すると、例えば、「想定内に収まっていません。」などの制約時間よりも実行時間が長かったことを表す警告表示又はエラー表示を行う。さらに、計測部３０８は、制約時間と通信プログラムの実行時間との差異が所定時間より短いことを計測すると、例えば、「想定と同じぐらいです。」などの制約時間と実行時間とが略一致していることを表す表示を行う。
【００７６】
さらに、同じプログラムＩＤで識別される動作プログラムがリモコン２００で複数実行されている場合には、結果表示部３０９は、図１２（ｂ）に示すような結果表示画面ＦＣ２を表示する。図１２（ｂ）の結果表示画面ＦＣ２は、実行されている動作プログラムを識別するプログラムＩＤと、当該動作プログラムを実行するタスクＩＤとを対応付けて複数表示する。具体的には、リモコン２００では、２つの通信ポートのそれぞれで通信されるデータを通信するために、同じプログラムＩＤで識別される通信プログラムが、２つのタスクで並列的に実行されている。このため、図１２（ｂ）の結果表示画面ＦＣ２には、タイムラインＴＬと、タスクＩＤ「002」で識別されるタスクにおいて実行されている通信プログラムの実行状態を表す表示ブロックＰＴ１と、タスクＩＤ「003」で識別されるタスクにおいて実行されている通信プログラムの実行状態を表す表示ブロックＰＴ２とが表示されている。また、画面に向かって表示ブロックＰＴ１の左側には、表示ブロックＰＴ１で実行状態が表されるプログラムの名称と、当該プログラムを実行するタスクを識別するタスクＩＤとが対応付けて表示されている。同様に、表示ブロックＰＴ２の左側には、表示ブロックＰＴ２で実行状態が表されるプログラムの名称と、当該プログラムを実行するタスクを識別するタスクＩＤとが対応付けて表示されている。
【００７７】
このため、信号入力部３０７がプログラム開始コマンドとタスク開始コマンドとを入力すると、結果表示部３０９は、プログラム開始コマンドのプログラムＩＤで識別されるプログラムの実行状態を表す表示ブロックの内で、タスク開始コマンドのデータ部が表すタスクＩＤで識別されるタスクで実行されているプログラムの実行状態を表す表示ブロックの表示を、実行中状態を表す表示に切り替える。尚、結果表示部３０９は、表示ブロックと、表示ブロックで実行状態を表されるプログラムの名称及びプログラムＩＤのひとつ以上と、プログラムが実行されたタスクのタスクＩＤとを対応付けて表示しても良い。
【００７８】
同様に、信号入力部３０７がプログラム終了コマンドとタスク終了コマンドとを入力すると、結果表示部３０９は、プログラム終了コマンドのプログラムＩＤで識別されるプログラムの実行状態を表す表示ブロックの内で、タスク終了コマンドのデータ部が表すタスクＩＤで識別されるタスクで実行されているプログラムの実行状態を表す表示ブロックの表示を、待機中状態を表す表示に切り替える。
【００７９】
これらの構成によれば、動作プログラムの名称と、例えば、プログラム開始コマンドの受信時刻に基づいて算出された動作プログラムの実行時間と、動作プログラムの実行時間に課せられる制約時間とを表示する。また特に、算出された動作プログラムの実行時間が、当該動作プログラムの実行時間に課せられる制約時間を超えたか否かを表示する。これらのため、ユーザは、リアルタイム性が要求されるリモートコントロール装置２００で実行される動作プログラムの実行時間が制約時間を満足するか否かを容易に検証できる。
【００８０】
またこれらの構成によれば、例えば、プログラムエリアリストなどの動作プログラムが配置されるエリアを特定するプログラムエリア特定情報と、動作プログラムの実行に用いられたプログラムカウンタ値とに基づいてリモートコントロール装置２００で実行された動作プログラムを特定する。このため、動作プログラムに対する計測処理の追加が少ないため、動作プログラムの動作に与える影響を軽減しながら動作プログラムの実行状態を計測する計測プログラムを生成できる。
【００８１】
さらにこれらの構成によれば、例えば、スタックエリアリストなどのスタックエリアを特定するスタックエリア特定情報と、動作プログラムの実行に用いられたスタックエリアを示すスタックポインタ値とに基づいて、リモートコントロール装置２００で実行されたタスクを特定する。このため、動作プログラムの動作に与える影響を軽減しながらソフトウェアの実行に用いられるタスクの実行状態を計測する計測プログラムを生成できる。
【００８２】
またさらに、これらの構成によれば、タスクの識別情報（つまり、タスクＩＤ）と、当該タスクで実行されている動作プログラムの名称と、当該タスクの実行状態が実行開始状態であることを表す開始状態情報の受信時刻とを表示する。このため、コントローラ２００が同一の動作プログラムを複数のタスクで実行しても、
ユーザは、それぞれのタスクにおいて動作プログラムが実行開始状態となった時刻を容易に検証できる。
【００８３】
尚、本実施形態に係る機能を実現するための構成を予め備えた端末装置３００として提供できることはもとより、プログラムの適用により、既存の端末装置を本実施形態に係るプログラム生成装置として機能させることもできる。すなわち、上記実施形態で例示した端末装置３００による各機能構成を実現させるための制御プログラムを、既存の端末装置を制御するコンピューター（ＣＰＵなど）が実行できるように適用することで、本実施形態に係る端末装置３００として機能させることができる。
【００８４】
このようなプログラムの配布方法は任意であり、例えば、メモリカード、ＣＤ−ＲＯＭ、又はＤＶＤ−ＲＯＭなどの記録媒体に格納して配布できる他、インターネットなどの通信媒体を介して配布することもできる。尚、本発明のプログラム生成方法は、端末装置３００を用いて実施できる。
【００８５】
また、上述の機能を、ＯＳ（Operating System）が分担して実現する場合又はＯＳとアプリケーションとの協働により実現する場合等には、ＯＳ以外の部分のみを媒体に格納して配布してもよく、また、ダウンロード等しても良い。
【００８６】
また、本発明は、本発明の広義の精神と範囲を逸脱することなく、様々な実施形態及び変形が可能とされるものである。また、上述した実施形態は、本発明を説明するためのものであり、本発明の範囲を限定するものではない。つまり、本発明の範囲は、実施形態ではなく、特許請求の範囲によって示される。そして、特許請求の範囲内及びそれと同等の発明の意義の範囲内で施される様々な変形が、本発明の範囲内とみなされる。
【００８７】
本出願は、２０１０年１１月２６日に出願された日本国特許出願２０１０−２６３５１９号に基づく。本明細書中に日本国特許出願２０１０−２６３５１９号の明細書、特許請求の範囲、図面全体を参照として取り込むものとする。
【産業上の利用可能性】
【００８８】
本発明は、空調器や照明などの機器を制御するコントローラによる動作プログラムの実行状態を計測する計測プログラムを生成するプログラム生成装置において、コントローラが並列的に実行する動作プログラムの実行状態を計測する計測プログラムを生成するプログラム生成装置に適する。
【符号の説明】
【００８９】
１          実行状態計測システム
１００      空気調和装置
２００      リモートコントロール装置（リモコン）
２００ａ    ＣＰＵ
２００ｂ    ＲＯＭ
２００ｃ    ＲＡＭ
２００ｄ    フラッシュメモリ
２００ｆ    通信回路
２００ｇ    ビデオカード
２００ｈ    ＬＣＤ
２００ｉ    操作キー
２０１      信号入力部
２０２      情報記憶部
２０３      実行部
２０４      タイマ
２０５      信号出力部
２０８      通信部
２０９      動作表示部
３００      端末装置
３００ａ    ＣＰＵ
３００ｂ    ＲＯＭ
３００ｃ    ＲＡＭ
３００ｄ    ハードディスク
３００ｅ    メディアコントローラ
３００ｆ    通信回路
３００ｇ    ビデオカード
３００ｈ    ＬＣＤ
３００ｉ    キーボード
３００ｊ    スピーカ
３００ｋ    マウス
３０１      プログラム組立部
３０２      自動生成部
３０２ａ    計測処理追加部
３０２ｂ    情報生成部
３０３      端末記憶部
３０４      信号出力部
３０７      信号入力部
３０８      計測部
３０９      結果表示部
【図１】
2012070254.tif 000003
【図２】
2012070254.tif 000004
【図３】
2012070254.tif 000005
【図４】
2012070254.tif 000006
【図５】
2012070254.tif 000007
【図６】
2012070254.tif 000008
【図７】
2012070254.tif 000009
【図８】
2012070254.tif 000010
【図９】
2012070254.tif 000011
【図１０】
2012070254.tif 000012
【図１１】
2012070254.tif 000013
【図１２】
2012070254.tif 000014
【手続補正書】
【提出日】平成25年4月2日(2013.4.2)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】０００６
【補正方法】変更
【補正の内容】
【０００６】
上記目的を達成するため、本発明のプログラム生成装置は、
機器を制御するコントローラで実行される動作プログラムの配置エリアを特定するプログラムエリア特定情報を生成する情報生成手段と、
前記情報生成手段で生成されたプログラムエリア特定情報と、前記コントローラのプログラムカウンタ値と、に基づいて、前記コントローラで実行された動作プログラムを特定するプログラム特定処理と、前記特定された動作プログラムを識別する識別情報を送信する識別情報送信処理と、を、前記動作プログラムの実行状態を計測する計測プログラムに対して追加する計測処理追加手段と、を備え、
前記識別情報送信処理は、所定レベルの信号値を出力した後に、前記所定レベルの信号値と前記所定レベルの信号値を反転させた信号値とで前記特定された動作プログラムの識別情報を表す信号を出力し、前記識別情報を表す信号の送信が終了すると前記所定レベルを反転させた信号を出力する処理である。
【手続補正２】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
機器を制御するコントローラで実行される動作プログラムの配置エリアを特定するプログラムエリア特定情報を生成する情報生成手段と、
前記情報生成手段で生成されたプログラムエリア特定情報と、前記コントローラのプログラムカウンタ値と、に基づいて、前記コントローラで実行された動作プログラムを特定するプログラム特定処理と、前記特定された動作プログラムを識別する識別情報を送信する識別情報送信処理と、を、前記動作プログラムの実行状態を計測する計測プログラムに対して追加する計測処理追加手段と、を備え、
前記識別情報送信処理は、所定レベルの信号値を出力した後に、前記所定レベルの信号値と前記所定レベルの信号値を反転させた信号値とで前記特定された動作プログラムの識別情報を表す信号を出力し、前記識別情報を表す信号の送信が終了すると前記所定レベルを反転させた信号を出力する処理である、
プログラム生成装置。
【請求項２】
前記識別情報送信処理は、前記特定された動作プログラムの識別情報が変化した場合に、変化後の識別情報と、前記変化後の識別情報で識別される動作プログラムの実行状態が実行開始状態であることを表す開始状態情報と、を、さらに送信する、
請求項１に記載のプログラム生成装置。
【請求項３】
前記情報生成手段は、前記コントローラが前記動作プログラムの実行に用いるスタックエリアを特定するスタックエリア特定情報を、さらに生成し、
前記計測処理追加手段は、前記情報生成手段で生成されたスタックエリア特定情報と、前記コントローラのスタックポインタ値と、に基づいて、前記スタックエリアを用いて前記コントローラで実行されたタスクを特定するタスク特定処理を前記計測プログラムに対して、さらに追加し、
前記コントローラは、動作プログラムを複数のタスクにおいてそれぞれ異なるスタックエリアを用いて並列的に実行し、
前記識別情報送信処理は、前記特定されたタスクの識別情報が変化した場合に、変化後の識別情報と、前記変化後の識別情報で識別されるタスクにおける動作プログラムの実行状態が実行開始状態であることを表す開始状態情報と、を、さらに送信する処理である、
請求項２に記載のプログラム生成装置。
【請求項４】
前記コントローラで実行される前記動作プログラムの識別情報と、前記開始状態情報と、を前記コントローラから受信する通信手段と、
前記通信手段で受信された識別情報で識別される動作プログラムのプログラム名と、前記開始状態情報の受信時刻に基づいて算出された前記動作プログラムの実行時間と、前記動作プログラムの実行時間に課せられる制約時間と、を表示する表示手段と、をさらに備える、
請求項３に記載のプログラム生成装置。
【請求項５】
前記算出された前記動作プログラムの実行時間が、前記動作プログラムの実行時間に課せられる制約時間を超えたか否かを計測する計測手段、をさらに備え、
前記表示手段は、前記計測手段が計測した結果をさらに表示する、
請求項４に記載のプログラム生成装置。
【請求項６】
前記通信手段は、前記コントローラで実行される前記タスクの識別情報と、前記開始状態情報と、を前記コントローラから受信し、
前記表示手段は、前記通信手段で受信された識別情報で識別されるタスクの識別情報と、前記タスクにおいて実行される動作プログラムのプログラム名と、前記開始状態情報の受信時刻と、を対応付けて表示する、
請求項４又は５に記載のプログラム生成装置。
【請求項７】
コンピュータを、
機器を制御するコントローラで実行される動作プログラムの配置エリアを特定するプログラムエリア特定情報を生成する情報生成手段、
前記情報生成手段で生成されたプログラムエリア特定情報と、前記コントローラのプログラムカウンタ値と、に基づいて、前記コントローラで実行された動作プログラムを特定するプログラム特定処理と、前記特定された動作プログラムを識別する識別情報を送信する識別情報送信処理と、を、前記動作プログラムの実行状態を計測する計測プログラムに対して追加する計測処理追加手段、として機能させ、
前記識別情報送信処理は、所定レベルの信号値を出力した後に、前記所定レベルの信号値と前記所定レベルの信号値を反転させた信号値とで前記特定された動作プログラムの識別情報を表す信号を出力し、前記識別情報を表す信号の送信が終了すると前記所定レベルを反転させた信号を出力する処理である、
プログラム生成プログラム。
【請求項８】
機器を制御するコントローラで実行される動作プログラムの配置エリアを特定するプログラムエリア特定情報を生成する情報生成ステップと、
前記情報生成ステップで生成されたプログラムエリア特定情報と、前記コントローラのプログラムカウンタ値と、に基づいて、前記コントローラで実行された動作プログラムを特定するプログラム特定処理と、前記特定された動作プログラムを識別する識別情報を送信する識別情報送信処理と、を、前記動作プログラムの実行状態を計測する計測プログラムに対して追加する計測処理追加ステップと、を有し、
前記識別情報送信処理は、所定レベルの信号値を出力した後に、前記所定レベルの信号値と前記所定レベルの信号値を反転させた信号値とで前記特定された動作プログラムの識別情報を表す信号を出力し、前記識別情報を表す信号の送信が終了すると前記所定レベルを反転させた信号を出力する処理である、
プログラム生成方法。
【国際調査報告】
2012070254.tif 000015
2012070254.tif 000016
2012070254.tif 000017
2012070254.tif 000018