(57)【要約】【課題】演算結果を格納するためのデータメモリとして、電源断にてクリアされる通常メモリと、クリアされない保持メモリ（リテインメモリ）と、アプリケーションプログラムを保存するフラッシュメモリを備えるプログラマブルコントローラにおいて、アプリケーションプログラムに含ませた、リテインメモリ保持データ変更処理を複数回実行する場合、フラッシュメモリを制限域に近い形で使用していても、処理時間が短くすむようにする、プログラマブルコントローラのリテインメモリ保存方法。【解決手段】アプリケーションプログラムに含ませた、リテインメモリ保持データ変更処理を複数回実行する場合、一定時間を待ったあと、フラッシュメモリへの書き込み処理を行う。【選択図】  図１
2012043238.tif 000002
【特許請求の範囲】
【請求項１】
演算結果を格納するためのデータメモリとして、電源断にてクリアされる通常メモリと、クリアされない保持メモリ（リテインメモリ）と、アプリケーションプログラムを保存するフラッシュメモリを使用するプログラマブルコントローラのリテインメモリの保存において、
アプリケーションプログラムの内容は、ＩＤ部とサイズ部、データ部からなる一定の単位のブロック毎にフラッシュメモリ上に保存した後、ＲＡＭにブロック毎にコピーし、
リテインメモリの保存データも前記ＲＡＭに書き込み、
その後、前記フラッシュメモリのブロックのＩＤ部を０クリアすることにより、当該ブロックを無効化し、
前記フラッシュメモリで、無効化されたブロックの部分は前詰めし、
前記ＲＡＭ上の内容を、ＦＦ化したフラッシュメモリに再び書き込むリテインメモリ保存方法であって、
前記アプリケーションプログラムと共に行う、前記リテインメモリの保存データの前記ＲＡＭへの書き込みが、ある一定時間に一回以上複数回行われた場合に、
前記方法で前記ＲＡＭ上の内容を、ＦＦ化した前記フラッシュメモリに再び書き込むことを特徴とするプログラマブルコントローラのリテインメモリ保存方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演算結果を格納するためのデータメモリとして、電源断にてクリアされる通常メモリと、クリアされない保持メモリ（リテインメモリ）と、アプリケーションプログラムを保存するフラッシュメモリを備えるプログラマブルコントローラにおいて、アプリケーションプログラムに含ませたリテインメモリ保持データの、変更処理を、複数回実行する場合、フラッシュメモリを制限域に近い形で使用していても、処理時間が短くすむようにしたプログラマブルコントローラのリテインメモリ保存方法に関するものである。
【背景技術】
【０００２】
プログラマブルコントローラは、ＩＯモジュールや通信モジュールから入力データを受け取り、ユーザーにより作成されたアプリケーションプログラムの演算を行い、その演算結果により、ＩＯモジュールや通信モジュールへ出力データを返す。このとき途中の演算結果を格納するためデータメモリが使用される。そのデータメモリには、電源断にてクリアされる通常メモリと、クリアされないで保持するメモリ（リテインメモリ）がある。
【０００３】
このとき通常メモリは揮発性のＲＡＭが使用され、リテインメモリはバッテリバックアップされたＲＡＭが使用される。一方アプリケーションプログラムの保存には、不揮発性であるフラッシュメモリが使われる。そしてリテインメモリの保持データは、アプリケーションプログラムとリンクしていないことが多い。それは、アプリケーションプログラムをアップロードし、ＣＰＵモジュールを交換し、ダウンロードを行っても、リテインメモリの保持データは反映されないことを意味する。
【０００４】
そこで、アプリケーションプログラムにリテインメモリの保持データを含め、ＣＰＵモジュールを交換する場合、リテインメモリの保持データも移行させたいという要求が出てきた。
【０００５】
ところで、フラッシュメモリの特性は一般的に、バックアップ電源が不要な不揮発性であるがゆえ、書き込みには制限がある。そしてフラッシュメモリの未使用エリアはＦＦであり、データを書き込むのはＦＦから００のみ許される。００からＦＦにするには、セクタ単位にすべてのデータをＦＦにしなければならない。この時、通常の書き込みより処理に時間がかかる。
【０００６】
上記フラッシュメモリの特性を効率的に利用しようとすると、アプリケーションプログラムの内容をブロック毎に管理する様にし、そのブロックには識別用にＩＤ部とサイズ部を設ける。ＩＤ部には、そのブロックを識別するための番号を入れる。アプリケーションプログラムの内容を変更するとき、ＩＤ部を０クリアし、変更後アプリケーションプログラムの内容をフラッシュメモリの未使用エリアに書き込むこととする。このときＩＤ部が０のブロックは無効エリアと定義する。
【０００７】
そして、この変更の処理を繰り返すと、フラッシュメモリの未使用エリアが減って行く。そして使用エリアがフラッシュメモリの制限域に近づくと、変更の処理にて追加するためのフラッシュメモリの未使用エリアが確保できない場合が生ずる。
【０００８】
その時は、一旦フラッシュメモリの全エリアをＲＡＭに読み出し、ＩＤ部が０の無効エリアは削除し、そのブロックは前詰めする。すべての無効エリアを前詰めしたら、フラッシュメモリをすべてＦＦ化した後、再度フラッシュメモリに書き込む。この処理を行うことによりフラッシュメモリの未使用エリアを再確保する。この動作をフラッシュメモリの再配置処理と定義する。
【０００９】
そしてアプリケーションプログラムの内容に、リテインメモリの保持データを含ませた場合、その保持データを変更する場合、アプリケーションプログラムの内容を変更する場合と同様に、ＩＤ部を０クリアし、変更後アプリケーションプログラムの内容をフラッシュメモリの未使用エリアに書き込むこととなる。
【００１０】
ここでリテインメモリの保持データが、複数尚且つ、分散され使用されているとき、保持データを変更する場合は、複数回変更の処理を行う、すなわち、ＩＤ部を０クリアし、変更後アプリケーションプログラムの内容をフラッシュメモリの未使用エリアに書き込む処理が行われる。
【００１１】
そしてフラッシュメモリを制限域に近い形で使用していると、変更処理毎に再配置処理を行う為、変更の処理が想定以上に処理時間がかかるようになる。
【先行技術文献】
【特許文献】
【００１２】
【特許文献１】特開２０００−２７６３６７号公報
【発明の概要】
【発明が解決しようとする課題】
【００１３】
本発明は、フラッシュメモリに保存される、アプリケーションプログラムに含ませた、リテインメモリの保持データの、変更処理を、複数回実行する場合、フラッシュメモリを制限域に近い形で使用していても、処理時間が短くすむようにしたものである。
【課題を解決するための手段】
【００１４】
請求項１の発明によれば、演算結果を格納するためのデータメモリとして、電源断にてクリアされる通常メモリと、クリアされない保持メモリ（リテインメモリ）と、アプリケーションプログラムを保存するフラッシュメモリを使用するプログラマブルコントローラのリテインメモリの保存において、
アプリケーションプログラムの内容は、ＩＤ部とサイズ部、データ部からなる一定の単位のブロック毎にフラッシュメモリ上に保存した後、ＲＡＭにブロック毎にコピーし、
リテインメモリの保存データも前記ＲＡＭに書き込み、
その後、前記ＲＡＭのブロックのＩＤ部を０クリアすることにより、当該ブロックを無効化し、
前記ＲＡＭで、無効化されたブロックの部分は前詰めし、
前記ＲＡＭ上の内容を、ＦＦ化したフラッシュメモリに再び書き込むリテインメモリ保存方法であって、
前記アプリケーションプログラムと共に行う、前記リテインメモリの保存データの前記ＲＡＭへの書き込みが、ある一定時間に一回以上複数回行われた場合に、
前記方法で前記ＲＡＭ上の内容を、ＦＦ化した前記フラッシュメモリに再び書き込むことを特徴とするプログラマブルコントローラのリテインメモリ保存方法。
【００１５】
アプリケーションプログラムの内容は、一定の単位のブロックに分割され、フラッシュメモリ上に保存される。ブロックはＩＤ部とサイズ部、データ部からなる。アプリケーションプログラムに含まれるリテインメモリの保持データの、変更処理を行う場合、フラッシュメモリの内容のコピーされたＲＡＭの該当ブロックに、リテインメモリの保持データを書き込む。通常、その時点でフラッシュメモリに対しての書き込みを行う。リテインメモリの保持データが、複数尚且つ、分散され使用されているとき、ＲＡＭの該当ブロックに、リテインメモリの保持データを書き込む処理後、一定時間を待つ。その間、変更処理が複数回実行され、ＲＡＭへのリテインメモリの保持データの書き込み処理がすべて終る。その後、フラッシュメモリに対しての更新を行う。それは、対象のリテインメモリ保持データの存在する既存のブロックのＩＤ部を０クリアし、対象ブロックを無効化する。ここで未使用エリアは残り少ないので、一旦フラッシュメモリの全エリアをＲＡＭに読み出し、ＩＤ部が０の無効エリアは削除し、そのブロックは前詰めする。すべての無効エリアを前詰めしたら、フラッシュメモリをすべてＦＦ化した後、再度フラッシュメモリに書き込む。この処理を行うことによりフラッシュメモリの未使用エリアを再確保する。つまり、フラッシュメモリの再配置処理を行う。そしてフラッシュメモリの未使用エリアにリテインメモリ保持データを反映した後書き込む。
【００１６】
演算結果を格納するためのデータメモリとして、電源断にてクリアされる通常メモリと、クリアされない保持メモリ（リテインメモリ）と、アプリケーションプログラムを保存するフラッシュメモリを備えるプログラマブルコントローラにおいて、アプリケーションプログラムに含ませたリテインメモリ保持データの、変更処理を、複数回実行する場合、フラッシュメモリを制限域に近い形で使用していても、処理時間が短くすむようにした、プログラマブルコントローラのリテインメモリ保存方法である。
【発明の効果】
【００１７】
本発明によれば、フラッシュメモリに保存される、アプリケーションプログラムに含ませた、リテインメモリの保持データ変更処理を、複数回実行する場合、フラッシュメモリを制限域に近い形で使用していても、処理時間が短くて済むこととなる。
【図面の簡単な説明】
【００１８】
【図１】プログラマブルコントローラフラッシュメモリ保存図
【図２】リテインメモリの保持データ変更処理図
【図３】再配置処理図
【発明を実施するための形態】
【００１９】
以下に図面を参照して、本発明の好適な実施の形態を詳細に説明する。
【実施例１】
【００２０】
フラッシュメモリ１は使用エリア２と未使用エリア３からなり、使用エリア２にはアプリケーションプログラムの内容が格納され、その１つのブロック４にはＩＤ部５、サイズ部６、データ部７からなる。
【００２１】
アプリケーションプログラムに含まれるリテインメモリの保持データ変更処理を行う場合、フラッシュメモリ１０をコピーしたＲＡＭ１３の該当ブロック１４にリテインメモリの保持データ１５、１６、１７を複数回書き込む。通常この書き込み処理はアプリケーションプログラムにて行うため、何回行うかはわからない。そのため、ある一定の時間経過にて複数回のリテインメモリの保持データ書き込み処理は終了したと判断する。該当ブロック１４の内容はフラッシュメモリ１０の未使用エリア１２に書き込むことになるが、フラッシュメモリ１０は制限域に近い形で使用しているため、該当ブロック１４の内容は未使用エリア１２に書き込めない。
【００２２】
そこで、フラッシュメモリ２０の該当ブロック２１はこれから書き換えるためＩＤ部を０とし無効にする。ＩＤ部が０の無効エリアは削除し、そのブロックは前詰めする。すべての無効エリアを前詰めしたら、フラッシュメモリをすべてＦＦ化した後、再度フラッシュメモリに書き込む。この処理を行うことによりフラッシュメモリの未使用エリアを再確保する。前記再配置処理後、フラッシュメモリ２２の状態となるため、ブロック２１の変更後の内容ブロック２４が書き込める。これらの処理は時間を要し、従来の方法では、リテインメモリの保持データ１５、１６、１７を書き込む毎に再配置処理行っていたため、リテインメモリの保持データの書き込み処理が多ければ多いほど処理時間がかかっていたが、フラッシュメモリに反映するまで、ある一定の時間経過を待つことにより、再配置処理が１回ですむ。
【産業上の利用可能性】
【００２３】
以上説明したように本発明によれば、演算結果を格納するためのデータメモリとして、電源断にてクリアされる通常メモリと、クリアされない保持メモリ（リテインメモリ）と、アプリケーションプログラムを保存するフラッシュメモリを備えるプログラマブルコントローラにおいて、アプリケーションプログラムに含ませた、リテインメモリ保持データ変更処理を複数回実行する場合、フラッシュメモリを制限域に近い形で使用していても、処理時間が短くすむ。
【符号の説明】
【００２４】
１    フラッシュメモリ
２    使用エリア
３    未使用エリア
４    ブロック
５    ＩＤ部
６    サイズ部
７    データ部
１０  フラッシュメモリ
１１  ブロック
１２  未使用エリア
１３  ＲＡＭ
１４  ブロック
１５  リテインメモリの保持データ
１６  リテインメモリの保持データ
１７  リテインメモリの保持データ
２０  フラッシュメモリ
２１  ブロック
２２  フラッシュメモリ
２３  フラッシュメモリ
２４  ブロック
【図１】
2012043238.tif 000003
【図２】
2012043238.tif 000004
【図３】
2012043238.tif 000005