マクロについて解説します

このQ&Aのポイント
  • マクロについて解説します。他の人が作ったマクロを解読中ですが、Mコードのマクロ呼び出し部分で煮詰まっています。
  • 質問者はMコードの意味が分からず、これがサブプロ呼び出しか単にMコードとして使用されているのか疑問に思っています。
  • 質問者が使用しているのはFANUC 15-MAですが、詳細が分からないようです。
回答を見る
  • ベストアンサー

マクロについて?

現在他の人が作ったマクロを解読中ですがMコードのでのマクロ呼び出しの 部分で煮詰まっています。  :  :  G91G30P2Z0M19  M75  G04 P100 G28 Z0 M76 G30P2Z0 G4P100 M77  :  : と続く訳ですがMコードの意味が分かりません・・・ これはMコードを使用したサブプロ呼び出しなのか、単にMコードとして 使用しているのか・・・??? ちなみに FANUC 15-MA ですが分かりますでしょうか?

noname#230358
noname#230358

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

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

「Mコードによるマクロプログラム呼出し機能」と「Mコードによるサブプログラム呼出し機能」というものがあります。 おそらくNC装置のその機能を使用していると考えられます。 CRT画面上のNCパラメータ(NC PRAMETER)画面ってご存知ですか?その中に『あらかじめNCパラメータにマクロ(サブ)プログラムの呼出しに使用するMコード(番号)を設定しておくことにより、マクロプログラムの単純呼出し(G65)、あるいはサブプログラム呼出し(M98)と同様にマクロ(サブ)プログラムを呼出すことができる』という機能です。おそらくその機能を使用していると考えられます。 例えば、パラメータ7080番に「75」を設定しておくと、M75;指令だけでO9020を呼出すことができます。それはマクロ呼出しG65 P9020;と等価です。O9020は固定です。 この「Mコードによるマクロプログラム呼出し機能」はO9020~O9029(固定)の10個まででき、呼出すMコードはパラメータ7080~7089番にの設定値に対応しています。Mコードにより、マクロプログラムを簡単に呼出すことができる機能です。これが「Mコードによるマクロ呼出し」です。 このMコードはお客様だけのMコードです。だれも解りません。 まず、NCパラメータの7080番~7089番の設定値を確認してください。あるいは、質問のプログラムをシングルブロックで実行すればO90xxが画面上に表示されるでしょう。もし、M75;実行でO9029が実行されれば7089番に「75」が設定されているはずです。 またNCパラメータ7071~7079番には「Mコードによるサブプログラム呼出し機能」というものがあります。 こちらはM98 P9001;と等価で、M75;でO9001を呼出しているかもしれません。 いずれにしてもNCパラメータの7071~7089番(O9001~O9009、O9020~O9029)の設定値を確認してください。それに対応するO90xxをMxx;で呼出し、O90xxを『他の人が作った』のでしょう。 また、このパラメータ7071~7089番は機械メーカで機械出荷意時に設定させれている場合があります。くれぐれも9000番台のプログラムは注意して取り扱ってください(蛇足)。

noname#230358
質問者

お礼

お礼が遅くなり申し訳ございません。 とても分かり易い回答で感謝いたします。 もう少しがんばってみます。ありがとうございました。

その他の回答 (1)

noname#230359
noname#230359
回答No.2

機械メーカー発行のプログラミングマニュアルに記載されていませんでしょうか? Mコード一覧のページに載っていませんかね?

noname#230358
質問者

お礼

お礼が遅くなり申し訳ございません。 取説の中にはMコード一覧が無いため分かりません。 もう少し調べてみます。 ありがとうございました。

