• 締切済み
※ ChatGPTを利用し、要約された質問です(原文:and or xorの使い方)

and or xorの使い方

このQ&Aのポイント
  • and or xorの使い方について詳しく教えてください
  • カスタムマクロのANDなどの使い方がわかりません。解釈としては、「もし・・ならば(IF)○○、そうでなければ○○」の解釈ととらえましたが合ってますか?
  • 使用例や注意点なども教えてください

みんなの回答

noname#230359
noname#230359
回答No.5

補足になりますがIF条件はシンプルに考えてこうです。 IF [#30 GT 0] THEN GOTO o100 GOTO o200 もし#30が0でなければ0(N)100へ飛びなさい 0(N)200へ飛びなさい 一行の中に複数IFを入れたいのであれば elese ifという構文が ありますがプログラマー以外判りにくくなりますので 改行で新たに書くといった方法がいいかと思われます。 またNC言語のマクロはプログラム言語のBASIC言語とほぼ同じで 簡単な英文で書けるでそちらを参考にされてもいいかと思います。 BASICにいたってはPCでエミュレーターを入れれば動かすことが可能だと 思います、何か試される際卓上の検証にも役に立つ世思います。

noname#230359
noname#230359
回答No.4

AND OR XOR は ビット毎のそれぞれ 論理積 論理和 排他的論理和 の演算式ですので システム変数のインターフェース入出力信号(#1032・#1132等)から 情報を取得・設定する際に使用します。

noname#230358
質問者

お礼

アドバイスありがとうございます。 (#1032・#1132等)で使うならあまり普段は使わないんですね。

noname#230359
noname#230359
回答No.3

まあNCでそんな複雑な条件式が評価されるかわからんが 文面が違うので IF[[[#30GT0]AND[#30LT0]]GOTO xx] こんな感じ ← 動くかどうか知らんが 意味 #30 が 0 以上 で なおかつ 0以下なら xxに行けなので 成り立ってません  VB 等の場合 条件式1 and 条件式2 両方とも真ならば 条件式1 or 条件式2  どちらかが真ならば 条件式1 xor 条件式2 どちらかが真ならば ただし両方とも真ならば成り立たない http://www.xlsoft.com/jp/products/intel/cvf/docs/vf-html/lr/lr04_01_04.htm

noname#230358
質問者

お礼

アドバイスありがとうございます。 動くかどうかわかりませんが、早速やってみます。

noname#230359
noname#230359
回答No.2

本森の過去の投稿です。 ---------- http://mori.nc-net.or.jp/EokpControl?&tid=267334&event=QE0004 ---------- 参考になれば幸いです。 回答(1)さんとほとんど同じですが、 質問者さんの使用例について書いてみます。 ----- O0001 G65P0002A1. G65P0002A-1. G65P0002A0 M30 O0002 #30=#1 IF[#30GT0]GOTO1 IF[#30LT0]GOTO2 GOTO3 N1M0(#30>0) GOTO4 N2M0(#30<0) GOTO4 N3M0(#30=0) GOTO4 N4M99 ----- ANDは登場しません。 回答(1)さんへ、 >AND、OR、XOR、は数値の演算指令です。IFの条件に直接書けません。 コントローラによっては可能です。 ----- O0001 G65P0002A-1.B-1. G65P0002A-1.B0 G65P0002A-1.B1. G65P0002A0B-1. G65P0002A0B0 G65P0002A0B1. G65P0002A1.B-1. G65P0002A1.B0 G65P0002A1.B1. M30 O0002 IF[[#1LT0]AND[#2LT0]]GOTO11 IF[[#1LT0]AND[#2EQ0]]GOTO12 IF[[#1LT0]AND[#2GT0]]GOTO13 IF[[#1EQ0]AND[#2LT0]]GOTO21 IF[[#1EQ0]AND[#2EQ0]]GOTO22 IF[[#1EQ0]AND[#2GT0]]GOTO23 IF[[#1GT0]AND[#2LT0]]GOTO31 IF[[#1GT0]AND[#2EQ0]]GOTO32 IF[[#1GT0]AND[#2GT0]]GOTO33 N11M0(#1<0 AND #2<0) GOTO41 N12M0(#1<0 AND #2=0) GOTO41 N13M0(#1<0 AND #2>0) GOTO41 N21M0(#1=0 AND #2<0) GOTO41 N22M0(#1=0 AND #2=0) GOTO41 N23M0(#1=0 AND #2>0) GOTO41 N31M0(#1>0 AND #2<0) GOTO41 N32M0(#1>0 AND #2=0) GOTO41 N33M0(#1>0 AND #2>0) GOTO41 N41M99 ----- 条件判定文内で論理演算が使えない機台の場合の例が下記です。 ----- O0001 G65P0002A-1.B-1. G65P0002A-1.B0 G65P0002A-1.B1. G65P0002A0B-1. G65P0002A0B0 G65P0002A0B1. G65P0002A1.B-1. G65P0002A1.B0 G65P0002A1.B1. M30 O0002 #31=0 IF[#1LT0]THEN#31=#31+1 IF[#1EQ0]THEN#31=#31+2 IF[#1GT0]THEN#31=#31+4 IF[#2LT0]THEN#31=#31+8 IF[#2EQ0]THEN#31=#31+16 IF[#2GT0]THEN#31=#31+32 #32=#31AND1+8 IF[#32EQ1+8]GOTO11 #32=#31AND1+16 IF[#32EQ1+16]GOTO12 #32=#31AND1+32 IF[#32EQ1+32]GOTO13 #32=#31AND2+8 IF[#32EQ2+8]GOTO21 #32=#31AND2+16 IF[#32EQ2+16]GOTO22 #32=#31AND2+32 IF[#32EQ2+32]GOTO23 #32=#31AND4+8 IF[#32EQ4+8]GOTO31 #32=#31AND4+16 IF[#32EQ4+16]GOTO32 #32=#31AND4+32 IF[#32EQ4+32]GOTO33 N11M0(#1<0 AND #2<0) GOTO41 N12M0(#1<0 AND #2=0) GOTO41 N13M0(#1<0 AND #2>0) GOTO41 N21M0(#1=0 AND #2<0) GOTO41 N22M0(#1=0 AND #2=0) GOTO41 N23M0(#1=0 AND #2>0) GOTO41 N31M0(#1>0 AND #2<0) GOTO41 N32M0(#1>0 AND #2=0) GOTO41 N33M0(#1>0 AND #2>0) GOTO41 N41M99 ----- >IF[[#1AND#2]EQ0]GOTO2・・・ >(もし、#1と#2が0で0と同じならN2へ)という事でしょうか? ----- #1=0,#2=0 ⇒ #1AND#2=0 ⇒ EQ0なのでN2へ #1=0,#2=1 ⇒ #1AND#2=0 ⇒ EQ0なのでN2へ #1=1,#2=0 ⇒ #1AND#2=0 ⇒ EQ0なのでN2へ #1=1,#2=1 ⇒ #1AND#2=1 ⇒ EQ0ではないのですぐ下の行へ ----- です。

noname#230358
質問者

お礼

アドバイスありがとうございます。 ホームページの過去投稿大変為になりました。 エクセルのANDとは少々解釈が違うみたいですね。 今後共、よろしくおねがいします。

noname#230358
質問者

補足

という事は、回答3さんが書いた式を例にすると、 IF[[#1AND#2]EQ0]GOTO2・・・ (もし、#1と#2が0で0と同じならN2へ)という事でしょうか? 訂正です。 回答3さんじゃなくて、ホームページの式を例にしました。 すみませんでした。

noname#230359
noname#230359
回答No.1

マクロは単純な言語なので1行だけしか書けません。カッコ中で比較する右辺左辺の2項はカッコを使うと複雑にすることは出来る。   IF[#30GT0]GOTO1   IF[#30EQ0]GOTO3 ← GT0とLT0では間の EQ0 が抜ける   GOTO2  ← LT0に相当する残りの場合 AND、OR、XOR、は数値の演算指令です。IFの条件に直接書けません。   http://www.ai-sols.co.jp/product/macro_kihon06.htm >こんな感じ ← 動くかどうか知らんが ひどすぎる! 比較した結果について、成立てば1、不成立は0ゼロと値を持たせ、それをさら演算、条件分岐に使うのはC、Vbなど高級言語。 NCマクロの文法は単純そのもの。

noname#230358
質問者

お礼

毎回お世話になります。 自分の解釈がちょっとエクセルよりでしたね。 基本は積なんで掛け算なんですね。

関連するQ&A