図15は、従来の位置決め制御装置の一例を示したブロック図である。図15において、従来の位置決め制御装置は、制御対象機器となるサーボモータ13と、サーボモータ13の位置および速度を検出するエンコーダ14と、サーボモータ13を駆動させるサーボアンプ11と、サーボアンプ11にサーボモータ13を駆動させるための駆動信号を送信するモーション制御部5と、予め定められたシーケンスプログラムに基づいてモーション制御部5に制御信号を送信するシーケンス制御部1と、から構成される。
また、シーケンス制御部1は、図16に示すようなシーケンスプログラムを格納するシーケンスプログラム部3と、そのシーケンスプログラム部3に格納されたシーケンスプログラムに基づいて起動信号等を生成する制御部2と、制御部2において生成された起動信号等をモーション制御部5に送信するインターフェース部4と、から構成される。なお、図16のシーケンスプログラムは、ユーザにより周辺機器であるキーボード等を介して入力設定されるプログラムの一例である。
また、モーション制御部5は、シーケンス制御部1(詳しくはインターフェース部4)から送信される起動信号等を受信するインターフェース部8と、図17に示すようなモーションプログラム(ここでは、サーボモータを駆動する際に工作機械等で一般に使用されるGコードとして示されている)を格納するモーションプログラム部9と、インターフェース部8において受信した起動信号およびモーションプログラム部9に格納されたモーションプログラムに基づいて駆動信号を生成する制御部6と、制御部6において生成された駆動信号をサーボアンプ11に送信するインターフェース部10と、から構成される。なお、図17のモーションプログラムは、ユーザにより周辺機器であるキーボード等を介して入力設定されるプログラムの一例である。
また、サーボアンプ11は、モーション制御部5(詳しくはインターフェース部10)から送信される駆動信号を受信するインターフェース部12を備え、インターフェース部12において受信した駆動信号と、エンコーダ14において検出された位置信号および速度信号と、からサーボモータ13を駆動する。
つぎに、この従来の位置決め制御装置の動作を説明する。まず、シーケンス制御部1において、制御部2は、シーケンスプログラムの格納されているシーケンスプログラム部3から図16に示すシーケンスプログラムを読み出す。ここで、制御部2は、読み出したシーケンスプログラムにおける運転条件が成立したかを判定し、運転条件が成立すると、実行すべきモーションプログラムの番号(ここでは、"No1")を示すプログラム番号信号と起動信号とを生成して、それら信号をインターフェース部4に送信する。インターフェース部4は、制御部2から送信されるプログラム番号信号と起動信号とを受信し、それら信号をモーション制御部5(詳しくはインターフェース部8)に送信する。
続くモーション制御部5における動作を図18および図19に示すフローチャートを参照しつつ説明する。まず、図18において、モーション制御部5の制御部6が、インターフェース部8において起動信号が受信されたかを判定する。特にインターフェース部8においては、起動信号のON/OFF状態を示す起動フラグが用意され、起動信号が受信された際にこの起動フラグをON状態にする。制御部6は、この起動フラグの状態がON状態であるかを判定する(ステップS1001)。ステップS1001において、起動フラグがON状態でないならば、図18のフローチャートにおける処理を終了する。
ステップS1001において、起動フラグがON状態であるならば、モーション制御部5において実行される処理(この場合、前回のシーケンスプログラムの指令に基づく処理)の動作状態を示す動作フラグがON状態を示しているかを判定する(ステップS1002)。ステップS1002において、動作フラグがON状態を示していない場合は、すなわち動作フラグがOFF状態を示している場合は、インターフェース部8において受信されたプログラム番号信号の示すプログラム番号を読み込み、そのプログラム番号の示すモーションプログラムをモーションプログラム部9から選択する(ステップS1003)。また、起動フラグをOFF状態におよび動作フラグをON状態に変更する(ステップS1004)。そして、ステップS1003において選択されたモーションプログラムに基づく処理(後述する)を行い(ステップS1005)、図18のフローチャートにおける処理を終了する。
ステップS1002において、動作フラグがON状態を示す場合は、エラー処理(ステップS1006)を行い、図18のフローチャートにおける処理を終了する。
つぎに、図18のステップS1005の処理について図19を参照しつつ説明する。ここでは、ステップS1003において読み込まれたモーションプログラム番号が"No1"を示し、図17に示すモーションプログラムの番号"No1"のモーションプログラムが実行されるものとする。まず、モーション制御部5の制御部6は、図17に示すモーションプログラムを以下のように解読する(ステップS1007)。
G01 POINT TO POINTの位置決め動作
X100. X軸を目標位置=100mmに位置決め
F1000. 送り速度=1000mm/min
制御部6によるモーションプログラムの解読後、特にX軸に対応したサーボアンプ11(詳しくは、インターフェース部12)に対して、目標位置=100mmに送り速度1000mm/minで位置決めを行う位置指令を示す駆動信号を送信する(ステップS1008)。サーボアンプ11は、インターフェース部12において駆動信号を受信すると、サーボモータ13を受信した駆動信号の示す速度で目標位置まで回転させる。また、エンコーダ14は、サーボモータ13の位置を検出しており、サーボモータ13が目標位置に達した際には、サーボモータ13の動作完了を示す動作完了信号を、サーボアンプ11のインターフェース部12を介してモーション制御部5に向けて送信する。モーション制御部5の制御部6は、この動作完了信号を受信したかを判定することで、サーボモータ13が目標位置に達したことを確認する(ステップS1009)。
ステップS1009において、サーボモータ13の動作の完了を検出した場合は、前述した動作フラグをOFF状態に変更し(ステップS1010)、図19のフローチャートにおける処理すなわちモーションプログラムの処理を終了する。また、ステップS1009において、サーボモータ13の動作の完了を検出しない場合は、モーションプログラムが動作中であることを示し、ステップS1009における動作完了確認を繰り返す。
以上に説明したように、この従来の位置決め制御装置によれば、シーケンスプログラムの示す運転条件の成立とともに、指定したモーションプログラムが実行され、そのモーションプログラムに基づいて、サーボモータの位置決めを達成している。
図20は、従来の位置決め制御装置の他の例を示したブロック図である。図20において、従来の位置決め制御装置は、制御対象機器となるサーボモータ13と、サーボモータ13の位置および速度を検出するエンコーダ14と、コンベア等の駆動軸(図示せず)に取り付けて速度を検出するエンコーダ23と、サーボモータ13を駆動させるサーボアンプ11と、サーボアンプ11にサーボモータ13を駆動させるための駆動信号を送信するモーション制御部5と、予め定められたシーケンスプログラムに基づいてモーション制御部5に制御信号を送信するシーケンス制御部1と、から構成される。
また、シーケンス制御部1は、図16に示すようなシーケンスプログラムを格納するシーケンスプログラム部3と、そのシーケンスプログラム部3に格納されたシーケンスプログラムに基づいて起動信号等を生成する制御部2と、制御部2において生成された起動信号等をモーション制御部5に送信するインターフェース部4と、から構成される。
また、モーション制御部5は、シーケンス制御部1(詳しくはインターフェース部4)から送信される起動信号等を受信するインターフェース部8と、図21に示すようなモーションプログラム(ここでは、サーボモータを駆動する際に工作機械等で一般に使用されるGコードで示されている)を格納するモーションプログラム部9と、インターフェース部8において受信した起動信号およびモーションプログラム部9に格納されたモーションプログラムに基づいて駆動信号を生成する制御部6と、制御部6において生成された駆動信号をサーボアンプ11に送信するインターフェース部10と、エンコーダ23によって検出された速度に基づくパルス数を入力するインターフェース部24と、インターフェース部24において受信したパルス数等を記憶するメモリ7と、から構成される。なお、図21のモーションプログラムは、ユーザにより周辺機器であるキーボード等を介して入力設定されるプログラムの一例である。
また、サーボアンプ11は、モーション制御部5(詳しくはインターフェース部10)から送信される駆動信号を受信するインターフェース部12を備え、インターフェース部12において受信した駆動信号と、エンコーダ14において検出された位置信号および速度信号と、からサーボモータ13を駆動する。
つぎに、この従来の位置決め制御装置の動作を説明する。まず、シーケンス制御部1において、制御部2は、シーケンスプログラムの格納されているシーケンスプログラム部3から図16に示すシーケンスプログラムを読み出す。ここで、制御部2は、読み出したシーケンスプログラムにおける運転条件が成立したかを判定し、運転条件が成立すると、実行すべきモーションプログラムの番号(ここでは、"No1")を示すプログラム番号信号と起動信号とを生成して、それら信号をインターフェース部4に送信する。インターフェース部4は、制御部2から送信されるプログラム番号信号と起動信号とを受信し、それら信号をモーション制御部5(詳しくはインターフェース部8)に送信する。
続くモーション制御部5における動作は、上述した図18および図19のフローチャートに示す処理と同様であるので、この部分の説明を省略する。ここでは、図21に示すモーションプログラムに基づく具体的な処理について図22を参照しつつ説明する。なお、図19のステップS1007において、モーション制御部5の制御部6は、図21に示すモーションプログラムを以下のように解読する。
G95 送り速度を主軸1回転当りに変更
X100. X軸を目標位置=100mmに位置決め
F10. 送り速度=10mm/rev
制御部6は、図21に示すモーションプログラムに基づいて、X軸に対応したサーボアンプ11(詳しくは、インターフェース部12)に対し、目標位置=100mmに送り速度10mm/revで位置決めを行う位置指令を示す駆動信号を送信する。サーボアンプ11は、インターフェース部12において駆動信号を受信すると、サーボモータ13を受信した駆動信号の示す速度で目標位置まで回転させる。
この回転動作が実行されている間に、モーション制御部5の制御部6は、エンコーダ23においてある一定時間において検出されたパルス数(以下、エンコーダ検出値と称する)をインターフェース部24から読み込む(ステップS1101)。このエンコーダ検出値は、コンベア等の駆動軸の回転速度を表す。つぎに、読み込んだエンコーダ検出値をメモリ7に今回値として書き込む(ステップS1102)。すなわち、今回値は、最新のエンコーダ検出値を示す。そして、今回値と前回に読み込まれたエンコーダ検出値(前回値)とを以下の式により減算することでΔPを算出する(ステップS1103)。
ΔP=今回値−前回値
ここで、ΔPは、検出された2つの回転速度(この場合、前回値と今回値)間の変化量すなわち加減速量を示しており、今回値と同様にメモリ7に書き込まれる。
続いて、ステップS1103において算出されたΔPと、予め定められた基準となる1回転パルス数(メモリ7に書き込まれている)と、モーションプログラムにおいて設定された送り速度F(ここでは、10mm/rev)と、を用いた以下の式により、ΔLを算出する(ステップS1104)。
ΔL=F×ΔP/1回転パルス数
ここで、ΔP/1回転パルス数は、一定時間当りの回転数の増減を示しており、これにサーボモータ13に設定された送り速度Fを乗算することで、エンコーダ23において検出される駆動軸の回転速度に追従するための回転速度増減分ΔLが得られる。
つぎに、ステップS1104において算出したΔLの示す信号をサーボアンプ指令値としてインターフェース部10に送信する。インターフェース部10は、受信したΔL信号をサーボアンプ11(詳しくはインターフェース部12)に送信し(ステップS1105)、サーボアンプ11は、このΔL信号に基づいて増減させた送り速度でサーボモータ13を駆動させる。これにより、コンベアの駆動軸等の異なる駆動系の動作速度と同期したサーボモータ13の回転駆動が達成される。
ステップS1105の処理後は、次回処理のために、今回値の示す値を前回値として設定する(ステップS1106)。なお、ΔP、今回値、前回値、モータ1回転パルス数は、図23に示すように、メモリ7に記憶される。
以上に説明したように、この従来の位置決め制御装置によれば、シーケンスプログラムの示す運転条件の成立とともに実行されるモーションプログラムに基づいたサーボモータの設定と、サーボモータの送り速度をコンベア等の駆動軸の回転速度(ここでは、パルス数)から算出されるサーボアンプ指令値に基づいて変化させることでサーボモータの同期動作、を達成している。
以下に、本発明に係る位置決め制御装置の実施の形態を図面に基づいて詳細に説明する。なお、この実施の形態により本発明が限定されるものではない。
実施の形態1.
図1は、実施の形態1に係る位置決め制御装置の概略構成を示したブロック図である。図1において、実施の形態1に係る位置決め制御装置は、制御対象機器となるサーボモータ13と、サーボモータ13の位置および速度を検出するエンコーダ14と、サーボモータ13を駆動させるサーボアンプ11と、サーボモータ13を駆動させるための駆動信号をサーボアンプ11に送信するモーション制御部5と、シーケンスプログラムに基づいてモーション制御部5に制御信号を送信するシーケンス制御部1と、から構成される。
また、シーケンス制御部1は、図2に示すようなシーケンスプログラムを格納するシーケンスプログラム部3と、シーケンスプログラム部3に格納されたシーケンスプログラムに基づいて起動信号等を生成する制御部2と、制御部2において生成された起動信号等をモーション制御部5に送信するインターフェース部4と、から構成される。なお、図2のシーケンスプログラムは、ユーザーにより周辺機器であるキーボード等(図示せず)を介して入力設定されるプログラムの一例である。
また、モーション制御部5は、シーケンス制御部1(詳しくはインターフェース部4)から送信される起動信号等を受信するインターフェース部8と、図3に示すようなモーションプログラムを格納するモーションプログラム部9と、インターフェース部8において受信した起動信号等とモーションプログラム部9に格納されたモーションプログラムとに基づいて駆動信号を生成する制御部6と、制御部6において利用されるデータを記憶するメモリ7と、制御部6において生成された駆動信号をサーボアンプ11に送信するインターフェース部10と、から構成される。なお、図3のモーションプログラムは、ユーザーにより周辺機器であるキーボード等(図示せず)を介して入力設定されるプログラムの一例である。
ここで、インターフェース部8は、シーケンス制御部1から送信される起動信号等を逐次的に記憶可能なメモリ(図示せず)を備えており、連続して送信されたシーケンスプログラムのそれぞれに対応する起動信号等を制御部6により読み込むことができる。
また、サーボアンプ11は、モーション制御部5(詳しくはインターフェース部10)から送信される駆動信号を受信するインターフェース部12を備え、インターフェース部12において受信した駆動信号と、エンコーダ14において検出された位置信号および速度信号と、からサーボモータ13を駆動する。
つぎに、この位置決め制御装置の動作を説明する。まず、シーケンス制御部1において、制御部2は、シーケンスプログラムの格納されているシーケンスプログラム部3から図2に示すシーケンスプログラムを読み出す。ここで、制御部2は、読み出したシーケンスプログラムに示される運転条件が成立したかを判定し、運転条件が成立すると、実行すべきモーションプログラムの番号(ここでは、"No1")を示すプログラム番号信号とモーションプログラムの起動を促す起動信号とを生成して、それら信号をインターフェース部4に送信する。インターフェース部4は、制御部2から送信されるプログラム番号信号と起動信号とを受信し、それら信号をモーション制御部5(詳しくはインターフェース部8)に送信する。
続くモーション制御部5における動作を図4および図5に示すフローチャートを参照しつつ説明する。まず、図4において、モーション制御部5の制御部6が、インターフェース部8において起動信号が受信されたかを判定する。特にインターフェース部8においては、起動信号のON/OFF状態を示す起動フラグが用意され、起動信号が受信された際にこの起動フラグをON状態にする。制御部6は、この起動フラグの状態がON状態であるかを判定する(ステップS101)。ステップS101において、起動フラグがON状態でない場合は、図4のフローチャートにおける処理を終了する。
ステップS101において、起動フラグがON状態である場合は、モーション制御部5において実行される処理(この場合、前回のシーケンスプログラムの指令に基づく処理)の動作状態を示す動作フラグがON状態を示しているかを判定する(ステップS102)。ステップS102において、動作フラグがON状態を示していない場合は、すなわち動作フラグがOFF状態を示している場合は、インターフェース部8において受信されたプログラム番号信号からプログラム番号を取得し、そのプログラム番号の示すモーションプログラムをモーションプログラム部9から指定する(ステップS103)。また、起動フラグをOFF状態に、および動作フラグをON状態に変更する(ステップS104)。そして、ステップS103において指定されたモーションプログラムに基づく処理(後述する)を行い(ステップS105)、図4のフローチャートにおける処理を終了する。
ステップS102において、動作フラグがON状態を示す場合は、エラー処理等を行わずに、図4のフローチャートにおける処理を終了する。
つぎに、図4のステップS105の処理について図5を参照しつつ説明する。ここでは、ステップS103において取得したモーションプログラム番号が"No1"を示し、かつ図3に示すモーションプログラムの番号"No1"のモーションプログラムが実行されるものとする。まず、モーション制御部5の制御部6は、起動フラグがOFF状態からON状態になった回数を示す起動カウント値を初期化する(ステップS201)。この起動カウント値は、モーションプログラムの動作中においてインターフェース部8が起動信号を受信した回数すなわち連続して動作されるモーションプログラムの数を意味する。
つぎに、制御部6は、図3に示すモーションプログラムを以下のように解読する(ステップS202)。
INC−1 POINT TO POINTの増分値指令位置決め動作
軸1,1000. 1軸を現在位置から+方向へ1000mmの位置に位置決め
速度 100. 送り速度=100mm/min
カウントMAX.1 最大起動カウント値=1
ここで、最大起動カウント値は、連続して動作されるモーションプログラムの最大の数を示し、上記した起動カウント値とともに、図6に示すように、メモリ7に記憶される(ステップS203)。これにより、モーションプログラム毎に最大カウント値を設定でき、モーションプログラムの示す制御内容に応じた最適なモーションプログラムの連続動作が可能になる。
ステップS203の処理後、特に軸1に対応したサーボアンプ11(詳しくは、インターフェース部12)に対して、軸1を現在位置から+方向へ1000mmの位置に送り速度100mm/minでの位置決めを行うことを示す駆動信号を送信する(ステップS204)。サーボアンプ11は、インターフェース部12において駆動信号を受信すると、サーボモータ13を受信した駆動信号の示す速度で目標位置まで回転させる。また、エンコーダ14は、サーボモータ13の位置を検出しており、サーボモータ13が目標位置に達した際には、サーボモータ13の動作完了を示す動作完了信号を、サーボアンプ11のインターフェース部12を介してモーション制御部5に向けて送信する。モーション制御部5の制御部6は、この動作完了信号を受信したかを判定することで、サーボモータ13が目標位置に達したことを確認する(ステップS205)。
ステップS205において、サーボモータ13の動作完了を検出した場合は、起動カウント値が0を示すかを判定する(ステップS206)。ステップS206において、起動カウント値が0を示す場合は、前述した動作フラグをOFF状態に変更し(ステップS207)、図5のフローチャートに示す処理すなわちモーションプログラムの処理を終了する。
ステップS206において、起動カウント値が0を示さない場合、すなわちモーションプログラムの動作中においてインターフェース部8が起動信号を受信していた場合は、起動カウント値に1だけ減算した結果を改めて起動カウント値としてメモリ7に書き込む。すなわち、ここで起動カウント値のデクリメント処理を行う(ステップS212)。
続いて、インターフェース部8に受信されて記憶されている最古のプログラム番号信号からプログラム番号を取得し、そのプログラム番号の示すモーションプログラムをモーションプログラム部9から指定する(ステップS213)。そして、ステップS202に処理を戻し、指定されたモーションプログラムの実行を開始する。
ステップS205において、サーボモータ13の動作完了を検出しない場合、すなわちモーションプログラムが動作中である場合は、起動フラグの状態がON状態であるかを判定する(ステップS208)。ステップS208において、起動フラグの状態がON状態を示す場合は、起動カウント値が最大起動カウント値以上の値を示すかを判定する(ステップS209)。この判定により、多数のモーションプログラムの長時間による連続的な動作を防止し、さらには、モーションプログラムの起動信号等を記憶するための記憶容量を無駄に使用することを防ぐことができる。
ステップS209において、起動カウント値が最大起動カウント値以上の値を示さない場合は、起動カウント値に1だけ加算した結果を改めて起動カウント値としてメモリ7に書き込む。すなわち、ここで起動カウント値のインクリメント処理を行う(ステップS210)。そして、起動フラグをOFF状態に変更する(ステップS211)。
ステップS211の処理後、ステップS208において起動フラグの状態がON状態を示さない場合、およびステップS209において起動カウント値が最大起動カウント値以上の値を示す場合は、モーションプログラムが動作中であることを示し、ステップS205における動作完了確認を繰り返す。
以上に説明したように、実施の形態1に係る位置決め制御装置によれば、シーケンスプログラムの示す運転条件の成立とともに、指定したモーションプログラムを実行し、そのモーションプログラムの動作中において新たなシーケンスプログラムの起動信号を受信した場合には、その受信回数を示す起動カウント値を加算していくので、モーションプログラムの完了後に起動カウント値を調べることにより、つぎに実行すべきモーションプログラムを迅速に間断無く動作させることができ、複数の連続的に実行されるモーションプログラムに基づいた円滑なサーボモータの位置決めが可能となる。
実施の形態2.
図7は、実施の形態2に係る位置決め制御装置の概略構成を示したブロック図である。図7において、実施の形態2に係る位置決め制御装置は、制御対象機器となるサーボモータ13と、サーボモータ13の位置および速度を検出するエンコーダ14と、サーボモータ13を駆動させるサーボアンプ11と、サーボモータ13を駆動させるための駆動信号をサーボアンプ11に送信するモーション制御部5と、シーケンスプログラムに基づいてモーション制御部5に制御信号を送信するシーケンス制御部1と、ユーザによって入力可能な信号入力部21と、から構成される。
また、シーケンス制御部1は、図2に示すようなシーケンスプログラムを格納するシーケンスプログラム部3と、シーケンスプログラム部3に格納されたシーケンスプログラムに基づいて起動信号等を生成する制御部2と、信号入力部21から入力される信号を受信して再起動信号を識別するインターフェース部20と、制御部2において生成された起動信号等とインターフェース部20において受信された再起動信号とをモーション制御部5に送信するインターフェース部4と、から構成される。
また、モーション制御部5は、シーケンス制御部1(詳しくはインターフェース部4)から送信される起動信号等と再起動信号とを受信するインターフェース部8と、図8に示すようなモーションプログラムを格納するモーションプログラム部9と、インターフェース部8において受信した起動信号等とモーションプログラム部9に格納されたモーションプログラムとに基づいて駆動信号を生成する制御部6と、制御部6において利用されるデータを記憶するメモリ7と、制御部6において生成された駆動信号をサーボアンプ11に送信するインターフェース部10と、から構成される。なお、図8のモーションプログラムは、ユーザにより周辺機器であるキーボード等(図示せず)を介して入力設定されるプログラムの一例である。
また、サーボアンプ11は、モーション制御部5(詳しくはインターフェース部10)から送信される駆動信号を受信するインターフェース部12を備え、インターフェース部12において受信した駆動信号と、エンコーダ14において検出された位置信号および速度信号と、からサーボモータ13を駆動する。
つぎに、この位置決め制御装置の動作を説明する。まず、シーケンス制御部1において、制御部2は、シーケンスプログラムの格納されているシーケンスプログラム部3から図2に示すシーケンスプログラムを読み出す。ここで、制御部2は、読み出したシーケンスプログラムに示される運転条件が成立したかを判定し、運転条件が成立すると、実行すべきモーションプログラムの番号(ここでは、"No1")を示すプログラム番号信号とモーションプログラムの起動を促す起動信号とを生成して、それら信号をインターフェース部4に送信する。インターフェース部4は、制御部2から送信されるプログラム番号信号と起動信号とを受信し、それら信号をモーション制御部5(詳しくはインターフェース部8)に送信する。
続くモーション制御部5における動作を図4および図9に示すフローチャートを参照しつつ説明する。図4に示すフローチャートは、実施の形態1において説明したためにここでは省略する。よって、図4のステップS105の処理すなわちモーションプログラムの処理について説明する。
ここでは、ステップS105において取得したモーションプログラム番号が"No1"を示し、かつ図8に示すモーションプログラムの番号"No1"のモーションプログラムが実行されるものとする。図9において、まず、モーション制御部5の制御部6は、信号入力部21からの再起動信号の有無を示す再起動信号情報を初期化する(ステップS301)。この再起動信号情報は、信号入力部21から再起動信号が発せられた際に、インターフェース部20、インターフェース部4およびインターフェース部8を介して、図10に示すようにメモリ7に記憶されるデータである。
つぎに、制御部6は、図8に示すモーションプログラムを以下のように解読する(ステップS302)。
INC−1 POINT TO POINTの増分値指令位置決め動作
軸1,1000. 1軸を現在位置から+方向へ1000mmの位置に位置決め
速度 100. 送り速度=100mm/min
再起動信号 X1 再起動信号として認識する信号=X1
ここで、再起動信号X1は、インターフェース部20が"X1"を示す信号を受信した際に、再起動信号として認識される信号であり、モーションプログラムが動作中であっても再起動信号情報をON状態に変更させることができる。
ステップS302の処理後、特に軸1に対応したサーボアンプ11(詳しくは、インターフェース部12)に対して、軸1を現在位置から+方向へ1000mmの位置に送り速度100mm/minでの位置決めを行うことを示す駆動信号を送信する(ステップS303)。サーボアンプ11は、インターフェース部12において駆動信号を受信すると、サーボモータ13を受信した駆動信号の示す速度で目標位置まで回転させる。また、エンコーダ14は、サーボモータ13の位置を検出しており、サーボモータ13が目標位置に達した際には、サーボモータ13の動作完了を示す動作完了信号を、サーボアンプ11のインターフェース部12を介してモーション制御部5に向けて送信する。モーション制御部5の制御部6は、この動作完了信号を受信したかを判定することで、サーボモータ13が目標位置に達したことを確認する(ステップS304)。
ステップS304において、サーボモータ13の動作完了を検出した場合は、再起動信号情報がON状態を示すかを判定する(ステップS305)。ステップS305において、再起動信号情報がON状態を示さない場合、すなわち再起動信号情報がOFF状態を示す場合は、前述した動作フラグをOFF状態に変更し(ステップS306)、図9のフローチャートに示す処理すなわちモーションプログラムの処理を終了する。
ステップS305において、再起動信号情報がON状態を示す場合、すなわちモーションプログラムの動作中または動作完了直後に信号入力部21から再起動信号が入力された場合は、直前に動作完了したモーションプログラムを再び動作させるようにステップS301に処理を戻す。また、ステップS304において、サーボモータ13の動作の完了を検出しない場合は、モーションプログラムが動作中であることを示し、ステップS304における動作完了確認を繰り返す。
以上に説明したように、実施の形態2に係る位置決め制御装置によれば、シーケンスプログラムの示す運転条件の成立とともに、指定したモーションプログラムを実行し、そのモーションプログラムの動作中において、信号入力部より再起動信号が発せられた場合は、動作中のモーションプログラムの終了後に、再び同じモーションプログラムを動作させることができるので、サーボモータに同じ動作を繰り返し行わせるのに、その回数分のシーケンスプログラムを用意することなく、信号入力部からの簡単な入力のみによって同じモーションプログラムを迅速に間断無く繰り返して動作させることができ、所望のスムーズなサーボモータの位置決めが可能となる。
また、モーション制御部5は、モーションプログラムの動作中であっても、再起動信号を受信して再起動信号情報をON状態に変更することが可能であるので、モーションプログラムの動作の完了を待たずに連続的な効率の良いモーションプログラムの再起動動作を実行することができ、さらに、モーションプログラムの動作の完了後に、再起動信号を受信して再起動信号情報をON状態に変更することもできるので、その場合は、所望のタイミングによってモーションプログラムの再起動動作が実行可能である。
実施の形態3.
図11は、実施の形態3に係る位置決め制御装置を示したブロック図である。図11において、この位置決め制御装置は、制御対象機器となるサーボモータ13と、サーボモータ13の位置および速度を検出するエンコーダ14と、コンベア等の駆動軸(図示せず)に取り付けて速度を検出するエンコーダ23と、サーボモータ13を駆動させるサーボアンプ11と、サーボアンプ11にサーボモータ13を駆動させるための駆動信号を送信するモーション制御部5と、予め定められたシーケンスプログラムに基づいてモーション制御部5に制御信号を送信するシーケンス制御部1と、から構成される。
また、シーケンス制御部1は、図2に示すようなシーケンスプログラムを格納するシーケンスプログラム部3と、そのシーケンスプログラム部3に格納されたシーケンスプログラムに基づいて起動信号等を生成する制御部2と、制御部2において生成された起動信号等をモーション制御部5に送信するインターフェース部4と、から構成される。
また、モーション制御部5は、シーケンス制御部1(詳しくはインターフェース部4)から送信される起動信号等を受信するインターフェース部8と、図12に示すようなモーションプログラムを格納するモーションプログラム部9と、インターフェース部8において受信した起動信号およびモーションプログラム部9に格納されたモーションプログラムに基づいて駆動信号を生成する制御部6と、制御部6において生成された駆動信号をサーボアンプ11に送信するインターフェース部10と、エンコーダ23によって検出された速度に基づくパルス数を入力するインターフェース部24と、インターフェース部24において受信したパルス数等を記憶するメモリ7と、から構成される。なお、図12のモーションプログラムは、ユーザにより周辺機器であるキーボード等を介して入力設定されるプログラムの一例である。
また、サーボアンプ11は、モーション制御部5(詳しくはインターフェース部10)から送信される駆動信号を受信するインターフェース部12を備え、インターフェース部12において受信した駆動信号と、エンコーダ14において検出された位置信号および速度信号と、からサーボモータ13を駆動する。
つぎに、この位置決め制御装置の動作を説明する。まず、シーケンス制御部1において、制御部2は、シーケンスプログラムの格納されているシーケンスプログラム部3から図2に示すシーケンスプログラムを読み出す。ここで、制御部2は、読み出したシーケンスプログラムにおける運転条件が成立したかを判定し、運転条件が成立すると、実行すべきモーションプログラムの番号(ここでは、"No1")を示すプログラム番号信号と起動信号とを生成して、それら信号をインターフェース部4に送信する。インターフェース部4は、制御部2から送信されるプログラム番号信号と起動信号とを受信し、それら信号をモーション制御部5(詳しくはインターフェース部8)に送信する。
続くモーション制御部5における動作は、上述した図4および図5のフローチャートに示す処理と同様であるので、この部分の説明を省略する。ここでは、図12に示すモーションプログラムに基づく具体的な処理について図13を参照しつつ説明する。なお、図5のステップS202において、モーション制御部5の制御部6は、図12に示すモーションプログラムを以下のように解読する。
INC−1 POINT TO POINTの増分値指令位置決め動作
軸1,1000. 軸1を現在位置から+方向へ1000mmの位置に位置決め
速度 100. 送り速度=100mm/rev
V1 2000 判定速度パルスV1=2000
E1 2000 V1における最適変位パルス=2000
V2 300 判定速度パルスV2=300
E2 6000 V2における最適変位パルス=6000
なお、図12に示すモーションプログラムにおいて、V1、E1、V2、E2は、図14に示すようにメモリ7に記憶される。このように、これらの値を使用することにより算出する判定カウント値(後述する)が、モーションプログラムにおいて指定されるので、モーションプログラム毎に判定カウント値を設定でき、モーションプログラムの示す制御内容に応じた制御対象機器の最適な同期動作が可能になる。
制御部6は、図12に示すモーションプログラムに基づいて、特に軸1に対応したサーボアンプ11(詳しくは、インターフェース部12)に対して、軸1を現在位置から+方向へ1000mmの位置に送り速度100mm/revでの位置決めを行うことを示す駆動信号を送信する。サーボアンプ11は、インターフェース部12において駆動信号を受信すると、サーボモータ13を受信した駆動信号の示す速度で目標位置まで回転させる。
この回転動作が実行されている間に、モーション制御部5の制御部6は、エンコーダ23において、ある一定時間に検出されたパルス数(以下、エンコーダ検出値と称する)をインターフェース部24から読み込む(ステップS401)。このエンコーダ検出値は、コンベア等の駆動軸(以下、コンベア駆動軸と称する)の回転速度を表す。なお、このエンコーダ検出値を検出するためにパルス数を計測した時間(上記した一定時間)は、例えば数ミリ秒といった十分短い時間である。
つぎに、読み込んだエンコーダ検出値を、図14に示すように、メモリ7に今回値として書き込む(ステップS402)。すなわち、今回値は、最新のエンコーダ検出値を示す。そして、今回値と前回に読み込まれたエンコーダ検出値(前回値)とを以下の式により減算することでΔPを算出する(ステップS403)。
ΔP=今回値−前回値
ここで、ΔPは、検出された2つの回転速度(この場合、前回値と今回値)間の変化量すなわち加速量を示しており、今回値と同様にメモリ7に書き込まれる。ステップS403の処理後は、次回処理のために、今回値の示す値を前回値として設定する(ステップS404)。
つぎに、あるタイミングから現在において、コンベア駆動軸の加減速増減分に相当するパルス数の累積値を示す変位カウント値を求める(ステップS405)。すなわち、変位カウント値は、ステップS403において算出したΔPの累積値を示し、前回の変位カウント値にΔPを加算していくことで算出される。
そして、ステップS402において設定された今回値を、ステップS401においてパルス数を計測した一定時間(計測時間)で除算することで、以下の式に示すように、コンベア駆動軸の現在の回転速度Vを算出する(ステップS406)。
V=今回値/演算周期
続いて、ステップS406において算出されたVと、メモリ7に記憶されたV1、E1、V2、E2と、を用いて、以下の式に示すように、判定カウント値を算出する。
判定カウント値=(V−V1)×( E2−E1)/(V2−V1)+E1
ここで、判定カウント値は、コンベア駆動軸の現在の回転速度V毎に定まる値であり、この判定カウント値に依存して、サーボモータ13に送り速度の増減を示す駆動信号を送信するタイミングが決定する。
続いて、ステップS405において算出された変位カウント値が、ステップS407において算出された判定カウント値より大きな値を示すかを判定する(ステップS408)。ステップS408において、変位カウント値が、判定カウント値より大きな値を示さない場合は、サーボモータ13の同期動作のための駆動信号を送信せずに、このフローチャートの処理を終了する。
ステップS408において、変位カウント値が、判定カウント値より大きな値を示す場合は、ステップS403において算出されたΔPと、予め定められた基準となる1回転パルス数(メモリ7に書き込まれている)と、モーションプログラムにおいて設定された送り速度F(ここでは、100mm/rev)と、を用いた以下の式により、ΔLを算出する(ステップS409)。
ΔL=F×ΔP/1回転パルス数
ここで、ΔP/1回転パルス数は、一定時間当りのコンベア駆動軸の回転数の増減を示しており、これにサーボモータ13に設定された送り速度Fを乗算することで、エンコーダ23において検出されるコンベア駆動軸の回転速度に追従するための回転速度増減分ΔLが得られる。
つぎに、ステップS409において算出したΔLの示す信号をサーボアンプ指令値としてインターフェース部10に送信する。インターフェース部10は、受信したΔL信号をサーボアンプ11(詳しくはインターフェース部12)に送信し(ステップS410)、サーボアンプ11は、このΔL信号に基づいて増減させた送り速度でサーボモータ13を駆動させる。これにより、コンベア駆動軸等の異なる駆動系の動作速度と同期したサーボモータ13の回転駆動が達成される。
ステップS410の処理後は、次回の駆動信号送信の判定(ステップS408の処理に相当)のために、変位カウント値を初期化して(ステップS411)、このフローチャートの処理を終了する。
以上に説明したように、実施の形態3に係る位置決め制御装置によれば、シーケンスプログラムの示す運転条件の成立とともに実行されるモーションプログラムに基づいたサーボモータの動作において、コンベア等の駆動軸の速度に応じた判定カウント値を定め、この判定カウント値とコンベア等の駆動軸の回転速度に相当するパルスの増減累積値とを比較することにより、サーボモータの送り速度を、その際のコンベア等の駆動軸の回転速度から算出されるサーボアンプ指令値に基づいて変化させることでサーボモータの同期動作を達成している。
特に、実施の形態3に係る位置決め制御装置においては、コンベア等の駆動軸の変位量に相当する変位カウント値に依存して、サーボモータへの速度指令を行っているので、例えば、コンベア等の駆動軸の回転速度が急激に増加した場合には、より短周期でサーボモータの速度追従動作が行われるといった、コンベア等の駆動軸の回転速度の変化によって生じる同期ずれのバラツキが防止される。