以下に、本発明の好適な実施の形態について、図面を参照しながら詳細に説明する。
ここで、図1は、本実施形態におけるモーションコントロールシステムを示すブロック図であり、図2は、同モーションコントロールシステムにおける4軸コントローラユニットを示すブロック図である。
図1に示す本実施形態のモーションコントロールシステム1は、工作機械や組み立て機械などの産業用機械装置や検査装置等における動作を制御するシステムとして形成されている。このモーションコントロールシステム1は、PCにより形成される制御ホスト10と、制御ホスト10の制御下に配される第1スレーブ20、第2スレーブ40、及び第3スレーブ60と、制御ホスト10と第1〜第3スレーブ20,40,60間の通信を行う通信インターフェイスユニット70とを有する。
ここで、スレーブとは、制御ホスト10の後述する制御プログラム11が関数を実行することによって、指定された命令に従って動作するユニットのことを言い、本実施形態では、第1スレーブ20、第2スレーブ40、及び第3スレーブ60として、コントローラユニット21、コントローラ機能とドライバ機能を一体型にしたコントローラドライバユニット41、及びデジタルI/Oユニット61が用いられている。なお、本実施形態において、制御ホスト10の制御下に配されるスレーブの個数は限定されるものではなく、1つのスレーブのみが配されていても良いし、4つ以上のスレーブが配されていても良い。
本実施形態の制御ホスト10は、C#等の開発言語を用いて構築される制御プログラム11と、第1スレーブ20〜第3スレーブ60に対する通信を行うためのソフトウェアモジュールとなるデバイスドライバ12とを有しており、制御プログラム11で関数を実行することにより、第1スレーブ20〜第3スレーブ60を動作させ、また、その動作を制御することができる。
例えば本実施形態の制御ホスト10において、制御プログラム11で関数が実行されると、制御プログラム11から、その関数実行に基づく内部信号がデバイスドライバ12に送られる。また、デバイスドライバ12では、制御プログラム11からの内部信号を受信すると、その内部信号に基づいてリクエスト信号71を生成して通信インターフェイスユニット70に送信する。
本実施形態において、制御ホスト10のデバイスドライバ12から送信されるリクエスト信号71は、図3に示すようなフォーマットで形成されており、このリクエスト信号71には、信号の長さ、信号の送り先、及び信号の内容などの情報が含まれている。
より具体的に説明すると、本実施形態のリクエスト信号71は、信号の長さを示すリクエスト長71aの情報と、信号の送り先を示すスレーブアドレス71bの情報及びスレーブタイプ71cの情報と、信号の実質的な内容を示すリクエストコード71dの情報及びリクエストデータ71eの情報とを有する。
リクエスト長71aの情報は、当該リクエスト長71aを除くリクエスト信号71の長さ、すなわち、スレーブアドレス71b、スレーブタイプ71c、リクエストコード71d、及びリクエストデータ71eの情報の合計の長さ(バイト数)を示す。このリクエスト長71aの情報は、各スレーブ20,40,60がリクエスト信号71を受信したときに、それぞれのスレーブ20,40,60がその受信したリクエスト信号71が正しいものか否かを判別する要素の一つとなる。
リクエスト信号71におけるスレーブアドレス71bの情報は、リクエスト信号71の送信先となる特定のスレーブのアドレスを指定している。スレーブタイプ71cの情報は、送信先となるスレーブにおけるユニットの種類を特定している。リクエストコード71dの情報は、リクエスト信号71で行わせる処理の対象(例えばスレーブのポートへのライト)を指定している。
リクエストデータ71eの情報は、リクエスト信号71で行わせる処理の具体的な内容を指定しており、このリクエストデータ71eには、例えば軸の指定、処理を実行させるコマンド、そのコマンドの具体的なデータなどの内容が含まれる。なお、本発明のリクエスト信号71のフォーマットは、図3に示したものに限定されるものではなく、任意に変更することができる。
一方、本実施形態の制御ホスト10から、後述する通信インターフェイスユニット70を介して、スレーブにリクエスト信号71が送られると、そのリクエスト信号71を各スレーブ20,40,60が一斉に受信し、各スレーブ20,40,60がリクエスト信号71の内容を自分に対するものであるか否かを判断する。
更に、各スレーブ20,40,60は、そのリクエスト信号71が自分に対するものと判断した場合には、そのリクエスト信号71の内容を実行した後に、実行結果等の内容を含むアンサーバック信号72を、通信インターフェイスユニット70を介して、制御ホスト10に送信する。制御ホスト10では、そのアンサーバック信号72をデバイスドライバ12で受信して解析し、その解析に基づいて関数の実行結果が制御プログラム11に戻される。
ここで、本実施形態で送信されるアンサーバック信号72は、リクエスト信号71を実行した結果を示す信号であり、図4に示すようなフォーマットで形成されている。このアンサーバック信号72は、信号の長さを示すアンサー長72aの情報と、エラーの有無を示すエラー判定結果72bの情報と、リクエスト信号71に対する応答の内容を示すアンサーバックデータ72cの情報とを有する。
アンサーバック信号72におけるアンサー長72aの情報は、当該アンサー長72aを除くアンサーバック信号72の長さ、すなわち、エラー判定結果72b及びアンサーバックデータ72cの情報の合計の長さ(バイト数)を示す。エラー判定結果72bの情報は、受信したリクエスト信号71に対してエラーが生じたか否かを示すとともに、エラーが生じた場合にはそのエラーの内容を示す。アンサーバックデータ72cの情報には、リクエスト信号71に対して実行した結果や内容などのデータが含まれる。なお、本発明のアンサーバック信号72のフォーマットも、図4に示したものに限定されるものではなく、任意に変更することができる。
本実施形態の制御ホスト10は、PCにより形成されているため、制御プログラム11によるモーションコントロールの処理以外に、第3スレーブ60の後述するセンサ等から得られる情報を用いて、画像処理等の様々な処理を行うことも可能である。なお、本実施形態の制御ホスト10はPCにより形成されているが、本発明では、制御ホスト10をPLCにより形成することも可能である。
また、本実施形態の制御ホスト10は、制御プログラム11により、第1スレーブ20のコントローラユニット21の後述するROM24に保持されているマクロデータ75やシートデータ76の少なくとも一部を書き換えることが可能であり、また、同コントローラユニット21における後述する第1RAM36a〜第4RAM36dに書き込まれるマクロデータ75の少なくとも一部を書き換えることが可能に構成されている。なお、本発明では、ROM24や第1RAM36a〜第4RAM36d内のマクロデータ75等の書き換えを制御プログラム11によって行う代わりに、制御ホスト10に、ROM24や第1RAM36a〜第4RAM36d内のマクロデータ75等を書き換える専用の書き換えプログラムを持たせることも可能である。
本実施形態の通信インターフェイスユニット70は、制御ホスト10のデバイスドライバ12との間で、バス又はシリアル通信を介してリクエスト信号71及びアンサーバック信号72の送受信を行うとともに、第1スレーブ20〜第3スレーブ60との間で、シリアル通信によるリクエスト信号71及びアンサーバック信号72の送受信を行うユニットである。
この場合、図3及び図4に示したフォーマットのリクエスト信号71及びアンサーバック信号72の伝達を行うシリアル通信を「ALII(エーエルツー)通信」と称し、この「ALII通信」は、本出願人が市販するコントローラユニットやモーションコントロールシステムなどに用いられている。なお、本願で用いるシリアル通信の用語には、ALII通信が含まれるものとする。
本実施形態の通信インターフェイスユニット70において、制御ホスト10を形成するPCに接続する形態は特に限定されるものではなく、例えばPCIバスやPCIExpress(登録商標)バスなどのスロット挿入タイプのもの、又は、USB、Ethernet(登録商標)、及びEtherCAT(登録商標)などのシリアル通信タイプのものを利用することが可能である。
本実施形態において、通信インターフェイスユニット70と第1〜第3スレーブ20,40,60との間のシリアル通信の通信仕様には、絶縁型RS485(半二重通信)方式が採用されている。また、シリアル通信の通信速度(ボーレート)として、20Mbps又は10Mbpsが設定される。
RS485の通信方式は、ケーブルの引き回しが容易であり、また、ノイズに強く、一つのケーブル(伝送路)の抵抗やスレーブの負荷抵抗の影響を受け難いため、複数のスレーブを組み込むことが可能である。例えば、本実施形態のモーションコントロールシステム1の場合、最大で15ユニットのスレーブを、通信インターフェイスユニット70に対してシリアル通信(ALII通信)で接続して制御することが可能である。
本実施形態の第1スレーブ20となるコントローラユニット21は、4軸コントローラユニットとして形成されており、このコントローラユニット21には、X軸(第1軸)、Y軸(第2軸)、Z軸(第3軸)、及びA軸(第4軸)の各軸に配される4つのパルス駆動モータ38が、それぞれドライバユニット39を介して接続されている。
この場合、接続されるパルス駆動モータ38として、サーボモータ又はステッピングモータが用いられる。また、X軸、Y軸、Z軸、及びA軸に配されるパルス駆動モータ38を、それぞれ第1パルス駆動モータ38a、第2パルス駆動モータ38b、第3パルス駆動モータ38c、及び第4パルス駆動モータ38dとし、各パルス駆動モータ38a〜38dが接続するドライバユニット39を、順番に、第1ドライバユニット39a、第2ドライバユニット39b、第3ドライバユニット39c、及び第4ドライバユニット39dとする。
本実施形態の4軸コントローラユニット21は、図2に示すように、様々な処理を行うCPU22と、リクエスト信号71の受信及びアンサーバック信号72の送信を行う通信制御部23と、複数のマクロデータ75が予め記憶されている1つのROM24と、指令パルスを発生させる第1及び第2軸制御ロジック回路31,32(第1及び第2パルスジェネレータとも言う)と、第1及び第2軸制御ロジック回路31,32で発生させた指令パルスの信号を第1ドライバユニット39a〜第4ドライバユニット39dに対して出力する外部機器インターフェイス回路25とを有する。
この場合、4軸コントローラユニット21におけるCPU22、通信制御部23、ROM24、並びに第1及び第2軸制御ロジック回路31,32は、バス(データバス)26によって相互に接続されている。なお、第1ドライバユニット39a〜第4ドライバユニット39d、及び外部機器インターフェイス回路25については、従来の4軸コントローラユニットに用いられる一般的なドライバユニット、及び外部機器インターフェイス回路と同様であるため、ここでは、これらの詳しい説明を省略することとする。
本実施形態の4軸コントローラユニット21においてCPU22が行う主な処理を例示すると、CPU22は、通信制御部23で受信したリクエスト信号71の判別を行うとともに、そのリクエスト信号71が4軸コントローラユニット21に対するものである場合には、リクエスト信号71を実行命令に変換する処理を行う。この場合、図3に示したフォーマットで形成されたリクエスト信号71(特に、リクエスト信号71のリクエストデータ71eの部分)は、CPU22の処理によって、8ビットのコマンドと、16ビットの第1データと、16ビットの第2データとを有する実行命令に変換される。なお、実際にCPU22で変換される実行命令は、第2データ、第1データ、及びコマンドの順番で構成されている。
また、CPU22は、受信したリクエスト信号71の内容に従って、変換された実行命令(すなわち、コマンドと第1及び第2データ)を、第1及び第2軸制御ロジック回路31,32の後述する各軸制御部35a〜35dに書き込む処理や、各軸制御部35a〜35dからデータ(情報)を読み出す処理などを行い、更に、実行結果等の内容を含むアンサーバック信号72を生成する処理を行う。
更にまた、CPU22は、受信したリクエスト信号71の内容に従って、例えばROM24にアクセスし、当該ROM24に記憶されているモーションコントロール用のマクロデータ75を読み出すとともに、その読み出したマクロデータ75を、第1及び第2軸制御ロジック回路31,32の後述する第1RAM36a〜第4RAM36dに書き込む処理を行う。
通信制御部23は、通信インターフェイス回路27を介して通信インターフェイスユニット70に接続されており、制御ホスト10から送られたリクエスト信号71の受信と、CPU22で生成されたアンサーバック信号72の送信とを行う。また、コントローラユニット21の通信インターフェイス回路27と、通信インターフェイスユニット70との間では、上述したシリアル通信(ALII通信)が行われる。
ROM24は、データの書き込みや消去を自由に行うことができるとともに、電源を切っても書き込まれたデータが消えないフラッシュメモリであり、従来のコントローラユニットには、本実施形態のようなROM24は設けられていなかった。また、本実施形態のROM24には、第1及び第2軸制御ロジック回路31,32の第1RAM36a〜第4RAM36dに書き込むことが可能な複数のモーションコントロール用マクロデータ75が保持(記憶)されている。
第1及び第2軸制御ロジック回路31,32は、それぞれ、2つのパルス駆動モータ38のドライバユニット39に対して指令パルスを出力することが可能な軸制御部35a〜35dを2つずつ備えた2軸用の軸制御ロジック回路(集積回路)として形成されている。なお、本実施形態の第1及び第2軸制御ロジック回路31,32は、それぞれ2軸用に形成されているが、本発明では、軸制御ロジック回路が1軸用に形成されていても良く、また、1つのコントローラユニットに1つの軸制御ロジック回路のみが設けられていても良い。
第1軸制御ロジック回路31は、CPU22から送られた実行命令の解析を行う第1命令解析部33と、解析された実行命令に従ってX軸(軸1)の第1ドライバユニット39aに対する指令パルスを発生させるとともにモータの回転数(位置)を判断するために指令パルスのカウントを行うX軸用の第1軸制御部(X軸制御部)35aと、第1軸制御部35aに対して設けられ、マクロデータ75を書き込むことが可能な第1RAM36aと、解析された実行命令に従ってY軸(軸2)の第2ドライバユニット39bに対する指令パルスを発生させるとともにその指令パルスのカウントを行うY軸用の第2軸制御部(Y軸制御部)35bと、第2軸制御部35bに対して設けられ、マクロデータ75を書き込むことが可能な第2RAM36bとを有する。このような本実施形態の第1軸制御ロジック回路31は、例えば図11に示したような従来の第1及び第2軸制御ロジック回路91,92と比較すると、第1RAM36a及び第2RAM36bが新たに設けられていることに違いを有する。
更に、第1軸制御ロジック回路31は、CPU22でリクエスト信号71から変換された実行命令に従って、第1軸制御部(X軸制御部)35aに対し、第1RAM36aにアクセスし、且つ、その第1RAM36aに書き込まれたマクロデータ75の後述する実行命令77を順番に自動実行させる第1RAMインターフェイス機能と、第2軸制御部(Y軸制御部)35bに対し、第2RAM36bにアクセスし、且つ、その第2RAM36bに書き込まれたマクロデータ75の実行命令77を順番に自動実行させる第2RAMインターフェイス機能とを有する。
第1軸制御ロジック回路31の第1命令解析部33は、CPU22でリクエスト信号71から変換された実行命令を解析し、更に、その実行命令に含まれるコマンドと第1データ及び第2データとに従って、第1軸制御部35a及び第2軸制御部35bに所定の動作を行わせることができる。
例えば第1命令解析部33は、実行命令に含まれるコマンドと第1データ及び第2データとに従って、第1軸制御部35aに、所定の第1条件で指令パルスを発生させるとともに、発生させた指令パルスの回数をカウントするといった動作を実行させるとともに、第2軸制御部35bに、所定の第2条件で指令パルスを発生させるとともに、発生させた指令パルスの回数をカウントするといった動作を実行させることが可能である。
また、第1命令解析部33は、第1及び第2RAMインターフェイス機能による処理(RAMインターフェイス処理)により、実行命令に含まれるコマンドと第1及び第2データとに従って、第1軸制御部35aに対し、第1RAM36aにアクセスして第1RAM36aに書き込まれたマクロデータ75の実行命令77を所定のアドレスの番地から順番に自動実行させるとともに、第2軸制御部35bに対し、第2RAM36bにアクセスして第2RAM36bに書き込まれたマクロデータ75の実行命令77を所定のアドレスの番地から順番に自動実行させることが可能である。
第1軸制御ロジック回路31の第1RAM36a及び第2RAM36bは、データの書き込みや消去を自由に行うことができるものの、ROM24とは異なり、電源の供給が遮断されると書き込まれデータ(内容)が失われる揮発メモリである。
第1RAM36aは、CPU22により、ROM24に保存されているX軸用のマクロデータ75を書き込むことが可能に構成されている。また、第1RAM36aは、上述した第1RAMインターフェイス機能により、第1軸制御部35aからアクセスされて、書き込まれたX軸用のマクロデータ75の実行命令77が順番に読み出される。
第2RAM36bも、第1RAM36aと同様に、CPU22により、ROM24に保存されているY軸用のマクロデータ75を書き込むことが可能に構成されているとともに、第2RAMインターフェイス機能により、第2軸制御部35bがアクセスして、書き込まれたY軸用のマクロデータ75の実行命令77が順番に読み出される。
この場合、本実施形態の第1RAM36a及び第2RAM36bは、「0000」番地〜「4095」番地の4096個のアドレスをそれぞれ備えるとともに、1つのアドレスに、マクロデータ75を形成する1つの実行命令77(後述するように、コマンドと第1及び第2データとからなる命令)を格納することが可能な容量を有する。
第2軸制御ロジック回路32は、CPU22から送られた実行命令の解析を行う第2命令解析部34と、解析された実行命令に従ってZ軸(軸3)の第3ドライバユニット39cに対する指令パルスを発生させるとともにその指令パルスのカウントを行うZ軸用の第3軸制御部(Z軸制御部)35cと、第3軸制御部35cに対して設けられ、マクロデータ75を書き込むことが可能な第3RAM36cと、解析された実行命令に従ってA軸(軸4)の第4ドライバユニット39dに対する指令パルスを発生させるとともにその指令パルスのカウントを行うA軸用の第4軸制御部(A軸制御部)35dと、第4軸制御部35dに対して設けられ、マクロデータ75を書き込むことが可能な第4RAM36dとを有する。
この場合、第2軸制御ロジック回路32における第2命令解析部34、第3及び第4軸制御部35c,35d、並びに、第3及び第4RAM36c,36dは、上述した第1軸制御ロジック回路31における第1命令解析部33、第1及び第2軸制御部35a,35b、並びに、第1及び第2RAM36a,36bと、駆動制御するモータ38の軸が異なること以外は実質的に同様に形成されている。
また本実施形態において、第1及び第2軸制御ロジック回路31,32の各軸制御部35a〜35dから出力する指令パルスの信号は、外部機器インターフェイス回路25を介して、X軸、Y軸、Z軸及びA軸のそれぞれ対応するドライバユニット39に送られる。また、例えばパルス駆動モータ38がサーボモータである場合は、図示しないエンコーダで検知される回転角や回転速度の情報がフィードバック信号として、各ドライバユニット39から外部機器インターフェイス回路25を介して対応する各軸制御部35a〜35dに戻される。
このような本実施形態のコントローラユニット21において、ROM24に予め保持され、且つ、第1RAM36a〜第4RAM36dに書き込み可能なモーションコントロール用のマクロデータ(「モーションコントロールマクロ」とも言う)75は、図5及び図6に示すように、第1軸制御部35a〜第4軸制御部35dにそれぞれ所要の動作を行わせるために組み合わされた複数の実行命令77の集合体であり、1つのマクロデータ75は、各軸制御部35a〜35dが一連の動作を行うために設定される複数の実行命令77を予め順番に並べてマクロ化することによって形成されている。
このマクロデータ75を形成するそれぞれの実行命令77は、CPU22の処理によってリクエスト信号71から変換される実行命令と同様の構造(フォーマット)を有する。すなわち、マクロデータ75を形成する各実行命令77は、各軸制御部35a〜35dに動作を行わせるための8ビットのコマンドと、16ビットの第1データと、16ビットの第2データとを有する。なお、マクロデータ75を形成する実際の実行命令77は、CPU22で変換される実行命令と同様に、第2データ、第1データ、及びコマンドの順番で構成されている。
すなわち、本実施形態のマクロデータ75は、従来のモーションコントロールシステムでは制御ホスト10の制御プログラム11が予め備える複数の関数の代わりに、それらの複数の関数に対応した複数の実行命令77を順番に並べた集合体により形成されている。この複数の実行命令77の集合体であるマクロデータ75は、コントローラユニット21のROM24の領域に予め記憶されている。
この場合、1つのマクロデータ75を形成する実行命令77の個数は、各軸のパルス駆動モータ38に実行させる動作の内容に応じてそれぞれ設定される。
なお、本実施形態にて、マクロデータ75の書き込み先となる第1RAM36a〜第4RAM36dは、上述のように「0000」番地〜「4095」番地の4096個のアドレスをそれぞれ有しており、1つのアドレスには、1つの実行命令77が書き込まれる。すなわち、各RAMに同時に書き込むことが可能な実行命令77の個数は、最大で4096個であるため、1つのマクロデータ75を形成する実行命令77の個数は、4096個以下に制限される。
また本実施形態では、図6に示したように、X軸用のマクロデータ75、Y軸用のマクロデータ75、Z軸用のマクロデータ75、及びA軸用のマクロデータ75といった4軸分のマクロデータ75が一つにまとめられることにより1枚のシートデータ76が形成されており、4軸分のマクロデータ75が1つに組み合わされたシートデータ76の形態でROM24に保持されている。この1枚のシートデータ76に収容されるX軸用のマクロデータ75、Y軸用のマクロデータ75、Z軸用のマクロデータ75、及びA軸用のマクロデータ75は、各軸で互いに異なる動作を実行させることが可能である。
この場合、ROM24は、4軸分のマクロデータ75が組み合わされた複数枚分のシートデータ76を記憶することが可能な容量を有しており、例えば本実施形態の場合、15枚分のシートデータ76をROM24に記憶することが可能である。なお、本発明において、ROM24に記憶させることが可能なシートデータ76の枚数(すなわち、ROM24の記憶容量)は特に限定されるものではなく、任意に変更することが可能である。
また、1枚のシートデータ76を形成するX軸用のマクロデータ75、Y軸用のマクロデータ75、Z軸用のマクロデータ75、及びA軸用のマクロデータ75は、上述のように4つの軸が互いに異なる動作を行うものの、4つの軸が相互に対応する一連の動作を行うように組み合わせることによって、例えば後述するように、制御ホスト10から送信するリクエスト信号71に従って、ROM24内のマクロデータ75を第1RAM36a〜第4RAM36dのそれぞれに展開して書き込む際に、制御ホスト10からのリクエスト信号71の送信回数を少なくしてマクロデータ75の展開を効率的に行うことができる。更に、4つの軸が相互に対応する動作を行うように予め組み合わされているため、4軸のパルス駆動モータ38の同期精度も高められる。
なお、1枚のシートデータ76に組み合わされる4軸分のマクロデータ75は、互いに対応する動作を行わないものであっても良い。また、1枚のシートデータ76には、4軸分のマクロデータ75ではなく、4軸のうちの1軸分、2軸分、又は3軸分のマクロデータ75のみが収容されていても良い。例えば、第1及び第2シートのシートデータ76には4軸分のマクロデータ75が収容されており、第3シートのシートデータ76には、X軸とY軸の2軸分のマクロデータ75のみが収容されていても良い。
更に、ROM24に複数枚分のシートデータ76を記憶する場合、シートデータ76の1枚1枚毎に、4軸のパルス駆動モータ38に実行させる動作パターンが異なる4軸分のマクロデータ75を持たせることができる。例えばROM24に、第1シート〜第15シートまでの15枚分のシートデータ76を保持する場合では、第1シートのシートデータ76は4つのパルス駆動モータ38が動作パターンAで相互に対応する動作を行う4軸分のマクロデータ75を有し、第2シートのシートデータ76は4つのパルス駆動モータ38が動作パターンBで相互に対応する動作を行う4軸分のマクロデータ75を有することが可能であり、それによって、1つのROM24に、4軸のパルス駆動モータ38について15種類の動作パターンを記憶させておくことが可能となる。
また、1枚のシートデータ76には、上述のようにX軸、Y軸、Z軸、及びA軸の4軸分のマクロデータ75が保持されているが、1枚のシートデータ76の各軸に収容されるマクロデータ75の個数は、1つであっても、複数であっても良い。
例えば図6に本実施形態のシートデータ76の一例を示したように、1枚のシートデータ76は、第1RAM36a〜第4RAM36dに対応して、「0000」番地〜「4095」番地の4096個のアドレス×4軸分の容量を有しており、この1枚のシートデータ76の各軸に、最大で4096個の実行命令77(全体で4096個×4軸分の実行命令77)をそれぞれ保持することが可能である。
更に、このシートデータ76のX軸には、複数の実行命令77をマクロ化した1つのマクロデータ75が保持されており、Y軸、Z軸、及びA軸には、それぞれ、複数の実行命令77をマクロ化したマクロデータ75が2つずつ保持されている。
すなわち、1枚のシートデータ76の各軸には、マクロデータ75を形成する実行命令77の合計の個数が4096個以下となれば、1つのマクロデータ75のみを保持することもできるし、2つ以上の複数のマクロデータ75を保持することもできる。
またこの場合、各軸のマクロデータ75を任意のアドレスの領域に設定することが可能であり、特に、4つの軸が相互に対応した動作を実行するように、各軸のマクロデータ75を互いに対応する所定のアドレスの領域に設定することができる。
例えば図6の一番に上に示したシートデータ76では、制御ホスト10からのリクエスト信号71で4つの軸の動作を同時にスタートさせることが可能なように、各軸のマクロデータ75は、それぞれ「0000」番地のアドレスから実行命令77を保持するように設定されている。
従って、図6のシートデータ76のマクロデータ75を、第1及び第2軸制御ロジック回路31,32の第1RAM36a〜第4RAM36dに対し、図5に示したように展開してそれぞれ書き込み、その後、制御ホスト10から、マクロデータ75を自動実行させるためのリクエスト信号71を送信することによって、各軸制御部35a〜35dは、対応する各RAM36a〜36dに書き込まれたマクロデータ75に従って、実行命令77を「0000」番地のアドレスから同じタイミングで順番に自動実行することができる。それにより、各軸のパルス駆動モータ38a〜38dに所定の動作を安定して行わせることができるとともに、各軸の動作を他の軸と容易に同期させることができる。
またこの場合、図6のシートデータ76のY軸には、2つのマクロデータ75が間隔を開けて設定されている。従って、Y軸の第2パルス駆動モータ38bは、他の軸のパルス駆動モータ38と同じタイミングで、最初のマクロデータ75に従って所定の動作をスタートさせることができ、更に、最初のマクロデータ75の動作が終了した後に所定の時間が経過してから、次のマクロデータ75に従って所定の動作を実行することが可能となる。
更に、図6のシートデータ76のZ軸及びA軸には、2つのマクロデータ75が連続的に設定されている。従って、Z軸及びA軸の第3及び第4パルス駆動モータ38c,38dは、X軸及びY軸の第1及び第2パルス駆動モータ38a,38bと同じタイミングで、最初のマクロデータ75に従って所定の動作をスタートさせることができ、更に、最初のマクロデータ75の動作が終了した直後に次のマクロデータ75に従って所定の動作を連続的に実行することが可能となる。
また図1に示したように、本実施形態のモーションコントロールシステム1には、制御ホスト10の制御下に、第1スレーブ20の4軸コントローラユニット21の他に、第2スレーブ40となるコントローラドライバユニット41と、第3スレーブ60となるデジタルI/Oユニット61とが接続されている。
第2スレーブ40のコントローラドライバユニット41は、第5パルス駆動モータ38e及び第6パルス駆動モータ38fを駆動させるためのコントローラ機能とドライバ機能とを一体的に備えており、コントローラ機能を発揮するコントローラ部分については、第1スレーブ20の4軸コントローラユニット21を2軸用に変更すること以外は、第1スレーブ20のコントローラユニット21と実質的に同様に形成されている。
すなわち、第2スレーブ40のコントローラドライバユニット41にも、複数のマクロデータ75を保持する図示しないROMと、そのROM内のマクロデータ75を書き込むことが可能な図示しない第5RAM及び第6RAMとが設けられている。
第3スレーブ60のデジタルI/Oユニット61には、各種のセンサやエアシリンダなどの外部機器62が接続されており、制御ホスト10からのリクエスト信号71を受信して外部機器62に信号を出力する機能や、外部機器62からの信号を入力して制御ホスト10に送信する機能を有する。
また、デジタルI/Oユニット61に接続されるセンサ等の外部機器62は、機械設備等の制御対象の状態を検出するとともに、その検出した情報をデジタルI/Oユニット61に入力し、また、デジタルI/Oユニット61からの出力信号に応答して制御対象を作動させる動作を行うことが可能である。この場合、本実施形態のデジタルI/Oユニット61では、外部機器62の接続を32点まで拡張することが可能である。なお、本発明において、外部機器62の接続点数は特に限定されるものではない。
次に、本実施形態のモーションコントロールシステム1における動作制御について説明する。なお、本実施形態では、第1スレーブ20の4軸コントローラユニット21の制御について主に説明することとし、制御の仕方が第1スレーブ20と実質的に同様となる第2スレーブ40のコントローラドライバユニット41、及び、パルス駆動モータ38が接続されていない第3スレーブ60のデジタルI/Oユニット61の制御に関する説明については省略する。
本実施形態のモーションコントロールシステム1では、制御ホスト10及び4軸コントローラユニット21の電源を入れると、先ず、コントローラユニット21の第1RAM36a〜第4RAM36dを自動的に初期化する。一方、コントローラユニット21のROM24は、コントローラユニット21の電源が切られても、そこに記憶されているデータが消去されないため、ROM24には、予め記憶させておいた図6に示すような第1シート〜第4シートの4枚分のシートデータ76が保存されているとともに、それぞれのシートデータ76には、X軸、Y軸、Z軸及びA軸の4軸分のマクロデータ75が収容されている。
なお、ROM24内のシートデータ76やマクロデータ75については、制御ホスト10の制御プログラム11で所定の関数を実行することにより、ROM24に新たなシートデータ76を追加すること、既に保持されているシートデータ76やマクロデータ75の一部又は全部を変更すること、及び、既に保持されているシートデータ76を削除すること等の処理を行うことができる。
第1RAM36a〜第4RAM36dを初期化した後、制御ホスト10は、制御プログラム11にて、所要のシートデータ76における4軸分のマクロデータ75を第1RAM36a〜第4RAM36dに書き込むようにする関数を実行する。具体的には、ROM24に保持している第1シート〜第4シートの4枚分のシートデータ76から、これから実行する動作パターンのマクロデータ75を備える所要の1枚のシートデータ76(例えば第1シートのシートデータ76)を選択するとともに、その選択したシートデータ76に収容されているX軸、Y軸、Z軸及びA軸の各マクロデータ75を、第1RAM36a〜第4RAM36dに展開して書き込むように指示する関数を実行する。
これにより、制御ホスト10は、関数を実行した制御プログラム11からデバイスドライバ12に内部信号が送られ、更に、デバイスドライバ12にてマクロデータ75の書き込みを指示するリクエスト信号71(図3を参照)を生成し、そのリクエスト信号71をデバイスドライバ12から送信する。
デバイスドライバ12から送信されたリクエスト信号71は、シリアル通信インターフェイスユニット70を経由して、第1スレーブ20〜第3スレーブ60の各ユニットに一斉に送られる。このとき、4軸コントローラユニット21は、そのリクエスト信号71を通信制御部23で受信し、更に、その受信したリクエスト信号71をCPU22で解析する。
コントローラユニット21のCPU22は、そのリクエスト信号71が4軸コントローラユニット21に対する信号であることを確認するとともに、そのリクエスト信号71の内容を解析する。更に、CPU22は、受信したリクエスト信号71のリクエストコード71d及びリクエストデータ71eの内容に従って、ROM24に保持されている4枚のシートデータ76から、指定された所要の1枚のシートデータ76(例えば第1シートのシートデータ76)を読み出し、更に、読み出したシートデータ76に収容されているX軸、Y軸、Z軸及びA軸の4軸分のマクロデータ75を、それぞれ対応する第1RAM36a〜第4RAM36dに展開して書き込む処理を行う。
その後、第1RAM36a〜第4RAM36dへのマクロデータ75の書き込みが終了すると、CPU22は、マクロデータ75の書き込みが終了した内容のアンサーバック信号72(図4を参照)を生成して通信制御部23から送信する。このアンサーバック信号72は、4軸コントローラユニット21から、シリアル通信インターフェイスユニット70を経由して、制御ホスト10に送られる。
制御ホスト10では、送られてきたアンサーバック信号72をデバイスドライバ12で受信して解析することによって、エラーが生じずにマクロデータ75の書き込み処理が正常に完了したことを確認でき、またそれによって、制御ホスト10から次のリクエスト信号71を送ることが可能となる。
続いて、制御ホスト10は、第1RAM36a〜第4RAM36dに書き込まれたマクロデータ75に従って、第1軸制御部35a〜第4軸制御部35dが、例えば「0000」番地から所定番地までのアドレスの実行命令77を順番に自動実行するように指示する関数を実行し、その自動実行を指示するリクエスト信号71をデバイスドライバ12から送信する。
このリクエスト信号71を、シリアル通信インターフェイスユニット70を経由して、4軸コントローラユニット21が受信することにより、同コントローラユニット21のCPU22は、そのリクエスト信号71が4軸コントローラユニット21に対する信号であることを確認するとともに、そのリクエスト信号71の内容を解析する。
更に、CPU22は、受信したリクエスト信号71をコマンドと第1及び第2データとからなる実行命令に変換し、その変換した実行命令を第1及び第2軸制御ロジック回路31,32に送るとともに、制御ホスト10に対するアンサーバック信号72を生成して通信制御部23から送信する。
また、実行命令を受けた第1及び第2軸制御ロジック回路31,32では、第1及び第2命令解析部33,34でその実行命令を解析するとともに、それぞれのRAMインターフェイス処理によって、第1軸制御部35a〜第4軸制御部35dに、第1RAM36a〜第4RAM36dに書き込まれたマクロデータ75に従って、「0000」番地のアドレスから順番に実行命令77を自動的に実行する処理を行わせることができる。
具体的には、第1軸制御部35a〜第4軸制御部35dは、第1RAM36a〜第4RAM36dに書き込まれたマクロデータ75の「0000」番地のアドレスから実行命令77を読み出して実行し、更に、「0000」番地の実行命令77を実行した直後に、そのアドレスの番地+1のアドレス(すなわち、「0001」番地のアドレス)から実行命令77を読み出して実行し、以下、これを繰り返す。
これによって、第1軸制御部35a〜第4軸制御部35dは、それぞれのRAMインターフェイス機能による自動実行処理中は、制御ホスト10とコントローラユニット21との間でリクエスト信号71やアンサーバック信号72の送受信を行わずに、第1RAM36a〜第4RAM36dに書き込まれたマクロデータ75に従って実行命令77をそれぞれ順番に読み出して自動的に実行することができ、またそれによって、ユーザーの設定条件で指令パルスを発生させて、第1パルス駆動モータ38a〜第4パルス駆動モータ38dに所要の動作を行わせることができる。
そして、第1及び第2軸制御ロジック回路31,32は、各RAMインターフェイス処理によって、第1RAM36a〜第4RAM36dに書き込まれたマクロデータ75が所定番地のアドレスの実行命令77まで行われると、マクロデータ75の実行を自動的に停止させることができる。
なお、本実施形態では、例えば実行停止のコマンドを備えた実行命令77をマクロデータ75に含めることにより、マクロデータ75の自動実行を、実行停止のコマンドによって終了させることもでき、更に、制御ホスト10から実行停止のリクエスト信号71を送信することによって終了させることもできる。
このように、本実施形態では、第1及び第2軸制御ロジック回路31,32の第1軸制御部35a〜第4軸制御部35dにマクロデータ75の実行命令77をそれぞれ自動実行させ、且つ自動停止させることにより、コントローラユニット21側において、制御ホスト10との通信を行わずに、各パルス駆動モータ38の一連の動作を軸制御部35a〜35dごとに自動的に行わせて完結させることができる。これによって、各軸制御部35a〜35dが独立して指令パルスの発生等の処理を行うことがきるため、軸制御部ごとの処理が円滑になるとともに、各パルス駆動モータ38の動作も安定させることができる。
ここで、本実施形態のモーションコントロールシステム1と、図11に示した従来のモーションコントロールシステムとの違いを具体的に説明すると、例えば従来のモーションコントロールシステムにおいては、本実施形態のような一連の動作を4軸の各パルス駆動モータに行わせるために、制御ホストとコントローラユニット81との間の通信を、本実施形態のマクロデータ75を形成する実行命令77の個数以上の回数で行う必要があるとともに、その通信を行うたびに、制御ホストやコントローラユニット81においてリクエスト信号及びアンサーバック信号の処理を行ったり、実行命令を第1及び第2軸制御ロジック回路91,92に書き込む処理を行ったりしなければならなかった。このため、前述したように、制御ホストへの負担の増大、実行処理時間の制約、システムの高速化の限界等の問題があった。
これに対して、本実施形態のモーションコントロールシステム1では、上述のように、コントローラユニット21のROM24に、制御プログラム11の関数に対応する複数の実行命令77を備えたマクロデータ75を予め記憶させておくとともに、そのROM24に記憶したマクロデータ75を第1RAM36a〜第4RAM36dに書き込んで自動的に順番に実行させることができる。
これにより、本実施形態では、制御ホスト10とコントローラユニット21との間の通信回数を従来よりも少なくして、マクロデータ75に従った動作を完結させることができる。その上、第1スレーブ20や第2スレーブ40を動作させるための制御プログラム11の様々な関数を、実行命令77として、第1スレーブ20のコントローラユニット21に配されるROM24や、第2スレーブ40のユニットに配される図示しないROM等に分散して保持させることができる。
すなわち、本実施形態では制御プログラム11の複数の関数に対応した複数の実行命令77からなるマクロデータ75を、第1スレーブ20のROM24に保持しているため、従来に比べて、制御プログラム11をシンプルに構築することが可能となるとともに、制御プログラム11での関数実行による制御ホスト(PC)10への負担を低減することができる。
また、制御ホスト10とコントローラユニット21の間の通信回数を大幅に減少できることにより、通信時間の低減や、制御ホスト10やコントローラユニット21における内部処理時間の低減を図ることができる。このため、制御ホスト10の負担を更に低減して、制御ホスト10の処理が遅くなることや、制御ホスト10及びコントローラユニット21の処理時間にバラつきや誤差を生じさせることを防止でき、更には、コントローラユニット21のリアルタイム性や4軸間の同期精度を向上させることができ、また、システムの高速化や機械装置の性能向上などを容易に実現できる。
更に、本実施形態のモーションコントロールシステム1では、上述のように、コントローラユニット21のROM24に、第1シート〜第4シートの4枚分のシートデータ76が保持されている。このため、例えば機械装置の処理対象物の変更等によって第1パルス駆動モータ38a〜第4パルス駆動モータ38dの動作パターンを変更する場合には、第1RAM36a〜第4RAM36dに既に書き込まれているマクロデータ75(例えば、第1シートのマクロデータ75)を、その他のシートのマクロデータ75(例えば、第2シートのマクロデータ75)に置き換える(上書きする)ことが可能である。
このように第1RAM36a〜第4RAM36dに書き込むマクロデータ75のシートデータ76を切り替えることによって、第1パルス駆動モータ38a〜第4パルス駆動モータ38dが行う一連の動作パターンを容易に変更でき、また、制御ホスト10の制御プログラム11自体を変更する必要がない。更に、第1スレーブ20のコントローラユニット21内でシートデータ76の切り替えが行われるだけであるため、その第1スレーブ20の変更に伴う第2スレーブ40のコントローラドライバユニット41や、第3スレーブ60のデジタルI/Oユニット61への影響をなくす(又は小さくする)ことができる。
更に本実施形態において、第1パルス駆動モータ38a〜第4パルス駆動モータ38dが行う動作パターンを部分的に変更する場合(例えば、X軸の第1パルス駆動モータ38a及びY軸の第2パルス駆動モータ38bの回転速度を部分的に変更する場合)には、制御ホスト10の制御プログラム11を用いて、コントローラユニット21のROM24に保存されているマクロデータ75の所要部分のみを書き換えることによって対応することが可能である。或いは、ROM24に保存されているマクロデータ75は書き換えずに、対応するRAM(例えば第1及び第2RAM36a,36b)に書き込まれたマクロデータ75の所要部分のみを書き換えることによって対応することも可能である。
このように、変更が必要となるROM24内の又は各RAM36a,36b内のマクロデータ75のみを書き換えることによって、機械装置の動作を一部変更するといったマイナーチェンジを、例えば動作パターンを変更しない軸(例えばZ軸及びA軸)のマクロデータ75を変更せずに、また、制御ホスト10の制御プログラム11を変更せずに容易に行うことができる。更には、第2スレーブ40のコントローラドライバユニット41や、第3スレーブ60のデジタルI/Oユニット61への影響をなくす(又は小さくする)こともできる。
このように本実施形態のモーションコントロールシステム1では、第1RAM36a〜第4RAM36dに展開するシートデータ76の切り替えや、制御ホスト10の制御プログラム11によるROM24又は第1〜第4RAM36a〜36d内のマクロデータ75の書き換え等によって、制御ホスト10の制御プログラム11を変更することなく、また、第2スレーブ40及び第3スレーブ60へ影響を与えることなく(又は与える影響を小さくして)、第1〜第4パルス駆動モータ38a〜38dにおける動作パターンの変更や動作のマイナーチェンジ等を容易に行うことができる。
従って、本実施形態では、例えば一部の動作を変更する場合でも制御プログラムの変更が必要となる従来のモーションコントロールシステムに比べて、動作パターンの変更や動作のマイナーチェンジに要する労力、費用、時間を大きく低減でき、また、制御プログラム11にバグや欠陥等が生じるリスクを回避して、マイナーチェンジ等をローリスクで迅速に且つ低コストで行うことが可能となる。
なお、本実施形態では、第1軸制御部35a〜第4軸制御部35dがそれぞれのRAMインターフェイス機能によってマクロデータ75の自動実行を行う際に、マクロデータ75に従って「0000」番地のアドレスから順番に実行命令77を自動実行する場合について説明している。
しかし、本発明において、第1軸制御部35a〜第4軸制御部35dがマクロデータ75の自動実行をスタートさせるアドレスの番地は、制御ホスト10の制御プログラム11で任意に設定することができ、例えば第1軸制御部35a〜第4軸制御部35dを、第1RAM36a〜第4RAM36dに書き込まれたマクロデータ75について、アドレスの途中の任意の番地(例えば「1000」番地)の実行命令77から順番に自動実行させることも可能である。
また、第1軸制御部35a〜第4軸制御部35dにマクロデータ75の自動実行を行わせる場合、第1軸制御部35a〜第4軸制御部35dに、第1RAM36a〜第4RAM36dに書き込まれたマクロデータ75について、アドレスが互いに同じ番地の実行命令77から順番に自動実行させるだけでなく、互いに異なる番地の実行命令77から順番に自動実行させることも可能である。
更に、本実施形態では、ROM24に保持されているシートデータ76のマクロデータ75を第1RAM36a〜第4RAM36dに展開して書き込む際に、1枚のシートデータ76から第1RAM36a〜第4RAM36dにマクロデータ75を展開して書き込む場合について説明している。
しかし、本発明では、ROM24内のシートデータ76からマクロデータ75を第1RAM36a〜第4RAM36dに展開して書き込む場合、第1軸制御部35a〜第4軸制御部35dごとに、複数のシートデータ76の中から所要のマクロデータ75を選択して、対応する第1RAM36a〜第4RAM36dに書き込むこともできる。例えば、第1RAM36aには、第1シートのシートデータ76に収容されているX軸のマクロデータ75を書き込み、第2RAM36b〜第4RAM36dには、第2シートのシートデータ76に収容されている各軸のマクロデータ75を展開して書き込むことも可能である。
更にまた、本実施形態では、第1〜第4パルス駆動モータ38a〜38dに所要の動作を行わせるために、上述のようにROM24に保持されているマクロデータ75を第1RAM36a〜第4RAM36dに書き込んで自動実行する方法の他に、従来と同様に、制御ホスト10の制御プログラム11にてその動作を行わせるための複数の関数を実行してリクエスト信号71をコントローラユニット21に送り、そのリクエスト信号71をコントローラユニット21のCPU22で実行命令に変換して、実行命令を第1及び第2軸制御ロジック回路31,32に順次書き込む方法を採用することが可能である。
すなわち、本実施形態では、第1〜第4パルス駆動モータ38a〜38dに所要の動作を行わせる場合に、ROM24に保持されているマクロデータ75を、第1RAM36a〜第4RAM36dに書き込んで自動実行する方法と、制御ホスト10の制御プログラム11で複数の関数を順番に実行する方法とから選択することが可能である。
更にこの場合、制御ホスト10の制御プログラム11で複数の関数を順番に実行して第1〜第4軸制御部35a〜35dを制御することによって、第1〜第4パルス駆動モータ38a〜38dに所要の動作を行わせることが可能であり、また、複数の関数を実行して第1RAM36a〜第4RAM36dに複数の実行命令77を書き込んで保存してから、第1RAM36a〜第4RAM36dに保存した複数の実行命令77をRAMインターフェイス処理で順番に自動実行することによって、第1〜第4パルス駆動モータ38a〜38dに所定の動作を行わせることも可能である。また本実施形態では、RAM36a〜36dの実行命令77を自動実行中に、制御ホスト10の制御プログラム11によって、その後に続くRAM36a〜36dの実行命令77を書き込むことも可能である。
このように、本実施形態のモーションコントロールシステム1では、第1〜第4パルス駆動モータ38a〜38dに所要の動作を行わせる手段として、ROM24に保持するマクロデータ75と、制御ホスト10の制御プログラム11に持たせる関数とに互換性を持たせて、自由に選択することが可能となる。これにより、モーションコントロールシステム1の設計に大きな自由度を持たせることができ、それによって、ユーザーから要求される仕様に柔軟に対応することが可能となる。
以下に、上述した実施形態に係るモーションコントロールシステム1を用いて、第1スレーブ20のコントローラユニット21に接続されたX軸のパルス駆動モータ38aを、図7に示した所定の動作パターンで動作させる実施例を示す。更に、比較のために、図11に示したコントローラユニット81を有する従来のモーションコントロールシステムを用いて、X軸のパルス駆動モータを同様の動作パターンで動作させる比較例を示すことにより、本発明で得られる効果を明確に説明する。
ここで、図7に示したX軸のパルス駆動モータ38aの動作パターンについて説明すると、この動作パターンは、X軸のモータ38aに4回の台形駆動を実行させるものであり、先ず、第1パルス出力周期として500Hzで所定回数の第1パルス出力を行い、その後、1000Hzの速度でモータの台形駆動動作を開始し、5000Hzの最高速度まで100ms/kHzの割合で加速する。更に、モータを所定の位置まで最高速度で回転させた後、1000Hzの終了速度まで100ms/kHzの割合で減速することによって、1回分の台形駆動を終了させる。そして、このような台形状の駆動を4回連続して行った後に停止させる。
(実施例)
本実施例のモーションコントロールシステム1では、図2に示したコントローラユニット21のROM24に、X軸のパルス駆動モータ38aに図7に示した動作パターンを行わせるためのマクロデータ75が予め保持されている。ここで、X軸用のマクロデータ75の内容を図8に示す。
なお、図8のマクロデータ75はX軸の動作を行うものであり、その他のY軸、Z軸及びA軸についても、図示は省略するが所定の動作パターンを行わせるマクロデータ75がある。これらのX軸、Y軸、Z軸及びA軸の4軸分のマクロデータ75が1つのシートデータ76に収容されてROM24に保持されている。
X軸のマクロデータ75は、コマンドと第1及び第2データからなる実行命令77として、以下のような内容をもつ複数の実行命令77が、「0000」番地のアドレスから、「0010」番地のアドレスまで順番に書き込まれている。
具体的に説明すると、「0000」番地のアドレスには、第1パルスの出力周期を設定するための実行命令77が書き込まれており、「0001」番地のアドレスには、速度データの倍率と最高速度を設定するための実行命令77が書き込まれている。以下、「0002」番地〜「0010」番地の各アドレスには、開始速度と終了速度を設定するための実行命令77(アドレス「0002」)、直線加速割合と直線減速割合を設定するための実行命令77(アドレス「0003」)、指定した相対位置までパルス出力を実行する(言い換えると、1回の台形駆動を行う)ための4つの実行命令77(アドレス「0004」〜「0007」)、自動実行の終了を準備するための実行命令77(アドレス「0008」)、自動実行を終了するための実行命令77(アドレス「0009」)、及び、即時停止のための実行命令77(アドレス「0010」)が書き込まれている。
そして、本実施例のモーションコントロールシステム1において、実際に図7に示した動作パターンをパルス駆動モータ38に行わせる場合、図9に示した関数の内容が制御ホストの制御プログラムで実行される。具体的に説明すると、先ず、制御ホスト10において、(1)番目の関数として、ROM24から上述した所定のシートデータ76を読み出し、そのシートデータ76に収容されている各軸のマクロデータ75を第1RAM36a〜第4RAM36dに展開して書き込むように指示する関数を制御プログラム11で実行し、1回目のリクエスト信号71をデバイスドライバ12から送信する。送信されたリクエスト信号71は、シリアル通信インターフェイスユニット70を介して、第1スレーブ20〜第3スレーブ60の各ユニットに一斉に送られる。
次に、コントローラユニット21は、1回目のリクエスト信号71を通信制御部23で受信し、更に、その受信したリクエスト信号71をCPU22で解析する。更に、CPU22は、受信したリクエスト信号71の内容に従って、ROM24から所定のシートデータ76を読み出し、そのシートデータ76に収容されている4軸のマクロデータ75を、それぞれ対応する第1RAM36a〜第4RAM36dに展開して書き込む処理を行う。その後、コントローラユニット21は、マクロデータ75の書き込みが終了した内容のアンサーバック信号72を生成し、シリアル通信インターフェイスユニット70を介して制御ホスト10に送信する。
続いて、アンサーバック信号72を受信した制御ホスト10は、(2)番目の関数として、第1RAM36a〜第4RAM36dに書き込まれたマクロデータ75に従って、「0000」番地のアドレスから実行命令77を順番に自動実行するように指示する関数を制御プログラム11で実行し、2回目のリクエスト信号71をデバイスドライバ12から送信する。
2回目のリクエスト信号71を受信したコントローラユニット21のCPU22は、受信したリクエスト信号71を、コマンドと第1及び第2データとからなる実行命令に変換し、その変換した実行命令を第1及び第2軸制御ロジック回路31,32に送るとともに、制御ホスト10に対するアンサーバック信号72を生成して通信制御部23から送信する。
また、実行命令を受けた第1軸制御ロジック回路31では、第1命令解析部33でその実行命令77を解析するとともに、RAMインターフェイス機能によって、第1軸制御部35a及び第2軸制御部35bに、第1RAM36a及び第2RAM36bに書き込まれたマクロデータ75に従ってアドレス「0000」番地から順番に実行命令77を自動的に実行する処理を行わせる。
これによって、第1軸制御部35aは、第1RAM36aのマクロデータ75に従って指令パルスを所定の条件で出力するとともに、指令パルスのカウントを行うができ、それにより、X軸のパルス駆動モータ38aを、図7に示した台形状の動作パターンで駆動させることができる。
(比較例)
図11に示したコントローラユニット81を備える従来のモーションコントロールシステムにおいて、図7に示した動作パターンをX軸のパルス駆動モータに行わせる場合について、図10を参照しながら説明する。ここで、図10は、制御ホストの制御プログラムが実行する関数の内容を説明する図である。
先ず、制御ホストの制御プログラムで、(1)番目の第1パルスの出力周期を設定するための関数を実行し、1回目のリクエスト信号71をデバイスドライバから送信する。送信されたリクエスト信号71は、シリアル通信インターフェイスユニットを介して、第1スレーブ〜第3スレーブの各ユニットに一斉に送られる。
コントローラユニット81は、1回目のリクエスト信号71を通信制御部83で受信し、更に、その受信したリクエスト信号71をCPU82で解析する。更に、CPU82は、受信したリクエスト信号71をコマンドと第1及び第2データとからなる実行命令に変換し、その変換した実行命令を第1及び第2軸制御ロジック回路91,92に送って各軸制御部95a〜95dに書き込むとともに、制御ホストに対するアンサーバック信号72を生成して通信制御部83から送信する。
次に、アンサーバック信号72を受信した制御ホストは、(2)番目の速度データの倍率と最高速度を設定するための関数を制御プログラムで実行し、2回目のリクエスト信号71をデバイスドライバから送信する。また、コントローラユニット81は2回目のリクエスト信号71を受信し、その受信したリクエスト信号71を実行命令に変換して第1及び第2軸制御ロジック回路91,92の各軸制御部95a〜95dに書き込むとともに、アンサーバック信号72を生成して通信制御部83から送信する。
以下同じように、制御ホストは、アンサーバック信号72の受信をまって、(3)番目の開始速度と終了速度を設定するための関数、(4)番目の直線加速割合と直線減速割合を設定するための関数、(5)番目の指定した相対位置までパルス出力を実行して1回目の台形駆動を行うための関数、(6)番目の指定した相対位置までパルス出力を実行して2回目の台形駆動を行うための関数、(7)番目の指定した相対位置までパルス出力を実行して3回目の台形駆動を行うための関数、(8)番目の指定した相対位置までパルス出力を実行して4回目の台形駆動を行うための関数を制御プログラムで順番に実行するとともに、制御プログラムで関数を実行する毎にリクエスト信号71をコントローラユニット81に送信する。
また、コントローラユニット81では、リクエスト信号71を通信制御部83で受信する毎に、CPU82によるリクエスト信号71の解析、受信したリクエスト信号71から実行命令への変換、変換した実行命令の書き込み、受信したリクエスト信号71に対するアンサーバック信号72の送信といった処理が行われる。
すなわち、従来のモーションコントロールシステムで図7に示した動作パターンをX軸のパルス駆動モータに行わせるためには、制御ホストとコントローラユニット81間におけるリクエスト信号71及びアンサーバック信号72の送受信を合計8回行う必要があるとともに、コントローラユニット81内では、リクエスト信号71を受信するたびに、同じような内部処理を繰り返して行う必要がある。
以上のような実施例及び比較例を比べると、X軸のパルス駆動モータ38に、図7に示した同じ動作パターンを実行させる場合に、実施例に係るモーションコントロールシステム1では、比較例に係るモーションコントロールシステムに比べ、制御ホスト10とコントローラユニット21間の通信回数及び通信時間を減少させるとともに、制御ホスト10への負担を大幅に低減させることができる。更に、コントローラユニット21の第1軸制御部35aの動作を、RAMインターフェイス機能によってマクロデータ75に従って完結させることができるため、第1軸制御部35aによる指令パルスの発生を安定して円滑に行うことができる。
しかも、上述の実施例及び比較例では、図7に示した比較的シンプルな動作パターンをX軸のモータに実行させる場合について説明しているが、実際のモーションコントロールシステムでは、4軸全てに所要の動作パターンを実行させることから、1軸のみについて説明した上述の実施例の場合よりも上述した本発明の効果がより顕著に表れる。その上、例えば図7よりも複雑な動作パターンでモータを駆動させる場合には、上述した効果がより有効的に発揮される。