(57)【要約】【課題】オーバーサンプリングを実施しても、制御周期ごとに制御装置へと送信されるデータフレームのデータサイズを抑制する。【解決手段】カウンタユニット（１０）は、２回目以降のカウント値（Ｃｔ）を示すサンプリングデータ（Ｓｄ）のデータサイズを、１回のサンプリング処理においてカウントし得るカウント値の最大量（Ｖｍａｘ）を表現可能なビット数に圧縮する。【選択図】図１
2020195092.tif 000002
【特許請求の範囲】
【請求項１】
１回の制御周期において複数回実行されたサンプリング処理の各々の計測結果を示す、複数のサンプリングデータを、１データフレームに格納して、前記制御周期ごとに制御装置へと送信するデータ転送装置であって、
前記複数回実行されたサンプリング処理の各々の計測結果を取得する取得部と、
１回の前記制御周期において連続して実行される２つの前記サンプリング処理の計測結果の間の変化の最大量が予め決まっている場合、前記取得部によって取得された複数の前記計測結果のうち、２回目以降の前記サンプリング処理の各々の計測結果を、前記最大量を表現可能なデータサイズの前記サンプリングデータに圧縮する圧縮部と、
を備えるデータ転送装置。
【請求項２】
前記サンプリング処理は、パルス信号のパルス数をカウントする処理であり、
前記計測結果は、カウントされた前記パルス数である
請求項１に記載のデータ転送装置。
【請求項３】
前記最大量を表現可能なデータサイズは、（１）１回の前記サンプリング処理においてカウントし得る前記パルス数の絶対値と、（２）前記サンプリング処理のパルスカウント方式が双方向であるのか、または、単方向であるのかとによって、予め決定されている
請求項２に記載のデータ転送装置。
【請求項４】
前記圧縮部は、２回目以降の前記サンプリング処理の各々の計測結果を示すビット列から、最下位ビットを含む、前記最大量を表現可能なビット数分のビット列を抽出し、抽出したビット列を、前記サンプリングデータとする
請求項１から３のいずれか１項に記載のデータ転送装置。
【請求項５】
前記圧縮部は、２回目以降の前記サンプリング処理の各々の計測結果の、直前の前記サンプリング処理の計測結果からの変化量を示すビット列を、前記サンプリングデータとする
請求項１から３のいずれか１項に記載のデータ転送装置。
【請求項６】
請求項１から５のいずれか１項に記載のデータ転送装置から、前記制御周期ごとに、前記データフレームを受信するデータフレーム受信部と、
前記データフレーム受信部により受信された前記データフレームにおける、前記最大量を表現可能なデータサイズに圧縮された前記サンプリングデータから、２回目以降の前記サンプリング処理の各々の計測結果を復元する復元部と、
を備える制御装置。
【請求項７】
前記復元部は、２回目以降の前記サンプリング処理の各々の計測結果を、直前の前記サンプリング処理の計測結果を示すビット列と、２回目以降の前記サンプリング処理の各々の計測結果を示す前記サンプリングデータとして前記データフレームに格納されているビット列と、を用いて、直前の前記サンプリング処理の計測結果からの変化量が前記最大量以下となるように、復元する
請求項６に記載の制御装置。
【請求項８】
請求項１から５のいずれか１項に記載のデータ転送装置と、請求項６または請求項７に記載の制御装置と、の少なくとも一方に対して、前記最大量を表現可能なデータサイズを設定する設定部を備える設定装置。
【請求項９】
前記データ転送装置が、１回の前記制御周期において実行する前記サンプリング処理の回数を示す情報を含む、前記データ転送装置についての設定情報を用いて、前記最大量を表現可能なデータサイズを算出する算出部をさらに備え、
前記設定部は、前記算出部によって算出された前記最大量を表現可能なデータサイズを、前記データ転送装置と前記制御装置との少なくとも一方に対して設定する
請求項８に記載の設定装置。
【請求項１０】
１回の制御周期において複数回実行されたサンプリング処理の各々の計測結果を示す、複数のサンプリングデータを、１データフレームに格納して、前記制御周期ごとに制御装置へと送信するデータ転送装置の制御方法であって、
前記複数回実行されたサンプリング処理の各々の計測結果を取得する取得ステップと、
１回の前記制御周期において連続して実行される２つの前記サンプリング処理の計測結果の間の変化の最大量が予め決まっている場合、前記取得ステップにて取得された複数の前記計測結果のうち、２回目以降の前記サンプリング処理の各々の計測結果を、前記最大量を表現可能なデータサイズの前記サンプリングデータに圧縮する圧縮ステップと、
を含む制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、１回の制御周期において複数回実行されたサンプリング処理の各々の計測結果を示す、複数のサンプリングデータを、１データフレームに格納して、前記制御周期ごとに制御装置へと送信するデータ転送装置等に関する。
【背景技術】
【０００２】
従来、工場等の生産現場において、ＰＬＣ（Programmable Logic Controller）などの制御装置が実行する制御処理の精度向上等を目的として、オーバーサンプリングを実行することが知られている。例えば、下掲の特許文献１には、カウンタユニットが、コントローラとの通信間隔（つまり、制御周期）よりも短い間隔で、コンベアの移動量を複数回計測し、計測した複数の移動量と各移動量の計測タイミングとをコントローラに送信する構成が開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１８−２４０４５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、上述のような従来技術には、制御周期ごとに制御装置へと送信されるデータフレームのデータサイズが、オーバーサンプリングの実施によって、大きくなってしまうとの問題がある。
【０００５】
本発明の一態様は、前記の問題点に鑑みてなされたものであり、オーバーサンプリングを実施しても、制御周期ごとに制御装置へと送信されるデータフレームのデータサイズを抑制することができるデータ転送装置等を実現することを目的としている。
【課題を解決するための手段】
【０００６】
上記の課題を解決するために、本発明の一態様に係るデータ転送装置は、１回の制御周期において複数回実行されたサンプリング処理の各々の計測結果を示す、複数のサンプリングデータを、１データフレームに格納して、前記制御周期ごとに制御装置へと送信するデータ転送装置であって、前記複数回実行されたサンプリング処理の各々の計測結果を取得する取得部と、１回の前記制御周期において連続して実行される２つの前記サンプリング処理の計測結果の間の変化の最大量が予め決まっている場合、前記取得部によって取得された複数の前記計測結果のうち、２回目以降の前記サンプリング処理の各々の計測結果を、前記最大量を表現可能なデータサイズの前記サンプリングデータに圧縮する圧縮部と、を備えている。
【０００７】
前記の構成によれば、前記データ転送装置は、前記最大量が予め決まっている場合、２回目以降の前記サンプリング処理の各々の計測結果を示す前記サンプリングデータを、前記最大量を表現可能なデータサイズに圧縮して、前記制御装置へと送信する。
【０００８】
したがって、前記データ転送装置は、２回目以降の前記サンプリング処理の各々の計測結果を圧縮しない場合に比べて、前記制御周期ごとに前記制御装置へと送信する前記データフレームのデータサイズを、抑制することができるとの効果を奏する。
【０００９】
ここで、前記変化が正負のいずれでもあり得る場合、例えば、前記変化の範囲が「−１２７」以上「１２７」以下である場合、「１２７」を表現可能な７ビットに１ビットを加えた８ビット、つまり、１ｂｙｔｅが、前記最大量を表現可能なデータサイズとなる。同様に、例えば、前記変化の範囲が「−１」以上「１」以下である場合、「１」を表現可能な１ビットに１ビットを加えた２ビットが、前記最大量を表現可能なデータサイズとなる。
【００１０】
また、前記変化が常に正または常に負である場合、例えば、前記変化の範囲が「０」以上「２５５」以下である場合、「２５５」を表現可能な８ビット、つまり、１ｂｙｔｅが、前記最大量を表現可能なデータサイズとなる。同様に、例えば、前記変化の範囲が「０」以上「１」以下である場合、「１」を表現可能な１ビットが、前記最大量を表現可能なデータサイズとなる。
【００１１】
本発明の一態様に係るデータ転送装置において、前記サンプリング処理は、パルス信号のパルス数をカウントする処理であり、前記計測結果は、カウントされた前記パルス数であってもよい。
【００１２】
前記の構成によれば、前記データ転送装置は、前記最大量が予め決まっている場合、２回目以降の前記サンプリング処理の各々において計測されたパルス数を示す前記サンプリングデータを、前記最大量を表現可能なデータサイズに圧縮する。
【００１３】
ここで、パルス信号のパルス数をカウントするサンプリング処理において、１回のサンプリング処理において計測し得るパルス数は予め決まっており、つまり、前記サンプリング処理が前記パルス数をカウントする処理である場合、前記最大量は予め決まっている。
【００１４】
より正確には、前記データ転送装置が、１回のサンプリング処理において、「エンコーダまたは流量計のような、検出量に応じて前記パルス信号を生成するパルス信号生成装置」から受信し得るパルス信号の数は、予め決まっている。例えば、エンコーダからのパルス信号を計数する（つまり、カウントする）場合、前記データ転送装置が単位時間あたりに受信し得るパルス信号の数は、エンコーダの、分解能と回転速度（最大回転速度）とによって、予め決定される。そして、最大回転速度は、エンコーダのスペック（仕様、性能）から決めることができ、また、アプリケーション（エンコーダの使用用途）から決めることもできる。例えば、アプリケーションが、「エンコーダが３６０分解能で最大でも６０ｒｐｍ（１秒間に１回転）で回転するような低速アプリケーション」であれば、エンコーダがスペック的にはもっと高速に回転できるとしても、最大回転速度は６０ｒｐｍとして想定すればよい。つまり、前記データ転送装置が、１回のサンプリング処理において受信し得るパルス信号の数は、エンコーダ（パルス信号生成装）のスペックおよびアプリケーションの少なくとも一方により予め決められている。
【００１５】
したがって、前記データ転送装置は、２回目以降の前記サンプリング処理の各々において計測されたパルス数を示す前記サンプリングデータを、前記最大量を表現可能なデータサイズに圧縮して、前記制御装置へと送信することができるとの効果を奏する。
【００１６】
本発明の一態様に係るデータ転送装置において、前記最大量を表現可能なデータサイズは、（１）１回の前記サンプリング処理においてカウントし得る前記パルス数の絶対値と、（２）前記サンプリング処理のパルスカウント方式が双方向であるのか、または、単方向であるのかとによって、予め決定されていてもよい。
【００１７】
前記の構成によれば、前記データ転送装置において、前記最大量を表現可能なデータサイズは、（１）１回の前記サンプリング処理においてカウントし得る前記パルス数の絶対値と、（２）前記パルスカウント方式とによって、予め決定されている。
【００１８】
前記パルスカウント方式が双方向である場合、１回の前記制御周期において連続して実行される２つの前記サンプリング処理の計測結果の間の変化は、正負のいずれでもあり得る。例えば、「１回の前記サンプリング処理においてカウントし得る前記パルス数の絶対値」が「１２７」である場合、１回の前記制御周期において連続して実行される２つの前記サンプリング処理の計測結果の間の変化は、「−１２７〜１２７」と示すことができる。したがって、前記最大量を表現可能なデータサイズは、「１回の前記サンプリング処理においてカウントし得る前記パルス数の絶対値」を表現可能なビット数に１ビットを加えたビット数となる。
【００１９】
前記パルスカウント方式が単方向である場合、１回の前記制御周期において連続して実行される２つの前記サンプリング処理の計測結果の間の変化は、常に正または常に負である。例えば、「１回の前記サンプリング処理においてカウントし得る前記パルス数の絶対値」が「２５５」である場合、１回の前記制御周期において連続して実行される２つの前記サンプリング処理の計測結果の間の変化は、「０〜２５５」と示すことができる。したがって、前記最大量を表現可能なデータサイズは、「１回の前記サンプリング処理においてカウントし得る前記パルス数の絶対値」を表現可能なビット数となる。
【００２０】
したがって、前記データ転送装置は、前記最大量が予め決まっているので、２回目以降の前記サンプリング処理の各々において計測されたパルス数を示す前記サンプリングデータを、前記最大量を表現可能なデータサイズに圧縮することができるとの効果を奏する。
【００２１】
本発明の一態様に係るデータ転送装置において、前記圧縮部は、２回目以降の前記サンプリング処理の各々の計測結果を示すビット列から、最下位ビットを含む、前記最大量を表現可能なビット数分のビット列を抽出し、抽出したビット列を、前記サンプリングデータとしてもよい。
【００２２】
前記の構成によれば、前記データ転送装置は、２回目以降の前記サンプリング処理の各々の計測結果を示すビット列から抽出した、最下位ビットを含む、前記最大量を表現可能なビット数分のビット列を、前記サンプリングデータとする。
【００２３】
２回目以降の前記サンプリング処理の各々の計測結果を示すビット列に比べて、そのビット列から抽出された「最下位ビットを含む、前記最大量を表現可能なビット数分のビット列」の方が、データサイズが小さいことは明らかである。
【００２４】
したがって、前記データ転送装置は、２回目以降の前記サンプリング処理の各々の計測結果を示すビット列を、そのビット列から抽出された「最下位ビットを含む、前記最大量を表現可能なビット数分のビット列」に圧縮することができるとの効果を奏する。
【００２５】
例えば、前記サンプリング処理の各々の計測結果を示すビット列が４ｂｙｔｅである場合、前記変化の範囲が「−１２７」以上「１２７」以下であると、前記最大量を表現可能なデータサイズは１ｂｙｔｅだから、前記データ転送装置は、以下の圧縮を行う。すなわち、前記データ転送装置は、２回目以降の前記サンプリング処理の各々の計測結果を示す４ｂｙｔｅのビット列を、１ｂｙｔｅの前記サンプリングデータに圧縮する。
【００２６】
同様に、前記変化の範囲が「−１」以上「１」以下であると、前記最大量を表現可能なデータサイズは２ビットだから、前記データ転送装置は、２回目以降の前記サンプリング処理の各々の計測結果を示す４ｂｙｔｅのビット列を、２ビットに圧縮する。さらに、前記変化の範囲が「０」以上「１」以下であると、前記最大量を表現可能なデータサイズは１ビットだから、前記データ転送装置は、２回目以降の前記サンプリング処理の各々の計測結果を示す４ｂｙｔｅのビット列を、１ビットに圧縮する。
【００２７】
本発明の一態様に係るデータ転送装置において、前記圧縮部は、２回目以降の前記サンプリング処理の各々の計測結果の、直前の前記サンプリング処理の計測結果からの変化量を示すビット列を、前記サンプリングデータとしてもよい。
【００２８】
前記の構成によれば、前記データ転送装置は、２回目以降の前記サンプリング処理の各々の計測結果の、直前の前記サンプリング処理の計測結果からの変化量を示すビット列を、前記サンプリングデータとする。
【００２９】
ここで、前述の通り、前記サンプリングデータのデータサイズは、１回の前記制御周期において連続して実行される２つの前記サンプリング処理の計測結果の間の変化の最大量を表現可能なデータサイズである。それゆえ、２回目以降の前記サンプリング処理の各々の計測結果の、直前の前記サンプリング処理の計測結果からの変化量のデータサイズは、前記変化の前記最大量を表現可能なデータサイズ以下であり、つまり、前記サンプリングデータのデータサイズ以下である。
【００３０】
したがって、前記データ転送装置は、２回目以降の前記サンプリング処理の各々の計測結果の、直前の前記サンプリング処理の計測結果からの変化量を示すビット列を、前記サンプリングデータとして、前記制御装置に送信することができるとの効果を奏する。
【００３１】
本発明の一態様に係る制御装置は、本発明の一態様に係るデータ転送装置から、前記制御周期ごとに、前記データフレームを受信するデータフレーム受信部と、前記データフレーム受信部により受信された前記データフレームにおける、前記最大量を表現可能なデータサイズに圧縮された前記サンプリングデータから、２回目以降の前記サンプリング処理の各々の計測結果を復元する復元部と、を備えていてもよい。
【００３２】
前記の構成によれば、前記制御装置は、前記最大量を表現可能なデータサイズに圧縮された前記サンプリングデータから、２回目以降の前記サンプリング処理の各々の計測結果を復元する。
【００３３】
したがって、前記制御装置は、圧縮されていない場合に比べてデータサイズが抑制された前記サンプリングデータから、圧縮されていない場合と同様に、２回目以降の前記サンプリング処理の各々の計測結果を取得することができるとの効果を奏する。
【００３４】
本発明の一態様に係る制御装置において、前記復元部は、２回目以降の前記サンプリング処理の各々の計測結果を、直前の前記サンプリング処理の計測結果を示すビット列と、２回目以降の前記サンプリング処理の各々の計測結果を示す前記サンプリングデータとして前記データフレームに格納されているビット列と、を用いて、直前の前記サンプリング処理の計測結果からの変化量が前記最大量以下となるように、復元してもよい。
【００３５】
前記の構成によれば、前記制御装置は、２回目以降の前記サンプリング処理の各々の計測結果を、以下の方法によって復元する。すなわち、前記制御装置は、２回目以降の前記サンプリング処理の各々の計測結果を、直前の前記サンプリング処理の計測結果を示すビット列と、前記サンプリングデータとして前記データフレームに格納されているビット列と、を用いて復元する。その際、前記制御装置は、復元する「２回目以降の前記サンプリング処理の各々の計測結果」の、直前の前記サンプリング処理の計測結果からの変化量が前記最大量以下となるように、「２回目以降の前記サンプリング処理の各々の計測結果」を復元する。
【００３６】
したがって、前記制御装置は、２回目以降の前記サンプリング処理の各々の計測結果を、前記サンプリングデータとして前記データフレームに格納されているビット列を用いて、正確に復元することができるとの効果を奏する。
【００３７】
例えば、前記制御装置は、先ず、復元対象のサンプリングデータと、そのサンプリングデータを復元することで得られる計測結果を計測したサンプリング処理の直前に実行されたサンプリング処理で計測した計測結果を示すビット列と、を取得する。
【００３８】
次に、前記制御装置は、直前の前記サンプリング処理の計測結果を示すビット列から、「最下位ビットを含む、前記最大量を表現可能なビット数分のビット列」を取り出し、これを、復元対象のサンプリングデータと比較する。ここで、「最下位ビットを含む、前記最大量を表現可能なビット数分のビット列」を、「下位ビット列」と呼ぶことにする。また、直前の前記サンプリング処理の計測結果を示すビット列の、「最下位ビットを含む、前記最大量を表現可能なビット数分のビット列」以外のビット列を、直前の前記サンプリング処理の計測結果を示すビット列の「上位ビット列」と呼ぶことにする。つまり、「直前の前記サンプリング処理の計測結果を示すビット列の、上位ビット列」は、直前の前記サンプリング処理の計測結果を示すビット列の、下位ビット列以外のビット列である。
【００３９】
前記制御装置は、復元対象のサンプリングデータの、「直前の前記サンプリング処理の計測結果を示すビット列の、下位ビット列」からの変化量が、前記最大量以下となっていると判定すると、以下の処理を実行する。
【００４０】
すなわち、前記制御装置は、「直前の前記サンプリング処理の計測結果を示すビット列の、上位ビット列」と、「復元対象のサンプリングデータ」とを組み合わせたビット列を、「復元対象のサンプリングデータ」から復元された計測結果を示すビット列として生成する。具体的には、前記制御装置は、「直前の前記サンプリング処理の計測結果を示すビット列の、上位ビット列」を上位ビットとし、「復元対象のサンプリングデータ」を下位ビットとするビット列を、復元された計測結果を示すビット列として生成する。
【００４１】
前記制御装置は、復元対象のサンプリングデータが、「直前の前記サンプリング処理の計測結果を示すビット列の、下位ビット列」から、前記最大量を超えて減少していると判定すると、以下の処理を実行する。
【００４２】
すなわち、前記制御装置は先ず、復元対象のサンプリングデータは、「直前の前記サンプリング処理の計測結果を示すビット列の、下位ビット列」から減少した値ではなく、増加して桁上がりした値を示していると判定する。そして、前記制御装置は、「直前の前記サンプリング処理の計測結果を示すビット列の、上位ビット列」に１を加えたビット列を用いて、「復元対象のサンプリングデータ」から復元された計測結果を示すビット列を生成する。具体的には、前記制御装置は、「直前の前記サンプリング処理の計測結果を示すビット列の、上位ビット列」に１を加えたビット列を上位ビットとし、「復元対象のサンプリングデータ」を下位ビットとするビット列を生成する。
【００４３】
前記制御装置は、復元対象のサンプリングデータが、「直前の前記サンプリング処理の計測結果を示すビット列の、下位ビット列」から、前記最大量を超えて増加していると判定すると、以下の処理を実行する。
【００４４】
すなわち、前記制御装置は先ず、復元対象のサンプリングデータは、「直前の前記サンプリング処理の計測結果を示すビット列の、下位ビット列」から増加した値ではなく、減少して桁下がりした値を示していると判定する。そして、前記制御装置は、「直前の前記サンプリング処理の計測結果を示すビット列の、上位ビット列」から１を減じたビット列を用いて、「復元対象のサンプリングデータ」から復元された計測結果を示すビット列を生成する。具体的には、前記制御装置は、「直前の前記サンプリング処理の計測結果を示すビット列の、上位ビット列」から１を減じたビット列を上位ビットとし、「復元対象のサンプリングデータ」を下位ビットとするビット列を生成する。
【００４５】
本発明の一態様に係る設定装置は、本発明の一態様に係るデータ転送装置と、本発明の一態様に係る制御装置と、の少なくとも一方に対して、前記最大量を表現可能なデータサイズを設定する設定部を備えていてもよい。
【００４６】
前記の構成によれば、前記設定装置は、前記データ転送装置と前記制御装置との少なくとも一方に対して、前記最大量を表現可能なデータサイズを設定する。したがって、前記設定装置は、前記データ転送装置が、前記設定装置によって設定された「前記最大量を表現可能なデータサイズ」に圧縮した前記サンプリングデータを、前記制御装置に送信することができるようにするとの効果を奏する。または、前記設定装置は、前記制御装置が、前記設定装置によって設定された「前記最大量を表現可能なデータサイズ」に圧縮された前記サンプリングデータを復元することができるようにするとの効果を奏する。
【００４７】
本発明の一態様に係る設定装置は、前記データ転送装置が、１回の前記制御周期において実行する前記サンプリング処理の回数を示す情報を含む、前記データ転送装置についての設定情報を用いて、前記最大量を表現可能なデータサイズを算出する算出部をさらに備え、前記設定部は、前記算出部によって算出された前記最大量を表現可能なデータサイズを、前記データ転送装置と前記制御装置との少なくとも一方に対して設定してもよい。
【００４８】
前記の構成によれば、前記設定装置は、前記設定情報を用いて、前記最大量を算出し、つまり、「１回の前記制御周期において連続して実行される２つの前記サンプリング処理の計測結果の間の変化の最大量」を表現可能なデータサイズを算出する。
【００４９】
ここで、前記設定情報は、前記「１回の前記制御周期において実行する前記サンプリング処理の回数を示す情報」に加えて、例えば、以下の情報を含んでいてもよい。すなわち、前記設定情報は、「前記データ転送装置が、１回のサンプリング処理において受信し得るパルス信号の数」を示す情報を含んでいてもよい。
【００５０】
ここで、前述の通り、「前記データ転送装置が、１回のサンプリング処理において受信し得るパルス信号の数」は、エンコーダ等のパルス信号生成装置のスペックおよびアプリケーションの少なくとも一方により算出することができる。具体的には、「前記データ転送装置が、１回のサンプリング処理において受信し得るパルス信号の数」は、スペックおよびアプリケーションの少なくとも一方により予め決められた、「パルス信号生成装置の、分解能および最高回転数」から、算出することができる。
【００５１】
それゆえ、前記設定情報は、前記「受信し得るパルス信号の数」を示す情報に代えて、スペックおよびアプリケーションの少なくとも一方により予め決められた、「パルス信号生成装置の、分解能および最高回転数」を示す情報を含んでいてもよい。
【００５２】
また、前記設定情報は、「カウンタユニットである前記データ転送装置のパルスカウント方式が単方向か、双方向かを示すパルスカウント方式種別」を示す情報を含んでいてもよい。前記パルスカウント方式種別は、カウンタユニットである前記データ転送装置にパルス信号を出力するエンコーダ等のパルス信号生成装置の出力するパルス信号が、単方向のパルス信号であるのか、または、双方向のパルス信号であるのかを示してもよい。
【００５３】
前記パルスカウント方式が双方向である場合、１回の前記制御周期において連続して実行される２つの前記サンプリング処理の計測結果の間の変化は、正負のいずれでもあり得る。例えば、「１回の前記サンプリング処理においてカウントし得る前記パルス数の絶対値」が「１２７」である場合、１回の前記制御周期において連続して実行される２つの前記サンプリング処理の計測結果の間の変化は、「−１２７〜１２７」と示すことができる。したがって、前記最大量を表現可能なデータサイズは、「１回の前記サンプリング処理においてカウントし得る前記パルス数の絶対値」を表現可能なビット数に１ビットを加えたビット数となる。
【００５４】
前記パルスカウント方式が単方向である場合、１回の前記制御周期において連続して実行される２つの前記サンプリング処理の計測結果の間の変化は、常に正または常に負である。例えば、「１回の前記サンプリング処理においてカウントし得る前記パルス数の絶対値」が「２５５」である場合、１回の前記制御周期において連続して実行される２つの前記サンプリング処理の計測結果の間の変化は、「０〜２５５」と示すことができる。したがって、前記最大量を表現可能なデータサイズは、「１回の前記サンプリング処理においてカウントし得る前記パルス数の絶対値」を表現可能なビット数となる。
【００５５】
そして、「１回の前記サンプリング処理においてカウントし得る前記パルス数の絶対値」は、「１回の前記サンプリング処理当たりの期間を示すサンプリング周期を、前記パルス信号の最短周期によって除した値」に対して小数点以下を繰り上げた値である。また、前記サンプリング周期は、制御周期が分かれば、前記設定情報が含む「１回の前記制御周期において実行する前記サンプリング処理の回数を示す情報」から算出することができる。さらに、「前記パルス信号の最短周期」は、「前記最高回転数を６０で除した値に前記分解能を乗じた値」の逆数として算出することができる。上述の通り、最大回転速度は、エンコーダ等のパルス信号生成装置のスペック（仕様、性能）から決めることができ、また、アプリケーション（使用用途）から決めることもできる。
【００５６】
したがって、前記設定装置は、前記設定情報を用いて、前記最大量を表現可能なデータサイズを正確に算出することができるとの効果を奏する。
【００５７】
上記の課題を解決するために、本発明の一態様に係るデータ転送装置の制御方法は、１回の制御周期において複数回実行されたサンプリング処理の各々の計測結果を示す、複数のサンプリングデータを、１データフレームに格納して、前記制御周期ごとに制御装置へと送信するデータ転送装置の制御方法であって、前記複数回実行されたサンプリング処理の各々の計測結果を取得する取得ステップと、１回の前記制御周期において連続して実行される２つの前記サンプリング処理の計測結果の間の変化の最大量が予め決まっている場合、前記取得ステップにて取得された複数の前記計測結果のうち、２回目以降の前記サンプリング処理の各々の計測結果を、前記最大量を表現可能なデータサイズの前記サンプリングデータに圧縮する圧縮ステップと、を含んでいる。
【００５８】
前記の構成によれば、前記制御方法は、前記最大量が予め決まっている場合、２回目以降の前記サンプリング処理の各々の計測結果を示す前記サンプリングデータを、前記最大量を表現可能なデータサイズに圧縮して、前記制御装置へと送信する。
【００５９】
したがって、前記制御方法は、２回目以降の前記サンプリング処理の各々の計測結果を圧縮しない場合に比べて、前記制御周期ごとに前記制御装置へと送信する前記データフレームのデータサイズを、抑制することができるとの効果を奏する。
【００６０】
ここで、前記変化が正負のいずれでもあり得る場合、例えば、前記変化の範囲が「−１２７」以上「１２７」以下である場合、「１２７」を表現可能な７ビットに１ビットを加えた８ビット、つまり、１ｂｙｔｅが、前記最大量を表現可能なデータサイズとなる。同様に、例えば、前記変化の範囲が「−１」以上「１」以下である場合、「１」を表現可能な１ビットに１ビットを加えた２ビットが、前記最大量を表現可能なデータサイズとなる。
【００６１】
また、前記変化が常に正または常に負である場合、例えば、前記変化の範囲が「０」以上「２５５」以下である場合、「２５５」を表現可能な８ビット、つまり、１ｂｙｔｅが、前記最大量を表現可能なデータサイズとなる。同様に、例えば、前記変化の範囲が「０」以上「１」以下である場合、「１」を表現可能な１ビットが、前記最大量を表現可能なデータサイズとなる。
【発明の効果】
【００６２】
本発明の一態様によれば、オーバーサンプリングを実施しても、制御周期ごとに制御装置へと送信するデータフレームのデータサイズを抑制することができるという効果を奏する。
【図面の簡単な説明】
【００６３】
【図１】本発明の実施形態１に係るカウンタユニット等の要部構成を示すブロック図である。
【図２】図１のカウンタユニットを含む制御システムの全体概要を示す図である。
【図３】図２の制御システムの適用例を示す図である。
【図４】図２の制御システムが実行するデータ圧縮処理の概要を説明する図である。
【図５】図４のデータ圧縮処理が実現する効果を説明する表である。
【図６】図１のカウンタユニットが実行する処理の概要を示す図である。
【図７】図２の制御システムにおいて制御周期ごとに転送されるデータフレームの概要を説明する図である。
【図８】２回目以降のサンプリング処理で計測した計測結果を示すサンプリングデータのデータサイズを説明する図である。
【図９】１回のサンプリング処理において計測し得る計測結果の絶対値を説明する図である。
【図１０】１回のサンプリング処理において計測し得る計測結果を説明する図である。
【図１１】図１のＰＬＣが実行する処理の概要を示す図である。
【図１２】図１のＰＬＣが実行するデータ復元処理の詳細を示す図である。
【図１３】圧縮サイズが１ｂｙｔｅで、パルスカウント方式が双方向である場合のデータ復元処理例を示す図である。
【図１４】圧縮サイズが１ｂｙｔｅで、パルスカウント方式が双方向である場合のデータ復元処理例における、桁上げ／桁下げ処理の具体例を示す図である。
【図１５】圧縮サイズが２ｂｉｔで、パルスカウント方式が双方向である場合のデータ復元処理例を示す図である。
【図１６】圧縮サイズが２ｂｉｔで、パルスカウント方式が双方向である場合のデータ復元処理例における、桁上げ／桁下げ処理の具体例を示す図である。
【図１７】圧縮サイズが１ｂｉｔで、パルスカウント方式が単方向である場合のデータ復元処理例を示す図である。
【図１８】図１のツールが圧縮サイズを算出する際に利用する情報の一例を示す図である。
【図１９】図２の制御システムが実行するデータ圧縮処理について、下位ビット列を抽出する場合と差分を算出する場合とを対比して示す図である。
【図２０】図２の制御システムにおいて制御周期ごとに転送されるデータフレームに格納されている情報の一例を示す図である。
【図２１】図１のアナログユニットが実行する処理の概要を示す図である。
【図２２】図１のカウンタユニットと図１のＰＬＣとの接続例を示す図である。
【発明を実施するための形態】
【００６４】
〔実施形態１〕
以下、本発明の一側面に係る実施の形態（以下、「本実施形態」とも表記する）を、図１から図２２に基づいて説明する。なお、図中同一または相当部分には同一符号を付してその説明は繰返さない。本実施の形態においては、例えばカウンタユニット１０をデータ転送装置の典型例として説明を行う。また、アナログユニット６０もデータ転送装置の一例であり、詳細は後述する。本発明の一態様に係るカウンタユニット１０についての理解を容易にするため、先ず、カウンタユニット１０を含む制御システム１の概要を、図２を用いて説明する。
【００６５】
以下の説明において、「ｎ」は「２」以上の整数を表すものとし、「ｍ」は「２」以上で「ｎ」以下の整数を表すものとする。また、１６進法で表記した数値は、１６進数を表す「０ｘ」（ゼロエックス）を数値の前に付けて、１６進法で表記した数値であることを示し、２進法で表記した数値は、２進数を表す「ｂ」（ビー）を数値の前に付けて、２進法で表記した数値であることを示す。
【００６６】
§１．適用例
（制御システムの全体概要）
図２は、カウンタユニット１０を含む制御システム１の全体概要を示す図である。図２に示すように、制御システム１は、データ転送装置であるカウンタユニット１０と、制御装置（コントローラ）であるＰＬＣ（Programmable Logic Controller）２０と、を含んでいる。制御システム１はさらに、データ転送装置であるアナログユニット６０を含んでいてもよい。制御システム１は、マスタ装置としてのＰＬＣ２０と、マスタ装置にネットワーク（フィールドネットワーク５０）を介して接続されるスレーブ装置としてのカウンタユニット１０およびアナログユニット６０と、を含むマスタスレーブ制御システムである。ＰＬＣ２０は、フィールドネットワーク５０を介したデータ伝送を管理しているという意味で「マスタ装置」と呼ばれる。
【００６７】
ＰＬＣ２０は、制御システム１全体を制御する制御装置（コントローラ）であり、カウンタユニット１０およびアナログユニット６０の各々と通信可能に接続されている。ＰＬＣ２０は、カウンタユニット１０およびアナログユニット６０の各々を介して、入力デバイス（計測デバイス）であるエンコーダ４０およびセンサ７０からの情報を入力データとして取得する。ＰＬＣ２０は、予め組み込まれたユーザプログラムに従って、取得した入力データを用いた演算処理を実行する。ＰＬＣ２０は、前記演算処理を実行して、制御システム１に対する制御内容を決定し、例えば、アクチュエータなどの出力デバイス（不図示）への制御内容を決定し、その制御内容に対応する制御データを、前記出力デバイスへと出力する。ＰＬＣ２０には、例えば、不図示の表示部および操作部が接続されてもよい。表示部は、画像を表示可能な液晶パネル等で構成され、また、操作部は、典型的には、タッチパネル、キーボード、マウス等で構成される。
【００６８】
フィールドネットワーク５０は、ＰＬＣ２０が受信し、またはＰＬＣ２０が送信する各種データを伝送し、例えば、ＥｔｈｅｒＣＡＴ（登録商標）、ＰＲＯＦＩＮＥＴ（登録商標）、ＭＥＣＨＡＴＲＯＬＩＮＫ（登録商標）−ＩＩＩ、Ｐｏｗｅｒｌｉｎｋ、ＳＥＲＣＯＳ（登録商標）−ＩＩＩ、ＣＩＰ  Ｍｏｔｉｏｎである。また、フィールドネットワーク５０は、例えば、ＥｔｈｅｒＮｅｔ／ＩＰ（登録商標）、ＤｅｖｉｃｅＮｅｔ、ＣｏｍｐｏＮｅｔ（登録商標）などであってもよい。なお、以下では、フィールドネットワーク５０上をデータフレームが順次転送されることで、ＰＬＣ２０とスレーブ装置との間でデータが送受信される制御システム１について説明を行う。すなわち、フィールドネットワーク５０上をデータフレームが順次転送されることで、ＰＬＣ２０とカウンタユニット１０との間でデータが送受信され、また、ＰＬＣ２０とアナログユニット６０との間でデータが送受信される。フィールドネットワーク５０上をデータフレームが順次転送されることで、複数のスレーブ装置の間で、つまり、カウンタユニット１０とアナログユニット６０との間で、データが送受信されてもよい。
【００６９】
カウンタユニット１０は、エンコーダ４０が生成したパルス信号を受信し、受信したパルス信号の、サンプリング周期Ｓｍｃごとのパルス数（以下、「カウント値Ｃｔ」とも称する）を示すデータをＰＬＣ２０へと送信する、データ転送装置（通信カプラ）である。
【００７０】
カウンタユニット１０は、ＰＬＣ２０をマスタ装置とするネットワーク（フィールドネットワーク５０）におけるスレーブ装置であり、フィールドネットワーク５０を介して、ＰＬＣ２０と通信可能に接続されている。カウンタユニット１０は、ＰＬＣ２０との間で、一定の通信周期ごとに、具体的には、ＰＬＣ２０の制御周期Ｓｃｔごとに、データ（より具体的には、データフレーム）を送受信する。
【００７１】
また、カウンタユニット１０は、エンコーダ４０と通信可能に接続されており、エンコーダ４０が生成したパルス信号を入力として受け付ける。カウンタユニット１０は、エンコーダ４０から受け付けたパルス信号の、サンプリング周期Ｓｍｃごとのパルス数（カウント値Ｃｔ）をカウントする処理を実行し、つまり、サンプリング処理を実行する。カウンタユニット１０は、各々が、サンプリング周期Ｓｍｃごとのカウント値Ｃｔを示す、複数のサンプリングデータＳｄを生成し、それら複数のサンプリングデータＳｄを、１つのデータフレームに格納して、ＰＬＣ２０へと送信する（転送する）。
【００７２】
ここで、サンプリング周期Ｓｍｃとは、カウンタユニット１０が実行する「１回のサンプリング処理当たりの時間間隔」であり、サンプリング周期Ｓｍｃは制御周期Ｓｃｔよりも小さい。カウンタユニット１０は、１回の制御周期Ｓｃｔにおいてサンプリング処理を複数回実行し、言い換えれば、オーバーサンプリングを実行する。そして、カウンタユニット１０は、各々が、各サンプリング処理において計測したカウント値Ｃｔを示す、複数のサンプリングデータＳｄを、１データフレームに格納して、制御周期ＳｃｔごとにＰＬＣ２０へと送信する。カウンタユニット１０は、１回の制御周期Ｓｃｔにおいてｎ回実行したサンプリング処理の各々の計測結果（カウント値Ｃｔ）を示す、ｎ個のサンプリングデータＳｄを、１データフレームに格納して、制御周期ＳｃｔごとにＰＬＣ２０へと送信する。
【００７３】
エンコーダ４０は、カウンタユニット１０へ計測結果を出力するデバイスであり、具体的には、計測量に応じたパルス信号をカウンタユニット１０へと出力するパルス信号生成装置（計測デバイス）である。エンコーダ４０は、例えば、コンベヤに取り付けられ、コンベヤの移動量に応じて、つまり、ワークの移動量に応じて、パルス信号を生成する。エンコーダ４０は、コンベヤ（つまり、ワーク）が所定量移動するごとに、パルス波をカウンタユニット１０に出力する。
【００７４】
アナログユニット６０は、センサ７０が生成したアナログ信号を受信し、受信したアナログ信号の、サンプリング周期Ｓｍｃごとの値（以下、「アナログ値Ａｌ」とも称する）を示すデータをＰＬＣ２０へと送信する、データ転送装置（通信カプラ）である。
【００７５】
アナログユニット６０は、ＰＬＣ２０をマスタ装置とするネットワーク（フィールドネットワーク５０）におけるスレーブ装置であり、フィールドネットワーク５０を介して、ＰＬＣ２０と通信可能に接続されている。アナログユニット６０は、ＰＬＣ２０との間で、一定の通信周期ごとに、具体的には、ＰＬＣ２０の制御周期Ｓｃｔごとに、データ（より具体的には、データフレーム）を送受信する。
【００７６】
また、アナログユニット６０は、センサ７０と通信可能に接続されており、センサ７０が生成したアナログ信号を入力として受け付ける。アナログユニット６０は、センサ７０から受け付けたアナログ信号の、サンプリング周期Ｓｍｃごとの値（アナログ値Ａｌ）を計測する処理を実行し、つまり、サンプリング処理を実行する。アナログユニット６０は、各々が、サンプリング周期Ｓｍｃごとのアナログ値Ａｌを示す、複数のサンプリングデータＳｄを生成し、それら複数のサンプリングデータＳｄを、１つのデータフレームに格納して、ＰＬＣ２０へと送信する（転送する）。
【００７７】
ここで、アナログユニット６０のサンプリング周期Ｓｍｃ、つまり、アナログユニット６０が実行する「１回のサンプリング処理当たりの時間間隔」は、制御周期Ｓｃｔよりも小さい。アナログユニット６０は、１回の制御周期Ｓｃｔにおいてサンプリング処理を複数回実行し、言い換えれば、オーバーサンプリングを実行する。そして、アナログユニット６０は、各々が、各サンプリング処理において計測したアナログ値Ａｌを示す、複数のサンプリングデータＳｄを、１データフレームに格納して、制御周期ＳｃｔごとにＰＬＣ２０へと送信する。アナログユニット６０は、１回の制御周期Ｓｃｔにおいてｎ回実行したサンプリング処理の各々の計測結果（アナログ値Ａｌ）を示す、ｎ個のサンプリングデータＳｄを、１データフレームに格納して、制御周期ＳｃｔごとにＰＬＣ２０へと送信する。
【００７８】
センサ７０は、アナログユニット６０へと計測結果を出力するデバイスであり、具体的には、計測量に応じたアナログ信号をカウンタユニット１０へと出力するアナログ信号生成装置（計測デバイス）であり、例えば、測長センサである。センサ７０は、例えば、コンベヤの頭上に取り付けられ、コンベヤに載置されたワークとの間の距離に応じて、アナログ信号を生成する。
【００７９】
図２に例示する制御システム１において、ＰＬＣ２０およびカウンタユニット１０の各々には、例えばＵＳＢ（Universal Serial Bus）ケーブルである通信ケーブルを介して、ツール３０（Ａ）およびツール３０（Ｂ）が接続されている。以下の説明において、ツール３０（Ａ）およびツール３０（Ｂ）の各々を区別する必要がない場合は単に「ツール３０」と称する。
【００８０】
ツール３０は、制御システム１に対する各種の設定情報などを生成し、生成した設定情報を、制御システム１を構成する各機器に設定する設定装置である。ツール３０は、典型的には、汎用のコンピュータで構成される。例えば、ツール３０で実行される情報処理プログラムは、不図示のＣＤ−ＲＯＭ（Compact Disk-Read Only Memory）に格納されて流通してもよい。このＣＤ−ＲＯＭに格納されたプログラムは、図示しないＣＤ−ＲＯＭ駆動装置によって読取られ、ツール３０のハードディスクなどへ格納される。あるいは、ツール３０は、上位のホストコンピュータなどから、ネットワークを通じて、前記ＤＶＤ−ＲＯＭに格納されたプログラムと同様のプログラムをダウンロードするように構成してもよい。また、ツール３０は、ＨＭＩ（Human Machine Interface）により実現されてもよい。
【００８１】
ツール３０は、例えば表示部を備え、制御システム１についての所定の情報を表示する。また、ツール３０は、例えばユーザから、ツール３０は、ユーザ操作を受け付け、受け付けたユーザ操作に応じて、制御システム１（例えば、ＰＬＣ２０、カウンタユニット１０、および、アナログユニット６０の各々）の各種の設定を変更する。また、ツール３０は、受け付けたユーザ操作から、カウンタユニット１０およびアナログユニット６０の各々の設定情報を生成し、つまり、ユーザ操作に応じた設定情報を取得する。
【００８２】
設定情報は、例えば、「カウンタユニット１０およびアナログユニット６０の各々が、１回の制御周期Ｓｃｔにおいて実行するサンプリング処理の回数を示す情報」を含んでいる。「カウンタユニット１０およびアナログユニット６０の各々が、１回の制御周期Ｓｃｔにおいて実行するサンプリング処理の回数を示す情報」は、カウンタユニット１０およびアナログユニット６０の各々のサンプリング周期Ｓｍｃ、および、制御周期Ｓｃｔを示す情報であってもよい。
【００８３】
また、設定情報は、例えば、「カウンタユニット１０が、１回のサンプリング処理において受信し得るパルス信号の数」および「１サンプリング周期Ｓｍｃで変化し得るアナログ値Ａｌの変化量」を示す情報を含んでいてもよい。ここで、「カウンタユニット１０が、１回のサンプリング処理において受信し得るパルス信号の数」は、エンコーダ４０等のパルス信号生成装置のスペックおよびアプリケーション（パルス信号生成装置の使用用途）の少なくとも一方により算出することができる。パルス信号生成装置からのパルス信号をカウントする場合、カウンタユニット１０が単位時間あたりに受信し得るパルス信号の数は、パルス信号生成装置の、分解能と回転速度（最大回転速度）とによって、予め決定される。そして、最大回転速度は、パルス信号生成装置のスペック（仕様、性能）から決めることができ、また、アプリケーションから決めることもできる。例えば、アプリケーションが、「パルス信号生成装置が３６０分解能で最大でも６０ｒｐｍで回転するような低速アプリケーション」であれば、パルス信号生成装置がスペック的にはもっと高速に回転できるとしても、最大回転速度は６０ｒｐｍとして想定すればよい。それゆえ、「カウンタユニット１０が、１回のサンプリング処理において受信し得るパルス信号の数」は、スペックおよびアプリケーションの少なくとも一方により予め決められた、「パルス信号生成装置の、分解能および最高回転数」から、算出することができる。したがって、設定情報は、「カウンタユニット１０が、１回のサンプリング処理において受信し得るパルス信号の数」を示す情報に代えて、スペックおよびアプリケーションの少なくとも一方により予め決められた、「パルス信号生成装置の、分解能および最高回転数」を示す情報を含んでいてもよい。
【００８４】
さらに、設定情報は、「カウンタユニット１０のパルスカウント方式が単方向か、双方向かを示すパルスカウント方式種別」を示す情報を含んでいてもよい。前記パルスカウント方式種別は、エンコーダ４０等のパルス信号生成装置の出力するパルス信号が、単方向のパルス信号であるのか、または、双方向のパルス信号であるのかを示してもよい。
【００８５】
ツール３０は、取得した設定情報を用いて、ＰＬＣ２０がカウンタユニット１０およびアナログユニット６０の各々から受信するデータフレームに係る情報を、特に、サンプリングデータＳｄのデータサイズを示す情報を、生成する。ツール３０は、生成した「データフレームに係る情報」を、ＰＬＣ２０、カウンタユニット１０、および、アナログユニット６０の少なくとも１つに対して設定する。
【００８６】
例えば、ツール３０は、「カウンタユニット１０が、１回のサンプリング処理において受信し得るパルス信号の数」、カウンタユニット１０のサンプリング周期Ｓｍｃ、パルスカウント方式等を示す、カウンタユニット１０の設定情報を取得する。前述の通り、「カウンタユニット１０が、１回のサンプリング処理において受信し得るパルス信号の数」を示す情報は、エンコーダ４０の分解能および最高回転数を示す情報であってもよい。
【００８７】
ツール３０は、取得したカウンタユニット１０の設定情報と制御周期Ｓｃｔとから、カウンタユニット１０がＰＬＣ２０に送信するデータフレームに係る情報を、特に、サンプリングデータＳｄのデータサイズを示す情報を、生成する。例えば、ツール３０は、「カウンタユニット１０が、１回の制御周期Ｓｃｔにおいて、２回目以降に実行したサンプリング処理」の各々の計測結果を示す、サンプリングデータＳｄ（２）〜Ｓｄ（ｎ）の各々のデータサイズを算出する。以下の説明において、サンプリングデータＳｄ（２）〜Ｓｄ（ｎ）の各々のデータサイズは、「圧縮サイズ」とも称する。ツール３０は、算出した圧縮サイズを、カウンタユニット１０が送信するデータフレームに係る情報として、ＰＬＣ２０およびカウンタユニット１０の少なくとも一方に対して設定する（通知する）。
【００８８】
同様に、ツール３０は、アナログユニット６０の設定情報と制御周期Ｓｃｔとを取得し、アナログユニット６０の設定情報と制御周期Ｓｃｔとから、アナログユニット６０がＰＬＣ２０に送信するデータフレームに係る情報を生成する。例えば、ツール３０は、「アナログユニット６０が、１回の制御周期Ｓｃｔにおいて、２回目以降に実行したサンプリング処理」の各々の計測結果を示す、サンプリングデータＳｄ（２）〜Ｓｄ（ｎ）の各々のデータサイズ（圧縮サイズ）を算出する。ツール３０は、算出した圧縮サイズを、ＰＬＣ２０およびアナログユニット６０の少なくとも一方に対して設定する。
【００８９】
（制御システムの適用例）
図３は、図２に例示した制御システム１の適用例を示す図である。図３の（Ａ）に示すように、制御システム１は、例えば、コンベアに載せられて移動するワーク８０の形状を検査するのに用いられる。エンコーダ４０は、コンベアの位置に、つまり、ワーク８０の位置に応じたパルス信号を出力し、センサ７０は、ワーク８０までの距離に応じたアナログ信号を出力する。
【００９０】
図３の（Ｂ）に示すように、コンベア速度が一定でない場合、距離（負方向）を縦軸として、時間を横軸とすると、コンベア速度（つまり、ワーク８０の位置の単位時間あたりの変化）が変化することにより、図３の（Ｃ）に示すように、計測するワーク８０の形状が歪む。これに対して、図３の（Ｄ）に示すように、距離（負方向）を縦軸として、位置を横軸とすると、ワーク位置およびコンベア速度に関わらず同じデータとなり、パターンマッチングが容易にできる。
【００９１】
（制御システムにおけるデータ転送装置の役割）
これまでに図２および図３を用いて説明してきたように、カウンタユニット１０およびアナログユニット６０の各々は、１回の制御周期Ｓｃｔにおいてサンプリング処理を複数回（例えば、ｎ回）実行する。カウンタユニット１０およびアナログユニット６０の各々は、実行した複数のサンプリング処理の各々の計測結果に対応する複数のサンプリングデータＳｄをＰＬＣ２０に送信する。つまり、カウンタユニット１０およびアナログユニット６０の各々は、制御周期Ｓｃｔごとに、サンプリング回数分のサンプリングデータＳｄを、ＰＬＣ２０に送信する。例えば、１回の制御周期Ｓｃｔ中にサンプリング処理がｎ回実行される場合、ｎ回のサンプリング処理の各々において計測されたｎ個の計測結果（例、ｎ個のカウント値Ｃｔ）を示すｎ個のサンプリングデータＳｄが、制御周期Ｓｃｔごとに、ＰＬＣ２０に送信される。
【００９２】
このようなオーバーサンプリングの実施に際しては、一般に、サンプリングデータＳｄのデータサイズがシステム内の制約上問題となる。特に、制御システム１のように、カウンタユニット１０とアナログユニット６０とを組み合わせて使用する場合、１回の制御周期Ｓｃｔにおいてフィールドネットワーク５０上を転送されるデータ（より正確には、データフレーム）のデータサイズが膨大になる。
【００９３】
例えば、制御周期Ｓｃｔが１ｍｓで、サンプリング周期Ｓｍｃが１０μｓである場合、カウンタユニット１０は、１制御周期Ｓｃｔあたり１００個のカウント値Ｃｔを生成し、１制御周期Ｓｃｔあたり１００個のサンプリングデータＳｄをＰＬＣ２０に送信する。カウンタユニット１０が制御周期Ｓｃｔごとに繰り返しＰＬＣ２０に送信するデータフレームのデータサイズは、１個のサンプリングデータＳｄが４ｂｙｔｅであるとすると、１００倍した４００ｂｙｔｅ以上となる。
【００９４】
同様に、制御周期Ｓｃｔが１ｍｓで、サンプリング周期Ｓｍｃが１０μｓである場合、アナログユニット６０は、１制御周期Ｓｃｔあたり１００個のカウント値Ｃｔを生成し、１制御周期Ｓｃｔあたり１００個のサンプリングデータＳｄをＰＬＣ２０に送信する。アナログユニット６０が制御周期Ｓｃｔごとに繰り返しＰＬＣ２０に送信するデータフレームのデータサイズは、１個のサンプリングデータＳｄが２ｂｙｔｅであるとすると、１００倍した２００ｂｙｔｅ以上となる。
【００９５】
ここで、制御システム１において、カウンタユニット１０およびアナログユニット６０の各々が制御周期Ｓｃｔごとに繰り返しＰＬＣ２０に送信するデータフレームのデータサイズは、例えば、上限が１０２４ｂｙｔｅまでと設定されている。また、フィールドネットワーク５０全体に対しても、フィールドネットワーク５０上を制御周期Ｓｃｔごとに繰り返し転送されるデータ（より正確には、データフレーム）のデータサイズは、例えば、上限が５７３６ｂｙｔｅまでと設定されている。
【００９６】
そこで、カウンタユニット１０およびアナログユニット６０の各々は、１制御周期ＳｃｔにＰＬＣ２０に送信するサンプリングデータＳｄのデータサイズを圧縮して、システム上のデータサイズ制限の問題を緩和する。
【００９７】
（データ圧縮）
図４は、制御システム１において実行されるデータ圧縮処理の概要を説明する図である。図４の（Ａ）に示すように、カウンタユニット１０およびアナログユニット６０の各々は、１回の制御周期Ｓｃｔ（「スキャンタイム」とも称する）においてサンプリング処理を複数回実行する。カウンタユニット１０は、１回の制御周期Ｓｃｔ中に複数回実行するサンプリング処理の各々においてカウント値Ｃｔを取得し、また、アナログユニット６０は、１回の制御周期Ｓｃｔ中に複数回実行するサンプリング処理の各々においてアナログ値Ａｌを取得する。
【００９８】
図４の（Ｂ）に示すように、カウンタユニット１０およびアナログユニット６０の各々は、ＰＬＣ２０に制御周期Ｓｃｔごとに送信するサンプリングデータＳｄを圧縮する。具体的には、カウンタユニット１０およびアナログユニット６０の各々が、ＰＬＣ２０に制御周期Ｓｃｔごとに送信するサンプリングデータＳｄは、１つ目のサンプリングデータＳｄ（１）のみがフルサイズのデータである。残りのサンプリングデータＳｄ（２）〜Ｓｄ（ｎ）の各々は圧縮サイズのデータである。
【００９９】
フルサイズとは、例えば、１回目のサンプリング処理の計測結果（例えば、カウント値Ｃｔ（１）またはアナログ値Ａｌ（１））をそのまま格納したサンプリングデータＳｄのデータサイズであり、以下の説明においては、特に断らない限り「４ｂｙｔｅ」である。
【０１００】
これに対して、「残りのサンプリングデータＳｄ」のデータサイズである「圧縮サイズ」は、１サンプリング周期Ｓｍｃに変化し得る計測結果の表記に足るデータサイズ（ビット数）である。カウンタユニット１０およびアナログユニット６０の各々は、２回目以降の各々のサンプリング処理の計測結果を示すビット列を、「１サンプリング周期Ｓｍｃに変化し得る計測結果の表記に足るサイズ（つまり、圧縮サイズ）」に圧縮する。「圧縮サイズ」について、詳細は図７から図１０を用いて後述する。
【０１０１】
すなわち、カウンタユニット１０は、１回の制御周期Ｓｃｔにおいてサンプリング処理を複数回実行し、実行した複数のサンプリング処理の各々においてカウントしたカウント値Ｃｔを示すサンプリングデータＳｄを、制御周期Ｓｃｔごとに、ＰＬＣ２０に送信する。カウンタユニット１０は、「各々がカウント値Ｃｔ（２）〜Ｃｔ（ｎ）を示す、サンプリングデータＳｄ（２）〜Ｓｄ（ｎ）」の各々のデータサイズを、圧縮サイズに圧縮して、制御周期Ｓｃｔごとに、ＰＬＣ２０に送信する。
【０１０２】
同様に、アナログユニット６０は、１回の制御周期Ｓｃｔにおいてサンプリング処理を複数回実行し、実行した複数のサンプリング処理の各々において計測したアナログ値Ａｌを示すサンプリングデータＳｄを、制御周期Ｓｃｔごとに、ＰＬＣ２０に送信する。アナログユニット６０は、「各々がアナログ値Ａｌ（１）〜Ａｌ（ｎ）を示す、サンプリングデータＳｄ（２）〜Ｓｄ（ｎ）」の各々のデータサイズを、圧縮サイズに圧縮して、制御周期Ｓｃｔごとに、ＰＬＣ２０に送信する。
【０１０３】
（データ転送装置が奏する効果）
図５は、カウンタユニット１０およびアナログユニット６０の各々が実現する効果を説明する表である。図５において、カウンタユニット１０およびアナログユニット６０の各々が１回のサンプリング処理で計測した計測結果のデータサイズは、４ｂｙｔｅであり、つまり、サンプリングデータＳｄのフルサイズは４ｂｙｔｅであるものとする。例えば、制御周期Ｓｃｔが１ｍｓで、サンプリング周期Ｓｍｃが１０μｓである場合、つまり、１００個のサンプリングデータＳｄを制御周期ＳｃｔごとにＰＬＣ２０に送信する場合、従来技術のデータサイズに対し、本実施形態では以下のデータサイズになる。
【０１０４】
すなわち、従来は、４ｂｙｔｅのサンプリングデータＳｄを１００個、つまり、１ｃｈあたり（例えば、１データフレームあたり）４００ｂｙｔｅのデータを、制御周期Ｓｃｔごとに繰り返しＰＬＣ２０に送信していた。
【０１０５】
これに対して、カウンタユニット１０は、１回の制御周期Ｓｃｔにおいて１回目に実行したサンプリング処理のカウント値Ｃｔ（１）を示す１個目のサンプリングデータＳｄ（１）のデータサイズは４ｂｙｔｅのままとする。そして、カウンタユニット１０は、残りの９９個目のサンプリングデータＳｄ（２）〜Ｓｄ（９９）の各々のデータサイズを圧縮する。
【０１０６】
例えば、カウンタユニット１０が残りの９９個目のサンプリングデータＳｄの各々のデータサイズを１ｂｙｔｅに圧縮する場合、カウンタユニット１０が制御周期ＳｃｔごとにＰＬＣ２０に送信する１つデータフレームのデータサイズは、１０３ｂｙｔｅとなる。これは、従来までの４００ｂｙｔｅの約２６％に相当する。
【０１０７】
また、カウンタユニット１０が残りの９９個目のサンプリングデータＳｄの各々のデータサイズを２ｂｉｔに圧縮する場合、カウンタユニット１０が制御周期ＳｃｔごとにＰＬＣ２０に送信する１つデータフレームのデータサイズは、約２９ｂｙｔｅとなる。これは、従来までの４００ｂｙｔｅの約７．２５％に相当する。
【０１０８】
§２．構成例
これまで、図２から図５を用いて、制御システム１の概要を説明してきた。次に、カウンタユニット１０、アナログユニット６０、ＰＬＣ２０、および、ツール３０について、その詳細を説明する。図１等を用いて以下に詳細を説明するカウンタユニット１０について、最初に概要を整理しておけば、以下の通りである。
【０１０９】
カウンタユニット１０（データ転送装置）は、１回の制御周期Ｓｃｔにおいて複数回実行されたサンプリング処理の各々の計測結果（カウント値Ｃｔ）を示す、複数のサンプリングデータＳｄを、１データフレームに格納して、制御周期ＳｃｔごとにＰＬＣ２０（制御装置）へと送信するデータ転送装置である。カウンタユニット１０は、取得部１２０と、圧縮部１３０と、を備えている。取得部１２０は、複数回（例、ｎ回）実行されたサンプリング処理の各々の計測結果（例、カウント値Ｃｔ（１）〜Ｃｔ（ｎ）の各々）を取得する。１回の制御周期Ｓｃｔにおいて連続して実行される２つのサンプリング処理の計測結果（例、カウント値Ｃｔ（ｍ）とカウント値Ｃｔ（ｍ−１））の間の変化の最大量Ｖｍａｘが予め決まっている場合、圧縮部１３０は、以下の圧縮処理を実行する。すなわち、圧縮部１３０は、２回目以降のサンプリング処理の各々の計測結果を、「１回の制御周期Ｓｃｔにおいて連続して実行される２つのサンプリング処理の計測結果の間の変化の最大量Ｖｍａｘ」を表現可能なサイズのサンプリングデータＳｄに圧縮する。
【０１１０】
ここで、前述の通り、「圧縮サイズ」は、「１サンプリング周期Ｓｍｃに変化し得る計測結果の表記に足るデータサイズ（ビット数）」である。言い換えれば、「圧縮サイズ」は、「１回の制御周期Ｓｃｔにおいて連続して実行される２つのサンプリング処理の計測結果の間の変化の最大量Ｖｍａｘ」を表現可能なサイズ（ビット数）である。
【０１１１】
つまり、圧縮サイズが予め決まっている場合、圧縮部１３０は、カウント値Ｃｔ（２）〜Ｃｔ（ｎ）の各々を、圧縮サイズのサンプリングデータＳｄ（２）〜Ｓｄ（ｎ）の各々に圧縮する。
【０１１２】
前記の構成によれば、カウンタユニット１０は、最大量Ｖｍａｘが予め決まっている場合、サンプリングデータＳｄ（２）〜Ｓｄ（ｎ）の各々を、最大量Ｖｍａｘを表現可能なデータサイズ（つまり、圧縮サイズ）に圧縮して、ＰＬＣ２０へと送信する。
【０１１３】
したがって、カウンタユニット１０は、カウント値Ｃｔ（２）〜Ｃｔ（ｎ）の各々を圧縮せずに送信する場合に比べて、制御周期ＳｃｔごとにＰＬＣ２０へと送信するデータフレームのデータサイズを、抑制することができるとの効果を奏する。
【０１１４】
ここで、前記変化が正負のいずれでもあり得る場合、例えば、前記変化の範囲が「−１２７」以上「１２７」以下である場合、「１２７」を表現可能な７ビットに１ビットを加えた８ビット、つまり、１ｂｙｔｅが、最大量Ｖｍａｘを表現可能なデータサイズとなる。同様に、例えば、前記変化の範囲が「−１」以上「１」以下である場合、「１」を表現可能な１ビットに１ビットを加えた２ビットが、最大量Ｖｍａｘを表現可能なデータサイズとなる。
【０１１５】
また、前記変化が常に正または常に負である場合、例えば、前記変化の範囲が「０」以上「２５５」以下である場合、「２５５」を表現可能な８ビット、つまり、１ｂｙｔｅが、最大量Ｖｍａｘを表現可能なデータサイズとなる。同様に、例えば、前記変化の範囲が「０」以上「１」以下である場合、「１」を表現可能な１ビットが、最大量Ｖｍａｘを表現可能なデータサイズとなる。
【０１１６】
カウンタユニット１０において、サンプリング処理は、パルス信号のパルス数をカウントする処理であり、サンプリング処理の計測結果は、カウントされたパルス数（つまり、カウント値Ｃｔ）である。
【０１１７】
前記の構成によれば、カウンタユニット１０は、最大量Ｖｍａｘが予め決まっている場合、２回目以降のサンプリング処理の各々において計測されたカウント値Ｃｔを示すサンプリングデータＳｄを、最大量Ｖｍａｘを表現可能なデータサイズに圧縮する。つまり、カウンタユニット１０は、最大量Ｖｍａｘが予め決まっている場合、カウント値Ｃｔ（２）〜Ｃｔ（ｎ）の各々を示すサンプリングデータＳｄ（２）〜Ｓｄ（ｎ）の各々を、圧縮サイズに圧縮する。
【０１１８】
ここで、パルス信号のパルス数をカウントするサンプリング処理において、１回のサンプリング処理において計測し得るパルス数は予め決まっており、つまり、サンプリング処理がパルス数をカウントする処理である場合、最大量Ｖｍａｘは予め決まっている。
【０１１９】
より正確には、カウンタユニット１０が、１回のサンプリング処理において、「エンコーダ４０または流量計のような、検出量に応じてパルス信号を生成するパルス信号生成装置」から受信し得るパルス信号の数は、予め決まっている。例えば、エンコーダ４０からのパルス信号を計数する（つまり、カウントする）場合、カウンタユニット１０が単位時間あたりに受信し得るパルス信号の数は、エンコーダ４０の、分解能と回転速度（最大回転速度）とによって、予め決定される。そして、最大回転速度は、エンコーダ４０のスペック（仕様、性能）から決めることができ、また、アプリケーション（エンコーダ４０の使用用途）から決めることもできる。例えば、アプリケーションが、「エンコーダ４０が３６０分解能で最大でも６０ｒｐｍ（１秒間に１回転）で回転するような低速アプリケーション」であれば、エンコーダ４０がスペック的にはもっと高速に回転できるとしても、最大回転速度は６０ｒｐｍとして想定すればよい。つまり、カウンタユニット１０が、１回のサンプリング処理において受信し得るパルス信号の数は、エンコーダ４０（パルス信号生成装）のスペックおよびアプリケーションの少なくとも一方により予め決められている。
【０１２０】
したがって、カウンタユニット１０は、２回目以降のサンプリング処理の各々において計測されたカウント値Ｃｔを示すサンプリングデータＳｄを、最大量Ｖｍａｘを表現可能なデータサイズに圧縮して、ＰＬＣ２０へと送信することができるとの効果を奏する。
【０１２１】
カウンタユニット１０において、最大量Ｖｍａｘを表現可能なデータサイズは、（１）１回のサンプリング処理においてカウントし得るパルス数の絶対値と、（２）サンプリング処理のパルスカウント方式が双方向であるのか、または、単方向であるのかとによって、予め決定されている。
【０１２２】
前記の構成によれば、カウンタユニット１０において、最大量Ｖｍａｘを表現可能なデータサイズは、（１）１回のサンプリング処理においてカウントし得るパルス数の絶対値と、（２）パルスカウント方式とによって、予め決定されている。
【０１２３】
パルスカウント方式が双方向である場合、１回の制御周期Ｓｃｔにおいて連続して実行される２つのサンプリング処理の計測結果の間の変化は、正負のいずれでもあり得る。例えば、「１回のサンプリング処理においてカウントし得るパルス数の絶対値」が「１２７」である場合、１回の制御周期Ｓｃｔにおいて連続して実行される２つのサンプリング処理の計測結果の間の変化は、「−１２７〜１２７」と示すことができる。したがって、最大量Ｖｍａｘを表現可能なデータサイズは、「１回のサンプリング処理においてカウントし得るパルス数の絶対値」を表現可能なビット数に１ビットを加えたビット数となる。
【０１２４】
パルスカウント方式が単方向である場合、１回の制御周期Ｓｃｔにおいて連続して実行される２つのサンプリング処理の計測結果の間の変化は、常に正または常に負である。例えば、「１回のサンプリング処理においてカウントし得るパルス数の絶対値」が「２５５」である場合、１回の制御周期Ｓｃｔにおいて連続して実行される２つのサンプリング処理の計測結果の間の変化は、「０〜２５５」と示すことができる。したがって、最大量Ｖｍａｘを表現可能なデータサイズは、「１回のサンプリング処理においてカウントし得るパルス数の絶対値」を表現可能なビット数となる。
【０１２５】
したがって、カウンタユニット１０は、最大量Ｖｍａｘが予め決まっているので、２回目以降のサンプリング処理の各々において計測されたカウント値Ｃｔを示すサンプリングデータＳｄを、最大量Ｖｍａｘを表現可能なデータサイズに圧縮できるとの効果を奏する。
【０１２６】
カウンタユニット１０において、圧縮部１３０は、２回目以降のサンプリング処理の各々の計測結果を示すビット列から、最下位ビットを含む、最大量Ｖｍａｘを表現可能なビット数分のビット列を抽出し、抽出したビット列を、サンプリングデータＳｄとする。圧縮部１３０は、例えば、「カウント値Ｃｔ（２）〜Ｃｔ（ｎ）の各々を示すビット列」から「最下位ビットを含む、圧縮サイズ分のビット列」を抽出し、抽出したビット列を、サンプリングデータＳｄ（２）〜Ｓｄ（ｎ）としてデータフレームへと格納する。
【０１２７】
前記の構成によれば、カウンタユニット１０は、２回目以降のサンプリング処理の各々の計測結果を示すビット列から抽出した、最下位ビットを含む、最大量Ｖｍａｘを表現可能なビット数分のビット列を、サンプリングデータＳｄとする。
【０１２８】
２回目以降のサンプリング処理の各々の計測結果を示すビット列に比べて、そのビット列から抽出された「最下位ビットを含む、最大量Ｖｍａｘを表現可能なビット数分のビット列」の方が、データサイズが小さいことは明らかである。
【０１２９】
したがって、カウンタユニット１０は、２回目以降のサンプリング処理の各々の計測結果を示すビット列を、そのビット列から抽出された「最下位ビットを含む、最大量Ｖｍａｘを表現可能なビット数分のビット列」に圧縮することができるとの効果を奏する。
【０１３０】
例えば、サンプリング処理の各々の計測結果を示すビット列が４ｂｙｔｅである場合、前記変化の範囲が「−１２７」以上「１２７」以下であると、最大量Ｖｍａｘを表現可能なデータサイズは１ｂｙｔｅだから、カウンタユニット１０は、以下の圧縮を行う。すなわち、カウンタユニット１０は、２回目以降のサンプリング処理の各々の計測結果を示す４ｂｙｔｅのビット列を、１ｂｙｔｅのサンプリングデータＳｄに圧縮する。
【０１３１】
同様に、前記変化の範囲が「−１」以上「１」以下であると、最大量Ｖｍａｘを表現可能なデータサイズは２ビットだから、カウンタユニット１０は、２回目以降のサンプリング処理の各々の計測結果を示す４ｂｙｔｅのビット列を、２ビットに圧縮する。さらに、前記変化の範囲が「０」以上「１」以下であると、最大量Ｖｍａｘを表現可能なデータサイズは１ビットだから、カウンタユニット１０は、２回目以降の前記サンプリング処理の各々の計測結果を示す４ｂｙｔｅのビット列を、１ビットに圧縮する。
【０１３２】
これまでに概要を説明したカウンタユニット１０等について、次に、その構成の詳細について図１を参照しながら説明し、その後、カウンタユニット１０が実行する処理について、図６を参照しながら説明していく。
【０１３３】
（カウンタユニットの詳細）
図１は、制御システム１に含まれる、カウンタユニット１０等の要部構成を示すブロック図である。図１に示すように、カウンタユニット１０は、機能ブロックとして、計測部１１０、取得部１２０、圧縮部１３０、および、送信部１４０を備える。
【０１３４】
計測部１１０は、エンコーダ４０（パルス信号生成装置）等の計測デバイスから、そのパルス信号生成装置によって生成されたパルス信号を受信し、受信したパルス信号のパルス数（カウント値Ｃｔ）をカウントするサンプリング処理を実行する。計測部１１０は、１回の制御周期Ｓｃｔにおいてサンプリング処理を複数回（例えば、ｎ回）実行し、各サンプリング処理において計測したカウント値Ｃｔ（例えば、カウント値Ｃｔ（１）〜Ｃｔ（ｎ））を、取得部１２０に通知する。
【０１３５】
送信部１４０は、制御周期Ｓｃｔごとに繰り返し、データフレームをＰＬＣ２０に送信する。送信部１４０が制御周期ＳｃｔごとにＰＬＣ２０に送信するデータフレームには、各々が、「各サンプリング処理において計測されたカウント値Ｃｔ」を示す、複数のサンプリングデータＳｄが格納されている。例えば、データフレームには、各々が、「１回目からｎ回目までの各サンプリング処理において計測されたカウント値Ｃｔ（１）〜Ｃｔ（ｎ））」を示す、サンプリングデータＳｄ（１）〜Ｓｄ（ｎ）が格納されている。
【０１３６】
取得部１２０は、計測部１１０から取得したカウント値Ｃｔについて、１回目のサンプリング処理において計測されたカウント値Ｃｔ（１）を示すビット列は、そのまま、サンプリングデータＳｄ（１）として、データフレームへと格納する。取得部１２０は、２回目以降の各々のサンプリング処理において計測されたカウント値Ｃｔを示すビット列を、圧縮部１３０へと転送し、例えば、カウント値Ｃｔ（２）〜Ｃｔ（ｎ）の各々を示すビット列を、圧縮部１３０へと転送する。
【０１３７】
圧縮部１３０は、取得部１２０から取得した「２回目以降の各々のサンプリング処理において計測されたカウント値Ｃｔを示すビット列」を、「圧縮サイズ」のビット列に圧縮する。圧縮部１３０は、「圧縮サイズ」に圧縮した複数のビット列の各々を、「２回目以降の各々のサンプリング処理において計測されたカウント値Ｃｔ」を示すサンプリングデータＳｄとして、データフレームへと格納する。
【０１３８】
具体的には、圧縮部１３０は、カウント値Ｃｔ（２）を示すビット列を、「圧縮サイズ」のビット列に圧縮して、サンプリングデータＳｄ（２）として、データフレームへと格納する。また、圧縮部１３０は、カウント値Ｃｔ（３）を示すビット列を、「圧縮サイズ」のビット列に圧縮して、サンプリングデータＳｄ（３）として、データフレームへと格納する。同様に、圧縮部１３０は、カウント値Ｃｔ（ｎ）を示すビット列を、「圧縮サイズ」のビット列に圧縮して、サンプリングデータＳｄ（ｎ）として、データフレームへと格納する。
【０１３９】
圧縮部１３０は、ツール３０によって予め設定された「圧縮サイズ」を用いて、「２回目以降の各々のサンプリング処理において計測されたカウント値Ｃｔを示すビット列」を圧縮してもよい。
【０１４０】
「圧縮サイズ」は、「１サンプリング周期Ｓｍｃに変化し得るカウント値Ｃｔ」の表記に足るデータサイズ（ビット数）である。「１サンプリング周期Ｓｍｃに変化し得るカウント値Ｃｔ」は、「１サンプリング周期Ｓｍｃ中に計測部１１０がカウントし得るカウント値Ｃｔの最大量Ｖｍａｘ（つまり、１回のサンプリング処理でカウントし得るカウント値Ｃｔの範囲）」と言い換えられる。つまり、「１サンプリング周期Ｓｍｃに変化し得るカウント値Ｃｔ」は、「１回の制御周期Ｓｃｔ中に連続して実行される２つのサンプリング処理においてカウントされるカウント値Ｃｔの間の変化の最大量Ｖｍａｘ」である。したがって、「圧縮サイズ」は、「計測部１１０が１回の制御周期Ｓｃｔにおいて連続して実行する２つのサンプリング処理においてカウントするカウント値Ｃｔの間の変化の最大量Ｖｍａｘ」を表現可能なビット数である。
【０１４１】
「１サンプリング周期Ｓｍｃに変化し得るカウント値Ｃｔ」は、つまり、最大量Ｖｍａｘは、「計測部１１０が１回のサンプリング処理においてカウントし得るパルス数の絶対値」と、「計測部１１０のパルスカウント方式」と、によって決定される。
【０１４２】
「１回のサンプリング処理においてカウントし得るパルス数の絶対値」は、サンプリング周期Ｓｍｃを、パルス信号の最短周期（最短パルス周期Ｐｌｃｍｉｎ）によって除した値」に対して小数点以下を繰り上げた値として算出できる。
【０１４３】
計測部１１０のパルスカウント方式が双方向である場合、ｍ−１回目のサンプリング処理のカウント値Ｃｔ（ｍ−１）から、ｍ回目のサンプリング処理のカウント値Ｃｔ（ｍ）までの変化は、正負のいずれでもあり得る。例えば、「１回のサンプリング処理においてカウントし得るパルス数の絶対値」が「１２７」である場合、カウント値Ｃｔ（ｍ−１）からカウント値Ｃｔ（ｍ）までの変化の最大量Ｖｍａｘは、つまり、最大量Ｖｍａｘは、「−１２７〜１２７」と示すことができる。
【０１４４】
したがって、計測部１１０のパルスカウント方式が双方向である場合、「１回のサンプリング処理においてカウントし得るパルス数の絶対値」を表現可能なビット数に１ビットを加えたビット数が、「圧縮サイズ」となる。
【０１４５】
計測部１１０のパルスカウント方式が単方向である場合、カウント値Ｃｔ（ｍ−１）からカウント値Ｃｔ（ｍ）までの変化は、常に正または常に負である。例えば、「１回のサンプリング処理においてカウントし得るパルス数の絶対値」が「２５５」である場合、カウント値Ｃｔ（ｍ−１）からカウント値Ｃｔ（ｍ）までの変化の最大量Ｖｍａｘは、つまり、最大量Ｖｍａｘは、「０〜２５５」と示すことができる。
【０１４６】
したがって、計測部１１０のパルスカウント方式が単方向である場合、「１回のサンプリング処理においてカウントし得るパルス数の絶対値」を表現可能なビット数が、「圧縮サイズ」となる。
【０１４７】
圧縮部１３０は、例えば、「２回目以降の各々のサンプリング処理において計測されたカウント値Ｃｔを示すビット列」から、「最下位ビットを含む、圧縮サイズ分のビット列」を、下位ビット列Ｌｂとして抽出する。そして、圧縮部１３０は、抽出した下位ビット列Ｌｂを、サンプリングデータＳｄとしてデータフレームへと格納する。
【０１４８】
例えば、圧縮サイズが１ｂｙｔｅである場合、圧縮部１３０は、カウント値Ｃｔ（２）〜Ｃｔ（ｎ）の各々を示すビット列の各々から、「最下位ビットを含む、１ｂｙｔｅ分のビット列」である下位ビット列Ｌｂ（２）〜Ｌｂ（ｎ）を抽出する。圧縮部１３０は、抽出した下位ビット列Ｌｂ（２）〜Ｌｂ（ｎ）を、サンプリングデータＳｄ（２）〜Ｓｄ（ｎ）としてデータフレームへと格納する。
【０１４９】
以下の説明においては、カウント値Ｃｔを示すビット列の「最下位ビットを含む、圧縮サイズ分のビット列」を、カウント値Ｃｔを示すビット列の下位ビット列Ｌｂと称する。また、カウント値Ｃｔを示すビット列の、「最下位ビットを含む、圧縮サイズ分のビット列」以外のビット列を、カウント値Ｃｔを示すビット列の上位ビット列Ｈｂと称する。つまり、カウント値Ｃｔの上位ビット列Ｈｂは、カウント値Ｃｔを示すビット列の、下位ビット列Ｌｂ以外のビット列である。
【０１５０】
§３．動作例
図６は、カウンタユニット１０が実行する処理の概要を示す図であり、特に、図６の（Ａ）は、カウンタユニット１０が実行するデータ圧縮処理の一例を示すフロー図である。取得部１２０は、計測部１１０から、計測部１１０が１回の制御周期Ｓｃｔにおいて１回目に実行したサンプリング処理においてカウントしたカウント値Ｃｔ（１）を取得する（Ｓ１１０）。取得部１２０は、計測部１１０から取得したカウント値Ｃｔ（ｐ）（「ｐ」は「１」以上で、「ｎ」以下の整数）が２回目以降のカウント値Ｃｔ（２）〜Ｃｔ（ｎ）であるのかを判定する（Ｓ１２０）。
【０１５１】
取得部１２０は、計測部１１０から取得したカウント値Ｃｔ（ｐ）が２回目以降のカウント値Ｃｔ（２）〜Ｃｔ（ｎ）ではない、つまり、カウント値Ｃｔ（１）を取得したと判定すると（Ｓ１２０でＮｏ）、以下の処理を実行する。すなわち、取得部１２０は、カウント値Ｃｔ（１）を示すビット列を、そのまま、サンプリングデータＳｄ（１）として、データフレームへと格納し、つまり、カウント値Ｃｔ（１）を示すビット列によってサンプリングデータＳｄ（１）を更新する（Ｓ１４０）。
【０１５２】
取得部１２０は、計測部１１０から取得したカウント値Ｃｔ（ｐ）が２回目以降のカウント値Ｃｔ（２）〜Ｃｔ（ｎ）のいずれかであると判定すると（Ｓ１２０でＹｅｓ）、取得したカウント値Ｃｔ（ｐ）を、圧縮部１３０へと出力する。圧縮部１３０は、取得部１２０から取得したカウント値Ｃｔ（ｐ）（より正確には、「カウント値Ｃｔ（ｐ）を示すビット列」）から、「最下位ビットを含む、圧縮サイズ分のビット列」を、「下位ビット列Ｌｂ（ｐ）」として取り出す（Ｓ１３０）。圧縮部１３０は、カウント値Ｃｔ（ｐ）から取り出した下位ビット列Ｌｂ（ｐ）を、サンプリングデータＳｄ（ｐ）として、データフレームへと格納し、つまり、下位ビット列Ｌｂ（ｐ）によって、対応するサンプリングデータＳｄ（ｐ）を更新する（Ｓ１４０）。
【０１５３】
取得部１２０は、計測部１１０から全てのカウント値Ｃｔ（１）〜Ｃｔ（ｎ）を取得済みであるかを判定する（Ｓ１５０）。取得部１２０は、全てのカウント値Ｃｔ（１）〜Ｃｔ（ｎ）を取得済みであると判定すると（Ｓ１５０でＹｅｓ）、処理を終了する。取得部１２０は、全てのカウント値Ｃｔ（１）〜Ｃｔ（ｎ）を取得済みではないと判定すると（Ｓ１５０でＮｏ）、次のカウント値Ｃｔ（ｐ＋１）を計測部１１０から取得する（Ｓ１６０）。
【０１５４】
図６の（Ａ）に示す処理を実行することにより、カウンタユニット１０は、図６の（Ｂ）に示すように、サンプリングデータＳｄ（１）のみがフルサイズで、サンプリングデータＳｄ（２）〜Ｓｄ（ｎ）の各々が圧縮サイズであるデータフレームを生成する。
【０１５５】
これまでに図６を参照しながら説明してきたカウンタユニット１０が実行する処理（言い換えれば、カウンタユニット１０が実行する制御方法）は、以下のように整理することができる。すなわち、カウンタユニット１０が実行する処理（制御方法）は、１回の制御周期Ｓｃｔにおいて複数回実行されたサンプリング処理の各々の計測結果（例、カウント値Ｃｔ）を示す、複数のサンプリングデータＳｄを、１データフレームに格納して、制御周期ＳｃｔごとにＰＬＣ２０へと送信するデータ転送装置の制御方法である。カウンタユニット１０が実行する処理は、複数回（例、ｎ回）実行されたサンプリング処理の各々の計測結果（例、カウント値Ｃｔ（１）〜Ｃｔ（ｎ）の各々）を取得する取得ステップ（Ｓ１１０およびＳ１６０）と、１回の制御周期Ｓｃｔにおいて連続して実行される２つのサンプリング処理の計測結果の間の変化の最大量Ｖｍａｘが予め決まっている場合、前記取得ステップにて取得された複数の計測結果のうち、２回目以降のサンプリング処理の各々の計測結果を、最大量Ｖｍａｘを表現可能なデータサイズのサンプリングデータＳｄに圧縮する圧縮ステップ（Ｓ１３０）と、を含んでいる。
【０１５６】
前記の構成によれば、前記制御方法は、最大量Ｖｍａｘが予め決まっている場合、２回目以降のサンプリング処理の各々の計測結果を示すサンプリングデータＳｄを、最大量Ｖｍａｘを表現可能なデータサイズ（つまり、圧縮サイズ）に圧縮して、ＰＬＣ２０へと送信する。つまり、前記制御方法は、最大量Ｖｍａｘが予め決まっている場合、カウント値Ｃｔ（２）〜Ｃｔ（ｎ）を示すサンプリングデータＳｄ（２）〜Ｓｄ（ｎ）を、最大量Ｖｍａｘを表現可能なデータサイズに圧縮して、ＰＬＣ２０へと送信する。
【０１５７】
したがって、前記制御方法は、２回目以降のサンプリング処理の各々の計測結果を圧縮しない場合に比べて、制御周期ＳｃｔごとにＰＬＣ２０へと送信するデータフレームのデータサイズを、抑制することができるとの効果を奏する。
【０１５８】
ここで、前記変化が正負のいずれでもあり得る場合、例えば、前記変化の範囲が「−１２７」以上「１２７」以下である場合、「１２７」を表現可能な７ビットに１ビットを加えた８ビット、つまり、１ｂｙｔｅが、最大量Ｖｍａｘを表現可能なデータサイズとなる。同様に、例えば、前記変化の範囲が「−１」以上「１」以下である場合、「１」を表現可能な１ビットに１ビットを加えた２ビットが、最大量Ｖｍａｘを表現可能なデータサイズとなる。
【０１５９】
また、前記変化が常に正または常に負である場合、例えば、前記変化の範囲が「０」以上「２５５」以下である場合、「２５５」を表現可能な８ビット、つまり、１ｂｙｔｅが、最大量Ｖｍａｘを表現可能なデータサイズとなる。同様に、例えば、前記変化の範囲が「０」以上「１」以下である場合、「１」を表現可能な１ビットが、最大量Ｖｍａｘを表現可能なデータサイズとなる。
【０１６０】
（データフレームの概要）
図７は、カウンタユニット１０およびアナログユニット６０の各々が制御周期Ｓｃｔごとに繰り返しＰＬＣ２０に送信するデータフレームの概要を示す図である。送信部１４０が制御周期Ｓｃｔ毎にＰＬＣ２０に送信するデータフレームにおいて、１つ目のサンプリングデータＳｄ（１）のみがフルサイズで、残りのサンプリングデータＳｄ（２）〜Ｓｄ（ｎ）の各々は圧縮サイズとする。
【０１６１】
例えば、計測部１１０は、１回の制御周期Ｓｃｔにおいてサンプリング処理をｎ回実行する。計測部１１０は、１回目のサンプリング処理においてカウント値Ｃｔ（１）を、２回目のサンプリング処理においてカウント値Ｃｔ（２）を、３回目のサンプリング処理においてカウント値Ｃｔ（３）を生成する。同様に、計測部１１０は、ｎ回目のサンプリング処理においてカウント値Ｃｔ（ｎ）を生成する。
【０１６２】
つまり、計測部１１０は、１回の制御周期Ｓｃｔにおいてｎ回実行したサンプリング処理によって、各サンプリング処理に対応するカウント値Ｃｔ（１）からカウント値Ｃｔ（ｎ）までのｎ個のカウント値Ｃｔを生成する。そして、カウンタユニット１０は、カウント値Ｃｔ（１）からカウント値Ｃｔ（ｎ）の各々に対応する、サンプリングデータＳｄ（１）からサンプリングデータＳｄ（ｎ）を生成する。
【０１６３】
カウンタユニット１０は、サンプリングデータＳｄ（１）のみをフルサイズのデータとし、残りのサンプリングデータＳｄ（つまり、サンプリングデータＳｄ（２）からサンプリングデータＳｄ（ｎ）までの各々）は、圧縮サイズのデータとする。そして、カウンタユニット１０（特に、送信部１４０）は、サンプリングデータＳｄ（１）からサンプリングデータＳｄ（ｎ）までのｎ個のサンプリングデータＳｄを格納したデータフレームを、制御周期Ｓｃｔごとに繰り返し、ＰＬＣ２０に送信する。
【０１６４】
（圧縮サイズ）
図８は、カウンタユニット１０およびアナログユニット６０の各々が制御周期ＳｃｔごとにＰＬＣ２０に送信するサンプリングデータＳｄ（２）〜Ｓｄ（ｎ）の各々のデータサイズを、つまり、圧縮サイズを説明する図である。
【０１６５】
計測部１１０がサンプリング周期Ｓｍｃごとにカウントしたカウント値Ｃｔ（２）〜Ｃｔ（ｎ）の各々を示す、サンプリングデータＳｄ（２）〜Ｓｄ（ｎ）の各々の圧縮サイズは、１サンプリング周期Ｓｍｃに変化し得るカウント値Ｃｔの表記に足る分とする。つまり、圧縮サイズは、計測部１１０が１回の制御周期Ｓｃｔにおいて連続して実行する２つのサンプリング処理の各々においてカウントした２つのカウント値Ｃｔの間の変化の最大量Ｖｍａｘを表現可能なデータサイズである。言い換えれば、圧縮サイズは、「ｍ」回目のサンプリング処理において計測したカウント値Ｃｔ（ｍ）と、その直前の「ｍ−１」回目のサンプリング処理において計測したカウント値Ｃｔ（ｍ−１）と、の間の変化の最大量Ｖｍａｘを表現可能なデータサイズである。
【０１６６】
１サンプリング周期Ｓｍｃに変化し得るカウント値Ｃｔの変化の範囲が、つまり、最大量Ｖｍａｘが、例えば、「−１２７」以上「１２７」以下である場合、「１２７」を表現可能な７ビットに１ビットを加えた８ビット（＝１ｂｙｔｅ）が、圧縮サイズとなる。同様に、１サンプリング周期Ｓｍｃに変化し得るカウント値Ｃｔの変化の範囲が、例えば、「−１」以上「１」以下である場合、「１」を表現可能な１ビットに１ビットを加えた２ビットが、圧縮サイズとなる。また、１サンプリング周期Ｓｍｃに変化し得るカウント値Ｃｔの変化の範囲が、例えば、「０」以上「２５５」以下である場合、「２５５」を表現可能な８ビット（＝１ｂｙｔｅ）が、圧縮サイズとなる。
【０１６７】
（１サンプリング周期にカウントし得るパルス数の絶対値）
図９は、「カウンタユニット１０（特に、計測部１１０）が１回のサンプリング周期Ｓｍｃにカウントし得るパルス数の絶対値」を説明する図である。計測部１１０のパルスカウント方式が双方向であっても、計測部１１０がカウントするパルス数は、パルス信号を受信する毎に「１」ずつ（または、「−１」ずつ）しか変化しない。
【０１６８】
そのため、サンプリング周期Ｓｍｃとパルス信号の最高周波数（最高パルス周波数）とから、「１回のサンプリング処理においてカウントし得るパルス数の絶対値」は決まる。すなわち、「パルス周期Ｐｌｃ」は、「１／パルス周波数」であるから、「最短パルス周期Ｐｌｃｍｉｎ」は、「１／最高パルス周波数」となる。したがって、「１回のサンプリング処理においてカウントし得るパルス数の絶対値」は、「サンプリング周期Ｓｍｃを最短パルス周期Ｐｌｃｍｉｎによって除した値（小数点以下切り上げ）」となる。
【０１６９】
（圧縮データに必要なビット数）
図１０は、カウンタユニット１０（特に、計測部１１０）が１回のサンプリング周期Ｓｍｃにカウントし得るカウント値Ｃｔの最大量Ｖｍａｘを説明する図である。計測部１１０のパルスカウント方式に正方向と負方向とがある場合、つまり、パルスカウント方式が双方向である場合、「１回のサンプリング周期Ｓｍｃにカウントし得るカウント値Ｃｔの最大量Ｖｍａｘ」を表現可能なビット数は、以下のようになる。すなわち、１回のサンプリング周期Ｓｍｃにカウントし得るカウント値Ｃｔの最大量Ｖｍａｘを表現可能なビット数は、「１回のサンプリング処理においてカウントし得るパルス数の絶対値」を表現可能なビット数に、１ビット加えたビット数となる。「１回のサンプリング処理においてカウントし得るパルス数の絶対値」を表現可能なビット数に加えて、正方向か負方向かを区別するための１ビットが必要となるためである。したがって、「１回のサンプリング処理においてカウントし得るパルス数の絶対値」が半周（半分）を越えないビット数が、圧縮サイズとして必要となる。
【０１７０】
計測部１１０のパルスカウント方式が単方向である場合、「１回のサンプリング周期Ｓｍｃにカウントし得るカウント値Ｃｔの最大量Ｖｍａｘ」は、常に正または常に負である。そのため、１回のサンプリング周期Ｓｍｃにカウントし得るカウント値Ｃｔの最大量Ｖｍａｘを表現可能なビット数は、「１回のサンプリング処理においてカウントし得るパルス数の絶対値」を表現可能なビット数となる。
【０１７１】
（必要なビット数の具体例）
計測部１１０のパルスカウント方式が双方向である場合、計測部１１０が１サンプリング周期Ｓｍｃ中にカウントできるパルス数の絶対値が「１２７」であれば、最大量Ｖｍａｘは、「−１２７」以上、「１２７」以下であるから、１ｂｙｔｅで表現可能である。それゆえ、パルスカウント方式が双方向であり、１サンプリング周期Ｓｍｃにカウントし得るパルス数の絶対値が「１２７」であれば、圧縮サイズは１ｂｙｔｅとなる。
【０１７２】
同様に、パルスカウント方式が双方向であり、１サンプリング周期Ｓｍｃにカウントし得るパルス数の絶対値が「３２７６７」であれば、圧縮サイズは２ｂｙｔｅとなる。パルスカウント方式が双方向であり、１サンプリング周期Ｓｍｃにカウントし得るパルス数の絶対値が「１」あれば、圧縮サイズは２ｂｉｔとなる。
【０１７３】
計測部１１０のパルスカウント方式が単方向である場合、計測部１１０が１サンプリング周期Ｓｍｃ中にカウントできるパルス数の絶対値が「２５５」あれば、圧縮サイズは１ｂｙｔｅとなる。パルスカウント方式が単方向であり、１サンプリング周期Ｓｍｃにカウントし得るパルス数の絶対値が「６５５３５」であれば、圧縮サイズは２ｂｙｔｅとなる。パルスカウント方式が単方向であり、１サンプリング周期Ｓｍｃにカウントし得るパルス数の絶対値が「３」であれば、圧縮サイズは２ｂｉｔとなる。パルスカウント方式が単方向であり、１サンプリング周期Ｓｍｃにカウントし得るパルス数の絶対値が「１」であれば、圧縮サイズは１ｂｉｔとなる。
【０１７４】
（ＰＬＣの詳細）
ＰＬＣ２０は、図１に示すように、機能ブロックとして、データフレーム受信部２１０および復元部２２０を備えている。ＰＬＣ２０は、上述の各機能ブロックに加えて、制御システム１を制御するための指示部などを備えていてもよいが、記載の簡潔性を担保するため、本実施の形態に直接関係のない構成は、説明およびブロック図から省略している。ただし、実施の実情に則して、ＰＬＣ２０は、当該省略された構成を備えてもよい。データフレーム受信部２１０および復元部２２０は、例えば、ＣＰＵ（central processing unit）等が、ＲＯＭ（read only memory）、ＮＶＲＡＭ（non-Volatile random access memory）等で実現された記憶装置に記憶されているプログラムを不図示のＲＡＭ（random access memory）等に読み出して実行することで実現できる。以下、ＰＬＣ２０におけるデータフレーム受信部２１０および復元部２２０について説明する。
【０１７５】
データフレーム受信部２１０は、カウンタユニット１０（特に、カウンタユニット１０の送信部１４０）から送信されたデータフレームを、制御周期Ｓｃｔごとに繰り返し受信する。データフレーム受信部２１０は、カウンタユニット１０から受信したデータフレームから、圧縮サイズに圧縮されているサンプリングデータＳｄ（２）〜Ｓｄ（ｎ）を取り出し、サンプリングデータＳｄ（２）〜Ｓｄ（ｎ）の各々を復元部２２０へと出力する。データフレーム受信部２１０は、カウンタユニット１０から受信したデータフレームから、圧縮サイズに圧縮されていないサンプリングデータＳｄ（１）を取り出し、サンプリングデータＳｄ（１）をそのまま、不図示のカウント値テーブルに格納してもよい。
【０１７６】
復元部２２０は、データフレーム受信部２１０から取得した、圧縮サイズに圧縮されているサンプリングデータＳｄ（２）〜Ｓｄ（ｎ）の各々を、カウント値Ｃｔ（２）〜Ｃｔ（ｎ）の各々へと復元する。復元部２２０は、例えばツール３０から通知された（設定された）圧縮サイズを用いて、サンプリングデータＳｄ（２）〜Ｓｄ（ｎ）の各々から、カウント値Ｃｔ（２）〜Ｃｔ（ｎ）の各々を復元する。復元部２２０は、例えばカウンタユニット１０から通知された圧縮サイズを用いて、サンプリングデータＳｄ（２）〜Ｓｄ（ｎ）の各々から、カウント値Ｃｔ（２）〜Ｃｔ（ｎ）の各々を復元してもよい。
【０１７７】
データフレーム受信部２１０および復元部２２０を備えるＰＬＣ２０は、圧縮サイズに圧縮されたＳｄ（２）〜Ｓｄ（ｎ）の各々から、２回目以降のサンプリング処理の各々の計測結果（つまり、カウント値Ｃｔ（２）〜Ｃｔ（ｎ）の各々）を復元する。
【０１７８】
したがって、ＰＬＣ２０は、圧縮されていない場合に比べてデータサイズが抑制されたサンプリングデータＳｄから、圧縮されていない場合と同様に、２回目以降のサンプリング処理の各々のカウント値Ｃｔを取得することができるとの効果を奏する。
【０１７９】
ＰＬＣ２０において、復元部２２０は、２回目以降のサンプリング処理の各々の計測結果を、直前のサンプリング処理の計測結果を示すビット列と、２回目以降のサンプリング処理の各々の計測結果を示すサンプリングデータＳｄとしてデータフレームに格納されているビット列と、を用いて、直前のサンプリング処理の計測結果からの変化量が最大量Ｖｍａｘ以下となるように、復元する。復元部２２０は、カウント値Ｃｔ（ｍ−１）を示すビット列と、サンプリングデータＳｄ（ｍ）を示すビット列と、を用いて、カウント値Ｃｔ（ｍ）の、カウント値Ｃｔ（ｍ−１）からの変化量が最大量Ｖｍａｘ以下となるように、カウント値Ｃｔ（ｍ）を復元する。
【０１８０】
前記の構成によれば、ＰＬＣ２０は、２回目以降のサンプリング処理の各々の計測結果を、以下の方法によって復元する。すなわち、ＰＬＣ２０は、２回目以降のサンプリング処理の各々の計測結果を、直前のサンプリング処理の計測結果を示すビット列と、サンプリングデータＳｄとしてデータフレームに格納されているビット列と、を用いて復元する。その際、ＰＬＣ２０は、復元する「２回目以降のサンプリング処理の各々の計測結果」の、直前のサンプリング処理の計測結果からの変化量が最大量Ｖｍａｘ以下となるように、「２回目以降のサンプリング処理の各々の計測結果」を復元する。
【０１８１】
したがって、ＰＬＣ２０は、２回目以降のサンプリング処理の各々の計測結果を、サンプリングデータＳｄとしてデータフレームに格納されているビット列を用いて、正確に復元することができるとの効果を奏する。
【０１８２】
例えば、ＰＬＣ２０は、先ず、復元対象のサンプリングデータＳｄ（ｍ）と、そのサンプリングデータＳｄ（ｍ）を復元することで得られる計測結果（カウント値Ｃｔ（ｍ））を計測したサンプリング処理の直前に実行されたサンプリング処理で計測した計測結果（カウント値Ｃｔ（ｍ−１））を示すビット列と、を取得する。
【０１８３】
次に、ＰＬＣ２０は、カウント値Ｃｔ（ｍ−１）を示すビット列から、「最下位ビットを含む、最大量Ｖｍａｘを表現可能なビット数分のビット列」を、つまり、下位ビット列Ｌｂ（ｍ−１）を取り出す。ＰＬＣ２０は、取り出した下位ビット列Ｌｂ（ｍ−１）を、復元対象のサンプリングデータＳｄ（ｍ）と比較する。
【０１８４】
ＰＬＣ２０は、復元対象のサンプリングデータＳｄ（ｍ）の、「カウント値Ｃｔ（ｍ−１）を示すビット列の、下位ビット列Ｌｂ（ｍ−１）」からの変化量が、最大量Ｖｍａｘ以下となっていると判定すると、以下の処理を実行する。
【０１８５】
すなわち、ＰＬＣ２０は、「カウント値Ｃｔ（ｍ−１）を示すビット列の、上位ビット列Ｈｂ（ｍ−１）」と、「復元対象のサンプリングデータＳｄ（ｍ）」とを組み合わせたビット列を、「復元対象のサンプリングデータＳｄ（ｍ）」から復元された計測結果（つまり、カウント値Ｃｔ（ｍ））を示すビット列として生成する。具体的には、ＰＬＣ２０は、「カウント値Ｃｔ（ｍ−１）を示すビット列の、上位ビット列Ｈｂ（ｍ−１）」を上位ビットとし、「復元対象のサンプリングデータＳｄ（ｍ）」を下位ビットとするビット列を、復元された計測結果（カウント値Ｃｔ（ｍ））を示すビット列として生成する。
【０１８６】
ＰＬＣ２０は、復元対象のサンプリングデータＳｄ（ｍ）が、「カウント値Ｃｔ（ｍ−１）を示すビット列の、下位ビット列Ｌｂ（ｍ−１）」から、最大量Ｖｍａｘを超えて減少していると判定すると、以下の処理を実行する。
【０１８７】
すなわち、ＰＬＣ２０は先ず、復元対象のサンプリングデータＳｄ（ｍ）は、「カウント値Ｃｔ（ｍ−１）を示すビット列の、下位ビット列Ｌｂ（ｍ−１）」から減少した値ではなく、増加して桁上がりした値を示していると判定する。そして、ＰＬＣ２０は、「カウント値Ｃｔ（ｍ−１）を示すビット列の、上位ビット列Ｈｂ（ｍ−１）」に１を加えた上位ビット列Ｈｂ’（ｍ−１）を用いて、「復元対象のサンプリングデータＳｄ（ｍ）」から復元された計測結果（カウント値Ｃｔ（ｍ））を示すビット列を生成する。具体的には、ＰＬＣ２０は、上位ビット列Ｈｂ’（ｍ−１）を上位ビットとし、「復元対象のサンプリングデータＳｄ（ｍ）」を下位ビットとするビット列を、カウント値Ｃｔ（ｍ）を示すビット列として生成する。
【０１８８】
ＰＬＣ２０は、復元対象のサンプリングデータＳｄ（ｍ）が、「カウント値Ｃｔ（ｍ−１）を示すビット列の、下位ビット列Ｌｂ（ｍ−１）」から、最大量Ｖｍａｘを超えて増加していると判定すると、以下の処理を実行する。
【０１８９】
すなわち、ＰＬＣ２０は先ず、復元対象のサンプリングデータＳｄ（ｍ）は、「カウント値Ｃｔ（ｍ−１）を示すビット列の、下位ビット列Ｌｂ（ｍ−１）」から増加した値ではなく、減少して桁下がりした値を示していると判定する。そして、ＰＬＣ２０は、「カウント値Ｃｔ（ｍ−１）の計測結果を示すビット列の、上位ビット列Ｈｂ（ｍ−１）」から１を減じた上位ビット列Ｈｂ’（ｍ−１）を用いて、「復元対象のサンプリングデータＳｄ（ｍ）」から復元された計測結果（カウント値Ｃｔ（ｍ））を示すビット列を生成する。具体的には、ＰＬＣ２０は、上位ビット列Ｈｂ’（ｍ−１）を上位ビットとし、「復元対象のサンプリングデータＳｄ（ｍ）」を下位ビットとするビット列を、カウント値Ｃｔ（ｍ）を示すビット列として生成する。
【０１９０】
ＰＬＣ２０は、ＰＬＣ２０が使用する各種データを格納する記憶装置として、不図示のＰＬＣ記憶部を備えていてもよい。なお、ＰＬＣ記憶部は、ＰＬＣ２０が実行する（１）制御プログラム、（２）ＯＳプログラム、（３）ＰＬＣ２０が有する各種機能を実行するためのアプリケーションプログラム、および、（４）該アプリケーションプログラムを実行するときに読み出す各種データを非一時的に記憶してもよい。上記の（１）〜（４）のデータは、例えば、ＲＯＭ（read only memory）、フラッシュメモリ、ＥＰＲＯＭ（Erasable Programmable ROM）、ＥＥＰＲＯＭ（登録商標）（Electrically EPROM）、ＨＤＤ（Hard Disc Drive）等の不揮発性記憶装置に記憶される。ＰＬＣ２０は、さらに、ＰＬＣ一時記憶部を備えていてもよい。ＰＬＣ一時記憶部は、ＰＬＣ２０が実行する各種処理の過程で、演算に使用するデータおよび演算結果等を一時的に記憶するいわゆるワーキングメモリであり、ＲＡＭ（Random Access Memory）等の揮発性記憶装置で構成される。どのデータをどの記憶装置に記憶するのかについては、ＰＬＣ２０の使用目的、利便性、コスト、または、物理的な制約等から適宜決定される。ＰＬＣ記憶部には、不図示のカウント値テーブルが格納されていてもよい。カウント値テーブルには、サンプリングデータＳｄ（１）〜Ｓｄ（ｎ）の各々に対応するカウント値Ｃｔ（１）〜Ｃｔ（ｎ）の各々が格納される。
【０１９１】
（ＰＬＣの実行する処理：圧縮データの復元処理）
図１１は、ＰＬＣ２０が実行する処理の概要を示す図であり、特に、図１１の（Ａ）は、ＰＬＣ２０が実行するデータ復元処理の一例を示すフロー図である。以下の説明において、ＰＬＣ２０は、ツール３０およびカウンタユニット１０の少なくとも一方から、「カウンタユニット１０が、１回のサンプリング処理においてカウントし得るカウント値Ｃｔの最大量Ｖｍａｘ」を示す情報を取得するものとする。例えば、ＰＬＣ２０は、ツール３０またはカウンタユニット１０から、「カウンタユニット１０が、１回のサンプリング処理においてカウントし得るカウント値Ｃｔ（つまり、最大量Ｖｍａｘ）は『−１２７〜１２７』であるといった情報を、取得する。「カウンタユニット１０が、１回のサンプリング処理においてカウントし得るカウント値Ｃｔの最大量Ｖｍａｘ」を示す情報は、圧縮サイズを示す情報と言い換えることもできる。
【０１９２】
復元部２２０は、「データフレーム受信部２１０が受信したデータフレーム」から、先頭のサンプリングデータＳｄ（１）を取り出し（Ｓ２１０）、サンプリングデータＳｄ（１）を１回目のカウント値Ｃｔ（１）としてカウント値テーブルに格納する（Ｓ２２０）。カウント値Ｃｔ（１）をカウント値テーブルに格納すると、復元部２２０は、データフレームから、次のサンプリングデータＳｄ（２）を取り出し、つまり、「ｐ＝２」として、サンプリングデータＳｄ（ｐ）を取り出す（Ｓ２３０）。
【０１９３】
復元部２２０は、前回のカウント値Ｃｔ（ｐ−１）から「最下位ビットを含む、圧縮サイズ分のビット列」を取り出し、つまり、下位ビット列Ｌｂ（ｐ−１）を取り出す（Ｓ２４０）。そして、復元部２２０は、サンプリングデータＳｄ（ｐ）の、下位ビット列Ｌｂ（ｐ−１）からの変化が最大量Ｖｍａｘを超過しているかを判定する（Ｓ２５０）。
【０１９４】
復元部２２０は、「サンプリングデータＳｄ（ｐ）の、下位ビット列Ｌｂ（ｐ−１）からの変化」が最大量Ｖｍａｘを超過していると判定すると（Ｓ２５０でＹｅｓ）、桁上げ処理または桁下げ処理を実行する。具体的には、復元部２２０は、前回のカウント値Ｃｔ（ｐ−１）の上位ビット列Ｈｂ（ｐ−１）に「１」を加える桁上げ処理を実行し、または、上位ビット列Ｈｂ（ｐ−１）から「１」を減じる桁下げ処理を実行する（Ｓ２６０）。
【０１９５】
すなわち、復元部２２０は、サンプリングデータＳｄ（ｐ）が、下位ビット列Ｌｂ（ｐ−１）から、最大量Ｖｍａｘを超えて減少していると判定すると、上位ビット列Ｈｂ（ｐ−１）に１を加えた上位ビット列Ｈｂ’（ｐ−１）を生成する桁上げ処理を実行する。また、サンプリングデータＳｄ（ｐ）が、下位ビット列Ｌｂ（ｐ−１）から、最大量Ｖｍａｘを超えて増加していると判定すると、上位ビット列Ｈｂ（ｐ−１）から１を減じた上位ビット列Ｈｂ’（ｐ−１）を生成する桁下げ処理を実行する。そして、復元部２２０は、桁上げ処理または桁下げ処理を実行して生成した上位ビット列Ｈｂ’（ｐ−１）を上位ビットとし、サンプリングデータＳｄ（ｐ）を下位ビットとするビット列を生成する（Ｓ２７０）。
【０１９６】
復元部２２０は、変化が最大量Ｖｍａｘを超過していないと判定すると（Ｓ２５０でＮｏ）、上位ビット列Ｈｂ（ｐ−１）を上位ビットとし、サンプリングデータＳｄ（ｐ）を下位ビットとするビット列を生成する（Ｓ２７０）。復元部２２０は、Ｓ２７０で生成したビット列を、カウント値Ｃｔ（ｐ）を示すビット列としてカウント値テーブルに格納する（Ｓ２８０）。復元部２２０は、データフレームから、全ての圧縮データ（つまり、サンプリングデータＳｄ（２）〜Ｓｄ（ｎ）の全て）を取り出したかを判定し（Ｓ２９０）、全ての圧縮データを取り出したと判定すると（Ｓ２９０でＹｅｓ）、処理を終了する。復元部２２０は、全ての圧縮データを取り出していないと判定すると（Ｓ２９０でＮｏ）、次のサンプリングデータＳｄ（ｐ＋１）を取り出し（Ｓ２３０）、Ｓ２４０以降の処理を実行する。
【０１９７】
図１１の（Ａ）に示す処理を実行することにより、ＰＬＣ２０は、図１１の（Ｂ）に示すように、サンプリングデータＳｄ（１）〜Ｓｄ（ｎ）の各々から、カウント値Ｃｔ（１）〜Ｃｔ（ｎ）の各々を復元する。
【０１９８】
（復元処理の詳細）
図１２は、ＰＬＣ２０（特に、復元部２２０）が実行するデータ復元処理の詳細を示す図である。復元部２２０は、カウンタユニット１０から送信されてきたサンプリングデータＳｄ（ｐ）からカウント値Ｃｔ（ｐ）を復元し、具体的には、サンプリングデータＳｄ（２）〜Ｓｄ（ｎ）の各々を、カウント値Ｃｔ（２）〜Ｃｔ（ｎ）の各々へと復元する。
【０１９９】
図１２に示すように、第１に、復元部２２０は、カウンタユニット１０から送信されてきたデータ（データフレーム）から、先頭データ（つまり、先頭のサンプリングデータＳｄ（１）：０ｘ４３Ｃ２Ａ２６７）を取り出し、カウント値Ｃｔ（１）とする。第２に、復元部２２０は、次の圧縮データを取り出し、具体的には、サンプリングデータＳｄ（２）：０ｘ６９を取り出す。第３に、復元部２２０は、カウント値Ｃｔ（１）：０ｘ４３Ｃ２Ａ２６７の下位ビット列Ｌｂ：０ｘ６７と、サンプリングデータＳｄ（２）：０ｘ６９とを用いて「桁上がり／桁下がりチェック」を実行する。
【０２００】
第４に、復元部２２０は、「桁上がり／桁下がりチェック」において問題がないと判定すると、カウント値Ｃｔ（１）：０ｘ４３Ｃ２Ａ２６７の下位ビット列Ｌｂ：０ｘ６７を、サンプリングデータＳｄ（２）：０ｘ６９と差し替えたビット列を生成する。すなわち、復元部２２０は、サンプリングデータＳｄ（２）から復元したカウント値Ｃｔ（２）を示すビット列として、０ｘ４３Ｃ２Ａ２６９を生成する。
【０２０１】
また、復元部２２０は、「桁上がり／桁下がりチェック」において問題があると判定すると、カウント値Ｃｔ（１）：０ｘ４３Ｃ２Ａ２６７の上位ビット列Ｈｂ（１）：０ｘ４３Ｃ２Ａ２に対して、桁上がり処理または桁下がり処理を実行する（第５の処理）。
【０２０２】
復元部２２０は、サンプリングデータＳｄ（ｐ）から復元したカウント値Ｃｔ（ｐ）と、次の圧縮データ（サンプリングデータＳｄ（ｐ＋１））と、を用いて第２から第５までの処理を実行し、カウント値Ｃｔ（ｐ＋１）を復元する。復元部２２０は、サンプリングデータＳｄ（２）〜Ｓｄ（ｎ）の各々に対して、第２から第５までの処理を実行し、カウント値Ｃｔ（２）〜Ｃｔ（ｎ）の各々を復元する。
【０２０３】
（圧縮データ復元例１：圧縮サイズが１ｂｙｔｅで、パルスカウント方式が双方向）
図１３は、圧縮サイズが１ｂｙｔｅで、カウンタユニット１０のパルスカウント方式が双方向である場合に、ＰＬＣ２０（特に、復元部２２０）が実行するデータ復元処理を示す図である。圧縮サイズが１ｂｙｔｅで、パルスカウント方式が双方向であるので、図８を用いて説明したように、最大量Ｖｍａｘは、「−１２７」以上「１２７」以下である。復元部２２０は先ず、「データフレーム受信部２１０が受信したデータフレーム」から、先頭データ（つまり、先頭のサンプリングデータＳｄ（１）：０ｘ４３Ｃ２Ａ２６７）を取り出し、カウント値Ｃｔ（１）としてカウント値テーブルに格納する。
【０２０４】
復元部２２０は、データフレームから次の圧縮データ（サンプリングデータＳｄ（２）：０ｘ６９）を取り出すと、カウント値Ｃｔ（１）の下位ビット列Ｌｂ（１）：０ｘ６７とサンプリングデータＳｄ（２）：０ｘ６９とを比較する。復元部２２０は、カウント値Ｃｔ（１）の下位ビット列Ｌｂ（１）：０ｘ６７から、サンプリングデータＳｄ（２）：０ｘ６９までの変化「２」が、最大量Ｖｍａｘ（つまり、「−１２７」以上「１２７」以下）を超えていないと判定する。
【０２０５】
そこで、復元部２２０は、カウント値Ｃｔ（１）の下位ビット列Ｌｂ（１）：０ｘ６７を、サンプリングデータＳｄ（２）：０ｘ６９に差し替えたビット列：０ｘ４３Ｃ２Ａ２６９を生成する。言い換えれば、復元部２２０は、カウント値Ｃｔ（１）の上位ビット列Ｈｂ（１）：０ｘ４３Ｃ２Ａ２を上位ビットとし、サンプリングデータＳｄ（２）：０ｘ６９を下位ビットとするビット列：０ｘ４３Ｃ２Ａ２６９を生成する。復元部２２０は、生成したビット列：０ｘ４３Ｃ２Ａ２６９を、サンプリングデータＳｄ（２）から復元したカウント値Ｃｔ（２）を示すビット列として、カウント値テーブルに格納する。
【０２０６】
同様に、復元部２２０は、データフレームから次の圧縮データ（サンプリングデータＳｄ（３）：０ｘ６Ｅ）を取り出すと、カウント値Ｃｔ（２）の下位ビット列Ｌｂ（２）：０ｘ６９とサンプリングデータＳｄ（３）：０ｘ６Ｅとを比較する。復元部２２０は、カウント値Ｃｔ（２）の下位ビット列Ｌｂ（２）：０ｘ６９から、サンプリングデータＳｄ（３）：０ｘ６Ｅまでの変化「５」が、最大量Ｖｍａｘ（つまり、「−１２７」以上「１２７」以下）を超えていないと判定する。
【０２０７】
そこで、復元部２２０は、カウント値Ｃｔ（２）の下位ビット列Ｌｂ（１）：０ｘ６９を、サンプリングデータＳｄ（３）：０ｘ６Ｅに差し替えたビット列：０ｘ４３Ｃ２Ａ２６Ｅを生成する。言い換えれば、復元部２２０は、カウント値Ｃｔ（２）の上位ビット列Ｈｂ（１）：０ｘ４３Ｃ２Ａ２を上位ビットとし、サンプリングデータＳｄ（３）：０ｘ６Ｅを下位ビットとするビット列：０ｘ４３Ｃ２Ａ２６Ｅを生成する。復元部２２０は、生成したビット列：０ｘ４３Ｃ２Ａ２６Ｅを、サンプリングデータＳｄ（３）から復元したカウント値Ｃｔ（３）を示すビット列として、カウント値テーブルに格納する。
【０２０８】
（桁上がり／桁下がりがある場合）
図１４は、図１３と同様に、圧縮サイズが１ｂｙｔｅで、カウンタユニット１０のパルスカウント方式が双方向である場合に、ＰＬＣ２０が実行するデータ復元処理を示す図であり、特に、ＰＬＣ２０が桁上げ／桁下げ処理を実行する例を示している。圧縮サイズが１ｂｙｔｅで、パルスカウント方式が双方向であるので、前述の通り、最大量Ｖｍａｘは、「−１２７」以上「１２７」以下である。
【０２０９】
復元部２２０は先ず、「データフレーム受信部２１０が受信したデータフレーム」から、先頭データ（つまり、先頭のサンプリングデータＳｄ（１）：０ｘ４３Ｃ２Ａ２ＦＦ）を取り出し、カウント値Ｃｔ（１）としてカウント値テーブルに格納する。
【０２１０】
復元部２２０は、データフレームから次の圧縮データ（サンプリングデータＳｄ（２）：０ｘ０１）を取り出すと、カウント値Ｃｔ（１）の下位ビット列Ｌｂ（１）：０ｘＦＦとサンプリングデータＳｄ（２）：０ｘ０１とを比較する。復元部２２０は、サンプリングデータＳｄ（２）：０ｘ０１が、下位ビット列Ｌｂ（１）：０ｘＦＦから「０ｘＦＥ」減少しており、つまり、最大量Ｖｍａｘ（つまり、「−１２７」以上「１２７」以下）を超えて減少していると判定する。したがって、復元部２２０は、サンプリングデータＳｄ（２）：０ｘ０１は、下位ビット列Ｌｂ（１）：０ｘＦＦから減少した値ではなく、増加して桁上がりした値を示していると判定する。
【０２１１】
復元部２２０は、カウント値Ｃｔ（１）の上位ビット列Ｈｂ（１）：０ｘ４３Ｃ２Ａ２に１を加えたビット列：０ｘ４３Ｃ２Ａ３を上位ビットとし、サンプリングデータＳｄ（２）：０ｘ０１を下位ビットとするビット列を生成する。すなわち、復元部２２０は、ビット列：０ｘ４３Ｃ２Ａ３０１を生成し、このビット列を、サンプリングデータＳｄ（２）から復元したカウント値Ｃｔ（２）を示すビット列として、カウント値テーブルに格納する。
【０２１２】
同様に、復元部２２０は、データフレームから次の圧縮データ（サンプリングデータＳｄ（３）：０ｘＦＥ）を取り出すと、カウント値Ｃｔ（２）の下位ビット列Ｌｂ（２）：０ｘ０１とサンプリングデータＳｄ（３）：０ｘＦＥとを比較する。復元部２２０は、サンプリングデータＳｄ（３）：０ｘＦＥが、下位ビット列Ｌｂ（２）：０ｘ０１から「０ｘＦＤ」増加しており、つまり、最大量Ｖｍａｘ（つまり、「−１２７」以上「１２７」以下）を超えて増加していると判定する。したがって、復元部２２０は、サンプリングデータＳｄ（３）：０ｘＦＥは、下位ビット列Ｌｂ（２）：０ｘ０１から増加した値ではなく、減少して桁下がりした値を示していると判定する。
【０２１３】
復元部２２０は、カウント値Ｃｔ（２）の上位ビット列Ｈｂ（２）：０ｘ４３Ｃ２Ａ３から１を減じたビット列：０ｘ４３Ｃ２Ａ２を上位ビットとし、サンプリングデータＳｄ（３）：０ｘＦＥを下位ビットとするビット列を生成する。すなわち、復元部２２０は、ビット列：０ｘ４３Ｃ２Ａ２ＦＥを生成し、このビット列を、サンプリングデータＳｄ（３）から復元したカウント値Ｃｔ（３）を示すビット列として、カウント値テーブルに格納する。
【０２１４】
（圧縮データ復元例２：圧縮サイズが２ｂｉｔで、パルスカウント方式が双方向）
図１５は、圧縮サイズが２ｂｉｔで、カウンタユニット１０のパルスカウント方式が双方向である場合に、ＰＬＣ２０（特に、復元部２２０）が実行するデータ復元処理を示す図である。圧縮サイズが２ｂｉｔで、パルスカウント方式が双方向であるので、図８を用いて説明したように、最大量Ｖｍａｘは、「−１」以上「１」以下である。復元部２２０は先ず、「データフレーム受信部２１０が受信したデータフレーム」から、先頭データ（つまり、先頭のサンプリングデータＳｄ（１）：０ｘ４３Ｃ２Ａ２６７）を取り出し、カウント値Ｃｔ（１）としてカウント値テーブルに格納する。カウント値Ｃｔ（１）：０ｘ４３Ｃ２Ａ２６７の、「最下位ビットを含む、最大量Ｖｍａｘ分（つまり、２ｂｉｔ分）のビット列」である下位ビット列Ｌｂ（１）は、「ｂ１１」である。
【０２１５】
復元部２２０は、データフレームから次の圧縮データ（サンプリングデータＳｄ（２）：ｂ１０）を取り出すと、カウント値Ｃｔ（１）の下位ビット列Ｌｂ（１）：ｂ１１とサンプリングデータＳｄ（２）：ｂ１０とを比較する。復元部２２０は、カウント値Ｃｔ（１）の下位ビット列Ｌｂ（１）：ｂ１１から、サンプリングデータＳｄ（２）：ｂ１０までの変化「−１」が、最大量Ｖｍａｘ（つまり、「−１」以上「１」以下）を超えていないと判定する。
【０２１６】
そこで、復元部２２０は、カウント値Ｃｔ（１）の下位ビット列Ｌｂ（１）：ｂ１１を、サンプリングデータＳｄ（２）：ｂ１０に差し替えたビット列：０ｘ４３Ｃ２Ａ２６６を生成する。復元部２２０は、生成したビット列：０ｘ４３Ｃ２Ａ２６６を、サンプリングデータＳｄ（２）から復元したカウント値Ｃｔ（２）を示すビット列として、カウント値テーブルに格納する。
【０２１７】
同様に、復元部２２０は、データフレームから次の圧縮データ（サンプリングデータＳｄ（３）：ｂ１１）を取り出すと、カウント値Ｃｔ（２）の下位ビット列Ｌｂ（２）：ｂ１０とサンプリングデータＳｄ（３）：ｂ１１とを比較する。復元部２２０は、カウント値Ｃｔ（２）の下位ビット列Ｌｂ（２）：ｂ１０から、サンプリングデータＳｄ（３）：ｂ１１までの変化「１」が、最大量Ｖｍａｘ（つまり、「−１２７」以上「１２７」以下）を超えていないと判定する。
【０２１８】
そこで、復元部２２０は、カウント値Ｃｔ（２）の下位ビット列Ｌｂ（１）：ｂ１０を、サンプリングデータＳｄ（３）：ｂ１１に差し替えたビット列：０ｘ４３Ｃ２Ａ２６７を生成する。復元部２２０は、生成したビット列：０ｘ４３Ｃ２Ａ２６７を、サンプリングデータＳｄ（３）から復元したカウント値Ｃｔ（３）を示すビット列として、カウント値テーブルに格納する。
【０２１９】
（桁上がり／桁下がりがある場合）
図１６は、図１５と同様に、圧縮サイズが２ｂｉｔで、カウンタユニット１０のパルスカウント方式が双方向である場合に、ＰＬＣ２０が実行するデータ復元処理を示す図であり、特に、ＰＬＣ２０が桁上げ／桁下げ処理を実行する例を示している。圧縮サイズが２ｂｉｔで、パルスカウント方式が双方向であるので、前述の通り、最大量Ｖｍａｘは、「−１」以上「１」以下である。
【０２２０】
復元部２２０は先ず、「データフレーム受信部２１０が受信したデータフレーム」から、先頭データ（つまり、先頭のサンプリングデータＳｄ（１）：０ｘ４３Ｃ２Ａ２ＦＦ）を取り出し、カウント値Ｃｔ（１）としてカウント値テーブルに格納する。カウント値Ｃｔ（１）：０ｘ４３Ｃ２Ａ２ＦＦの、「最下位ビットを含む、最大量Ｖｍａｘ分（つまり、２ｂｉｔ分）のビット列」である下位ビット列Ｌｂ（１）は、「ｂ１１」である。
【０２２１】
復元部２２０は、データフレームから次の圧縮データ（サンプリングデータＳｄ（２）：ｂ００）を取り出すと、カウント値Ｃｔ（１）の下位ビット列Ｌｂ（１）：ｂ１１とサンプリングデータＳｄ（２）：ｂ００とを比較する。復元部２２０は、サンプリングデータＳｄ（２）：ｂ００が、下位ビット列Ｌｂ（１）：ｂ１１から「ｂ１１」減少しており、つまり、最大量Ｖｍａｘ（つまり、「−１」以上「１」以下）を超えて減少していると判定する。したがって、復元部２２０は、サンプリングデータＳｄ（２）：ｂ００は、下位ビット列Ｌｂ（１）：ｂ１１から減少した値ではなく、増加して桁上がりした値を示していると判定する。
【０２２２】
復元部２２０は、カウント値Ｃｔ（１）の上位ビット列Ｈｂ（１）に１を加えたビット列を上位ビットとし、サンプリングデータＳｄ（２）を下位ビットとするビット列：０ｘ４３Ｃ２Ａ３００を生成する。復元部２２０は、生成したビット列：０ｘ４３Ｃ２Ａ３００を、サンプリングデータＳｄ（２）から復元したカウント値Ｃｔ（２）を示すビット列として、カウント値テーブルに格納する。
【０２２３】
同様に、復元部２２０は、データフレームから次の圧縮データ（サンプリングデータＳｄ（３）：ｂ１１）を取り出すと、カウント値Ｃｔ（２）の下位ビット列Ｌｂ（２）：ｂ００とサンプリングデータＳｄ（３）：ｂ１１とを比較する。復元部２２０は、サンプリングデータＳｄ（３）：ｂ１１が、下位ビット列Ｌｂ（２）：ｂ００から「ｂ１１」増加しており、つまり、最大量Ｖｍａｘ（つまり、「−１」以上「１」以下）を超えて増加していると判定する。したがって、復元部２２０は、サンプリングデータＳｄ（３）：ｂ１１は、下位ビット列Ｌｂ（２）：ｂ００から増加した値ではなく、減少して桁下がりした値を示していると判定する。
【０２２４】
復元部２２０は、カウント値Ｃｔ（２）の上位ビット列Ｈｂ（２）から１を減じたビット列を上位ビットとし、サンプリングデータＳｄ（３）：ｂ１１を下位ビットとするビット列：０ｘ４３Ｃ２Ａ２ＦＦを生成する。復元部２２０は、生成したビット列：０ｘ４３Ｃ２Ａ２ＦＦを、サンプリングデータＳｄ（３）から復元したカウント値Ｃｔ（３）を示すビット列として、カウント値テーブルに格納する。
【０２２５】
（圧縮データ復元例３：圧縮サイズが１ｂｉｔで、パルスカウント方式が単方向）
図１７は、圧縮サイズが１ｂｉｔで、カウンタユニット１０のパルスカウント方式が単方向である場合に、ＰＬＣ２０（特に、復元部２２０）が実行するデータ復元処理を示す図である。圧縮サイズが１ｂｉｔで、パルスカウント方式が単方向であるので、図８を用いて説明したように、最大量Ｖｍａｘは、「０」以上「１」以下である。復元部２２０は先ず、「データフレーム受信部２１０が受信したデータフレーム」から、先頭データ（つまり、先頭のサンプリングデータＳｄ（１）：０ｘ４３Ｃ２Ａ２６７）を取り出し、カウント値Ｃｔ（１）としてカウント値テーブルに格納する。カウント値Ｃｔ（１）：０ｘ４３Ｃ２Ａ２６７の、「最下位ビットを含む、最大量Ｖｍａｘ分（つまり、１ｂｉｔ分）のビット列」である下位ビット列Ｌｂ（１）は、「ｂ１」である。
【０２２６】
復元部２２０は、データフレームから次の圧縮データ（サンプリングデータＳｄ（２）：ｂ１）を取り出すと、カウント値Ｃｔ（１）の下位ビット列Ｌｂ（１）：ｂ１とサンプリングデータＳｄ（２）：ｂ１とを比較する。復元部２２０は、カウント値Ｃｔ（１）の下位ビット列Ｌｂ（１）：ｂ１から、サンプリングデータＳｄ（２）：ｂ１までの変化「０」が、最大量Ｖｍａｘ（つまり、「−１」以上「１」以下）を超えていないと判定する。
【０２２７】
そこで、復元部２２０は、カウント値Ｃｔ（１）の下位ビット列Ｌｂ（１）：ｂ１を、サンプリングデータＳｄ（２）：ｂ１に差し替えたビット列：０ｘ４３Ｃ２Ａ２６７を生成する。復元部２２０は、生成したビット列：０ｘ４３Ｃ２Ａ２６７を、サンプリングデータＳｄ（２）から復元したカウント値Ｃｔ（２）を示すビット列として、カウント値テーブルに格納する。
【０２２８】
同様に、復元部２２０は、データフレームから次の圧縮データ（サンプリングデータＳｄ（３）：ｂ０）を取り出すと、カウント値Ｃｔ（２）の下位ビット列Ｌｂ（２）：ｂ１とサンプリングデータＳｄ（３）：ｂ０とを比較する。復元部２２０は、サンプリングデータＳｄ（３）：ｂ０が、下位ビット列Ｌｂ（２）：ｂ１から減少しており、つまり、最大量Ｖｍａｘ（つまり、「０」以上「１」以下）を超えて減少していると判定する。したがって、復元部２２０は、サンプリングデータＳｄ（３）：ｂ０は、下位ビット列Ｌｂ（２）：ｂ１から減少した値ではなく、増加して桁下がりした値を示していると判定する。
【０２２９】
復元部２２０は、カウント値Ｃｔ（２）の上位ビット列Ｈｂ（２）に１を加えたビット列を上位ビットとし、サンプリングデータＳｄ（３）を下位ビットとするビット列：０ｘ４３Ｃ２Ａ２６８を生成する。復元部２２０は、生成したビット列：０ｘ４３Ｃ２Ａ２６８を、サンプリングデータＳｄ（３）から復元したカウント値Ｃｔ（３）を示すビット列として、カウント値テーブルに格納する。
【０２３０】
（ツールの詳細）
ツール３０は、図１に示すように、機能ブロックとして、算出部３１０および設定部３２０を備えている。ツール３０は、上述の各機能ブロックに加え、ＰＬＣ２０に対して制御周期Ｓｃｔを設定する、不図示の制御周期Ｓｃｔ調整部などを備えていてもよい。しかしながら、記載の簡潔性を担保するため、本実施の形態に直接関係のない構成は、説明およびブロック図から省略している。ただし、実施の実情に則して、ツール３０は、当該省略された構成を備えてもよい。
【０２３１】
設定部３２０は、最大量Ｖｍａｘを表現可能なデータサイズ（ビット数）を、つまり、圧縮サイズを、カウンタユニット１０と、ＰＬＣ２０と、の少なくとも一方に対して設定する。前記の構成によれば、ツール３０は、カウンタユニット１０とＰＬＣ２０との少なくとも一方に対して、圧縮サイズを設定する。
【０２３２】
したがって、ツール３０は、カウンタユニット１０に圧縮サイズを設定することにより、カウンタユニット１０が、ツール３０によって設定された圧縮サイズに圧縮したサンプリングデータＳｄを、ＰＬＣ２０に送信することができるようにするとの効果を奏する。また、ツール３０は、ＰＬＣ２０に圧縮サイズを設定することにより、ＰＬＣ２０が、圧縮サイズに圧縮されたサンプリングデータＳｄを復元することができるようにするとの効果を奏する。
【０２３３】
算出部３１０は、カウンタユニット１０が、１回の制御周期Ｓｃｔにおいて実行するサンプリング処理の回数を示す情報を含む、カウンタユニット１０についての設定情報を用いて、圧縮サイズを算出する。そして、設定部３２０は、算出部３１０によって算出された圧縮サイズを、カウンタユニット１０とＰＬＣ２０との少なくとも一方に対して設定する。
【０２３４】
前記の構成によれば、ツール３０の算出部３１０は、カウンタユニット１０についての設定情報を用いて、圧縮サイズを算出し、つまり、「１回の制御周期Ｓｃｔにおいて連続して実行される２つのサンプリング処理の計測結果の間の変化の最大量Ｖｍａｘ」を表現可能なデータサイズ（つまり、圧縮サイズ）を算出する。
【０２３５】
ここで、前記設定情報は、「１回の制御周期Ｓｃｔにおいて実行するサンプリング処理の回数を示す情報」に加えて、例えば、以下の情報を含んでいてもよい。すなわち、前記設定情報は、「カウンタユニット１０が、１回のサンプリング処理において受信し得るパルス信号の数」を示す情報を含んでいてもよい。
【０２３６】
前述の通り、「カウンタユニット１０が、１回のサンプリング処理において受信し得るパルス信号の数」は、エンコーダ４０（パルス信号生成装置）のスペックおよびアプリケーションの少なくとも一方により算出することができる。具体的には、「カウンタユニット１０が、１回のサンプリング処理において受信し得るパルス信号の数」は、スペックおよびアプリケーションの少なくとも一方により予め決められた、「エンコーダ４０の、分解能および最高回転数」から、算出することができる。
【０２３７】
それゆえ、前記設定情報は、前記「受信し得るパルス信号の数」を示す情報に代えて、スペックおよびアプリケーションの少なくとも一方により予め決められた、「エンコーダ４０の、分解能および最高回転数」を示す情報を含んでいてもよい。
【０２３８】
また、前記設定情報は、カウンタユニット１０のパルスカウント方式が単方向であるのか、双方向であるのかを示すパルスカウント方式種別を含んでいてもよい。パルスカウント方式種別は、カウンタユニット１０にパルス信号を出力するエンコーダ４０の出力するパルス信号が、単方向のパルス信号であるのか、または、双方向のパルス信号であるのかを示してもよい。
【０２３９】
パルスカウント方式が双方向である場合、１回の制御周期Ｓｃｔにおいて連続して実行される２つのサンプリング処理の計測結果の間の変化は、正負のいずれでもあり得る。例えば、「１回のサンプリング処理においてカウントし得るパルス数の絶対値」が「１２７」である場合、１回の制御周期Ｓｃｔにおいて連続して実行される２つのサンプリング処理の計測結果の間の変化は、「−１２７〜１２７」と示すことができる。したがって、圧縮サイズは、「１回のサンプリング処理においてカウントし得るパルス数の絶対値」を表現可能なビット数に１ビットを加えたビット数となる。
【０２４０】
パルスカウント方式が単方向である場合、１回の制御周期Ｓｃｔにおいて連続して実行される２つのサンプリング処理の計測結果の間の変化は、常に正または常に負である。例えば、「１回のサンプリング処理においてカウントし得るパルス数の絶対値」が「２５５」である場合、１回の制御周期Ｓｃｔにおいて連続して実行される２つのサンプリング処理の計測結果の間の変化は、「０〜２５５」と示すことができる。したがって、圧縮サイズは、「１回のサンプリング処理においてカウントし得るパルス数の絶対値」を表現可能なビット数となる。
【０２４１】
「１回のサンプリング処理においてカウントし得るパルス数の絶対値」は、「１回のサンプリング処理当たりの期間を示すサンプリング周期Ｓｍｃを、パルス信号の最短パルス周期Ｐｌｃｍｉｎによって除した値」に対して小数点以下を繰り上げた値である。また、サンプリング周期Ｓｍｃは、制御周期Ｓｃｔが分かれば、設定情報が含む「１回の制御周期Ｓｃｔにおいて実行するサンプリング処理の回数を示す情報」から算出することができる。さらに、「最短パルス周期Ｐｌｃｍｉｎ」は、「最高回転数を６０で除した値に分解能を乗じた値」の逆数として算出することができる。上述の通り、最大回転速度は、エンコーダ４０のスペック（仕様、性能）から決めることができ、また、アプリケーション（使用用途）から決めることもできる。
【０２４２】
したがって、ツール３０は、設定情報を用いて、圧縮サイズ（つまり、「１回の制御周期Ｓｃｔにおいて連続して実行される２つのサンプリング処理の計測結果の間の変化の最大量Ｖｍａｘ」を表現可能なサイズ）を正確に算出することができるとの効果を奏する。
【０２４３】
ツール３０は、ツール３０が使用する各種データを格納する記憶装置として、不図示のツール記憶部を備えていてもよい。なお、ツール記憶部は、ツール３０が実行する（１）制御プログラム、（２）ＯＳプログラム、（３）ツール３０が有する各種機能を実行するためのアプリケーションプログラム、および、（４）該アプリケーションプログラムを実行するときに読み出す各種データを非一時的に記憶してもよい。上記の（１）〜（４）のデータは、例えば、ＲＯＭ（read only memory）、フラッシュメモリ、ＥＰＲＯＭ（Erasable Programmable ROM）、ＥＥＰＲＯＭ（登録商標）（Electrically EPROM）、ＨＤＤ（Hard Disc Drive）等の不揮発性記憶装置に記憶される。ツール３０は、さらに、ツール一時記憶部を備えていてもよい。ツール一時記憶部は、ツール３０が実行する各種処理の過程で、演算に使用するデータおよび演算結果等を一時的に記憶するいわゆるワーキングメモリであり、ＲＡＭ（Random Access Memory）等の揮発性記憶装置で構成される。どのデータをどの記憶装置に記憶するのかについては、ツール３０の使用目的、利便性、コスト、または、物理的な制約等から適宜決定される。
【０２４４】
（ツールが利用する情報について）
図１８は、ツール３０（特に、算出部３１０）が圧縮サイズを算出する際に利用する情報（設定情報）の一例を示す図である。算出部３１０は、例えば図１８に例示するような設定情報を取得することによって、圧縮サイズを、つまり、最大量Ｖｍａｘ（１サンプリング周期Ｓｍｃに変化し得るカウント値Ｃｔ）を表現可能なビット数を、算出する。ツール３０は、例えば、制御周期Ｓｃｔ、カウンタユニット１０が１回の制御周期Ｓｃｔにおいて実行するサンプリング処理の回数、カウンタユニット１０のパルスカウント方式、エンコーダ４０の分解能および最高回転数を用いて、圧縮サイズを算出する。前述の通り、エンコーダ４０の分解能および最高回転数は、エンコーダ４０のスペック（仕様、性能）およびアプリケーション（使用用途）の少なくとも一方により、予め決められている。ツール３０は、カウンタユニット１０等の設定を示す設定情報を用いて、圧縮サイズを算出する。
【０２４５】
ツール３０は、「制御周期Ｓｃｔ」および「カウンタユニット１０が１回の制御周期Ｓｃｔにおいて実行するサンプリング処理の回数」を示す情報に代えて、「カウンタユニット１０のサンプリング周期Ｓｍｃ」を取得してもよい。すなわち、ツール３０は、カウンタユニット１０のサンプリング周期Ｓｍｃおよびパルスカウント方式を、設定情報として取得してもよい。
【０２４６】
また、カウンタユニット１０のパルスカウント方式を示す情報に代えて、ツール３０は、エンコーダ４０の出力するパルス信号が単方向であるのか、または、双方向であるのかを示す情報を、設定情報として取得してもよい。
【０２４７】
例えば、制御周期Ｓｃｔが「１［ｍｓ］」であり、１回の制御周期Ｓｃｔにおいて実行するサンプリング処理の回数が「１０［回］」であると、算出部３１０は、サンプリング周期Ｓｍｃが「１００［μｓ］（＝１ｍｓ／１０）」であると算出する。
【０２４８】
軸を１回転させた場合にエンコーダ４０が出力するパルス数を示す分解能が「３６０」であり、エンコーダ４０が１分間に可能な回転数を示す最高回転数が「６０００［ｒｐｍ］」であると、算出部３１０は、最短パルス周期Ｐｌｃｍｉｎを以下のように算出する。すなわち、算出部３１０は、「１／｛（６０００／６０）＊３６０｝」から、最短パルス周期Ｐｌｃｍｉｎが約「２７．７８μｓ」であると算出する。
【０２４９】
算出部３１０は、サンプリング周期Ｓｍｃ（１００［μｓ］）と、最短パルス周期Ｐｌｃｍｉｎ（２７．７８μｓ）とから、１回のサンプリング処理においてカウントし得るパルス数の絶対値を、以下のように算出する。すなわち、算出部３１０は、１回のサンプリング処理においてカウントし得るパルス数の絶対値を、「４（＝ＲＯＵＮＤＵＰ（１００／２７．７８））」と算出する。ＲＯＵＮＤＵＰ（ｘ）は、引数ｘの小数点以下を切り上げる関数を示している。
【０２５０】
「４」を表現可能なビット数は３ビットであるから、カウンタユニット１０のパルスカウント方式が双方向である場合、算出部３１０は、最大量Ｖｍａｘを表現可能なビット数を、つまり、圧縮サイズを、「４ｂｉｔ（＝３ｂｉｔ＋１ｂｉｔ）」と算出する。ツール３０は、設定情報を用いて上述のように算出した圧縮サイズ（上述の例では４ｂｉｔ）を、カウンタユニット１０およびＰＬＣ２０の少なくとも一方に対して、設定する。
【０２５１】
ツール３０は、さらに、１データフレームのデータサイズを算出し、算出した１データフレームのデータサイズを、カウンタユニット１０およびＰＬＣ２０の少なくとも一方に対して、設定してもよい。例えば、フルサイズを４ｂｙｔｅとすると、上述の例ではカウンタユニット１０は１回の制御周期Ｓｃｔにおいてサンプリング処理を１０回実行するので、データフレームのデータサイズは約９ｂｙｔｅ（＝４ｂｙｔｅ＋ＲＯＵＮＤＵＰ（（９＊４／８））となる。ツール３０算出した１データフレームのデータサイズ（上述の例では４ｂｙｔｅ）を、カウンタユニット１０およびＰＬＣ２０の少なくとも一方に対して、設定してもよい。
【０２５２】
ただし、ツール３０が圧縮サイズを算出し、カウンタユニット１０およびＰＬＣ２０の少なくとも一方に、算出した圧縮サイズを設定することは必須ではない。カウンタユニット１０が、自装置等の設定に係る設定情報を用いて、圧縮サイズを算出し、算出した圧縮サイズをＰＬＣ２０に通知してもよい。また、ＰＬＣ２０が、カウンタユニット１０等の設定情報を用いて、圧縮サイズを算出し、算出した圧縮サイズをカウンタユニット１０に通知してもよい。
【０２５３】
§４．変形例
（圧縮方法についての変形例：サンプリングデータを差分データとする）
図１９は、サンプリング処理において計測した計測結果（例、カウント値Ｃｔ）を、圧縮サイズのサンプリングデータＳｄに圧縮する方法の例を示す図である。特に、図１９には、データ圧縮処理について、下位ビット列Ｌｂを抽出する場合（図１９の（１））と、差分を算出する場合（図１９の（２））と、が対比して示されている。
【０２５４】
これまで、圧縮部１３０が、「２回目以降の各々のサンプリング処理において計測されたカウント値Ｃｔを示すビット列」を、圧縮サイズのサンプリングデータＳｄに圧縮する方法として、以下の例を説明してきた。すなわち、圧縮部１３０が、カウント値Ｃｔを示すビット列から、「最下位ビットを含む、圧縮サイズ分のビット列」を、下位ビット列Ｌｂとして抽出し、抽出した下位ビット列Ｌｂを、サンプリングデータＳｄとしてデータフレームへと格納する例を説明してきた。しかしながら、圧縮部１３０が、「２回目以降の各々のサンプリング処理において計測されたカウント値Ｃｔを示すビット列」を、圧縮サイズのサンプリングデータＳｄに圧縮する方法は、下位ビット列Ｌｂを抽出する方法に限られるものではない。
【０２５５】
図１９の（１）には、圧縮部１３０が、圧縮サイズ（２ｂｙｔｅ）のサンプリングデータＳｄ（ｍ）（圧縮データ）を、カウント値Ｃｔ（ｍ）の下位ビット列Ｌｂ（ｍ）とする方法が開示されている。図１９の（１）に示す方法によれば、カウント値Ｃｔ（１）：０ｘ４３Ｃ２Ａ２６７からは、そのまま、サンプリングデータＳｄ（１）が生成される。カウント値Ｃｔ（２）：０ｘ４３Ｃ２Ａ２６９からは、圧縮部１３０によって圧縮サイズ（２ｂｙｔｅ）の下位ビット列Ｌｂ（２）：０ｘ６９が抽出され、抽出された下位ビット列Ｌｂ（２）：０ｘ６９がサンプリングデータＳｄ（２）となる。カウント値Ｃｔ（３）：０ｘ４３Ｃ２Ａ２７５からは、圧縮部１３０によって圧縮サイズ（２ｂｙｔｅ）の下位ビット列Ｌｂ（３）：０ｘ７５が抽出され、抽出された下位ビット列Ｌｂ（３）：０ｘ７５がサンプリングデータＳｄ（３）となる。カウント値Ｃｔ（４）：０ｘ４３Ｃ２Ａ２９４からは、圧縮部１３０によって圧縮サイズ（２ｂｙｔｅ）の下位ビット列Ｌｂ（４）：０ｘ９４が抽出され、抽出された下位ビット列Ｌｂ（４）：０ｘ９４がサンプリングデータＳｄ（４）となる。カウント値Ｃｔ（５）：０ｘ４３Ｃ２Ａ２Ｂ８からは、圧縮部１３０によって圧縮サイズ（２ｂｙｔｅ）の下位ビット列Ｌｂ（５）：０ｘＢ８が抽出され、抽出された下位ビット列Ｌｂ（５）：０ｘＢ８がサンプリングデータＳｄ（５）となる。
【０２５６】
図１９の（２）には、圧縮部１３０が、圧縮サイズのサンプリングデータＳｄ（ｍ）（圧縮データ）を、カウント値Ｃｔ（ｍ）の、直前のカウント値Ｃｔ（ｍ−１）からの差分とする方法が開示されている。図１９の（２）に示す方法によれば、カウント値Ｃｔ（１）：０ｘ４３Ｃ２Ａ２６７からは、そのまま、サンプリングデータＳｄ（１）が生成される。カウント値Ｃｔ（２）：０ｘ４３Ｃ２Ａ２６９からは、圧縮部１３０によって、カウント値Ｃｔ（１）：０ｘ４３Ｃ２Ａ２６７からの変化量を示す、圧縮サイズ（２ｂｙｔｅ）のビット列：０ｘ０２が算出され、０ｘ０２がサンプリングデータＳｄ（２）となる。カウント値Ｃｔ（３）：０ｘ４３Ｃ２Ａ２７５からは、圧縮部１３０によって、カウント値Ｃｔ（２）：０ｘ４３Ｃ２Ａ２６９からの変化量を示す、圧縮サイズ（２ｂｙｔｅ）のビット列：０ｘ０Ｃが算出され、０ｘ０ＣがサンプリングデータＳｄ（３）となる。カウント値Ｃｔ（４）：０ｘ４３Ｃ２Ａ２９４からは、圧縮部１３０によって、カウント値Ｃｔ（３）：０ｘ４３Ｃ２Ａ２７５からの変化量を示す、圧縮サイズ（２ｂｙｔｅ）のビット列：０ｘ１Ｆが算出され、０ｘ１ＦがサンプリングデータＳｄ（４）となる。カウント値Ｃｔ（５）：０ｘ４３Ｃ２Ａ２Ｂ８からは、圧縮部１３０によって、カウント値Ｃｔ（４）：０ｘ４３Ｃ２Ａ２９４からの変化量を示す、圧縮サイズ（２ｂｙｔｅ）のビット列：０ｘ２４が算出され、０ｘ２４がサンプリングデータＳｄ（５）となる。
【０２５７】
図１９の（２）に示すように、カウント値Ｃｔ（ｍ）を、圧縮サイズのサンプリングデータＳｄ（ｍ）に圧縮する方法として、圧縮部１３０は、カウント値Ｃｔ（ｍ）の、直前のカウント値Ｃｔ（ｍ−１）からの差分を、サンプリングデータＳｄ（ｍ）としてもよい。圧縮部１３０は、カウント値Ｃｔ（２）〜Ｃｔ（ｎ）の各々について、Ｃｔ（１）〜Ｃｔ（ｎ−１）の各々からの差分を計算する。
【０２５８】
すなわち、カウンタユニット１０において、圧縮部１３０は、２回目以降の前記サンプリング処理の各々の計測結果の、直前の前記サンプリング処理の計測結果からの変化量を示すビット列を、サンプリングデータＳｄとしてもよい。
【０２５９】
前記の構成によれば、カウンタユニット１０は、２回目以降の前記サンプリング処理の各々の計測結果の、直前の前記サンプリング処理の計測結果からの変化量を示すビット列を、サンプリングデータＳｄとする。
【０２６０】
ここで、前述の通り、サンプリングデータＳｄのデータサイズは、１回の制御周期Ｓｃｔにおいて連続して実行される２つの前記サンプリング処理の計測結果の間の変化の最大量Ｖｍａｘを表現可能なデータサイズである。それゆえ、２回目以降の前記サンプリング処理の各々の計測結果の、直前の前記サンプリング処理の計測結果からの変化量のデータサイズは、前記変化の最大量Ｖｍａｘを表現可能なデータサイズ以下であり、つまり、サンプリングデータＳｄのデータサイズ以下である。
【０２６１】
したがって、カウンタユニット１０は、２回目以降の前記サンプリング処理の各々の計測結果の、直前の前記サンプリング処理の計測結果からの変化量を示すビット列を、サンプリングデータＳｄとして、ＰＬＣ２０に送信することができるとの効果を奏する。
【０２６２】
サンプリングデータＳｄ（２）〜Ｓｄ（ｎ）の各々が、カウント値Ｃｔ（２）〜Ｃｔ（ｎ）の各々の、カウント値Ｃｔ（１）〜Ｃｔ（ｎ−１）の各々からの差分である場合、ＰＬＣ２０は、以下のように、カウント値Ｃｔ（２）〜Ｃｔ（ｎ）を復元する。すなわち、ＰＬＣ２０の復元部２２０は、直前のカウント値Ｃｔ（ｍ−１）にサンプリングデータＳｄ（ｍ）を加算することによって、カウント値Ｃｔ（ｍ）を復元する。
【０２６３】
（データフレームに格納されている情報）
図２０は、カウンタユニット１０がＰＬＣ２０へと制御周期Ｓｃｔごとに繰り返し送信するデータフレームに格納されている情報の一例を示す図である。図２０に示すように、カウンタユニット１０がＰＬＣ２０へと送信するデータフレームには、各々がカウント値Ｃｔ（１）〜Ｃｔ（ｎ）の各々に対応する、サンプリングデータＳｄ（１）〜Ｓｄ（ｎ）に加えて、以下の情報が格納されていてもよい。
【０２６４】
すなわち、データフレームには、カウンタユニット１０が１回の制御周期Ｓｃｔにおいて実行するサンプリング処理の回数（つまり、サンプリング数）を示す情報が格納されていてもよい。例えば、データフレームには、カウンタユニット１０が１回の制御周期Ｓｃｔにおいて５回のサンプリング処理を実行することを示すビット列：０ｘ０００５が格納されていてもよい。
【０２６５】
また、データフレームには、圧縮サイズ（ビット数）を示す情報が格納されていてもよく、例えば、圧縮サイズが８ｂｉｔ（つまり、１ｂｙｔｅ）であることを示すビット列：０ｘ０８が格納されていてもよい。
【０２６６】
さらに、データフレームには、エンコーダの４０の出力するパルス信号のパルス方向を示す情報が、つまり、カウンタユニット１０のパルスカウント方式を示す情報が、格納されていてもよい。例えば、ビット列：０ｘ００はパルスカウント方式が単方向（正方向のみ）であることを示し、ビット列：０ｘ０１はパルスカウント方式が双方向であることを示してもよい。
【０２６７】
（サンプリング処理についての変形例：アナログ値を計測する）
図２１は、アナログユニット６０が、１回の制御周期Ｓｃｔにおいて複数回実行したサンプリング処理の各々において計測した計測結果（アナログ値Ａｌ（１）〜Ａｌ（ｎ））を、圧縮サイズのサンプリングデータＳｄ（１）〜Ｓｄ（ｎ）に圧縮する例を示している。アナログユニット６０は、カウンタユニット１０と同様の構成を備え、アナログユニット６０の計測部１１０は、１回の制御周期Ｓｃｔにおいてサンプリング処理を複数回実行し、各サンプリング処理において計測したアナログ値Ａｌを、取得部１２０に通知する。
【０２６８】
アナログユニット６０の圧縮部１３０は、カウンタユニット１０の圧縮部１３０と同様、「１サンプリング周期Ｓｍｃに変化し得るアナログ値Ａｌ」を表現可能なビット数に、「２回目以降の各々のサンプリング処理において計測したアナログ値Ａｌ」を圧縮する。「１サンプリング周期Ｓｍｃに変化し得るアナログ値Ａｌ」は、「１サンプリング周期Ｓｍｃで変化し得るアナログ値Ａｌの変化量」と言い換えてもよい。つまり、圧縮サイズは、アナログユニット６０が１回の制御周期Ｓｃｔにおいて連続して実行する２つのサンプリング処理の各々においてカウントした２つのアナログ値Ａｌの間の変化の最大量Ｖｍａｘを表現可能なデータサイズである。言い換えれば、圧縮サイズは、「ｍ」回目のサンプリング処理において計測したアナログ値Ａｌ（ｍ）と、その直前の「ｍ−１」回目のサンプリング処理において計測したアナログ値Ａｌ（ｍ−１）との間の変化の最大量Ｖｍａｘを表現可能なデータサイズである。
【０２６９】
１サンプリング周期Ｓｍｃに変化し得るアナログ値Ａｌの変化の範囲が、例えば、「−１２７」以上「１２７」以下である場合、「１２７」を表現可能な７ビットに１ビットを加えた８ビット、つまり、１ｂｙｔｅが、圧縮サイズとなる。同様に、１サンプリング周期Ｓｍｃに変化し得るアナログ値Ａｌの変化の範囲が、例えば、「−１」以上「１」以下である場合、「１」を表現可能な１ビットに１ビットを加えた２ビットが、圧縮サイズとなる。また、１サンプリング周期Ｓｍｃに変化し得るアナログ値Ａｌの変化の範囲が、例えば、「０」以上「２５５」以下である場合、「２５５」を表現可能な８ビット、つまり、１ｂｙｔｅが、圧縮サイズとなる。
【０２７０】
すなわち、アナログユニット６０（データ転送装置）は、１回の制御周期Ｓｃｔにおいて複数回実行されたサンプリング処理の各々の計測結果（アナログ値Ａｌ）を示す、複数のサンプリングデータＳｄを、１データフレームに格納して、制御周期ＳｃｔごとにＰＬＣ２０へと送信するデータ転送装置である。アナログユニット６０は、取得部１２０と、圧縮部１３０と、を備えている。取得部１２０は、前記複数回実行されたサンプリング処理の各々の計測結果（アナログ値Ａｌ）を取得する。圧縮部１３０は、１回の制御周期Ｓｃｔにおいて連続して実行される２つの前記サンプリング処理の計測結果（アナログ値Ａｌ）の間の変化の最大量Ｖｍａｘが予め決まっている場合、取得部１２０によって取得された複数の前記計測結果（アナログ値Ａｌ）のうち、２回目以降の前記サンプリング処理の各々の計測結果（つまり、アナログ値Ａｌ（２）〜Ａｌ（ｎ）の各々）を、最大量Ｖｍａｘを表現可能なデータサイズ（つまり、圧縮サイズ）のサンプリングデータＳｄに圧縮する。
【０２７１】
前記の構成によれば、アナログユニット６０は、最大量Ｖｍａｘが予め決まっている場合、サンプリングデータＳｄ（２）〜Ｓｄ（ｎ）の各々を、最大量Ｖｍａｘを表現可能なデータサイズ（つまり、圧縮サイズ）に圧縮して、ＰＬＣ２０へと送信する。
【０２７２】
したがって、アナログユニット６０は、アナログ値Ａｌ（２）〜Ａｌ（ｎ）の各々を圧縮せずに送信する場合に比べて、制御周期ＳｃｔごとにＰＬＣ２０へと送信するデータフレームのデータサイズを、抑制することができるとの効果を奏する。
【０２７３】
アナログユニット６０の圧縮部１３０は、カウンタユニット１０の圧縮部１３０と同様、アナログ値Ａｌ（２）〜Ａｌ（ｎ）の各々の下位ビット列Ｌｂ（２）〜Ｌｂ（ｎ）を抽出して、サンプリングデータＳｄ（２）〜Ｓｄ（ｎ）の各々を生成してもよい。また、アナログユニット６０の圧縮部１３０は、アナログ値Ａｌ（２）〜Ａｌ（ｎ）の各々の、アナログ値Ａｌ（１）〜Ａｌ（ｎ−１）の各々からの差分を、サンプリングデータＳｄ（２）〜Ｓｄ（ｎ）の各々としてもよい。
【０２７４】
（カウンタユニットとＰＬＣとの接続例）
カウンタユニット１０とＰＬＣ２０とは、一定の通信周期ごとに相互に信号（データ）を送受信できるように通信可能に接続されていればよく、カウンタユニット１０とＰＬＣ２０との接続方式は特に限定されない。同様に、アナログユニット６０とＰＬＣ２０とは、一定の通信周期ごとに相互に信号（データ）を送受信できるように通信可能に接続されていればよく、アナログユニット６０とＰＬＣ２０との接続方式は特に限定されない。
【０２７５】
図２２は、カウンタユニット１０とＰＬＣ２０との接続例を示す図である。カウンタユニット１０とＰＬＣ２０とは、相互に通信可能に接続され、特に、所定の通信周期（例えば、ＰＬＣ２０の制御周期Ｓｃｔ）で繰り返し、相互にデータを送受信する。カウンタユニット１０は、ＰＬＣ２０と周期的に通信できればよく、カウンタユニット１０とＰＬＣ２０との間のバス／ネットワーク構成は、特に限定されない。
【０２７６】
すなわち、図２２の（Ａ）に示すように、カウンタユニット１０とＰＬＣ２０とは、ＰＬＣ直結バスを介して、相互に通信可能に接続されていてもよい。つまり、カウンタユニット１０は、ＰＬＣ２０と一体的に（言い換えれば、ＰＬＣ２０の機能ユニットとして）構成され、カウンタユニット１０とＰＬＣ２０（特に、ＰＬＣ２０のＣＰＵユニット）とが内部バスによって接続されてもよい。
【０２７７】
また、図２２の（Ｂ）に示すように、カウンタユニット１０とＰＬＣ２０とは、フィールドネットワーク５０を介して、相互に通信可能に接続されていてもよい。カウンタユニット１０とＰＬＣ２０とを接続するフィールドネットワーク５０としては、典型的には、各種の産業用イーサネット（登録商標）を用いることができる。産業用イーサネット（登録商標）としては、たとえば、ＥｔｈｅｒＣＡＴ（登録商標）、Ｐｒｏｆｉｎｅｔ ＩＲＴ、ＭＥＣＨＡＴＲＯＬＩＮＫ（登録商標）−ＩＩＩ、Ｐｏｗｅｒｌｉｎｋ、ＳＥＲＣＯＳ（登録商標）−ＩＩＩ、ＣＩＰ Ｍｏｔｉｏｎなどが知られており、これらのうちのいずれを採用してもよい。さらに、産業用イーサネット（登録商標）以外のフィールドネットワークを用いてもよい。たとえば、モーション制御を行わない場合であれば、ＤｅｖｉｃｅＮｅｔ、ＣｏｍｐｏＮｅｔ／ＩＰ（登録商標）などを用いてもよい。図２２の（Ｂ）に示す例では、ＰＬＣ２０をマスタ装置とするマスタスレーブ制御システムにおいて、スレーブ装置としてのカウンタユニット１０が、フィールドネットワーク５０を介して、ＰＬＣ２０に接続されている。
【０２７８】
さらに、図２２の（Ｃ）に示すように、カウンタユニット１０とＰＬＣ２０とは、ＩＯターミナル内部バスを介して、相互に通信可能に接続されていてもよい。より正確には、カウンタユニット１０とカプラユニット（通信カプラ）とは、ＩＯターミナル内部バス（内部バス）を介して互いに通信可能に接続され、一体となってＩＯユニットを構成してもよい。そして、ＰＬＣ２０をマスタ装置とするマスタスレーブ制御システムにおいて、カウンタユニット１０とカプラユニットとを含むＩＯユニットは、スレーブ装置として、フィールドネットワーク５０を介して、ＰＬＣ２０に接続されていてもよい。
【０２７９】
〔ソフトウェアによる実現例〕
カウンタユニット１０、ＰＬＣ２０、および、ツール３０の各々の機能ブロック（具体的には、計測部１１０、取得部１２０、圧縮部１３０、送信部１４０、データフレーム受信部２１０、復元部２２０、算出部３１０、および、設定部３２０）は、集積回路（ＩＣチップ）等に形成された論理回路（ハードウェア）によって実現してもよいし、ＣＰＵ（CenＴｒal Processing Unit）を用いてソフトウェアによって実現してもよい。
【０２８０】
後者の場合、カウンタユニット１０、ＰＬＣ２０、および、ツール３０の各々は、各機能を実現するソフトウェアであるプログラムの命令を実行するＣＰＵ、上記プログラムおよび各種データがコンピュータ（またはＣＰＵ）で読み取り可能に記録されたＲＯＭ（Read Only Memory）または記憶装置（これらを「記録媒体」と称する）、上記プログラムを展開するＲＡＭ（Random Access Memory）等を備えている。そして、コンピュータ（またはＣＰＵ）が上記プログラムを上記記録媒体から読み取って実行することにより、本発明の目的が達成される。上記記録媒体としては、「一時的でない有形の媒体」、例えば、テープ、ディスク、カード、半導体メモリ、プログラマブルな論理回路等を用いることができる。また、上記プログラムは、該プログラムを伝送可能な任意の伝送媒体（通信ネットワークや放送波等）を介して上記コンピュータに供給されてもよい。なお、本発明は、上記プログラムが電子的な伝送によって具現化された、搬送波に埋め込まれたデータ信号の形態でも実現され得る。
【０２８１】
本発明は上述した各実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能であり、異なる実施形態にそれぞれ開示された技術的手段を適宜組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。
【符号の説明】
【０２８２】
１０  カウンタユニット（データ転送装置）
２０  ＰＬＣ（制御装置）
３０  ツール（設定装置）
４０  エンコーダ（計測デバイス）
６０  アナログユニット（データ転送装置）
７０  センサ（計測デバイス）
１２０  取得部
１３０  圧縮部
２１０  データフレーム受信部
２２０  復元部
３１０  算出部
３２０  設定部
Ａｌ  アナログ値（計測結果）
Ｃｔ  カウント値（計測結果）
Ｓｃｔ  制御周期
Ｓｄ  サンプリングデータ
Ｖｍａｘ  最大量
Ｓ１１０  取得ステップ
Ｓ１６０  取得ステップ
Ｓ１３０  圧縮ステップ
【図１】
2020195092.tif 000003
【図２】
2020195092.tif 000004
【図３】
2020195092.tif 000005
【図４】
2020195092.tif 000006
【図５】
2020195092.tif 000007
【図６】
2020195092.tif 000008
【図７】
2020195092.tif 000009
【図８】
2020195092.tif 000010
【図９】
2020195092.tif 000011
【図１０】
2020195092.tif 000012
【図１１】
2020195092.tif 000013
【図１２】
2020195092.tif 000014
【図１３】
2020195092.tif 000015
【図１４】
2020195092.tif 000016
【図１５】
2020195092.tif 000017
【図１６】
2020195092.tif 000018
【図１７】
2020195092.tif 000019
【図１８】
2020195092.tif 000020
【図１９】
2020195092.tif 000021
【図２０】
2020195092.tif 000022
【図２１】
2020195092.tif 000023
【図２２】
2020195092.tif 000024