(57)【要約】      （修正有）【課題】ＰＬＣのレジスタに書き込まれる部品データを含むレジスタデータについて、幅広い期間の過去のレジスタデータを参照又は復元することを可能とする。【解決手段】レジスタデータ復元システム１は、ライン上の制御装置４１を制御可能なＰＬＣ１０と、ＰＬＣ１０に接続された計算機２０とを有する。計算機２０は、データレジスタ１２に記憶されるレジスタデータが変更されるごとに、変更前と変更後とのレジスタデータ値の差分に基づいた差分情報２３を生成し、蓄積する。また、計算機２０は、レジスタデータの復元操作が行われた場合に、レジスタデータ値を復元する。また、計算機２０は、復元されたレジスタデータ値を表示する。なお、計算機２０は、変更前と変更後とのレジスタデータ値の差分を、ラインにおける作業特性に応じた所定の手順で圧縮し、タイムスタンプを紐付けて差分情報を生成する。【選択図】図１
2015001848.tif 000002
【特許請求の範囲】
【請求項１】
ライン上の制御装置に接続されて当該制御装置を制御可能なＰＬＣ（Programmable Logic Controller）と、前記ＰＬＣに接続された計算機とを有するレジスタデータ復元システムであって、
前記計算機は、
前記ＰＬＣのデータレジスタに記憶されるレジスタデータが変更されるごとに、変更前と変更後とのレジスタデータ値の差分に基づいた差分情報を生成する差分情報生成部と、
前記差分情報生成部によって生成された差分情報を記憶して蓄積する差分情報記憶部と、
レジスタデータの復元を指示する所定の操作が行われた場合に、当該指示で指定される条件に基づいて、前記差分情報記憶部に蓄積された差分情報が示す差分を現在のレジスタデータ値に追加する復元処理を繰り返し、当該条件を満たす時点におけるレジスタデータ値を復元するレジスタデータ復元部と、
レジスタデータの復元に関する操作を受け付けるとともに、前記レジスタデータ復元部によって復元されたレジスタデータ値を表示する復元表示操作部と、
を備え、
前記差分情報生成部は、変更前と変更後とのレジスタデータ値の差分を、前記ラインにおける作業特性に応じた所定の手順で圧縮し、当該圧縮したデータにレジスタデータの変更時のタイムスタンプを紐付けて前記差分情報を生成する
ことを特徴とするレジスタデータ復元システム。
【請求項２】
前記計算機は、
前記レジスタデータ復元部によって復元されたレジスタデータ値を前記ＰＬＣのデータレジスタに書き戻す復元レジスタデータ書込み部をさらに備える
ことを特徴とする請求項１記載のレジスタデータ復元システム。
【請求項３】
前記差分情報生成部は、
変更前のレジスタデータ値と変更後のレジスタデータ値との間で論理的排他和を算出し、前記算出した論理的排他和で示されるデータのうち、真値が存在する範囲だけを差分エリアデータとして抽出し、前記抽出した範囲の始点及び終点を示す情報と変更時刻を示すタイムスタンプとを前記差分エリアデータに結合することによって、前記差分情報を生成する
ことを特徴とする請求項１又は２記載のレジスタデータ復元システム。
【請求項４】
前記差分情報生成部は、前記差分情報を生成する際に、レジスタデータの変更時のタイムスタンプ、及び、変更後のレジスタデータに示される前記ラインのエリア情報を紐付けし、
前記復元表示操作部は、前記差分情報に紐付けられたエリア情報に示されたエリアを選択可能に表示し、前記エリアの何れかが選択された場合には、当該選択されたエリアが紐付いた差分情報が生成されたときのレジスタデータを復元する操作を選択可能にする
ことを特徴とする請求項１から３のうちの何れか１項に記載のレジスタデータ復元システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、レジスタデータ復元システムに関し、ＰＬＣ（Programmable Logic Controller）の記憶装置であるデータレジスタに書き込まれるレジスタデータのレジスタデータ復元システムに適用して好適なものである。
【背景技術】
【０００２】
自動車部品をライン上で組み付けていく自動車工場のように、各種の制御装置を使用して部品等が組み付けられる工場では、各種の制御装置を統括的に制御し情報を保持する管理を行うために、ＰＬＣが用いられることが多い。一般的なＰＬＣは、ＣＰＵ及び記憶装置等の他に着脱可能な拡張ユニットを有し、ＣＰＵが拡張ユニットを介して、ライン上の各種の制御装置の動作を制御可能にしている。
【０００３】
ＰＬＣを制御するユーザプログラムとしては、ラダープログラムが有名である。ラダープログラムは、パーソナルコンピュータ等の計算機で作成又は編集されてＰＬＣに送信され、ＰＬＣの記憶装置（レジスタ）に記憶される。そして、ＰＬＣのＣＰＵが当該ラダープログラムを実行することによって、各種の制御装置の動作を制御することができる。なお、ＰＬＣのレジスタには、ユーザプログラムの他、ライン上で生産又は組み付けられる部品についての種々の情報（部品データ）が記憶される。部品データには、例えば、制御装置における作業状況をフラグで示す情報や、部品に対する作業の指示内容を示す情報等が含まれる。
【０００４】
このようにＰＬＣで各種の制御装置を管理する場合には、エラー発生時に原因を追究したり、過去の状況を再現したりできる環境が必要となる。例えば特許文献１には、ＰＬＣに接続されたパーソナルコンピュータの記憶装置にユーザプログラムの変更差分を格納するプログラム変更履歴管理システムが記載されている。特許文献１に記載されたプログラム変更履歴管理システムによれば、例えばラダープログラムの変更前と変更後との差分を変更情報として管理することにより、過去のラダープログラムを復元可能にしている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００６−３３０８６７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかし、特許文献１に記載されたプログラム変更履歴管理システムは、ユーザプログラムの変更差分を保持して過去のユーザプログラムを復元可能にするものであり、部品データのバックアップや復元を行うものではなかった。そもそも一般的に、ユーザプログラムは数日に１度程度の更新頻度であるのに対し、部品データは、１日に数千回といった高い更新頻度であることが多い。従って、仮に、特許文献１に記載されたプログラム変更履歴管理システムにおいて、ユーザプログラムの保持と同様にして部品データを長期間に亘ってバックアップしようとしても、そのデータサイズが極めて大きくなってしまい、パーソナルコンピュータの記憶装置における容量的に保持が難しいことが予測される。このように従来のＰＬＣ管理システムでは、幅広い期間で過去の部品データを参照したり復元したりできないという課題があった。
【０００７】
本発明は以上の点を考慮してなされたもので、ＰＬＣのレジスタに書き込まれる部品データを含むレジスタデータについて、幅広い期間の過去のレジスタデータを参照又は復元することが可能なレジスタデータ復元システムを提案しようとするものである。
【課題を解決するための手段】
【０００８】
かかる課題を解決するため本発明においては、ライン上の制御装置に接続されて当該制御装置を制御可能なＰＬＣ（Programmable Logic Controller）と、前記ＰＬＣに接続された計算機とを有するレジスタデータ復元システムであって、前記計算機は、前記ＰＬＣのデータレジスタに記憶されるレジスタデータが変更されるごとに、変更前と変更後とのレジスタデータ値の差分に基づいた差分情報を生成する差分情報生成部と、前記差分情報生成部によって生成された差分情報を記憶して蓄積する差分情報記憶部と、レジスタデータの復元を指示する所定の操作が行われた場合に、当該指示で指定される条件に基づいて、前記差分情報記憶部に蓄積された差分情報が示す差分を現在のレジスタデータ値に追加する復元処理を繰り返し、当該条件を満たす時点におけるレジスタデータ値を復元するレジスタデータ復元部と、レジスタデータの復元に関する操作を受け付けるとともに、前記レジスタデータ復元部によって復元されたレジスタデータ値を表示する復元表示操作部と、を備え、前記差分情報生成部は、変更前と変更後とのレジスタデータ値の差分を、前記ラインにおける作業特性に応じた所定の手順で圧縮し、当該圧縮したデータにレジスタデータの変更時のタイムスタンプを紐付けて前記差分情報を生成することを特徴とするレジスタデータ復元システムが提供される。
【発明の効果】
【０００９】
本発明によれば、ＰＬＣのレジスタに書き込まれる部品データを含むレジスタデータについて、幅広い期間の過去のレジスタデータを参照又は復元することができる。
【図面の簡単な説明】
【００１０】
【図１】本発明の一実施の形態によるレジスタデータ復元システムの構成例を示すブロック図である。
【図２】図１に示したレジスタデータ復元システムによるレジスタデータの読取処理の手順を示すフローチャートである。
【図３】図２に示した処理のうち、差分情報の生成処理を説明するための図である。
【図４】図１に示したレジスタデータ復元システムによるレジスタデータの復元処理の手順を示すフローチャートである。
【図５】図１に示したレジスタデータ復元システムによるレジスタデータの書込み処理の手順を示すフローチャートである。
【図６】図１に示したレジスタデータ復元システムにおける操作画面の一例である。
【発明を実施するための形態】
【００１１】
（１）本発明の一実施の形態によるレジスタデータ復元システム
（１−１．データ復旧システムの構成）
図１は、本発明の一実施の形態によるレジスタデータ復元システムの構成例を示すブロック図である。図１に示すように、レジスタデータ復元システム１は、ネットワーク３０を介して接続されるＰＬＣ１０とパーソナルコンピュータ（以後、ＰＣと呼ぶ）２０とを備える。ＰＬＣ１０及びＰＣ２０は、工場等に設置され、ＰＬＣ１０は、ライン上で稼働している制御装置４１（個別には４１ａ〜４１ｃ）に接続されている。以下に、ＰＬＣ１０及びＰＣ２０について、詳細な構成を説明する。
【００１２】
（１−１−１．ＰＬＣの構成）
ＰＬＣ１０は、一般的なＰＬＣ（Programmable Logic Controller）を用いることができ、ＣＰＵ（Central Processing Unit）１１、データレジスタ１２、通信部１３、及び拡張ユニット１４（個別には１４ａ〜１４ｃ）を有する。
【００１３】
ＣＰＵ１１は、ＰＬＣ１０の各部を制御する制御部の一例であって、例えば、データレジスタ１２に格納されたユーザプログラム（例えば、ラダープログラム等）を記憶装置（図示せず）に読み出して実行することにより、制御装置４１の動作を制御する。
【００１４】
データレジスタ１２は、レジスタデータを保持可能な記憶部の一例であり、例えば記憶回路である。データレジスタ１２には、ライン上の制御装置４１から拡張ユニット１４を介して随時送信されるレジスタデータが書き込まれて保持される。なお、これらのデータは、一般には、データレジスタ１２内で上書きされる。また、制御装置４１は、ライン上のセンサ等の入力装置やアクチュエータ等の出力装置を含むとする。
【００１５】
通信部１３は、ＰＬＣ１０とＰＣ２０との間を接続するネットワーク３０を介して、ＰＣ２０の通信部２４との間でデータ又は信号等の送受信を行う。ネットワーク３０は、具体的には例えば、ＵＳＢ（Universal Serial Bus）機器で接続されるネットワークやＬＡＮ（Local Area Network）等によって実現される。
【００１６】
拡張ユニット１４は、ＰＬＣ１０の機能を拡張するために機能ごとに用意されるユニットであって、必要に応じて複数の拡張ユニット１４ａ〜１４ｃがＰＬＣ１０に装着される。拡張ユニット１４ａ〜１４ｃは、それぞれに対応するライン上の制御装置４１ａ〜４１ｃに接続され、各制御装置４１ａ〜４１ｃとＰＬＣ１０とを中継する形で、データ又は信号等の送受信を行う。また、図１に示すＰＬＣ１０において、拡張ユニット１４は、制御装置４１との間で制御信号やデータの通信を行うためにＰＬＣ１０内に装着されているが、必ずしも装着されている必要はなく、例えば、他の制御装置が設けられる構成であってもよく、又は、制御装置４１とＣＰＵ１１及びデータレジスタ１２とが直接通信可能に接続される等の構成であってもよい。
【００１７】
（１−１−２．ＰＣの構成）
ＰＣ２０は、一般的なパーソナルコンピュータに代表される計算機で実現することができ、ＣＰＵ２１、差分情報管理媒体２２、通信部２４、及び表示・操作部２５を有する。
【００１８】
ＣＰＵ２１は、ＰＣ２０の各部を制御する制御部の一例であって、例えば、記憶装置（図示せず）に格納されたプログラムを呼び出して実行することにより、各種の制御処理を実現する。また、ＣＰＵ２１は、ＰＬＣ１０に実行させるプログラムを作成又は編集し、通信部２４を介してＰＬＣ１０に送信することができ、当該プログラムをＰＬＣ１０のＣＰＵ１１が実行することによって、ＰＬＣ１０に制御装置４１等に対する所定の制御を行わせることができる。
【００１９】
差分情報管理媒体２２は、データを記憶可能（格納可能）な記憶装置の１つであり、例えば、ＲＯＭやフラッシュメモリ等の不揮発性メモリを用いることができる。差分情報管理媒体２２は、ＰＬＣ１０のデータレジスタ１２に随時上書きされるレジスタデータに関する差分情報２３（詳細は後述）を記憶する。なお、差分情報管理媒体２２は、ＰＣ２０における特別な記憶装置である必要はなく、一般的なＰＣに搭載されている記憶装置であればよい。通信部２４は、ＰＬＣ１０とＰＣ２０との間を接続するネットワーク３０を介して、ＰＬＣ１０の通信部１３との間でデータ又は信号等の送受信を行う。
【００２０】
表示・操作部２５は、ＰＣ２０において、ユーザからのシステム操作等の入力操作を受け付けたり、システム動作状況や処理結果を示す表示や印刷等の出力を行ったりする。具体的には、ユーザからの入力操作を受け付ける入力装置として、キーボード及びマウス等を用いることができ、表示や印刷等の出力を行う出力装置として、ディスプレイやプリンタ等を用いることができる。詳細は後述するが、例えば、ユーザからレジスタデータの復元を要求するシステム操作が前述の入力装置を用いて行われた場合には、当該入力装置から入力操作に応じた信号がＣＰＵ２１に入力され、ＣＰＵ２１がレジスタデータの復元処理を実行する。そして、レジスタデータの復元処理の完了後に、前述の出力装置から処理結果が出力される。
【００２１】
（１−２．レジスタデータの読取処理）
本実施の形態によるレジスタデータ復元システム１は、後述するレジスタデータの復元処理を実行可能にするために、事前にデータレジスタ１２に書き込まれたレジスタデータの読取処理を行って、レジスタデータの差分情報を差分情報管理媒体２２にバックアップしている。このレジスタデータの読取処理が行われるタイミングは特に限定されないが、例えば、所定のタイミングや時間に基づいて定期的に行われてもよく、又は、データレジスタ１２に記憶されているレジスタデータの値（データレジスタ値、レジスタ値）が変更又は更新されたタイミングで行われる等してもよい。
【００２２】
図２は、図１に示したレジスタデータ復元システムによるレジスタデータの読取処理の手順を示すフローチャートである。また、図３は、図２に示した処理のうち、差分情報の生成処理を説明するための図である。図２，図３を参照しながら、レジスタデータ復元システム１によるレジスタデータの読取処理について説明する。
【００２３】
まずＣＰＵ２１は、ＰＬＣ１０のデータレジスタ１２に記憶されているレジスタデータの値を読み取る（ステップＳ１０１）。ステップＳ１０１の処理を詳しく説明すると、ＣＰＵ２１からの指示は、通信部２４、ネットワーク３０、そして通信部１３を介してＰＬＣ１０のＣＰＵ１１に伝えられ、ＣＰＵ１１が当該指示に従って処理（ここでは、データレジスタ値の読取）を行い、処理結果が通信部１３、ネットワーク３０、そして通信部２４を介してＣＰＵ２１に送信される。なお、以下の各処理において、ＣＰＵ２１が行う処理は上述と同様の経路で実行されるものとし、詳細を省略する。また、ステップＳ１０１の処理は、前述したように、定期的に行われてもよいし、レジスタデータ値が変更又は更新されたタイミングで行われてもよいが、何れの場合にも、ＰＣ２０の記憶装置（図示せず）には、直近に読み取ったレジスタデータ値（以下では、更新前のデータ値と呼ぶ）が保持されているとする。
【００２４】
次いでＣＰＵ２１は、ステップＳ１０１で読み取ったレジスタデータ値（更新後のデータ値と呼ぶ）と、更新前のデータ値とを比較し、値に変化があるか否かを確認する（ステップＳ１０２）。ステップＳ１０２において値の変化がなかった場合には（ステップＳ１０２のＮＯ）、ＣＰＵ２１はレジスタデータの読取処理を終了する。ステップＳ１０２において値の変化があった場合には（ステップＳ１０２のＹＥＳ）、ステップＳ１０３に示す処理を行う。
【００２５】
ここで、図３に示したモデル例を参照しながら、具体的なステップＳ１０２の処理を説明する。図３において、更新前のデータ値は前データ１１０に相当し、更新後のデータ値は新データ１２０に相当する。各データ内のブロックは、所定の大きさごとのブロックを示しているとする。ブロックの大きさは、任意の大きさを基準として設定することができるが、図３では一例として、左から順に１バイト単位でブロック１１０ａ，１１０ｂ，１１０ｃ・・・のように区分けされているとする。そして例えば、ブロック１１０ａの値「ｄ０」は、前データ１１０の第１バイトのブロック値が「ｄ０」であることを示す。このような場合に、図３の前データ１１０は｛ｄ０，ｄ１，ｄ２，ｄ３，ｄ４，・・・・｝というレジスタデータ値を有している。また、図３の新データ１２０は｛ｄ０，ｄ１，Ｄ２，ｄ３，Ｄ４，・・・・｝というレジスタデータ値を有している。ここでステップＳ１０２の処理として、前データ１１０と新データ１２０とで同じ順番のブロック値を比較すると、左から３番目のブロック（第３バイト）及び５番目のブロック（第５バイト）で、それぞれ値が異なっていることが分かる。従って、ＣＰＵ２１は、ステップＳ１０２の処理を行った場合に、値の変化があったと判定する。
【００２６】
ステップＳ１０３において、ＣＰＵ２１は、更新前のデータ値と更新後のデータ値とのＸＯＲ（eXclusive OR：排他的論理和）を算出し、算出結果であるＸＯＲデータを生成する。ステップＳ１０３の処理を図３のモデル例に適用すると、前データ１１０と新データ１２０とのＸＯＲが算出されて、ＸＯＲデータ１３０が生成される。ＸＯＲデータ１３０のデータ値は、第３バイト及び第５バイトだけが異なる値を有するのでＸＯＲをとった値は「１」となり、それ以外のブロックでは値が同じであるのでXORをとった値は「０」となる。すなわち、ＸＯＲデータ１３０のデータ値は、｛０，０，１，０，１，０，・・・｝となる。
【００２７】
次に、ＣＰＵ２１は、ステップＳ１０３で生成したＸＯＲデータから、更新前のデータと更新後のデータとで差分が存在するブロック範囲（差分エリア）のデータだけを差分ＸＯＲデータとして抽出し、さらに、抽出した差分ＸＯＲデータの開始ブロック及び最終ブロックを示す情報を、それぞれ「始点情報」、「終点情報」として取得する（ステップＳ１０４）。そして、ＣＰＵ２１は、差分ＸＯＲデータ、始点情報、及び終点情報を、抽出済ＸＯＲデータとしてまとめて生成する。ステップＳ１０４の処理を図３のモデル例に適用すると、ＸＯＲデータ１３０から差分ＸＯＲデータ１３１が抽出され、その始点は第３バイトであるので、始点情報１４１は「Ｓｔａｒｔ：３番目」となり、終点情報１４２は「Ｅｎｄ：５番目」となる。そして図３の場合は、これらの差分ＸＯＲデータ１３１、始点情報１４１、及び終点情報１４２をまとめて、抽出済ＸＯＲデータ１４０が生成される。
【００２８】
次に、ＣＰＵ２１は、ステップＳ１０４で生成した抽出済ＸＯＲデータに、更新後のデータを取得したときのタイムスタンプを追加し（ステップＳ１０５）、レジスタデータに関する差分情報を生成する。ステップＳ１０５で追加されるタイムスタンプは、例えば、ステップＳ１０５の処理を行うときの時刻を示すタイムスタンプでもよいし、ステップＳ１０１で更新後のデータ値を取得したときの時刻を示すタイムスタンプでもよい。ステップＳ１０５の処理を図３のモデル例に適用すると、抽出済ＸＯＲデータ１４０を構成する差分ＸＯＲデータ１３１、始点情報１４１、及び終点情報１４２にタイムスタンプ１５１が追加されて、差分情報１５０が生成される。
【００２９】
そして、ＣＰＵ２１は、レジスタデータに関する差分情報を差分情報管理媒体２２に記憶させる（ステップＳ１０６）。ステップＳ１０６で記憶される差分情報は、図１に示す差分情報２３に相当する。最後に、ＣＰＵ２１は、ＰＣ２０の記憶装置（図示せず）に記憶されている更新前のデータ値を、ステップＳ１０１で読み取った更新後のデータ値によって上書きして保存し（ステップＳ１０７）、レジスタデータの読取処理を完了する。
【００３０】
以上のステップＳ１０１〜１０７に示した処理によって、ＣＰＵ２１は、データレジスタ１２に記憶されるレジスタデータが頻繁に上書きされる場合であっても、更新前後のデータ値を比較して差分が存在する差分エリアの部分だけを抽出し、さらにタイムスタンプを紐付けて、差分情報管理媒体２２に差分情報２３として保存することができる。このような差分情報２３は、元のレジスタデータと比較すると、大幅にデータサイズが抑制（圧縮）される。
【００３１】
ここで、差分情報２３のデータサイズが抑制（圧縮）されることについて、詳しく説明する。例えば図３のモデル例で考えると、差分情報１５０のサイズは、差分ＸＯＲデータ１３１、始点情報１４１、終点情報１４２、及びタイムスタンプ１５１の合計サイズである。ここで、図３の始点情報１４１、終点情報１４２、及びタイムスタンプ１５１は、それぞれ２バイトの容量で作成されるので合計６バイトであり、この合計サイズは固定値と考えることができる。また、図３の差分ＸＯＲデータ１３１は、ＸＯＲデータ１３０から第３バイト〜第５バイトの３バイト分を抽出したものであるから、そのサイズは３バイトとなり、図３に示す差分情報１５０のサイズは９バイトである。
【００３２】
このような差分情報のサイズは、始点情報、終点情報、及びタイムスタンプの合計サイズである固定長に、差分ＸＯＲデータのサイズ（差分エリアの広さに相当）を加えたものに相当する。従って、差分エリアが狭いほど（始点と終点との間が短いほど）差分情報のデータサイズを小さくすることができ、より多くの差分情報を差分情報管理媒体２２に記憶させることができる。
【００３３】
ところで、差分エリアの広さは、ＰＬＣ２０が接続されるラインの特性によって異なる傾向がみられる。例えば、自動車工場の自動車部品ラインのように、ライン上を連続して物が流れ、かつ、個々の処理工程に比較的時間が掛かるようなラインでは、レジスタデータとして更新されて記憶されるライン側（例えば制御装置４１）の部品データについて、更新時に新たに書き換えられるデータが高々数バイトに限られ、かつ、書き換えられるデータの番地同士が連続又は比較的近い、という特性を有している。従って、本実施の形態によるレジスタデータ復元システム１は、ＰＬＣ１０が上述した自動車部品ラインのような特性を有するラインを制御する場合に、より好適であり、このとき、差分ＸＯＲデータのサイズ（差分エリアの広さ）は、より小さい容量で生成されやすい。その結果、差分情報２３は、元のレジスタデータと比較すると、大幅にデータサイズが抑制（圧縮）され得る。
【００３４】
そして、差分情報管理媒体２２は、データサイズが抑制された差分情報２３を記憶することによって、元のレジスタデータをそのまま記憶する場合よりも多くの過去の更新データを蓄積することができる。レジスタデータ復元システム１では、このように多くの過去の更新データが蓄積されることによって、長期に亘る過去のレジスタデータを復元することができる。
【００３５】
（１−３．レジスタデータの復元処理）
本実施の一形態によるレジスタデータ復元システムにおいて、レジスタデータを復元する処理について説明する。レジスタデータ復元システム１は、図１に示したようにＰＬＣ１０でライン上の制御装置４１（４１ａ〜４１ｃ）を制御しているが、ライン上でのエラーが発生した場合や完成品の不具合が発見された場合等にユーザが原因究明や状況再現を行えるように、レジスタデータを復元することができる。
【００３６】
図４は、図１に示したレジスタデータ復元システムによるレジスタデータの復元処理の手順を示すフローチャートである。図４に示す一連の処理は、例えば、データ復元操作用の所定の操作画面（例えば、後述の図７参照）に対して、レジスタデータの復元を開始する操作が行われたこと（図４に示す「データ復元ボタン押下」に相当）を契機として開始される。データ復元ボタンが押下される場合には、前述の操作画面において、復元に関する条件（復元条件）がユーザによって既に指定されているとする。復元条件の具体例としては、復元する時刻が指定される場合（時刻復元モードの指定）と、復元する回数が指定される場合（回数復元モードの指定）とがある。
【００３７】
まず、データ復元ボタンが押下されると、ＣＰＵ２１は、復元条件として時刻復元モードが指定されているか否かを確認し（ステップＳ２０１）、指定されていない場合には（ステップＳ２０１のＮＯ）、回数復元モードが指定されているか否かを確認する（ステップＳ２０３）。回数復元モードが指定されていない場合には（ステップＳ２０３のＮＯ）、ＣＰＵ２１は、何れの復元条件も指定されていないと判定し、所定のエラーを出力し（ステップＳ２０４）、データの復元処理を終了する。
【００３８】
復元条件として時刻復元モードが指定されている場合には（ステップＳ２０１のＹＥＳ）、指定された復元時刻に基づいて、復元すべき回数（復元回数）を計算する（ステップＳ２０２）。具体的には復元回数は、現在の時刻と復元時刻との間に、差分情報２３が差分情報管理媒体２２に何回記憶されたかに基づいて算出することができる。そしてステップＳ２０５の処理に進む。また、ステップＳ２０３で回数復元モードが指定されていた場合には（ステップＳ２０３のＹＥＳ）、ＣＰＵ２１は指定された復元回数を取得し、ステップＳ２０５の処理に進む。図４では、復元回数を「Ｎ回」とする。
【００３９】
ステップＳ２０５において、ＣＰＵ２１は、差分情報管理媒体２２に記憶されている差分情報２３のうち、今回の復元処理に対応する復元回数分（すなわちＮ個）だけ、最新のものから順に差分情報を読み出す（ステップＳ２０６）。
【００４０】
次に、ＣＰＵ２１は、データレジスタ１２に記憶されている現在のレジスタデータ値を取得し（ステップＳ２０７）保持する。なお、ステップＳ２０６，Ｓ２０７のように図４の各処理でＣＰＵ２１が取得するデータや値は、特に記載がない場合には、ＰＣ２０内の記憶装置（図示せず）に保持されるとし、以後は説明を省略する。
【００４１】
次に、ＣＰＵ２１は、最新の差分情報から順に、差分情報が示す差分を現在保持しているレジスタデータ値に追加する処理を繰り返すことによって、当該差分情報が生成された時点のレジスタデータ値を復元する処理を行う。そして、このような処理をＮ回分繰り返す（Ｎ回の復元）ことによって、ＣＰＵ２１は、レジスタデータ値を、ユーザに指定された復元条件に応じたレジスタデータ値に復元することができる。この一連の処理は、図４のステップＳ２０８〜Ｓ２１４に示されている。
【００４２】
まずステップＳ２０８において、ＣＰＵ２１は、内部で使用する変数Ｋの値を初期化する（Ｋ＝０にする）。次に、ＣＰＵ２１は、ステップＳ２０９からのループ処理を開始する。このループ処理は、Ｋ＜Ｎの関係が成立する間繰り返される。ループ処理ではまず、ステップＳ２０６で読み出したＮ回分の差分情報のうち、（Ｎ−Ｋ）番目の差分情報を取り出す（ステップＳ２１０）。
【００４３】
次に、ＣＰＵ２１は、ステップＳ２１０で取り出した差分情報を展開し、当該差分情報に基づくＸＯＲデータを生成する（ステップＳ２１１）。差分情報の展開は、図３で説明した差分情報１５０の生成を逆順に行えばよく、差分情報１５０を展開すれば、差分ＸＯＲデータ１３１、始点情報１４１、及び終点情報１４２に基づいて、ＸＯＲデータ１３０を生成することができる。
【００４４】
そして、ＣＰＵ２１は、現在保持しているレジスタデータの値とステップＳ２１１で生成したＸＯＲデータとの排他的論理和を算出し、算出したデータを現在保持しているレジスタデータに上書きする（ステップＳ２１２）。ステップＳ２１２における排他的論理和による計算は、現在保持していたレジスタデータに、１つ前のレジスタデータとのＸＯＲを示すデータを追加することになるので、結果として、１つ前のレジスタデータ値が算出される。
【００４５】
その後、ＣＰＵ２１は、変数Ｋの値を１増やし（ステップＳ２１３）、ステップＳ２０９のループの最初に戻って、Ｋの値がＮと等しくなるまでステップＳ２１０〜Ｓ２１３の処理を繰り返す。このループ処理を繰り返すことによって、現在保持しているレジスタデータに差分が追加されて１つ前のレジスタデータが生成される、という処理が、Ｎ回分繰り返される。またこのとき、（Ｎ−Ｋ）番目の差分データが利用されるので、具体的には、Ｎ番目の差分（Ｎ回分の差分のうち最も最近の差分）から始まり、最後は１番目の差分（Ｎ回分の差分のうち最も古い差分）が用いられることになり、ステップＳ２１２で上書きされるレジスタデータの値は、最新のレジスタデータ値から順次古いレジスタデータ値に更新されていく。
【００４６】
そして、ループ処理が終わると、ＣＰＵ２１によるレジスタデータ値の復元処理は完了し（ステップＳ２１４）、ＣＰＵ２１は、当該時点で保持しているレジスタデータ値に、対応するエリア名を紐付けて（ステップＳ２１５）、表示・操作部２５にデータを送信して復元結果表示エリアに出力させる（ステップＳ２１６）。
【００４７】
以上、図４のステップＳ２０１〜２１６に示した処理によって、ＣＰＵ２１によるレジスタデータの復元処理が行われるが、このときに復元されるのは、表示・操作部２５の復元結果表示エリアに表示されるレジスタデータの値であって、実際にＰＬＣ１０のデータレジスタ１２に書き込まれるわけではない。従って、レジスタデータの復元処理を行うための操作は、例えば、エラーや不具合に対する原因究明を行うとき、実際の状況再現を行う前にデータ上のチェックを行う場合等に有用な操作といえる。
【００４８】
（１−４．レジスタデータのＰＬＣ書込み処理）
上述したように、レジスタデータの復元処理は、表示・操作部２５の復元結果表示エリアに復元されたレジスタデータ値が表示されるものであるが、以下では、実際にＰＬＣ１０のデータレジスタ１２に、レジスタデータを復元するＰＬＣ書込み処理について説明する。
【００４９】
図５は、図１に示したレジスタデータ復元システムによるレジスタデータの書込み処理の手順を示すフローチャートである。図５に示す一連の処理は、例えば、データ復元操作用の所定の操作画面（例えば、後述の図７参照）に対して、レジスタデータを復元してＰＬＣ１０に書き込ませる操作が行われたこと（図５に示す「ＰＬＣデータ書込みボタン押下」に相当）を契機として開始される。
【００５０】
図５のステップＳ３０１〜Ｓ３１６の処理は、図４のステップＳ２０１〜Ｓ２１６の処理と同様であるので、説明を省略する。ステップＳ３０１〜Ｓ３１５の処理はＣＰＵ２１によって行われ、ＰＣ２０の記憶装置（図示せず）で保持されているレジスタデータの値が、復元対象のレジスタデータ値となる。そして、ステップＳ３１６においては、表示・操作部２５が、ＣＰＵ２１から受信したデータに基づいて、前述の復元対象のレジスタデータ値をエリア情報と関連付けて復元結果表示エリアに表示する。
【００５１】
最後に、ＣＰＵ２１は、ステップＳ３１４の段階で復元されて保持しているレジスタデータ値を、通信部２４、ネットワーク３０、及び通信部１３を介してＰＬＣ１０のＣＰＵ１１に送信し、ＣＰＵ１１に復元したレジスタデータ値をデータレジスタ１２に書き込ませるよう指示し、レジスタデータ値を上書きさせる（ステップＳ３１７）。
【００５２】
以上、図５のステップＳ３０１〜３１７に示した処理によって、復元を指定したレジスタデータがＰＬＣ１０のデータレジスタ１２に書き込まれるので、ＰＬＣ１０において、当時の環境を実際に再現することができる。
【００５３】
（１−５．レジスタデータ復元システムの操作画面）
上述の図４及び図５を用いた説明では、データ復元を開始する操作は、データ復元操作用の所定の操作画面に対して行われるとし、データの復元結果は、復元結果表示エリアに表示されるとしてきた。本実施の形態によるレジスタデータ復元システム１では、ＰＣ２０の表示・操作部２５において、これらの入出力インタフェースが提供される。以下では、このようなレジスタデータ復元システム１で用いられる操作画面について説明する。
【００５４】
図６は、図１に示したレジスタデータ復元システムにおける操作画面の一例である。図６に示すＧＵＩ２００は、図４，図５における「データ復元操作用の所定の操作画面」及び「復元結果表示エリア」を１つの画面に表示したものであり、ＰＣ２０の表示・操作部２５の１つとしてのディスプレイ上に表示されたＧＵＩ（Graphic User Interface）である。
【００５５】
図６に示すように、ＧＵＩ２００内には、ＰＬＣ名選択欄２０１、レジスタ名選択欄２０２、復元操作選択欄２０３（時刻指定復元選択欄２０４及び回数指定復元選択欄２０５を含む）、データ復元実行ボタン２０６、ＰＬＣデータ書込み実行ボタン２０７、エリア情報ツリー表示欄２０８、及び、復元結果表示エリア２０９が表示されている。ＰＬＣ名選択欄２０１、レジスタ名選択欄２０２、及び、復元操作選択欄２０３（時刻指定復元選択欄２０４，回数指定復元選択欄２０５）は、ユーザが復元する対象データを選択するための欄であって、ＰＣ２０に蓄積された差分情報に基づいて表示が実現される。これらの選択によって、レジスタデータの復元又はＰＬＣ書込みを実行する際の「指定された条件」が決定される。
【００５６】
また、エリア情報ツリー表示欄２０８には、ＰＣ２０に蓄積された差分情報に紐付けられたエリア情報に基づいて、エリアごとにまとめたツリー表示がされている。図６では、エリア情報ツリー表示欄２０８内のツリー表示は一般的な階層構造で表示されているが、これに限定されるものではない。また、ツリー表示から何れかのエリアを選択した場合に、当該エリアに対応するレジスタデータ群が復元結果表示エリア２０９に表示されるようにしてもよい。
【００５７】
そして、上記の「指定された条件」が選択された状態でデータ復元実行ボタン２０６が選択されると、図４に示したようなデータ復元処理が実行される。実行結果であるレジスタデータ値は復元結果表示エリア２０９に表示される（列「値」の内容に相当）。このとき、ＰＬＣ、レジスタ、及びエリアをそれぞれ識別するような表示（復元結果表示エリア２０９の「ＰＬＣ」「レジスタ」「エリア」の各列内表記に相当）も行われる。
【００５８】
また、同様に、ＰＬＣデータ書込みボタン２０７が選択されると、図５に示したような復元されたレジスタデータのＰＬＣ１０への書込みが実行される。なお、本実施の形態によるレジスタデータ復元システム１では、データ復元実行ボタン２０６が選択されてデータ復元処理が実行された後にＰＬＣデータ書込みボタン２０７が選択された場合には、図５に示すＳ３１６までの処理を省略して、ステップＳ３１７の処理だけを実行してＰＬＣ１０への復元データの書込みが実行されてもよい。
【００５９】
以上、図６に例示したレジスタデータ復元システム１の操作画面例について説明したが、このような操作画面を実現するための手法は特に限定されず、一般的なＧＵＩの作成方法によればよい。また、レジスタデータ復元システム１の操作画面も、図６に示したようなＧＵＩに限定されるものではない。さらに例えば、ＰＣ２０からネットワークや無線を介して接続される別の計算機や端末において、同様の操作画面や出力画面を表示させるようにしてもよい。
【００６０】
（１−６．本実施の形態による効果）
以上のように、本実施の形態によるレジスタデータ復元システム１によれば、データレジスタ１２に上書きされるレジスタデータの効率的な差分情報を抽出してＰＣ２０に保持するとともに、ユーザの要求等に応じて過去のレジスタデータを復元することができる。復元の具体的な方法としては、レジスタデータ値を表示・操作部２５に表示させたり、ＰＬＣ１０のデータレジスタ１２に書き戻したりできる。従って、復元可能なデータは部品データに限定されるものではなく、例えばデータレジスタ１２に記憶されるユーザプログラムを復元することもできる。
【００６１】
また、本実施の形態によるレジスタデータ復元システム１によれば、レジスタデータの更新前後の差分を比較し、元のレジスタデータよりも容量の小さい差分情報を生成して保存することによって、データ保存のために必要な容量を抑制しつつ、ユーザの指定に基づいたＰＬＣのデータ（部品データ又はユーザプログラムに相当）を復元することができる。そして、差分情報の生成方法は、特に自動車工場の自動車部品ラインのように、ライン上を連続してものが流れ、かつ、個々の処理工程に比較的時間が掛かるようなラインにおける作業特性に応じた手順で行われていることを特徴とする。その結果、自動車部品ライン等のラインにＰＬＣ１０が接続されたレジスタデータ復元システム１において、より小さい容量の差分情報を作成することができる。かくして、差分情報を蓄積する上で必要となる総容量が小さくなるので、より長い過去に亘るデータを保持することができ、このような長い過去に亘るデータに基づいて、データの復元を実現し得るという格別の効果を奏する。
【００６２】
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
【００６３】
また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、ＳＳＤ（Solid State Drive）等の記録装置、または、ＩＣカード、ＳＤカード、ＤＶＤ等の記録媒体に置くことができる。
【００６４】
また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。実施には殆ど全ての構成が相互に接続されていると考えてもよい。
【符号の説明】
【００６５】
１    レジスタデータ復元システム
１０  ＰＬＣ
１１  ＣＰＵ
１２  データレジスタ
１３  通信部
１４（１４ａ〜１４ｃ）  拡張ユニット
２０  ＰＣ
２１  ＣＰＵ
２２  差分情報管理媒体
２３  差分情報
２４  通信部
２５  表示・操作部
３０  ネットワーク
４１（４１ａ〜４１ｃ）  制御装置
【図１】
2015001848.tif 000003
【図２】
2015001848.tif 000004
【図３】
2015001848.tif 000005
【図４】
2015001848.tif 000006
【図５】
2015001848.tif 000007
【図６】
2015001848.tif 000008