b巨集的用法
b類巨集程式的變數與a類巨集程式的變數基本相似,但也略有不同,主要區別有以下幾個方面。
(1)變數的表示: b類巨集程式除可採用a類巨集程式的交量表示方法外,還可以用表示式表示,但表 達式必須封閉在方括號「[ ]」中。程式的圓括號「( )」用於注釋。
例# [#1+#2+10] 當#1=10, #2=100時, 該變數表示#120。
(2)變數的引用,引用變數也可以用表示式表示。
例g01 x [#100-30.0] y-#101 f [#101+#103]
當#100=100時、#101=50、 #103=80時,上式即表示為g01 x70.0 y-50.0 f130
(3)變數的種類:b類與a類巨集程式的變數種類相同
2.變數的賦值
(1)直接賦值:變數可以在操作面板上用mid方式直接賦值,也可在程式中以等式方式賦值,在等號左邊不能用表示式。
例#100=100.0; #100 =30.0+20.0
(2)引數賦值巨集程式以子程式方式出現,所用的變數可在巨集呼叫時賦值。如下所示: :
例g65 p1000 x100.0 y30.0 z20.0 f 100.0
此處的x、y、z不代表座標字,f也不代表進給字,而是對應與巨集程式中的變數號,變數的具體數值由引數後的數值決定;引用巨集程式體中的變數對應關係有兩種,見表2-4-2及表2-4-3.此兩種方法可以混用,其中g、l、n、o、p不能作為引數替變數賦值。
例:變數賦值方法1
g65p0030 a50.0 140.0 j100.0 k0 120 j10.0 k40.0
經賦值後#1=50.0, #4=40.0, #5=100.0,#6=0,#7-20.0, #8-10.0, #9=40.0。
變數賦值方法2
g65 p0o20 a50.0 x40.0 f 100
經賦值後#1=50.0, #24=40.0,#9=100.0。
變數的賦值方法1、2混合
g65 p0030 a50.0 d40.0 1100.0 k0 120.0
經賦值後,120.0與d40.0同時分配給變數#7,則後乙個#7有效,所以變數#7=20.0,其餘同上。
採用賦值後前面a類巨集程式例題精加工程式可改寫成如下形式:
0010 (主程式)
g65 p0210x28.0z-20. 0 a20.0bo r20.0 (賦值後, 24=28. 0, #26=-20.0, #1=20. 0, #2=0, #18=20. 0)
0210; (精加工巨集程式)
n1000 g01z#26;
x#24
go2 x#24 y0 1-#24 j0;
#2=#2+0.1;
#1=sqrt[#18*#18-#2*#2]
#24=#1+8.0;
#26=-20.0+#2;
ip[#26 lb 0]goto 1000
g01z20;
go1x0.0 y40.0;
m99;
3.運算指令
b類巨集程式的運算指令與a類巨集程式的運算指令有很大區別,它的運算類似於數**算,用各種數學符號來表示。常用運算指令見表2-4-4.
巨集程式計算說明如下
(1) 函式sincos等的角度單位是度,分和秒要換算成帶小數點的度。如9o" 30' 表示90.5"。 而30º18'表示30.3"。
(2)巨集程式數**算計算的次序依次為:函式運算(sin cos atan等),乘和除運算(*、/、 and 等),加和減運算(+、-、or、xor等)
例#1=#2+#3*sin[#4]:
運算次數為:
①函式sin[ # ]4
②乘和除運算3*sin[ #4]
③加和減運算#2+#3*sin[#4]
(3)函式中的括號用於改變運算次序,函式中的括號允許巢狀使用,但最多隻允許巢狀5級。 例#1=sin[[[#2+#3]*4+#5]/ #6]
(4) cnc處理數值取整運算時,若操作產生的整數大於原數時為上取整,反之則為下取整。例設#1=1.2; #2=-1.2.
執行3=fup[#1]時, 2. 0賦給#3;執行#3=fix[#1]時,1.0賦給#3;執行#3=fup[#2]時, -2. 0賦給#3;執行#3=fix[#2]時,-1.0賦給#3:
控制指令:控制指令到控制程式流向的作用。
(1)分支語句
格式一goton:
例goto 1000
格式一所示無條件轉移語句,當執行該程式時,無條件轉移到n1000程式段執行。
格式二if[條件表示式]goton;
例if[ #1 gt #100]g0t01000
格式二所示有條件轉移語句,如果條件成立,則轉到n程式段執行,如果條件不成立,則執行下一句程式。條件式的種類見表2-4-5.
(2)迴圈指令
while[條件式]dom (m=1、2、3.)。
endm;
當條件式滿足時,就迴圈執行while與end之間的程式段m次,當條件不滿足時,就執行endm的下乙個程式段。
三、程式設計例項與練習課題
例1用b類巨集程式編寫如圖2-4-3所示橢圓凸台加工程式。
00020; (主程式)
g90 g80 g40 g21 g17 g94; (程 序初始化)
g91 g28 z0. 0;
g90 g54;
goo x40.0 yo. 0;
g43 z20. 0 h01;
s600 mo3;
g01 z0. 0 f200;
m98 p0120 l9; (去餘量, z向分層切削,每次切深2mm)
g90 g01 z20. 0;
go1 x40.0 yo;
m98 p0220; (呼叫巨集程式,加工橢圓錐臺)
g91 g28 z0. 0;
m05;
m30;
00120;(粗加工去餘量子程式)
g91 g01 z-2.0;
g90;
#103=360; (角度變數賦初值)
n100 #104=18.0 * cos [# 103]; (x 座標值變數)
#105=24.0 * sin[#103]; (y 座標值變數)
g41 g01 x#104 y#105 d01;
#103=#103-1.0; (角度每次增量為-1° )
if [#103 ge 0.0] goto 100: (如果角度大於等於0°,則返回執行迴圈。)
g40 g01 x40.0 yo;
m99;
00220 (精加工橢圓錐子程式)
#110=0; (刀尖到底平面高度,見圖2)
#111=-18.0; (刀尖z座標值)
#101=18.o; (短半軸半徑)
#102=24.o; (長半軸半徑)
n200#103-360.0; (角度變數)
g01 z#111 f100;
n300#104=#101 * cos [#103]; (刀尖x座標值)
#105=#102 * sin [#103]; (刀尖y座標值)
g41 g01 x#104 y#105 do1;
#103=#103-1.0;
if [#103 ge 0.0] goto 300; (迴圈加工橢圓)
g40 g01 x40.0 yo;
#110=#110+0.1;
#111=#111+0.1; (刀尖z座標值)
#101=18.0-#110*tan [30. 0]; (短半軸半徑變數)
#102=24.0-#110*tan [30. 0]; (長半軸半徑變數)
if [#111 le o.0] goto 200; (迴圈加工橢圓錐臺)
對Java巨集變數與巨集替換的理解
一 巨集變數 先說說什麼是巨集變數,滿足三個必須條件即是巨集變數 1 該變數必須是final修飾的變數 2 該變數必須在開始時就指定初始值 3 該初始值必須是在編譯時期就可以確定。二 巨集替換 public class finaltest 結果 true false truenb定義了finalte...
const變數與巨集的區別
const的用法有四種 引數 返回值 函式,另一種沒有想起來 用const修飾變數將限定變數為唯讀,該變數值不允許被改變。下面是const用於定義陣列大小的乙個簡單例子 const int arraysize 10 int array arraysize 僅限於c 可以這樣表示。const變數必須初...
VHDL變數與訊號的差異
1,賦值方式的不同 變數 表示式 訊號 表示式 2,硬體實現的功能不同 訊號代表電路單元,功能模組間的互聯,代表實際的硬體連線 變數代表電路單元內部的操作,代表暫存的臨時資料 3,有效範圍不同 訊號 全域性量 程式包,實體,結構體 變數 區域性量 程序,子程式 注 在程序和子程式中,訊號只能被使用,...