• 締切済み
※ ChatGPTを利用し、要約された質問です(原文:プログラム)

プログラム作成時の引数入力に関する解決法は?

このQ&Aのポイント
  • プログラム作成時に引数の入力が多い場合、書き換えが煩雑になることや数字の入力ミスが問題となっています。その解決法をまとめました。
  • プログラム作成時の引数入力が多い場合、書き換えの手間や数字の入力ミスが発生しやすいことが課題となっています。ここでは、その解決法について考えてみます。
  • プログラム作成時には引数の入力が多くなることがあり、その際に書き換えの手間や数字の入力ミスが問題となっています。解決法について考えてみましょう。

みんなの回答

noname#230359
noname#230359
回答No.4

引数が10個以上もあり入力が大変であれば、デフォルト値を設定してはどうでしょうか? 例えば引数Aを省略したとして IF [#1 NE #0] GOTO1 #1 = 1.0 N1 という形で、#1になにか数値が入っていればジャンプし、空であれば数値が自動的に入力されるようにする。 自動入力される値は、定数だけでなく計算式にしたり、たとえば2.5次元の繰り返し加工のピッチであれば径オフセット値X0.1など。 可能なものはこのようにして、最低限の入力でも加工できるようにしておき、さらに細かい設定をしたい場合だけ必要な引数を入力するようにすれば加工者も楽になると思います。

noname#230358
質問者

お礼

ありがとうございます。 なるほど!勉強になります。ぜひ参考にさせて頂きます。

noname#230359
noname#230359
回答No.3

引数が10個以上も必要とするのは実用にはちょっと・・・・ そこで省略する方法をアドバイスさせて頂きます。 例えは、座標移動するマクロとして G65P1000X? Y? Z? などとして引数を付けることになるわけですが 日常的にX0,Y0,Z0とすることが多い場合には、これらを省略することができます 例 G65P1000 X0 Y0 Z0(通常形式)   ↓ G65P1000(省略形式) 内容としてはローカル変数とコモン変数を組み合わせて利用します X,Y,Zのローカル変数は#24,#25,#26だから 対応するコモン変数として#124,#125,#126を用意してやります -------------------- O1000(FANUC形式) #124=0.0 #24 EQ #0 GOTO 10 #124=#24 N10 #125=0.0 #25 EQ #0 GOTO 20 #125=#25 N20 #126=0.0 #26 EQ #0 GOTO 30 #126=#26 N30 G00X#124 Y#125 Z#126 M99 -------------------- このマクロの実用例 G65P1000 (X0 Y0 Z0へ移動) G65P1000X50. (X50. Y0 Z0へ移動) G65P1000Z50. (X0 Y0 Z50.へ移動) G65P1000X10.Y20.Z30. (X10.Y20.Z30.へ移動) となります。 プログラムの基本は、マシンオペレーターやプログラマーがいかに理解しやすいかです。 マクロを使えば2.5次元のメインプログラムなどの視認性は圧倒的に有利になります。 さらにG65P1000というようなマクロ呼出しではなく、マクロプログラムのユーザーGコード割り当てなどを行えば、G?? X10.Y20.Z30.との表現が可能となり、使い勝手は更に向上します。 マクロを使用しないNCオペレーションは考えられなくなりますよ!

noname#230358
質問者

お礼

ありがとうございます。 参考にさせて頂きます。 #100からはオプションになるんですかね?

noname#230359
noname#230359
回答No.2

こんばんは、いくつか投稿を見せていただきました。かなり苦労されているみたいですね。 プログラマーさんには少々厳しい意見も混じると思いますが現場からの屈託のない意見として参考にしてください。 質問のアドレス10個以上も現場が指定しなければいけないマクロを渡されたとしても現場オペレーターは動作確認等で困惑するばかりになると思います。 良いプログラムとは現場作業者が確認しやすく安全で理解が容易なプログラムであると断言できます。 NCコードの組み合わせのみでも2.5次元の加工以前でしたら用途に合わせかなり汎用性の高いものが出来ると思います。(実加工において) 私の場合オペレーター兼プログラマーですが他人に渡すプログラムの場合出来る限りマクロの使用は避けています。 解決方法と問われますと… 一番初めに考えていただきたいのが現場に渡すプログラミングの仕方ではないでしょうか?むしろマクロプログラムは必要ではない限り現場からの要請、要望があった場合にとどめておいたほうが良いと思います。 さて質問はたぶん今後の汎用性を持たせる為かと思います。 加工内容は判断しかねますが入力時アドレスが10以上とはたぶん簡略化されてはいないのではないでしょうか? あくまでも顧客や他人が使う「加工する為のプログラム」ですから現場オペレーターの意図は必ず参考にしてください。 1、仕上げか粗加工の判定式を入れる、または分ける。 2、径方向やZ方向の切り込み量などは刃物径に合わせて自動判別。 3、2を利用して繰り返し回数もマクロ処理してください。 4、回転、工具長補正などはメインで。 など工夫する余地は多々あるのではと想像します。 またマクロを組むに当たっては、 1、演算式、判定式などは可能な限り一纏めにする(連続ブロックで処理) 2、繰り返し処理の多い場合、演算誤差を修正処理させる。 3、アドレスやマクロ処理に注釈を入れる。 だけでかなり見やすく間違いの少ない扱いやすいプログラムとなります。 いずれにせよ、オペレーターとプログラマーの知識の共有部分が少ないように想像してしまいます。 他投稿のドリル条件などは実加工しているオペレーター(作業員?)や現場の方の意見を参考にされるのが一番かと思います。実際にワークを加工しているのは彼らなのですから。(ワークの状態、材質、機械剛性、工具種類、ツール突き出し…) 「職人の経験はデーターより勝る!」←これが現在の私の考えです。 逆にプログラマーの意見としては理解を求めたい場合も多く直面しているとは思いますが…。 それでは、今後も頑張ってください。

noname#230358
質問者

お礼

ありがとうございます。 すごいですね、私とはレベルが違いすぎます!! ほとんどが私が困っていた事なのでとても勉強になります。 参考にさせて頂きます。

noname#230359
noname#230359
回答No.1

引数は便利ですが、時には書き換えが面倒かもしれません。 1.今の引数方式を利用するなら #500=... #501=... として G65 P1000 Z#500 Q#501 S......とすれば、結構簡単ではないでしょうか。 2.パソコンで管理して簡単な対話形式を作成。メインの引数をPCで作成したあと、NC機に送る ヒューマンエラーは無くなりません。(押さえる事は出来ますが) 出来るだけ手入は減らす考えが必要では。 こちらでよく使う方法を紹介 NC装置がファナックならパターンデータ入力があります。 名称が付けられるので入力がしやすくなります。またメニュー選択で入力項目が切り替えも可能です。 メニューHOLE PATTERN O0000 N00000 1. BOLT HOLE 2. GRID 3. LINE ANGLE 4. TAPPING 5. DRILLING 6. BORING 7. POCKET 8. PECK 9. テストパターン 10. BACK で10パターンまで選択できます。 選択すると下のようにメニューに対応する入力項目が表示されます。 500 TOOL 0.000 501 KIJUN X 0.000 *BOLT HOLE 502 KIJUN Y 0.000 CIRCLE* 503 RADIUS 0.000 SET PATTERN 504 S. ANGL 0.000 DATA TO VAR. 505 HOLES NO. 0.000 NO. 500 - 505. 506 0.000 507 0.000 #500~の変数は電源を切っても保持されます。#100~#199までは保持されません。

noname#230358
質問者

お礼

ありがとうございます。 本当に皆さんレベルが高いですね!! 竜の子さんもすごいですね、私も早くそこまでの知識が欲しいです。 とても勉強になります。参考にさせて頂きます。 引数は#100~、#500~はオプションなのでしょうか?

関連するQ&A