(57)【特許請求の範囲】
【請求項１】
設定された周期毎にプログラムを繰り返し実行するプログラマブルロジックコントローラであって、
前記プログラムの入力値及び出力値であるデバイス値を記憶するデバイス記憶手段と、
前回の周期において前記デバイス記憶手段が記憶していた前記デバイス値を記憶する退避データ記憶手段と、
外部機器から前記デバイス値の読み出し要求を受け付けると、前記読み出し要求において指定されたデバイスについて予め設定された読み出し対象が前記デバイス記憶手段である場合、その周期における前記プログラムの実行が完了した後に前記デバイス記憶手段が記憶する前記デバイス値を読み出し、前記指定されたデバイスについて予め設定された前記読み出し対象が前記退避データ記憶手段である場合、直ちに前記退避データ記憶手段が記憶する前記デバイス値を読み出すコマンド処理手段と、
前記コマンド処理手段が読み出した前記デバイス値を前記外部機器に送信する送信手段と、
を備えるプログラマブルロジックコントローラ。
【請求項２】
前記デバイス記憶手段が記憶する前記デバイス値を、前記退避データ記憶手段に書き込む書き込み制御手段、
をさらに備える、
請求項１に記載のプログラマブルロジックコントローラ。
【請求項３】
前記書き込み制御手段は、前回の周期における前記プログラムの実行が完了したときに、前記デバイス記憶手段が記憶しており、確定した前記デバイス値を前記退避データ記憶手段に書き込む、
請求項２に記載のプログラマブルロジックコントローラ。
【請求項４】
前記プログラマブルロジックコントローラが前記プログラムの最後の命令を実行したときに、当該周期における前記プログラムの実行が完了し、
前回の周期における前記プログラムの実行が完了したときに、前記デバイス記憶手段が記憶している前記確定した前記デバイス値は、前記プログラマブルロジックコントローラが前回の周期において前記プログラムの前記最後の命令を実行した後に、前記デバイス記憶手段が記憶している前記デバイス値である、
請求項３に記載のプログラマブルロジックコントローラ。
【請求項５】
前記読み出し要求は、前記デバイス記憶手段又は前記退避データ記憶手段のうち前記読み出し対象となる記憶手段を指定する情報を含み、
前記コマンド処理手段は、前記読み出し要求で指定された記憶手段を前記読み出し対象として判別する、
請求項１から４のいずれか１項に記載のプログラマブルロジックコントローラ。
【請求項６】
前記デバイス値について予め設定された前記読み出し対象として前記デバイス記憶手段又は前記退避データ記憶手段を指定する設定情報記憶手段、
をさらに備え、
前記コマンド処理手段は、前記読み出し要求で指定された前記デバイス値について、前記設定情報記憶手段で指定された記憶手段を前記読み出し対象として判別する、
請求項１から４のいずれか１項に記載のプログラマブルロジックコントローラ。
【請求項７】
前記設定情報記憶手段は、指定された範囲毎に前記デバイス値の読み出し対象を指定する、
請求項６に記載のプログラマブルロジックコントローラ。
【請求項８】
前記退避データ記憶手段は、不揮発性のメモリを含む、
請求項１から７のいずれか１項に記載のプログラマブルロジックコントローラ。
【請求項９】
請求項１から５のいずれか１項に記載のプログラマブルロジックコントローラに接続され、前記デバイス値を読み出す前記外部機器であって、
前記デバイス値の読み出しに関する指示を受け付ける受付手段と、
前記受付手段が受け付けた指示に応じたコマンドを前記プログラマブルロジックコントローラに送信する取得処理手段と、
を備え、
前記取得処理手段は、
前記受付手段が、指定された前記デバイス値について前記読み出し対象として前記デバイス記憶手段を指定する指示を受け付けた場合、前記指定されたデバイスについて前記読み出し対象として前記デバイス記憶手段を指定する指示を示すコマンドを前記プログラマブルロジックコントローラに送信し、
前記受付手段が、前記指定された前記デバイス値について前記読み出し対象として前記退避データ記憶手段を指定する指示を受け付けた場合、前記読み出し対象として前記退避データ記憶手段を指定する指示を示すコマンドを前記プログラマブルロジックコントローラに送信し、
前記読み出し要求に対する応答として、前記プログラマブルロジックコントローラから前記デバイス値を受信する、
外部機器。
【請求項１０】
設定された周期毎にプログラムを繰り返し実行するプログラマブルロジックコントローラが実行する方法であって、
外部機器から受け付けたデバイス値の読み出し要求において指定されたデバイスについて、今回の周期における前記デバイス値を読み出し対象とすることが設定されている場合、その周期における前記プログラムの実行が完了した後に前記デバイス値を前記外部機器に送信し、前記指定されたデバイスについて、前回の周期における前記デバイス値を読み出し対象とすることが設定されている場合、直ちに前回の周期における前記デバイス値を前記外部機器に送信するステップ、
を含む方法。
【請求項１１】
設定された周期毎にプログラムを繰り返し実行するプログラマブルロジックコントローラに、
デバイス記憶手段に、前記プログラムの入力値及び出力値であるデバイス値を記憶させ、
退避データ記憶手段に、前回の周期において前記デバイス記憶手段が記憶していた前記デバイス値を記憶させ、
外部機器から受け付けた前記デバイス値の読み出し要求において指定されたデバイスについて、前記デバイス記憶手段又は前記退避データ記憶手段のうち予め設定された読み出し対象から前記デバイス値を読み出させ、
前記デバイス値を前記外部機器に送信させる、
プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラマブルロジックコントローラ、外部機器、方法、及びプログラムに関する。
【背景技術】
【０００２】
プログラマブルロジックコントローラのＣＰＵユニットは、制御対象の機器を制御するため、スキャンタイム毎にプログラムの各命令を実行して、検出器から供給された入力信号を使用した演算を行い、演算結果である出力信号を制御対象の機器に供給する。プログラマブルロジックコントローラの入力ユニットは、入力ユニットに接続された検出器から供給された入力信号を、プログラマブルロジックコントローラのＣＰＵユニットに入力する。プログラマブルロジックコントローラの出力ユニットは、ＣＰＵユニットが出力した出力信号を、出力ユニットに接続された制御対象の機器に供給する。プログラマブルロジックコントローラのＣＰＵユニットにおいて、検出器から供給された入力信号と、演算結果である出力信号とは、ＣＰＵユニットが有するデバイスメモリと呼ばれるメモリ上の領域に格納される。【０００３】
ユーザは、例えば、プログラマブルロジックコントローラのプログラムの動作が正常であるか否かを確認するために、プログラマブル表示器、プログラムの開発ツール等の外部機器を介してデバイスメモリのデータを監視する。特許文献１には、プログラマブル表示器が、スキャンタイム毎に、即ち、Ｉ／Ｏ（Input/Output：入出力）リフレッシュのタイミングで、デバイスメモリからデバイス値を読み出し、読み出したデバイス値をディスプレイに表示することが記載されている。【０００４】
ここで、Ｉ／Ｏリフレッシュとは、各スキャンタイムの最後に、デバイスメモリのデータを、プログラマブルロジックコントローラと、入力ユニット及び出力ユニットとの間で一括交換することをいう。具体的には、ＣＰＵユニットと入力ユニットとの間でデバイスメモリのデータ交換が行われ、ＣＰＵユニットと出力ユニットとの間でデバイスメモリのデータ交換が行われる。デバイスメモリが記憶するデータには、プログラムの実行中に随時書き換えられるデータも含まれていることから、Ｉ／Ｏリフレッシュは、スキャンタイムの最後に、即ち命令が一通り実行された後に、実行される。【０００５】
また、特許文献２には、Ｉ／Ｏリフレッシュを、スキャンタイムの最後だけではなく、プログラムの実行中に、プログラムの実行を中断して行うことが記載されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００３−８４８１１号公報
【特許文献２】特開２０１６−１１０４５８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
特許文献１に記載されているように、従来のプログラマブルロジックコントローラは、プログラマブル表示器、開発ツール等から、デバイスメモリの読み出し要求を受け付けると、Ｉ／Ｏリフレッシュのタイミングで、プログラマブル表示器、開発ツール等に、読み出し要求の応答として、読み出し要求で指定されたデバイスメモリの値を送信する。【０００８】
スキャンタイムの長さは、プログラマブルロジックコントローラ毎に異なる。プログラマブル表示器、開発ツール等が、スキャンタイムが長く設定されたプログラマブルロジックコントローラに読み出し要求を送信した場合、そのプログラマブルロジックコントローラは、当該スキャンタイムの終わりまで応答を送信しない。プログラマブル表示器、開発ツール等は、応答を受信するまで長時間待機することになっていた。このため、ユーザは待機中のプログラマブル表示器、開発ツール等を操作することができず、プログラマブル表示器、開発ツール等の外部機器の操作性が著しく低下する結果となっていた。【０００９】
特許文献２に記載されている構成においては、プログラムの実行を中断してＩ／Ｏリフレッシュを行うので、プログラムの実行を中断して行うＩ／Ｏリフレッシュのタイミングで、ＣＰＵユニットが、プログラマブル表示器、開発ツール等に、読み出し要求に対する応答を送信することも可能である。この場合、プログラマブル表示器、開発ツール等は、プログラムの命令が一通り実行されるまで待つ必要はない。しかし、この場合にデバイスメモリから読み出される値は、プログラムの命令が一通り実行された後の値ではない。即ち、プログラムの命令が一通り実行されることにより確定したデータではない。このため、特許文献２に記載された構成においても、確定したデバイス値を即時に返すことはできない。【００１０】
本発明は、上記実情に鑑みてなされたものであり、デバイスメモリをモニタするための外部機器が、プログラマブルロジックコントローラのスキャンタイムに依存せずに確定したデバイス値の読み出しを行うことを可能とし、外部機器の操作性を向上させることを目的とする。
【課題を解決するための手段】
【００１１】
上記目的を達成するため、プログラマブルロジックコントローラは、設定された周期毎にプログラムを繰り返し実行する。デバイス記憶手段は、プログラムの入力値及び出力値であるデバイス値を記憶する。退避データ記憶手段は、前回の周期においてデバイス記憶手段が記憶していたデバイス値を記憶する。コマンド処理手段は、外部機器からデバイス値の読み出し要求を受け付けると、読み出し要求において指定されたデバイスについて予め設定された読み出し対象がデバイス記憶手段である場合、その周期におけるプログラムの実行が完了した後にデバイス記憶手段が記憶するデバイス値を読み出し、指定されたデバイスについて予め設定された読み出し対象が退避データ記憶手段である場合、直ちに退避データ記憶手段が記憶するデバイス値を読み出す。送信手段は、コマンド処理手段が読み出したデバイス値を外部機器に送信する。
【発明の効果】
【００１２】
本発明のプログラマブルロジックコントローラにおいて、退避データ記憶手段は、前回の周期においてデバイス記憶手段が記憶していたデバイス値を記憶する。プログラマブルロジックコントローラは、外部機器から受け付けた読み出し要求で指定されたデバイスについて予め設定された読み出し対象がデバイス記憶手段である場合、その周期におけるプログラムの実行が完了した後にデバイス記憶手段が記憶するデバイス値を読み出して、デバイス値を外部機器に送信する。プログラマブルロジックコントローラは、指定されたデバイスについて予め設定された読み出し対象が退避データ記憶手段である場合、直ちに退避データ記憶手段が記憶するデバイス値を読み出して、デバイス値を外部機器に送信する。このような構成を備えること、プログラマブルロジックコントローラのスキャンタイムに依存せずにデバイスメモリの読み出しを行うことを可能とし、外部機器の操作性を向上させることができる。
【図面の簡単な説明】
【００１３】
【図１】実施の形態に係るプログラマブルロジックコントローラとエンジニアリングツールのハードウェア構成を示すブロック図
【図２】実施の形態に係るプログラマブルロジックコントローラのＣＰＵユニットとエンジニアリングツールの機能ブロック図
【図３】実施の形態に係る読み出し対象指定テーブルに登録されるデータの一例を示す図
【図４】実施の形態に係るエンジニアリングツールの読み出しの指定画面の一例を示す図
【図５Ａ】実施の形態に係るエンジニアリングツールのデバイスモニタの入力画面の一例を示す図
【図５Ｂ】実施の形態に係るエンジニアリングツールのデバイスモニタの実行結果画面の一例を示す図
【図６】実施の形態に係るＣＰＵユニットのモニタ応答処理のフローチャート
【図７】変形例１に係るエンジニアリングツールのデバイスモニタの入力画面の一例を示す図
【図８】変形例２に係るプログラマブルロジックコントローラのハードウェア構成を示すブロック図
【発明を実施するための形態】
【００１４】
以下、本発明の実施の形態に係るプログラマブルロジックコントローラ１について、図面を参照しつつ詳細に説明する。
【００１５】
（実施の形態）
図１に示す、プログラマブルロジックコントローラ１は、生産システム、制御システム等において稼動する検出器９０１と被制御機器９０２とを制御する。プログラマブルロジックコントローラ１は、プログラマブルロジックコントローラ１全体を制御するＣＰＵ（Central Processing Unit）ユニット１００と、検出器９０１から受け付けた入力信号をＣＰＵユニット１００に供給する入力ユニット２００と、ＣＰＵユニット１００の演算結果を示す出力信号を被制御機器９０２に出力する出力ユニット３００と、各ユニットを装着するためのベースユニット４００を含む。
【００１６】
ＣＰＵユニット１００は、入力ユニット２００から供給された入力信号のオン／オフに従って、プログラムの命令を実行し、オン／オフで表される演算結果を出力信号として出力ユニット３００に出力する。ＣＰＵユニット１００は、設定された周期でプログラムの実行を開始し、プログラムの最後の命令であるＥＮＤ命令を実行した後、プログラムの実行を終了する。ＣＰＵユニット１００は、次の周期に再びプログラムの実行を開始する。この設定された周期をスキャンタイムという。
【００１７】
入力ユニット２００には、センサ、スイッチ等を含む検出器９０１が接続されている。入力ユニット２００は、検出器９０１から供給されたオン／オフを示す入力信号を、決められた信号レベルに変換し、変換した入力信号をＣＰＵユニット１００に供給する。出力ユニット３００には、アクチュエータ、電磁弁、表示灯等を含む被制御機器９０２が接続されている。出力ユニット３００は、ＣＰＵユニット１００から供給されたオン／オフを示す出力信号を、決められた信号レベルに変換し、変換した出力信号を被制御機器９０２に供給する。
【００１８】
ベースユニット４００には、ＣＰＵユニット１００と入力ユニット２００と出力ユニット３００とが装着される。ＣＰＵユニット１００と入力ユニット２００と出力ユニット３００とは、ベースユニット４００を介して不図示の電源ユニットに接続され、電源ユニットから供給される電力によって動作する。また、ＣＰＵユニット１００と入力ユニット２００と出力ユニット３００とは、共有バス４１０を介して相互に接続され、共有バス４１０を介して通信を行う。
【００１９】
また、プログラマブルロジックコントローラ１のＣＰＵユニット１００には、開発ツールであるエンジニアリングツール５００を接続することが可能である。エンジニアリングツール５００の構成については後述する。
【００２０】
以下の説明においては、実施の形態において特徴的な構成を備えるＣＰＵユニット１００を中心に説明する。
【００２１】
ＣＰＵユニット１００はハードウェア構成として、各種プログラム、データを記憶するメモリ１１０と、入力ユニット２００及び出力ユニット３００と通信を行う入出力インタフェース１２０と、後述するエンジニアリングツール５００と通信を行うツールインタフェース１３０と、ＣＰＵユニット１００全体を制御する演算装置１４０と、を有する。メモリ１１０と、入出力インタフェース１２０と、ツールインタフェース１３０とはバス１９０を介して演算装置１４０に接続されており、演算装置１４０と通信する。
【００２２】
メモリ１１０は、揮発性メモリ１１１と不揮発性メモリ１１２とを含み、各種プログラム、データとを記憶する。揮発性メモリ１１１は、演算装置１４０のワークメモリとして用いられる。不揮発性メモリ１１２には、デバイスメモリに格納するデータの割り当てに関するデータを記憶するデバイス設定１１２１と、スキャンタイム毎に実行されるユーザプログラム１１２２と、後述するエンジニアリングツール５００から受信したモニタ要求に応答するためのモニタ応答プログラム１１２３とが格納される。なお、揮発性メモリ１１１のアクセス速度は、不揮発性メモリ１１２のアクセス速度より高速である。ユーザプログラム１１２２は本発明のプログラムの一例である。
【００２３】
さらに、メモリ１１０は、デバイスメモリの機能を実現する。デバイスメモリとは、検出器９０１からＣＰＵユニット１００に供給された入力信号を示す値であって、ユーザプログラム１１２２の演算の入力値、ユーザプログラム１１２２の演算結果として出力された出力値を格納するメモリ領域である。演算装置１４０がユーザプログラム１１２２を実行して出力した出力値は、被制御機器９０２に供給される出力信号を示す値である。デバイスメモリに格納される入力信号を示す値及び出力信号を示す値をデバイス値という。なお、デバイスメモリを単にデバイスと呼ぶこともある。実施の形態においては、ＣＰＵユニット１００は、今回のスキャンタイムにおけるデバイス値を記憶するマスタのデバイスメモリと、前回のスキャンタイムにおけるデバイス値を記憶する退避用のデバイスメモリとを有する。揮発性メモリ１１１は、マスタのデバイスメモリとして機能する。不揮発性メモリ１１２は退避用のデバイスメモリとして機能する。
【００２４】
デバイス値は、例えば、同一のセンサから収集された時系列のデータ、あるいは、複数のセンサから同じタイミングで収集されたデータを含む。
【００２５】
デバイス設定１１２１は、入力信号を記憶する領域、出力信号を記憶する領域等を定義するデータである。デバイス値は、入力信号及び出力信号のデータは、データの種類に応じた領域に格納される。デバイス設定１１２１においては、入力信号の値が格納されている領域を「Ｘ」、出力信号の値が格納されている領域を「Ｙ」、その他の値が格納されている領域を「Ｄ」と定義している。さらに、デバイス設定１１２１は、「Ｘ」、「Ｙ」、「Ｄ」それぞれの領域の大きさを特定するための先頭番号と末尾番号とを含む。ここで、番号はいわゆるメモリのアドレスに相当するものである。「Ｘ」、「Ｙ」、「Ｄ」のそれぞれの領域には複数のデバイス値が格納されており、各デバイス値には、当該領域において何番目のデータであるかを示す番号が割り当てられている。例えば、「Ｘ」の領域の先頭番号が１である場合、「Ｘ１００」に格納されたデータは、「Ｘ」の領域における１００番目のデータである。先頭番号は、当該領域における最初のデバイス値に割り当てられた番号であり、末尾番号は当該領域における最後のデバイス値に割り当てられた番号である。
【００２６】
ユーザプログラム１１２２は、ユーザが作成したプログラムであって、演算装置１４０により実行される。演算装置１４０は、ユーザプログラム１１２２を実行して、検出器９０１から供給された入力信号を示す値を使用した演算を行う。
【００２７】
モニタ応答プログラム１１２３は、ＣＰＵユニット１００が、エンジニアリングツール５００から受信したモニタ要求に対する応答として、指定されたデバイス値を含むモニタ応答をエンジニアリングツール５００に送信する機能を実現するためのプログラムである。モニタ応答プログラム１１２３は演算装置１４０により実行される。ここで、モニタ要求とは、デバイス値の読み出しを要求するため、エンジニアリングツール５００がＣＰＵユニット１００に送信するコマンドのことをいう。また、モニタ応答とは、ＣＰＵユニット１００がモニタ要求に応答してエンジニアリングツール５００に送信するレスポンスのことをいう。
【００２８】
入出力インタフェース１２０は、ＣＰＵユニット１００が入力ユニット２００及び出力ユニット３００と通信するための通信インタフェースである。入出力インタフェース１２０は、演算装置１４０から供給されたデータを電気信号に変換し、変換した信号を共有バス４１０を介して出力ユニット３００に送信する。また、入出力インタフェース１２０は、入力ユニット２００から受信した電気信号をデータに復元して演算装置１４０に出力する。
【００２９】
ツールインタフェース１３０は、ＣＰＵユニット１００が後述のエンジニアリングツール５００と通信するための通信インタフェースである。ツールインタフェース１３０は、演算装置１４０から供給されたデータを電気信号に変換し、変換した信号を通信ケーブル５０９を介してエンジニアリングツール５００に送信する。また、ツールインタフェース１３０は、エンジニアリングツール５００から受信した電気信号をデータに復元して演算装置１４０に出力する。
【００３０】
演算装置１４０は、ＭＰＵ（Micro Processing Unit）１５０、１６０を有し、メモリ１１０に記憶される各種プログラムを実行して、ＣＰＵユニット１００の各種機能を実現する。詳しくは後述するが、ＭＰＵ１５０は、エンジニアリングツール５００からモニタ要求を受け付け、エンジニアリングツール５００にモニタ応答を送信する機能を担う。ＭＰＵ１６０は、スキャンタイム毎にユーザプログラム１１２２を実行する機能を担う。
【００３１】
エンジニアリングツール５００は、パーソナルコンピュータに専用のアプリケーションをインストールした装置であり、プログラムの作成機能を有した開発ツールである。実施の形態においては、エンジニアリングツール５００は、ＣＰＵユニット１００のデバイスメモリをモニタする機能を備える。よって、ユーザは、エンジニアリングツール５００を使用してＣＰＵユニット１００のデバイスメモリをモニタできる。エンジニアリングツール５００は、本発明の外部機器の一例である。
【００３２】
エンジニアリングツール５００は、プログラム及びデータを記憶するメモリ５１０と、ユーザの入力操作を検出する入力装置５２０と、画像を出力する出力装置５３０と、ＣＰＵユニット１００と通信を行う通信インタフェース５４０と、エンジニアリングツール５００全体を制御する演算装置５５０とを含む。エンジニアリングツール５００の各部はバス５９０により接続されている。
【００３３】
メモリ５１０は、揮発性メモリと、不揮発性メモリとを含み、各種プログラムと、プログラムの実行時に使用されるデータとを記憶する。実施の形態においては、メモリ５１０は、ＣＰＵユニット１００のデバイス値の読み出し対象を設定するための設定用プログラム５１１と、ＣＰＵユニット１００のデバイス値をモニタするためのモニタ用プログラム５１２とを記憶する。
【００３４】
入力装置５２０は、キーボード、マウス等の入力装置を含み、ユーザの入力操作を検出し、検出したユーザの入力操作を示す信号を演算装置５５０に供給する。出力装置５３０は、ディスプレイを含み、演算装置５５０から供給された信号に基づいた画像をディスプレイに表示する。通信インタフェース５４０は、通信ケーブル５０９を介してＣＰＵユニット１００と通信するための通信インタフェースである。通信インタフェース５４０は、演算装置５５０から供給されたデータを電気信号に変換し、変換した信号を通信ケーブル５０９を介してＣＰＵユニット１００に送信する。また、通信インタフェース５４０は、ＣＰＵユニット１００から受信した電気信号をデータに復元して演算装置５５０に出力する。
【００３５】
演算装置５５０は、ＣＰＵを含み、メモリ１１０に記憶された各種プログラムを実行して、エンジニアリングツール５００の各種機能を実現する。実施の形態においては、演算装置５５０は、モニタ用プログラム５１２を実行して、ＣＰＵユニット１００にデバイスメモリのモニタ要求を送信し、ＣＰＵユニット１００から受信したモニタ応答の内容を出力装置５３０のディスプレイに表示する。また、演算装置５５０は、設定用プログラム５１１を実行して、モニタ要求に応答してＣＰＵユニット１００がデバイス値を読み出す対象をＣＰＵユニット１００に設定する。
【００３６】
続いて図２を参照しながら、ＣＰＵユニット１００の機能的な構成を説明する。ＣＰＵユニット１００は、機能的には、デバイス値を記憶する第１デバイス記憶部１０１と、第１デバイス記憶部１０１の退避データを記憶する第２デバイス記憶部１０２と、デバイス値の読み出し対象を指定する読み出し対象指定テーブル１０３と、エンジニアリングツール５００とコマンドの送受信を行うコマンド送受信部１０４と、読み出し対象指定テーブル１０３で指定された読み出し対象からデバイス値を読み出すコマンド処理部１０５と、第１デバイス記憶部１０１のデバイス値を第２デバイス記憶部１０２に退避する書き込み制御部１０６と、ユーザプログラム１１２２を実行する実行部１０７とを有する。第１デバイス記憶部１０１は本発明のデバイス記憶手段の一例である。第２デバイス記憶部１０２は本発明の退避データ記憶手段の一例である。読み出し対象指定テーブル１０３は、本発明の設定情報記憶手段の一例である。コマンド送受信部１０４は、本発明の送信手段の一例である。コマンド処理部１０５は、本発明のコマンド処理手段の一例である。書き込み制御部１０６は、本発明の書き込み制御手段の一例である。
【００３７】
第１デバイス記憶部１０１は、今回のスキャンタイムにおけるユーザプログラム１１２２の入力値及び出力値、即ちデバイス値を記憶する。第１デバイス記憶部１０１は、ＣＰＵユニット１００のマスタのデバイスメモリである。Ｉ／Ｏリフレッシュにより、第１デバイス記憶部１０１には、ユーザプログラム１１２２の入力値が書き込まれる。さらに、ユーザプログラム１１２２の実行により、第１デバイス記憶部１０１には、ユーザプログラム１１２２の実行により出力された出力値が書き込まれる。第１デバイス記憶部１０１の機能は、図１に示すメモリ１１０の揮発性メモリ１１１により実現される。揮発性メモリ１１１のアクセス速度は、不揮発性メモリ１１２より高速だからである。
【００３８】
図２に示す第２デバイス記憶部１０２は、第１デバイス記憶部１０１から退避されたデータを記憶する。より具体的には、第２デバイス記憶部１０２は、前回のスキャンタイムにおいて第１デバイス記憶部１０１が記憶していたデバイス値、即ち、前回のスキャンタイムにおける入力値及び出力値を記憶する。第２デバイス記憶部１０２は退避用のデバイスメモリである。第２デバイス記憶部１０２には、書き込み制御部１０６によって、第１デバイス記憶部１０１のデバイス値が書き込まれる。第２デバイス記憶部１０２の機能は、図１に示すメモリ１１０の不揮発性メモリ１１２により実現される。
【００３９】
読み出し対象指定テーブル１０３には、モニタ要求により指定されたデバイス値を第１デバイス記憶部１０１又は第２デバイス記憶部１０２のいずれかから取得するかを指定するデータが格納されている。図３に示すように、読み出し対象指定テーブル１０３では、デバイスの領域名と開始番号と終了番号とにより特定される範囲のデバイス値について、読み出し対象が第１デバイス記憶部１０１であるか第２デバイス記憶部１０２であるかが指定されている。
【００４０】
図示する例では、開始番号と終了番号とは、そのデバイスにおける設定された範囲の始点と終点とを示す。読み出し対象は設定された範囲のデバイス値の読み出し対象を第１デバイス記憶部１０１とするか第２デバイス記憶部１０２とするかを示す。例えば、「Ｘ１」から「Ｘ２５０」のデバイス値は第２デバイス記憶部１０２から読み出すことが指定されている。ここでは、また、「Ｙ２００」から「Ｙ４００」のデバイス値は第１デバイス記憶部１０１から読み出すことが指定されている。読み出し対象指定テーブル１０３において、指定した範囲毎に読み出し対象を指定することが可能である。なお、実施の形態において、デフォルトの読み出し対象は第１デバイス記憶部１０１とする。このため、読み出し対象指定テーブル１０３に設定されていない範囲のデバイス値は第１デバイス記憶部１０１から読み出される。読み出し対象指定テーブル１０３の機能は、図１に示すメモリ１１０の不揮発性メモリ１１２により実現される。
【００４１】
図２に示すコマンド送受信部１０４は、エンジニアリングツール５００からモニタ要求を受け付け、受け付けたモニタ要求をコマンド処理部１０５に出力する。また、コマンド送受信部１０４は、コマンド処理部１０５から供給されたモニタ応答をエンジニアリングツール５００に送信する。コマンド送受信部１０４の機能は、図１のツールインタフェース１３０と、ＭＰＵ１５０とにより実現される。
【００４２】
図２に示すコマンド処理部１０５は、モニタ要求において指定されたデバイスの値を、読み出し対象指定テーブル１０３において指定された読み出し対象から読み出し、読み出したデバイス値が含まれたモニタ応答をコマンド送受信部１０４に出力する。エンジニアリングツール５００が送信したモニタ要求には、デバイスの領域を特定する値と、モニタ対象の範囲を示す開始番号及び終了番号とが含まれている。また、モニタ応答には、モニタ要求で指定された順序で読み出されたデバイス値が含まれている。例えば、モニタ要求で、デバイス「Ｘ」の開始番号「１００」から終了番号「１５０」までのデバイス値と、デバイス「Ｄ」の開始番号「５０」から終了番号「１００」までのデバイス値とが要求されたとする。この場合、モニタ応答には、「Ｘ１００」から「Ｘ２５０」のデバイス値と、「Ｄ５０」から「Ｄ１００」のデバイス値とが、この順序で並べられた状態で格納されている。
【００４３】
モニタ要求により、エンジニアリングツール５００からＣＰＵユニット１００に対して、デバイス「Ｘ」の１００番から１５０番のデバイス値の読み出しが要求されたとする。この場合、コマンド処理部１０５は、図３の読み出し対象指定テーブル１０３から「Ｘ１００」から「Ｘ１５０」のデバイス値の読み出し対象が第２デバイス記憶部１０２であると判別する。また、モニタ要求で、デバイス「Ｙ」の１００１番から１２００番のデバイス値の読み出しが要求されたとする。この場合、コマンド処理部１０５は、読み出し対象指定テーブル１０３から「Ｙ１００１」から「Ｙ１２００」のデバイス値の読み出し対象が第１デバイス記憶部１０１であると判別する。なお、コマンド処理部１０５は、読み出し対象指定テーブル１０３に読み出し対象が設定されていないデバイス値を読み出すことが要求された場合、当該デバイス値の読み出し対象がデフォルトの読み出し対象である第１デバイス記憶部１０１であると判別する。
【００４４】
コマンド処理部１０５は、読み出し対象指定テーブル１０３で、モニタ要求により指定されたデバイス値の読み出し対象として第１デバイス記憶部１０１が指定されている場合、次のようにデバイス値の読み出しを実行する。コマンド処理部１０５は、実行部１０７がユーザプログラム１１２２のＥＮＤ命令を実行した後に、モニタ要求により指定されたデバイス値を第１デバイス記憶部１０１から読み出し、読み出したデバイス値をコマンド送受信部１０４に出力する。
【００４５】
コマンド処理部１０５は、読み出し対象指定テーブル１０３で、モニタ要求により指定されたデバイス値の読み出し対象として第２デバイス記憶部１０２が指定されている場合、次のようにデバイス値の読み出しを実行する。コマンド処理部１０５は、直ちにモニタ要求により指定されたデバイス値を第２デバイス記憶部１０２から読み出し、読み出したデバイス値をコマンド送受信部１０４に出力する。実施の形態において、第１デバイス記憶部１０１からデバイス値を読み出すのは、ＭＰＵ１６０であり、第２デバイス記憶部１０２からデバイス値を読み出すのはＭＰＵ１５０である。コマンド処理部１０５の機能は、図１のＭＰＵ１５０及びＭＰＵ１６０により実現される。
【００４６】
さらに、コマンド処理部１０５は、エンジニアリングツール５００から読み出し対象指定テーブル１０３の更新を指示するコマンドを受信すると、当該コマンドに含まれている、デバイスの領域を特定する値と、当該領域におけるモニタ対象の範囲を示す開始番号及び終了番号と、指定された読み出し対象を特定する値と、に基づいて、読み出し対象指定テーブル１０３にデータを登録する。例えば、エンジニアリングツール５００から、「Ｘ」の１００番から２５０番の読み出し対象をスレーブとすることを指示するコマンドを受信した場合、コマンド処理部１０５は、図３に示す対象指定テーブル１０３に、「デバイス：Ｘ、開始番号：１、終了番号２５０、読み出し対象：第２デバイス記憶部」というデータを登録する。
【００４７】
図２に示す書き込み制御部１０６は、実行部１０７からユーザプログラム１１２２のＥＮＤ命令を実行した旨の通知を受けると、第１デバイス記憶部１０１のデバイス値を、第２デバイス記憶部１０２にコピーする。第１デバイス記憶部１０１のデバイス値は、次のスキャンタイムにおけるユーザプログラム１１２２の実行により上書きされるが、第２デバイス記憶部１０２には、前回のスキャンタイムにおけるデバイス値が保持されている。言い換えると、第２デバイス記憶部１０２には、第１デバイス記憶部１０１のデバイス値が退避されている。書き込み制御部１０６の機能は、図１のＭＰＵ１６０により実現される。
【００４８】
図２に示す実行部１０７は、スキャンタイム毎にユーザプログラム１１２２を実行する。具体的には実行部１０７は、第１デバイス記憶部１０１に格納されている入力信号に応じて、ユーザプログラム１１２２の各命令を実行し、演算結果を第１デバイス記憶部１０１に格納する。実行部１０７はユーザプログラム１１２２の最後の命令であるＥＮＤ命令を実行した後、書き込み制御部１０６に１スキャンが終了したことを通知する。この通知に応答して、書き込み制御部１０６は、第１デバイス記憶部１０１のデバイス値を第２デバイス記憶部１０２にコピーする。その後、実行部１０７はＩ／Ｏリフレッシュを行い、第１デバイス記憶部１０１のデバイス値を、入力ユニット２００及び出力ユニット３００と一括交換する。実行部１０７の機能は、図１のＭＰＵ１６０により実現される。
【００４９】
図２に示すように、エンジニアリングツール５００は、機能的には、デバイス値の読み出しに関する指示を受け付ける受付部５０１と、ＣＰＵユニット１００からデバイス値を取得する取得処理部５０２と、ＣＰＵユニット１００とコマンドを送受信するコマンド送受信部５０３とを有する。受付部５０１は、本発明の受付手段の一例である。取得処理部５０２は、本発明の取得処理手段の一例である。
【００５０】
受付部５０１は、ユーザから、デバイス値の読み出しに関する指示を受け付ける。具体的には、受付部５０１は、ユーザから、デバイス値の読み出し対象をマスタにするか退避にするかを指定する指示を受け付ける。例えば、受付部５０１は図４に示すような画面を出力装置５３０に表示し、ユーザから読み出し対象の指定についての指示を受け付ける。この場合、受付部５０１は、デバイスの領域及び当該領域における範囲と、読み出し対象とについての指定をユーザから受け付ける。ユーザが図４に示す画面上で入力した内容に応じて、後述の取得処理部５０２がコマンド送受信部５０３を介して対象指定テーブル１０３の更新を指示するコマンドをＣＰＵユニット１００に送信する。
【００５１】
さらに、受付部５０１は、ユーザから、指定されたデバイス値を読み出す指示を受け付ける。例えば、受付部５０１は図５Ａに示すような画面を出力装置５３０に表示し、ユーザからデバイス値の読み出しについての指示を受け付ける。この場合、受付部５０１は、デバイスの領域及び当該領域における範囲の指定をユーザから受け付ける。ユーザが図５Ａに示す画面上で入力した内容に応じて、後述の取得処理部５０２がコマンド送受信部５０３を介してモニタ要求をＣＰＵユニット１００に送信する。
【００５２】
図２に示す取得処理部５０２は、受付部５０１が受け付けたユーザの指示に応じたコマンドをＣＰＵユニット１００に送信する。具体的には、取得処理部５０２は、受付部５０１がユーザから受け付けた読み出し対象の指定の指示に応じて、対象指定テーブル１０３の更新を指示するコマンドをコマンド送受信部５０３を介してＣＰＵユニット１００に送信する。当該コマンドには、デバイスの領域を特定する値と、当該領域におけるモニタ対象の範囲を示す開始番号及び終了番号と、指定された読み出し対象を特定する値とが含まれている。
【００５３】
さらに、取得処理部５０２は、受付部５０１がユーザから受け付けたデバイスの読み出しの指示に応じて、指定されたデバイス値を読み出すことを要求するモニタ要求を生成し、モニタ要求をコマンド送受信部５０３に出力する。モニタ要求には、デバイスの領域を特定する値と、当該領域におけるモニタ対象の範囲を示す開始番号及び終了番号とが含まれている。
【００５４】
また、取得処理部５０２は、コマンド送受信部５０３がＣＰＵユニット１００から受信したモニタ応答に含まれるデバイス値を取得し、図１に示すメモリ５１０に格納する。前述のように、モニタ応答には、モニタ要求で指定された順序で読み出されたデバイス値が含まれている。さらに、取得処理部５０２は図５Ｂに示すようにモニタ応答に含まれるデバイス値を表示する画面を出力装置５３０に表示してもよい。上述した取得処理部５０２の機能は、図１の演算装置５５０がモニタ用プログラム５１２、設定用プログラム５１１を実行することにより実現される。
【００５５】
図２に示すコマンド送受信部５０３は、取得処理部５０２から出力された対象指定テーブル１０３の更新を指示するコマンドをＣＰＵユニット１００に送信する。さらに、コマンド送受信部５０３は、取得処理部５０２から出力されたモニタ要求をＣＰＵユニット１００に送信する。また、コマンド送受信部５０３は、ＣＰＵユニット１００から受信したモニタ応答を取得処理部５０２に出力する。コマンド送受信部５０３の機能は、図１の通信インタフェース５４０と、演算装置５５０とにより実現される。
【００５６】
上述したように、読み出し対象指定テーブル１０３において、モニタ要求により指定されたデバイス値の読み出し対象が指定されている。このため、デバイスのモニタに先立って、読み出し対象指定テーブル１０３にデバイス値の読み出し対象を指定するデータが登録されている必要がある。
【００５７】
以下、ユーザがエンジニアリングツール５００を使用してＣＰＵユニット１００の読み出し対象指定テーブル１０３に読み出し対象を指定するデータを登録する方法を説明する。ユーザは、図１に示すように、エンジニアリングツール５００とＣＰＵユニット１００とを通信ケーブル５０９を介して相互に接続した状態で、キーボード、マウス等の入力装置５２０を操作して、設定用プログラム５１１を起動する。演算装置５５０は、ユーザの操作に応答して設定用プログラム５１１を実行し、以下の機能を実現する。
【００５８】
演算装置５５０は、ＣＰＵユニット１００に対してデバイス設定１１２１のデータの提供を要求する。これに応答して、ＣＰＵユニット１００がデバイス設定１１２１のデータをエンジニアリングツール５００に送信したものとする。デバイス設定１１２１のデータとして、入力信号の値が格納されている領域を示すデバイス名「Ｘ」と、出力信号の値が格納されている領域を示すデバイス名「Ｙ」と、その他の値が格納されている領域を示すデバイス名「Ｄ」と、それぞれの領域のサイズを示す先頭番号及び末尾番号と、が送信されたものとする。
【００５９】
演算装置５５０は、ＣＰＵユニット１００から提供されたデバイス設定１１２１のデータに基づいて、図４に示すような読み出し対象の指定画面を出力装置５３０に表示する。ユーザは、図示する画面上において、キーボード、マウス等の入力装置５２０を操作して、デバイスとして、「Ｘ」、「Ｙ」、「Ｄ」から任意のものを選択できる。また、ユーザは、それぞれのデバイスにおける範囲を指定するため開始番号と終了番号とを入力できる。ユーザは読み出し対象として「マスタ」又は「退避」を選択できる。ここで、「マスタ」は第１デバイス記憶部１０１を指し、「退避」は第２デバイス記憶部１０２を指す。
【００６０】
ユーザが入力を終え、「登録」ボタンを押したとする。従って、演算装置５５０は読み出し対象指定テーブル１０３の更新を指示するコマンドをＣＰＵユニット１００に送信する。当該コマンドには、ユーザが入力した更新内容を示すデータが含まれている。これに応答して、ＣＰＵユニット１００は受信したデータで、読み出し対象指定テーブル１０３を更新する。なお、ユーザは、エンジニアリングツール５００を使用して読み出し対象指定テーブル１０３のデータを必要に応じて更新できる。読み出し対象指定テーブル１０３のデータが更新されると、ＣＰＵユニット１００は、更新後の読み出し対象指定テーブル１０３が指定する読み出し対象からデバイス値を読み出す。
【００６１】
続いて、ユーザがエンジニアリングツール５００を使用してＣＰＵユニット１００のデバイス値をモニタする方法を説明する。ユーザは、図１に示すように、エンジニアリングツール５００とＣＰＵユニット１００とを通信ケーブル５０９を介して相互に接続した状態で、キーボード、マウス等の入力装置５２０を操作して、モニタ用プログラム５１２を起動する。演算装置５５０は、ユーザの操作に応答してモニタ用プログラム５１２を実行し、以下の機能を実現する。
【００６２】
演算装置５５０は、図５Ａに示すようなデバイスモニタの入力画面を出力装置５３０に表示する。ユーザが、図示する画面上において、キーボード、マウス等の入力装置５２０を操作して、モニタしたいデバイスと範囲を示す開始番号及び終了番号とを入力し、「送信」ボタンを押したとする。従って、演算装置５５０は、指定されたデバイスと開始番号及び終了番号とを含むモニタ要求をＣＰＵユニット１００に送信する。これに応答して、ＣＰＵユニット１００は、モニタ要求により指定されたデバイス値を読み出し、読み出したデバイス値を含むモニタ応答をエンジニアリングツール５００に送信する。
【００６３】
演算装置５５０は、ＣＰＵユニット１００からモニタ応答を受信すると、図５Ｂに示すようなデバイスモニタの結果画面を出力装置５３０に表示する。図示する例では、演算装置５５０は、各デバイス値が何番目のデータであるかを示す番号を併せて表示する。例えば、ＣＰＵユニット１００は、「Ｘ１００」から「Ｘ１５０」のデバイス値を、指定された順序で読み出し、読み出したデバイス値をエンジニアリングツール５００に送信する。演算装置５５０は、ＣＰＵユニット１００から受信したデバイス値とともに、ユーザが入力した開始番号及び終了番号に基づいて、各デバイス値が「Ｘ」の領域における何番目のデータであるかを示すデバイスの番号を併せて表示している。
【００６４】
次に、ＣＰＵユニット１００が、エンジニアリングツール５００からモニタ要求を受け付けた場合に、モニタ応答をエンジニアリングツール５００に返す処理（モニタ応答処理）を説明する。以下の処理はＭＰＵ１５０が、図１に示すモニタ応答プログラム１１２３を実行することで実現される。一方、ＭＰＵ１６０は、ユーザプログラム１１２２をスキャンタイム毎に実行しているものとする。
【００６５】
図６に示すように、ＭＰＵ１５０は、エンジニアリングツール５００からモニタ要求を受信したか否かを判別する（ステップＳ１１）。ＭＰＵ１５０は、モニタ要求を受信したと判別すると（ステップＳ１１；Ｙｅｓ）、モニタ要求により指定されたデバイス値の読み出し対象を、読み出し対象指定テーブル１０３に基づいて判別する（ステップＳ１２）。一方、モニタ要求をエンジニアリングツール５００から受信していない場合（ステップＳ１１；Ｎｏ）、一定時間待機してから、再びステップＳ１１の処理を実行する。
【００６６】
読み出し対象が第１デバイス記憶部１０１を含むと判別されると（ステップＳ１３；Ｙｅｓ）、ＭＰＵ１６０がユーザプログラム１１２２のＥＮＤ命令を実行した後（ステップＳ１４；Ｙｅｓ）、ＭＰＵ１５０及びＭＰＵ１６０は協働して指定されたデバイス値を読み出す（ステップＳ１５）。
【００６７】
具体的には、ステップＳ１３で、ＭＰＵ１５０は、読み出し対象指定テーブル１０３で読み出し対象として第１デバイス記憶部１０１が指定されているデバイス値については、ＭＰＵ１６０にデバイス値の読み出しの要求を出す。ＭＰＵ１６０は、ＥＮＤ命令を実行した後、ＭＰＵ１６０から読み出しの要求を受信したか否かを判別する。ＭＰＵ１６０は、ステップＳ１４でＥＮＤ命令を実行した後、読み出しの要求をＭＰＵ１５０から受信したと判別すると、ステップＳ１５で、指定されたデバイス値を第１デバイス記憶部１０１から読み出す。ＭＰＵ１６０は第１デバイス記憶部１０１から読み出したデバイス値をＭＰＵ１５０に送信する。
【００６８】
また、ＭＰＵ１５０は、読み出し対象指定テーブル１０３で読み出し対象として第２デバイス記憶部１０２が指定されているデバイス値については、第２デバイス記憶部１０２からデバイス値を読み出す。なお、読み出し対象が第１デバイス記憶部１０１だけである場合、ＭＰＵ１５０は第２デバイス記憶部１０２からデバイス値を読み出す必要はない。
【００６９】
ＭＰＵ１５０は、デバイス値をエンジニアリングツール５００に送信する（ステップＳ１６）。読み出し対象として第１デバイス記憶部１０１と第２デバイス記憶部１０２とを含む場合には、ＭＰＵ１５０は、ＭＰＵ１６０から受信した第１デバイス記憶部１０１のデバイス値と、ＭＰＵ１５０が読み出した第２デバイス記憶部１０２のデバイス値とをエンジニアリングツール５００に送信する。読み出し対象が第１デバイス記憶部１０１だけである場合、ＭＰＵ１５０は、ＭＰＵ１６０から受信した第１デバイス記憶部１０１のデバイス値をエンジニアリングツール５００に送信する。
【００７０】
一方、ステップＳ１３において、読み出し対象が第１デバイス記憶部１０１を含まないと判別すると、（ステップＳ１３；Ｎｏ）、即ち、読み出し対象が第２デバイス記憶部１０２のみである場合、ＭＰＵ１５０は、第２デバイス記憶部１０２から指定されたデバイス値を読み出し（ステップＳ１７）、読み出したデバイス値をエンジニアリングツール５００に送信する（ステップＳ１８）。具体的には、ＭＰＵ１５０は読み出したデバイス値を含む応答コマンドをエンジニアリングツール５００に送信する。
【００７１】
以上説明したように、実施の形態においては、エンジニアリングツール５００から要求されたデバイス値が、読み出し対象指定テーブル１０３で第２デバイス記憶部１０２から読み出すことが指定されている場合、ＣＰＵユニット１００は、即時に第２デバイス記憶部１０２に格納されているデバイス値をエンジニアリングツール５００に返す。よって、ユーザが読み出し対象として第２デバイス記憶部１０２を指定したデバイス値については、ＣＰＵユニット１００のスキャンタイムに依存せず読み出すことが可能である。エンジニアリングツール５００は、モニタ応答を受信するまで長時間待たされることがない。これにより、エンジニアリングツール５００の操作性が向上する。
【００７２】
一方、読み出し対象指定テーブル１０３でエンジニアリングツール５００から要求されたデバイス値を第１デバイス記憶部１０１から読み出すことが指定されている場合、ＣＰＵユニット１００は、従来と同様に、スキャンタイム毎に第１デバイス記憶部１０１に格納されているデバイス値をエンジニアリングツール５００に返す。
【００７３】
ユーザプログラムの実行中に値が変わらないデバイス値については、読み出し対象を第２デバイス記憶部１０２と指定することで、ユーザは、デバイス値をモニタするため長時間待つ必要がない。このような場合に、実施の形態に係る構成は特に効果的である。
【００７４】
あるいは、複数のＣＰＵユニット１００のデバイスをモニタする場合に、スキャンタイムが長いＣＰＵユニット１００については、読み出し対象を第２デバイス記憶部１０２とし、スキャンタイムが短いＣＰＵユニット１００については、読み出し対象を第１デバイス記憶部１０１とすることもできる。
【００７５】
なお、図６のステップＳ１３において、読み出し対象が第１デバイス記憶部１０１と第２デバイス記憶部１０２とを含む場合には、スキャンタイム毎にデバイス値がエンジニアリングツール５００に返されることになる。このため、第２デバイス記憶部１０２のデバイス値の応答も遅くなってしまう。例えば、以下のような方法でこのような状況が発生するのを防止できる。エンジニアリングツール５００のメモリ５１０に、ＣＰＵユニット１００の読み出し対象指定テーブル１０３に登録された内容と同じデータを記憶しておく。例えば、図５Ａに示すデバイスモニタの入力画面で、ユーザが指定したデバイス値の読み出し対象が第１デバイス記憶部１０１と第２デバイス記憶部１０２とを含む場合には、演算装置５５０は、画面上に応答が遅くなることを警告するメッセージを表示するようにしてもよい。
【００７６】
（変形例１）
上記の実施の形態においては、ＣＰＵユニット１００の読み出し対象指定テーブル１０３にデバイス値の読み出し対象を予め設定しておく例を説明したが、読み出し対象の指定方法はこれに限られない。
【００７７】
エンジニアリングツール５００は、読み出し対象を指定する情報を含むモニタ要求をＣＰＵユニット１００に送信してもよい。受付部５０１は、読み出し対象のデバイスの領域と、当該領域における範囲と、読み出し対象とについての指定とをユーザから受け付ける。例えば、受付部５０１は、図７に示すようにデバイスモニタの入力画面で、読み出し対象を指定できるようにしてもよい。
【００７８】
この場合、図２に示す取得処理部５０２は、受付部５０１が受け付けたユーザの指示に応じたモニタ要求を生成し、生成したモニタ要求をコマンド送受信部５０３を介してＣＰＵユニット１００に送信する。モニタ要求には、デバイスの領域を特定する値と、当該領域におけるモニタ対象の範囲を示す開始番号及び終了番号と、指定された読み出し対象を特定する値とが含まれている。ＣＰＵユニット１００は、モニタ要求により指定された読み出し対象から指定されたデバイス値を読み出し、読み出したデバイス値を含むモニタ応答をエンジニアリングツール５００に送信する。上記のような構成の場合、読み出し対象指定テーブル１０３に読み出し対象を登録しておく必要がない。
【００７９】
変形例１に係る構成においても、実施の形態と同様に、ユーザが読み出し対象として第２デバイス記憶部１０２を指定したデバイス値については、ＣＰＵユニット１００からエンジニアリングツール５００に即時に返されるため、外部機器の操作性が向上する。
【００８０】
（変形例２）
実施の形態においては、ＣＰＵユニット１００が２つのＭＰＵ１５０、１６０を有し、ＭＰＵ１５０がモニタ応答に係る処理を実行し、ＭＰＵ１６０がユーザプログラム１１２２を実行した。この場合、２つのＭＰＵで分散して処理を行うので各ＭＰＵの処理負荷を抑えることができる。しかしながら、ＣＰＵユニット１００は２つのＭＰＵを有していなくてもよい。
【００８１】
図８に示すように、ＣＰＵユニット１００は１つのみのＭＰＵ１５０を有していてもよい。ＣＰＵユニット１００はＭＰＵを１つだけ有するので、ＭＰＵを２つ有する場合に比べコストを低減できる。この場合、ＭＰＵ１５０が、図２に示すコマンド処理部１０５、書き込み制御部１０６の双方の機能を実現する。
【００８２】
（変形例３）
実施の形態においては、図１に示すように第１デバイス記憶部１０１を揮発性メモリ１１１により実現し、第２デバイス記憶部１０２を不揮発性メモリ１１２により実現する例を説明した。この場合、例えば、停電により、ＣＰＵユニット１００への電源供給が遮断された場合には以下のようなメリットがある。
【００８３】
停電によりＣＰＵユニット１００の電源供給が遮断されると、第１デバイス記憶部１０１に記憶されたデータは保持されないが、第２デバイス記憶部１０２に記憶されたデータは保持されている。この場合、図２に示す実行部１０７は、第２デバイス記憶部１０２に記憶されたデバイス値を使用して、ユーザプログラム１１２２を実行すればよい。第２デバイス記憶部１０２には、停電が起きる前に完了したスキャンタイムにおけるデバイス値が格納されているため、被制御機器９０２を途中工程から復帰できるというメリットがある。
【００８４】
あるいは、第２デバイス記憶部１０２のアクセス速度が遅い場合、書き込み制御部１０６が、第２デバイス記憶部１０２に記憶されたデバイス値を第１デバイス記憶部１０１にコピーしてもよい。同一のＣＰＵユニット１００内におけるメモリ間のデータのコピーであるため、データ転送に時間を要しない。その後、実行部１０７は、第１デバイス記憶部１０１に記憶されたデバイス値を使用して、ユーザプログラム１１２２を実行すればよい。この場合、第１デバイス記憶部１０１に、停電が起きる前に完了したスキャンタイムにおけるデバイス値がコピーされるため、被制御機器９０２を途中工程から復帰できるというメリットがある。
【００８５】
また、実施の形態において、コマンド処理部１０５は、読み出し対象指定テーブル１０３に読み出し対象が指定されていない場合は、デフォルトの読み出し対象からデバイス値を読み出した。このような構成を備えることで、次のような利点がある。例えば、第１デバイス記憶部１０１をデフォルトの読み出し対象とした場合、読み出し対象が第１デバイス記憶部１０１のデバイス値については読み出し対象指定テーブル１０３に登録する必要はない。ユーザは読み出し対象指定テーブル１０３に読み出し対象として第２デバイス記憶部１０２を指定するデバイスとその範囲だけを指定すればよい。
【００８６】
実施の形態においては、第１デバイス記憶部１０１のデバイス値がすべて第２デバイス記憶部１０２にコピーされる例を説明したが、これに限られない。第１デバイス記憶部１０１のデバイス値のうち指定された範囲のデバイス値のみを第２デバイス記憶部１０２にコピーするようにしてもよい。
【００８７】
実施の形態においては、第２デバイス記憶部１０２を、不揮発性メモリ１１２により実現する例を説明したが、第２デバイス記憶部１０２は揮発性のメモリにより実現されてもよい。この場合も、ＣＰＵユニット１００は、第２デバイス記憶部１０２を読み出し対象とするよう指定されたデバイス値については、即時にエンジニアリングツール５００に返す。よって、外部機器の操作性を向上することができる。また、第１デバイス記憶部１０１は、十分なアクセス速度が保証されるのならば、揮発性のメモリではなく、不揮発性のメモリにより実現されてもよい。この場合、ＣＰＵユニット１００への電源供給が遮断されたとしても、第１デバイス記憶部１０１のデバイス値は保持される。
【００８８】
実施の形態においては、デバイスメモリをモニタするための外部機器として、エンジニアリングツール５００を例に説明したが、外部機器は、プログラマブル表示器であってもよいし、あるいは、ＣＰＵユニット１００と通信可能な他の情報処理装置であってもよい。
【００８９】
上記のプログラムを記録する記録媒体としては、磁気ディスク、光ディスク、光磁気ディスク、フラッシュメモリ、半導体メモリ、磁気テープを含むコンピュータ読取可能な記録媒体を使用することができる。
【００９０】
本発明は、広義の精神と範囲を逸脱することなく、様々な実施形態及び変形が可能とされるものである。また、上述した実施形態は、本発明を説明するためのものであり、本発明の範囲を限定するものではない。つまり、本発明の範囲は、実施形態ではなく、請求の範囲によって示される。そして、請求の範囲内及びそれと同等の発明の意義の範囲内で施される様々な変形が、本発明の範囲内とみなされる。
【符号の説明】
【００９１】
１  プログラマブルロジックコントローラ、１００  ＣＰＵユニット、１０１  第１デバイス記憶部、１０２  第２デバイス記憶部、１０３  読み出し対象指定テーブル、１０４，５０３  コマンド送受信部、１０５  コマンド処理部、１０６  書き込み制御部、１０７  実行部、１１０，５１０  メモリ、１１１  揮発性メモリ、１１２  不揮発性メモリ、１２０  入出力インタフェース、１３０  ツールインタフェース、１４０，５５０  演算装置、１５０，１６０  ＭＰＵ、１９０，５９０  バス、２００  入力ユニット、３００  出力ユニット、４００  ベースユニット、４１０  共有バス、５００  エンジニアリングツール、５０１  受付部、５０２  取得処理部、５０９  通信ケーブル、５１１  設定用プログラム、５１２  モニタ用プログラム、５２０  入力装置、５３０  出力装置、５４０  通信インタフェース、９０１  検出器、９０２  被制御機器、１１２１  デバイス設定、１１２２  ユーザプログラム、１１２３  モニタ応答プログラム
【要約】
プログラマブルロジックコントローラは、設定された周期毎にプログラムを繰り返し実行する。第１デバイス記憶部（１０１）は、プログラムの入力値及び出力値であるデバイス値を記憶する。第２デバイス記憶部（１０２）は前回の周期において第１デバイス記憶部（１０１）が記憶していたデバイス値を記憶する。コマンド処理部（１０５）は、エンジニアリングツール（５００）から受け付けたモニタ要求に指定されたデバイスについて予め設定された読み出し対象が第１デバイス記憶部（１０１）である場合、その周期におけるプログラムの実行が完了した後に第１デバイス記憶部（１０１）のデバイス値を読み出し、読み出し対象が第２デバイス記憶部（１０２）である場合、直ちに第２デバイス記憶部（１０２）のデバイス値を読み出す。コマンド送受信部（１０４）は、デバイス値をエンジニアリングツール（５００）に送信する。【図１】
0006563155.tif 000002
【図２】
0006563155.tif 000003
【図３】
0006563155.tif 000004
【図４】
0006563155.tif 000005
【図５Ａ】
0006563155.tif 000006
【図５Ｂ】
0006563155.tif 000007
【図６】
0006563155.tif 000008
【図７】
0006563155.tif 000009
【図８】
0006563155.tif 000010