(57)【特許請求の範囲】
【請求項１】
表示手段と、
プログラマブルコントローラで実行させるユーザプログラムを格納するプログラム格納手段と、
前記プログラマブルコントローラによる前記ユーザプログラムの実行中の前記プログラマブルコントローラの外部入力信号、外部出力信号およびワードデータを含み、前記外部入力信号、前記外部出力信号および前記ワードデータが変数名で区別された演算処理情報を設定された条件で記録した履歴情報を格納する履歴情報格納手段と、
指定されたユーザプログラムを前記表示手段に設けられるユーザプログラム表示領域に表示するプログラム表示処理手段と、
前記指定されたユーザプログラムに対応する第１履歴情報をグラフ化した第１トレンドグラフと前記第１トレンドグラフ上での位置を示すカーソルとを、前記表示手段に前記ユーザプログラム表示領域とは別個に設けられるトレンドグラフ表示領域に表示するトレンドグラフ表示処理手段と、
前記第１トレンドグラフ上での前記カーソルの位置を取得し、前記第１履歴情報から前記カーソルの位置に対応する演算処理情報を取得するカーソル情報取得手段と、
前記プログラマブルコントローラ上で前記ユーザプログラムを実行させたときの動作処理をシミュレーションするシミュレーション手段と、
前記シミュレーション手段で前記ユーザプログラムを実行する際のパラメータとして、前記第１トレンドグラフ上で指定された前記カーソルの指定位置における演算処理情報を前記シミュレーション手段に対して設定するパラメータ設定手段と、
前記履歴情報格納手段に格納される前記第１履歴情報から、前記外部入力信号に付された変数を有し、かつ前記指定位置以降の前記外部入力信号のデータ列を取得して、前記外部入力信号のタイミングチャートを生成する外部入力信号生成手段と、
を備え、
前記プログラム表示処理手段は、前記カーソル情報取得手段から取得した前記演算処理情報を、前記ユーザプログラム表示領域の前記ユーザプログラムに重ねて表示し、
前記シミュレーション手段は、前記パラメータと、前記外部入力信号のタイミングチャートと、を用いて前記ユーザプログラムを前記プログラマブルコントローラで実行するシミュレーション処理を行うことを特徴とするプログラマブルコントローラの周辺装置。
【請求項２】
前記シミュレーション手段は、前記シミュレーション処理の結果得られる演算処理情報を設定された条件で収集した第２履歴情報として前記履歴情報格納手段に格納する機能をさらに有し、
前記トレンドグラフ表示処理手段は、前記第１履歴情報に対する前記第２履歴情報の差異を抽出し、前記トレンドグラフ表示領域で前記第１トレンドグラフに前記指定位置から重ねて前記第２履歴情報をグラフ化した第２トレンドグラフを表示し、前記差異の部分の表示を前記第１トレンドグラフの表示とは異なる方法で表示する機能をさらに有することを特徴とする請求項１に記載のプログラマブルコントローラの周辺装置。
【請求項３】
前記外部入力信号のタイミングチャートを編集する編集手段をさらに備えることを特徴とする請求項１に記載のプログラマブルコントローラの周辺装置。
【請求項４】
前記ユーザプログラムは、前記プログラマブルコントローラのデバイスデータ記憶手段のアドレス範囲に対応付けたオペランドを用いてリレーシンボリック語によって記述されたシーケンスプログラムであり、
前記演算処理情報は、前記オペランドに対応付けられた前記デバイスデータ記憶手段のアドレスに設定されたタイミングで格納された値であり、
前記プログラム表示処理手段は、前記カーソルの位置に対応する前記演算処理情報を、前記ユーザプログラム表示領域の前記ユーザプログラム中の対応する前記オペランドに重ねてまたは前記オペランド近傍に表示することを特徴とする請求項１に記載のプログラマブルコントローラの周辺装置。
【請求項５】
コンピュータに、
プログラマブルコントローラで実行されたユーザプログラムを表示手段中のユーザプログラム表示領域に表示するプログラム表示手順と、
前記プログラマブルコントローラでの前記ユーザプログラム実行中の前記プログラマブルコントローラの外部入力信号、外部出力信号およびワードデータを含み、前記外部入力信号、前記外部出力信号および前記ワードデータが変数名で区別された演算処理情報を設定された条件で記録した第１履歴情報を読み込む第１履歴情報読込手順と、
前記第１履歴情報をグラフ化した第１トレンドグラフと、前記第１トレンドグラフ上での位置を指定するカーソルと、を前記表示手段中の前記ユーザプログラム表示領域とは別のトレンドグラフ表示領域に表示する第１トレンドグラフ表示処理手順と、
前記カーソルの前記第１トレンドグラフ上での位置を取得するカーソル位置取得手順と、
前記カーソルの位置に対応する演算処理情報であるカーソル指定情報を前記第１履歴情報から取得するカーソル指定情報取得手順と、
取得した前記カーソル指定情報を、前記ユーザプログラム表示領域の前記ユーザプログラムに重ねて表示するカーソル指定情報表示処理手順と、
前記第１履歴情報から、前記外部入力信号に付された変数を有し、かつ前記第１トレンドグラフ上で前記カーソルによって指定された指定位置以降の前記外部入力信号のデータ列を取得して、前記外部入力信号のタイミングチャートを生成する外部入力信号生成手順と、
前記指定位置における演算処理情報と、前記外部入力信号のタイミングチャートと、を用いて、前記プログラマブルコントローラ上で前記ユーザプログラムを実行させたときの動作処理をシミュレーションするシミュレーション手順と、
を実行させるためのデバッグ支援プログラム。
【請求項６】
前記コンピュータに、
前記シミュレーションによって得られる演算処理情報を設定された条件で記録した第２履歴情報を取得する第２履歴情報取得手順と、
前記第１履歴情報に対する前記第２履歴情報の差異を抽出する差異抽出手順と、
前記トレンドグラフ表示領域で前記第１トレンドグラフに、前記第２履歴情報をグラフ化した第２トレンドグラフを、前記指定位置から重ねて表示するとともに、前記差異の部分の表示を前記第１トレンドグラフの表示とは異なる方法で表示する第２トレンドグラフ表示処理手順と、
をさらに実行させる請求項５に記載のデバッグ支援プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、プログラマブルコントローラの周辺装置およびデバッグ支援プログラムに関するものである。
【背景技術】
【０００２】
プログラマブルコントローラは、プログラムや各種パラメータを定義するパラメータファイルに基づいて被制御装置を制御する。このようなプログラマブルコントローラにおいて、従来では、モニタの上半分にラダー図形式のプログラムを表示し、下半分にユーザによって登録された入出力デバイスの状態（デバイスデータ）を時系列に表したトレンドグラフ（タイムチャート）を表示させるようにした技術が提案されている（たとえば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特許第２６５３３４６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、プログラマブルコントローラで異常が発生した場合には、異常発生の場所を特定し、その異常を解消するためのプログラムの修正（デバッグ）作業が行なわれる。特許文献１に記載の技術では、プログラムとトレンドグラフとをモニタに表示させて、データの時系列の変化を確認することはできるが、任意の時刻を指定して、プログラムの状態を表示することができなかった。そのため、トレンドグラフ上の各データをユーザ自身が読み取り、プログラムのどの部分が動作するかを対応付けながらプログラムの動作を追跡しなければならない。その結果、異常状態の要因を究明するのに時間がかかってしまうという問題点があった。【０００５】
この発明は上記に鑑みてなされたもので、トレンドグラフを用いて任意の時刻でのプログラムの動作状態を把握しやすくすることができるプログラマブルコントローラの周辺装置およびデバッグ支援プログラムを得ることを目的とする。
【課題を解決するための手段】
【０００６】
上記目的を達成するため、この発明にかかるプログラマブルコントローラの周辺装置は、表示手段と、プログラマブルコントローラで実行させるユーザプログラムを格納するプログラム格納手段と、前記プログラマブルコントローラによる前記ユーザプログラムの実行中の前記プログラマブルコントローラの外部入力信号、外部出力信号およびワードデータを含み、前記外部入力信号、前記外部出力信号および前記ワードデータが変数名で区別された演算処理情報を設定された条件で記録した履歴情報を格納する履歴情報格納手段と、指定されたユーザプログラムを前記表示手段に設けられるユーザプログラム表示領域に表示するプログラム表示処理手段と、前記指定されたユーザプログラムに対応する第１履歴情報をグラフ化した第１トレンドグラフと前記第１トレンドグラフ上での位置を示すカーソルとを、前記表示手段に前記ユーザプログラム表示領域とは別個に設けられるトレンドグラフ表示領域に表示するトレンドグラフ表示処理手段と、前記第１トレンドグラフ上での前記カーソルの位置を取得し、前記第１履歴情報から前記カーソルの位置に対応する演算処理情報を取得するカーソル情報取得手段と、前記プログラマブルコントローラ上で前記ユーザプログラムを実行させたときの動作処理をシミュレーションするシミュレーション手段と、前記シミュレーション手段で前記ユーザプログラムを実行する際のパラメータとして、前記第１トレンドグラフ上で指定された前記カーソルの指定位置における演算処理情報を前記シミュレーション手段に対して設定するパラメータ設定手段と、前記履歴情報格納手段に格納される前記第１履歴情報から、前記外部入力信号に付された変数を有し、かつ前記指定位置以降の前記外部入力信号のデータ列を取得して、前記外部入力信号のタイミングチャートを生成する外部入力信号生成手段と、を備え、前記プログラム表示処理手段は、前記カーソル情報取得手段から取得した前記演算処理情報を、前記ユーザプログラム表示領域の前記ユーザプログラムに重ねて表示し、前記シミュレーション手段は、前記パラメータと、前記外部入力信号のタイミングチャートと、を用いて前記ユーザプログラムを前記プログラマブルコントローラで実行するシミュレーション処理を行うことを特徴とする。
【発明の効果】
【０００７】
この発明によれば、プログラマブルコントローラの異常発生前後のデータメモリ内の状態を履歴情報であるトレースデータとして取得し、周辺装置上でユーザプログラムとともにトレンドグラフとして表示できるとともに、トレンドグラフ上で指定される任意のタイミングでのデバイスデータの状態を、ユーザプログラム上に表示できるという効果を有する。その結果、トレンドグラフを用いて任意の時刻でのプログラムの動作状態が把握しやすくなるという効果を有する。
【図面の簡単な説明】
【０００８】
【図１】図１は、実施の形態１によるプログラマブルコントローラの周辺装置の機能構成の一例を模式的に示すブロック図である。
【図２】図２は、トレースデータの一例を示す図である。
【図３】図３は、実施の形態１による表示画面の一例を示す図である。
【図４】図４は、実施の形態１による表示画面の一例を示す図である。
【図５】図５は、実施の形態１によるユーザプログラムとトレンドグラフの表示状態の一例を示す図である。
【図６】図６は、実施の形態１による周辺装置のデバッグ支援方法の手順の一例を示すフローチャートである。
【図７】図７は、実施の形態２によるプログラマブルコントローラシステムの機能構成の一例を模式的に示すブロック図である。
【図８】図８は、実施の形態２によるユーザプログラム再実行処理の手順の一例を示すフローチャートである。
【図９】図９は、実施の形態２によるユーザプログラム再実行処理の際の表示画面の一例を模式的に示す図である。
【図１０】図１０は、実施の形態２によるユーザプログラム再実行処理後のデバッグ支援処理の手順の一例を示すフローチャートである。
【図１１】図１１は、実施の形態３による周辺装置の機能構成の一例を模式的に示すブロック図である。
【図１２】図１２は、実施の形態４による周辺装置の機能構成の一例を模式的に示すブロック図である。
【図１３】図１３は、外部入力信号の生成手順の一例を示す図である。
【図１４】図１４は、外部入力信号をチャタリングさせた場合の一例を示す図である。
【発明を実施するための形態】
【０００９】
以下に添付図面を参照して、この発明にかかるプログラマブルコントローラの周辺装置およびデバッグ支援プログラムの好適な実施の形態を詳細に説明する。なお、これらの実施の形態によりこの発明が限定されるものではない。
【００１０】
実施の形態１．
以下では、プログラマブルコントローラでサンプリングした情報を周辺装置で表示させる場合について説明するが、最初にプログラマブルコントローラについて説明する。プログラマブルコントローラは、内部にデバイスデータを有しており、ユーザによって作成されたユーザプログラム（シーケンスプログラム）にしたがって、そのデバイスデータをリード／ライトすることによって、たとえばプログラマブルコントローラに接続されたリレー、スイッチ、センサなどの入力装置の状態取得と、アクチュエータ、バルブなどの出力装置の制御を行う装置である。また、以下の実施の形態で使用されるプログラマブルコントローラには、所定のタイミングで予め設定した演算処理情報であるデバイスデータまたは全てのデバイスデータを、設定した期間収集した履歴情報であるトレースデータをメモリに保存するサンプリング機能が設けられているものとする。デバイスデータを収集する所定のタイミングとして、たとえば命令の実行、エラー発生時、周辺装置からの指令または設定した条件が真となったタイミングなどを挙げることができる。
【００１１】
図１は、実施の形態１によるプログラマブルコントローラの周辺装置の機能構成の一例を模式的に示すブロック図である。プログラマブルコントローラの周辺装置２０は、通信部２１と、編集手段である入力部２２と、表示手段である表示部２３と、プログラム格納手段であるプログラム格納部２４と、履歴情報格納手段であるトレースデータ格納部２５と、プログラム表示処理手段である回路モニタ表示処理部２６と、トレンドグラフ表示処理手段であるトレンドグラフ表示処理部２７と、カーソル情報取得手段であるカーソル情報取得部２８と、これらの各処理部を制御する制御部２９と、を備える。
【００１２】
通信部２１は、図示しないプログラマブルコントローラとの間で通信を行う。入力部２２は、キーボードまたはポインティングデバイスなどのユーザとの間の入力インタフェースである。入力部２２を介して、プログラマブルコントローラで実行させるユーザプログラムが作成されたり、そのユーザプログラムのデバッグ処理が行われたり、後述するトレンドグラフに表示されるカーソルを移動させる指示が入力されたりする。表示部２３は、液晶表示装置などのユーザに対して情報を表示する装置である。
【００１３】
プログラム格納部２４は、プログラマブルコントローラで実行されるユーザプログラムが格納される。このユーザプログラムは、たとえば入力部２２を介してユーザによって作成され、その後通信部２１を介してプログラマブルコントローラへと導入される。
【００１４】
トレースデータ格納部２５は、プログラマブルコントローラでサンプリングされたトレースデータを格納する。このトレースデータは、実行したユーザプログラムに対応付けて格納されてもよい。図２は、トレースデータの一例を示す図である。トレースデータは、サンプリングの単位時間に相当するインデックスごとに、収集時刻と、プログラマブルコントローラのデバイスデータ記憶部に記憶されるデバイスデータの値と、を記憶したものである。デバイスデータは、プログラマブルコントローラに接続される入力装置から取得した値、またはプログラマブルコントローラに接続される出力装置へ出力する値を示す演算処理情報である。ここでは、「Ｘ」は入力信号を示すビットデータであり、「Ｙ」は出力信号を示すビットデータであり、「Ｄ」は数値を示すワードデータである。なお、このトレースデータは、プログラマブルコントローラで収集されたものを通信部２１を介して格納されるものに限定されるものではない。たとえば、プログラマブルコントローラの各時間におけるデバイスデータを通信部２１を介して周辺装置２０で収集し、所定の期間収集したデバイスデータをトレースデータとしてトレースデータ格納部２５に格納するようにしてもよい。
【００１５】
回路モニタ表示処理部２６は、ユーザによってたとえばユーザプログラムの異常発生時の原因究明処理モードの実行が指示されると、プログラム格納部２４中のユーザによって選択されたユーザプログラムを表示部２３の回路モニタ表示領域に表示させる処理を行う。一般的にプログラマブルコントローラで使用されるユーザプログラムはシーケンスプログラムである。このシーケンスプログラムは、リレー制御回路の考えを基本とした、リレーシンボリック語によってプログラムが記述されている。このように、シーケンスプログラムは回路図形式で記述されるので、シーケンスプログラムを表示したものは回路とも呼ばれる。そのため、以下の実施の形態では、ユーザプログラムを表示する領域を回路モニタ表示領域としている。
【００１６】
トレンドグラフ表示処理部２７は、ユーザによって原因究明処理モードの実行が指示されると、トレースデータ格納部２５中のユーザによって選択されたプログラムに対応するトレースデータをトレンドグラフ化して、表示部２３のトレンドグラフ表示領域に表示させる処理を行う。トレンドグラフ表示領域は、表示部２３中で回路モニタ表示領域とは別個の領域として設けられる。
【００１７】
図３は、実施の形態１による表示画面の一例を示す図である。この図３（ａ）では、表示画面１００中の上半分に、ユーザプログラムを表示する回路モニタ表示領域１１０が設けられ、下半分にトレンドグラフを表示するトレンドグラフ表示領域１２０が設けられている。シーケンスプログラムは、多数の行（たとえば何百行、何千行）の命令によって構成されるのが普通であるため、回路モニタ表示領域１１０に全てのユーザプログラムを表示することができない。そのため、回路モニタ表示領域１１０にスクロールバー１１５を設けて、全てのユーザプログラムをスクロールしながら閲覧可能な構成としている。また、トレンドグラフ表示領域１２０も同様にスクロールバー１２５を有している。トレンドグラフ表示領域１２０には、トレンドグラフの時間を指定するカーソル１２１がトレンドグラフに重ねて表示されている。ここで、カーソル１２１とは、トレンドグラフ上を時間軸（に相当する）方向に沿って稼働可能な垂直線を指し、回路モニタ上に表示するデバイスデータの、トレースデータ上の位置（インデックス）を指示するために使用するものである。図３では、カーソル１２１は点線で表示されているが、実線または破線などの直線で表示されてもよいし、これらを点滅表示させてもよい。回路モニタ表示領域１１０とトレンドグラフ表示領域１２０は、それぞれ１つのウインドウによって構成することができる。
【００１８】
また、図３（ｂ）に示されるように、トレンドグラフ表示領域１２０で、カーソル１２１と各グラフとの接点の値を表示させるようにしてもよい。この場合のカーソルと各グラフとの接点の値は、後述するカーソル情報取得部２８から取得したカーソル１２１の位置と各デバイスデータの値を用いることができる。このような表示画面とすることで、トレンドグラフ表示領域１２０でのカーソル１２１が指す位置の状態をさらに容易に把握することが可能になる。
【００１９】
なお、図３の例では、回路モニタ表示が１つだけになっているが、画面分割して複数のプログラムの任意の回路部分を同時に表示してもよいし、１つの画面上で別のプログラムに切替えて表示させてもよい。また、回路モニタを表示する画面（ウインドウ）とトレンドグラフを表示する画面（ウインドウ）とを別個に設けるようにしてもよい。図４は、実施の形態１による表示画面の一例を示す図である。この場合にもトレンドグラフ表示画面のトレンドグラフ上のカーソル１２１の移動と連動して、回路モニタ表示画面で回路モニタ表示上のデバイスの値を表示するようにしてもよい。
【００２０】
カーソル情報取得部２８は、トレンドグラフ表示領域１２０に設けられるカーソル１２１の位置を取得する。具体的には、トレンドグラフ上でのカーソル１２１の位置（インデックス）を取得し、そのインデックスに対応するデバイスデータをトレースデータ格納部２５から取得する。そして、取得したデバイスデータをカーソル指定情報として回路モニタ表示処理部２６に渡す。
【００２１】
この実施の形態１では、トレンドグラフ表示領域１２０のトレンドグラフと、回路モニタ表示領域１１０のユーザプログラムとを連動させるようにするために、上記のカーソル情報取得部２８を設け、さらにカーソル情報取得部２８で取得したカーソル指定情報を、回路モニタ表示処理部２６で回路モニタ表示領域１１０上に表示させるようにしている。
【００２２】
具体的には、回路モニタ表示処理部２６は、トレンドグラフ表示領域１２０のカーソル１２１の位置における各デバイスデータの値を、回路モニタ表示領域１１０のユーザプログラムの対応箇所に重ねてまたは対応箇所の近傍に表示する機能を有する。たとえば、カーソル情報取得部２８から取得したカーソル指定情報に基づいて、オン状態にあるビットデバイスを強調表示し、またワードデータの値をワードデバイスの位置の近傍に表示する。
【００２３】
図５は、実施の形態１によるユーザプログラムとトレンドグラフの表示状態の一例を示す図である。図５（ａ）のトレンドグラフ表示領域１２０では、時刻Ｔｎの位置にカーソル１２１があり、このときに導通状態にあるビットデバイス（Ｘ１１，Ｙ０）が回路モニタ表示領域１１０では黒塗りで示され、このときのワードデバイス（Ｄ０）の値（図の例では、「１２３」）がそのワードデバイスの近傍に表示されるようになっている。
【００２４】
一方、図５（ｂ）のトレンドグラフでは、時刻Ｔｎ＋１の位置にカーソル１２１があり、このときに導通状態にあるビットデバイスが回路モニタ表示領域１１０では黒塗りで示され、このときのワードデバイス（Ｄ０）の値（図の例では、「６５３」）がそのワードデバイスの近傍に表示されるようになっている。ただし、この例は、導通状態にあるビットデバイスがない（非導通状態のビットデバイスのみである）ため、回路モニタ表示領域１１０で黒塗で示されているデバイスは存在しない。
【００２５】
つぎに、このような構成のプログラマブルコントローラの周辺装置２０のデバッグ支援方法について説明する。図６は、実施の形態１による周辺装置のデバッグ支援方法の手順の一例を示すフローチャートである。なお、ここでは、周辺装置２０のトレースデータ格納部２５にはすでにトレースデータが格納されているものとする。
【００２６】
まず、ユーザによって入力部２２を介して解析したいユーザプログラムが選択されると、回路モニタ表示処理部２６は、プログラム格納部２４から選択されたユーザプログラムを読み込む。そして、表示部２３の回路モニタ表示領域１１０にユーザプログラムを表示する（ステップＳ１１）。
【００２７】
また、トレンドグラフ表示処理部２７は、選択されたトレースデータをトレースデータ格納部２５から読み込む。そして、表示部２３のトレンドグラフ表示領域１２０にトレースデータをグラフ化したトレンドグラフとカーソル１２１とを表示する（ステップＳ１２）。トレンドグラフにおいて、横軸は経過時間を示している。そのため、カーソル１２１は、時間軸方向に沿って移動可能な構成となる。
【００２８】
その後、トレンドグラフ表示領域１２０のカーソル１２１がユーザによって入力部２２を介して移動される。このときカーソル情報取得部２８は、移動されるカーソル１２１のトレンドグラフ上での位置を取得する（ステップＳ１３）。この例では、トレンドグラフ上の位置は、トレースデータにおけるインデックスである。また、カーソル情報取得部２８は、トレンドグラフ上の位置におけるデバイスデータをトレースデータ格納部２５中のトレースデータから取得し（ステップＳ１４）、取得したデバイスデータを回路モニタ表示処理部２６に渡す。
【００２９】
回路モニタ表示処理部２６は、取得したデバイスデータに合わせて、回路モニタ表示領域１１０のユーザプログラム中のデバイスの値の表示を変更する（ステップＳ１５）。これは、回路モニタ表示処理部２６は、たとえばデバイスデータがオン状態を示す場合には、対応するデバイスの表示を強調表示させたり、色を変えて表示させたりすることによって行われる。また、デバイスデータが数値を示すワードデータである場合には、対応するデバイスの近傍にその数値を表示する。
【００３０】
その後、たとえばユーザからの入力部２２を介した指示によって、表示処理が終了したかを判定する（ステップＳ１６）。表示処理が終了でない場合（ステップＳ１６でＮｏの場合）には、ステップＳ１３へと処理が戻る。また、表示処理が終了の場合（ステップＳ１６でＹｅｓの場合）には、処理が終了する。
【００３１】
なお、上記した説明では、カーソル１２１はユーザによって移動される場合を例示したが、これに限定されるものではない。たとえばカーソル１２１を自動的に時系列にしたがって動かしつつ、回路モニタ表示上のデバイスの値を次々と変更させながら表示させるようにしてもよい。
【００３２】
この実施の形態１では、プログラマブルコントローラで異常が発生した前後のユーザプログラムの演算処理情報を、ユーザプログラムの表示上に重ねて表示することが可能になるので、異常発生時のユーザプログラムの動作状態の把握が容易となる。その結果、ユーザプログラムの異常箇所の特定が行いやすくなり、ユーザプログラムのデバッグ作業を効率的に行うことができるという効果を有する。
【００３３】
実施の形態２．
実施の形態１では、プログラマブルコントローラでユーザプログラムを実行させた結果であるトレースデータを用いて、トレンドグラフをユーザプログラムとともにそれぞれ別画面で表示させ、トレンドグラフ上のカーソルの位置にしたがってユーザプログラムのデバイスの値の変遷を見られる場合を示した。実施の形態２では、トレンドグラフ上の任意の時刻を指定し、指定した時刻のデバイスデータをプログラマブルコントローラに設定して、ユーザプログラムを再実行させ、その結果を最初のトレンドグラフと比較する場合について説明する。
【００３４】
図７は、実施の形態２によるプログラマブルコントローラシステムの機能構成の一例を模式的に示すブロック図である。プログラマブルコントローラシステムは、プログラマブルコントローラ（図中、ＰＬＣと表記）１０と周辺装置２０とがネットワーク５０を介して接続された構成を有する。
【００３５】
プログラマブルコントローラ１０は、通信部１１と、プログラム実行部１２と、プログラム格納部１３と、演算部１４と、デバイスデータ記憶部１５と、トレースデータ取得部１６と、トレースデータ格納部１７と、これらの各処理部を制御する制御部１８と、を備える。
【００３６】
通信部１１は、周辺装置２０との間で通信を行う。プログラム格納部１３は、プログラマブルコントローラ１０で実行するユーザプログラムを格納する。プログラム実行部１２は、プログラム格納部１３に格納されたユーザプログラムを実行する。演算部１４は、プログラム実行部１２によるユーザプログラムの実行中で、演算処理命令が読み込まれたときに、演算処理を実行する。デバイスデータ記憶部１５は、演算部１４による演算に使用される値を記憶したり、演算部１４による演算結果を記憶したりする。演算に使用される値は、入力装置の状態を示す情報であり、演算結果は、出力装置を制御する情報であり、これらがデバイスデータに相当する。
【００３７】
トレースデータ取得部１６は、所定の時間間隔、プログラムを１回実行（１スキャン）する毎、命令実行毎、または所定の条件成立時などを条件としてデバイスデータ記憶部１５に記憶されているデバイスデータを取得し、取得したデバイスデータを時系列で並べたトレースデータとしてトレースデータ格納部１７に格納する。トレースデータ格納部１７は、デバイスデータを時系列で順に並べたトレースデータを格納する。
【００３８】
周辺装置２０は、実施の形態１の構成に、パラメータ設定手段であるデバイスデータ設定部３０をさらに備える。デバイスデータ設定部３０は、入力部２２を介してユーザによって設定されたある時刻（インデックス）でのデバイスデータをトレースデータ格納部２５から取得し、そのデバイスデータを通信部２１，１１を介してプログラマブルコントローラ１０に設定する。なお、実施の形態１と同一の構成要素には、同一の符号を付して、その説明を省略する。
【００３９】
つぎに、このような構成のプログラマブルコントローラシステムでの動作処理について（１）ユーザプログラム再実行処理と、（２）ユーザプログラム再実行処理後のデバッグ支援処理と、について説明する。
【００４０】
（１）ユーザプログラム再実行処理
図８は、実施の形態２によるユーザプログラム再実行処理の手順の一例を示すフローチャートである。また、図９は、実施の形態２によるユーザプログラム再実行処理の際の表示画面の一例を模式的に示す図である。まず、周辺装置２０の回路モニタ表示処理部２６は、プログラム格納部２４中のユーザによって指定されたユーザプログラムを読み込み、表示部２３の回路モニタ表示領域１１０に表示する（ステップＳ３１）。また、トレンドグラフ表示処理部２７は、トレースデータ格納部２５中の指定された第１トレースデータを読み込み、回路モニタ表示領域１１０とは別のトレンドグラフ表示領域１２０に第１トレースデータをグラフ化した第１トレンドグラフと、第１トレンドグラフ上での位置を選択できるカーソル１２１と、を表示する（ステップＳ３２）。この第１トレースデータは、プログラマブルコントローラ１０が既にユーザプログラムを実行した結果得られたデバイスデータの集合体である。
【００４１】
以上の処理によって、たとえば図９（ａ）に示されるような表示画面１００が得られる。ここで、ユーザは、表示画面１００を確認し、たとえばユーザプログラムどおりに動作していない箇所を見つけたものとする。そして、そのことを再確認するために、ユーザは、たとえば時刻Ｔｎからユーザプログラムの実行を再現したいと考えたものとする。そのためにその位置（再現開始点）にカーソル１２１を合わせ、入力部２２を介してそのカーソル位置から再度プログラマブルコントローラ１０に処理を実行させる指示を与える（ステップＳ３３）。
【００４２】
周辺装置２０のデバイスデータ設定部３０は、指示されたカーソル位置のデバイスデータをトレースデータ格納部２５中のトレースデータから取得し、そのデバイスデータを通信部２１，１１を介してプログラマブルコントローラ１０に設定する（ステップＳ３４）。デバイスデータは、プログラマブルコントローラ１０のデバイスデータ記憶部１５に設定される。このとき、デバイスデータは、ユーザプログラム中に規定される全ての値を設定するものであってもよいし、一部の値を設定するものであってもよい。
【００４３】
プログラマブルコントローラ１０では、デバイスデータ記憶部１５に設定されたデバイスデータを用いてユーザプログラムの実行処理を行う（ステップＳ３５）。このとき、プログラマブルコントローラ１０のトレースデータ取得部１６は、ユーザプログラムの実行中にデバイスデータ記憶部１５に記憶されるデバイスデータを所定の時間間隔で取得し、第２トレースデータとしてトレースデータ格納部１７に格納する（ステップＳ３６）。
【００４４】
そして、周辺装置からの指令または設定された条件が真になったタイミングで、ユーザプログラムの実行処理が終了すると（ステップＳ３７）、プログラマブルコントローラ１０は、トレースデータ格納部１７中の第２トレースデータを周辺装置２０に送信し（ステップＳ３８）、周辺装置２０は、プログラマブルコントローラ１０からの第２トレースデータをトレースデータ格納部２５に格納する（ステップＳ３９）。なお、ステップＳ３８〜Ｓ３９では、周辺装置２０でデバイスデータを収集してトレースデータを作ってもよい。以上によって、ユーザプログラム再実行処理が終了する。
【００４５】
（２）ユーザプログラム再実行処理後のデバッグ支援処理
図１０は、実施の形態２によるユーザプログラム再実行処理後のデバッグ支援処理の手順の一例を示すフローチャートである。また、以下では、図９（ｂ）を参照しながら説明を行う。まず、周辺装置２０の回路モニタ表示処理部２６は、プログラム格納部２４から選択されたユーザプログラムを読み込む。そして、表示部２３の回路モニタ表示領域１１０にユーザプログラムを表示する（ステップＳ５１）。
【００４６】
また、トレンドグラフ表示処理部２７は、選択された第１トレースデータをトレースデータ格納部２５から読み込む。そして、表示部２３のトレンドグラフ表示領域１２０に第１トレースデータをグラフ化した第１トレンドグラフ１２２とカーソル１２１とを表示する（ステップＳ５２）。なお、第１トレースデータは、ユーザプログラム再実行処理前のデバイスデータの集合体である。
【００４７】
ついで、トレンドグラフ表示処理部２７は、選択されたユーザプログラムを再実行した後の第２トレースデータを、トレースデータ格納部２５から読み込む。そして、第１トレースデータに対する差異を抽出する（ステップＳ５３）。
【００４８】
その後、トレンドグラフ表示処理部２７は、トレンドグラフ表示領域１２０の第１トレンドグラフ１２２に、再現開始点（時刻Ｔｎに対応する位置）を基点として第２トレースデータをグラフ化した第２トレンドグラフを重ねて表示し、さらに抽出した差異１２３の部分を第１トレンドグラフ１２２とは異なる表示方法で表示する（ステップＳ５４）。また、ユーザプログラム再現実行処理のステップＳ３３で指定した再現開始点をトレンドグラフ表示領域１２０に表示し（ステップＳ５５）、デバッグ支援処理が終了する。
【００４９】
以上の処理によって、図９（ｂ）に示されるような表示画面１００が表示部２３に表示される。図９（ｂ）のトレンドグラフ表示領域１２０では、第１トレンドグラフ１２２に対する第２トレンドグラフの差異１２３を強調表示している。
【００５０】
図９（ｂ）では、第１トレンドグラフ１２２の時刻Ｔｘ以降でワードデータＤ０の値が一定値となっているのに対して、第２トレンドグラフの時刻Ｔｘ以降では、差異１２３に示されるように、Ｄ０の値が増加して行き、所定値になるとリセットされそこから再び増加する挙動を示している。この例では、第２トレンドグラフの方が正しい挙動を示しているものとする。
【００５１】
図９（ｂ）に示される表示画面１００を参照しながら、ユーザによるプログラマブルコントローラ１０で発生した原因の解析処理が行われる。この例では、第１トレンドグラフ１２２では、トラブルが時刻Ｔｘで発生しているが、第２トレンドグラフでは、そのトラブルは発生していない。このような場合には、トラブルの発生はノイズ、またはスイッチの押し間違いなどが原因である可能性が高いと判断できる。また、第２トレンドグラフでは、時刻ＴｘでＸ１１はオフのままであり、これに伴ってＹ０もオンのままである。これに対して、第１トレンドグラフ１２２では、時刻ＴｘでＸ１１がオンとなり、これに伴いＹ０がオフになっている。Ｘ１１は、スイッチであるので、たとえば作業者が間違ってスイッチＸ１１を押してしまった可能性があることなども考慮することができる。
【００５２】
一方、もし、第２トレンドグラフも第１トレンドグラフ１２２と同じであり、さらにその後に行なわれるユーザプログラム再実行処理でも同じトレンドグラフが得られる場合には、ユーザプログラムに異常があると判断することができる。
【００５３】
この実施の形態２では、第１トレンドグラフ１２２上の任意の時刻を指定し、指定した時刻のデバイスデータを取り出して、プログラマブルコントローラ１０のデバイスデータ記憶部１５にデバイスデータを書込み、ユーザプログラムを再実行させてプログラマブルコントローラ１０の動作を再現した。また、再現中は、第２トレースデータを収集し、それを周辺装置２０へと送信し、第１トレンドグラフ１２２に重ねて第２トレンドグラフを表示させた。これによって、プログラマブルコントローラ１０を、異常が発生する直前の状態に戻し、ユーザプログラムを再度実行することが可能になり、トレンドグラフを使用して異常発生の再現試験を容易に実施することができるようになる。その結果、異常発生の再現および異常発生時のユーザプログラムの動作確認が容易になるという効果を有する。
【００５４】
実施の形態３．
実施の形態２では、プログラマブルコントローラにデバイスデータを書き込んで、たとえば異常発生直前の状態に戻して、動作を再現させていた。この実施の形態３では、プログラマブルコントローラの動作の再現を、シミュレーションによって行う場合について説明する。
【００５５】
図１１は、実施の形態３による周辺装置の機能構成の一例を模式的に示すブロック図である。この周辺装置２０は、実施の形態２の構成に、シミュレーション手段であるシミュレーション部３１をさらに備える。シミュレーション部３１は、デバイスデータ設定部３０で設定されるデバイスデータを用いて、プログラマブルコントローラでのユーザプログラムの実行をシミュレーションする。シミュレーション部３１では、ユーザプログラムを実行するプログラマブルコントローラの構成とスペックについて予め規定されており、それに基づいてシミュレーション処理が行われる。シミュレーション部３１として、公知のシミュレータを用いることができる。
【００５６】
また、実施の形態２では、デバイスデータ設定部３０はプログラマブルコントローラ１０のデバイスデータ記憶部１５にユーザによって指定されたユーザデータを設定していたが、この実施の形態３では、シミュレーション部３１にユーザデータを渡す機能を有している。なお、実施の形態１，２と同一の構成要素には同一の符号を付してその説明を省略する。
【００５７】
この実施の形態３での動作は、実施の形態２で説明したものと略同様であるので、その説明を省略する。ただし、ユーザプログラムの再実行処理がプログラマブルコントローラではなく、シミュレーション部３１で行われる点と、第２トレースデータがシミュレーション部３１のユーザプログラムの実行によって得られるデバイスデータの値になる点が異なる。
【００５８】
実施の形態３では、異常発生の再現および異常発生時のユーザプログラムの動作確認を周辺装置に設けたシミュレーション部３１で実行するようにした。これによって、プログラマブルコントローラの実機を用いずに、周辺装置２０上で異常発生の再現および異常発生時のユーザプログラムの確認を行うことができるという効果を有する。実施の形態３のシミュレーション部３１でのユーザプログラム再実行処理は、演算処理のみの確認（ユーザプログラムのロジックの調査）に有効である。
【００５９】
実施の形態４．
実施の形態３では、シミュレーション部がユーザプログラムを実行するが、外部からの入力信号、たとえば入力装置の装置状態を示す信号を受信することができない。そのため、外部からの入力信号を用いた演算処理を行うことができなかった。この実施の形態４では、シミュレーション処理においても外部からの入力信号を用いて演算を行うことができる周辺装置について説明する。
【００６０】
図１２は、実施の形態４による周辺装置の機能構成の一例を模式的に示すブロック図である。この周辺装置２０は、実施の形態３の構成に、外部入力信号生成手段である外部入力信号生成部３２をさらに備える。外部入力信号生成部３２は、シミュレーションされるトレースデータをトレースデータ格納部２５から取得し、その中から外部からの入力信号を抽出して外部入力信号のタイミングチャートを生成する。プログラマブルコントローラで使用されるデバイスデータは、一般的に、外部からの入力信号、外部への出力信号、ワードデータで、変数名が区別されている。たとえば、外部からの入力信号には、変数「Ｘ」が割り当てられ、これにインデックスを付して複数の信号（デバイスデータ）を区別している。また、外部への出力信号には、変数「Ｙ」が割り当てられ、これにインデックスを付して複数の信号（デバイスデータ）を区別している。さらに、ワードデータには、変数「Ｄ」が割り当てられ、これにインデックスを付して複数の信号（デバイスデータ）を区別している。そのため、外部入力信号生成部３２は、トレースデータから変数に「Ｘ」を有し、かつユーザによって指定された再現開始点以降のデバイスデータ列を取得することで、外部入力信号を生成することができる。
【００６１】
図１３は、外部入力信号の生成手順の一例を示す図である。図１３（ａ）に示されるように、トレースデータには、外部からの入力信号Ｘ１０，Ｘ１１、外部への出力信号Ｙ０、ワードデータＤ０などが含まれる。このうち、外部からの入力信号であるＸ１０，Ｘ１１についてのトレースデータを抽出することで、図１３（ｂ）に示される外部入力信号を生成することができる。
【００６２】
シミュレーション部３１は、シミュレーション処理の実行指示を受けると、デバイスデータ設定部３０で設定されたデバイスデータと、外部入力信号生成部３２によって生成された外部入力信号のタイミングチャートと、を用いて、シミュレーション処理を行う。なお、実施の形態１〜３と同一の構成要素には同一の符号を付してその説明を省略している。
【００６３】
この実施の形態４での動作は、実施の形態２で説明したものと略同様であるので、その説明を省略する。ただし、シミュレーション部３１は、デバイスデータ設定部３０で設定されたデバイスデータを用いてユーザプログラムの再実行処理を行うが、この際、外部入力信号生成部３２で生成された外部入力信号のタイミングチャートに基づいて、その外部入力信号を取得して処理を行う点が異なる。
【００６４】
なお、外部入力信号生成部３２は、入力部２２を介してユーザによって指定された外部からの入力信号のみを過去のトレースデータから取得して、外部入力信号のタイミングチャートを生成するようにしてもよい。また、ユーザによる入力部２２からの指示によって、取得した外部入力信号のタイミングチャートを任意に編集できるようにしてもよい。これによって、複数の入力信号の順序を入れ替えたり、外部入力信号をチャタリングさせたりして、動作確認を行うことができる。図１４は、外部入力信号をチャタリングさせた場合の一例を示す図である。図１４（ａ）は、トレースデータから取得したデータであり、（ｂ）は（ａ）をチャタリングさせたものである。このように、チャタリングさせた信号に編集して、シミュレーション部３１でシミュレーション処理を実行させることで、チャタリングさせた場合でもプログラマブルコントローラで所望の動作が行われるかなどを確認することができる。
【００６５】
実施の形態３では、プログラマブルコントローラの異常発生時の外部から入力された信号が、周辺装置２０上で動作するシミュレーション部３１では取得できないため、ユーザプログラムが異常発生時と同じ動作をしない可能性があった。一方、実施の形態４では、トレースデータに、実際のプログラマブルコントローラの異常発生時に外部から入力された信号が履歴として残っていることを利用して、そのトレースデータからプログラマブルコントローラの異常発生時に外部から入力されている信号およびそのタイミングを含めた外部入力信号のタイミングチャートを生成するようにした。これによって、シミュレーション部３１では、異常発生時のプログラマブルコントローラの状態を再現することができるという効果を有する。
【００６６】
また、トレースデータから生成した外部入力信号のタイミングチャートを任意に編集できるようにしたり、全く新しい外部入力信号のタイミングチャートを生成できるようにしたりすることで、実際の装置では発生させづらい現象を簡単にシミュレーション部３１上で実現できるようになる。その結果、効率よく異常発生時の原因調査が可能になるという効果を有する。
【００６７】
なお、上述したプログラマブルコントローラの周辺装置でのデバッグ支援方法は、その処理手順を格納したプログラムとして構成することができる。そして、このプログラムを上記した周辺装置２０で実行させることによって実現することができる。また、このプログラムは、ハードディスク、ＳＳＤ（Solid  State  Drive）、フロッピー（登録商標）ディスク、ＣＤ（Compact  Disk）−ＲＯＭ（Read  Only  Memory）、ＭＯ（Magneto-Optical  disk）、ＤＶＤ（Digital  Versatile  DiskまたはDigital  Video  Disk）などのコンピュータで読取可能な記録媒体に記録される。この場合、周辺装置２０によって記録媒体からプログラムが読み出されるようになる。また、このプログラムは、インタネットなどのネットワーク（通信回線）を介して配布することもできる。
【産業上の利用可能性】
【００６８】
以上のように、この発明にかかるプログラマブルコントローラの周辺装置は、プログラマブルコントローラのユーザプログラムのエラー解析に有用である。
【符号の説明】
【００６９】
１０  プログラマブルコントローラ、１１，２１  通信部、１２  プログラム実行部、１３，２４  プログラム格納部、１４  演算部、１５  デバイスデータ記憶部、１６  トレースデータ取得部、１７，２５  トレースデータ格納部、１８，２９  制御部、２０  周辺装置、２２  入力部、２３  表示部、２６  回路モニタ表示処理部、２７  トレンドグラフ表示処理部、２８  カーソル情報取得部、３０  デバイスデータ設定部、３１  シミュレーション部、３２  外部入力信号生成部、５０  ネットワーク、１００  表示画面、１１０  回路モニタ表示領域、１２０  トレンドグラフ表示領域、１２１  カーソル。
【要約】
表示手段と、プログラム格納手段と、プログラマブルコントローラによるユーザプログラムの実行中の演算処理情報を所定の条件で記録した履歴情報を格納する履歴情報格納手段と、指定されたユーザプログラムを前記表示手段に設けられるユーザプログラム表示領域に表示するプログラム表示処理手段と、前記指定されたユーザプログラムに対応する第１履歴情報をグラフ化した第１トレンドグラフと前記第１トレンドグラフ上での位置を示すカーソルとを、前記表示手段のトレンドグラフ表示領域に表示するトレンドグラフ表示処理手段と、前記第１トレンドグラフ上での前記カーソルの位置を取得し、前記第１履歴情報から前記カーソルの位置に対応する演算処理情報を取得するカーソル情報取得手段と、を備え、前記プログラム表示処理手段は、前記演算処理情報を前記ユーザプログラム表示領域の前記ユーザプログラムに重ねて表示する。【図１】
0005649748.tif 000002
【図２】
0005649748.tif 000003
【図３】
0005649748.tif 000004
【図４】
0005649748.tif 000005
【図５】
0005649748.tif 000006
【図６】
0005649748.tif 000007
【図７】
0005649748.tif 000008
【図８】
0005649748.tif 000009
【図９】
0005649748.tif 000010
【図１０】
0005649748.tif 000011
【図１１】
0005649748.tif 000012
【図１２】
0005649748.tif 000013
【図１３】
0005649748.tif 000014
【図１４】
0005649748.tif 000015