• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ユーザーマクロについて。)

ユーザーマクロについての質問

このQ&Aのポイント
  • ユーザーマクロを使ってみようと思い、CAMで出力したポストから作成したパスの加工方法について質問です。
  • シミュレーション時にエラーが発生しました。解決策を教えてください。
  • ファナック(M-18)で使用する際に009エラーが発生しました。アドレス関係のエラーの解決方法を教えてください。

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

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

プログラムのフロー(流れ)が変です。マクロ呼び出しでもサブプログラム呼び出し(M98)でも同じですが、こんな関係でしょうか? 自宅→通勤→出社→出張→     →帰社→通勤→帰宅  =メインの流れ             ↓    ↑              →仕事→   =これがマクロ 出張先でお終いにしても加工はしますが、フローは良くないです(エラー?) % O100  ←メインプログラム G65P100A100. ←マクロプログラム呼び出し。Aの引数をマクロ側に伝える (** End of tape **) ←マクロプログラムのM99指令で戻って以下を実行 G80G91G28Z0 G49G28X0Y0M05 M06 G90 M30 O200  ←マクロプログラムの先頭 (Aの引数に応じた加工をする) M99  ←呼び出したプログラム(メイン)へ戻る % マクロ呼び出しのいきなりのエラーですね。シミュレータのバグだと思われます。 通常は座標系選択、工具交換、工具長補正、主軸回転、加工地点への移動とかの『通勤』部分はメインですませるのがスタイルですが、マクロでやっても間違いではありません。これらをメインに移動したら直る? 因みにそのシュミレータ、フリーなら紹介して貰えませんか。。。 ★小数点を付けたほうが良いというのは、『軸移動指令の小数点無し数値の扱い』がシステムパラメータで設定出来て、全く違う動きをすることがあるからです。 G00X100Y200Z-1 これをミリ単位か、最小指令単位(ミクロンが多い)の整数倍と解釈するかの選択。まったく動作が違ってくる。 軸移動指令でないF100S5000は上記と関係なく同じ意味になる。 以下のことは、目を皿にしてマニュアルの隅々まで読まないと辿り着かないし、私の理解が間違ってるかもしれないので、再確認してください。 ●変数を使うと小数点が無くとも同じ。でないと、小数点無し数値を整数倍とする設定のときにおかしくなる。     X[#1+100] 100を整数倍と解釈すると、どんな値にもなる#1の値次第で結果が異なってしまう。    #1=100  →100+100ミクロン    #1=100.5 →100.5ミリ+100ミクロン ●変数でなく[ ]を付けて計算させる場合もおなじ  整数だけの計算で+、-、*なら結果も整数になるが、[10/3]をどう解釈するか? 整数倍の設定は昔の機械用のプログラムとの互換性を考慮してるためと思います。 ★OKです。別にサブでもマクロでなくても計算は可能です。 変数の計算だけの#2=[#1]/2に[]は不要 X#1Y#2  OK X#1+2.  NG → X[#1+2.]

noname#230358
質問者

お礼

ありがとうございました。 今はマシニングの加工がたてこんでいますので、 来週中にでも今回のプログラムを使用して加工したいと思います。 普段は単品物が多くて今回のように 形状が微妙に変わる同形状の物が大量に来ることがなく カスタムマクロを使ったプログラムは初めてなので とても勉強になりました。

noname#230358
質問者

補足

% O100 G65P100A100. (** End of tape **) G80G91G28Z0 G49G28X0Y0M05 M06 G90 M30 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 M99 % 説明の通りですとこのようになりますが シミュレータではエラーがでました。 社員と話してみましたが 実際に機械で動かすときちんと動いたりして。 と、このまま動かす気でいるのが怖いです。 また同じ間違いをしてしまいました。 プログラム前半部分、訂正 (誤り) O100 G65P100A100. (正) O100 G65P200A100. http://www.geocities.co.jp/MotorCity-Rally/7396/files.html ここで紹介されている「Ncmilmile」です。 変数と数値の演算部分で Y-[#2+1.]こう記述いたしましたが正しいでしょうか? Y-[#2+1]この方がイイとかありますか? あと、サブプログラムを使わないで下記のような方法でも可能ですか? % 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 %

その他の回答 (3)

noname#230359
noname#230359
回答No.4

シミュレータ側の問題のようです。 マクロ自体は正常に動くはずです。 回答(3)にあるサブを使わない方法でも問題はありません。 しいて言えば変数の演算においても少数点は付けた方が間違い無いと思います。 #2=#1/2. Y-[#2+1.]  など あとDOS版ですがフリーで下記のようなマクロシミュレータもありますので参考までに。

参考URL:
http://hp.vector.co.jp/authors/VA013450/
noname#230358
質問者

お礼

ありがとうございます。 MACRO TRACERも検索で見つけましたが、 操作が難しそうでしたので見るだけにとどまりました。

noname#230359
noname#230359
回答No.2

どのブロックで何というエラーが出たのか分かりましたら教えて下さい。 変数は#100からだったと記憶していますが。 (当方はメルダス500なので自信はまったく無しです)

noname#230358
質問者

補足

変数#2の部分でマクロエラーと表示されました。 社員の一人がマクロも確認できるフリーのシミュレーターソフトを使っています。

noname#230359
noname#230359
回答No.1

これだと、O100がメインプログラムでしょう。 O200がサブになりますから、M99が必要だと思いますが。 0100からO200に飛んでも戻り指令のM99が有りませんね。 それに、アラームとは直接の関係は有りませんが、工具経路がおかしいんでは? ドリル加工の経路ですが・・・エンドミルがどんなのか分かりませんが・・ #2=#1/2のブロックを #2=[#1]/2にしてはいかがでしょうか? #1/2でもいいような気もしますが、もしかしたら1/2を先に計算して#0.5と言う風に使用できないアドレスになったのかも知れません。

noname#230358
質問者

補足

確かにM99で終わっていませんでした。 すみません。 工具軌跡は円の端から2?切削するような軌跡になっていると思います。 その時に使用している工具がΦ6のエンドミルです。 エンドミルは http://ja.wikipedia.org/wiki/%E3%82%A8%E3%83%B3%E3%83%89%E3%83%9F%E3%83%AB この様な工具です。 シミュレータではあいかわらずエラーでしたが、 たしかに #2=[#1]/2 この記述の方が 視覚的にもわかりやすいと思いました。

関連するQ&A