IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ファナック株式会社の特許一覧

<>
  • 特許-数値制御装置 図1
  • 特許-数値制御装置 図2
  • 特許-数値制御装置 図3
  • 特許-数値制御装置 図4
  • 特許-数値制御装置 図5
  • 特許-数値制御装置 図6
  • 特許-数値制御装置 図7
  • 特許-数値制御装置 図8
  • 特許-数値制御装置 図9
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-07-08
(45)【発行日】2024-07-17
(54)【発明の名称】数値制御装置
(51)【国際特許分類】
   G05B 19/4155 20060101AFI20240709BHJP
   G05B 19/18 20060101ALI20240709BHJP
【FI】
G05B19/4155 M
G05B19/18 C
G05B19/4155 N
【請求項の数】 4
(21)【出願番号】P 2022575628
(86)(22)【出願日】2022-01-13
(86)【国際出願番号】 JP2022000960
(87)【国際公開番号】W WO2022154049
(87)【国際公開日】2022-07-21
【審査請求日】2023-08-09
(31)【優先権主張番号】P 2021005801
(32)【優先日】2021-01-18
(33)【優先権主張国・地域又は機関】JP
(73)【特許権者】
【識別番号】390008235
【氏名又は名称】ファナック株式会社
(74)【代理人】
【識別番号】110001151
【氏名又は名称】あいわ弁理士法人
(72)【発明者】
【氏名】西城 善典
【審査官】松浦 陽
(56)【参考文献】
【文献】特開2003-108209(JP,A)
【文献】特開2014-063389(JP,A)
【文献】米国特許出願公開第2002/0082718(US,A1)
【文献】特開2017-204188(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G05B 19/18 - 19/416
(57)【特許請求の範囲】
【請求項1】
制御プログラムに待機指令が含まれるか否かを判別する第1の処理を実行する第1の処理部と、
前記制御プログラムに前記待機指令が含まれると判別された場合、前記待機指令に含まれる待機条件が成立するか否かを判別する第2の処理を実行する第2の処理部と、
第1の制御周期の期間内において前記第1の処理が実行され、かつ、前記第2の処理が実行されたことを契機に、前記第1の制御周期の残りの期間において前記第1の処理および前記第2の処理とは異なる第3処理を実行する第3の処理部と、
を備え
前記第1の処理部は、前記制御プログラムに第1の条件文が含まれており、かつ、前記第1の条件文が前記第1の制御周期の期間内に、パラメータにセットされた回数読み込まれた場合、前記制御プログラムに前記待機指令が含まれると判断する数値制御装置。
【請求項2】
前記第2の処理において前記待機条件が成立すると判別された場合、前記第2の処理部は、前記第1の制御周期の次の第2の制御周期の期間内において、前記第2の処理を実行する請求項1に記載の数値制御装置。
【請求項3】
前記パラメータにセットされる値の入力を受け付ける受付部をさらに備える請求項1に記載の数値制御装置。
【請求項4】
前記第1の処理部は、前記制御プログラムに第2の条件文が含まれている場合、前記制御プログラムに前記待機指令が含まれると判断する請求項1~3のいずれか1項に記載の数値制御装置。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、産業機械を制御する数値制御装置に関する。
【背景技術】
【0002】
産業機械は、複数のブロックからなる制御プログラムに基づいて複数の軸の制御を行う。これにより、産業機械は、例えば、ワークの加工または設置、もしくは搬送物の搬送を行うことができる。
【0003】
制御プログラムには、「IF」文、「WHILE」文、「GOTO」文などの制御指令が含まれる場合がある(例えば、特許文献1参照)。これらの制御指令は、例えば、所定の条件が成立した場合、あるいは成立しない場合の産業機械の各軸の動作を規定するために利用される。所定の条件が成立するか否かによって産業機械の動作が規定されるため、これらの制御指令は、各軸の動作に影響を与えない表示制御処理などよりも優先的に処理される。
【0004】
また、制御指令を用いて所定の条件が成立するまで次の指令の実行を待機させる指令が制御プログラムに記述される場合がある。このような指令は、例えば、旋盤の上刃物台と下刃物台とを同期制御するために利用される。
【先行技術文献】
【特許文献】
【0005】
【文献】特開2017-204188号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかし、所定の条件が成立するまで次の指令の実行を待機させる指令が、例えば、「IF」文と「GOTO」文を利用して記述されている場合、数値制御装置は、これら指令が待機指令であるか否かを認識しない。そのため、所定の条件が成立するか否かを繰り返し判断することにCPU(Central Processing Unit)資源の多くが費やされてしまい、表示制御処理などの処理が遅延するなどの事象が生じるおそれがある。
【0007】
本開示は、CPUの資源配分を適切に行うことが可能な数値制御装置を提供することを目的とする。
【課題を解決するための手段】
【0008】
数値制御装置が、制御プログラムに待機指令が含まれるか否かを判別する第1の処理を実行する第1の処理部と、制御プログラムに待機指令が含まれると判別された場合、待機指令に含まれる待機条件が成立するか否かを判別する第2の処理を実行する第2の処理部と、第1の制御周期の期間内において第1の処理が実行され、かつ、第2の処理が実行されたことを契機に、第1の制御周期の残りの期間において第1の処理および第2の処理とは異なる第3の処理を実行する第3の処理部と、を備え、第1の処理部は、制御プログラムに第1の条件文が含まれており、かつ、第1の条件文が第1の制御周期の期間内に、パラメータにセットされた回数読み込まれた場合、制御プログラムに待機指令が含まれると判断する。
【発明の効果】
【0009】
本開示の一態様により、CPUの資源配分を適切に行うことが可能になる。
【図面の簡単な説明】
【0010】
図1】工作機械のハードウェア構成の一例を示す図である。
図2】数値制御装置の機能の一例を示すブロック図である。
図3】待機指令を含む制御プログラムの一例を示す図である。
図4】各制御周期において実行される処理を説明する図である。
図5】プログラム解析部が実行する解析処理の一例を示すフローチャートである。
図6】単一の系統を動作させる制御プログラムにおける待機指令の一例について説明する図である。
図7】待機指令を含む制御プログラムの一例を示す図である。
図8】待機指令を含む制御プログラムの一例を示す図である。
図9】各制御周期において実行される処理を説明する図である。
【発明を実施するための形態】
【0011】
以下、本開示の一実施形態について図面を用いて説明する。なお、以下の実施形態で説明する特徴のすべての組み合わせが課題解決に必ずしも必要であるとは限らない。また、必要以上の詳細な説明を省略する場合がある。また、以下の実施形態の説明、および図面は、当業者が本開示を十分に理解するために提供されるものであり、請求の範囲を限定することを意図していない。
【0012】
数値制御装置は、産業機械を制御するための装置である。産業機械は、例えば、ワークの加工、部品の搬送に利用される機械である。産業機械は、例えば、工作機械、産業用ロボットである。本実施形態では、工作機械に設けられた数値制御装置の一例について説明する。
【0013】
図1は、工作機械のハードウェア構成の一例を示す図である。工作機械1は、例えば、旋盤、マシニングセンタ、複合加工機、ボール盤、タッピングセンタである。工作機械1は、例えば、互いに異なる複数の制御プログラムによって制御される複数の系統を有している。複数の系統を有する工作機械1は、例えば、上刃物台と下刃物台の2つの系統を有する旋盤である。
【0014】
工作機械1は、数値制御装置2と、入出力装置3と、サーボアンプ4およびサーボモータ5と、スピンドルアンプ6およびスピンドルモータ7と、補助機器8とを備えている。
【0015】
数値制御装置2は、工作機械1全体を制御する装置である。数値制御装置2は、CPU(Central Processing Unit)201と、バス202と、ROM(Read Only Memory)203と、RAM(Random Access Memory)204と、不揮発性メモリ205とを備えている。
【0016】
CPU201は、システムプログラムに従って数値制御装置2全体を制御するプロセッサである。CPU201は、バス202を介してROM203に格納されたシステムプログラムなどを読み出す。また、CPU201は、加工プログラムに従って、サーボモータ5およびスピンドルモータ7を制御する。
【0017】
CPU201は、所定の制御周期ごとに、例えば、制御プログラムの解析、サーボモータ5に対する制御指令の出力を行う。
【0018】
バス202は、数値制御装置2内の各ハードウェアを互いに接続する通信路である。数値制御装置2内の各ハードウェアはバス202を介してデータをやり取りする。
【0019】
ROM203は、数値制御装置2全体を制御するためのシステムプログラムなどを記憶する記憶装置、または記憶媒体である。
【0020】
RAM204は、各種データを一時的に格納する記憶装置である。RAM204は、CPU201が各種データを処理するための作業領域として機能する。
【0021】
不揮発性メモリ205は、工作機械1の電源が切られ、数値制御装置2に電力が供給されていない状態でもデータを保持する記憶装置である。不揮発性メモリ205は、例えば、SSD(Solid State Drive)で構成される。
【0022】
数値制御装置2は、さらに、インタフェース206と、軸制御回路207と、スピンドル制御回路208と、PLC(Programmable Logic Controller)209と、I/Oユニット210とを備えている。
【0023】
インタフェース206は、バス202と入出力装置3とを接続する。インタフェース206は、例えば、CPU201が処理した各種データを入出力装置3に送る。
【0024】
入出力装置3は、インタフェース206を介して各種データを受け、各種データを表示する装置である。また、入出力装置3は、各種データの入力を受け付けてインタフェース206を介して各種データをCPU201に送る。入出力装置3は、LCD(Liquid Crystal Display)などのディスプレイ、キーボード、およびマウスなどを含む。また、入出力装置3は、タッチパネルであってもよい。
【0025】
軸制御回路207は、サーボモータ5を制御する回路である。軸制御回路207は、CPU201からの制御指令を受けてサーボモータ5を駆動させるための指令をサーボアンプ4に出力する。軸制御回路207は、例えば、サーボモータ5のトルクを制御するトルクコマンドをサーボアンプ4に送る。
【0026】
サーボアンプ4は、軸制御回路207からの指令を受けて、サーボモータ5に電流を供給する。
【0027】
サーボモータ5は、サーボアンプ4から電流の供給を受けて駆動する。サーボモータ5は、例えば、刃物台、主軸頭、テーブルを駆動させるボールねじに連結される。サーボモータ5が駆動することにより、刃物台、主軸頭、テーブルなどの工作機械1の構造物は、例えば、X軸方向、Y軸方向、またはZ軸方向に移動する。
【0028】
スピンドル制御回路208は、スピンドルモータ7を制御するための回路である。スピンドル制御回路208は、CPU201からの制御指令を受けてスピンドルモータ7を駆動させるための指令をスピンドルアンプ6に出力する。スピンドル制御回路208は、例えば、スピンドルモータ7のトルクを制御するトルクコマンドをスピンドルアンプ6に送る。
【0029】
スピンドルアンプ6は、スピンドル制御回路208からの指令を受けて、スピンドルモータ7に電流を供給する。
【0030】
スピンドルモータ7は、スピンドルアンプ6から電流の供給を受けて駆動する。スピンドルモータ7は、主軸に連結され、主軸を回転させる。
【0031】
PLC209は、ラダープログラムを実行して補助機器8を制御する装置である。PLC209は、I/Oユニット210を介して補助機器8を制御する。
【0032】
I/Oユニット210は、PLC209と補助機器8とを接続するインタフェースである。I/Oユニット210は、PLC209から受けた指令を補助機器8に送る。
【0033】
補助機器8は、工作機械1に設置され、工作機械1がワークを加工する際の補助的な動作を行う。補助機器8は、工作機械1の周辺に設置される装置であってもよい。補助機器8は、例えば、工具交換装置、切削液噴射装置、または開閉ドア駆動装置である。
【0034】
次に、数値制御装置2の機能の一例について説明する。
【0035】
図2は、数値制御装置2の機能の一例を示すブロック図である。数値制御装置2は、プログラム記憶部21と、処理時間割当部22と、プログラム解析部23と、移動指令実行部24と、機能処理実行部25とを備える。
【0036】
プログラム記憶部21は、入出力装置3などから入力された制御プログラムが、RAM204、または不揮発性メモリ205に記憶されることにより実現される。
【0037】
処理時間割当部22、プログラム解析部23、移動指令実行部24、および機能処理実行部25は、例えば、CPU201が、ROM203に記憶されているシステムプログラムならびに不揮発性メモリ205に記憶されている制御プログラムおよび各種データを用いて演算処理することにより実現される。CPU201は、作業領域としてRAM204を用いて演算処理を実行する。
【0038】
プログラム記憶部21は、制御プログラムを記憶する。制御プログラムは、工作機械1の各部を動作させるためのプログラムである。制御プログラムは、例えば、加工プログラムである。産業機械が、マニピュレータなどの産業用ロボットである場合、制御プログラムは産業用ロボットを動作させるためのプログラムである。
【0039】
処理時間割当部22は、各制御周期の一部の期間を処理時間としてプログラム解析部23、移動指令実行部24、および機能処理実行部25などに割り当てる。処理時間割当部22は、1つの制御周期の期間内に実行される各種処理の処理時間、および処理順序を決定する。
【0040】
処理時間割当部22は、各制御周期の期間内において、各種処理のうち、優先度の高い処理から順に実行されるように処理時間を各部に割り当てる。優先度が高い処理とは、例えば、移動指令実行部24が実行する移動処理である。
【0041】
プログラム解析部23は、プログラム記憶部21に記憶された制御プログラムを読み込んで制御プログラムの解析処理を実行する。プログラム解析部23は、制御プログラムの各行に記載された指令を解析する。制御プログラムが、例えば、第1の系統および第2の系統の制御プログラムを含んでいる場合、プログラム解析部23は、第1の系統および第2の系統の制御プログラムを解析する。
【0042】
プログラム解析部23は、指令判別部231と、移動指令解析部232と、待機指令判別部233と、待機指令実行部234と、制御指令実行部235とを有する。
【0043】
指令判別部231は、制御プログラムに記載されている指令の種類を判別する。指令の種類には、例えば、移動指令、および制御指令が含まれる。
【0044】
移動指令とは、工作機械1の各軸を移動させる指令である。移動指令には、例えば、「G00」で指定される位置決め指令、「G01」で指定される直線補間指令、「G02」または「G03」で指定される円弧補間指令が含まれる。
【0045】
制御指令とは、制御プログラムの実行処理の流れを指示する指令、ならびに数値制御装置2のメモリに値を設定する指令、メモリ上で演算を実行させる指令、およびメモリに記憶された値を参照する指令を含む。言い換えれば、制御指令とは、移動指令、補助指令、表示制御指令、通信制御指令など、各種装置の動作を制御する指令以外の指令である。
【0046】
制御指令には、例えば、「#」によって指定されるメモリ参照指令およびメモリ設定指令が含まれる。また、制御指令には、「IF」文などの条件分岐指令、「FOR」文および「WHILE」文などの反復指令、ならびに「GOTO」文などの分岐指令が含まれる。また、制御指令には、「+」、「-」、「*」、および「/」によって規定される加減乗除を実行する算術演算指令が含まれる。また、制御指令には、「OR」、「XOR」、および「AND」で規定される論理演算を実行する論理演算指令が含まれる。また、制御指令には、「SIN」、および「SQRT」などで規定される関数の演算を実行する関数演算指令が含まれる。また、制御指令には、待機指令が含まれる。待機指令については、後に詳しく説明する。
【0047】
移動指令解析部232は、移動指令を解析し、移動指令の種類を判別する。移動指令解析部232は、例えば、移動指令が、位置決め指令、直線補間指令、円弧補間指令のうちいずれの指令であるかを判別する。また、移動指令とともに記載されている座標値を解析して、軸の移動方向、および移動量を算出する。
【0048】
待機指令判別部233は、制御指令に待機指令が含まれるか否かを判別する。言い換えれば、待機指令判別部233は、解析された制御プログラムに待機指令が含まれるか否かを判別する。待機指令とは、所定の条件が不成立となるまで、待機指令に続く指令の実行を待機させる指令である。
【0049】
後に詳しく説明するように、待機指令判別部233は、例えば、1つの「IF」文がパラメータでセットされた回数だけ繰り返し読み込まれた場合に、この「IF」文が待機指令であると判別する。つまり、待機指令判別部233は、1つの「IF」文が繰り返し読み込まれていることを検出してこの「IF」文が待機指令であると判別する。
【0050】
制御指令に待機指令が含まれる場合、待機指令に続く指令、すなわち、待機指令の次に実行される指令は所定の条件が不成立となるまで実行されない。この所定の条件を以下では待機条件という。
【0051】
待機指令は、例えば、上刃物台と下刃物台とを備えている旋盤において、下刃物台が制御プログラムで指定された所定の位置に到達してから上刃物台の動作を開始させる場合に用いられる。待機指令の具体例については後に図面を用いて詳しく説明する。
【0052】
待機指令実行部234は、制御プログラムに待機指令が含まれると判別された場合、待機指令に含まれる待機条件が成立するか否かを判別する処理を実行する。言い換えれば、待機指令実行部234は、制御プログラムに待機指令が含まれると判別された場合、待機指令を実行する。
【0053】
制御指令実行部235は、待機指令以外の制御指令を実行する。すなわち、制御指令実行部235は、「IF」文、「WHILE」文、「GOTO」文などの制御指令を実行して制御プログラムの実行処理の流れを制御する。あるいは、制御指令実行部235は、算術演算指令、論理演算指令、および関数演算指令などを実行する。
【0054】
移動指令実行部24は、移動指令解析部232によって解析された移動指令に基づいて移動処理を実行する。移動処理とは、工作機械1の各軸の制御を実行することである。移動指令実行部24は、サーボアンプ4に電力を供給することによってサーボモータ5を制御する。これにより、工作機械1の各軸の動作が制御される。
【0055】
機能処理実行部25は、制御プログラムの解析処理および移動処理以外の、数値制御装置2が有する機能に係る処理を実行する。機能処理実行部25が実行する処理には、例えば、数値制御装置2の運転状態などを表示させる表示処理、制御プログラムの編集操作を実行する制御プログラム編集処理、および、数値制御装置2と補助機器8との通信処理が含まれる。
【0056】
次に、待機指令の具体例について説明する。
【0057】
図3は、待機指令を含む制御プログラムの一例を示す図である。左側の第1の系統の制御プログラムは、例えば、上刃物台を動作させる制御プログラムである。右側の第2の系統の制御プログラムは、例えば、下刃物台を動作させるための制御プログラムである。
【0058】
シーケンス番号N101に記載された「#501=150.0」は、変数「#501」に値「150.0」を代入するメモリ設定指令である。シーケンス番号N102に記載された「#500=#20005001」は、変数「#500」に変数「#20005001」に格納されている値を代入するメモリ参照指令である。ここで、変数「#20005001」に格納される値は、例えば、下刃物台の動作中にセンサ(不図示)によって検出される下刃物台のX軸方向の位置を示す座標値である。
【0059】
シーケンス番号N103に記載された「IF」文は、待機条件「#500 LT #501」が成立するか否かを判断する制御指令である。
【0060】
変数「#500」に格納される値が変数「#501」に格納される値以上である場合、待機条件が不成立となる。この場合、制御プログラムの実行位置が「IF」文に続くシーケンス番号N104に移行する。シーケンス番号N104に記載された「G01Z100.0F500」は、上刃物台を「Z100.0」の位置まで送り速度「500」で移動させる指令である。
【0061】
変数「#500」に格納される値が「#501」に格納される値より小さい場合、待機条件が成立する。この場合、「GOTO」文により制御プログラムの実行位置がシーケンス番号N102にジャンプし、再び、シーケンス番号N103に記載された「IF」文が実行される。つまり、シーケンス番号N103に記載された「IF」文は、待機条件が不成立となるまで、「IF」文の次の指令の実行を待機させる。
【0062】
第2の系統の制御プログラムは、下刃物台を動作させるプログラムである。シーケンス番号N201に記載された「G01X50.0F500」は、下刃物台を「X50.0」の位置まで、送り速度「500」で移動させる指令である。シーケンス番号N202に記載された「G01Y50.0」は、下刃物台を「Y50.0」の位置まで移動させる指令である。シーケンス番号N203に記載された「G01X150.0」は、下刃物台を「X150.0」の位置まで移動させる指令である。シーケンス番号N204に記載された「M01」は、オプショナルストップ指令である。
【0063】
したがって、図3に示す制御プログラムは、待機指令を用いて、下刃物台の位置が「X150.0」に到達するまで上刃物台の動作を待機させ、下刃物台の位置が「X150.0」に到達すると上刃物台をZ軸方向に動作させる。
【0064】
次に、各制御周期において実行される処理について説明する。
【0065】
図4は、数値制御装置2が制御周期ごとに実行する処理を説明する図である。なお、図4は、数値制御装置2が図3に示す制御プログラムを実行する際の処理を示している。
【0066】
図4の上側の図は、未だ待機条件が不成立となっていないために「IF」文が繰り返し実行されていることを示している。図4の下側のタイムチャートは、制御周期ごとに実行される処理を示している。上側の図と下側のタイムチャートとを連結する矢印は、待機指令が制御周期ごとに実行されることを示している。
【0067】
図4に示すとおり、1つの制御周期の最初の期間には移動処理が割り当てられる。つまり、処理時間割当部22は、1つの制御周期の最初の期間を移動指令実行部24に割り当てる。移動指令実行部24は、処理時間割当部22によって割り当てられた処理時間の間、工作機械1の各軸の動作を制御する。移動指令実行部24は、例えば、前の制御周期において解析され、所定のメモリ(不図示)に記憶された移動指令の解析結果に基づいて工作機械1の各軸の動作を制御する。制御プログラムに第1の系統の制御プログラムと第2の系統の制御プログラムが含まれる場合、移動指令実行部24は、第1の系統、および第2の系統に含まれる各軸の動作を制御する。
【0068】
移動処理に割り当てられた期間の次の期間は、第1の系統の制御プログラムの解析処理に割り当てられる。つまり、処理時間割当部22は、プログラム解析部23に処理時間を割り当てる。
【0069】
プログラム解析部23は、割り当てられた期間において、第1の系統の制御プログラムの解析処理を実行する。
【0070】
図5は、プログラム解析部23が実行する解析処理の一例を示すフローチャートである。解析処理が開始すると、指令判別部231は、制御プログラムを読み込み(ステップS1)、読み込んだ指令が移動指令であるか否かを判別する(ステップS2)。
【0071】
読み込まれた指令が移動指令である場合(ステップS2においてYesの場合)、移動指令解析部232は、移動指令の種類を解析する(ステップS3)。移動指令の解析結果は、例えば、メモリに記憶される(ステップS4)。
【0072】
読み込まれた指令が移動指令ではない場合(ステップS2においてNoの場合)、待機指令判別部233は、制御指令に待機指令が含まれるか否かを判別する(ステップS5)。
【0073】
待機指令判別部233は、1つの制御指令がパラメータでセットされた回数だけ繰り返し読み込まれた場合、制御指令に待機指令が含まれると判別する。図4に示す例では、シーケンス番号N103に記載された「IF」文が3回読み込まれると、待機指令判別部233は、シーケンス番号N103に記載された「IF」文が待機指令であると判別する。
【0074】
なお、数値制御装置2は、1つの制御周期内における待機指令の読み込み回数を規定するパラメータの入力を受け付ける受付部を備えていてもよい。受付部は、例えば、入出力装置3によって構成されてもよい。また、「IF」文が記載されたブロックのシーケンス番号、「GOTO」文のジャンプ先、および待機条件の少なくとも1つが各回の実行処理において互いに一致するか否かを判断することにより、1つの「IF」文が繰り返し実行されているか否かを判断するようにしてもよい。
【0075】
制御指令に待機指令が含まれている場合(ステップS5においてYesの場合)、待機指令実行部234は、待機指令を実行する(ステップS6)。すなわち、待機指令実行部234は、待機指令に含まれる待機条件が成立するか否かを判別する処理を実行する。
【0076】
待機指令実行部234が待機指令を実行すると、第1の系統の制御プログラムの解析処理が終了し、第2の系統の制御プログラムの解析処理が開始される。言い換えれば、1つの制御周期の期間内において制御プログラムに待機指令が含まれるか否かが判別され、かつ、待機条件が成立するか否かを判別する処理が実行されたことを契機に、1つの制御周期の残りの期間において、待機条件が成立するか否かを判別する処理とは異なる処理が実行される。さらに、別の言い方をすれば、待機指令が実行されると、処理時間割当部22は1つの制御周期内の残りの時間を待機指令の実行処理とは異なる処理に処理時間を割り当てる。
【0077】
制御指令に待機指令が含まれていない場合(ステップS5においてNoの場合)、制御指令実行部235は、制御指令を実行する(ステップS7)。
【0078】
制御指令が終了するか、あるいは、第1の系統の制御プログラムの解析処理に割り当てられた期間が経過すると、第1の系統の制御プログラムの解析処理が終了する。
【0079】
ここで、図4の説明に戻る。第1の系統の制御プログラムの解析処理に割り当てられた期間の次の期間には、第2の系統の制御プログラムの解析処理が割り当てられる。つまり、処理時間割当部22は、プログラム解析部23に処理時間を割り当てる。
【0080】
指令判別部231は、割り当てられた期間において、第2の系統の制御プログラムの指令を読み込み、第2の系統の制御プログラムに記載された指令の種類を判別する。指令の種類が移動指令である場合、移動指令解析部232が移動指令の種類を解析し、例えば、解析結果を所定のメモリに記憶する。指令の種類が制御指令である場合、待機指令判別部233は制御指令に待機指令が含まれるか否かを判別する。
【0081】
制御指令に待機指令が含まれる場合、待機指令実行部234は待機指令を実行する。制御指令に待機指令が含まれていない場合、制御指令実行部235は、制御指令を実行する。すなわち、第2の系統の制御プログラムの解析処理では、第1の系統の制御プログラムの解析処理と同様の処理が実行される。
【0082】
第2の系統の制御プログラムの解析処理に割り当てられた期間の次の期間には、その他の処理が割り当てられる。その他の処理とは、例えば、移動処理、第1の系統の制御プログラムの解析処理および第2の系統の制御プログラムの解析処理以外の処理である。つまり、処理時間割当部22は、機能処理実行部25に処理時間を割り当てる。機能処理実行部25は割り当てられた期間において、例えば、表示処理を実行する。
【0083】
1つの制御周期が終了すると、次の制御周期において、上述した処理と同様の処理が実行される。
【0084】
以上説明したように、数値制御装置2は、制御プログラムに待機指令が含まれるか否かを判別する第1の処理を実行する第1の処理部と、制御プログラムに待機指令が含まれると判別された場合、待機指令に含まれる待機条件が成立するか否かを判別する第2の処理を実行する第2の処理部と、第1の制御周期の期間内において第1の処理が実行され、かつ、第2の処理が実行されたことを契機に、第1の制御周期の残りの期間において第1の処理および第2の処理とは異なる第3処理を実行する第3の処理部と、を備える。したがって、数値制御装置2は、制御プログラムに待機指令が含まれると判断された場合、第1の制御周期の期間内において待機指令を繰り返し実行しない。そのため、CPU201資源が待機指令実行処理に費やされず、CPU201の資源配分を適切に行うことができる。結果として表示制御処理などの処理が遅延することを防ぐことができる。
【0085】
なお、第1の処理部は、例えば、本実施形態の待機指令判別部233に相当する。同様に、第2の処理部は、待機指令実行部234に相当する。また、第3の処理部は、機能処理実行部25および待機指令実行部234以外のプログラム解析部23の各部に相当する。また、第1の制御周期は、任意の1つの制御周期に相当する。
【0086】
また、第2の処理において待機条件が成立すると判別された場合、第2の処理部は、第1の制御周期の次の第2の制御周期の期間内において、第2の処理を実行する。つまり、第2の処理において待機条件が成立すると判別された場合、第2の処理を第2の制御周期に実行することにより、CPU201の資源配分を適切に行うことができる。
【0087】
また、第1の処理部は、制御プログラムに第1の条件文が含まれており、かつ、第1の条件文が第1の制御周期の期間内に、パラメータにセットされた回数読み込まれた場合、制御プログラムに待機指令が含まれると判断する。したがって、従来の制御指令に待機指令が含まれているか否かを容易に判断することができる。なお、第1の条件文は、例えば、本実施形態の「IF」文に相当する。
【0088】
また、数値制御装置2は、パラメータにセットされる値の入力を受け付ける受付部をさらに備える。そのため、作業者が工場内において容易にパラメータ設定を行うことができる。
【0089】
上述した実施形態では、第1の系統および第2の系統の制御プログラムにおいて待機指令を利用する例について説明した。しかし、以下に説明するように、単一の系統を動作させる制御プログラムに待機指令を利用してもよい。
【0090】
図6は、単一の系統を動作させる制御プログラムにおける待機指令の一例について説明する図である。
【0091】
シーケンス番号N301に記載された「M100」は、刃物台をX軸の正方向に移動させる補助指令である。
【0092】
シーケンス番号N302に記載された「#501=150.0」は、変数「#501」に値「150.0」を代入するメモリ設定指令である。
【0093】
シーケンス番号N303に記載された「#500=#5001」は、変数「#500」に変数「#5001」に格納される値を代入するメモリ参照指令である。「#5001」に格納される値は、例えば、センサ(不図示)によって検出される刃物台のX軸方向の位置を示す座標値である。
【0094】
シーケンス番号N304に記載された「IF」文は、待機条件「#500 LT #501」が成立するか否かを判断する制御指令である。
【0095】
変数「#500」に格納される値が変数「#501」に格納される値以上である場合、待機条件が不成立となる。この場合、制御プログラムの実行位置が「IF」文に続くシーケンス番号N305に移行する。
【0096】
シーケンス番号N305は、刃物台を「Z100」の位置まで送り速度「500」で移動させる指令である。
【0097】
変数「#500」に格納される値が変数「#501」に格納される値より小さい場合、待機条件が成立する。この場合、「GOTO」文により制御プログラムの実行位置がシーケンス番号N302にジャンプし、再び、シーケンス番号N303に記載された「IF」文が実行される。つまり、シーケンス番号N303に記載された「IF」文は、待機条件が不成立となるまで、「IF」文の次の指令の実行を待機させる待機指令である。
【0098】
したがって、図6に示す制御プログラムは、待機指令を用いて、刃物台の位置が「X150.0」に到達すること待機し、刃物台の位置が「X150.0」に到達してから刃物台を「Z100」まで送り速度「500」で移動させる。
【0099】
この制御プログラムが実行される際、「IF」文は、各制御周期においてパラメータでセットされた回数のみ読み込まれる。パラメータにセットされた回数は、例えば、3回である。これにより、数値制御装置2は、1つの制御周期の期間内において、制御プログラムに待機指令が含まれるか否かを判別した後、待機指令が繰り返し実行されることを防ぐことができる。そのため、CPU201資源が待機指令実行処理に多く費やされることを防止し、CPU201の資源配分を適切に行うことができる。結果として表示制御処理などの処理が遅延することを防ぐことができる。
【0100】
上述した実施形態では、単一の系統を動作させる制御プログラムに待機指令を利用する例について説明した。さらに、待機指令は、以下に説明するように補助機器8の監視に利用されてもよい。
【0101】
図7は、補助機器8の監視に待機指令を利用する例について説明する図である。
【0102】
シーケンス番号N401に記載された「#501=1.0」は、変数「#501」に値「1.0」を代入するメモリ設定指令である。
【0103】
シーケンス番号N402に記載された「#500=#1000」は、変数「#500」に変数「#1000」に格納されている値を代入するメモリ参照指令である。「#1000」に格納される値は、例えば、補助機器8の状態信号を示すデータである。例えば、工作機械1の開閉ドアの閉動作が完了したときに変数「#1000」に値「1.0」が代入されるようにすることができる。
【0104】
シーケンス番号N403に記載された「IF」文は、待機条件「#500 NE #501」が成立するか否かを判断する制御指令である。
【0105】
変数「#500」に格納される値が変数「#501」に格納される値に一致する場合、待機条件が不成立となる。この場合、制御プログラムの実行位置が「IF」文に続くシーケンス番号N404に移行する。
【0106】
シーケンス番号N404に記載された「G01Z100F500」は、刃物台を「Z100」の位置まで送り速度「500」で移動させる指令である。
【0107】
変数「#500」に格納される値が変数「#501」に格納される値に一致しない場合、待機条件が成立する。この場合、「GOTO」文により制御プログラムの実行位置がシーケンス番号N402にジャンプし、再び、シーケンス番号N403に記載された「IF」文が実行される。つまり、シーケンス番号N403に記載された「IF」文は、待機条件が不成立となるまで、「IF」文の次の指令の実行を待機させる待機指令である。
【0108】
したがって、図7に示す制御プログラムは、例えば、開閉ドアが閉状態となるまで待機し、開閉ドアが閉状態となってから刃物台を「Z100」の位置まで送り速度「500」で移動させる。
【0109】
この制御プログラムが実行される際、「IF」文は、各制御周期においてパラメータでセットされた回数のみ読み込まれる。パラメータにセットされた回数は、例えば、3回である。これにより、数値制御装置2は、1つの制御周期の期間内において、制御プログラムに待機指令が含まれるか否かが判別された後、待機指令が繰り返し実行されることを防ぐことができる。そのため、CPU201資源の多くが待機指令実行処理に費やされず、CPU201の資源配分を適切に行うことができる。結果として表示制御処理などの処理が遅延することを防ぐことができる。
【0110】
上述した実施形態では、「IF」文がパラメータで設定された回数だけ読み込まれたか否かを判断し、「IF」文が待機指令であるか否かを判断する。しかし、以下に説明するように待機指令はあらかじめ規定されてもよい。
【0111】
図8は、あらかじめ規定された待機指令を含む制御プログラムの一例を示す図である。図8の左側の第1の系統の制御プログラムは、例えば、上刃物台を動作させる制御プログラムである。図8の右側の第2の系統の制御プログラムは、例えば、下刃物台を動作させるための制御プログラムである。第1の系統の制御プログラムは、待機条件が不成立となるまで、上刃物台の動作を待機させる待機指令「WAITIF」を含む。
【0112】
シーケンス番号N501に記載された「#501=150.0」は、変数「#501」に値「150.0」を代入するメモリ設定指令である。シーケンス番号N502に記載された「#500=#20005001」は、変数「#500」に変数「#20005001」に格納されている値を代入するメモリ参照指令である。ここで、「#20005001」に格納される値は、例えば、下刃物台の動作中にセンサ(不図示)によって検出される下刃物台のX軸方向の位置を示す座標値である。
【0113】
シーケンス番号N503の「WAITIF」はあらかじめ規定された待機指令である。待機指令には、待機条件「#500 LT #501」が含まれる。つまり、待機条件「#500 LT #501」が不成立となるまで、「WAITIF」に続くシーケンス番号N504の処理は実行されない。
【0114】
「#500」に格納される値が「#501」より小さい場合、待機条件は成立する。この場合、「GOTO」文により制御プログラムの実行位置がシーケンス番号N502にジャンプする。
【0115】
「#500」に格納される値が「#501」以上である場合、待機条件が不成立となる。この場合、制御プログラムの実行位置が待機指令に続くシーケンス番号N504に移行する。
【0116】
第2の系統の制御プログラムは、下刃物台を動作させるプログラムである。シーケンス番号N601に記載された「G01X50.0F500」は、下刃物台を「X50.0」まで、送り速度「500」で移動させる指令である。シーケンス番号N602に記載された「G01Y50.0」は、下刃物台を「Y50.0」の位置まで移動させる指令である。シーケンス番号N603に記載された「G01X150.0」は、下刃物台を「X150.0」の位置まで移動させる指令である。シーケンス番号N604に記載された「M01」は、オプショナルストップ指令である。
【0117】
つまり、図8に示す制御プログラムは、下刃物台が「X150.0」に到達するまで上刃物台の動作を待機させ、下刃物台が「X150.0」に到達すると、上刃物台をZ軸方向に動作させるプログラムである。
【0118】
次に、数値制御装置2が制御周期ごとに実行する処理について説明する。
【0119】
図9は、数値制御装置2が制御周期ごとに実行する処理を説明する図である。なお、図9は、数値制御装置2が図8に示す制御プログラムを実行する際の処理を示している。図9の上側の図は、未だ待機条件が不成立となっていないために待機指令が繰り返し実行されていることを示している。図9の下側のタイムチャートは、制御周期ごとに実行される処理を示している。上側の図と下側のタイムチャートとを連結する矢印は、待機指令が制御周期ごとに実行されることを示している。つまり、待機指令は、各制御周期において1回だけ実行される。
【0120】
図9に示すとおり、1つの制御周期の最初の期間には移動処理が割り当てられる。つまり、処理時間割当部22は、1つの制御周期の最初の処理時間を移動指令実行部24に割り当てる。移動指令実行部24は、処理時間割当部22によって割り当てられた処理時間の間、工作機械1の各軸の動作を制御する。移動指令実行部24は、例えば、所定のメモリ(不図示)に記憶された、前の制御周期において解析された移動指令の解析結果に基づいて工作機械1の各軸の動作を制御する。制御プログラムに第1の系統の制御プログラムと第2の系統の制御プログラムが含まれる場合、移動指令実行部24は、第1の系統、および第2の系統に含まれる各軸の動作を制御する。
【0121】
移動処理に割り当てられた最初の期間の次の期間には、第1の系統のプログラム解析処理が割り当てられる。つまり、処理時間割当部22は、プログラム解析部23に処理時間を割り当てる。
【0122】
指令判別部231は、割り当てられた期間において、第1の系統の制御プログラムの指令を読み込み、第1の系統の制御プログラムに記載された指令の種類を判別する。指令の種類が移動指令である場合、移動指令解析部232が移動指令の種類を解析し、例えば、解析結果を所定のメモリに記憶する。指令の種類が制御指令である場合、待機指令判別部233は制御指令に待機指令が含まれるか否かを判別する。制御指令に待機指令が含まれる場合、待機指令実行部234は待機指令を実行する。制御指令に待機指令が含まれていない場合、制御指令実行部235は、制御指令を実行する。
【0123】
第1の系統のプログラム解析処理に割り当てられた期間の次の期間には、第2の系統のプログラム解析処理が割り当てられる。つまり、処理時間割当部22は、プログラム解析部23に処理時間を割り当てる。第2の系統の制御プログラムの解析処理では、第1の系統の制御プログラムの解析処理と同様の処理が実行される。
【0124】
第2の系統のプログラム解析処理に割り当てられた期間の次の期間には、移動処理、第1の系統のプログラム解析処理、および第2の系統プログラム解析処理以外の処理が割り当てられる。つまり、処理時間割当部22は、機能処理実行部25に処理時間を割り当てる。機能処理実行部25は割り当てられた期間において、例えば、表示処理を実行する。
【0125】
1つの制御周期が終了すると、次の制御周期において、上述した処理と同様の処理が実行される。
【0126】
以上説明したように、第1の処理部は、制御プログラムに第2の条件文が含まれている場合、制御プログラムに待機指令が含まれると判断する。つまり、待機指令として、例えば、「WAITIF」文を規定することにより、待機指令判別部233が制御プログラム内において待機指令が含まれているか否かを容易に判別することができる。また、制御プログラムに待機指令が含まれると判断された場合、第1の制御周期の期間内において待機指令が繰り返し実行されることを防ぐことができる。
【符号の説明】
【0127】
1 工作機械
2 数値制御装置
201 CPU
202 バス
203 ROM
204 RAM
205 不揮発性メモリ
206 インタフェース
207 軸制御回路
208 スピンドル制御回路
209 PLC
210 I/Oユニット
21 プログラム記憶部
22 処理時間割当部
23 プログラム解析部
231 指令判別部
232 移動指令解析部
233 待機指令判別部
234 待機指令実行部
235 制御指令実行部
24 移動指令実行部
25 機能処理実行部
3 入出力装置
4 サーボアンプ
5 サーボモータ
6 スピンドルアンプ
7 スピンドルモータ
8 補助機器
図1
図2
図3
図4
図5
図6
図7
図8
図9