(57)【要約】【課題】ネットワークを介してデータを授受するマスタ／スレーブ型のプログラマブルコントローラが高精度にモータを制御すること。【解決手段】プログラムを実行する制御部（マスタ）と、この制御部の指令に基づきモータを制御する出力部（スレーブ）と、前記モータに接続されたエンコーダの出力パルスをカウントするパルスカウント部（スレーブ）とを備え、パルスカウント部は、所定周波数のクロックをカウントしたカウンタ値を前記出力パルスに同期して保持し、この保持されたカウンタ値と前記出力パルスをカウントしたカウンタ値とを、前記制御部からのアクセス要求に応答して送信し、制御部は前記パルスカウント部から受信した両カウンタ値を基に、前記出力パルスの周波数を求め、この周波数応じた指令を前記出力部に送信する。【選択図】図１
2012226475.tif 000002
【特許請求の範囲】
【請求項１】
モータの回転速度や回転角度などの軸状態をパルスに変換して出力するエンコーダと、
該エンコーダが出力したパルスをカウントするパルスカウント部と、
このパルスカウント部によってカウントされたカウンタ値に基づきモータの制御指令を出力する制御部と、
前記制御指令に基づきモータを制御する出力部と、を有するモータ制御装置であって、
前記パルスカウント部、前記制御部、前記出力部それぞれは通信路を介して互いに接続され、
前記パルスカウント部は、
前記エンコーダの出力パルスをカウントする第一カウンタと、
所定周波数のクロックをカウントする第二カウンタと、
この第二カウンタのカウンタ値を、前記パルスに同期して取り込み保持する記憶手段と、
前記第一カウンタのカウンタ値および前記記憶手段に保持された第二カウンタのカウンタ値それぞれを、前記制御部から前記通信路を介して該パルスカウント部に送信されたアクセス要求に応答して送信する応答送信手段を備え、
前記制御部は、
前記アクセス要求を前記パルスカウント部に周期毎に送信するアクセス要求送信手段と、
前記応答送信手段によって送信された前記第一カウンタのカウンタ値および前記記憶手段に保持された第二カウンタ値を受信するカウンタ値取得手段と、
このカウンタ値取得手段によって周期毎に取得された前記第一カウンタ値の今回値と前回値との差分値を算出して、前記周期の間隔における前記パルスのカウント進捗数を算出するパルス進捗数算出手段と、
前記カウンタ値取得手段によって周期毎に取得された前記第二カウンタ値の今回値と前回値との差分値を算出し、該差分値と前記クロックの周波数とを基に前記パルスのカウント進捗数に対応した時間を算出する間隔時間算出手段と、
この間隔時間算出手段によって算出された前記時間および前記パルス進捗数算出手段によって算出された前記パルスのカウント進捗数に基づき、前記エンコーダが出力したパルスの周波数を求め、この周波数に応じた前記制御指令を前記通信路を介して前記出力部に送信する指令送信手段と、を備えることを特徴とするモータ制御装置。
【請求項２】
請求項１記載のモータ制御装置において、
前記クロックの前記所定の周波数は、前記エンコーダの出力パルスの周波数よりも大であることを特徴とするモータ制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、モータに接続されたエンコーダの出力パルスの周波数に応じてモータを制御するモータ制御装置に関する。
【背景技術】
【０００２】
エンコーダ（モータの回転角・速度・方向などをパルスに変換して出力する機器）の出力パルスに応じてモータへの制御指令を演算し、この演算した制御指令を用いてモータを制御するモータ制御システムが知られている。例えば、特許文献1には、入力パルスの立上がりとその次の立上がりとの時間差を測定してパルスの周波数を算出し、この入力パルスの周波数に応じた出力周波数のパルスを出力する制御装置が開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０００−３４７７１０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、特許文献1に記載された発明は、ＣＰＵやＩ／Ｏなどの各種実行ユニットが一体化されたプログラマブルロジックコントローラ（ＰＬＣ）によってパルス周波数の計測精度を向上するものであり、ネットワーク上に分散配置されて互いにネットワークを介して通信するマスタ／スレーブ型のＰＬＣでパルス周波数の計測精度を向上するものではない。
【０００５】
図３のように、マスタ／スレーブ型のＰＬＣでは、マスタユニット（ＣＰＵユニット）がスレーブユニット（高速カウンタユニット）のカウンタ値を周期的にてポーリングして獲得しモータへの制御指令を演算する一方、スレーブユニットは、マスタユニットからのポーリングとは非同期にカウンタ値を更新している。このため、マスタユニットのスレーブユニットへのポーリングタイミングとスレーブユニットのカウンタの更新タイミングによっては、マスタユニットが取得するカウンタ値にばらつきが生じる。このばらつきにより、エンコーダから出力されるエンコーダパルスの周波数が一定でありながら、ＣＰＵユニットが加速や減速といった誤った制御指令を出力してしまうという問題がある。
【０００６】
例えば、マスタユニットとスレーブユニットがネットワークを介して互いに通信するＰＬＣ（図３）でモータを制御する際の従来の動きは図４のようになる。エンコーダは該エンコーダに接続されるモータの回転軸の位置（回転角）や回転速度、回転方向などをパルスに変換してエンコーダパルスを出力している。高速カウンタユニットはエンコーダパルスを受信してカウントしている（図４：カウンタ値）。ＣＰＵユニットはネットワークを介して高速カウンタユニットに周期的にアクセス要求を送信している（図４：アクセス要求）。
【０００７】
このアクセス要求を受信した高速カウンタユニットはアクセス要求に応答してカウンタ値を送信し、ＣＰＵユニットは高速カウンタユニットによって送信されたカウンタ値を受信してカウンタ値を獲得している（図４：カウンタ値入力）。
【０００８】
このようにしてＣＰＵユニットに獲得されたカウンタ値は、アクセス要求ｔ１〜ｔ２の間において「１」、アクセス要求ｔ２〜ｔ３の間において「４」、アクセス要求ｔ３〜ｔ４の間において「６」であり、その間隔毎にパルス数が２パルスのときと３パルスときが存在する。
【０００９】
所定期間の時間をＴとし、このＴにおけるエンコーダが出力したパルス数をNとすると、その周波数はN／Ｔで算出される。仮にＣＰＵユニットのアクセス要求の送信間隔が１ｍｓであったすると、アクセス要求ｔ１〜ｔ２、およびアクセス要求ｔ３〜ｔ４でのＣＰＵユニットによって算出されるパルス周波数は２ｋＨｚになる。一方、アクセス要求ｔ２〜ｔ３の間では３ｋＨｚとなり、エンコーダパルスが一定に出力されているにも関わらず、計測された周波数が一定にならない。この結果、ＣＰＵユニットは、加速や減速といった制御指令をパルス出力ユニットに与えることにより、誤った制御を行うという問題が生じる。
【００１０】
本発明は上記問題を鑑みて考案されたものであり、その課題はネットワークを介してデータを授受するマスタ／スレーブ型のＰＬＣが高精度にモータを制御することが可能なモータ制御装置を提供することにある。
【課題を解決するための手段】
【００１１】
上記のような課題を解決する方法として、本発明は以下のように構成される。
請求項１に係る発明は、モータの回転速度や回転角度などの軸状態をパルスに変換して出力するエンコーダと、該エンコーダが出力したパルスをカウントするパルスカウント部と、このパルスカウント部によってカウントされたカウンタ値に基づきモータの制御指令を出力する制御部と、制御指令に基づきモータを制御する出力部と、を有するモータ制御装置であって、パルスカウント部、制御部、出力部それぞれは通信路を介して互いに接続され、パルスカウント部は、エンコーダの出力パルスをカウントする第一カウンタと、所定周波数のクロックをカウントする第二カウンタと、この第二カウンタのカウンタ値を、パルスに同期して取り込み保持する記憶手段と、第一カウンタのカウンタ値および記憶手段に保持された第二カウンタのカウンタ値それぞれを、制御部から通信路を介して該パルスカウント部に送信されたアクセス要求に応答して送信する応答送信手段を備え、制御部は、アクセス要求をパルスカウント部に周期毎に送信するアクセス要求送信手段と、応答送信手段によって送信された第一カウンタのカウンタ値および記憶手段に保持された第二カウンタ値を受信するカウンタ値取得手段と、このカウンタ値取得手段によって周期毎に取得された第一カウンタ値の今回値と前回値との差分値を算出して、周期の間隔におけるパルスのカウント進捗数を算出するパルス進捗数算出手段と、カウンタ値取得手段によって周期毎に取得された第二カウンタ値の今回値と前回値との差分値を算出し、該差分値とクロックの周波数とを基にパルスのカウント進捗数に対応した時間を算出する間隔時間算出手段と、この間隔時間算出手段によって算出された時間およびパルス進捗数算出手段によって算出されたパルスのカウント進捗数に基づき、エンコーダが出力したパルスの周波数を求め、この周波数に応じた制御指令を通信路を介して出力部に送信する指令送信手段と、を備えるように構成する。
【００１２】
請求項２に係る発明は、請求項１記載のモータ制御装置において、クロックの周波数を、エンコーダの出力パルスの周波数よりも大とするように構成する。
【発明の効果】
【００１３】
本発明によれば、パルスカウント部はエンコーダの出力パルスを第一カウンタによりカウントする。また、パルスカウント部は所定周波数のクロックをカウントする第二カウンタの出力値を、エンコーダの出力パルスに同期して（イネーブルとして）記憶手段に保持する。さらに、パルスカウント部は、第一カウンタ値および記憶手段に保持された第二カウンタ値を制御部からのアクセス要求に応答して制御部に与える。
【００１４】
制御部は、アクセス要求をパルスカウント部に周期的に与える。そして、制御部はアクセス要求に対するパルスカウント部からの応答を受信し、第一カウンタ値と第二カウンタ値を取得する。これらカウンタ値を周期的に受信した制御部は、取得された第一カウンタ値の今回値と前回値との差分値を算出することによって、アクセス要求が送信される周期間隔におけるエンコーダの出力パルス数を求める。
【００１５】
また、制御部は、周期的に取得された第二カウンタ値の今回値と前回値との差分値を算出し、この差分値と第二カウンタのクロックの周期とを乗算する。このようにして、制御部は、アクセス要求が送信される周期間隔において、第一カウンタがエンコーダの出力パルスを最初にカウントした時点から最後にカウントした時点までの間隔時間を算出する。すなわち、制御部は、周期毎に取得された第二カウンタ値の今回値と前回値との差分値を算出して、周期間隔におけるクロックのカウント進捗数を求め、このクロックのカウント進捗数とクロックの周波数（周期時間）とを基に、周期間隔に計数されたエンコーダのパルス数（パルス進捗数）に対応した時間を間隔時間として求める。
【００１６】
この間隔時間および前述のように求めた周期間隔におけるエンコーダの出力パルス数を基に制御部は、エンコーダが出力したパルスの周波数を求める。さらに、制御部は、算出したエンコーダの出力パルスの周波数が、予め設定されたモータを制御するためのパラメータに合っているかチェックし、合致すれば、平常指令を出力部に与え、合致しなければ加速や減速といった指令を出力部に与えてモータを制御する。
【００１７】
このように構成することにより、制御部のパルスカウント部へのアクセスタイミングに依存せず、エンコーダの出力パルスの周波数を正確に計測できるようになるため、ネットワークを介してデータを授受するようなマスタ／スレーブ型のＰＬＣがモータを高精度に制御できる。
【図面の簡単な説明】
【００１８】
【図１】本発明の一例を示すモータ制御装置のシステム構成図
【図２】図１の動作説明用のタイムチャート
【図３】マスタ／スレーブ型のＰＬＣによるモータ制御装置の構成図
【図４】図３の動作説明用のタイムチャート
【発明を実施するための形態】
【００１９】
以下、本発明の好適な実施形態について図１、図２を基に説明する。なお、これらの図面は本発明の一実施形態を説明するための図面であって、これらの図面によって本発明が限定されるものではない。
【実施例】
【００２０】
図１は、本発明の一例を示すモータ制御装置のシステム構成図である。このモータ制御装置は、所定のアプリケーションを実行するプログラマブルコントローラで構成されており、複数の機能ユニットがネットワークを介して接続され、互いにデータを授受することで位置決め制御などのアプリケーションを実行する。
【００２１】
具体的に説明すると、本発明のモータ制御装置は、シーケンスプログラムなどのプログラムを実行するＣＰＵユニット（制御部）１００と、このＣＰＵユニット１００の指令に基づきモータ４００を制御するパルス出力ユニット（出力部）３００と、モータ４００に接続されエンコーダ５００の出力パルスをカウントする高速カウンタユニット（パルスカウント部）２００とがネットワーク６００（通信バス）を介して接続されている。ＣＰＵユニット１００、高速カウンタユニット２００、パルス出力ユニット３００それぞれは、ネットワーク６００を介して互いにデータを授受する送受信手段を備えている。
【００２２】
エンコーダ５００は該エンコーダに接続されるモータ４００の回転軸の回転速度や回転角度など、すなわちモータの軸状態をパルスに変換して出力するものである。
高速カウンタユニット２００は、プログラムを実行する記憶手段２０、ネットワーク６００を介して他のユニットとデータを授受する送受信手段２６、第一カウンタ２４（エンコーダパルスカウント部）、そして第二カウンタ２５が搭載されている。第一カウンタ２４はエンコーダ５００が出力するエンコーダパルスを入力してカウントし、第一カウンタ値としてその値を出力する。第二カウンタ２５はフリーランカウンタであり、所定の周波数のクロック（不図示）をカウントし、第二カウンタ値としてその値を出力する。
【００２３】
続いて、記憶手段２０は、第一カウンタ値を保持する第一レジスタと、第二カウンタ値をエンコーダパルスに同期して（イネーブルにして）取り込み保持する第二レジスタとで構成されている。また、高速カウンタユニット２００は、応答送信手段２３を備えている。この応答送信手段２３は、ネットワーク６００を介してＣＰＵユニット１００から送信されたアクセス要求に応答して、記憶手段２０に保持された第一カウンタ値と第二カウンタ値とを含んだパケットをＣＰＵユニット１００に送信する。
【００２４】
一方、ＣＰＵユニット１００は、プログラムを実行するＣＰＵ回路１０、ネットワーク６００を介して他のユニットとデータを授受する送受信手段１８が搭載されている。ＣＰＵ回路１０には、中央演算部（ＣＰＵ）やプログラムメモリ、そして作業メモリなどが備えられており、このＣＰＵがプログラムメモリに保持された位置決め制御プログラムなどのシーケンスプログラムを実行し、パルス出力部３００に制御指令を与えることによりモータ４００を制御する。
【００２５】
また、ＣＰＵ回路１０には、アクセス要求送信手段１５、カウンタ値取得手段１６、そして指令送信手段１７が備えられている。アクセス要求送信手段１５は、高速カウンタユニット２００をアクセスするためのアクセス要求パケットを所定の周期毎に（例えば１０ｍｓ毎）に送信する。この周期は位置決め制御を実行する際の、被対称物の移動速度やモータの追従速度などを加味した上で、そのアプリケーションに求められる性能に応じて設定可能である。
【００２６】
また、カウンタ値取得手段１６は、アクセス要求送信手段１５によって送信された高速カウンタ２００へのアクセス要求に対する高速カウンタユニット２００からの応答パケットを受信して、第一カウンタ値と第二カウンタ値を取得し、第一カウンタ値を第一カウンタ値１１とし、第二カウンタ値を第二カウンタ値１２として内部レジスタに格納する。なお、アクセス要求送信手段１５は高速カウンタユニット２００にアクセス要求を送信する際、レジスタに保持された第一カウンタ値１１および第二カウンタ値１２を不図示の記憶手段（内部メモリ）に退避している。すなわち、カウンタ値取得手段１６によってレジスタに格納された第一カウンタ値１１と第二カウンタ値１２それぞれは、カウンタ値取得手段１６が取得した最新の値（今回値）である。また、アクセス要求送信手段１５によって退避されたカウンタ値は、前述最新の値（今回値）に対し、前周期にカウンタ値取得手段１６が取得した値（前回値）である。
【００２７】
また、ＣＰＵ回路１０は周波数算出部としてパルス進捗数算出手段１４と間隔時間算出手段１３、そして、この周波数算出部の演算結果を基にパルス出力ユニット３００に制御指令を送信する指令送信手段をさらに備えている。
【００２８】
パルス進捗数算出手段１４は、前述第一カウンタ値１１の今回値と前回値との差分値を算出する。すなわち、パルス進捗数算出手段１４は、前述第一カウンタ値１１の今回値と前回値との差分をとることにより、所定周期毎のエンコーダパルスの進捗数を算出することになる。
【００２９】
間隔時間算出手段１３は前述第二カウンタ値１２の今回値と前回値との差分値を算出し、この差分値を基に、前回値を取得した時点を起点に今回値を取得するまでの時間（間隔時間）を算出する（詳細は後述）。そして、この算出された間隔時間と前述パルス進捗数算出手段１４によって算出された差分値に基づき、指令送信手段１７は、エンコーダパルスの周波数を求め（エンコーダパルス数÷間隔時間）、この算出されたエンコーダパルスの周波数に応じた制御指令を、ネットワーク６００を介してパルス出力ユニット３００に送信する。
【００３０】
パルス出力ユニット３００は、指令送信手段１７によって送信された制御指令を受信し、受信した制御指令に基づきモータ４００の回転方向、角度、そして回転速度などを制御する。
【００３１】
図２は、本発明のモータ制御装置の動きを説明するためのタイミングチャートである。図２においてＴ１，Ｔ２，Ｔ３はタクト時間であり、ＣＰＵユニット１００が高速カウンタユニット２００にアクセス要求を送信する送信間隔である。また、Ｃ１は第一レジスタに保持された第一カウンタ値がネットワーク６００に送信された際の値であり、Ｃ２は第二レジスタに保持された第二カウンタ値がネットワーク６００に送信された際の値である。
【００３２】
また、時点ｔ１，ｔ２，ｔ３，ｔ４それぞれにおいてＣＰＵユニット１００はアクセス要求送信手段により高速カウンタユニット２００にアクセス要求を送信している。これらアクセス要求に応答して高速カウンタユニット２００はＣ１およびＣ２を含んだ応答パケットをＣＰＵユニット１００に送信している。
【００３３】
エンコーダパルスはエンコーダ５００から出力されたパルスであり、高速カウンタユニットに入力されている。
タクト時間Ｔ１において、エンコーダパルスを入力した高速カウンタユニット２００の第一カウンタ値は、エンコーダパルスが入力される都度「１」→「２」→「３」と順次カウントアップされている。この値は第一レジスタにカウントアップの度に保持されている。また、高速カウンタユニット２００はエンコーダパルスに対して十分高い周波数のクロックをカウントするフリーランカウンタ（第二カウンタ２５）が搭載されている。この出力値は第二カウンタ出力として図２に示されている。この値はエンコーダパルスをイネーブルとして第二レジスタに取り込まれている(第二カウンタ値)。すなわち、時点ｔ１において第二カウンタ値は「１１１０」であるが、エンコーダパルスが「Ｈ」になる度に「１１２０」→「１１３０」と、第二カウンタ２５の出力値が第二レジスタにロードされ保持されている。
【００３４】
また、時点ｔ１において、ＣＰＵユニット１００は高速カウンタユニット２００にアクセス要求を送信しており、このアクセス要求に応答して高速カウンタユニット２００はネットワーク６００にＣ１＝「１」，Ｃ２＝「１１１０」としたパケットを送信している。このパケットを受信したＣＰＵユニット１００はカウンタ値取得手段１６により第一カウンタ値１１を「１」とし、第二カウンタ値１２を「１１１０」としてレジスタに格納している。
【００３５】
続いて、時点ｔ２において、ＣＰＵユニット１００は高速カウンタユニット２００にアクセス要求を送信するとともに、時点ｔ１にて取得した第一カウンタ値１１および第二カウンタ値１２を作業メモリ（カウンタ値退避領域）に退避する。もちろん、上述時点ｔ１においても、時点ｔ１の前に取得したカウンタ値の退避が実行されている。
【００３６】
そして、高速カウンタユニット２００は時点ｔ２でのアクセス要求に応答してネットワーク６００にＣ１＝「４」，Ｃ２＝「１１４０」としたパケットを送信している。このパケットを受信したＣＰＵユニット１００はカウンタ値取得手段１６により第一カウンタ値１１を「４」とし、第二カウンタ値１２を「１１４０」としてレジスタに格納している。
【００３７】
第一カウンタ値１１と第二カウンタ値１２がレジスタに格納されることにより、ＣＰＵユニット１００は第一カウンタ値１１に保持された値（今回値）とカウンタ値退避領域に退避された第一カウンタ値（前回値）との差分値を算出する。この例の場合、不図示であるが、パルス進捗数算出手段１４は「４」から「１」を引いて「３」を算出している。すなわち、この「３」はタクト時間Ｔ１においてエンコーダパルスが出力された数である。
【００３８】
また、ＣＰＵユニット１００は間隔時間算出手段１３により第二カウンタ値１２の今回値（レジスタに保持された第二カウンタ値）と前回値（カウンタ値退避領域に退避された第二カウンタ値）との差分値を算出する。この例の場合、間隔時間算出手段１３は「１１４０」から「１１１０」を引いて、その差分値として「３０」を算出している。仮に第二カウンタ２５の出力周期（クロックの出力周期）を０．１μｓとした場合、間隔時間算出手段１３は前回値が取得された時間と今回値が取得された時間との間隔時間を０．１μｓ×３０＝３μｓとして算出する。
【００３９】
そして、指令送信手段１７は、算出された「３μｓ」と前述タクト時間Ｔ１でのエンコーダパルス「３」とを基に、エンコーダパルスの周波数を求める。この例の場合、「３」を「３０μｓ」で除算して１００ｋＨｚが算出される。続いて、指令送信手段１７は、算出されたエンコーダパルスの周波数（１００ｋＨｚ）が、予め設定されたモータを制御するためのパラメータ（不図示）に合っているかチェックする。この例の場合、合致したとし、ＣＰＵユニット１００は平常指令（そのままの指令）をパルス出力ユニット３００に送信し、モータが正常に制御されている。なお、前述パラメータとエンコーダパルスの周波数が合致していなければ、ＣＰＵユニット１００は加速や減速といった指令をパルス出力ユニット３００に送信しモータを制御する。
【００４０】
続いて、時点ｔ３において、ＣＰＵユニット１００は高速カウンタユニット２００にアクセス要求を送信するとともに、時点ｔ２で取得した第一カウンタ値１１および第二カウンタ値１２を作業メモリ（カウンタ値退避領域）に退避する。高速カウンタユニット２００はアクセス要求に応答してネットワーク６００にＣ１＝「６」，Ｃ２＝「１１６０」としたパケットを送信している。このパケットを受信したＣＰＵユニット１００はカウンタ値取得手段１６により第一カウンタ値１１を「６」とし、第二カウンタ値１２を「１１６０」としてレジスタに格納している。
【００４１】
第一カウンタ値１１と第二カウンタ値１２が格納されることにより、ＣＰＵユニット１００は、前述同様パルス進捗数算出手段１４により第一カウンタ値１１の今回値と前回値との差分値を算出する。この例の場合、「６」から「４」を引いて「２」が算出される。すなわち、算出された「２」という値はタクト時間Ｔ２でエンコーダパルスが出力された数として扱われる。
【００４２】
また、ＣＰＵユニット１００は、前述同様間隔時間算出手段１３により第二カウンタ値１２の今回値と前回値との差分値を算出する。この例の場合、間隔時間算出手段１３は「１１６０」から「１１４０」を引いて、その差分値として「２０」を算出している。仮に第二カウンタ２５の出力周期（クロックの出力周期）を０．１μｓとした場合、第一カウンタ値１１の前回値を取得した時間と今回値を取得した時間との間隔時間は、０．１μｓ×２０として計算され、２μｓが算出される。
【００４３】
そして、指令送信手段１７は、この「２μｓ」と前述タクト時間Ｔ２で求められたエンコーダパルスの数「２」とを基に、エンコーダパルスの周波数を求める。この例の場合、「２」を「２０μｓ」で除算して１００ｋＨｚが算出されている。続いて、指令送信手段１７は、算出されたエンコーダパルスの周波数（１００ｋＨｚ）が、予め設定されたモータを制御するためのパラメータ（不図示）に合っているかチェックする。この例の場合、合致したとし、ＣＰＵユニット１００は平常指令（そのままの指令）をパルス出力ユニット３００に送信し、モータが正常に制御されている。
【００４４】
このように、ＣＰＵユニット１００が高速カウンタユニット２００のカウンタ値を周期的に獲得する一方、高速カウンタユニット２００は、ＣＰＵユニット１００からのアクセス（ポーリング）とは非同期にエンコーダパルスをカウントしている。このような状況においても、本発明のモータ制御装置は、ポーリング周期（タクト時間の区切り）とは非同期にカウントされるエンコーダパルス数に応じた時間を求めて、該エンコーダパルスの周波数を算出するのでその周波数が正確に算出され、モータを高精度に制御することが可能になる。
【００４５】
エンコーダパルス数に応じた時間をどのように求めるかというと、高速カウンタユニット２００は第一カウンタによりエンコーダパルスをカウントし第一レジスタに保持させる。これとともに高速カウンタユニット２００は、所定周波数のクロックをカウントする第二カウンタの出力値を、エンコーダパルスをイネーブルとして第二レジスタに保持させる。そして、高速カウンタユニット２００は、第一レジスタに保持された第一カウンタ値および第二レジスタに保持された第二カウンタ値をＣＰＵユニット１００のアクセス要求に応答してＣＰＵユニット１００与える。
【００４６】
ＣＰＵユニット１００は、第一カウンタ値と第二カウンタ値を取得し、第一カウンタ値の今回値と前回値との差分値を算出し、タクト時間中でのエンコーダの出力パルス数を求める。
【００４７】
そして、ＣＰＵユニット１００は、第二カウンタ値の今回値と前回値との差分値を算出し、この差分値と高速カウンタユニット２００の第二カウンタ２５の出力周期とを乗算する。このようにして、ＣＰＵユニット１００は、タクト時間において高速カウンタユニット２００の第一カウンタ２４がエンコーダパルスを最初にカウントした時点を起点とし、そのタクト時間中で第一カウンタ２４がエンコーダパルスを最後にカウントした時点を終点として、起点と終点との間隔時間を算出する。
【００４８】
そして、ＣＰＵユニット１００はエンコーダの出力パルス数（第一カウンタ値）と前述間隔時間とを基に、エンコーダパルスの周波数を求める。また、ＣＰＵユニット１００は、エンコーダパルスの周波数が、予め設定されたモータを制御するためのパラメータに合っているかチェックし、合致していれば、平常指令をパルス出力ユニット３００に与え、合致していなければ加速や減速といった指令をパルス出力ユニット３００に与えてモータを制御する。
【００４９】
以上説明したように、本発明ではＣＰＵユニット１００の高速カウンタ２００へのアクセスタイミングに依存せず、エンコーダパルスの周波数を正確に計測できるようになり、ネットワークを介してデータを授受するようなマスタ／スレーブ型のＰＬＣがモータを高精度に制御することが可能なモータ制御装置が提供される。
【００５０】
なお、第二カウンタ２５のクロック周波数をエンコーダパルスの周波数よりも大きくとるほど計測されたエンコーダパルスの周波数の誤差を少なくすることができる。このように構成することでマスタ／スレーブ型のＰＬＣがモータを高精度に制御することが可能になる。
【符号の説明】
【００５１】
１００    ＣＰＵユニット（制御部）
１０    ＣＰＵ回路
１１    第一カウンタ値
１２    第二カウンタ値
１３    間隔時間算出手段
１４    パルス進捗数算出手段
１５    アクセス要求送信手段
１６    カウンタ値取得手段
１７    指令送信手段
１８    送受信手段
２００    高速カウンタユニット（パルスカウント部）
２０    記憶手段
２１    第一レジスタ
２２    第二レジスタ
２３    応答送信手段
２４    第一カウンタ
２５    第二カウンタ
２６    送受信手段
３００    パルス出力ユニット（出力部）
４００    モータ
５００    エンコーダパルス
６００    ネットワーク（通信バス、もしくは通信路）
【図１】
2012226475.tif 000003
【図２】
2012226475.tif 000004
【図３】
2012226475.tif 000005
【図４】
2012226475.tif 000006