|

解決済みの質問

一時停止プログラムの作成

いつも皆さんのご意見参考にさせて頂いています。

今日はプログラムについて教えて頂きたいのですが。

先日よりMCの3D加工で悩んでいます・・

粗取り時間が20時間と長いので工具のチップがもたなくて
2本ダメにしてしまいました。

日中に加工が終われば良いのですが、夜も掛けて帰って
数時間後に見に来ると刃先がなくなっていました。

それで、4時間ほどでチップが駄目になるので
その前に一時停止するプログラムを作りたいのですが・・・

NCはファナックの0Mです。

今までCAD・CAMに頼っていたのでイマイチ要領がつかめません。

作りたいプログラムは、加工途中でZを50mm上げて主軸、切削油停止。
サイクルスタートで元の位置まで戻り、再加工。

と言う様なプログラムを作り、編集ソフトで3時間ほどの所に
そのプログラムを挿入したいと思っています。

どなたかご教授よろしくお願いします。

投稿日時 - 2008-02-25 11:53:00

QNo.9460730

すぐに回答ほしいです

質問者が選んだベストアンサー

cam があるのなら 一番無難で、手っ取り早い方法 私もやってた方法ですが

私の場合、工具交換ですが

0~10MM切り込むとする

1・・・0~3MMのプログラムを作る・・・工具1
2・・・2.9~6MMのプログラムを作る・・・工具2
3・・・5.9~10MMのプログラムを作る・・・工具3

これらを、合体させればいいわけです
とめるときは、間にM00またはM01を入れれば止まります

オーバーラップさせるのは、気休めです

ヘッダーの中身は、機械によって違うのでなんとも言えませんが

M30 エンドオブテープ と% は消しておいたほうが良いです

例 2本合体の場合

一本目のプログラム
%



M30 ← これを消す
%  ← これを消す

間に
M00 または M01 を入れる

2本目
% ← これを消す




M30 ← 残す 3本目があれば消す
%  ← 残す 3本目があれば消す

です


一時停止時は、いつものプログラム終了時(加工完了)と同じ状況で止まります
再スタートも、いつもの加工の時と同じ状態で始まりますから安心です

たぶん一番悩まなくて、簡単な方法だと思います

例で文の場合
そこでもいいのですが、
%をそのままM01 に変換したほうがミスは有りません

投稿日時 - 2008-02-25 12:50:00

お礼

早速のご回答ありがとうございます。

3つのプログラムに分けて作ると言う事ですね、早速先程作ってみました。

それで、1つ目。2つ目のプログラムの最後のM30は消しますよね?

下記のようなプログラムで良いのでしょうか?
シミュレーションでは問題無い様に見えましたが・・・



M09
M05
G91G28Z0
G30X0Y0
T01
M06
%    ここで1つ目のプログラムが終わってます。
G91G28Z0
G30X0Y0
G00G17G40G80
T2
M6
/M01   M01の場所はこの行でOKでしょうか?
G90G54G0X@@@Y@@@





お忙しい中もし、追加回答頂ければ幸いです。

丁寧な説明ありがとうございました。
お陰様で無事に加工終了しました。

また、困った時はよろしくお願いします^^

投稿日時 - 2008-02-25 18:15:00

  •   
  • 回答(4)

    ANo.4

    回答(3)さんに補足要求です。

    >マクロのモーダル呼び出しをかけて、各ブロックが終了する度に経過時間を確認して、
    >タイマーが超過した時点で、工具退避及び「M0」を実行するというのが世話無い様に思います.

    本質問のような3D加工で、このような処理をモーダル呼び出しで行うと、オーバーヘッドにより肝心の加工のほうに支障があると考えますが、回答(3)さんは実際にこのような運用をされたことがおありですか?

    投稿日時 - 2008-02-27 12:27:00

    ANo.3

    カスタムマクロが付いているのであれば、
    マクロのモーダル呼び出しをかけて、各ブロックが終了する度に経過時間を確認して、
    タイマーが超過した時点で、工具退避及び「M0」を実行するというのが世話無い様に思います.
    たぶんプログラムの1ブロック(1行)が終了するまでに何時間と掛かるという事はまずないと思いますので.

    例えば、G66P8888 というブロックを挿入しておけば、以降、G67が実行されるまで、
    各ブロックが終了する毎に、マクロとしてサブプログラムO8888が実行される様になります.
    Tコードにより工具が割り出された後、最初のG01/G02/G03の前にそれを挿入しておき、
    その工具での加工が終了する行にG67を追加すれば、そこまでの全ブロックでそのマクロが呼び出される事になります.

    NCの方にはおそらく、ミリ秒カウンタというのがあるハズで、マクロのシステム変数として読み書きできます.
    G66を実行する前に、そのカウンタに0を書き込むなどすれば、そこから2^31ミリ秒未満の時間は勘定できる算段になります.
    座標も、システム変数として読み取りできます.
    この値を予めローカル変数に保存しておき、「M0」の後で、Z#○○の様に保存した変数番号を指定すれば、
    Z軸座標を退避前の場所に戻す事ができるハズです.

    M0は通常、主軸は停止させますが、クーラントまで止まるかどうかは機械の仕様次第です.
    また、M0の後で、再スタートした際に主軸が自動的に再始動するかどうかも機械の仕様次第だと思います.

    投稿日時 - 2008-02-25 19:14:00

    お礼

    高度な説明ありがとうございます。

    自分のスキルが上がって試せる日が来るようにがんばってみます。

    投稿日時 - 2008-02-28 07:51:00

    ANo.2

    最新のNCでは、工具寿命を設定しておいて、それが尽きたら新しいものに自動交換する機能があったように思いますが、、、
    古い機械でも、Fに機械メーが特別仕様を要求して、実際の切削長さを累計する機能を持つモノもあります。

    これらが無ければ、パラメータのタイマーを読み取って一時停止させることは可能です。
    それより、工具交換させて加工を連続させた方が良いでしょう。
    但しDNCで大量に吐き出されるプログラムをどう変えるかのやり方は判りません。

    ●プログラム中に適当な区切りでサブプログラムまたはマクロ呼び出しを挿入しておく
    ●このプログラム中でタイマーを読取り、指定時間内ならメインへ復帰するだけ。
    時間超過なら、現在地保存→Z上昇→工具交換→工具長補正更新→タイマーのリセット→主軸回転→メインへ復帰

    こんな手順でしょうか。。。

    投稿日時 - 2008-02-25 13:47:00

    お礼

    取り説にも工具寿命設定と言うのが書いてありましたが
    オプションらしいです・・この機械には付いていませんでした。

    確かに工具番号を変えて違う粗取り工具での加工も良いかもしれません。
    これなら、プログラムを繋ぎ合わせる事無く加工に移れますね。

    後は懐との相談です^^

    サブプロ関係はまったく分かりませんので工具番号を変えての加工を
    検討したいと思います。

    貴重なご意見ありがとうございました。

    投稿日時 - 2008-02-25 18:20:00

    あなたにオススメの質問