(57)【特許請求の範囲】
【請求項１】
制御装置が実行するシーケンスプログラムのデバッグを支援するデバッグ支援装置としてコンピュータを機能させるデバッグ支援プログラムであって、
被制御装置を単位とする処理が各々に記載された複数の処理ブロックを含む前記シーケンスプログラムについて、複数の前記処理ブロックに記載されている複数の変数の中から依存関係を有する前記変数の組を抽出するステップと、
前記処理ブロックに記載されている複数の前記変数の各々への値の入力について記録されたログ情報を収集するステップと、
収集された前記ログ情報の内容に基づいて前記依存関係についての抽出結果を修正するステップと、
修正された前記抽出結果を提示するステップと、を前記コンピュータに実行させ、
前記依存関係は、２以上の変数において、ある変数の値によって他の変数の値が決定される関係であることを特徴とするデバッグ支援プログラム。
【請求項２】
複数の被制御装置のうちの１つである第１の被制御装置についての処理が記載された処理ブロックを第１の処理ブロック、前記複数の被制御装置のうちの他の１つである第２の被制御装置についての処理が記載された処理ブロックを第２の処理ブロックとして、
前記第１の処理ブロックにおいて前記第１の被制御装置による出力に割り当てられている変数へ値が入力されたことによる出力制御に起因して、前記第２の処理ブロックにおいて前記第２の被制御装置への入力に割り当てられている変数へ値が入力される関係である因果関係を有する変数の組を、収集された前記ログ情報から抽出するステップを前記コンピュータに実行させ、
前記因果関係についての抽出結果を前記依存関係についての抽出結果へ追加することによって、前記依存関係についての抽出結果を修正することを特徴とする請求項１に記載のデバッグ支援プログラム。
【請求項３】
前記第１の処理ブロックに記載されている変数へ値が入力された日時と前記第２の処理ブロックに記載されている変数へ値が入力された日時との時間差を算出し、前記時間差に基づいて前記因果関係の有無を判定することを特徴とする請求項２に記載のデバッグ支援プログラム。
【請求項４】
算出された時間差の平均値と閾値とを比較した結果に基づいて前記因果関係の有無を判定することを特徴とする請求項３に記載のデバッグ支援プログラム。
【請求項５】
算出された時間差の標準偏差に基づいて前記因果関係の有無を判定することを特徴とする請求項３に記載のデバッグ支援プログラム。
【請求項６】
前記依存関係についての抽出結果からの削除の対象とする変数の組を、収集された前記ログ情報から検出するステップを前記コンピュータに実行させ、
前記削除の対象として検出された変数の組を前記依存関係についての抽出結果から削除することによって、前記依存関係についての抽出結果を修正することを特徴とする請求項１に記載のデバッグ支援プログラム。
【請求項７】
複数の被制御装置のうちの１つである第１の被制御装置についての処理が記載された処理ブロックを第１の処理ブロック、前記複数の被制御装置のうちの他の１つである第２の被制御装置についての処理が記載された処理ブロックを第２の処理ブロックとして、
前記第１の処理ブロックに記載されている変数へ値が入力された日時と前記第２の処理ブロックに記載されている変数へ値が入力された日時との時間差を算出し、前記時間差に基づいて前記削除の対象か否かを判定することを特徴とする請求項６に記載のデバッグ支援プログラム。
【請求項８】
算出された時間差の平均値と閾値とを比較した結果に基づいて前記削除の対象か否かを判定することを特徴とする請求項７に記載のデバッグ支援プログラム。
【請求項９】
算出された時間差の標準偏差に基づいて前記削除の対象か否かを判定することを特徴とする請求項７に記載のデバッグ支援プログラム。
【請求項１０】
制御装置が実行するシーケンスプログラムのデバッグを支援するデバッグ支援装置としてコンピュータを機能させるデバッグ支援プログラムであって、
前記シーケンスプログラムは、複数の被制御装置のうちの１つについての処理が記載された第１の処理ブロックと、前記複数の被制御装置のうちの他の１つについての処理が記載された第２の処理ブロックとを含み、
前記第１の処理ブロックおよび前記第２の処理ブロックに記載されている複数の変数の各々への値の入力について記録されたログ情報を基に、前記第１の処理ブロックの前記変数へ値が入力されたことによる出力制御に起因して前記第２の処理ブロックの前記変数へ値が入力される関係である因果関係の有無を判断し、前記因果関係を有する前記変数の組を前記ログ情報から抽出するステップを前記コンピュータに実行させることを特徴とするデバッグ支援プログラム。
【請求項１１】
請求項１から１０のいずれか１つに記載のデバッグ支援プログラムが記憶され、コンピュータによる読み取りが可能とされたことを特徴とする記憶媒体。
【請求項１２】
制御装置が実行するシーケンスプログラムのデバッグを支援するデバッグ支援装置であって、
被制御装置を単位とする処理が各々に記載された複数の処理ブロックを含む前記シーケンスプログラムについて、複数の前記処理ブロックに記載されている複数の変数の中から依存関係を有する前記変数の組を抽出する依存関係抽出部と、
前記処理ブロックに記載されている複数の前記変数の各々への値の入力について記録されたログ情報を収集するログ情報収集部と、
収集された前記ログ情報の内容に基づいて前記依存関係についての抽出結果を修正する修正部と、
修正された前記抽出結果を提示する提示部と、を備え、
前記依存関係は、２以上の変数において、ある変数の値によって他の変数の値が決定される関係であることを特徴とするデバッグ支援装置。
【請求項１３】
制御装置が実行するシーケンスプログラムのデバッグをデバッグ支援装置が支援するデバッグ支援方法であって、
被制御装置を単位とする処理が各々に記載された複数の処理ブロックを含む前記シーケンスプログラムについて、複数の前記処理ブロックに記載されている複数の変数の中から依存関係を有する前記変数の組を抽出する工程と、
前記処理ブロックに記載されている複数の前記変数の各々への値の入力について記録されたログ情報を収集する工程と、
収集された前記ログ情報の内容に基づいて前記依存関係についての抽出結果を修正する工程と、
修正された前記抽出結果を提示する工程と、を含み、
前記依存関係は、２以上の変数において、ある変数の値によって他の変数の値が決定される関係であることを特徴とするデバッグ支援方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、シーケンスプログラムのデバッグを支援するデバッグ支援プログラム、記憶媒体、デバッグ支援装置およびデバッグ支援方法に関する。
【背景技術】
【０００２】
従来、工場などに設置される生産設備の制御において、プログラマブルロジックコントローラ（Programmable  Logic  Controller：ＰＬＣ）をはじめとする制御装置が使用されている。制御装置は、シーケンスプログラムを実行することによって、被制御装置を制御する。シーケンスプログラムの動作を検証するデバッグでは、被制御装置の状態またはシーケンスプログラムの実行によって変化する変数の値を確認する作業が行われる。【０００３】
特許文献１には、プログラムに記載される変数について、各変数の依存関係を示す有向グラフを抽出して、抽出された有向グラフを表示するプログラム解析支援装置が開示されている。２つの変数において、一方の変数の値によって他方の変数の値が決定される場合に、当該２つの変数は依存関係を有する。特許文献１にかかるプログラム解析支援装置は、制御装置のユーザによって指定された変数についての有向グラフを抽出することによって、プログラム解析における作業の効率向上が図られている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】国際公開第２０１０／９５２８９号
【発明の概要】
【発明が解決しようとする課題】
【０００５】
生産設備の多くは、複数の装置により構成される。制御装置がシーケンスプログラムを実行することによって、生産設備を構成する複数の被制御装置の各々は、生産工程に従って動作するように制御される。以下の説明では、制御装置が実行するシーケンスプログラムのうち、被制御装置を単位とする処理が記載されたシーケンスプログラムを「処理ブロック」と称することがある。複数の被制御装置を制御する制御装置は、被制御装置ごとの処理ブロックを含むシーケンスプログラムを実行する。【０００６】
生産工程の中に、複数の被制御装置のうちの１つである装置Ａが動作したことに起因して、複数の被制御装置のうちの他の１つである装置Ｂが動作するという工程が含まれるとする。この場合、装置Ｂの動作に問題が生じたとしても、装置Ｂについての処理ブロックではなく、装置Ａについての処理ブロックのほうにバグが存在していることがあり得る。上記の特許文献１にかかる従来技術では、処理ブロックに記載されている変数同士の依存関係を抽出するため、問題が生じた装置Ｂについての処理ブロックが解析されてから、装置Ｂの動作に関係する装置Ａについての処理ブロックが解析される。従来技術によると、互いに異なる処理ブロックに記載されている変数同士の関係については手動により抽出する必要があることから、デバッグにおける作業の効率が低下するという問題があった。【０００７】
本開示は、上記に鑑みてなされたものであって、デバッグにおける作業の効率向上を可能とするデバッグ支援プログラムを得ることを目的とする。
【課題を解決するための手段】
【０００８】
上述した課題を解決し、目的を達成するために、本開示にかかるデバッグ支援プログラムは、制御装置が実行するシーケンスプログラムのデバッグを支援するデバッグ支援装置としてコンピュータを機能させる。本開示にかかるデバッグ支援プログラムは、被制御装置を単位とする処理が各々に記載された複数の処理ブロックを含むシーケンスプログラムについて、複数の処理ブロックに記載されている複数の変数の中から依存関係を有する変数の組を抽出するステップと、処理ブロックに記載されている複数の変数の各々への値の入力について記録されたログ情報を収集するステップと、収集されたログ情報の内容に基づいて依存関係についての抽出結果を修正するステップと、修正された抽出結果を提示するステップと、をコンピュータに実行させる。依存関係は、２以上の変数において、ある変数の値によってその他の変数の値が決定される関係である。
【発明の効果】
【０００９】
本開示にかかるデバッグ支援プログラムは、デバッグにおける作業の効率向上が可能となるという効果を奏する。
【図面の簡単な説明】
【００１０】
【図１】実施の形態１にかかるデバッグ支援装置の機能構成を示す図
【図２】実施の形態１にかかるデバッグ支援装置の機能を実現するためのハードウェア構成を示す図
【図３】実施の形態１にかかるデバッグ支援装置によるデバッグ支援の対象であるシーケンスプログラムについて説明するための第１の図
【図４】実施の形態１にかかるデバッグ支援装置によるデバッグ支援の対象であるシーケンスプログラムについて説明するための第２の図
【図５】実施の形態１にかかるデバッグ支援装置の動作手順を説明するフローチャート
【図６】実施の形態１にかかるデバッグ支援装置が有するログ情報解析部によって検出されたログ情報の例を示す図
【図７】実施の形態１にかかるデバッグ支援装置が有する依存関係抽出部による抽出結果の例を示す図
【図８】実施の形態１にかかるデバッグ支援装置が有する因果関係抽出部による抽出結果の例を示す図
【図９】実施の形態１にかかるデバッグ支援装置が有する依存関係修正部によって修正された抽出結果の例を示す図
【図１０】実施の形態２にかかるデバッグ支援装置の機能構成を示す図
【図１１】実施の形態２にかかるデバッグ支援装置によるデバッグ支援の対象であるシーケンスプログラムについて説明するための第１の図
【図１２】実施の形態２にかかるデバッグ支援装置によるデバッグ支援の対象であるシーケンスプログラムについて説明するための第２の図
【図１３】実施の形態２にかかるデバッグ支援装置の動作手順を説明するフローチャート
【図１４】実施の形態２にかかるデバッグ支援装置が有するログ情報解析部によって検出されたログ情報の例を示す図
【図１５】実施の形態２にかかるデバッグ支援装置が有する依存関係抽出部による抽出結果の例を示す図
【図１６】実施の形態２にかかるデバッグ支援装置が有する依存関係修正部によって修正された抽出結果の例を示す図
【発明を実施するための形態】
【００１１】
以下に、実施の形態にかかるデバッグ支援プログラム、記憶媒体、デバッグ支援装置およびデバッグ支援方法を図面に基づいて詳細に説明する。
【００１２】
実施の形態１．
図１は、実施の形態１にかかるデバッグ支援装置の機能構成を示す図である。実施の形態１にかかるデバッグ支援装置１は、制御装置であるＰＬＣ３が実行するシーケンスプログラムのデバッグを支援する。ＰＬＣ３には、複数の装置４が接続されている。ＰＬＣ３は、シーケンスプログラムを実行することにより、被制御装置である各装置４を制御する。図１には、複数の装置４のうち２つの装置４Ａ，４Ｂを示している。ＰＬＣ３が実行するシーケンスプログラムは、複数の処理ブロックを含む。複数の処理ブロックの各々には、被制御装置を単位とする処理が記載されている。
【００１３】
デバッグ支援装置１は、シーケンスプログラムのデバッグを支援するためのプログラムであるデバッグ支援プログラムがインストールされたコンピュータシステムである。コンピュータシステムは、パーソナルコンピュータまたは汎用コンピュータである。図１には、コンピュータシステムが有するハードウェア構成を使用して実現される機能構成を示している。
【００１４】
デバッグ支援装置１は、依存関係を有する変数の組をシーケンスプログラムから抽出する依存関係抽出部１６と、ＰＬＣ３からログ情報を収集するログ情報収集部１７と、収集されたログ情報を解析するログ情報解析部１８と、因果関係を有する変数の組をログ情報から抽出する因果関係抽出部１９と、依存関係についての抽出結果を修正する修正部である依存関係修正部２０と、修正された抽出結果を提示する提示部である依存関係提示部２１と、を有する。各機能部の詳細については後述する。
【００１５】
図２は、実施の形態１にかかるデバッグ支援装置の機能を実現するためのハードウェア構成を示す図である。デバッグ支援装置１として機能するコンピュータシステムは、各種処理を実行するプロセッサ１０と、内蔵メモリであるメモリ１１と、デバッグ支援装置１への入力のための入力装置１２と、情報を表示する表示装置１３と、各種情報を保持する記憶装置１４と、デバッグ支援装置１の外部の装置との通信を行う通信装置１５とを有する。
【００１６】
プロセッサ１０は、ＣＰＵ（Central  Processing  Unit）である。プロセッサ１０は、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、又はＤＳＰ（Digital  Signal  Processor）であっても良い。メモリ１１は、ＲＡＭ（Random  Access  Memory）、ＲＯＭ（Read  Only  Memory）、フラッシュメモリ、ＥＰＲＯＭ（Erasable  Programmable  Read  Only  Memory）またはＥＥＰＲＯＭ（登録商標）（Electrically  Erasable  Programmable  Read  Only  Memory）である。記憶装置１４は、ＨＤＤ（Hard  Disk  Drive）またはＳＳＤ（Solid  State  Drive）である。デバッグ支援プログラムは、記憶装置１４に格納される。プロセッサ１０は、記憶装置１４に格納されているデバッグ支援プログラムをメモリ１１に読み出して実行する。
【００１７】
入力装置１２は、キーボード、マウスあるいはタッチパネルといった装置である。通信装置１５は、デバッグ支援装置１の外部の装置との接続インタフェースである。通信装置１５は、ＰＬＣ３との通信を行う。表示装置１３は、画面にて情報を表示する。
【００１８】
デバッグ支援プログラムは、コンピュータシステムによる読み取りが可能とされた記憶媒体に記憶されたものであっても良い。デバッグ支援装置１は、記憶媒体に記録されたデバッグ支援プログラムをメモリ１１へ格納しても良い。記憶媒体は、フレキシブルディスクである可搬型記憶媒体、あるいは半導体メモリであるフラッシュメモリであっても良い。デバッグ支援プログラムは、他のコンピュータあるいはサーバ装置から通信ネットワークを介してコンピュータシステムへインストールされても良い。
【００１９】
依存関係抽出部１６、ログ情報収集部１７、ログ情報解析部１８、因果関係抽出部１９および依存関係修正部２０は、プロセッサ１０とソフトウェアの組み合わせによって実現される。依存関係抽出部１６、ログ情報収集部１７、ログ情報解析部１８、因果関係抽出部１９および依存関係修正部２０は、プロセッサ１０およびファームウェアの組み合わせによって実現されても良く、プロセッサ１０、ソフトウェアおよびファームウェアの組み合わせによって実現されても良い。ソフトウェアまたはファームウェアは、プログラムとして記述され、記憶装置１４に格納される。依存関係提示部２１の機能は、表示装置１３を使用して実現される。
【００２０】
図３は、実施の形態１にかかるデバッグ支援装置によるデバッグ支援の対象であるシーケンスプログラムについて説明するための第１の図である。図３は、装置４Ａの処理が記載された処理ブロックと装置４Ｂの処理が記載された処理ブロックとによるシーケンス制御の例を示すシーケンス図である。
【００２１】
装置４Ａは、ステップＳ１において、装置４Ａを構成する機器の入力に割り当てられた端子の入力リレーをオンにするための信号をＰＬＣ３へ送信する。ＰＬＣ３は、入力リレーがオンである間、装置４Ａを構成する機器の出力に割り当てられた端子の出力リレーをオンにする。ＰＬＣ３は、ステップＳ２において、出力制御のための信号を装置４Ａへ送信する。
【００２２】
ここで、装置４Ａの出力に続いて装置４Ｂが入力を行うとする。装置４Ｂの当該入力は、装置４Ａからの信号を受けて行われるものではなく、装置４Ａの動作に起因するものとする。例を挙げると、装置４Ａの動作による動力を受けて装置４Ｂが動作する場合である。装置４Ｂは、ステップＳ３において、装置４Ｂを構成する機器の入力に割り当てられた端子の入力リレーをオンにするための信号をＰＬＣ３へ送信する。ＰＬＣ３は、入力リレーがオンである間、装置４Ｂを構成する機器の出力に割り当てられた端子の出力リレーをオンにする。ＰＬＣ３は、ステップＳ４において、出力制御のための信号を装置４Ｂへ送信する。
【００２３】
図４は、実施の形態１にかかるデバッグ支援装置によるデバッグ支援の対象であるシーケンスプログラムについて説明するための第２の図である。実施の形態１では、シーケンスプログラムは、ラダー言語を使用して記述されたラダープログラムとする。図４は、図３に示すシーケンス図をラダープログラムに置き換えた例である。シーケンスプログラムは、ラダー言語以外の言語で記述されたプログラムであっても良く、構造化ラダー言語で記述されたプログラム、あるいはファンクションブロックダイアグラム言語で記述されたプログラムであっても良い。
【００２４】
ラダープログラムは、複数の回路ブロックによって構成される。回路ブロックは、接点が直列あるいは並列に接続されたひとかたまりの回路である条件部と、１つ以上のコイルが直列に接続されたひとかたまりの回路である動作部とを組み合わせて構成される。動作部は、条件部の接点が導通されたときに実行される演算処理の内容を表す。
【００２５】
ラダー言語を使用して作成されたプログラムコードは、基本的な回路要素である回路記号および変数を含む。回路記号にはＰＬＣ３での処理を表す接点およびコイルが含まれる。変数は、シーケンスプログラム上における制御の対象であって、回路記号で示された処理の対象を表している。変数は、回路要素の種別を表すアルファベットと、構成要素の識別のための数字との組み合わせにより記述される。各変数は、ＰＬＣ３が有する複数のデータ領域の各々に対応付けられている。各メモリ領域には、回路要素ごとにおける演算データが格納される。演算データには、オンとオフとの区別を表現するビットデータと、数値を表現するワードデータとが含まれる。ユーザは、処理の対象ごとに、変数に含まれる数字を任意に割り当てることができる。なお、ラダープログラムのプログラミングにおいて使用される変数、あるいは変数が対応付けられているデータ領域は、「デバイス」と称される。
【００２６】
図４において、回路ブロック３１は、装置４Ａの処理ブロックを構成する回路ブロックとする。回路ブロック３２は、装置４Ｂの処理ブロックを構成する回路ブロックとする。回路ブロック３１は、入力デバイスであるデバイスＸ１と、出力デバイスであるデバイスＹ０とを有する。回路ブロック３２は、入力デバイスであるデバイスＸ１０と、出力デバイスであるデバイスＹ１０とを有する。入力デバイスは、装置４への入力に割り当てられている変数あるいはデータ領域である。出力デバイスは、装置４による出力に割り当てられている変数あるいはデータ領域である。
【００２７】
回路ブロック３１では、装置４Ａの入力のオンオフの切り換わりによるデバイスＸ１の値の変化に従って、デバイスＹ０の値が変化して、装置４Ａの出力のオンオフが切り換わる。デバイスＸ１の値に従ってデバイスＹ０の値が決定されることから、デバイスＸ１とデバイスＹ０とは、互いに依存関係を有する。
【００２８】
回路ブロック３２では、装置４Ｂの入力のオンオフの切り換わりによるデバイスＸ１０の値の変化に従って、デバイスＹ１０の値が変化して、装置４Ｂの出力のオンオフが切り換わる。回路ブロック３２においても、回路ブロック３１の場合と同様に、デバイスＸ１０とデバイスＹ１０とは、互いに依存関係を有する。
【００２９】
次に、デバッグ支援装置１の動作について説明する。図５は、実施の形態１にかかるデバッグ支援装置の動作手順を説明するフローチャートである。ステップＳ１１において、依存関係抽出部１６は、処理ブロックから依存関係を有する変数の組を抽出する。依存関係抽出部１６は、シーケンスプログラムに含まれる複数の処理ブロックの各々について、抽出を行う。依存関係とは、２以上の変数において、ある変数の値によってその他の変数の値が決定される関係とする。例えば、依存関係抽出部１６は、ラダープログラムにおいて接続線によって互いに接続されているデバイスの組を、依存関係を有するデバイスの組として抽出する。依存関係の有無を判断するための方法は、任意であるものとする。依存関係抽出部１６は、ユーザによって指定された変数を起点として、変数の組を抽出しても良い。
【００３０】
ステップＳ１２において、ログ情報収集部１７は、処理ブロックに記載されている複数の変数の各々への値の入力について記録されたログ情報を収集する。ログ情報収集部１７は、ＰＬＣ３に保持されている実行ログをＰＬＣ３から取得する。実行ログには、変数を表す情報と、変数に値が入力された日時のデータとが含まれる。ログ情報収集部１７によって収集されるログ情報には、少なくとも、変数を表す情報と、日時のデータと、処理ブロック名とが含まれる。処理ブロック名は、シーケンスプログラムに含まれる各処理ブロックに付与されている名称である。実行ログに含まれるその他の情報は、ログ情報に含まれなくても良い。
【００３１】
ログ情報の収集方法としては、収集対象としてあらかじめ決められたデバイスについて、デバイスへの入力を伴う処理が実行されるイベントを基に、イベントの時刻とデバイスへ入力された値とを紐づけて収集する方法が挙げられる。ログ情報収集部１７は、ＰＬＣ３によって管理されるすべてのデバイスをロギング対象として、イベントの時刻とデバイスへ入力された値とを紐づけることによってログ情報を収集しても良い。ログ情報収集部１７は、シーケンスプログラムにて使用されているデバイスをロギング対象として、イベントの時刻とデバイスへ入力された値とを紐づけることによってログ情報を収集しても良い。以下の説明では、ログ情報収集部１７は、収集対象としてあらかじめ決められたデバイスが処理されたイベントを基に、イベントの時刻とデバイスへ入力された値とを紐づけて収集するものとする。
【００３２】
ステップＳ１３において、ログ情報解析部１８は、ステップＳ１２において収集されたログ情報を解析する。ログ情報解析部１８は、ログ情報を解析することによって、ログ情報の中から、入力デバイスについてのログ情報と出力デバイスについてのログ情報とを検出する。以下の説明において、入力デバイスについてのログ情報を入力デバイス情報、出力デバイスについてのログ情報を出力デバイス情報と称することがある。
【００３３】
図６は、実施の形態１にかかるデバッグ支援装置が有するログ情報解析部によって検出されたログ情報の例を示す図である。「処理ブロックＡ」は、装置４Ａの処理ブロック名とする。「処理ブロックＢ」は、装置４Ｂの処理ブロック名とする。
【００３４】
図６に示す「入力デバイス情報」の「トリガ発生デバイス」は、値が入力された入力デバイスを表す。図６に示す「出力デバイス情報」の「トリガ発生デバイス」は、値が入力された出力デバイスを表す。図６において、「日時」は、「トリガ発生デバイス」に値が入力された日時を表す。図６において、例えば、日時「２０ｘｘ／ｘｘ／ｘｘ  ００：００：００」、トリガ発生デバイス「Ｘ１」の入力デバイス情報ｄ１は、２０ｘｘ年ｘｘ月ｘｘ日の００時００分００秒において、デバイスＸ１に値が入力されたことを示す。なお、図６には、検出されたログ情報のうち、デバイスＸ１およびデバイスＸ１０についての入力デバイス情報と、デバイスＹ０およびデバイスＹ１０についての出力デバイス情報とを示している。
【００３５】
ステップＳ１４において、因果関係抽出部１９は、ログ情報から因果関係を有する変数の組を抽出する。因果関係とは、互いに異なる処理ブロックに記載されている２以上の変数において、出力に割り当てられたある変数へ値が入力されたことによる出力制御に起因して、入力に割り当てられた変数であるその他の変数へ値が入力される関係とする。
【００３６】
ここで、複数の被制御装置のうちの１つである第１の被制御装置が装置４Ａ、第１の被制御装置についての処理が記載された処理ブロックである第１の処理ブロックが「処理ブロックＡ」、複数の被制御装置のうちの他の１つである第２の被制御装置が装置４Ｂ、第２の被制御装置についての処理が記載された処理ブロックである第２の処理ブロックが「処理ブロックＢ」であるとする。かかる例において、処理ブロックＡにおいて装置４Ａによる出力に割り当てられている変数へ値が入力されたことによる出力制御に起因して、処理ブロックＢにおいて装置４Ｂへの入力に割り当てられている変数へ値が入力される関係が、因果関係である。因果関係抽出部１９は、ログ情報を基に因果関係の有無を判断し、因果関係を有する変数の組をログ情報から抽出する。
【００３７】
図３および図４に示す例では、デバイスＹ０へ値が入力されたことによる装置４Ｂの出力制御に起因して、装置４Ａの入力に割り当てられたデバイスＸ１０へ値が入力される。この場合において、デバイスＹ０とデバイスＸ１０とは、因果関係を有する。
【００３８】
ここで、因果関係を有する変数の組を因果関係抽出部１９が抽出する方法について説明する。ここでは、処理ブロックＡに記載されている変数と処理ブロックＢに記載されている変数とから因果関係を有する変数の組を抽出する場合を例として説明する。まず、因果関係抽出部１９は、処理ブロックＡについての出力デバイス情報の日時を読み取る。因果関係抽出部１９は、処理ブロックＡの出力デバイスへ値が入力された次に入力デバイスへ値が入力されたことを示す入力デバイス情報を、処理ブロックＢの入力デバイス情報の中から検出する。
【００３９】
図６において、例えば、日時「２０ｘｘ／ｘｘ／ｘｘ  ００：００：３０」、トリガ発生デバイス「Ｙ０」の出力デバイス情報ｄ２について、処理ブロックＢの入力デバイス情報のうち、「２０ｘｘ／ｘｘ／ｘｘ  ００：００：３０」から最も早い日時のデータを含む入力デバイス情報は、「２０ｘｘ／ｘｘ／ｘｘ  ００：００：３１」、トリガ発生デバイス「Ｘ１０」の入力デバイス情報ｄ３である。因果関係抽出部１９は、出力デバイス情報ｄ２については、処理ブロックＡの出力デバイスへ値が入力された次に入力デバイスへ値が入力されたことを示す入力デバイス情報ｄ３を検出する。因果関係抽出部１９は、処理ブロックＡの各出力デバイス情報について、出力デバイス情報ｄ２の場合と同様に、処理ブロックＢの入力デバイス情報を検出する。
【００４０】
因果関係抽出部１９は、処理ブロックＡの出力デバイス情報の日時と、処理ブロックＢの検出された入力デバイス情報の日時との差、すなわち時間差を算出する。出力デバイス情報ｄ２と入力デバイス情報ｄ３との時間差は１秒である。因果関係抽出部１９は、処理ブロックＡの各出力デバイス情報について、処理ブロックＢの入力デバイス情報との時間差を算出する。
【００４１】
因果関係抽出部１９は、処理ブロックＡのトリガ発生デバイスである出力デバイスと処理ブロックＢのトリガ発生デバイスである入力デバイスとの組ごとに、時間差の平均値を算出する。図６において、処理ブロックＡのデバイスＹ０と処理ブロックＢのデバイスＸ１０との組については、出力デバイス情報ｄ２と入力デバイス情報ｄ３における時間差と、出力デバイス情報ｄ４と入力デバイス情報ｄ５における時間差と、出力デバイス情報ｄ６と入力デバイス情報ｄ７における時間差との平均値は、「１秒」と算出される。
【００４２】
因果関係抽出部１９は、算出された平均値とあらかじめ設定された閾値とを比較する。因果関係抽出部１９は、出力デバイスと入力デバイスの組について算出された平均値が閾値よりも小さい場合に、当該出力デバイスと入力デバイスの組は因果関係を有すると判定する。例えば閾値が「５秒」であるとした場合、処理ブロックＡのデバイスＹ０と処理ブロックＢのデバイスＸ１０との組について算出された平均値「１秒」は閾値よりも小さい。この場合、因果関係抽出部１９は、処理ブロックＡのデバイスＹ０と処理ブロックＢのデバイスＸ１０との組には因果関係が有ると判定する。
【００４３】
ステップＳ１５において、依存関係修正部２０は、因果関係についての抽出結果に基づいて、依存関係についての抽出結果を修正する。ステップＳ１６において、依存関係提示部２１は、修正された抽出結果を提示する。
【００４４】
ここで、依存関係修正部２０による依存関係についての抽出結果の修正について説明する。図７は、実施の形態１にかかるデバッグ支援装置が有する依存関係抽出部による抽出結果の例を示す図である。図８は、実施の形態１にかかるデバッグ支援装置が有する因果関係抽出部による抽出結果の例を示す図である。図９は、実施の形態１にかかるデバッグ支援装置が有する依存関係修正部によって修正された抽出結果の例を示す図である。
【００４５】
図７には、処理ブロックＡに記載されている変数についての依存関係の抽出結果の例を示している。抽出結果３３は、図４に示すデバイスＸ１とデバイスＹ０との依存関係を示す。抽出結果３４は、図４に示すデバイスＸ１０とデバイスＹ１０との依存関係を示す。図８には、処理ブロックＡに記載されている変数と処理ブロックＢに記載されている変数についての因果関係の抽出結果の例を示している。抽出結果３５は、図６に示すデバイスＹ０とデバイスＸ１０との因果関係を示す。
【００４６】
図９に示す抽出結果３６は、抽出結果３３に示される依存関係と抽出結果３４に示される依存関係とに、抽出結果３５に示される因果関係が追加されたものである。このように、依存関係修正部２０は、依存関係についての抽出結果３３，３４に因果関係についての抽出結果３５を追加することによって、依存関係についての抽出結果３３，３４を修正する。依存関係提示部２１は、図９に示すように修正後の抽出結果３６を提示する。
【００４７】
因果関係抽出部１９は、時間差の平均値と閾値とを比較した結果に基づいて因果関係の有無を判定するほか、時間差の標準偏差に基づいて因果関係の有無を判定しても良い。この場合、因果関係抽出部１９は、時間差の平均値の代わりに、時間差の標準偏差を算出する。因果関係抽出部１９は、標準偏差を基に、時間差のばらつきから因果関係の有無を判定する。因果関係抽出部１９は、他の変数の組と比較して時間差のばらつきが小さい変数の組について、因果関係を有すると判定する。なお、ログ情報は、日時のデータを含むものに限られない。ログ情報は、変数ごとについてのトリガ発生の時間差を算出可能なデータを含むものであれば良い。ログ情報は、カウンタによるカウント値を含むものであっても良い。因果関係の有無の判定は、平均値または標準偏差の算出によるものに限られない。因果関係抽出部１９が因果関係の有無を判定するためのアルゴリズムは任意であるものとする。
【００４８】
実施の形態１によると、デバッグ支援装置１は、処理ブロックに記載されている複数の変数の中から、依存関係を有する変数の組を抽出し、かつ、互いに異なる処理ブロックに記載されている変数同士において、因果関係を有する変数の組を抽出する。因果関係抽出部１９は、収集されたログ情報から、因果関係を有する変数の組を抽出する。デバッグ支援装置１は、依存関係についての抽出結果を因果関係の抽出結果によって修正し、修正後の抽出結果を提示する。このため、ユーザは、互いに異なる処理ブロックに記載されている変数同士の関係を手動によって抽出すること無く、互いに異なる処理ブロックに記載されている変数同士における関係が反映された抽出結果を得ることができる。以上により、デバッグ支援装置１は、デバッグにおける作業の効率向上が可能となるという効果を奏する。
【００４９】
実施の形態２．
図１０は、実施の形態２にかかるデバッグ支援装置の機能構成を示す図である。実施の形態２にかかるデバッグ支援装置２には、実施の形態１の因果関係抽出部１９の代わりに、削除対象検出部４０が設けられている。実施の形態２では、上記の実施の形態１と同一の構成要素には同一の符号を付し、実施の形態１とは異なる構成について主に説明する。
【００５０】
シーケンスプログラムには、入力デバイスと出力デバイスとの間で使用されるデバイスが存在する。以下の説明にて、かかるデバイスを「中間デバイス」と称する。シーケンスプログラムでは、互いに異なる入力デバイスおよび出力デバイスの組み合わせにおいて共通の中間デバイスが使用されることがある。シーケンスプログラムからは依存関係の有無を判別できないが実際のシーケンス制御上は関連が無いデバイスの組み合わせが、従来のデバッグ支援においては、依存関係を有するものとして抽出される場合があった。このため、従来のデバッグ支援では、確認が不要なデバイスに対するデバッグも行われることになり、デバッグに要する時間が増大するという問題があった。実施の形態２にかかるデバッグ支援装置２は、このような実際のシーケンス制御上は関連が無いデバイスの組み合わせを、依存関係についての抽出結果から削除する。
【００５１】
削除対象検出部４０は、依存関係抽出部１６による依存関係についての抽出結果からの削除の対象とする変数の組を、収集されたログ情報から検出する。削除の対象とする変数の組は、依存関係が無いにも関わらず依存関係を有するものと誤って判定された変数の組である。依存関係修正部２０は、依存関係についての抽出結果から削除の対象として検出された変数の組を削除することによって、依存関係についての抽出結果を修正する。なお、デバッグ支援装置２の機能は、実施の形態１と同様に、図２に示すハードウェア構成を使用して実現される。削除対象検出部４０は、プロセッサ１０とソフトウェアの組み合わせによって実現される。削除対象検出部４０は、プロセッサ１０およびファームウェアの組み合わせによって実現されても良く、プロセッサ１０、ソフトウェアおよびファームウェアの組み合わせによって実現されても良い。
【００５２】
図１１は、実施の形態２にかかるデバッグ支援装置によるデバッグ支援の対象であるシーケンスプログラムについて説明するための第１の図である。図１２は、実施の形態２にかかるデバッグ支援装置によるデバッグ支援の対象であるシーケンスプログラムについて説明するための第２の図である。図１１は、装置４Ａの処理が記載された処理ブロックと装置４Ｂの処理が記載された処理ブロックとによるシーケンス制御の例を示すシーケンス図である。図１２は、図１１に示すシーケンス図をラダープログラムに置き換えた例である。
【００５３】
装置４Ａは、ステップＳ２１において、装置４Ａを構成する機器の入力に割り当てられた端子の入力リレーをオンにするための信号をＰＬＣ３へ送信する。ＰＬＣ３は、処理ブロックＡの記載に従った中間処理を経て、ステップＳ２２において、出力制御のための信号を装置４Ａへ送信する。装置４Ｂは、ステップＳ２３において、装置４Ｂを構成する機器の入力に割り当てられた端子の入力リレーをオンにするための信号をＰＬＣ３へ送信する。ＰＬＣ３は、処理ブロックＢの記載に従った中間処理を経て、ステップＳ２４において、出力制御のための信号を装置４Ｂへ送信する。
【００５４】
図１２において、回路ブロック４１は、処理ブロックＡを構成する回路ブロックとする。回路ブロック４２は、処理ブロックＢを構成する回路ブロックとする。回路ブロック４１は、入力デバイスであるデバイスＸ１０と、中間デバイスであるデバイスＭ０と、出力デバイスであるデバイスＹ０，Ｙ１０とを有する。回路ブロック４２は、入力デバイスであるデバイスＸ２０と、中間デバイスであるデバイスＭ０と、出力デバイスであるデバイスＹ２０，Ｙ３０とを有する。中間デバイスは、ＰＬＣ３内部の中間処理のために割り当てられている変数あるいはデータ領域である。
【００５５】
回路ブロック４１では、デバイスＸ１０とデバイスＭ０との各々に値が入力されると、デバイスＹ０へ値が入力される。また、デバイスＭ０に値が入力されると、デバイスＹ１０へ値が入力される。回路ブロック４２では、デバイスＸ２０とデバイスＭ０との各々に値が入力されると、デバイスＹ２０へ値が入力される。また、デバイスＭ０に値が入力されると、デバイスＹ３０へ値が入力される。
【００５６】
回路ブロック４１と回路ブロック４２とでは、共通のデバイスＭ０が使用されている。ただし、デバイスＭ０は、処理ブロックＡと処理ブロックＢとにおける互いに関係の無い処理において使用されているとする。図１２において、例えば、処理ブロックＡにおいてデバイスＭ０とデバイスＹ１０とは互いに依存関係を有する。処理ブロックＢにおいてデバイスＭ０とデバイスＹ３０とは互いに依存関係を有する。処理ブロックＡのデバイスＭ０と処理ブロックＢのデバイスＹ３０とは互いに依存関係を有しない。
【００５７】
次に、デバッグ支援装置２の動作について説明する。図１３は、実施の形態２にかかるデバッグ支援装置の動作手順を説明するフローチャートである。ステップＳ３１において、依存関係抽出部１６は、処理ブロックから依存関係を有する変数の組を抽出する。ステップＳ３１は、図５に示すステップＳ１１と同様である。
【００５８】
ステップＳ３２において、ログ情報収集部１７は、ログ情報を収集する。ステップＳ３３において、ログ情報解析部１８は、ステップＳ３２において収集されたログ情報を解析する。ステップＳ３２は、図５に示すステップＳ１２と同様である。ステップＳ３３は、図５に示すステップＳ１３と同様である。
【００５９】
図１４は、実施の形態２にかかるデバッグ支援装置が有するログ情報解析部によって検出されたログ情報の例を示す図である。図１４において、入力デバイス情報には、中間デバイスについてのログ情報が含まれる。図１４には、検出されたログ情報のうち、デバイスＸ１０，Ｘ２０およびデバイスＭ０についての入力デバイス情報と、デバイスＹ０，Ｙ１０，Ｙ２０，Ｙ３０についての出力デバイス情報とを示している。
【００６０】
ステップＳ３４において、削除対象検出部４０は、ログ情報から削除の対象とする変数の組を検出する。ここで、削除の対象とする変数の組を削除対象検出部４０が検出する方法について説明する。
【００６１】
削除対象検出部４０は、処理ブロックＡの入力デバイス情報の日時と、処理ブロックＢの出力デバイス情報の日時との差、すなわち時間差を算出する。図１４において、例えば、日時「２０ｘｘ／ｘｘ／ｘｘ  ００：００：３１」、トリガ発生デバイス「Ｍ０」の入力デバイス情報ｄ１１と、日時「２０ｘｘ／ｘｘ／ｘｘ  ０１：０１：３０」、トリガ発生デバイス「Ｙ３０」の出力デバイス情報ｄ１２との時間差は、１時間０分５９秒である。入力デバイス情報ｄ１１は、処理ブロックＡについての入力デバイス情報である。出力デバイス情報ｄ１２は、処理ブロックＢについての出力デバイス情報である。削除対象検出部４０は、処理ブロックＡおよび処理ブロックＢの各々の各入力デバイス情報と、処理ブロックＡおよび処理ブロックＢの各々の各出力デバイス情報とについての時間差を算出する。
【００６２】
削除対象検出部４０は、入力デバイス情報のトリガ発生デバイスと出力デバイス情報のトリガ発生デバイスとの組ごとに、時間差の平均値を算出する。削除対象検出部４０は、あるデバイスの組について算出された平均値が閾値よりも大きい場合に、当該デバイスの組を削除の対象と判定する。例えば、処理ブロックＡのデバイスＭ０と処理ブロックＢのデバイスＹ３０との組について算出された平均値が閾値よりも大きい場合、削除対象検出部４０は、処理ブロックＡのデバイスＭ０と処理ブロックＢのデバイスＹ３０との組を削除の対象と判定する。
【００６３】
ステップＳ３５において、依存関係修正部２０は、削除対象についての検出結果に基づいて、依存関係についての抽出結果を修正する。ステップＳ３６において、依存関係提示部２１は、修正された抽出結果を提示する。
【００６４】
ここで、依存関係修正部２０による依存関係についての抽出結果の修正について説明する。図１５は、実施の形態２にかかるデバッグ支援装置が有する依存関係抽出部による抽出結果の例を示す図である。図１６は、実施の形態２にかかるデバッグ支援装置が有する依存関係修正部によって修正された抽出結果の例を示す図である。
【００６５】
以下の説明では、入力デバイスであるデバイスＸ１０と、入力デバイスであるデバイスＸ２０との間には依存関係が無いものとする。図１５に示す抽出結果４３には、デバイスＸ１０とデバイスＸ２０とに依存関係が有るものと示されている。依存関係修正部２０は、抽出結果４３を複製して、抽出結果４３から図１６に示す抽出結果４４への修正と、抽出結果４３から図１６に示す抽出結果４５への修正とを行う。これにより、依存関係修正部２０は、抽出結果４３から、図１６に示す抽出結果４６への修正を行う。抽出結果４６は、抽出結果４４と抽出結果４５とを含む。
【００６６】
ここで、抽出結果４３から抽出結果４４への修正について説明する。図１５には、処理ブロックＡに記載されている変数と処理ブロックＢに記載されている変数とを含めた依存関係の抽出結果４３の例を示している。依存関係修正部２０による抽出結果４３には、処理ブロックＡのデバイスＭ０と処理ブロックＢのデバイスＹ３０との依存関係が含まれている。処理ブロックＡのデバイスＭ０と処理ブロックＢのデバイスＹ３０とは互いに依存関係を有しないにも関わらず、抽出結果４３には依存関係を有するものと示されている。処理ブロックＡのデバイスＭ０と処理ブロックＢのデバイスＹ２０とについても、互いに依存関係を有しないにも関わらず、抽出結果４３には依存関係を有するものと示されている。
【００６７】
削除対象検出部４０により、処理ブロックＡのデバイスＭ０と処理ブロックＢのデバイスＹ３０との組と、処理ブロックＡのデバイスＭ０と処理ブロックＢのデバイスＹ２０との組とが削除対象として検出されたとする。依存関係修正部２０は、処理ブロックＡのデバイスＭ０と処理ブロックＢのデバイスＹ３０との組と、処理ブロックＡのデバイスＭ０と処理ブロックＢのデバイスＹ２０との組とを、抽出結果４３から削除する。
【００６８】
抽出結果４３には、処理ブロックＡのデバイスＸ１０と処理ブロックＢのデバイスＸ２０との依存関係が含まれている。デバイスＸ１０への値の入力時とデバイスＸ２０への値の入力時との時間差が閾値よりも大きい場合に、依存関係修正部２０は、処理ブロックＡのデバイスＸ１０と処理ブロックＢのデバイスＸ２０とには依存関係は無いと判断する。依存関係修正部２０は、処理ブロックＡのデバイスＸ１０についての依存関係から処理ブロックＢのデバイスＸ２０を削除する。このようにして、依存関係修正部２０は、抽出結果４３から抽出結果４４への修正を行う。
【００６９】
次に、抽出結果４３から抽出結果４５への修正について説明する。依存関係修正部２０による抽出結果４３には、処理ブロックＢのデバイスＭ０と処理ブロックＡのデバイスＹ０との依存関係が含まれている。処理ブロックＢのデバイスＭ０と処理ブロックＡのデバイスＹ０とは互いに依存関係を有しないにも関わらず、抽出結果４３には依存関係を有するものと示されている。処理ブロックＢのデバイスＭ０と処理ブロックＡのデバイスＹ１０とについても、互いに依存関係を有しないにも関わらず、抽出結果４３には依存関係を有するものと示されている。
【００７０】
削除対象検出部４０により、処理ブロックＢのデバイスＭ０と処理ブロックＡのデバイスＹ０との組と、処理ブロックＢのデバイスＭ０と処理ブロックＡのデバイスＹ１０との組とが削除対象として検出されたとする。依存関係修正部２０は、処理ブロックＢのデバイスＭ０と処理ブロックＡのデバイスＹ０との組と、処理ブロックＢのデバイスＭ０と処理ブロックＡのデバイスＹ１０との組とを、抽出結果４３から削除する。また、上述するように処理ブロックＡのデバイスＸ１０と処理ブロックＢのデバイスＸ２０とには依存関係は無いと判断されていることから、依存関係修正部２０は、処理ブロックＢのデバイスＸ２０についての依存関係から処理ブロックＡのデバイスＸ１０を削除する。このようにして、依存関係修正部２０は、抽出結果４３から抽出結果４５への修正を行う。
【００７１】
図１６に示す抽出結果４４，４５は、削除対象として検出されたデバイスの組が削除された後の抽出結果を表す。このように、依存関係修正部２０は、削除の対象として検出された変数の組を依存関係についての抽出結果４３から削除することによって、依存関係についての抽出結果４３を修正する。依存関係提示部２１は、図１６に示すように修正後の抽出結果４６を提示する。
【００７２】
削除対象検出部４０は、時間差の平均値と閾値とを比較した結果に基づいて削除の対象か否かを判定するほか、時間差の標準偏差に基づいて削除の対象か否かを判定しても良い。この場合、削除対象検出部４０は、時間差の平均値の代わりに、時間差の標準偏差を算出する。削除対象検出部４０は、標準偏差を基に、時間差のばらつきから削除の対象か否かを判定する。削除対象検出部４０は、他の変数の組と比較して時間差のばらつきが大きい変数の組について、削除の対象と判定する。
【００７３】
実施の形態２によると、デバッグ支援装置２は、依存関係についての抽出結果からの削除の対象とする変数の組を、収集されたログ情報から検出する。デバッグ支援装置２は、依存関係についての抽出結果を削除対象の検出結果によって修正し、修正後の抽出結果を提示する。これにより、ユーザは、実際には依存関係を有しない変数同士についての確認作業を省いて、デバッグを行うことができる。以上により、デバッグ支援装置２は、デバッグにおける作業の効率向上が可能となるという効果を奏する。
【００７４】
以上の実施の形態に示した構成は、本開示の内容の一例を示すものである。各実施の形態の構成は、別の公知の技術と組み合わせることが可能である。各実施の形態の構成同士が適宜組み合わせられても良い。本開示の要旨を逸脱しない範囲で、各実施の形態の構成の一部を省略、変更することが可能である。
【符号の説明】
【００７５】
１，２  デバッグ支援装置、３  ＰＬＣ、４，４Ａ，４Ｂ  装置、１０  プロセッサ、１１  メモリ、１２  入力装置、１３  表示装置、１４  記憶装置、１５  通信装置、１６  依存関係抽出部、１７  ログ情報収集部、１８  ログ情報解析部、１９  因果関係抽出部、２０  依存関係修正部、２１  依存関係提示部、３１，３２，４１，４２  回路ブロック、３３，３４，３５，３６，４３，４４，４５，４６  抽出結果、４０  削除対象検出部。
【要約】
デバッグ支援プログラムは、被制御装置である装置（４）を単位とする処理が各々に記載された複数の処理ブロックを含むシーケンスプログラムについて、複数の処理ブロックに記載されている複数の変数の中から依存関係を有する変数の組を抽出するステップと、処理ブロックに記載されている複数の変数の各々への値の入力について記録されたログ情報を収集するステップと、収集されたログ情報の内容に基づいて依存関係についての抽出結果を修正するステップと、修正された抽出結果を提示するステップと、をコンピュータに実行させる。【図１】
0006833129.tif 000002
【図２】
0006833129.tif 000003
【図３】
0006833129.tif 000004
【図４】
0006833129.tif 000005
【図５】
0006833129.tif 000006
【図６】
0006833129.tif 000007
【図７】
0006833129.tif 000008
【図８】
0006833129.tif 000009
【図９】
0006833129.tif 000010
【図１０】
0006833129.tif 000011
【図１１】
0006833129.tif 000012
【図１２】
0006833129.tif 000013
【図１３】
0006833129.tif 000014
【図１４】
0006833129.tif 000015
【図１５】
0006833129.tif 000016
【図１６】
0006833129.tif 000017