本文へ移動
サポートシェアリングソリューション
OKWAVE Plus

このQ&Aは役に立ちましたか?

ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:mazak NC旋盤のガントリーロボット(メルダ…)

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

2023/09/06 22:27

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

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

2011/08/19 12:05

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でアラーム発生させる必要は無いと考えます。何か矛盾しているような感じがしますがどうなのでしょうか。

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

ベストアンサー
2011/08/20 18:56
回答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で当該サブブログラムへ飛ばす実行文あたりを見て、
解読するしかないですね。


当然ですがローダの使用を考えていらっしゃいますね。チャックワーク
のみをご使用され、ハンドをシャフト用にしないのであれば、当該条件文
を削除または( )でくくって実行させないこともアリかと。


他人の作成したマクロを理解するのは大変ですが、読み解きながら判明
した内容を、コメント (  )としてプログラムに追記しておくと、
後々便利でしょう。

お礼

2011/08/22 06:46

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

まだ最初の方なので、進めていくうちにこんなことがまた出てくると思うと
先が思いやられます。

カッコで括って読まないようにしたらとりあえず先には進むようになりました。ありがとうございます。

質問者

このQ&Aは役に立ちましたか?

この質問は投稿から一年以上経過しています。
解決しない場合、新しい質問の投稿をおすすめします。

質問する

その他の回答 (2件中 1~2件目)

2011/08/19 19:36
回答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へ飛ぶ」などと書く事になります。

お礼

2011/08/19 20:08

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

質問者

お礼をおくりました

さらに、この回答をベストアンサーに選びますか?

ベストアンサーを選ぶと質問が締切られます。
なおベストアンサーを選びなおすことはできません。