(57)【要約】      （修正有）【課題】入力データを動的に圧縮することで、書き込み量を減らし、かつ全体の書き込み時間を短縮する。【解決手段】  外部デバイス類２０等の入力ソースからデータを読み出し、入力データ配列記憶部１１ａに格納する入力処理部１１と、入力処理部が格納した入力データ配列記憶部を読み出して圧縮処理を行なう圧縮処理部１２と、その圧縮処理部で圧縮処理をした圧縮データを記憶装置たるストレージデバイス２１に保存する保存処理部１３と、入力処理部１１並びに圧縮処理部１２の動作・機能を設定する設定処理部１４とを備える。入力処理部は、ビットデータと数値データに分けて収集・記憶し圧縮処理部にて圧縮処理を行なう。圧縮処理は、入力情報をビットデータ、数値データに分別し、それぞれのデータの時系列での特徴より、入力値予測を行い、実入力値との差分値を求め、出現頻度の高い差分値を短い符号で表しデータ量を削減する。【選択図】図３
2006259937.tif 000002
【特許請求の範囲】
【請求項１】
時系列に変化するデータを周期的に取得する入力データ取得手段と、
前記入力データ取得部で取得した直近の所定回数の入力データから次の入力データを予測する予測手段と、
その予測手段が予測した予測値と、入力データ取得手段が取得した入力データとを比較する比較手段と、
その比較手段で求めた比較値に対して圧縮処理を行なう圧縮処理手段と、
その圧縮処理手段で圧縮した圧縮データを記憶手段に向けて出力する手段とを備えたデータ収集装置。
【請求項２】
前記圧縮処理手段が行なう圧縮処理の対象が、同一周期で取得された複数の入力データについての比較値であることを特徴とする請求項１に記載のデータ収集装置。
【請求項３】
前記圧縮処理手段が行なう圧縮処理の対象が、連続する複数周期の単独のデータの比較値であることを特徴とする請求項１に記載のデータ収集装置。
【請求項４】
前記入力データが複数種類存在し、
前記圧縮処理手段は、その入力データの種類に応じて、異なる圧縮処理を行なうようにしたことを特徴とする請求項１または２に記載のデータ収集装置。
【請求項５】
前記比較値は、入力値と予測値の差分値であり、
前記圧縮処理は、前記差分値の頻度が高い程少ないビット数で表現するようにしたことを特徴とする請求項１から４のいずれか１項に記載のデータ収集装置。
【請求項６】
前記入力データは、ＦＡシステムにおける入力データであることを特徴とする請求項１から５のいずれか１項に記載のデータ収集装置。
【請求項７】
前記入力データは、ＯＮ／ＯＦＦデータであり、
前記予測手段は、直近に得られたＯＮ／ＯＦＦの状態から次に入力された入力データを予測するものであり、
前記圧縮手段は、予測値が当たった場合を０または１とし、予測値がはずれた場合を１または０で表現し、同一数字の連続する数を用いて表現することで圧縮する機能を備えたことを特徴とするとを特徴とする請求項６の記載のデータ収集装置。
【請求項８】
前記入力データは、アナログデータであり、少なくとも直近のＮ回分のデータを記憶する記憶手段を有し、
前記予測手段は、その記憶手段に格納された前記直近のＮ回分のデータを予め設定された予測演算式に代入して、次に入力される予測値を求め、
前記圧縮処理手段は、前記入力値と前記予測値が一致した場合を「０」で表現し、その入力値と予測値との差が小さい程少ないビット数で表現するようにしたことを特徴とする請求項６に記載のデータ収集装置。
【請求項９】
請求項１から８のいずれか１項に記載のデータ収集装置により圧縮されたデータを復元するデータ復元装置であって、
前記圧縮したデータと、
少なくとも比較値が存在しない入力値と、
前記予測手段が予測した予測値またはその予測手段の予測ルールと、を取得する手段と、
その取得する手段により取得した圧縮したデータと、比較値が存在しない入力値と、予測値／予測ルールに基づき、入力値を求めるデータ展開手段とを備えたことを特徴とするデータ復元装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、データ収集装置およびデータ復元装置に関するもので、取得したデータを圧縮して格納したり、その圧縮したデータを復元したりする技術に関する。
【背景技術】
【０００２】
生産工場（製造現場）に設置されるＦＡ（ファクトリーオートメーション）システムの制御を司るＰＬＣ（プログラマブルロジックコントローラ）は、制御プログラムに基づいて演算実行するＣＰＵユニット、センサやスイッチなどの入力機器を接続してそれらのオン・オフ信号を入力信号として取り込む入力ユニット、アクチュエータやリレーなどの出力機器を接続してそれらに対して出力信号を送り出す出力ユニット、上位端末装置などと接続してそれと情報をやりとりする通信ユニット、各ユニットに電源を供給する電源ユニット、など複数のユニットを組み合わせることにより構成されている。そしてＰＬＣは、入力ユニットで入力した信号をＣＰＵユニットのＩ／Ｏメモリに取り込み（ＩＮリフレッシュ処理）、予め登録されたラダー言語で組まれた制御プログラムに基づき論理演算をし（プログラム演算実行処理）、その演算実行結果をＩ／Ｏメモリに書き込んで出力ユニットに送り出し（ＯＵＴリフレッシュ処理）、その後、ネットワーク接続された上位端末装置や表示器等と通信する（周辺サービス処理）、といった各処理をサイクリックに繰り返す。
【０００３】
ＣＰＵユニットの処理の一例を簡単に説明すると、まず初期処理をした後、Ｉ／Ｏユニットや高機能ユニットとの間で入／出力データ（Ｉ／Ｏデータ）を交換するＩ／Ｏリフレッシュ処理，ユーザプログラムに沿って入力データを論理演算するプログラム実行処理，主に通信ユニットによりネットワークを通じて外部とデータ交換をしたり、外部からのメッセージ要求処理などを行なう周辺処理、といった各処理をサイクリックに実行する。なお、一般に各処理が行われる１サイクルに所要する時間は、サイクルタイムと言われる。
【０００４】
ＣＰＵユニットはＩＯメモリを持っており、そのＩＯメモリにＩＯユニットや高機能ユニットからの入力データを格納するとともに、ユーザプログラムを実行した結果を出力データとして格納するようになっている。ＣＰＵユニットは、出力データをＩＯユニットや高機能ユニットに送り、それらユニットは受け取った出力データに基づいて出力機器を動作させる。
【０００５】
上記のＩＯメモリには、その時々の入力装置や出力装置についての制御値・現在値（ＯＮ／ＯＦＦ，数値）等が格納されているので、当該ＩＯメモリに格納されているセンサ、アクチュエータ類の現在値等を入力情報として所定のタイミングで周期的にフラッシュメモリやハードディスクなどのストレージデバイスに蓄積することにより、ＰＬＣの履歴（ＩＯデータがどのように変化したかの履歴）を記録できるようにしたものもある。この履歴を確認することにより、ＰＬＣの動作状態の履歴や被制御機器への制御履歴を知ることができ、ＦＡ現場での動作履歴などを後工程で解析することができる。
【０００６】
このようにデータを収集するための構成としては、例えば、特許文献１に開示されたようなＰＬＣのＰＬＣバスに接続したデータ収集ユニットを用いたり、ＰＬＣの通信ユニットを介してＰＬＣに接続され、外部からＣＰＵユニットに対してアクセス通信し、ＩＯメモリに格納されたデータを収集するデータ収集装置を用いるなど、各種の形態がある。
【０００７】
この時、一般的に後の解析工程での利用を想定し、表計算ソフトなどで使用できるようにカンマ区切りのテキストファイル形式で保存する。これにより、例えば、図1に示すように、各入力データは表の列を構成し、収集時間単位で表の行が構成される。
【特許文献１】特開２００４−１９９６７０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
ところで、作業工程の多様化や制御対象の複雑化により、収集・蓄積すべき入力点数は増大するばかりでなく、より高度な解析を行なうために収集周期は短サイクル化している。このため、収集・蓄積すべきデータ量は増大することになるが、ＦＡ現場などで使用できるストレージデバイスのサイズには制限があり、適切な解析を行なうために必要な入力情報を蓄積できない状況が発生している。
【０００９】
また、これらのストレージデバイスは、パーソナルコンピュータなどで使用されるハードディスクと比較して書き込み速度が低速である。そのため、現在のストレージデバイスの性能では、上述した高度な解析を行なうために要求される収集周期では書き込みができない場合がある。係る場合、間引いた状態でストレージデバイスデバイスにデータを蓄積することになり、解析の精度が低下する。
【００１０】
この発明は、入力データを収集単位や時系列で収集したデータを動的に圧縮することで、書き込み量を減らし、かつ全体の書き込み時間を短縮することができ、期待するデータ量をストレージデバイスの書き込み能力を超えて蓄積可能とすることができ、また、蓄積した圧縮データの利用者は、展開時に完全に入力データを再現できる可逆圧縮を行なうことができ、データ収集装置およびデータ復元装置を提供することを目的とする。
【課題を解決するための手段】
【００１１】
本発明に係るデータ収集装置は、時系列に変化するデータを周期的に取得する入力データ取得手段と、前記入力データ取得部で取得した直近の所定回数の入力データから次の入力データを予測する予測手段と、その予測手段が予測した予測値と、入力データ取得手段が取得した入力データとを比較する比較手段（実施の形態では、「差分値算出手段」に対応）と、その比較手段で求めた比較値に対して圧縮処理を行なう圧縮処理手段と、その圧縮処理手段で圧縮した圧縮データを記憶手段に向けて出力する手段とを備えて構成した。比較値は、実施の形態では、単純に差分値を求めるようにしたが、一致の程度その他各種の演算により求めることができる。差分値のようにすると、演算処理が簡単で済むので好ましい。ここで、「直近」とは、実施形態で示すように、１つ前のデータ（時系列的に前回のデータ）を含む直前の所定数（１回を含む）が含まれるのはもちろんのこと、たとえば、時系列的な前回データを含ませずに、それ以前のデータであっても直近に含まれる。但し、予測値を求めることができないほど、次回に取得するデータと関連性（つながり）が低い過去のデータは含まない。換言すると、例えば前々回や、それ以前のデータに基づいて次に取得するデータを予測することができる範囲のデータは、直近のデータに含まれる。
【００１２】
データの圧縮は、一般にデータの冗長性を見つけ、冗長部分を端的に表現することで全体のデータ量を削減する手法がとられる。しかし、例えばＦＡ現場で時系列に入力されるビットデータや数値データは、その入力ソースによってデータの偏りは様々であり、規則的な冗長性は定義できない。そのため、一般的に行なわれている圧縮技術をそのまま適用することは困難である。
【００１３】
一方、これらのデータは、現時点に近い数点の既入力データからある程度次回入力値が予測可能である。実施の形態で詳細に説明するように、予測値が入力値と一致したり、近似したりする場合には、入力値と予測値の差分値は図６に示すように値０を中心として一定の範囲に集中する。そこで、本発明では、このデータの出現範囲の偏りを冗長性として捉え、圧縮を実施することに至った。もちろん、本発明が至った経緯は、ＦＡ現場での予測値と実際の入力値が一致・近似する確率が高いことに着目して、そのデータの出現範囲の偏りを冗長性として圧縮をするようにしたが、本発明の適用分野はこのようにＦＡ現場に限ることはなく、同様の予測値と実際の入力値と比較結果から偏りがみられ、それを冗長性ととらえて圧縮処理を適用して行なえるものであればよい。
【００１４】
より具体的には、例えば、前記圧縮処理手段が行なう圧縮処理の対象が、同一周期で取得された複数の入力データについての比較値としたり、前記圧縮処理手段が行なう圧縮処理の対象が、連続する複数周期の単独のデータの比較値としたりすることができる。
【００１５】
また、前記入力データが複数種類存在し、前記圧縮処理手段は、その入力データの種類に応じて、異なる圧縮処理を行なうようにしてもよい。複数種類は、実施の形態では、ビットデータと数値データのように、適する予測アルゴリズムが異なるものである。これにより、各入力データの種類毎に予測値の精度が上がるため、圧縮効率も高くなる。一例としては、入力データをビットデータ、数値データに分別し、それぞれのデータの時系列での特徴より、入力値予測を行なうことがある。
【００１６】
また、前記比較値は、入力値と予測値の差分値であり、前記圧縮処理は、前記差分値の頻度が高い程少ないビット数で表現するようにすることができる。差分値を保存する際に、出現頻度の高い差分値を短い符号で表すことで全体のデータ量を削減する。
【００１７】
本発明のデータ収集装置は、各種の分野に適用することは可能であるが、例えば前記入力データは、ＦＡシステムにおける入力データとすることができる。具体的には、前記入力データは、ＯＮ／ＯＦＦデータであり、前記予測手段は、直近に得られたＯＮ／ＯＦＦの状態（複数の場合には、パターン）から次に入力された入力データを予測するものであり、前記圧縮手段は、予測値が当たった場合を０または１とし、予測値がはずれた場合を１または０（予測が当たった場合と反対の値）で表現し、同一数字の連続する数を用いて表現することで圧縮する機能を備えることができる。また、前記入力データは、アナログデータであり、少なくとも直近のＮ回分のデータを記憶する記憶手段を有し、前記予測手段は、その記憶手段に格納された前記直近のＮ回分のデータを予め設定された予測演算式に代入して、次に入力される予測値を求め、前記圧縮処理手段は、前記入力値と前記予測値が一致した場合を「０」で表現し、その入力値と予測値との差が小さい程少ないビット数で表現するようにしてもよい。
【００１８】
ＦＡシステムの場合、ＩＯ情報のＯＮ／ＯＦＦの値の場合、同じ値を連続してとることが多く、また、アナログデータの値には、同じ値を採ったり、変動するにしても急に大きく変化することは少なく、緩やかに変動することが多い。そのため、それ以前に取得したデータに基づいて、次の入力データの予測をしやすいという特質がある。よって、予測値と実際の入力値とが一致する度合い（確率）が高く、仮にはずれたとしても、そのはずれた場合の予測値との差は小さい。よって、ＯＮ／ＯＦＦデータの場合には、予測が一致した場合を０または１に設定することで、当該０または１が連続する数が増える。その結果、連続した数で表現することで、圧縮が可能となる。また、アナログデータの場合、予測値と一致した場合を０（１ビット）で示し、予測値と実際の入力値の差が小さいほど短いビット数で表現することで、全体を表現する場合に必要なビット数を削減できる。
【００１９】
本発明のデータ復元装置は、上述したデータ収集装置により圧縮されたデータを復元するデータ復元装置であって、前記圧縮したデータと、少なくとも比較値が存在しない入力値と、前記予測手段が予測した予測値またはその予測手段の予測ルール（ハフマンツリー，予測テーブル等）と、を取得する手段と、その取得する手段により取得した圧縮したデータと、比較値が存在しない入力値と、予測値／予測ルールに基づき、入力値を求めるデータ展開手段とを備えて構成した。
【００２０】
本発明では例えばＦＡ現場における単独または複数の入力情報を元のデータを欠損することなくデータ量を削減し、ストレージデバイス等の記憶手段に保存することができる。また、保存したデータをデータ復元装置（パソコン等により実現できる）で元の入力情報に復元することができる。
【発明の効果】
【００２１】
本発明のデータ収集装置では、入力データを収集単位や時系列で収集したデータを動的に圧縮することで、書き込み量を減らし、かつ全体の書き込み時間を短縮することができ、期待するデータ量をストレージデバイスの書き込み能力を超えて蓄積可能とすることができる。また、蓄積した圧縮データの利用者は、データ復元装置を用いることで、展開時に完全に入力データを再現できる可逆圧縮を行なうことができる。
【発明を実施するための最良の形態】
【００２２】
図２は、本発明の好適な一実施の形態を示している。図２に示すように、本実施の形態のデータ収集装置１０は、ＰＬＣ１を構成するユニットの１つ（データ収集ユニット）として実現されている。すなわち、データ収集装置１０（データ収集ユニット）は、電源ユニット２，ＣＰＵユニット３，ＩＯユニット４，マスタ−スレーブ通信をするマスタユニット５などの各種の機能を実現するためのユニットと連結し、ＰＬＣ１を構成する。従って、本データ収集装置１０は、ＰＬＣバスを介してＣＰＵユニット３内のＩＯメモリや、その他にユニットのメモリにアクセスし、データを収集することができる。
【００２３】
もちろん、ＣＰＵユニット３は、ＰＬＣバスを介してＩＯユニット４等を接続していて、そのＩＯユニットにはＩＯデバイスが接続されている。ＩＯデバイスは、例えばオン・オフ動作をするセンサやスイッチ等の入力機器や、アクチュエータやパワーリレー等の出力機器のことである。そしてＣＰＵユニット３のＩＯメモリは、ＩＯデバイスの入力機器のオン・オフ状態に関するデータおよび出力機器の動作状態に関するデータ等を格納している。従って、データ収集装置１０は、ＣＰＵユニット３のＩＯメモリをアクセスすることで、ＩＯユニット３に接続されたＩＯ機器の情報や、マスタユニット５がネットワークを介してマスタスレーブ通信により取得した情報を取得することができる。
【００２４】
図３は、本実施の形態のデータ収集装置１０を示している。すなわち、このデータ収集装置１０は、外部デバイス類２０等の入力ソースからデータを読み出し（収集）し、入力データ配列記憶部１１ａに格納する入力処理部１１と、入力処理部１１が格納した入力データ配列記憶部１１ａを読み出して圧縮処理を行なう圧縮処理部１２と、その圧縮処理部１２で圧縮処理をした圧縮データを記憶装置たるストレージデバイス２１に保存する保存処理部１３と、入力処理部１１並びに圧縮処理部１２の動作・機能を設定する設定処理部１４とを備えている。
外部デバイス類２０は、ＣＰＵユニット３（ＩＯメモリ），他のユニット，ＰＬＣ１以外のネットワークに接続された機器など、各種のものがある。
【００２５】
設定処理部１４は、収集すべきデータを特定するとともに、その収集すべきデータ、つまり、入力情報毎に、入力周期（時間），入力ソース（メモリアドレス、ＩＯ、ネットワーク、など、その入力データが存在する箇所を特定する情報等），入力データの種別（ビット／数値（８ビット、１６ビット、３２ビットなど整数、浮動小数（単精度、倍精度））を定義し、設定メモリ１４ａに記憶する。この設定メモリ１４ａのデータ構造の一例としては、例えば、図４に示すようになる。このように、通常、収集対象となる入力データの種別は、ＢＩＴ情報や数値データなど、複数種類が混在しているし、入力周期も異なる。もちろん、入力周期は全て等しくても良い。
【００２６】
入力処理部１１は、設定メモリ１４ａから収集すべき各入力の設定を読み出し、各入力の入力周期にしたがって各種デバイス類２０などの入力ソースからデータを読み出す。そして、読み出したデータは、後段の圧縮処理の手法の相違から、ＢＩＴ情報と数値情報に分けて入力データ配列記憶部１１ａに保存する。換言すると、入力データ配列記憶部１１ａは、ＢＩＴ情報用の入力データ配列と、数値情報用の入力データとがある。入力処理部１１の処理機能は、具体的には、図５に示すフローチャートを実行するようになる。
【００２７】
まず、Ｘ＝１に初期化し（Ｓ１）、入力Ｘの入力周期か否かを判断する（Ｓ２）。ここで、入力Ｘは、入力Ｎｏ．の値を示し、この入力Ｎｏ．は一種のレコードＮｏ．と同様である。入力名（入力Ａ，入力Ｂ等）に基づいて処理を実行しても良い。図４に示す例では、Ｘは、１から１０の値を採る。入力Ｘの周期か否かは、設定メモリ１４ａに格納されたその入力Ｘに対応する入力周期に該当するか否かにより決定する。収集対象の入力データの条件が、図４に示す設定メモリ１４ａのようになっている場合、ＢＩＴデータの入力周期は１ｍｓｅｃであり、数値データの入力周期は２ｍｓｅｃとなっているので、現在、上記の各周期に来ているか否かにより容易に判断できる。
【００２８】
入力周期に来ていない場合には、処理ステップＳ６に飛び、Ｘを１インクリメントし（Ｓ６）、インクリメント後のＸの値が、最大値（図４の例では、１０）よりも大きい数値になったか否かを判断する（Ｓ７）。そして、最大値に達していない場合には、処理ステップＳ２に戻り、インクリメント後の入力Ｘの入力周期に来たか否かを判断する。また、Ｘの値が最大値を超えた（図４に示す設定メモリ１４ａの場合には、インクリメント後のＸが１１になった）場合には、処理ステップＳ７の分岐判断がＹｅｓとなるので、処理ステップ１に戻りＸ＝１に初期化し、入力Ｎｏが１のデータについての処理に戻る。
【００２９】
一方、入力Ｘの入力周期に来た場合には、処理ステップＳ２の分岐判断がＹｅｓとなるので、処理ステップＳ３に飛び、現在の入力Ｘの入力種別が、ＢＩＴか数値かを判断する（Ｓ３）。そして、入力種別がＢＩＴの場合には、その入力Ｘの入力ソースからデータを読み出し、読み出したデータをＢＩＴ用の入力データ配列に格納する（Ｓ４）。また、入力種別が数値の場合には、その入力Ｘの入力ソースからデータを読み出し、読み出したデータを数値用の入力データ配列に格納する（Ｓ５）。上記のＳ４，Ｓ５のいずれかの処理を実行し、所定の入力データ配列にデータを格納したならば、処理ステップＳ６に進み、Ｘをインクリメントする。上述した処理を繰り返し実行することにより、設定メモリ１４ａに格納されたすべての入力データの先頭から最後までについて、順次実行し、収集タイミングに来たならばデータを読み出して、所望の入力データ配列記憶部１１ａに格納することができる。
【００３０】
圧縮処理部１２は、設定メモリ１４ａから各入力データについての入力周期と入力種別を読み出す。そして、入力周期，入力種別ごとに入力データを入力データ配列から読み出す。本実施の形態の場合には、実際には、入力処理部が、入力データの入力周期に合わせてデータを読み出して、入力データ配列記憶部１１ａに格納するとともに、入力周期は、入力種別単位で等しい（ＢＩＴ：１ｍｓｅｃ，数値：２ｍｓｅｃ）ため、入力種別単位で、一括してそれぞれの入力データ配列記憶部１１ａに格納されたデータを読み出せばよい。
【００３１】
そして、圧縮処理部１２における圧縮処理は、基本的には、いずれも、入力値を取得し、それまでの入力値に基づいて、各入力データのそれぞれに対して次の入力値を予測し、次に取得する入力値（実測値）との差分をとる。予測値が入力値に近似する場合、差分値は０を対称軸として図６のような分布になる。このとき、出現回数の多い値を少ないビット数で符号化することで、図１に示すように全ての値を１６ビットで表現した場合よりも全体の使用ビット数を削減できる。
【００３２】
例えば、差分値が０になる場合が全体の５０％とするとこれを1ビットで表現する。さらに、４ビットで表現できる値が全体の４０％、１２ビットで表される値が全体の９％、１８ビットで表される値が全体の１％とすると、ひとつの値あたり必要とするビット数は「０．５＋１．６＋１．０８＋０．１８＝３．３６ビット」となり、すべての値を１６ビットで表現した場合に比較して１／４以下のビット数で全体が表現できり、圧縮できる。
【００３３】
圧縮の効果は、入力値と予測値との差が、ある一定の値に集中するほど好ましい。従って、予測の精度が高いほど、図６に示す分布のピーク値が高くなり、差分値が０（或いは０に近似する値）になる頻度が高くなり、圧縮の効果が高くなる。そこで、本実施の形態では、入力の種別が、ＢＩＴと数値のように複数種類存在し、それぞれに適した予測値の算出アルゴリズムが異なることから、圧縮処理部１２は、数値用圧縮処理部１５と、ＢＩＴ用圧縮処理部１６とを備えている。
【００３４】
図７は、数値用圧縮処理部１５を示している。この数値用圧縮処理部１５は、入力処理部１１内の数値用の入力データ配列記憶部１１ａ内から、数値データを読込、一時記憶する入力値バッファ１５ａと、この入力値バッファ１５ａに格納される各入力値を順次読み出し、過去の所定数分（本実施形態では、過去４回分）の入力値を記憶する予測テーブル１５ｂと、その予測テーブル１５ｂに格納された過去の入力値に基づき、次の入力値の予測値を求める予測値算出部１５ｃと、入力値バッファ１５ａに格納された入力値と、予測値算出部１５ｃにより求められた予測値と比較し、その差分を求める差分値算出部１５ｄと、差分値算出部１５ｄにより求めた差分値と、その差分値を取得し、ハフマンツリー記憶部１５ｅに格納されたハフマンツリーに基づき、取得した差分値を符号化する符号化部１５ｆと、その符号化部１５ｆにより符号化されたデータ（圧縮されたデータ）を一時記憶する出力バッファ１５ｇとを備えている。
【００３５】
従って、入力値バッファ１５ａには、設定メモリ１４ａの内容が図４に示す状態とすると、入力データ配列記憶部１１ａ中の入力名称が、入力Ｃ，入力Ｅ，入力Ｆ，入力Ｇ，入力Ｈ，入力Ｊに対応するデータが、格納される。そして、それら６つの入力データが、入力値バッファ１５ａから予測テーブル１５ｂに転送され、各入力データ毎に時系列に格納される。
予測値算出部１５ｃは、予測テーブル１５ｂから、その入力の前４回のデータを読み込み、以下の算出式を利用し、予測値Ｙ（ｎ）を算出する。
【００３６】
Ｙ（ｎ）＝−Ｙ（ｎ−４）＋４×Ｙ（ｎ−３）−６×Ｙ（ｎ−２）＋４×Ｙ（ｎ−１）
すなわち、ＦＡで使用されるアナログデータの値は横軸を時間、縦軸を値とした場合、例えば図８，図９に示すようなパターンを描くことが多く予想される。すなわち、図８（ａ）に示すようにサイン型の波形，またはコサイン型の波形に類似するパターンや、図８（ｂ）に示すように図８（ａ）と同様のパターンで変化するが、図中拡大して示すようにデータが滑らかに変化しない場合や、図９（ａ）に示すように、時間をかけてある値に推移し、その値を維持するようなパターンや、図９（ｂ）に示すように図９（ａ）と同様のパターンで変化するが、ノイズによるパルスが時々発生するような場合などがある。
【００３７】
このようなパターンで推移するデータを１ｍｓｅｃなどの周期で入力値として読み出した場合、過去の数周期分のデータからN次多項式近似により、次の入力値を予測することができる。例えば、３次曲線の公式
Ｙ＝ａＸ３＋ｂＸ２＋ｃＸ＋ｄ
のＬａｒｇｒａｎｇｅ補間公式の簡易公式
Ｙ（n）＝−Ｙ（ｎ−４）＋４×Ｙ（ｎ−３）−６×Ｙ（ｎ−２）＋４×Ｙ(ｎ−１)
を利用して入力値の直前４回の値（Ｙ(ｎ−４)〜Ｙ（ｎ−１））から次の入力値Ｘ（ｎ）を予測することができる。そこで、上述したように、予測値算出部１５ｃにて、次の入力値Ｘ（ｎ）の予測値Ｙ（ｎ）を算出する。
【００３８】
上述したように、本実施の形態では、直前の４回の入力値から次の回の入力値の予測値を算出するようにしたため、予測テーブル１５ｂは、少なくとも直前の４回分の入力値が格納されたテーブルとなる。それ以前のデータについては、記憶保持するようにしても良いし、リングバッファのようにして順次上書きして消去するようにしても良い。ただし、この予測テーブル１５ｂ或いは出力バッファ１５ｇ或いは別の記憶手段を用いて少なくとも最初の４回分の入力データは記憶保持するようにする。
【００３９】
入力Ｃを例にとり、予測値算出部１５ｃにおける入力値の予測処理と、差分値算出部１５ｄにおける差分値算出処理の具体例を説明する。１回目からの入力値が、図１０に示すようになっているものとする。すると、予測値を算出するためには、過去４回分のデータが必要なため、１回目から４回目までは、予測値を求めることが出来ない。そして、上述した予測の算出式に対し、１回目から４回目の各入力値を代入すると、５回目の予想値Ｙ（５）は、
−（１回目の入力値）＋４×（２回目の入力値）−６×（３回目の入力値）＋４×（４回目の入力値）
＝−１１＋４×１２−６×１３＋４×１４
＝１５
となる。以下、順に同様の処理を実行し、直前４回の入力値から次回の入力値は予測すると、図１０の予測値の欄に示すようになる。尚、本実施形態では、Ｌａｒｇｒａｎｇｅ補間公式を用いて予測を行なうようにしたが、他の予測方式を用いて予測値を求めるようにしてももちろん良い。
【００４０】
そして、差分値算出部１５ｂは、「Ｘ（ｎ）−Ｙ（ｎ）」を演算処理する。従って、の入力Ｃについての差分値は、予測値が求められる５回目以降について算出することが出来、具体的には、図１１に示すように各回ごとに差分値が算出される。すなわち、入力Ｃの５回目以降の差分値は０，１、−２，０，０となり、この例では、差分値が０、つまり、予想が当たった回数が最も多くなった。同様に、他の入力Ｅ，Ｆ，Ｇ，Ｈ，Ｊについても、５回目以降に対して各入力回の差分値が求まる。
【００４１】
符号化部１５ｆは、差分算出部１５ｂで求めた各入力データに対する差分値をハフマン符号化する。ここでは、差分値を−２５６〜＋２５５、−１２８〜＋１２７など固定の範囲とする。差分値に対応する符号を、ハフマンツリー記憶部１５ｅに記憶保持されたハフマンツリーから検索する。ハフマンツリーに該当する差分値が存在（ヒット）したら、そのヒットした差分値に対応する符号を出力する。また、ヒットしなかったら場合には対応する符号が無いので符号化することなく、差分値をそのまま出力する。
【００４２】
図１２は、ハフマンツリー記憶部１５ｅに格納されるハフマンツリー（値：差分値と符号の対応関係を示すテーブル）の一例を示している。この例では、差分値の範囲を−１２８〜＋１２７とした場合の例である。
【００４３】
例えば、５回目の６個の入力データ（入力Ｃ，Ｅ，Ｆ，Ｇ，Ｈ，Ｊ）に対する差分値が、図１３に示すようになったとすると、各入力データの差分値は、図１２に示すハフマンツリーによってハフマンエンコードすることにより、図１４に示すように符号化される。よって、５回目の６個の入力データ（入力Ｃ，Ｅ，Ｆ，Ｇ，Ｈ，Ｊ）は、「０１０１００１０１１００１０１」（２進数）となり、本来の４８ビット（８×６）必要であったデータが、1５ビットで表現できるようになる。
【００４４】
上記の符号化されたデータは、各回毎に出力バッファ１５ｇに逐次格納され、すべての数値に対して圧縮処理（符号化）が完了したらならば、出力バッファ１５ｇに格納された圧縮されたデータを保存処理部１３に渡す。
【００４５】
なお、図９（ｂ）に示すような突発的（瞬間的）に発生するノイズ（異常値）に対しては予測が働かないため圧縮は行われない。ただし、このような値はデータ全体に対する割合が小さく影響は無視できる。
【００４６】
なおまた、本実施の形態では、ハフマンツリーを静的に一定なデータとした場合について説明したが、圧縮率をさらに高める手法としてハフマンツリーを毎入力の結果によって動的に最適化する手法を用いても良い。具体的には、入力毎に差分値の登場頻度を再計算し、動的に、登場頻度の高いものを少ないビット数で表現できるようにハフマンツリーを再構成する機能を追加すること実現する。
【００４７】
図１５は、ＢＩＴ用圧縮処理部１６を示している。このＢＩＴ用圧縮処理部１６は、入力処理部１１内の入力データ配列記憶部１１ａ内から、入力種別がＢＩＴデータのものを読込、一時記憶する入力値バッファ１６ａと、この入力値バッファ１６ａに格納される各入力値を順次読み出し、過去の所定数分（本実施形態では、過去２回分）の入力値を記憶する予測テーブル１６ｂと、その予測テーブル１６ｂに格納された過去の入力値に基づき、次の入力値の予測値を求める予測値算出部１６ｃと、入力値バッファ１６ａに格納された入力値と、予測値算出部１６ｃにより求められた予測値と比較し、その差分を求める差分値算出部１６ｄと、差分値算出部１６ｄにより求めた差分値に基づいて圧縮する処理するための予備データを記憶するＲＬＥ圧縮用予備バッファ１６ｆと、そのＲＬＥ圧縮用予備バッファ１６Ｆ１６ｆに格納されたデータに基づきＲＬＥ（Ｒｕｎ  Ｌｅｎｇｔｈ  Ｅｎｃｏｄｉｎｇ）により圧縮するＲＬＥ圧縮部１６ｈと、そのＲＬＥ圧縮部１６Ｈにより圧縮されたデータを記憶する出力バッファ１６ｇとを備えている。さらに、最終的なＲＬＥ圧縮の圧縮率を高めるために、係数差分の大きい入力抽出部１６ｅも備えている。
【００４８】
従って、入力値バッファ１６ａには、設定メモリ１４ａの内容が図４に示す状態とすると、ＢＩＴ用の入力データ配列記憶部１１ａ中の入力名称が、入力Ａ，入力Ｂ，入力Ｄに対応するデータが、格納される。そして、それら３つの入力データが、入力値バッファ１６ａから予測テーブル１６ｂに転送され、各入力データ毎に時系列に格納される。
【００４９】
予測テーブル記憶部１６ｂには、図１６に示すように、直前ｍ回の値の組み合わせに対し、次に０が出現する頻度と、１が出現する頻度を予測係数としたテーブル構造の予測テーブルが格納されている。このような予測テーブルが、各入力データ毎に作成され、記憶保持される。ｍの値は１以上をとるが入力値の種別によって決定する（図の場合はｍ＝２）。
【００５０】
本実施の形態では、最終的なＲＬＥ圧縮の圧縮効率を高めるために予測一致確率の高い入力から順に処理を行なうようにしている。すなわち、各ビット入力のうち、予測テーブル１６ｂから前2回の入力値と一致するテーブルの中で、予測係数の差分の一番大きい入力から順に処理する。これは“予測係数の差分の大きい場合は、予測一致する確立が高い”ことを利用するためである。この予測一致確立の計算は、予測係数の合計で予測する値（０または１）の出現回数を除算しても同じく算出することが出来るが、本実施の形態では、計算効率を考慮して差分を比較する方法としている。係る処理を係数差分の大きい入力抽出部１６ｅが行なう。
【００５１】
このＢＩＴ用圧縮処理部１６においても、入力値の直前ｍ回（例えば２回）の値から次の入力値を予測し、その予測値と実際の入力値との一致／不一致に基づいて圧縮データを作成する。すなわち、予測値算出部１６ｃは、予測テーブル記憶部１６ｂに格納された図１６のような予測テーブルを参照し、直前ｍ回の値の組み合わせ基づき、次に出現する係数（予測係数）の高い値を予測値とする。この予測係数が、予測テーブル係数のサンプル数が多く、かつ、差が大きいほど予測確率は高い。図１６に示す予測テーブルを持つ入力データの場合、直前２回のビットデータが「０，０」の場合には、次の入力は０の場合の予測係数が２５で、１の場合の予測係数が１であるので、係数の大きいほうの値「０」を予測値とする。なお、入力値バッファ１６ａに格納された各入力値に基づき、予測テーブルの入力値に一致する予測係数を１加える処理も行なわれる。これより、予測係数が逐次更新され、より精度の高い予測を行なうことが可能な予測テーブルが作り上げられていく。
【００５２】
差分値算出部１６は、予測値と入力値とを比較し、差分値が入力値に一致する場合には差分値は０とし、予測が一致しない場合には差分値は１とする。よって、予測の一致確立が高い場合、差分値は０が大勢を占めることになる。しかも、係数差分の大きい入力抽出部１６ｅにより、係数差分の大きい入力を抽出し、それから順に処理するようにしたため、先頭ほど予測値が一致する確率が高く、差分値算出部１６ｄの出力は、同じ数値が連続する確率が高くなる。よって、ＲＬＥ圧縮による圧縮率も高くなる。なお、入力データが１／０のビットデータであるため、この差分値算出部１６ｄにおける実際の演算処理は、例えば、
差分値＝予測値ＸＯＲ入力値
により求めることが出来る。
【００５３】
差分値算出部１６ｄで求めた各入力データに対する差分値を、ＲＬＥ圧縮予備バッファ１６ｆに同一の入力回毎に格納する。例えば、複数の入力に対して入力毎の差分値が、図１７に示すようになったものとする（０は予測一致、１は不一致を意味する）。なお、本実施形態では、過去２回の入力値に基づいて予測値を求めることから、１回目と２回目の差分値データは、入力値のままとする。そして、このＲＬＥ圧縮用予備バッファ１６ｆに格納された各回毎の差分値データは、各回毎に一列にまとめられ記憶保持される。そして、その記憶保持されたデータをＲＬＥ圧縮処理部１６ｈが圧縮処理をし、求めた圧縮データを出力バッファ１６ｇに格納する。
【００５４】
図１７に示すように、入力種別のＢＩＴデータの入力数が４８個あるとすると、通常これを表すには当然のことながら４８ビット（６バイト）が必要となる。これを０，１の連続する個数によるＲＬＥで表現すると、図１７に示す各回のデータは、
１回目  ３５個の０，１個の１，１２個の０
２回目  ４８個の０
３回目  １０個の０，１個の１，３７個の０
４回目  ４８個の０
であるため  ＲＬＥで表現すると
３５，１，１２
４８
１０，１，３７
４８
といった配列で表現でき、この例では、最小で１バイト（８ｂｉｔ）、最大で３バイト（２４ビット）で表現できることになる。この場合、すべての回で、元のデータが必要とする４８ｂｉｔを下回り、データ量が圧縮できる。
【００５５】
さらに、通常ＲＬＥの場合、“値”とその値が“連続する個数”を記録するが、本実施の形態の場合には、値は０，１の２種類のみがトグルで登場するため、“連続する個数”のみを必要とし、“値”の記録は不要となる。
【００５６】
このＢＩＴ用圧縮処理部１６の機能（作用）を、具体例を挙げつつ説明する。例えば、図１８（ａ）から（ｃ）に示すような予測テーブルを持つ３つのビット入力Ａ，Ｂ，Ｄがある場合において、ある回における直前２回の入力値が、それぞれ、「入力Ａが０，１」，「入力Ｂが１，０」，「入力Ｄが０，０」であったとする。
【００５７】
この場合、使用する予測テーブルは、入力Ａは０１，入力Bは１０，入力Ｃは００を使用することとなり、予測値算出部１６ｃで求めた予測値は、それぞれ以下のように予測する。
入力Ａは、予測係数が０：２回  ＜  １：１１１回  のため  次は１と予測、
入力Bは、予測係数が０：１７３回  ＞  １：３５回  のため  次は０と予測、
入力Cは、予測係数が０：２５回  ＞  １：１０回  のため  次は０と予測することになる。
【００５８】
実際の入力値が図１９に示す入力値の欄に示すような履歴をとったとすると、予測値ならびに差分値は、それぞれ図１９の各欄に示す値を採る。そして、差分値算出部１６ｄで求めた各入力データに対するある回の差分値を左詰でＲＬＥ圧縮用予備バッファ１６ｆに順次格納する。これにより、このＲＬＥ圧縮用予備バッファ１６ｆには、例えば、図２０に示すようなデータが格納される。ここで、１，２回目は入力値をそのまま使用し、３回目以降は差分値を使用する。
【００５９】
全ビットを処理後、ＲＬＥ圧縮部１６ｈがＲＬＥ圧縮を実行し、出力バッファに１６ｇに格納する圧縮データを作成する。ＲＬＥ圧縮は、同じ数値の連続して登場する回数を記録するもので、同じ数値が偏って登場する場合に圧縮率は高くなる。
【００６０】
本実施の形態では、図２０に示すＲＬＥ圧縮用予備バッファ１６ｆにおける横方向に差分値の０／１それぞれの連続する登場回数により圧縮を実行する。図２０では、入力D以降の差分値が不明なので便宜上、Ａ／Ｂ／Ｄの３入力で実施した場合、
３回目：３、・・・・
４回目：１，２、・・・
５回目：３、・・・
となる。
【００６１】
保存処理部１３は、圧縮処理部１２で求めた数値圧縮処理とビット圧縮処理のそれぞれの圧縮結果である出力バッファを、ストレージデバイス２１に保存する。このとき展開時の効率を考慮し、圧縮処方の違う数値，ビット別，また収集周期別に保存する。ストレージデバイス２１に保存する代わりにネットワークを介してストリームデータとして出力することも可能である。さらに、設定メモリの内容をファイルとして保存する。これは展開実行時に使用する。
【００６２】
図２１は、本発明に係るデータ復元装置の好適な一実施の形態である展開システムを示している。この展開システムは、例えば、パーソナルコンピュータに所定のアプリケーションプログラムを印ストロールすることで実現することができる。ここで実行する展開については、動的圧縮で得られたデータファイルから圧縮前のデータに展開する。この時データに対して任意の並び替えやタイムスタンプの付加、テキストファイルへの変換などの整形を行い、データの解析を容易にする。
【００６３】
この展開システム４０は、数値データ展開部４１と、ビットデータ展開部４２と、整形部４３を備えている。さらに、整形部４３で整形したファイルを記憶する記憶装置４４も備えている。この記憶装置４４は、外部に設置しても良い。すなわち、圧縮処理の際に説明したように、数値データとＢＩＴデータをそれぞれ異なる方式により圧縮したため、展開（復元）処理も、数値データ展開部４１，ＢＩＴデータ展開部４２を用いて数値データ，ビットデータ毎に行なう。そして、そのようにして数値，ビットの圧縮方法の違いや、収集周期の違いによって分割されたファイルを、整形部４３にて１つの整形されたファイルにする。具体的には、以下に示すような処理を行なう。
【００６４】
まず、数値データ、ビットデータごとにN回目の入力値を求める。すなわち、数値データ展開部４１では、１回目、２回目、３回目、４回目は入力値がそのまま保存されているため、計算せずに使用する。そして、５回目以降は保存した圧縮データとハフマンツリー、予測テーブルから各入力のN回目の入力値を計算する。つまり、N回目の圧縮データをよみ、ハフマンテーブルから各入力の差分値を展開し、予測値と差分値から入力値が計算できる。
【００６５】
例えばＮ回目の圧縮データが、「０１０１００１０１１００１０１」とすると、図１２に示すハフマンツリーから、差分値は、「０，０，１，０、−１，０」となる。また、予測テーブルから各入力のN回目の予測値を計算する。予測値の計算は、過去４回の入力値のデータに基づいて求める。各入力の予測値が、入力Ｃ＝１５，入力Ｅ＝１００，入力Ｆ＝２００，入力Ｇ＝１０００,入力Ｈ＝１０００,入力Ｊ＝９９とすると、予測値と差分値から入力値を計算した結果（入力値＝予測値―差分値）は、図２２に示すようになる。Ｎ＝５から順に１ずつインクリメントしていきながら、上記の予測値と差分値から各回の入力値を算出することが出来る。なお、過去４回分の入力値は、上記のようにして演算処理（展開処理）して得られた値を用いることで予測値を算出することが出来る。
【００６６】
ビットデータ展開部４２は、以下に示す手順により展開処理を行なう。まず、１，２回目については、入力値がそのまま保存されているため計算せずに使用する。そして、３回目以降は保存した圧縮データと、予測テーブルから各入力のN回目の入力値を計算する。
【００６７】
すなわち、例えばN回目の圧縮データからＲＬＥデコードした結果、各入力の差分値が図２３のように求まる。すると、入力Ａ，Ｂ，ＤのN回目の差分値が、それぞれ０，０，０であるため、N回目の入力Ａ，Ｂ，Ｄの予測値から「入力値＝差分値ＸＯＲ予測値」を演算し、図２３に示すように入力値が求まる。
【００６８】
上述したように、各展開部４１，４２により、数値データとビットデータがそれぞれ別々に展開される。そこで、整形部４３は、各展開部４１，４２から取得した展開結果（入力値）と、設定テーブルの情報に基づき、各入力値を設定テーブルの順に従って、データを並び変える。これにより、図２５に示すように、Ｎ回目の入力データを可逆的に圧縮・再現できる。
【００６９】
さらに本実施の形態では、整形部４３は、各データをカンマで区切ったテキストデータに変換したデータファイルを作成する機能を備える。これにより、各回毎にカンマ区切りされた１行分のテキストデータが作成され、展開する毎に１行ずつ追加する。このように、設定テーブルに従って数値、ビットデータを並び替え、テキスト変換し、カンマ区切りファイルの1行を逐次追加することで、例えば図２６に示すような整形後のデータファイルが作成される。このデータファイルが記憶装置４４に格納される。このデータファイルは、表計算アプリケーションソフトで処理可能なカンマ区切りのテキストデータ形式となっているため、その後の解析が容易に行なえる。
【００７０】
上述した実施の形態では、同一回で入力される入力データ同士を単位として圧縮したが、本発明はこれに限ることはなく、例えば同一の入力（例えば、入力Ｃ）を時系列で取得し、圧縮するようにしても良い。
【００７１】
また、本発明が適用される範囲は、上述したＦＡシステムに限ることはなく、予測値と入力値とを比較して得られる値（差分値等）に基づいて圧縮処理が適切に行なえるものであれば、各種のものに適用ことができる。
【図面の簡単な説明】
【００７２】
【図１】圧縮しない場合のデータ収集結果の一例を示す図である。
【図２】ＰＬＣの一例を示す図である。
【図３】本発明に係るデータ収集装置の一実施の形態の内部構造を示す図である。
【図４】設定メモリのデータ構造の一例を示す図である。
【図５】入力処理部の機能を示すフローチャートである。
【図６】入力値と予測値の差分値の分布図の一例を示す図である。
【図７】数値用圧縮処理部の内部構造の一例を示す図である。
【図８】数値データの時間軸での推移例の一例を示す図である。
【図９】数値データの時間軸での推移例の一例を示す図である。
【図１０】数値データの予測例を示す図である。
【図１１】数値データの差分計算例を示す図である。
【図１２】ハフマンツリーの一例を示す図である。
【図１３】５回目の各入力データ（数値データ）の差分値例を示す図である。
【図１４】図１３に示す差分値を、ハフマンツリーを用いて符号化した例を示す図である。
【図１５】ＢＩＴ用圧縮処理部１６の内部構造の一例を示す図である。
【図１６】ビットデータの予測テーブル例を示す図である。
【図１７】複数の入力に対して入力毎の差分値の一例を示す図である。
【図１８】ビットデータ予測例を示す図である。
【図１９】ビットデータ差分値例を示す図である。
【図２０】ビットデータＲＬＥ圧縮用予備バッファのデータ構造の一例を示す図である。
【図２１】展開システムの一実施の形態を示す構成図である。
【図２２】数値データの入力値計算例を示す図である。
【図２３】ビットデータのＲＬＥデコード結果の一例を示す図である。
【図２４】ビットデータの入力値計算例を示す図である。
【図２５】入力データ並び替え例を示す図である。
【図２６】展開結果例（テキストファイル）の一例を示す図である。
【符号の説明】
【００７３】
１０  データ収集装置
１１  入力処理部
１１ａ  入力データ配列記憶部
１２  圧縮処理部
１３  保存処理部
１４  設定処理部
１４ａ  設定メモリ
２０  外部デバイス類
【図１】
2006259937.tif 000003
【図２】
2006259937.tif 000004
【図３】
2006259937.tif 000005
【図４】
2006259937.tif 000006
【図５】
2006259937.tif 000007
【図６】
2006259937.tif 000008
【図７】
2006259937.tif 000009
【図８】
2006259937.tif 000010
【図９】
2006259937.tif 000011
【図１０】
2006259937.tif 000012
【図１１】
2006259937.tif 000013
【図１２】
2006259937.tif 000014
【図１３】
2006259937.tif 000015
【図１４】
2006259937.tif 000016
【図１５】
2006259937.tif 000017
【図１６】
2006259937.tif 000018
【図１７】
2006259937.tif 000019
【図１８】
2006259937.tif 000020
【図１９】
2006259937.tif 000021
【図２０】
2006259937.tif 000022
【図２１】
2006259937.tif 000023
【図２２】
2006259937.tif 000024
【図２３】
2006259937.tif 000025
【図２４】
2006259937.tif 000026
【図２５】
2006259937.tif 000027
【図２６】
2006259937.tif 000028