(57)【要約】【課題】外部から入力されたパルス列数の正確な値を最短の時間で入手できる計数装置及び計数システムを得る。【解決手段】装置外部からパルス列を入力して該パルス列を計数し、この計数した計数値が、この計数値を用いて制御を行うコントローラ２にて読み取られる計数装置１において、前記パルス列の計数処理中に、装置外部からのトリガ信号が印加されたときパルス列数の計数値をラッチする手段８と、前記トリガ信号が印加されたとき前記コントローラ２に対して割り込みを発行する手段１１と、前記ラッチされたパルス計数値が読出し完了したとき前記ラッチされたパルス計数値をクリアする手段１２とを備える構成とした。【選択図】　　　図１
2004015153.tif 000002
【特許請求の範囲】
【請求項１】
装置外部からパルス列を入力して該パルス列を計数し、この計数した計数値が、この計数値を用いて制御を行うコントローラにて読み取られる計数装置において、前記パルス列の計数処理中に、装置外部からのトリガ信号が印加されたときパルス列数の計数値をラッチする手段と、前記トリガ信号が印加されたとき前記コントローラに対して割り込みを発行する手段と、前記ラッチされたパルス計数値が読出し完了したとき前記ラッチされたパルス計数値をクリアする手段とを備えてなる計数装置。
【請求項２】
前記ラッチされたパルス計数値の読出しを完了したとき、前記パルス列の計数処理を行うカウント現在値格納レジスタに所定のプリセット値を与えることを特徴とする請求項１に記載の計数装置。
【請求項３】
装置外部からパルス列を入力して該パルス列を計数する計数装置と、この計数装置にて計数した計数値を読み取り、この読み取った計数値を用いて制御を行うコントローラとを備えてなる計数システムにおいて、前記計数装置が、前記パルス列の計数処理中に、装置外部からのトリガ信号が印加されたときパルス列数の計数値をラッチする手段と、前記トリガ信号が印加されたとき前記コントローラに対して割り込みを発行する手段と、前記ラッチされたパルス計数値が読出し完了したときラッチされたパルス計数値をクリアする手段とを有するとともに、前記コントローラが、前記計数装置より割込みを受けたとき割込みプログラムを実行し、前記計数装置にラッチされた計数値を読み取る手段を有することを特徴とする計数システム。
【請求項４】
前記ラッチされたパルス計数値の読出しを完了したとき、前記パルス列の計数処理を行うカウント現在値格納レジスタに所定のプリセット値を与えることを特徴とする請求項３に記載の計数システム。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
この発明は、計測制御等に用いる計数装置及び計数システム、特に、測長、測角、測量に用いる光電式エンコーダ装置等と組み合わせて、パルス信号のパルス数等を計数する計数装置、及び計数装置で計数された計数値を用いて所定の制御を行う計数システムに関する。
【０００２】
【従来の技術】
測長、測角、測量に用いる機器にエンコーダがある。エンコーダを簡単に説明すると、いろいろな情報を符号化する一種の変換器といってよい。エンコーダの種類の一つにロータリエンコーダがある。ロータリエンコーダは回転軸の回転角変位をデジタル量に変換する一種の回転角センサーである。そのセンサーで長さ、角度、量等を測定する。
近年、ロータリエンコーダはもっぱら光電式になっている。光電式エンコーダは、回転軸に固定された回転円板に複数個の放射状スリットを環状に配置し、回転円板に平行に設けられた固定円板の一部に固定スリットを設け、回転円板と固定円板の両方を挟んで発光素子と受光素子を配置し、回転円板と固定円板の両スリットを通過した光を信号として回転軸の回転量を検出している。
【０００３】
このように出力された光電信号はパルス状、即ちデジタル信号であるので適当なデジタルカウンタでこの信号を計数し、パルス数に対し演算を行うことで、測定対象の物理量を求めることが可能である。
具体的には
・「パルス数」×「１パルスあたりの移動量」＝総移動量
・「パルス数」×「１パルスあたりの重量」＝総重量
・「パルス数」×「１パルスあたりの角度量」＝総変位角
・「パルス数」×「１パルスあたりの長さ」＝測定物の長さ
といった具合である。
【０００４】
次に図６〜図１２を用いて、従来のパルス列計測制御システム（計数システム）について説明する。
図６はパルス列計測制御システムの外観を示す図、図７はパルス計数ユニット（計数装置）のカウント回路の動作タイミングチャート図である。
図６において、１００１は外部から入力されたパルス列を計数する機能を実現するパルス計数ユニットで、図７に示すように、パルス列の立ち上がりでカウントし、パルスカウント値をインクリメント（＋１処理）する。
１００２は計数されたパルス列数を使ってシステムを制御するコントローラ、１００３はコントローラ１００２とパルス計数ユニット１００１が動作するための電力を供給する電源ユニットである。
【０００５】
図８はコントローラ１００２で実行されるパルス計数ユニット１００１のパルス列計数（パルスカウント）開始処理手順のフローである。
先ずカウント処理を開始する前に、ステップ１０２１でパルスカウント設定値を設定する。
次にステップ１０２２でパルスカウント開始指令を行う。
このとき、単に純粋に外部からのパルスを計数するだけであれば、ステップ１０２１は不要である。
【０００６】
ところで、パルス計数ユニット１００１の機能の一つには、単純に外部からのパルス列入力をカウントし、計数値をユニット内部に蓄えるというものもある。コントローラ１００２側は任意のタイミングでその蓄えられた計数値を読み出せば、外部から入力されたパルス数を知ることができる。
【０００７】
ただし、コントローラ１００２はパルス列計数値を読み出すだけがその処理内容ではなく、その他の制御処理を行う必要がある。よって通常はパルス計数ユニット１００１に対し、目的とするパルス入力数を設定し、パルス入力数がその設定値に達したタイミングで、パルス計数ユニット１００１からコントローラ１００２に割込み信号を発行し、パルス入力数がその設定値に達したことを通知したり、またはハンドシェイク用の制御信号をアサート（アクティブ状態、即ち信号として動作した状態）したりすることで通知する。
【０００８】
図９はコントローラ１００２に格納されるシステム制御用のユーザプログラム例である。
１０３１は割り込みを許可する命令、１０３２はメインプログラム、１０３３はメインプログラムの終了を意味する命令、１０３４は割り込みプログラムの開始を意味する割り込みポインタ、１０３５は割り込みプログラム本体、１０３６は割り込みプログラムの終了を意味する命令である。
【０００９】
メインプログラム１０３２にはコントローラ１００２として行うべき制御内容のプログラムが記述される。割り込みプログラム１０３５には外部からの割込みに特化した内容のプログラムが記述される。この従来例の場合は、パルス計数ユニット１００１からの割込みに応答した内容のプログラムが記述される。
【００１０】
図１０はコントローラ１００２の割込み処理の処理フローを示す。
通常　コントローラ１００２は、外部からの入力処理→プログラム実行→外部への出力処理を一周期として繰り返すことでプログラムを実行している。この一周期の時間をスキャンタイムと呼ぶ。従って、スキャンタイムより短い信号は入力できない。よって、スキャンタイムより短い信号、即ちパルスを入力し、計数するために、パルス計数ユニット１００１が必要になる。
また割込み処理を使えば、スキャンタイムに依存せずに割り込みが発生した時点で処理ができる。割込みが発生すると、メインプログラム１０３２の実行をその場で一旦中断し、割込み要因に応じた割込みプログラム１０３５を実行する。割込みプログラム１０３５が終了すると、割込み発生時の次の命令へ戻り、中断していたメインプログラム１０３２の処理を再開する。
【００１１】
図１１はパルス計数ユニット１００１の処理フローを示す。
１０５０はパルス発生源で、具体的には先に説明した光電式エンコーダが相当する。
パルス計数ユニット１００１はステップ１０５１でパルスカウント設定値を読み出し、ステップ１０５２で外部からのパルス入力を計数する。次にステップ１０５３でパルスカウント設定値と計数したパルスカウント値が一致するか比較する。一致しなければ再度ステップ１０５２に戻り、パルス計数処理を行う。ステップ１０５３でパルスカウント設定値と計数したパルスカウント値が一致したと判断した場合は、ステップ１０５４でコントローラ１００２に対して、割り込みを発行する。
【００１２】
このように外部からパルス計数ユニット１００１に入力されたパルス列は図１１の手順で処理され、計数値がユーザの設定したパルスカウント設定値に達したならば、コントローラ１００２に割り込みが発行される。コントローラ１００２は通常はメインプログラム１０３２を実行しているが、パルス計数ユニット１００１からの割り込みを受けたらば、割り込みプログラム１０３５を実行する。
【００１３】
【発明が解決しようとする課題】
本従来例の場合、予め設定しておいたパルスカウント設定値にパルス列数が達したため、コントローラ１００２に割り込みが入り、該当の割込みプログラム１０３５が実行されるが、上述した従来のパルス計数ユニット１００１においては、予め割込みを発行するタイミングのパルス数がユーザで判っていないと、この機能は使えない。且つ割込みを発生させたとしてもパルスカウント動作を停止するわけでもなく、また外部のパルス信号も停止するわけではないため、割込み発生タイミングとカウント値が一意に決まらない。
【００１４】
なお、割込みを発生させて、割り込みプログラム１０３５中でパルス計数値を取得するようにしても、その問題は解決しない。
以下その理由を、図１２を用いて説明する。
図１２は従来のパルス計数ユニット１００１の計数処理とコントローラ１００２の割込み処理の関係を示す。
【００１５】
図９に示すように、メインプログラム１０３２の実行中に割込み許可命令１０３１を実行しない限り、外部からの割込みを認識することはできない。もし割込みを許可しておかないと、即ち割込み禁止状態であると、外部からの割込みは受付けられないし、当然ながら割込みプログラム１０３５は実行できない。よって割り込みプログラム１０３５中でパルス計数値を取得するようにしても、結局はパルス計数値の取得はできない。仮に割込みを許可したとしても、図１２に示すように、割込みを許可するタイミングがずれると、パルス計数値と割込み許可命令の実行タイミングによって、実際に入力できるパルス計数値と入力したいパルス計数値の値にずれが生じる。
【００１６】
この発明はかかる問題点に鑑みてなされたものであって、外部から入力されたパルス列数の正確な値を最短の時間で入手できる計数装置及び計数システムを得ることを目的とする。
【００１７】
【課題を解決するための手段】
この発明に係る計数装置は、前記目的を達成させるため、装置外部からパルス列を入力して該パルス列を計数し、この計数した計数値が、この計数値を用いて制御を行うコントローラにて読み取られる計数装置において、前記パルス列の計数処理中に、装置外部からのトリガ信号が印加されたときパルス列数の計数値をラッチする手段と、前記トリガ信号が印加されたとき前記コントローラに対して割り込みを発行する手段と、前記ラッチされたパルス計数値が読出し完了したとき前記ラッチされたパルス計数値をクリアする手段とを備えてなるものである。
【００１８】
またこの発明に係る計数装置は、前記ラッチされたパルス計数値の読出しを完了したとき、前記パルス列の計数処理を行うカウント現在値格納レジスタに所定のプリセット値を与えるものである。
【００１９】
またこの発明に係る計数システムは、装置外部からパルス列を入力して該パルス列を計数する計数装置と、この計数装置にて計数した計数値を読み取り、この読み取った計数値を用いて制御を行うコントローラとを備えてなる計数システムにおいて、前記計数装置が、前記パルス列の計数処理中に、装置外部からのトリガ信号が印加されたときパルス列数の計数値をラッチする手段と、前記トリガ信号が印加されたとき前記コントローラに対して割り込みを発行する手段と、前記ラッチされたパルス計数値が読出し完了したときラッチされたパルス計数値をクリアする手段とを有するとともに、前記コントローラが、前記計数装置より割込みを受けたとき割込みプログラムを実行し、前記計数装置にラッチされた計数値を読み取る手段を有するものである。
【００２０】
またこの発明に係る計数システムは、前記ラッチされたパルス計数値の読出しを完了したとき、前記パルス列の計数処理を行うカウント現在値格納レジスタに所定のプリセット値を与えるものである。
【００２１】
【発明の実施の形態】
実施の形態１．
以下にこの発明に係わるパルス計数ユニット（計数装置）及びパルス列計測制御システム（計数システム）の実施の形態１について、図１〜図５を用いて説明する。
図１はこの発明に係わるパルス列計測制御システムの回路ブロックを示したものである。
図１において、１はパルス計数ユニット、２はコントローラ、３はコントローラ２内のＭＰＵ、４はコントローラ２がＭＰＵ３で実行するプログラムを格納するためのプログラム格納部、５はパルス計数ユニット１から出力される割り込みを検出するための割込み検出部である。
【００２２】
また６は外部から入力されたパルス列を計数するパルス列計数部、７はパルス列計数部６が計数したパルス数のカウント現在値を格納するカウント現在値格納レジスタ、８はカウント現在値をラッチするためのカウント現在値ラッチ部、９はカウント現在値格納レジスタ７とカウント現在値ラッチ部８を接続するバススイッチである。また１０はパルス列計数中にユニット外部からのトリガを検出するトリガ検出部、１１はトリガ検出部１０からユニット外部トリガを受けてコントロ−ラ２に割り込みを発行する割込み発生部である。
【００２３】
また１２はユニット外部からのプリセット要求を検出し、カウント現在値ラッチ部８に伝えるプリセット要求検出部、１３はプリセット要求検出部１２から指令を受けてカウント現在値格納レジスタ７にプリセット値をセットするプリセット値格納部で、ユニット外部からプリセット要求を受付けたタイミングでプリセット動作ができるように、予めプリセット値が格納されている。１４はユニット外部からの読み出し要求を検出する読出し要求検出部である。
【００２４】
なお、トリガ検出部１０は、ユニット外部からトリガ信号受けたタイミングでバススイッチ９と割込み発生部１１に同時に信号出力する。
またバススイッチ９は、その出力を受けて内部回路の端子Ａ−端子Ｃの接続を端子Ｂ−端子Ｃの接続に切替える。即ち、外部からトリガの入った１パルス時間だけバススイッチ接点を端子Ａ−端子Ｃの接続から端子Ｂ−端子Ｃにつなぎかえる。
よってカウント値現在値格納レジスタ７に格納されているパルス計数値の現在値が一回だけカウント現在値ラッチ部８に入り、その結果、パルス計数値の現在値がラッチされることになる。カウント現在値ラッチ部８がラッチ中は、ラッチデータが有効な状態で新たなトリガを受けても、トリガ検出部１０がそのトリガを認識しないようにインターロックをとるため、カウント現在値ラッチ部８はトリガ検出部１０に対し信号出力し、「現在ラッチ動作中」であることを伝える。（端子Ａはどこにも接続されていない。外部からトリガが入った１パルス時間だけ端子Ｂ−端子Ｃをつなぐために、平素は端子Ａ−端子Ｃで定常状態にしておくために端子Ａがある）
【００２５】
割込み発生部１１はトリガ検出部１０からの信号出力を受けて、コントローラ２に対し割り込みを発行する。
コントローラ２は従来例にて説明したように、図９のプログラムはプログラム格納部４に格納されており、パルス計数ユニット１から割込みが入ったタイミングで、割り込みポインタＩｘｘｘ１０３４から始まる割り込みプログラム１０３５を実行する。
【００２６】
図２はパルス計数ユニット１の具体的な処理手順を示すフローである。
ユニット外部からのパルス列を入力中に、ステップ２０にて外部からのトリガの有無をトリガ検出部１０が確認し、外部からのトリガが無ければバススイッチ９の端子Ａ−端子Ｃを端子Ｂ−端子Ｃにつなぎ変える必要はないため、ステップ２３にてパルス列計数部６でパルスのカウントを続け、ステップ２４でカウント現在値をカウント現在値格納レジスタ７へ格納する。
【００２７】
ステップ２０にて外部からのトリガが有ると判断した場合は、ステップ２１にて、バススイッチ９の端子Ａ−端子Ｃを端子Ｂ−端子Ｃにつなぎ変える必要があるため、トリガ検出部１０の出力を受けてバススイッチ９でカウント現在値格納レジスタ７とカウント現在値ラッチ部８を接続し、ステップ２２にてコントローラ２へ割込みを発行する。この割込みは外部からトリガがあり、「トリガが入ったタイミングのパルス計数値をラッチしているので読み出してよい」という読み出し指令を兼ねている。
【００２８】
コントローラ２は割り込みを受けた後はメインプログラム１０３２の実行を一時中断し、割り込みプログラム１０３５を実行する。通常はこの割込みプログラム１０３５内でパルス計数ユニット１にアクセスし、カウント現在値ラッチ部８にラッチされているカウント値を読み出す。
このとき同時にプリセット要求で、読出し信号がディアサートしたタイミングでカウント現在値格納レジスタ７をプリセットするか、それともフリーカウンタ（カウント処理継続）にするかを決める。
【００２９】
次に図３に示す、コントローラ２がラッチされたパルスカウント値を読み出した直後のパルス計数ユニット１の処理手順を、図４及び図５も参照して説明する。
【００３０】
ステップ３１にてラッチカウントの読み出しが完了したと判断した後は、ステップ３２においてプリセット要求検出部１２でプリセット要求信号のＯＮ／ＯＦＦを判別する。ＯＦＦであればプリセット要求はないものと判断し、ステップ３４でカウント現在値ラッチ部８をクリアし、カウント現在値格納レジスタ７の内容はそのままとする。即ち、カウント現在値格納レジスタ７をプリセットしないフリーカウンタとして使用することになる。
ステップ３２においてプリセット要求検出部１２でプリセット要求がＯＮであると判断した場合は、プリセット値格納部１３に指定されたプリセット値をカウント現在値格納レジスタ７にセットする（ステップ３３）。なお、プリセット値セット後はその値からパルス列カウント動作がスタートする。またこの場合であっても、ステップ３４でカウント現在値ラッチ部８はクリアする。
【００３１】
図４はパルス計数ユニット１のカウント回路の、プリセット動作を行わない場合の動作タイミングチャート図である。
図５はパルス計数ユニット１のカウント回路の、プリセット動作を行う場合の動作タイミングチャート図である。
カウント現在値格納レジスタ７に更新され続けるカウント値は、外部トリガ信号の印加により、カウント現在値ラッチ部８に転送される。その間もカウント現在値格納レジスタ７はカウントされ続けている。
【００３２】
外部トリガ信号の印加のタイミングで１回だけカウント現在値ラッチ部８に転送されることから、転送されたカウント値はラッチ状態となる。読出し信号がアサート（アクティブ状態、即ち信号として動作した状態）されると、カウント現在値ラッチ部８より読み出される。読出し信号がディアサート（非アクティブ状態）になると、カウント現在値ラッチ部８は”０”クリアされる。単なるラッチ目的の場合、”０”クリアは必要ないが、ユーザによってはカウンタ値＝０と≠０の場合で、処理を区別している場合があるので、本実施の形態１ではカウント現在値ラッチ部８は”０”クリアされる。
【００３３】
本実施の形態１のカウント回路では読出しのためにカウント値をラッチしており、カウント値の読出しが終了した後、”０”クリアされる。また、カウント現在値格納レジスタ７は予め設定されたプリセット値にセットされる。
図４ではカウント値の読出しが終了した後、プリセット要求はアサートされていないことから、カウント現在値ラッチ部８が”０”クリアされても、カウント現在値格納レジスタ７は、それまでにカウントした値より引続いてカウントする。
図５ではカウント値の読出しが終了した後、プリセット要求はアサートされていることから、カウント現在値ラッチ部８が”０”クリアされると、プリセット値格納部１３の値でカウント現在値格納レジスタ７はプリセットされ、そのプリセットされた値より引続いてカウントする。
【００３４】
以上説明したように、この実施の形態１によれば、ユニット外部からトリガ信号が印加されたタイミングでパルス列数の計数値をラッチするため、測定対象の物理量の測定完了タイミングで正確に測定結果をユニット内に取り込むことができる。
【００３５】
またユニット外部からトリガ信号が印加されたタイミングでパルス列数の計数値をラッチした直後にコントローラ２に割込みを掛け、割込みを受けたコントローラ２は割込みプログラム１０３５を実行できるため、コントローラ２のスキャンタイムに依存せず、ラッチされたパルス列数を演算することができる。即ち、パルス列数の制御に対し遅れ時間を最小にできる。
【００３６】
また、ラッチされたパルス列数値の読出し完了タイミングでラッチされたパルス計数値を自動的にクリアするため、ユーザプログラムでクリアする余計な手間が省ける。ユーザにとっては余分な処理が不要になり、かつカウント現在値ラッチ部８が０クリアされているということは読出しが正常に完了したという保証になりユーザは安心してパルス列数の演算が可能である。
【００３７】
さらにプリセット要求を使用することで、自動的にカウント現在値格納レジスタ７の値を任意の数値に書き換えることができるので、パルス列の計数動作に初期値を与えることができる。
【００３８】
具体例としては下記の２点ほどが挙げられる。
▲１▼外部からトリガが印加され、パルス列数のカウント現在値を読み出した直後から、必ずユーザが所望した初期値からカウント動作が始まるため、定周期でカウンタ値を取り込む必要があるシステムではカウント現在値の変動幅が読み取りやすくなる。
▲２▼外部からトリガが入った直後にパルス列数の現在値がオーバフローした場合、プリセット要求を行わないと、フリーカウンタ（カウント処理継続）として動作するため、オーバフローしたままになってしまうが、プリセット要求によりカウント現在値格納レジスタ７はユーザの所望する値に上書きされ、その値からパルス列カウント動作がスタートすることから、そのままカウント動作を続けることができる。
【００３９】
【発明の効果】
以上説明したようにこの発明によれば、ユニット外部からトリガ信号が印加されたタイミングでパルス列数の計数値をラッチするため、測定対象の物理量の測定完了タイミングで正確に測定結果をユニット内に取り込むことができる。
またユニット外部からトリガ信号が印加されたタイミングでパルス列数の計数値をラッチした直後にコントローラに割込みをかけ、割込みを受けたコントローラは割込みプログラムを実行できるため、コントローラのスキャンタイムに依存せず、ラッチされたパルス列数を演算することができる。
また、ラッチされたパルス列数値の読出し完了タイミングでラッチされたパルス計数値を自動的にクリアするため、ユーザプログラムでクリアする余計な手間が省ける。
【００４０】
さらに自動的にカウント現在値格納レジスタの値を任意の数値に書き換えることができるので、パルス列の計数動作に初期値を与えることができる。
【図面の簡単な説明】
【図１】この発明の実施の形態１に係わるパルス列計測制御システム（計数システム）の回路ブロックを示す図である。
【図２】この発明の実施の形態１に係わるパルス計数ユニット（計数装置）の処理手順を示すフローチャートである。
【図３】この発明の実施の形態１に係わるコントローラがラッチされたパルスカウント値を読み出した直後のパルス計数ユニットの処理手順を示しフローチャートである。
【図４】この発明の実施の形態１に係わるパルス計数ユニットのカウント回路の、プリセット動作を行わない場合の動作タイミングチャート図である。
【図５】この発明の実施の形態１に係わるパルス計数ユニットのカウント回路の、プリセット動作を行う場合の動作タイミングチャート図である。
【図６】従来例におけるパルス列計測制御システムの外観図である。
【図７】従来例におけるパルス計数ユニットのカウント回路の動作タイミングチャート図である。
【図８】従来例におけるコントローラで実行されるパルス計数ユニットのパルス列計数開始処理手順を示すフローチャートである。
【図９】従来例におけるコントローラに格納されるシステム制御用のユーザプログラム例を示す図である。
【図１０】従来例におけるコントローラの割込み処理の処理フローチャートである。
【図１１】従来例におけるパルス計数ユニットの処理フローチャートである。
【図１２】従来例のパルス計数ユニットの計数処理とコントローラの割込み処理の関係を示す図である。
【符号の説明】
１　パルス計数ユニット、２　コントローラ、３　ＭＰＵ、４　プログラム格納部、５　割り込み検出部、６　パルス列計数部、７　カウント現在値格納レジスタ、８　カウント現在値ラッチ部、９　バススイッチ、１０　外部トリガ検出部、１１　割り込み発生部、１２　割り込み発生部、１３　プリセット値格納部、１４　読出し要求検出部。
【図１】
2004015153.tif 000003
【図２】
2004015153.tif 000004
【図３】
2004015153.tif 000005
【図４】
2004015153.tif 000006
【図５】
2004015153.tif 000007
【図６】
2004015153.tif 000008
【図７】
2004015153.tif 000009
【図８】
2004015153.tif 000010
【図９】
2004015153.tif 000011
【図１０】
2004015153.tif 000012
【図１１】
2004015153.tif 000013
【図１２】
2004015153.tif 000014