• ベストアンサー
  • 困ってます

NCマクロ 固定サイクル中の工具交換

NCはファナック16iです。 例えば、1本のドリルの工具寿命を100穴と設定して、200穴の加工を2本のドリルで行うとします。 下のような固定サイクルで加工して、1本目のドリルで100穴加工(X100.0Y0.0)したら 2本目のドリルに工具交換して、続きの座標(X101.0Y0.0)から加工させるようなことは できるでしょうか? P○○○はドリルステップ加工のマクロです。 この中で、加工穴数をカウントして工具交換できないかなと考えています。 G66 P○○○ Z-10.0 R0.2 F30. K0 M98 P1000 G67 O1000(200穴分の座標) X1.0 Y0.0 ・ ・ X100.0Y0.0 X101.0Y0.0 ・ ・ X150.0YO.O M99 現在はサブプロをドリルの工具寿命穴数分に分けて作成して、加工を行っています。ドリルの工具寿命穴数いっぱいまで無駄なく使いたい為、みなさんのご意見をお聞かせ下さい。よろしくお願いします。

noname#230358
noname#230358

共感・応援の気持ちを伝えよう!

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

  • ベストアンサー
  • 回答No.2
noname#230359
noname#230359

こんにちは。 マクロ、こんな感じでしょうかね。 あくまでも参考までに! O100 #100=0(穴数カウントリセット) #101=0(ツール番号リセット) G66P1000Z-30.R3.Q-1.F50T2S600 (Z、R、Q、Fは、固定サイクルと同じ、Tは最初のツール番号あとは1番ずつ増加する、Sは、回転数) M98P99(サブ番号、穴位置座標を呼ぶ) M30 O1000(マクロ本体) IF[#100EQ101]GOTO100(穴数が101ならN100へ飛ぶ) IF[#100NE0]GOTO200(穴数がカウントされていたらN200へ飛ぶ) IF[#101NE0]GOTO100(最初のツール番号がセットされていたらN100へ飛ぶ) #101=#20(最初のツール番号をセット) N100(ツール交換) IF[#100NE101]GOTO300 #100=1.0(穴数が101ならば1にリセットする) N300 G91G28Z0 T#101 M06 G90G00G43Z100.H#101 S#19M03 #101=#101+1 N200 G90G98G83Z#26R#18Q#17F#9 G80 #100=#100+1.0 M99

共感・感謝の気持ちを伝えよう!

質問者からのお礼

