數控編程IF的用法?關於宏程序
大家都在問宏程序~其實說起來宏就是用公式來加工零件的,比如說橢圓,如果沒有宏的話,我們要逐點算出曲線上的點,然後慢慢來用直線逼近,如果是個光潔度要求很高的工件的話,那麼需要計算很多的點,可是應用了宏後,我們把橢圓公式輸入到係統中然後我們給出Z坐標並且每次加10um那麼宏就會自動算出X坐標並且進行切削,實際上宏在程序中主要起到的是運算作用..宏一般分為A類宏和B類宏.A類宏是以G65 Hxx P#xx Q#xx R#xx的格式輸入的,而B類宏程序則是
以直接的公式和語言輸入的和C語言很相似在0i係統中應用比較廣.由於現在B類宏程序的大量使
用很多書都進行了介紹這裏我就不再重複了,但在一些老係統中,比如法蘭克OTD係統中由於它的MDI鍵盤上沒有公式符號,連最簡單的等於號都沒有,為此如果應用B類宏程序的話就隻能在計算機上編好再通過RSN-32接口傳輸的數控係統中,可是如果我們沒有PC機和RSN-32電纜的話怎麼辦呢,那麼隻有通過A類宏程序來進行宏程序編製了,下麵我介紹一下A類宏的引用;
A類宏是用G65 Hxx P#xx Q#xx R#xx或G65 Hxx P#xx Qxx Rxx格式輸入的xx的意思就是數值,是以um級的量輸入的,比如你輸入100那就是0.1MM~~~~~.#xx就是變量號,關於變量號是什麼意思再不知道的的話我也就沒治了,不過還是教一下吧,變量號就是把數值代入到一個固定的地址中,固定的地址就是變量,一般OTD係統中有#0~~~#100~#149~~~#500~#531關閉電源時變量#100~#149被初始化成“空”,而變量#500~#531保持數據.我們如果說#100=30那麼現在#100地址內的數據就是30了,就是這麼簡單.好現在我來說一下H代碼,大家可以看到A類宏的標準格式中#xx和xx都是數值,而G65表示使用A類宏,那麼這個H就是要表示各個數值和變量號內的數值或者各個變量號內的數值與其他變量號內的數值之間要進行一個什麼運算,可以說你了解了H代碼A類宏程序你基本就可以應用了,好,現在說一下H代碼的各個含義:
以下都以#100和#101和#102,及數值10和20做為例子,應用的時候別把他們當格式就行,
基本指令:
H01賦值;格式:G65H01P#101Q#102:把#102內的數值賦予到#101中
G65H01P#101Q#10:把10賦予到#101中
H02加指令;格式G65 H02 P#101 Q#102 R#103,把#102的數值加上#103的數值賦予#101
G65 H02 P#101 Q#102 R10
G65 H02 P#101 Q10 R#103
G65 H02 P#101 Q10 R20
上麵4個都是加指令的格式都是把Q後麵的數值或變量號內的數值加上R後麵的數
值或變量號內的數值然後等於到P後麵的變量號中.
H03減指令;格式G65 H03 P#101 Q#102 R#103,把#102的數值減去#103的數值賦予#101
G65 H03 P#101 Q#102 R10
G65 H03 P#101 Q10 R#103
G65 H03 P#101 Q20 R10
上麵4個都是減指令的格式都是把Q後麵的數值或變量號內的數值減去R後麵的數
值或變量號內的數值然後等於到P後麵的變量號中.
H04乘指令;格式G65 H04 P#101 Q#102 R#103,把#102的數值乘上#103的數值賦予#101
G65 H04 P#101 Q#102 R10
G65 H04 P#101 Q10 R#103
G65 H04 P#101 Q20 R10
上麵4個都是乘指令的格式都是把Q後麵的數值或變量號內的數值乘上R後麵的數
值或變量號內的數值然後等於到P後麵的變量號中.
H05除指令;格式G65 H05P#101 Q#102 R#103,把#102的數值除以#103的數值賦予#101
G65 H05 P#101 Q#102 R10
G65 H05 P#101 Q10 R#103
G65 H05 P#101 Q20 R10
上麵4個都是除指令格式都是把Q後麵的數值或變量號內的數值除以R後麵的數
值或變量號內的數值然後等於到P後麵的變量號中.(餘數不存,除數如果為0的話會出現112報警)
三角函數指令:
H31 SIN正玄函數指令:格式G65 H31 P#101 Q#102 R#103;含義Q後麵的#102是三角形的斜邊R後麵的#103內存的是角度.結果是#101=#102*SIN#103,也就是說可以直接用這個求出三角形的另
一條邊長.和以前的指令一樣Q和R後麵也可以直接寫數值.
H32 COS餘玄函數指令:格式G65 H32 #101 Q#102 R#103;含義Q後麵的#102是三角形的斜邊
R後麵的#103內存的是角度.結果是#101=#102*COS#103,也就是說可以直接用這個求出三角形的
另一條邊長.和以前的指令一樣Q和R後麵也可以直接寫數值.
H33和H34本來應該是TAN 和ATAN的可是經過我使用得數並不準確,希望有知道的人能夠告訴我是為什麼?
開平方根指令:
H21;格式G65 H21 P#101 Q#102 ;意思是把#102內的數值開了平方根然後存到#101中(這個指令是非常重要的如果在車橢圓的時候沒有開平方跟的指令是沒可能用宏做到的.
無條件轉移指令:
H80;格式:G65 H80 P10 ;直接跳到第10程序段
有條件轉移指令:
H81 H82 H83 H84 H85 H86 ,分別是等於就轉的H81;不等於就轉的H82;小於就轉的H83;大於就轉的H84;小於等於就轉的H85;大於等於就轉的H86;
格式:G65 H8x P10 Q#101 R#102;將#101內的數值和#102內的數值相比較,按上麵的H8x的碼帶入H8x中去,如果條件符合就跳到第10程序段,如果不符合就繼續執行下麵的程序段.
用 戶 宏 程 序
能完成某一功能的一係列指令像子程序那樣存入存儲器,用一個總指令來它們,使用時隻需給出這個總指令就能執行其功能。
l 所存入的這一係列指令——用戶宏程序
l 調用宏程序的指令————宏指令
l 特點:使用變量
一. 變量的表示和使用
(一) 變量表示
#I(I=1,2,3,…)或#[]
例:#5,#109,#501,#[#1+#2-12]
(二) 變量的使用
1. 地址字後麵指定變量號或公式
格式: #I
-#I
[]
例:F#103,設#103=15 則為F15
Z-#110,設#110=250 則為Z-250
X[#24+#18*COS[#1]]
2. 變量號可用變量代替
例:#[#30],設#30=3 則為#3
3. 變量不能使用地址O,N,I
例:下述方法下允許
O#1;
I#2 6.00×100.0;
N#3 Z200.0;
4. 變量號所對應的變量,對每個地址來說,都有具體數值範圍
例:#30=1100時,則M#30是不允許的
5. #0為空變量,沒有定義變量值的變量也是空變量
6. 變量值定義:
程序定義時可省略小數點,例:#123=149
MDI鍵盤輸一. 變量的種類
1. 局部變量#1~#33
一個在宏程序中局部使用的變量
例: A宏程序 B宏程序
… …
#10=20 X#10 不表示X20
… …
斷電後清空,調用宏程序時代入變量值
2. 公共變量#100~#149,#500~#531
各用戶宏程序內公用的變量
例:上例中#10改用#100時,B宏程序中的
X#100表示X20
#100~#149 斷電後清空
#500~#531保持型變量(斷電後不丟失)
3. 係統變量
固定用途的變量,其值取決於係統的狀態
例:#2001值為1號刀補X軸補償值
#5221值為X軸G54工件原點偏置值
入時必須輸入小數點,小數點省略時單位為μm
一. 運算指令
運算式的右邊可以是常數、變量、函數、式子
式中#j,#k也可為常量
式子右邊為變量號、運算式
1. 定義
#I=#j
2. 算術運算
#I=#j+#k
#I=#j-#k
#I=#j*#k
#I=#j/#k
3. 邏輯運算
#I=#JOK#k
#I=#JXOK#k
#I=#JAND#k
4. 函數
#I=SIN[#j] 正弦
#I=COS[#j] 餘弦
#I=TAN[#j] 正切
#I=ATAN[#j] 反正切
#I=SQRT[#j] 平方根
#I=ABS[#j] 絕對值
#I=ROUND[#j] 四舍五入化整
#I=FIX[#j] 下取整
#I=FUP[#j] 上取整
#I=BIN[#j] BCD→BIN(二進製)
#I=BCN[#j] BIN→BCD
1. 說明
1) 角度單位為度
例:90度30分為90.5度
2) ATAN函數後的兩個邊長要用“1”隔開
例:#1=ATAN[1]/[-1]時,#1為了35.0
3) ROUND用於語句中的地址,按各地址的最小設定單位進行四舍五入
例:設#1=1.2345,#2=2.3456,設定單位1μm
G91 X-#1;X-1.235
X-#2 F300;X-2.346
X[#1+#2];X3.580
未返回原處,應改為
X[ROUND[#1]+ROUND[#2]];
4) 取整後的絕對值比原值大為上取整,反之為下取整
例:設#1=1.2,#2=-1.2時
若#3=FUP[#1]時,則#3=2.0
若#3=FIX[#1]時,則#3=1.0
若#3=FUP[#2]時,則#3=-2.0
若#3=FIX[#2]時,則#3=-1.0
5) 指令函數時,可隻寫開頭2個字母
例:ROUND→RO
FIX→FI
6) 優先級
函數→乘除(*,1,AND)→加減(+,-,OR,XOR)
例:#1=#2+#3*SIN[#4];
7) 括號為中括號,最多5重,園括號用於注釋語句
例:#1=SIN[[[#2+#3]*#4+#5]*#6];(3重)
一. 轉移與循環指令
1.無條件的轉移
格式: GOTO 1;
GOTO #10;
2.條件轉移
格式: IF[] GOTO n
條件式:
#j EQ#k 表示=
#j NE#k 表示≠
#j GT#k 表示>
#j LT#k 表示]DO m;(m=1,2,3)
…
…
…
ENDm
說明:1.條件滿足時,執行DOm到ENDm,則從DOm的程序段
不滿足時,執行DOm到ENDm的程序段
2.省略WHILE語句隻有DOm…ENDm,則從DOm到ENDm之間形成死循環
3.嵌套
4.EQ NE時,空和“0”不同
其他條件下,空和“0”相同
例:求1到10之和
O0001;
#1=0;
#2=1;
WHILE [#2LE10] DO1;
#1=#1+#2;
#2=#2+#1;
END1;
M30;
數控IF THEN語句,表達式一直滿足,後麵的值是變量,假 IF[#1EQ#2] THEN #3=0 #3=#3+1的話#3的值是0還是1
IF[#1EQ#2] THEN #3=0 執行完這一行,#3的值是0。
#3=#3+1 執行完這一行,#3的值是1。
法拉克數控係統宏程序if then語句
if後加個條件語句then後加個控製語句。
例如:AA: 程序
.......
..........
if X<0 then="" goto="">0>
就是如果程序中給個變量,然後這個變量在滿足X<>
數控銑床編程if goto是什麼意思
if ---如果條件成立。
goto ---從這裏(跳到這裏)執行。
比如:
..................
if (i == 1) //執行到這裏,如果括號裏的條件成立
{
goto diy;
}
...............//跳過
................//跳過
.................//跳過
diy : .............//跳到這裏執行
.........................
........................
請問大家數控加工中心怎麼鑽孔用宏程序怎麼編程,WHILE和IF[#100 GE #101]GOTO1 分別怎麼編寫.懸賞100
在初學階段 是真的得什麼都用宏程序編編看 隻有這樣才能熟練的掌握他
IF GOTO 跟WHILE DO END 的組合其實能實現的作用是一樣的
隻不過WHILE組合屬於模塊化編程 一般計算機編程裏麵推薦用這個方法
宏程序的作用是抓住加工過程中重複的有規律的那一部分 進行參數化編程 節省因刀具 孔徑 高度等參數變化而修改程序的時間 或者為機床增加一些你需要經常用到的功能
求程序,數控車床的高手指點下啦,宏程序要用IF語句
看一下機床配帶的編程手冊,上麵有介紹宏程序的內容
數控宏程序 IF【3 AND 3EQ1】GOTO1
“IF……GOTO”為跳轉語句,即如果滿足中括號中的條件,則跳轉到N1程序語段。直到不滿足中括號中的條件時才跳出循環,繼續執行後麵的語句。
再就是你中括號中的內容,是“邏輯與”語句,即必須同時滿足and前麵和後麵的條件。再者EQ為等於的意思。所以這句話的意思是:“如果結果是3,並且3=1,則程序跳轉至N1程序段。”很高興為您服務,望采納,謝謝!
法蘭克數控係統車宏程序有那些英文代碼?例如:GT,EN,IF等,分別是什麼意思?
5.1變量
普通加工程序直接用數值指定G代碼和移動距離;例如,GO1和X100.0。使用用戶宏程序時,數值可以直接指定或用變量指定。當用變量時,變量值可用程序或用MDI麵板上的操作改變。
#1=#2+100
G01 X#1 F300
說明:
● 變量的表示
計算機允許使用變量名,用戶宏程序不行。變量用變量符號(#)和後麵的變量號指定。
例如:#1
表達式可以用於指定變量號。此時,表達式必須封閉在括號中。
例如:#[#1+#2-12]
● 變量的類型
變量根據變量號可以分成四種類型
變量號 變量類型 功能
#0 空變量 該變量總是空,沒有值能賦給該變量.
#1-#33 局部變量 局部變量隻能用在宏程序中存儲數據,例如,運算結果.當斷電時,局部變量被初始化為空.調用宏程序時,自變量對局部變量賦值,
#100-#199
#500-#999 公共變量 公共變量在不同的宏程序中的意義相同.當斷電時,變量#100-#199初始化為空.變量#500-#999的數據保存,即使斷電也不丟失.
#1000--- 係統變量 係統變量用於讀和寫CNC運行時各種數據的變化,例如,刀具的當前位置和補償值.
● 變量值的範圍
局部變量和公共變量可以有0值或下麵範圍中的值:
-1047到-10-29或-10-2到-1047
如果計算結果超出有效範圍,則發出P/S報警NO.111.
● 小數點的省略
當在程序中定義變量值時,小數點可以省略。
例:當定義#1=123;變量#1的實際值是123.000。
● 變量的引用
為在程序中使用變量值,指定後跟變量號的地址。當用表達式指定變量時,要把表達式放在括號中。
例如:G01X[#1+#2]F#3;
被引用變量的值根據地址的最小設定單位自動地舍入。
例如:
當G00X#/;以1/1000mm的單位執行時,CNC把123456賦值給變量#1,實際指令值為G00X12346.
改變引用變量的值的符號,要把負號(-)放在#的前麵。
例如:G00X-#1
當引用未定義的變量時,變量及地址都被忽略。
例如:當變量#1的值是0,並且變量#2的值是空時,G00X#1 Y#2的執行結果為G00X0。
● 雙軌跡(雙軌跡控製)的公共變量
對雙軌跡控製,係統為每一軌跡都提供了單獨的宏變量,但是,根據參數N0.6036和6037的設定,某些公共變量可同時用於兩個軌跡。
● 未定義的變量
當變量值未定義時,這樣的變量成為空變量。變量#0總是空變量。它不能寫,隻能讀。
(a) 引用
當引用一個未定義的變量時,地址本身也被忽略。
當#1=<空> 當#1=0
G90 X100 Y#1
↓
G90 X100 G90 X100 Y#1
↓
G90 X100 Y0
(b) 運算
除了用<空>賦值以外,其餘情況下<空>與0相同。
當#1=<空>時 當#1=0時
#2=#1
↓
#2=<空> #2=#1
↓
#2=0
#2=#*5
↓
#2=0 #2=#*5
↓
#2=0
#2=#1+#1
↓
#2=0 #2=#1+#1
↓
#2=0
(c)條件表達式
EQ和NE中的<空>不同於0。
當#1=<空>時 當#1=0時
#1EQ#0
↓
成立 #1EQ#0
↓
不成立
#1 NE #0
↓
成立 #1 NE #0
↓
不成立
#1 GE #0
↓
成立 #1 GE #0
↓
不成立
#1 GT #0
↓
不成立 #1 GT #0
↓
不成立
● 限製
程序號,順序號和任選程序段跳轉號不能使用變量。
例:下麵情況不能使用變量:
0#1;
/#2G00X100.0;
N#3Y200.0;
5.2算術和邏輯運算
下麵表中列出的運算可以在變量中執行。運算符右邊的表達式可包含常量和或由函數或運算符組成的變量。表達式中的變量#j和#k可以用常數賦值。左邊的變量也可以用表達式賦值。
功能 格式 備注
定義 #i=#j
加法
減法
乘法
除法
#i-#j+#k;
#i-#j-#k;
#i-#j*#k;
#i-#j/#k;
正弦
反正弦
餘弦
反餘弦
正切
反正切
#i=SIN[#j];
#i=ASIN[#j];
#i=COS[#j];
#i=ACOS[#j];
#i=TAN[#j];
#i=ATAN[#j];
角度以度數指定,90°30’表示為90.5度。
平方根
絕對值
舍入
上取整
下取整
自然對數
指數函數 #i=SQRT[#j];
#i=ABS[#j];
#i=ROUNND[#j];
#i=FIX[#j];
#i=FUP[#j];
#i=LN[#j];
#i=EXP[#j];
或
異或
與 #i-#jOR#k;
#i-#jXOR#k;
#i-#jAND#k;
邏輯運算一位一位地按二進製數執行。
從BCD轉為BIN
從BIN轉為BCD #i=BIN[#j];
#i=BCD[#j];
用於與PMC的信號交換。
說明:
● 角度單位
函數SIN ,COS,ASIN,ACOS,TAN和ATAN的角度單位是度。如90°30’表示為90.5度。
● ARCSIN # i= ASIN[#j]
(1)取值範圍如下:
當參數(NO.6004#0)NAT位設為0時,270°~90°
當參數(NO.6004#0)NAT位設為1時,-90°~90°
(2)當#j超出-1到1的範圍時,發出P/S報警NO.111.
(3)常數可替代變量#j
● ARCCOS #i=ACOS[#j]
(1) 取值範圍從180°~0°
(2) 當#j超出-1到1的範圍時,發出P/S報警NO.111.
(3) 常數可替代變量#j
● ARCTAN #i= ATAN[#j]/ [#k]
(1) 指定兩個邊的長度,並用斜杠(/)分開
(2) 取值範圍如下:
當NAT位(參數NO.6004,#0)設為0時;0°到360°
當NAT位(參數NO.6004,#0)設為1時;-180°到180°
(3) 常數可替代變量#j
● 自然對數 #i=LN[#j];
(1) 注意,相對誤差可能大於10-8.
(2) 當反對數(#j)為0或小於0時,發出P/S報警NO.111.
(3) 常數可替代變量#j。
● 指數函數 #i=EXP[#j]
(1) 注意,相對誤差可能大於10-8。
(2) 當運算結果超過3.65X1047(j大約是110)時,出現溢出並發出P/S報警NO.111.。
(3) 常數可替代變量#j。
● ROUND(舍入)函數
(1) 當算術運算或邏輯運算指令IF或WHILE中包含ROUND函數時,則ROUND函數在第一個小數位置四舍五入. 當執行#1= ROUND[#2];此處#2=1.2345,變量1的值是1.0。
(2) 當在NC語句地址中使用ROUND函數時,ROUND函數根據地址的最小設定單位將指定值四舍五入
● 上取整下取整
CNC處理數值運算時,若操作後產生的整數絕對值大於原數的絕對值時為上取整;若小於原數的絕對值為下整數.對於負數的處理應小心.
● 算術與邏輯運算指令的縮寫
程序中指令函數時,函數名的前兩個字符可以用於指定該函數.
ROUND→RO
FLX→FI
● 運算次序
(1) 函數
(2) 乘和除運算
(3) 加和減運算
● 括號嵌套
括號用於改變運算次序,括號可以使用5級,包括函數內部使用的括號.當超過5級時,出現P/S報警NO.118.
限製
● 括號 ([,])用於封閉表達式.注意,圓括號用於注釋.
● 運算誤差 運算時,可能出現誤差.
注: 1.相對誤差取決於運算結果.
2.使用兩類誤差的較小者.
3.絕對誤差是常數,而不管運算結果.
4.函數TAN執行SIN/COS.
5.如果SIN/COS或TAN函數的運算結果小於10X10-8或由於運算精度的限製不為0的話,設定參數NO.6004#1為1,則運算結果可以規算為0.
(1) 變量值的精度約為8位十進製數.當在加/減速中處理非常大的數時,將得不到期望的結果.
(2) 還應該意識到,使用條件表達式EQ,NE,GE,GT.LE和LT時可能造成誤差.
(3) 使用下取整指令時應小心.
● 除數 當在除法或TAN[90]中指定為0的除數時,出現P/S報警NO.112
5.3宏程序語句和NC語句
下麵的程序段為宏程序語句:
◆ 包含算術或邏輯運算(=)的程序段.
◆ 包含控製語句的程序段
◆ 包含宏程序調用指令的程序段
除了宏程序以外的任何程序段都為NC語句.
說明:
● 與NC語句的不同
(1) 即使置於單程序段運行方式,機床也不停止.但是,當參數N0.6000#5SBM設定為1時,在單程序段方式中,機床停止.
(2) 在刀具半徑補償方式中宏程序語句段不做為不移動程序段處理.
● 與宏程序語句有相同性質的NC 語句
(1) 含有子程序調用指令,但沒有除O,N或L地址之外的其它地址指令的NC語句其性質與宏程序相同.
(2) 不包含除ONP或L以外的指令地址的程序段其性質與宏程序語句相同.
5.4轉移和循環
在程序中,使用GOTO 語句和IF語句可以改變控製的流向.有三種轉移和循環操作可供使用;
轉移和循環----------GOTO語句(無條件轉移)
↓→IF語句(條件轉移)
WHILE語句(當…時循環)
5.4.1無條件轉移(GOTO語句)
轉移到標有順序號n的程序段.當指定1到99999以外的順序號時,出現P/S報警NO.128.可用表達方式指定順序號.
GOTOn;n:順序號(1到99999)
5.4.2條件轉移(IF)語句
IF之後指定條件表達式.
IF[<條件表達式>]GOTOn 如果指定的條件表達式滿足時,轉移到標有順序號n的程序段.如果指定的條件表達式不滿足,執行下個程序段.
IF[<條件表達式>]THEN 如果條件表達式滿足,執行預先決定的宏程序語句.隻執行一個宏程序語句.
說明:
● 條件表達式
條件表達式必須包括算符.算符插在兩個變量中間或變量和常數中間,並且用括號([,])封閉.表達式可以替代變量.
● 運算符
運算符由2個字母組成,用於兩個值的比較,以決定它們是相等還是一個值小於或大於另一個值.注意,不能使用不符號.
運算符 含義
EQ 等於
NE 不等於
GT 大於
GE 小於或等於
LT 小於
LE 小於或等於
典型程序:
下麵的程序計算數值1-10的總和
09500;
#1=0; 存儲和數變量的初值
#2=1; 被加數變量的初值
N1 IF[#2 GT 10]GOTO 2; 當被加數大於10時轉移到N2
#1=#1+#2; 計算和數
#2=#2+#1; 下一個被加數
GOTOA1; 轉到N1
N2 M30 ; 程序結束
5.4.3循環(WHILE語句)
在 WHILE後指定一個條件表達式.當指定條件滿足時,執行從D0到END之間的程序.否則,轉到END後的程序段.
說明:
當指定的條件滿足時,執行 WHILE從D0到END之間的程序.否則,轉而執行END之後的程序段,這種指令格式適用於IF語句.D0後的號和END後的號是指定程序執行範圍的標號,標號值為1,2,3.若用1,2,3以外的值會產生P/S報警NO.126.
● 嵌套
在DO-END循環中的標號可根據需要多次使用.但是,當程序有交叉重複循環(DO範圍的重疊)時,出現P/S報警NO.124.
說明:
◆ 無限循環 當指定DO而沒有指定WHILE語句時,產生從DO到END的無限循環.
◆ 處理時間 當在GOTO語句中有標號轉移的語句時,進行順序號檢索.反向檢索的時間要比正向檢索長.用WHILE語句實現循環可減少處理時間.
◆ 未定義的變量 在使用EQ或NE的條件表達式中,<空>和零有不同的效果,在其它形式的條件表達式中,<空>被當作零.
◆ 典型程序 下麵的程序計算數值1到10的總和.
00001;
#1=0;
#2=1;
WHILE[#2LE10]DO 1;
#1=#1+#2;
#2=#2+1;
END 1;
M30;
5.5宏程序調用
用下麵的方法調用宏程序:
宏程序調用------------非模態調用(G65)
-----------模態調用(G66,G67)
------------用G代碼調用宏程序
------------用M代碼調用宏程序
------------用M代碼調用子程序
------------用T代碼調用子程序
限製
● 用宏程序調用和子程序調用之間的差別
宏程序調用用(G65)不同於子程序用(G68),如下所述:
(1) 用(G65),可以指定自變量(數據傳送到宏程序).M98沒有該功能.
(2) 當M98程序段包含另一個NC指令時,在指令執行之後調用子程序.相反,G65無條件地調用宏程序.
(3) M98程序段包含另一個NC指令時,在單程序段方式中,機床停止.相反,G65機床不停止.
(4) 用G65,改變局部變量的級別.用M98,不改變局部變量的級別.
5.5.1 非模態調用(G65)
當指定G65時,以地址P指定的用戶宏程序被調用.數據能傳遞到用戶宏程序體中.
說明:
呼調:(1) 在G65之後,用地址P指定用戶宏程序的程序號.
(2) 當要求重複時,在地址L後指定從1到9999的重複次數.省略L值時,認為L等於1.
(3) 使用自變量指定,其值被賦值到相應的局部變量.
● 自變量指定
可用兩種形式的自變量指定,自變量指定I使用除了G,L,O,N和P以外的字母,每個字母指定一次.自變量指定II使用A,B,C和I,J和K(i為1-10).根據使用的字母,自動地改變自變量指定的類型.
自變量指定I
地址 變量號 地址 變量號 地址 變量號
A
B
C
D
E
F
H #1
#2
#3
#7
#8
#9
#11 I
J
K
M
Q
R
S #4
#5
#6
#13
#17
#18
#19 T
U
V
W
X
Y
Z #20
#21
#22
#23
#24
#25
#26
(1) 地址G,L,N,Q和P不能在自變量中使用.
(2) 不需要指定的地址可以省略,對應於省略地址的局部變量設為空.
(3) 地址不需要按字母順序指定,但應符合字地址的格式.但是I,J和K需要按字母順序指定.
自變量地址II
自變量指定II使用A,B,和C各一次,I,J,K10次.自變量指定II用於傳遞諸如三維坐標值的變量.
地址 變量號 地址 變量號 地址 變量號
A
B
C
I1
J1
K1
I2
J2
K2
L3
J3
#1
#2
#3
#4
#5
#6
#7
#8
#9
#10
#11 K3
I4
J4
K4
I5
J5
K5
I6
J6
K6
I7 #12
#13
#14
#15
#16
#17
#18
#19
#20
#21
#22 J7
K7
I8
J8
K8
I9
J9
K9
I10
J10
K10
#23
#24
#25
#26
#27
#28
#29
#30
#31
#32
#33
I,J,K的下標用於確定自變量指定的順序,在實際編程中不寫.
限製:
◆ 格式: 任何自變量前必須指定G65
◆ 自變量指定I,II的混合 CNC內部自動識別自變量指定I&自變量指定II.如果自變量指定I和自變量指定II混合指定的話,後指定的自變量類型有效.
◆ 小數點的位置 沒有小數點的自變量數據的單位為各地址的最小設定單位.傳遞的沒有小數點的自變量的值根據機床實際的係統配置變化.在宏程序調用中使用小數點可使程序兼容性好.
◆ 調用嵌套:調用可以嵌套4級,包括非模態調用(G95)和模態調用(G66).但不包括子程序調用(M98).
◆ 局部變量的級別 :
1.局部變量嵌套從0到4級.
2.主程序是0級.
3.宏程序每調用1次,局部變量級別加1.前1級的局部變量值保存在CNC中.
4.當宏程序中執行M99時,控製返回到調用的程序.此時,局部變量級別減1;並恢複宏程序調用時保存的局部變量值.
◆ 典型程序: 編製一個宏程序加工輪圓上的孔.圓周的半徑為I.起始角為A,間隔為B,鑽孔數為H,圓的中心是(X,Y)指令可以用絕對值或增加量指定.順時針方向鑽孔時B應指定負值.
◆ 調用格式:G95 P9100 Xx Yy Zz Rr Li Aa Bb Hh ;
X:圓心的X坐標(絕對值或增量值的指定)(#24)
Y:圓心的Y坐標(絕對值或增量值的指定)(#25)
Z:孔深(#26)
R:快速趨近點坐標(#18)
F:切削進給速度(#9)
I:圓半徑(#4)
A:第一孔的角度(#1)
B:增量角(指定負值時為順時針)(#2)
H:孔數(#11)
◆ 宏程序調用程序:
O0002;
G90 G92 X0 Y0 Z100,0;
G65 p9100 X100 Y50.0 R30.0 Z50.0 500 I100.0 A0 B45.0 H5;
M30;
◆ 宏程序
09100;
#3=#4003;存儲03組G代碼
G81 Z#26 R#18 F#9 K0;(注)鑽孔循環
注:也可以使用L0
IF[#3 EQ 90] GOTO 1;在G90方式轉移到N1
#24=#5001+#24;計算圓心的X坐標
#25=#5001+#25;計算圓心的Y坐標
N1 WHILE[#11 GT O] DO 1;直到剩餘孔數為0
#5=#24+#4*COS[#1];計算X軸上的孔位
#6=#25+#4*SIN[+1]; 計算X軸上的孔位
G90 X#5 Y#6 ;移動到目標位置之後執行鑽孔
#1=#1+#2;更新角度
#11=#11-1;孔數-1
END 1;
G#3 G80 ;返回原始狀態的G代碼
M99
5.5.2 模態調用(G66)
一旦發出G66則指定模態調用,即指定沿移動軸移動的程序段後調用宏程序.G97取消模態調用.
說明:
● 調用
1.在G66之後,用地址P指定模態調用的程序號.
2.當要求重複時,地址L後指定從1到9999的重複次數.
3.與非模態調用(G65)相同,自變量指定的數據傳遞到宏程序體中.
● 取消 指定G97代碼時,其後麵的程序段不再執行模態宏程序調用.
● 調用嵌套 調用可以嵌套4級.包括非模態調用(G65)和模態調用(G66).但不包括子程序調用(M98)
限製: 1.在G66程序段中,不能調用多個宏程序.
2.G66必須在自變量之前指定.
3.在隻有諸如輔助功能但無移動指令的程序段中不能調用宏程序.
4.局部變量(自變量)隻能在G66程序段中指定.注意,每次執行模態調用時,不再設定局部變量.
● 典型程序 用宏程序編製G81固定循環的操作.加工程序使用模態調用,為了簡化程序,使用絕對值指定全部的鑽孔數據.
● 調用格式 G65 P9110 Xx Yy Zz Rr Ff Ll;
X:孔的X坐標(由絕對值指定)(#24)
Y:孔的Y坐標(由絕對值指定)(#25)
Z: Z 點坐標(由絕對值指定) (#26)
R: R點坐標(由絕對值指定) (#18)
F:切削進給速度(#9)
L:重複次數
● 調用宏程序的程序 00001;
G28 G91 X0 Y0 ZO;
G92 X0 Y0 Z50.0;
G00 G90 X100.0 Y50.0;
G66 P9110 Z-20.0 R.0 F500;
G90 X20.0 Y20.0;
X50.0;
X0.0 Y80.0;
G67;
M30;
● 宏程序(被調用的程序) 09110;
#1=#4001;貯存G00/G01
#2=#4003; 貯存G90/G91
#3=#4109; 貯存切削進給速度
#5=#5003; 貯存鑽孔開始的Z坐標
G00 G90 Z#18; 定位在R點
G01 Z#26 F#9 ; 切削進給到Z點
IF[#4010 EQ 98]GOTO1;返回到1點
G00 Z#18 ;定位在R點
GOTO 2;
N1 G00 Z#5 ;定位在1點
N2 G#1 G#3 F#4; 恢複模態信息.
M99;
5.5.3 用G代碼調用宏程序
在參數中設置調用宏程序的G代碼,與非模態調用(G65)同樣的方法用該代碼調用宏程序.
說明:在參數(NO.6050到NO.6059)中設置調用用戶宏程序(09010到09019)的G代碼號(從1到9999),調用戶宏程序的方法與G65相同.例如,設置參數,使宏程序09010由G81調用,不用修改加工程序,就可以調用由用戶宏程序編製的加工循環.
● 參數號和程序號之間的對應關係
程序號 參數號
09010
09011
09012
09013
09014
09015
09016
09017
09018
09019 6050
6051
6052
6053
6054
6055
6056
6057
6058
6059
● 重複 與非模態調用一樣,地址L可以指定從1到9999的重複次數.
● 自變量指定 與非模態調用一樣,兩種自變量指定是有效的;自變量指定I和自變量指定II.根據使用的地址自動地決定自變量的指定類型.
● 使用G代碼的宏調用的嵌套 在G代碼調用的程序中,不能用一個G代碼調用多個宏程序.這種程序中的G代碼被處理為普通G代碼.在用M或T代碼作為子程序調用的程序中,不能用一個G代碼調用多個宏程序.這種程序中的G代碼也處理為普通G代碼.
5.5.4 用M代碼調用宏程序
在參數中設置調用宏程序的M代碼,與非模態調用(G65)的方法一樣用該代碼調用宏程序.
說明: 在參數(NO.6080到NO.6089)中設置調用用戶宏程序(09021到09029)的M代碼(從1到99999999),用戶宏程序能與G65同樣的方法調用.
● 參數號和程序號之間的對應關係
程序號 參數號
09020
0902
09022
0902
09024
09025
09026
09027
09028
09029 6080
6081
6082
6083
6084
6085
6086
6087
6088
6089
● 重複 與非模態調用一樣,地址L可以指定從1到9999的重複次數.
● 自變量指定 與非模態調用一樣,兩種自變量指定是有效的;自變量指定I和自變量指定II.根據使用的地址自動地決定自變量的指定類型.
● 限製: 1.調用宏程序的M代碼必須在程序段的開頭指定.
2.G代碼調用的宏程序或用M代碼或T代碼作為子程序調用的程序中,不能用一個M代碼調用多個宏程序.這種宏程序或程序中的M代碼被處理為普通M代碼.
5.5.5 用M代碼調用子程序
在參數中設置調用子程序(宏程序)的M代碼號,可與子程序調用(M98)相同的方法用該代碼調用宏程序.
說明:在參數(NO.6071到NO.6079)中設置調用子程序的M代碼(從1到99999999),相應的用戶宏程序(09001到09009)可與M98同樣的方法用該代碼調用.
● 參數號&程序號之間的對應關係
程序號 參數號
09001
09002
09003
09004
09005
09006
09007
09008
09009 6071
6072
6073
6074
6075
6076
6077
6078
6079
● 重複 與非模態調用一樣,地址L可以指定從1到9999的重複次數.
● 自變量指定 不允許自變量指定.
● M代碼 在宏程序中調用的M代碼被處理為普通的M代碼.
● 限製: 用G代碼調用的宏程序,或用M或T代碼調用的程序中,使用一個M代碼不能調用幾個子程序.這種宏程序或程序中的M代碼被處理為普通的M代碼.
5.5.6 用T代碼調用子程序
在參數中設置調用的子程序(宏程序)的T代碼,每當在加工程序中指定該T代碼時,即調用宏程序.
說明:
● 調用: 設置參數NO.6001的5位TCS=1,當在加工程序中指定T代碼時,可以調用宏程序09000.在加工程序中指定的T代碼賦值到公共變量#149.
● 限製:用G代碼調用的宏程序中或用M或T代碼調用的程序中,一個M代碼不能調用多個子程序.這種宏程序或程序中的T代碼被處理為普通T代碼.
5.5.7 典型程序
用M代碼調用子程序的功能,調用測量每把刀具的累積使用時間的宏程序.
條件: 1.測量T01到T05各把刀具的累積使用時間.刀號大於T05的刀具不進行測量.
2.下麵的變量用於貯存刀號和測量的時間.
#501 刀號1的累積使用時間
#502 刀號2累積使用時間
#503 刀號3累積使用時間
#504 刀號4累積使用時間
#505 刀號5累積使用時間
3.當指定M03時,開始計算使用時間,當指定M05時,停止計算.在循環起
動燈亮期間,用係統變量#3002測量該時間.進給暫停&單段停止期間,時間不計算,但要計算換刀和交換工作台的時間.
進行檢查
◆ 參數設置 參數NO.6071中設置3,參數NO.6072中設置05.
◆ 變量值的設置 變量#501到#505中設置0.
◆ 調用宏程序的程序
00001;
T01 M06;
M03;
M05;改變#501
T02 M06;
M03;
M05; 改變#503
T05 M06;
M03;
M05;改變#504
T05 M06;
M03;
M05;改變#505
M30;
◆ 宏程序(被調用的程序) 09001 (M03);啟動計算的宏程序
N01;
IF[#4120 EQ 0]GOTO9;沒有指定刀具
IF[#4120 GT 5]GOTO9;超出刀號範圍
#3002=0;計算器清0
N9 M03;以正向旋轉主軸
M99;
09002(M05);結束計算的宏程序
M01;
IF[#4120 EQ 0]GOTO9;沒有指定刀具
IF[#4120 GT 5]GOTO9;超出刀號範圍
#[500+#120]=#3002+#[500+4120];計算累積時間
N9 M05;停止主軸
M99;
5.6 宏程序語句的處理
為了平滑加工,CNC預讀下一個要執行的NC語句.這種運行稱為緩衝.在刀具半徑補償方式(G41,G42)中,NC為了找到交點提前預讀2或3個程序段的NC後語句,算術表達式和條件轉移的宏程序語句在它們被讀進緩衝寄存器後立即被處理.包含M00,M01,M02或M30的程序段,包含由參數NO.3411到NO.3420設置的禁止緩衝的M代碼的程序段,以及包含G31的程序段不預讀.
說明:
● 當下個程序段不緩衝時(不緩衝的M代碼,G31等)
● 在除了刀具半徑補償方式(G41,G42)以外的方式中,緩衝下個程序段(正常預讀一個程序段)
當執行N1時,下個NC語句(N4)被讀入緩衝器.N1和N4之間的宏語句(N2,N3)在N1執行期間被處理.
● 在刀具半徑補償方式(G41,G42)中緩衝下個程序段
當N1正在執行時,在下2個程序段(直到N5)中的NC語句被讀進緩衝寄存器.在N1和N5之間的宏語句(N2,N4)在N1的執行期間被處理.
● 在刀具半徑補償方式C(G41,G42)中,當下個程序段包含沒有移動的程序段時
當NC1程序段正在執行時,下兩個程序段(直到N5)中的NC語句被讀進緩衝寄存器.由於N5是不移動的程序段,不能計算交點.此時,下麵三個程序段(直到N7)中的NC語句被讀入.在N1和N7之間的宏語句(N2,N4和N6)在執行N1時被處理.
數控If goto是什麼意思
宏程序的一個條件命令,英文直接翻譯也成,就是如果達到某個條件了就跳到某個程序段去
請問數控銑宏程序中ELSE IF……THEN是什麼意思
這個是IF語句的延伸部分。
一般格式是
如果IF[條件成立]THEN則:
……
否則ELSE IF[條件]
……
最後一個條件THEN
……
結束(END_IF)
轉載請注明出處句子大全網 » 數控編程IF的用法關於宏程序
空>空>條件表達式>條件表達式>空>空>空>空>空>空>空>