JP2008040542A - Numerical value control device - Google Patents
Numerical value control device Download PDFInfo
- Publication number
- JP2008040542A JP2008040542A JP2006209964A JP2006209964A JP2008040542A JP 2008040542 A JP2008040542 A JP 2008040542A JP 2006209964 A JP2006209964 A JP 2006209964A JP 2006209964 A JP2006209964 A JP 2006209964A JP 2008040542 A JP2008040542 A JP 2008040542A
- Authority
- JP
- Japan
- Prior art keywords
- block
- prefetch
- buffer
- code
- prefetching
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Abstract
Description
本発明は、数値制御装置に関し、先読み停止制御を実行する数値制御装置に関する。 The present invention relates to a numerical control device, and more particularly to a numerical control device that executes prefetch stop control.
数値制御装置においては、NCプログラムを1ブロック毎先読みしてその指令を解析しその解析結果(実行データ)を先読みバッファに1ブロック毎保存する先読み処理と、該先読みバッフアに保存された解析結果(実行データ)を先入れ先出し(FIFO)方式で読み出し、実行する本実行処理とを並行して実施している。
又、数値制御装置で制御する機械に、ある所定の動作を行わせるための一群の指令を、該機械を使用するユーザがユーザ独自のプログラムとして作成し、サブプログラムと同様に必要なときに呼び出して実行することができるようにしたプログラムとしてカスタムマクロが知られている。このカスタムマクロはカスタムマクロ変数を使用して作成されるものであるが、そのカスタムマクロ変数が所望の値になった後実行されるべきにも拘わらず、その値にならないうちに処理だけ先走って、先読み処理が実行される場合がある。
In the numerical controller, the NC program is prefetched block by block, the command is analyzed, and the analysis result (execution data) is stored in the prefetch buffer for each block, and the analysis result stored in the prefetch buffer ( Execution data) is read out in a first-in first-out (FIFO) system, and the execution process is executed in parallel.
In addition, a group of commands for causing a machine controlled by a numerical control device to perform a predetermined operation is created as a user's own program by a user using the machine, and called when necessary as with a subprogram. A custom macro is known as a program that can be executed by executing. Although this custom macro is created using a custom macro variable, it should be executed after the custom macro variable has reached the desired value, but before that value is reached, the process is advanced. In some cases, prefetch processing is executed.
例えば、工具径補正機能を有効にするコードと補正量が指令された指令と工具径補正をキャンセルする指令がプログラムされ、その後、カスタムマクロ変数によって工具径補正を計算し変更する指令がある場合で、先読み処理によって、工具径補正機能を有効にするコードと補正量が指令された指令と工具径補正をキャンセルする指令が先読みバッファに格納されて、いまだ本実行されていない状態で、カスタムマクロ変数によって工具径補正を計算し変更する指令のブロックが読み込まれ、先読みバッファの保存処理がなされると、このとき、カスタムマクロ変数の計算を事前に行っているので、当初プログラムで指令した工具径補正量と異なった、意図しない補正量で加工がなされることになり、誤った加工がなされることになる。 For example, when a code for enabling the tool radius compensation function, a command for commanding the compensation amount, and a command for canceling the tool radius compensation are programmed, and then there is a command for calculating and changing the tool radius compensation using a custom macro variable. The code that enables the tool radius compensation function, the command for which the compensation amount is commanded, and the command that cancels the tool radius compensation are stored in the look-ahead buffer, and the custom macro variable is not yet executed. When the command block to calculate and change the tool radius compensation is read and the prefetch buffer is saved, the custom macro variable is calculated in advance at this time. Processing is performed with an unintended correction amount different from the amount, and erroneous processing is performed.
このような不具合をなくすために、カスタムマクロ変数を使用した処理の前に、先読みを停止させる意味を持ったコードが挿入されたブロックを挿入して、このブロックで先読みブロック数を0にしてから、次のカスタムマクロ変数を使用したプログラムを実行する等の方法が従来から一般的に使用されている。 To eliminate this problem, insert a block with code that has the meaning of stopping prefetching before processing using the custom macro variable, and set the number of prefetching blocks to 0 in this block. A method such as executing a program using the following custom macro variable has been generally used.
例えば、確定しない変数を含む指令が先読み処理で読み込まれたとき、その指令の解読に必要のない変数か判断し、必要がないときには、この変数に対応するフラグを立てて記憶し、その命令の解読に、変数が確定していることが必要である場合には、該変数に対応してフラグが立っているか否か判断し、立っていると先読みを停止し、この変数に対する処理が実行されたフラグが下ろされると、先読み処理を開始するようにした発明が知られている(特許文献1参照)。 For example, when a command including a variable that is not fixed is read by prefetch processing, it is determined whether it is a variable that is not necessary for decoding the command, and when it is not necessary, a flag corresponding to this variable is set and stored. If it is necessary to determine a variable for decoding, it is determined whether or not a flag is set corresponding to the variable. If it is set, prefetching is stopped, and processing for this variable is executed. There is known an invention in which prefetching processing is started when the flag is cleared (see Patent Document 1).
従来から一般的に用いられている、カスタムマクロ変数を使用した処理の前に、先読みを停止させる意味を持ったコードが挿入されたブロックを挿入して、このブロックで先読みを0にしてから、次のカスタムマクロ変数を使用したプログラムを実行する方法を採用した場合、先読みを停止させるコードが挿入されたブロック以降のプログラムの先読みが一切行われなくなり、先読みを停止するコードが挿入されたブロックの実行が終了したことをもって、その後のプログラムの先読みが再開される制御となっていた。そのため先読み停止させたブロックと次のブロックの間で速度が0となり、加工時間が増大するという欠点があった。
又、前述した特許文献1に記載された方法では、変数が一旦確定した後、その後変更されるような場合には、適用ができないという問題がある。
Before processing using a custom macro variable, which is generally used in the past, insert a block in which a code having the meaning of stopping the prefetching is inserted, and set the prefetching to 0 in this block. If the method of executing a program using the following custom macro variable is adopted, prefetching of the program after the block in which the code for stopping prefetching is inserted is not performed at all, and the block in which the code for stopping prefetching is inserted When the execution was completed, the prefetching of the subsequent program was resumed. For this reason, the speed is zero between the block in which the prefetching is stopped and the next block, and the processing time is increased.
Further, the method described in
そこで、本発明の目的は、カスタムマクロ変数が変更される場合でも、誤動作を防止し、かつ移動速度を保持して、動作時間を短縮できる数値制御装置を提供することにある。 Accordingly, an object of the present invention is to provide a numerical control device that can prevent malfunction even when a custom macro variable is changed, maintain a moving speed, and shorten an operation time.
本願請求項1に係る発明は、NCプログラムの各ブロックの指令を順次先読み出し該指令を解析して、該解析結果をバッファに保存する先読み処理を実行し、該バッファに保存された解析結果を順次1ブロック毎取り出して該バッファから削除すると共に該ブロックの指令を実行する数値制御装置において、NCプログラムから先読みを停止させるコードが挿入されたブロックが読み出されると前記先読み処理を停止させる手段と、前記バッファに残るブロック数が指定されている先読み再開許容ブロック数と一致したか判別する判別手段と、該判別手段で前記バッファに残るブロック数と前記再開許容ブロック数が一致したことが判別されると、前記先読み処理を再開させる手段とを備えることによって、先読み処理の停止と、先読み処理の再開するタイミングを任意に設定できるようにしたものである。前記先読み再開許容ブロック数を、請求項2に係る発明はパラメータで設定するものとし、請求項3に係る発明は、前記NCプログラムで指令するものとした。
The invention according to
又、請求項4に係る発明は、NCプログラムの各ブロックの指令を順次先読み出し該指令を解析して、該解析結果をバッファに保存する先読み処理を実行し、該バッファに保存された解析結果を1ブロック毎取り出し該ブロックの指令を実行する数値制御装置において、前記先読みバッファより先読みを停止させるコードが挿入されたブロックが読み出されると前記先読み処理を停止させる手段と、NCプログラムから先読み再開コードが読み出されると前記先読み処理を再開させる手段とを備えることによって、先読み処理の停止と、先読み処理の再開するタイミングを任意に設定できるようにしたものである。 Further, the invention according to claim 4 sequentially reads the commands of each block of the NC program, analyzes the commands, executes prefetch processing for storing the analysis results in a buffer, and executes the analysis results stored in the buffer. In the numerical control apparatus that takes out each block and executes the command of the block, means for stopping the prefetching process when a block in which a code for stopping the prefetching is inserted from the prefetching buffer is read, and a prefetching restart code from the NC program By means for resuming the prefetching process when read is read, it is possible to arbitrarily set the stop of the prefetching process and the timing to resume the prefetching process.
請求項5に係る発明は、NCプログラムの各ブロックの指令を順次先読み出し該指令を解析して、該解析結果をバッファに保存する先読み処理を実行し、該バッファに保存された解析結果を順次1ブロック毎取り出して該バッファから削除すると共に該ブロックの指令を実行する数値制御装置において、カスタムマクロ変数を変更するブロックの指令が読み込まれたとき、前記先読みバッファに保存されているブロックを検索して、このカスタムマクロ変数に関係するコードを検出する第1の検索手段と、該第1の検索手段で前記カスタムマクロ変数に関係するコードを検出したら、当該解析中のブロックの解析とその解析結果の先読みバッファへの保存を停止すると共に、NCプログラムのブロックの前記先読み処理を停止させる先読み停止手段と、該先読み停止手段で先読み処理が停止されているときに、前記バッファに残されているブロックを検索して、前記カスタムマクロ変数に関係するコードを検出する第2の検索手段と、該第2の検索手段で、前記カスタムマクロ変数に関係しているコードが含まれていないことが判定されたとき、前記解析を停止し先読みバッファへの解析結果の保存を停止したブロックから先読み処理を再開させる手段とを備えるものとして、NCプログラムの指令から自動的に先読み停止、再開を制御して、誤動作の発生を防止した。
The invention according to
先読み処理を停止して、該先読み処理を停止したブロックが実行される前に、先読み処理を開始させ、しかも、誤動作が発生しないように先読み停止、先読み再開のタイミングを決定できるので、誤動作もなく、かつ、先読み処理の停止のブロックと次のブロックの指令間で、速度が0となることを防止できるから、効率の良い動作を実行できる。 The prefetch process is stopped, the prefetch process is started before the block where the prefetch process is stopped is executed, and the timing of prefetch stop and prefetch restart can be determined so as not to cause a malfunction. In addition, since the speed can be prevented from becoming zero between the command of the stop of the prefetching process and the command of the next block, an efficient operation can be executed.
以下、本発明の一実施形態を図面と共に説明する。
図1は、本発明の一実施形態の数値制御装置の要部ブロック図である。
CPU11は数値制御装置10を全体的に制御するプロセッサである。該CPU11にはバス18を介してメモリ12、PMC(プログラマブル・マシン・コントローラ)13、各送り軸のサーボモータMを制御する軸制御回路14、主軸モータSMを制御するスピンドル制御回路16が接続されている。メモリ12は、ROM,RAM、不揮発性RAM等で構成されており、CPU11は、メモリ12に格納されたシステムプログラムを、バス18を介して読み出し、該システムプログラムに従って数値制御装置全体を制御する。又、メモリ12には、CRTや液晶等で構成される表示器とキーボード等で構成される表示器/MDI(手動入力)ユニット20を介してオペレータが入力した設定値等の各種データが格納されていると共に、図示していないインターフェイスを介して読み込まれた加工プログラムや表示器/MDI(手動入力)ユニット20を介して入力された加工プログラム等が記憶される。
Hereinafter, an embodiment of the present invention will be described with reference to the drawings.
FIG. 1 is a principal block diagram of a numerical controller according to an embodiment of the present invention.
The CPU 11 is a processor that controls the
PMC13は、内蔵されたラダー等のシーケンスプログラムで制御対象物の工作機械の補助装置、周辺機器に信号を出力し制御する。また、数値制御装置10で制御される制御対象物である工作機械の本体に配備された操作盤の各種スイッチ等の信号を受け、必要な信号処理をした後、CPU11に渡す。
各軸の軸制御回路14はCPU11からの各軸の移動指令量を受けて、各軸の指令をサーボアンプ15に出力する。サーボアンプ15はこの指令を受けて、機械(制御対象物)の各軸のサーボモータMを駆動する。各軸のサーボモータMは位置・速度検出器21を内蔵し、この位置・速度検出器21からの位置、速度フィードバック信号をそれぞれの軸制御回路14にフィードバックし、各軸制御回路14は、位置・速度のフィードバック制御を行う。
The PMC 13 outputs and controls a signal to an auxiliary device and peripheral device of a machine tool to be controlled by a built-in sequence program such as a ladder. In addition, it receives signals from various switches and the like of an operation panel provided on the body of the machine tool that is a control target controlled by the
The axis control circuit 14 for each axis receives a movement command amount for each axis from the CPU 11 and outputs a command for each axis to the servo amplifier 15. Upon receiving this command, the servo amplifier 15 drives the servo motor M of each axis of the machine (control target). Each axis servo motor M has a built-in position / speed detector 21 and feeds back a position / speed feedback signal from the position / speed detector 21 to each axis control circuit 14.・ Speed feedback control is performed.
また、スピンドル制御回路16はCPU11から、主軸回転指令を受け、スピンドルアンプ17にスピンドル速度信号を出力する。スピンドルアンプ17はスピンドル速度信号を受けて、主軸モータSMを指令された回転速度で回転させる。ポジションコーダ22は、主軸モータSM、又は主軸の回転に同期して帰還パルスをスピンドル制御回路16にフィードバックし、スピンドル制御回路16はCPU11からの主軸回転指令とこのフィードバック信号に基づいて速度制御を行う。 Further, the spindle control circuit 16 receives a spindle rotation command from the CPU 11 and outputs a spindle speed signal to the spindle amplifier 17. The spindle amplifier 17 receives the spindle speed signal and rotates the spindle motor SM at the commanded rotational speed. The position coder 22 feeds back a feedback pulse to the spindle control circuit 16 in synchronization with the rotation of the spindle motor SM or the spindle, and the spindle control circuit 16 performs speed control based on the spindle rotation command from the CPU 11 and this feedback signal. .
上述した、数値制御装置10の構成は、従来の数値制御装置の構成と同じであるが、メモリ12に格納された先読み処理、及び本実行処理を行うソフトウェアが従来と異なる点において相違し、本発明はこの点に特徴を有するものである。
The configuration of the
図2は、本発明の実施形態における第1の態様の先読み停止、再開処理のアルゴリズムを示すフローチャートである。又、図3は、この第1の態様における本実行処理のアルゴリズムを示すフローチャートである。
この第1の形態では、先読みを停止させるコードが設けられると共に、先読み再開を許容するブロック数を指定するか、先読み再開許容コードを設けて、先読み停止と再開を制御するものである。
FIG. 2 is a flowchart showing an algorithm of prefetch stop / restart processing according to the first aspect of the embodiment of the present invention. FIG. 3 is a flowchart showing the algorithm of the execution process in the first mode.
In this first mode, a code for stopping prefetching is provided, and the number of blocks that allow prefetching to be resumed is specified, or a prefetching resumption permission code is provided to control the prefetching stop and resume.
先読みを停止させるコードと、先読み再開を許容するブロック数をパラメータで設定することにより、先読み停止、再開処理を行う場合のNCプログラムの例を次に示す。 An example of an NC program in the case where prefetch stop / restart processing is performed by setting a code for stopping prefetch and the number of blocks that allow prefetch restart by parameters is shown below.
先読みを停止させるコードを「M33」とし、先読みするブロック数(先読みバッファに格納される最大ブロック数)は「30」とし、先読み再開許容ブロック数を「5」に設定されているときのプログラム例である。以下このプログラム例をプログラム例1という。
プログラム例1
O0001;
N01 G90 G00 X0. Y0. ;
N02 G41 D10 G01 X100 Y100 F500.;
N03 X100. Y200. ;
N04 X200. Y200. ;
N05 X200. Y100. ;
N06 X100. Y100. ;
N07 G40 X0 Y0 ;
N08 G01 X-100 Y100.;
N09 X-100. Y200. ;
N10 X-200. Y200. ;
N11 X-200. Y100. ;
N12 X-100. Y100. ;
N13 X0 Y0 M33 ;
N14 #13010 = #100 + 0.5(CHANGE VALUE=D10) ;
N15 G41 D10 G01 X-100 Y-100 F500.;
N16 X-100. Y-200. ;
N17 X-200. Y-200. ;
N18 X-200. Y-100. ;
N19 X-100. Y-100. ;
N20 G40 X0 Y0 ;
M30;
このプログラム例において、「O0001」はプログラム番号、N01〜N20はシーケンス番号、「G90」はアブソリュート指令を示す準備機能のコード、「G00」は位置決め指令を示す準備機能のコード、「G41」は工具径補正の準備機能コードで、「D10」の「D」は補正量を指定するコードで、「D10」はオフセット番号10の値を使用することを指令するコードである。又、「G01」は直線補間を指令する準備機能コード、「X□□」及び「Y□□」は、X軸、Y軸指令位置、「F□□」は速度指令、「G40」は工具径補正キャンセルを指令する準備機能コード、「#13010」は、オフセット番号10の値を変更するカスタムマクロ変数であり、シーケンス番号N14の指令は、カスタムマクロ変数#100の値に0.5を加算し、この値を工具径補正量とする指令である。なお、シーケンス番号N14のカッコ書きの部分はコメントである。又、「M30」はプログラムエンドを示すコードである。
Program example when the code for stopping the prefetching is “M33”, the number of blocks to be prefetched (the maximum number of blocks stored in the prefetch buffer) is “30”, and the prefetch resumable block number is set to “5” It is. Hereinafter, this program example is referred to as program example 1.
Program example 1
O0001;
N01 G90 G00 X0. Y0.;
N02 G41 D10 G01 X100 Y100 F500 .;
N03 X100. Y200.;
N04 X200. Y200.;
N05 X200. Y100.;
N06 X100. Y100.;
N07 G40 X0 Y0;
N08 G01 X-100 Y100 .;
N09 X-100. Y200.;
N10 X-200. Y200.;
N11 X-200. Y100.;
N12 X-100. Y100.;
N13 X0 Y0 M33;
N14 # 13010 = # 100 + 0.5 (CHANGE VALUE = D10);
N15 G41 D10 G01 X-100 Y-100 F500 .;
N16 X-100. Y-200.;
N17 X-200. Y-200.;
N18 X-200. Y-100.;
N19 X-100. Y-100.;
N20 G40 X0 Y0;
M30;
In this program example, “O0001” is a program number, N01 to N20 are sequence numbers, “G90” is a preparation function code indicating an absolute command, “G00” is a preparation function code indicating a positioning command, and “G41” is a tool. In the diameter correction preparation function code, “D” in “D10” is a code for specifying a correction amount, and “D10” is a code for instructing to use the value of the offset
このプログラム例では、シーケンス番号「N02」で、オフセット番号10番の値で工具径補正をすることを指令し、シーケンス番号「N07」でこの工具径補正をキャンセルし、シーケンス番号「N13」で、M33のコードにより先読みを停止させ、シーケンス番号「N14」でカスタムマクロ変数によりオフセット番号10番の値を変更し、シーケンス番号「N15」で、この変更されたオフセット番号10番の値で工具径補正をすることを指令し、シーケンス番号「N20」でこの工具径補正をキャンセルするように指令したプログラムである。
In this program example, it is instructed to correct the tool radius with the value of the offset
又、次に示すプログラム例(以下この例をプログラム例2という)は、先読み再開許容ブロック数をパラメータ設定ではなく、プログラムで指令するときの例であり、シーケンス番号「N13」のコード「M33」に続くPコードで先読み再開許容ブロック数を指定するもので、この例では「5」が指定されている。他の指令は、プログラム例1と同じであり、先読みするブロック数(先読みバッファに格納される最大ブロック数)も30としておりプログラム例1と同じである。
プログラム例2
O0001;
N01 G90 G00 X0. Y0. ;
N02 G41 D10 G01 X100 Y100 F500.;
N03 X100. Y200. ;
N04 X200. Y200. ;
N05 X200. Y100. ;
N06 X100. Y100. ;
N07 G40 X0 Y0 ;
N08 G01 X-100 Y100.;
N09 X-100. Y200. ;
N10 X-200. Y200. ;
N11 X-200. Y100. ;
N12 X-100. Y100. ;
N13 X0 Y0 M33 P5 ;
N14 #13010 = #100 + 0.5(CHANGE VALUE=D10) ;
N15 G41 D10 G01 X-100 Y-100 F500.;
N16 X-100. Y-200. ;
N17 X-200. Y-200. ;
N18 X-200. Y-100. ;
N19 X-100. Y-100. ;
N20 G40 X0 Y0 ;
M30;
The following program example (hereinafter, this example is referred to as program example 2) is an example in which the prefetch resumable block number is instructed by a program instead of parameter setting, and the code “M33” of the sequence number “N13”. The pre-read resumable block number is designated by the P code following “5”. In this example, “5” is designated. Other commands are the same as in Program Example 1, and the number of blocks to be prefetched (the maximum number of blocks stored in the prefetch buffer) is also set to 30, which is the same as in Program Example 1.
Program example 2
O0001;
N01 G90 G00 X0. Y0.;
N02 G41 D10 G01 X100 Y100 F500 .;
N03 X100. Y200.;
N04 X200. Y200.;
N05 X200. Y100.;
N06 X100. Y100.;
N07 G40 X0 Y0;
N08 G01 X-100 Y100 .;
N09 X-100. Y200.;
N10 X-200. Y200.;
N11 X-200. Y100.;
N12 X-100. Y100.;
N13 X0 Y0 M33 P5;
N14 # 13010 = # 100 + 0.5 (CHANGE VALUE = D10);
N15 G41 D10 G01 X-100 Y-100 F500 .;
N16 X-100. Y-200.;
N17 X-200. Y-200.;
N18 X-200. Y-100.;
N19 X-100. Y-100.;
N20 G40 X0 Y0;
M30;
次に示すプログラム例3は、先読み再開を指令するコード「M32」を設けて、先読み再開を制御するときのプログラム例である。この例では、シーケンス番号「N08」に先読み再開を指令するコード「M32」が付加されている点で、プログラム例1と相違するのみである。
プログラム例3
O0001;
N01 G90 G00 X0. Y0. ;
N02 G41 D10 G01 X100 Y100 F500.;
N03 X100. Y200. ;
N04 X200. Y200. ;
N05 X200. Y100. ;
N06 X100. Y100. ;
N07 G40 X0 Y0 ;
N08 G01 X-100 Y100.M32;
N09 X-100. Y200. ;
N10 X-200. Y200. ;
N11 X-200. Y100. ;
N12 X-100. Y100. ;
N13 X0 Y0 M33 ;
N14 #13010 = #100 + 0.5(CHANGE VALUE=D10) ;
N15 G41 D10 G01 X-100 Y-100 F500.;
N16 X-100. Y-200. ;
N17 X-200. Y-200. ;
N18 X-200. Y-100. ;
N19 X-100. Y-100. ;
N20 G40 X0 Y0 ;
M30;
上述したプログラム例1〜3のいずれかを数値制御装置10のメモリ12に格納し、実行させたとき、CPU11は、先読み処理として図2に示す処理を所定周期毎実行する。 まず、先読み停止フラグFgが「1」にセットされているか判断する(ステップ100)。先読み停止フラグFgが「1」にセットされていれば、当該周期の処理を終了する。最初は初期設定でこの先読み停止フラグFgは「0」にセットされており、ステップ100から、ステップ101に移行して、先読みバッファにブロックの指令を解析した解析結果(実行データ)が指定された数まで格納され満杯か判断する(ステップ101)。この実施形態では、先読みバッファに30ブロック分の解析結果を記憶するものとなっており、30ブロックの解析結果が記憶されているか判断することになる。
The following program example 3 is a program example when a code “M32” for instructing resumption of prefetching is provided to control resumption of prefetching. This example is different from Program Example 1 only in that a code “M32” instructing resumption of prefetching is added to the sequence number “N08”.
Program example 3
O0001;
N01 G90 G00 X0. Y0.;
N02 G41 D10 G01 X100 Y100 F500 .;
N03 X100. Y200.;
N04 X200. Y200.;
N05 X200. Y100.;
N06 X100. Y100.;
N07 G40 X0 Y0;
N08 G01 X-100 Y100.M32;
N09 X-100. Y200.;
N10 X-200. Y200.;
N11 X-200. Y100.;
N12 X-100. Y100.;
N13 X0 Y0 M33;
N14 # 13010 = # 100 + 0.5 (CHANGE VALUE = D10);
N15 G41 D10 G01 X-100 Y-100 F500 .;
N16 X-100. Y-200.;
N17 X-200. Y-200.;
N18 X-200. Y-100.;
N19 X-100. Y-100.;
N20 G40 X0 Y0;
M30;
When any one of the above-described program examples 1 to 3 is stored in the memory 12 of the
30ブロックまで格納されていないときは、NCプログラムより1ブロック読み出し、該ブロックで指令されている指令を解析し、その解析結果(実行データ)を先読みバッファに格納する(ステップ102)。又、このブロックの指令がプログラムエンド(M30)か判断し(ステップ103)、プログラムエンドであれば、このプログラム処理を終了する。プログラムエンドでなければ、該ブロックで指令された中に先読み停止コード(M33)が含まれているか判断する(ステップ104)。先読み停止コードが含まれていなければ、当該周期の処理は終了する。以下、先読みバッファに格納できるブロック数(=30)の解析結果が格納されるまでステップ100〜104の処理を繰り返し実行する。 なお、後述するように、この先読みバッファに格納される解析結果(実行データ)は、本実行処理によって、先入れ先出し(FIFO)方式で1ブロック毎取り出される。すなわち、該先読みバッファに先に保存したブロックの解析結果(実行データ)が先に取り出され、該先読みバッファから取り出された解析結果(実行データ)は削除される。その結果、該先読みバッファに記憶する実行データ数は減少するが、この減少を上述したステップ100〜104の処理によって、先読みバッファに格納できるブロック数に達するまで、その解析結果(実行データ)が先読みバッファに格納されることになる。
When 30 blocks are not stored, one block is read from the NC program, the command commanded in the block is analyzed, and the analysis result (execution data) is stored in the prefetch buffer (step 102). Also, it is determined whether the command of this block is a program end (M30) (step 103). If it is not the program end, it is determined whether the prefetch stop code (M33) is included in the command in the block (step 104). If the prefetch stop code is not included, the processing of the cycle ends. Thereafter, the processing of
一方、ステップ104で、読み出したブロックに先読み停止コード(M33)が含まれていることが判別されると、該先読み停止コードと共に先読み再開許容ブロック数を指定するコード(Pコード)が含まれているか判別し(ステップ105)、含まれていれば、該先読み再開許容ブロック数を指定するコード(Pコード)で指令されたブロック数を許容ブロック数の内部変数にセットし(ステップ109)、先読み停止フラグFgを「1」にセットする(ステップ108)。一方、再開許容ブロック数を指定するコード(Pコード)が含まれてなければ、ステップ105からステップ106に移行し、再開許容ブロック数がパラメータに設定されているか判断する。パラメータで設定されていれば、この設定されたブロック数を許容ブロック数の内部変数にセットし(ステップ107)、先読み停止フラグFgを「1」にセットする(ステップ108)。
又、読み出したブロック中に再開許容ブロック数を指定するコード(Pコード)もなく、かつ、パラメータで先読み再開許容ブロック数が設定されてないときには、先読み停止フラグFgを「1」にセットして(ステップ108)、当該周期の処理を終了する。
On the other hand, if it is determined in
If there is no code (P code) for specifying the number of resumable blocks to be resumed in the read block, and the number of prefetching resumable blocks is not set in the parameters, the prefetch stop flag Fg is set to “1”. (Step 108), the processing of the cycle is terminated.
次の周期からは、先読み停止フラグFgが「1」にセットされていることから、NCプログラムの先読み処理は実行されず、ステップ100で該フラグFgが「1」となっていることを確認して当該処理の周期を終了する。その結果、先読み処理は停止することになる。
From the next cycle, since the prefetch stop flag Fg is set to “1”, the prefetch process of the NC program is not executed, and it is confirmed in
プログラム例1の場合は、再開許容ブロック数がパラメータで設定されている例であることから、シーケンス番号「N13」まで、先読みされ解析結果(実行データ)が先読みバッファに保存された時点で、M33の読み出したブロックに先読み停止コードが読み込まれることになり、かつ、パラメータで先読み再開許容ブロック数(5)が設定されているものであることから、ステップ104、105、106、107、108の処理が実行されることになる。
In the case of Program Example 1, since the number of allowable restart blocks is an example of a parameter, M33 is read when the analysis result (execution data) is prefetched up to the sequence number “N13” and saved in the prefetch buffer. Since the prefetch stop code is read into the read block and the prefetch resumable block number (5) is set in the parameter, the processing of
又、プログラム例2の場合は、シーケンス番号「N13」のブロックで先読み停止コードM33と共に「P5」としての先読み再開許容ブロック数を指定するコードが読み出されるので、ステップ104、105、109、108の処理が実行されることになる。
プログラム例3では、先読み再開許容ブロック数は、パラメータによる設定でもなく、又、プログラム指令でもないことから(このプログラム例3では、後述するようにシーケンス番号N08のブロックでM32のコードで先読み再開が指令される)、ステップ104、105、106、108の処理が実行されることになる。
In the case of the program example 2, since the code for designating the prefetch resumption allowable block number as “P5” is read together with the prefetch stop code M33 in the block of the sequence number “N13”, the
In Program Example 3, the prefetch resumable block number is neither set by a parameter nor a program command (in Program Example 3, prefetch restart is resumed with a code of M32 in a block of sequence number N08 as described later. Commanded), the processing of
このようにして、先読み停止フラグFgが「1」にセットされて、先読みが停止させられることから、プログラム例1〜3の場合、シーケンス番号N13のブロックの解析結果(実行データ)を先読みバッファに格納した後、先読み処理が停止されることになる。そして、後述する処理によって先読み停止フラグFgが「0」にセットされることによって、ステップ101以下の処理が開始され、再び先読み処理が開始されることになる。
In this way, since the prefetch stop flag Fg is set to “1” and the prefetch is stopped, in the case of the program examples 1 to 3, the analysis result (execution data) of the block with the sequence number N13 is stored in the prefetch buffer. After the storage, the prefetch process is stopped. Then, when the prefetch stop flag Fg is set to “0” by the process described later, the processes after
図3は、この第1の形態において、数値制御装置10のCPU11が所定周期(分配周期)毎に実行する本実行処理である。
まず、先読みバッファより1ブロックの解析結果(実行データ)を読み出し、該解析結果(実行データ)で指令された処理を従来と同様に行う(ステップ200)。次に先読み停止フラグFgが「1」にセットされているか判断し(ステップ201)、セットされていなければ、当該周期の処理は終了する。一方、停止フラグFgが「1」にセットされていれば、許容ブロック数の内部変数はセットされているか判別し(ステップ202)、セットされていれば、このセットされている数と、先読みバッファにこの時点で記憶する解析結果のブロック数が一致するか判別する(ステップ206)。一致しなければ、当該周期の処理は終了する。又、一致していると、先読み停止フラグFgを「0」にセットして、先読みを開始させる(ステップ205)。
FIG. 3 shows a main execution process executed by the CPU 11 of the
First, the analysis result (execution data) of one block is read from the prefetch buffer, and the process instructed by the analysis result (execution data) is performed in the same manner as in the prior art (step 200). Next, it is determined whether or not the prefetch stop flag Fg is set to “1” (step 201), and if not set, the processing in the cycle ends. On the other hand, if the stop flag Fg is set to “1”, it is determined whether the internal variable of the allowable block number is set (step 202). If it is set, the set number and the prefetch buffer are determined. It is determined whether the number of analysis result blocks stored at this time matches (step 206). If they do not match, the processing for the cycle ends. If they match, the prefetch stop flag Fg is set to “0” and prefetching is started (step 205).
プログラム例1ではパラメータにより、プログラム例2ではプログラムのPコード指令で、先読み再開許容ブロック数が「5」と指定され、許容ブロック数の内部変数にセットされていることから、ステップ206で、先読みバッファに記憶する解析結果のブロック数がこの先読み再開許容ブロック数5と一致するか判断することになる。図2に示した先読み処理で、シーケンス番号「N13」で先読み停止コードM33が読み込まれ、ステップ104〜108の処理を行って、先読み停止フラグFgが「1」にセットされ、シーケンス番号「N13」までの先読み処理が終了した時点で、先読み処理が停止していることから、シーケンス番号「N13」より5つ前のシーケンス番号「N08」の解析結果が読み出されたとき、図3のステップ206では、先読みバッファに記憶する解析結果のブロック数が「5」となり、先読み再開許容ブロック数と一致し、先読み停止フラグFgが「0」にセットされることになる。その結果、シーケンス番号「N08」の本実行処理が実行されると、先読み処理周期では、ステップ100からステップ101に移行し、ステップ101以下の先読み処理が実行されることになる。
In the
一方、ステップ202で、許容ブロック数の内部変数がセットされていないと判断されたときには、当該ブロックの解析結果より先読み停止コードM33を含むものか判断し(ステップ203)、先読み停止コードM33を含むものであれば、ステップ205に移行し、先読み停止フラグFgが「0」にセットする。また、先読み停止コードM33を含むものでなければ、先読み再開コードM32を含むものか判断する(ステップ204)。先読み再開コードM32を含むものでなければ、当該周期の処理を終了する。又、含むものであれば、先読み停止フラグFgを「0」にセットする(ステップ205)。
On the other hand, when it is determined in
すなわち、プログラム例3の場合は、先読み処理でシーケンス番号N13が読み出されたときに、先読み停止フラグFgが「1」にセットされ、先読みが停止している状態で、本実行処理において、シーケンス番号N08のブロックの指令を本実行したとき、該シーケンス番号N08のブロックに先読み再開コードM32が含まれていることがステップ204で判別されるから、先読み停止フラグFgが「0」にセットされることから、このシーケンス番号N08のブロックの指令を本実行した時点で先読み処理が再開されることになる。
That is, in the case of the program example 3, when the sequence number N13 is read in the prefetching process, the prefetching stop flag Fg is set to “1” and the prefetching is stopped. When the command for the block with the number N08 is actually executed, it is determined in
なお、ステップ203で先読み停止コードM33を含むブロックと判別され、ステップ205で先読み停止フラグFgを「0」にセットする処理は、先読み再開許容ブロック数が、パラメータでも、プログラム指令でも指定されておらず、かつ、先読み再開コードM32も指令されていないときに、先読み停止コードM33を含むブロックが先読み処理で読み込まれて先読み停止フラグFgを「1」にセットして、先読みを停止している状態において、このブロックの本実行を実行したとき先読み停止フラグFgを「0」にセットして先読みを再開させるものである。
In
上述した第1の態様では、パラメータ又はプログラムで指令する先読み再開許容ブロック数を変えることよって、又は、先読み再開コードM32をプログラムする箇所によって、先読み停止から先読み再開を速く行うことも、遅れて行うこともできるものである。しかも、先読みを停止するコードが挿入されたブロックの実行が終了する前に先読み処理が開始されるものであるから、速度が0となることはなく加工時間も短縮できるものである。又、再開許容ブロック数を指定せず、先読み再開コードM32もプログラムしない場合では、先読みバッファに残るブロックが0となるまで遅らせる(最大限の遅れ)こともできるものである。ただしこの場合は、先読み停止したブロックと次のブロック間で速度0の状態が発生する。 In the first aspect described above, the prefetching restart from the prefetching stop is quickly performed by changing the number of prefetching resumption allowable blocks specified by a parameter or a program, or depending on the location where the prefetching resume code M32 is programmed. It is also possible. Moreover, since the prefetching process is started before the execution of the block in which the code for stopping the prefetching is inserted, the speed does not become zero and the processing time can be shortened. In the case where the number of allowable restart blocks is not specified and the prefetch restart code M32 is not programmed, the block remaining in the prefetch buffer can be delayed until it reaches 0 (maximum delay). In this case, however, a state of zero speed occurs between the block in which prefetching is stopped and the next block.
図4は本発明の第2の形態における先読み処理のアルゴリズムを示すフローチャートである。前述した第1の形態では、先読み処理を停止させるコード(M33)と、先読み再開ブロック数をプログラム指令(Pコード)か、パラメータで設定するか、さらには、コード(M32)によって先読み処理を再開させる時点を指定したが、この第2の形態では、ブロックでのカスタムマクロ変数の変更指令によって、先読み処理を停止させ、又、該指令コードの内容と先読みバッファに残るブロックの指令のコードに基づいて先読み処理の再開を自動的に行うようにしたものである。 FIG. 4 is a flowchart showing an algorithm for prefetching processing according to the second embodiment of the present invention. In the first embodiment described above, the code (M33) for stopping the prefetching process, the number of prefetching restart blocks is set by a program command (P code) or a parameter, and the prefetching process is resumed by the code (M32). In this second form, the prefetching process is stopped by a custom macro variable change command in the block, and based on the content of the command code and the code of the block command remaining in the prefetch buffer. The prefetching process is automatically resumed.
又、この第2の形態で使用するNCプログラムの例を次にプログラム例4として示す。この第2の形態をこのプログラム例4を参照しながら、図4の処理フローチャートと共に説明する。 An example of the NC program used in the second form is shown as program example 4 below. The second embodiment will be described with reference to the program example 4 together with the processing flowchart of FIG.
プログラム例4
O0001;
N01 G90 G00 X0. Y0. ;
N02 G41 D10 G01 X100 Y100 F500.;
N03 X100. Y200. ;
N04 X200. Y200. ;
N05 X200. Y100. ;
N06 X100. Y100. ;
N07 G40 X0 Y0 ;
N08 G01 X-100 Y100.M32;
N09 X-100. Y200. ;
N10 X-200. Y200. ;
N11 X-200. Y100. ;
N12 X-100. Y100. ;
N13 X0 Y0 ;
N14 #13010 = #100 + 0.5(CHANGE VALUE=D10) ;
N15 G41 D10 G01 X-100 Y-100 F500.;
N16 X-100. Y-200. ;
N17 X-200. Y-200. ;
N18 X-200. Y-100. ;
N19 X-100. Y-100. ;
N20 G40 X0 Y0 ;
M30;
このプログラム例4では、シーケンス番号N02に指令されているG41コードで工具径補正機能が有効になり、その補正量がDコードで指定された量となる。そして、シーケンス番号N07の工具径補正キャンセルの指令(G40)が実行されるまでは工具径補正モードである。
一方、先読み処理の場合、先読みバッファに先読み最大ブロック数(この実施形態では30と設定されている)まで、事前にNCプログラムから先読みされブロックの指令の解析結果が保存されることから、シーケンス番号N14のブロックで指令されたカスタムマクロ変数による計算によりDコードで指令されたオフセット番号10番の値の変更が、先読み処理の解析で事前に行われることから、シーケンス番号N02のブロックの解析結果(実行データ)を先読みバッファから読み出し、本実行される前にD10コード指令された値が変更されてしまうので、シーケンス番号N02〜N07までの動作(加工)が誤った動作(加工)になってしまうという問題がある。
Program example 4
O0001;
N01 G90 G00 X0. Y0.;
N02 G41 D10 G01 X100 Y100 F500 .;
N03 X100. Y200.;
N04 X200. Y200.;
N05 X200. Y100.;
N06 X100. Y100.;
N07 G40 X0 Y0;
N08 G01 X-100 Y100.M32;
N09 X-100. Y200.;
N10 X-200. Y200.;
N11 X-200. Y100.;
N12 X-100. Y100.;
N13 X0 Y0;
N14 # 13010 = # 100 + 0.5 (CHANGE VALUE = D10);
N15 G41 D10 G01 X-100 Y-100 F500 .;
N16 X-100. Y-200.;
N17 X-200. Y-200.;
N18 X-200. Y-100.;
N19 X-100. Y-100.;
N20 G40 X0 Y0;
M30;
In this program example 4, the tool radius correction function is enabled by the G41 code commanded to the sequence number N02, and the correction amount is the amount specified by the D code. The tool radius correction mode is continued until the command (G40) for canceling the tool radius correction of sequence number N07 is executed.
On the other hand, in the case of the prefetching process, the analysis result of the block command is prefetched from the NC program and stored in advance in the prefetching buffer up to the maximum number of prefetching blocks (set to 30 in this embodiment). Since the change of the value of the offset
このような問題を解決するために、この第2の形態では、シーケンス番号N14のブロックで指令されたカスタムマクロ変数で補正値等の変数が変更されるような指令のブロックを先読みしたとき、先読みバッファにすでに保存されたブロック中の、このカスタムマクロ変数の処理によって影響を受けるもの又は影響を与えるコードを含むブロックの指令があるような場合、そのブロックの指令の解析処理は行わず、すなわち、カスタムマクロ変数の処理は行わず、このブロックの指令の手前で先読み処理を停止して、上述したような不具合をなくすようにしたものである。 In order to solve such a problem, in the second embodiment, when a command block in which a variable such as a correction value is changed by a custom macro variable commanded in the block of sequence number N14 is prefetched, If there is a block directive in the block already stored in the buffer that contains a code that is affected by or affected by this custom macro variable processing, that block's directive analysis is not performed, i.e. The custom macro variable processing is not performed, and the prefetching processing is stopped before the command of this block so as to eliminate the above-described problems.
数値制御装置10のCPU11は所定周期毎、図4に示す先読み処理を実行し、まず、先読み停止フラグFgが「1」にセットされているか判断する(ステップ300)。最初は、初期設定で「0」にセットされていることから、ステップ301に移行し、先読みバッファに先読み最大ブロック数(この実施形態では30と設定されている)まで保存されているか(先読みバッファは満杯か)判別し、最大ブロック数30に達しているときには、この先読み処理周期の処理を終了する。又、最大ブロック数30に達していないときには、NCプログラムより1ブロックの指令を読み出して解析する(ステップ302)。そして、このブロックの指令がプログラムエンドを示す指令であれば、このプログラム処理を終了する(ステップ303)。プログラムエンドでなければ、先読みバッファに保存されているブロックを検索し、当該ブロックの処理が、先読みバッファに保存されているブロックの指令の処理に影響を与えるか又はこの先読みバッファに保存されているブロックの指令の処理によって、当該ブロックの処理が影響を受けるか判断する(ステップ304)。先読みバッファに保存されたブロックの解析結果に当該ブロックの処理に影響を受ける、又は影響を与えるコードがあれば、当該ブロックの解析と先読みバッファへの保存の先読み処理を停止し、先読み停止フラグFgを「1」にセットしこの先読み処理周期の処理を終了する。
The CPU 11 of the
又、先読みバッファに保存されたブロックの指令の処理に影響を与える又は影響を受けるコードが含まれていなければ、ステップ302で読み込んだブロックの解析を続行し、解析を終了して得られたブロックの解析結果(実行データ)を先読みバッファに保存して当該周期の処理を終了する(ステップ305)。
If the code that affects or affects the processing of the block command stored in the prefetch buffer is not included, the analysis of the block read in
一方、先読み停止フラグFgが「1」にセットされていると判断されたときには(ステップ300)、先読みバッファに保存されているブロックを検索し、ステップ308でブロックの指令の解析とその解析結果を先読みバッファへの保存する処理を停止したその要因となるコードを有するブロックが先読みバッファに保存されているブロック中に存在するか判断する(ステップ306)。存在しなければ、先読み停止フラグFgが「0」にセットして(ステップ307)、ステップ301に移行する。又、解析と先読みバッファへの保存処理を停止した要因のコードを有するブロックが存在すれば、先読み停止フラグFgを「1」にセットしたまま当該周期の処理を終了し、ブロックの先読み処理を停止した状態を保持する。
On the other hand, when it is determined that the prefetch stop flag Fg is set to “1” (step 300), the block stored in the prefetch buffer is searched, and in
プログラム例4で説明すると、シーケンス番号N14のブロックの先読み処理を実行すると、前述したようにカスタムマクロ変数の計算を先読み処理のブロックの解析で、工具径補正値を変更することになるから、シーケンス番号N02で使用するD10コードの値が、このシーケンス番号N02のブロックの指令を本実行する前に、変更されることになり誤動作、誤加工となるが、この第2の実施形態では、このような先読みされたブロックの指令の処理に影響を与える指令を先読み処理で解析したとき、先読み停止フラグFgを「1」にセットしその先読み処理を停止し(ステップ308)、その後、既に先読みバッファに保存されているブロックを1ブロックずつ本実行していき、その1ブロックずつ本実行した後で、現在先読みバッファに残っているブロック中に、シーケンス番号N14で先読み停止の要因となったDコードの内容を使用する処理がなくなったかを検索する(ステップ306)。このプログラム例4ではシーケンス番号N07のブロックの本実行が終了した時点では、先読みバッファに残るシーケンス番号N08〜N13までの先読みされたブロック中には、Dコードを使用するプログラムがないことを検出できるので、シーケンス番号N07のブロックの本実行の終了したことをもって、シーケンス番号N14から先読みを自動的に再開することになる。 As described in Program Example 4, when the pre-reading process of the block with the sequence number N14 is executed, the tool radius compensation value is changed by the analysis of the pre-reading process block for the calculation of the custom macro variable as described above. The value of the D10 code used in the number N02 is changed before the actual execution of the block command of the sequence number N02, resulting in malfunction and erroneous processing. In the second embodiment, this is the case. When a command that affects the processing of a prefetched block command is analyzed in the prefetch processing, the prefetch stop flag Fg is set to “1” and the prefetch processing is stopped (step 308). The stored block is executed one block at a time, and after executing this block one by one, the current read-ahead backup is executed. In the block remaining in §, the process of using the contents of D code that caused the prefetch stopping the sequence number N14 To find out disappeared (step 306). In this program example 4, when the execution of the block with the sequence number N07 is finished, it can be detected that there is no program using the D code in the prefetched blocks with the sequence numbers N08 to N13 remaining in the prefetch buffer. Therefore, pre-reading is automatically restarted from the sequence number N14 when the execution of the block of the sequence number N07 is completed.
上述したプログラム例4では、一度指令を出した後、その指令を打ち消すような指令が出されるまで、その都度指令することなく有効に作用する工具径補正などのモーダルに作用するモーダルタイプの指令に対して適用したものであるが、ブロックの先読み処理によって、他のブロックの指令の処理に影響を与える又は影響を受けるものに、送り軸等の機械座標値を読み込む指令などがある。
次に示すプログラム例5は、この機械座標値を読み込むカスタムマクロ変数による指令があるとき、本発明のこの第2の形態を適用して、誤りなく読み出すことができるようにした例である。
In the above-described program example 4, after a command is issued once, a modal type command that acts on a modal such as tool radius correction that works effectively without giving a command each time until a command that cancels the command is issued. Although applied to the above, there are commands for reading machine coordinate values such as feed axes, etc. that affect or are affected by the command processing of other blocks by block prefetching processing.
The following program example 5 is an example in which when there is a command by a custom macro variable for reading this machine coordinate value, the second form of the present invention is applied so that it can be read without error.
プログラム例5
O0001;
N01 G90 G00 X0. Y0. Z0;
N02 G01 X100 Y100 F500.;
N03 X100. Y200. ;
N04 X200. Y200. ;
N05 X200. Y100. ;
N06 X100. Y100. ;
N07 X0 Y0 ;
N08 G01 Y100 Z100. F1000.;
N09 Y100. Z300.;
N10 Y300. Z300. ;
N11 Y300. Z100. ;
N12 Y100. Z100. ;
N13 Y0 Z0 ;
N14 #100=#5021+#200 + 0.5(CHANGE MCN) ;
N15 G53 X#100. ;
M30;
シーケンス番号N14における#5021は第1軸の機械座標を読み込むカスタムマクロ変数であり、このブロックの指令は、カスタムマクロ変数#5021に読み込んだ第1軸の機械座標にカスタムマクロ変数#200の値を加算し、さらに0.5を加算した値をカスタムマクロ変数#100に格納するという指令である。又、シーケンス番号N14までには先読み停止する意味をもったコードを挿入していない状態とし、先の例と同様にプログラムの先読み制御のブロック数が30と設定されている。
Program example 5
O0001;
N01 G90 G00 X0.Y0.Z0;
N02 G01 X100 Y100 F500 .;
N03 X100. Y200.;
N04 X200. Y200.;
N05 X200. Y100.;
N06 X100. Y100.;
N07 X0 Y0;
N08 G01 Y100 Z100. F1000 .;
N09 Y100. Z300 .;
N10 Y300. Z300.;
N11 Y300. Z100.;
N12 Y100. Z100.;
N13 Y0 Z0;
N15 G53 X # 100.;
M30;
In the sequence number N14, # 5021 is a custom macro variable for reading the machine coordinate of the first axis, and the command of this block sets the value of the custom
このプログラム例5においては、シーケンス番号N01からN07までに第1軸のX軸が移動していることから、これらのシーケンス番号のブロックの指令を実行中にはX軸の機械座標は不定である。そこで、シーケンス番号N14のブロックを先読みしコード解析を行った時、シーケンス番号N01からN07のブロックの指令を本実行中であると、機械座標は変化しているので、間違った機械座標でシーケンス番号N14のブロックの指令による計算が行われることになる。 In this program example 5, since the X-axis of the first axis has moved from sequence numbers N01 to N07, the machine coordinates of the X-axis are indefinite while executing commands for blocks of these sequence numbers. . Therefore, when the block of sequence number N14 is pre-read and code analysis is performed, if the commands of the blocks of sequence numbers N01 to N07 are being executed, the machine coordinates have changed. Calculation is performed according to the command of the block N14.
そこで、本第2の形態ではシーケンス番号N14のブロックを先読みしコード解析した時に、このブロックの処理に影響を与える処理のブロックが先読みバッファに記憶する中にあるか判断して、存在するような場合は、先読みを停止して、影響がなくなった時点で、このブロックの指令から先読み処理を実行するものである。 Therefore, in the second embodiment, when the block of sequence number N14 is prefetched and code analysis is performed, it is determined whether there is a block of processing that affects the processing of this block being stored in the prefetch buffer. In this case, the prefetching is stopped and the prefetching process is executed from the command of this block when the influence is lost.
すなわち、先読み処理により、シーケンス番号N01から順次先読みされその指令が解析されて解析結果が先読みバッファに保存されていく。一方、本実行処理により、この先読みバッファに格納されたシーケンス番号N01のブロックの解析結果(実行データ)から順次読み出し実行していく。そして、先読み処理でシーケンス番号N14のブロックの指令を読み出し解析したとき、図4のステップ304で、該ブロックの指令に影響を受ける指令のブロックが先読みバッファに残っているブロック中にあるか判断する。すなわち、X軸の移動をともなったコードを使用するブロックが先読みバッファに残っていないか判断する。残っていなければ、X軸の移動はないものであるから、X軸の位置は変化がなくシーケンス番号N14のブロックのコードを解析し実行データを作成して先読みバッファに保存しても問題はない(ステップ305)。又、X軸の移動をともなったコードを使用するブロックが先読みバッファに残っている場合には、当該シーケンス番号N14のブロックの指令の解析処理を停止し、先読み停止フラグFgを「1」にセットして先読み処理を停止する(ステップ308)。 That is, by prefetching processing, the sequence number N01 is prefetched sequentially, the command is analyzed, and the analysis result is stored in the prefetch buffer. On the other hand, this execution process sequentially reads and executes from the analysis result (execution data) of the block of sequence number N01 stored in the prefetch buffer. When the command of the block with the sequence number N14 is read and analyzed in the prefetch process, it is determined in step 304 of FIG. 4 whether there is a command block affected by the command of the block in the block remaining in the prefetch buffer. . That is, it is determined whether or not a block using a code accompanied by movement of the X axis remains in the prefetch buffer. If it does not remain, there is no movement of the X-axis, so there is no problem if the position of the X-axis does not change and the code of the block with the sequence number N14 is analyzed to generate execution data and save it in the prefetch buffer. (Step 305). If a block that uses a code accompanied by movement of the X axis remains in the prefetch buffer, the analysis processing of the command of the block with the sequence number N14 is stopped, and the prefetch stop flag Fg is set to “1”. Then, the prefetch process is stopped (step 308).
その後、ステップ306で、X軸の移動をともなったコードを使用するブロックが先読みバッファに残っていないか判断する。本実行によって先読みバッファに保存されたブロックが順次減少し、X軸の移動をともなったコードを使用するブロックがなくなると、先読み停止フラグFgを「0」にセットし(ステップ307)、先読み処理を再開し、停止していたシーケンス番号N14のブロックの指令の解析及び先読みバッファへの保存処理を行う(ステップ301〜305)。
Thereafter, in
以上説明した第2の形態では、工具径補正などのモーダルで作用するデータの内容が変更されるときの指令や、機械座標値を読み出し、その読み出した値に基づいて計算処理を行う指令で、この指令により、先読みバッファに残るブロックの指令に影響を与えるとき、または、先読みバッファに残るブロックの指令で影響を受けるとき、先読み処理を停止し、この影響を受ける又は影響を与える指令を含むブロックが先読みバッファに記憶されなくなった時点で、先読み処理を再開するようにして、誤った動作を防止するようにしたが、このような、モーダルで作用する指令の変更や機械座標の読み取り処理等以外にも、そのブロックの先読み処理を実行することによって、先読みバッファに残るブロックの指令で影響を受けるときや影響を与える指令に対して、この第2の形態は適用できるものである。又、この第2の態様では、変数が一旦確定してもその後変更されるような場合でも、その変更によって、誤動作が生じないように、先読み処理を停止して変数の変更による誤った影響が発生しない状態を確認して先読み処理が再開されるので、誤動作、誤加工を確実に防止することができる。 In the second embodiment described above, a command when the content of data acting in a modal such as tool radius correction is changed, or a command for reading a machine coordinate value and performing a calculation process based on the read value, When this command affects the command of the block remaining in the prefetch buffer, or when it is affected by the command of the block remaining in the prefetch buffer, the prefetch processing is stopped, and the block including the command that is affected or affected by this When the no longer stored in the prefetch buffer, the prefetch process was restarted to prevent erroneous operations. However, other than such changes to commands that act modally or machine coordinate read processing, etc. In addition, by executing the prefetch process for that block, it can be affected or affected by the command of the block remaining in the prefetch buffer. Relative obtain command, the second embodiment is applicable. Also, in this second aspect, even if a variable is fixed once and then changed, the pre-reading process is stopped and erroneous influence due to the change of the variable is prevented so that a malfunction does not occur due to the change. Since the pre-reading process is resumed after confirming the non-occurring state, it is possible to reliably prevent malfunctions and erroneous machining.
10 数値制御装置
21 位置・速度検出器
22 ポジションコーダ
M サーボモータ
SM 主軸モータ
10 Numerical controller 21 Position / speed detector 22 Position coder M Servo motor SM Spindle motor
Claims (5)
NCプログラムから先読みを停止させるコードが挿入されたブロックが読み出されると前記先読み処理を停止させる手段と、
前記バッファに残るブロック数が指定されている先読み再開許容ブロック数と一致したか判別する判別手段と、
該判別手段で前記バッファに残るブロック数と前記再開許容ブロック数が一致したことが判別されると、前記先読み処理を再開させる手段と、
を備えることを特長とする数値制御装置。 Pre-reads the commands of each block of the NC program sequentially, analyzes the commands, executes pre-read processing for storing the analysis results in a buffer, and sequentially extracts the analysis results stored in the buffer one block at a time from the buffer In the numerical controller that deletes and executes the command of the block,
Means for stopping the prefetching process when a block in which a code for stopping prefetching is inserted is read from the NC program;
Determining means for determining whether or not the number of blocks remaining in the buffer matches the number of prefetch resumption allowable blocks specified;
Means for resuming the prefetching process when it is determined by the determining means that the number of blocks remaining in the buffer matches the number of resumable blocks;
A numerical control device characterized by comprising:
前記先読みバッファより先読みを停止させるコードが挿入されたブロックが読み出されると前記先読み処理を停止させる手段と、
NCプログラムから先読み再開コードが読み出されると前記先読み処理を再開させる手段と、
を備えることを特長とする数値制御装置。 Pre-reads the commands of each block of the NC program sequentially, analyzes the commands, executes a pre-read process for storing the analysis results in a buffer, extracts the analysis results stored in the buffer for each block, and sends the commands for the blocks In the numerical controller to be executed,
Means for stopping the prefetching process when a block in which a code for stopping prefetching is inserted is read from the prefetching buffer;
Means for resuming the prefetching process when a prefetching resume code is read from the NC program;
A numerical control device characterized by comprising:
カスタムマクロ変数を変更するブロックの指令が読み込まれたとき、前記先読みバッファに保存されているブロックを検索して、このカスタムマクロ変数に関係するコードを検出する第1の検索手段と、
該第1の検索手段で前記カスタムマクロ変数に関係するコードを検出したら、当該解析中のブロックの解析とその解析結果の先読みバッファへの保存を停止すると共に、NCプログラムのブロックの前記先読み処理を停止させる先読み停止手段と、
該先読み停止手段で先読み処理が停止されているときに、前記バッファに残されているブロックを検索して、前記カスタムマクロ変数に関係するコードを検出する第2の検索手段と、
該第2の検索手段で、前記カスタムマクロ変数に関係しているコードが含まれていないことが判定されたとき、前記解析を停止し先読みバッファへの解析結果の保存を停止したブロックから先読み処理を再開させる手段と、
を備えたことを特長とする数値制御装置。
Pre-reads the commands of each block of the NC program sequentially, analyzes the commands, executes pre-read processing for storing the analysis results in a buffer, and sequentially extracts the analysis results stored in the buffer one block at a time from the buffer In the numerical controller that deletes and executes the command of the block,
A first search means for searching for a block stored in the prefetch buffer and detecting a code related to the custom macro variable when a command of a block for changing the custom macro variable is read;
When the code relating to the custom macro variable is detected by the first search means, the analysis of the block under analysis and the storage of the analysis result in the prefetch buffer are stopped, and the prefetch processing of the NC program block is performed. Prefetch stop means for stopping;
A second search means for searching for a block remaining in the buffer and detecting a code related to the custom macro variable when the prefetch processing is stopped by the prefetch stop means;
When the second search means determines that the code related to the custom macro variable is not included, the prefetch processing is started from the block in which the analysis is stopped and the storage of the analysis result in the prefetch buffer is stopped. Means for resuming
A numerical control device characterized by comprising
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006209964A JP2008040542A (en) | 2006-08-01 | 2006-08-01 | Numerical value control device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006209964A JP2008040542A (en) | 2006-08-01 | 2006-08-01 | Numerical value control device |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2008040542A true JP2008040542A (en) | 2008-02-21 |
Family
ID=39175511
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006209964A Pending JP2008040542A (en) | 2006-08-01 | 2006-08-01 | Numerical value control device |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2008040542A (en) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE102014015007A1 (en) | 2013-10-18 | 2015-04-23 | Fanuc Corporation | Numerical control with program prefetching function |
CN104950819A (en) * | 2015-05-05 | 2015-09-30 | 安徽工程大学 | Electrical control system of numerically-controlled machine tool |
DE102017004366A1 (en) | 2016-05-12 | 2017-11-16 | Fanuc Corporation | Numerical control device |
JP2017224137A (en) * | 2016-06-15 | 2017-12-21 | ファナック株式会社 | Numerical controller and variable determination method |
CN109388107A (en) * | 2017-08-10 | 2019-02-26 | 欧姆龙株式会社 | Control device |
CN111123841A (en) * | 2018-10-31 | 2020-05-08 | 发那科株式会社 | Numerical controller |
JP2021009425A (en) * | 2019-06-28 | 2021-01-28 | ファナック株式会社 | Numerical control device |
-
2006
- 2006-08-01 JP JP2006209964A patent/JP2008040542A/en active Pending
Cited By (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE102014015007A1 (en) | 2013-10-18 | 2015-04-23 | Fanuc Corporation | Numerical control with program prefetching function |
US10191472B2 (en) | 2013-10-18 | 2019-01-29 | Fanuc Corporation | Numerical controller provided with program pre-reading function |
CN104950819B (en) * | 2015-05-05 | 2018-02-02 | 安徽工程大学 | Digit Control Machine Tool electric control system |
CN104950819A (en) * | 2015-05-05 | 2015-09-30 | 安徽工程大学 | Electrical control system of numerically-controlled machine tool |
CN107368039B (en) * | 2016-05-12 | 2020-06-23 | 发那科株式会社 | Numerical controller |
DE102017004366B4 (en) | 2016-05-12 | 2020-06-18 | Fanuc Corporation | Numerical control device |
DE102017004366A1 (en) | 2016-05-12 | 2017-11-16 | Fanuc Corporation | Numerical control device |
CN107368039A (en) * | 2016-05-12 | 2017-11-21 | 发那科株式会社 | Numerical control device |
JP2017204188A (en) * | 2016-05-12 | 2017-11-16 | ファナック株式会社 | Numerical controller comprising processing program prefetch start function by condition specification |
US10338570B2 (en) | 2016-05-12 | 2019-07-02 | Fanuc Corporation | Numerical controller |
US10416652B2 (en) | 2016-06-15 | 2019-09-17 | Fanuc Corporation | Numerical controller and method for determining look-ahead variable |
CN107526334B (en) * | 2016-06-15 | 2020-01-07 | 发那科株式会社 | Numerical controller and variable determination method |
JP2017224137A (en) * | 2016-06-15 | 2017-12-21 | ファナック株式会社 | Numerical controller and variable determination method |
CN107526334A (en) * | 2016-06-15 | 2017-12-29 | 发那科株式会社 | Numerical control device and change amount determination operation |
US11137740B2 (en) | 2016-06-15 | 2021-10-05 | Fanuc Corporation | Numerical controller and method for determining look-ahead variable |
CN109388107A (en) * | 2017-08-10 | 2019-02-26 | 欧姆龙株式会社 | Control device |
CN111123841A (en) * | 2018-10-31 | 2020-05-08 | 发那科株式会社 | Numerical controller |
CN111123841B (en) * | 2018-10-31 | 2023-08-29 | 发那科株式会社 | Numerical controller |
JP2021009425A (en) * | 2019-06-28 | 2021-01-28 | ファナック株式会社 | Numerical control device |
JP7260420B2 (en) | 2019-06-28 | 2023-04-18 | ファナック株式会社 | Numerical controller |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP2009530B1 (en) | Numerical controller having function of resuming look-ahead of block | |
JP2008040542A (en) | Numerical value control device | |
CN107368039B (en) | Numerical controller | |
US7206659B2 (en) | Numerical controller | |
JP5715217B2 (en) | Numerical control device with program prefetching function | |
US7590458B2 (en) | Conversational numerical control apparatus | |
JP4374045B2 (en) | Numerical control device with program restart function | |
US7254461B2 (en) | Numerical controller having a function of learning control | |
JP2014063389A (en) | Numerical control device having inter-system waiting function | |
JP2017151633A (en) | Numerical control device having taper angle correction function in taper processing in skiving processing | |
JP2004326618A (en) | Numerical control device of machine tool | |
JP5339815B2 (en) | Numerical control device with processing resumption function | |
JP2014026430A (en) | Numerical control device having function to display differences in status at suspension and at restart of machining | |
US11048222B2 (en) | Numerical control device | |
JP2006227894A (en) | Cut resumption method, cutting system and cutting controller | |
JP6823032B2 (en) | Program modifier | |
JP2009110223A (en) | Numerical control device, numerical control program, and storage medium storing numerical control program | |
WO2022244072A1 (en) | Numerical control device and computer-readable storage medium | |
JP2009075727A (en) | Numerical controller, numerical control program, and storage medium storing numerical control program | |
US11112774B2 (en) | Numerical controller | |
WO2024003972A1 (en) | Program optimization device and storage medium | |
WO2022219701A1 (en) | Numerical control device | |
WO2024003990A1 (en) | Program optimization device and storage medium | |
JPH01197813A (en) | Position controller for motor | |
JP6568152B2 (en) | Numerical controller |