回答ありがとうございます。 とても参考になりました。がんばってプログラム組もうと思います。 プログラム組んで、機械で動かしてみました。 ATCは30本使用で、工具オフセット(41番から)にそれぞれの工具寿命を入力して、加工穴数と工具寿命の比較をするようにしました。 G66P1000Z-1.0R0.2I-1.0J0.1K20. (ドリルステップ加工マクロ) M98P2000 G67 P1000の中で寿命判断して、寿命がだったら今の座標を記憶して、工具交換して、座標に復帰してドリル加工スタートといった流れです。 ただ問題がありまして、G66P1000で呼び出したときの引数の値(ローカル変数#1~#33)が工具交換のM06指令で書き換えられてしまうので、一度コモン変数などで記憶させておかなければならないのかなと思います。 また、工具交換でローカル変数を使用する為かM06の指令の中でG66 ON中はエラーを出すようになっていました。

その他の回答 (3)

  • 回答No.4
noname#230359
noname#230359

3さんとほぼ同意見。かなり面倒です。 工具ライフの設定、自動交換が可能な機械を使ったことがあります。その仕掛けは次のようなものです。 1.ツールのグループ管理のため、ツールグループNo.、設定ライフ、現在値をシステムパラメータとして持たせる。 2.切削(G1G2G3)1ブロック完了ごとの長さを現在値に加算していく。 3.T**で呼び出すマクロを書く。指令ごとに現在値を設定値と比較してオーバしたなら工具交換動作をして元の位置へ復帰。当然M指令、S指令の切り入りが必要。 4.寿命チエックに正確を期すなら、加工プログラム中でT**を繰返して通す必要がある(寿命以内なら何もしない。NCの処理速度には殆ど影響しない) F社:16MBの黄色本にオプション機能の『工具寿命管理機能』の概説があります。難解だが参考になります。 それでは2.が時間または呼出し回数となってるようで、機械メーカが独自仕様で造らせているとのこと。 自作するのは可能ですが、、、 1.のパラメータを#500~に割当てる。 2.は回数、時間どちらでもカウンターを定めれば可能。 3.は慎重なデバッグを要する。交換後の復帰動作がXY先移動の後でZ下降で良いか? プログラム作成には、現在座標、グループ毎のGモード、Mの状態など必要事項を保存し、復帰させるテクニックを知ることが必要です。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

アドバイスありがとうございます。 みなさんのご意見にあるようにむずかしいようですね。 とりあえず、形だけでも作ってみて現状の方法と比較してみます。 ありがとうございました。 プログラム組んで、機械で動かしてみました。 ATCは30本使用で、工具オフセット(41番から)にそれぞれの工具寿命を入力して、加工穴数と工具寿命の比較をするようにしました。 G66P1000Z-1.0R0.2I-1.0J0.1K20. (ドリルステップ加工マクロ) M98P2000 G67 P1000の中で寿命判断して、寿命がだったら今の座標を記憶して、工具交換して、座標に復帰してドリル加工スタートといった流れです。 ただ問題がありまして、G66P1000で呼び出したときの引数の値(ローカル変数#1~#33)が工具交換のM06指令で書き換えられてしまうので、一度コモン変数などで記憶させておかなければならないのかなと思います。 また、工具交換でローカル変数を使用する為かM06の指令の中でG66 ON中はエラーを出すようになっていました。

  • 回答No.3
noname#230359
noname#230359

あけましておめでとうございます。 まだ、休暇明けで頭がボーっとしていて自信ないのですが、ご希望のマクロはかなり困難なのではないでしょうか? 穴数のカウントから工具交換、そして復帰動作も当然ながら、プログラムで全て自動で行いたいのですよね? 例えば、あと残り400穴のドリルも使用したとすると、1600穴の加工の場合も工具が3本必要となります。 この場合、1)その工具の寿命穴数、2)1)の工具で加工した穴数のカウント、3)加工した穴数の総カウントと3つの変数が必要になってくると思われます。 ただ、固定サイクル中、もしくはG65等のマクロ呼出し中で工具交換し、穴位置サブの途中からスタートする方法の方が難しいような・・・。 例えば、X90.Y60.の次にX150.Y60.の穴を加工する場合、サブとしては X90.Y60. X150. ~ と通常はプログラムされますが、工具交換後、この間からスタートするには必ずXY出力をするか、一度工具交換前の座標に復帰しなければいけません。 また、復帰方法も座標値の先頭にシーケンスなどを出力しておいて、GOTOで復帰することになる気がします。 そのプログラムイメージがイマイチ、ピンときません・・・。 例えばですが、使用する工具本数分だけ同じサブを用意(サブ番号は別にしておく)し、PC上のエディターで寿命分の穴数に分けるといった編集作業を行うのが、一番確実で簡単な気がします。←回答(1)さんの手法ですね。 これを、秀丸等のマクロ機能がついたエディターで行えば、最初から寿命穴数毎にサブを作成して出力することも可能です。 あっ!言い忘れましたが、マクロをなんとか作成できたとして、それで加工を行う場合と、最初から加工可能穴数毎にサブを分けて用いた場合とでは、後者の方が加工時間が速くなる可能性が高いです。 制御器の能力次第ですが、前者が後者より速くなることはありません。

参考URL:
http://hide.maruo.co.jp/

共感・感謝の気持ちを伝えよう!

質問者からのお礼

