(57)【特許請求の範囲】
【請求項１】
アドレスバス上のアドレスの値から処理内容を特定し、データバス上のデータから処理データを特定するバスデータ解析部と、
前記バスデータ解析部により解析された処理内容と処理データの履歴の少なくとも一部を含む履歴情報を記憶する記憶部と、
外部からのアクセスに応答して、前記記憶部に記憶した履歴情報を提供する履歴情報提供手段と、
を備える動的解析装置であって、
前記バスデータ解析部は、
プログラムで実行されている関数を解析する実行関数解析部と、
実行された関数の遷移を保持し、所定の関数遷移履歴条件に合致する関数が実行されると、その関数を含む一定数の関数の遷移履歴を保存する関数遷移履歴保持部と、
外部装置からのアクセスに応答して、前記関数遷移履歴保持部に記憶されている遷移履歴を外部装置に提供する通信部と、
を備える、ことを特徴とする動的解析装置。
【請求項２】
前記バスデータ解析部は、メモリアクセス用のアドレスバス上に出力されたアドレス値から、どの変数へのアクセスかを特定し、制御信号線上の制御信号から読み込みアクセスか書き込みアクセスかを特定し、前記データバス上のデータの値から変数の値を特定する、
ことを特徴とする請求項１に記載の動的解析装置。
【請求項３】
前記バスデータ解析部は、前記アドレスバス上に出力されたアドレス値から、どの関数が実行されたかを特定する、
ことを特徴とする請求項１に記載の動的解析装置。
【請求項４】
前記アドレスバス及びデータバス上の信号を受信し、これらのバスへの出力を行わない、
ことを特徴とする請求項１乃至３の何れか１項に記載の動的解析装置。
【請求項５】
前記バスデータ解析部は、
プログラムで利用されている変数を監視する変数データ解析部と、
所定の変数遷移履歴条件に合致する変数にアクセスがあると、その変数と所定情報とを含む変数遷移履歴を保存する変数遷移履歴保存部と、を備え、
前記通信部は、外部装置からのアクセスに応答して、変数遷移履歴保存部に保存されている変数遷移履歴を外部装置に提供する、
ことを特徴とする請求項１乃至４の何れか１項に記載の動的解析装置。
【請求項６】
前記バスデータ解析部は、
プログラムで利用されている変数の現在値を読み込む定時データ処理部と、
前記定時データ処理部により読み込まれた変数値の履歴を保存する定時変数履歴保存部と、を備え、
前記通信部は、外部装置からのアクセスに応答して、定時変数履歴保存部に保存されている履歴を外部装置に提供する、
ことを特徴とする請求項１乃至５の何れか１項に記載の動的解析装置。
【請求項７】
前記バスデータ解析部は、
プログラムで利用されているタスクの切り換えを検出するタスク解析部と、
前記タスク解析部により検出されたタスクの切り換えに基づいて、タスク遷移履歴を保存するタスク履歴保存部と、を備え、
前記通信部は、外部装置からのアクセスに応答して、前記タスク履歴保存部に保存されている履歴を外部装置に提供する、
ことを特徴とする請求項１乃至６の何れか１項に記載の動的解析装置。
【請求項８】
前記バスデータ解析部は、
バスの占有率を解析するバス占有率解析部と、
前記バス占有率解析部が解析したバス占有率の履歴を保存するバス占有率保存部と、を備え、
前記通信部は、外部装置からのアクセスに応答して、前記バス占有率保存部に保存されている履歴を外部装置に提供する、
ことを特徴とする請求項１乃至７の何れか１項に記載の動的解析装置。
【請求項９】
請求項１乃至８の何れか１項に記載の動的解析装置と、
前記動的解析装置に保持されている履歴を読み出し、処理する解析ツールと、
を備えることを特徴とする動的解析システム。
【請求項１０】
アドレスバス上を伝送されるアドレスを解析して処理内容を特定する工程と、
データバス上を伝送されるデータを解析して処理データを特定する工程と、
特定した処理内容と処理データの履歴の少なくとも一部を含む履歴情報を求める工程と、
求めた履歴情報を提供する工程と、
を備える動的解析方法であって、
前記アドレスを解析して処理内容を特定する工程と前記データを解析して処理データを特定する工程とは、
プログラムで実行されている関数を解析する工程と、
実行された関数の遷移を保持し、所定の関数遷移履歴条件に合致する関数が実行されると、その関数を含む一定数の関数の遷移履歴情報を保存する工程と、
保存された遷移履歴情報を提供する工程と、
を備える、
ことを特徴とする動的解析方法。
【請求項１１】
コンピュータに、
アドレスバス上を伝送されるアドレスを解析して処理内容を特定する動作、
データバス上を伝送されるデータを解析して処理データを特定する動作、
特定した処理内容と処理データの履歴の少なくとも一部を含む履歴情報を求める動作、
求めた履歴情報を提供する動作、
を実行させるプログラムであって、
前記アドレスを解析して処理内容を特定する動作と前記データを解析して処理データを特定する動作において、
プログラムで実行されている関数を解析する動作、
実行された関数の遷移を保持し、所定の関数遷移履歴条件に合致する関数が実行されると、その関数を含む一定数の関数の遷移履歴情報を保存する動作、
外部装置からのアクセスに応答して、記憶されている遷移履歴を外部装置に提供する動作、
を前記コンピュータに実行させる、
ことを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、制御装置等の動作を動的に解析する動的解析装置、動作解析システム、動作解析方法、コンピュータに動的解析を実行させるコンピュータプログラムに関する。
【背景技術】
【０００２】
プログラムの動作試験や不具合解析において、特定のメモリへのアクセスや、関数遷移の解析を行う場合、一般には専用のＩＣＥ（Ｉｎ  Ｃｉｒｃｕｉｔ  Ｅｍｕｌａｔｏｒ）をコンピュータに接続して解析する。もしくは、プログラムのソースコード内にデバッグプリント文を埋め込み、データ内容を出力して解析している。
【０００３】
ＩＣＥはＣＰＵの動作を専用の機器で模擬するもので、一行単位でプログラムを実行するステップ実行機能、実行途中での一時停止機能（Ｂｒｅａｋ）、指定メモリ内容の表示機能などが備わっている。ＩＣＥには、基板のＣＰＵ部分をＩＣソケットに変更してＣＰＵ機能を完全にＩＣＥに置換えるフルＩＣＥタイプ、ＪＴＡＧ通信でＣＰＵとアクセスして実行状態を制御するＪＴＡＧ ＩＣＥタイプがある。
いずれのタイプのＩＣＥも、利用時には、基板上に専用のＩＣソケットやＪＴＡＧコネクタに接続する必要がある。ＩＣＥはプログラム作成時に用いられることがほとんどであるため、最終的な量産品の基板からＩＣソケットやＪＴＡＧコネクタは削除されることがほとんどである。
【０００４】
デバッグプリントはプログラム上に試験用のコードを埋め込み、特定データの値などを外部に出力する手法であり、ＩＣＥのように外付けの機器は不要である。しかしながら、デバッグプリントを入れる位置や量などによって実動作時の性能や、実行タイミングなどが実際の量産品とは異なることとなる。
【０００５】
試験時と運用時とで動作タイミングに差が発生しない方式が特許文献１に開示されている。この方式は、バス上のアドレス信号と制御信号とを観測し、予め設定されたデータ記憶回路の特定アドレスをアクセスしたことを検出したときに起動要求信号を出力するアクセス判定回路と、起動要求信号に応答して、特定アドレスのデータをトレースデータセーブエリアに記憶し常に最新のデータから一定回数以前までのデータを記憶するよう制御する回路とを備え、運用時に使用する通常プログラムを使用してデバッグする方式が提案されている。この方式によれば、中央制御回路の処理能力が生かされ、デバッグ時と運用時とで動作タイミングに差が発生しない。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平３−２１１６３４号公報（第１図）
【発明の概要】
【発明が解決しようとする課題】
【０００７】
上記特許文献１の技術では、ＣＰＵが特定のメモリアドレスにアクセスした場合にメモリ値を保存しておく方式であるため、メモリ値の推移は解析できるが、実行された処理内容の推移、例えば、どの処理関数が特定メモリにアクセスしたのかは解析できないという課題が生じていた。
【０００８】
また、特許文献１の技術では、メモリ値しか保存できないため、例外エラーなどの発生推移を調査したい場合などは、調査する手段が無かった。
【０００９】
本発明は、上記課題を解決するためになされたもので、より簡便に制御装置等の動作を解析可能とすることを目的とする。
また、本発明は、より正確に制御装置等の処理動作を解析可能とすることを目的とする。
【課題を解決するための手段】
【００１０】
上記目的を達成するため、この発明の動的解析装置は、
アドレスバス上のアドレスの値から処理内容を特定し、データバス上のデータから処理データを特定するバスデータ解析部と、
前記バスデータ解析部により解析された処理内容と処理データの履歴の少なくとも一部を含む履歴情報を記憶する記憶部と、
外部からのアクセスに応答して、前記記憶部に記憶した履歴情報を提供する履歴情報提供手段と、
を備える動的解析装置であって、
前記バスデータ解析部は、
プログラムで実行されている関数を解析する実行関数解析部と、
実行された関数の遷移を保持し、所定の関数遷移履歴条件に合致する関数が実行されると、その関数を含む一定数の関数の遷移履歴を保存する関数遷移履歴保持部と、
外部装置からのアクセスに応答して、前記関数遷移履歴保持部に記憶されている遷移履歴を外部装置に提供する通信部と、
を備えるものである。
【発明の効果】
【００１１】
この発明によれば、簡易に動作解析が可能となる。
【図面の簡単な説明】
【００１２】
【図１】本発明の実施の形態１に係る動的解析システムの構成図である。
【図２】図１に示す動的解析装置の物理構成を示すブロック図である。
【図３】実施の形態１に係る動的解析装置の機能的構成を示す構成図である。
【図４】（ａ）と（ｂ）とは、図３に示すデータ管理部に格納される関数アドレス範囲と変数アドレス値とを示す図である。
【図５】（ａ）〜（ｃ）は、図３に示すデータ管理部に格納される関数遷移履歴と、変数遷移履歴と、変数定時履歴の例を示す図である。
【図６】（ａ）〜（ｃ）は、図３に示すデータ管理部に格納される関数遷移履歴条件と、変数遷移履歴条件と、定時履歴条件の例を示す図である。
【図７】実施の形態１に係る動的解析ツールの構成図である。
【図８】動的解析システムの使用場面（環境）を説明するための図である。
【図９】メモリアクセスタイミングチャートである。
【図１０】実施の形態１に係るバスデータ監視部の処理を示すフローチャートである。
【図１１】実施の形態１に係るバスデータ解析部の処理を示すフローチャートである。
【図１２】実施の形態１に係る定時データ処理部の処理をフローチャートで示した図である。
【図１３】本発明の実施の形態２に係る動的解析装置の機能構成図である。
【図１４】タスク遷移タイミングを説明するための図である。
【図１５】実施の形態２に係るタスク解析部の処理のフローチャートである。
【図１６】タスクの変化とタスク変化のタイミングとの履歴を示す図である。
【図１７】本発明の実施の形態３に係る動的解析装置の構成図である。
【図１８】バス占有時間を説明するためのタイミングチャートである。
【図１９】実施の形態３に係るバス占有率解析部の処理のフローチャートである。
【発明を実施するための形態】
【００１３】
実施の形態１．
以下、この発明の実施の形態１に係る動的解析システムを備える設備制御システムについて説明する。
【００１４】
図１に示すように、この実施の形態に係る設備制御システム１は、設備制御装置２と動的解析ツール７とを備える。
【００１５】
設備制御装置２は、空調機、電力制御装置等の任意の設備機器の制御装置として機能するものであり、ハードウエア的には、プログラムを実行する中央演算処理装置であるＣＰＵ３（Ｃｅｎｔｒａｌ Ｐｒｏｃｅｓｓｉｎｇ Ｕｎｉｔ）、プログラムを格納するための不揮発性のメモリであるＲＯＭ４（Ｒｅａｄ Ｏｎｌｙ Ｍｅｍｏｒｙ）、変数などを格納する揮発性のメモリであるＲＡＭ５（Ｒａｎｄｏｍ Ａｃｃｅｓｓ Ｍｅｍｏｒｙ）、バス上を流れるデータの動的解析を実施する動的解析装置６を備える。ＣＰＵ３、ＲＯＭ４、ＲＡＭ５、動的解析装置６は、それぞれアドレスバス１１、データバス１２、制御信号線１３により相互に接続されている。
【００１６】
設備制御装置２は、動的解析内容の指示、動的解析結果の表示などを行う動的解析ツール７と、互いに通信が可能であるように通信線１４で接続されている。
【００１７】
ＣＰＵ３，ＲＯＭ４，ＲＡＭ５は、任意の設備装置の制御に使用される。
一方、動的解析装置６は、ＣＰＵ３の動作を動的に解析するために使用されるものであり、ハードウエア的には、図２に示すように、プロセッサ１６１と、受信回路１６２と、記憶部１６３と、通信制御装置１６４から構成される。
プロセッサ１６１は、ＣＰＵまたはＦＰＧＡ（Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ Ｇａｔｅ Ａｒｒａｙ）などの中央演算処理部から構成され、記憶部１６３に記憶された動作プログラムを実行することにより、図３を参照して後述する各種機能を実現する。
受信回路１６２は、一方向性バッファなどから構成され、データバス１１、データバス１２、制御信号線１３上の信号をプロセッサ１６１に伝達し、一方、プロセッサ１６１が信号を仮に出力しても、データバス１１、データバス１２、制御信号線１３上には出力しない回路である。
記憶部１６３は、ＲＯＭ、フラッシュメモリ、ＲＡＭ、ハードディスク等から構成され、プロセッサ１６１の動作プログラムを記憶し、プロセッサのワークメモリとして機能し、さらに、種々のデータを記憶する。
通信制御装置１６４は、この動的解析装置６と動的解析ツール７との間の相互の通信を制御する。
動的解析装置６は、上記構成により、制御信号線１３上にＣＰＵ３により出力され、読み込み、書き込みのトリガーとなる制御信号と、アドレスバス１１上で出力されるアドレス値と、データバス１２上に出力されるデータとを監視することにより、通信データ内容を解析する。動的解析装置６は、メモリ内蔵型のワンチップマイコンとしても良いし、ＣＰＵ等が配置された基板とは別基板上にマルチチップ又はディスクリートで構成し、バス１１、１２、制御信号線１３に接続することも可能である。
【００１８】
動的解析装置６は、機能的には、図３に示すように、バスデータ監視部２０と、バスデータ解析部３０と、データ管理部４０と、通信制御部６０と、通信インタフェース７０とを備える。
【００１９】
バスデータ監視部２０は、アドレスバス１１、データバス１２、制御信号線１３に接続され、アドレスバス監視部２１、データバス監視部２２、制御信号監視部２３を備える。
アドレスバス監視部２１は、アドレスバス１１上を伝送されるアドレスデータを監視する。データバス監視部２２は、データバス１２上を伝送されるデータを監視する。制御信号監視部２３は、制御信号線１３上を伝送される制御信号を監視する。
【００２０】
データバス監視部２０は、制御信号監視部２３でバスデータ（アドレスデータとデータ）の確定タイミングを制御信号から判断し、バスデータ確定時にアドレスバス監視部２１で取得したアドレス値と、データバス監視部２２で取得したデータ値と、制御信号監視部２３で取得した書込み／読込み区分とを、データバス解析部２１に通知する。
【００２１】
バスデータ解析部３０は、バスデータ監視部２０とデータ管理部４０に接続され、実行関数解析部３１、変数データ保管部３２、監視データ保管部３３を備える。
実行関数解析部３１は、バスデータ監視部２０から通知されたアドレス値を元に、ＣＰＵ３が現在実行している関数を解析（特定）する。即ち、ＣＰＵ３がアドレスを出力して読み込んだ位置に格納されている関数を特定する。
変数データ解析部３２は、ＣＰＵ３によってアクセスされた変数を解析（特定）する。即ち、ＣＰＵ３がアドレスを出力して読み込んだ位置に格納されている変数を特定する。
監視データ保管部３３は、解析したデータを、監視データ４２として管理データ保管部４０に保管する。
定時データ処理部３４は、定期的に、各変数の値を解析（特定）し、監視データ４２として管理データ保管部４０に保管する。
【００２２】
データ管理部４０は、バスデータ解析部３０と通信制御部６０に接続され、アドレスマップ４１、監視データ４２、制御データ４３を備え、各種データの保管を行う。
アドレスマップ４１は、ＲＯＭ４とＲＡＭ５のアドレス空間のうち、関数が格納されている領域範囲を示すアドレス値である関数アドレス範囲４４と、変数が格納されている領域の範囲を示すアドレス値である変数アドレス値４５とを含む。
具体的には、図４に示すように、関数アドレス範囲４４は、アドレス範囲とそのアドレス領域に格納されている関数Ｆ１、Ｆ２．．．とを対応付るデータを記憶し、変数アドレス値４５は、アドレスとそこに格納されている変数Ａ、Ｂ．．．とを対応付けるデータを記憶している。
アドレスマップ４１としては、ＣＰＵ３が実行するプログラムをコンパイルする際に自動生成されるアドレスマップを利用することが可能である。
【００２３】
図３に示す監視データ４２には各変数の現在の値である変数現在値４６、ＣＰＵ３により実行された関数の遷移履歴が記録された関数遷移履歴４７、ＣＰＵ３によりアクセスされた変数と値の遷移履歴と変数変化時の呼び出し元関数を示す情報を含む変数遷移履歴４８、定時的な変数値と収集時刻が記録された変数定時履歴４９が含まれる。
より具体的には、関数遷移履歴４７には、図５（ａ）に示すように、ＣＰＵ３が実行している一連の関数のうち、後述する関数遷移履歴条件５０に合致した関数と、予め定められた深さ（個数）の前方（先行して実行された）関数と、後方（後続して実行された）関数とを含む。
変数遷移履歴４８には、図５（ｂ）に示すように、ＣＰＵ３が処理した一連の変数のうち、後述する変数遷移履歴条件５１に合致した変数と、予め定められた深さ（個数）の前方（先行して処理された）変数について、変数、その値、処理日時、アクセス元関数の組を記憶する。例えば、変数遷移履歴４８には、各変数の値の変化及びどの関数から変数を書き換えられたかを、履歴するデータを格納する。なお、変数がどのような順番で書き換えられたかを示すようなデータを保存してもよい。
変数定時履歴４９は、図５（ｃ）に示すように、各変数の値と収集時刻とを含む。
【００２４】
図３に示す制御データ４３には、関数遷移の履歴の記憶を開始する条件を記載した関数遷移履歴条件５０、変数遷移の履歴の記録を開始する条件を記載した変数遷移履歴条件５１、変数定時履歴の記録を開始する条件を記載した定時履歴条件５２が含まれる。
【００２５】
具体的には、関数遷移履歴条件５０は、図６（ａ）に示すように、１）関数遷移の履歴の記録を開始する条件、例えば、特定の関数を検出したこと、ある関数から特定の関数への変化を検出したこと、等の任意の条件と、２）条件に合致した関数の前方（先に実行された）の関数のうち履歴として抽出する個数（前方深度）と条件に合致する関数に後続する（後に実行された）関数のうち履歴として抽出する個数（後方深度）とを対応付けるデータを記憶している。
また、変数遷移履歴条件５２は、図６（ｂ）に示すように、１）変数遷移の履歴の記録を開始する条件、例えば、変数を検出したこと、ある変数が特定の条件を満たす状態になったこと、等の任意の条件と、２）条件に合致した変数の前方にアクセスされた変数のうち履歴として抽出する個数（前方深度）を対応付けるデータを記憶している。
また、定時履歴条件５２は、図６（ｃ）に示すように、変数を記録するための一定の周期を記憶する。
【００２６】
図３に示す通信制御部６０は、データ管理部４０と通信インタフェース７０に接続され、指定されたアドレスマップをデータ管理部４０に保管するアドレスマップ保管部６１と、監視データをデータ管理部４０から読み出す監視データ読出し部６２と、指定された制御データをデータ管理部４０に保管する制御データ保管部６３とを備え、動的解析ツール７との各種データの送受信を行う。
【００２７】
通信インタフェース７０は、通信線１４のインタフェースである。この通信インタフェース７０を介して動的解析ツール７とのデータの送受信が行われる。
【００２８】
図１に示す動的解析ツール７は、動的解析装置６と通信を行って解析結果を表示する装置である。動的解析ツール７は、図７に示すように、液晶表示装置、ＥＬ表示装置等の表示装置８１と、キーボード、マウスなどの入力装置、表示内容や入力内容を制御する制御部８３と、通信を制御する通信制御部８４と、動的解析装置６から取得したデータ、および加工したデータを保管するデータ管理部８５と、動的解析装置６とのインタフェースである通信インタフェース８６を備えている。動的解析ツールには汎用のパソコンを用いても良いし、専用のハードウエアを用いても良い。
【００２９】
上記構成のうち、設備制御装置２は、例えば、図８（ａ）に示すように、任意の稼働状態の設備機器１００に収容される。この場合、ＣＰＵ３、ＲＯＭ４、ＲＡＭ５は、その設備機器１００の通常時の制御装置（コントローラ）として機能する。動的解析装置６は、ＣＰＵ３の処理を解析する。動的解析ツール７は、例えば、故障時やメンテナンス時に、適宜、動的解析装置６に、通信線１４を介して適宜接続される。動的解析ツール７の設置位置は、現場でもリモートでもよい。リモートの場合、通信線１４は、専用線でも、一般回線でも、インターネット等の通信ネットワークを含んでもよい。同様の構成を、設備装置１００の開発段階で構成してもよい。
【００３０】
また、開発段階等で、設備制御装置２を、例えば、図８（ｂ）に示すように、設備機器１００に接続して使用することも可能である。この場合、設備制御装置２と動的解析ツール７の設置位置は、現場でもリモートでもよい。
【００３１】
次に、上記構成を有する設備制御システム１の動作を説明する。
設備制御装置２のＣＰＵ３は、ＲＯＭ４に格納されたプログラムを実行することにより、設備機器１００を制御するための動作を実行する。
ＣＰＵ３は、ＲＯＭ４に格納されている制御プログラムを実行し、設備機器１００内の各部を制御することにより、設備機器１００を運転する。
動的解析装置６は、ＣＰＵ３の動作と並行して、各種解析動作を動的に行う。
以下、動的解析装置６の動作を、機能部分毎に説明する。
まず、バス上を流れるデータを確定するバスデータ監視部２０が行う処理について説明する。
【００３２】
一般に、ＣＰＵがメモリにアクセスする際は、複数の制御信号の組み合わせによって読み込み／書き込みの区分、アドレスバス、データバスのデータ確定タイミングが判別可能である。
例えば、図９に例示するように、アドレスバス１１上にアクセス位置のアドレスが出力され、続いて、制御信号線１３上の制御信号ＡとＢ（例えば、行ストローブ信号と列ストローブ信号）が読み出し又は書き込みを示す状態に順次切り替えられ、その後、データバス１２上のデータが確定する。従って、例えば、制御信号Ａが出力されてからバスデータが確定するまでの所定の遅延時間Ｄ１又は制御信号Ｂが出力されてからバスデータが確定するまでの所定の遅延時間Ｄ２を予め測定しておき、制御信号Ａ又はＢが出力されてからの経過時間を測定し、制御信号Ａが出力されてから時間Ｄ１又は制御信号Ｂが出力されてから時間Ｄ２を測定したタイミングをデータの確定時間として特定することが可能である。
バス監視部２０は、例えば、このようにしてバスデータを監視する。
【００３３】
次に、動的解析装置６のうち、バスデータ監視部２０の処理動作を図１０のフローチャートを参照して説明する。
バスデータ監視部２０は、主電源がオンされると、図１０に示す動作を開始する。
制御信号監視部２３は、設備装置１００の操作パネルのオン・オフスイッチの操作によるオン・オフがオンであるか、オフであるかを判別し（ステップＳ０）、オフでないと判別した場合（ステップＳ０；Ｎｏ）、ＣＰＵ３がアクセス対象メモリ（図１では、ＲＯＭ４又はＲＡＭ５）に制御線１３を介して出力する制御信号を監視する。制御信号監視部２３は、対象メモリへの制御信号を監視し（ステップＳ１ａ）、制御信号線１３上の制御信号が読み出しまたは書き込みの状態に変化したか否かを判別する（ステップＳ１ｂ）。
制御信号に変化が無い或いは読み出し又は書き込み状態以外の状態への変化であると判別した場合（ステップＳ１ｂ：Ｎｏ）、ステップＳ０にリターンする。
【００３４】
制御信号が読み出しまたは書き込みの状態に変化したと検出した場合、アドレスバス監視部２１は、アドレスバス１１上に出されているアドレス信号により指定されているアドレス値を保持する（ステップＳ１ｃ）。
【００３５】
続いてデータバス１２上のデータが確定するまで待機し（ステップＳ１ｄ）、確定したらデータバス上のデータ信号により表されるデータ値を保持する（ステップＳ１ｅ）。
【００３６】
最後に制御信号の値（読み込み／書き込み）およびアドレス値、データ値をバスデータ解析部３０に通知する（ステップＳ１ｆ）。その後、ステップＳ０にリターンし、信号線の監視状態に戻る。なお、ステップＳ０で電源がオフであると判別された際（ステップＳ０；Ｙｅｓ）、今回の処理を終了する。
【００３７】
次に、バスデータ解析部３０において、バスデータ監視部２０から通知されたデータを解析する処理について、図１１を参照して説明する。
バスデータ解析部３０は、主電源が投入されている期間、バスデータ監視部２０からデータが供給される度に、図１１に示す処理を開始する。
まず、バスデータ解析部３０はバスデータ監視部２０から通知されたアドレス値と、データ管理部４０内のアドレスマップ４１内に格納されている関数アドレス範囲４４及び変数アドレス値４５とを比較し、関数を実行しているか、変数値にアクセスしているか、その他の処理を行っているかを判別する（ステップＳ２ａ）。
【００３８】
関数アドレス範囲のアドレス値であると判別した場合（ステップＳ２ａ：関数アドレス範囲）、実行関数解析部３１にて処理が行われる。実行関数解析部３１は、アドレスで指定された領域に記憶されていた（解析した）関数を特定し、その関数（アクセスされた位置に格納されている関数）が前回の関数と同一であるか否かを判別し（ステップＳ２ｂ）、同一の関数であると判別した場合（ステップＳ２ｂ；Ｙｅｓ）は、関数の遷移は行われていないため、データ解析処理を終了する。
【００３９】
解析した関数（アクセスされた位置に格納されている関数）が前回の（現在実行中）の関数と異なる、即ち、実行関数が変化していると判別した場合（ステップＳ２ｂ；Ｎｏ）、関数名に対応付けられた関数ＩＤを、内部に配置されている一時バッファに追加して関数の遷移履歴を保持する（ステップＳ２ｃ）。
【００４０】
次に、今回判別した実行関数の変化が、後続するステップＳ２ｆの処理により関数遷移履歴条件５０と一致する指定された関数の後方（後続）の遷移に該当するかどうかを判断する（ステップＳ２ｄ）。関数変化が履歴済の関数変化に後続するものであると判別した場合（ステップＳ２ｄ；Ｙｅｓ）、監視データ保管部３３を介してデータ管理部４０内の関数遷移履歴４７に関数ＩＤを追加して、関数遷移履歴４７を更新する（ステップＳ２ｅ）。
【００４１】
一方、関数変化が履歴済の関数変化に後続するものではなく、遷移後の新たな関数であると判別した場合（ステップＳ２ｄ；Ｎｏ）、遷移した関数が関数遷移履歴条件５０に一致するか否かを判断する（ステップＳ２ｆ）。一致すると判別した場合（ステップＳ２ｆ；Ｙｅｓ）、一時バッファに記憶している一連の関数のうち、関数遷移履歴条件５０で指定された深度（個数）分だけ、監視データ保管部３３を介してデータ管理部４０内の関数遷移履歴４７に保存する（ステップＳ２ｇ）。
【００４２】
例えば、一次バッファに一連の関数の履歴「．．．Ｆ７，Ｆ４，Ｆ２，Ｆ３」が記憶されているとする。図５（ａ）に示す関数遷移履歴条件５２によれば、関数Ｆ３が関数履歴条件５０が指定する関数に合致する。さらに、指定された深度（前方）は「３」である。この場合、図６（ａ）に示すように、条件に合致する関数として「Ｆ３」、深度（前方）で指定される関数として「Ｆ７，Ｆ４，Ｆ２」のＩＤが関数遷移履歴４７に格納される。なお、その後、実行される関数が変化すると、ステップＳ２ｅで、関数変化が履歴済の関数変化に後続するものであると判別され（ステップＳ２ｄ；Ｙｅｓ）、監視データ保管部３３を介してデータ管理部４０内の関数遷移履歴４７に関数ＩＤが追加される（ステップＳ２ｅ）。
また、例えば、一次バッファに一連の関数の履歴「．．．Ｆ１２，Ｆ１，Ｆ２，Ｆ９，Ｆ４，Ｆ５」が記憶されているとする。図５（ａ）に示す関数遷移履歴条件５２によれば、関数Ｆ４からＦ５への変化が関数履歴条件５０が指定する関数に合致する。さらに、指定された深度（前方）は「４」である。この場合、図６（ａ）に示すように、条件に合致する関数として「Ｆ４，Ｆ５」、深度（前方）で指定される関数として「Ｆ１２，Ｆ１，Ｆ２、Ｆ９」のＩＤが関数遷移履歴４７に格納される。
【００４３】
一方、ステップＳ２ｆで、関数履歴条件に一致しないと判別した場合（ステップＳ２ｆ；Ｎｏ）、今回の処理を終了する。
【００４４】
以上の動作を繰り返すことにより、関数遷移履歴条件として指定した関数とその前後に実行された関数の遷移の履歴を保存することが可能となる。
【００４５】
一方、ステップＳ２ａの判別の結果、アドレスバス１１上のアドレスが変数を記憶している領域のアドレス値であると判別された場合は（ステップＳ２ａ；変数アドレス）、変数データ解析部３２にて処理が行われる。
変数データ解析部３２は、まず、変数にアクセスした日時を保持する（ステップＳ２ｌ）。
【００４６】
次に、バスデータ監視部２０から通知された制御信号区分を判別し、書き込み処理か、読み込み処理かを判断し（ステップＳ２ｍ）、書き込み処理であった場合は、書き込み後の変数値を保持し、監視データ保管部３３を介してデータ管理部４０内の変数現在値４６に保存する（ステップＳ２ｎ）。
【００４７】
一方、書き込み処理ではない、即ち、読み出しアクセスであると判別した場合（ステップＳ２ｍ；Ｎｏ）、ステップＳ２ｎをスキップする。
ステップＳ２ｎの実行後又はステップＳ２ｍでＮｏと判別した場合、アクセスされた変数が、変数遷移履歴条件５１と一致するかを判断する（ステップＳ２ｏ）。
一致すると判別した場合（ステップＳ２ｏ；Ｙｅｓ）、実行関数解析部３１に保持されている履歴のうち、変数遷移履歴条件５１が指定する深度（個数）分の履歴、即ち、変数と、変数値と、アクセス日時と、アクセス元の関数とを、監視データ保管部３３を介してデータ管理部４０内の変数遷移履歴４８に保存し（ステップＳ２ｐ）、処理を終了する。
【００４８】
例えば、一次バッファに一連の変数とアクセス元の関数の履歴「．．．， （変数Ｇ，値３，アクセス日時2011/10/24 14:15:50，アクセス元関数Ｆ１１），．．．， （変数Ｇ，値６，アクセス日時2011/10/24 14:16:59，Ｆ１２），．．．， （変数Ｇ，値−１，アクセス日時2011/10/24 14:17:11，アクセス元関数Ｆ１３），．．．， （変数Ｇ，値＋１，アクセス日時2011/10/24 14:23:33，アクセス元関数Ｆ１４）」が記憶されているとする。
図６（ｂ）に示す変数遷移履歴条件５１によれば、関数Ｆ１４による変数Ｇの負の値（−１）から正の値（＋１）への更新は、変数遷移履歴条件５１に合致する。この場合には、変数遷移履歴条件５１に合致する変数の情報（変数Ｇ，値＋１，アクセス日時2011/10/24 14:23:33，アクセス元関数Ｆ１４）」と、記憶されている履歴のうち、注目している変数Ｇの履歴であって変数前方深度で特定される前方２つの情報（変数Ｇ，値６，アクセス日時2011/10/24 14:16:59，アクセス元関数Ｆ１２），（変数Ｇ，値−１，アクセス日時2011/10/24 14:17:11，アクセス元関数Ｆ１３）が変数遷移履歴４８として記録される。
同様に、例えば、変数Ｄの値が２に変化したとすると、その更新は、変数遷移履歴条件５１に合致する。この場合には、変数遷移履歴条件５１に合致する変数の情報例えば、（変数Ｄ，値＋２，アクセス日時2011/10/24 18:19:47，アクセス元関数Ｆ５）」と、記憶されている履歴のうち、注目している変数Ｄの履歴であって変数前方深度で特定される前方１つの情報（変数Ｄ，値３，アクセス日時2011/10/24 18:19:36，アクセス元関数Ｆ３）が変数遷移履歴４８として記録される。
これらの記録により、注目している変数の変化とどの関数が変数を書き換えたかという情報を履歴できる。
【００４９】
一方、変数遷移履歴条件に一致しないと判別した場合（ステップＳ２ｍ；Ｎ）、処理を終了する。
【００５０】
以上の動作を繰り返すことにより、変数遷移条件として指定した変数へのアクセス時のアクセス元関数の遷移、変数の変更前後の値を、アクセス日時も含めて保存することが可能となる。
【００５１】
また、変数の値が変化するたびに現在値を更新することにより、常に最新の変数値を保持することが可能となる。
【００５２】
一方、定時データ処理部３４は、主電源が投入されている間、図１２に示す処理を実行し、制御データ４３内に格納されている定時履歴条件５２で指定された時間間隔に達したかどうかを判断し（ステップＳ３ａ）、履歴する時間であれば指定変数値の変数現在値４６を読出し（ステップＳ３ｂ）、監視データ保管部３３を介してデータ管理部４０内の関数遷移履歴４７に保存する（ステップＳ３ｃ）。
【００５３】
以上の動作を繰り返すことにより、定時履歴条件として指定した変数の、一定間隔のデータを保存することが可能となる。
【００５４】
こうして、データ管理部４０には、予め条件設定されている注目すべき実行関数の変化が起こった際に、その前後の関数変化の履歴が記録され、予め条件設定されている注目すべき変数の変化が起こった際に、それに至る変数の変化の履歴が記録され、蓄積される。さらに、定期的な履歴が蓄積される。
【００５５】
一方、動的解析ツール７は、オペレータにより適宜操作され、データ管理部４０に蓄積されている履歴データを読み出し、解析する。
即ち、操作者が、動的解析ツール７の入力装置８２から各種データの読出し要求を行うと、制御部８３が通信制御部８４、通信インタフェース８６を介して、データの送信要求を動的解析装置６に送信する。
動的解析装置６は通信制御部６０が通信インタフェース７０を介して動的解析ツールからの要求を受信し、監視データ読出し部６２がデータ管理部４０の監視データ４２に保管された各種データを読み出し、通信インタフェース７０を介して、動的解析ツール７に応答する。
動的解析ツール７は、応答を通信インタフェース８６を介して受信すると、通信制御部８４は受信したデータをデータ管理部８５に保存し、制御部８３がデータを取得して表示装置８１に表示する。
【００５６】
各種履歴条件が格納された制御データ４３やアドレスマップ４２は、動的解析ツール７から動的解析装置６に対して送信され、通信制御部６０によってデータ管理部４０に保存される。
【００５７】
なお、制御データ４３やアドレスマップ４２は、動的解析ツールで送信するのではなく、予め書き込んだ状態で出荷しても良い。
【００５８】
以上詳細に説明したように、この実施の形態１に係る動的解析装置および動的解析システムによれば、関数や変数が格納されているメモリのアドレス値一覧を保持することにより、ＣＰＵ３の処理内容の履歴を記録することができ、それにより、処理内容、例えば、どの処理関数がどの変数を変更したか、を解析することが可能となる。
【００５９】
また、この実施の形態１に係る動的解析装置および動的解析システムによれば、ＣＰＵ３の処理に用いるアドレスバス１１、データバス１２、制御信号線１３に対して、動的解析装置６からデータを出力することは無い。このため、ＣＰＵ３の処理を一切妨げることなく、動的解析を行うことが可能となる。
【００６０】
また、この実施の形態１に係る動的解析装置および動的解析システムによれば、動的解析を行うためのプログラム変更や、ＩＣＥ接続用の特殊コネクタなどの必要が無いため、不具合が発生している現地の制御機器をそのまま利用して不具合解析を行うことが可能となる。
【００６１】
また、この実施の形態１に係る動的解析装置６および動的解析システム１によれば、現地で発生している不具合条件を分析し、試験室で不具合の再現環境を構築する必要がないため、不具合解決に要する時間を削減することが可能となる。
【００６２】
また、この実施の形態１に係る動的解析装置および動的解析システムによれば、プログラムのコンパイル時に自動生成されるメモリマップを利用して関数遷移、変数遷移を解析することができるため、アドレス値との関連付けファイルを手動で作成する必要が無い。
【００６３】
なお、本実施の形態では、利用されるメモリに対応した読出しシーケンスを実装することとしたが、メモリが変更されても対応できるよう、デバイスコードをメモリから読み出して自動的にメモリに合わせたデータバス確定処理を実装しても良い。
【００６４】
また、本実施の形態では、同一のアドレスバス１１、データバス１２にＲＯＭ４、ＲＡＭ５を接続するようにしたが、必ずしもこの構成である必要は無く、ＣＰＵ３に専用のバスを用いて接続されるＲＡＭを用いても良い。この場合は、動的解析装置６がＲＯＭ用のバス、ＲＡＭ用のバスの両方を監視する構成となる。
【００６５】
実施の形態２．
上記実施の形態においては、監視の対象の処理内容は関数と変数とそのデータであったが、処理過程で生成される任意の処理内容ものを監視対象とすることが可能である。
以下、一例として、処理内容としてタスクをさらに管理する実施の形態２について説明する。
【００６６】
図１３は、この発明の実施の形態２に係る動的解析装置６の構成を示す。
図１３に示すように、この実施の形態に係る動的解析装置６は、実施の形態１の動的解析装置６に加え、タスク解析部３５およびタスク遷移履歴５３を備える。
【００６７】
次に、タスク解析部３５において、実行タスクを解析する処理について、図１４と図１５を参照して説明する。
【００６８】
図１４はタスクの切換状態を示した図である。優先度の低い状態のタスクが実行中の場合でも優先度の高いタスクが起動すると、優先度の低いタスクは停止し、優先度の高いタスクが実行されることを示している。本実施形態の動的解析装置６は、特徴的なタスクの切り替えの履歴を取得することが可能である。
【００６９】
図１５は、タスク解析部３５の処理をフローチャートで示した図であり、タスク解析部３５は、電源がオンの間、バスデータ監視部２０で監視したバスデータを基に、起動したタスクを保持する（ステップＳ４ａ）。
【００７０】
タスクの切り換えが発生したか否かを判別し（ステップＳ４ｂ）、切り替えが発生した場合（ステップＳ４ｂ；Ｙｅｓ）、切り換え後のタスクを、日時等と共にタスク遷移履歴５３に保存する（ステップＳ４ｃ）。なお、タスクの切り換えが発生していないと判別した場合（ステップＳ４ｂ；Ｎｏ）、ステップＳ４ｂにリターンし、処理を繰り返す。
【００７１】
ここで保存したタスク遷移履歴５３は、実施の形態１と同様、動的解析ツール７によって読み出し、図１６のようなタスクの切り換えタイミングの表示が可能である。
【００７２】
なお、タスクの切り換えは、ＯＳ（オペレーションシステム）のタスク切り換え関数が実行されたことを検知して切り換えを判断しても良いし、タスクに登録した関数が実行された段階で切り換えを判断しても良い。
また、タスク遷移履歴条件を設定し、条件に合致するタスク遷移が起こったときにのみ、タスク遷移の履歴を取るようにしてもよい。
【００７３】
以上詳細に説明したように、この実施の形態２に係る動的解析装置および動的解析システムによれば、タスクの切換遷移の履歴を保持することにより、タスクの占有率、実行タイミングが容易に解析可能となる。
【００７４】
実施の形態３．
前述のように、解析対象の処理内容は任意であり、例えば、バス占有率を処理内容に含めることも可能である。バス占有率を解析対象の処理内容の１つとする実施の形態３について、以下、説明する。
【００７５】
図１７は、この発明の実施の形態３に係る動的解析装置６の構成が示されている。
図１７に示すように、この実施の形態に係る動的解析装置６は、実施の形態１の動的解析装置６に加え、バス占有率解析部３６およびバス占有履歴５４を備えたものである。
【００７６】
次に、バス占有率解析部３６において、バス占有率を解析する場合の処理について、図１８と図１９を用いて説明する。
【００７７】
図１８はバスの占有状態を示した図である。ＣＰＵ３は、メモリ（ＲＯＭ３，ＲＡＭ４）にアクセスを開始するとき、アドレスバス１１上にアドレスを出力し、制御信号（チップイネーブル信号）を出力した後、データバス１２上にデータを出力する。アクセスが終了すると、制御信号を解除する。チップイネーブル信号を出力してからリセットするまでの時間がバス占有時間となる。
【００７８】
図１９は、バス占有率解析部３６の処理をフローチャートで示した図である。バス占有率解析部３６は、電源がオンの間、制御信号線の状態を監視しアクセス開始を判別する（ステップＳ５ａ）。
【００７９】
バスの利用が開始されると占有時間のカウントを開始し（ステップＳ５ｂ）、バスアクセス終了を検出すると（ステップＳ５ｃ）、バス占有時間のカウントを終了し（ステップＳ５ｄ）、バス占有履歴５４を保存する（ステップＳ５ｅ）。
【００８０】
ここで保存したタスク遷移履歴５４は、実施の形態１と同様、動的解析ツール７によって読み出し、単位時間当たりのバス占有率の表示が可能である。
【００８１】
以上詳細に説明したように、この実施の形態３に係る動的解析装置および動的解析システムによれば、バス占有時間を保持することにより、一定時間あたりのバス占有率等が容易に解析可能となる。
【００８２】
なお、本発明は、上記実施の形態および図面によって限定されるものではない。本発明の要旨を変更しない範囲で実施の形態および図面に変更を加えることができるのはもちろんである。
例えば、監視・解析対象の処理内容は、関数の変化、変数の変化、タスクの変化、バス占有率に限定されず、装置の任意のパラメータを監視の対象とすることができる。また、これらと共に収集するデータ類も上述の例に限定されず、適宜設定可能である。
また、関数の履歴、変数の履歴にどのような情報を含めるか、についても適宜応用・変更可能である。例えば、関数の履歴に実行時刻を記録したり、その関数により処理された変数な、その関数がアクセスしたメモリエリア（アドレス）などの情報を付加してもよい。また、変数履歴に、後方深度を設定し、変数履歴条件５１に合致する変数の更新後にどのような変数が処理されたかを解析できるようにしてもよい。
また、上記実施の形態においては、動的解析ツール７を動的解析装置６に接続して、データを表示する等したが、例えば、動的解析ツール装置７で動的解析装置６からのデータを受信して、解析するようにしてもよい。
動的解析装置は、監視対象の装置に常時接続されている必要はなく、必要に応じて設定されてもよい。この場合、例えば、アドレスバス１１、データバス１２、制御信号線１３にこれらの信号線に接続するためのコネクタを予め接続しておき、必要時に、このコネクタと動的解析装置６の受信回路１６２の入力側コネクタとを接続するようにしてもよい。
また、アドレスバス１１、データバス１２、制御信号線１３の全てを監視することが望ましいが、必ずしも全てを監視する必要はない。一部のバス又は制御信号線を監視するように構成してもよい。監視の対象は、監視の目的に応じて適宜設定される。
設備機器１００の制御用プロセッサの動作を監視する例を示したが、設備機器１００は任意である。例えば、空調装置、電力制御装置、熱機器、エレベータ、コンピュータ、家電機器、自動車・車両、等、コンピュータ及びソフトウエアにより制御されるものに広く適用可能である。
上述したハードウエア構成、フローチャート、テーブル構成などは一例であり、任意に変更可能である。
また、他装置のバス、制御信号線にアクセス可能なコンピュータを上述の動的解析装置として動作させるためのプログラムを、媒体等に記録して配布し、これをインストールすることにより、該コンピュータを動的解析装置として機能させることも可能である。
【符号の説明】
【００８３】
１  動的解析システム
２  設備制御装置
３  ＣＰＵ
４  ＲＯＭ
５  ＲＡＭ
６  動的解析装置
１１  アドレスバス
１２  データバス
１３  制御信号線
１４  通信線
２０  バスデータ監視部
２１  アドレスバス監視部
２２  データバス監視部
２３  制御信号監視部
３０  バスデータ解析部
３１  実行関数解析部
３２  変数データ解析部
３３  監視データ保管部
３４  定時データ処理部
３５  タスク解析部
３６  バス占有率解析部
４０  データ管理部
４１  アドレスマップ
４２  監視データ
４３  制御データ
４４  関数アドレス範囲
４５  変数アドレス値
４６  変数現在値
４７  関数遷移履歴
４８  変数遷移履歴
４９  変数定時履歴
５０  関数遷移履歴条件
５１  変数遷移履歴条件
５２  定時履歴条件
５３  タスク遷移履歴
５４  バス占有履歴
６０  通信制御部
６１  アドレスマップ保管部
６２  監視データ読み出し部
６３  制御データ保管部
７０  通信インタフェース
１６１  プロセッサ
１６２  受信回路
１６３  記憶部
１６４  通信制御装置
【図１】
0005441983.tif 000002
【図２】
0005441983.tif 000003
【図３】
0005441983.tif 000004
【図４】
0005441983.tif 000005
【図５】
0005441983.tif 000006
【図６】
0005441983.tif 000007
【図７】
0005441983.tif 000008
【図８】
0005441983.tif 000009
【図９】
0005441983.tif 000010
【図１０】
0005441983.tif 000011
【図１１】
0005441983.tif 000012
【図１２】
0005441983.tif 000013
【図１３】
0005441983.tif 000014
【図１４】
0005441983.tif 000015
【図１５】
0005441983.tif 000016
【図１６】
0005441983.tif 000017
【図１７】
0005441983.tif 000018
【図１８】
0005441983.tif 000019
【図１９】
0005441983.tif 000020