以下、図面を参照しつつ、本発明に従う各実施の形態について説明する。以下の説明では、同一の部品および構成要素には同一の符号を付してある。それらの名称および機能も同じである。したがって、これらについての詳細な説明は繰り返さない。なお、以下で説明される各実施の形態および各変形例は、適宜選択的に組み合わされてもよい。
<A.工作機械100の構成>
図1を参照して、工作機械100の構成について説明する。図1は、工作機械100の一例を示す図である。
図1には、マシニングセンタとしての工作機械100が示されている。以下では、マシニングセンタとしての工作機械100について説明するが、工作機械100は、マシニングセンタに限定されない。たとえば、工作機械100は、旋盤であってもよいし、その他の切削機械や研削機械であってもよい。また、工作機械100は、工具が鉛直方向に取り付けられる横形のマシニングセンタであってもよいし、工具が水平方向に取り付けられる立形のマシニングセンタであってもよい。
図1に示されるように、工作機械100は、主軸頭21を有する。主軸頭21は、主軸22と、ハウジング23とで構成されている。主軸22は、ハウジング23の内部に配置されている。主軸22には、被加工物であるワークを加工するための工具が装着される。図1の例では、エンドミルとしての工具32が主軸22に装着されている。
主軸頭21は、ボールねじ25に沿ってZ軸方向に駆動可能に構成されている。ボールねじ25にはサーボモータなどの駆動機構が接続されている。当該駆動機構は、ボールねじ25を駆動することで主軸頭21を移動させ、Z軸方向の任意の位置に主軸頭21を移動する。
また、主軸22にはサーボモータなどの駆動機構が接続される。当該駆動機構は、Z軸方向(鉛直方向)に平行な中心軸AX1を中心に主軸22を回転駆動する。その結果、主軸22に装着された工具32は、主軸22の回転と連動して中心軸AX1を中心に回転する。なお、工作機械100が旋盤である場合には、主軸22には、ワークが装着される。この場合、主軸22の回転に伴って、主軸22に装着されたワークが回転する。
工作機械100は、自動工具交換装置(ATC:Automatic Tool Changer)30をさらに有する。自動工具交換装置30は、マガジン31と、押出し機構33と、アーム36とで構成されている。マガジン31は、ワークを加工するための種々の工具32を収容するための装置である。マガジン31は、複数の工具保持部34と、スプロケット35とで構成されている。
工具保持部34は、種々の工具32を保持可能なように構成されている。複数の工具保持部34は、スプロケット35の周囲に環状に配列されている。スプロケット35は、モータ駆動により、X軸に平行な中心軸AX2を中心に回転可能に設けられている。スプロケット35の回転に伴って、複数の工具保持部34が中心軸AX2を中心に回転移動する。
自動工具交換装置30は、工具の交換命令を受けたことに基づいて、マガジン31から装着対象の工具32を抜き取り、当該工具32を主軸22に装着する。より具体的には、自動工具交換装置30は、目的の工具32を保持する工具保持部34を押出し機構33の前に移動する。次に、押出し機構33は、アーム36による交換位置に向けて目的の工具32を押し出す。その後、アーム36は、目的の工具32を工具保持部34から抜き取るとともに、現在装着されている工具32を主軸22から抜き取る。その後、アーム36は、これらの工具32を保持した状態で半回転し、目的の工具32を主軸22に装着するとともに、元の工具32を工具保持部34に収容する。これにより、工具32の交換が行われる。
工作機械100は、加工対象のワークをXY平面上で移動するための移動機構50をさらに有する。移動機構50は、ガイド51,53と、ボールねじ52,54と、ワークを保持するためのテーブル55(移動体)とで構成されている。
ガイド51は、Y軸に対して平行に設置されている。ガイド53は、ガイド51上に設けられており、X軸に対して平行に設置されている。ガイド53は、ガイド51に沿って駆動可能に構成されている。テーブル55は、ガイド53上に設けられており、ガイド53に沿って駆動可能に構成されている。
ボールねじ52にはサーボモータなどの駆動機構が接続されている。当該駆動機構は、ボールねじ52を駆動することでガイド53をガイド51に沿って移動し、Y軸方向の任意の位置にガイド53を移動する。同様に、ボールねじ54にもサーボモータなどの駆動機構が接続されている。当該駆動機構は、ボールねじ54を駆動することでテーブル55をガイド53に沿って移動し、X軸方向の任意の位置にテーブル55を移動する。すなわち、工作機械100は、ボールねじ52,54のそれぞれに接続される駆動機構を協働して制御することで、XY平面上の任意の位置にテーブル55を移動する。これにより、工作機械100は、テーブル55上で保持されるワークをXY平面上で移動させながら加工を行うことができる。
<B.ボールねじの制御処理>
図2~図4を参照して、上述のボールねじ54(図1参照)の制御処理について説明する。図2は、ボールねじ54に対するテーブル55の位置と、テーブル55の上限速度との関係を説明するための図である。
図2に示されるように、ボールねじ54は、ねじ軸54Aと、ねじ軸54Aに螺合するナット54Bとを含む。ねじ軸54Aとナット54Bとの間には、複数のボール(図示しない)がねじ軸54Aの溝に沿って設けられている。
また、ボールねじ54には、サーボモータ112Aが接続されている。サーボモータ112Aがボールねじ54のねじ軸54Aを回転運動することにより、ナット54Bとねじ軸54Aとの間のボールが転動し、ナット54Bは、ねじ軸54Aに沿って直線的にスライドする。このように、ボールねじ54は、サーボモータ112Aによる回転運動を直線運動に変える。ボールねじ54のナット54Bには、テーブル55が接続されている。
工作機械100は、予め準備された加工プログラムに従ってボールねじ54を制御することでX方向の任意の位置にワークWを移動し、ボールねじ52を制御することでY方向の任意の位置にワークWを移動する。これにより、工作機械100は、XY平面上の任意の位置にワークWを移動させながらワークWを加工することができる。
テーブル55の送り速度が上限速度(以下、「危険速度」ともいう。)を超えると、ボールねじ54が振動する縄跳び現象が発生する。縄跳び現象が発生すると、ボールねじ54が破損する可能性がある。
危険速度は、ボールねじ54に対するテーブル55の位置に応じて異なる。典型的には、テーブル55がねじ軸54Aの端部に近付くほど、危険速度は下がる。この理由は、ナット54Bがねじ軸54Aの一端に近付くほど、ナット54Bとねじ軸54Aの他端との間の距離が長くなり、ねじ軸54Aのたわみが大きくなるためである。
テーブル55の送り速度が危険速度を超えないように、速度規定124が予め定められている。速度規定124は、ボールねじ54に対するテーブル55の位置(以下、「テーブル位置」ともいう。)と危険速度との関係を規定している。ここでいう「テーブル位置」とは、テーブル55内の所定位置(たとえば、テーブル55の中心位置)を指す。
より具体的には、X方向におけるテーブル55の移動区間を、ボールねじ54の中心位置CEを含む区間124A(第1区間)と、区間124A以外の区間124B(第2区間)とに区分した場合、区間124B内の各テーブル位置についての上限速度は、中心位置CEから離れるほど小さくなるように規定される。異なる言い方をすれば、区間124B内の各テーブル位置についての上限速度は、ボールねじ54の端部に近付くほど小さくなるように規定される。区間124A内の各テーブル位置の上限速度は、一定であり、かつ、区間124B内の上限速度よりも大きい。中心位置CEは、X方向におけるねじ軸54Aの中心に相当する。
速度規定124は、たとえば、工作機械100内の記憶装置に格納されている。速度規定124のデータ構造は、任意である。ある局面において、速度規定124は、テーブル位置を説明変数とし、テーブル55の危険速度を目的変数とする算出式で規定される。他の局面において、速度規定124は、テーブル55の危険速度をテーブル位置ごとに対応付けたテーブル形式で規定される。
工作機械100は、速度規定124に基づいて、テーブル55の送り速度が危険速度を超えないようにテーブル55の送り速度を制御する。このとき、工作機械100は、テーブル55の送り速度が移動先において危険速度を超えるか否かを当該移動先への移動開始前に判断する。より具体的には、工作機械100は、ボールねじ54の制御プログラムに基づいて、テーブル55の移動先である目標位置と、テーブル55の現在の送り速度とを特定する。次に、工作機械100は、速度規定124に基づいて、目標位置での上限速度を特定し、現在の送り速度が目標位置での上限速度よりも大きいか否かを判断する。工作機械100は、現在の送り速度が目標位置での上限速度よりも大きいと判断した場合、縄跳び現象を抑制するための予め定められた処理を実行する。これにより、工作機械100は、テーブル55の送り速度が移動先において危険速度を超えるか否かを予め判断でき、ワークWの加工前に何らかの処置を取ることができる。
縄跳び現象を抑制するための処理として、工作機械100は、テーブル55の駆動制御を停止する。あるいは、工作機械100は、テーブル55の移動先での危険速度を下回るようにテーブル55の送り速度を制限する。あるいは、工作機械100は、テーブル55の駆動制御を継続するか否かについて選択を受け付ける選択画面を表示する。
図3および図4を参照して、テーブル55の送り速度と移動先での危険速度との比較処理の具体例について説明する。図3は、テーブル55の送り速度が移動先において危険速度を超えない場合の例を示す図である。図4は、テーブル55の送り速度が移動先において危険速度を超える場合の例を示す図である。
テーブル55は、たとえば、現在位置p1から目標位置ptに移動すると仮定する。この場合、工作機械100は、速度規定124に基づいて、目標位置ptでの危険速度Fthを特定する。その後、工作機械100は、現在の送り速度Fが目標位置ptでの危険速度Fthよりも大きい場合に、縄跳び現象を抑制するための予め定められた処理を実行する。図3の例では、現在の送り速度Fが目標位置ptでの危険速度Fthよりも小さいので、工作機械100は、縄跳び現象を抑制するための処理を実行しない。図4の例では、現在の送り速度Fが目標位置ptでの危険速度Fthよりも大きいので、工作機械100は、縄跳び現象を抑制するための処理を実行する。
なお、上述では、テーブル55の送り速度が危険速度を超えるか否かについて説明を行ったが、危険速度を超えるか否かを判断する対象は、テーブル55に限定されない。ボールねじによって駆動される種々の「移動体」が危険速度を超えるか否かを判断する対象になり得る。一例として、当該移動体は、テーブル55であってもよいし、ナット54Bであってもよいし、ワークWであってもよい。
また、上述では、テーブル55の移動先で送り速度が危険速度を超えるか否かをX方向において判断する例について説明を行ったが、この判断処理は、他の移動方向(たとえば、Y方向やZ方向)について行われてもよいし、複数の移動方向について行われてもよい。一例として、当該判断処理がX方向とY方向とについて行われる場合、工作機械100は、X方向にテーブル55を駆動するボールねじ54と、Y方向にテーブル55を駆動するボールねじ52とのそれぞれについて、テーブル55の送り速度が移動先において危険速度を超えるか否かを予め判断する。この場合、速度規定124は、テーブル55の移動方向ごとに準備される。
<C.PLCとCNCとの協働関係>
工作機械100は、たとえば、PLCと、CNCとで構成される。テーブル55の送り速度が移動先で危険速度を超えるか否かについて判断する処理は、PLCおよびCNCが協働することにより実現される。
図5は、PLC200およびCNC300の協働関係を概略的に示す概念図である。図5に示されるように、工作機械100は、PLC200と、CNC300とを含む。
PLC200およびCNC300は、フィールドネットワークによって接続されている。フィールドネットワークには、データの到達時間が保証される、定周期通信を行うネットワークを採用することが好ましい。このような定周期通信を行うネットワークとしては、当該フィールドネットワークには、たとえば、CC-Link(登録商標)、EtherCAT(登録商標)、EtherNet/IP(登録商標)、CompoNet(登録商標)などが知られている。
当該フィールドネットワークには、フレーム60が伝送される。フレーム60は、フィールドネットワーク上を予め定められた制御周期ΔTごとに周回する。PLC200およびCNC300は、フレーム60を介して各種データを共有する。
フレーム60は、たとえば、PLC用のデータ領域61Aと、CNC用のデータ領域61Bとを含む。PLC用のデータ領域61Aは、PLC200が各種データを書き込む領域である。PLC200によってデータ領域61Aに書き込まれた各種データは、CNC300によって参照される。CNC用のデータ領域61Bは、CNC300が各種データを書き込む領域である。CNC300によってデータ領域61Bに書き込まれた各種データは、PLC200によって参照される。
PLC200は、予め設計された監視プログラム222に従って、サーボモータ112A(図2参照)などの各種の駆動機器を制御し、テーブル55の送り速度が危険速度を超えないようにテーブル55の送り速度を監視する。監視プログラム222は、たとえば、ラダープログラムなどのサイクリック実行型のプログラムで記述されている。
CNC300は、予め設計された加工プログラム322に従って、サーボモータ112A(図2参照)などの各種の駆動機器を制御し、ワークWを加工する。加工プログラム322は、たとえば、NC(Numerical Control)プログラムなどの逐次実行型のプログラムで記述されている。
加工プログラム322は、PLC200と共有すべき各種データをフレーム60のデータ領域61Bに書き込む。一例として、データ領域61Bに書き込まれるデータは、ワークWの加工に関する各種データであり、テーブル55の現在位置、テーブル55の移動先までの残り移動量、テーブル55の現在の送り速度などを含む。
PLC200は、フレーム60のデータ領域61Bを参照して、テーブル55の移動先や送り速度などの情報を取得し、当該送り速度が当該移動先で危険速度を超えるか否かを判断する。PLC200は、当該送り速度が当該移動先で危険速度を超えると判断した場合、縄跳び現象を抑制するための予め定められた処理を実行する。
なお、監視プログラム222および加工プログラム322は、工作機械100の「制御プログラム」の一例であり、監視プログラム222および加工プログラム322の実装態様は、特に限定されない。たとえば、監視プログラム222および加工プログラム322は、同一のプログラミング言語で一体的に実装されてもよい。また、監視プログラム222は、必ずしもラダープログラムで記述される必要はなく、加工プログラムは、必ずしもNCプログラムで記述される必要はない。監視プログラム222および加工プログラム322は、たとえば、命令リスト(IL:Instruction List)、構造化テキスト(ST:Structured Text)、および、シーケンシャルファンクションチャート(SFC:Sequential Function Chart)のいずれか、あるいは、これらの組み合わせで記述されてもよい。あるいは、当該制御プログラムは、JavaScript(登録商標)やC言語のような汎用的なプログラミング言語で記述されてもよい。
<D.PLC200のハードウェア構成>
図6を参照して、PLC200のハードウェア構成の一例について説明する。図6は、PLC200の主要なハードウェア構成を示すブロック図である。
PLC200は、制御装置201と、ROM(Read Only Memory)202と、RAM(Random Access Memory)203と、通信インターフェイス204と、フィールドバスコントローラ206と、記憶装置220とを含む。
制御装置201は、少なくとも1つの集積回路によって構成される。集積回路は、たとえば、少なくとも1つのCPU(Central Processing Unit)、少なくとも1つのMPU(Micro Processing Unit)、少なくとも1つのASIC(Application Specific Integrated Circuit)、少なくとも1つのFPGA(Field Programmable Gate Array)またはそれらの組み合わせなどによって構成される。
制御装置201は、監視プログラム222など各種プログラムを実行することでCNC300の動作を制御する。制御装置201は、監視プログラム222の実行命令を受け付けたことに基づいて、記憶装置220からROM202に監視プログラム222を読み出す。RAM203は、ワーキングメモリとして機能し、監視プログラム222の実行に必要な各種データを一時的に格納する。
通信インターフェイス204は、CNC300との通信を実現するためのインターフェイスである。PLC200は、通信インターフェイス204を介してCNC300との間でデータをやり取りする。
フィールドバスコントローラ206は、PLC200とフィールドバスを通じて連結される各種の駆動機器とデータを遣り取りするインターフェイスである。このようなデバイスの一例として、サーボドライバ111A~111D(図7参照)などが接続される。
記憶装置220は、たとえば、ハードディスクやフラッシュメモリなどの記憶媒体である。記憶装置220は、監視プログラム222などを格納する。監視プログラム222の格納場所は、記憶装置220に限定されず、制御装置201の記憶領域(たとえば、キャッシュ領域など)、ROM202、RAM203、外部機器(たとえば、サーバー)などに格納されていてもよい。
監視プログラム222は、単体のプログラムとしてではなく、任意のプログラムの一部に組み込まれて提供されてもよい。この場合、本実施の形態に従う制御処理は、任意のプログラムと協働して実現される。このような一部のモジュールを含まないプログラムであっても、本実施の形態に従う監視プログラム222の趣旨を逸脱するものではない。さらに、監視プログラム222によって提供される機能の一部または全部は、専用のハードウェアによって実現されてもよい。さらに、少なくとも1つのサーバーが監視プログラム222の処理の一部を実行する所謂クラウドサービスのような形態でPLC200が構成されてもよい。
<E.CNC300のハードウェア構成>
図7を参照して、CNC300のハードウェア構成の一例について説明する。図7は、CNC300の主要なハードウェア構成を示すブロック図である。
CNC300は、制御装置301と、ROM302と、RAM303と、通信インターフェイス304と、表示インターフェイス305と、入力インターフェイス309と、記憶装置320とを含む。これらの機器は、バス(図示しない)を介して接続されている。
制御装置301は、少なくとも1つの集積回路によって構成される。集積回路は、たとえば、少なくとも1つのCPU、少なくとも1つのMPU、少なくとも1つのASIC、少なくとも1つのFPGA、またはそれらの組み合わせなどによって構成される。
制御装置301は、加工プログラム322など各種プログラムを実行することでCNC300の動作を制御する。制御装置301は、加工プログラム322の実行命令を受け付けたことに基づいて、記憶装置320からROM302に加工プログラム322を読み出す。RAM303は、ワーキングメモリとして機能し、加工プログラム322の実行に必要な各種データを一時的に格納する。
通信インターフェイス304は、CNC300との通信を実現するためのインターフェイスである。CNC300は、通信インターフェイス304を介してCNC300との間でデータをやり取りする。
表示インターフェイス305は、ディスプレイ330などの表示機器と接続され、制御装置301などからの指令に従ってディスプレイ330に対して画像を表示するための画像信号を送出する。ディスプレイ330は、たとえば、液晶ディスプレイ、有機ELディスプレイ、またはその他の表示機器である。
入力インターフェイス309は、入力デバイス331に接続され得る。入力デバイス331は、たとえば、マウス、キーボード、タッチパネル、またはユーザ操作を受け付けることが可能なその他の入力機器である。
CNC300は、加工プログラム322に従ってサーボドライバ111Aを制御する。サーボドライバ111Aは、制御装置301から目標回転数(または目標位置)の入力を逐次的に受け、サーボモータ112Aが目標回転数で回転するようにサーボモータ112Aを制御する。より具体的には、サーボドライバ111Aは、エンコーダ113Aのフィードバック信号からサーボモータ112Aの実回転数(または実位置)を算出し、当該実回転数が目標回転数よりも小さい場合にはサーボモータ112Aの回転数を上げ、当該実回転数が目標回転数よりも大きい場合にはサーボモータ112Aの回転数を下げる。このように、サーボドライバ111Aは、サーボモータ112Aの回転数のフィードバックを逐次的に受けながらサーボモータ112Aの回転数を目標回転数に近付ける。サーボドライバ111Aは、ボールねじ54に接続されるテーブル55(図1参照)をX軸方向に沿って移動し、テーブル55をX軸方向の任意の位置に移動する。
同様のモータ制御により、サーボドライバ111Bは、ボールねじ52に接続されるガイド53(図1参照)をY軸方向に沿って移動し、ガイド53上のテーブル55(図1参照)をY軸方向の任意の位置に移動する。同様のモータ制御を行うことにより、サーボドライバ111Cは、ボールねじ25に接続される主軸頭21(図1参照)をZ軸方向の任意の位置に移動する。同様のモータ制御を行うことにより、サーボドライバ111Dは、主軸22の回転速度を制御する。
記憶装置320は、たとえば、ハードディスクやフラッシュメモリなどの記憶媒体である。記憶装置320は、加工プログラム322や変数情報324などを格納する。変数情報324は、加工プログラム322で参照されるデータである。変数情報324は、テーブル55などの制御対象の現在位置を示す変数、当該制御対象の移動先までの残りの移動量を示す変数、当該制御対象の目標位置を示す変数など各種変数を含む。加工プログラム322および変数情報324の格納場所は、記憶装置320に限定されず、制御装置301の記憶領域(たとえば、キャッシュ領域など)、ROM302、RAM303、外部機器(たとえば、サーバー)などに格納されていてもよい。
加工プログラム322は、単体のプログラムとしてではなく、任意のプログラムの一部に組み込まれて提供されてもよい。この場合、本実施の形態に従う制御処理は、任意のプログラムと協働して実現される。このような一部のモジュールを含まないプログラムであっても、本実施の形態に従う加工プログラム322の趣旨を逸脱するものではない。さらに、加工プログラム322によって提供される機能の一部または全部は、専用のハードウェアによって実現されてもよい。さらに、少なくとも1つのサーバーが加工プログラム322の処理の一部を実行する所謂クラウドサービスのような形態でCNC300が構成されてもよい。
<F.制御フロー>
工作機械100は、早送りでテーブル55を駆動しているか、切削送りでテーブル55を駆動しているかに応じて、テーブル55の送り速度の監視方法を変える。
「早送り」とは、予め定められた最大速度でテーブル55を駆動する制御を意味する。すなわち、テーブル55の早送り時には、工作機械100は、テーブル55の送り速度を指定することができない。典型的には、加工プログラム322において「G00」のGコードが実行された場合に、テーブル55は、早送りで駆動される。早送り速度は、工作機械100ごとに設定される。
「切削送り」とは、指定された送り速度でテーブル55を駆動する制御を意味する。典型的には、切削送り時におけるテーブル55の送り速度は、早送り時におけるテーブル55の送り速度よりも遅い。切削送りの速度は、加工プログラム322上で指定される。一例として、加工プログラム322において「G01」~「G03」のGコードが実行された場合に、テーブル55は、切削送りで駆動される。
切削送り時においては、工作機械100は、加工プログラム322の動作モードに応じてテーブル55の送り速度の監視方法をさらに変える。一例として、工作機械100の動作モードは、加工プログラム322をデバッグするデバッグモードと、加工プログラム322に従って実際に加工を行う通常実行モードとを有する。デバッグモードは、制御対象を駆動せずに加工プログラム322を実行する段取りモードと、ユーザ操作に応じて1ブロックずつ加工プログラム322を実行するシングルブロックモードと、指定されたブロックで加工プログラム322の実行を停止することが可能なプログラムチェックモードとを含む。
このように、工作機械100は、早送り時であるか、デバッグモードの切削送り時であるか、通常実行モードの切削送り時であるかに応じて、テーブル55の送り速度の監視方法を変える。以下では、早送り時に実行される速度監視処理を「速度監視処理1」ともいう。デバッグモードの切削送り時に実行される速度監視処理を「速度監視処理2」ともいう。通常実行モードの切削送り時に実行される速度監視処理を「速度監視処理3」ともいう。
以下では、図8~図10を参照して、速度監視処理1~3について順に説明する。図8~図10に示される処理は、たとえば、PLC200の制御装置201(図6参照)が監視プログラム222(図6参照)を実行することにより実現される。他の局面において、処理の一部または全部が、CNC300の制御装置301、回路素子またはその他のハードウェアによって実行されてもよい。
(F1.速度監視処理1)
まず、図8を参照して、速度監視処理1について説明する。図8は、速度監視処理1の制御フローを示す図である。
上述のように、テーブル55の送り速度が危険速度を超えるとボールねじ54が破損する可能性がある。したがって、工作機械100は、早送り時においては、テーブル55の現在位置に対して制御遅れ量を考慮した予想位置(移動先)での危険速度を算出し、テーブル55の現在の送り速度が当該危険速度を超えている場合に、テーブル55の送り速度を危険速度以下に調整する。これにより、工作機械100は、テーブル55の送り速度が移動先で危険速度を超えることを防止することができる。
より具体的には、ステップS108において、制御装置201は、タイマー(図示しない)をリセットする。当該タイマーは、たとえば、制御装置201に備えられる計時機能である。制御装置201は、タイマーのリセット後、タイマーのカウントを開始する。
ステップS110において、制御装置201は、制御周期ΔT(図5参照)が到来したか否かを判断する。制御装置201は、制御周期ΔTが到来したと判断した場合(ステップS110においてYES)、制御をステップS112に切り替える。そうでない場合には(ステップS110においてNO)、制御装置201は、制御をステップS140に切り替える。
ステップS112において、制御装置201は、テーブル55の現在位置p1と、テーブル55の現在の送り速度Fmaxとを取得する。送り速度Fmaxは、工作機械100に設定されている早送り速度であり、予め定められている。現在位置p1は、上述のCNC300から取得される。より具体的には、現在位置p1は、加工プログラム322に従って制御周期ΔTごとにCNC300によって更新されている。CNC300は、現在位置p1を上述のフレーム60(図5参照)に書き込み、当該フレーム60を制御周期ΔTごとにPLC200に送信する。PLC200の制御装置201は、受信したフレーム60から現在位置p1を取得する。
ステップS114において、制御装置201は、制御遅れ量Δmを算出する。監視プログラム222は、ラダープログラムで記述されているため、ステップS112で取得した現在位置p1は、1制御周期分遅れている。そのため、制御装置201は、下記式(1)に基づいて、制御遅れ量Δmを算出する。
Δm=(Fmax/60000)*V*ΔT*p・・・(1)
式(1)に示される「Fmax」は、ステップS112で取得した早送り速度を表す。「Fmax」の単位は、たとえば、「mm/min」で表される。「Fmax/60000」により、単位が「mm/min」から「mm/ms」に変換される。「V」は、現在設定されているオーバーライド値を示す。オーバーライド値は、工作機械100に設定されている早送り速度を基準(=100%)とした倍率を示す。ユーザは、工作機械100の操作盤(図示しない)のダイヤルを調整することでオーバーライド値を手動で調整することができる。「ΔT」は、ラダープログラムの制御周期を示す。「ΔT」の単位は、たとえば、「ms」である。「p」は、制御マージンを示す。「p」は、予め定められた定数である。
ステップS116において、制御装置201は、ステップS112で取得した現在位置p1と、ステップS114で算出した制御遅れ量Δmとに基づいて、推定位置p2を算出する。推定位置p2は、制御遅れ量Δmを考慮したテーブル55の移動先を示す。より具体的には、下記式(2)に示されるように、制御装置201は、現在位置p1に制御遅れ量Δmを加算し、推定位置p2を算出する。
p2=p1+Δm・・・(2)
ステップS118において、制御装置201は、上述の速度規定124(図2参照)を参照して、推定位置p2に対応する危険速度Fthを特定する。
ステップS120において、制御装置201は、ステップS112で取得した送り速度FmaxがステップS118で特定した危険速度Fthを超えているか否かを判断する。制御装置201は、送り速度Fmaxが危険速度Fthを超えていると判断した場合(ステップS120においてYES)、制御をステップS130に切り替える。そうでない場合には(ステップS120においてNO)、制御装置201は、制御をステップS122に切り替える。
ステップS122において、制御装置201は、タイマーをリセットする。制御装置201は、タイマーのリセット後、タイマーのカウントを開始する。
ステップS130において、制御装置201は、タイマーの計測時間が所定時間を超えたか否かを判断する。すなわち、制御装置201は、送り速度Fmaxが危険速度Fthを超えている時間が所定時間を経過したか否かを判断する。制御装置201は、タイマーの計測時間が所定時間を超えたと判断した場合(ステップS130においてYES)、制御をステップS132に切り替える。そうでない場合には(ステップS130においてNO)、制御装置201は、制御をステップS140に切り替える。
ステップS132において、制御装置201は、テーブル55の送り速度Fmaxを危険速度Fth以下に制限する。一例として、制御装置201は、オーバーライド値を調整することにより送り速度Fmaxを制限する。当該オーバーライド値は、たとえば、下記式(3)に基づいて、算出される。
V=Fth/Fmax・・・(3)
制御装置201は、当該算出したオーバーライド値で現在設定されているオーバーライド値を更新する。これにより、テーブル55の送り速度Fmaxが、危険速度Fth以下に制限される。
ステップS140において、制御装置201は、早送りが継続しているか否かを判断する。制御装置201は、早送りが継続していると判断した場合(ステップS140においてYES)、制御をステップS110に戻す。そうでない場合には(ステップS140においてNO)、制御装置201は、図8に示される速度監視処理1を終了する。
なお、上述では、ステップS132において、送り速度Fmaxが危険速度Fth以下に制限される例について説明を行ったが、縄跳び現象を抑制するための処理は、これに限定されない。一例として、ステップS132において、制御装置201は、エラーメッセージ「送り速度異常」をディスプレイ330(図7参照)に表示し、加工プログラム322を一時停止してもよい。
(F2.速度監視処理2)
次に、図9を参照して、速度監視処理2について説明する。図9は、速度監視処理2の制御フローを示す図である。
工作機械100は、切削送り時においてはワークWの加工中である可能性が高い。そのため、切削送り時に送り速度が変更された場合には、ワークWの加工品質が低下する可能性がある。したがって、デバッグモードの切削送り時においては、工作機械100は、テーブル55の送り速度が危険速度を超えるか否かをワークWの加工前に判断する。テーブル55の送り速度が危険速度を超える場合、工作機械100は、工具32によるワークWの加工が開始される前に縄跳び現象を抑制するための処理を実行する。
速度監視処理2の実行は、実行中の加工プログラム322の次ブロックが切削送りである場合に開始される。速度監視処理2が開始されると、ステップS208において、制御装置201は、加工プログラム322の実行をインターロックするための指令をCNC300に送る。CNC300は、当該指令を受けたことに基づいて、加工プログラム322の実行を一時停止する。
ステップS210において、制御装置201は、制御周期ΔT(図5参照)が到来したか否かを判断する。制御装置201は、制御周期ΔTが到来したと判断した場合(ステップS210においてYES)、制御をステップS211に切り替える。そうでない場合には(ステップS210においてNO)、制御装置201は、制御をステップS250に切り替える。
ステップS211において、制御装置201は、テーブル55の現在位置p1と、テーブル55の移動先までの残移動量Δdと、テーブル55の現在の送り速度FPとを上述のCNC300から取得する。より具体的には、現在位置p1、残移動量Δd、および送り速度FPは、加工プログラム322に従って制御周期ΔTごとにCNC300によって更新されている。CNC300は、現在位置p1、残移動量Δd、および送り速度FPを上述のフレーム60(図5参照)に書き込み、当該フレーム60を制御周期ΔTごとにPLC200に送信する。PLC200の制御装置201は、現在位置p1、残移動量Δd、および送り速度FPを受信したフレーム60から取得する。
ステップS212において、制御装置201は、下記式(4)に基づいて、テーブル55の移動先である目標位置ptを算出する。より具体的には、制御装置201は、テーブル55の現在位置p1に残移動量Δdを加算することで、目標位置ptを算出する。
pt=p1+Δd・・・(4)
ステップS214において、制御装置201は、上述の速度規定124(図2参照)を参照して、目標位置ptにおける危険速度Fthを特定する。
ステップS212で取得した送り速度FPは、XY平面上における移動速度を表すので、ステップS216において、制御装置201は、送り速度FPから監視対象の軸の送り速度Fを算出する。一例として、監視対象の軸がX軸およびY軸である場合、制御装置201は、式(5)に基づいてX軸方向の送り速度Fxを算出し、式(6)に基づいてY軸方向の送り速度FYを算出する。
FX=FP*x/√(x2+y2)・・・(5)
FY=FP*y/√(x2+y2)・・・(6)
式(5)に示される「FX」は、X軸方向におけるテーブル55の送り速度を表す。「FX」の単位は、たとえば、モータの単位回転当たりの移動量「mm/rev」,「inch/rev」、または、単位時間当たりの移動量「mm/min」で表される。「FX」の単位が「mm/rev」もしくは「inch/rev」である場合、制御装置201は、「FX」にモータ回転数「N」を乗算することで「FX」の単位を「mm/min」に変換する。「x」は、X軸方向における目標位置までの残り移動量を表す。「x」の単位は、「mm」もしくは「inch」で表される。
式(6)に示される「FY」は、Y軸方向におけるテーブル55の送り速度を表す。「FY」の単位は、たとえば、モータの単位回転当たりの移動量「mm/rev」,「inch/rev」、または、単位時間当たりの移動量「mm/min」で表される。「y」は、Y軸方向における目標位置までの残り移動量を表す。「FY」の単位が「mm/rev」もしくは「inch/rev」である場合、制御装置201は、「FY」にモータ回転数「N」を乗算することで、「FY」の単位を「mm/min」に変換する。
以降のステップS220,S222,S230,S232,S234,S242の処理は、送り速度FX,FYのそれぞれについて実行されるが、説明の便宜のために、送り速度FX,FYの一方を送り速度Fと称し、送り速度Fについて以降の処理が実行されるものとして説明を行う。
ステップS220において、制御装置201は、オーバーライド値「100%」の送り速度FがステップS214で特定した危険速度Fthを超えているか否かを判断する。制御装置201は、オーバーライド値「100%」の送り速度Fが危険速度Fthを超えていると判断した場合(ステップS220においてYES)、制御をステップS222に切り替える。そうでない場合には(ステップS220においてNO)、制御装置201は、制御をステップS230に切り替える。
ステップS222において、制御装置201は、エラーメッセージ「オーバーライド値(OVR)100%では実行できません」をディスプレイ330(図7参照)に表示し、加工プログラム322を一時停止する。あるいは、制御装置201は、テーブル55の送り速度が危険速度Fthよりも小さくなるようにオーバーライド値を設定してもよい。オーバーライド値の設定方法については上述のステップS132で説明した通りであるので、その説明については繰り返さない。
ステップS230において、制御装置201は、オーバーライド値「200%」の送り速度Fが危険速度Fth以上であり、かつ、オーバーライド値「100%」の送り速度Fが危険速度Fthを下回っているか否かを判断する。制御装置201は、オーバーライド値「200%」の送り速度Fが危険速度Fth以上であり、かつ、オーバーライド値「100%」の送り速度Fが危険速度Fthを下回っていると判断した場合(ステップS230においてYES)、制御をステップS232に切り替える。そうでない場合には(ステップS230においてNO)、制御装置201は、制御をステップS242に切り替える。
ステップS232において、制御装置201は、警告メッセージ「オーバーライド値(OVR)を100%よりも大きくすることはできません」をディスプレイ330(図7参照)に表示し、テーブル55の駆動制御を継続するか否かについて選択を受け付ける選択画面をディスプレイ330に表示する。
ステップS234において、制御装置201は、ステップS232での選択結果に応じた処理を実行する。より具体的には、駆動制御の継続が選択された場合、制御装置201は、加工プログラム322の実行のインターロックを解除するための指令をCNC300に送る。CNC300は、当該指令を受けたことに基づいて、加工プログラム322の実行を開始する。一方で、駆動制御の停止が選択された場合、制御装置201は、テーブル55の駆動制御を停止する。
ステップS242において、制御装置201は、オーバーライド値を200%よりも大きくしない限り送り速度Fが危険速度Fthを超えることがないため、加工プログラム322の実行のインターロックを解除するための指令をCNC300に送る。CNC300は、当該指令を受けたことに基づいて、加工プログラム322の実行を開始する。
なお、上述では、テーブル55の現在の送り速度が移動先での危険速度を超えないか否かを判断する例について説明を行ったが、制御装置201は、さらに、テーブル55の現在の送り速度がテーブル55の現在位置での危険速度を超えないか否を判断してもよい。より具体的には、制御装置201は、テーブル55の現在の送り速度が現在位置での危険速度と移動先での危険速度とのいずれかを超える場合、縄跳び現象を抑制するための予め定められた処理を実行する。これにより、工作機械100は、縄跳び現象をより確実に抑制することができる。
(F3.速度監視処理3)
次に、図10を参照して、速度監視処理3について説明する。図10は、速度監視処理3の制御フローを示す図である。
典型的には、監視プログラム222は、デバッグモードでのデバッグ後に通常実行モードで実行される。そのため、通常実行モードで監視プログラム222が実行される場合には、監視プログラム222が正常である可能性が高い。そのため、工作機械100は、通常実行モードの切削送り時においては、デバッグモードの切削送り時とは異なるようにテーブル55の送り速度を監視する。一例として、工作機械100は、通常実行モードの切削送り時においては、テーブル55の現在位置に対して制御遅れ量を考慮した予想位置(移動先)での危険速度を算出し、テーブル55の現在の送り速度が当該危険速度を超えている場合に、テーブル55の駆動を停止する。
より具体的には、ステップS308において、制御装置201は、タイマー(図示しない)をリセットする。当該タイマーは、たとえば、制御装置201に備えられる計時機能である。制御装置201は、タイマーのリセット後、タイマーのカウントを開始する。
ステップS310において、制御装置201は、制御周期ΔT(図5参照)が到来したか否かを判断する。制御装置201は、制御周期ΔTが到来したと判断した場合(ステップS310においてYES)、制御をステップS312に切り替える。そうでない場合には(ステップS310においてNO)、制御装置201は、制御をステップS340に切り替える。
ステップS312において、制御装置201は、テーブル55の現在位置p1と、テーブル55の現在の送り速度FPとを取得する。現在位置p1および送り速度FPは、上述のCNC300から取得される。より具体的には、現在位置p1および送り速度FPは、加工プログラム322に従って制御周期ΔTごとに更新されている。CNC300は、現在位置p1および送り速度FPを上述のフレーム60(図5参照)に書き込み、当該フレーム60を制御周期ΔTごとにPLC200に送信する。PLC200の制御装置201は、受信したフレーム60から現在位置p1および送り速度FPを取得する。
ステップS313において、制御装置201は、送り速度FPから監視対象の軸の送り速度Fを算出する。送り速度Fの算出方法については上述のステップS216で説明した通りであるので、その説明については繰り返さない。
ステップS314において、制御装置201は、制御遅れ量Δmを算出する。監視プログラム222は、ラダープログラムで記述されているため、ステップS312で取得した現在位置p1は、1制御周期分遅れている。そのため、制御装置201は、下記式(7)に基づいて、制御遅れ量Δmを算出する。
Δm=(F/60000)*V*ΔT*p・・・(7)
式(7)に示される「F」は、ステップS313で算出された送り速度を表す。「F」の単位は、たとえば、「mm/min」で表される。「F/60000」により、単位が「mm/min」から「mm/ms」に変換される。「V」は、現在設定されているオーバーライド値を示す。切削送り時におけるオーバーライド値は、加工プログラム322に規定されている送り速度を基準(=100%)とした倍率を示す。ユーザは、工作機械100の操作盤(図示しない)のダイヤルを調整することでオーバーライド値を手動で調整することができる。「ΔT」は、ラダープログラムの制御周期を示す。「ΔT」の単位は、たとえば、「ms」である。「p」は、制御マージンを示す。「p」は、予め定められた定数である。
ステップS316において、制御装置201は、ステップS312で取得した現在位置p1と、ステップS314で算出した制御遅れ量Δmとに基づいて、推定位置p2を算出する。推定位置p2は、制御遅れ量Δmを考慮したテーブル55の移動先を示す。より具体的には、制御装置201は、下記式(8)に示されるように、現在位置p1に制御遅れ量Δmを加算し、推定位置p2を算出する。
p2=p1+Δm・・・(8)
ステップS318において、制御装置201は、上述の速度規定124(図2参照)を参照して、推定位置p2における危険速度Fthを特定する。
ステップS320において、制御装置201は、ステップS313で算出した送り速度FがステップS318で特定した危険速度Fthを超えているか否かを判断する。制御装置201は、送り速度Fが危険速度Fthを超えていると判断した場合(ステップS320においてYES)、制御をステップS330に切り替える。そうでない場合には(ステップS320においてNO)、制御装置201は、制御をステップS322に切り替える。
ステップS322において、制御装置201は、タイマーをリセットする。制御装置201は、タイマーのリセット後、タイマーのカウントを開始する。
ステップS330において、制御装置201は、タイマーの計測時間が所定時間を超えたか否かを判断する。すなわち、制御装置201は、送り速度Fが危険速度Fthを超えている時間が所定時間を経過したか否かを判断する。制御装置201は、タイマーの計測時間が所定時間を超えたと判断した場合(ステップS330においてYES)、制御をステップS332に切り替える。そうでない場合には(ステップS330においてNO)、制御装置201は、制御をステップS340に切り替える。
ステップS332において、制御装置201は、エラーメッセージ「送り速度異常」をディスプレイ330(図7参照)に表示し、加工プログラム322を一時停止する。
ステップS340において、制御装置201は、切削送りが継続しているか否かを判断する。制御装置201は、切削送りが継続していると判断した場合(ステップS340においてYES)、制御をステップS310に戻す。そうでない場合には(ステップS340においてNO)、制御装置201は、図10に示される速度監視処理3を終了する。
<G.まとめ>
以上のようにして、工作機械100は、ボールねじ54の制御プログラムに基づいて、テーブル55の移動先である目標位置と、テーブル55の現在の送り速度とを特定する。次に、工作機械100は、速度規定124に基づいて、目標位置での上限速度を特定し、現在の送り速度が目標位置での上限速度よりも大きいか否かを判断する。工作機械100は、現在の送り速度が目標位置での上限速度よりも大きいと判断した場合、縄跳び現象を抑制するための予め定められた処理を実行する。これにより、工作機械100は、テーブル55の送り速度が移動先において危険速度を超えるか否かを予め判断でき、ワークWの加工前に何らかの処置を取ることができる。
今回開示された実施の形態は全ての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内での全ての変更が含まれることが意図される。