(57)【要約】【課題】本発明は、制御装置が予め定められたタイミングに対して進んだまたは遅れたパルス信号を補正するパルス出力装置および当該パルス出力装置を備える制御システムを提供する。【解決手段】本発明は、駆動装置と、ＣＰＵユニットと、パルス出力ユニット１６とを備えるＰＬＣシステムＳＹＳである。パルス出力ユニット１６は、クロック信号を生成するクロック生成部１６３と、クロック信号を分周してパルス信号を生成し、ＣＰＵユニットで指令したパルス数およびパルス速度のパルス信号を、予め定められたタイミングで出力するパルス出力部１６４と、出力するパルス信号のパルス数を計数するパルス計数部１６５と、パルス数の誤差に基づき、パルス出力部１６４で生成するパルス信号のパルス速度を補正する処理部１６２とを含む。【選択図】図５
2018129923.tif 000002
【特許請求の範囲】
【請求項１】
パルス信号に基づき駆動される駆動装置と、
前記駆動装置に出力されるパルス信号のパルス数およびパルス速度を指令する制御装置と、
前記制御装置で指令したパルス数およびパルス速度に基づき前記駆動装置にパルス信号を出力するパルス出力装置とを備える制御システムであって、
前記パルス出力装置は、
クロック信号を生成するクロック生成部と、
前記クロック生成部で生成したクロック信号を分周してパルス信号を生成し、前記制御装置で指令したパルス数およびパルス速度のパルス信号を、予め定められたタイミングで出力するパルス出力部と、
前記パルス出力部から出力するパルス信号のパルス数を計数するパルス計数部と、
前記制御装置で指令したパルス数に対する前記パルス計数部で計数したパルス数の誤差に基づき、前記パルス出力部で生成するパルス信号のパルス速度を補正する処理部とを含む、制御システム。
【請求項２】
前記制御装置は、位置を指令することでパルス信号のパルス数を指令し、
前記パルス出力装置は、今回指令された位置と前回指令された位置との差から指令されたパルス信号のパルス数を求める、請求項１に記載の制御システム。
【請求項３】
前記処理部は、
前記パルス出力部から出力するパルス信号が、前記予め定められたタイミングに対して進んでいる場合、前記制御装置で指令したパルス速度よりも遅くなるようにパルス速度を補正し、
前記パルス出力部から出力するパルス信号が、前記予め定められたタイミングに対して遅れている場合、前記制御装置で指令したパルス速度よりも速くなるようにパルス速度を補正する、請求項１または請求項２に記載の制御システム。
【請求項４】
前記処理部は、前記制御装置でパルス数およびパルス速度を指令する制御周期の１周期あたり、パルス信号の１パルス分の速度を補正する、請求項３に記載の制御システム。
【請求項５】
制御装置で駆動装置に出力されるパルス信号のパルス数およびパルス速度を指令し、前記制御装置で指令したパルス数およびパルス速度に基づき前記駆動装置にパルス信号を出力するパルス出力装置であって、
クロック信号を生成するクロック生成部と、
前記クロック生成部で生成したクロック信号を分周してパルス信号を生成し、前記制御装置で指令したパルス数およびパルス速度のパルス信号を、予め定められたタイミングで出力するパルス出力部と、
前記パルス出力部から出力するパルス信号のパルス数を計数するパルス計数部と、
前記制御装置で指令したパルス数に対する前記パルス計数部で計数したパルス数の誤差に基づき、前記パルス出力部で生成するパルス信号のパルス速度を補正する処理部とを含む、パルス出力装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御装置で指令したパルス数およびパルス速度に基づき駆動装置にパルス信号を出力するパルス出力装置、および当該パルス出力装置を備える制御システムに関する。
【背景技術】
【０００２】
多くの生産現場で使用される機械や設備は、プログラマブルコントローラ（Programmable  Logic  Controller；以下、ＰＬＣとも称す）などの制御装置によって制御される。このような制御装置では、指令に合わせてパルス信号を出力するパルス出力装置を接続し、当該パルス出力装置から出力したパルス信号を、例えば、パルス（あるいはステッピング）モータのような駆動装置に供給することで機械や設備を制御している。パルス出力装置の構成や、パルス信号の発生方法については、例えば、特許文献１に開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特許第３５２８８９０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかし、制御装置とパルス出力装置とが同期してパルス出力装置が制御装置から指令を定周期で受け取り、指令に従ったパルス信号を生成した場合、指令から得られる数値の分解能の制限などから制御装置が指令したパルス信号に対して誤差が生じることがある。制御装置が指令したパルス信号に対して誤差が生じると、パルス出力装置から出力するパルス信号が予め定められたタイミングに対して進んだまたは遅れた信号となる。
【０００５】
パルス出力装置から出力するパルス信号が予め定められたタイミングに対して進んだまたは遅れた信号となることで、パルス出力装置が出力するパルス信号が途中で途切れる現象が発生する。例えば、パルス出力装置が駆動する駆動装置がモータの場合、パルス信号が途中で途切れる現象が発生することでパルス速度が急激に変化して、駆動するモータに異音や振動が発生する虞があった。
【０００６】
本発明は、パルス信号が予め定められたタイミングに対して進んだまたは遅れた信号となった場合に、パルス信号を補正するパルス出力装置および当該パルス出力装置を備える制御システムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明のある局面によれば、パルス信号に基づき駆動される駆動装置と、駆動装置に出力されるパルス信号のパルス数およびパルス速度を指令する制御装置と、制御装置で指令したパルス数およびパルス速度に基づき駆動装置にパルス信号を出力するパルス出力装置とを備える制御システムであって、パルス出力装置は、クロック信号を生成するクロック生成部と、クロック生成部で生成したクロック信号を分周してパルス信号を生成し、制御装置で指令したパルス数およびパルス速度のパルス信号を、予め定められたタイミングで出力するパルス出力部と、パルス出力部から出力するパルス信号のパルス数を計数するパルス計数部と、制御装置で指令したパルス数に対するパルス計数部で計数したパルス数の誤差に基づき、パルス出力部で生成するパルス信号のパルス速度を補正する処理部とを含む。
【０００８】
好ましくは、制御装置は、位置を指令することでパルス信号のパルス数を指令し、パルス出力装置は、今回指令された位置と前回指令された位置との差から指令されたパルス信号のパルス数を求める。
【０００９】
好ましくは、処理部は、パルス出力部から出力するパルス信号が、予め定められたタイミングに対して進んでいる場合、制御装置で指令したパルス速度よりも遅くなるようにパルス速度を補正し、パルス出力部から出力するパルス信号が、予め定められたタイミングに対して遅れている場合、制御装置で指令したパルス速度よりも速くなるようにパルス速度を補正する。
【００１０】
好ましくは、処理部は、制御装置でパルス数およびパルス速度を指令する制御周期の１周期あたり、パルス信号の１パルス分の速度を補正する。
【００１１】
本発明のある別の局面によれば、制御装置で駆動装置に出力されるパルス信号のパルス数およびパルス速度を指令し、制御装置で指令したパルス数およびパルス速度に基づき駆動装置にパルス信号を出力するパルス出力装置であって、クロック信号を生成するクロック生成部と、クロック生成部で生成したクロック信号を分周してパルス信号を生成し、制御装置で指令したパルス数およびパルス速度のパルス信号を、予め定められたタイミングで出力するパルス出力部と、パルス出力部から出力するパルス信号のパルス数を計数するパルス計数部と、制御装置で指令したパルス数に対するパルス計数部で計数したパルス数の誤差に基づき、パルス出力部で生成するパルス信号のパルス速度を補正する処理部とを含む。
【発明の効果】
【００１２】
本技術に係る制御システムによれば、パルス出力装置において、予め定められたタイミングに対して進みまたは遅れが生じたパルス信号を補正することで、パルス信号の急激なパルス速度の変化を抑えることができる。
【図面の簡単な説明】
【００１３】
【図１】本実施の形態における制御システムの概略構成を示す模式図である。
【図２】本実施の形態におけるＣＰＵユニットのハードウェア構成を示す模式図である。
【図３】本実施の形態におけるＣＰＵユニットで実行されるソフトウェア構成を示す模式図である。
【図４】本実施の形態における制御システムのパルス出力構成を示すブロック図である。
【図５】本実施の形態におけるパルス出力ユニットの機能構成を示すブロック図である。
【図６】指令位置および指令速度について説明するための図である。
【図７】パルス信号の進みまたは遅れについて説明するための図である。
【図８】本実施の形態におけるパルス出力ユニットの出力パルス演算処理を説明するためのフローチャートである。
【図９】本実施の形態におけるパルス出力ユニットの出力パルス演算処理を説明するためのフローチャートである。
【図１０】パルス信号のパルス速度を補正について説明するための図である。
【図１１】パルス速度の補正後のパルス信号について説明するための図である。
【発明を実施するための形態】
【００１４】
以下において、本実施の形態について図面を参照して詳しく説明する。なお、図中同一符号は同一または相当部分を示す。
【００１５】
（Ａ．制御システムの構成）
本実施の形態に係る制御システムは、制御装置であるＣＰＵユニットから指令に基づいて駆動装置（例えば、ステッピングモータ）を制御する制御機能を有しており、ＣＰＵユニットからの指令に従ったパルス信号をパルス出力装置で生成して駆動装置に出力している。まず、図１を参照して、本実施の形態に係る制御システムの構成について説明する。
【００１６】
図１は、本実施の形態における制御システムの概略構成を示す模式図である。制御システムであるＰＬＣシステムＳＹＳは、ＰＬＣ１と、モータドライバ３Ａ，３Ｂと、ステッピングモータ４Ａ，４Ｂと、リモートＩＯターミナル５とを含む。モータドライバ３Ａ，３Ｂは、それぞれの信号配線３を介してＰＬＣ１のパルス出力ユニット１６と接続されている。リモートＩＯターミナル５は、フィールドネットワーク２を介してＰＬＣ１と接続されている。また、ＰＬＣ１には、接続ケーブル１０などを介してＰＬＣサポート装置と、ネットワーク１１４を介してプログラマブル表示器３００がそれぞれ接続される。
【００１７】
モータドライバ３Ａは、パルス信号に基づきステッピングモータ４Ａを駆動する。モータドライバ３Ａおよびステッピングモータ４Ａで駆動装置３０を構成する。モータドライバ３Ｂは、パルス信号に基づきステッピングモータ４Ｂを駆動する。モータドライバ３Ｂおよびステッピングモータ４Ｂで駆動装置４０を構成する。
【００１８】
各構成についてさらに詳しく説明する。ＰＬＣ１は、主たる演算処理を実行するＣＰＵユニット１３と、１つ以上のＩＯユニット１４と、特殊ユニット１５、パルス出力ユニット１６とを含む。パルス出力ユニット１６は、パルス出力装置でありＣＰＵユニット１３からの指令に従ったパルス信号を生成して、モータドライバ３Ａ，３Ｂに生成したパルス信号をそれぞれの信号配線３を介して出力する。パルス出力ユニット１６の詳細については、図５を参照して後述する。
【００１９】
ＰＬＣ１に含まれるユニットは、ＰＬＣシステムバス１１を介して、データを互いに遣り取りできるように構成される。また、これらのユニットには、電源ユニット１２によって適切な電圧の電源が供給される。なお、ＰＬＣ１として構成される各ユニットは、ＰＬＣメーカーが提供するものであるので、ＰＬＣシステムバス１１は、一般にＰＬＣメーカーごとに独自に開発され、使用されている。これに対して、後述するようにフィールドネットワーク２については、異なるメーカーの製品同士が接続できるように、その規格などが公開されている場合も多い。なお、ＰＬＣ１では、ＰＬＣシステムバス１１を介してＣＰＵユニット１３とパルス出力ユニット１６とを接続しているが、フィールドネットワーク２を介してＣＰＵユニット１３とパルス出力ユニット１６とを接続してもよい。
【００２０】
ＣＰＵユニット１３の詳細については、図２を参照して後述する。ＩＯユニット１４は、一般的な入出力処理に関するユニットであり、オン／オフといった２値化されたデータの入出力を司る。すなわち、ＩＯユニット１４は、センサが何らかの対象物を検出している状態（オン）および何らの対象物も検出していない状態（オフ）のいずれであるかという情報を収集する。また、ＩＯユニット１４は、リレーやアクチュエータといった出力先に対して、活性化するための指令（オン）および不活性化するための指令（オフ）のいずれかを出力する。
【００２１】
特殊ユニット１５は、アナログデータの入出力、温度制御、特定の通信方式による通信といった、ＩＯユニット１４ではサポートしない機能を有する。
【００２２】
フィールドネットワーク２は、ＣＰＵユニット１３と遣り取りされる各種データを伝送する。フィールドネットワーク２としては、典型的には、各種の産業用イーサネット（登録商標）を用いることができる。産業用イーサネット（登録商標）としては、たとえば、ＥｔｈｅｒＣＡＴ（登録商標）、Ｐｒｏｆｉｎｅｔ  ＩＲＴ、ＭＥＣＨＡＴＲＯＬＩＮＫ（登録商標）−ＩＩＩ、Ｐｏｗｅｒｌｉｎｋ、ＳＥＲＣＯＳ（登録商標）−ＩＩＩ、ＣＩＰ  Ｍｏｔｉｏｎなどが知られており、これらのうちのいずれを採用してもよい。さらに、産業用イーサネット（登録商標）以外のフィールドネットワークを用いてもよい。たとえば、モーション制御を行わない場合であれば、ＤｅｖｉｃｅＮｅｔ、ＣｏｍｐｏＮｅｔ（登録商標）などを用いてもよい。本実施の形態に係るＰＬＣシステムＳＹＳでは、典型的に、本実施の形態においては、産業用イーサネット（登録商標）であるＥｔｈｅｒＣＡＴ（登録商標）をフィールドネットワーク２として採用する場合の構成について例示する。
【００２３】
なお、図１には、ＰＬＣシステムバス１１およびフィールドネットワーク２の両方を有するＰＬＣシステムＳＹＳを例示するが、一方のみを搭載するシステム構成を採用することもできる。たとえば、フィールドネットワーク２ですべてのユニットを接続してもよい。さらに、フィールドネットワーク２の通信ユニットをＰＬＣシステムバス１１に接続し、ＣＰＵユニット１３から当該通信ユニット経由で、フィールドネットワーク２に接続された機器との間の通信を行なうようにしてもよい。
【００２４】
モータドライバ３Ａ，３Ｂは、それぞれの信号配線３を介してパルス出力ユニット１６と接続されるとともに、パルス出力ユニット１６からのパルス信号に従ってステッピングモータ４Ａ，４Ｂを駆動する。より具体的に、パルス出力ユニット１６は、ＣＰＵユニット１３から一定周期で、指令位置、指令速度といった指令値を受ける。パルス出力ユニット１６は、受けた指令値に従いパルス信号をモータドライバ３Ａ，３Ｂに出力する。モータドライバ３Ａ，３Ｂは、パルス信号に基づきステッピングモータ４Ａ，４Ｂを駆動するための電流を調整する。なお、モータドライバ３Ａ，３Ｂは、モータアンプと称されることもある。また、モータドライバ３Ａ，３Ｂは、ステッピングモータ４Ａ，４Ｂの軸に接続されている位置センサ（ロータリーエンコーダ）やトルクセンサといった検出器から、位置（典型的には、今回位置と前回位置との差から算出される）、速度、トルクといったステッピングモータ４Ａ，４Ｂの動作に係る実測値を取得することも可能である。
【００２５】
図１に示すＰＬＣシステムＳＹＳでは、ステッピングモータ４Ａ，４Ｂとモータドライバ３Ａ，３Ｂとを組み合わせたシステム例を示したが、その他、パルス信号を用いて制御する装置と組み合わせたシステムに採用することもできる。
【００２６】
図１に示すＰＬＣシステムＳＹＳのフィールドネットワーク２には、さらに、リモートＩＯターミナル５が接続されている。リモートＩＯターミナル５は、基本的には、ＩＯユニット１４と同様に、一般的な入出力処理に関する処理を行なう。より具体的には、リモートＩＯターミナル５は、フィールドネットワーク２でのデータ伝送に係る処理を行なうための通信カプラ５２と、１つ以上のＩＯユニット５３とを含む。さらに、リモートＩＯターミナル５は、パルス出力ユニット５４を含んでもよい。パルス出力ユニット５４には、図示していないが信号配線を介してモータドライバおよびステッピングモータが接続されている。そのため、ＣＰＵユニット１３は、フィールドネットワーク２を介してパルス出力ユニット５４に指令位置、指令速度といった指令値を出力することができる。これらのユニットは、リモートＩＯターミナルバス５１を介して、データを互いに遣り取りできるように構成される。
【００２７】
ＰＬＣシステムＳＹＳにおいては、ＰＬＣ１のＣＰＵユニット１３がＥｔｈｅｒＣＡＴにおけるマスタ装置として機能し、モータドライバ３Ａ，３Ｂおよび通信カプラ５２がＥｔｈｅｒＣＡＴにおけるスレーブ装置として機能する。なお、ＣＰＵユニット１３の代わりに、マスタ装置として機能するユニットを設けてもよい。
【００２８】
なお、ＰＬＣサポート装置８は、ユーザプログラム、システム構成（デバイス構成）を表すシステム構成情報、変数テーブルなどを含むプロジェクトをユーザが生成するための装置である。ＰＬＣサポート装置８のハードウェア構成は、典型的には、汎用のコンピュータで構成される。具体的に、ＰＬＣサポート装置８は、図示していないが、ＣＰＵ，ＲＯＭ，ＲＡＭ，ハードディスク（ＨＤＤ），キーボードおよびマウス，ディスプレイ，通信インターフェイス（ＩＦ）などを含む。ＰＬＣサポート装置８で実行される各種プログラムは、ＣＤ−ＲＯＭ（Compact Disk-Read Only Memory）９に格納されて流通する。なお、上位のホストコンピュータなどからネットワークを通じてプログラムをダウンロードするように構成してもよい。
【００２９】
プログラマブル表示器３００は、ＰＬＣ１から取得した各種の情報を画面に表示するとともに、ユーザが操作することにより、ＰＬＣ１に格納されている入力変数の値や、パルス信号のパルス数，パルス速度などを変更することができる。プログラマブル表示器３００のハードウェア構成は、ＣＰＵ，ＲＯＭ，ＲＡＭ，フラッシュＲＯＭ，時計，操作キー，カメラ，タッチスクリーン，通信インターフェイスなどを含む。
【００３０】
（Ｂ．ＣＰＵユニットのハードウェア構成）
次に、図２を参照して、ＣＰＵユニット１３のハードウェア構成について説明する。図２は、本実施の形態におけるＣＰＵユニットのハードウェア構成を示す模式図である。図２を参照して、ＣＰＵユニット１３は、マイクロプロセッサ１００と、チップセット１０２と、メインメモリ１０４と、不揮発性メモリ１０６と、システムタイマ１０８と、ＰＬＣシステムバスコントローラ１２０と、フィールドネットワークコントローラ１４０と、ＵＳＢコネクタ１１０とを含む。チップセット１０２と他のコンポーネントとの間は、各種のバスを介してそれぞれ結合されている。
【００３１】
マイクロプロセッサ１００およびチップセット１０２は、典型的には、汎用的なコンピュータアーキテクチャに準じて構成される。すなわち、マイクロプロセッサ１００は、チップセット１０２から内部クロックに従って順次供給される命令コードを解釈して実行する。チップセット１０２は、接続されている各種コンポーネントとの間で内部的なデータを遣り取りするとともに、マイクロプロセッサ１００に必要な命令コードを生成する。さらに、チップセット１０２は、マイクロプロセッサ１００での演算処理の実行の結果得られたデータなどをキャッシュする機能を有する。
【００３２】
ＣＰＵユニット１３は、記憶手段として、メインメモリ１０４および不揮発性メモリ１０６を有する。
【００３３】
メインメモリ１０４は、揮発性の記憶領域（ＲＡＭ）であり、ＣＰＵユニット１３への電源投入後にマイクロプロセッサ１００で実行されるべき各種プログラムを保持する。また、メインメモリ１０４は、マイクロプロセッサ１００による各種プログラムの実行時の作業用メモリとしても使用される。このようなメインメモリ１０４としては、ＤＲＡＭ（Dynamic Random Access Memory）やＳＲＡＭ（Static Random Access Memory）といったデバイスが用いられる。
【００３４】
一方、不揮発性メモリ１０６は、リアルタイムＯＳ（Operating System）、ＰＬＣ１のシステムプログラム、ユーザプログラム、モーション演算プログラム、システム設定パラメータといったデータを不揮発的に保持する。これらのプログラムやデータは、必要に応じて、マイクロプロセッサ１００がアクセスできるようにメインメモリ１０４にコピーされる。このような不揮発性メモリ１０６としては、フラッシュメモリのような半導体メモリを用いることができる。あるいは、ハードディスクドライブのような磁気記録媒体や、ＤＶＤ−ＲＡＭ（Digital Versatile Disk Random Access Memory）のような光学記録媒 体などを用いることもできる。
【００３５】
システムタイマ１０８は、一定周期ごとに割り込み信号を発生してマイクロプロセッサ１００に提供する。典型的には、ハードウェアの仕様によって、複数の異なる周期でそれぞれ割り込み信号を発生するように構成されるが、ＯＳ（Operating System）やＢＩＯＳ（Basic Input Output System）などによって、任意の周期で割り込み信号を発生するように設定することもできる。このシステムタイマ１０８が発生する割り込み信号を利用して、後述するようなモーション制御サイクルごとの制御動作が実現される。
【００３６】
ＣＰＵユニット１３は、通信回路として、ＰＬＣシステムバスコントローラ１２０およびフィールドネットワークコントローラ１４０を有する。
【００３７】
バッファメモリ１２６は、ＰＬＣシステムバス１１を介して他のユニットへ出力されるデータ（以下「出力データ」とも称す。）の送信バッファ、および、ＰＬＣシステムバス１１を介して他のユニットから入力されるデータ（以下「入力データ」とも称す。）の受信バッファとして機能する。なお、マイクロプロセッサ１００による演算処理によって作成された出力データは、原始的にはメインメモリ１０４に格納される。そして、特定のユニットへ転送されるべき出力データは、メインメモリ１０４から読み出されて、バッファメモリ１２６に一次的に保持される。また、他のユニットから転送された入力データは、バッファメモリ１２６に一次的に保持された後、メインメモリ１０４に移される。
【００３８】
ＤＭＡ制御回路１２２は、メインメモリ１０４からバッファメモリ１２６への出力データの転送、および、バッファメモリ１２６からメインメモリ１０４への入力データの転送を行なう。
【００３９】
ＰＬＣシステムバス制御回路１２４は、ＰＬＣシステムバス１１に接続される他のユニットとの間で、バッファメモリ１２６の出力データを送信する処理および入力データを受信してバッファメモリ１２６に格納する処理を行なう。典型的には、ＰＬＣシステムバス制御回路１２４は、ＰＬＣシステムバス１１における物理層およびデータリンク層の機能を提供する。
【００４０】
フィールドネットワークコントローラ１４０は、フィールドネットワーク２を介したデータの遣り取りを制御する。すなわち、フィールドネットワークコントローラ１４０は、用いられるフィールドネットワーク２の規格に従い、出力データの送信および入力データの受信を制御する。上述したように、本実施の形態においてはＥｔｈｅｒＣＡＴ（登録商標）規格に従うフィールドネットワーク２が採用されるので、通常のイーサネット（登録商標）通信を行なうためのハードウェアを含む、フィールドネットワークコントローラ１４０が用いられる。ＥｔｈｅｒＣＡＴ（登録商標）規格では、通常のイーサネット（登録商標）規格に従う通信プロトコルを実現する一般的なイーサネット（登録商標）コントローラを利用できる。但し、フィールドネットワーク２として採用される産業用イーサネット（登録商標）の種類によっては、通常の通信プロトコルとは異なる専用仕様の通信プロトコルに対応した特別仕様のイーサネット（登録商標）コントローラが用いられる。また、産業用イーサネット（登録商標）以外のフィールドネットワークを採用した場合には、当該規格に応じた専用のフィールドネットワークコントローラが用いられる。
【００４１】
ＤＭＡ制御回路１４２は、メインメモリ１０４からバッファメモリ１４６への出力データの転送、および、バッファメモリ１４６からメインメモリ１０４への入力データの転送を行なう。
【００４２】
フィールドネットワーク制御回路１４４は、フィールドネットワーク２に接続される他の装置との間で、バッファメモリ１４６の出力データを送信する処理および入力データを受信してバッファメモリ１４６に格納する処理を行なう。典型的には、フィールドネットワーク制御回路１４４は、フィールドネットワーク２における物理層およびデータリンク層の機能を提供する。
【００４３】
ＵＳＢコネクタ１１０は、ＰＬＣサポート装置８とＣＰＵユニット１３とを接続するためのインターフェイスである。典型的には、ＰＬＣサポート装置８から転送される、ＣＰＵユニット１３のマイクロプロセッサ１００で実行可能なプログラムなどは、ＵＳＢコネクタ１１０を介してＰＬＣ１に取込まれる。
【００４４】
（Ｃ．ＣＰＵユニットのソフトウェア構成）
次に、図３を参照して、本実施の形態に係る各種機能を提供するためのソフトウェア群について説明する。これらのソフトウェアに含まれる命令コードは、適切なタイミングで読み出され、ＣＰＵユニット１３のマイクロプロセッサ１００によって実行される。
【００４５】
図３は、本実施の形態におけるＣＰＵユニットで実行されるソフトウェア構成を示す模式図である。図３を参照して、ＣＰＵユニット１３で実行されるソフトウェアとしては、リアルタイムＯＳ２００と、システムプログラム２１０と、ユーザプログラム２３６との３階層になっている。
【００４６】
リアルタイムＯＳ２００は、ＣＰＵユニット１３のコンピュータアーキテクチャに応じて設計されており、マイクロプロセッサ１００がシステムプログラム２１０およびユーザプログラム２３６を実行するための基本的な実行環境を提供する。このリアルタイムＯＳは、典型的には、ＰＬＣのメーカーあるいは専門のソフトウェア会社などによって提供される。
【００４７】
システムプログラム２１０は、ＰＬＣ１としての機能を提供するためのソフトウェア群である。具体的には、システムプログラム２１０は、スケジューラプログラム２１２と、出力処理プログラム２１４と、入力処理プログラム２１６と、シーケンス命令演算プログラム２３２と、モーション演算プログラム２３４と、その他のシステムプログラム２２０とを含む。なお、一般には出力処理プログラム２１４および入力処理プログラム２１６は、連続的（一体として）に実行されるので、これらのプログラムを、ＩＯ処理プログラム２１８と総称する場合もある。
【００４８】
ユーザプログラム２３６は、ユーザにおける制御目的に応じて作成される。すなわち、ＰＬＣシステムＳＹＳを用いて制御する対象のライン（プロセス）などに応じて、任意に設計されるプログラムである。
【００４９】
ユーザプログラム２３６は、シーケンス命令演算プログラム２３２およびモーション演算プログラム２３４と協働して、ユーザにおける制御目的を実現する。すなわち、ユーザプログラム２３６は、シーケンス命令演算プログラム２３２およびモーション演算プログラム２３４によって提供される命令、関数、機能モジュールなどを利用することで、プログラムされた動作を実現する。そのため、ユーザプログラム２３６、シーケンス命令演算プログラム２３２、およびモーション演算プログラム２３４を、制御プログラム２３０と総称する場合もある。
【００５０】
このように、ＣＰＵユニット１３のマイクロプロセッサ１００は、記憶手段に格納されたシステムプログラム２１０およびユーザプログラム２３６を実行する。
【００５１】
以下、各プログラムについてより詳細に説明する。
ユーザプログラム２３６は、上述したように、ユーザにおける制御目的（たとえば、対象のラインやプロセス）に応じて作成される。ユーザプログラム２３６は、典型的には、ＣＰＵユニット１３のマイクロプロセッサ１００で実行可能なオブジェクトプログラム形式になっている。このユーザプログラム２３６は、ＰＬＣサポート装置８などにおいて、ラダー言語などによって記述されたソースプログラムがコンパイルされることで生成される。そして、生成されたオブジェクトプログラム形式のユーザプログラム２３６は、ＰＬＣサポート装置８から接続ケーブル１０を介してＣＰＵユニット１３へ転送され、不揮発性メモリ１０６などに格納される。
【００５２】
スケジューラプログラム２１２は、出力処理プログラム２１４、入力処理プログラム２１６、および制御プログラム２３０について、各実行サイクルでの処理開始および処理中断後の処理再開を制御する。より具体的には、スケジューラプログラム２１２は、ユーザプログラム２３６およびモーション演算プログラム２３４の実行を制御する。
【００５３】
本実施の形態に係るＣＰＵユニット１３では、モーション演算プログラム２３４に適した一定周期の実行サイクル（モーション制御サイクル）を処理全体の共通サイクルとして採用する。そのため、１つのモーション制御サイクル内で、すべての処理を完了することは難しいので、実行すべき処理の優先度などに応じて、各モーション制御サイクルにおいて実行を完了すべき処理と、複数のモーション制御サイクルに亘って実行してもよい処理とが区分される。スケジューラプログラム２１２は、これらの区分された処理の実行順序などを管理する。より具体的には、スケジューラプログラム２１２は、各モーション制御サイクル期間内において、より高い優先度が与えられているプログラムほど先に実行する。
【００５４】
出力処理プログラム２１４は、ユーザプログラム２３６（制御プログラム２３０）の実行によって生成された出力データを、ＰＬＣシステムバスコントローラ１２０および／またはフィールドネットワークコントローラ１４０へ転送するのに適した形式に再配置する。ＰＬＣシステムバスコントローラ１２０またはフィールドネットワークコントローラ１４０が、マイクロプロセッサ１００からの、送信を実行するための指示を必要とする場合は、出力処理プログラム２１４がそのような指示を発行する。
【００５５】
入力処理プログラム２１６は、ＰＬＣシステムバスコントローラ１２０および／またはフィールドネットワークコントローラ１４０によって受信された入力データを、制御プログラム２３０が使用するのに適した形式に再配置する。
【００５６】
シーケンス命令演算プログラム２３２は、ユーザプログラム２３６で使用されるある種のシーケンス命令が実行されるときに呼び出されて、その命令の内容を実現するために実行されるプログラムである。例えば、計測装置から得られた計測データに基づいて対象物の２次元形状データを生成するプログラムや、生成された形状データから高さや断面積などの特徴量を演算するプログラムなどが、シーケンス命令演算プログラム２３２に含まれる。
【００５７】
モーション演算プログラム２３４は、ユーザプログラム２３６による指示に従って実行され、コントローラ６からの計測情報の読み出しや、モータドライバ３Ａ，３Ｂに対して出力する位置指令を算出するプログラムなどである。
【００５８】
その他のシステムプログラム２２０は、図３に個別に示したプログラム以外の、ＰＬＣ１の各種機能を実現するためのプログラム群をまとめて示したものである。その他のシステムプログラム２２０は、モーション制御サイクルの周期を設定するプログラム２２２を含む。
【００５９】
モーション制御サイクルの周期は、制御目的に応じて適宜設定することができる。典型的には、モーション制御サイクルの周期を指定する情報をユーザがＰＬＣサポート装置８へ入力する。すると、その入力された情報は、ＰＬＣサポート装置８からＣＰＵユニット１３へ転送される。モーション制御サイクルの周期を設定するプログラム２２２は、ＰＬＣサポート装置８からの情報を不揮発性メモリ１０６に格納させるとともに、システムタイマ１０８から指定されたモーション制御サイクルの周期で割り込み信号が発生されるように、システムタイマ１０８を設定する。ＣＰＵユニット１３への電源投入時に、モーション制御サイクルの周期を設定するプログラム２２２が実行されることで、モーション制御サイクルの周期を指定する情報が不揮発性メモリ１０６から読み出され、読み出された情報に従ってシステムタイマ１０８が設定される。
【００６０】
モーション制御サイクルの周期を指定する情報の形式としては、モーション制御サイクルの周期を示す時間の値や、モーション制御サイクルの周期に関する予め用意された複数の選択肢のうちから１つを特定する情報（番号または文字）などを採用することができる。
【００６１】
本実施の形態に係るＣＰＵユニット１３において、モーション制御サイクルの周期を設定する手段としては、モーション制御サイクルの周期を指定する情報を取得するために用いられるＰＬＣサポート装置８との通信手段、モーション制御サイクルの周期を設定するプログラム２２２、ならびにモーション制御サイクルを規定する割り込み信号の周期を任意に設定可能に構成されているシステムタイマ１０８の構成といった、モーション制御サイクルの周期を任意の設定するために用いられる要素が該当する。
【００６２】
リアルタイムＯＳ２００は、複数のプログラムを時間の経過に従い切り換えて実行するための環境を提供する。本実施の形態に係るＰＬＣ１においては、ＣＰＵユニット１３のプログラム実行によって生成された出力データを他のユニットまたは他の装置へ出力（送信）するためのイベント（割り込み）として、出力準備割り込み（Ｐ）およびフィールドネットワーク送信割り込み（Ｘ）が初期設定される。リアルタイムＯＳ２００は、出力準備割り込み（Ｐ）またはフィールドネットワーク送信割り込み（Ｘ）が発生すると、マイクロプロセッサ１００での実行対象を、割り込み発生時点で実行中のプログラムからスケジューラプログラム２１２に切り換える。なお、リアルタイムＯＳ２００は、スケジューラプログラム２１２およびスケジューラプログラム２１２がその実行を制御するプログラムが何ら実行されていない場合に、その他のシステムプログラム２１０に含まれているプログラムを実行する。このようなプログラムとしては、たとえば、ＣＰＵユニット１３とＰＬＣサポート装置８との間の接続ケーブル１０（ＵＳＢ）などを介した通信処理に関するものが含まれる。
【００６３】
（Ｄ．制御システムのパルス出力構成）
次に、ＰＬＣシステムＳＹＳは、ＰＬＣ１でシーケンス命令演算プログラム２３２やモーション演算プログラム２３４を実行することにより、ＣＰＵユニット１３がパルス出力ユニット１６に指令位置および指令速度を指令する。パルス出力ユニット１６は、指令に従いパルス信号をモータドライバ３Ａ，３Ｂに出力する。さらに、ＰＬＣシステムＳＹＳでは、モータドライバ３Ａ，３Ｂがパルス信号に基づきステッピングモータ４Ａ，４Ｂを駆動する。具体的に、図を参照して、制御システムであるＰＬＣシステムＳＹＳのパルス出力構成について説明する。図４は、本実施の形態における制御システムのパルス出力構成を示すブロック図である。
【００６４】
ＰＬＣシステムＳＹＳは、上位コントローラとしてのＣＰＵユニット１３と、パルス出力ユニット１６と、モータドライバ３Ａ，３Ｂとを有している。ＣＰＵユニット１３とパルス出力ユニット１６とは、ＰＬＣシステムバス１１を介して接続され、ＣＰＵユニット１３からパルス出力ユニット１６に対して指令位置および指令速度を含む指令値が出力される。パルス出力ユニット１６とモータドライバ３Ａ，３Ｂとは、それぞれの信号配線３を介して接続され、パルス出力ユニット１６からモータドライバ３Ａ，３Ｂに対して指令に従うパルス信号が出力される。
【００６５】
上位コントローラであるＣＰＵユニット１３は、ＰＬＣシステムバス１１を経由して一定周期でパルス出力ユニット１６にパルス信号を出力するための指令値を出力している。ここで、一定周期を制御周期とも呼ぶ。パルス出力ユニット１６も制御周期ごとに入力される指令値に基づいて、制御周期ごとにシステム設定として予めパルス出力ユニット１６に定められたタイミングにパルス信号を生成し出力している。つまり、上位コントローラであるＣＰＵユニット１３とパルス出力ユニット１６とは、ＰＬＣシステムバス１１を経由して同期している。同期する方法としては、例えばＩＥＥＥ１５８８規格のディストリビュートクロック方式などの方法を用いている。ＣＰＵユニット１３は、パルス出力ユニット１６に対して出力する指令値として整数の位置データ（指令位置）と整数の速度データ（指令速度）を与える。ここで、位置データ（指令位置）および速度データ（指令速度）は、例えばＣｉＡ４０２規格の”Command Position”および”Command Velocity”で定義することができる。例えば、モータを制御するアプリケーションをＣＰＵユニット１３で実行する場合、ＣＰＵユニット１３は、モータの回転角および回転速度を制御するために位置データ（指令位置）および速度データ（指令速度）をパルス出力ユニット１６に出力する。
【００６６】
ＰＬＣシステムバス１１は、ＣＰＵユニット１３とパルス出力ユニット１６との間でデータを交換する通信ネットワークである。ＣＰＵユニット１３とパルス出力ユニット１６とを接続する通信ネットワークは、ＰＬＣシステムバス１１に限られずフィールドネットワーク２であってもよい。ＣＰＵユニット１３とパルス出力ユニット１６との間に用いられる通信ネットワークは、少なくともＣＰＵユニット１３とパルス出力ユニット１６とを同期させる同期手段を備えていればよい。また、ＣＰＵユニット１３とパルス出力ユニット１６との間は、複数の通信ネットワークで接続されてもよい。ただし、その場合は各通信ネットワークを接続するカプラ装置が各通信ネットワーク間での同期を保証する機能を有する必要がある。
【００６７】
指令に従うパルス信号を生成するパルス出力ユニット１６について、さらに詳しく説明する。図５は、本実施の形態におけるパルス出力ユニット１６の機能構成を示すブロック図である。図５に示すパルス出力ユニット１６は、通信部１６１、処理部１６２、クロック生成部１６３、パルス出力部１６４およびパルス計数部１６５を有している。なお、パルス出力ユニット１６は、図示していないが、ＣＰＵ，ＲＯＭ，ＲＡＭなどを含む。通信部１６１は、通信インターフェイス（ＩＦ）であり、ＰＬＣシステムバス１１を経由してＣＰＵユニット１３とデータの交換を行う部分である。通信部１６１は、ＰＬＣシステムバス１１を経由してＣＰＵユニット１３と同期する手段を有している。通信部１６１は、ＣＰＵユニット１３から指令値として位置データ（指令位置）と速度データ（指令速度）を受信する。
【００６８】
処理部１６２は、受信した指令値に基づいて制御周期毎に出力するパルス数およびパルス周波数（パルス速度）を算出する。処理部１６２は、パルス数およびパルス周波数を算出する際、パルス計数部１６５からパルス出力部１６４から実際に出力されているパルス数の情報を受け取り、算出するパルス周波数を補正する。処理部１６２は、算出したパルス数およびパルス周波数をパルス出力部１６４に出力し、その制御周期で出力すべきパルス信号をパルス出力部１６４から出力することができるように制御している。
【００６９】
パルス出力部１６４は、処理部１６２で算出したパルス数およびパルス周波数に基づき、クロック生成部１６３が生成したクロック信号を分周してパルス信号を生成して出力する。パルス計数部１６５は、パルス出力部１６４が出力したパルス信号のパルス数を計数し、処理部１６２にフィードバックしている。
【００７０】
次に、指令位置および指令速度とパルス信号との関係についてさらに詳しく説明する。図６は、指令位置および指令速度について説明するための図である。図６（ａ）に示す波形は、指令位置および指令速度を指令したときのパルス信号の波形である。例えば、制御周期を１ｍｓとして、指令位置を１、指令速度を１０００ｐｐｓ（pulse per second）と指令した場合、パルス信号は、パルス数が１でパルス周波数が１０００ｐｐｓの波形となる。次に、指令位置を３、指令速度を２０００ｐｐｓと指令した場合、パルス信号は、パルス数が２でパルス周波数が２０００ｐｐｓの波形となる。なお、パルス数は、今回の指令位置の３から前回の指令位置の１を引いた２となる。さらに、指令位置を７、指令速度を４０００ｐｐｓと指令した場合、パルス信号は、パルス数が４でパルス周波数が４０００ｐｐｓの波形となり、指令位置を１５、指令速度を８０００ｐｐｓと指令した場合、パルス信号は、パルス数が８でパルス周波数が８０００ｐｐｓの波形となる。
【００７１】
処理部１６２は、制御周期ごとに指令位置および指令速度を受け取ると、その制御周期に出力するパルス信号のパルス数およびパルス周波数を算出して、図６（ａ）に示したような波形のパルス信号をパルス出力部１６４から出力させる。処理部１６２での具体的な処理は、図６（ｂ）に示すようにパルス信号の出力の直前にある出力パルス演算処理のタイミングで行われる。つまり、処理部１６２は、予め定められたタイミング（破線で示した位置）にパルス信号が出力できるように、予め指令位置および指令速度の指令値をＣＰＵユニット１３から受信しておき、出力パルス演算処理のタイミングでパルス信号のパルス数およびパルス周波数を算出する。例えば、処理部１６２は、図６（ｂ）に示す指令位置Ｐ１および指令速度Ｖ１のタイミングでパルス信号を出力するためには、指令位置Ｐ１および指令速度Ｖ１の前のパルス信号が出力されている途中（例えば、７０％のパルス信号が出力されたタイミング）でＣＰＵユニット１３から指令値を受信して出力パルス演算処理を実行する。
【００７２】
図６（ａ）で説明した例では、指令位置および指令速度が制御周期に収まる値で指令されているため、ＣＰＵユニット１３が指令した指令位置および指令速度と、実際に出力されるパルス信号のパルス数およびパルス周波数との間で進みや遅れは発生しない。しかし、ＣＰＵユニット１３が指令する指令位置および指令速度と出力されるパルス信号のパルス数およびパルス周波数との誤差により、指令位置および指令速度が制御周期に収まらない値の場合がある。指令位置および指令速度が制御周期に収まらない値の場合、パルス出力ユニット１６は、ＣＰＵユニット１３によってシステム設定として予め定められたタイミングに対して進んだまたは遅れたパルス信号を出力することになる。具体的に、図を参照しながら、システム設定として予めパルス出力ユニット１６に定められたタイミングに対するパルス信号の進みまたは遅れを説明する。
【００７３】
図７は、パルス信号の進みまたは遅れについて説明するための図である。図７では、ＣＰＵユニット１３からパルス速度を一定にする指令値をパルス出力ユニット１６が受信した場合を例に説明する、図７（ａ）は、予め定められたタイミングに対するパルス信号の進みを示している。図７（ｂ）は、予め定められたタイミングに対するパルス信号の遅れを示している。例えば、パルス数が８でパルス速度が８０００ｐｐｓとなるようにＣＰＵユニット１３が指令位置および指令速度を指令した場合、８０００ｐｐｓのパルス速度で１ｍｓの制御周期の間に８個分のパルスが収まるので、指令したパルス数が８であればパルス信号に進みも遅れも発生しない。
【００７４】
しかし、ＣＰＵユニット１３で指令した指令位置および指令速度に基づいて制御周期に収まるパルス数を算出した結果、算出したパルス数の値に小数が含まれる場合、処理部１６２は、算出したパルス数の値を整数に丸める。そのため、処理部１６２で整数に丸めた分だけパルス信号に誤差が生じる。例えば、ＣＰＵユニット１３が指令した指令位置および指令速度に基づき処理部１６２で算出したパルス数の小数以下を切り捨ててパルス数が７と算出された場合、パルス周波数が８０００ｐｐｓであれば１ｍｓの制御周期の間に８個分のパルスが収まるが、指令したパルス数が７であるためパルス１個分だけ次のパルス信号が速く進むことになる。
【００７５】
図７（ａ）に示す波形では、予め定められたタイミングに対してパルス信号出力が進み、指令１、指令２、指令３、指令４と順に進みが大きくなっている。パルス出力部１６４では、パルス信号の出力処理において、パルス信号の出力を開始した後に次の制御周期でのパルス信号を連続的につなげる処理を行っているが、パルス信号出力の進みが大きくなるとパルス信号を連続的につなげる処理を行う前にパルス信号の出力が完了してしまう場合がある。そのため、パルス出力部１６４では、連続したパルス信号として生成することができなくなり、次の制御周期のパルス信号出力が開始されるまでの時間分だけパルス信号が途切れることになる。
【００７６】
逆に、処理部１６２で小数以下を切り上げた場合にパルス数が９でパルス周波数が８０００ｐｐｓと算出されるようにＣＰＵユニット１３が指令位置および指令速度を指令することがある。この場合、１ｍｓの制御周期の間に８個分のパルスが収まるが、指令したパルス数が９であるためパルス１個分だけ次のパルス信号が遅れることになる。
【００７７】
図７（ｂ）に示す波形では、予め定められたタイミング（指令１などの破線の位置）に対してパルス信号出力が遅れ、指令１、指令２、指令３、指令４と順に遅れが大きくなっている。ここで、パルス出力ユニット１６は、例えばＣＰＵユニット１３から受信した指令値をバッファに１個保存することができる構成であって、指令２のパルス信号を出力中に指令３の指令値を受信した場合、バッファに指令３の指令値が保存される。しかし、指令２のパルス信号出力が遅れている場合、指令２のパルス信号を出力中にさらに指令４の指令値も受信することになり、既にバッファに指令３の指令値が保存されているため受信した指令４の指令値をバッファに保存することができずに破棄される。そして、指令２のパルス信号の出力が終了後、バッファに保存された指令３の指令値に基づいて指令３のパルス信号が出力されるが、指令３のパルス信号の出力が終了するまでに指令５の指令値を受信できない場合、図７（ｂ）のように途切れることになる。
【００７８】
パルス速度を何ら補正せずに、図７（ａ）および図７（ｂ）で示したように予め定められたタイミングに対してパルス信号出力の進みまたは遅れが生じた場合、パルス信号に途切れが発生する。パルス信号に途切れが発生すると、パルス速度が急激に変化することになる。図７（ｃ）は、パルス信号に途切れが発生した場合のパルス速度の変化を示した図である。パルス出力ユニットでは、例えばパルス信号の出力を開始してからパルス速度を大きくし、ある値でパルス速度を一定に維持し、その後パルス速度を小さくする制御を行っている。しかし、図７（ｃ）のようにパルス速度を一定に維持している期間にパルス信号の途切れが発生すると、スパイク状の急激なパルス速度の変化が発生する。急激なパルス速度の変化によって、駆動装置が例えばステッピングモータのようなモータの場合、モータ速度が急激に変化して異音や振動が発生することになる。さらに、モータ速度の急激な変化によって、モータがパルス信号に同期しなくなり脱調することがある。
【００７９】
そこで、パルス出力ユニット１６では、パルス計数部１６５でパルス出力部１６４が実際に出力したパルス信号のパルス数を計数し、処理部１６２で計数したパルス数と指令位置から算出されるパルス数との誤差を補正している。具体的に、処理部１６２は、誤差に応じてパルス信号の速度（パルス速度）を補正して、指令に対するパルス信号出力の進みまたは遅れを小さくしている。パルス出力ユニット１６では、制御周期ごとに実行される出力パルス演算処理（図６（ｂ）参照）においてパルス速度の補正を行なっている。
【００８０】
出力パルス演算処理についてさらに詳しく説明する。図８および図９は、本実施の形態におけるパルス出力ユニット１６の出力パルス演算処理を説明するためのフローチャートである。なお、図８に示すフローチャートでは、出力パルス演算処理が前回の指令に基づくパルス信号の７０％を出力したタイミングで開始される例について説明する。但し、当該タイミングは例示であって、パルス信号の７０％を出力したタイミングに限定されるものではなく、出力パルス演算処理が実行可能なタイミングであれば何れのタイミングであってもよい。出力パルス演算処理では、主にパルス進み／遅れ判定処理およびパルス出力処理の２つの処理が実行される。パルス進み／遅れ判定処理では、まず、ＣＰＵユニット１３から指令値を受信して出力パルス演算処理を開始する時点（前回の指令に基づくパルス信号の７０％を出力したタイミング）に期待されるパルス数を算出する。図８に示すフローチャートにおいて、処理部１６２は、期待値のパルス数＝前回の指令値に基づき算出したパルス数×０．７（ステップＳ２１）を実行して期待値のパルス数を算出する。具体的に、前回の指令値に基づき算出したパルス数が１２０パルスである場合、期待値のパルス数が１２０×０．７＝８４パルスとなる。
【００８１】
次に、パルス進み／遅れ判定処理では、パルス計数部１６５でパルス計数値を取得したタイミングでパルス信号出力の進みまたは遅れを判定する。図８に示すフローチャートにおいて、処理部１６２は、図５に示すパルス計数部１６５で得られた累積パルス数から、前回の指令値に基づき出力が開始されてから現時点に至るまでのパルス信号のパルス数を計数して、パルス計数値として取得する（ステップＳ２２）。そして、処理部１６２は、進み／遅れパルス数＝ステップＳ２１で算出した期待値のパルス数−ステップＳ２２で取得したパルス計数値の処理（ステップＳ２３）を実行して、進み／遅れパルス数を算出する。ステップＳ２２で取得したパルス計数値が、期待値のパルス数である８４パルスより大きい値（例えば、９０パルス）であればパルス信号に進みが発生しており、進み／遅れパルス数が負の値となる。一方、ステップＳ２２で取得したパルス計数値が、期待値のパルス数である８４パルスより小さい値（例えば、８０パルス）であればパルス信号に遅れが発生しており、進み／遅れパルス数が正の値となる。次に、処理部１６２は、ステップＳ２３で算出した進み／遅れパルス数が０（ゼロ）か否かを判断する（ステップＳ２４）。算出した進み／遅れパルス数が０（ゼロ）である場合（ステップＳ２４でＹＥＳ）、処理部１６２は、予め定められたタイミングに対してパルス信号出力に進み／遅れがないと判定する（ステップＳ２５）。算出した進み／遅れパルス数が０（ゼロ）でない場合（ステップＳ２４でＮＯ）、処理部１６２は、予め定められたタイミングに対してパルス信号出力に進み／遅れがあると判定する（ステップＳ２６）。つまり、処理部１６２は、進み／遅れパルス数が負の値であればパルス信号に進みが発生していると判定し、進み／遅れパルス数が正の値であればパルス信号に遅れが発生していると判定する。
【００８２】
次に、パルス出力処理では、指令速度と算出した進み／遅れパルス数を元にパルス速度を補正する。図９に示すフローチャートは、パルス出力処理を説明するためのフローチャートである。まず、処理部１６２は、図８に示したステップＳ２５で予め定められたタイミングに対してパルス信号出力に進み／遅れがないと判定したか、ステップＳ２６で予め定められたタイミングに対してパルス信号出力に進み／遅れがあると判定したか否かを判定する（ステップＳ３１）。ステップＳ２６で予め定められたタイミングに対してパルス信号出力に進み／遅れがあると判定した場合（ステップＳ３１：ＹＥＳ）、処理部１６２は、パルス速度の補正を行なう（ステップＳ３２）。一方、ステップＳ２５で予め定められたタイミングに対してパルス信号出力に進み／遅れがないと判定した場合（ステップＳ３１：ＮＯ）、処理部１６２は、パルス速度の補正をスキップしてパルス出力処理を行なう（ステップＳ３３）。処理部１６２は、パルス出力処理で、指令値に基づく指令速度に代えて、ステップＳ３２で補正したパルス速度でパルス出力部１６４に出力して、パルス出力部１６４にパルス信号を生成させる。
【００８３】
次に、ステップＳ３２でのパルス速度の補正についてさらに詳しく説明する。パルス速度の補正は、指令に対するパルス信号出力が進んでいる場合、指令速度よりパルス速度を遅くし、指令に対するパルス信号出力が遅れている場合、指令速度よりパルス速度を速くする。ただし、パルス速度を補正する幅が大きすぎると指令速度からのかい離が大きくなり、パルス速度が急激に変化する。一方、パルス速度を補正する幅が小さすぎると、指令に対するパルス信号出力の進みまたは遅れを十分に補正することができない。そのため、処理部１６２は、制御周期の１周期あたり所定の割合でパルス信号の速度を補正するように制御している。例えば、処理部１６２は、制御周期の１周期あたり２％以内でパルス信号の速度を補正する。
【００８４】
具体的に、処理部１６２が、制御周期の１周期あたり２％以内でパルス信号の速度を補正する一例として、指令速度を１２００００ｐｐｓとする場合について説明する。処理部１６２がパルス速度を２％速くする場合は、１２００００×１．０２＝１２２４００ｐｐｓを補正後のパルス速度とする。また、処理部１６２がパルス速度を２％遅くする場合は、１２００００×０．９８＝１１７６００ｐｐｓを補正後のパルス速度とする。
【００８５】
次に、制御周期の１周期あたり２％以内でパルス信号の速度を補正することについて図を用いて説明する。図１０は、パルス信号のパルス速度を補正について説明するための図である。図１０（ａ）では、例えば、指令速度を１２００００ｐｐｓとした場合、１ｍｓ（＝０．００１ｓ）の制御周期においてパルス数が１２０パルスとなることが図示されている。
【００８６】
制御周期の１周期あたりパルス信号の速度を約０．８３％速くする補正を図１０（ｂ）に示す。図１０（ｂ）では、指令速度を１２００００ｐｐｓ×１．０８３＝約１２１０００ｐｐｓを補正後のパルス速度とする。そのため、図１０（ｂ）では、１ｍｓ（＝０．００１ｓ）の制御周期においてパルス数が１２１パルスとなっている。
【００８７】
一方、制御周期の１周期あたりパルス信号の速度を約０．８３％遅くする補正を図１０（ｃ）に示す。図１０（ｃ）では、指令速度を１２００００ｐｐｓ×０．９１７＝約１１９０００ｐｐｓを補正後のパルス速度とする。そのため、図１０（ｃ）では、１ｍｓ（＝０．００１ｓ）の制御周期においてパルス数が１１９パルスとなっている。
【００８８】
これまで説明したように、パルス出力ユニット１６では、パルス計数部１６５で計数したパルス数に基づいて、処理部１６２でパルス信号の速度（パルス速度）を補正している。パルス出力ユニット１６では、急激なパルス速度の変化を抑えることができる。図１１は、パルス速度の補正後のパルス信号について説明するための図である。
【００８９】
図１１（ａ）に示す波形では、予め定められたタイミング（指令１などの破線の位置）に対するパルス信号出力の進みが、指令１、指令２と順に大きくなっているが、パルス出力ユニット１６でパルス速度を補正して速度ダウンすることで指令３において予め定められたタイミングに対するパルス信号出力の進みを解消している。しかし、補正でパルス速度を速度ダウンしたことで、図１１（ａ）に示す波形では、予め定められたタイミングに対するパルス信号出力の遅れが、指令３、指令４と順に大きくなっている。そこで、パルス出力ユニット１６は、指令４において予め定められたタイミングに対するパルス信号が出力されるタイミングで、パルス速度を補正して速度アップしている。パルス出力ユニット１６でパルス速度を補正して速度アップすることで指令５において予め定められたタイミングに対するパルス信号出力の進みを解消している。なお、図１１（ａ）に示す波形では、パルス出力ユニット１６によってパルス速度を補正しているので、図７（ａ）および図７（ｂ）で示したようなパルス信号の途切れが発生していない。
【００９０】
図１１（ｂ）は、パルス速度の補正を行なった場合のパルス速度の変化を示した図である。図１１（ｂ）においても、パルス出力ユニット１６は、例えばパルス信号の出力を開始してからパルス速度を大きくし、ある値でパルス速度を一定に維持し、その後パルス速度を小さくする制御を行っている。パルス出力ユニット１６は、パルス速度を一定に維持している期間に、パルス速度の補正を行なうことで、図７（ｃ）のようなスパイク状の急激なパルス速度の変化に比べて図１１（ｂ）のような緩やかな変化に調整している。そのため、パルス出力ユニット１６は、急激なパルス速度の変化を抑えて、駆動装置が例えばステッピングモータ４Ａ，４Ｂのようなモータである場合に、モータ速度が急激に変化しないように制御して異音や振動が発生することを防止している。さらに、パルス出力ユニット１６は、モータ速度が急激に変化しないように制御しているので、モータがパルス信号に同期しなくなって脱調することを防止することができる。
【００９１】
以上のように、本実施の形態に係るＰＬＣシステムＳＹＳは、モータドライバ３Ａ，３Ｂおよびステッピングモータ４Ａ，４Ｂで構成される駆動装置３０，４０と、駆動装置３０，４０に出力されるパルス信号のパルス数およびパルス速度を指令するＣＰＵユニット１３と、ＣＰＵユニット１３での指令に基づき駆動装置３０，４０にパルス信号を出力するパルス出力ユニット１６とを備えている。パルス出力ユニット１６は、クロック信号を生成するクロック生成部１６３と、クロック信号を分周してパルス信号を生成し、ＣＰＵユニット１３で指令したパルス数およびパルス速度のパルス信号を、予め定められたタイミングで出力するパルス出力部１６４と、出力するパルス信号のパルス数を計数するパルス計数部１６５と、パルス数の誤差に基づき、パルス出力部１６４で生成するパルス信号のパルス速度を補正する処理部１６２とを含む。そのため、パルス出力ユニット１６では、予め定められたタイミングに対するパルス信号出力の進みまたは遅れを補正して、パルス信号の急激なパルス速度の変化を抑えることができる。
【００９２】
また、ＣＰＵユニット１３は、位置を指令することでパルス信号のパルス数を指令し、パルス出力ユニット１６は、今回指令された指令位置（位置データ）と前回指令された指令位置（位置データ）との差から指令されたパルス信号のパルス数を求める。
【００９３】
さらに、処理部１６２は、パルス出力部１６４から出力するパルス信号が予め定められたタイミングに対して進んでいる場合、ＣＰＵユニット１３で指令したパルス速度よりも遅くなるようにパルス速度を補正する。また、処理部１６２は、パルス出力部１６４から出力するパルス信号が予め定められたタイミングに対して遅れている場合、ＣＰＵユニット１３で指令したパルス速度よりも速くなるようにパルス速度を補正する。そのため、パルス出力ユニット１６は、予め定められたタイミングに対するパルス信号出力の進みまたは遅れを補正して、急激なパルス速度の変化を抑えることができる。
【００９４】
処理部１６２は、ＣＰＵユニット１３でパルス数およびパルス速度を指令する制御周期の１周期あたり、パルス信号の１パルス分の速度を補正する。そのため、パルス出力ユニット１６は、パルス速度を補正する幅が大きすぎずまた小さすぎず、適正にパルス速度を変化させることができる。
【００９５】
（変形例）
（１）本実施の形態に係るＣＰＵユニット１３では、位置（図６に示す指令位置）を指令することでパルス信号のパルス数を指令しているが、これに限定されない。ＣＰＵユニット１３が、今回の指令位置と前回の指令位置との差からパルス信号のパルス数を算出して、パルス数をパルス出力ユニット１６に直接指令してもよい。
【００９６】
（２）本実施の形態に係るパルス出力ユニット１６では、パルス信号の進みまたは遅れの原因が指令値（指令位置、指令速度）の整数を丸めることによる誤差であると説明したが、これに限定されない。パルス出力ユニット１６は、例えば、パルス速度の分解能による誤差やクロック生成部１６３自体のハードウェアの誤差などでも、パルス信号の進みまたは遅れが発生する。ここで、パルス速度の分解能による誤差とは、パルス出力ユニット１６が出力するパルス信号がクロック生成部１６３のクロック信号を分周して生成しているため、クロック信号を分周することができる範囲（分解能）までしかパルス速度を表現できないことで生じる誤差である。クロック生成部１６３自体のハードウェアの誤差とは、クロック生成部１６３を構成する素子の精度や温度による特性の変化などで生じる誤差である。
【００９７】
（３）本実施の形態に係るパルス出力ユニット１６は、ＰＬＣシステムＳＹＳの構成の１つとして説明したが、これに限定されない。パルス出力ユニット１６は、例えば、上位コントローラに接続して駆動装置を駆動するだけの構成であってもよい。
【００９８】
（４）本実施の形態に係るパルス出力ユニット１６では、ＣＰＵユニット１３で指令したパルス速度を調整して、システム設定として予めパルス出力ユニット１６に定められたタイミングに対するパルス信号出力の進みまたは遅れを補正する構成について説明したが、これに限定されない。例えば、図７に示した波形において途切れが発生する場合に、パルス出力ユニット１６は、途切れる前に出力していたパルス信号を継続して出力するような補正であってもよい。
【００９９】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【０１００】
１  ＰＬＣ、２  フィールドネットワーク、３Ａ，３Ｂ  モータドライバ、４ｘ，４ｚ  ステッピングモータ、５  リモートＩＯターミナル、８  ＰＬＣサポート装置、１０  接続ケーブル、１１  システムバス、１２  電源ユニット、１３  ＣＰＵユニット、１４，５３  ＩＯユニット、１５  特殊ユニット、１６  パルス出力ユニット、５２  通信カプラ、１００  マイクロプロセッサ、１０２  チップセット、１０４  メインメモリ、１０６  不揮発性メモリ、２３０  制御プログラム、３００  プログラマブル表示器。
【図１】
2018129923.tif 000003
【図２】
2018129923.tif 000004
【図３】
2018129923.tif 000005
【図４】
2018129923.tif 000006
【図５】
2018129923.tif 000007
【図６】
2018129923.tif 000008
【図７】
2018129923.tif 000009
【図８】
2018129923.tif 000010
【図９】
2018129923.tif 000011
【図１０】
2018129923.tif 000012
【図１１】
2018129923.tif 000013
【手続補正書】
【提出日】平成29年12月20日(2017.12.20)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】００５７
【補正方法】変更
【補正の内容】
【００５７】
モーション演算プログラム２３４は、ユーザプログラム２３６による指示に従って実行され、コントローラ６からの計測情報の読み出しや、モータドライバ３Ａ，３Ｂに対して出力する指令位置を算出するプログラムなどである。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０１００
【補正方法】変更
【補正の内容】
【０１００】
１  ＰＬＣ、２  フィールドネットワーク、３Ａ，３Ｂ  モータドライバ、４Ａ，４Ｂ  ステッピングモータ、５  リモートＩＯターミナル、８  ＰＬＣサポート装置、１０  接続ケーブル、１１  ＰＬＣシステムバス、１２  電源ユニット、１３  ＣＰＵユニット、１４，５３  ＩＯユニット、１５  特殊ユニット、１６  パルス出力ユニット、５２  通信カプラ、１００  マイクロプロセッサ、１０２  チップセット、１０４  メインメモリ、１０６  不揮発性メモリ、２３０  制御プログラム、３００  プログラマブル表示器。
【手続補正３】
【補正対象書類名】図面
【補正対象項目名】図４
【補正方法】変更
【補正の内容】
【図４】
2018129923.tif 000014