mazak NC旋盤のガントリーロボット(メルダス300) マクロプログラム

このQ&Aのポイント
  • 中古にて購入したmazak NC旋盤のガントリーロボット(メルダス300)を自力で立ち上げたが、マクロプログラムの一部で止まってしまう。#1015と#1021の値によって処理が変わるようだが、詳細が不明。質問者は矛盾を感じている。
  • mazak NC旋盤のガントリーロボット(メルダス300)を中古で購入し、取扱説明書にあるマクロプログラムを手入力して動かせるようにした。しかし、特定のブロックで動作が止まる。#1015と#1021の値が関係しており、詳細がわからないため、解決方法を知りたい。
  • 中古で購入したmazak NC旋盤のガントリーロボット(メルダス300)の立ち上げに成功したが、#1015と#1021の値によって処理が異なるため、矛盾を感じている。取説には詳細が書かれていないため、解決策を教えてほしい。
回答を見る
  • ベストアンサー

mazak NC旋盤のガントリーロボット(メルダ…

mazak NC旋盤のガントリーロボット(メルダス300) マクロプログラム 中古にて購入した物ですが、メーカーにデーターもなくしかも扱える人がいないという事で自力で本機を立ち上げ、取説にあったマクロプログラムを手入力し、何とか動くようになりましたが、ここで部分的に書いても難しいと思いますが、N1116 #1116=1. #1133=2.;というブロックで止まってしまいます。 IF{{#11EQ6.}AND{#1015NE1.}}GOTO1116: IF{{{#11EQ1.}OR{#11EQ3.}}AND{#1021NE1.}}GOTO1116; の辺りが怪しそうなんですが、お分かりになる方は居られないでしょうか?#1015はハンドがシャフト用で1になる、#1021はハンドがチャックワーク用で1になるようです。現状で後は不明で、加工はチャックワークです。 因みに取説では、#1116で1が立つと、ハンドが設定と合致していないというアラームを発生させるもののようです。#1133は明記がありません。#11については現状では不明です。ご回答いただいたものを参考にすると「#11が1か3で#1021が1だと1116へ」という事でしょうか?この場合#1015が1の時はシャフト用なので1116に飛ぶべきで、#1021が1の時はチャックワーク用なので1116でアラーム発生させる必要は無いと考えます。何か矛盾しているような感じがしますがどうなのでしょうか。

noname#230358
noname#230358

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

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

昔々MELDAS300&500シリーズを使っていました。 使いやすく、F○NUCより好きでした。 マクロは取扱い説明書通りですか? ニーズが無かったので、マクロ文においてANDやORが使えることを知り ませんでした。また、#1さんが書かれている通り、 N1116 #1116=1. #1133=2.; と、一つの行に書くことができるのも知りませんでした。 さて、 IF[[#11EQ6.]AND[#1015NE1.]]GOTO1116: IF[[[#11EQ1.]OR[#11EQ3.]]AND[#1021NE1.]]GOTO1116; を実行して N1116 #1116=1. #1133=2.; のブロックで停止する(#1116=1でアラームを出力)するということは、 IF文が成立=GOTO1116が実行されているのですね。 素直に考えれば、条件文は、 「#11=6かつ#1015≠1ならばN1116へ飛ぶ」 「#11=1か3、かつ#1021≠1ならばN1116へ飛ぶ」 と思われます。 この2つの文章の前に、 #501=#11; #502=#1015; #503=#1021; を挿入しておけば、条件文実行直前の、#11、#1015、#1021の値がコモン 変数#501~#503で確認できるので、N1116へ飛ぶ理由がわかるでしょう。 (ただし当該コモン変数は他の用途に使用されていないことが必要) #11については、G65で当該サブブログラムへ飛ばす実行文あたりを見て、 解読するしかないですね。 当然ですがローダの使用を考えていらっしゃいますね。チャックワーク のみをご使用され、ハンドをシャフト用にしないのであれば、当該条件文 を削除または( )でくくって実行させないこともアリかと。 他人の作成したマクロを理解するのは大変ですが、読み解きながら判明 した内容を、コメント (  )としてプログラムに追記しておくと、 後々便利でしょう。

noname#230358
質問者

お礼

ありがとうございます。 1つの行に書けるかどうかの真偽はわかりませんが、取説のマクロ文をそのままて入力しただけです。 他のプログラムも見ましたが、数ページある中でこの2行だけがこのような(同一ブロックに2つ)表記になっています。  確かに、チャックワークでしか使用しないので省いても問題は無いですよね。その他の設定さえキッチリやっておけば・・という事でしょうか。 #11と1つの行に2つ書くことに関してはもう少し調べてみます。 まだ最初の方なので、進めていくうちにこんなことがまた出てくると思うと 先が思いやられます。 カッコで括って読まないようにしたらとりあえず先には進むようになりました。ありがとうございます。

その他の回答 (1)

noname#230359
noname#230359
回答No.1

メルダスのマクロは知りませんが、 ファナックの場合ですと、1ブロックにはマクロ文は1つしか書けません。 #1116=1.←これで1つのマクロ文。 #1133=2.←これも1つのマクロ文。 ファナックと同様の仕様であれば、 それぞれを別のブロックに書く必要があります。 また、EQやNEといった条件式は演算子ではない場合もあります。 少なくともファナックではそうです。 演算子でない場合、EQやNEは真偽値を返さないので、 その結果をANDやORに渡す事ができません。 この場合、 「#11が6.でありかつ#1015が1.であればN1116へ飛ぶ」は 「#11が6.であればN1116へは飛ばない(GOTOのブロックをスキップ)」 「#1015が1.であればN1116へは飛ばない」 「(どちらでもないから)N1116へ飛ぶ」などと書く事になります。

noname#230358
質問者

お礼

ありがとうございます。マクロアレルギーでしたが、そのように考えていくと面白い面もありますね。(余裕があればですが・・・)参考になりました。質問に追記もしましたので、またよろしければお願いいたします。

関連するQ&A

  • mazak NC旋盤のガントリーロボット(メルダ…

    mazak NC旋盤のガントリーロボット(メルダス300) マクロプログラム ? 初回にはお世話になりました。同機でその先に進んでいますがまたアラームが発生しています。プログラムミスらしいのですが、止まったブロックは、 N2000 M99; で、最終行です。 そこで質問ですが、複数のプログラムを使った下記のようなプログラムの場合は、どのように行き来するのでしょうか。(最終行なので、止まっているそのプログラムが悪いのか、先読みしたその先のプログラムが悪いのか知りたい為です。) よろしくお願いいたします。 O 7000; N1 M98 P9000; N2 M98 P8000; N2000 M99: O 9000; N1 N2000 M99: O 8000; N1 N2000 M99: この先進めるに当たって、言語の意味がわからないとどうにもならない事がわかりました。 EQ=イコール?NE=違う(NOT YET?) 辺りはなんとなくわかりますが、 MODとかLTとか他にも色々出てきてます。 主だったものを教えていただきたいのですが。 ネットでそのような一覧表のあるサイトがあればいいのですが、 見つけられませんでした。 是非お願いいたします。

  • アラームの指令

    マクロプログラムでアラームをつかいたいのですが、どういった指令の 仕方をすればいいのですか?ファナック、OSPの場合。 (例) IF[#20EQ#30]GOTO1 ; ; ; ; ; N1 ?????????←ここです。 G90G0Z30. M99

  • ファナックマクロ演算子and、or,xorの使用…

    ファナックマクロ演算子and、or,xorの使用方法について and,or,xorの使用方法について質問したいのですが IF[[#1EQ#0]AND[#2EQ#0]]GOTO1 という使い方をしたらエラーになりました。 AND,OR,XORはTHENとの組み合わせしか使用できないのですか? どなたか使用例をあげて教えていただけないでしょうか?

  • and or xorの使い方

    お世話になります。 カスタムマクロのANDなどの使い方に使い方がわかりません。 解釈としては、「もし・・ならば(IF)○○、そうでなければ○○」の解釈ととらえましたが合ってますか? 使用例は IF[[[#30GT0]GOTO1]AND[[#30LT0]GOTO2]] (もし#30が0より大きいならN1へ、#30が0より小さいならN2へ)の使用例でやりましたがアラームが出ました。 いろいろやりましたが、理屈が正直半信半疑なもんで・・・。 使用例、使い方など教えてもらえたら幸いです。 よろしくおねがいします。

  • 対話 NCプログラムをGコードに変換の際

    ことの発端は、スケジュールプログラムで材料が無くなったら自動扉が開かないし、カウントコントロールの利用でした。 オークマの対話プログラムにて、NCプログラムの中でファイル保存をして。 そのプログラムを対話に呼び出しをしました。 その際、N番号が読み取れずアラームストップになります。 ↓これを対話のファイル保存しました。 材料引っ張り出しのGコード文 (省略) ・ ・ M01 IF[VWKCC[1]+1 EQ VWKCS[1]]GOTO NSTR1 GOTO NSTR2 NSTR1 M91 NSTR2 対話プログラムの最後に、このようなファイル呼び出しで Gコードへ作成したら ↓下のようになります。 NAT00 N1400 ・  材料引っ張り出しのGコード文 ・ (省略) ・ ・ N1408 M01 N1409 IF[VWKCC[1]+1 EQ VWKCS[1]]GOTO NSTR1 N1410 GOTO NSTR2 N1411 NSTR1 M91 N1412 NSTR2 N1413 M01 N1414 M02 これでは、アラームでストップしてしまいます。 教えてください。 GOTOのあとに、N番号を指令できる言語を教えてください。

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

  • G65を使ったプログラムについて

    使用機械 森精機(旧日立精機?) モデル vs60 O4200 G65P4201A100 G65P4201A200 M30 O4201 GOTO#1 N1 加工プログラム N2 加工プログラム M99 上記のようにサブプログラムにN100、N200のように加工プログラムを2つ記入している状態です。 メインプログラムにて、G65A100(A200)と引数指定にてN100とN200を読み出したいのですが、GOTO#1を読み込んだ瞬間に、   不明なシーケンス番号です のようなアラームが出てしまい止まってしまいます。 GOTO#1を IF[#1EQ100]GOTO100 IF[#1EQ200]GOTO200 と変えても指定したシーケンス番号まで飛んでくれません。 他の質問者様の回答に *************************************** サブプログラム O9000 GOTO #1 GOTO9999 N1 動作プログラム1 GOTO9999 N2 動作プログラム2 GOTO9999 N9999 M99 *************************************** このプログラムが記載されていましたので。参考に作ってみたのですが,,, わかる方いらっしゃいましたらお力添え頂ければと思います。 よろしくお願いします。

  • 変数とループを使ったマクロについて

    恐縮ですが、ご教示をお願い致します。 comboboxの値を空白のtextboxに貼り付けるものです。 本を片手にマクロを作成していたのですが、上手くいかず困っております。 作成したマクロ Private Sub CommandButton100_Click() '入力値のチェック If ComboBox1 = "" Or ComboBox2 = "" Then GoTo 998 '空白ボックスを検索しデータ入力 If TextBox11 = "" And TextBox12 = "" Then TextBox11 = ComboBox1 TextBox12 = ComboBox2 GoTo 999 End If If TextBox21 = "" And TextBox22 = "" Then TextBox21 = ComboBox1 TextBox22 = ComboBox2 GoTo 999 End If If TextBox31 = "" And TextBox32 = "" Then TextBox31 = ComboBox1 TextBox32 = ComboBox2 GoTo 999 End If ↓ ↓  以下50個あります。 ↓ If TextBox501 = "" And TextBox502 = "" Then TextBox501 = ComboBox1 TextBox502 = ComboBox2 GoTo 999 End If 998 MsgBox "入力値に誤りがあります 999 End Sub とてつもなく長くなってしまいました。 変数をループを使って色々やってみたのですが、どうにもならず。。。 簡単に変数及びループを使用して纏める事は出来る物なのでしょうか? よろしくお願いいたします。

  • もう一つ質問です

    例えば四角ポケット加工の場合で、コーナーRが刃物の半径よりも小さい場合コーナーで円弧補間をつかいます。コーナーRが刃物の半径と同じ場合は円弧補間をつかいませんよね。マクロプログラムではどう分ければいいのでしょうか?今作ってるやつでは動きが怪しいのですが・・・・・。 コーナーR   #18 刃物半径    #11 ポケット深さ   #26 O1 G90G0Z5. IF[#11GT#18}GOTO1 IF[#18EQ#11]GOTO2 ; ; ; ←円弧補間を使うプログラム ; ; ; ; ; IF[#26EQ#26]GOTO3 ←円弧補間を使うプログラムをこの指令でN3に N2             とばしてます。 G90G0Z5. ; ; ;        ←円弧補間を使わないプログラム ; ; ; ; N1 N3 G90G0Z30. M99 どうでしょう?

  • ファナックマクロ#5001~5008、#5041…

    ファナックマクロ#5001~5008、#5041~#5048の違いについて 初歩的な質問で申し訳ないのですが#5001~#5008と#5041~#5048の違いって何かわかりますか?例えば #1=#4001 #3=#4003 #4=#4109 #5=#5003←この部分 G00G90Z#18 G01Z#26F#9 IF[#4010EQ98]GOTO1 G00Z#18 GOTO2 N1G00Z#5 N2G#1G#3F#4 M99 上記の#5003は#5043でもいいのではないかと思うのですが明確な違いが分かりません。それとも僕が勘違いしているのでしょうか?どなたか ご教授おねがいします!