(57)【特許請求の範囲】
【請求項１】
制御プログラムを周期的に実行するプログラマブルロジックコントローラであって、
前記制御プログラムが１回実行されるたびに、前記制御プログラムの入力値及び出力値を含むデバイス値を記憶するデバイス記憶手段から、収集対象として設定された前記デバイス値のうち値が変化した前記デバイス値を収集し、収集した前記デバイス値のログである差分ログを差分ログ記憶手段に格納する差分ログ収集手段と、
設定されたタイミングで、前記収集対象として設定された前記デバイス値を、前記差分ログの収集に使用する基準データとして前記デバイス記憶手段から収集し、収集した前記デバイス値のログを基準データ記憶手段に一括で格納する一括ログ収集手段と、
前記制御プログラムが１回実行されるたびに、新たな前記基準データを作成するため、前記収集対象として設定された前記デバイス値のうち１／Ｎ（Ｎは２以上の自然数）の前記デバイス値を前記デバイス記憶手段から収集し、収集した前記１／Ｎの前記デバイス値のログである分割ログを前記基準データ記憶手段に格納し、前記基準データ記憶手段の空き領域がなくなると、前記１／Ｎの前記デバイス値の前記分割ログで前記基準データ記憶手段に格納されているデータを上書きする分割ログ収集手段と、
を備え、
前記差分ログ収集手段は、前記分割ログ収集手段が前記分割ログを前記基準データ記憶手段にＮ回格納することにより前記基準データ記憶手段に新たな前記基準データが格納された状態となると、前記差分ログで前記差分ログ記憶手段に格納されているデータを上書きする、
プログラマブルロジックコントローラ。
【請求項２】
前記設定されたタイミングは、前記制御プログラムの実行開始前である、
請求項１に記載のプログラマブルロジックコントローラ。
【請求項３】
前記差分ログ収集手段は、（ｉ）前記差分ログ記憶手段に格納された前記差分ログに含まれる最新の前記デバイス値の値と前記デバイス記憶手段に格納されている前記デバイス値とが異なる場合、あるいは、（ｉｉ）前記基準データに含まれる前記デバイス値の値と、前記デバイス記憶手段に格納されている前記デバイス値とが異なる場合に、前記デバイス値が変化したと判別し、その前記デバイス値の前記差分ログを前記差分ログ記憶手段に格納する、
請求項１または２に記載のプログラマブルロジックコントローラ。
【請求項４】
前記分割ログ収集手段は、前記制御プログラムの最後の命令が実行されるたびに、前記収集対象として設定された前記デバイス値のうち１／Ｎ（Ｎは２以上の自然数）の前記デバイス値を前記デバイス記憶手段から収集し、収集した１／Ｎの前記デバイス値の前記分割ログを前記基準データ記憶手段に格納する、
請求項１から３のいずれか１項に記載のプログラマブルロジックコントローラ。
【請求項５】
前記分割ログ収集手段は、設定されたＮの値と、前記デバイス記憶手段に記憶されている前記デバイス値のデータサイズ及びデータ数と、から、１度に収集する前記デバイス値のデータ数を決める、
請求項１から４のいずれか１項に記載のプログラマブルロジックコントローラ。
【請求項６】
請求項１から５のいずれか１項に記載のプログラマブルロジックコントローラに、接続される設定ツールであって、
前記プログラマブルロジックコントローラに、Ｎの値を設定する設定登録部を備える、
設定ツール。
【請求項７】
制御プログラムを周期的に実行するコンピュータに、
前記制御プログラムが１回実行されるたびに、前記制御プログラムの入力値及び出力値を含むデバイス値を記憶するデバイス記憶手段から、収集対象として設定された前記デバイス値のうち値が変化した前記デバイス値のログである差分ログを差分ログ記憶手段に格納させ、
設定されたタイミングで、前記収集対象として設定された前記デバイス値を、前記差分ログの収集に使用する基準データとして、基準データ記憶手段に一括で格納させ、
前記制御プログラムが１回実行されるたびに、新たな前記基準データを作成するため、前記収集対象として設定された前記デバイス値のうち１／Ｎ（Ｎは２以上の自然数）の前記デバイス値のログである分割ログを前記基準データ記憶手段に格納させ、
前記基準データ記憶手段の空き領域がなくなると、前記１／Ｎの前記デバイス値の前記分割ログで前記基準データ記憶手段に格納されているデータを上書きさせ、
前記基準データ記憶手段に新たな前記基準データが格納された状態となると、前記差分ログで前記差分ログ記憶手段に格納されているデータを上書きさせる、
プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラマブルロジックコントローラ、設定ツール、及びプログラムに関する。
【背景技術】
【０００２】
生産システム、制御システム等において稼動するプログラマブルロジックコントローラは、制御プログラムを繰り返し実行することにより、制御対象の機器を制御する。制御プログラムの入力データ及び出力データは、プログラマブルロジックコントローラが有するデバイスメモリと呼ばれるメモリ上の領域に格納される。入力データは、例えば、検出器から供給された入力信号を示すデータである。出力データは、例えば、プログラマブルロジックコントローラが制御対象の機器に供給する出力信号を示すデータである。【０００３】
ユーザは、プログラマブルロジックコントローラが正常に動作しているかを確認するため、デバイスメモリに格納されたデータの履歴をチェックすることがある。このため、プログラマブルロジックコントローラが、デバイスメモリに格納されたデータのログを収集するロギング機能を備えることがある。【０００４】
特許文献１には、ロギング機能を備えたプログラマブルロジックコントローラが、Ｉ／Ｏ（Input Output）リフレッシュのタイミングで入出力データのログをとることが記載されている。Ｉ／Ｏリフレッシュとは、プログラマブルコントローラが機器とのデータ交換を行う処理をいう。特許文献１に記載のプログラマブルロジックコントローラは、ログデータの容量の増加を抑えるために、プログラムの最初の実行の後にすべての入出力データのログを記録し、２回目以降の実行の後には値が変化したデータのログのみを記録する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】国際公開第２０１７／２０３５８３号
【発明の概要】
【発明が解決しようとする課題】
【０００６】
特許文献１に記載されたプログラマブルロジックコントローラは、２回目以降のプログラムの実行の後には値が変化したデータのログのみを記録しているが、ログの記録回数が増えるにつれ、ログを記録するメモリの容量が増えていくことが予想される。ログを記録するメモリの容量が増加することにより、プログラマブルロジックコントローラの動作に必要なメモリが不足し、最終的には、プログラマブルロジックコントローラが停止してしまう恐れがある。【０００７】
本発明は上記実情に鑑みてなされたものであり、ログ収集処理に起因するメモリの空き容量の不足によるエラーの発生を防止することを目的とする。
【課題を解決するための手段】
【０００８】
上記目的を達成するため、本発明に係るプログラマブルロジックコントローラは、制御プログラムが１回実行されるたびに、新たな基準データを作成するため、収集対象として設定されたデバイス値のうち１／Ｎ（Ｎは２以上の自然数）のデバイス値をデバイス記憶手段から収集し、収集した１／Ｎのデバイス値のログである分割ログを基準データ記憶手段に格納し、基準データ記憶手段の空き領域がなくなると、１／Ｎのデバイス値のログで基準データ記憶手段に格納されているデータを上書きする。差分ログ収集手段は、分割ログ収集手段が分割ログを基準データ記憶手段にＮ回格納することにより基準データ記憶手段に新たな基準データが格納された状態となると、差分ログで差分ログ記憶手段に格納されているデータを上書きする。
【発明の効果】
【０００９】
本発明に係るプログラマブルロジックコントローラが上記の構成を備えることにより、ログの記録回数が増えたとしても、プログラマブルロジックコントローラのメモリの空き容量が減少してしまうことを抑制することができる。よって、ログ収集に起因するメモリの空き容量の不足によるエラーの発生を防止することができる。
【図面の簡単な説明】
【００１０】
【図１】本発明の実施の形態に係るプログラマブルロジックコントローラ及び設定ツールの機能構成を示すブロック図
【図２】実施の形態に係るプログラマブルロジックコントローラ及び設定ツールのハードウェア構成を示す図
【図３Ａ】実施の形態に係るログ記憶部の構成の一例を示す図
【図３Ｂ】実施の形態に係る全データ領域に格納されるデータの一例を示す図
【図３Ｃ】実施の形態に係る差分データ領域に格納されるデータの一例を示す図
【図４】実施の形態に係るデバイスメモリの構成の一例を示す図
【図５Ａ】実施の形態に係る全データ領域にスキャン前にデータが書き込まれた状態を示す図
【図５Ｂ】実施の形態に係る全データ領域の１回目のスキャン後にデータが書き込まれた状態を示す図
【図５Ｃ】実施の形態に係る全データ領域に複数回のスキャンでデータが書き込まれた状態を示す図
【図５Ｄ】実施の形態に係る全データ領域全てにデータが書き込まれた状態を示す図
【図５Ｅ】実施の形態に係る全データ領域のデータが上書きされた状態を示す図
【図５Ｆ】実施の形態に係る全データ領域の（２×Ｎ）回目のスキャン後の状態を示す図
【図６】実施の形態に係る設定ツールのロギングの設定画面の一例を示す図
【図７】実施の形態に係るロギング処理のフローチャート
【図８】変形例に係る設定ツールのロギングの設定画面の一例を示す図
【図９】変形例に係る設定ツールのロギングの設定画面の他の例を示す図
【発明を実施するための形態】
【００１１】
（実施の形態）
以下、本発明の実施の形態に係るプログラマブルロジックコントローラについて、図面を参照しつつ詳細に説明する。
【００１２】
図１に示すプログラマブルロジックコントローラ１００は、制御システム、生産システム等において、制御プログラムを実行して、制御対象の機器を制御する。例えば、プログラマブルロジックコントローラ１００（以下、ＰＬＣ１００）は、センサ、スイッチ等の検出器から入力された入力値を使用して、プログラムされている演算を実行する。入力値は、センサ、スイッチ等の検出器から入力された入力信号が示す「真」または「偽」の論理値である。ＰＬＣ１００は、演算により出力値を得る。出力値は、「真」または「偽」の論理値である。ＰＬＣ１００は、「真」または「偽」の論理値が示す出力信号を接触器、モータ、表示灯等の制御対象の機器に出力する。このようにして、例えば、制御対象の機器のオン／オフが制御される。
【００１３】
ＰＬＣ１００は、制御プログラムの最初の命令から最後の命令まで、命令を順次実行する。ＰＬＣ１００は、最後の命令であるＥＮＤ命令を実行すると、再び、最初の命令から、命令を順次実行する。ＰＬＣ１００が制御プログラムの最初の命令から最後の命令までを実行することをスキャンということがある。ＰＬＣ１００が最初の命令から最後の命令までを実行する時間、言い換えると、ＰＬＣ１００が制御プログラムの命令の実行を一巡する時間、をスキャンタイムということがある。スキャンタイムを実行周期ということもある。なお、ＰＬＣ１００は、制御プログラムを周期的に実行するが、制御プログラムを固定期間毎に実行するわけではない。
【００１４】
検出器から入力された入力信号が示す論理値は、ＰＬＣ１００が備えるデバイスメモリ１１０と呼ばれるメモリ上の領域に格納される。また、ＰＬＣ１００が演算により得た出力信号を示す論理値もデバイスメモリ１１０に格納される。ＰＬＣ１００が実行する制御プログラムはリレー回路の機能を実現するプログラムであるため、デバイスメモリ１１０には、プログラム上の仮想的なリレーである内部リレーをオン／オフする信号を示す論理値も格納される。デバイスメモリ１１０に格納されているデータをデバイス値という。ＰＬＣ１００は、デバイスメモリ１１０に格納されているデバイス値を使用してプログラムされている演算を実行する。
【００１５】
ＰＬＣ１００は、決められたタイミングで、検出器及び制御対象の機器とデバイスメモリ１１０のデータを一括でデータ交換する。このデータ交換をＩ／Ｏリフレッシュという。例えば、ＰＬＣ１００は、制御プログラムの最初の命令を実行する前にＩ／Ｏリフレッシュを実行する。ＰＬＣ１００は、Ｉ／Ｏリフレッシュにより検出器から供給された入力信号を示す論理値をデバイスメモリ１１０に格納し、デバイスメモリ１１０に格納されており、前回のスキャンタイムにおける演算により得た出力信号を制御対象の機器に供給する。
【００１６】
実施の形態においては、ＰＬＣ１００は、デバイス値のロギング機能を備える。ロギング機能が有効となるよう設定されている場合、ＰＬＣ１００は、デバイスメモリ１１０に格納されるデバイス値を収集し、デバイス値のログを記録する。実施の形態においては、ＰＬＣ１００は、以下のような特徴的な構成を備える。ＰＬＣ１００は、制御プログラムの実行に先立って、デバイスメモリ１１０に格納されている収集対象のデバイス値のログをメモリの決められた領域に一括で記録する。さらに、ＰＬＣ１００は、スキャンタイム毎に、デバイスメモリ１１０に格納されている収集対象のデバイス値のログを分割して取得する。加えて、ＰＬＣ１００は、スキャンタイム毎に値が変化したデバイス値のログをとる。
【００１７】
設定ツール５００は、ユーザが、ロギング処理に必要な設定値をＰＬＣ１００に設定するためのツールである。設定ツール５００として、例えば、ＰＬＣ１００と同じ工場内にあり、専用のプログラムをインストールしたパーソナルコンピュータが使用される。
【００１８】
続いて、各装置のハードウェア構成を説明する。図２に示すように、ＰＬＣ１００はハードウェア構成として、各種のプログラム及びデータを記憶するメモリ１１と、通信ケーブル７０１を介して設定ツール５００との間でデータを授受する接続インタフェース１２と、ＰＬＣ１００全体を制御するＣＰＵ（Central Processing Unit）１３とを有する。メモリ１１と接続インタフェース１２とは、バス１９を介してＣＰＵ１３に接続されており、それぞれＣＰＵ１３と通信する。
【００１９】
メモリ１１は、揮発性メモリと不揮発性メモリとを含む。メモリ１１は、ＰＬＣ１００の各種機能を実現するためのプログラムとプログラムの実行時に使用されるデータとを記憶する。メモリ１１が記憶するプログラムは、ファームウェアと、制御対象の機器を制御するための制御プログラムとを含む。実施の形態においては、ファームウェアがＰＬＣ１００がロギング機能を実現させる。さらに、メモリ１１はＣＰＵ１３のワークメモリとして用いられる。
【００２０】
接続インタフェース１２は、例えば、ＵＳＢコントローラを含み、通信ケーブル７０１を介して、設定ツール５００が出力した電気信号を受け付け、受け付けた電気信号をデータに復元してＣＰＵ１３に出力する。通信ケーブル７０１は、例えば、ＵＳＢケーブルである。また、接続インタフェース１２は、ＣＰＵ１３から供給されたデータを電気信号に変換し、変換した信号を通信ケーブル７０１を介して設定ツール５００に出力する。
【００２１】
ＣＰＵ１３は、メモリ１１に記憶されているプログラムを実行して、ＰＬＣ１００の各種機能を実現する。例えば、ＣＰＵ１３は、メモリ１１に格納されている制御プログラムを実行することにより、検出器から供給された入力信号が示す値を使用した演算を行う。
【００２２】
設定ツール５００は、ハードウェア構成として、各種のプログラム及びデータを記憶するメモリ５１と、通信ケーブル７０１を介してＰＬＣ１００との間でデータを授受する接続インタフェース５２と、ユーザの入力操作を検出する入力装置５３と、画像を出力する表示装置５４と、設定ツール５００全体を制御するＣＰＵ５５とを有する。メモリ５１と接続インタフェース５２と入力装置５３と表示装置５４とは、バス５９を介してＣＰＵ５５に接続されており、それぞれＣＰＵ５５と通信する。
【００２３】
メモリ５１は、揮発性メモリと不揮発性メモリとを含む。メモリ５１は、設定ツール５００の各種機能を実現するためのプログラムとプログラムの実行時に使用されるデータとを記憶する。メモリ１１が記憶するプログラムは、ロギング処理に必要なデータをＰＬＣ１００に設定する機能を実現する設定プログラムを含む。さらに、メモリ５１はＣＰＵ５５のワークメモリとして用いられる。
【００２４】
接続インタフェース５２は、例えば、ＵＳＢコントローラを含み、ＣＰＵ５５から供給されたデータを電気信号に変換し、変換した信号を通信ケーブル７０１を介してＰＬＣ１００に出力する。また、接続インタフェース５２は、通信ケーブル７０１を介して、ＰＬＣ１００が出力した電気信号を受け付け、受け付けた電気信号をデータに復元してＣＰＵ５５に出力する。
【００２５】
入力装置５３は、マウス、操作キー等を含み、ユーザからの操作入力を受け付け、ユーザの操作入力を示す信号をＣＰＵ５５に出力する。表示装置５４は、ディスプレイを含み、ＣＰＵ５５から供給される信号に基づく画像をディスプレイに表示する。
【００２６】
ＣＰＵ５５は、メモリ５１に記憶されているプログラムを実行して、設定ツール５００の各種機能を実現する。具体的には、ＣＰＵ５５は、メモリ１１に格納されている設定プログラムを実行することにより、ＰＬＣ１００にロギング処理に必要な設定情報を登録する。
【００２７】
次に、図１を参照して、ＰＬＣ１００の機能構成を説明する。ＰＬＣ１００は、機能的には、デバイス値を記憶するデバイスメモリ１１０と、ロギング処理に係る設定情報を記憶する設定情報記憶部１２０と、デバイス値のログを記憶するログ記憶部１３０と、設定されたタイミングでデバイス値のログを一括で収集する一括ログ収集部１４０と、プログラムの実行中にデバイス値のログを分割して収集する分割ログ収集部１５０と、変化したデバイス値のログを収集する差分ログ収集部１６０とを有する。
【００２８】
デバイスメモリ１１０はデバイス値を記憶する。デバイス値は、検出器から供給された入力信号が示す論理値と、演算により得られた出力信号を示す論理値と、内部リレーをオン／オフする信号を示す論理値とを含む。デバイスメモリ１１０の機能は、図２に示すメモリ１１により実現される。デバイスメモリ１１０は、本発明のデバイス記憶手段の一例である。
【００２９】
設定情報記憶部１２０は、ロギング処理に必要な設定情報を記憶する。設定情報記憶部１２０は、ロギング機能を有効にするか無効にするかを示す値を記憶する。この値がロギング機能を有効にすることを示す値である場合、ＰＬＣ１００はロギングを行う。設定情報記憶部１２０は、収集対象であるデバイス値を特定する情報を記憶する。
【００３０】
ログ記憶部１３０は、デバイス値のログを記憶する。ログ記憶部１３０の機能は、図２に示すメモリ１１により実現される。
【００３１】
図３Ａに示すようにログ記憶部１３０は、全データ領域１３０１と、差分データ領域１３０２とを備える。全データ領域１３０１には、制御プログラムの実行前に一括で収集される収集対象のデバイス値のログと、スキャンタイム毎に分割して記録される収集対象のデバイス値のログとが格納される。全データ領域１３０１には、図３Ｂに示すように、デバイス名とデバイス値とそのときのスキャン数が格納される。スキャン数は、制御プログラムがスキャンされた回数である。なお、制御プログラムの実行前に、全データ領域１３０１に格納されるデータのスキャン数は、例えば、“０”である。制御プログラムの実行が開始されると、スキャン数は１ずつ加算される。ユーザは、全データ領域１３０１の容量を任意に設定することができるが、収集対象として設定されたデバイス値を格納するのに十分な容量を設定する必要がある。以下の説明においては、全データ領域１３０１の容量は、収集対象のデバイス値をすべて格納できる容量の２倍に設定されていると仮定する。全データ領域１３０１の容量は、収集対象のデバイス値をすべて格納できる容量の２倍に限られず、３倍であってもよいし、４倍以上であってもよい。また、必ずしも、収集対象のデバイス値をすべて格納できる容量の正の整数倍である必要はなく、全データ領域１３０１の容量は任意の容量に設定してよい。全データ領域１３０１は、本発明の基準データ記憶手段の一例である。
【００３２】
差分データ領域１３０２には、収集対象のデバイス値のうち、値が変化したデバイス値のログである差分ログが格納される。図３Ｃに示すように、差分データ領域１３０２には、デバイス名とデバイス値とそのときのスキャン数とが格納される。デバイス値は変化後のデバイス値である。差分データ領域１３０２は、本発明の差分ログ記憶手段の一例である。
【００３３】
図１に示す一括ログ収集部１４０は、ログ収集に加え、ログ収集のための事前準備を行う。例えば、一括ログ収集部１４０は、制御プログラムを開始する前に事前準備に係る処理を行う。
【００３４】
事前準備に係る処理は以下の通りである。一括ログ収集部１４０は、ユーザが設定した設定値をメモリ１１の決められた領域から読み出し、読み出した設定値を設定情報記憶部１２０に格納する。ユーザは、設定ツール５００を使用して設定値をＰＬＣ１００のメモリ１１の決められた領域に予め格納しているものとする。設定値は、全データ領域１３０１のサイズと、差分データ領域１３０２のサイズと、ログを分割して取得する回数である分割数Ｎとを含む。分割数Ｎとして２以上の自然数が設定されているものとする。
【００３５】
一括ログ収集部１４０は、全データ領域１３０１と差分データ領域１３０２とをユーザが設定したサイズでログ記憶部１３０に確保する。一括ログ収集部１４０は、ユーザが指定する分割数Ｎとメモリ１１に予め格納されているデバイス値に関する設定データとから、後述の分割ログ収集部１５０が１回に収集するデバイス値の数を算出し、算出した値を設定情報記憶部１２０に格納する。
【００３６】
一括ログ収集部１４０は、設定されたタイミングで、デバイスメモリ１１０に格納されている収集対象として設定されたデバイス値を収集する。以下、一括ログ収集部１４０は、制御プログラムの実行開始前に、デバイスメモリ１１０に格納されている収集対象として設定されたデバイス値を収集する例を説明する。
【００３７】
具体的には、一括ログ収集部１４０は、ＰＬＣ１００に電源が投入された後に実行されるイニシャル処理の一部として、デバイスメモリ１１０に格納されている収集対象のすべてのデバイス値のデータを一括で全データ領域１３０１に格納する。図３Ｂに示すように、一括ログ収集部１４０は、デバイス名とデバイス値とスキャン数とを全データ領域１３０１に格納する。ここで、ＰＬＣ１００は制御プログラムの実行を開始していないため、一括ログ収集部１４０は、スキャン数に“０”を設定する。
【００３８】
一括ログ収集部１４０が、制御プログラムの実行開始前に、全データ領域１３０１に格納したデータは、差分ログの収集のための基準データとなる。後述の差分ログ収集部１６０は、差分ログの収集の際にデバイス値が変化したか否かを判別するために基準データを使用する。
【００３９】
前述のように、実施の形態では、全データ領域１３０１の容量は、収集対象のデバイス値をすべて格納できる容量の２倍となるように設定されている。一括ログ収集部１４０がイニシャル処理で、デバイスメモリ１１０の収集対象のデバイスを全データ領域１３０１に格納すると、図５Ａに示すように、全データ領域１３０１の半分の領域が使用される。図５Ａで、斜線で表されている領域は未使用領域であり、この領域を収集対象デバイス格納領域１３０１Ａと称するものとする。一括ログ収集部１４０の機能は、図２に示すＣＰＵ１３により実現される。一括ログ収集部１４０は、本発明の一括ログ収集手段の一例である。
【００４０】
実施の形態においては、制御プログラムの実行開始前に、一括ログ収集部１４０が基準データを収集するが、これは次のような理由による。一括ログ収集部１４０は、基準データとして収集対象として設定されたデバイス値を一括で収集するため、収集に係る処理にある程度の時間を要することが想定される。基準データを収集するのに要する時間が長くなれば、スキャンタイムが増加する。このため、実施の形態においては、スキャンタイムの増加を抑制するため、一括ログ収集部１４０は制御プログラムの実行開始前に基準データを収集する。ただし、一括ログ収集部１４０が基準データを収集するタイミングは、制御プログラムの実行開始前に限られない。一括ログ収集部１４０は、制御プログラムの実行開始後であっても、ロギングが開始される前に基準データを収集していればよい。
【００４１】
図１に示す分割ログ収集部１５０は、制御プログラムの実行を開始した後、デバイスメモリ１１０に格納されている収集対象のデバイス値のログを複数のスキャンタイムに分けて取得する。具体的には、分割ログ収集部１５０は、各スキャンタイムでＥＮＤ命令が実行されると、デバイスメモリ１１０に格納されている収集対象のデバイス値のうち、１／Ｎのデバイス値のログを全データ領域１３０１に格納する。分割ログ収集部１５０が全データ領域１３０１に格納するログは、デバイス名とデバイス値とそのときのスキャン数とを含む。分割ログ収集部１５０が収集し、全データ領域１３０１に格納するログを分割ログということがある。
【００４２】
分割ログ収集部１５０が１回に収集するデバイス値の数は次のように決められる。前述のように、一括ログ収集部１４０が、事前準備に係る処理として、分割ログ収集部１５０が１回に収集するデバイス値の数を算出する。例えば、図４に示すように、デバイスメモリ１１０に、Ｄ１〜Ｄ２０００のデバイス値が格納されており、Ｄ１〜Ｄ２０００すべてが収集対象であるとする。この場合、デバイス値のデータ数は２０００個である。ここで、分割数Ｎが２０と設定されており、Ｄ１〜Ｄ２０００のデバイス値のデータサイズが同じであるとする。この場合、分割ログ収集部１５０は、各スキャンタイムでデバイスメモリ１１０のデバイス値を１００個ずつ収集すればよい。
【００４３】
よって、分割ログ収集部１５０は、例えば、１回目のスキャンで、図５Ｂに示すように、Ｄ１〜Ｄ１００のデバイス値のログを全データ領域１３０１に格納する。１回目のスキャンでは、全データ領域１３０１の収集対象デバイス格納領域１３０１Ａが空いているため、分割ログ収集部１５０は、デバイス値のログを収集対象デバイス格納領域１３０１Ａに格納する。分割ログ収集部１５０は、２回目のスキャンで、Ｄ１０１〜Ｄ２００のデバイス値のログを全データ領域１３０１の収集対象デバイス格納領域１３０１Ａに格納する。図５Ｃに示すように、分割ログ収集部１５０は、収集対象デバイス格納領域１３０１Ａが空いている場合には、スキャン毎に１００個のデバイス値のログを収集対象デバイス格納領域１３０１Ａに格納する。なお、分割ログ収集部１５０は、デバイス値を全データ領域１３０１に格納したときに、次のスキャンタイムで、収集対象のデバイス値を特定する情報と、次のスキャンタイムで、全データ領域１３０１にデータを書き込む位置を特定する情報とを記憶しておく必要がある。分割ログ収集部１５０の機能は、図２に示すＣＰＵ１３により実現される。分割ログ収集部１５０は、本発明の分割ログ収集手段の一例である。
【００４４】
分割ログ収集部１５０は、収集対象デバイス格納領域１３０１Ａに空き容量がなくなると、分割ログを全データ領域１３０１に格納するため、全データ領域１３０１に格納されている一番古いデータを上書きする。例えば、図５Ｄに示すように、２０回目のスキャンタイムに、分割ログ収集部１５０がデバイス値のログを収集対象デバイス格納領域１３０１Ａに格納すると、収集対象デバイス格納領域１３０１Ａに空き領域がない状態となる。この場合、図５Ｅに示すように、分割ログ収集部１５０は、２１回目のスキャンタイムにおいて、ログを全データ領域１３０１に格納するため制御プログラムの実行開始前に書き込まれたデータを上書きする。
【００４５】
一括ログ収集部１４０が、制御プログラムの実行開始前に全データ領域１３０１に格納したデータは、差分ログの収集のための基準データとなることを前述したが、このデータは、スキャン数が２０回を超えると上書きされる。この場合、分割ログ収集部１５０が１回目から２０回目のスキャンタイムで全データ領域１３０１に格納したデバイス値のログが、新たな基準データとして使用される。
【００４６】
さらに、分割ログ収集部１５０は、図５Ｆに示すように４０回目のスキャンタイムにデータを格納した後、４１回目のスキャンタイムで、１回目のスキャンで全データ領域１３０１に格納したデータを上書きする。よって、１回目以降のスキャンで全データ領域１３０１に格納されたデータが上書きされる。この場合、分割ログ収集部１５０が２１回目から４０回目のスキャンタイムで、全データ領域１３０１に格納したデバイス値のログが、新たな基準データとして使用される。
【００４７】
上述のように、分割ログ収集部１５０は、基準データとなる収集対象のデバイス値のログをＮ回に分けて記録する。分割ログ収集部１５０がこのような構成を備えることにより、次のようなメリットがある。分割ログ収集部１５０が１回のスキャンタイムで記録するログは、収集対象のデバイス値の１／Ｎのデバイス値のログである。よって、１回のスキャンタイムで記憶されるデータ量は、収集対象のすべてのデバイス値のログを１度に記録する場合に比べて少ない。このため、ログの記録に要する処理時間は、収集対象のすべてのデバイス値のログを１度に記録する場合に比べて短い。ログの記録に要する時間が長くないため、ログの記録処理に起因してスキャンタイムが延びることがない。
【００４８】
例えば、ログの記録処理によりスキャンタイムが長くなり、スキャンタイムが許容範囲を超えてしまうと、ＰＬＣ１００の処理が遅れ、ひいてはシステム全体の動作に悪影響が生じる。このような理由により、実施の形態では、分割ログ収集部１５０は、収集対象のデバイス値のログをＮ回に分けて記録する。
【００４９】
図１に示す差分ログ収集部１６０は、制御プログラムのＥＮＤ命令が実行されると、デバイスメモリ１１０の収集対象のデバイス値の値が変化したか否かを判別し、値が変化したデバイス値のログを差分データ領域１３０２に格納する。差分ログ収集部１６０の機能は、図２に示すＣＰＵ１３により実現される。差分ログ収集部１６０は、本発明の差分ログ収集手段の一例である。
【００５０】
まず、差分ログ収集部１６０は、収集対象のデバイス値の差分ログが差分データ領域１３０２に格納されているか否かを判別する。収集対象のデバイス値の差分ログが差分データ領域１３０２に格納されていると判別した場合、差分ログ収集部１６０は、差分データ領域１３０２に最も最近格納されたデバイス値とデバイスメモリ１１０のデバイス値とが一致するか否かを判別する。２つのデバイス値が一致しない場合、差分ログ収集部１６０は、デバイス値が変化したと判別する。
【００５１】
さらに、差分ログ収集部１６０は、収集対象のデバイス値の差分ログが差分データ領域１３０２に格納されていないと判別した場合、全データ領域１３０１に格納されている基準データに含まれるデバイス値と、デバイスメモリ１１０のデバイス値とが一致するか否かを判別する。２つのデバイス値が一致しない場合、差分ログ収集部１６０は、デバイス値が変化したと判別する。
【００５２】
差分ログ収集部１６０は、デバイス値の値が変化したと判別すると、差分ログとして、デバイス名とデバイスメモリ１１０に格納されているデバイス値とそのときのスキャン数とを差分データ領域１３０２に格納する。図３Ｃに示す例では、差分ログ収集部１６０は、３回目のスキャンタイムでＤ１の値が変化したと判別し、Ｄ１の差分ログを差分データ領域１３０２に格納している。差分ログ収集部１６０は、５回目のスキャンタイムでＤ１の値が変化したと判別し、Ｄ１の差分ログを差分データ領域１３０２に格納している。
【００５３】
実施の形態に特徴的な構成として、差分ログ収集部１６０は、基準データが差し替えられたタイミングで、以前の差分ログを上書きする。前述したように、全データ領域１３０１のデータは（Ｍ×Ｎ）＋１回目以降のスキャン（Ｍは１以上の自然数）で上書きされる。このタイミングで、基準データは新たな基準データに差し替えられることになる。新たな基準データが作成される前に収集された差分ログは不要となるからである。
【００５４】
続いて、設定ツール５００の機能構成を説明する。図１に示すように、設定ツール５００は、機能的には、ロギング処理に必要な設定値をＰＬＣ１００に登録する設定登録部５１０を含む。
【００５５】
設定登録部５１０は、例えば、図６に示すようなロギングの設定画面を表示装置５４に表示する。ユーザは、設定ツール５００により、ロギング機能を有効にするか否か、ログを分割収集するときの分割数、全データ領域１３０１のサイズ、差分データ領域１３０２のサイズをＰＬＣ１００に設定する。分割数は、ＰＬＣ１００の分割ログ収集部１５０が、収集対象のデバイス値のログを分けて収集する回数である分割数Ｎのことである。ユーザが、入力装置５３を操作して、ロギング機能の有効／無効と、分割数と、全データ領域１３０１のサイズと、差分データ領域１３０２のサイズとを入力し、「設定」ボタンを押したとする。これに応答して、設定登録部５１０は、ユーザが入力した値をＰＬＣ１００のメモリ１１の決められた領域に書きこむ。
【００５６】
次に、ＰＬＣ１００のロギング処理の一連の流れを説明する。ＰＬＣ１００のＣＰＵ１３は、ファームウェアを実行することにより、図１に示す一括ログ収集部１４０、分割ログ収集部１５０、及び差分ログ収集部１６０として機能する。以下の説明においては、デバイスメモリ１１０のすべてのデバイス値が収集対象として設定されているものとする。
【００５７】
ユーザが、ＰＬＣ１００のスイッチを操作して、ＰＬＣ１００の運転を開始したとする。従って、ＰＬＣ１００はイニシャル処理を開始する。
【００５８】
図７に示すように、一括ログ収集部１４０は、イニシャル処理の一部として、ロギング処理の事前準備を行う（ステップＳ１１）。具体的には、一括ログ収集部１４０はイニシャル処理の一部として、メモリ１１の決められた領域から分割数Ｎを読み出し、分割数Ｎを設定情報記憶部１２０に格納する。さらに、一括ログ収集部１４０は、メモリ１１の決められた領域から全データ領域１３０１のサイズの定義値、差分データ領域１３０２のサイズの定義値を読み出し、設定されたサイズの全データ領域１３０１と設定されたサイズの差分データ領域１３０２とをログ記憶部１３０に確保する。
【００５９】
さらに、一括ログ収集部１４０は、イニシャル処理の一部として、図５Ａに示すように、デバイスメモリ１１０の収集対象の全てのデバイス値のログを基準データとして全データ領域１３０１に格納する（ステップＳ１２）。イニシャル処理が終わると、ＰＬＣ１００は、制御プログラムの実行を開始する。
【００６０】
分割ログ収集部１５０は、ログ収集のタイミングであるか否かを判別する（ステップＳ１３）。分割ログ収集部１５０は、ＥＮＤ命令が実行されるとログ収集のタイミングであると判別し（ステップＳ１３；Ｙｅｓ）、収集対象のデバイス値のうちの１／Ｎのデバイス値のログである分割ログを全データ領域１３０１に格納する（ステップＳ１４）。なお、分割ログ収集部１５０は、分割ログを全データ領域１３０１に格納するため、（Ｍ×Ｎ）＋１回目以降のスキャン（Ｍは１以上の自然数）において全データ領域１３０１に格納されている一番古い分割ログを上書きする。
【００６１】
続いて、差分ログ収集部１６０は、収集対象のデバイス値のうち値が変化したデバイス値があるか否かを判別する（ステップＳ１５）。収集対象のデバイス値のうち値が変化したデバイス値があると判別すると（ステップＳ１５；Ｙｅｓ）、差分ログ収集部１６０は、差分ログを記録する（ステップＳ１６）。なお、差分ログ収集部１６０は、基準データが新たなものに差し替えられた後は、新たな基準データが作成される前に記録された差分ログを上書きする。
【００６２】
制御プログラムの次のスキャンが終わると、分割ログ収集部１５０及び差分ログ収集部１６０は、再びステップＳ１３以降の処理を行う。
【００６３】
以上説明したように、実施の形態に係る構成においては、ＰＬＣ１００は、デバイスメモリ１１０の収集対象のデバイス値のログをＮ回に分けて収集し、収集したデバイス値を全データ領域１３０１に格納する。Ｎ回に分けて収集されるログは、差分データの収集に使用される基準データとなる。ＰＬＣ１００は、全データ領域１３０１に空き容量がなくなると、全データ領域１３０１に格納されている一番古いログから上書きしていく。このように、全データ領域１３０１に格納されるデータの容量は設定されたサイズ以上となることはない。
【００６４】
さらに、ＰＬＣ１００は、基準データに基づいて値が変化したと判別したデバイス値を差分ログとして収集する。ＰＬＣ１００は、新たな基準データが全データ領域１３０１に格納されると、差分データ領域１３０２に格納されている差分ログのうち、新たな基準データが作成される前に収集された差分ログを上書きしていく。このため、差分データ領域１３０２に必要な領域サイズは、収集対象のデバイス値の数、デバイス値のサイズ、分割数Ｎのサイズから、適切なサイズを設定する必要がある。差分データ領域１３０２のデータは、全データ領域１３０１に格納されている基準データが新たなものに差し替えられた後、上書きされていくため、差分データ領域１３０２に格納されるデータの容量が設定されたサイズ以上となることはない。
【００６５】
ＰＬＣ１００が上述のような構成を備えることにより、分割ログを格納するために、設定された容量以上のメモリが使用されることがない。さらに、差分ログの格納に必要なメモリ容量も設定された容量を超えることがない。よって、ログ収集によりメモリの空き容量の不足が生じない。従って、メモリ容量の不足によるエラーの発生を防止することができる。
【００６６】
実施の形態に係る構成においては、基準データと差分ログとから、デバイス値の履歴を再現することが可能になる。基準データが新たなものに差し替えられた後は、基準データが差し替えられる前に収集されたデバイス値の履歴を再現することはできないが、ユーザが、デバイス値の履歴を取得することを所望する期間から全データ領域１３０１の領域サイズと分割数Ｎとを適切に設定することにより、必要なデバイス値の履歴を取得することが可能となる。
【００６７】
ＰＬＣ１００は、デバイスメモリ１１０の収集対象のデバイス値をＮ回に分けて収集する。例えば、収集対象のデバイス値のサイズがすべて同じであるとする。分割してログを記録する場合のデバイス値の数は、一括でログを記録する場合のデバイス値の数の１／Ｎである。よって、ログの記録処理に係る時間を１回のスキャンで収集対象のデバイス値すべてのログを記録する場合に比べて短縮することができる。よって、ロギングを行う場合であっても、スキャンタイムの増加を抑制することができる。さらに、各スキャンタイムにおいて、ロギング処理として、１／Ｎのデバイス値のログと差分ログを記録するだけであるので、ＰＬＣ１００のＣＰＵ１３の処理の負荷が高くなることを抑えることができる。
【００６８】
（変形例）
実施の形態においては、ユーザが分割数Ｎを設定する例を説明したが、設定ツール５００の設定登録部５１０が分割数Ｎを算出してもよい。以下、変形例に特徴的な構成を中心に説明する。例えば、設定登録部５１０は、図８に示すような条件を設定する画面を表示装置５４に表示する。この場合、ユーザは、入力装置５３を操作して、ログを収集するスキャン数と、許容可能なスキャンタイムの増加時間とを設定するだけでよい。
【００６９】
設定ツール５００の設定登録部５１０は以下のように分割数Ｎを算出する。まず、ログ記憶部１３０の容量が最小となる分割数Ｎの理論値は下記の数式１で表される。
【００７０】
【数１】
0006727472.tif 000002
Ｎ：分割数
Ｃ：収集対象のデバイス値の記憶容量
Ｄ：差分ログの記憶容量の予測値
Ｓ：ログを収集するスキャン数
【００７１】
収集対象のデバイス値の記憶容量Ｃは、ユーザが設定した収集対象のデバイス値を記憶するのに必要な記憶容量である。収集対象のデバイス値の記憶容量Ｃは、ユーザが指定する収集対象のデバイス値の個数とそれぞれのデバイス値のデータのサイズとから算出される。差分ログの記憶容量の予測値Ｄは、１スキャンで収集する差分ログを記憶するのに必要な記憶容量の予測値である。１スキャンで収集される差分ログを記憶するのに必要な記憶容量の予測値Ｄは、例えば、過去のログ収集に基づく統計データから算出される値である。ログを収集するスキャン数Ｓはユーザが設定した値である。
【００７２】
ＰＬＣ１００がロギング処理を実行する場合、ロギング処理を実行しない場合に比べてスキャンタイムが増加するのは明らかであるが、スキャンタイムの増加分は、ユーザが許容できる範囲内となるべきである。このため、１スキャンあたりに収集される分割ログと差分ログをログ記憶部１３０に格納するのに要する時間が、ユーザが設定した許容可能なスキャンタイムの増加時間を超えないように、分割数Ｎを決定する必要がある。
【００７３】
ここで、ユーザが設定した許容可能なスキャンタイムの増加時間をＴ［ｓｅｃ］とし、ログ記憶部１３０にデータを格納する速度（データ転送速度）をＡ［ｂｐｓ］とする。この場合、スキャンタイムの許容される増加時間で、ログ記憶部１３０に格納可能なデータのサイズはＴＡ［ｂｉｔ］である。各スキャンで、分割ログと差分ログとが記録されるため、分割数Ｎは、下記の数式２の条件を満たす必要がある。
【００７４】
【数２】
0006727472.tif 000003
【００７５】
Ｎ：分割数
Ｃ：収集対象のデバイス値の記憶容量
Ｄ：差分ログの記憶容量の予測値
Ｔ：許容可能なスキャンタイムの増加時間
Ａ：ログ記憶部１３０にデータを格納する速度
【００７６】
許容可能なスキャンタイムの増加時間Ｔはユーザが設定する値である。ログ記憶部１３０にデータを格納する速度は、ＰＬＣ１００の記憶装置のデータ転送速度である。データ転送速度として、例えば、仕様書に記載されているデータ転送速度の値を採用することができる。
【００７７】
ここで、許容可能なスキャンタイムの増加時間Ｔは下記の数式３を満たしている必要がある。
【００７８】
【数３】
0006727472.tif 000004
【００７９】
設定登録部５１０は、数式１より、ログ記憶部１３０の容量が最小となる分割数Ｎを算出する。具体的には、まず、設定登録部５１０は、収集対象のデバイス値の個数とそれぞれのデバイス値のデータのサイズとから収集対象のデバイス値の記憶容量Ｃを算出する。差分ログの記憶容量の予測値Ｄは、メモリ５１の決められた領域に予め格納されているものとする。ログを収集するスキャン数Ｓは、ユーザが図８に示す画面で入力した値である。続いて、設定登録部５１０は、数式１より分割数Ｎを算出する。
【００８０】
設定登録部５１０は、数式１から算出した分割数Ｎが数式２、数式３の条件を満たすように分割数Ｎを決定する。許容可能なスキャンタイムの増加時間Ｔは、ユーザが図８に示す画面で入力した値である。ログ記憶部１３０にデータを格納する速度Ａは、メモリ１１の決められた領域に予め格納されているものとする。設定登録部５１０は決定した分割数Ｎをメモリ５１の決められた領域に格納する。
【００８１】
なお、設定登録部５１０は、上記の分割数Ｎの算出に先立って、ユーザが図８に示す画面で許容可能なスキャンタイムの増加時間を入力した後、入力された値が数式３の条件を満たすか否かを判別する。設定された許容可能なスキャンタイムの増加時間が数式３の条件を満たさないと判別すると、設定登録部５１０は、ユーザに許容可能なスキャンタイムの増加時間を修正することを示すメッセージを表示装置５４に表示する。この場合、ユーザは、入力装置５３を操作して、許容可能なスキャンタイムの増加時間の値を変更する必要がある。
【００８２】
さらに、設定登録部５１０は、算出した分割数Ｎから全データ領域１３０１の記憶容量を算出する。全データ領域１３０１の記憶容量Ｍは下記式により算出することができる。
【００８３】
【数４】
0006727472.tif 000005
【００８４】
Ｎ：分割数
Ｃ：収集対象のデバイス値の記憶容量
Ｄ：差分ログの記憶容量の予測値
Ｓ：ログを収集するスキャン数
【００８５】
設定登録部５１０は算出した記憶容量Ｍをメモリ５１の決められた領域に格納する。例えば、分割数Ｎと取得予定のスキャン数Ｓとが同じ値である場合、記憶容量Ｍは収集対象のデバイス値の記憶容量Ｃのほぼ２倍となる。
【００８６】
さらに、設定登録部５１０は、差分ログの記憶容量の予測値Ｄと、設定されたスキャン数とから、差分データ領域１３０２の記憶容量を算出し、算出した値をメモリ５１の決められた領域に格納する。その後、設定登録部５１０は、図９に示すような画面において、算出したロギングの設定を示すパラメータを表示する。
【００８７】
ここで、ユーザが、算出された分割数Ｎ、全データ領域１３０１及び差分データ領域１３０２の記憶容量の値に問題がないと判断したとする。この場合、ユーザは、設定ツール５００とＰＬＣ１００とが通信ケーブル７０１で接続されている状態で、ユーザは「設定」ボタンを押して、ロギングの設定をＰＬＣ１００に書き込むことを指示する。設定登録部５１０は、メモリ５１に格納されているロギングの設定を示すパラメータをＰＬＣ１００のメモリ１１の決められた領域に書き込む。一方、ユーザは、図９に示す画面上に表示された分割数Ｎ、全データ領域１３０１及び差分データ領域１３０２の記憶容量の値を変更したい場合、「戻る」ボタンを押す。これに応答して、設定登録部５１０は、再び図８に示す画面を表示する。この場合、ユーザは、図８に示す画面上で、ログを収集するスキャン数と、許容可能なスキャンタイムの増加時間との値を修正することができる。
【００８８】
変形例に係る構成の場合、ユーザは分割数を自ら決定する必要がなく、ログを取得するスキャン数と許容可能なスキャンタイムの増加時間とを設定するだけでよい。
【００８９】
変形例に係る構成においても、実施の形態と同様に、分割ログを格納するために、設定された容量以上のメモリが使用されることがない。さらに、差分ログの格納に必要なメモリ容量も設定された容量を超えることがない。よって、ログ収集によりメモリの空き容量の不足が生じない。従って、メモリ容量の不足によるエラーの発生を防止することができる。
【００９０】
さらに、実施の形態と同様に、ログの記録処理に係る時間を１回のスキャンで収集対象のデバイス値すべてのログを記録する場合に比べて短縮することができる。よって、ロギングを行う場合であっても、スキャンタイムの増加を抑制することができる。さらに、ロギング処理に係るＣＰＵ１３の処理負荷を抑えることができる。また、収集されたデータからデバイス値の時系列のデータを生成することが可能である。
【００９１】
実施の形態においては、ＰＬＣ１００がログ記憶部１３０を備える例を説明したが、これに限られない。ＰＬＣ１００は、ログ記憶部１３０を備えず、他の装置が備える記憶部にログを記録してもよい。例えば、ＰＬＣ１００は、ネットワークを介して、他の装置にログのデータを送信する。
【００９２】
実施の形態においては、ＰＬＣ１００がデバイスメモリ１１０を備える例を説明したが、これに限られない。ＰＬＣ１００は、他の装置が備えるデバイスメモリのログを記録してもよい。例えば、ＰＬＣ１００は、ネットワークを介して他の装置からデバイス値を受信してもよい。あるいは、ＰＬＣ１００は、ネットワークを介した、他の装置の共有メモリに記録されているデバイス値を読み出してもよい。
【００９３】
実施の形態においては、ＰＬＣ１００が、制御プログラムのＥＮＤ命令が実行されるとログを記録する例を説明したが、これに限られない。ＰＬＣ１００は、例えば、制御プログラムの最初の命令を実行する前に行われるＩ／Ｏリフレッシュの前に、ログを記録してもよい。
【００９４】
実施の形態においては、一括ログ収集部１４０と分割ログ収集部１５０とは、ログとして、デバイス名とデバイス値とスキャン数とを記録する例を説明したが、これに限られない。例えば、一括ログ収集部１４０と分割ログ収集部１５０とは、デバイス名とデバイス値とスキャン数に加えて、そのときの時刻情報をログとして記録してもよい。
【００９５】
上記のプログラムを記録する記録媒体としては、磁気ディスク、光ディスク、光磁気ディスク、フラッシュメモリ、半導体メモリ、磁気テープを含むコンピュータ読取可能な記録媒体を使用することができる。
【００９６】
本発明は、広義の精神と範囲を逸脱することなく、様々な実施形態及び変形が可能とされるものである。また、上述した実施形態は、本発明を説明するためのものであり、本発明の範囲を限定するものではない。つまり、本発明の範囲は、実施形態ではなく、請求の範囲によって示される。そして、請求の範囲内及びそれと同等の発明の意義の範囲内で施される様々な変形が、本発明の範囲内とみなされる。
【符号の説明】
【００９７】
Ｎ  分割数、１１，５１  メモリ、１２，５２  接続インタフェース、１３，５５  ＣＰＵ、１９，５９  バス、５３  入力装置、５４  表示装置、１００  プログラマブルロジックコントローラ（ＰＬＣ）、１１０  デバイスメモリ、１２０  設定情報記憶部、１３０  ログ記憶部、１４０  一括ログ収集部、１５０  分割ログ収集部、１６０  差分ログ収集部、５００  設定ツール、５１０  設定登録部、７０１  通信ケーブル、１３０１  全データ領域、１３０１Ａ  収集対象デバイス格納領域、１３０２  差分データ領域
【要約】
差分ログ収集部（１６０）は、制御プログラムが１回実行されるたびに、デバイスメモリ（１１０）から、値が変化したデバイス値のログである差分ログをログ記憶部（１３０）に格納する。一括ログ収集部（１４０）は、設定されたタイミングで、収集対象のデバイス値を、差分ログの収集に使用する基準データとしてログ記憶部（１３０）に一括で格納する。分割ログ収集部（１５０）は、制御プログラムが１回実行されるたびに、新たな基準データを作成するため、収集対象のうち１／Ｎ（Ｎは２以上の自然数）のデバイス値のログである分割ログをログ記憶部（１３０）に格納し、空き領域がなくなると、１／Ｎのデバイス値のログでログ記憶部（１３０）に格納されているデータを上書きする。差分ログ収集部（１６０）は、ログ記憶部（１３０）に新たな基準データが格納された状態となると、差分ログでログ記憶部（１３０）のデータを上書きする。【図１】
0006727472.tif 000006
【図２】
0006727472.tif 000007
【図３Ａ】
0006727472.tif 000008
【図３Ｂ】
0006727472.tif 000009
【図３Ｃ】
0006727472.tif 000010
【図４】
0006727472.tif 000011
【図５Ａ】
0006727472.tif 000012
【図５Ｂ】
0006727472.tif 000013
【図５Ｃ】
0006727472.tif 000014
【図５Ｄ】
0006727472.tif 000015
【図５Ｅ】
0006727472.tif 000016
【図５Ｆ】
0006727472.tif 000017
【図６】
0006727472.tif 000018
【図７】
0006727472.tif 000019
【図８】
0006727472.tif 000020
【図９】
0006727472.tif 000021