(57)【要約】【課題】記憶容量の増大を招くことなく不適切な挙動に対応するログが取得され、短時間でロボット制御プログラムの正確な確認が容易なロボット制御システムを提供する。【解決手段】実行ログ取得部２４は、ロボット制御プログラム４０の実行によりロボット制御プログラム４０で使用される実行行および変数を取得する。実行行および実行変数ログは、ログ取得スタート行からログ取得エンド行までロボット制御プログラム４０が周回するごとに一周期ログとして取得される。比較部２６は、取得する一周期ログと、長期記憶部３２に蓄積された最新長期記憶一周期ログとを比較する。長期記憶判断部２７は、これらが異なるとき、取得した一周期ログの長期記憶が必要であると判断して長期記憶部３２に記憶する。これにより、記憶容量の増大を招くことなく短時間でロボット制御プログラム４０の動作を正確かつ容易に確認される。【選択図】図２
2010205128.tif 000002
【特許請求の範囲】
【請求項１】
ロボット、電子計算機、外部入出力機器、およびこれらを総括してロボット制御プログラムに基づいて前記ロボットを制御する制御装置を備えるロボット制御システムにおいて、
前記制御装置は、
スタート指示により前記ロボット制御プログラムを実行し、前記ロボット、前記電子計算機および前記外部入出力機器から出力された信号に基づいて変数の値または前記ロボット制御プログラムの実行行を変更するプログラム実行手段と、
ログ取得プログラムに基づいて、前記制御装置に接続されている前記ロボット、前記電子計算機および前記外部入出力機器から出力された信号に基づいて変化しつつ前記ロボット制御プログラムで使用される変数のログである実行変数ログを取得可能であって、前記ロボット制御プログラムにおいて予め設定されたログ取得スタート行から前記ログ取得スタート行が再び実行されるまでの一周期において変化した前記実行行および前記実行変数ログを前記ロボット制御プログラムの一周期ログとして取得、または前記ロボット制御プログラムのうち前記ログ取得スタート行から予め設定されたログ取得エンド行までのログ取得範囲において変化した前記実行行および前記実行変数ログを前記ロボット制御プログラムの一周期ログとして取得する実行ログ取得手段と、
前記実行ログ取得手段で取得された前記一周期ログを記憶する一時記憶手段と、
前記一時記憶手段に記憶した前記一周期ログのうち長期記憶が必要と判断された長期記憶一周期ログを逐次蓄積しながら記憶する長期記憶手段と、
前記実行ログ取得手段で前記一周期ログを取得すると、前記一周期ログに含まれる前記ロボット制御プログラムの一行ごとに、取得される前記一周期ログと前記長期記憶手段に記憶されている最新の前記長期記憶一周期ログとを逐次比較する比較手段と、
前記比較手段の比較の結果、取得した前記一周期ログと最新の前記長期記憶一周期ログとが異なるとき、取得した前記一周期ログは前記長期記憶手段への記憶が必要であると判断して長期記憶フラグをオンにする長期記憶判断手段と、
前記ロボット制御プログラムにおいて前記ログ取得スタート行が実行、または前記ログ取得エンド行が実行されると、前記一時記憶手段に記憶されている前記一周期ログの長期記憶フラグがオフであれば前記一時記憶手段をクリアし、前記一時記憶手段に記憶されている前記一周期ログの長期記憶フラグがオンであれば前記一時記憶手段に記憶されている前記一周期ログを前記長期記憶手段に書き込んで前記一時記憶手段をクリアして次回の一周期ログの取得へ移行する移行処理手段と、
前記長期記憶手段へ最初に記憶された長期記憶一周期ログ、前記一時記憶手段に現在記憶されている一周期ログ、または前記長期記憶手段に記憶された全ての長期記憶一周期ログのいずれか一つまたは全部を選択的に表示可能な表示手段と、
を備えることを特徴とするロボット制御システム。
【請求項２】
ロボット、電子計算機、外部入出力機器、およびこれらを総括してロボット制御プログラムに基づいて前記ロボットを制御する制御装置を備えるロボット制御システムにおいて、
前記制御装置は、
スタート指示により前記ロボット制御プログラムを実行し、前記ロボット、前記電子計算機および前記外部入出力機器から出力された信号に基づいて変数の値または前記ロボット制御プログラムの実行行を変更するプログラム実行手段と、
ログ取得プログラムに基づいて、前記制御装置に接続されている前記ロボット、前記電子計算機および前記外部入出力機器から出力された信号に基づいて変化しつつ前記ロボット制御プログラムで使用される変数のログである実行変数ログを取得可能であって、前記ロボット制御プログラムにおいて予め設定されたログ取得スタート行から前記ログ取得スタート行が再び実行されるまでの一周期において変化した前記実行行および前記実行変数ログを前記ロボット制御プログラムの一周期ログとして取得、または前記ロボット制御プログラムのうち前記ログ取得スタート行から予め設定されたログ取得エンド行までのログ取得範囲において変化した前記実行行および前記実行変数ログを前記ロボット制御プログラムの一周期ログとして取得する実行ログ取得手段と、
複数の記憶領域を有し、前記実行ログ取得手段で取得された前記一周期ログを記憶する記憶手段と、
前記実行ログ取得手段でｎ−１周期目（ｎ≧２）に取得した前記一周期ログであるｎ−１周期ログを前記記憶手段の第ｍ記憶領域に記憶し、前記実行ログ取得手段でｎ周期目に取得しつつ前記第ｍ記憶領域の次のアドレスに位置する第ｍ＋１記憶領域に記憶する前記一周期ログであるｎ周期ログと前記第ｍ記憶領域に記憶された一周期ログとを比較して、前記ｎ周期ログが前記第ｍ記憶領域の一周期ログと一致するとき前記ｎ周期ログが記憶された前記第ｍ＋１記憶領域を更新することなく次回の一周期ログの取得へ移行し、前記ｎ周期ログが前記第ｍ記憶領域の一周期ログと異なるとき前記ｎ周期ログを記憶した前記第ｍ＋１記憶領域を長期保護領域とする長期保護フラグをオンにして、次回のｎ＋１周期目に取得する前記一周期ログであるｎ＋１周期ログを前記第ｍ＋１記憶領域の次のアドレスに位置する第ｍ＋２記憶領域に記憶する移行処理手段と、
前記長期保護領域として最初に設定された記憶領域に記憶されている長期記憶一周期ログ、前記記憶手段に記憶されている最新の一周期ログ、または前記長期保護領域として設定された全ての記憶領域に記憶されている長期記憶一周期ログのいずれか一つまたは全部を選択的に表示可能な表示手段と、
を備えることを特徴とするロボット制御システム。
【請求項３】
ロボット、電子計算機、外部入出力機器、およびこれらを総括してロボット制御プログラムに基づいて前記ロボットを制御する制御装置を備えるロボット制御システムにおいて、
前記制御装置は、
スタート指示により前記ロボット制御プログラムを実行し、前記ロボット、前記電子計算機および前記外部入出力機器から出力された信号に基づいて変数の値または前記ロボット制御プログラムの実行行を変更するプログラム実行手段と、
ログ取得プログラムに基づいて、前記制御装置に接続されている前記ロボット、前記電子計算機および前記外部入出力機器から出力された信号に基づいて変化しつつ前記ロボット制御プログラムで使用される変数のログである実行変数ログを取得可能であって、前記ロボット制御プログラムにおいて予め設定されたログ取得スタート行から前記ログ取得スタート行が再び実行されるまでの一周期において変化した前記実行行および前記実行変数ログを前記ロボット制御プログラムの一周期ログとして取得、または前記ロボット制御プログラムのうち前記ログ取得スタート行から予め設定されたログ取得エンド行までのログ取得範囲において変化した前記実行行および前記実行変数ログを前記ロボット制御プログラムの一周期ログとして取得する実行ログ取得手段と、
複数の一時記憶領域を有し、前記実行ログ取得手段で前記一周期ログが取得されるごとに、前記一周期ログを複数の一時記憶領域のいずれかに割り当てながら順次記憶する一時記憶手段と、
前記一時記憶手段に記憶した前記一周期ログのうち長期記憶が必要と判断された長期記憶一周期ログを逐次蓄積しながら記憶する長期記憶手段と、
前記実行ログ取得手段で最新の前記一周期ログを前記一時記憶領域のいずれか一つに記憶している間に、前記一時記憶領域のいずれか一つに記憶されている最古の前記一周期ログである最古一周期ログと、前記長期記憶手段に記憶されている最新の前記長期記憶一周期ログである最新長期記憶一周期ログとを比較する比較手段と、
前記比較手段の比較の結果、前記最古一周期ログと最新長期記憶一周期ログとが異なるとき、取得した前記最古一周期ログは前記長期記憶手段への記憶が必要であると判断してその最古一周期ログに対応する長期記憶フラグをオンにする長期記憶判断手段と、
前記最古一周期ログの長期記憶フラグがオフであれば前記最古一周期ログが記憶された一時記憶領域をクリアし、前記最古一周期ログの長期記憶フラグがオンであれば前記最古一周期ログを前記長期記憶手段に書き込んで前記最古一周期ログが記憶された一時記憶領域をクリアして次回の一周期ログの取得へ移行する移行処理手段と、
前記長期記憶手段へ最初に記憶された長期記憶一周期ログ、前記一時記憶手段に現在記憶されている一周期ログ、または前記長期記憶手段に記憶された全ての長期記憶一周期ログのいずれか一つまたは全部を選択的に表示可能な表示手段と、
を備えることを特徴とするロボット制御システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ロボット制御システムに関し、特に制御装置で実行されるロボット制御プログラムのバグを解析するためのログを取得するロボット制御システムに関する。
【背景技術】
【０００２】
ロボット制御システムは、各種のプログラムを実行する例えばパーソナルコンピュータなどの電子計算機、シーケンサなどの各種の外部入出力機器、実際の動作を実行するロボット、並びにこれら電子計算機、外部入出力機器およびロボットからの種々の入力または出力に応じてロボットを制御する制御装置によって構成されている。ロボット制御システムは、システムを構成する電子計算機、外部入出力機器およびロボットを接続した状態で制御装置においてロボット制御プログラムを実行することにより、正常に作動するか否かが確認される。一方、ロボット制御プログラムは、プログラムの異常いわゆるバグなどを含んでいる場合があり、最初から完全でないこともある。そのため、システムの作動を確認するためには、ロボット制御プログラムの実行時に実行記録を取得する、いわゆるログの取得が必須となる（例えば、特許文献１参照）。
【０００３】
しかしながら、ロボット制御プログラムは、一般に多数の行にわたる比較的長いものが多い。しかも、電子計算機、外部入出力機器およびロボットから構成されるシステムの場合、ロボット制御プログラムの実行に影響を与えるデータは時々刻々と電子計算機、外部入出力機器およびロボットから入力される。そのため、ロボット制御プログラムに基づくシステムの挙動は、これらデータの入力に応じて刻々と変化する。また、ロボット制御プログラムの場合、例えば実行の停止をともなう自身の不備だけでなく、プログラム自体は正常に実行されるものの例えばロボットの不適切な挙動などについても確認する必要がある。これらを確認するために、ロボット制御プログラムのすべてのログを取得すると、正確なロボット制御プログラムの確認のために膨大な時間を必要とするだけでなく、ログの取得に膨大な記憶領域が必要になるという問題がある。また、ロボット制御プログラムのうち問題を生じる部分いわゆるバグは一部である。そのため、ロボット制御プログラムのすべてのログを取得すると、バグの発見が困難になるという問題がある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００１−２０９５５８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
そこで、本発明の目的は、記憶容量の増大を招くことなく不適切な挙動に対応するログが取得され、短時間でロボット制御プログラムの正確な確認が容易なロボット制御システムを提供することにある。
【課題を解決するための手段】
【０００６】
請求項１または３記載の発明では、実行ログ取得手段は、ロボット制御プログラムの実行にともなってロボット、電子計算機および外部入出力機器から出力された信号に基づいて変化しつつロボット制御プログラムで使用される実行行および変数を取得する。実行行および実行変数ログは、ログ取得スタート行からログ取得エンド行までロボット制御プログラムが周回するごとに一周期ログとして取得される。そして、取得した一周期ログが蓄積された長期記憶一周期ログのうち最新の長期記憶一周期ログと異なるとき、その取得した一周期ログは長期記憶が必要であると判断されて長期記憶手段に記憶される。すなわち、ロボット制御プログラムの実行の一周期において実行行および変数に変化が生じると、取得される一周期ログは、長期記憶一周期ログとして長期記憶手段に記憶され、次回以降の一周期ログとの比較の対象となる。表示手段は、長期記憶手段に最初に記憶された長期記憶一周期ログ、一時記憶手段に現在記憶されている一周期ログ、または全ての長期記憶一周期ログを選択的に表示する。そのため、ロボット制御プログラムに基づいてシステムが作動しているときでも、実行行および変数の変化にともなう不適切な挙動は、表示手段に表示された最初の長期記憶一周期ログ、現在記憶されている一周期ログ、または全ての長期記憶一周期ログなどを対比することによって認識される。したがって、短時間でロボット制御プログラムの動作を正確かつ容易に確認することができる。
【０００７】
また、請求項１記載の発明では、比較手段は、一周期ログに含まれる対応するロボット制御プログラムの一行ごとに、取得する一周期ログと長期記憶手段に記憶されている最新の長期記憶一周期ログとを逐次比較する。対応するロボット制御プログラムの一行ごとに長期記憶一周期ログと比較することにより、比較は短時間で実行される。そのため、ログ取得スタート行とログ取得エンド行との間を短時間で周回するロボット制御プログラムからログを取得する場合でも、ロボット制御プログラムの動作を正確に比較することができる。さらに、取得される一周期ログが最新の長期記憶一周期ログと同一の場合、一時記憶手段に記憶された一周期ログは長期記憶手段に記憶されることなくクリアされる。そのため、例えば今回取得した一周期ログが前回の周期と同一であれば今回取得した一周期ログはクリアされる。すなわち、最新の長期記憶一周期ログと重複する一周期ログは長期記憶手段に記憶されることなく、前回の周期との間で変化が生じた一周期ログのみが長期記憶一周期ログとして長期記憶手段に記憶される。したがって、長期記憶手段の記憶容量の増大を招くことなく、挙動の変化の変遷を追跡することができる。
【０００８】
請求項２記載の発明では、実行ログ取得手段は、ロボット制御プログラムの実行にともなってロボット、電子計算機および外部入出力機器から出力された信号に基づいて変化しつつロボット制御プログラムで使用される実行行および変数を取得する。実行変数ログは、ログ取得スタート行からログ取得エンド行までロボット制御プログラムが周回するごとに取得される。移行処理手段は、ｎ周期目に取得したｎ周期ログが第ｍ記憶領域に記憶された一周期ログと一致するとき、ｎ周期ログが記憶された第ｍ＋１記憶領域を更新せずに次回の一周期ログの取得へ移行し、ｎ周期ログが第ｍ記憶領域に記憶された一周期ログと異なるとき、ｎ周期ログを記憶した第ｍ＋１記憶領域を長期保護領域とする。すなわち、ロボット制御プログラムの実行のｎ周期目において、第ｍ記憶領域に記憶された一周期ログとの間で実行行および変数に変化が生じると、取得されるｎ周期ログは、ｎ周期ログが記憶された第ｍ＋１記憶領域において長期保護領域として保護される。そして、ｎ＋１周期目のｎ＋１周期ログは、第ｍ＋１記憶領域の次のアドレスに位置する第ｍ＋２記憶領域に記憶される。長期保護領域に記憶されたｎ周期ログは、次回以降の一周期ログとの比較の対象となる。表示手段は、長期保護領域として最初に設定された記憶領域に記憶された長期記憶一周期ログ、記憶手段に記憶されている最新の一周期ログ、または全ての一周期ログを選択的に表示する。そのため、ロボット制御プログラムに基づいてシステムが作動しているときでも、実行行および変数の変化にともなう不適切な挙動は、表示手段に表示された最初の長期記憶一周期ログ、最新の一周期ログ、または長期保護対象の全ての一周期ログなどを対比することによって認識される。したがって、短時間でロボット制御プログラムの動作を正確かつ容易に確認することができる。
【０００９】
また、請求項２記載の発明では、移行処理手段は、一周期ログに含まれる対応するロボット制御プログラムの一行ごとに、取得する一周期ログと第ｍ記憶領域で長期保護の対象となっている一周期ログとを逐次比較する。対応するロボット制御プログラムの一行ごとに長期記憶一周期ログと比較することにより、比較は短時間で実行される。そのため、ログ取得スタート行とログ取得エンド行との間を短時間で周回するロボット制御プログラムからログを取得する場合でも、ロボット制御プログラムの動作を正確に比較することができる。さらに、取得される一周期ログが長期保護領域に記憶されている長期記憶一周期ログと同一の場合、記憶領域に記憶された一周期ログは次回の一周期ログによって上書きされる。そのため、一周期ログが変化するごとに、長期保護領域が形成されつつ、新たな一周期ログが取得される。すなわち、最新の長期保護領域に記憶された一周期ログと重複する一周期ログが記憶された記憶領域は長期保護領域と設定されることなく、前回の周期との間で一周期ログに変化が生じたときのみ長期保護領域が設定される。したがって、記憶容量の増大を招くことなく単一の記憶手段を一時記憶のための領域および長期保護のための領域として共用しつつ、挙動の変化の変遷を追跡することができる。
【００１０】
また、請求項３記載の発明では、比較手段は、一時記憶手段に設けられている複数の一時記憶領域のいずれか一つに最新の一周期ログを記憶している間に、一時記憶領域に記憶されている最古一周期ログと長期記憶手段に記憶されている最新長期記憶一周期ログとを比較する。一時記憶手段に複数の一時記憶領域を設け、一時記憶領域に記憶された最古一周期ログと長期記憶一周期ログとを比較することにより、比較のために必要な時間は長く設定可能となる。そのため、ログ取得スタート行とログ取得エンド行との間を短時間で周回するロボット制御プログラムからログを取得する場合でも、制御装置のプロセッサの性能を高めることなくロボット制御プログラムの動作を正確に比較することができる。さらに、最古一周期ログが最新の長期記憶一周期ログと同一の場合、一時記憶手段に記憶された最古一周期ログは長期記憶手段に記憶されることなくクリアされる。そのため、最新の長期記憶一周期ログと重複する最古一周期ログは長期記憶手段に記憶されることなく、前回の周期との間で変化が生じた最古一周期ログのみが長期記憶一周期ログとして長期記憶手段に記憶される。したがって、長期記憶手段の記憶容量および制御装置の処理能力の増大を招くことなく、挙動の変化の変遷を追跡することができる。
【図面の簡単な説明】
【００１１】
【図１】本発明の第１実施形態によるロボット制御システムを示す概略図
【図２】第１実施形態によるロボット制御システムを示すブロック図
【図３】第１実施形態によるロボット制御システムの処理の流れを示す概略図
【図４】第１実施形態によるロボット制御プログラムの周期ごとの実行行および実行変数を示す模式図
【図５】第１実施形態によるロボット制御プログラムと一周期ログとの関係を示す模式図
【図６】第１実施形態において、一時記憶部に記憶されている現在の一周期ログ、および長期記憶領域に記憶されている長期記憶一周期ログを示す模式図
【図７】第２実施形態によるロボット制御システムを示すブロック図
【図８】第２実施形態によるロボット制御システムの処理の流れを示す概略図
【図９】第２実施形態において、一時記憶部に記憶されている現在の一周期ログ、および長期記憶領域に記憶されている長期記憶一周期ログを示す模式図
【図１０】第３実施形態によるロボット制御システムを示すブロック図
【図１１】第３実施形態による記憶部の構成を示す模式図
【発明を実施するための形態】
【００１２】
以下、本発明の実施形態を図面に基づいて説明する。なお、複数の実施形態において実質的に同一の構成部位には同一の符号を付し、説明を省略する。
（第１実施形態）
第１実施形態によるロボット制御システムを図１および図２に示す。ロボット制御システム１０は、図１に示すようにロボット１１、電子計算機としてのパーソナルコンピュータ（以下、「パソコン」と省略する。）１２、外部入出力機器１３および制御装置１４を備えている。ロボット１１は、例えば部品の組み立て用あるいは部品の検査用など、任意の構成のロボットである。
【００１３】
ロボット１１は、例えば六軸の垂直多関節型のロボットとして構成されている。ロボット１１は、周知の通り、アーム１５を有している。アーム１５は、それぞれアクチュエータであるサーボモータ１６などからの駆動力で駆動される。アーム１５は、先端にエンドエフェクタ１７を有している。例えばロボット１１で部品の運搬や組み立てなどを行う場合、これらの部品を保持するためのハンドがエンドエフェクタ１７として用いられる。また、例えばロボット１１で部品の検査などを行う場合、対象となる部品を撮影するカメラなどがエンドエフェクタ１７として用いられる。このように、エンドエフェクタ１７は、ロボット１１を適用する工程に応じて任意に選択される。サーボモータ１６からアーム１５のエンドエフェクタ１７までの間には、図示しない減速機構やリンクなどの駆動力伝達機構が設けられている。これにより、アーム１５の先端に設けられているエンドエフェクタ１７は、サーボモータ１６からの駆動力によって駆動される。ロボット１１と制御装置１４との間は、通信手段としての接続ケーブル１８によって接続されている。通信手段は、接続ケーブル１８などの有線に限らず、無線であってもよい。ロボット１１と制御装置１４との間を接続ケーブル１８によって接続することにより、ロボット１１の各軸を駆動するサーボモータ１６および作業を実施するエンドエフェクタ１７は、制御装置１４によって制御される。
【００１４】
パソコン１２は、例えば汎用のノートパソコンなどから構成され、制御装置１４と相互に通信可能に接続している。ユーザは、プログラミングソフトをパソコン１２で実行することにより、アプリケーションに応じてロボット１１の動作手順などを記述したロボット制御プログラムを作成可能である。この場合、ユーザは、アプリケーションに応じてパッケージ命令を組み合わせたり、修正を加えたりすることにより、比較的簡単にロボット制御プログラムを作成することができる。パソコン１２は、必要に応じてロボット制御システム１０の作動中に所定のデータを入力する際にも利用される。
【００１５】
外部入出力機器１３は、例えばＰＬＣ(Programmable Logic Controller)やティーチングペンダントなどが含まれる。例えばＰＬＣやティーチングペンダントなどの外部入出力機器１３と制御装置１４との間では、ロボット制御システム１０の作動中に外部入出力機器１３から制御装置１４へデータやパラメータが適宜入力されたり、制御装置１４から外部入出力機器１３へデータやパラメータが適宜出力される。このように、制御装置１４は、ロボット制御システム１０の作動中、すなわちロボット制御作動プログラムの実行中に、ロボット１１、パソコン１２および外部入出力機器１３からデータの入力および出力が行われる。
【００１６】
制御装置１４は、図２に示すように制御部２１を有している。制御部２１は、図示しないＣＰＵ、ＲＯＭおよびＲＡＭなどからなるマイクロコンピュータを主体として構成されている。制御部２１は、予め入力および記憶されたロボット制御プログラム、ロボット１１、パソコン１２あるいは外部入出力機器１３から入力された各種データやパラメータなどの変数に基づいて、サーボ制御部２２を経由してロボット１１の各軸のサーボモータ１６を駆動する。これにより、制御装置１４は、ロボット１１の動作を制御する。
【００１７】
制御装置１４は、上記の制御部２１に加え、プログラム実行部２３、実行ログ取得部２４、記憶部２５、比較部２６、長期記憶判断部２７、移行処理部２８および表示部２９を備えている。これらプログラム実行部２３、実行ログ取得部２４、比較部２６、長期記憶判断部２７および移行処理部２８は、制御部２１で実行されるコンピュータプログラムによってソフトウェア的に機能する構成でもよく、ハードウェアとして機能する構成でもよい。
【００１８】
プログラム実行部２３は、例えばパソコン１２から入力されたスタート指示によりロボット制御プログラムを実行する。プログラム実行部２３は、ロボット制御プログラムを実行することにより、ロボット１１、パソコン１２および外部入出力機器１３から出力された信号に基づいて変数の値またはロボット制御プログラムの実行行を変更する。
【００１９】
実行ログ取得部２４は、ロボット制御プログラムに含まれるログ取得プログラムにしたがって作動する。実行ログ取得部２４は、ロボット制御プログラムにおいて変化した実行行および実行変数ログを取得する。実行変数ログは、制御装置１４に接続するロボット１１、パソコン１２および外部入出力機器１３から出力された信号によって変化しつつロボット制御プログラムで使用される変数のログである。実行ログ取得部２４は、これらの変化する実行行および実行変数ログを、ロボット制御プログラムの所定の範囲で一周するごと、すなわち一周期ごとに一周期ログとして取得する。ここで、一周期とは、ロボット制御プログラムにおいて予め設定されているログ取得スタート行からこのログ取得スタート行が再び実行されるまでの間、またはロボット制御プログラムにおいてログ取得スタート行から予め設定されているログ取得エンド行までのログ取得範囲を意味する。そして、一周期ログとは、上記のように設定した一周期において取得された実行行および実行変数ログを記録したログを意味する。
【００２０】
記憶部２５は、一時記憶部３１および長期記憶部３２を有している。一時記憶部３１は、制御部２１のＲＡＭと共用され、実行ログ取得部２４で取得された一周期ログを一時的に記憶する。一方、長期記憶部３２は、例えば不揮発性メモリやＨＤＤなどの長期記憶可能な媒体で構成されており、一時記憶部３１に記憶された一周期ログのうち長期記憶判断部２７において長期記憶が必要と判断された長期記憶一周期ログを逐次蓄積しながら記憶する。なお、長期記憶部３２は、例えば制御部２１のＲＡＭをバッテリなどでバックアップする構成としてもよい。
【００２１】
比較部２６は、実行ログ取得部２４で一周期ログを取得するとき、一周期ログとして取得されるロボット制御プログラムの一行ごとに、取得される現在の一周期ログと長期記憶部３２に記憶された長期記憶一周期ログとを逐次比較する。比較部２６は、長期記憶部３２に記憶されている長期記憶一周期ログのうち、最新の長期記憶一周期ログと取得される現在の一周期ログとを比較する。比較部２６は、上記のように、現在の一周期ログと長期記憶一周期ログとを、現在の一周期ログに対応するロボット制御プログラムのログが一行得られるごとに、逐次最新の長期記憶一周期ログの対応するロボット制御プログラムのログの一行と比較する。長期記憶判断部２７は、取得する現在の一周期ログと最新の長期記憶一周期ログとを比較部２６で比較した結果、互いに異なるとき、取得する現在の一周期ログについて長期記憶が必要であると判断する。長期記憶判断部２７は、長期記憶が必要であると判断すると、長期記憶フラグをオンにする。
【００２２】
移行処理部２８は、ロボット制御プログラムにおいてログ取得スタート行が再実行、またはログ取得エンド行が実行されると、所定の処理を実行して次回の一周期ログの取得へ移行する。具体的には、移行処理部２８は、ログ取得スタート行が再実行またはログ取得エンド行が実行されると、一時記憶部３１に記憶されている一周期ログの長期記憶フラグがオンであるか否かを判断する。移行処理部２８は、その一周期ログの長期記憶フラグがオフであれば、一時記憶部３１をクリアして、一時記憶部３１に記憶された一周期ログを消去する。一方、移行処理部２８は、その一周期ログの長期記憶フラグがオンであれば、一時記憶部３１に記憶されている一周期ログを長期記憶部３２に書き込み、一時記憶部３１に記憶された一周期ログを消去する。
【００２３】
表示部２９は、パソコン１２の例えば液晶ディスプレイと共用される。表示部２９は、長期記憶部３２に最初に記憶された長期記憶一周期ログ、一時記憶部３１に記憶されている現在の一周期ログ、または長期記憶部３２に記憶されている全ての長期記憶一周期ログのいずれか一つまたは全部を選択的に表示する。
【００２４】
次に、上記の構成によるロボット制御システム１０の作動について、図３に示す処理の流れに基づいて説明する。
ロボット制御システム１０が起動されると、制御装置１４はプログラム実行部２３においてロボット制御プログラムを実行する（Ｓ１０１）。プログラム実行部２３は、パソコン１２で設定されたロボット制御プログラムを実行する。ロボット制御プログラムが実行されると、実行ログ取得部２４は、ロボット制御プログラムに含まれるログ取得プログラムにしたがって、実行行および実行変数ログを一周期ログとして取得する（Ｓ１０２）。実行ログ取得部２４は、取得した一周期ログを一時記憶部３１に記憶する（Ｓ１０３）。
【００２５】
例えば図４に示すように、ロボット制御プログラム４０は記述されており、入力される変数の値（例えば、「Ｉ［０］＝３」など）によって実行行が変化する。この入力される変数は、ロボット１１、パソコン１２または外部入出力機器１３の動作などによって逐次変化する。そのため、実行ログ取得部２４は、ロボット制御プログラム４０の実行の際に、変化しつつ入力される変数のログである実行変数ログ、および変数の変化にともなって選択される実行行を取得する。この場合、入力される変数および実行行は、ロボット制御プログラム４０の全体において変化するとは限らない。そのため、実行ログ取得部２４は、ロボット制御プログラム４０のうち、予め設定されたログ取得スタート行４１からログ取得エンド行４２までのログを一周期ログとして取得する。また、実行ログ取得部２４は、予め設定されたログ取得スタート行４１が実行されるごとに、ログ取得スタート行４１以降のログを一周期ログとして取得してもよい。以下、実行ログ取得部２４は、ログ取得スタート行４１からログ取得エンド行４２までのログを一周期ログとして取得する例について説明する。
【００２６】
実行ログ取得部２４は、例えば図５に示すように実行行およびその実行行における変数の値を関連づけて一周期ログ４３を作成して一時記憶部３１に記憶する。図５に示す一周期ログ４３の例の場合、実行ログ取得部２４は、ロボット制御プログラム４０においてログ取得スタート行４１以降の最初の実行行である「３行目」で変数「Ｉ［０］＝３」が入力されたことを一時記憶部３１に記憶する。そして、実行ログ取得部２４は、「４行目」および「５行目」が実行行となったことを一時記憶部３１へ順に記憶する。さらに、実行ログ取得部２４は、６行目も実行行となるため、「６行目」についても変数「Ｉ［０］＝３」を一時記憶部３１に記憶する。「３行目」で変数「Ｉ［０］＝３」が入力された場合、７行目から１２行目は実行行に該当しないため、実行ログ取得部２４はこれらの行を一時記憶部３１に記憶することなくログ取得エンド行４２である「１３行目」を実行行として一時記憶部３１に記憶する。このように、実行ログ取得部２４は、ログ取得スタート行４１からログ取得エンド行４２までの実行行および実行変数ログを一周期ログ４３として一時記憶部３１に記憶する。
【００２７】
制御装置１４は、一周期ログ４３が取得および記憶されると、取得した現在の一周期ログ４３が第１周期目の取得であるか否かを比較部２６において判断する（Ｓ１０４）。ロボット制御プログラム４０は、ロボット１１の作動によって同一のプログラムが何度も繰り返して実行される。そのため、実行行および実行変数は、ロボット制御プログラム４０の実行とともに変化し、繰り返し実行されるロボット制御プログラム４０に応じて図４に示すように繰り返し何度も変化する。比較部２６は、既に説明したように過去に取得した一周期ログ４３のうち長期記憶部３２に記憶されている最新の長期記憶一周期ログと現在取得した一周期ログ４３とを比較する。取得した一周期ログ４３が第１周期目の取得である場合、長期記憶部３２には比較の対象となる長期記憶一周期ログが記憶されていない。そこで、比較部２６は、取得した現在の一周期ログ４３がロボット制御プログラム４０の実行によって取得された第１周期目の一周期ログであれば（Ｓ１０４：Ｙｅｓ）、取得した現在の一周期ログ４３について長期記憶が必要であると判断し、長期記憶フラグを「オン」にする（Ｓ１０５）。
【００２８】
一方、比較部２６は、取得した現在の一周期ログ４３が第１周期目でないと判断すると（Ｓ１０４：Ｎｏ）、取得した現在の一周期ログ４３と最新の長期記憶一周期ログとを比較する（Ｓ１０６）。取得した現在の一周期ログ４３が第１周期目の取得でない場合、すなわち第２周期目以降の取得であれば、長期記憶部３２には既に少なくとも一つの長期記憶一周期ログが記憶されている。そこで、比較部２６は、取得した現在の一周期ログ４３と長期記憶部３２に記憶されている最新の長期記憶一周期ログとを比較する。例えば取得した現在の一周期ログ４３が第２周期目の取得であれば、比較部２６は第２周期目に取得した現在の一周期ログ４３と長期記憶一周期ログとして第１周期目に取得した一周期ログとを比較する。
【００２９】
比較部２６は、現在の一周期ログ４３と最新の長期記憶一周期ログとが同一であるか否かを判断する（Ｓ１０７）。第１実施形態の場合、比較部２６は、現在の一周期ログ４３を構成する実行変数ログまたは実行行を取得するごとに、長期記憶一周期ログを構成する実行変数ログまたは実行行と逐次比較する。例えば図６に示す場合、長期記憶部３２には、時期的に最古の長期記憶一周期ログ４４から最新の長期記憶一周期ログである最新長期記憶一周期ログ４５まで少なくとも一つ以上の長期記憶一周期ログが記憶されている。なお、図６の場合、長期記憶の対象となった長期記憶一周期ログ４４および最新長期記憶一周期ログ４５などの各長期記憶一周期ログは、実行行および実行変数ログを関連づけて記憶する例について示している。しかし、長期記憶の対象となった一周期ログは、実行行および実行変数ログだけでなく、実行の対象となったロボット制御プログラム４０の全体をログとして記憶してもよい。記憶形態としていずれを採用するかは、長期記憶部３２の記憶容量などに応じて任意に選択することができる。
【００３０】
図６に示す場合、比較部２６は、現在の一周期ログ４３を構成する実行変数ログとしてログ取得スタート行である「３行目」が取得されると、最新長期記憶一周期ログ４５の「３行目」と比較する。図６に示す場合、現在の一周期ログ４３の「３行目」で取得された変数「Ｉ［０］＝３」は最新長期記憶一周期ログ４５の「３行目」で取得された変数「Ｉ［０］＝３」とは同一であるので、比較部２６はそのまま処理を継続する。一方、図６に示す場合、現在の一周期ログ４３の実行行である「５行目」は最新長期記憶一周期ログ４５の実行行である「７行目」と異なる。同様に、現在の一周期ログ４３の実行行である「６行目」、「１３行目」は、いずれも最新長期記憶一周期ログ４５の実行行である「８行目」、「１５行目」と異なる。このように、比較部２６は、現在の一周期ログ４３を構成する実行変数ログまたは実行行を取得するごとに、最新長期記憶一周期ログ４５の各実行変数ログまたは実行行と比較する。
【００３１】
比較部２６による比較の結果、現在の一周期ログ４３が最新長期記憶一周期ログ４５と同一であるとき（Ｓ１０７：Ｙｅｓ）、長期記憶判断部２７は取得した現在の一周期ログ４３について「長期記憶フラグ」を「オフ」にする（Ｓ１０８）。一方、図６に示すように現在の一周期ログ４３が最新長期記憶一周期ログ４５と異なるとき（Ｓ１０７：Ｎｏ）、長期記憶判断部２７は取得した現在の一周期ログ４３について「長期記憶フラグ」を「オン」にする（Ｓ１０９）。
【００３２】
長期記憶判断部２７は、現在の一周期ログ４３の実行変数ログまたは実行行が取得されると一行ごとに比較部２６において最新長期記憶一周期ログ４５と逐次比較する。この比較の結果、現在の一周期ログ４３と最新長期記憶一周期ログ４５との間に異なる実行変数ログまたは実行行があれば長期記憶フラグを「オン」にする。すなわち、図６に示す場合、現在の一周期ログ４３の実行行である「５行目」が取得された時点で最新長期記憶一周期ログ４５の実行行である「７行目」と異なると比較部２６において判断され、長期記憶判断部２７は「長期記憶フラグ」を「オン」にする。一方、ログ取得スタート行４１からログ取得エンド行４２までの間に、現在の一周期ログ４３と最新長期記憶一周期ログ４５との間で実行変数ログまたは実行行の変化がないと比較部２６で判断されたとき、長期記憶判断部２７は長期記憶フラグを「オフ」にする。
【００３３】
長期記憶フラグがオンまたはオフされると、移行処理部２８は長期記憶フラグが「オン」であるか否かを判断する（Ｓ１１０）。移行処理部２８は、長期記憶フラグが「オン」であれば（Ｓ１１０：Ｙｅｓ）、一時記憶部３１に記憶されている取得された現在の一周期ログ４３を長期記憶部３２に書き込む（Ｓ１１１）。長期記憶フラグが「オン」であるとき、取得された現在の一周期ログ４３は後のログ解析などのために利用する必要がある。そのため、移行処理部２８は、一時記憶部３１に記憶された一周期ログ４３の長期記憶フラグが「オン」であれば、その一周期ログ４３を長期記憶部３２へ書き込む。この長期記憶部３２へ書き込まれた一周期ログ４３は、その後に取得される一周期ログとの比較の対象となる最新長期記憶一周期ログとなる。また、移行処理部２８は、取得した現在の一周期ログ４３が第１周期目の取得であり（Ｓ１０４：Ｙｅｓ）、Ｓ１０５において長期記憶フラグが「オン」されている場合も、その一周期ログ４３すなわち第１周期目に取得した一周期ログ４３を長期記憶部３２へ記憶する。
【００３４】
移行処理部２８は、Ｓ１１１において一時記憶部３１の一周期ログ４３を長期記憶部３２へ書き込んだ後、およびＳ１１０において長期記憶フラグが「オフ」であると判断されると（Ｓ１１０：Ｎｏ）、一時記憶部３１をクリアする（Ｓ１１２）。すなわち、移行処理部２８は、一時記憶部３１へ一時的に記憶された現在の一周期ログ４３を消去し、次回以降に取得される一周期ログの取得に備える。なお、移行処理部２８は、一時記憶部３１へ一時的に記憶された現在の一周期ログ４３を消去することなく、次回以降に取得される一周期ログを上書きする構成としてもよい。移行処理部２８は、一時記憶部３１のクリアが完了すると、次回の一周期ログの取得へ移行し（Ｓ１１３）、Ｓ１０２へリターンする。
【００３５】
上記の手順によって取得された一周期ログ４３や長期記憶一周期ログは、例えばパソコン１２の液晶ディスプレイと共用される表示部２９に表示される。表示部２９は、長期記憶部３２に最初に記憶された長期記憶一周期ログすなわち最古の長期記憶一周期ログ４４、一時記憶部３１に記憶されている現在の一周期ログ４３、または長期記憶部３２に記憶されている全ての長期記憶一周期ログなどを、いずれか一つまたは全部を選択的に表示する。
【００３６】
以上説明した第１実施形態では、実行ログ取得部２４は、ロボット制御プログラム４０の実行にともなってロボット１１、パソコン１２および外部入出力機器１３から出力された信号に基づいて変化しつつロボット制御プログラム４０で使用される実行行および変数を取得する。実行行および実行変数ログは、ログ取得スタート行４１からログ取得エンド行４２までロボット制御プログラム４０が周回するごとに一周期ログ４３として取得される。比較部２６は、取得された現在の一周期ログ４３と、長期記憶部３２に蓄積された長期記憶一周期ログのうち最新長期記憶一周期ログ４５とを比較する。長期記憶判断部２７は、取得された現在の一周期ログ４３と、最新長期記憶一周期ログ４５とが異なるとき、取得した現在の一周期ログ４３の長期記憶が必要であると判断し、取得した現在の一周期ログ４３を長期記憶部３２に記憶する。すなわち、ロボット制御プログラム４０の実行の一周期において実行行および変数に変化が生じると、取得される現在の一周期ログ４３は、長期記憶一周期ログとして長期記憶部３２に記憶され、次回以降に取得する一周期ログとの比較の対象となる。表示部２９は、長期記憶部３２に最初に記憶された最古の長期記憶一周期ログ４４、一時記憶部３１に現在記憶されている一周期ログ４３、または全ての長期記憶一周期ログを選択的に表示する。そのため、ロボット制御プログラム４０に基づいてロボット制御システム１０が作動しているときでも、実行行および変数の変化にともなう不適切な挙動は、表示部２９に表示された最古の長期記憶一周期ログ４４、現在記憶されている一周期ログ４３、または全ての長期記憶一周期ログなどを対比することによって認識される。したがって、短時間でロボット制御プログラム４０の動作を正確かつ容易に確認することができる。そして、これらを対比することにより、ロボット制御プログラム４０のバグであるのか入力された変数に問題があるのかを容易に区別して認識することができる。
【００３７】
また、第１実施形態では、比較部２６は、一周期ログ４３に含まれる対応するロボット制御プログラム４０の一行ごとに、取得する一周期ログ４３と長期記憶部３２に記憶されている最新長期記憶一周期ログ４５とを逐次比較する。対応するロボット制御プログラム４０の一行ごとに比較することにより、ログの比較は短時間で実行される。そのため、ログ取得スタート行４１とログ取得エンド行４２との間を短時間で周回するロボット制御プログラム４０からログを取得する場合でも、ロボット制御プログラム４０の動作を正確に比較することができる。さらに、取得される現在の一周期ログ４３が最新長期記憶一周期ログ４５と同一の場合、一時記憶部３１に記憶された一周期ログ４３は長期記憶部３２に記憶されることなくクリアされる。そのため、例えば今回取得した一周期ログ４３が前回の周期と同一であれば今回取得した一周期ログ４３はクリアされる。すなわち、最新長期記憶一周期ログ４５と重複する一周期ログ４３は長期記憶部３２に記憶されることなく、前回の周期との間で変化が生じた一周期ログ４３のみが長期記憶一周期ログとして長期記憶部３２に記憶される。したがって、長期記憶部３２の記憶容量の増大を招くことなく、挙動の変化の変遷を追跡することができる。
【００３８】
なお、第１実施形態では、Ｓ１０４において一周期ログ４３の取得は第１周期目であるか否かを判断している。しかし、Ｓ１０４の処理を省略してもよい。この場合、第１周期目に取得した一周期ログは、比較の対象となる最新長期記憶一周期ログが存在しないため、この最新長期記憶一周期ログと必然的に異なることになる。そのため、Ｓ１０４の処理を省略しても、Ｓ１０６において第１周期目に取得した一周期ログはＳ１０９において長期フラグが「オン」となる。したがって、Ｓ１０４の処理を省略しても、上記の第１実施形態と同様の処理を実行することができる。
【００３９】
（第２実施形態）
第２実施形態によるロボット制御システムを図７に示す。
図７に示す第２実施形態によるロボット制御システム１０は、制御装置１４の記憶部２５を除きその構成が第１実施形態と同一であるので相違点のみを説明し、同一点については説明を省略する。第２実施形態の場合、記憶部２５は、一時記憶部５１および長期記憶部５２を有している。一時記憶部５１は、第１実施形態と同様に制御部２１のＲＡＭと共用される。一時記憶部５１は、実行ログ取得部２４で取得された一周期ログを一時的に記憶する複数の一時記憶領域５３を有している。一時記憶領域５３は、二つ以上の複数が設定されている。すなわち、第２実施形態の場合、一時記憶部５１は複数の一時記憶領域５３で構成されている。一方、長期記憶部５２は、第１実施形態と同様である。実行ログ取得部２４は、一周期ログを取得すると、一時記憶部５１のいずれかの一時記憶領域５３に取得した一周期ログを一時的に記憶させる。一時記憶部５１は、実行ログ取得部２４で取得された一周期ログを複数の一時記憶領域５３のいずれかに割り当てながら順次記憶する。
【００４０】
比較部２６は、一時記憶部５１のいずれかの一時記憶領域５３に記憶された一周期ログのうち記憶時期が最も古い最古一周期ログと、長期記憶部５２に記憶された時期が最も新しい最新長期記憶一周期ログとを比較する。比較部２６は、実行ログ取得部２４で最新の一周期ログを一時記憶領域５３のいずれかに記憶している間に、一時記憶領域５３の他のいずれかに既に記憶されている最古一周期ログと最新長期記憶一周期ログとを比較する。すなわち、比較部２６は、実行ログ取得部２４で最新の一周期ログが取得されている間に、既に記憶されている最古一周期ログの全体と最新長期記憶一周期ログの全体とを比較する。
【００４１】
長期記憶判断部２７は、この比較部２６で比較した最古一周期ログと最新長期記憶一周期ログとが互いに異なるとき、比較の対象となった最古一周期ログについて長期記憶が必要であると判断する。長期記憶判断部２７は、長期記憶が必要であると判断すると、長期記憶フラグをオンにする。
【００４２】
次に、上記の構成の第２実施形態によるロボット制御システム１０の作動について説明する。第２実施形態によるロボット制御システム１０の作動についても、その処理の流れは第１実施形態とほぼ同一であるので、図８を参照して主に相違点を説明する。
第２実施形態の場合、制御装置１４は図８（Ａ）に示す処理、および図８（Ｂ）に示す処理を並列して実行する。具体的には、制御装置１４は、一周期ログを取得する図８（Ａ）に示す処理と、取得した一周期ログを長期記憶の対象とするか否かを判断する図８（Ｂ）に示す処理とを並列して実行する。
【００４３】
まず、図８（Ａ）に基づいて一周期ログの取得について説明する。ロボット制御システム１０が起動されると、制御装置１４はプログラム実行部２３においてロボット制御プログラムを実行する（Ｓ２０１）。ロボット制御プログラムが実行されると、実行ログ取得部２４は、ロボット制御プログラム４０に含まれるログ取得プログラムにしたがって、実行行および実行変数ログを一周期ログとして取得する（Ｓ２０２）。実行ログ取得部２４は、取得した一周期ログを一時記憶部５１の一時記憶領域５３のいずれかに記憶する（Ｓ２０３）。この場合、実行ログ取得部２４および一時記憶部５１は、複数の一時記憶領域５３のうち空いているいずれかの一時記憶領域５３に取得した一周期ログを記憶する。実行ログ取得部２４は、取得した一周期ログを一時記憶部５１のいずれかの一時記憶領域５３に記憶すると、Ｓ２０１へリターンして、一周期ログの取得を繰り返す。このように、実行ログ取得部２４は、図８（Ｂ）に示す長期記憶の対象とするか否かの判断に関わらず、例えばロボット制御プログラムが終了などのように一周期ログの取得が停止されるまで一周期ログの取得を繰り返す。
【００４４】
次に、図８（Ｂ）に基づいて取得した一周期ログを長期記憶の対象とするか否かの判断の流れについて説明する。制御装置１４は、図８（Ａ）に示す処理にしたがって一周期ログが取得および記憶されると、一時記憶部５１のいずれかの一時記憶領域５３に記憶された一周期ログを読み取り、読み取った一周期ログが長期記憶の対象となるか否かを判断する。具体的には、制御装置１４の比較部２６は、一時記憶部５１から読み取った一周期ログが第１周期目の取得であるか否かを比較部２６において判断する（Ｓ２０４）。図８（Ａ）および図８（Ｂ）に示す処理を並列して実行する場合、図８（Ａ）において最初に一周期ログが取得されると、比較部２６はすぐに取得した一周期ログを一時記憶部５１から読み取り、この一周期ログの判断を開始する。比較部２６は、取得した一周期ログがロボット制御プログラムの実行によって取得された第１周期目の一周期ログであれば（Ｓ２０４：Ｙｅｓ）、一時記憶領域５３に記憶した一周期ログについて長期記憶が必要であると判断し、長期記憶フラグを「オン」にする（Ｓ２０５）。
【００４５】
一方、比較部２６は、一時記憶領域５３に記憶した一周期ログが第１周期目でないと判断すると（Ｓ２０４：Ｎｏ）、一時記憶部５１のいずれの一時記憶領域５３に一周期ログが記憶されているか否か、すなわち一時記憶領域５３のいずれかに最古一周期ログが記憶されているかを判断する（Ｓ２０６）。一時記憶領域５３のいずれかに最古一周期ログが記憶されていないとき（Ｓ２０６：Ｎｏ）、比較部２６における比較の対象が存在しないため、Ｓ２０４にリターンし、Ｓ２０４以降の処理を再実行する。なお、比較部２６は、Ｓ２０４へリターンした後、図８（Ａ）に示す処理によって一時記憶領域５３のいずれかに一周期ログが記憶されるまで待機してもよい。一方、一時記憶領域５３のいずれかに最古一周期ログが記憶されているとき（Ｓ２０６：Ｙｅｓ）、比較部２６は最古一周期ログと最新長期記憶一周期ログとを比較する（Ｓ２０７）。
【００４６】
比較部２６は、最古一周期ログと最新長期記憶一周期ログとが同一であるか否かを判断する（Ｓ２０８）。第２実施形態の場合、比較部２６は、一時記憶領域５３のいずれかに記憶されている最古一周期ログの全体と最新長期記憶一周期ログの全体とを比較する。一時記憶部５１の複数の一時記憶領域５３には、ロボット制御プログラムのログ取得スタート行が実行されるごとに、一周期ログが順次いずれかの一時記憶領域５３に記憶される。そのため、例えば図９に示すように、一時記憶部５１に記憶されている一周期ログは、時間的に最も古いものから最も新しいものまで存在する。また、長期記憶部５２には、時間的に最も古い長期記憶一周期ログ６２から最も新しい最新長期記憶一周期ログ６３まで少なくとも一つ以上の長期記憶一周期ログが記憶されている。比較部２６は、これら一時記憶部５１に記憶されている複数の一周期ログのうち、記憶された時期が古い最古一周期ログ６１について長期記憶部５２に記憶されている最新長期記憶一周期ログ６３と比較する。図９に示す場合、比較部２６は、一時記憶領域５３の最古一周期ログ６１と長期記憶部５２の最新長期記憶一周期ログ６３とを全体的に比較する。第２実施形態の場合、取得される現在の一周期ログ６４は、一時記憶部５１のいずれかの一時記憶領域５３に一旦記憶される。そのため、比較部２６は、最古一周期ログ６１と最新長期記憶一周期ログ６３とを全体的に比較する時間的な余裕が確保される。すなわち、比較部２６は、図８（Ａ）に示す処理にしたがって現在の一周期ログ６４が一時記憶領域５３のいずれかに記憶されている間に、図８（Ｂ）に示す処理にしたがって一時記憶領域５３の他のいずれかに記憶されている最古一周期ログ６１と最新長期記憶一周期ログ６３とを比較する。これにより、制御部２１を構成するＣＰＵなどプロセッサの能力が比較的低く処理速度が遅い場合、あるいはログ取得スタート行が実行されるまでの時間的な間隔が短い場合でも、最古一周期ログ６１と最新長期記憶一周期ログ６３とを確実に比較することができる。
【００４７】
比較部２６による比較の結果、一時記憶領域５３の最古一周期ログ６１が最新長期記憶一周期ログ６３と同一であるとき（Ｓ２０８：Ｙｅｓ）、長期記憶判断部２７は一時記憶領域５３に記憶した最古一周期ログ６１について「長期記憶フラグ」を「オフ」にする（Ｓ２０９）。一方、一時記憶領域５３の最古一周期ログ６１が最新長期記憶一周期ログ６３と異なるとき（Ｓ２０８：Ｎｏ）、長期記憶判断部２７は一時記憶領域５３の最古一周期ログ６１について「長期記憶フラグ」を「オン」にする（Ｓ２１０）。
【００４８】
長期記憶判断部２７は、一時記憶領域５３の最古一周期ログ６１の全体と長期記憶部５２の最新長期記憶一周期ログ６３の全体を比較した結果、異なる実行変数ログまたは実行行があれば長期記憶フラグを「オン」にする。一方、最古一周期ログ６１の全体と最新長期記憶一周期ログ６３の全体とが同一であると比較部２６で判断されたとき、長期記憶判断部２７は長期記憶フラグを「オフ」にする。
【００４９】
長期記憶フラグがオンまたはオフされると、移行処理部２８は長期記憶フラグが「オン」であるか否かを判断する（Ｓ２１１）。移行処理部２８は、長期記憶フラグが「オン」であれば（Ｓ２１１：Ｙｅｓ）、一時記憶部５１の一時記憶領域５３に記憶されている最古一周期ログ６１を長期記憶部５２に書き込む（Ｓ２１２）。また、移行処理部２８は、取得した一周期ログが第１周期目の取得であり（Ｓ２０４：Ｙｅｓ）、Ｓ２０５において長期記憶フラグが「オン」されている場合も、その一周期ログすなわち第１周期目に取得した一周期ログを長期記憶部５２に記憶する。
【００５０】
移行処理部２８は、Ｓ２１２において一時記憶領域５３の最古一周期ログ６１を長期記憶部５２へ書き込んだ後、およびＳ２１１で長期記憶フラグが「オフ」であると判断されると（Ｓ２１１：Ｎｏ）、最古一周期ログ６１が記憶された一時記憶領域５３をクリアする（Ｓ２３１）。すなわち、移行処理部２８は、一時記憶領域５３へ一時的に記憶された最古一周期ログ６１を消去し、次回以降に取得される一周期ログの取得に備える。移行処理部２８は、一時記憶領域５３のクリアが完了すると、Ｓ２０４へリターンする。制御装置１４は、例えばロボット制御プログラムが終了などのように処理が停止されるまでＳ２０４以降の処理を繰り返す。図８（Ｂ）に示す処理にしたがって上記のＳ２０４からＳ２１３の処理を実行している間であっても、実行ログ取得部２４はロボット制御プログラム４０がログ取得スタート行４１へリターンするごとに図８（Ａ）に示す処理にしたがって一周期ログを取得しつつ空いている一時記憶領域５３へ逐次記憶する。
【００５１】
上記の手順によって取得された一周期ログや長期記憶一周期ログは、例えばパソコン１２の液晶ディスプレイと共用される表示部２９に表示される。表示部２９は、長期記憶部５２に最初に記憶された最古の長期記憶一周期ログ６２、一時記憶領域５３に記憶されている現在の一周期ログ６４、または長期記憶部５２に記憶されている全ての長期記憶一周期ログのいずれか一つまたは全部を選択的に表示する。
【００５２】
以上説明した第２実施形態では、実行ログ取得部２４は、ロボット制御プログラム４０の実行にともなってロボット１１、パソコン１２および外部入出力機器１３から出力された信号に基づいて変化しつつロボット制御プログラム４０で使用される実行行および変数を取得する。実行行および実行変数ログは、ログ取得スタート行４１からログ取得エンド行４２までロボット制御プログラム４０が周回するごとに一周期ログとして取得される。比較部２６は、一時記憶領域５３に記憶された最古一周期ログ６１と、長期記憶部５２に蓄積された最新長期記憶一周期ログ６３とを比較する。長期記憶判断部２７は、最古一周期ログ６１と最新長期記憶一周期ログ６３とが異なるとき、長期記憶が必要であると判断し、最古一周期ログ６１を長期記憶部５２に記憶する。すなわち、ロボット制御プログラム４０の実行の一周期において実行行および変数に変化が生じると、その最古一周期ログ６１は、長期記憶一周期ログとして長期記憶部５２に記憶され、次回以降の一周期ログとの比較の対象となる。表示部２９は、長期記憶部５２に最初に記憶された最古の長期記憶一周期ログ６２、一時記憶領域５３に現在記憶されている一周期ログ、または長期記憶部５２に記憶されている全ての長期記憶一周期ログを選択的に表示する。そのため、ロボット制御プログラム４０に基づいてロボット制御システム１０が作動しているときでも、実行行および変数の変化にともなう不適切な挙動は、表示部２９の表示を対比することによって認識される。したがって、短時間でロボット制御プログラム４０の動作を正確かつ容易に確認することができる。これらを対比することにより、ロボット制御プログラム４０のバグであるのか入力された変数に問題があるのかを容易に区別して認識することができる。
【００５３】
また、第２実施形態では、比較部２６は、一時記憶部５１に設けられている複数の一時記憶領域５３のいずれか一つに現在の一周期ログ６４を記憶している間に、一時記憶領域５３に記憶されている最古一周期ログ６１と長期記憶部５２に記憶されている最新長期記憶一周期ログ６３とを比較する。一時記憶部５１に複数の一時記憶領域５３を設け、この一時記憶領域５３のいずれかに記憶された最古一周期ログ６１と長期記憶一周期ログとを比較することにより、比較のために必要な時間は長く確保される。そのため、ログ取得スタート行４１とログ取得エンド行４２との間を短時間で周回するロボット制御プログラム４０からログを取得する場合でも、制御装置１４のプロセッサの性能を高めることなくロボット制御プログラム４０の動作を正確に比較することができる。さらに、比較される最古一周期ログ６１が最新長期記憶一周期ログ６３と同一の場合、一時記憶部５１の一時記憶領域５３に記憶された最古一周期ログ６１は長期記憶部５２に記憶されることなくクリアされる。すなわち、最新長期記憶一周期ログ６３と重複する最古一周期ログ６１は長期記憶部５２に記憶されることなく、前回の周期との間で変化が生じた最古一周期ログ６１のみが長期記憶一周期ログとして長期記憶部５２に記憶される。したがって、長期記憶部５２の記憶容量および制御装置１４の処理能力の増大を招くことなく、挙動の変化の変遷を追跡することができる。
【００５４】
なお、第２実施形態では、Ｓ２０４において一周期ログの取得は１周期目であるか否かを判断している。しかし、Ｓ２０４の処理を省略してもよい。この場合、１周期目に取得した一周期ログは、比較の対象となる最新の長期記憶一周期ログが存在しないため、この最新の長期記憶一周期ログと必然的に異なることになる。そのため、Ｓ２０４の処理を省略しても、Ｓ２０７において１周期目に取得した最古一周期ログはＳ２１０において長期フラグが「オン」となる。したがって、Ｓ２０４の処理を省略しても、上記の第２実施形態と同様の処理を実行することができる。
【００５５】
（第３実施形態）
第３実施形態によるロボット制御システムを図１０に示す。
図１０に示す第３実施形態によるロボット制御システム１０の場合、制御装置１４は、第１実施形態の比較部２６および長期記憶判断部２７に対応する構成を有していない。また、第３実施形態の場合、記憶部７０は、一連の複数の記憶領域を有している。記憶部７０は、例えばバッテリでバックアップされたＲＡＭ、ＥＰＲＯＭあるいはＨＤＤなどで構成されている。記憶部７０の複数の記憶領域７１、７２、７３・・・は、いずれも上述の第１実施形態や第２実施形態における一時記憶領域に類似するとともに、長期保護フラグがオンになると、その記憶領域が長期的に保護される長期保護領域に移行する。
【００５６】
第３実施形態では、ロボット制御プログラムを実行すると、第１実施形態と同様にログ取得プログラムにしたがって実行ログ取得部２４によって実行行および実行変数ログが一周期ログとして取得される。取得された一周期ログは、図１１に示すように記憶部７０の先頭から順に記憶される。例えば図１１に示す場合、第１周期目の一周期ログが第１周期ログとして取得されると、記憶部７０のアドレス「０００１」から設定されている第一記憶領域７１に第１周期ログが書き込まれる。この第１周期ログは、第２周期目以降に取得される一周期ログとの比較の対象として長期保護が必要となる。そのため、移行処理部２８は、この第１周期ログが記憶された第一記憶領域７１について、長期保護領域とするために「長期保護フラグ」を「オン」にする。図１１に示す場合、アドレス「０００１」に実行行および実行変数ログとして「３行目  Ｉ［０］＝３」が記憶され、アドレス「０００２」、「０００３」、「０００４」、「０００５」に実行行である「４行目」、「５行目」、「６行目」、「１３行目」が順に記憶される。そして、これらアドレス「０００１」から「０００５」で設定された第一記憶領域７１は、長期保護領域となる。
【００５７】
次に、第２周期目の一周期ログが第２周期として取得されると、第一記憶領域７１の次のアドレス「０００６」に位置する第二記憶領域７２に第２周期が一時的に書き込まれる。移行処理部２８は、第２周期を取得するとき、第一記憶領域７１に記憶した第１周期ログと比較しながら第２周期を第二記憶領域７２に記憶する。比較部２６は、第１実施形態と同様に、第２周期の実行行または実行変数ログを取得するごとに、一行ずつ第１周期ログの実行行または実行変数ログと比較する。
【００５８】
そして、移行処理部２８は、第二記憶領域７２に一時的に記憶した第２周期と、長期保護領域に設定した第一記憶領域７１に記憶した第１周期ログとを比較した結果、第２周期が第１周期ログと一致するとき、取得した第２周期が記憶された第二記憶領域７２を更新することなく次回すなわち第３周期の一周期ログである第３周期ログの取得へ移行する。この場合、移行処理部２８は、第３周期で取得される第３周期ログを、第２周期ログが記憶されたアドレス「０００６」以降の第二記憶領域７２に記憶する。移行処理部２８は、第３周期ログを第二記憶領域７２に記憶するとき、第３周期ログと長期保護領域となった第一記憶領域７１に記憶された第１周期ログとを比較する。ここで、第二記憶領域７２の更新とは、第二記憶領域７２に記憶された第２周期ログをクリアした後に取得する第３周期ログを書き込む構成、または第二記憶領域７２に記憶された第２周期ログをクリアすることなく第３周期ログを上書きする構成のいずれであってもよい。
【００５９】
一方、移行処理部２８は、第二記憶領域７２に一時的に記憶した第２周期ログと、第一記憶領域７１に記憶した第１周期ログとを比較した結果、第２周期ログが第１周期ログと異なるとき、第２周期ログを記憶した第二記憶領域７２を長期保護領域とする「長期保護フラグ」を「オン」にして、次回すなわち第３周期ログの取得へ移行する。この場合、移行処理部２８は、第３周期で取得される第３周期ログを、第２周期ログが記憶された第二記憶領域７２の次のアドレスに位置するアドレス「０００Ｂ」以降の第三記憶領域７３に記憶する。移行処理部２８は、第３周期ログを第三記憶領域７３に記憶するとき、第３周期ログと長期保護領域となった第二記憶領域７２に記憶された第２周期ログとを比較する。
【００６０】
以上のような第３実施形態を一般化すると、取得したｎ周期目の一周期ログであるｎ周期ログを第ｍ＋１記憶領域に記憶しつつ、第ｍ記憶領域において長期保護の対象として記憶された一周期ログと比較する。比較の結果、ｎ周期ログが第ｍ記憶領域の一周期ログと一致すれば、ｎ＋１周期ログの取得へ移行し、ｎ周期ログが記憶されていた第ｍ＋１記憶領域にｎ＋１周期ログが書き込まれる。一方、比較の結果、ｎ周期ログが第ｍ記憶領域の一周期ログと異なれば、ｎ周期ログが記憶された第ｍ＋１記憶領域を長期保護領域とする長期保護フラグがオンされた後、第ｍ＋１記憶領域の次のアドレスに位置する第ｍ＋２記憶領域に取得したｎ＋１周期目ログが書き込まれる。その結果、記憶部７０は、前後の周期において取得された一周期ログが異なるごとに、後の一周期ログが記憶された記憶領域が長期保護領域として設定され、記憶領域のアドレスが進行していく。したがって、前後の周期において取得された一周期ログが重複する場合、後の一周期ログは廃棄され、前後の周期において取得された一周期ログが異なる場合、後の一周期ログは長期保護の対象となって保護される。
【００６１】
上記の手順によって取得された一周期ログは、例えばパソコン１２の液晶ディスプレイと共用される表示部２９に表示される。表示部２９は、長期保護領域として最初に設定された記憶領域すなわち第一記憶領域７１に記憶されている第１周期目に取得された第１周期ログ、記憶部７０に記憶されている最新の一周期ログすなわちｎ周期ログ、または長期保護領域として設定された全ての記憶領域に記憶されている一周期ログのいずれか一つまたは全部を選択的に表示する。
【００６２】
第３実施形態では、実行ログ取得部２４は、ロボット制御プログラムの実行にともなってロボット１１、パソコン１２および外部入出力機器１３から出力された信号に基づいて変化しつつロボット制御プログラムで使用される実行行および変数を取得する。実行変数ログは、ログ取得スタート行からログ取得エンド行までロボット制御プログラムが周回するごとに取得される。移行処理部２８は、ｎ周期目に取得したｎ周期ログが第ｍ記憶領域において長期保護の対象となった一周期ログと一致するとき、ｎ周期ログが記憶された第ｍ＋１記憶領域を更新せずに次回の一周期ログの取得へ移行し、ｎ周期ログが第ｍ記憶領域において長期保護の対象となった一周期ログと異なるとき、ｎ周期ログを記憶した第ｍ＋１記憶領域を長期保護領域とする。すなわち、ロボット制御プログラムの実行のｎ周期において、第ｍ記憶領域で長期保護の対象となった一周期ログとの間で実行行および変数に変化が生じると、取得されるｎ周期ログは、第ｍ＋１記憶領域において長期保護領域として保護される。そして、ｎ周期に続くｎ＋１周期ログは、第ｍ＋１記憶領域の次のアドレスに位置する第ｍ＋２記憶領域に記憶される。長期保護領域に記憶されたｎ周期ログは、次回以降の一周期ログとの比較の対象となる。表示部２９は、第１周期目の第１周期ログ、記憶部７０に記憶されている最新の一周期ログ、または全ての記憶領域に記憶されている一周期ログを選択的に表示する。そのため、ロボット制御プログラムに基づいてロボット制御システム１０が作動しているときでも、実行行および変数の変化にともなう不適切な挙動は、表示部２９に表示された第１周期ログ、最新の一周期ログ、または全ての長期保護の対象となっている一周期ログなどを対比することによって認識される。したがって、短時間でロボット制御プログラムの動作を正確かつ容易に確認することができる。
【００６３】
また、第３実施形態では、移行処理部２８は、一周期ログに含まれる対応するロボット制御プログラムの一行ごとに、ｎ周期目ログと第ｍ記憶領域に記憶されている長期保護対象の一周期ログとを逐次比較する。対応するロボット制御プログラムの一行ごとに長期記憶一周期ログと比較することにより、比較は短時間で実行される。そのため、ログ取得スタート行とログ取得エンド行との間を短時間で周回するロボット制御プログラムからログを取得する場合でも、ロボット制御プログラムの動作を正確に比較することができる。さらに、取得される一周期ログが長期保護領域に記憶されている長期記憶一周期ログと同一の場合、記憶領域に記憶された一周期ログは次回の一周期ログによって上書きされる。そのため、一周期ログが変化するごとに、長期保護領域が形成されつつ、新たな一周期ログが取得される。すなわち、最新の長期保護領域に記憶された一周期ログと重複する一周期ログが記憶された記憶領域は長期保護領域と設定されることなく、前回の周期との間で一周期ログに変化が生じたときのみ長期保護領域が設定される。したがって、記憶容量の増大を招くことなく単一の記憶部７０を一時記憶のための領域および長期保護のための領域として共用しつつ、挙動の変化の変遷を追跡することができる。
【００６４】
以上説明した本発明は、上記実施形態に限定されるものではなく、その要旨を逸脱しない範囲で種々の実施形態に適用可能である。
【符号の説明】
【００６５】
図面中、１０はロボット制御プログラム、１１はロボット、１２はパソコン（電子計算機）、１３は外部入出力機器、１４は制御装置、２３はプログラム実行部（プログラム実行手段）、２４は実行ログ取得部（実行ログ取得手段）、２６は比較部（比較手段）、２７は長期記憶判断部（長期記憶判断手段）、２８は移行処理部（移行処理手段）、２９は表示部（表示手段）、３１、５１は一時記憶部（一時記憶手段）、３２、５２は長期記憶部（長期記憶手段）、５３は一時記憶領域、７０は記憶部、７１、７２、７３は記憶領域を示す。
【図１】
2010205128.tif 000003
【図２】
2010205128.tif 000004
【図３】
2010205128.tif 000005
【図４】
2010205128.tif 000006
【図５】
2010205128.tif 000007
【図６】
2010205128.tif 000008
【図７】
2010205128.tif 000009
【図８】
2010205128.tif 000010
【図９】
2010205128.tif 000011
【図１０】
2010205128.tif 000012
【図１１】
2010205128.tif 000013