関連するQ&A

  • ISO/EIA マクロお詳しい方、ご教授願います。

    ISO/EIA マクロお詳しい方、+マザトロール(タンドウからマクロ呼び出し)について エアカットにて動作確認はしましたが、間違っているところはないでしょうか 確認お願いします。 機械使用上引数は X→#24 Y→#25 Z→#26 F→#9 R→#18 I→#4           J→#5 K→#6 P→#16 D→#7 しか使用できません    メインプラグラム  Oжжжжж G0G17G90G40G80G64G98 T1 G91G28Z0 M6 N0001 G0G90G54(X0Y0)X-70.Y0 G43Z50.H1 S750M3 M08 G65P7777 D73 Z-20. R3. I5. F600 J800  G80G0Z50.M9 G91G28Z0M5 G49 M30 O7777(サブプロ) G90 G98G#7Z#26R#18Q#4F#9P#5 M99 固定サイクル G73Z-20.R3.Q5.F600P800と 同じ動作をします。  こんな感じですが、 明らかに違っている点ありましたあら 指摘をしてくださいよろしく意お願いします。 参考 マザトロール(山崎マザック) タンドウからマクロ呼び出し    サブO7777は共通  G0 G90 X-70 Y0 Z100 M36 S495 M3 G94 G65P7777 D73 Z-20. R3. I5. F600 J800 G0G80 M9 M5 M1

  • カスタムマクロの呼び出し

    はじめて質問させていただきます。 FANUC Series 21i-MAのマシニングを購入しました。 パラメータでカスタムマクロを呼び出すように設定しましたが、アラームが 発生してダメなようです。 どうか、私に知恵を貸してください。 プログラムは... M100 X*.* Y*.* ; G110 R***.* Z***.* ; PRM6050 ⇒ 110(O9010を呼び出すGコード) PRM6080 ⇒ 100(O9020を呼び出すMコード) アラーム 内容 【アラーム 003 入力データが許容値を超えました】 尚 G65 P9020 X*.* Y*.* ; G65 P9010 R***.* Z***.* ; 上記のプログラムでは、大丈夫でした。

  • マクロのIF

    FANUC CNCでNCのマクロを使用しようとしています. システム変数#100の値をを読んで1ならマクロを抜けて,それ以外なら原点復帰して停止するプログラムです. O1000; IF[#100EQ1.0]GOTO201; N200; M99; N201; G28G91Z0; G28G91Y0; M1; M5; M30; % 呼び出し側はG65P1000;と記述しています. 現在はテストですので,#100の値は自動運転中に手動で入力しています. 上記を実行したところ#100にどんな値を入れてもN201が実行されてしまいます. どうも#100が常に空の値になっているような気がします. 上記の現象が発生する理由がお分かりになられる方がいらっしゃおましたら,何卒ご教授お願い致します.

  • Gコードマクロ呼び出しについて

    初めて質問させていただきます。 FANUC 18i MB カスタムマクロでGコード呼び出しを設定しようと試みましたが Gコード2桁では動作可能なのですが、他Gコードとの混同を避けたいため 3桁で設定を行いましたが アラーム 78 指定ファイルが見つからない アラームが出てしまい困っています。 説明書には1~9999まで設定可能とあるのですが ほかにどこか設定箇所などがあるのでしょうか。 ご指導お願いします。

  • 工具交換 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;

  • fanucの簡単なマクロ教えてください!

    okkのマシニングセンターを使い始めたんですが、簡単な慣らし運転のマクロを作りたいと思います(fanuc) O1 G91G28G00Z0 G28X0Y0 M03S500 G01X819Y-509F4000(最大ストロークX820Y-510) G28G01X0Y0 この作業(最後の2行)を繰り返したいのですがどういったマクロになるのでしょうか?

  • ユーザーマクロについて。

    初めてユーザーマクロを使ってみようと思い、 CAMで出力したポストをもとに作ってみました。 円の一部を2本の工具を使い加工するだけのパスです。 刃物はΦ6のエンドミル2本を使用しています。 変数として Aを加工する物の直径 Bをその半径 O100 G65P100A100. O200 #2=#1/2 (** P100**) T99 T01 (** 6H-A H01 D01 **) G54G00 G80G91G40G28Z0 G49G28X0Y0M05 M06 T02 G90G00X0Y0 G43Z50.H01 M03S3500 M50 X25.Y-[#2+1.] Z20. Z1. G01Z-1.F150 X-25.F500 G00Z20. Z50. X25. M09 (** 6H-S H02 D02 **) G80G91G40G28Z0 G49G28X0Y0M05 M06 T01 G90G00X0Y0 G43Z50.H02 M03S3500 M50 X25.Y-[#2+1.] Z20. Z1. G01Z-1.F30 X-25.F100 G00Z20. Z50. M09 (** End of tape **) G80G91G28Z0 G49G28X0Y0M05 M06 G90 M30 シミュレーションしてみるとエラーが出てしまいました。 どのようにすればイイですか? プログラム前半部分、訂正 (誤り) O100 G65P100A100. (正) O100 G65P200A100. 下記の皆様の回答をもとにこのようなプログラムで動かしてみました。 今回使用する機械にはファナック(M-18) 手打ちではなく下記のプログラムをコピーして機械に転送しております。 % O100 #1=100. #2=[#1]/2 (** P100**) T99 T01 (** 6H-A H01 D01 **) G54G00 G80G91G40G28Z0 G49G28X0Y0M05 M06 T02 G90G00X0Y0 G43Z50.H01 M03S3500 M50 X25.Y-[#2+1.] Z20. Z1. G01Z-1.F150 X-25.F500 G00Z20. Z50. X25. M09 (** 6H-S H02 D02 **) G80G91G40G28Z0 G49G28X0Y0M05 M06 T01 G90G00X0Y0 G43Z50.H02 M03S3500 M50 X25.Y-[#2+1.] Z20. Z1. G01Z-1.F30 X-25.F100 G00Z20. Z50. M09 (** End of tape **) G80G91G28Z0 G49G28X0Y0M05 M06 G90 M30 % しかし #2=[#1]/2 の場所で「009エラー」 と出ました。 アドレス関係のエラーのようです。 わかる方いましたらよろしくお願いします。 ファナック(M-16)で使用した結果 正常に動作いたしました。 改めて調べた結果 ファナック(M-18)の方にカスタムマクロを付けていなかったそうです。 マクロを使う以前の問題でした。 おさわがせしてもうしわけありませんでした。 今回初めてマクロを使用することになり ここで回答をいただいただけでも 大変ためになりました。

    • ベストアンサー
    • CAM
  • FANUC 15Mのサブプロ呼び出し

    日立のマシニングにF-15Mの制御なんですが、サブプロ呼出しの指令をM98P番号L回数で行い正常に動きました。しかし 取説を見ると HITACTI-FANUCの場合はM98P回数 番号となっていました 普段は前記した方でマキノを使っているので日立の方も同じ方を使いたいのですが、 何か弊害でも起こるんでしょうか? 御存知のかたお教え下さい。

  • オークマGコードを教えてください(FanucのG…

    オークマGコードを教えてください(FanucのG10の使い方について) Fanucでは 例) G10G90L2P2X300.Y-50.Z50.A0. G10G90L2P3X300.Y-50.Z50.A-90. 設定でワーク座標の設定ができますが、 Okumaでの同じ設定ができますが?

  • 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 というシュミレーションソフトで動きを見てみますと動作しています。 実際に加工機にかけてみてみればいいのですが、 その前にどなたかこういったサブプログラムの記述の仕方をお使いになって いらっしゃいましたらアドバイスをお願いいたします。