(57)【要約】【課題】定義ファイルの一部である局所的データによる定義ファイルの更新時に、チェックサム値の算出を効率的に短時間で行えるようにする。【解決手段】局所的データである新データの加算値Ｓnewを受信用バッファ５へのコピー時に求める。既存の定義ファイルをフラッシュメモリ３から編集用バッファ４にコピーし、対応するアドレス領域の旧データの加算値Ｓoldを求める。既存の定義ファイルのチェックサム値を二の補数から元の加算値Ｓに変換する。新・旧データの加算値Ｓnew、Ｓoldを比較して差分値ΔＳを求め、元の加算値Ｓに加減算する。その値（Ｓ±ΔＳ）の二の補数を新たなチェックサム値とする。最終的に、新データで書き換えた編集用バッファ４上の定義ファイルをチェックサム値とともにフラッシュメモリ３に書き込む。【選択図】図２
2019040376.tif 000002
【特許請求の範囲】
【請求項１】
クライアントコンピュータがフラッシュメモリ内に保有するファイルの一部を、サーバから送られた新たなデータによって書き換える局所的データの書換方法であって、
新たなデータをサーバから受信して受信用バッファに格納し、
この受信した新たなデータの加算値を求め、
既存のファイルの中で新たなデータに対応する部分の既存のデータの加算値を求め、
これら２つの加算値の差分値を求め、
既存のファイルに付随した二の補数からなるチェックサム値を元の加算値に変換するとともに、この加算値に上記差分値を加減算し、その値の二の補数を、書換後のファイルに対応する新たなチェックサム値として求め、
編集用バッファにおいて既存のファイルを新たなデータによって局所的に書き換えるとともに、書換後のファイルを新たなチェックサム値とともに編集用バッファからフラッシュメモリに書き込む、
ことを特徴とする局所的データの書換方法。
【請求項２】
上記クライアントコンピュータがプログラマブルロジックコントローラであり、上記ファイルが上記プログラマブルロジックコントローラの定義ファイルである、ことを特徴とする請求項１に記載の局所的データの書換方法。
【請求項３】
新たなデータの加算値が既存のデータの加算値よりも大である場合には、新たなデータの加算値から既存のデータの加算値を減じた差分値を、既存のファイルに対応した加算値に加算し、
既存のデータの加算値が新たなデータの加算値よりも大である場合には、既存のデータの加算値から新たなデータの加算値を減じた差分値を、既存のファイルに対応した加算値から減算する、ことを特徴とする請求項１または２に記載の局所的データの書換方法。
【請求項４】
新たなデータをサーバから受信して受信用バッファに格納するときに、受信したデータの加算処理を行う、ことを特徴とする請求項１〜３のいずれかに記載の局所的データの書換方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、プログラマブルロジックコントローラ（ＰＬＣ）などからなるクライアントコンピュータのファイルの一部をサーバから送られた新たなデータによって書き換える局所的データの書換方法に関し、特に、書き換えたファイルのチェックサム値算出の高速化技術に関する。
【背景技術】
【０００２】
フラッシュメモリ内に格納したプログラムつまり定義ファイルに基づいて種々のシーケンス制御を行うプログラマブルロジックコントローラにおいて、クラウドサーバから例えばインターネット等のネットワークを介してオンラインによる定義ファイルの更新を行う技術が知られている。
【０００３】
この定義ファイルの更新には、定義ファイル全体を送受信して定義ファイル全体を書き換える場合と、定義ファイルの一部を構成する局所的データのみを送受信して定義ファイルの一部を局所的に書き換える場合と、がある。
【０００４】
一方、プログラマブルロジックコントローラが保有する定義ファイルには、そのデータが妥当であるか否かのチェックのために、チェックサム値が付随している。例えば、定義ファイルのヘッダ部分におけるチェックサムフィールドに、全データの総和の下位１ワード（例えば１６ビット、６４ビット等）の値の二の補数がチェックサム値として書き込まれている。
【０００５】
従って、クラウドサーバからオンラインで定義ファイルの更新を行う際には、仮に一部のデータの書換であっても、書換後の定義ファイル全体に対して新たにチェックサム値の算出が行われる。
【０００６】
なお、特許文献１には、ファイルの一部のみをオンラインで書き換える技術が開示されている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０１４−９９００４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
上記のように定義ファイルの更新の際に新たなチェックサム値を求めるためには、仮に書き換えられるデータがごく一部の局所的なものであっても、定義ファイルに含まれる全データを順次加算し、その加算値（例えば下位１ワードの値）の二の補数を求める必要がある。従って、データの変更領域が小さい場合には、チェックサム値の再計算は非常に非効率的なものとなる。
【０００９】
特に、種々の現場に設置されているプログラマブルロジックコントローラの定義ファイルの更新を、モバイルルータ等を用いた無線環境下で行うような場合には、書き換えるべき新たなデータの送受信の処理に、ある程度の時間がかかってしまう。従って、定義ファイルの更新作業の高速化のためには、データ受信後の処理の高速化が不可欠であり、チェックサム値の計算をより高速で行うことが必要となる。
【課題を解決するための手段】
【００１０】
この発明は、クライアントコンピュータがフラッシュメモリ内に保有するファイルの一部を、サーバから送られた新たなデータによって書き換える局所的データの書換方法であって、
新たなデータをサーバから受信して受信用バッファに格納し、
この受信した新たなデータの加算値を求め、
既存のファイルの中で新たなデータに対応する部分の既存のデータの加算値を求め、
これら２つの加算値の差分値を求め、
既存のファイルに付随した二の補数からなるチェックサム値を元の加算値に変換するとともに、この加算値に上記差分値を加減算し、その値の二の補数を、書換後のファイルに対応する新たなチェックサム値として求め、
編集用バッファにおいて既存のファイルを新たなデータによって局所的に書き換えるとともに、書換後のファイルを新たなチェックサム値とともに編集用バッファからフラッシュメモリに書き込む、
ことを特徴としている。
【００１１】
より詳しくは、新たなデータの加算値が既存のデータの加算値よりも大である場合には、新たなデータの加算値から既存のデータの加算値を減じた差分値を、既存のファイルに対応した加算値に加算し、
既存のデータの加算値が新たなデータの加算値よりも大である場合には、既存のデータの加算値から新たなデータの加算値を減じた差分値を、既存のファイルに対応した加算値から減算する。
【００１２】
好ましい一つの例では、新たなデータをサーバから受信して受信用バッファに格納するときに、受信したデータの加算処理を行うことができる。
【００１３】
一実施例においては、上記クライアントコンピュータがプログラマブルロジックコントローラであり、上記ファイルが上記プログラマブルロジックコントローラの定義ファイルである。
【００１４】
すなわち、この発明においては、ファイルを更新するための新たなデータの加算値と、書き換えられる既存のデータの加算値と、を求め、その差分値に基づいて新たなチェックサム値が求められる。従って、加算処理の対象となるデータがファイルに含まれる全データを加算する場合に比べて少なくなり、チェックサム値の計算が高速化する。また、受信したデータを用いてファイルの書換が完了する前に、チェックサム値の計算を開始することが可能であり、この点でもファイル更新処理が高速となる。
【発明の効果】
【００１５】
この発明によれば、ファイルに含まれるデータの一部のみを書き換える場合に、チェックサム値の計算を効率的に行うことができ、ファイルの更新作業を高速化することができる。
【図面の簡単な説明】
【００１６】
【図１】この発明の一実施例が適用されるシステム構成の概略を示した説明図。
【図２】一実施例の書換方法を工程順に示した説明図。
【発明を実施するための形態】
【００１７】
以下、この発明の一実施例を図面に基づいて詳細に説明する。図１は、一実施例の書換方法が適用されるシステム構成の概略を示しており、このシステムには、定義ファイルに従って所定のシーケンス制御を行うプログラマブルロジックコントローラ（ＰＬＣ）１と、複数台のＰＬＣ１を管理するクラウドサーバ２と、が含まれる。ＰＬＣ１は、記憶装置として、定義ファイルを格納した書換可能な不揮発性メモリであるフラッシュメモリ３と、このフラッシュメモリ３へのデータの書き込みを行うためにデータを一時的に保持する編集用バッファ４と、クラウドサーバ２から受信したデータを一時的に保持する受信用バッファ５と、を備えている。編集用バッファ４および受信用バッファ５は、例えば、ＰＬＣ１のメインメモリの一部の領域として構成されている。ＰＬＣ１とクラウドサーバ２とは、例えばインターネット等のネットワーク６を介して接続されている。なお、モバイルルータ等を用いた無線のネットワーク６により定義ファイルの更新時に一時的にＰＬＣ１とクラウドサーバ２とを接続するようにしてもよい。
【００１８】
図２は、一実施例の局所的データの書換方法をその工程順に示した説明図である。基本的に、フラッシュメモリ３内の定義ファイルを局所的データを用いて部分的に更新する際には、フラッシュメモリ３内のデータの信頼性を確保するために、既存のデータつまりフラッシュメモリ３内の現在の定義ファイルを一旦編集用バッファ４にコピーし、その後、受信用バッファ５から新たなデータを編集用バッファ４の該当するアドレス領域にコピーし、編集用バッファ４において、データの更新ならびに正当性チェックを行う。そして、正当性チェックで妥当と判断された後に、編集用バッファ４からフラッシュメモリ３への書き込みを行う。
【００１９】
以下、図２に基づいて、具体的な処理の流れを説明する。なお、図２においては、クラウドサーバ２、フラッシュメモリ３、編集用バッファ４、および受信用バッファ５が、それぞれアドレスマップを模した長方形でもって示されており、例えば１つの定義ファイルを模式的に示している。
【００２０】
まず初めに、図２の（ａ）に示すように、定義ファイルの一部として更新すべき新たな局所的なデータ（新データ）を、ＰＬＣ１がクラウドサーバ２から受信し、受信用バッファ５に格納する。詳しくは、クラウドサーバ２内の新データを受信用バッファ５にコピーする。そして、このように新データを受信用バッファ５にコピーする際に、新データの加算値を求める。すなわち、例えば１６ビットをデータの１ワードとして、新データを構成しているワード列を順次加算した総和の下位１ワードが加算値となる。この新データの加算値を「Ｓnew」とする。
【００２１】
この新データの受信ならびに加算値Ｓnewの演算処理と並行して、定義ファイル更新のコマンドを受けたＰＬＣ１は、フラッシュメモリ３内の既存の定義ファイルを編集用バッファ４にコピーする。なお、既存の定義ファイルには、そのデータの妥当性を確保するためのチェックサム値が付随しており、例えば定義ファイルのヘッダ部分におけるチェックサムフィールドに、定義ファイルを構成する全データ（詳しくはヘッダ部分よりも下のデータ本体部分）の加算値の二の補数からなるチェックサム値が書き込まれている。
【００２２】
次に、図２の（ｂ）に示すように、編集用バッファ４にコピーされた既存の定義ファイルの中で、新データに対応する部分のデータ（旧データ）の加算値を求める。上記と同様に、例えば１６ビットをデータの１ワードとして、旧データを構成しているワード列を順次加算した総和の下位１ワードが加算値となる。例えば、新データには、定義ファイルの中のどの部分（つまりアドレス領域）を書き換えるかの情報が付随しており、定義ファイルの中の対応するアドレス領域の旧データについて、加算値が演算される。この旧データの加算値を「Ｓold」とする。
【００２３】
また、これと並行して、既存の定義ファイルに付随しているチェックサム値を、二の補数の状態から元の加算値に変換する。例えば、既存のチェックサム値の二の補数を求めることで、元の加算値となる。これは、例えば１６ビットを１ワードとして、既存の定義ファイルのデータ本体部分の全てのワード列を加算した総和の下位１ワードに相当する。この既存の定義ファイルに対応した加算値を「Ｓ」とする。
【００２４】
次に、図２の（ｃ）に示すように、受信用バッファ５の新データを編集用バッファ４の該当するアドレス領域にコピーし、旧データを新データでもって書き換える。
【００２５】
そして、このコピー処理と並行して、上記の新・旧の加算値Ｓnew、Ｓoldおよび既存の定義ファイルに対応する加算値Ｓを用いて、書換後の定義ファイルのチェックサム値を算出する。
【００２６】
すなわち、新データの加算値Ｓnewと旧データの加算値Ｓoldの大小を比較し、値の大きな方から値の小さな方を減じて、差分値ΔＳを求める。
【００２７】
新データの加算値Ｓnewの方が大きかった場合は、既存の定義ファイルの加算値Ｓに差分値ΔＳを加算し、その値（Ｓ＋ΔＳ）を二の補数に変換して、新たなチェックサム値とする。
【００２８】
旧データの加算値Ｓoldの方が大きかった場合は、既存の定義ファイルの加算値Ｓから差分値ΔＳを減算し、その値（Ｓ−ΔＳ）を二の補数に変換して、新たなチェックサム値とする。
【００２９】
このようにして求めたチェックサム値は、例えば、編集用バッファ４における定義ファイルのヘッダ部分におけるチェックサムフィールドに書き込まれる。
【００３０】
次に、編集用バッファ４における定義ファイルを構成する各種データの正当性をチェックする。例えば、各データが特定の範囲内の値であるかを検証し、正当性をチェックする。そして、妥当なデータであると判断したら、図２の（ｄ）に示すように、編集用バッファ４のデータ（チェックサム値等の情報が付随した定義ファイル）をフラッシュメモリ３にコピーする。つまり、更新された定義ファイルをそのチェックサム値等とともにフラッシュメモリ３に書き込む。これによって、局所的データを用いた定義ファイルの書換が完了する。
【００３１】
このように、上記実施例によれば、局所的データを用いた定義ファイルの書換時に、定義ファイル全体の加算再計算を行わずにチェックサム値を求めるようにしたので、チェックサム値の算出に要する時間を短縮できる。ひいては、局所的データを用いたＰＬＣ１の定義ファイルのオンラインによる更新処理を、高速化することができる。例えば、１ワードの加算処理に同じ時間を要するものとすれば、定義ファイル全体を加算再計算する場合に比較して、チェックサム値の算出に要する処理時間がほぼ「（局所的データのサイズ）×２／（定義ファイル全体のデータのサイズ）」倍だけ短縮される。つまり、定義ファイル全体のデータサイズに比較して更新すべき局所的データのサイズが小さいほど、処理の高速化のメリットが大きく得られる。
【００３２】
また、上記の手法によれば、チェックサム値の計算は、編集用バッファ４への新データの書き込み完了を待つことなく開始できる。つまり、編集用バッファ４への新データのコピー処理と並行してチェックサム値の計算を行うことができ、この点でもチェックサム値の算出が高速となる。
【００３３】
しかも、上記実施例では、クラウドサーバ２の新データを受信用バッファ５にコピーする間に、このコピー処理と並行して新データの加算値Ｓnewを求めている。従って、この点でも、チェックサム値の算出が高速となる。
【００３４】
以上、この発明の一実施例を説明したが、この発明は上記実施例に限定されるものではなく、種々の変更が可能である。例えば、この発明は、ＰＬＣ以外のクライアントコンピュータのファイルの更新作業に広く適用することができる。
【００３５】
また、新データの加算値Ｓnewの計算、旧データの加算値Ｓoldの計算、既存の定義ファイルのチェックサム値から加算値Ｓへの変換、は、上記実施例のような処理順序に限らず、任意の順序で行うことができ、また適宜に並行して処理することも可能である。
【符号の説明】
【００３６】
１…プログラマブルロジックコントローラ
２…クラウドサーバ
３…フラッシュメモリ
４…編集用バッファ
５…受信用バッファ
６…ネットワーク
【図１】
2019040376.tif 000003
【図２】
2019040376.tif 000004