以下に、本発明にかかるプログラム解析支援装置の実施の形態を図面に基づいて詳細に説明する。なお、この実施の形態によりこの発明が限定されるものではない。
実施の形態1.
実施の形態1にかかるプログラム解析支援装置1について説明する。
プログラム解析支援装置1は、プログラマブルコントローラ(以下「PC」と言う。)、モーションコントローラ(以下「MC」と言う。)、数値制御装置コントローラ(以下「NC」と言う。)、検査装置コントローラ、又は表示器(以下「GOT」と言う。)等の各種の産業用のコントローラ、制御装置、或いは、マイクロコンピュータに於いて実行されるラダープログラムに関して、開発した新しいラダープログラムの動作不具合の発生原因を探索するデバッグ作業を、効率化するための装置である。以下に於いては、PCを例として記載する。
PCは、ラダープログラム(計測制御プログラム)を実行して、計測制御対象の状態を把握したり、又は、動作を計測制御対象に指示したりする。ラダープログラムの作成には、所定のラダープログラム作成支援装置(計測制御プログラム作成支援装置)が用いられる。ラダープログラム作成支援装置は、一般的にはパーソナルコンピュータ上で動作するソフトウェアツールとして提供され、PCが計測制御対象を計測したり又は制御したりする際に用いられるプログラムであるラダープログラムの編集を支援する機能を有している。その他にも、ラダープログラム作成支援装置は、パーソナルコンピュータとPCとを接続して、編集したラダープログラムをPCへ転送したり、計測制御対象の状態又はラダープログラムの実行によって変化する変数(以下「デバイス」と言う。)の値の状態を監視したりする機能をも有している。
なお、ラダープログラム作成支援装置が提供するプログラム編集機能及び監視機能は、GOT上にも搭載されており、PCと常時接続状態にあるGOT上からもラダープログラムの編集又はデバイスの値の状態の監視を行うことが出来る。
ラダープログラムについて、コントローラが正しく動作しているかどうかをデバッグするための機能として、サンプリングトレース機能が知られている。サンプリングトレース機能とは、指定されたタイミングで指定されたデバイスの状態を示すデータ(トレースデータ)を一定の周期(サンプリング周期)で取得(サンプリング)し、取得したトレースデータを所定のメモリ(サンプリングトレースメモリ)に格納するものである。
ここで言うデバイスとは、PCの計測監視制御対象とPCとの間の入出力を、PCのメモリアドレスに割り付けたもの、および、PCが内部的に使用するメモリアドレスを指している。例えば、PCでは、入力を割り付けたものをXデバイス、出力を割り付けたものをYデバイス、内部的に使用するビットデータ(内部リレー)をMデバイス、通信に使用するものをBデバイス、エラーの発生を示すものをFデバイス、などというようにデータ種別によってデバイス文字が予め決められている。各デバイスのアドレスは、例えば、XデバイスやYデバイスやBデバイスなどについては16進表現で、MデバイスやFデバイスなどについては10進表現となっている。
不具合動作の原因と疑われるデバイスについて、サンプリングトレースを行い、その内容をタイミングチャートとして表示するなどして解析すれば、不具合動作の原因特定が期待される。しかしながら、一度にサンプリングトレースできるメモリサイズには限りがある。
それについて、本発明者は、検討を行い、2つの問題点があることを見出した。
第1の問題点として、一度にサンプリングトレースできるメモリサイズには限りがあるので、不具合動作の原因と疑われるデバイスを絞り込む必要がある。
また、第2の問題点として、実質的に不具合原因の特定に直接的に寄与しないもの(例えば、デバイスの動作)を多く含んでサンプリングトレースしてしまうことがある。例えば、再現性の低い不具合、すなわち、いつ発生するか予測不能な不具合動作についてサンプリングトレースを行いたい場合には、サンプリング周期を長くすることで、サンプリング実施時間を長くする対処が考えられるが、サンプリング周期を長くすれば、実質的に不具合原因の特定に直接的に寄与しないものを多く含んでサンプリングトレースしてしまい、不具合動作について詳細な動作の解析が困難になる可能性がある。
第1の問題点を解決する技術として、スライシング技術が考えられる。すなわち、ラダープログラムに於いては、デバイス(変数)の依存関係(の有向グラフ)を抽出することである。
例えば、ラダープログラムは、複数のラダー行を含む(図5参照)ものである。ラダープログラムは、各ラダー行を左から右に読むように、複数のラダー行を上から下に読むように、構成されている。各ラダー行の演算結果は、コイル出力に格納されるとともに、後続のラダー行で入力として扱われることがある(図5参照)。言い換えると、ラダープログラムでは、左から右に、且つ、上から下に、シーケンシャルに処理が行われる。
前向きの依存関係は、あるデバイスの値が変化することによって影響を受ける他のデバイスを抽出し、さらにそれらデバイスによって影響を受ける他のデバイスを抽出してゆくことで、あるデバイスの値が変化することによって影響を受ける全てのデバイスを抽出するものである。すなわち、前向きの依存関係は、シーケンシャルな処理の方向に沿って依存関係をたどっていくものである。そうして抽出されたデバイス群は、有向グラフを構成する(図4参照)。
後向きの依存関係は、あるデバイスの値の変化に影響を与える他のデバイスを抽出し、さらにそれらデバイスに影響を与える他のデバイスを抽出してゆくことで、あるデバイスの値の変化に影響を与える全てのデバイスを抽出するものである。すなわち、後向きの依存関係は、シーケンシャルな処理の方向と逆に依存関係を遡ってたどっていくものである。そうして抽出されたデバイス群は、有向グラフを構成する(図4参照)。
このようなデバイスの依存関係(の有向グラフ)を利用することで、ラダープログラム中から、不具合動作の原因と疑われるデバイスをある程度絞り込むことが可能となる。
しかしながら、近年、ラダープログラムが大規模かつ複雑になりつつあり、依存関係(の有向グラフ)を利用してもなお、不具合動作の原因と疑われるデバイスを要求レベルまで絞り込むことが困難になっている。なぜならば、近年のラダープログラムにおいては、あるデバイスの値が変化することによって影響を受けるデバイスの数が膨大であり、あるいは、あるデバイスの値の変化に影響を与えるデバイスの数が膨大であり、抽出した依存関係(の有向グラフ)が巨大で複雑なものとなり、それだけでは実質的に要求レベルまでデバイスを絞り込めない可能性が高いからである。
それに対して、仮に、多数の解析条件(解析コマンド、解析対象等)を自由に組み合わせてプログラム解析を行う場合を考える。この場合、依存関係(の有向グラフ)どうしの論理演算AND/OR/NOTを多数行うことで、巨大で複雑な依存関係(の有向グラフ)から、より深く解析条件に合致する依存関係(の有向グラフ)だけを抽出すること、すなわち不具合動作の原因と疑われるデバイスを要求レベルまで絞り込むことが可能となるようにも考えられる。
一方、デバッグ作業は、PCが組み込まれた生産設備を使って行われる。前述のとおり、パーソナルコンピュータとPCとを接続してデバッグ作業が行われるほか、生産設備が備える表示器と操作ボタンとを用いてデバッグ作業が行われる。
多数の解析条件(解析コマンド、解析対象等)を自由に組み合わせてプログラム解析を行うためには、多数の解析条件を自由に組み合わせて指定するための高度なユーザインタフェースが必要となる。よって、パーソナルコンピュータとPCとを接続してデバッグ作業を行う場合には、キーボード、マウス、高解像度ディスプレイにより、あるいはそれらがタッチパネル式となっているものにより、高度なユーザインタフェースが実現されうるため問題ないが、生産設備が備える表示器と操作ボタンとを用いてデバッグ作業が行われる場合には、これら限られたユーザインタフェースの範囲内で、多数の解析条件を自由に組み合わせて指定するための操作方法を実現せざるをえないため、パーソナルコンピュータの場合に比べ、格段に操作数が多くなり、かえって手間となってしまう可能性がある。
すなわち、多数の解析条件(解析コマンド、解析対象等)を自由に組み合わせてプログラム解析を行う場合、例えば、生産設備が備える表示器と操作ボタンとを用いてデバッグ作業を行うと、格段に操作数が多いために、操作ミスを誘発しやすく、適正に解析条件が組み合わされない可能性があり、不具合動作の原因と疑われるデバイスを要求レベルまで絞り込むことが困難になりやすい。結果として、第1の問題点が未解決のままとなる。
また、多数の解析条件(解析コマンド、解析対象等)を自由に組み合わせてプログラム解析を行う場合、再現性の低い不具合については、不具合動作がいつ発生するのか予測不能であるため、多数の解析条件を想定することも困難である。すなわち、第2の問題点も依然として未解決のままである。
そこで、実施の形態1では、まず、第1の問題点の解決を目指し、生産設備が備える表示器と操作ボタンとを用いてデバッグ作業を行う場合に、巨大で複雑な依存関係(の有向グラフ)から不具合に深く関係する依存関係(の有向グラフ)を少ない操作数で選択的に抽出するための仕組みを提案する。
具体的には、プログラム解析支援装置1は、図1に示すようなハードウェア構成を備える。図1は、プログラム解析支援装置1のハードウェア構成を示す図である。
プログラム解析支援装置1は、マイクロプロセッサ2、データ格納メモリ3、表示部4、入力部5、保存部6、及びシステムバス7を備える。マイクロプロセッサ2、データ格納メモリ3、表示部4、入力部5、及び保存部6は、システムバス7を介して互いに接続されている。
マイクロプロセッサ2は、プログラム解析支援装置1の各部を全体的に制御し、プログラム解析支援装置1の各機能を実行する。
データ格納メモリ3は、マイクロプロセッサ2による制御のもと、データを一時的に格納する。データ格納メモリ3は、例えば、マイクロプロセッサ2による作業領域となるワーク領域3aを有している。データ格納メモリ3は、例えば、DRAM(Dynamic Random Access Memory)より成る。
表示部4は、マイクロプロセッサ2による制御のもと、所定の情報を表示画面4a上に表示する。表示部4は、例えば、生産設備が備える表示器であってもよい。表示器は、例えば、液晶ディスプレイ等を有する。あるいは、表示部4は、例えば、ディスプレイ装置であってもよい。ディスプレイ装置は、例えば、液晶ディスプレイ等を有する。
入力部5は、操作ボタン5a等を介して、ユーザから所定の指示を受け付ける。操作ボタン5aは、例えば、生産設備が備える操作ボタンである。操作ボタン5aは、例えば、生産設備が備える表示器の表示画面4a上にボタンオブジェクト及びタッチパネルとして実現されていてもよい。あるいは、例えば、入力部5は、操作ボタン5a等を有する入力装置であってもよい。操作ボタン5aは、例えば、入力装置に設けられた物理的なボタンであってもよい。
保存部6は、例えば、解析対象のラダープログラム及びプログラム解析支援装置1の各機能を実現するためのプログラム解析支援用プログラム6a等のプログラム及び解析結果等のデータ6bをそれぞれファイルとして記憶・保持する。保存部6は、例えば、ハードディスク等の記憶装置より成る。
また、プログラム解析支援装置1は、図2に示すような機能構成を備える。図2は、プログラム解析支援装置1の機能構成を示す図である。
プログラム解析支援装置1は、例えば、プログラム解析支援用プログラムがマイクロプロセッサ2により実行されることで、図2に示すような機能構成がプログラム解析支援装置1内(例えば、データ格納メモリ3におけるワーク領域3a内)に形成される。なお、プログラム解析支援装置1の各機能部は、プログラム解析支援用プログラムの実行開始に応じて一括して形成されてもよいし、プログラム解析支援用プログラムの実行状況に応じて順次に形成されてもよい。
具体的には、プログラム解析支援装置1は、解析条件設定操作部9、解析処理実行部13、解析結果表示処理部10、及び回路表示処理部19を備える。
ラダープログラム16に対するプログラム解析を行う場合には、ユーザは、入力部5の操作ボタン5a等を操作し、プログラム解析条件を入力するユーザ操作8を行う。解析条件設定操作部9は、ユーザ操作8に対応する指示に応じて、プログラム解析条件を設定して解析処理実行部13へ供給する。
例えば、解析条件設定操作部9は、ユーザ操作8に対応して操作ボタン5a等で受け付けられた起動指示に応じて、プログラム解析支援用プログラムの起動指令を生成して解析処理実行部13へ供給する。
例えば、解析条件設定操作部9は、ユーザ操作8に対応して操作ボタン5a等で受け付けられたプログラム設定指示に応じて、解析対象となるラダープログラム16を設定する。プログラム設定指示は、解析対象となるラダープログラム16を設定させる指示である。解析条件設定操作部9は、設定されたラダープログラム16の情報を解析処理実行部13へ供給する。
また、例えば、解析条件設定操作部9は、ユーザ操作8に対応して操作ボタン5a等で受け付けられた起点設定指示に応じて、抽出したい依存関係の起点を設定する。起点設定指示は、抽出したい依存関係の起点を設定させる指示である。解析条件設定操作部9は、設定された、抽出したい依存関係の起点の情報を解析処理実行部13へ供給する。
また、解析条件設定操作部9は、第1の条件及び第2の条件のいずれか一方を設定する。第1の条件は、さらなる前向き又は後向きのデバイス依存関係を抽出しないものとするデバイスに係る条件である。第2の条件は、さらなる前向き又は後向きのデバイス依存関係を抽出するものとするデバイスに係る条件である。第1の条件及び第2の条件の詳細は、後述する。
例えば、解析条件設定操作部9は、ユーザ操作8に対応して操作ボタン5a等で受け付けられた第1の条件設定指示に応じて、第1の条件を設定する。第1の条件設定指示は、第1の条件を設定させる指示である。解析条件設定操作部9は、設定された第1の条件の情報を解析処理実行部13へ供給する。
あるいは、例えば、解析条件設定操作部9は、ユーザ操作8に対応して操作ボタン5a等で受け付けられた第2の条件設定指示に応じて、第2の条件を指定する。第2の条件設定指示は、第2の条件を設定させる指示である。解析条件設定操作部9は、設定された第2の条件の情報を解析処理実行部13へ供給する。
解析処理実行部13は、プログラム解析支援用プログラムの起動指令を解析条件設定操作部9から受ける。解析処理実行部13は、プログラム解析支援用プログラムの起動指令に応じて、保存部6に保持されているプログラム解析支援用プログラムを読み出す。
また、解析処理実行部13は、プログラム解析条件の設定結果を解析条件設定操作部9から受ける。解析処理実行部13は、プログラム解析条件の設定結果に応じて、プログラム解析処理を実行して、プログラム解析処理の結果、すなわち解析結果を解析結果表示処理部10へ供給する。
例えば、解析処理実行部13は、変数使用状況抽出部14及び変数依存関係抽出部15を有する。変数使用状況抽出部14は、例えば、解析条件設定操作部9を介して使用状況を抽出するよう指示された場合に、デバイスの使用状況を抽出する。変数使用状況抽出部14は、デバイスの使用状況の抽出結果を生成して解析結果表示処理部10へ供給する。
変数依存関係抽出部15は、例えば、解析条件設定操作部9を介して依存関係を抽出するよう指示された場合に、デバイスの依存関係を抽出する。すなわち、変数依存関係抽出部15は、ラダープログラム16から前向き又は後向きのデバイス依存関係を抽出する。
このとき、変数依存関係抽出部15は、解析条件設定操作部9を介して設定された第1の条件に合致するデバイスについて、さらなる前向き又は後向きのデバイス依存関係を抽出しないようにする。また、変数依存関係抽出部15は、解析条件設定操作部9を介して設定された第2の条件に合致するデバイスについて、さらなる前向き又は後向きのデバイス依存関係を抽出するようにする。
なお、変数依存関係抽出部15は、デバイス依存関係を抽出する際に、デバイスメモリダンプ18の保持内容を参酌してもよい。
そして、変数依存関係抽出部15は、デバイス依存関係の抽出結果、すなわち第1の抽出結果を生成して解析結果表示処理部10へ供給する。
解析結果表示処理部10は、プログラム解析処理の結果を解析処理実行部13から受ける。解析結果表示処理部10は、プログラム解析処理の結果を用いて表示情報を生成し、生成された表示情報に従って、プログラム解析処理の結果を表示部4の表示画面4a上に表示する。
例えば、解析結果表示処理部10は、変数使用状況表示処理部11及び変数依存関係表示処理部12を有する。変数使用状況表示処理部11は、例えば、デバイスの使用状況の抽出結果を変数使用状況抽出部14から受ける。変数使用状況表示処理部11は、デバイスの使用状況の抽出結果を用いて表示情報を生成し、生成された表示情報に従って、デバイスの使用状況の抽出結果を表示部4の表示画面4a上に表示する。例えば、変数使用状況表示処理部11は、デバイスの使用状況の抽出結果をグラフにまとめたグラフ情報を生成し、グラフ情報に従って、デバイスの使用状況の抽出結果を表示部4の表示画面4a上にグラフの形態で表示する。これにより、表示画面4aを閲覧したユーザは、デバイスの使用状況の抽出結果を視覚的に容易に把握することができる。
変数依存関係表示処理部12は、例えば、デバイス依存関係の抽出結果、すなわち第1の抽出結果を変数使用状況抽出部14から受ける。変数依存関係表示処理部12は、第1の抽出結果を表示情報に変換し、変換された表示情報に従って、デバイス依存関係の抽出結果を表示部4の表示画面4a上に表示する。例えば、変数依存関係表示処理部12は、デバイス依存関係の抽出結果を有向グラフ(図4、図7参照)にまとめた有向グラフ情報を生成し、有向グラフ情報に従って、デバイス依存関係の抽出結果を表示部4の表示画面4a上に有向グラフの形態で表示する。これにより、表示画面4aを閲覧したユーザは、デバイス依存関係の抽出結果を視覚的に容易に把握することができる。
また、変数依存関係表示処理部12は、例えば、ユーザ操作8に対応して操作ボタン5a等で受け付けられたデバイス選択指示に応じて、選択されたデバイスを指定する。デバイス選択指示は、変数依存関係表示処理部12により表示画面4a上に表示されたデバイス依存関係(例えば、有向グラフ)の中から1つのデバイスが選択されたとき、その選択されたデバイスを指定させる指示である。変数依存関係表示処理部12は、指定されたデバイスの情報を回路表示処理部19へ供給する。
回路表示処理部19は、指定されたデバイスの情報を変数依存関係表示処理部12から受ける。回路表示処理部19は、指定されたデバイスに応じて、ラダー回路の表示情報を生成する。例えば、回路表示処理部19は、指定されたデバイスをコイル出力するラダー回路の表示情報を生成する。
そして、例えば、回路表示処理部19は、変数依存関係表示処理部12により表示されたデバイス依存関係(例えば、有向グラフ)に代えて、指定されたデバイスをコイル出力するラダー回路を選択的に表示する(図9の右図参照)。
あるいは、例えば、回路表示処理部19は、変数依存関係表示処理部12により表示されたデバイス依存関係、すなわち抽出されたデバイス依存関係(例えば、有向グラフ)の全体を表示しつつ、指定されたデバイスをコイル出力するラダー回路を表示する(図9参照)。例えば、回路表示処理部19は、抽出されたデバイス依存関係の全体の有向グラフと、指定されたデバイスをコイル出力するラダー回路とを、横に並べて表示する(図9参照)。あるいは、例えば、回路表示処理部19は、抽出されたデバイス依存関係の全体の有向グラフを表示しつつ、その有向グラフの上に重なるように、指定されたデバイスをコイル出力するラダー回路を(例えば、表示画面4aの中心に)表示する。
次に、解析条件設定操作部9の構成について図3を用いて説明する。図3は、解析条件設定操作部9の構成を示す図である。
解析条件設定操作部9は、ユーザ操作8に対応して操作ボタン5a等で受け付けられた起動指示に応じて解析処理実行部13によりプログラム解析支援用プログラムが読み出された際に、解析処理実行部13により展開された画面データを受ける。解析条件設定操作部9は、その画面データに従って、例えば図3に示すような解析条件設定操作画面9aを表示画面4a上に表示する。解析条件設定操作部9は、例えば解析条件設定操作画面9aを介してユーザ操作8を受け付ける。
例えば、図3は、プログラム解析支援装置1がデバイスの使用状況を抽出する機能とデバイスの依存関係を抽出する機能とを有している場合であって、ユーザがデバイスの依存関係を抽出する機能を選択して指定している場合を示している。さらに、デバイスの依存関係を抽出する機能の場合には、前向きの依存関係を抽出するのか、後向きの依存関係を抽出するのかを指定し、そして解析処理の起点を指定する。図3では、前向きを指定し、起点として入力デバイスX1を指定している場合を示している。
具体的には、解析条件設定操作画面9aは、解析選択欄9a1,9a2、実行ボタン9a3、キャンセルボタン9a4、向き指定欄9a5、起点指定欄9a6、種別指定オンオフ欄9a7、種別指定欄9a8、回数指定オンオフ欄9a9、及び回数指定欄9a10を有する。解析選択欄9a1,9a2、実行ボタン9a3、キャンセルボタン9a4、向き指定欄9a5、起点指定欄9a6、種別指定オンオフ欄9a7、種別指定欄9a8、回数指定オンオフ欄9a9、及び回数指定欄9a10は、それぞれ、操作ボタン5aに相当する。
2つの解析選択欄9a1,9a2は、いずれか一方が択一的に選択される。例えば、解析選択欄9a1が選択された場合、解析条件設定操作部9は、解析処理として、デバイスの使用状況の抽出を選択し、デバイスの使用状況の抽出が選択された旨の情報を変数使用状況抽出部14に通知する。これに応じて、変数使用状況抽出部14は、例えば、解析条件設定操作部9を介して使用状況を抽出するよう指示されたことを認識する。
そして、実行ボタン9a3が押されたら、解析条件設定操作部9は、解析処理の開始を変数使用状況抽出部14に指令する。これに応じて、変数使用状況抽出部14は、デバイスの使用状況を抽出し、変数使用状況表示処理部11は、その抽出結果を用いて表示情報(例えば、グラフ情報)を表示画面4a上に表示する。
あるいは、キャンセルボタン9a4が押されたら、解析条件設定操作部9は、解析処理のキャンセルを変数使用状況抽出部14に指令する。これに応じて、変数使用状況抽出部14は、デバイスの使用状況の抽出を中止する。
あるいは、例えば、解析選択欄9a2が選択された場合、解析処理として、デバイスの依存関係の抽出が選択され、デバイスの依存関係の抽出が選択された旨の情報が変数依存関係抽出部15に通知される。これに応じて、変数依存関係抽出部15は、例えば、解析条件設定操作部9を介してデバイスの依存関係を抽出するよう指示されたことを認識する。
向き指定欄9a5では、抽出したいデバイス依存関係の向きとして、前向き及び後向きのいずれかが選択される。図3では、前向きが選択された場合が例示されている。向き指定欄9a5では、例えば、黒三角をクリックすることでプルダウンメニューとして前向き及び後向きが表示され、前向き及び後向きのいずれかがクリックされることで選択されてもよい。
起点指定欄9a6では、抽出したい依存関係の起点が指示される。図3では、抽出したい依存関係の起点として、デバイスX1が指示された場合が例示されている。
種別指定オンオフ欄9a7では、種別指定を行うこと(オン)及び種別指定を行わないこと(オフ)のいずれかが指示される。図3では、種別指定を行わないこと(オフ)が指示された場合が例示されている。種別指定オンオフ欄9a7では、例えば、チェックを入れることで種別指定を行うこと(オン)を指示し、チェックを外すことで種別指定を行わないこと(オフ)を指示してもよい。
種別指定欄9a8では、さらなる前向き又は後向きのデバイス依存関係を抽出しないデバイスに係る第1の条件が指示される。例えば、種別指定欄9a8では、第1の条件として、さらなる前向き又は後向きのデバイス依存関係を抽出しないデバイスの種別が指示される。デバイスの種別は、例えば、入力を割り付けたものを示すXデバイス、出力を割り付けたものを示すYデバイス、内部的に使用するビットデータ(内部リレー)を示すMデバイス、通信に使用するものを示すBデバイス、エラーの発生を示すFデバイスを含む。図3では、種別指定欄9a8が指示されていない場合が例示されている。
そして、実行ボタン9a3が押されたら、解析条件設定操作部9は、解析処理の開始を変数依存関係抽出部15に指令する。これに応じて、変数依存関係抽出部15は、デバイス依存関係を抽出し、変数依存関係表示処理部12は、その抽出結果、すなわち第1の抽出結果を用いて、表示情報(例えば、有向グラフ情報)を表示画面4a上に表示する。
あるいは、キャンセルボタン9a4が押されたら、解析条件設定操作部9は、解析処理のキャンセルを変数依存関係抽出部15に指令する。これに応じて、変数依存関係抽出部15は、デバイス依存関係の抽出を中止する。
なお、起点としての入力デバイスX1は、回路表示処理部19によって表示されるラダープログラムの中から接点やコイルを選択することによって指定するように構成してもよい。
図4は、解析条件設定操作画面9aが図3に示すように操作され、実行ボタン9a3が押された場合の実行結果の一例である。図4では、多数のデバイスおよび依存関係が抽出されている場合を示している。
本実施の形態では、このように抽出結果が発散的になる原因として、図5に示すように、出力デバイスYが、さらに接点としても参照されている場合があり、これによって依存関係として抽出されるデバイスの数が多くなっていることに着目し、例えば、指定したデバイス種別については、それ以上の依存関係の抽出処理を行わないようにする。
例えば、Yデバイスは、出力デバイスなのであるから、本来ならば、入力デバイスXを起点として前向き依存関係を抽出する場合、その終点はYデバイスである。にも関わらず、そのYデバイスがさらに接点としても参照されているところまで依存関係の抽出処理を進めることは、Xデバイスを起点とした依存関係の抽出の範囲を超えて、さらにそのYデバイスを起点とした依存関係の抽出を行っているに他ならない。
そこで、本実施の形態では、図6に示すように、例えば、Yデバイスを起点とした依存関係の抽出を抑制するために、解析条件設定操作画面9aにおいて、デバイス種別によってそれ以上の依存関係の抽出処理を行わない機能をチェックして有効にし、それ以上の依存関係の抽出処理を行わないことにするデバイス種別として、Yデバイスを指定している。
例えば、図6に示すように、解析条件設定操作画面9aにおいて、2つの解析選択欄9a1,9a2のうち解析選択欄9a2が選択され、向き指定欄9a5で前向きが選択され、起点指定欄9a6で抽出したい依存関係の起点としてデバイスX1が指示され、種別指定オンオフ欄9a7で種別指定を行うこと(オン)が指示される。そして、種別指定欄9a8で、さらなる前向き又は後向きのデバイス依存関係を抽出しないデバイスの種別(第1の条件)として、Yデバイスが指示される。
次に、デバイス種別によってそれ以上の依存関係の抽出処理を行わない機能をチェックして有効にした場合の依存関係の抽出処理について、図10を用いて説明する。図10は、デバイス種別を考慮した依存関係の抽出処理を示すフローチャートである。
ステップS1では、解析条件設定操作部9が、ユーザ操作8に対応して操作ボタン5a等で受け付けられた起点設定指示に応じて、抽出したい依存関係の起点を設定する。例えば、図6に示す場合、解析条件設定操作部9は、抽出したい依存関係の起点としてデバイスX1を設定する。解析条件設定操作部9は、設定された、抽出したい依存関係の起点の情報を解析処理実行部13へ供給する。
また、解析条件設定操作部9は、ユーザ操作8に対応して操作ボタン5a等で受け付けられた第1の条件設定指示に応じて、第1の条件を設定する。例えば、図6に示す場合、解析条件設定操作部9は、第1の条件として、すなわち、さらなる前向き又は後向きのデバイス依存関係を抽出しないデバイス種別として、Yデバイスを設定する。解析条件設定操作部9は、設定された第1の条件の情報を解析処理実行部13へ供給する。
ステップS10では、変数依存関係抽出部15が、再帰処理を行う。具体的には、変数依存関係抽出部15は、以下のステップS11〜ステップS17の処理を行う。
ステップS11では、変数依存関係抽出部15が、解析条件設定操作部9により設定された起点デバイス(例えば、デバイスX1)を起点として、デバイスの依存関係を抽出する。例えば、変数依存関係抽出部15は、前向きのデバイス依存関係の抽出が指定された場合、起点デバイスが影響を与える全てのデバイスをラダープログラム16中より抽出する。あるいは、例えば、変数依存関係抽出部15は、後向きのデバイス依存関係の抽出が指定された場合、起点デバイスに影響を与える全てのデバイスをラダープログラム16中より抽出する。
ステップS12では、変数依存関係抽出部15が、抽出された全てのデバイスについてステップS13〜ステップS17の処理を完了したか否かを判断する。変数依存関係抽出部15は、完了していない(ステップS12で「No」)場合、処理をステップS13へ進め、完了している(ステップS12で「Yes」)場合、処理を終了する。
ステップS13では、変数依存関係抽出部15が、抽出された全てのデバイスのうち、未処理のデバイスを1つ、処理対象として選択する。
ステップS14では、変数依存関係抽出部15が、処理対象のデバイスが第1の条件に合致するか否かを判断する。例えば、図6に示す場合、変数依存関係抽出部15は、処理対象のデバイスが、さらなる前向き又は後向きのデバイス依存関係を抽出しないデバイス種別(例えば、Yデバイス)であるか否かを判断する。変数依存関係抽出部15は、第1の条件に合致する(ステップS14で「Yes」)場合、処理をS17へ進め、第1の条件に合致しない(ステップS14で「No」)場合、処理をS15へ進める。
ステップS15では、変数依存関係抽出部15が、処理対象のデバイスを新たに起点として設定する。
ステップS16では、変数依存関係抽出部15が、ステップS15で設定された起点を第2の起点デバイスとして、デバイスの依存関係を抽出する。例えば、変数依存関係抽出部15は、前向きのデバイス依存関係の抽出が指定された場合、第2の起点デバイスが影響を与える全てのデバイスをラダープログラム16中より抽出する。あるいは、例えば、変数依存関係抽出部15は、後向きのデバイス依存関係の抽出が指定された場合、第2の起点デバイスに影響を与える全てのデバイスをラダープログラム16中より抽出する。変数依存関係抽出部15は、抽出処理が完了したら、処理をステップS12へ戻す。
ステップS17では、変数依存関係抽出部15が、処理対象のデバイスについてのさらなる依存関係の抽出処理は行わないので、処理対象のデバイスについての処理を終了する。そして、変数依存関係抽出部15は、処理をステップS12へ戻す。
このように、デバイス種別によってそれ以上の依存関係の抽出処理を行わない機能をチェックして有効にした場合の依存関係の抽出処理により、例えば、図7に示す有向グラフが表示画面4a上に表示される。図7は、デバイス種別を考慮した前向き依存関係抽出結果例に対応した有向グラフを示す図である。図7に示す有向グラフは、デバイスX1を起点として前向き依存関係を抽出する処理を行う過程で、第1の条件に合致しないデバイスであるデバイスM1については、さらに依存関係の抽出処理を進め、第1の条件に合致するデバイスであるデバイスY1,Y2,Y3(図4参照)に行き着いたら、それ以上の依存関係の抽出処理を行わないようにして得られたものである。
図4に示す有向グラフが図7に示す有向グラフのごとく絞り込めていることからもわかるように、デバイス種別によってそれ以上の依存関係の抽出処理を行わない機能をチェックして有効にすることで、多数の解析条件(解析コマンド、解析対象等)を組み合わせて指定せずとも、巨大で複雑な依存関係(の有向グラフ)を絞り込むことができる。
図6が前向き依存関係の抽出の場合を例示したものであるに対して、図8は後向き依存関係の抽出の場合を例示したものである。デバイス種別によってそれ以上の依存関係の抽出処理を行わない機能をチェックして有効にし、それ以上の依存関係の抽出処理を行わないことにするデバイス種別として、こんどはXを指定するとよい。
例えば、図8に示すように、解析条件設定操作画面9aにおいて、2つの解析選択欄9a1,9a2のうち解析選択欄9a2が選択され、向き指定欄9a5で後向きが選択され、起点指定欄9a6で抽出したい依存関係の起点としてデバイスY1が指示され、種別指定オンオフ欄9a7で種別指定を行うこと(オン)が指示される。そして、種別指定欄9a8で、さらなる前向き又は後向きのデバイス依存関係を抽出しないデバイスの種別(第1の条件)として、Xデバイスが指示される。
そして、実行ボタン9a3が押されると、依存関係の抽出処理を進め、入力Xデバイスに行き着いたら、それ以上の依存関係の抽出処理を行わないように処理される。効果は、図6の場合と同様であり、例えば、図4に示す有向グラフを図7に示す有向グラフのごとく絞り込むことができる。
なお、PCにとっての入力となるデバイスには、Xデバイスのみならず、通信による入力となるBデバイスなどがあるし、PCにとっての出力となるデバイスには、Yデバイスのみならず、通信による出力となるBデバイスやエラー出力となるFデバイスなどがある。したがって、例えば、図6の例において、起点デバイスとして、Xデバイスに代えてBデバイスなどを指定してもよいし、それ以上の依存関係の抽出処理を行わないデバイス種別として、Yデバイスに代えてBデバイス、Fデバイスなどを指定してもよい。あるいは、例えば、図8の例において、起点デバイスとして、Yデバイスに代えてBデバイス、Fデバイスなどを指定してもよいし、それ以上の依存関係の抽出処理を行わないデバイス種別として、Xデバイスに代えてBデバイスなどを指定してもよい。
また、図11に示すように、解析条件設定操作画面9aは、種別指定オンオフ欄9a7aをさらに有していてもよい。例えば、種別指定オンオフ欄9a7aと種別指定オンオフ欄9a7とは、両方非選択とすることは可能だが、選択する場合にいずれか一方が択一的に選択される。例えば、種別指定オンオフ欄9a7が選択(例えば、チェック)されると、さらなる前向き又は後向きのデバイス依存関係を抽出しないデバイスに係る第1の条件を設定することが選択される。あるいは、例えば、種別指定オンオフ欄9a7aが選択(例えば、チェック)されると、さらなる前向き又は後向きのデバイス依存関係を抽出するデバイスに係る第2の条件を設定することが選択される。
この場合、例えば、Yデバイスを起点とした依存関係の抽出を抑制するために、解析条件設定操作画面9aにおいて、図11に示すように、デバイス種別によってそれ以上の依存関係の抽出処理を行う機能をチェックして有効にし、第2の条件として、すなわちそれ以上の依存関係の抽出処理を行うことにするデバイス種別として、Yデバイスを除いたデバイスを指定している。例えば、図11では、種別指定欄9a8でXデバイス、Mデバイス、Bデバイスが指示されている。
また、デバイス種別によってそれ以上の依存関係の抽出処理を行う機能をチェックして有効にした場合の依存関係の抽出処理について、図12を用いて説明する。図12に示す処理は、図10に示す処理と次の点で異なる。
ステップS1aでは、解析条件設定操作部9が、ユーザ操作8に対応して操作ボタン5a等で受け付けられた起点設定指示に応じて、抽出したい依存関係の起点を設定する。例えば、図11に示す場合、解析条件設定操作部9は、抽出したい依存関係の起点としてデバイスX1を設定する。解析条件設定操作部9は、設定された、抽出したい依存関係の起点の情報を解析処理実行部13へ供給する。
また、解析条件設定操作部9は、ユーザ操作8に対応して操作ボタン5a等で受け付けられた第2の条件設定指示に応じて、第2の条件を設定する。例えば、図11に示す場合、解析条件設定操作部9は、第2の条件として、すなわち、さらなる前向き又は後向きのデバイス依存関係を抽出するデバイス種別として、Xデバイス、Mデバイス、Bデバイスを設定する。解析条件設定操作部9は、設定された第2の条件の情報を解析処理実行部13へ供給する。
ステップS14aでは、変数依存関係抽出部15が、処理対象のデバイスが第2の条件に合致するか否かを判断する。例えば、図11に示す場合、変数依存関係抽出部15は、処理対象のデバイスが、さらなる前向き又は後向きのデバイス依存関係を抽出するデバイス種別(例えば、Xデバイス、Mデバイス、Bデバイス)であるか否かを判断する。変数依存関係抽出部15は、第2の条件に合致する(ステップS14aで「Yes」)場合、処理をS15へ進め、第2の条件に合致しない(ステップS14aで「No」)場合、処理をS17へ進める。
このように、デバイス種別によってそれ以上の依存関係の抽出処理を行う機能をチェックして有効にした場合の依存関係の抽出処理によっても、例えば、図7に示す有向グラフが表示画面4a上に表示される。図7に示す有向グラフは、デバイスX1を起点として前向き依存関係を抽出する処理を行う過程で、第2の条件に合致するデバイスであるデバイスM1については、さらに依存関係の抽出処理を進め、第2の条件に合致しないデバイスであるデバイスY1,Y2,Y3(図4参照)に行き着いたら、それ以上の依存関係の抽出処理を行わないようにしても得られる。
このようにして抽出されて表示される依存関係(の有向グラフ)の中から1つのデバイスを選択すれば、変数依存関係表示処理部12は回路表示処理部19に対して、その選択されたデバイスをコイル出力するラダー回路のみを表示するように、あるいは、第1の抽出結果に従ったデバイス依存関係の全体を表示しつつ選択されたデバイスをコイル出力するラダー回路を表示するように、指示するように構成してもよい。そうすれば図9のような表示の構成となり、解析作業をより一層効率化することに寄与する。依存関係(の有向グラフ)は、ラダーの制御構造から依存関係だけを抽出し、他の情報をそぎ落とすことで、ラダーの制御構造を大局的な視点で把握することを支援するものであるから、依存関係(の有向グラフ)を表示するだけでなく、その中から注目したい部分を局所的に詳細確認するために、その部分に相当するラダー回路を表示することは、解析作業をより一層効率化するためには効果的である。
なお、抽出されて表示される依存関係(の有向グラフ)の中から1つのデバイスが選択された際に、その選択されたデバイスを、依存関係(の有向グラフ)の中における他のデバイスと区別できる表示形態で表示してもよい。例えば、図9に示すように、デバイスY3から表示されたラダー回路へ向けて破線の矢印を表示することで、表示されたラダー回路でコイル出力されるデバイスY3と第1の抽出結果に従った依存関係(の有向グラフ)の中におけるデバイスY3とを対応付けて表示してもよい。
また、ラダー回路の表示においてはデバイスに付与されたデバイスコメント17(図2参照)を合わせて表示できるのと同様に、依存関係(の有向グラフ)の表示おいてもデバイスに付与されたデバイスコメント17を合わせて表示できる。
以上のように、実施の形態1では、解析条件設定操作部9が、さらなる前向き又は後向きのデバイス依存関係を抽出しないデバイスに係る第1の条件、又はさらなる前向き又は後向きのデバイス依存関係を抽出するデバイスに係る第2の条件を設定する。変数依存関係抽出部15は、第1の条件に合致するデバイスについてさらなる前向き又は後向きのデバイス依存関係を抽出しないように、且つ第2の条件に合致するデバイスについてさらなる前向き又は後向きのデバイス依存関係を抽出するように、ラダープログラム16から解析条件設定操作部9で設定された起点を起点として前向き又は後向きのデバイス依存関係を抽出して、第1の抽出結果を生成する。変数依存関係表示処理部12は、第1の抽出結果に従って、デバイス依存関係を表示する。これにより、第1の条件又は第2の条件を用いることで、デバイス依存関係の方向性を利用してデバイス依存関係を効率的に絞り込むことができる。この結果、多数の解析条件(解析コマンド、解析対象等)を組み合わせて指定せずとも、巨大で複雑な依存関係(の有向グラフ)から、不具合に深く関係する依存関係(の有向グラフ)だけを抽出することが可能となる。すなわち、生産設備が備える表示器と操作ボタンとを用いてデバッグ作業を行う場合に、巨大で複雑な依存関係(の有向グラフ)から不具合に深く関係する依存関係(の有向グラフ)を少ない操作数で抽出して表示できる。
また、実施の形態1では、解析条件設定操作部9が、第1の条件として、さらなる前向き又は後向きのデバイス依存関係を抽出しないデバイス種別(例えば、Yデバイス)を設定する。又は、解析条件設定操作部9が、第2の条件として、さらなる前向き又は後向きのデバイス依存関係を抽出するデバイス種別を設定する。変数依存関係抽出部15は、抽出しないデバイス種別(第1の条件)に合致するデバイスについてさらなる前向き又は後向きのデバイス依存関係を抽出しないように、且つ抽出するデバイス種別(第2の条件)に合致するデバイスについてさらなる前向き又は後向きのデバイス依存関係を抽出するように、ラダープログラム16から解析条件設定操作部9で設定された起点を起点として前向き又は後向きのデバイス依存関係を抽出して、第1の抽出結果を生成する。これにより、第1の条件又は第2の条件を用いることで、デバイス依存関係の方向性を利用してデバイス依存関係を効率的に絞り込むことができる。
また、実施の形態1では、回路表示処理部19が、第1の抽出結果に従ったデバイス依存関係の中から1つのデバイスが指定されたとき、指定されたデバイスをコイル出力するラダー回路を選択的に表示する、又は、第1の抽出結果に従ったデバイス依存関係の全体を表示しつつ指定されたデバイスをコイル出力するラダー回路を選択的に表示する。これにより、依存関係(の有向グラフ)を用いてラダーの制御構造を大局的な視点で把握することを支援できるとともに、その中から注目したい部分を局所的に詳細確認することを支援できる。その結果、解析作業をより一層効率化できる。
実施の形態2.
次に、実施の形態2にかかるプログラム解析支援装置について説明する。以下では、実施の形態1と異なる部分を中心に説明する。
抽出されたデバイスおよび依存関係が巨大となる原因は、実施の形態1で述べた原因以外にもある。それは、多くの箇所で接点として参照されるMデバイスの存在である。このようなMデバイスが存在すれば、依存関係(の有向グラフ)を十分に絞り込むことができない可能性がある。
そこで、実施の形態2では、多くの箇所で接点として参照される(参照回数の多い)Mデバイスが存在するような場合に対処するための仕組みについて説明する。
Mデバイスは内部的に使用されるものであって、処理結果の一時的な保持を目的として使用される。よって、どのような性質のものを一時的に保持すべくMデバイスを使用しているかについては、ラダー作成者に依存するところとなる。しかしながらMデバイスの使用目的は、単なる処理結果の一時的な保持という場合と、対象を計測制御する上で不可欠となるコントローラの内部状態の保持という場合とに、大別される。
単なる処理結果の一時的な保持としてのMデバイスは、これを接点として参照されている数は少ない。これに対して、コントローラの内部状態を保持するMデバイスは、これを接点として参照されている回数は格段に多い。コントローラの内部状態は、種々の計測制御機能において、インタロック条件の確認など、とても重要だからである。
すなわち、コントローラの内部状態を保持するMデバイスは、実際にはその値をコントローラ外部に出力することがないものの、単なる処理結果の一時的な保持としての役割を超えて、実質的にはYデバイスと同等の役割を果たしているものである。したがって、実施の形態1で述べたとおり、そのMデバイスがさらに接点としても参照されているところまで依存関係の抽出処理を進めることは、当初の依存関係の抽出の範囲を超えて、さらに当該Mデバイスを起点とした依存関係の抽出を行っているに他ならない。
ここに着目し、実施の形態2では、接点として参照されている回数、すなわち、当該デバイスが影響を与える他のデバイスの数が、指定の閾値以上であるデバイスについては、それ以上の依存関係の抽出処理を行わないことにする。すなわち、解析条件設定操作部9は、第1の条件として、起点デバイスからの起点デバイスを含めたデバイスの参照回数(の閾値)を設定する。
図13は、参照回数によってそれ以上の依存関係の抽出処理を行わない機能をチェックして有効にし、それ以上の依存関係の抽出処理を行わないことにする参照回数の閾値として、3回を指定している場合を示している。
例えば、回数指定オンオフ欄9a9では、参照回数の指定を行うこと(オン)及び参照回数の指定を行わないこと(オフ)のいずれかが指示される。図13では、参照回数の指定を行うこと(オン)が指示された場合が例示されている。回数指定オンオフ欄9a9では、例えば、チェックを入れることで参照回数の指定を行うこと(オン)を指示し、チェックを外すことで参照回数の指定を行わないこと(オフ)を指示してもよい。
回数指定欄9a10では、起点デバイスからの起点デバイスを含めたデバイスの参照回数の閾値が指示される。図13では、参照回数の閾値として、3回が指示された場合が例示されている。例えば、向き指定欄9a5で前向きが選択され、起点指定欄9a6でデバイスX1が指示され、回数指定オンオフ欄9a9で参照回数の指定を行うこと(オン)が指示され、回数指定欄9a10で3(回)が指示された場合、デバイスX1を起点として前向きにデバイス依存関係をたどっていったときにデバイスX1を含めてデバイスを3回以上参照するものが発生したら、さらなる前向きのデバイス依存関係を抽出しないようにする。
次に、デバイスの参照使用の回数によってそれ以上の依存関係の抽出処理を行わない機能をチェックして有効にした場合の依存関係の抽出処理について、図15を用いて説明する。図15は、参照回数を考慮した依存関係の抽出処理を示すフローチャートである。
ステップS21では、解析条件設定操作部9が、参照回数の閾値の指定があるか否かを判断する。解析条件設定操作部9は、参照回数の閾値の指定がある(ステップS21で「Yes」)場合、処理をステップS23へ進め、参照回数の閾値の指定がない(ステップS21で「No」)場合、処理をステップS22へ進める。
ステップS22では、解析条件設定操作部9が、デバイス使用状況ヒストグラムを抽出するよう変数使用状況抽出部14に指示する。変数使用状況抽出部14は、例えば、解析条件設定操作部9を介して使用状況を抽出するよう指示されたことを認識する。例えば、変数使用状況抽出部14は、解析選択欄9a1が選択された場合、使用状況を抽出するよう指示されたことを認識する(図16参照)。変数使用状況抽出部14は、例えば、使用状況を抽出するよう指示されたことを認識すると、デバイスの使用状況を抽出する。変数使用状況抽出部14は、デバイスの使用状況の抽出結果を生成して変数使用状況表示処理部11へ供給する。
変数使用状況表示処理部11は、例えば、デバイスの使用状況の抽出結果を変数使用状況抽出部14から受ける。変数使用状況表示処理部11は、デバイスの使用状況の抽出結果を用いて表示情報を生成し、生成された表示情報に従って、デバイスの使用状況の抽出結果を表示部4の表示画面4a上に表示する。例えば、変数使用状況表示処理部11は、デバイスの使用状況の抽出結果をグラフにまとめたグラフ情報を生成し、グラフ情報に従って、デバイスの使用状況の抽出結果を表示部4の表示画面4a上にグラフの形態で表示する。
例えば、変数使用状況表示処理部11は、デバイスの使用状況の抽出結果を用いて、デバイス個数を縦軸とし接点参照回数を横軸とするデバイス使用状況ヒストグラム(図17参照)を表示画面4a上に表示する。これにより、デバイス使用状況ヒストグラムを閲覧したユーザは、デバイス使用状況ヒストグラムのプロファイルに応じて、参照回数の閾値を決めることができる。
例えば、ユーザは、デバイス使用状況ヒストグラムのプロファイルが多峰性である場合、第1極小点に対応した接点参照回数(例えば、図17の場合、6回)を参照回数の閾値として決定できる。また、例えば、ユーザは、デバイス使用状況ヒストグラムのプロファイルが単峰性である場合、デフォルト値(例えば、3回)を参照回数の閾値として決定できる。
そして、解析条件設定操作部9は、ユーザ操作8に応じて、デバイス依存関係の抽出を行うように変数依存関係抽出部15に指示する。変数依存関係抽出部15は、例えば、解析条件設定操作部9を介してデバイス依存関係を抽出するよう指示されたことを認識する。例えば、変数使用状況抽出部14は、解析選択欄9a2が選択された場合、デバイス依存関係を抽出するよう指示されたことを認識する(図13参照)。
ステップS23では、解析条件設定操作部9が、ユーザ操作8に対応して操作ボタン5a等で受け付けられた起点設定指示に応じて、抽出したい依存関係の起点を設定する。例えば、図6に示す場合、解析条件設定操作部9は、抽出したい依存関係の起点としてデバイスX1を設定する。解析条件設定操作部9は、設定された、抽出したい依存関係の起点の情報を解析処理実行部13へ供給する。
また、解析条件設定操作部9は、ユーザ操作8に対応して操作ボタン5a等で受け付けられた第1の条件設定指示に応じて、第1の条件を設定する。例えば、図13に示す場合、解析条件設定操作部9は、第1の条件として、すなわち、さらなる前向き又は後向きのデバイス依存関係を抽出しないための参照回数の閾値として、3回を設定する。解析条件設定操作部9は、設定された第1の条件の情報を解析処理実行部13へ供給する。
ステップS30では、変数依存関係抽出部15が、再帰処理を行う。具体的には、変数依存関係抽出部15は、実施の形態1の再帰処理(ステップS10)と基本的に同様であるが、次の点で異なる処理を行う。
ステップS34では、変数依存関係抽出部15が、処理対象のデバイスが参照使用される回数がステップS23で設定された閾値以上であるか否かを判断する。例えば、図13に示す場合、変数依存関係抽出部15は、処理対象のデバイスが参照使用される回数が3回以上であるか否かを判断する。変数依存関係抽出部15は、閾値以上である(ステップS34で「Yes」)場合、処理をS17へ進め、閾値以上でない(ステップS34で「No」)場合、処理をS15へ進める。
このように、デバイスの参照使用の回数によってそれ以上の依存関係の抽出処理を行わない機能をチェックして有効にした場合の依存関係の抽出処理により、例えば、図14に示す有向グラフが表示画面4a上に表示される。図14は、参照回数を考慮した前向き依存関係抽出結果例に対応した有向グラフを示す図である。閾値として3回が指定されているから、参照回数が3回未満のデバイスであるデバイスM1,Y3については、さらに依存関係の抽出処理を進め、参照回数が3以上であるデバイスM2,M3については、それ以上の依存関係の抽出処理を行わない。
図4に示す有向グラフが図14に示す有向グラフのごとく絞り込めていることからもわかるように、デバイスの参照使用の回数によってそれ以上の依存関係の抽出処理を行わない機能をチェックして有効にすることで、多数の解析条件(解析コマンド、解析対象等)を組み合わせて指定せずとも、巨大で複雑な依存関係(の有向グラフ)を絞り込むことができる。
なお、抽出された依存関係の表示の際、参照回数が閾値以上であることにより先の依存関係抽出を止めたデバイスについては、それぞれの参照回数を合わせて表示することもできる。
実際のところ、どの程度の数を閾値として、設定すべきかについては、作成されたラダープログラムに依存するところとなる。しかしながら、たとえラダー作成者の当人といえども、この閾値を適当に設定することは容易ではない。そこで、各デバイスが、どの程度に接点として参照使用されているか、その参照回数を使用状況として抽出する機能、すなわちデバイスの接点参照回数のヒストグラム機能を設けることにしている。
図16は、デバイスの使用状況を抽出する機能を選択している場合を示している。この場合、解析条件の設定は、特段に必要ない。図17は、その実行結果の一例である。このヒストグラムは、接点参照回数が1回、すなわち、プログラム中で接点として使用されているところが1箇所であるようなデバイスが40個ある、という見方をするものである。そして図17は、接点参照回数の多いデバイスの個数は少なくなる傾向にある中で、接点参照回数が6回、7回というデバイスが0個になったのに対して、接点参照回数が8回というデバイスが数個存在している例を示している。
一般的なラダープログラムに対して、このようなデバイスの使用状況を抽出すれば、およそ図17のような傾向、つまり、ヒストグラムの形状が単峰性ではなく、多峰性を示すことが、多くの場合で見られる。
これは、例えば、Mデバイスの使用目的は、単なる処理結果の一時的な保持という場合と、対象を計測制御する上で不可欠となるコントローラの内部状態の保持という場合とに、大別されるところ、単なる処理結果を一時的に保持するMデバイスは接点参照回数が少なく、しかしそのようなMデバイスの個数は多い傾向にあることに対応している。そして、これは、さらに、対象を計測制御する上で不可欠となるコントローラの内部状態を保持するMデバイスは、インタロック条件の確認など、とても重要であるから、種々の計測制御機能において参照されるから、接点参照回数が多く、しかしそのようなMデバイスの個数は限られている、ということに対応している。
このようにして得られた、接点参照回数のヒストグラムの結果に基づいて、それ以上の依存関係の抽出処理を行わないことにする参照回数の値を決めることができる。具体的には、図17のような接点参照回数のヒストグラムが得られた場合には、それ以上の依存関係の抽出処理を行わないことにする参照回数の閾値として、例えば第1極小点に対応した6回を指定すればよい。図17の場合、接点参照回数の6〜7回が、単なる処理結果の一時的な保持デバイスと、対象を計測制御する上で不可欠となるコントローラの内部状態の保持デバイスとの、分かれ目となる閾値と考えられるからである。
なお、これを自動的に行うように構成してもよい。すなわち、ユーザが明示的にデバイス使用状況を抽出して、閾値を見出すことを必要としないように構成するものである。例えば、回数指定の機能をチェックするだけで、その閾値を入力しなかった場合には、依存関係の抽出処理を行う前に、自動的にデバイス使用状況を抽出し、そのヒストグラムから第1極小点を抽出し、その第1極小点を閾値として採用して、依存関係の抽出処理を行う、という構成が考えられる。
こうすることで、多数の解析条件(解析コマンド、解析対象等)を組み合わせて指定せずとも、巨大で複雑な依存関係(の有向グラフ)を絞り込むことができる。
Mデバイス以外のデバイス種別でも、参照回数が多くなることがあり、デバイス種別をMデバイスに限定することなく、実施の形態2を適用してもよい。
実施の形態2においても、後向き依存関係の抽出も、前向き依存関係の抽出と同じである。特に、前向きの依存関係を抽出する際に、絞り込みの効果が大きい。
なお、実施の形態1と実施の形態2とを組み合わせて実施することができる。これにより、さらなる絞り込みが可能となる。
以上のように、実施の形態2では、変数使用状況抽出部14(図2参照)が、第1の条件(例えば、参照回数の閾値)を設定する際の参考情報として供するように、ラダープログラムからデバイスについて、複数のラダー行で接点として参照使用されている回数に関するヒストグラムを抽出する。これにより、ヒストグラムの抽出結果に応じて、単なる処理結果の一時的な保持デバイスと対象を計測制御する上で不可欠となるコントローラの内部状態の保持デバイスとの分かれ目となる回数の閾値を特定することができ、第1の条件として、例えば、それ以上の依存関係の抽出処理を行わないことにする参照回数の閾値を決めることができる。
また、実施の形態2では、解析条件設定操作部9が、第1の条件として、さらなる前向き又は後向きのデバイス依存関係を抽出しない参照回数の閾値を設定する。変数依存関係抽出部15は、抽出しない参照回数の閾値(第1の条件)に合致する、すなわちその参照回数が閾値以上であるデバイスについてさらなる前向き又は後向きのデバイス依存関係を抽出しないように、ラダープログラム16から解析条件設定操作部9で設定された起点を起点として前向き又は後向きのデバイス依存関係を抽出して、第1の抽出結果を生成する。これにより、第1の条件を用いることで、デバイス依存関係の方向性を利用してデバイス依存関係を効率的に絞り込むことができる。
実施の形態3.
次に、実施の形態3にかかるプログラム解析支援装置について説明する。以下では、実施の形態2と異なる部分を中心に説明する。
実施の形態2では、多くの箇所で接点として参照されるMデバイスに着目しているが、内部的に使用されるMデバイスのうち、重要なものは、これを接点として参照されている回数が多いというほかに、そのMデバイスに直接的に影響を与えるデバイスの数、すなわち、そのMデバイスがコイルとなっているラダー1行中において、そのコイルを制御する接点の数が多い場合もある。図18は、そのようなラダーの一例であり、このようなラダープログラムに対して、後向きの依存関係を抽出すれば、図19に示すような有向グラフが得られ、抽出結果が発散的になる傾向にあることが分かる。
そこで、実施の形態3では、Mデバイスがコイルとなっているラダー1行中において、そのコイルを制御する接点の数(制御依存回数)が多い場合に対処するための仕組みについて説明する。
実施の形態2でいうところの、接点として参照されている回数が多いMデバイスは、コントローラの内部状態を保持しているという制御上の意味において重要であるのに対し、実施の形態3でいうところの、そのコイルを制御する接点が多いMデバイスは、そのMデバイスをON/OFF制御する条件がとても複雑であって不具合が起こりやすいという意味において重要である。
ここに着目し、実施の形態3では、当該デバイスがコイルとなっているラダー1行中の接点の数、すなわち、当該デバイスに直接的に影響を与える他のデバイスの数が、制御依存回数の閾値を超えているデバイスについては、それ以上の依存関係の抽出処理を行わないことにする。すなわち、解析条件設定操作部9は、第1の条件として、1つのラダー行でいくつの接点から制御依存を受けているのかを示す制御依存回数(の閾値)を設定する。
図20は、ラダー1行中にそのコイルを制御する接点の数を示す制御依存回数によってそれ以上の依存関係の抽出処理を行わない機能をチェックして有効にし、それ以上の依存関係の抽出処理を行わないことにするコイルの制御依存回数の閾値として、3回を指定している場合を示している。
例えば、解析条件設定操作画面9aは、回数指定オンオフ欄9a9aをさらに有してもよい。回数指定オンオフ欄9a9aと回数指定オンオフ欄9a9とは、ともに非選択とすることは可能だが、選択される場合に択一的に選択される。
例えば、回数指定オンオフ欄9a9aでは、制御依存回数の指定を行うこと(オン)及び制御依存回数の指定を行わないこと(オフ)のいずれかが指示される。図20では、制御依存回数の指定を行うこと(オン)が指示された場合が例示されている。回数指定オンオフ欄9a9aでは、例えば、チェックを入れることで制御依存回数の指定を行うこと(オン)を指示し、チェックを外すことで制御依存回数の指定を行わないこと(オフ)を指示してもよい。
回数指定欄9a10では、ラダー1行中にそのコイルを制御する接点の数を示す制御依存回数の閾値が指示される。図20では、制御依存回数の閾値として、3回が指示された場合が例示されている。例えば、向き指定欄9a5で後向きが選択され、起点指定欄9a6でデバイスY1が指示され、回数指定オンオフ欄9a9aで制御依存回数の指定を行うこと(オン)が指示され、回数指定欄9a10で3(回)が指示された場合、デバイスY1を起点として後向きにデバイス依存関係をたどっていったときに、ラダー1行中に制御依存する回数が3回以上のコイル(例えば、図18に示すデバイスM11,M12)が発生したら、さらなる後向きのデバイス依存関係を抽出しないようにする。
デバイスがコイルとなっているラダー1行中のコイルの制御依存回数によってそれ以上の依存関係の抽出処理を行わない機能をチェックして有効にした場合の依存関係の抽出処理について、図22を用いて説明する。図22は、制御依存回数を考慮した依存関係の抽出処理を示すフローチャートである。
ステップS41では、解析条件設定操作部9が、制御依存回数の閾値の指定があるか否かを判断する。解析条件設定操作部9は、制御依存回数の閾値の指定がある(ステップS41で「Yes」)場合、処理をステップS43へ進め、制御依存回数の閾値の指定がない(ステップS41で「No」)場合、処理をステップS42へ進める。
ステップS42では、解析条件設定操作部9が、デバイス使用状況ヒストグラムを抽出するよう変数使用状況抽出部14に指示する。変数使用状況抽出部14は、例えば、解析条件設定操作部9を介して使用状況を抽出するよう指示されたことを認識する。例えば、変数使用状況抽出部14は、解析選択欄9a1が選択された場合、使用状況を抽出するよう指示されたことを認識する(図16参照)。変数使用状況抽出部14は、例えば、使用状況を抽出するよう指示されたことを認識すると、デバイスの使用状況を抽出する。変数使用状況抽出部14は、デバイスの使用状況の抽出結果を生成して変数使用状況表示処理部11へ供給する。
変数使用状況表示処理部11は、例えば、デバイスの使用状況の抽出結果を変数使用状況抽出部14から受ける。変数使用状況表示処理部11は、デバイスの使用状況の抽出結果を用いて表示情報を生成し、生成された表示情報に従って、デバイスの使用状況の抽出結果を表示部4の表示画面4a上に表示する。例えば、変数使用状況表示処理部11は、デバイスの使用状況の抽出結果をグラフにまとめたグラフ情報を生成し、グラフ情報に従って、デバイスの使用状況の抽出結果を表示部4の表示画面4a上にグラフの形態で表示する。
例えば、変数使用状況表示処理部11は、デバイスの使用状況の抽出結果を用いて、デバイス個数を縦軸とし制御依存回数を横軸とするデバイス使用状況ヒストグラム(例えば、図17で横軸を制御依存回数に置き換えたもの)を表示画面4a上に表示する。これにより、デバイス使用状況ヒストグラムを閲覧したユーザは、デバイス使用状況ヒストグラムのプロファイルに応じて、制御依存回数の閾値を決めることができる。
例えば、ユーザは、デバイス使用状況ヒストグラムのプロファイルが多峰性である場合、第1極小点に対応した制御依存回数(例えば、図17で横軸を制御依存回数に置き換えたものの場合、6回)を制御依存回数の閾値として決定できる。また、例えば、ユーザは、デバイス使用状況ヒストグラムのプロファイルが単峰性である場合、デフォルト値(例えば、3回)を制御依存回数の閾値として決定できる。
そして、解析条件設定操作部9は、ユーザ操作8に応じて、デバイス依存関係の抽出を行うように変数依存関係抽出部15に指示する。変数依存関係抽出部15は、例えば、解析条件設定操作部9を介してデバイス依存関係を抽出するよう指示されたことを認識する。例えば、変数使用状況抽出部14は、解析選択欄9a2が選択された場合、デバイス依存関係を抽出するよう指示されたことを認識する(図20参照)。
ステップS43では、解析条件設定操作部9が、ユーザ操作8に対応して操作ボタン5a等で受け付けられた起点設定指示に応じて、抽出したい依存関係の起点を設定する。例えば、図20に示す場合、解析条件設定操作部9は、抽出したい依存関係の起点としてデバイスY1を設定する。解析条件設定操作部9は、設定された、抽出したい依存関係の起点の情報を解析処理実行部13へ供給する。
また、解析条件設定操作部9は、ユーザ操作8に対応して操作ボタン5a等で受け付けられた第1の条件設定指示に応じて、第1の条件を設定する。例えば、図20に示す場合、解析条件設定操作部9は、第1の条件として、すなわち、さらなる前向き又は後向きのデバイス依存関係を抽出しないための制御依存回数の閾値として、3回を設定する。解析条件設定操作部9は、設定された第1の条件の情報を解析処理実行部13へ供給する。
ステップS50では、変数依存関係抽出部15が、再帰処理を行う。具体的には、変数依存関係抽出部15は、実施の形態1の再帰処理(ステップS10)と基本的に同様であるが、次の点で異なる処理を行う。
ステップS54では、変数依存関係抽出部15が、処理対象のデバイスを制御する接点数、すなわち制御依存回数がステップS43で設定された閾値以上であるか否かを判断する。例えば、図20に示す場合、変数依存関係抽出部15は、制御依存回数がが3回以上であるか否かを判断する。変数依存関係抽出部15は、閾値以上である(ステップS54で「Yes」)場合、処理をS17へ進め、閾値以上でない(ステップS54で「No」)場合、処理をS15へ進める。
このように、デバイスがコイルとなっているラダー1行中のコイルの制御依存回数によってそれ以上の依存関係の抽出処理を行わない機能をチェックして有効にした場合の依存関係の抽出処理により、例えば、図21に示す有向グラフが表示画面4a上に表示される。図21は、制御依存回数を考慮した後向き依存関係抽出結果例に対応した有向グラフを示す図である。閾値として3回が指定されているから、制御依存回数が3回未満であるデバイスM1については、さらに依存関係の抽出処理を進め、制御依存回数が3回以上であるデバイスM11,M12(図19参照)については、それ以上の依存関係の抽出処理を行わない。
図19に示す有向グラフが図21に示す有向グラフのごとく絞り込めていることからもわかるように、デバイスがコイルとなっているラダー1行中のコイルの制御依存回数によってそれ以上の依存関係の抽出処理を行わない機能をチェックして有効にすることで、多数の解析条件(解析コマンド、解析対象等)を組み合わせて指定せずとも、巨大で複雑な依存関係(の有向グラフ)を絞り込むことができる。
なお、抽出された依存関係の表示の際、制御依存回数が閾値以上であることにより先の依存関係抽出を止めたデバイスについては、それぞれの制御依存回数を合わせて表示することもできる。
実際のところ、どの程度の数を閾値として、設定すべきかについては、作成されたラダープログラムに依存するところとなるのは、実施の形態2で述べたとおりであるから、各デバイスがコイルとなっているラダー1行中において、どの程度の接点数(制御依存回数)によって制御されているか、その接点数(制御依存回数)を使用状況として抽出する機能、すなわちデバイスの制御接点数(制御依存回数)のヒストグラム機能を設けることにしている。その内容等についても、実施の形態2と同様である。
実施の形態3においても、後向き依存関係の抽出も、前向き依存関係の抽出と同じである。特に、後向きの依存関係を抽出する際に、絞り込みの効果が大きい。
なお、実施の形態1〜3を適宜組み合わせて実施することができる。例えば、実施の形態1と実施の形態3、実施の形態2と実施の形態3、実施の形態1と実施の形態2と実施の形態3のように適宜組み合わせて実施することができる。これにより、さらなる絞り込みが可能となる。
以上のように、実施の形態3では、変数使用状況抽出部14(図2参照)が、第1の条件(例えば、制御依存回数の閾値)を設定する際の参考情報として供するように、ラダープログラムからデバイスについて、1つのラダー行でいくつの接点から制御依存を受けているのかを示す回数に関するヒストグラムを抽出する。これにより、ヒストグラムの抽出結果に応じて、ON/OFF制御する条件がとても複雑であって不具合が起こりやすいデバイスとそうでないデバイスとの分かれ目となる閾値を特定することができ、第1の条件として、例えば、それ以上の依存関係の抽出処理を行わないことにする制御依存回数の閾値を決めることができる。
また、実施の形態3では、解析条件設定操作部9が、第1の条件として、さらなる前向き又は後向きのデバイス依存関係を抽出しない制御依存回数の閾値を設定する。変数依存関係抽出部15は、抽出しない制御依存回数の閾値(第1の条件)に合致する、すなわちその制御依存回数が閾値以上であるデバイスについてさらなる前向き又は後向きのデバイス依存関係を抽出しないように、ラダープログラム16から解析条件設定操作部9で設定された起点を起点として前向き又は後向きのデバイス依存関係を抽出して、第1の抽出結果を生成する。これにより、第1の条件を用いることで、デバイス依存関係の方向性を利用してデバイス依存関係を効率的に絞り込むことができる。
実施の形態4.
次に、実施の形態4にかかるプログラム解析支援装置について説明する。以下では、実施の形態2及び実施の形態3と異なる部分を中心に説明する。
実施の形態2及び実施の形態3に見られるような、内部的に使用されるMデバイスのうち重要なものは、自己保持となっている場合が多い。
そこで、実施の形態4では、自己保持となっているデバイスに対処するための仕組みについて説明する。
ここで、自己保持とは、図23で示されるようなラダーのことであって、デバイスM5は、デバイスX5がONになればONとなり、しかもデバイスX5がOFFになっても、デバイスM5はONを保持し続けることから、自己保持と呼ばれる。ONを保持し続けるデバイスM5をOFFにするためには、デバイスX6またはデバイスX7をONにすればよい。そのため、デバイスM5にとって、デバイスX5の位置に記述される接点はON条件としての依存関係、デバイスX6又はデバイスX7の位置に記述される接点はOFF条件としての依存関係であるといえる。
このように、自己保持となっているデバイスは、状態を保持するものであるから、制御において重要な役割を果たすことが多いのである。
ここに着目し、実施の形態4では、ラダー1行中で接点としてもコイルとしても使用されていて自己保持となっているデバイスについては、それ以上の依存関係の抽出処理を行わないことにする。
図24は、デバイス種別によってそれ以上の依存関係の抽出処理を行わない機能をチェックして有効にし、それ以上の依存関係の抽出処理を行わないことにするデバイス種別として、自己保持を指定している場合を示している。
例えば、図24に示すように、解析条件設定操作画面9aにおいて、2つの解析選択欄9a1,9a2のうち解析選択欄9a2が選択され、向き指定欄9a5で前向きが選択され、起点指定欄9a6で抽出したい依存関係の起点としてデバイスX1が指示され、種別指定オンオフ欄9a7で種別指定を行うこと(オン)が指示される。そして、種別指定欄9a8で、さらなる前向き又は後向きのデバイス依存関係を抽出しないデバイスの種別(第1の条件)として、自己保持デバイスが指示される。
デバイス種別によってそれ以上の依存関係の抽出処理を行わない機能をチェックして有効にした場合の依存関係の抽出処理について、図25を用いて説明する。図25は、自己保持デバイスを考慮した依存関係の抽出処理を示すフローチャートである。
ステップS61では、解析条件設定操作部9が、ユーザ操作8に対応して操作ボタン5a等で受け付けられた起点設定指示に応じて、抽出したい依存関係の起点を設定する。例えば、図24に示す場合、解析条件設定操作部9は、抽出したい依存関係の起点としてデバイスX1を設定する。解析条件設定操作部9は、設定された、抽出したい依存関係の起点の情報を解析処理実行部13へ供給する。
また、解析条件設定操作部9は、ユーザ操作8に対応して操作ボタン5a等で受け付けられた第1の条件設定指示に応じて、第1の条件を設定する。例えば、図24に示す場合、解析条件設定操作部9は、第1の条件として、すなわち、さらなる前向き又は後向きのデバイス依存関係を抽出しないデバイス種別として、自己保持デバイスを設定する。解析条件設定操作部9は、設定された第1の条件の情報を解析処理実行部13へ供給する。
ステップS70では、変数依存関係抽出部15が、再帰処理を行う。具体的には、変数依存関係抽出部15は、実施の形態1の再帰処理(ステップS10)と基本的に同様であるが、次の点で異なる処理を行う。
ステップS74では、変数依存関係抽出部15が、処理対象のデバイスが自己保持デバイスであるか否かを判断する。変数依存関係抽出部15は、自己保持デバイスである(ステップS74で「Yes」)場合、処理をS17へ進め、自己保持デバイスでない(ステップS74で「No」)場合、処理をS15へ進める。
このように、デバイス種別によってそれ以上の依存関係の抽出処理を行わない機能をチェックして有効にした場合の依存関係の抽出処理により、多数の解析条件(解析コマンド、解析対象等)を組み合わせて指定せずとも、巨大で複雑な依存関係(の有向グラフ)を絞り込むことができる。
なお、実施の形態4においても、後向き依存関係の抽出も、前向き依存関係の抽出と同様である。
また、実施の形態1から4を適宜組み合わせて実施することができる。これにより、さらなる絞り込みが可能となる。
以上のように、実施の形態4では、解析条件設定操作部9が、第1の条件として、さらなる前向き又は後向きのデバイス依存関係を抽出しないデバイス種別(例えば、自己保持デバイス)を設定する。変数依存関係抽出部15は、抽出しないデバイス種別(第1の条件)に合致するデバイスについてさらなる前向き又は後向きのデバイス依存関係を抽出しないように、ラダープログラム16から解析条件設定操作部9で設定された起点を起点として前向き又は後向きのデバイス依存関係を抽出して、第1の抽出結果を生成する。これにより、第1の条件を用いることで、デバイス依存関係の方向性を利用してデバイス依存関係を効率的に絞り込むことができる。
実施の形態5.
次に、実施の形態5にかかるプログラム解析支援装置について説明する。以下では、実施の形態1〜4と異なる部分を中心に説明する。
実施の形態1〜4によれば、巨大で複雑な依存関係は絞り込むことができるものの、それによって絞り込まれた結果として、得られた依存関係には、当然ながら、起点となるデバイスが影響を与えるデバイスあるいは起点となるデバイスに影響を与えるデバイスの全てのデバイスが含まれていない。従来の依存関係抽出が、抽出してほしいと意図する依存関係の抽出の範囲を超えて、さらなる依存関係の抽出を行っているところ、実施の形態1から4は、これを防止することを目的としているからである。
そこで、起点となるデバイスが影響を与えるデバイスあるいは起点となるデバイスに影響を与えるデバイスの全てのデバイスを、1つの巨大で複雑な依存関係として抽出するのではなく、複数からなる、適度に絞り込まれた依存関係のセットとして抽出することを考えるのが実施の形態5である。
例えば、図5のラダープログラムに対して、デバイスX1を起点とした場合、従来の依存関係抽出では図4を抽出するところ、実施の形態1では、図7のように絞り込まれた結果として抽出するのであるが、こうして得られた図7の終点の1つであるデバイスY3を新たな起点として、別途、さらなる依存関係を抽出することができる。このようにして得られた2つの依存関係は、デバイスX1を起点として絞り込むことなく得られた場合の1つの依存関係をデバイスY3によって分割したものに相当する。
このように、1つの巨大で複雑な依存関係を確認するよりは、複数からなる、適度に絞り込まれた依存関係のセットを確認するほうが、理解しやすい。しかも、これら複数の依存関係は、1つの巨大で複雑な依存関係を、ラダー処理上において重要な意味をもつデバイスで切り分けて分断したものであるから、より理解がしやすいものとなっている。
これを実施するための方法として、絞り込まれた依存関係の終点について、自動的に、新たな起点として、別途、さらなる依存関係を抽出する。すなわち、実施の形態1〜4と同様にして抽出されたデバイス依存関係における各終点を新たな起点として、別途、さらなるデバイス依存関係を抽出する。
例えば、変数依存関係抽出部14は、第1の抽出結果に従ったデバイス依存関係における終点デバイスについて、別途、その終点デバイスを起点としたデバイス依存関係を抽出して、第2の抽出結果を生成する。変数依存関係抽出部14は、生成された第2の抽出結果を変数依存関係表示処理部12へ供給する。
変数依存関係表示処理部12は、第2の抽出結果を変数依存関係抽出部14から受ける。例えば、変数依存関係表示処理部12は、第1の抽出結果に従ってデバイス依存関係を表示するとともに、第2の抽出結果に従ってデバイス依存関係を表示する。例えば、変数依存関係表示処理部12は、第1の抽出結果に従ったデバイス依存関係の有向グラフと第2の抽出結果に従ったデバイス依存関係の有向グラフとを、互いに識別可能な形態で表示画面4a上に表示する(図27参照)。すなわち、変数依存関係表示処理部12は、解析条件設定操作部9により設定された起点を起点とするデバイス依存関係(図4参照)を、第1の抽出結果及び第2の抽出結果に基づいて、2以上のデバイス依存関係に分割して表示する(図27参照)。
実施の形態1〜4と同様にして抽出されたデバイス依存関係における各終点を新たな起点として、別途、さらなるデバイス依存関係を抽出する処理について、図26を用いて説明する。図26は、抽出された依存関係の終点を自動的に新たな起点とする抽出処理を示すフローチャートである。
ステップS81では、実施の形態1〜4と同様の前処理を行う。例えば、解析条件設定操作部9は、実施の形態1のステップS1(図10参照)と同様の処理を行う。あるいは、例えば、解析条件設定操作部9及び変数使用状況抽出部14は、実施の形態2のステップS21〜ステップS23(図15参照)と同様の処理を行う。あるいは、例えば、解析条件設定操作部9及び変数使用状況抽出部14は、実施の形態3のステップS41〜ステップS43(図22参照)と同様の処理を行う。あるいは、例えば、解析条件設定操作部9は、実施の形態4のステップS61(図25参照)と同様の処理を行う。
ステップS82では、変数依存関係抽出部15が、実施の形態1〜4と同様の再帰処理を行う。例えば、変数依存関係抽出部15は、ステップS81で実施の形態1の前処理が行われた場合、実施の形態1のステップS10(図10参照)と同様の処理を行う。あるいは、例えば、変数依存関係抽出部15は、ステップS81で実施の形態2の前処理が行われた場合、実施の形態2のステップS30(図15参照)と同様の処理を行う。あるいは、例えば、変数依存関係抽出部15は、ステップS81で実施の形態3の前処理が行われた場合、実施の形態3のステップS50(図22参照)と同様の処理を行う。あるいは、例えば、変数依存関係抽出部15は、ステップS81で実施の形態4の前処理が行われた場合、実施の形態4のステップS70(図25参照)と同様の処理を行う。これにより、変数依存関係抽出部15は、デバイス依存関係を抽出する。
ステップS90では、変数依存関係抽出部15が、再帰処理を行う。具体的には、変数依存関係抽出部15は、以下のステップS91〜ステップS96の処理を行う。
ステップS91では、変数依存関係抽出部15が、ステップS82で抽出されたデバイス依存関係における全ての終点デバイスを起点としたか否かが判断される。変数依存関係抽出部15は、全ての終点デバイスを起点とした(ステップS91で「Yes」)場合、処理を終了し、全ての終点デバイスを起点としていない(ステップS91で「No」)場合、処理をステップS92へ進める。
ステップS92では、変数依存関係抽出部15が、ステップS82で抽出されたデバイス依存関係における全ての終点デバイスのうち、未処理のデバイスを1つ、処理対象として選択する。変数依存関係抽出部15は、選択されたデバイスを新たに起点として設定する。
ステップS93では、変数依存関係抽出部15が、ステップS82で行ったのと同じ実施形態の方式により、デバイス依存関係を抽出する。
ステップS94では、変数依存関係抽出部15が、ステップS93でさらなる依存関係の抽出が行われたか否かを判断する。変数依存関係抽出部15は、さらなる依存関係の抽出が行われた(ステップS94で「Yes」)場合、処理をステップS95へ進め、さらなる依存関係の抽出が行われていない(ステップS94で「No」)場合、処理をステップS91へ戻す。
ステップS95では、変数依存関係抽出部15が、処理対象のデバイスを新たに起点として設定する。
ステップS96では、変数依存関係抽出部15が、ステップS95で設定された起点を第2の起点デバイスとして、デバイスの依存関係を抽出する。例えば、変数依存関係抽出部15は、前向きのデバイス依存関係の抽出が指定された場合、第2の起点デバイスが影響を与える全てのデバイスをラダープログラム16中より抽出する。あるいは、例えば、変数依存関係抽出部15は、後向きのデバイス依存関係の抽出が指定された場合、第2の起点デバイスに影響を与える全てのデバイスをラダープログラム16中より抽出する。変数依存関係抽出部15は、抽出処理が完了したら、処理をステップS91へ戻す。
この方法によれば、図5のラダープログラムに対して、デバイスX1を起点とした場合、図27のような依存関係を抽出することができる。図27では、デバイスX1を起点として実施の形態1と同様にして抽出されたデバイス依存関係の有向グラフがタブ「X1」とともに示され、抽出されたデバイス依存関係における終点デバイスY3について、別途、終点デバイスY3を起点としたデバイス依存関係の有向グラフがタブ「Y3」とともに示されている。
なお、解析条件設定操作部9において指定された条件に合致するデバイスについては、変数依存関係抽出部15において考慮して絞り込む代わりに、変数依存関係表示部12において考慮することにして、絞り込むことなく得られた一のデバイス依存関係を、指定された条件に合致するデバイスに基づいて、二以上のデバイス依存関係に分割して表示してもよい。これは、変数依存関係抽出部15において処理していたデバイス依存関係の分割処理を、変数依存関係表示部12のほうへ移動させたに過ぎないので、実質的な処理内容は、同様である。
以上のように、実施の形態5では、変数依存関係抽出部15が、第1の抽出結果に従ったデバイス依存関係における終点デバイスについて、別途、その終点デバイスを起点としたデバイス依存関係を抽出して、第2の抽出結果を生成する。変数依存関係表示処理部12は、解析条件設定操作部9により設定された起点を起点とするデバイス依存関係(図4参照)を、第1の抽出結果及び第2の抽出結果に基づいて、2以上のデバイス依存関係に分割して表示する(図27参照)。これにより、1つの巨大で複雑な依存関係を、ラダー処理上において重要な意味をもつデバイスで切り分けて分断した、適度に絞り込まれた依存関係のセットとして、理解しやすい形態で、抽出することができる。
実施の形態6.
次に、実施の形態6にかかるプログラム解析支援装置について説明する。以下では、実施の形態2と異なる部分を中心に説明する。
実施の形態2の依存関係の抽出では、制御において重要な役割を果たすデバイスより先の依存関係を抽出しないものとしている。これらは、すなわち、起点となるデバイスと、制御において重要な役割を果たすデバイスとの間の依存関係を抽出するものである。
ところで、ラダープログラムが実現している制御の全体を鳥瞰するためには、制御において重要な役割を果たすデバイス間の依存関係を確認するのが、効率的である。
そこで、実施の形態6では、実施の形態2とは逆に、参照回数の多いデバイスのみ、その先の依存関係を抽出し、参照回数の少ないデバイスについては、その先の依存関係を抽出しないことにする。
例えば、図15に示すフローチャートにおいて、ステップS34の処理を、次のステップS34a(図示せず)の処理に置き換える。
ステップS34aでは、変数依存関係抽出部15が、処理対象のデバイスが参照使用される回数がステップS23で設定された閾値以上であるか否かを判断する。例えば、図13に示す場合、変数依存関係抽出部15は、処理対象のデバイスが参照使用される回数が3回以上であるか否かを判断する。変数依存関係抽出部15は、閾値以上である(ステップS34で「Yes」)場合、処理をS15へ進め、閾値以上でない(ステップS34で「No」)場合、処理をS17へ進める。
このようにすれば、参照回数が多く制御において重要な役割を果たすデバイス間の依存関係だけを抽出し、参照回数が少なく制御において付随的・補助的な役割のデバイスを省略することで、ラダープログラムが実現している制御の全体を鳥瞰することが可能となる。
なお、実施の形態1から5を適宜組み合わせて実施することができ、より効果的となる。例えば、実施の形態2と組み合わせた場合について説明すると、先ず実施の形態2を利用して、参照回数が少なく制御において付随的・補助的な役割のデバイスを起点として、制御において重要な役割を果たすデバイスとの間の依存関係を抽出し、その後、そうしてたどり着いた重要デバイスを、実施の形態5によって自動的に起点として、実施の形態6によって、ラダーが実現している制御の全体を鳥瞰することが可能となる依存関係を抽出し、最後に、その中から最も不具合の原因と思われるデバイスを起点として、従来の依存関係を抽出することで、無用に依存関係が発散した結果となることを回避しつつ、末端の原因にたどり着くことができる。
実施の形態7.
次に、実施の形態7にかかるプログラム解析支援装置について説明する。以下では、実施の形態1から4と異なる部分を中心に説明する。
実施の形態1から4では、巨大で複雑な依存関係は絞り込むことができるものの、それによって絞り込まれた結果として、得られた依存関係には、当然ながら、起点となるデバイスが影響を与えるデバイスあるいは起点となるデバイスに影響を与えるデバイスの全てデバイスが含まれていない。従来の依存関係抽出が、抽出してほしいと意図する依存関係の抽出の範囲を超えて、さらなる依存関係の抽出を行っているところ、実施の形態1から4は、これを防止することを目的としているからである。
ところで、生産設備で起こる不具合動作には、入力をONしたにも関わらず、出力がONしない、というものがある。そのどこに原因があるかを解析するためには、起点となるデバイスが影響を与える全てのデバイスを抽出しなくとも、起点がONすることによってONされるデバイスだけを抽出すればよい場合がある。
ここに着目し、実施の形態7では、a接点として使用されているところに限って、依存関係の抽出処理を進めることにしている。a接点は、例えば、図23に示される、デバイスX5やデバイスM5のような正論理で参照される接点のことであり、接点がONすればコイルがONするものである。
a接点として使用されているところに限った依存関係の抽出処理について図28を用いて説明する。図28は、a接点を考慮した依存関係の抽出処理を示すフローチャートである。
ステップS100では、変数依存関係抽出部15が、再帰処理を行う。具体的には、変数依存関係抽出部15は、実施の形態1の再帰処理(ステップS10)と基本的に同様であるが、次の点で異なる処理を行う。
ステップS101では、変数依存関係抽出部15が、解析条件設定操作部9により設定された起点デバイス(例えば、デバイスX1)を起点として、デバイスの依存関係を抽出する。例えば、変数依存関係抽出部15は、前向きのデバイス依存関係の抽出が指定された場合、起点デバイスがa接点によって影響を与える全てのデバイスをラダープログラム16中より抽出する。あるいは、例えば、変数依存関係抽出部15は、後向きのデバイス依存関係の抽出が指定された場合、起点デバイスにa接点によって影響を与える全てのデバイスをラダープログラム16中より抽出する。
このように、a接点として使用されているところに限った依存関係の抽出処理により、例えば、起点がONすることによってONされるデバイスを選択的に抽出できる。すなわち、多数の解析条件(解析コマンド、解析対象等)を組み合わせて指定せずとも、巨大で複雑な依存関係(の有向グラフ)を絞り込むことができる。
なお、入力が負論理の場合は、a接点ではなくb接点となるから、b接点として使用されているところに限って、依存関係の抽出処理を進めることについては、同様である。ここで、b接点とは、図23において、デバイスX6及びデバイスX7のような負論理で参照される接点のことであり、接点がOFFすればコイルがONするものである。
また、以上においては、前向き依存関係の場合について説明したが、出力がONしない原因がどこにあるかを解析するためには、起点デバイスにa接点によって影響を与える全てのデバイスを抽出しなくとも、起点がONするための条件となるONされるべきデバイスを選択的に抽出すればよい場合があるから、後向き依存関係の場合においても、a接点として使用されているところに限って、依存関係の抽出処理を進めることについては、同様である。なお、a接点とb接点とは論理が逆転しているものであるから、b接点について選択的に依存抽出処理を進めることは、a接点での依存抽出処理を止めることである。
実施の形態7は、実施の形態1から6と適宜組み合わせて実施することができる。これにより、デバイス依存関係のさらなる絞り込みが可能となる。
実施の形態8.
次に、実施の形態8にかかるプログラム解析支援装置について説明する。以下では、実施の形態1と異なる部分を中心に説明する。
実施の形態1では、上記の第1の問題点の解決を目指しているが、実施の形態8では、さらに、上記の第2の問題点の解決を目指す。すなわち、実施の形態8では、第2の問題点への対処として、エラーが発生した時のデバイスメモリの値を保持しておき、その値を考慮したデバイス依存関係の抽出処理を行うことで、再現性の低い不具合原因を特定する。
生産設備では、不具合動作を起こした場合には、その旨を作業者に伝えるとともに、復旧作業を促す必要がある。このためPCでは、エラーの発生を示すFデバイスが用意されており、各種の不具合動作を起こした場合には、それぞれのFデバイスをONにするようなラダープログラムが作成される。
そして、従来のサンプリングトレースでは、予め指定した数点のデバイスについて、常時サンプリングトレースを実行しつつ、当該FデバイスがONとなったとき(または当該FデバイスがONとなったときから一定時間あるいは一定点数に達すれば)サンプリングトレースを停止して、得られたサンプリングトレース結果を見て、当該FデバイスがONに至るまでの他デバイスの値の時系列変化を確認して、不具合原因を特定している。
しかし、それぞれのFデバイスをONにする原因、すなわち、当該Fデバイスに影響を与える他のデバイスの数は膨大であるから、第2の問題点が存在することは、前述のとおりである。
従来のサンプリングトレースには、上述のとおり、常時サンプリングトレースを実行しつつ指定されたトリガ条件の成立で停止(またはトリガ条件成立から一定後に停止)するプレトリガ機能のほか、トリガ条件成立からサンプリングトレースを開始する通常トリガ機能がある。
そこで、実施の形態8では、この通常トリガ機能を利用し、FデバイスがONとなるときをトリガ条件とし、サンプリング点数を1点とする代わりに、サンプリング対象となるデバイスを全デバイス(サンプリング可能な範囲内での全デバイス)に設定する。すなわち、解析条件設定操作部9は、第1の条件として、さらなる前向き又は後向きのデバイス依存関係を抽出しないデバイスをデバイスメモリダンプ18のデバイスにすることを設定する。
例えば、デバイス2つを8192点サンプリングすると、総計16383点のサンプリング容量が必要となるが、同じサンプリング容量でも、1点サンプリングなら、16383個分のデバイスの値を得ることができるのであるから、当該FデバイスがONとなった瞬間に限り、そのときのPCの内部状態をおよそ把握することができる。
このようにして得られたサンプリングトレース結果は、その瞬間のデバイスメモリの状態をダンプしたものであるといえる。PCの内部の全メモリをダンプすることが、容量的に無理であれば、ダンプのトリガとなっている当該Fデバイス値に影響を与えるデバイスを選択的にダンプしてもよい。これは、当該Fデバイスを起点とした後向き依存関係を抽出して得られたデバイスであり、予め設定しておくことが可能である。
こうして得られるデバイスメモリダンプ18(図2参照)を考慮し、当該デバイスをONとする条件となっているデバイスを選択的に遡ることで、後向き依存関係を絞り込むことが可能となる。
例えば、解析条件設定操作部9は、異常発生を出力するデバイス(例えば、デバイスF1)を抽出したい依存関係の起点として設定するとともに、デバイスメモリダンプ18を考慮したデバイス依存関係の抽出を行うように変数依存関係抽出部15に指示する。
図29は、デバイスメモリダンプ18を考慮してそれ以上のデバイス依存関係の抽出処理を行わない機能をチェックして有効にしている場合を示している。
例えば、解析条件設定操作画面9aは、種別指定オンオフ欄9a7、種別指定欄9a8、回数指定オンオフ欄9a9、及び回数指定欄9a10に代えて、メモリダンプオンオフ欄9a11を有する。なお、解析条件設定操作画面9aは、種別指定オンオフ欄9a7、種別指定欄9a8、回数指定オンオフ欄9a9、及び回数指定欄9a10に加えて、メモリダンプオンオフ欄9a11を有していてもよい。
メモリダンプオンオフ欄9a11では、メモリダンプ指定(すなわち、デバイスメモリダンプ18を考慮すること)を行うこと(オン)及びメモリダンプ指定を行わないこと(オフ)のいずれかが指示される。図29では、メモリダンプ指定を行うこと(オン)が指示された場合(すなわち、が例示されている。メモリダンプオンオフ欄9a11では、例えば、チェックを入れることでメモリダンプ指定を行うこと(オン)を指示し、チェックを外すことでメモリダンプ指定を行わないこと(オフ)を指示してもよい。
変数依存関係抽出部15は、解析条件設定操作部9からの指示に応じて、デバイスメモリダンプ18(図2参照)を参照し、解析条件設定操作部9により設定された起点(例えば、デバイスF1)を起点として、デバイスメモリダンプ18の保持内容を参酌しながら、前向き又は後向きのデバイス依存関係を抽出し、第1の抽出結果を生成する。変数依存関係抽出部15は、第1の抽出結果を変数依存関係表示処理部12へ供給する。
変数依存関係表示処理部12は、第1の抽出結果を用いて、表示情報を生成して表示画面4a上に表示する。例えば、変数依存関係表示処理部12は、図32の右図の有効グラフを表示画面4a上に表示する。
デバイスメモリダンプ18を考慮してそれ以上の依存関係の抽出処理を行わない機能をチェックして有効にした場合の依存関係の抽出処理について、図33を用いて説明する。図33は、デバイスのメモリダンプを考慮した依存関係の抽出処理を示すフローチャートである。
ステップS111では、解析条件設定操作部9が、ユーザ操作8に対応して操作ボタン5a等で受け付けられた起点設定指示に応じて、抽出したい依存関係の起点を設定する。例えば、図29に示す場合、解析条件設定操作部9は、抽出したい依存関係の起点としてデバイスF1を設定する。解析条件設定操作部9は、設定された、抽出したい依存関係の起点の情報を解析処理実行部13へ供給する。
また、解析条件設定操作部9は、ユーザ操作8に対応して操作ボタン5a等で受け付けられた第2の条件設定指示に応じて、第2の条件を設定する。例えば、図29に示す場合、解析条件設定操作部9は、第2の条件として、すなわち、デバイスメモリダンプ18の保持内容を設定する。解析条件設定操作部9は、設定された第2の条件の情報を解析処理実行部13へ供給する。
ステップS120では、変数依存関係抽出部15が、再帰処理を行う。具体的には、変数依存関係抽出部15は、実施の形態1の再帰処理(ステップS10)と基本的に同様であるが、次の点で異なる処理を行う。
ステップS121では、変数依存関係抽出部15が、デバイスメモリダンプ18(図2、図30参照)を考慮し、起点デバイス(例えば、デバイスF1)がONとなるか否かを判断する。変数依存関係抽出部15は、ONとなる(ステップS121で「Yes」)場合、処理をステップS122へ進め、OFFとなる(ステップS121で「No」)場合、処理を終了する。
ステップS122では、変数依存関係抽出部15が、解析条件設定操作部9により設定された起点デバイス(例えば、デバイスF1)を起点として、デバイスメモリダンプ18を考慮しながら、デバイスの依存関係を抽出する。
例えば、変数依存関係抽出部15は、前向きのデバイス依存関係の抽出が指定された場合、起点デバイスが影響を与える全てのデバイスのうち、起点デバイスのONが条件となっているデバイスをラダープログラム16中より抽出する。あるいは、例えば、変数依存関係抽出部15は、後向きのデバイス依存関係の抽出が指定された場合、起点デバイスに影響を与える全てのうち、起点デバイスのONが条件となっているデバイスをラダープログラム16中より抽出する。起点デバイスのONが条件となっているデバイスは、例えば、デバイスメモリダンプ18(図30参照)を参照することで把握できる。
例えば、図30は、デバイスF1がONとなるときをトリガ条件として取得したデバイスメモリダンプ18である。このON/OFF状況をラダープログラム上に反映すると、図31のようになる。
この場合、デバイスF1を起点として後向き依存関係を抽出すれば、まずデバイスF1に影響を与えるデバイスとしてデバイスM9が抽出される。デバイスメモリダンプ18を考慮すれば、デバイスM9はONであって、かつ、そのラダー行のコイルであるデバイスF1をONにしているので、さらにデバイスM9に遡る。
次にデバイスM9に影響を与えるデバイスとしてデバイスM90,M91,M92が抽出される。デバイスM90はONであって、かつ、そのラダー行のコイルであるデバイスM9をONにしているので、さらにデバイスM90に遡る。一方でデバイスM91はONであるが、そのラダー行のコイルであるデバイスM9をONにするものではない。なぜならばデバイスM91とデバイスM92の両方がONの場合に限りデバイスM9がONとなるラダーとなっているからである。よってデバイスM91はこれ以上遡らない。デバイスM92はOFFであるから、これ以上遡らない。
次にデバイスM90に影響を与えるデバイスとしてデバイスX9が抽出される。デバイスX9はONであって、かつ、そのラダー行のコイルであるデバイスM90をONにしているので、さらにデバイスX9に遡るが、デバイスX9に影響を与えるそれ以上の依存関係はない。
単にデバイスF1を起点とした後向き依存関係を抽出すれば図32の左図のような結果が得られるところ、デバイスメモリダンプ18を考慮してそれ以上の依存関係の抽出処理を行わない機能をチェックして有効にすることで、図32の右図のような絞り込んだ結果が得られる。
こうすることで、再現性の低い不具合について、エラー発生の原因となりうる膨大な数のデバイスの中から、実際にエラー発生の原因となっているデバイスを絞り込むことができ、前述の第2の問題点を解決できる。
なお、エラー発生時のサンプリングトレース機能によるデバイスメモリダンプの代わりに、任意の時点でのデバイスメモリそのものを参照することもできる。参照する先が、デバイスメモリダンプか、任意の時点でのデバイスメモリか、だけの違いだからである。エラー発生してからしばらくしてエラー停止するまでの間において、デバイスの状況が変化しない場合などでは、エラー発生時のサンプリングトレース機能によるデバイスメモリダンプを取るまでもなく、エラー停止の時点でのデバイスメモリそのものを参照しても、大差ないことも多い。
実施の形態8において、当該デバイスがONとなっている原因を遡るべく、後向き依存関係の抽出では1行のラダープログラムにはコイルに影響を与える接点が複数あるところ、メモリダンプを参照すれば実際にその瞬間においてコイルをONにしている接点を選択的に遡っている。当該デバイスがONとなっていることに起因しているところを掘り下げる場合も同様であって、前向き依存関係の抽出では複数のラダープログラムにおいて接点として参照されるために接点が影響を与えるコイルが複数あるところ、メモリダンプを参照すれば、実際にその瞬間において接点がONにしているコイルを選択的に掘り下げることができる。
また、ONしているデバイスを遡るのではなく、OFFしているデバイスを遡るようにしてもよい。エラー発生の不具合の場合には、エラー発生を示すFデバイスがONとなるから、そのFデバイスが何故ONとなっているかの原因を探るべく、ONしているデバイスを選択的に遡るが、動作すべき機能が動作しないような不具合の場合は、そのYデバイスが何故ONになっていないのか、すなわち何故OFFなのかの原因を探ることもある。この場合には、OFFしているデバイスを選択的に遡る。
加えて、起点となるデバイスを指定すれば、その起点となるデバイスがONとなっている場合には、ONしているデバイスを選択的に遡って、その起点となるデバイスがOFFとなっている場合には、OFFしているデバイスを選択的に遡るようにしてもよい。この場合、ONを遡るか、OFFを遡るかの指定操作が不要となる。
実施の形態8は、実施の形態1から7を適宜組み合わせて実施することができる。これにより、さらなる絞り込みが可能となる。
以上のように、実施の形態8では、解析条件設定操作部9が、異常発生を出力するデバイス(例えば、デバイスF1)を抽出したい依存関係の起点として設定する。変数依存関係抽出部15は、異常発生を出力するデバイスを起点としてデバイスメモリダンプ18の保持内容を参酌して前向き又は後向きのデバイス依存関係を抽出する。これにより、再現性の低い不具合について、実質的に不具合原因の特定に直接的に寄与しないもの(例えば、デバイスの動作)を除外しながら、不具合に深く関係する依存関係(の有向グラフ)を抽出して表示できる。この結果、再現性の低い不具合について、不具合動作について詳細な動作の解析を行うことができる。
実施の形態9.
次に、実施の形態9にかかるプログラム解析支援装置について説明する。以下では、実施の形態1と異なる部分を中心に説明する。
デバイス依存関係は、有向グラフによる表示(ブロックダイアグラム形式での表示)が、理解に適している。しかしながら、デバイス依存関係が巨大で複雑な場合には、その表示操作のために高度なユーザインタフェースが必要となる。よって、パーソナルコンピュータとPCとを接続してデバッグ作業を行う場合には、キーボード、マウス、高解像度ディスプレイにより、高度なユーザインタフェースが実現されうるため、問題ないが、生産設備が備える表示器と操作ボタンを用いてデバッグ作業が行われる場合には、これら限られたユーザインタフェースの範囲内で、デバイス依存関係の有向グラフによる表示(ブロックダイアグラム形式での表示)操作方法を実現せざるをえないため、パーソナルコンピュータの場合に比べ、格段に操作数が多くなり、かえって手間となってしまうという問題点がある。
実施の形態1から8を適宜組み合わせて実施することで、巨大で複雑な依存関係は絞り込むことができるものの、限られたユーザインタフェースの範囲内で依存関係の有向グラフによる表示(ブロックダイアグラム形式での表示)操作しなければならないことに変わりない。
ここで問題としているデバッグ作業とは、PCが組み込まれた生産設備などラダープログラムによって計測制御されている生産設備を使って行われるのであって、不具合動作を解消するために行われるものであるから、巨大で複雑なラダープログラムの構造を解析して理解することよりもむしろエラー原因を迅速に特定することが直接的な目的である。
ここに着目して、実施の形態9では、抽出されたデバイス依存関係の途中の表示を省略し、原因と結果とを選択的に表示可能とする。すなわち、変数依存関係表示処理部12(図2参照)は、デバイス依存関係の起点となるデバイスと、抽出されたデバイス依存関係の終点デバイスとを選択的に表示する機能を有する。例えば、変数依存関係表示処理部12は、ユーザ操作8に応じて、図34のようなデバイス依存関係を、図35に示すように、デバイス依存関係の起点デバイスと終点デバイスとの間を省略した表示形態で表示する。
表示を省略されたデバイス依存関係の途中については、デバイス依存関係の階層ごとに展開して表示できるよう、別途、表示を省略した部分を展開して表示したり、展開して表示した部分を省略して閉じたりするボタンを設ける。例えば、変数依存関係表示処理部12は、第1の抽出結果に従って、デバイス依存関係の起点と終点とについて表示するとともに、起点と終点との中間点である途中のデバイスについて、展開表示操作に従って表示し、折りたたみ表示操作指示に従って表示を省略する。このとき、変数依存関係表示処理部12は、例えば、起点と終点との中間点である途中のデバイスについて、各階層ごとに、展開表示操作に従って表示し、折りたたみ表示操作指示に従って表示を省略する。これにより、デバイス依存関係の全体のうち、確認したい任意の部分(例えば、任意の階層)を選択的に確認することができる。
例えば、全てを展開して表示すれば、実質的に、デバイス依存関係の有向グラフによる表示(ブロックダイアグラム形式での表示)と同じになる。
実施の形態9によれば、デバイス依存関係の起点となるデバイスと、抽出されたデバイス依存関係の終点デバイスとを選択的に表示することが可能となり、PCが組み込まれた生産設備といった、限られたユーザインタフェースの範囲内でも、エラー原因を迅速に特定することが可能となる。
なお、抽出された依存関係が巨大で複雑であれば、終点デバイスの数も膨大なものとなるが、実施の形態1から8を実施することで、あるいは、実施の形態1から8を適宜組み合わせて実施することで、依存関係の末端デバイスの数は現実的な範囲内に絞り込むことができるから、実施の形態9の効果が十分に発揮される。
以上のように、実施の形態9では、変数依存関係表示処理部12が、第1の抽出結果に従って、デバイス依存関係の起点と終点とについて表示するとともに、デバイス依存関係における起点と終点との中間点である途中のデバイスについて、展開表示操作に従って表示し、折りたたみ表示操作指示に従って表示を省略する。例えば、変数依存関係表示処理部12は、起点と終点との中間点である途中のデバイスについて、各階層ごとに、展開表示操作に従って表示し、折りたたみ表示操作指示に従って表示を省略する。これにより、デバイス依存関係の全体のうち、確認したい任意の部分(例えば、任意の階層)を選択的に確認することができる。
実施の形態10.
次に、実施の形態10にかかるプログラム解析支援装置について説明する。以下では、実施の形態8と異なる部分を中心に説明する。
Fデバイスが用意されていることについては、実施の形態8で述べたとおりであって、不具合動作を起こした場合には、その旨を作業者に伝えるとともに、復旧作業を促すために、生産設備では、その表示部に、異常の発生を表示する(例えば非特許文献4)。このとき作業者が、異常の原因がどこにあるかを特定するために、異常発生の画面をみてから、その異常に相当するFデバイスを別途しらべて、そのFデバイスを別途解析条件として設定して、依存関係やラダー回路を見るという作業は煩雑である。
ここに着目して、実施の形態10では、図36に示すように、生産設備における制御装置20がプログラム解析支援装置1を備えることとして、異常発生表示の中から1つの異常表示を選択すると、その異常表示に相当するFデバイスを起点とした依存関係を表示させることにする。このとき、当該異常が発生した際のデバイスメモリダンプ18を参酌して、依存関係を抽出させることもできる。
例えば、制御装置20は、プログラム解析支援装置1、デバイスメモリダンプ18、異常発生表示処理部21、表示部24、異常発生時メモリダンプ処理部22、及び制御部23を備える。プログラム解析支援装置1は、例えば、実施の形態1〜9のいずれかにかかるプログラム解析支援装置を用いることができる。デバイスメモリダンプ18は、実施の形態1,8におけるデバイスメモリダンプを用いることができる。
異常発生表示処理部21は、ラダープログラム16(図2参照)において異常発生が検出されたときに、異常発生を表示部24上に表示する。表示部24は、例えば、液晶ディスプレイなどの表示装置であってもよい。異常発生表示処理部21は、例えば、1以上の異常発生について表示部24上に表示する。例えば、異常発生表示処理部21は、図37の左図に示すように、複数の異常発生について表示部24上に表示する。このとき、異常発生表示処理部21は、例えば、制御部23からの要求に応じて、表示部24上に表示している表示情報をプログラム解析支援装置1へ供給してもよい。これにより、プログラム解析支援装置1の表示部4上にも複数の異常発生について表示できる。
異常発生表示処理部21は、ユーザ操作8に応じて、表示された異常発生のうち1つの異常発生が選択されたことを認識すると、選択された異常発生の情報をプログラム解析支援装置1及び制御部23に通知する。
異常発生時メモリダンプ処理部22は、ラダープログラム16において異常発生が検出されたときに、異常発生を出力するデバイスに係るメモリをダンプして保持する(図30参照)。異常発生時メモリダンプ処理部22は、保持しているメモリダンプの内容を、定期的に、又は、制御部23からの要求に応じて、デバイスメモリダンプ18に書き込む。
制御部23は、制御装置20の各部を全体的に制御する。
例えば、制御部23は、ラダープログラム16において異常発生が検出されたときに、異常発生を表示部24上に表示するように、異常発生表示処理部21を制御する。このとき、制御部23は、表示部24上に表示している表示情報をプログラム解析支援装置1へ供給するように、異常発生表示処理部21を制御してもよい。
例えば、制御部23は、ラダープログラム16において異常発生が検出されたときに、異常発生を出力するデバイスに係るメモリをダンプするように、異常発生時メモリダンプ処理部22を制御する。
例えば、制御部23は、所定のタイミング(例えば、異常発生時メモリダンプ処理部22におけるメモリダンプが完了したものと推定されるタイミング)において、保持しているメモリダンプの内容をデバイスメモリダンプ18に書き込むように、異常発生時メモリダンプ処理部22を制御する。
例えば、制御部23は、異常発生表示処理部21により表示される異常発生のうち1つの異常発生が選択されたとき、選択された異常発生を出力するデバイスを抽出したい依存関係の起点として前向き又は後向きのデバイス依存関係を抽出するように、プログラム解析支援装置1を制御する。このとき、制御部23は、選択された異常発生を出力するデバイスに係る条件として、選択された異常発生を出力するデバイスに関する異常発生時メモリダンプ処理部22の保持内容、すなわちデバイスメモリダンプ18の保持内容を参酌して、前向き又は後向きのデバイス依存関係を抽出するように、プログラム解析支援装置1を制御する。
例えば、制御部23は、抽出して得られたデバイス依存関係を表示するように、プログラム解析支援装置1を制御する(図37の右図参照)。このとき、制御部23は、選択された異常発生と抽出して得られたデバイス依存関係とを対応付けた表示形態で表示するように、プログラム解析支援装置1を制御してもよい。例えば、図37の場合、アラームメッセージ1から有向グラフに延びた破線の矢印により、異常発生を示すアラームメッセージ1と、抽出されたデバイス依存関係に対応した有向グラフとが対応付けられている。
例えば、図37に示すような表示形態により、はじめに異常発生の原因となる制御構造を大局的な視点で把握でき、その中から注目したい部分を局所的に詳細確認するためにその部分に相当するラダー回路を表示することが可能となり、異常原因の特定作業をより一層効率化できる。
以上のように、実施の形態10では、制御装置20において、制御部23は、異常発生表示処理部21により表示される異常発生のうち1つの異常発生が選択されたとき、選択された異常発生を出力するデバイスを抽出したい依存関係の起点として前向き又は後向きのデバイス依存関係を抽出し、得られたデバイス依存関係を表示するように、プログラム解析支援装置1を制御する。これにより、再現性の低い不具合について、実質的に不具合原因の特定に直接的に寄与しないもの(例えば、デバイスの動作)を除外しながら、不具合に深く関係する依存関係(の有向グラフ)を抽出して表示できる。この結果、再現性の低い不具合について、不具合動作について詳細な動作の解析を行うことができる。
また、実施の形態10では、制御装置20において、制御部23は、異常発生表示処理部21により表示される異常発生のうち1つの異常発生が選択されたとき、選択された異常発生を出力するデバイスを抽出したい依存関係の起点として設定するとともに、選択された異常発生を出力するデバイスに係る条件として選択された異常発生を出力するデバイスに関する異常発生時メモリダンプ処理部22の保持内容を参酌して前向き又は後向きのデバイス依存関係を抽出し、得られたデバイス依存関係を表示するように、プログラム解析支援装置1を制御する。このとき、例えば、制御部23は、選択された異常発生と抽出して得られたデバイス依存関係とを対応付けた表示形態で表示するように、プログラム解析支援装置1を制御する。これにより、はじめに異常発生の原因となる制御構造を大局的な視点で把握でき、その中から注目したい部分を局所的に詳細確認するためにその部分に相当するラダー回路を表示することが可能となり、異常原因の特定作業をより一層効率化できる。