(57)【特許請求の範囲】
【請求項１】
プログラマブルコントローラの実行用メモリに格納されたユーザデータの変更に際して該ユーザデータを不揮発性のバックアップ用メモリに書き込むことで上記ユーザデータのバックアップを行うメモリバックアップ方法において、
上記バックアップ用メモリの記憶領域は、保存用の領域と書き込み用の領域とを有し、
上記実行用メモリに格納されたユーザデータが変更された場合は、上記実行用メモリに格納されたユーザデータを上記書き込み用の領域に書き込むとともに、当該書き込みをタイムスライスすることによりバックグランドで実行するバックアップ処理を行い、
上記書き込み用の領域に対するユーザデータのバックアップ処理が完了すると、該書き込み用の領域を保存用の領域に切替えるとともに、切替え前に保存用の領域として使用していた領域を、書き込み可能状態にして、書き込み用の領域に切替える
ことを特徴とするメモリバックアップ方法。
【請求項２】
プログラマブルコントローラの実行用メモリに格納されたユーザデータの変更に際して該ユーザデータを不揮発性のバックアップ用メモリに書き込むことで上記ユーザデータのバックアップを行うメモリバックアップ方法において、
上記バックアップ用メモリの記憶領域を複数の領域に分け、実行用メモリに格納されているユーザデータが書き込まれている保存用の領域と、書き込み用の領域とを持たせ、
上記実行用メモリに格納されたユーザデータが変更された場合は、上記実行用メモリの変更したユーザデータをバックアップ用メモリの書き込み用の領域に書き込むとともに、当該書き込みをタイムスライスすることによりバックグランドで実行するバックアップ処理を行い、このバックアップ処理が完了すると、書き込み用だった領域を保存用の領域に切替えるとともに、保存用だった領域を書き込み用の領域に切替えて、次のユーザデータ変更時に変更するユーザデータを書き込み可能状態にした
ことを特徴とするメモリバックアップ方法。
【請求項３】
上記実行用メモリのユーザデータが変更された場合は、変更前のユーザデータと変更後のユーザデータとの差分データを算出して、差分メモリに格納し、
上記書き込み用の領域へのユーザデータの書き込みに失敗した場合は、上記差分データおよび上記保存用の領域に格納されている変更前のユーザデータに基づき上記変更後のユーザデータを作成する
ことを特徴とする請求項１または２記載のメモリバックアップ方法。
【請求項４】
プログラマブルコントローラの実行用メモリに格納されたユーザデータをバックアップするメモリバックアップ装置において、
記憶領域が保存用の領域と書き込み用の領域とを有する不揮発性のバックアップ用メモリと、
上記実行用メモリに格納されたユーザデータが変更された場合は、上記実行用メモリに格納されたユーザデータを上記書き込み用の領域に書き込むとともに、当該書き込みをタイムスライスすることによりバックグランドで実行するバックアップ処理を行い、上記書き込み用の領域に対するユーザデータのバックアップが完了すると、該書き込み用の領域を保存用の領域に切替えるとともに、切替え前に保存用の領域として使用していた領域を、書き込み可能状態にして、書き込み用の領域に切替える制御手段と
を具備することを特徴とするメモリバックアップ装置。
【請求項５】
上記実行用メモリのユーザデータが変更された場合に、該変更前のユーザデータと変更後のユーザデータとの差分データを算出する差分算出手段と、
上記差分算出手段で算出された差分データを格納する差分メモリと、上記書き込み用の領域へのユーザデータの書き込みに失敗した場合は、上記差分データおよび上記保存用の領域に格納されている変更前のユーザデータに基づき上記変更後のユーザデータを作成するユーザデータ作成手段と、
を更に具備することを特徴とする請求項４記載のメモリバックアップ装置。
【請求項６】
上記実行用メモリは、高速に読み書き可能な高速メモリからなり、上記差分メモリは、バッテリによるデータ保持が可能な中速メモリからなり、上記バックアップ用メモリは、フラッシュメモリからなることを特徴とする請求項５に記載のメモリバックアップ装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、メモリバックアップ方法および装置に関し、特に、プログラマブルコントローラの実行用メモリに格納されたユーザデータの変更に際して、該ユーザデータをフラッシュメモリ等の不揮発性のバックアップ用メモリに自動的に書き込むことで上記ユーザデータのバックアップ処理を行ってプログラマブルコントローラのバッテリレス運転を可能にしたメモリバックアップ方法および装置に関する。
【０００２】
【従来の技術】
従来、プログラマブルコントローラのユーザプログラムや設定データ（以下、単にユーザデータという）は、プログラマブルコントローラに設けられたＲＡＭ(Random Access Memory)から構成される実行用メモリに記憶される。
【０００３】
そして、プログラマブルコントローラは、この実行用メモリに記憶されたユーザデータに基づき所望の制御を行う。
【０００４】
ここで、このプログラマブルコントローラの上記実行用メモリに記憶されたユーザデータは、プログラマブルコントローラの電源がＯＦＦにされても、その内容が消去されないようにバックアップする必要がある。
【０００５】
そこで、上記実行用メモリをバッテリにより保持する構成が考えられるが、この場合、バッテリにより保持可能なメモリには、高速に読み書き可能なものが存在しないため、この実行用メモリとして高速に読み書き可能なメモリを使用することができず、これがプログラマブルコントローラの性能向上を阻害する一因となっていた。
【０００６】
バッテリによりバックアップできない高速なメモリを実行用メモリとして使用する場合には、電源ＯＦＦ時の対策として、実行用メモリに格納されたユーザデータをバッテリバックアップ可能なメモリにバックアップすることが考えられる。しかし、この方法では、ユーザデータの増大に伴うバッテリの大型化問題やバッテリ寿命によるバッテリ交換問題等が発生する。
【０００７】
そこで、上記プログラマブルコントローラの実行用メモリをバックアップするためにフラッシュメモリ等の書き込みおよび消去可能な不揮発性メモリを使用することが考えられる。
【０００８】
【発明が解決しようとする課題】
ところが、フラッシュメモリ等は、ＲＡＭに比べると書き込み処理に時間がかかるため、データ書き込み中に電断が生じると、書き込み中のデータが不定になる危険性がＲＡＭに比べて高いという問題があった。
【０００９】
また、フラッシュメモリ等は、データを一旦消去し、その後に新たなデータを書き込むという手順を踏まなければならないため、データをフラッシュメモリ等に書き終えるまでに多くの時間を要した。
【００１０】
そこで、この発明は、フラッシュメモリ等へのデータの書き込み中に電断が生じてもバックアップされたデータを保持することができるメモリバックアップ方法および装置を提供することを目的とする。
【００１１】
【課題を解決するための手段】
この発明のメモリバックアップ方法は、プログラマブルコントローラの実行用メモリに格納されたユーザデータの変更に際して該ユーザデータを不揮発性のバックアップ用メモリに書き込むことで上記ユーザデータのバックアップを行うメモリバックアップ方法において、上記バックアップ用メモリの記憶領域は、保存用の領域と書き込み用の領域とを有し、上記実行用メモリに格納されたユーザデータが変更された場合は、上記実行用メモリに格納されたユーザデータを上記書き込み用の領域に書き込むとともに、当該書き込みをタイムスライスすることによりバックグランドで実行するバックアップ処理を行い、上記書き込み用の領域に対するユーザデータのバックアップ処理が完了すると、該書き込み用の領域を保存用の領域に切替えるとともに、切替え前に保存用の領域として使用していた領域を、書き込み可能状態にして、書き込み用の領域に切替えることを特徴とする。
【００１２】
また、この発明のメモリバックアップ方法は、プログラマブルコントローラの実行用メモリに格納されたユーザデータの変更に際して該ユーザデータを不揮発性のバックアップ用メモリに書き込むことで上記ユーザデータのバックアップを行うメモリバックアップ方法において、上記バックアップ用メモリの記憶領域を複数の領域に分け、実行用メモリに格納されているユーザデータが書き込まれている保存用の領域と、書き込み用の領域とを持たせ、上記実行用メモリに格納されたユーザデータが変更された場合は、上記実行用メモリの変更したユーザデータをバックアップ用メモリの書き込み用の領域に書き込むとともに、当該書き込みをタイムスライスすることによりバックグランドで実行するバックアップ処理を行い、このバックアップ処理が完了すると、書き込み用だった領域を保存用の領域に切替えるとともに、保存用だった領域を書き込み用の領域に切替えて、次のユーザデータ変更時に変更するユーザデータを書き込み可能状態にしたことを特徴とする。
【００１３】
ここで、ユーザデータとは、プログラマブルコントローラのユーザプログラムや設定データを含む。
【００１４】
上記構成によると、実行用メモリのユーザデータが変更された場合は、バックアップ用メモリの記憶領域を複数に分けて保存用と書き込み用とで交互に使用するので、バックアップ用メモリへのユーザデータの書き込み中に電源が断になっても、ユーザデータの作成（復旧）が可能になる。
【００１５】
また、この発明のメモリバックアップ方法は、上記メモリバックアップ方法において、上記実行用メモリのユーザデータが変更された場合は、変更前のユーザデータと変更後のユーザデータとの差分データを算出して、差分メモリに格納し、上記書き込み用の領域へのユーザデータの書き込みに失敗した場合は、上記差分データおよび上記保存用の領域に格納されている変更前のユーザデータに基づき上記変更後のユーザデータを作成することを特徴とする。
【００１６】
このような構成によると、連続してユーザがユーザデータの変更を行った場合にも確実にユーザデータのバックアップが可能になる。
【００１７】
また、この発明のメモリバックアップ装置は、プログラマブルコントローラの実行用メモリに格納されたユーザデータをバックアップするメモリバックアップ装置において、記憶領域が保存用の領域と書き込み用の領域とを有する不揮発性のバックアップ用メモリと、上記実行用メモリに格納されたユーザデータが変更された場合は、上記実行用メモリに格納されたユーザデータを上記書き込み用の領域に書き込むとともに、当該書き込みをタイムスライスすることによりバックグランドで実行するバックアップ処理を行い、上記書き込み用の領域に対するユーザデータのバックアップが完了すると、該書き込み用の領域を保存用の領域に切替えるとともに、切替え前に保存用の領域として使用していた領域を、書き込み可能状態にして、書き込み用の領域に切替える制御手段とを具備することを特徴とする。
【００１８】
また、この発明のメモリバックアップ装置は、上記メモリバックアップ装置において、上記実行用メモリのユーザデータが変更された場合に、該変更前のユーザデータと変更後のユーザデータとの差分データを算出する差分算出手段と、上記差分算出手段で算出された差分データを格納する差分メモリと、上記書き込み用の領域へのユーザデータの書き込みに失敗した場合は、上記差分データおよび上記保存用の領域に格納されている変更前のユーザデータに基づき上記変更後のユーザデータを作成するユーザデータ作成手段と、を更に具備することを特徴とする。
また、この発明のメモリバックアップ装置は、上記メモリバックアップ装置において、上記実行用メモリは、高速に読み書き可能な高速メモリからなり、上記差分メモリは、バッテリによるデータ保持が可能な中速メモリからなり、上記バックアップ用メモリは、フラッシュメモリからなることを特徴とする。
【００１９】
【発明の実施の形態】
以下、この発明に係わるメモリバックアップ方法および装置の実施の形態を図面を参照して詳細に説明する。
【００２０】
図１（ａ）は、この発明に係わるメモリバックアップ方法および装置が適用されるプログラマブルコントローラ１００の内部のメモリ構成を示す図、図１（ｂ）は、プログラマブルコントローラ１００の回路構成を示す図である。
【００２１】
図１（ａ）において、このプログラマブルコントローラ１００の内部には、ユーザデータを格納するバッテリによるデータ保持ができないが高速に読み書き可能なメモリからなる実行用メモリ１１０、この実行用メモリ１１０に格納されたユーザデータをバックアップするために設けられたフラッシュメモリからなるバックアップ用メモリ１２０、バックアップ用メモリ１２０へのユーザデータの書き込み中に電断等により該書き込み中のユーザデータが不定となった場合のユーザデータ作成（復旧）のための差分データを格納するバッテリによるデータ保持が可能なメモリからなる差分メモリ１３０が設けられている。
【００２２】
上記実行用メモリ１１０、バックアップ用メモリ１２０および差分メモリ１３０は、図１（ｂ）に示すように、プログラマブルコントローラ１００のＭＰＵ、システムＲＯＭ（ＳＲＯＭ）、ＡＳＩＣ等とともにバスで相互に接続され、ＭＰＵにより制御されるようになっている。
【００２３】
ここで、実行用メモリ１１０は、このプログラマブルコントローラ１００による制御を実行するためのユーザプログラム、設定データ等のユーザデータが格納されるものである。このプログラマブルコントローラ１００は、この実行用メモリ１１０に格納されたユーザデータに基づき各種制御を実行する。
【００２４】
また、バックアップ用メモリ１２０は、実行用メモリ１１０にユーザデータが格納された際、若しくは、実行用メモリ１１０に格納されたユーザデータが変更された際に、このユーザデータを書き込むことで、実行用メモリ１１０に格納されたユーザデータのバックアップを行う。
【００２５】
ここで、バックアップ用メモリ１２０は、実行用メモリ１１０に格納されるユーザデータの最大容量の２倍の記憶容量を有し、この記憶容量をエリアＡとエリアＢの２つのエリアに分割して、それぞれバックアップしたユーザデータの保存用、書き込み用として用いる。なお、この発明に使用するバックアップ用メモリは、ユーザデータの最大容量の２倍に限らず、３以上の整数倍として領域をこの整数で分割し、保存用の領域、書き込み用の領域として順次用いるようにすることもできる。また、保存用の領域、書き込み用の領域を複数持つようにすれば、ひとつづつの保存用の領域、書き込み用の領域を用いる場合のように、バックアップ処理完了直後に領域の切替えを行わず、若干の時間を置いて切替えることもできるようになり、ユーザデータの非常に頻繁な変更に対しても余裕を持って対処することができる。
【００２６】
すなわち、上記バックアップ用メモリ１２０のエリアＡおよびエリアＢが空の場合に、実行用メモリ１１０に格納されたユーザデータのバックアップの必要が生じた場合は、まず、実行用メモリ１１０に格納されたユーザデータをバックアップ用メモリ１２０のエリアＡに書き込むことによって、実行用メモリ１１０に格納されたユーザデータのバックアップを行う。
【００２７】
そして、実行用メモリ１１０に格納されたユーザデータのバックアップ用メモリ１２０のエリアＡへの書き込みが完了すると、ユーザデータのバックアップ用メモリ１２０のエリアＡはバックアップしたユーザデータの保存用のエリア（領域）となり、また、空のエリアＢは、次に、実行用メモリ１１０のユーザをバックアップするための書き込み用のエリア（領域）とする。
【００２８】
この状態で、実行用メモリ１１０に格納されたユーザデータに変更が生じると、この変更されたユーザデータは、バックアップ用メモリ１２０のエリアＢに書き込まれてバックアップされるとともに、この変更されたユーザデータのバックアップ用メモリ１２０のエリアＢへの書き込みが完了すると、エリアＡのデータを消去し、今度は、バックアップ用メモリ１２０のエリアＡが書き込みエリアとなり、エリアＢを保存エリアとなる。
【００２９】
このように、バックアップ用メモリ１２０は、エリアＡとエリアＢを保存用と書き込み用とで交互に用いることにより、バックアップ中にも変更前のバックアップデータを常に確保している。また、次のバックアップのためのエリアＡまたはＢのデータを予め消去しておくから、バックアップに要する時間は書き込み時間だけとなり、バックアップ所要時間を短縮している。
【００３０】
また、実行用メモリ１１０のユーザデータをバックアップ用メモリ１２０に書き込むバックアップ処理は、バックアップ処理をタイムスライスすることによりバックグラウンドで実行するように構成される。
【００３１】
フラッシュメモリ等へのデータの書き込み中はシステムのリソースが全てその処理に集中されるため、ユーザが他の処理を行うことができないという問題があったが、上記の構成により、このプログラマブルコントローラ１００は、上記バックアップ処理中においても他の処理を行うことが可能になる。変更されたユーザデータのバックアップ処理は、ユーザの特別の操作を必要とせず、ユーザが意識することなく自動的に行われる。
【００３２】
差分メモリ１３０は、バックアップ用メモリ１２０へのユーザデータの書き込み中に電断等により書き込みに失敗した場合に、変更後のユーザデータを作成（復旧）するための差分データを格納する。この差分メモリ１３０は、バッテリ等により電源バックアップされたＲＡＭ等から構成することができる。
【００３３】
また、差分メモリ１３０に格納される差分データは、実行用メモリ１１０に格納されたユーザデータに変更があった場合の、該変更前のユーザデータと変更後のユーザデータとの差分データである。
【００３４】
さて、実行用メモリ１１０に格納されたユーザデータの変更の態様としては、該ユーザデータの全体の変更と部分的な変更とがある。この実行用メモリ１１０に格納されたユーザデータの全体の変更をプログラマブルコントローラにおいては「ダウンロード」といい、この実行用メモリ１１０に格納されたユーザデータの部分的変更をプログラマブルコントローラにおいては「オンラインエディット」という。なお、「ダウンロード」は、通常、新規のユーザプログラムに切替えたり、大幅な変更を要する場合に行われ、「オンラインエディット」は、プログラマブルコントローラの処理中に、部分的修正を加えるような場合に行われる。
【００３５】
以下、「ダウンロード」時における実行用メモリ１１０に格納されたユーザデータのバックアップ処理および「オンラインエディット」時における実行用メモリ１１０に格納されたユーザデータのバックアップ処理の具体例を詳述する。
【００３６】
図２は、図１に示したプログラマブルコントローラ１００の「ダウンロード」時における実行用メモリ１１０に格納されたユーザデータのバックアップ処理の流れを示す図である。
【００３７】
今、バックアップ用メモリ１２０のエリアＡには、実行用メモリ１１０に格納されたユーザデータＸがバックアックされて保存されており、バックアップ用メモリ１２０のエリアＢは空き（書き込み可能状態）になっているとする。
【００３８】
この状態で、実行用メモリ１１０に格納されたユーザデータＸがユーザデータＹに変更されると、この変更されたユーザデータＹがバックアップ用メモリ１２０の空きのエリアＢに書き込まれて、バックアップ処理が開始される。
【００３９】
このバックアップ処理中には、プログラマブルコントローラ１００の電源のＯＦＦは禁止され、この電源のＯＦＦの禁止は、例えば、プログラマブルコントローラ１００において、バックアップ処理中であることを示すＬＥＤ(Light Emitting Diode)の点灯若しくはこのプログラマブルコントローラ１００に接続され、この実行用メモリ１１０に格納されたユーザデータの変更を行うサポートツールの画面上の表示等によりユーザに警告される。
【００４０】
なお、この状態で、誤ってプログラマブルコントローラ１００の電源がＯＦＦにされても、バックアップ用メモリ１２０のエリアＢのユーザデータＹは不定となるけれどもエリアＡのユーザデータＸは保持されるため、プログラマブルコントローラ１００の電源のＯＮ時にこのエリアＡのユーザデータＸを実行用メモリ１１０に戻すことにより、ユーザデータの変更前の状態に復旧させることができる。
【００４１】
実行用メモリ１１０の変更されたユーザデータＹのバックアップ用メモリ１２０のエリアＢへの書き込みが完了すると、直ちにバックアップ用メモリ１２０のエリアＡに格納されていた変更前のユーザデータＸは削除され、書き込み可能状態にされる。これは、次回の実行用メモリ１１０のユーザデータの変更に際して、すぐにエリアＡに変更されたユーザデータを書き込むことができるようにするためである。
【００４２】
なお、上記処理においては、差分メモリ１３０は使用されないので、空きのままである。
【００４３】
図３は、図２に示したバックアップ処理をフローチャートで示したものである。
【００４４】
なお、この処理は、図１に示したプログラマブルコントローラ１００の図示しない制御部で行われる。
【００４５】
図３において、まず、実行用メモリ１１０のユーザデータが変更されたかを調べる（ステップ３０１）。ここで、実行用メモリ１１０のユーザデータが変更されていないと判断されると（ステップ３０１でＮＯ）、ステップ３０１へ戻る。
【００４６】
ステップ３０１で、実行用メモリ１１０のユーザデータＸがユーザデータＹに変更されたと判断されると（ステップ３０１でＹＥＳ）、この変更された実行用メモリ１１０のユーザデータＹをフラッシュメモリ１２０のエリアＢに書き込む（ステップ３０２）。
【００４７】
次に、バックアップ完了か、すなわち、変更された実行用メモリ１１０のユーザデータＹのフラッシュメモリ１２０のエリアＢへの書き込みが完了したかを調べる（ステップ３０３）。
【００４８】
ここで、バックアップ完了でないと判断されると（ステップ３０３でＮＯ）、ステップ３０３に戻るが、バックアップ完了と判断されると（ステップ３０３でＹＥＳ）、フラッシュメモリ１２０の保存用の領域として使用していたエリアＡのユーザデータＸを消去して（ステップ３０４）、書き込み用の領域に切替え、次のユーザデータ変更時に変更するユーザデータを書き込み可能状態にして、この処理を終了する。
【００４９】
図４は、図１に示したプログラマブルコントローラ１００の「オンラインエディット」時における実行用メモリ１１０に格納されたユーザデータのバックアップ処理の流れを示す図である。
【００５０】
この場合も、バックアップ用メモリ１２０のエリアＡには、実行用メモリ１１０に格納されたユーザデータＸがバックアックされたユーザデータＸとして保存されており、バックアップ用メモリ１２０のエリアＢは空きになっているとする。
【００５１】
この状態で、実行用メモリ１１０に格納されたユーザデータＸがユーザデータＹに変更されると、差分メモリ１３０には、変更後のユーザデータＹと変更前のユーザデータＸとの差分データが格納され、続いて、この変更されたユーザデータＹのバックアップ用メモリ１２０の空きのエリアＢへの書き込みが開始される。
【００５２】
そして、上記変更されたユーザデータＹのバックアップ用メモリ１２０の空きのエリアＢへの書き込み途中、すなわち、バックアップ用メモリ１２０のエリアＢにバックアップ途中のユーザデータＹが格納されている状態で再度実行用メモリ１１０に格納されたユーザデータＹがユーザデータＹ’に変更されると、差分メモリ１３０には、この変更後のユーザデータＹ’と変更前のユーザデータＹとの差分データが追加格納され、、また、バックアップ用メモリ１２０のエリアＢでは、上記バックアップ途中のユーザデータＹは一旦削除された後、再び、変更されたユーザデータＹ’の書き込みが開始される。
【００５３】
ここで、プログラマブルコントローラ１００に電源の断が生じたとすると、バックアップ用メモリ１２０のエリアＢのバックアップ途中のユーザデータＹ’は不定となる。
【００５４】
しかし、差分メモリ１３０には、ユーザデータＹとユーザデータＸとの差分データおよびユーザデータＹ’とユーザデータＹとの差分データが格納されているので、プログラマブルコントローラ１００の電源をＯＮにしたときに、上記バックアップ用メモリ１２０のエリアＡに格納されているユーザデータＸと上記差分メモリ１３０に格納されているユーザデータＹとユーザデータＸとの差分データおよびユーザデータＹ’とユーザデータＹとの差分データに基づきユーザデータＹ’を実行用メモリ１１０に作成（復旧）することができる。
【００５５】
図５は、図４に示すバックアップ処理をフローチャートで示したものである。
【００５６】
なお、この処理は、図１に示したプログラマブルコントローラ１００の図示しない制御部で行われる。
【００５７】
図５において、まず、実行用メモリ１１０のユーザデータが変更されたかを調べる（ステップ５０１）。ここで、実行用メモリ１１０のユーザデータが変更されていないと判断されると（ステップ５０１でＮＯ）、ステップ５０１へ戻る。
【００５８】
ステップ５０１で、実行用メモリ１１０のユーザデータＸがユーザデータＹに変更されたと判断されると（ステップ５０１でＹＥＳ）、変更後のユーザデータＹと変更前のユーザデータＸとの差分データを算出し、この差分データを差分メモリ１３０に格納する（ステップ５０２）。
【００５９】
続いて、この変更されたユーザデータＹのバックアップ用メモリ１２０の空きのエリアＢへの書き込みを開始する（ステップ５０３）。
【００６０】
次に、バックアップ完了か、すなわち、変更された実行用メモリ１１０のユーザデータＹのフラッシュメモリ１２０のエリアＢへの書き込みが完了したかを調べる（ステップ５０４）。
【００６１】
ここで、バックアップ完了でないと判断されると、実行用メモリ１１０のユーザデータが更に変更されたかを調べる（ステップ５０５）。ここで、実行用メモリ１１０のユーザデータが変更されていないと判断されると（ステップ５０５でＮＯ）、ステップ５０４へ戻る。
【００６２】
ステップ５０５で、実行用メモリ１１０のユーザデータＹが更にユーザデータＹ’に変更されたと判断されると（ステップ５０５でＹＥＳ）、この変更後のユーザデータＹ’と変更前のユーザデータＹとの差分データを算出し、この差分データを差分メモリ１３０に追加格納する（ステップ５０６）。
【００６３】
続いて、バックアップ途中のエリアＢのユーザデータＹを一旦削除し、再度変更されたユーザデータＹ’のバックアップを開始し（ステップ５０７）、ステップ５０４へ戻る。
【００６４】
ステップ５０４で、バックアップ完了と判断されると（ステップ５０４でＹＥＳ）、フラッシュメモリ１２０のエリアＡのユーザデータＸを消去して（ステップ５０８）、この処理を終了する。
【００６５】
図６は、フラッシュメモリ１２０のエリアＢにバックアップ途中のユーザデータＹ’が格納されている状態で、プログラマブルコントローラ１００に電源の断が生じた場合の、電源ＯＮ時処理の中で実行されるユーザデータの作成（復旧）の手順を示すフローチャートである。
【００６６】
図６において、まず、バックアップ用メモリ１２０のエリアＡからユーザデータＸを実行用メモリ１１０へ転送する（ステップ６０１）。
【００６７】
そして、差分メモリ１３０に格納されているユーザデータＹとユーザデータＸとの差分データを用いて実行用メモリ１１０のユーザデータＸをユーザデータＹに変更する（ステップ６０２）。
【００６８】
次に、差分メモリ１３０に格納されているユーザデータＹ’とユーザデータＹとの差分データを用いて実行用メモリ１１０のユーザデータＹをユーザデータＹ’に変更する（ステップ６０３）。
【００６９】
その後、実行用メモリ１１０のユーザデータＹ’のバックアップを開始してフラッシュメモリのエリアＢに書き込む（ステップ６０４）。そして、このユーザデータＹ’のバックアップ完了かを調べ（ステップ６０５）、バックアップ完了であると判断されると（ステップ６０５でＹＥＳ）、差分メモリ１３０の差分データを消去し、また、フラッシュメモリのエリアＡのデータを消去し（ステップ６０６）、この処理を終了する。
【００７０】
【発明の効果】
以上説明したようにこの発明によれば、バックアップ用メモリの記憶領域内に保存用の領域と書き込み用の領域とを設け、実行用メモリに格納されたユーザデータが変更された場合は、この実行用メモリに格納されたユーザデータをバックアップ用メモリの書き込み用の領域に書き込むバックアップ処理を行い、この書き込み用の領域に対するユーザデータのバックアップ処理が完了すると、該書き込み用の領域を保存用の領域に切替えるとともに、保存用の領域のユーザデータを削除して、該保存用の領域を書き込み用の領域に切替えるように構成したので、実行用メモリのユーザデータが変更された場合に、バックアップ用メモリへのユーザデータの書き込み中に電源が断になっても、ユーザデータの作成（復旧）が可能になる。
【００７１】
また、実行用メモリのユーザデータが変更された場合に、該変更前のユーザデータと変更後のユーザデータとの差分データを算出して、差分メモリに格納し、バックアップ用メモリの書き込み用の領域にバックアップ中のユーザデータが不定となった場合、この差分データおよびバックアップ用メモリの保存用の領域に格納されている変更前のユーザデータに基づき変更後のユーザデータを復旧するように構成したので、ユーザがユーザデータの一部変更を行った場合にも確実にユーザデータのバックアップが可能になるという効果を奏する。
【図面の簡単な説明】
【図１】（ａ）は、この発明に係わるメモリバックアップ方法および装置が適用されるプログラマブルコントローラの内部のメモリ構成を示すブロック図、（ｂ）は、回路構成を示す説明図である。
【図２】図１に示したプログラマブルコントローラの「ダウンロード」時における実行用メモリに格納されたユーザデータのバックアップ処理の流れを示す図である。
【図３】図２に示したバックアップ処理を示すフローチャートである。
【図４】図１に示したプログラマブルコントローラの「オンラインエディット」時における実行用メモリに格納されたユーザデータのバックアップ処理の流れを示す図である。
【図５】図４に示すバックアップ処理を示すフローチャートである。
【図６】図４に示したフラッシュメモリのエリアＢにバックアップ途中のユーザデータが格納されている状態で、プログラマブルコントローラに電源の断が生じた場合の復旧の手順を示すフローチャートである。
【符号の説明】
１００    プログラマブルコントローラ
１１０    実行用メモリ
１２０    バックアップ用メモリ
１３０    差分メモリ
【図１】
0004143952.tif 000002
【図２】
0004143952.tif 000003
【図３】
0004143952.tif 000004
【図４】
0004143952.tif 000005
【図５】
0004143952.tif 000006
【図６】
0004143952.tif 000007