(57)【特許請求の範囲】
【請求項１】
複数の周波数のうちいずれか１つの周波数のクロックを選択的に出力することが可能なプリスケーラと、
このプリスケーラの出力を入力クロックとするｎビット（ｎは２のべき乗の値で、１６以上の値）の第１のタイマと、
この第１のタイマの出力を入力クロックとするｎビットの第２のタイマと、
この第２のタイマから出力させる所望の出力パルスの周波数に応じて前記プリスケーラから出力させるクロックの周波数を決定するクロック周波数決定手段と、
前記第１、第２のタイマの設定値を決定するタイマ設定値決定手段とを備え、
前記タイマ設定値決定手段は、前記プリスケーラから出力させるクロックの周波数と前記所望の出力パルスの周波数とからｎ×２ビットの分周比を決定し、このｎ×２ビットの分周比の上位ｎビットの値に１を加えた値を、前記第２のタイマの設定値とし、前記ｎ×２ビットの分周比を前記第２のタイマの設定値で割った商を、前記第１のタイマの設定値とすることを特徴とするパルス出力装置。
【請求項２】
請求項１記載のパルス出力装置において、
前記クロック周波数決定手段は、前記所望の出力パルスの周波数の低下に伴って、前記プリスケーラから出力させるクロックの周波数と前記所望の出力パルスの周波数とで決まるｎ×２ビットの分周比が前記第１、第２のタイマの設定値の最大値の２乗の数値範囲に収まらなくなったときに、前記プリスケーラから出力させるクロックの周波数を下げる方向に切り替えることを特徴とするパルス出力装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、タイマを利用してクロックを分周し広い周波数範囲のパルスを生成するパルス出力装置に関するものである。
【背景技術】
【０００２】
電磁流量計の流量出力には４−２０ｍＡの電流出力とパルス出力があり、いずれも流量の瞬時値を電流値やパルス周波数に変換して出力している（特許文献１参照）。電流出力の場合は多重レンジを使って小流量と大流量を切り替えてレンジ出力接点と組み合わせて外部に知らせることができる。一方、パルス出力の場合はパルスの数が単位時間当たりの流量になるので、レンジで分解能を上げることはできず、電流出力のようなレンジ切り替えは使えない。このため、０．００００１Ｈｚ〜３０００Ｈｚといった低い周波数から高い周波数までパルスを連続的に作りださなけばならない。通常、パルス出力はコンピュータのタイマを使って分周する方法で実現している。
【０００３】
コンピュータのタイマを使って０．００００１Ｈｚ〜３０００Ｈｚの広い周波数のパルスを生成しようとすると、複数のタイマを組み合わせる必要がある。この場合、各タイマは独立しているため、下段のタイマのタイムアウト出力を上段のタイマの入力としてカスケード構成になるが、このような構成では分周比をそのままタイマの設定値とすることはできない。その理由は、タイマ動作はカウント値が０（タイムアウト）になると、設定値をリロードしてカウントダウンをするという動作を繰り返すため、下段のタイマがタイムアウトしたとき上段のタイマもタイムアウトするとは限らないためである。
【０００４】
タイマを３つ縦続接続した場合の分周比は、上段のタイマ設定値×中段のタイマ設定値×下段のタイマ設定値となるため、分周比（浮動小数点数）を３つの整数の積に因数分解してタイマ設定値を求める必要があるが、最適な３つの整数を見つけるのは難しい。
そこで、従来の実装では、例えば１６ビットタイマを３つ使ってタイマ設定値２つをスパン周波数（出力したい最大周波数）と出力パーセント値から決め打ちして、最後の１つを割り算で求めて３つ目のタイマ設定値としていた。
【０００５】
従来のパルス出力装置の構成を図５に示す。パルス出力装置は、複数の周波数のうちいずれか１つの周波数のクロックを選択的に出力することが可能なプリスケーラ（分周器）Ｐ０と、タイマＴ０〜Ｔ２とから構成される。
【０００６】
プリスケーラＰ０は、周波数ｆ１＝７．３７２８ＭＨｚのクロックと、ｆ１を８分周したｆ８＝９２１．６ＫＨｚのクロックと、ｆ１を３２分周したｆ３２＝２３０．４ＫＨｚのクロックと、周波数ｆｃ３２＝９００Ｈｚのクロックの４つのうちいずれか１つの周波数のクロックを選択的に出力することができる。
【０００７】
３つのタイマＴ０〜Ｔ２のタイマ設定値を決定するには、まずタイマＴ１のタイマ設定値（分周比）をＰＶ％値によって決める。ＰＶ％値は、電磁流量計で計測した瞬時流量値［ｍ3／ｈ］を設定スパン（最大瞬時流量［ｍ3／ｈ］）で割って１００倍した０〜１００％の値である。ここでは、１０％≦ＰＶ％≦１１５％の場合、タイマＴ１の設定値を１とし、１％≦ＰＶ％＜１０％〜１５％の場合、タイマＴ１の設定値を１０とし、０．０８％≦ＰＶ％＜１％〜２％の場合、タイマＴ１の設定値を１００とし、０％≦ＰＶ％＜０．０８％の場合、タイマＴ１のパルス出力を停止とする。
【０００８】
次に、タイマＴ２の設定値とプリスケーラＰ０から出力するクロックとを、スパン周波数から決定する。スパン周波数は、パルス重み口径から計算することができる。パルス重みとは、電磁流量計のパルス出力における１パルスあたりの流体の体積［ｍ3］または質量［ｔ］を表す。電磁流量計の口径［ｍ］は、瞬時流量［ｍ3／ｈ］を計算するとき必要であり、電磁流量計の配管断面積［ｍ2］は、π×口径［ｍ］×口径［ｍ］／４となる。この断面積を用いて、電磁流量計を流れる流体の瞬時流量［ｍ3／ｈ］は流速［ｍ／ｓ］×断面積［ｍ2］×３６００で計算できる。
【０００９】
パルス重み［ｍ3］が指定されると、瞬時流量［ｍ3／ｈ］をパルス重み［ｍ3］で割ることにより、１時間あたりのパルス数が得られるので、この１時間あたりのパルス数を３６００倍すれば、電磁流量計で計測した瞬時流量［ｍ3／ｈ］に対応する瞬時パルス周波数［Ｈｚ］（図５のパルス出力装置から出力するパルスの周波数）を求めることができる。スパン周波数［Ｈｚ］を求めるためには、予め設定されたスパン（最大瞬時流量［ｍ3／ｈ］）をパルス重み［ｍ3］で割って３６００倍すればよい。
【００１０】
以上のようにして求めたスパン周波数からクロックを決定する。０．０２９＜スパン周波数≦３２００の場合、プリスケーラＰ０から出力するクロックをｆ１＝７．３７２８ＭＨｚのクロックとし、０．００２８８＜スパン周波数≦０．０２９の場合、プリスケーラＰ０から出力するクロックをｆ８＝９２１．６ＫＨｚのクロックとし、０．０００７２＜スパン周波数≦０．００２８８の場合、プリスケーラＰ０から出力するクロックをｆ３２＝２３０．４ＫＨｚのクロックとし、スパン周波数≦０．０００７２の場合、プリスケーラＰ０から出力するクロックをｆｃ３２＝９００Ｈｚのクロックとする。いずれの場合も、タイマＴ２の設定値は、クロック周波数÷（スパン周波数×４０００）で計算できる。
【００１１】
最後に、瞬時パルス周波数［Ｈｚ］＝クロック周波数／（タイマＴ０の設定値×タイマＴ１の設定値×タイマＴ２の設定値）という関係が成立するように、タイマＴ０の設定値を決定する。
【先行技術文献】
【特許文献】
【００１２】
【特許文献１】特開平５−２７３００８号公報
【発明の概要】
【発明が解決しようとする課題】
【００１３】
以上のように従来のパルス出力装置では、タイマＴ０の設定値を求める割り算の結果を整数値に丸めるときの小数点以下の値が大きいと、出力パルスの周波数誤差が大きくなるという問題点があった。また、条件判断で不連続なタイマ設定値をタイマＴ０〜Ｔ２に設定するため、連続性に問題があり、出力パルスの周波数を滑らかに変化させることが難しいという問題点があった。また、出力パルスの周波数を変化させる場合、タイマがタイムアウトするまで新しい周波数に移れないため、応答性が悪いという問題点があった。
【００１４】
本発明は、上記課題を解決するためになされたもので、周波数誤差が小さく、滑らかな周波数変化が可能で、応答性に優れたパルス出力が可能なパルス出力装置を提供することを目的とする。
【課題を解決するための手段】
【００１５】
本発明のパルス出力装置は、複数の周波数のうちいずれか１つの周波数のクロックを選択的に出力することが可能なプリスケーラと、このプリスケーラの出力を入力クロックとするｎビット（ｎは２のべき乗の値で、１６以上の値）の第１のタイマと、この第１のタイマの出力を入力クロックとするｎビットの第２のタイマと、この第２のタイマから出力させる所望の出力パルスの周波数に応じて前記プリスケーラから出力させるクロックの周波数を決定するクロック周波数決定手段と、前記第１、第２のタイマの設定値を決定するタイマ設定値決定手段とを備え、前記タイマ設定値決定手段は、前記プリスケーラから出力させるクロックの周波数と前記所望の出力パルスの周波数とからｎ×２ビットの分周比を決定し、このｎ×２ビットの分周比の上位ｎビットの値に１を加えた値を、前記第２のタイマの設定値とし、前記ｎ×２ビットの分周比を前記第２のタイマの設定値で割った商を、前記第１のタイマの設定値とすることを特徴とするものである。
また、本発明のパルス出力装置の１構成例において、前記クロック周波数決定手段は、前記所望の出力パルスの周波数の低下に伴って、前記プリスケーラから出力させるクロックの周波数と前記所望の出力パルスの周波数とで決まるｎ×２ビットの分周比が前記第１、第２のタイマの設定値の最大値の２乗の数値範囲に収まらなくなったときに、前記プリスケーラから出力させるクロックの周波数を下げる方向に切り替えることを特徴とするものである。
【発明の効果】
【００１６】
本発明によれば、２つのタイマの縦続接続でパルス出力装置を実現することができる。本発明では、プリスケーラの周波数とタイマ設定値の決定の際に複雑な判断が不要となり、出力パルスの周波数から一意にプリスケーラの周波数と２つのタイマの設定値を決めることができるので、従来よりもアルゴリズムが単純となり、クロック周波数決定手段とタイマ設定値決定手段の処理負荷を小さくすることができる。本発明では、出力パルスの周波数誤差を小さくすることができる。また、本発明では、タイマ設定値が連続的になり、出力パルスの滑らかな周波数変化が期待できる。また、本発明では、出力パルスの周波数を変化させるときの応答性を向上させることができる。
【図面の簡単な説明】
【００１７】
【図１】本発明の実施の形態に係るパルス出力装置の構成を示すブロック図である。
【図２】本発明の実施の形態に係るパルス出力装置のタイマ設定値決定処理を説明するフローチャートである。
【図３】従来のパルス出力装置と本発明の実施の形態に係るパルス出力装置の出力パルスの周波数誤差を示す図である。
【図４】本発明の実施の形態に係るパルス出力装置のタイマ設定値の連続性を検証した結果を示す図である。
【図５】従来のパルス出力装置の構成を示すブロック図である。
【発明を実施するための形態】
【００１８】
以下、本発明の実施の形態について図面を参照して説明する。図１は本発明の実施の形態に係るパルス出力装置の構成を示すブロック図である。本実施の形態のパルス出力装置は、複数の周波数のうちいずれか１つの周波数のクロックを選択的に出力することが可能なプリスケーラ（分周器）Ｐ０と、プリスケーラＰ０の出力を入力クロックとして、ダウンカウントを行なう１６ビットのカウンタであるタイマＴ１と、タイマＴ１の出力パルスを入力クロックとして、ダウンカウントを行なう１６ビットのカウンタであるタイマＴ２と、タイマＴ２から出力させる所望の出力パルスの周波数に応じてプリスケーラＰ０から出力させるクロックの周波数を決定するクロック周波数決定部１と、タイマＴ１，Ｔ２の設定値を決定するタイマ設定値決定部２とから構成される。
【００１９】
プリスケーラＰ０とタイマＴ１，Ｔ２としては、コンピュータに内蔵されているものを用いる。このコンピュータのＣＰＵ（Central Processing Unit）は、コンピュータのメモリに格納されたプログラムに従って処理を実行し、クロック周波数決定部１およびタイマ設定値決定部２として機能する。
【００２０】
以下、本実施の形態のパルス出力装置のタイマ設定値決定処理について図２を参照して説明する。まず、クロック周波数決定部１は、プリスケーラＰ０から出力させるクロックの周波数ｆｃｌｋを決定する（図２ステップＳ１）。具体的には、クロック周波数決定部１は、パルス出力装置から出力させたいパルスの周波数ｆｏが０．００００６Ｈｚ未満の場合、ｆｃｌｋ＝ｆｃ３２＝９００ＨｚのクロックをプリスケーラＰ０から出力させ、周波数ｆｏが０．００００６Ｈｚ〜０．０００２１Ｈｚの場合、ｆｃｌｋ＝ｆ３２＝２３０．４ＫＨｚのクロックをプリスケーラＰ０から出力させ、周波数ｆｏが０．０００２２Ｈｚ〜０．００１７１Ｈｚの場合、ｆｃｌｋ＝ｆ８＝９２１．６ＫＨｚのクロックをプリスケーラＰ０から出力させ、周波数ｆｏが０．００１７２Ｈｚ以上の場合、ｆｃｌｋ＝ｆ１＝７．３７２８ＭＨｚのクロックをプリスケーラＰ０から出力させる。
【００２１】
このようにクロックの周波数ｆｃｌｋは、出力したいパルスの周波数ｆｏで一意に決まる。このクロック周波数ｆｃｌｋの決定方法は、所望の出力パルスの周波数ｆｏの低下に伴って、クロック周波数ｆｃｌｋとパルスの周波数ｆｏとで決まる３２ビット（２つのタイマＴ１，Ｔ２の合計のビット数）の分周比がタイマＴ１，Ｔ２の設定値の最大値（１６ビットのカウンタの場合で６５５３５）の２乗の数値範囲に収まらなくなったときに、クロックの周波数ｆｃｌｋを下げる方向に切り替えるというものである。
【００２２】
次に、タイマ設定値決定部２は、タイマＴ１，Ｔ２の設定値を決定する。まず、タイマ設定値決定部２は、プリスケーラＰ０から出力させるクロックの周波数ｆｃｌｋとパルス出力装置から出力させたいパルスの周波数ｆｏとから、３２ビットの分周比ＤＲを次式のように計算する（図２ステップＳ２）。
ＤＲ＝ｆｃｌｋ／ｆｏ                                            ・・・（１）
【００２３】
続いて、タイマ設定値決定部２は、３２ビットの分周比ＤＲの上位１６ビットの値に１を加えた値を、上段のタイマＴ２の設定値（分周比）Ｒ２とする（図２ステップＳ３）。分周比ＤＲの上位１６ビットの値に１を加える理由は、下段のタイマＴ１の設定値が最大値６５５３５を超えないようにするためである。
【００２４】
また、タイマ設定値決定部２は、３２ビットの分周比ＤＲを上段のタイマＴ２の設定値Ｒ２で割った商を、下段のタイマＴ１の設定値（分周比）Ｒ１とする（図２ステップＳ４）。
そして、タイマ設定値決定部２は、ステップＳ３，Ｓ４で決定した設定値Ｒ１，Ｒ２をそれぞれタイマＴ１，Ｔ２に設定する（図２ステップＳ５）。こうして、タイマ設定値決定処理が終了する。図２のタイマ設定値決定処理は、出力したいパルスの周波数ｆｏが変わる度（電磁流量計のパルス出力の場合には、瞬時流量値が変わる度）に行われる。
【００２５】
タイマＴ１は、プリスケーラＰ０から入力されるクロックと同期して設定値Ｒ１からダウンカウントを行ない（クロックが入力される度にカウント値が１減少）、タイムアウト（カウント値が０）になると、タイマ設定値決定部２からカウント値が設定値Ｒ１に再設定され、カウント値が０になったときのクロックの次のクロックから再びダウンカウントを開始するという動作を繰り返す。
【００２６】
同様に、タイマＴ２は、タイマＴ１の出力パルスを入力クロックとして、このクロックと同期して設定値Ｒ２からダウンカウントを行ない、タイムアウトになると、タイマ設定値決定部２からカウント値が設定値Ｒ２に再設定され、カウント値が０になったときのクロックの次のクロックから再びダウンカウントを開始するという動作を繰り返す。
【００２７】
こうして、プリスケーラＰ０から入力されるクロックを、タイマＴ１，Ｔ２の設定値Ｒ１，Ｒ２で決まる分周比（Ｒ１×Ｒ２）で分周することができ、所望の周波数ｆｏのパルスを出力することができる。本実施の形態のタイマ設定値決定処理によれば、タイマＴ１の方に大きい値が設定される。このような設定を行なう理由は、出力したいパルスの周波数ｆｏが変化したときに、高い周波数の分周タイマＴ１の設定値Ｒ１のみが変化し、低い周波数の分周タイマＴ２の設定値Ｒ２ができるだけ変化しないようにするためである。
【００２８】
図３は、図５に示した従来のパルス出力装置と本実施の形態のパルス出力装置の出力パルスの周波数誤差を示す図である。図３における３０は従来のパルス出力装置の出力パルスの周波数誤差を示し、３１は本実施の形態のパルス出力装置の出力パルスの周波数誤差を示している。図３によれば、本実施の形態のパルス出力装置の方が出力パルスの周波数誤差が概ね小さいことが分かる。
【００２９】
図４は、本実施の形態のパルス出力装置のタイマ設定値の連続性を検証した結果を示す図である。従来のパルス出力装置については、スパン周波数を０．０１Ｈｚとし、プリスケーラＰ０から出力させるクロックをｆ８＝９２１．６ＫＨｚのクロックとしている。本実施の形態によれば、タイマ設定値の変化が連続的になるのと、タイマＴ１の設定値を６５５３５に近い大きい値にできるため、設定値の書き込みとタイムアウトのタイミングが一致する確率を小さくすることができる。
【００３０】
次に、従来のパルス出力装置と本実施の形態のパルス出力装置の出力パルスの周波数が切り替わる時間について比較する。例えばスパン周波数が３０００Ｈｚで、出力パルスの周波数を２．４Ｈｚ（０．０８％）から３０００Ｈｚ（１００％）に切り替える場合、出力パルスの周波数が２．４ＨｚのときのタイマＴ２の設定値は１、タイマＴ１の設定値は１００、タイマＴ０の設定値は３０７２０となる。また、出力パルスの周波数が３０００ＨｚのときのタイマＴ２の設定値は１、タイマＴ１の設定値は１、タイマＴ０の設定値は２４５８となる。いずれの場合も、プリスケーラＰ０から出力させるクロックはｆ１＝７．３７２８ＭＨｚのクロックである。
【００３１】
Ｔ０がタイムアウトする時間は３０７２０／７３７２８００＝０．００４２秒、Ｔ１がタイムアウトする時間は２４５８／７３７２８００×１００＝０．０３３３秒、Ｔ２がタイムアウトする時間は２４５８／７３７２８００×１＝０．０００３秒となる。その結果、従来のパルス出力装置において出力パルスの周波数が２．４Ｈｚから３０００Ｈｚに切り替わる時間は、０．００４２秒＋０．０３３３秒＋０．０００３秒＝０．０３７８秒となる。
【００３２】
一方、本実施の形態のパルス出力装置において、出力パルスの周波数が２．４ＨｚのときのタイマＴ２の設定値は４７、タイマＴ１の設定値は６５３６１となる。また、出力パルスの周波数が３０００ＨｚのときのタイマＴ２の設定値は１、タイマＴ１の設定値は２４５８となる。いずれの場合も、プリスケーラＰ０から出力させるクロックはｆ１＝７．３７２８ＭＨｚのクロックである。
【００３３】
本実施の形態においてＴ１がタイムアウトする時間は６５３６１／７３７２８００＝０．００８９秒、Ｔ２がタイムアウトする時間は２４５８／７３７２８００×４７＝０．０１５７秒となる。その結果、本実施の形態のパルス出力装置において出力パルスの周波数が２．４Ｈｚから３０００Ｈｚに切り替わる時間は、０．００８９秒＋０．０１５７秒＝０．０２４６秒となる。
【００３４】
このように、本実施の形態のパルス出力装置の方が出力パルスの周波数が早く切り替わることが分かる。その理由は、上記のとおり、本実施の形態では、下段のタイマＴ１の方に６５５３５に近い大きい値が設定されるため、上段のタイマＴ２には小さい値が設定されることになり、従来のパルス出力装置のタイマＴ２の設定値×タイマＴ１の設定値よりも小さい値が本実施の形態のタイマＴ２に設定されるためである。さらに、本実施の形態では、プリスケーラＰ０から出力するクロックの周波数も切り替えているため、高周波数に移行したとき、下段のタイマＴ１が早くタイムアウトするためである。
【００３５】
以上のように、従来のパルス出力装置では３つのタイマを縦続接続していたのに対し、本実施の形態では２つのタイマＴ１，Ｔ２の縦続接続でパルス出力装置を実現することができる。本実施の形態では、プリスケーラＰ０の周波数とタイマ設定値の決定の際に複雑な判断が不要となり、出力パルスの周波数ｆｏから一意にプリスケーラＰ０の周波数と２つのタイマＴ１，Ｔ２の設定値を決めることができるので、従来よりもアルゴリズムが単純となり、ＣＰＵの負荷を小さくすることができる。
【００３６】
また、本実施の形態では、出力パルスの周波数誤差を小さくすることができる。従来のパルス出力装置では条件判断で不連続なタイマ設定値を設定することになるが、本実施の形態では条件判断はないのでタイマ設定値が連続的になり、出力パルスの滑らかな周波数変化が期待できる。また、本実施の形態では、出力パルスの周波数を変化させるときの応答性を向上させることができる。
【００３７】
なお、本実施の形態では、広い周波数範囲のパルスを生成するため、タイマＴ１，Ｔ２として１６ビットのタイマ（カウンタ）を用いているが、これに限るものではなく、ｎビット（ｎは２のべき乗の値で、１６以上の値）のタイマを使用すればよい。
【産業上の利用可能性】
【００３８】
本発明は、クロックを分周して広い周波数範囲のパルスを生成する技術に適用することができる。
【符号の説明】
【００３９】
１…クロック周波数決定部、２…タイマ設定値決定部、Ｐ０…プリスケーラ、Ｔ１，Ｔ２…タイマ。
【図１】
0006454619.tif 000002
【図２】
0006454619.tif 000003
【図３】
0006454619.tif 000004
【図４】
0006454619.tif 000005
【図５】
0006454619.tif 000006