アドバイスありがとうございます。 みなさんのご意見にあるようにむずかしいようですね。 とりあえず、形だけでも作ってみて現状の方法と比較してみます。 ありがとうございました。 プログラム組んで、機械で動かしてみました。 ATCは30本使用で、工具オフセット(41番から)にそれぞれの工具寿命を入力して、加工穴数と工具寿命の比較をするようにしました。 G66P1000Z-1.0R0.2I-1.0J0.1K20. (ドリルステップ加工マクロ) M98P2000 G67 P1000の中で寿命判断して、寿命がだったら今の座標を記憶して、工具交換して、座標に復帰してドリル加工スタートといった流れです。 ただ問題がありまして、G66P1000で呼び出したときの引数の値(ローカル変数#1~#33)が工具交換のM06指令で書き換えられてしまうので、一度コモン変数などで記憶させておかなければならないのかなと思います。 また、工具交換でローカル変数を使用する為かM06の指令の中でG66 ON中はエラーを出すようになっていました。

  • 回答No.1
noname#230359
noname#230359

>>現在はサブプロをドリルの工具寿命穴数分に分けて作成して、 >>加工を行っています。 現在の方法がわかりやすくて手っ取り早いと考えます。 加工穴数をカウントして工具交換を行なうには、コモン変数と マクロを用います。 <一例> ・最初に#501=1.をプログラムの冒頭で宣言 ・1穴加工するごとに#501=#501+1.でカウント ・1穴加工するごとに変数チェックIF[#501EQ100]GOTO200して  N200で工具交換&#501=1.を再宣言(色々な手法有り) この場合、穴加工の1ワーク分の座標も、X[#502] Y[#503]の ようにコモン変数にするとプログラミングしやすくなるでしょう。 但し、ドリルが途中で折れて再開する場合などにテクニックが 必要となります。 手元にマニュアルがなかったので、答えを端折りましたが 回答(2)さんんと同じイメージです。 ・寿命穴数 ・ツール番号 ・加工位置の座標 ・加工穴数のカウント を全てコモン変数に置き換えて、IF文(WHILE文)で巧みに条件設定 すれば、お望みのプログラムは実現可能と考えます。 キチンとコモン変数を管理すれば、ドリル折損などにより中断した ところから、加工を再開させることもできるでしょう。 FANUCのプログラミングマニュアルに使えそうなマクロ機能や システム変数が色々と掲載されていますので、頑張ってください! (私もマクロ文を駆使してマニアックなプログラミングに嵌った 時期がありました...)

共感・感謝の気持ちを伝えよう!

質問者からのお礼

回答ありがとうございました。 参考にプログラム組もうと思います。 現在は工具寿命が1本1000穴のドリルで1ワークに1600穴加工だと、2本のドリルが必要でサブプロを2つ(800穴+800穴)作って加工しています。 これだとあと200穴加工できるドリルが2本残って、次に他のワークを加工するときにまたサブプロを組み直すのが大変になるので、加工穴数をカウントしたいと思いました。 ドリル1本の値段が数万円するので、工具寿命いっぱいまで使いきりたい為です。 プログラム組んで、機械で動かしてみました。 ATCは30本使用で、工具オフセット(41番から)にそれぞれの工具寿命を入力して、加工穴数と工具寿命の比較をするようにしました。 G66P1000Z-1.0R0.2I-1.0J0.1K20. (ドリルステップ加工マクロ) M98P2000 G67 P1000の中で寿命判断して、寿命がだったら今の座標を記憶して、工具交換して、座標に復帰してドリル加工スタートといった流れです。 ただ問題がありまして、G66P1000で呼び出したときの引数の値(ローカル変数#1~#33)が工具交換のM06指令で書き換えられてしまうので、一度コモン変数などで記憶させておかなければならないのかなと思います。 また、工具交換でローカル変数を使用する為かM06の指令の中でG66 ON中はエラーを出すようになっていました。

関連するQ&A

  • ドリルサイクルに関する質問です

    ドリルサイクルの穴のX,Y座標にはサブプロを使えるのでしょうか.使えたらプログラムチェックの際非常に楽だと感じることがありました. 具体的に, T1・・・センタドリル T2・・・φ2.5ドリル T3・・・メントリ T4・・・M3タップ の工程の穴あけの場合,X,Yは同じでもZ方やサイクルがそれぞれ異なるので, ~ (T1) G81X○Y○Z○R○F○ X○Y○ X○Y○ ・・・ (T2) G83X○Y○Z○R○Q○F○ X○Y○ X○Y○ ・・・ (T3) G82X○Y○Z○R○P○F○ X○Y○ X○Y○ ・・・ (T4) G84X○Y○Z○R○F○ X○Y○ X○Y○ ・・・ M30 となるかと思います.この場合座標の確認が穴数や工程分だけ増え,それだけ見落とし等ミス発生にもつながるのでは?と感じました. これがドリルサイクル,Z深さに関係なくサブプロを使えた場合ミス軽減や時間短縮になると感じたので質問しました. よろしくお願いします.

  • NCデータでの座標定義について

    NCプログラムの初心者です。NCプログラムに詳しい方どうか教えてください。 下の方にNCデータのソースの一例を記入しております。 その中で、パートAを行1~5、パートBを行6~25と定義します。 ●パートAは、加工原点からみて機械原点の距離は(+100,+100)。加工原点を(0,0)と定義したい。 ●パートBは、加工原点を(?X,?Y)と定義したい。 (パートAとは相対的に(+?X,+?Y)ずらした位置で加工したい。) 上記のようにしたいのですが、パートBの冒頭でG91G00?X?Yとしても、その後、G90の絶対座標系で動いているので、 だめかな、と思います。それともG92で定義し直すのでしょうか。。 パートB部分全体をパートA部分で定義した加工原点からある値をずらした加工原点で加工するには、 ひとつのNCデータ内でどのように定義すればよろしいのでしょうか? #ちなみに座標定義は下記です。 ・水平方向:右→左をプラスX方向 ・垂直方向:下→上をプラスY方向 1 O1000 :メインプログラムO1000 2 G92X100.Y100.Z0. 3 G90G00Z10. 4 M98P4003 :サブプロO4003呼び出し 5 G90G00Z0. 6 G54G90 :ワーク座標系G54(現在オフセット値は0,0) 7 G17G40G00X140.Y42.S18M13 8 M11 9 G01Z-40.F6000 10 G64G43H27Z-63.F2000 11 G41D25X130. 12 X50.F3000 13 G42X80. 14 Y70. 15 G41Y42. 16 X-993. 17 Y22. 18 X-1360.F3000 19 G40X-1325.Y-10.F6000 20 M98P5555 :サブプロO5555呼び出し 21 G91G01G49Z63.F5000M92 22 M95 23 G91G28X0Y0M07 24 M31 25 M30 お手数ですが宜しくお願い申し上げます。

  • サブプログラムについて

    メインプログラムにG54等の座標系を指定すれば、他の座標系が指定されない限りモーダルで動くのでしょうか。 だとすれば、メインプログラムで座標系を変えて、サブプロはG90で座標系指定のないプログラムとして、一つだけにしてよいのでしょか。 例) O0001 G54G9OGOXOYOZ100. M98P0002 G55G9OGOXOYOZ100. M98P0002 M30 O0002 G80G40G49  G91G28G0Z0 T1 M6 G90G0X0Y0 ←座標系を設定しない ・ ・ ・ M99 それとも、サブプロにも座標系を入れて、別々にしないといけないのでしょうか。 そうすると、同じプログラムなのに加工する個数ぶん必要になってしまいますが・・・ もしG54、G55・・・がモーダルなら、つぎに使用するときにG54を指定して戻しておかないとないとG55のままになっているということでしょか。 普段は、サブプロをメインプロとして単品加工をし、夜間に無人加工するために部品を2~3個セットして、メインプロを別に設定してO0002をサブプロとして呼び出して使用したいというのがねらいです。 そのために、サブプロにG54等の座標系を入力しておかないほうが、都合が良いからです。 プロ編集なしでO0002をG54でもG55としてでも使用したからです。 通常は一個だけなので芯だしはG54で行います。 O0002に座標系を入力しなければG54中心で動きますが、G55を使用したことがないため、以上のような2個以上の加工をしようとすると、どのような動きになるのか分かりません。 わかるかたいましたら、教えてください。

  • G52使用・不使用の判断

    エンドミルで円弧加工させる際に、G52を使用して座標移動させて行っています。下のようなプログラムです。プログラム作成でG52を入れ忘れてしまった場合、座標移動されずに加工原点(X0.0Y0.0)で加工してしまいます。 それを防ぐために、サブプロ(O1000)内でG52が使われていなかったらアラームで止まるようにしたいのですが、G52を使用しているかしていないかの判断はカスタムマクロで可能でしょうか? M98P1000はG52とセットで使用しています。O1000を呼び出すときにG52を使わないときはありません。 知恵を貸していただきたいです。よろしくお願いします。 O10(MAIN) G52X10.0Y10.0 M98P1000 G52X-10.0Y10.0 M98P1000 G52X0.0Y0.0 M30 O1000(SUB) X0.0Y0.0 G01Z-2.0F10. G41G01Y-3.0F5. G03J3.0 G03J3.0F10. G40G01Y0F50 G00Z10.0 M99 すいません。書き忘れたのですが、NCはファナック(21i)です。

  • 工具交換の回数を減らしたい

    ファナック制御のマシニングにデータを供給しています サブプログラムとして使ってもらっています。 毎回、最後に工具を返していますので 同じ工具で加工する場合でも毎回毎回 工具交換します。 単純に最後のT00 M6 を消せば工具を持ったままで終了出来ますでしょうか? T22を持ったままで加工が終了すれば 次回 T22M06を読んだときは交換無しで加工 違う工具 T23M06を読んだときはT22を返してT23を取る などの動きになるのでしょうか? % O3106 G90 T22M06 S7200M03 --- 省略 --- M09 G90 T00 M6 M99 % よろしくおねがいします

  • 工具交換 G100の内部処理(マクロ処理)

    工具交換 G100の内部処理(マクロ処理)について G100は G91G28Z0 G80 G49 (M19) M09 M05 M06 を指令せずに工具交換をします。 ブラザー (例) タッピングセンター G100T1X-45.0Y40.0G43Z100.H1S750M03L2 G80 G49 M09 M05 をして原点復帰しT1を主軸に呼び XYZ(A軸C軸)同時位置決め補正番号Hで補正し回転S M03  L2 マガジンに待機工具 一行でここまで指令できます。 マクロを使えば G65 P○○○ .... .... .... ..... で呼び出すはず 現在使用しているのは、メルダス(マザック)、です。 上記はマクロで作ることはできるのですか 教えていただきたい。 立、横マシニング対話でしか動かせない者より よろしくお願いします。 メルダスマクロ詳しい方いらっしゃいますか? 翌日 簡単な プログラムを作成してみました。 特定のカスタムマクロを任意のGコードで呼び出す事が可能です。 呼び出すプログラムのワークNo 呼び出しに使うGコード番号 呼び出しタイプ M98 G65 G66 G66.1 が機械パラメータで設定可能でした。 まずはマクロで動かしてみます。 ブラザーのその機能に似たものはつくれますが、 おそらく全く同じには実装できません。 まねて動かすには O0010 G00G90G40G80; G00G90G54~G59; G65P8T85X0Y0G43Z150.H85S3000M03; (G66.1P8T85X0Y0G43Z150.H85S3000M03); O0008 (G40);必要に応じ G80M09; (G49M19);必要に応じ G91G28ZOM05; (G28X0); (G30Y0Z0); T#20T○○M06; G#10X#24#25Z#26H#11; S#19M#13; M99; % 上記では、T85を主軸にM06までは良いのですが G43で補正が出来ません。 良い方法はありませんか? G66.1ではG L N O Pが選択できるようですが 動作的にはG65呼び出しと変わりません。 また T#20T○○M06;のT○○待機工具も#に置き換えたい です。 こんな感じで間違っていませんか? とりあえずTツールを呼びH484 H485で補正がかかり 最後主軸T0 待機工具T0 で終了M30になりました。 A43長補正  B84次工具呼び出し  にしてみました。 次回G65P8 をG100に置き換えてみたいと 思います。 O0010 G00G90G40G80; G94; G00G90G54~G59; G65P8T85X0Y0A43Z150.H485S3000M03B84; G98固定サイクルZ R Q F; G65P8T84X0Y0A43Z150.H484S2000M03B80; G98固定サイクルZ R Q F; G65P8T0B0 M30; O0008; G40G80; M09; G91G28X0Y0Z0M05; G30Y0Z0; G90 忘れていました T#20T#2M06; M01; G#1X#24#25Z#26H#11; (M01); S#19M#13; M08; M99;

  • 固定サイクル切り替え

    初めて投稿させて頂きます。ご回答を宜しくお願いします。 さて質問ですが、例えばマシニングでドリルを用いて加工深さ:100mmの穴を あける時に、30mmまではG73の動きで、それ以降はG83の動きで加工したいと すると、固定サイクルだけを用いて行うことは可能でしょうか? 固定サイクルを使用せずに直接 Z座標を指示する方法や、マクロを使う方法は 分かったのですが、より簡単なプログラムで作成したいので固定サイクルだけ を用いて行いたいです。 機種は問いませんので、何かご存知であれば回答をよろしくお願いします。

  • サブプログラム とマクロについて

    OSG HPからダウンロードできるプラネット加工用のプログラム作成 ソフトで、プラネット加工のプログラムを出力すると メインプログラム例(ABS)とサブプログラム例(INC)が出力されます。 一穴加工用で 穴の座標は0,0として出力されています。 よって、ABSの 方を使うと座標を加工物の座標に合うように足し算していかないといけないので、間違いの元なので、  座標における足し算をしなくてもいいインクリ指令であるサブプログラム例の方を利用 しようと思います。まず質問ですが、 マクロでやる場合は 機械の中にそのマクロ用のプログラムをメインプログラムとは別に0番号を決めて入れ込まないといけなく、 サブプログラムの場合は メインプログラムの中にサブプログラムを書いたらよかったですね。 というのはOSGのソフトで出力されるプログラムはネジの長さ 材料 工具 下穴 Mいくつのタップを開けるかで毎回ちがってくるので、 マクロでやるとその違うプログラムをたくさん機械に別のプログラムとして いれるのはややこしく感じ、 サブプログラムで対処したら毎回違うプログラムをOSGソフトで出力したあとそれをメインの中に貼り 付けてやればいいだけなので、そっちの方が簡単だと思ったのです。 一回の加工で穴中心座標が違ういくつかの 同じ径の下穴に対してタップをするので、 同じタップ深さ 同じM というのが基本です、 だから 穴中心座標への誘導だけメインでやって、サブでタップ部を加工 するのが一番シンプルだとおもっているのです。 プラネットタップ品名 PNGT 呼び10*25*P1.5 工具径10 めねじM16*1.5  下穴φ14.5 ネジ長さ15 切削速度20m 送り0.03mm/min アップカット 下穴の中心座標が x30Y-30   X60Y-30 X90Y-30 の三つとするとき OSGのソフトで出力した サブプログラム例(INC) の方を変えないで、 穴中心の移動だけをメインでやる場合  どのようなプログラムがシンプルになるでしょうか? 今思うのは 穴中心の移動をメインで行い 穴中心からM98P@@ 穴中心へのメインでの移動 穴中心からM98P@@ しかわからないのですが、 もっとシンプルに出来るように思うのです

  • NC旋盤でのワークシフトに関して

    現在使用しているNC旋盤(フジ機械製・制御装置Fanuc 0i)の加工プログラムに関して、教えて頂きたいことがあります。 座標系設定(ワークシフト)(G50)を使用しており、製品ごとに工具長補正を変えずにプログラム変更のみで段替えをしているのですが、たまに他の人がが先頭に入っているG50を読み込まず、シーケンスサーチを行い、加工するため工具が破損する時があります。 現在見直しを掛け、G50を使わない状態にしているのですが、 段替え時に工具補正を取り直す必要があり、手間がかかるような状態です。 各工具ごとにG50で座標系設定を行えば、シーケンスサーチをしてもいいのでしょうか。 弊社の使用しているプログラムでは、インクレメンタルG50W-20.0のような形で、 座標系設定(ワークシフト)されており、この部分をG50Z・・・のような形に変えれば、どの位置に工具があろうとも必要な分だけワークシフトできるものなのでしょうか。 インクレメンタルのものを各工具に入れたら、どんどんずれてしまったため、 なにかいい方法がないかと思い、質問させて頂きました。 マシニングのG54・G55のような形でもいいのかと思いますが、座標系が指定できない機械もありました。 例) O0001 G99G97G0G40T00M66 G28U0.W0. G50W-32.05 M57 M1 N1 G99G96T100 G0X100.9Z1.T101S220M3 G1Z-15.0 ~ G0Z80.G97S1000 T100M9 M1 N2 G99G97T200 ~~~ X100.Z45. T200M9 G0Z65.M5 G50W32.05 M59 N777 M9 G28W0. T100M65 M35 M36 M30

  • NCマクロからのサブプログラム呼び出し

    マクロの勉強中です。 使用機械 森精機 NH5000DCG 制御装置 fanuc30i マクロの実行についての質問ですが、 G65P0000X0Y0・・・・・とサブプログラムの呼び出しで Pで指定したサブプログラムをファイルとして用意しないで メインプログラムに記述して実行するというプログラムを 目にしました。 KST32B-FO-LM という文字刻印マクロプログラムです。 サンプルファイルの記述は以下です。 *********************************************************************** (X:#24:文字の中心のX座標・省略時=現在位置 ) (Y:#25:文字の中心のY座標・省略時=現在位置 ) (R:#18:Z方向 R点・省略不可 ) (Z:#26:Z方向 終点・省略不可 ) (I:#4 :横方向の倍率[全角文字は29mm、半角文字は15mmに対する倍率]・省略時=1.0) (J:#5 :縦方向の倍率[全角半角文字共に31mmに対する倍率]・省略時=1.0 ) (E:#8 :Z方向の切削送り速度・省略時=F/2.0 ) (F:#9 :XY方向の切削送り速度・省略不可 ) O0001 G91G30Z0 T1M6 G54G90G0X0Y0 S1000M3 G43H1Z100.0 Z3.0 G65P1309X0Y0R3.0Z-0.2I0.3J0.3F100 G65P4836X10.0R3.0Z-0.2I0.3J0.3F100 G65P1023X20.0R3.0Z-0.2I0.3J0.3F100 G65P1012X25.0R3.0Z-0.2I0.3J0.3F100 G65P1016X30.0R3.0Z-0.2I0.3J0.3F100 G65P1016X35.0R3.0Z-0.2I0.3J0.3F100 G65P1016X40.0R3.0Z-0.2I0.3J0.3F100 G65P4589X50.0R3.0Z-0.2I0.3J0.3F100 G65P3245X60.0R3.0Z-0.2I0.3J0.3F100 G65P1538X70.0R3.0Z-0.2I0.3J0.3F100 G65P3861X80.0R3.0Z-0.2I0.3J0.3F100 G65P2309X90.0R3.0Z-0.2I0.3J0.3F100 G65P1310X100.0R3.0Z-0.2I0.3J0.3F100 G0Z300.0M5 G91G30Z0 M30 O1012(CD=002C) #1=#4001 #3=#4003 IF[#9EQ#0]GOTO1 IF[#18EQ#0]GOTO1 IF[#26EQ#0]GOTO1 IF[#18LE#26]GOTO1 IF[#4EQ#0]THEN#4=1 IF[#5EQ#0]THEN#5=1 IF[#8EQ#0]THEN#8=#9/2 G90G0X#24Y#25 Z#18 G91X[-1*#4]Y[-8.5*#5] G90G1Z#26F#8 G91X[-1*#4]Y[-2*#5]F#9 X[-1*#4]Y[2*#5] X[1*#4]Y[2*#5] X[2*#4]Y[-2*#5] X[-1*#4]Y[-3*#5] X[-3*#4]Y[-3*#5] G90G0Z#18 G91X[4*#4]Y[14.5*#5] G#1G#3 GOTO2 N1#3000=1 N2M99 *********************************************************************** デモ版lance for windows というシュミレーションソフトで動きを見てみますと動作しています。 実際に加工機にかけてみてみればいいのですが、 その前にどなたかこういったサブプログラムの記述の仕方をお使いになって いらっしゃいましたらアドバイスをお願いいたします。